diff -Nru audacious-plugins-2.4.4/acinclude.m4 audacious-plugins-3.2/acinclude.m4 --- audacious-plugins-2.4.4/acinclude.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/acinclude.m4 2012-01-20 19:48:30.000000000 +0000 @@ -1,16 +1,3 @@ - -dnl ** ADD_PKG_REQUIRES([requirement]) -dnl ** Adds a dependency to package's pkg-config file. -AC_DEFUN([ADD_PC_REQUIRES], [ - if test "x$PC_REQUIRES" = "x"; then - PC_REQUIRES="$1" - else - PC_REQUIRES="$PC_REQUIRES, $1" - fi - AC_SUBST([PC_REQUIRES]) -]) - - dnl ** AUD_CHECK_MODULE([define name], [module], [version required], dnl ** [informational name], [additional error message]) dnl ** @@ -21,7 +8,6 @@ dnl ** AUD_CHECK_MODULE([GLIB], [gtk+-2.0], [>= 2.8.0], [Gtk+2], [See http://www.gtk.org/]) AC_DEFUN([AUD_CHECK_MODULE], [ PKG_CHECK_MODULES([$1], [$2 $3], [ - ADD_PC_REQUIRES([$2 $3]) ],[ PKG_CHECK_EXISTS([$2], [ cv_pkg_version=`$PKG_CONFIG --modversion "$2" 2>/dev/null` @@ -142,6 +128,23 @@ ])dnl +dnl Add $1 to CFLAGS and CXXFLAGS if supported +dnl ------------------------------------------ + +AC_DEFUN([AUD_CHECK_CFLAGS],[ + AC_MSG_CHECKING([whether the C/C++ compiler supports $1]) + OLDCFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $1 -Werror" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[return 0;])],[ + AC_MSG_RESULT(yes) + CFLAGS="$OLDCFLAGS $1" + CXXFLAGS="$CXXFLAGS $1" + ],[ + AC_MSG_RESULT(no) + CFLAGS="$OLDCFLAGS" + ]) +]) + dnl ** dnl ** Common checks @@ -150,20 +153,34 @@ dnl Check for C and C++ compilers dnl ============================= -AUD_CHECK_GNU_MAKE -AC_PROG_CC -AC_PROG_CXX -AM_PROG_AS -AC_ISC_POSIX -AC_C_BIGENDIAN +AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([AM_PROG_AS]) +AC_REQUIRE([AC_C_BIGENDIAN]) +AC_REQUIRE([AC_SYS_LARGEFILE]) if test "x$GCC" = "xyes"; then - CFLAGS="$CFLAGS -Wall -pipe" - CXXFLAGS="$CXXFLAGS -pipe -Wall" + CFLAGS="$CFLAGS -std=gnu99 -Wall -pipe" + CXXFLAGS="$CXXFLAGS -Wall -pipe" + AUD_CHECK_CFLAGS(-Wtype-limits) fi +dnl Enable "-Wl,-z,defs" only on Linux +dnl ============================== +AC_MSG_CHECKING([for Linux]) +case "$target" in + *linux*) + AC_MSG_RESULT([yes]) + LDFLAGS="$LDFLAGS -Wl,-z,defs" + ;; + *) + AC_MSG_RESULT([no]) + ;; +esac + dnl Checks for various programs dnl =========================== +AUD_CHECK_GNU_MAKE AC_PROG_LN_S AC_PROG_MAKE_SET AC_PATH_PROG([RM], [rm]) @@ -172,78 +189,14 @@ AC_PATH_PROG([AR], [ar]) AC_PATH_PROG([TR], [tr]) AC_PATH_PROG([RANLIB], [ranlib]) - +AC_PATH_PROG([WINDRES], [windres]) dnl Check for Gtk+/GLib and pals dnl ============================ -AUD_CHECK_MODULE([GLIB], [glib-2.0], [>= 2.12.0], [Glib2]) -AUD_CHECK_MODULE([GTHREAD], [gthread-2.0], [>= 2.12.0], [gthread-2.0]) -AUD_CHECK_MODULE([GTK], [gtk+-2.0], [>= 2.8.0], [Gtk+2]) -AUD_CHECK_MODULE([PANGO], [pango], [>= 1.8.0], [Pango]) -AUD_CHECK_MODULE([CAIRO], [cairo], [>= 1.2.4], [Cairo]) - - -dnl Check for libmowgli -dnl =================== -AUD_CHECK_MODULE([MOWGLI], [libmowgli], [>= 0.4.0], [libmowgli], - [http://www.atheme.org/projects/mowgli.shtml]) - - -dnl Check for libmcs -dnl ================ -AUD_CHECK_MODULE([LIBMCS], [libmcs], [>= 0.7], [libmcs], - [http://www.atheme.org/projects/mcs.shtml]) - - -dnl SSE2 support -dnl ============ -AUD_ARG_ENABLE([sse2], [yes], [SSE2 support], -[ - AC_MSG_CHECKING([SSE2 support]) - aud_my_save_CFLAGS="$CFLAGS" - CFLAGS="-msse2" - AC_TRY_RUN([ -#include -int main() -{ - _mm_setzero_pd(); - asm volatile("xorpd %xmm0,%xmm0\n\t"); - return 0; -} - ],[ - AC_MSG_RESULT([yes]) - AC_DEFINE([HAVE_SSE2], 1, [Define to 1 if your system has SSE2 support]) - SIMD_CFLAGS="-msse2" - ],[ - AC_MSG_RESULT([no]) - enable_sse2="no" - ]) - AC_SUBST([SIMD_CFLAGS]) - CFLAGS="$aud_my_save_CFLAGS" -]) - -dnl AltiVec support -dnl =============== -AUD_ARG_ENABLE([altivec], [yes], [AltiVec support], -[ - AC_CHECK_HEADERS([altivec.h], - [ - AC_DEFINE([HAVE_ALTIVEC], 1, [Define to 1 if your system has AltiVec.]) - AC_DEFINE([HAVE_ALTIVEC_H], 1, [Define to 1 if your system has an altivec.h file.]) - AC_DEFINE([ARCH_POWERPC], 1, [Define to 1 if your system is a PowerPC.]) - case $target in - *-apple-*) - SIMD_CFLAGS="-mpim-altivec" - ;; - *) - SIMD_CFLAGS="-maltivec" - ;; - esac - AC_SUBST([SIMD_CFLAGS]) - ],[ - enable_altivec="no" - ]) -]) +AUD_CHECK_MODULE([GLIB], [glib-2.0], [>= 2.16], [Glib2]) +AUD_CHECK_MODULE([GTHREAD], [gthread-2.0], [>= 2.16], [GThread]) +AUD_CHECK_MODULE([PANGO], [pango], [>= 1.20], [Pango]) +AUD_CHECK_MODULE([CAIRO], [cairo], [>= 1.6], [Cairo]) ]) diff -Nru audacious-plugins-2.4.4/aclocal.m4 audacious-plugins-3.2/aclocal.m4 --- audacious-plugins-2.4.4/aclocal.m4 2011-02-22 17:29:48.000000000 +0000 +++ audacious-plugins-3.2/aclocal.m4 2012-01-20 19:51:55.000000000 +0000 @@ -1,7 +1,8 @@ -# generated automatically by aclocal 1.11.1 -*- Autoconf -*- +# generated automatically by aclocal 1.11.2 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, +# Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -11,6 +12,2688 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. +# gettext.m4 serial 63 (gettext-0.18) +dnl Copyright (C) 1995-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2006, 2008-2010. + +dnl Macro to add for using GNU gettext. + +dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The +dnl default (if it is not specified or empty) is 'no-libtool'. +dnl INTLSYMBOL should be 'external' for packages with no intl directory, +dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. +dnl If INTLSYMBOL is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library +dnl $(top_builddir)/intl/libintl.a will be created. +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. If NEEDSYMBOL is specified and is +dnl 'need-formatstring-macros', then GNU gettext implementations that don't +dnl support the ISO C 99 formatstring macros will be ignored. +dnl INTLDIR is used to find the intl libraries. If empty, +dnl the value `$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_GNU_GETTEXT], +[ + dnl Argument checking. + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])])]) + ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], + [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) + ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , + [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +])])])]) + define([gt_included_intl], + ifelse([$1], [external], + ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), + [yes])) + define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) + gt_NEEDS_INIT + AM_GNU_GETTEXT_NEED([$2]) + + AC_REQUIRE([AM_PO_SUBDIRS])dnl + ifelse(gt_included_intl, yes, [ + AC_REQUIRE([AM_INTL_SUBDIR])dnl + ]) + + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Sometimes libintl requires libiconv, so first search for libiconv. + dnl Ideally we would do this search only after the + dnl if test "$USE_NLS" = "yes"; then + dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT + dnl the configure script would need to contain the same shell code + dnl again, outside any 'if'. There are two solutions: + dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. + dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. + dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not + dnl documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. + gt_INTL_MACOSX + + dnl Set USE_NLS. + AC_REQUIRE([AM_NLS]) + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + LTLIBINTL= + POSUB= + + dnl Add a version number to the cache macros. + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + ifelse(gt_included_intl, yes, [ + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH([included-gettext], + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + ]) + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], + [AC_TRY_LINK([#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings;], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings], + [eval "$gt_func_gnugettext_libc=yes"], + [eval "$gt_func_gnugettext_libc=no"])]) + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl Sometimes libintl requires libiconv, so first search for libiconv. + ifelse(gt_included_intl, yes, , [ + AM_ICONV_LINK + ]) + dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL + dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) + dnl because that would add "-liconv" to LIBINTL and LTLIBINTL + dnl even if libiconv doesn't exist. + AC_LIB_LINKFLAGS_BODY([intl]) + AC_CACHE_CHECK([for GNU gettext in libintl], + [$gt_func_gnugettext_libintl], + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + dnl Now see whether libintl exists and does not depend on libiconv. + AC_TRY_LINK([#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + [eval "$gt_func_gnugettext_libintl=yes"], + [eval "$gt_func_gnugettext_libintl=no"]) + dnl Now see whether libintl exists and depends on libiconv. + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + ]) + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + dnl Reset the values set by searching for libintl. + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + ifelse(gt_included_intl, yes, [ + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on included GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions to use GNU gettext tools. + CATOBJEXT=.gmo + fi + ]) + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Some extra flags are needed during linking. + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + AC_DEFINE([ENABLE_NLS], [1], + [Define to 1 if translation of program messages to the user's native language + is requested.]) + else + USE_NLS=no + fi + fi + + AC_MSG_CHECKING([whether to use NLS]) + AC_MSG_RESULT([$USE_NLS]) + if test "$USE_NLS" = "yes"; then + AC_MSG_CHECKING([where the gettext function comes from]) + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + AC_MSG_RESULT([$gt_source]) + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + AC_MSG_CHECKING([how to link with libintl]) + AC_MSG_RESULT([$LIBINTL]) + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) + fi + + dnl For backward compatibility. Some packages may be using this. + AC_DEFINE([HAVE_GETTEXT], [1], + [Define if the GNU gettext() function is already present or preinstalled.]) + AC_DEFINE([HAVE_DCGETTEXT], [1], + [Define if the GNU dcgettext() function is already present or preinstalled.]) + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + + ifelse(gt_included_intl, yes, [ + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl Make all variables we use known to autoconf. + AC_SUBST([BUILD_INCLUDED_LIBINTL]) + AC_SUBST([USE_INCLUDED_LIBINTL]) + AC_SUBST([CATOBJEXT]) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST([DATADIRNAME]) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST([INSTOBJEXT]) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST([GENCAT]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + AC_SUBST([INTLOBJS]) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix + AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) + ]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLLIBS="$LIBINTL" + AC_SUBST([INTLLIBS]) + + dnl Make all documented variables known to autoconf. + AC_SUBST([LIBINTL]) + AC_SUBST([LTLIBINTL]) + AC_SUBST([POSUB]) +]) + + +dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. +m4_define([gt_NEEDS_INIT], +[ + m4_divert_text([DEFAULTS], [gt_needs=]) + m4_define([gt_NEEDS_INIT], []) +]) + + +dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) +AC_DEFUN([AM_GNU_GETTEXT_NEED], +[ + m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) +]) + + +dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) + +# iconv.m4 serial 11 (gettext-0.18.1) +dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], +[ + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([iconv]) +]) + +AC_DEFUN([AM_ICONV_LINK], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + + dnl Add $INCICONV to CPPFLAGS before performing the following checks, + dnl because if the user has installed libiconv and not disabled its use + dnl via --without-libiconv-prefix, he wants to use it. The first + dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. + am_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) + + AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + [am_cv_func_iconv=yes]) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + [am_cv_lib_iconv=yes] + [am_cv_func_iconv=yes]) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ + dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10. + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + AC_TRY_RUN([ +#include +#include +int main () +{ + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static const char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + return 1; + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static const char input[] = "\263"; + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + return 1; + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + return 1; + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + return 1; + return 0; +}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no], + [case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac]) + LIBS="$am_save_LIBS" + ]) + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + AC_DEFINE([HAVE_ICONV], [1], + [Define if you have the iconv() function and it works.]) + fi + if test "$am_cv_lib_iconv" = yes; then + AC_MSG_CHECKING([how to link with libiconv]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST([LIBICONV]) + AC_SUBST([LTLIBICONV]) +]) + +dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to +dnl avoid warnings like +dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". +dnl This is tricky because of the way 'aclocal' is implemented: +dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. +dnl Otherwise aclocal's initial scan pass would miss the macro definition. +dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. +dnl Otherwise aclocal would emit many "Use of uninitialized value $1" +dnl warnings. +m4_define([gl_iconv_AC_DEFUN], + m4_version_prereq([2.64], + [[AC_DEFUN_ONCE( + [$1], [$2])]], + [[AC_DEFUN( + [$1], [$2])]])) +gl_iconv_AC_DEFUN([AM_ICONV], +[ + AM_ICONV_LINK + if test "$am_cv_func_iconv" = yes; then + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL([am_cv_proto_iconv], [ + AC_TRY_COMPILE([ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"]) + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([ + $am_cv_proto_iconv]) + AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], + [Define as const if the declaration of iconv() needs const.]) + fi +]) + +# intlmacosx.m4 serial 3 (gettext-0.18) +dnl Copyright (C) 2004-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Checks for special options needed on MacOS X. +dnl Defines INTL_MACOSX_LIBS. +AC_DEFUN([gt_INTL_MACOSX], +[ + dnl Check for API introduced in MacOS X 10.2. + AC_CACHE_CHECK([for CFPreferencesCopyAppValue], + [gt_cv_func_CFPreferencesCopyAppValue], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_TRY_LINK([#include ], + [CFPreferencesCopyAppValue(NULL, NULL)], + [gt_cv_func_CFPreferencesCopyAppValue=yes], + [gt_cv_func_CFPreferencesCopyAppValue=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], + [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) + fi + dnl Check for API introduced in MacOS X 10.3. + AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], + [gt_cv_func_CFLocaleCopyCurrent=yes], + [gt_cv_func_CFLocaleCopyCurrent=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], + [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + AC_SUBST([INTL_MACOSX_LIBS]) +]) + +# lib-ld.m4 serial 4 (gettext-0.18) +dnl Copyright (C) 1996-2003, 2009-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Subroutines of libtool.m4, +dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision +dnl with libtool.m4. + +dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]* | [A-Za-z]:[\\/]*)] + [re_direlt='/[^/][^/]*/\.\./'] + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL([acl_cv_path_LD], +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$acl_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT([$LD]) +else + AC_MSG_RESULT([no]) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_LIB_PROG_LD_GNU +]) + +# lib-link.m4 serial 21 (gettext-0.18) +dnl Copyright (C) 2001-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_PREREQ([2.54]) + +dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and +dnl augments the CPPFLAGS variable. +dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname +dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + pushdef([Name],[translit([$1],[./-], [___])]) + pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + ac_cv_lib[]Name[]_libs="$LIB[]NAME" + ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" + ac_cv_lib[]Name[]_cppflags="$INC[]NAME" + ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" + ]) + LIB[]NAME="$ac_cv_lib[]Name[]_libs" + LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" + INC[]NAME="$ac_cv_lib[]Name[]_cppflags" + LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + AC_SUBST([LIB]NAME[_PREFIX]) + dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the + dnl results of this search when this library appears as a dependency. + HAVE_LIB[]NAME=yes + popdef([NAME]) + popdef([Name]) +]) + +dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message]) +dnl searches for libname and the libraries corresponding to explicit and +dnl implicit dependencies, together with the specified include files and +dnl the ability to compile and link the specified testcode. The missing-message +dnl defaults to 'no' and may contain additional hints for the user. +dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} +dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and +dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs +dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. +dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname +dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + pushdef([Name],[translit([$1],[./-], [___])]) + pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + + dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + + dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, + dnl because if the user has installed lib[]Name and not disabled its use + dnl via --without-lib[]Name-prefix, he wants to use it. + ac_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + + AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ + ac_save_LIBS="$LIBS" + dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, + dnl because these -l options might require -L options that are present in + dnl LIBS. -l options benefit only from the -L options listed before it. + dnl Otherwise, add it to the front of LIBS, because it may be a static + dnl library that depends on another static library that is present in LIBS. + dnl Static libraries benefit only from the static libraries listed after + dnl it. + case " $LIB[]NAME" in + *" -l"*) LIBS="$LIBS $LIB[]NAME" ;; + *) LIBS="$LIB[]NAME $LIBS" ;; + esac + AC_TRY_LINK([$3], [$4], + [ac_cv_lib[]Name=yes], + [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) + LIBS="$ac_save_LIBS" + ]) + if test "$ac_cv_lib[]Name" = yes; then + HAVE_LIB[]NAME=yes + AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.]) + AC_MSG_CHECKING([how to link with lib[]$1]) + AC_MSG_RESULT([$LIB[]NAME]) + else + HAVE_LIB[]NAME=no + dnl If $LIB[]NAME didn't lead to a usable library, we don't need + dnl $INC[]NAME either. + CPPFLAGS="$ac_save_CPPFLAGS" + LIB[]NAME= + LTLIB[]NAME= + LIB[]NAME[]_PREFIX= + fi + AC_SUBST([HAVE_LIB]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + AC_SUBST([LIB]NAME[_PREFIX]) + popdef([NAME]) + popdef([Name]) +]) + +dnl Determine the platform dependent parameters needed to use rpath: +dnl acl_libext, +dnl acl_shlibext, +dnl acl_hardcode_libdir_flag_spec, +dnl acl_hardcode_libdir_separator, +dnl acl_hardcode_direct, +dnl acl_hardcode_minus_L. +AC_DEFUN([AC_LIB_RPATH], +[ + dnl Tell automake >= 1.10 to complain if config.rpath is missing. + m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) + AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS + AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld + AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE([rpath], + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) + +dnl AC_LIB_FROMPACKAGE(name, package) +dnl declares that libname comes from the given package. The configure file +dnl will then not have a --with-libname-prefix option but a +dnl --with-package-prefix option. Several libraries can come from the same +dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar +dnl macro call that searches for libname. +AC_DEFUN([AC_LIB_FROMPACKAGE], +[ + pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + define([acl_frompackage_]NAME, [$2]) + popdef([NAME]) + pushdef([PACK],[$2]) + pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + define([acl_libsinpackage_]PACKUP, + m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1]) + popdef([PACKUP]) + popdef([PACK]) +]) + +dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found +dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) + pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) + dnl Autoconf >= 2.61 supports dots in --with options. + pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_ARG_WITH(P_A_C_K[-prefix], +[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib + --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + LIB[]NAME[]_PREFIX= + dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been + dnl computed. So it has to be reset here. + HAVE_LIB[]NAME= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + dnl The same code as in the loop below: + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$acl_hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi + popdef([P_A_C_K]) + popdef([PACKLIBS]) + popdef([PACKUP]) + popdef([PACK]) + popdef([NAME]) +]) + +dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) + +dnl For those cases where a variable contains several -L and -l options +dnl referring to unknown libraries and directories, this macro determines the +dnl necessary additional linker options for the runtime path. +dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) +dnl sets LDADDVAR to linker options needed together with LIBSVALUE. +dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, +dnl otherwise linking without libtool is assumed. +AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], +[ + AC_REQUIRE([AC_LIB_RPATH]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + $1= + if test "$enable_rpath" != no; then + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode directories into the resulting + dnl binary. + rpathdirs= + next= + for opt in $2; do + if test -n "$next"; then + dir="$next" + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2"; then + rpathdirs="$rpathdirs $dir" + fi + next= + else + case $opt in + -L) next=yes ;; + -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2"; then + rpathdirs="$rpathdirs $dir" + fi + next= ;; + *) next= ;; + esac + fi + done + if test "X$rpathdirs" != "X"; then + if test -n ""$3""; then + dnl libtool is used for linking. Use -R options. + for dir in $rpathdirs; do + $1="${$1}${$1:+ }-R$dir" + done + else + dnl The linker is used for linking directly. + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user + dnl must pass all path elements in one option. + alldirs= + for dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="$flag" + else + dnl The -rpath options are cumulative. + for dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="${$1}${$1:+ }$flag" + done + fi + fi + fi + fi + fi + AC_SUBST([$1]) +]) + +# lib-prefix.m4 serial 7 (gettext-0.18) +dnl Copyright (C) 2001-2005, 2008-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and +dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't +dnl require excessive bracketing. +ifdef([AC_HELP_STRING], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], +[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_PREPARE_MULTILIB creates +dnl - a variable acl_libdirstem, containing the basename of the libdir, either +dnl "lib" or "lib64" or "lib/64", +dnl - a variable acl_libdirstem2, as a secondary possible value for +dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or +dnl "lib/amd64". +AC_DEFUN([AC_LIB_PREPARE_MULTILIB], +[ + dnl There is no formal standard regarding lib and lib64. + dnl On glibc systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine + dnl the compiler's default mode by looking at the compiler's library search + dnl path. If at least one of its elements ends in /lib64 or points to a + dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. + dnl Otherwise we use the default, namely "lib". + dnl On Solaris systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or + dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. + AC_REQUIRE([AC_CANONICAL_HOST]) + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment + dnl . + dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." + dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the + dnl symlink is missing, so we set acl_libdirstem2 too. + AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], + [AC_EGREP_CPP([sixtyfour bits], [ +#ifdef _LP64 +sixtyfour bits +#endif + ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) + ]) + if test $gl_cv_solaris_64bit = yes; then + acl_libdirstem=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" +]) + +# nls.m4 serial 5 (gettext-0.18) +dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation, +dnl Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ([2.50]) + +AC_DEFUN([AM_NLS], +[ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE([nls], + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT([$USE_NLS]) + AC_SUBST([USE_NLS]) +]) + +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 1 (pkg-config-0.24) +# +# Copyright © 2004 Scott James Remnant . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# PKG_PROG_PKG_CONFIG([MIN-VERSION]) +# ---------------------------------- +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])# PKG_PROG_PKG_CONFIG + +# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# Check to see whether a particular set of modules exists. Similar +# to PKG_CHECK_MODULES(), but does not set variables or print errors. +# +# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +# only at the first occurence in configure.ac, so if the first place +# it's called might be skipped (such as if it is within an "if", you +# have to call PKG_CHECK_EXISTS manually +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +# --------------------------------------------- +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])# _PKG_CONFIG + +# _PKG_SHORT_ERRORS_SUPPORTED +# ----------------------------- +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])# _PKG_SHORT_ERRORS_SUPPORTED + + +# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +# [ACTION-IF-NOT-FOUND]) +# +# +# Note that if there is a possibility the first call to +# PKG_CHECK_MODULES might not happen, you should be sure to include an +# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +# +# +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])# PKG_CHECK_MODULES + +# po.m4 serial 17 (gettext-0.18) +dnl Copyright (C) 1995-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ([2.50]) + +dnl Checks for all prerequisites of the po subdirectory. +AC_DEFUN([AM_PO_SUBDIRS], +[ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake + AC_REQUIRE([AM_NLS])dnl + + dnl Release version of the gettext macros. This is used to ensure that + dnl the gettext macros and po/Makefile.in.in are in sync. + AC_SUBST([GETTEXT_MACRO_VERSION], [0.18]) + + dnl Perform the following tests also if --disable-nls has been given, + dnl because they are needed for "make dist" to work. + + dnl Search for GNU msgfmt in the PATH. + dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. + dnl The second test excludes FreeBSD msgfmt. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) + + dnl Test whether it is GNU msgfmt >= 0.15. +changequote(,)dnl + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([MSGFMT_015]) +changequote(,)dnl + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([GMSGFMT_015]) + + dnl Search for GNU xgettext 0.12 or newer in the PATH. + dnl The first test excludes Solaris xgettext and early GNU xgettext versions. + dnl The second test excludes FreeBSD xgettext. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + + dnl Test whether it is GNU xgettext >= 0.15. +changequote(,)dnl + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac +changequote([,])dnl + AC_SUBST([XGETTEXT_015]) + + dnl Search for GNU msgmerge 0.11 or newer in the PATH. + AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, + [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) + + dnl Installation directories. + dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we + dnl have to define it here, so that it can be used in po/Makefile. + test -n "$localedir" || localedir='${datadir}/locale' + AC_SUBST([localedir]) + + dnl Support for AM_XGETTEXT_OPTION. + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) + + AC_CONFIG_COMMANDS([po-directories], [[ + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done]], + [# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) + +dnl Postprocesses a Makefile in a directory containing PO files. +AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], +[ + # When this code is run, in config.status, two variables have already been + # set: + # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, + # - LINGUAS is the value of the environment variable LINGUAS at configure + # time. + +changequote(,)dnl + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + # Find a way to echo strings without interpreting backslash. + if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='echo' + else + if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='printf %s\n' + else + echo_func () { + cat < "$ac_file.tmp" + if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + cat >> "$ac_file.tmp" < /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + cat >> "$ac_file.tmp" <> "$ac_file.tmp" <, 1996. + +AC_PREREQ([2.50]) + +# Search path for a program which passes the given test. + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[ +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL([ac_cv_path_$1], +[case "[$]$1" in + [[\\/]]* | ?:[[\\/]]*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$][$1]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST([$1])dnl +]) + +# Configure paths for SDL +# Sam Lantinga 9/21/99 +# stolen from Manish Singh +# stolen back from Frank Belew +# stolen from Manish Singh +# Shamelessly stolen from Owen Taylor + +dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS +dnl +AC_DEFUN([AM_PATH_SDL], +[dnl +dnl Get the cflags and libraries from the sdl-config script +dnl +AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)], + sdl_prefix="$withval", sdl_prefix="") +AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)], + sdl_exec_prefix="$withval", sdl_exec_prefix="") +AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program], + , enable_sdltest=yes) + + if test x$sdl_exec_prefix != x ; then + sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix" + if test x${SDL_CONFIG+set} != xset ; then + SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config + fi + fi + if test x$sdl_prefix != x ; then + sdl_config_args="$sdl_config_args --prefix=$sdl_prefix" + if test x${SDL_CONFIG+set} != xset ; then + SDL_CONFIG=$sdl_prefix/bin/sdl-config + fi + fi + + as_save_PATH="$PATH" + if test "x$prefix" != xNONE; then + PATH="$prefix/bin:$prefix/usr/bin:$PATH" + fi + AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH]) + PATH="$as_save_PATH" + min_sdl_version=ifelse([$1], ,0.11.0,$1) + AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) + no_sdl="" + if test "$SDL_CONFIG" = "no" ; then + no_sdl=yes + else + SDL_CFLAGS=`$SDL_CONFIG $sdl_config_args --cflags` + SDL_LIBS=`$SDL_CONFIG $sdl_config_args --libs` + + sdl_major_version=`$SDL_CONFIG $sdl_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + sdl_minor_version=`$SDL_CONFIG $sdl_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_sdltest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_CXXFLAGS="$CXXFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $SDL_CFLAGS" + CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" + LIBS="$LIBS $SDL_LIBS" +dnl +dnl Now check if the installed SDL is sufficiently new. (Also sanity +dnl checks the results of sdl-config to some extent +dnl + rm -f conf.sdltest + AC_TRY_RUN([ +#include +#include +#include +#include "SDL.h" + +char* +my_strdup (char *str) +{ + char *new_str; + + if (str) + { + new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); + strcpy (new_str, str); + } + else + new_str = NULL; + + return new_str; +} + +int main (int argc, char *argv[]) +{ + int major, minor, micro; + char *tmp_version; + + /* This hangs on some systems (?) + system ("touch conf.sdltest"); + */ + { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = my_strdup("$min_sdl_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_sdl_version"); + exit(1); + } + + if (($sdl_major_version > major) || + (($sdl_major_version == major) && ($sdl_minor_version > minor)) || + (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); + printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); + printf("*** best to upgrade to the required version.\n"); + printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); + printf("*** to point to the correct copy of sdl-config, and remove the file\n"); + printf("*** config.cache before re-running configure\n"); + return 1; + } +} + +],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + CXXFLAGS="$ac_save_CXXFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_sdl" = x ; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$SDL_CONFIG" = "no" ; then + echo "*** The sdl-config script installed by SDL could not be found" + echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the SDL_CONFIG environment variable to the" + echo "*** full path to sdl-config." + else + if test -f conf.sdltest ; then + : + else + echo "*** Could not run SDL test program, checking why..." + CFLAGS="$CFLAGS $SDL_CFLAGS" + CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" + LIBS="$LIBS $SDL_LIBS" + AC_TRY_LINK([ +#include +#include "SDL.h" + +int main(int argc, char *argv[]) +{ return 0; } +#undef main +#define main K_and_R_C_main +], [ return 0; ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding SDL or finding the wrong" + echo "*** version of SDL. If it is not finding SDL, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means SDL was incorrectly installed" + echo "*** or that you have moved SDL since it was installed. In the latter case, you" + echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ]) + CFLAGS="$ac_save_CFLAGS" + CXXFLAGS="$ac_save_CXXFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + SDL_CFLAGS="" + SDL_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(SDL_CFLAGS) + AC_SUBST(SDL_LIBS) + rm -f conf.sdltest +]) + # Figure out how to run the assembler. -*- Autoconf -*- # Copyright (C) 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. @@ -69,14 +2752,14 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 -# Free Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, +# 2010, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 10 +# serial 12 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, @@ -116,6 +2799,7 @@ # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. + rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. @@ -180,7 +2864,7 @@ break fi ;; - msvisualcpp | msvcmsys) + msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. @@ -245,10 +2929,13 @@ if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' + am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- @@ -404,15 +3091,45 @@ rm -f confinc confmf ]) +# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, +# Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 1 + +# AM_PROG_MKDIR_P +# --------------- +# Check for `mkdir -p'. +AC_DEFUN([AM_PROG_MKDIR_P], +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) + # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software +# Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 4 +# serial 5 # _AM_MANGLE_OPTION(NAME) # ----------------------- @@ -420,13 +3137,13 @@ [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) -# ------------------------------ +# -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- +# ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) @@ -437,13 +3154,13 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 2006, 2008 Free Software Foundation, Inc. +# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 2 +# serial 3 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- @@ -452,24 +3169,11 @@ AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- +# -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) m4_include([m4/buildsys.m4]) -m4_include([m4/gettext.m4]) -m4_include([m4/iconv.m4]) -m4_include([m4/isc-posix.m4]) -m4_include([m4/jack.m4]) -m4_include([m4/lib-ld.m4]) -m4_include([m4/lib-link.m4]) -m4_include([m4/lib-prefix.m4]) -m4_include([m4/libFLAC.m4]) -m4_include([m4/nls.m4]) -m4_include([m4/pkg.m4]) -m4_include([m4/po.m4]) -m4_include([m4/progtest.m4]) -m4_include([m4/sdl.m4]) m4_include([m4/sid.m4]) m4_include([m4/sidplay.m4]) m4_include([acinclude.m4]) diff -Nru audacious-plugins-2.4.4/AUTHORS audacious-plugins-3.2/AUTHORS --- audacious-plugins-2.4.4/AUTHORS 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/AUTHORS 2012-01-20 19:48:30.000000000 +0000 @@ -1,19 +1,20 @@ -Audacious (C) GPL 2005-2008 +Audacious (C) GPL 2005-2009 Authors listed alphabetically, by last name: -------------------------------------------- George Averill +Kieran Clancy Michael Färber <0102@gmx.at> Matti Hämäläinen Giacomo Lozito -William Pitcock +Tomasz MoÅ„ +William Pitcock Derek Pomery Mohammed Sameer Jonathan Schleifer -Andrew O. Shadoura -Aaron Sheldon Stephen Sokolow +Ben Tucker Tony Vroon Yoshiki Yazawa @@ -21,7 +22,7 @@ ----------- Dutch - Tony Vroon -Hungarian - Laszlo Dvornik +Hungarian - Dvornik László German - Michael Hanselmann Matthias Debus Greek - Kouzinopoulos Haris @@ -29,6 +30,8 @@ Stathis Kamperis Italian - Diego Petteno Japanese - Dai +Finnish - Pauli Virtanen + Matti Hämäläinen - @@ -89,7 +92,7 @@ Finnish - Pauli Virtanen French - David Le Brun Hindi - Dhananjaya Sharma -Hungarian - Laszlo Dvornik +Hungarian - Dvornik László Italian - Alessio D'Ascanio Japanese - Takeshi Aihana Korean - DongCheon Park diff -Nru audacious-plugins-2.4.4/buildsys.mk.in audacious-plugins-3.2/buildsys.mk.in --- audacious-plugins-2.4.4/buildsys.mk.in 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/buildsys.mk.in 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,6 @@ # -# Copyright (c) 2007 - 2009, Jonathan Schleifer +# Copyright (c) 2007, 2008, 2009, 2010, 2011 +# Jonathan Schleifer # # https://webkeks.org/hg/buildsys/ # @@ -48,12 +49,10 @@ PROG_IMPLIB_NEEDED = @PROG_IMPLIB_NEEDED@ PROG_IMPLIB_LDFLAGS = @PROG_IMPLIB_LDFLAGS@ PROG_SUFFIX = @EXEEXT@ -LIB_CPPFLAGS = @LIB_CPPFLAGS@ LIB_CFLAGS = @LIB_CFLAGS@ LIB_LDFLAGS = @LIB_LDFLAGS@ LIB_PREFIX = @LIB_PREFIX@ LIB_SUFFIX = @LIB_SUFFIX@ -PLUGIN_CPPFLAGS = @PLUGIN_CPPFLAGS@ PLUGIN_CFLAGS = @PLUGIN_CFLAGS@ PLUGIN_LDFLAGS = @PLUGIN_LDFLAGS@ PLUGIN_SUFFIX = @PLUGIN_SUFFIX@ @@ -65,6 +64,10 @@ INSTALL = @INSTALL@ SHELL = @SHELL@ MSGFMT = @MSGFMT@ +JAVAC = @JAVAC@ +JAVACFLAGS = @JAVACFLAGS@ +JAR = @JAR@ +WINDRES = @WINDRES@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ @@ -84,23 +87,28 @@ OBJS3 = ${OBJS2:.cxx=.o} OBJS4 = ${OBJS3:.d=.o} OBJS5 = ${OBJS4:.erl=.beam} -OBJS6 = ${OBJS5:.m=.o} -OBJS7 = ${OBJS6:.mm=.o} -OBJS8 = ${OBJS7:.py=.pyc} -OBJS9 = ${OBJS8:.xpm=.o} -OBJS += ${OBJS9:.S=.o} +OBJS6 = ${OBJS5:.java=.class} +OBJS7 = ${OBJS6:.m=.o} +OBJS8 = ${OBJS7:.mm=.o} +OBJS9 = ${OBJS8:.py=.pyc} +OBJS10 = ${OBJS9:.rc=.o} +OBJS11 = ${OBJS10:.S=.o} +OBJS += ${OBJS11:.xpm=.o} + +LIB_OBJS = ${OBJS:.o=.lib.o} +PLUGIN_OBJS = ${OBJS:.o=.plugin.o} MO_FILES = ${LOCALES:.po=.mo} .SILENT: .SUFFIXES: -.SUFFIXES: .beam .c .cc .cxx .d .dep .erl .mo .m .mm .o .po .py .pyc .xpm .S -.PHONY: all subdirs pre-depend depend install install-extra uninstall uninstall-extra clean distclean +.SUFFIXES: .beam .c .c.dep .cc .cc.dep .class .cxx .cxx.dep .d .erl .lib.o .java .mo .m .m.dep .mm .mm.dep .o .plugin.o .po .py .pyc .rc .S .S.dep .xpm +.PHONY: all subdirs pre-depend depend install install-extra uninstall uninstall-extra clean distclean locales all: - for i in subdirs depend ${STATIC_LIB} ${STATIC_LIB_NOINST} ${LIB} ${LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${PROG} ${PROG_NOINST} locales; do \ - ${MAKE} ${MFLAGS} $$i || exit 1; \ - done + ${MAKE} ${MFLAGS} subdirs + ${MAKE} ${MFLAGS} depend + ${MAKE} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST} ${LIB} ${LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${PROG} ${PROG_NOINST} ${JARFILE} locales subdirs: for i in ${SUBDIRS}; do \ @@ -115,33 +123,13 @@ test -f .deps || regen=1; \ for i in ${SRCS}; do \ case $$i in \ - *.c) \ - test $$i -nt .deps && regen=1; \ - deps="$$deps $${i%.c}.dep"; \ - ;; \ - *.cc) \ - test $$i -nt .deps && regen=1; \ - deps="$$deps $${i%.cc}.dep"; \ - ;; \ - *.cxx) \ - test $$i -nt .deps && regen=1; \ - deps="$$deps $${i%.cxx}.dep"; \ - ;; \ - *.m) \ - test $$i -nt .deps && regen=1; \ - deps="$$deps $${i%.m}.dep"; \ - ;; \ - *.mm) \ - test $$i -nt .deps && regen=1; \ - deps="$$deps $${i%.mm}.dep"; \ - ;; \ - *.S) \ + *.c | *.cc | *.cxx | *.m | *.mm | *.S) \ test $$i -nt .deps && regen=1; \ - deps="$$deps $${i%.S}.dep"; \ + deps="$$deps $$i.dep"; \ ;; \ esac; \ done; \ - if test x"$$regen" = x"1" -a x"$$deps" != "x"; then \ + if test x"$$regen" = x"1" -a x"$$deps" != x""; then \ ${DEPEND_STATUS}; \ if ${MAKE} ${MFLAGS} $$deps && cat $$deps >.deps; then \ rm -f $$deps; \ @@ -153,11 +141,10 @@ fi; \ fi -.c.dep .cc.dep .cxx.dep .m.dep .mm.dep .S.dep: - ${CPP} ${CPPFLAGS} -M $< >$@ || (rm -f $@; exit 1) - -.d.dep: -.xpm.dep: +.c.c.dep .cc.cc.dep .cxx.cxx.dep .m.m.dep .mm.mm.dep .S.S.dep: + ${CPP} ${CPPFLAGS} -M $< | \ + sed 's/^\([^\.]*\)\.o:/\1.o \1.lib.o \1.plugin.o:/' >$@ || \ + { rm -f $@; false; } pre-depend: @@ -169,24 +156,33 @@ ${LINK_FAILED}; \ fi -${LIB} ${LIB_NOINST}: ${EXT_DEPS} ${OBJS} - case $@ in \ - *.a) \ - ${MAKE} ${MFLAGS} STATIC_LIB=${LIB} LIB= $@ || exit 1 \ - ;; \ - *) \ - ${LINK_STATUS}; \ - if ${LD} -o $@ ${OBJS} ${LIB_LDFLAGS} ${LDFLAGS} ${LIBS}; then \ - ${LINK_OK}; \ - else \ - ${LINK_FAILED}; \ - fi \ - ;; \ - esac +${JARFILE}: ${EXT_DEPS} ${JAR_MANIFEST} ${OBJS} + ${LINK_STATUS} + if test x"${JAR_MANIFEST}" != x""; then \ + if ${JAR} cfm ${JARFILE} ${JAR_MANIFEST} ${OBJS}; then \ + ${LINK_OK}; \ + else \ + ${LINK_FAILED}; \ + fi \ + else \ + if ${JAR} cf ${JARFILE} ${OBJS}; then \ + ${LINK_OK}; \ + else \ + ${LINK_FAILED}; \ + fi \ + fi -${PLUGIN} ${PLUGIN_NOINST}: ${EXT_DEPS} ${OBJS} +${LIB} ${LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} + ${LINK_STATUS}; \ + if ${LD} -o $@ ${LIB_OBJS} ${LIB_LDFLAGS} ${LDFLAGS} ${LIBS}; then \ + ${LINK_OK}; \ + else \ + ${LINK_FAILED}; \ + fi \ + +${PLUGIN} ${PLUGIN_NOINST}: ${EXT_DEPS} ${PLUGIN_OBJS} ${LINK_STATUS} - if ${LD} -o $@ ${OBJS} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}; then \ + if ${LD} -o $@ ${PLUGIN_OBJS} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}; then \ ${LINK_OK}; \ else \ ${LINK_FAILED}; \ @@ -194,7 +190,44 @@ ${STATIC_LIB} ${STATIC_LIB_NOINST}: ${EXT_DEPS} ${OBJS} ${LINK_STATUS} - if ${AR} cr $@ ${OBJS} && ${RANLIB} $@; then \ + rm -f $@ + objs=""; \ + ars=""; \ + for i in ${OBJS}; do \ + case $$i in \ + *.a) \ + ars="$$ars $$i" \ + ;; \ + *.o) \ + objs="$$objs $$i" \ + ;; \ + esac \ + done; \ + for i in $$ars; do \ + dir=".$$(echo $$i | sed 's/\//_/g').objs"; \ + rm -fr $$dir; \ + mkdir -p $$dir; \ + cd $$dir; \ + ar x ../$$i; \ + for j in *.o; do \ + objs="$$objs $$dir/$$j"; \ + done; \ + cd ..; \ + done; \ + if ${AR} cr $@ $$objs && ${RANLIB} $@; then \ + ${LINK_OK}; \ + else \ + ${LINK_FAILED}; \ + rm -f $@; \ + fi; \ + for i in $$ars; do \ + dir=".$$(echo $$i | sed 's/\//_/g').objs"; \ + rm -fr $$dir; \ + done + +${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} + ${LINK_STATUS} + if ${AR} cr $@ ${LIB_OBJS} && ${RANLIB} $@; then \ ${LINK_OK}; \ else \ ${LINK_FAILED}; \ @@ -210,6 +243,20 @@ else \ ${COMPILE_FAILED}; \ fi +.c.lib.o: + ${COMPILE_LIB_STATUS} + if ${CC} ${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + ${COMPILE_LIB_OK}; \ + else \ + ${COMPILE_LIB_FAILED}; \ + fi +.c.plugin.o: + ${COMPILE_PLUGIN_STATUS} + if ${CC} ${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + ${COMPILE_PLUGIN_OK}; \ + else \ + ${COMPILE_PLUGIN_FAILED}; \ + fi .cc.o .cxx.o: ${COMPILE_STATUS} @@ -218,6 +265,20 @@ else \ ${COMPILE_FAILED}; \ fi +.cc.lib.o .cxx.lib.o: + ${COMPILE_LIB_STATUS} + if ${CXX} ${LIB_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + ${COMPILE_LIB_OK}; \ + else \ + ${COMPILE_LIB_FAILED}; \ + fi +.cc.plugin.o .cxx.plugin.o: + ${COMPILE_PLUGIN_STATUS} + if ${CXX} ${PLUGIN_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + ${COMPILE_PLUGIN_OK}; \ + else \ + ${COMPILE_PLUGIN_FAILED}; \ + fi .d.o: ${COMPILE_STATUS} @@ -243,6 +304,14 @@ ${COMPILE_FAILED}; \ fi +.java.class: + ${COMPILE_STATUS} + if ${JAVAC} ${JAVACFLAGS} $<; then \ + ${COMPILE_OK}; \ + else \ + ${COMPILE_FAILED}; \ + fi + .m.o: ${COMPILE_STATUS} if ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ @@ -250,6 +319,20 @@ else \ ${COMPILE_FAILED}; \ fi +.m.lib.o: + ${COMPILE_LIB_STATUS} + if ${OBJC} ${LIB_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + ${COMPILE_LIB_OK}; \ + else \ + ${COMPILE_LIB_FAILED}; \ + fi +.m.plugin.o: + ${COMPILE_PLUGIN_STATUS} + if ${OBJC} ${PLUGIN_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + ${COMPILE_PLUGIN_OK}; \ + else \ + ${COMPILE_PLUGIN_FAILED}; \ + fi .mm.o: ${COMPILE_STATUS} @@ -258,6 +341,20 @@ else \ ${COMPILE_FAILED}; \ fi +.mm.lib.o: + ${COMPILE_LIB_STATUS} + if ${OBJCXX} ${LIB_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + ${COMPILE_LIB_OK}; \ + else \ + ${COMPILE_LIB_FAILED}; \ + fi +.mm.plugin.o: + ${COMPILE_PLUGIN_STATUS} + if ${OBJCXX} ${PLUGIN_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + ${COMPILE_PLUGIN_OK}; \ + else \ + ${COMPILE_PLUGIN_FAILED}; \ + fi .po.mo: ${COMPILE_STATUS} @@ -275,9 +372,9 @@ ${COMPILE_FAILED}; \ fi -.xpm.o: +.rc.o .rc.lib.o .rc.plugin.o: ${COMPILE_STATUS} - if ${CC} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<; then \ + if ${WINDRES} -J rc -O coff -o $@ $<; then \ ${COMPILE_OK}; \ else \ ${COMPILE_FAILED}; \ @@ -290,8 +387,44 @@ else \ ${COMPILE_FAILED}; \ fi +.S.lib.o: + ${COMPILE_LIB_STATUS} + if ${AS} ${LIB_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + ${COMPILE_LIB_OK}; \ + else \ + ${COMPILE_LIB_FAILED}; \ + fi +.S.plugin.o: + ${COMPILE_PLUGIN_STATUS} + if ${AS} ${PLUGIN_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + ${COMPILE_PLUGIN_OK}; \ + else \ + ${COMPILE_PLUGIN_FAILED}; \ + fi + +.xpm.o: + ${COMPILE_STATUS} + if ${CC} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<; then \ + ${COMPILE_OK}; \ + else \ + ${COMPILE_FAILED}; \ + fi +.xpm.lib.o: + ${COMPILE_LIB_STATUS} + if ${CC} ${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<; then \ + ${COMPILE_LIB_OK}; \ + else \ + ${COMPILE_LIB_FAILED}; \ + fi +.xpm.plugin.o: + ${COMPILE_PLUGIN_STATUS} + if ${CC} ${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<; then \ + ${COMPILE_PLUGIN_OK}; \ + else \ + ${COMPILE_PLUGIN_FAILED}; \ + fi -install: ${LIB} ${STATIC_LIB} ${PLUGIN} ${PROG} install-extra +install: ${LIB} ${STATIC_LIB} ${STATIC_PIC_LIB} ${PLUGIN} ${PROG} install-extra for i in ${SUBDIRS}; do \ ${DIR_ENTER}; \ ${MAKE} ${MFLAGS} install || exit 1; \ @@ -300,14 +433,14 @@ for i in ${LIB}; do \ ${INSTALL_STATUS}; \ - if ${MKDIR_P} ${DESTDIR}${libdir} && ${INSTALL_LIB}; then \ + if ${MKDIR_P} ${DESTDIR}${libdir} ${INSTALL_LIB}; then \ ${INSTALL_OK}; \ else \ ${INSTALL_FAILED}; \ fi \ done - for i in ${STATIC_LIB}; do \ + for i in ${STATIC_LIB} ${STATIC_PIC_LIB}; do \ ${INSTALL_STATUS}; \ if ${MKDIR_P} ${DESTDIR}${libdir} && ${INSTALL} -m 644 $$i ${DESTDIR}${libdir}/$$i; then \ ${INSTALL_OK}; \ @@ -362,7 +495,6 @@ fi \ done \ fi - for i in ${MAN}; do \ ${INSTALL_STATUS}; \ if ${MKDIR_P} ${DESTDIR}${mandir}/${mansubdir} && ${INSTALL} -m 644 $$i ${DESTDIR}${mandir}/${mansubdir}/$$i; then \ @@ -383,7 +515,7 @@ for i in ${LIB}; do \ if test -f ${DESTDIR}${libdir}/$$i; then \ - if ${UNINSTALL_LIB}; then \ + if : ${UNINSTALL_LIB}; then \ ${DELETE_OK}; \ else \ ${DELETE_FAILED}; \ @@ -391,7 +523,7 @@ fi; \ done - for i in ${STATIC_LIB}; do \ + for i in ${STATIC_LIB} ${STATIC_PIC_LIB}; do \ if test -f ${DESTDIR}${libdir}/$$i; then \ if rm -f ${DESTDIR}${libdir}/$$i; then \ ${DELETE_OK}; \ @@ -419,8 +551,10 @@ else \ ${DELETE_FAILED}; \ fi \ - fi \ + fi; \ + rmdir "$$(dirname ${DESTDIR}${datadir}/${PACKAGE}/$$i)" >/dev/null 2>&1 || true; \ done + -rmdir ${DESTDIR}${datadir}/${PACKAGE} >/dev/null 2>&1 for i in ${PROG}; do \ if test -f ${DESTDIR}${bindir}/$$i; then \ @@ -472,7 +606,7 @@ ${DIR_LEAVE}; \ done - for i in ${DEPS} ${OBJS} ${PROG} ${PROG_NOINST} ${LIB} ${LIB_NOINST} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${CLEAN_LIB} ${MO_FILES} ${CLEAN}; do \ + for i in ${DEPS} ${OBJS} ${LIB_OBJS} ${PLUGIN_OBJS} ${PROG} ${PROG_NOINST} ${LIB} ${LIB_NOINST} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${CLEAN_LIB} ${MO_FILES} ${CLEAN}; do \ if test -f $$i -o -d $$i; then \ if rm -fr $$i; then \ ${DELETE_OK}; \ @@ -489,7 +623,7 @@ ${DIR_LEAVE}; \ done - for i in ${DISTCLEAN} *~; do \ + for i in ${DISTCLEAN} .deps *~; do \ if test -f $$i -o -d $$i; then \ if rm -fr $$i; then \ ${DELETE_OK}; \ @@ -499,24 +633,27 @@ fi \ done - # ./configure creates .deps files even in folders not listed in SUBDIRS. - rm -f `find . -name .deps ! -path ./.hg\*` - -DIR_ENTER = printf "\033[K\033[0;36mEntering directory \033[1;36m$$i\033[0;36m.\033[0m\n"; cd $$i || exit 1 -DIR_LEAVE = printf "\033[K\033[0;36mLeaving directory \033[1;36m$$i\033[0;36m.\033[0m\n"; cd .. || exit 1 -DEPEND_STATUS = printf "\033[K\033[0;33mGenerating dependencies...\033[0m\r" -DEPEND_OK = printf "\033[K\033[0;32mSuccessfully generated dependencies.\033[0m\n" -DEPEND_FAILED = printf "\033[K\033[0;31mFailed to generate dependencies!\033[0m\n"; exit 1 -COMPILE_STATUS = printf "\033[K\033[0;33mCompiling \033[1;33m$<\033[0;33m...\033[0m\r" -COMPILE_OK = printf "\033[K\033[0;32mSuccessfully compiled \033[1;32m$<\033[0;32m.\033[0m\n" -COMPILE_FAILED = printf "\033[K\033[0;31mFailed to compile \033[1;31m$<\033[0;31m!\033[0m\n"; exit 1 -LINK_STATUS = printf "\033[K\033[0;33mLinking \033[1;33m$@\033[0;33m...\033[0m\r" -LINK_OK = printf "\033[K\033[0;32mSuccessfully linked \033[1;32m$@\033[0;32m.\033[0m\n" -LINK_FAILED = printf "\033[K\033[0;31mFailed to link \033[1;31m$@\033[0;31m!\033[0m\n"; exit 1 -INSTALL_STATUS = printf "\033[K\033[0;33mInstalling \033[1;33m$$i\033[0;33m...\033[0m\r" -INSTALL_OK = printf "\033[K\033[0;32mSuccessfully installed \033[1;32m$$i\033[0;32m.\033[0m\n" -INSTALL_FAILED = printf "\033[K\033[0;31mFailed to install \033[1;31m$$i\033[0;31m!\033[0m\n"; exit 1 -DELETE_OK = printf "\033[K\033[0;34mDeleted \033[1;34m$$i\033[0;34m.\033[0m\n" -DELETE_FAILED = printf "\033[K\033[0;31mFailed to delete \033[1;31m$$i\033[0;31m!\033[0m\n"; exit 1 +DIR_ENTER = printf "@TERM_EL@@TERM_SETAF6@Entering directory @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF6@.@TERM_SGR0@\n"; cd $$i || exit 1 +DIR_LEAVE = printf "@TERM_EL@@TERM_SETAF6@Leaving directory @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF6@.@TERM_SGR0@\n"; cd .. || exit 1 +DEPEND_STATUS = printf "@TERM_EL@@TERM_SETAF3@Generating dependencies...@TERM_SGR0@\r" +DEPEND_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully generated dependencies.@TERM_SGR0@\n" +DEPEND_FAILED = printf "@TERM_EL@@TERM_SETAF1@Failed to generate dependencies!@TERM_SGR0@\n"; exit 1 +COMPILE_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF3@...@TERM_SGR0@\r" +COMPILE_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF2@.@TERM_SGR0@\n" +COMPILE_FAILED = printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n"; exit 1 +COMPILE_LIB_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF3@ (lib)...@TERM_SGR0@\r" +COMPILE_LIB_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF2@ (lib).@TERM_SGR0@\n" +COMPILE_LIB_FAILED = printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF1@ (lib)!@TERM_SGR0@\n"; exit 1 +COMPILE_PLUGIN_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF3@ (plugin)...@TERM_SGR0@\r" +COMPILE_PLUGIN_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF2@ (plugin).@TERM_SGR0@\n" +COMPILE_PLUGIN_FAILED = printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF1@ (plugin)!@TERM_SGR0@\n"; exit 1 +LINK_STATUS = printf "@TERM_EL@@TERM_SETAF3@Linking @TERM_BOLD@$@@TERM_SGR0@@TERM_SETAF3@...@TERM_SGR0@\r" +LINK_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully linked @TERM_BOLD@$@@TERM_SGR0@@TERM_SETAF2@.@TERM_SGR0@\n" +LINK_FAILED = printf "@TERM_EL@@TERM_SETAF1@Failed to link @TERM_BOLD@$@@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n"; exit 1 +INSTALL_STATUS = printf "@TERM_EL@@TERM_SETAF3@Installing @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF3@...@TERM_SGR0@\r" +INSTALL_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully installed @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF2@.@TERM_SGR0@\n" +INSTALL_FAILED = printf "@TERM_EL@@TERM_SETAF1@Failed to install @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n"; exit 1 +DELETE_OK = printf "@TERM_EL@@TERM_SETAF4@Deleted @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF4@.@TERM_SGR0@\n" +DELETE_FAILED = printf "@TERM_EL@@TERM_SETAF1@Failed to delete @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n"; exit 1 include .deps diff -Nru audacious-plugins-2.4.4/config.guess audacious-plugins-3.2/config.guess --- audacious-plugins-2.4.4/config.guess 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/config.guess 2012-01-20 19:48:30.000000000 +0000 @@ -1,10 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, -# Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# Free Software Foundation, Inc. -timestamp='2006-07-02' +timestamp='2009-11-20' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -27,16 +27,16 @@ # the same distribution terms that you use for the rest of that program. -# Originally written by Per Bothner . -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. +# Originally written by Per Bothner. Please send patches (context +# diff format) to and include a ChangeLog +# entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` @@ -56,8 +56,8 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -139,23 +139,6 @@ UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -if [ "${UNAME_SYSTEM}" = "Linux" ] ; then - eval $set_cc_for_build - cat << EOF > $dummy.c - #include - #ifdef __UCLIBC__ - # ifdef __UCLIBC_CONFIG_VERSION__ - LIBC=uclibc __UCLIBC_CONFIG_VERSION__ - # else - LIBC=uclibc - # endif - #else - LIBC=gnu - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep LIBC= | sed -e 's: ::g'` -fi - # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in @@ -178,6 +161,7 @@ arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched @@ -186,7 +170,7 @@ arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null + | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? @@ -340,14 +324,33 @@ case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize @@ -548,7 +551,7 @@ echo rs6000-ibm-aix3.2 fi exit ;; - *:AIX:*:[45]) + *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 @@ -656,7 +659,7 @@ # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep __LP64__ >/dev/null + grep -q __LP64__ then HP_ARCH="hppa2.0w" else @@ -797,7 +800,7 @@ i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; - i*:MINGW*:*) + *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) @@ -807,15 +810,24 @@ i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; - x86:Interix*:[3456]*) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - EM64T:Interix*:[3456]*) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we @@ -845,193 +857,125 @@ i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; arm*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + fi exit ;; avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) - echo cris-axis-linux-${LIBC} + echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) - echo crisv32-axis-linux-${LIBC} + echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) - echo frv-unknown-linux-${LIBC} + echo frv-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; - mips:Linux:*:*) + mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU - #undef mips - #undef mipsel + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel + CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips + CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } - ;; - mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips64 - #undef mips64el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mips64el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips64 - #else - CPU= - #endif - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) - echo or32-unknown-linux-${LIBC} + echo or32-unknown-linux-gnu exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-${LIBC} + padre:Linux:*:*) + echo sparc-unknown-linux-gnu exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-${LIBC} - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; - PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; - *) echo hppa-unknown-linux-${LIBC} ;; + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; esac exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-${LIBC} + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-${LIBC} + echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) - echo x86_64-unknown-linux-${LIBC} + echo x86_64-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; - i*86:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - # Set LC_ALL=C to ensure ld outputs messages in English. - ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ - | sed -ne '/supported targets:/!d - s/[ ][ ]*/ /g - s/.*supported targets: *// - s/ .*// - p'` - case "$ld_supported_targets" in - elf32-i386) - TENTATIVE="${UNAME_MACHINE}-pc-linux-${LIBC}" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-${LIBC}aout" - exit ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-${LIBC}coff" - exit ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-${LIBC}oldld" - exit ;; - esac - # This should get integrated into the C code below, but now we hack - if [ "$LIBC" != "gnu" ] ; then echo "$TENTATIVE" && exit 0 ; fi - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - #ifdef __ELF__ - # ifdef __GLIBC__ - # if __GLIBC__ >= 2 - LIBC=gnu - # else - LIBC=gnulibc1 - # endif - # else - LIBC=gnulibc1 - # endif - #else - #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) - LIBC=gnu - #else - LIBC=gnuaout - #endif - #endif - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^LIBC/{ - s: ::g - p - }'`" - test x"${LIBC}" != x && { - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit - } - test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } - ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both @@ -1060,7 +1004,7 @@ i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) @@ -1104,8 +1048,11 @@ pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 @@ -1143,6 +1090,16 @@ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; @@ -1155,7 +1112,7 @@ rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) @@ -1218,6 +1175,9 @@ BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; @@ -1227,6 +1187,15 @@ SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; @@ -1236,6 +1205,16 @@ *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + UNAME_PROCESSOR="x86_64" + fi + fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} @@ -1317,6 +1296,9 @@ i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 @@ -1477,9 +1459,9 @@ the operating system you are using. It is advised that you download the most up to date version of the config scripts from - http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD and - http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD If the version you run ($0) is already up to date, please send the following data and any information you think might be diff -Nru audacious-plugins-2.4.4/config.h.in audacious-plugins-3.2/config.h.in --- audacious-plugins-2.4.4/config.h.in 2011-02-22 17:29:49.000000000 +0000 +++ audacious-plugins-3.2/config.h.in 2012-01-20 19:51:56.000000000 +0000 @@ -3,21 +3,6 @@ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD -/* Define to 1 if your system is a PowerPC. */ -#undef ARCH_POWERPC - -/* Config dir to use */ -#undef BMP_RCPATH - -/* Path to OSS DSP, really just a data pipe, default is /dev/dsp. */ -#undef DEV_DSP - -/* Path to OSS mixer, default is /dev/mixer. */ -#undef DEV_MIXER - -/* Define to disable per user plugin directory */ -#undef DISABLE_USER_PLUGIN_DIR - /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS @@ -31,33 +16,23 @@ /* Define if Vorbis output part should be built */ #undef FILEWRITER_VORBIS -/* Define to 1 if your system has AltiVec. */ -#undef HAVE_ALTIVEC - -/* Define to 1 if your system has an altivec.h file. */ -#undef HAVE_ALTIVEC_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_CARBON_CARBON_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_CORESERVICES_CORESERVICES_H +/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYCURRENT + +/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +#undef HAVE_CFPREFERENCESCOPYAPPVALUE /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT -/* Define to 1 if you have the header file. */ -#undef HAVE_FCNTL_H +/* Define to 1 if you have the `fcntl' function. */ +#undef HAVE_FCNTL -/* Define to 1 if you have the header file. */ -#undef HAVE_FNMATCH_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_FTS_H - -/* Define to 1 if you have the `getmntinfo' function. */ -#undef HAVE_GETMNTINFO +/* Define to 1 if you have the `fsync' function. */ +#undef HAVE_FSYNC /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT @@ -65,26 +40,14 @@ /* Define if you have HardSID for libSIDPlay 2 */ #undef HAVE_HARDSID_BUILDER -/* Define if you have the iconv() function. */ +/* Define if you have the iconv() function and it works. */ #undef HAVE_ICONV /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H -/* indidaces if libmtp 0.3.0 is installed */ -#undef HAVE_LIBMTP_030 - -/* Define to 1 if you have the header file. */ -#undef HAVE_LIMITS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_LINUX_JOYSTICK_H - -/* Define to 1 if you have the `lrintf' function. */ -#undef HAVE_LRINTF - -/* Define to 1 if you have the header file. */ -#undef HAVE_MACHINE_SOUNDCARD_H +/* Define to 1 if you have the header file. */ +#undef HAVE_LIBSMBCLIENT_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H @@ -92,24 +55,12 @@ /* Define to 1 if you have the `mkdtemp' function. */ #undef HAVE_MKDTEMP -/* Define if you have the FreeBSD newpcm driver */ -#undef HAVE_NEWPCM - /* Whether we have ne_set_connect_timeout */ #undef HAVE_NE_SET_CONNECT_TIMEOUT -/* Define if the OSS output plugin should be built */ -#undef HAVE_OSS - -/* Define if the OSS4 output plugin should be built */ -#undef HAVE_OSS4 - /* Define if you have reSID for libSIDPlay 2 */ #undef HAVE_RESID_BUILDER -/* Set to 1 if you have libsamplerate. */ -#undef HAVE_SAMPLERATE - /* Define if you have and want to use libSIDPlay1 */ #undef HAVE_SIDPLAY1 @@ -123,18 +74,9 @@ */ #undef HAVE_SIDPLAY2_DISTORTION -/* Define if you have snd_device_name_hint */ -#undef HAVE_SND_DEVICE_NAME_HINT - /* Define to 1 if you have the header file. */ #undef HAVE_SOUNDCARD_H -/* Define to 1 if your system has SSE2 */ -#undef HAVE_SSE2 - -/* Define to 1 if you have the `statvfs' function. */ -#undef HAVE_STATVFS - /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H @@ -147,15 +89,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H -/* Whether we have strnlen */ -#undef HAVE_STRNLEN - -/* Define to 1 if you have the `strtoul' function. */ -#undef HAVE_STRTOUL - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_IOCTL_H - /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOUNDCARD_H @@ -165,15 +98,18 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_WAIT_H + /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H -/* Define to 1 if you have the header file. */ -#undef HAVE_WCHAR_H - /* X Composite extension available */ #undef HAVE_XCOMPOSITE +/* Define to 1 if you have the header file. */ +#undef HAVE_ZLIB_H + /* Name of package */ #undef PACKAGE @@ -198,15 +134,6 @@ /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS -/* Define to symbol prefix, if any */ -#undef SYMBOL_PREFIX - -/* Define if character set detection enabled */ -#undef USE_CHARDET - -/* Define if D-Bus support enabled */ -#undef USE_DBUS - /* Define if building with IPv6 support */ #undef USE_IPV6 @@ -224,3 +151,9 @@ # undef WORDS_BIGENDIAN # endif #endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES diff -Nru audacious-plugins-2.4.4/config.rpath audacious-plugins-3.2/config.rpath --- audacious-plugins-2.4.4/config.rpath 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/config.rpath 2012-01-20 19:48:30.000000000 +0000 @@ -2,7 +2,7 @@ # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # -# Copyright 1996-2005 Free Software Foundation, Inc. +# Copyright 1996-2010 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # @@ -25,7 +25,7 @@ # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. -# All known linkers require a `.a' archive for static linking (except M$VC, +# All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a shrext=.so @@ -35,9 +35,19 @@ host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -cc_basename=`echo "$CC" | sed -e 's%^.*/%%'` +# Code taken from libtool.m4's _LT_CC_BASENAME. -# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. +for cc_temp in $CC""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` + +# Code taken from libtool.m4's _LT_COMPILER_PIC. wl= if test "$GCC" = yes; then @@ -48,13 +58,13 @@ wl='-Wl,' ;; darwin*) - case "$cc_basename" in + case $cc_basename in xlc*) wl='-Wl,' ;; esac ;; - mingw* | pw32* | os2*) + mingw* | cygwin* | pw32* | os2* | cegcc*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' @@ -64,9 +74,15 @@ ;; newsos6) ;; - linux*) + linux* | k*bsd*-gnu) case $cc_basename in - icc* | ecc*) + ecc*) + wl='-Wl,' + ;; + icc* | ifort*) + wl='-Wl,' + ;; + lf95*) wl='-Wl,' ;; pgcc | pgf77 | pgf90) @@ -78,12 +94,19 @@ como) wl='-lopt=' ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + wl='-Wl,' + ;; + esac + ;; esac ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; - sco3.2v5*) + rdos*) ;; solaris*) wl='-Wl,' @@ -91,11 +114,14 @@ sunos4*) wl='-Qoption ld ' ;; - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + sysv4 | sysv4.2uw2* | sysv4.3*) wl='-Wl,' ;; sysv4*MP*) ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + wl='-Wl,' + ;; unicos*) wl='-Wl,' ;; @@ -104,7 +130,7 @@ esac fi -# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. +# Code taken from libtool.m4's _LT_LINKER_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= @@ -112,7 +138,7 @@ hardcode_minus_L=no case "$host_os" in - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. @@ -120,6 +146,10 @@ with_gnu_ld=no fi ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; openbsd*) with_gnu_ld=no ;; @@ -127,8 +157,14 @@ ld_shlibs=yes if test "$with_gnu_ld" = yes; then + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' case "$host_os" in - aix3* | aix4* | aix5*) + aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no @@ -152,7 +188,7 @@ ld_shlibs=no fi ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' @@ -162,9 +198,20 @@ ld_shlibs=no fi ;; + interix[3-9]*) + hardcode_direct=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; netbsd*) ;; - solaris* | sysv5*) + solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then @@ -173,16 +220,23 @@ ld_shlibs=no fi ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + else + ld_shlibs=no + fi + ;; + esac + ;; sunos4*) hardcode_direct=yes ;; - linux*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - : - else - ld_shlibs=no - fi - ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : @@ -191,10 +245,8 @@ fi ;; esac - if test "$ld_shlibs" = yes; then - # Unlike libtool, we use -rpath here, not --rpath, since the documented - # option of GNU ld is called -rpath, not --rpath. - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + if test "$ld_shlibs" = no; then + hardcode_libdir_flag_spec= fi else case "$host_os" in @@ -208,7 +260,7 @@ hardcode_direct=unsupported fi ;; - aix4* | aix5*) + aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. @@ -218,13 +270,14 @@ # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix5*) + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done + ;; esac fi hardcode_direct=yes @@ -236,7 +289,7 @@ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 - hardcode_direct=yes + : else # We have old collect2 hardcode_direct=unsupported @@ -244,6 +297,7 @@ hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi + ;; esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. @@ -278,7 +332,7 @@ ;; bsdi[45]*) ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is @@ -291,7 +345,7 @@ if test "$GCC" = yes ; then : else - case "$cc_basename" in + case $cc_basename in xlc*) ;; *) @@ -314,7 +368,7 @@ hardcode_direct=yes hardcode_minus_L=yes ;; - freebsd* | kfreebsd*-gnu | dragonfly*) + freebsd* | dragonfly*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; @@ -326,24 +380,25 @@ # but as the default location of the library. hardcode_minus_L=yes ;; - hpux10* | hpux11*) + hpux10*) if test "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*) - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=no - ;; - ia64*) - hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + hpux11*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + case $host_cpu in + hppa*64*|ia64*) hardcode_direct=no - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes ;; *) - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. @@ -366,18 +421,22 @@ hardcode_libdir_separator=: ;; openbsd*) - hardcode_direct=yes - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi else - case "$host_os" in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac + ld_shlibs=no fi ;; os2*) @@ -397,8 +456,6 @@ fi hardcode_libdir_separator=: ;; - sco3.2v5*) - ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; @@ -427,14 +484,11 @@ ld_shlibs=yes fi ;; - sysv4.2uw2*) - hardcode_direct=yes - hardcode_minus_L=no - ;; - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ;; - sysv5*) - hardcode_libdir_flag_spec= + sysv5* | sco3.2v5* | sco5v6*) + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' @@ -446,37 +500,55 @@ fi # Check dynamic linker characteristics -# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. +# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. +# Unlike libtool.m4, here we don't care about _all_ names of the library, but +# only about the one the linker finds when passed -lNAME. This is the last +# element of library_names_spec in libtool.m4, or possibly two of them if the +# linker has special search rules. +library_names_spec= # the last element of library_names_spec in libtool.m4 libname_spec='lib$name' case "$host_os" in aix3*) + library_names_spec='$libname.a' ;; - aix4* | aix5*) + aix[4-9]*) + library_names_spec='$libname$shrext' ;; amigaos*) + library_names_spec='$libname.a' ;; beos*) + library_names_spec='$libname$shrext' ;; bsdi[45]*) + library_names_spec='$libname$shrext' ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) shrext=.dll + library_names_spec='$libname.dll.a $libname.lib' ;; darwin* | rhapsody*) shrext=.dylib + library_names_spec='$libname$shrext' ;; dgux*) + library_names_spec='$libname$shrext' ;; freebsd1*) ;; - kfreebsd*-gnu) - ;; - freebsd*) + freebsd* | dragonfly*) + case "$host_os" in + freebsd[123]*) + library_names_spec='$libname$shrext$versuffix' ;; + *) + library_names_spec='$libname$shrext' ;; + esac ;; gnu*) + library_names_spec='$libname$shrext' ;; hpux9* | hpux10* | hpux11*) - case "$host_cpu" in + case $host_cpu in ia64*) shrext=.so ;; @@ -487,8 +559,13 @@ shrext=.sl ;; esac + library_names_spec='$libname$shrext' + ;; + interix[3-9]*) + library_names_spec='$libname$shrext' ;; irix5* | irix6* | nonstopux*) + library_names_spec='$libname$shrext' case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= @@ -505,41 +582,59 @@ ;; linux*oldld* | linux*aout* | linux*coff*) ;; - linux*) + linux* | k*bsd*-gnu) + library_names_spec='$libname$shrext' ;; knetbsd*-gnu) + library_names_spec='$libname$shrext' ;; netbsd*) + library_names_spec='$libname$shrext' ;; newsos6) + library_names_spec='$libname$shrext' ;; nto-qnx*) + library_names_spec='$libname$shrext' ;; openbsd*) + library_names_spec='$libname$shrext$versuffix' ;; os2*) libname_spec='$name' shrext=.dll + library_names_spec='$libname.a' ;; osf3* | osf4* | osf5*) + library_names_spec='$libname$shrext' ;; - sco3.2v5*) + rdos*) ;; solaris*) + library_names_spec='$libname$shrext' ;; sunos4*) + library_names_spec='$libname$shrext$versuffix' ;; - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + sysv4 | sysv4.3*) + library_names_spec='$libname$shrext' ;; sysv4*MP*) + library_names_spec='$libname$shrext' + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + library_names_spec='$libname$shrext' ;; uts4*) + library_names_spec='$libname$shrext' ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` +escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. Submit a context -# diff and a properly formatted ChangeLog entry. +# diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. @@ -72,8 +75,8 @@ version="\ GNU config.sub ($timestamp) -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -122,6 +125,7 @@ case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` @@ -148,10 +152,13 @@ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray) + -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; + -bluegene*) + os=-cnk + ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 @@ -244,18 +251,21 @@ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx | dvp \ - | fr30 | frv \ + | d10v | d30v | dlx | dsp16xx \ + | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ + | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore \ + | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ - | mips64vr | mips64vrel \ + | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ @@ -268,6 +278,7 @@ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ + | moxie \ | mt \ | msp430 \ | nios | nios2 \ @@ -276,19 +287,22 @@ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ - | sh | sh[1234] | sh[24]a | sh[24]a*eb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ + | ubicom32 \ | v850 | v850e \ | we32k \ - | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ - | z8k) + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k | z80) basic_machine=$basic_machine-unknown ;; - m6811 | m68hc11 | m6812 | m68hc12) + m6811 | m68hc11 | m6812 | m68hc12 | picochip) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none @@ -323,19 +337,22 @@ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ + | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ + | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ @@ -356,21 +373,26 @@ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ - | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]a*eb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ | tron-* \ + | ubicom32-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ - | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ - | xstormy16-* | xtensa-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa*-* \ | ymp-* \ - | z8k-*) + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. @@ -434,6 +456,10 @@ basic_machine=m68k-apollo os=-bsd ;; + aros) + basic_machine=i386-pc + os=-aros + ;; aux) basic_machine=m68k-apple os=-aux @@ -442,10 +468,26 @@ basic_machine=ns32k-sequent os=-dynix ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; c90) basic_machine=c90-cray os=-unicos ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; convex-c1) basic_machine=c1-convex os=-bsd @@ -474,8 +516,8 @@ basic_machine=craynv-cray os=-unicosmp ;; - cr16c) - basic_machine=cr16c-unknown + cr16) + basic_machine=cr16-unknown os=-elf ;; crds | unos) @@ -513,6 +555,10 @@ basic_machine=m88k-motorola os=-sysv3 ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp @@ -667,6 +713,14 @@ basic_machine=m68k-isi os=-sysv ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; m88k-omron*) basic_machine=m88k-omron ;; @@ -678,10 +732,17 @@ basic_machine=ns32k-utek os=-sysv ;; + microblaze) + basic_machine=microblaze-xilinx + ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; miniframe) basic_machine=m68000-convergent ;; @@ -689,24 +750,6 @@ basic_machine=m68k-atari os=-mint ;; - mipsEE* | ee | ps2) - basic_machine=mips64r5900el-scei - case $os in - -linux*) - ;; - *) - os=-elf - ;; - esac - ;; - iop) - basic_machine=mipsel-scei - os=-irx - ;; - dvp) - basic_machine=dvp-scei - os=-elf - ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; @@ -826,6 +869,14 @@ basic_machine=i860-intel os=-osf ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; pbd) basic_machine=sparc-tti ;; @@ -927,6 +978,10 @@ sb1el) basic_machine=mipsisa64sb1el-unknown ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; sei) basic_machine=mips-sei os=-seiux @@ -938,6 +993,9 @@ basic_machine=sh-hitachi os=-hms ;; + sh5el) + basic_machine=sh5le-unknown + ;; sh64) basic_machine=sh64-unknown ;; @@ -1027,6 +1085,10 @@ basic_machine=tic6x-unknown os=-coff ;; + tile*) + basic_machine=tile-unknown + os=-linux-gnu + ;; tx39) basic_machine=mipstx39-unknown ;; @@ -1102,6 +1164,10 @@ basic_machine=z8k-unknown os=-sim ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; none) basic_machine=none-none os=-none @@ -1140,7 +1206,7 @@ we32k) basic_machine=we32k-att ;; - sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) @@ -1190,6 +1256,9 @@ # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; @@ -1210,10 +1279,11 @@ # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ + | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ @@ -1222,7 +1292,7 @@ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ + | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ @@ -1232,7 +1302,7 @@ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -irx*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1362,6 +1432,9 @@ -zvmoe) os=-zvmoe ;; + -dicos*) + os=-dicos + ;; -none) ;; *) @@ -1384,6 +1457,9 @@ # system, and we'll never get to this point. case $basic_machine in + score-*) + os=-elf + ;; spu-*) os=-elf ;; @@ -1424,6 +1500,9 @@ m68*-cisco) os=-aout ;; + mep-*) + os=-elf + ;; mips*-cisco) os=-elf ;; @@ -1553,7 +1632,7 @@ -sunos*) vendor=sun ;; - -aix*) + -cnk*|-aix*) vendor=ibm ;; -beos*) diff -Nru audacious-plugins-2.4.4/configure audacious-plugins-3.2/configure --- audacious-plugins-2.4.4/configure 2011-02-22 17:29:49.000000000 +0000 +++ audacious-plugins-3.2/configure 2012-01-20 19:51:56.000000000 +0000 @@ -1,8 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for audacious-plugins 2.4.4. -# -# Report bugs to . +# Generated by GNU Autoconf 2.68 for audacious-plugins 3.2. # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -12,6 +10,8 @@ # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. +# +# (C) 2005-2012 Audacious Team ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## @@ -238,8 +238,7 @@ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else - $as_echo "$0: Please tell bug-autoconf@gnu.org and -$0: bugs+audacious-plugins@atheme.org about your system, + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." @@ -560,9 +559,9 @@ # Identity of this package. PACKAGE_NAME='audacious-plugins' PACKAGE_TARNAME='audacious-plugins' -PACKAGE_VERSION='2.4.4' -PACKAGE_STRING='audacious-plugins 2.4.4' -PACKAGE_BUGREPORT='bugs+audacious-plugins@atheme.org' +PACKAGE_VERSION='3.2' +PACKAGE_STRING='audacious-plugins 3.2' +PACKAGE_BUGREPORT='' PACKAGE_URL='' # Factoring default headers for most tests. @@ -601,6 +600,7 @@ # include #endif" +gt_needs= ac_subst_vars='LTLIBOBJS LIBOBJS GCC42_CFLAGS @@ -611,8 +611,6 @@ INPUT_PLUGINS GENERAL_PLUGINS EFFECT_PLUGINS -beepdir -BEEP_DEFINES pluginsubs TRANSPORT_PLUGIN_DIR CONTAINER_PLUGIN_DIR @@ -622,36 +620,18 @@ OUTPUT_PLUGIN_DIR INPUT_PLUGIN_DIR plugindir -HAVE_SUN_FALSE -HAVE_SUN_TRUE -HAVE_SOLARIS_FALSE -HAVE_SOLARIS_TRUE -USE_X86ASM_FALSE -USE_X86ASM_TRUE -ARCH_X86_FALSE -ARCH_X86_TRUE -ARCH_DEFINES +GLIB214_LIBS +GLIB214_CFLAGS BS2B_LIBS BS2B_CFLAGS FILEWRITER_LIBS FILEWRITER_CFLAGS FLAC_LIBS FLAC_CFLAGS -GTKGLEXT_LIBS -GTKGLEXT_CFLAGS -LIBPROJECTM1_LIBS -LIBPROJECTM1_CFLAGS -LIBPROJECTM_LIBS -LIBPROJECTM_CFLAGS CUE_LIBS CUE_CFLAGS XML_LIBS XML_CFLAGS -SDL_LIBS -SDL_CFLAGS -SDL_CONFIG -BLUEZ_LIBS -BLUEZ_CFLAGS MTP_LIBS MTP_CFLAGS MMS_LIBS @@ -660,10 +640,6 @@ NEON_CFLAGS CURL_LIBS CURL_CFLAGS -HAVE_LINUX_JOYSTICK_FALSE -HAVE_LINUX_JOYSTICK_TRUE -HAVE_CDROM_FALSE -HAVE_CDROM_TRUE CDDB_LIBS CDDB_CFLAGS CDIO_LIBS @@ -674,9 +650,11 @@ GMODULE_CFLAGS FLUIDSYNTH_LIBS FLUIDSYNTH_CFLAGS +SDL_LIBS +SDL_CFLAGS +SDL_CONFIG ALSA_LIBS ALSA_CFLAGS -OSS_LIBS OSS_CFLAGS CXXCPP BUILDERS_LIBS @@ -692,8 +670,8 @@ JACK_CFLAGS FFMPEG_LIBS FFMPEG_CFLAGS -NEED_AVCORE_LIBS -NEED_AVCORE_CFLAGS +MODPLUG_LIBS +MODPLUG_CFLAGS SNDFILE_LIBS SNDFILE_CFLAGS FAAD_LIBS @@ -706,6 +684,8 @@ OGG_VORBIS_CFLAGS BINIO_LIBS BINIO_CFLAGS +GIO_UNIX_LIBS +GIO_UNIX_CFLAGS NOTIFY_LIBS NOTIFY_CFLAGS XCOMPOSITE_LIBS @@ -714,68 +694,81 @@ XRENDER_CFLAGS PANGOCAIRO_LIBS PANGOCAIRO_CFLAGS -CAIRO_LIBS -CAIRO_CFLAGS +GTK216_LIBS +GTK216_CFLAGS +DBUS_LIBS +DBUS_CFLAGS GDKX11_LIBS GDKX11_CFLAGS -DCT64 -SIMD_CFLAGS -LIBROAR_LIBS -LIBROAR_CFLAGS +MPG123_LIBS +MPG123_CFLAGS PULSE_LIBS PULSE_CFLAGS -PROG_IMPLIB_LDFLAGS -PROG_IMPLIB_NEEDED -CLEAN_LIB -UNINSTALL_LIB -INSTALL_LIB -PLUGIN_SUFFIX -PLUGIN_LDFLAGS -PLUGIN_CFLAGS -PLUGIN_CPPFLAGS -LDFLAGS_RPATH -LIB_SUFFIX -LIB_PREFIX -LIB_LDFLAGS -LIB_CFLAGS -LIB_CPPFLAGS -USE_CHARDET -USE_CHARDET_FALSE -USE_CHARDET_TRUE USE_IPV6 USE_IPV6_FALSE USE_IPV6_TRUE -MOWGLI_LIBS -MOWGLI_CFLAGS -DBUS_LIBS -DBUS_CFLAGS -PANGO_LIBS -PANGO_CFLAGS +PTHREAD_CFLAGS +PTHREAD_LIBS GIO_LIBS GIO_CFLAGS GTK_LIBS GTK_CFLAGS -GLIB_LIBS -GLIB_CFLAGS -PC_REQUIRES AUDACIOUS_LIBS AUDACIOUS_CFLAGS -PKG_CONFIG POSUB LTLIBINTL LIBINTL INTLLIBS LTLIBICONV LIBICONV +INTL_MACOSX_LIBS +XGETTEXT_EXTRA_OPTIONS MSGMERGE +XGETTEXT_015 XGETTEXT +GMSGFMT_015 +MSGFMT_015 GMSGFMT MSGFMT +GETTEXT_MACRO_VERSION USE_NLS -MKINSTALLDIRS +mkdir_p +MKDIR_P INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM +CLEAN_LIB +UNINSTALL_LIB +INSTALL_LIB +PLUGIN_SUFFIX +PLUGIN_LDFLAGS +PLUGIN_CFLAGS +LDFLAGS_RPATH +LIB_SUFFIX +LIB_PREFIX +LIB_LDFLAGS +LIB_CFLAGS +TERM_SETAF6 +TERM_SETAF4 +TERM_SETAF3 +TERM_SETAF2 +TERM_SETAF1 +TERM_BOLD +TERM_SGR0 +TERM_EL +TPUT +CAIRO_LIBS +CAIRO_CFLAGS +PANGO_LIBS +PANGO_CFLAGS +GTHREAD_LIBS +GTHREAD_CFLAGS +GLIB_LIBS +GLIB_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +WINDRES RANLIB TR AR @@ -784,9 +777,14 @@ RM SET_MAKE LN_S +MAKE +EGREP +GREP +CPP am__fastdepCCAS_FALSE am__fastdepCCAS_TRUE CCASDEPMODE +am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE @@ -796,9 +794,6 @@ am__leading_dot CCASFLAGS CCAS -EGREP -GREP -CPP ac_ct_CXX CXXFLAGS CXX @@ -809,8 +804,6 @@ LDFLAGS CFLAGS CC -VERSION -PACKAGE target_os target_vendor target_cpu @@ -823,6 +816,8 @@ build_vendor build_cpu build +VERSION +PACKAGE target_alias host_alias build_alias @@ -865,42 +860,31 @@ ac_user_opts=' enable_option_checking enable_dependency_tracking +enable_largefile enable_nls with_gnu_ld enable_rpath with_libiconv_prefix with_libintl_prefix -with_dev_dsp -with_dev_mixer +enable_gtk3 enable_gio -enable_dbus enable_ipv6 -enable_chardet +enable_console +enable_xsf enable_pulse -enable_roar -enable_coreaudio -enable_dockalbumart -enable_altivec -enable_sse2 enable_psf -enable_usf enable_mp3 -enable_rocklight -enable_lirc -enable_evdevplug enable_hotkey enable_gnomeshortcuts +enable_songchange enable_statusicon enable_aosd enable_aosd_xcomp enable_notify +enable_mpris2 enable_adplug enable_vorbis enable_flacng -with_libFLAC -with_libFLAC_libraries -with_libFLAC_includes -enable_libFLACtest enable_wavpack enable_aac enable_sndfile @@ -920,28 +904,28 @@ enable_oss enable_oss4 enable_alsa +enable_sdlout +with_sdl_prefix +with_sdl_exec_prefix +enable_sdltest enable_amidiplug enable_amidiplug_alsa enable_amidiplug_flsyn enable_cdaudio -enable_streambrowser enable_scrobbler enable_neon enable_mms +enable_smb enable_mtp_up -enable_bluetooth -enable_paranormal -with_sdl_prefix -with_sdl_exec_prefix enable_cue -enable_projectm -enable_projectm_1_0 enable_filewriter enable_filewriter_mp3 enable_filewriter_vorbis enable_filewriter_flac enable_bs2b enable_resample +enable_gtkui +enable_skins enable_lyricwiki ' ac_precious_vars='build_alias @@ -955,32 +939,36 @@ CXX CXXFLAGS CCC -CPP CCAS CCASFLAGS +CPP PKG_CONFIG -AUDACIOUS_CFLAGS -AUDACIOUS_LIBS +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR GLIB_CFLAGS GLIB_LIBS +GTHREAD_CFLAGS +GTHREAD_LIBS +PANGO_CFLAGS +PANGO_LIBS +CAIRO_CFLAGS +CAIRO_LIBS +AUDACIOUS_CFLAGS +AUDACIOUS_LIBS GTK_CFLAGS GTK_LIBS GIO_CFLAGS GIO_LIBS -PANGO_CFLAGS -PANGO_LIBS -DBUS_CFLAGS -DBUS_LIBS -MOWGLI_CFLAGS -MOWGLI_LIBS PULSE_CFLAGS PULSE_LIBS -LIBROAR_CFLAGS -LIBROAR_LIBS +MPG123_CFLAGS +MPG123_LIBS GDKX11_CFLAGS GDKX11_LIBS -CAIRO_CFLAGS -CAIRO_LIBS +DBUS_CFLAGS +DBUS_LIBS +GTK216_CFLAGS +GTK216_LIBS PANGOCAIRO_CFLAGS PANGOCAIRO_LIBS XRENDER_CFLAGS @@ -989,16 +977,20 @@ XCOMPOSITE_LIBS NOTIFY_CFLAGS NOTIFY_LIBS +GIO_UNIX_CFLAGS +GIO_UNIX_LIBS BINIO_CFLAGS BINIO_LIBS OGG_VORBIS_CFLAGS OGG_VORBIS_LIBS +LIBFLAC_CFLAGS +LIBFLAC_LIBS WAVPACK_CFLAGS WAVPACK_LIBS SNDFILE_CFLAGS SNDFILE_LIBS -NEED_AVCORE_CFLAGS -NEED_AVCORE_LIBS +MODPLUG_CFLAGS +MODPLUG_LIBS FFMPEG_CFLAGS FFMPEG_LIBS JACK_CFLAGS @@ -1024,22 +1016,16 @@ MMS_LIBS MTP_CFLAGS MTP_LIBS -BLUEZ_CFLAGS -BLUEZ_LIBS XML_CFLAGS XML_LIBS CUE_CFLAGS CUE_LIBS -LIBPROJECTM_CFLAGS -LIBPROJECTM_LIBS -LIBPROJECTM1_CFLAGS -LIBPROJECTM1_LIBS -GTKGLEXT_CFLAGS -GTKGLEXT_LIBS FLAC_CFLAGS FLAC_LIBS BS2B_CFLAGS -BS2B_LIBS' +BS2B_LIBS +GLIB214_CFLAGS +GLIB214_LIBS' # Initialize some variables set by options. @@ -1582,7 +1568,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures audacious-plugins 2.4.4 to adapt to many kinds of systems. +\`configure' configures audacious-plugins 3.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1649,7 +1635,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of audacious-plugins 2.4.4:";; + short | recursive ) echo "Configuration of audacious-plugins 3.2:";; esac cat <<\_ACEOF @@ -1659,64 +1645,58 @@ --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors + --disable-largefile omit support for large files --disable-nls do not use Native Language Support --disable-rpath do not hardcode runtime library paths - --disable-gio disable GIO support (default=enabled if GIO present) - --disable-dbus disable DBus support (default=enabled) + --disable-gtk3 Use GTK2 even if GTK3 is present + --enable-gio enable GIO support (default=disabled) --enable-ipv6 enable IPv6 support (default=no) - --enable-chardet enable character set detection support (default=no) + --disable-console disable game music decoder (console) + --disable-xsf disable Nintendo DS audio decoder (xsf) --disable-pulse disable PulseAudio output plugin (default=enabled) - --disable-roar disable PulseAudio output plugin (default=enabled) - --disable-coreaudio disable CoreAudio output plugin (default=enabled) - --disable-dockalbumart disable MacOS dock albumart plugin (default=guess) - --disable-altivec disable AltiVec support. (default=enabled) - --disable-sse2 disable SSE2 support. (default=enabled) - --disable-psf disable PlayStation (psf/psf2) audio decoder - --enable-usf enable the USF input plugin (default=disabled) - --disable-mp3 disable mp3 plugin. (default=enabled) - --disable-rocklight disable Rocklight vis plugin (default=enabled) - --disable-lirc disable LIRC plugin (default=enabled) - --disable-evdevplug disable Linux evdev plugin (default=enabled) + --disable-psf disable PlayStation (psf/psf2) audio decoder + --disable-mp3 disable MP3 plugin (default=enabled) --disable-hotkey disable global hotkey plugin (default=enabled) --disable-gnomeshortcuts disable gnome shortcuts (default=enabled) + --disable-songchange disable song change plugin --disable-statusicon disable X11 Status Icon plugin (default=enabled) --disable-aosd disable Audacious OSD plugin (default=enabled) --disable-aosd-xcomp disable Audacious OSD X Composite Support (default=enabled) --disable-notify disable notify plugin (default=enabled) + --disable-mpris2 disable MPRIS 2 support (default=enabled) --disable-adplug disable AdPlug plugin (default=enabled) --disable-vorbis disable Ogg Vorbis input plugin (default=enabled) --disable-flacng disable flac input plugin (default=enabled) - --disable-libFLACtest do not try to compile and run a test libFLAC program --disable-wavpack disable WavPack input plugin (default=enabled) --disable-aac disable aac plugin (default=enabled) --disable-sndfile disable sndfile extensions. default=enabled --disable-modplug disable ModPlug plugin (default=enabled) --disable-ffaudio disable ffaudio plugin (default=enabled) - --disable-jack disable jack output plugin (default=enabled) + --disable-jack disable JACK output plugin (default=enabled) --disable-sid disable SID input plugin (default=enabled) - --disable-oss disable the OSS output plugin (default=enabled) - --enable-oss4 enable the OSS4 output plugin (default=disabled) - --disable-alsa disable ALSA input plugin (default=enabled) + --enable-oss enable OSS3 output plugin + --disable-oss4 disable OSS4 output plugin + --disable-alsa disable ALSA output plugin + --disable-sdlout disable SDL output plugin + --disable-sdltest Do not try to compile and run a test SDL program --disable-amidiplug disable amidi-plug input plugin (default=check) --disable-amidiplug-alsa disable amidi-plug ALSA backend (default=enabled) --disable-amidiplug-flsyn disable amidi-plug FluidSynth backend (default=enabled) --disable-cdaudio disable cdaudio-ng input plugin (default=enabled) - --disable-streambrowser disable streambrowser general plugin (default=enabled) - --enable-scrobbler enable Scrobbler plugin (default=enabled) + --disable-scrobbler disable Scrobbler plugin (default=enabled) --disable-neon disable neon HTTP support (default=enabled) --disable-mms disable mms support. (default=enabled) + --enable-smb enable SMB transport (default=disabled) --disable-mtp_up disable mtp upload support. (default=enabled) - --disable-bluetooth disable bluetooth audio support. (default=enabled) - --disable-paranormal disable paranormal vis plugin. (default=enabled) --disable-cue disable cue support. (default=enabled) - --disable-projectm disable projectM vis plugin. (default=enabled) - --disable-projectm-1.0 disable projectM 1.0+ vis plugin. (default=enabled) --disable-filewriter disable FileWriter output plugin (default=enabled) --disable-filewriter_mp3 disable FileWriter MP3 output part (default=enabled) --disable-filewriter_vorbis disable FileWriter Vorbis output part (default=enabled) --disable-filewriter_flac disable FileWriter FLAC output part (default=enabled) --disable-bs2b disable BS2B effect plugin (default=enabled) --disable-resample disable resample effect plugin (default=enabled) + --disable-gtkui disable GTK interface (gtkui) + --disable-skins disable Winamp Classic interface (skins) --disable-lyricwiki disable LyricWiki plugin (default=enabled) Optional Packages: @@ -1727,11 +1707,6 @@ --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir - --with-dev-dsp=path Path to OSS DSP data pipe, default is /dev/dsp. - --with-dev-mixer=path Path to OSS sound mixer, default is /dev/mixer. - --with-libFLAC=PFX Prefix where libFLAC is installed (optional) - --with-libFLAC-libraries=DIR Directory where libFLAC library is installed (optional) - --with-libFLAC-includes=DIR Directory where libFLAC header files are installed (optional) --with-sidplay1=PREFIX Enable libSIDPlay1 with install-PREFIX --with-sidplay1-inc=DIR Where the libSIDPlay1 headers are located --with-sidplay1-lib=DIR Where the libSIDPlay1 library is installed @@ -1754,41 +1729,48 @@ you have headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags - CPP C preprocessor CCAS assembler compiler command (defaults to CC) CCASFLAGS assembler compiler flags (defaults to CFLAGS) + CPP C preprocessor PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config + GLIB_LIBS linker flags for GLIB, overriding pkg-config + GTHREAD_CFLAGS + C compiler flags for GTHREAD, overriding pkg-config + GTHREAD_LIBS + linker flags for GTHREAD, overriding pkg-config + PANGO_CFLAGS + C compiler flags for PANGO, overriding pkg-config + PANGO_LIBS linker flags for PANGO, overriding pkg-config + CAIRO_CFLAGS + C compiler flags for CAIRO, overriding pkg-config + CAIRO_LIBS linker flags for CAIRO, overriding pkg-config AUDACIOUS_CFLAGS C compiler flags for AUDACIOUS, overriding pkg-config AUDACIOUS_LIBS linker flags for AUDACIOUS, overriding pkg-config - GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config - GLIB_LIBS linker flags for GLIB, overriding pkg-config GTK_CFLAGS C compiler flags for GTK, overriding pkg-config GTK_LIBS linker flags for GTK, overriding pkg-config GIO_CFLAGS C compiler flags for GIO, overriding pkg-config GIO_LIBS linker flags for GIO, overriding pkg-config - PANGO_CFLAGS - C compiler flags for PANGO, overriding pkg-config - PANGO_LIBS linker flags for PANGO, overriding pkg-config - DBUS_CFLAGS C compiler flags for DBUS, overriding pkg-config - DBUS_LIBS linker flags for DBUS, overriding pkg-config - MOWGLI_CFLAGS - C compiler flags for MOWGLI, overriding pkg-config - MOWGLI_LIBS linker flags for MOWGLI, overriding pkg-config PULSE_CFLAGS C compiler flags for PULSE, overriding pkg-config PULSE_LIBS linker flags for PULSE, overriding pkg-config - LIBROAR_CFLAGS - C compiler flags for LIBROAR, overriding pkg-config - LIBROAR_LIBS - linker flags for LIBROAR, overriding pkg-config + MPG123_CFLAGS + C compiler flags for MPG123, overriding pkg-config + MPG123_LIBS linker flags for MPG123, overriding pkg-config GDKX11_CFLAGS C compiler flags for GDKX11, overriding pkg-config GDKX11_LIBS linker flags for GDKX11, overriding pkg-config - CAIRO_CFLAGS - C compiler flags for CAIRO, overriding pkg-config - CAIRO_LIBS linker flags for CAIRO, overriding pkg-config + DBUS_CFLAGS C compiler flags for DBUS, overriding pkg-config + DBUS_LIBS linker flags for DBUS, overriding pkg-config + GTK216_CFLAGS + C compiler flags for GTK216, overriding pkg-config + GTK216_LIBS linker flags for GTK216, overriding pkg-config PANGOCAIRO_CFLAGS C compiler flags for PANGOCAIRO, overriding pkg-config PANGOCAIRO_LIBS @@ -1804,6 +1786,10 @@ NOTIFY_CFLAGS C compiler flags for NOTIFY, overriding pkg-config NOTIFY_LIBS linker flags for NOTIFY, overriding pkg-config + GIO_UNIX_CFLAGS + C compiler flags for GIO_UNIX, overriding pkg-config + GIO_UNIX_LIBS + linker flags for GIO_UNIX, overriding pkg-config BINIO_CFLAGS C compiler flags for BINIO, overriding pkg-config BINIO_LIBS linker flags for BINIO, overriding pkg-config @@ -1811,6 +1797,10 @@ C compiler flags for OGG_VORBIS, overriding pkg-config OGG_VORBIS_LIBS linker flags for OGG_VORBIS, overriding pkg-config + LIBFLAC_CFLAGS + C compiler flags for LIBFLAC, overriding pkg-config + LIBFLAC_LIBS + linker flags for LIBFLAC, overriding pkg-config WAVPACK_CFLAGS C compiler flags for WAVPACK, overriding pkg-config WAVPACK_LIBS @@ -1819,10 +1809,10 @@ C compiler flags for SNDFILE, overriding pkg-config SNDFILE_LIBS linker flags for SNDFILE, overriding pkg-config - NEED_AVCORE_CFLAGS - C compiler flags for NEED_AVCORE, overriding pkg-config - NEED_AVCORE_LIBS - linker flags for NEED_AVCORE, overriding pkg-config + MODPLUG_CFLAGS + C compiler flags for MODPLUG, overriding pkg-config + MODPLUG_LIBS + linker flags for MODPLUG, overriding pkg-config FFMPEG_CFLAGS C compiler flags for FFMPEG, overriding pkg-config FFMPEG_LIBS linker flags for FFMPEG, overriding pkg-config @@ -1855,34 +1845,23 @@ MMS_LIBS linker flags for MMS, overriding pkg-config MTP_CFLAGS C compiler flags for MTP, overriding pkg-config MTP_LIBS linker flags for MTP, overriding pkg-config - BLUEZ_CFLAGS - C compiler flags for BLUEZ, overriding pkg-config - BLUEZ_LIBS linker flags for BLUEZ, overriding pkg-config XML_CFLAGS C compiler flags for XML, overriding pkg-config XML_LIBS linker flags for XML, overriding pkg-config CUE_CFLAGS C compiler flags for CUE, overriding pkg-config CUE_LIBS linker flags for CUE, overriding pkg-config - LIBPROJECTM_CFLAGS - C compiler flags for LIBPROJECTM, overriding pkg-config - LIBPROJECTM_LIBS - linker flags for LIBPROJECTM, overriding pkg-config - LIBPROJECTM1_CFLAGS - C compiler flags for LIBPROJECTM1, overriding pkg-config - LIBPROJECTM1_LIBS - linker flags for LIBPROJECTM1, overriding pkg-config - GTKGLEXT_CFLAGS - C compiler flags for GTKGLEXT, overriding pkg-config - GTKGLEXT_LIBS - linker flags for GTKGLEXT, overriding pkg-config FLAC_CFLAGS C compiler flags for FLAC, overriding pkg-config FLAC_LIBS linker flags for FLAC, overriding pkg-config BS2B_CFLAGS C compiler flags for BS2B, overriding pkg-config BS2B_LIBS linker flags for BS2B, overriding pkg-config + GLIB214_CFLAGS + C compiler flags for GLIB214, overriding pkg-config + GLIB214_LIBS + linker flags for GLIB214, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. -Report bugs to . +Report bugs to the package provider. _ACEOF ac_status=$? fi @@ -1945,12 +1924,14 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -audacious-plugins configure 2.4.4 +audacious-plugins configure 3.2 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. + +(C) 2005-2012 Audacious Team _ACEOF exit fi @@ -2035,52 +2016,6 @@ } # ac_fn_cxx_try_compile -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes @@ -2191,6 +2126,52 @@ } # ac_fn_c_check_header_compile +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly @@ -2328,10 +2309,6 @@ $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ------------------------------------------------ ## -## Report this to bugs+audacious-plugins@atheme.org ## -## ------------------------------------------------ ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 @@ -2481,7 +2458,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by audacious-plugins $as_me 2.4.4, which was +It was created by audacious-plugins $as_me 3.2, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -2761,6 +2738,7 @@ >$cache_file fi +gt_needs="$gt_needs " # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false @@ -2831,6 +2809,21 @@ +PACKAGE=audacious-plugins + +VERSION=3.2 + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + + ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then @@ -2973,31 +2966,6 @@ ac_config_headers="$ac_config_headers config.h" -if test -d "/usr/X11R6/include"; then - CPPFLAGS="$CPPFLAGS -I/usr/X11R6/include" -fi - -if test "x$prefix" != "xNONE" ; then - CPPFLAGS="$CPPFLAGS -I${includedir}" -fi - -PACKAGE=audacious-plugins - -VERSION=2.4.4 - - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - - - ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -4045,46 +4013,208 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +DEPDIR="${am__leading_dot}deps" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strerror in -lcposix" >&5 -$as_echo_n "checking for strerror in -lcposix... " >&6; } -if ${ac_cv_lib_cposix_strerror+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcposix $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ +ac_config_commands="$ac_config_commands depfiles" -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char strerror (); -int -main () -{ -return strerror (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_cposix_strerror=yes + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from `make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' else - ac_cv_lib_cposix_strerror=no + AMDEP_TRUE='#' + AMDEP_FALSE= fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS + + +# By default we simply use the C compiler to build assembly code. + +test "${CCAS+set}" = set || CCAS=$CC +test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS + + + +depcc="$CCAS" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CCAS_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CCAS_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CCAS_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CCAS_dependencies_compiler_type=none +fi + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cposix_strerror" >&5 -$as_echo "$ac_cv_lib_cposix_strerror" >&6; } -if test "x$ac_cv_lib_cposix_strerror" = xyes; then : - LIBS="$LIBS -lcposix" +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } +CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then + am__fastdepCCAS_TRUE= + am__fastdepCCAS_FALSE='#' +else + am__fastdepCCAS_TRUE='#' + am__fastdepCCAS_FALSE= fi @@ -4710,287 +4840,407 @@ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac - -if test "x$GCC" = "xyes"; then - CFLAGS="$CFLAGS -pipe -Wall" - CXXFLAGS="$CXXFLAGS -pipe -Wall" +# Check whether --enable-largefile was given. +if test "${enable_largefile+set}" = set; then : + enableval=$enable_largefile; fi +if test "$enable_largefile" != no; then -CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=64" - - - -GCC42_CFLAGS="-fgnu89-inline" -for ac_prog in ${ac_tool_prefix}gcc ${ac_tool_prefix}cc -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +$as_echo_n "checking for special C compiler options needed for large files... " >&6; } +if ${ac_cv_sys_largefile_CC+:} false; then : $as_echo_n "(cached) " >&6 else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + ; + return 0; +} +_ACEOF + if ac_fn_c_try_compile "$LINENO"; then : + break fi +rm -f core conftest.err conftest.$ac_objext + CC="$CC -n32" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_largefile_CC=' -n32'; break fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +rm -f core conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +$as_echo "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi - - test -n "$CC" && break -done - -if test -z "$CC"; then - ac_verc_fail=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if ${ac_cv_sys_file_offset_bits+:} false; then : + $as_echo_n "(cached) " >&6 else - # Found it, now check the version. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $CC" >&5 -$as_echo_n "checking version of $CC... " >&6; } - ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 4.[2-9]* ) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5 -$as_echo "$ac_prog_version" >&6; } -fi -if test $ac_verc_fail = yes; then - GCC42_CFLAGS="" -fi + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=64; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +$as_echo "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF +;; +esac +rm -rf conftest* + if test $ac_cv_sys_file_offset_bits = unknown; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } +if ${ac_cv_sys_large_files+:} false; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_large_files=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_large_files=1; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +$as_echo "$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF +;; +esac +rm -rf conftest* + fi fi -rmdir .tst 2>/dev/null -DEPDIR="${am__leading_dot}deps" -ac_config_commands="$ac_config_commands depfiles" -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + ;; esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' + ;; +esac fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } else - AMDEP_TRUE='#' - AMDEP_FALSE= + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi -# By default we simply use the C compiler to build assembly code. +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi -test "${CCAS+set}" = set || CCAS=$CC -test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS -depcc="$CCAS" am_compiler_list= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CCAS_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - am_cv_CCAS_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf +if test "x$GCC" = "xyes"; then + CFLAGS="$CFLAGS -std=gnu99 -Wall -pipe" + CXXFLAGS="$CXXFLAGS -Wall -pipe" - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CCAS_dependencies_compiler_type=$depmode - break - fi - fi - done + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C/C++ compiler supports -Wtype-limits" >&5 +$as_echo_n "checking whether the C/C++ compiler supports -Wtype-limits... " >&6; } + OLDCFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Wtype-limits -Werror" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + CFLAGS="$OLDCFLAGS -Wtype-limits" + CXXFLAGS="$CXXFLAGS -Wtype-limits" - cd .. - rm -rf conftest.dir else - am_cv_CCAS_dependencies_compiler_type=none -fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + CFLAGS="$OLDCFLAGS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } -CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then - am__fastdepCCAS_TRUE= - am__fastdepCCAS_FALSE='#' -else - am__fastdepCCAS_TRUE='#' - am__fastdepCCAS_FALSE= fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Linux" >&5 +$as_echo_n "checking for Linux... " >&6; } +case "$target" in + *linux*) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + LDFLAGS="$LDFLAGS -Wl,-z,defs" + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU make" >&5 +$as_echo_n "checking for GNU make... " >&6; } +if ${_cv_gnu_make_command+:} false; then : + $as_echo_n "(cached) " >&6 +else + + _cv_gnu_make_command="" + for a in "$MAKE" make gmake gnumake; do + test "x$a" = "x" && continue + if ( sh -c "$a --version" 2>/dev/null | grep "GNU Make" >/dev/null ) ; then + _cv_gnu_make_command="$a" + break + fi + done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_cv_gnu_make_command" >&5 +$as_echo "$_cv_gnu_make_command" >&6; } + if test "x$_cv_gnu_make_command" != "x" ; then + MAKE="$_cv_gnu_make_command" + else + as_fn_error $? "** GNU make not found. If it is installed, try setting MAKE environment variable. **" "$LINENO" 5 + fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } @@ -5034,7 +5284,6 @@ SET_MAKE="MAKE=${MAKE-make}" fi - # Extract the first word of "rm", so it can be a program name with args. set dummy rm; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -5275,209 +5524,525 @@ fi - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : +# Extract the first word of "windres", so it can be a program name with args. +set dummy windres; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_WINDRES+:} false; then : $as_echo_n "(cached) " >&6 else + case $WINDRES in + [\\/]* | ?:[\\/]*) + ac_cv_path_WINDRES="$WINDRES" # Let the user override the test with a path. + ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_WINDRES="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done done IFS=$as_save_IFS -rm -rf conftest.one conftest.two conftest.dir - + ;; +esac fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi +WINDRES=$ac_cv_path_WINDRES +if test -n "$WINDRES"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5 +$as_echo "$WINDRES" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - case "$ac_aux_dir" in - /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; - *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; - esac - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB" >&5 +$as_echo_n "checking for GLIB... " >&6; } + +if test -n "$GLIB_CFLAGS"; then + pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.16\""; } >&5 + ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.16") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.16" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GLIB_LIBS"; then + pkg_cv_GLIB_LIBS="$GLIB_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.16\""; } >&5 + ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.16") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.16" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 -$as_echo_n "checking whether NLS is requested... " >&6; } - # Check whether --enable-nls was given. -if test "${enable_nls+set}" = set; then : - enableval=$enable_nls; USE_NLS=$enableval +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes else - USE_NLS=yes + _pkg_short_errors_supported=no fi + if test $_pkg_short_errors_supported = yes; then + GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.16" 2>&1` + else + GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.16" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GLIB_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + cv_pkg_version=`$PKG_CONFIG --modversion "glib-2.0" 2>/dev/null` + as_fn_error $? " +Glib2 version $cv_pkg_version was found, but glib-2.0 >= 2.16 is required. +" "$LINENO" 5 +else + as_fn_error $? " +Cannot find Glib2! If you are using binary packages based system, check that you +have the corresponding -dev/devel packages installed. +" "$LINENO" 5 +fi + +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + + cv_pkg_version=`$PKG_CONFIG --modversion "glib-2.0" 2>/dev/null` + as_fn_error $? " +Glib2 version $cv_pkg_version was found, but glib-2.0 >= 2.16 is required. +" "$LINENO" 5 + +else + + as_fn_error $? " +Cannot find Glib2! If you are using binary packages based system, check that you +have the corresponding -dev/devel packages installed. +" "$LINENO" 5 -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh fi -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" else - ac_executable_p="test -f" + GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS + GLIB_LIBS=$pkg_cv_GLIB_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + fi -rm -f conf$$.file -# Extract the first word of "msgfmt", so it can be a program name with args. -set dummy msgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 + + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTHREAD" >&5 +$as_echo_n "checking for GTHREAD... " >&6; } + +if test -n "$GTHREAD_CFLAGS"; then + pkg_cv_GTHREAD_CFLAGS="$GTHREAD_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0 >= 2.16\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gthread-2.0 >= 2.16") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GTHREAD_CFLAGS=`$PKG_CONFIG --cflags "gthread-2.0 >= 2.16" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - case "$MSGFMT" in - [\\/]* | ?:[\\/]*) - ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GTHREAD_LIBS"; then + pkg_cv_GTHREAD_LIBS="$GTHREAD_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0 >= 2.16\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gthread-2.0 >= 2.16") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GTHREAD_LIBS=`$PKG_CONFIG --libs "gthread-2.0 >= 2.16" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GTHREAD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gthread-2.0 >= 2.16" 2>&1` + else + GTHREAD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gthread-2.0 >= 2.16" 2>&1` fi - done - done - IFS="$ac_save_IFS" - test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" - ;; -esac + # Put the nasty error message in config.log where it belongs + echo "$GTHREAD_PKG_ERRORS" >&5 + + + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gthread-2.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + + cv_pkg_version=`$PKG_CONFIG --modversion "gthread-2.0" 2>/dev/null` + as_fn_error $? " +GThread version $cv_pkg_version was found, but gthread-2.0 >= 2.16 is required. +" "$LINENO" 5 + +else + + as_fn_error $? " +Cannot find GThread! If you are using binary packages based system, check that you +have the corresponding -dev/devel packages installed. +" "$LINENO" 5 + fi -MSGFMT="$ac_cv_path_MSGFMT" -if test "$MSGFMT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 -$as_echo "$MSGFMT" >&6; } + +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gthread-2.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + + cv_pkg_version=`$PKG_CONFIG --modversion "gthread-2.0" 2>/dev/null` + as_fn_error $? " +GThread version $cv_pkg_version was found, but gthread-2.0 >= 2.16 is required. +" "$LINENO" 5 + else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + + as_fn_error $? " +Cannot find GThread! If you are using binary packages based system, check that you +have the corresponding -dev/devel packages installed. +" "$LINENO" 5 + +fi + +else + GTHREAD_CFLAGS=$pkg_cv_GTHREAD_CFLAGS + GTHREAD_LIBS=$pkg_cv_GTHREAD_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +fi + + + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PANGO" >&5 +$as_echo_n "checking for PANGO... " >&6; } + +if test -n "$PANGO_CFLAGS"; then + pkg_cv_PANGO_CFLAGS="$PANGO_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango >= 1.20\""; } >&5 + ($PKG_CONFIG --exists --print-errors "pango >= 1.20") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANGO_CFLAGS=`$PKG_CONFIG --cflags "pango >= 1.20" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$PANGO_LIBS"; then + pkg_cv_PANGO_LIBS="$PANGO_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango >= 1.20\""; } >&5 + ($PKG_CONFIG --exists --print-errors "pango >= 1.20") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANGO_LIBS=`$PKG_CONFIG --libs "pango >= 1.20" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PANGO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "pango >= 1.20" 2>&1` + else + PANGO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "pango >= 1.20" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$PANGO_PKG_ERRORS" >&5 + + + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango\""; } >&5 + ($PKG_CONFIG --exists --print-errors "pango") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + + cv_pkg_version=`$PKG_CONFIG --modversion "pango" 2>/dev/null` + as_fn_error $? " +Pango version $cv_pkg_version was found, but pango >= 1.20 is required. +" "$LINENO" 5 + +else + + as_fn_error $? " +Cannot find Pango! If you are using binary packages based system, check that you +have the corresponding -dev/devel packages installed. +" "$LINENO" 5 + fi - # Extract the first word of "gmsgfmt", so it can be a program name with args. -set dummy gmsgfmt; ac_word=$2 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango\""; } >&5 + ($PKG_CONFIG --exists --print-errors "pango") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + + cv_pkg_version=`$PKG_CONFIG --modversion "pango" 2>/dev/null` + as_fn_error $? " +Pango version $cv_pkg_version was found, but pango >= 1.20 is required. +" "$LINENO" 5 + +else + + as_fn_error $? " +Cannot find Pango! If you are using binary packages based system, check that you +have the corresponding -dev/devel packages installed. +" "$LINENO" 5 + +fi + +else + PANGO_CFLAGS=$pkg_cv_PANGO_CFLAGS + PANGO_LIBS=$pkg_cv_PANGO_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +fi + + + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAIRO" >&5 +$as_echo_n "checking for CAIRO... " >&6; } + +if test -n "$CAIRO_CFLAGS"; then + pkg_cv_CAIRO_CFLAGS="$CAIRO_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo >= 1.6\""; } >&5 + ($PKG_CONFIG --exists --print-errors "cairo >= 1.6") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CAIRO_CFLAGS=`$PKG_CONFIG --cflags "cairo >= 1.6" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$CAIRO_LIBS"; then + pkg_cv_CAIRO_LIBS="$CAIRO_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo >= 1.6\""; } >&5 + ($PKG_CONFIG --exists --print-errors "cairo >= 1.6") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CAIRO_LIBS=`$PKG_CONFIG --libs "cairo >= 1.6" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cairo >= 1.6" 2>&1` + else + CAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cairo >= 1.6" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$CAIRO_PKG_ERRORS" >&5 + + + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo\""; } >&5 + ($PKG_CONFIG --exists --print-errors "cairo") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + + cv_pkg_version=`$PKG_CONFIG --modversion "cairo" 2>/dev/null` + as_fn_error $? " +Cairo version $cv_pkg_version was found, but cairo >= 1.6 is required. +" "$LINENO" 5 + +else + + as_fn_error $? " +Cannot find Cairo! If you are using binary packages based system, check that you +have the corresponding -dev/devel packages installed. +" "$LINENO" 5 + +fi + +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo\""; } >&5 + ($PKG_CONFIG --exists --print-errors "cairo") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + + cv_pkg_version=`$PKG_CONFIG --modversion "cairo" 2>/dev/null` + as_fn_error $? " +Cairo version $cv_pkg_version was found, but cairo >= 1.6 is required. +" "$LINENO" 5 + +else + + as_fn_error $? " +Cannot find Cairo! If you are using binary packages based system, check that you +have the corresponding -dev/devel packages installed. +" "$LINENO" 5 + +fi + +else + CAIRO_CFLAGS=$pkg_cv_CAIRO_CFLAGS + CAIRO_LIBS=$pkg_cv_CAIRO_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +fi + + + + + + # Extract the first word of "tput", so it can be a program name with args. +set dummy tput; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GMSGFMT+:} false; then : +if ${ac_cv_path_TPUT+:} false; then : $as_echo_n "(cached) " >&6 else - case $GMSGFMT in + case $TPUT in [\\/]* | ?:[\\/]*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ac_cv_path_TPUT="$TPUT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -5487,7 +6052,7 @@ test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + ac_cv_path_TPUT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -5495,14 +6060,13 @@ done IFS=$as_save_IFS - test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi -GMSGFMT=$ac_cv_path_GMSGFMT -if test -n "$GMSGFMT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 -$as_echo "$GMSGFMT" >&6; } +TPUT=$ac_cv_path_TPUT +if test -n "$TPUT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TPUT" >&5 +$as_echo "$TPUT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } @@ -5510,728 +6074,325 @@ + if test x"$TPUT" != x""; then : -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi + if x=$($TPUT el 2>/dev/null); then + TERM_EL="$x" -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file + else + TERM_EL="$($TPUT ce 2>/dev/null)" -# Extract the first word of "xgettext", so it can be a program name with args. -set dummy xgettext; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_XGETTEXT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$XGETTEXT" in - [\\/]* | ?:[\\/]*) - ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" - test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" - ;; -esac -fi -XGETTEXT="$ac_cv_path_XGETTEXT" -if test "$XGETTEXT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 -$as_echo "$XGETTEXT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi + fi - rm -f messages.po + if x=$($TPUT sgr0 2>/dev/null); then + TERM_SGR0="$x" + else + TERM_SGR0="$($TPUT me 2>/dev/null)" -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi + fi -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file + if x=$($TPUT bold 2>/dev/null); then + TERM_BOLD="$x" -# Extract the first word of "msgmerge", so it can be a program name with args. -set dummy msgmerge; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGMERGE+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$MSGMERGE" in - [\\/]* | ?:[\\/]*) - ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then - ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" - test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" - ;; -esac -fi -MSGMERGE="$ac_cv_path_MSGMERGE" -if test "$MSGMERGE" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 -$as_echo "$MSGMERGE" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi + else + TERM_BOLD="$($TPUT md 2>/dev/null)" + fi - if test "$GMSGFMT" != ":"; then - if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && - (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 -$as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; } - GMSGFMT=":" - fi - fi + if x=$($TPUT setaf 1 2>/dev/null); then + TERM_SETAF1="$x" - if test "$XGETTEXT" != ":"; then - if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && - (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 -$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } - XGETTEXT=":" - fi - rm -f messages.po - fi + TERM_SETAF2="$($TPUT setaf 2 2>/dev/null)" - ac_config_commands="$ac_config_commands default-1" + TERM_SETAF3="$($TPUT setaf 3 2>/dev/null)" + TERM_SETAF4="$($TPUT setaf 4 2>/dev/null)" + TERM_SETAF6="$($TPUT setaf 6 2>/dev/null)" - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" + else + TERM_SETAF1="$($TPUT AF 1 2>/dev/null)" + TERM_SETAF2="$($TPUT AF 2 2>/dev/null)" -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi + TERM_SETAF3="$($TPUT AF 3 2>/dev/null)" -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 -$as_echo_n "checking for ld used by GCC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${acl_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi + TERM_SETAF4="$($TPUT AF 4 2>/dev/null)" + + TERM_SETAF6="$($TPUT AF 6 2>/dev/null)" + + fi -LD="$acl_cv_path_LD" -if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${acl_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then - acl_cv_prog_gnu_ld=yes else - acl_cv_prog_gnu_ld=no -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5 -$as_echo "$acl_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$acl_cv_prog_gnu_ld + TERM_EL='\033\133K' + TERM_SGR0='\033\133m' - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 -$as_echo_n "checking for shared library run path origin... " >&6; } -if ${acl_cv_rpath+:} false; then : - $as_echo_n "(cached) " >&6 -else + TERM_BOLD='\033\1331m' + + TERM_SETAF1='\033\13331m' + + TERM_SETAF2='\033\13332m' + + TERM_SETAF3='\033\13333m' + + TERM_SETAF4='\033\13334m' + + TERM_SETAF6='\033\13336m' - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 -$as_echo "$acl_cv_rpath" >&6; } - wl="$acl_cv_wl" - libext="$acl_cv_libext" - shlibext="$acl_cv_shlibext" - hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - hardcode_direct="$acl_cv_hardcode_direct" - hardcode_minus_L="$acl_cv_hardcode_minus_L" - # Check whether --enable-rpath was given. -if test "${enable_rpath+set}" = set; then : - enableval=$enable_rpath; : -else - enable_rpath=yes fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library system" >&5 +$as_echo_n "checking for shared library system... " >&6; } + case "$host_os" in + darwin*) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5 +$as_echo "Darwin" >&6; } + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}' + LIB_PREFIX='lib' + LIB_SUFFIX='.dylib' + LDFLAGS_RPATH='-Wl,-rpath,${libdir}' + PLUGIN_CFLAGS='-fPIC -DPIC' + PLUGIN_LDFLAGS='-bundle -undefined dynamic_lookup' + PLUGIN_SUFFIX='.impl' + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib' + CLEAN_LIB='' + ;; + solaris*) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Solaris" >&5 +$as_echo "Solaris" >&6; } + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-shared -Wl,-soname=${LIB}.${LIB_MAJOR}.${LIB_MINOR}' + LIB_PREFIX='lib' + LIB_SUFFIX='.so' + LDFLAGS_RPATH='-Wl,-rpath,${libdir}' + PLUGIN_CFLAGS='-fPIC -DPIC' + PLUGIN_LDFLAGS='-shared' + PLUGIN_SUFFIX='.so' + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR} && rm -f ${DESTDIR}${libdir}/$$i && ${LN_S} $$i.${LIB_MAJOR}.${LIB_MINOR} ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}' + CLEAN_LIB='' + ;; + openbsd* | mirbsd*) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: OpenBSD" >&5 +$as_echo "OpenBSD" >&6; } + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-shared' + LIB_PREFIX='lib' + LIB_SUFFIX='.so.${LIB_MAJOR}.${LIB_MINOR}' + LDFLAGS_RPATH='-Wl,-rpath,${libdir}' + PLUGIN_CFLAGS='-fPIC -DPIC' + PLUGIN_LDFLAGS='-shared' + PLUGIN_SUFFIX='.so' + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i' + CLEAN_LIB='' + ;; + cygwin* | mingw*) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Win32" >&5 +$as_echo "Win32" >&6; } + LIB_CFLAGS='' + LIB_LDFLAGS='-shared -Wl,--out-implib,${LIB}.a' + LIB_PREFIX='lib' + LIB_SUFFIX='.dll' + LDFLAGS_RPATH='-Wl,-rpath,${libdir}' + PLUGIN_CFLAGS='' + PLUGIN_LDFLAGS='-shared' + PLUGIN_SUFFIX='.dll' + INSTALL_LIB='&& ${MKDIR_P} ${DESTDIR}${bindir} && ${INSTALL} -m 755 $$i ${DESTDIR}${bindir}/$$i && ${INSTALL} -m 755 $$i.a ${DESTDIR}${libdir}/$$i.a' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${bindir}/$$i ${DESTDIR}${libdir}/$$i.a' + CLEAN_LIB='${LIB}.a' + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: GNU" >&5 +$as_echo "GNU" >&6; } + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-shared -Wl,-soname=${LIB}.${LIB_MAJOR}' + LIB_PREFIX='lib' + LIB_SUFFIX='.so' + LDFLAGS_RPATH='-Wl,-rpath,${libdir}' + PLUGIN_CFLAGS='-fPIC -DPIC' + PLUGIN_LDFLAGS='-shared' + PLUGIN_SUFFIX='.so' + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0 && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0' + CLEAN_LIB='' + ;; + esac - use_additional=yes - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" -# Check whether --with-libiconv-prefix was given. -if test "${with_libiconv_prefix+set}" = set; then : - withval=$with_libiconv_prefix; - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi +for ac_func in fcntl fsync mkdtemp +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF fi +done - LIBICONV= - LTLIBICONV= - INCICONV= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='iconv ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBICONV; do + done + ;; +esac - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" + done +IFS=$as_save_IFS - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$hardcode_direct" = yes; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" +rm -rf conftest.one conftest.two conftest.dir - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBICONV; do +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBICONV; do +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" - ;; - esac - done - fi - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" - fi - fi - fi - done +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" - done - fi - - - - - - - - - - - - - +IFS=$as_save_IFS +fi + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } +mkdir_p="$MKDIR_P" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 @@ -6249,437 +6410,860 @@ - LIBINTL= - LTLIBINTL= - POSUB= - - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no + GETTEXT_MACRO_VERSION=0.18 +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 -$as_echo_n "checking for GNU gettext in libc... " >&6; } -if ${gt_cv_func_gnugettext1_libc+:} false; then : +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings; -int -main () -{ -bindtextdomain ("", ""); -return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_gnugettext1_libc=yes -else - gt_cv_func_gnugettext1_libc=no + case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +$as_echo "$MSGFMT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libc" >&5 -$as_echo "$gt_cv_func_gnugettext1_libc" >&6; } - - if test "$gt_cv_func_gnugettext1_libc" != "yes"; then - - - - - - am_save_CPPFLAGS="$CPPFLAGS" - - for element in $INCICONV; do - haveit= - for x in $CPPFLAGS; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 -$as_echo_n "checking for iconv... " >&6; } -if ${am_cv_func_iconv+:} false; then : + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - am_cv_func_iconv=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - am_cv_lib_iconv=yes - am_cv_func_iconv=yes + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$am_save_LIBS" - fi - +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +$as_echo "$GMSGFMT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 -$as_echo "$am_cv_func_iconv" >&6; } - if test "$am_cv_func_iconv" = yes; then -$as_echo "#define HAVE_ICONV 1" >>confdefs.h - fi - if test "$am_cv_lib_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 -$as_echo_n "checking how to link with libiconv... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 -$as_echo "$LIBICONV" >&6; } - else - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi - use_additional=yes - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_XGETTEXT+:} false; then : + $as_echo_n "(cached) " >&6 +else + case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +$as_echo "$XGETTEXT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi -# Check whether --with-libintl-prefix was given. -if test "${with_libintl_prefix+set}" = set; then : - withval=$with_libintl_prefix; - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then + rm -f messages.po - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" fi +rm -f conf$$.file - LIBINTL= - LTLIBINTL= - INCINTL= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='intl ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_MSGMERGE+:} false; then : + $as_echo_n "(cached) " >&6 +else + case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi fi done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBINTL; do + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +$as_echo "$MSGMERGE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$hardcode_direct" = yes; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBINTL; do + test -n "$localedir" || localedir='${datadir}/locale' + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 +$as_echo_n "checking for ld used by GCC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${acl_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$acl_cv_path_LD" +if test -n "$LD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${acl_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +$as_echo_n "checking for shared library run path origin... " >&6; } +if ${acl_cv_rpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +$as_echo "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + # Check whether --enable-rpath was given. +if test "${enable_rpath+set}" = set; then : + enableval=$enable_rpath; : +else + enable_rpath=yes +fi + + + + + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 +$as_echo_n "checking for 64-bit host... " >&6; } +if ${gl_cv_solaris_64bit+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _LP64 +sixtyfour bits +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "sixtyfour bits" >/dev/null 2>&1; then : + gl_cv_solaris_64bit=yes +else + gl_cv_solaris_64bit=no +fi +rm -f conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 +$as_echo "$gl_cv_solaris_64bit" >&6; } + if test $gl_cv_solaris_64bit = yes; then + acl_libdirstem=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCINTL; do + fi + done + IFS="$acl_save_IFS" + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + + + + + + + + + + + + + use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBINTL; do + +# Check whether --with-libiconv-prefix was given. +if test "${with_libiconv_prefix+set}" = set; then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" - fi + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + HAVE_LIBICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac fi + fi + if test -z "$haveit"; then haveit= - for x in $LDFLAGS $LTLIBINTL; do + for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" @@ -6696,7 +7280,28 @@ done if test -z "$haveit"; then if test -d "$additional_libdir"; then - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi @@ -6734,170 +7339,228 @@ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) - LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else - LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then + if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" + eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" - LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" + eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" - LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 -$as_echo_n "checking for GNU gettext in libintl... " >&6; } -if ${gt_cv_func_gnugettext1_libintl+:} false; then : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } +if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : $as_echo_n "(cached) " >&6 else - gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (); +#include int main () { -bindtextdomain ("", ""); -return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) +CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_gnugettext1_libintl=yes + gt_cv_func_CFPreferencesCopyAppValue=yes else - gt_cv_func_gnugettext1_libintl=no + gt_cv_func_CFPreferencesCopyAppValue=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } +if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (); +#include int main () { -bindtextdomain ("", ""); -return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) +CFLocaleCopyCurrent(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - gt_cv_func_gnugettext1_libintl=yes - + gt_cv_func_CFLocaleCopyCurrent=yes +else + gt_cv_func_CFLocaleCopyCurrent=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS" + LIBS="$gt_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libintl" >&5 -$as_echo "$gt_cv_func_gnugettext1_libintl" >&6; } - fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - if test "$gt_cv_func_gnugettext1_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ - && test "$PACKAGE" != gettext-runtime \ - && test "$PACKAGE" != gettext-tools; }; then - gt_use_preinstalled_gnugettext=yes +$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + + + + LIBINTL= + LTLIBINTL= + POSUB= + + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +' else - LIBINTL= - LTLIBINTL= - INCINTL= + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +$as_echo_n "checking for GNU gettext in libc... " >&6; } +if eval \${$gt_func_gnugettext_libc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$gt_func_gnugettext_libc=yes" +else + eval "$gt_func_gnugettext_libc=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$gt_func_gnugettext_libc + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - -$as_echo "#define ENABLE_NLS 1" >>confdefs.h - else - USE_NLS=no - fi - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 -$as_echo_n "checking whether to use NLS... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } - if test "$USE_NLS" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 -$as_echo_n "checking where the gettext function comes from... " >&6; } - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then - gt_source="external libintl" - else - gt_source="libc" - fi - else - gt_source="included intl directory" - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 -$as_echo "$gt_source" >&6; } - fi - if test "$USE_NLS" = "yes"; then - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 -$as_echo_n "checking how to link with libintl... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 -$as_echo "$LIBINTL" >&6; } + am_save_CPPFLAGS="$CPPFLAGS" - for element in $INCINTL; do + for element in $INCICONV; do haveit= for x in $CPPFLAGS; do @@ -6919,1097 +7582,1465 @@ fi done - fi - -$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h - - -$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +$as_echo_n "checking for iconv... " >&6; } +if ${am_cv_func_iconv+:} false; then : + $as_echo_n "(cached) " >&6 +else + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" fi - POSUB=po - fi - - +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +$as_echo "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +$as_echo_n "checking for working iconv... " >&6; } +if ${am_cv_func_iconv_works+:} false; then : + $as_echo_n "(cached) " >&6 +else - INTLLIBS="$LIBINTL" + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + if test "$cross_compiling" = yes; then : + case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int main () +{ + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static const char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + return 1; + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static const char input[] = "\263"; + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + return 1; + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + return 1; + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + return 1; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + am_cv_func_iconv_works=yes +else + am_cv_func_iconv_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + LIBS="$am_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +$as_echo "$am_cv_func_iconv_works" >&6; } + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then +$as_echo "#define HAVE_ICONV 1" >>confdefs.h - - -ac_fn_c_check_func "$LINENO" "strnlen" "ac_cv_func_strnlen" -if test "x$ac_cv_func_strnlen" = xyes; then : - -$as_echo "#define HAVE_STRNLEN 1" >>confdefs.h - -fi - - - - -# Check whether --with-dev-dsp was given. -if test "${with_dev_dsp+set}" = set; then : - withval=$with_dev_dsp; dev_dsp=$withval -else - dev_dsp=/dev/dsp - -fi - - -cat >>confdefs.h <<_ACEOF -#define DEV_DSP "$dev_dsp" -_ACEOF - - - -# Check whether --with-dev-mixer was given. -if test "${with_dev_mixer+set}" = set; then : - withval=$with_dev_mixer; dev_mixer=$withval -else - dev_mixer=/dev/mixer - -fi - - -cat >>confdefs.h <<_ACEOF -#define DEV_MIXER "$dev_mixer" -_ACEOF - - - -INPUT_PLUGINS="tonegen console xsf metronom vtx" -OUTPUT_PLUGINS="null" -EFFECT_PLUGINS="compressor crossfade crystalizer ladspa sndstretch stereo_plugin voice_removal echo_plugin" -GENERAL_PLUGINS="song_change alarm skins gtkui" -VISUALIZATION_PLUGINS="blur_scope spectrum" -CONTAINER_PLUGINS="m3u pls" -TRANSPORT_PLUGINS="unix-io" - - - - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKG_CONFIG"; then - ac_pt_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="" + if test "$am_cv_lib_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +$as_echo_n "checking how to link with libiconv... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +$as_echo "$LIBICONV" >&6; } else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKG_CONFIG=$ac_pt_PKG_CONFIG + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= fi -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi -fi -if test "x$PKG_CONFIG" != "x"; then - _pkg_min_version=0.9.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes - else - _pkg_short_errors_supported=no - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - PKG_CONFIG="" - fi -fi -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AUDACIOUS" >&5 -$as_echo_n "checking for AUDACIOUS... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"audacious >= 2.4\""; } >&5 - ($PKG_CONFIG --exists --print-errors "audacious >= 2.4") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "x${AUDACIOUS_CFLAGS}" != "x"; then - pkg_cv_AUDACIOUS_CFLAGS="${AUDACIOUS_CFLAGS}" - else - pkg_cv_AUDACIOUS_CFLAGS=`$PKG_CONFIG --cflags "audacious >= 2.4" 2>/dev/null` - fi - if test "x${AUDACIOUS_LIBS}" != "x"; then - pkg_cv_AUDACIOUS_LIBS="${AUDACIOUS_LIBS}" - else - pkg_cv_AUDACIOUS_LIBS=`$PKG_CONFIG --libs "audacious >= 2.4" 2>/dev/null` - fi - else - pkg_failed="yes" - fi -else - pkg_failed="untried" -fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - AUDACIOUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "audacious >= 2.4" 2>&1` - else - AUDACIOUS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "audacious >= 2.4" 2>&1` - fi - echo "$AUDACIOUS_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - as_fn_error $? "Cannot find Audacious 2.4 or later, have you installed audacious yet?" "$LINENO" 5 -elif test "x$pkg_failed" = "xuntried"; then - as_fn_error $? "Cannot find Audacious 2.4 or later, have you installed audacious yet?" "$LINENO" 5 -else - AUDACIOUS_CFLAGS="$pkg_cv_AUDACIOUS_CFLAGS" - AUDACIOUS_LIBS="$pkg_cv_AUDACIOUS_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - if test "x$PC_REQUIRES" = "x"; then - PC_REQUIRES="audacious >= 2.4" - else - PC_REQUIRES="$PC_REQUIRES, audacious >= 2.4" - fi -fi -CFLAGS="$CFLAGS $AUDACIOUS_CFLAGS" -CPPFLAGS="$CPPFLAGS $AUDACIOUS_CPPFLAGS" -LIBS="$LIBS $AUDACIOUS_LIBS" + use_additional=yes -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB" >&5 -$as_echo_n "checking for GLIB... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.12.0 gthread-2.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.12.0 gthread-2.0") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "x${GLIB_CFLAGS}" != "x"; then - pkg_cv_GLIB_CFLAGS="${GLIB_CFLAGS}" - else - pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.12.0 gthread-2.0" 2>/dev/null` - fi - if test "x${GLIB_LIBS}" != "x"; then - pkg_cv_GLIB_LIBS="${GLIB_LIBS}" - else - pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.12.0 gthread-2.0" 2>/dev/null` - fi - else - pkg_failed="yes" - fi -else - pkg_failed="untried" -fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "glib-2.0 >= 2.12.0 gthread-2.0" 2>&1` - else - GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glib-2.0 >= 2.12.0 gthread-2.0" 2>&1` - fi - echo "$GLIB_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - as_fn_error $? "Cannot find Glib2 >= 2.12.0" "$LINENO" 5 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" -elif test "x$pkg_failed" = "xuntried"; then - as_fn_error $? "Cannot find Glib2 >= 2.12.0" "$LINENO" 5 -else - GLIB_CFLAGS="$pkg_cv_GLIB_CFLAGS" - GLIB_LIBS="$pkg_cv_GLIB_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +# Check whether --with-libintl-prefix was given. +if test "${with_libintl_prefix+set}" = set; then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then - if test "x$PC_REQUIRES" = "x"; then - PC_REQUIRES="glib-2.0 >= 2.12.0" - else - PC_REQUIRES="$PC_REQUIRES, glib-2.0 >= 2.12.0" - fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" -fi + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK" >&5 -$as_echo_n "checking for GTK... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.8.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.8.0") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "x${GTK_CFLAGS}" != "x"; then - pkg_cv_GTK_CFLAGS="${GTK_CFLAGS}" - else - pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.8.0" 2>/dev/null` - fi - if test "x${GTK_LIBS}" != "x"; then - pkg_cv_GTK_LIBS="${GTK_LIBS}" - else - pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.8.0" 2>/dev/null` + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" fi - else - pkg_failed="yes" + fi fi -else - pkg_failed="untried" -fi - - -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gtk+-2.0 >= 2.8.0" 2>&1` - else - GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtk+-2.0 >= 2.8.0" 2>&1` - fi - echo "$GTK_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - as_fn_error $? "Cannot find Gtk+2 >= 2.8.0" "$LINENO" 5 - -elif test "x$pkg_failed" = "xuntried"; then - as_fn_error $? "Cannot find Gtk+2 >= 2.8.0" "$LINENO" 5 - -else - GTK_CFLAGS="$pkg_cv_GTK_CFLAGS" - GTK_LIBS="$pkg_cv_GTK_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - - if test "x$PC_REQUIRES" = "x"; then - PC_REQUIRES="gtk+-2.0 >= 2.8.0" - else - PC_REQUIRES="$PC_REQUIRES, gtk+-2.0 >= 2.8.0" - fi - fi -# Check whether --enable-gio was given. -if test "${enable_gio+set}" = set; then : - enableval=$enable_gio; enable_gio=$enableval -else - enable_gio=yes -fi - - -if test "x$enable_gio" = "xyes"; then - pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GIO" >&5 -$as_echo_n "checking for GIO... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= 2.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.0") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "x${GIO_CFLAGS}" != "x"; then - pkg_cv_GIO_CFLAGS="${GIO_CFLAGS}" - else - pkg_cv_GIO_CFLAGS=`$PKG_CONFIG --cflags "gio-2.0 >= 2.0" 2>/dev/null` - fi - if test "x${GIO_LIBS}" != "x"; then - pkg_cv_GIO_LIBS="${GIO_LIBS}" - else - pkg_cv_GIO_LIBS=`$PKG_CONFIG --libs "gio-2.0 >= 2.0" 2>/dev/null` + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + HAVE_LIBINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break fi - else - pkg_failed="yes" - fi -else - pkg_failed="untried" -fi - - -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - GIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gio-2.0 >= 2.0" 2>&1` + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi else - GIO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gio-2.0 >= 2.0" 2>&1` - fi - echo "$GIO_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - enable_gio=no -elif test "x$pkg_failed" = "xuntried"; then - enable_gio=no -else - GIO_CFLAGS="$pkg_cv_GIO_CFLAGS" - GIO_LIBS="$pkg_cv_GIO_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - - if test "x$PC_REQUIRES" = "x"; then - PC_REQUIRES="gio-2.0 >= 2.0" - else - PC_REQUIRES="$PC_REQUIRES, gio-2.0 >= 2.0" - fi - - -fi -fi - -if test "x$enable_gio" = "xyes"; then - TRANSPORT_PLUGINS="$TRANSPORT_PLUGINS gio" -fi + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; do -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PANGO" >&5 -$as_echo_n "checking for PANGO... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango >= 1.8.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "pango >= 1.8.0") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "x${PANGO_CFLAGS}" != "x"; then - pkg_cv_PANGO_CFLAGS="${PANGO_CFLAGS}" - else - pkg_cv_PANGO_CFLAGS=`$PKG_CONFIG --cflags "pango >= 1.8.0" 2>/dev/null` - fi - if test "x${PANGO_LIBS}" != "x"; then - pkg_cv_PANGO_LIBS="${PANGO_LIBS}" - else - pkg_cv_PANGO_LIBS=`$PKG_CONFIG --libs "pango >= 1.8.0" 2>/dev/null` - fi - else - pkg_failed="yes" - fi -else - pkg_failed="untried" -fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - PANGO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "pango >= 1.8.0" 2>&1` - else - PANGO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "pango >= 1.8.0" 2>&1` - fi - echo "$PANGO_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - as_fn_error $? "Cannot find Pango >= 1.8.0" "$LINENO" 5 + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" -elif test "x$pkg_failed" = "xuntried"; then - as_fn_error $? "Cannot find Pango >= 1.8.0" "$LINENO" 5 + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do -else - PANGO_CFLAGS="$pkg_cv_PANGO_CFLAGS" - PANGO_LIBS="$pkg_cv_PANGO_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" - if test "x$PC_REQUIRES" = "x"; then - PC_REQUIRES="pango >= 1.8.0" - else - PC_REQUIRES="$PC_REQUIRES, pango >= 1.8.0" - fi + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" -fi + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do -# Check whether --enable-dbus was given. -if test "${enable_dbus+set}" = set; then : - enableval=$enable_dbus; enable_dbus=$enableval -else - enable_dbus=yes -fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" -if test "x$enable_dbus" = "xyes"; then - pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUS" >&5 -$as_echo_n "checking for DBUS... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 0.60 dbus-glib-1 >= 0.60\""; } >&5 - ($PKG_CONFIG --exists --print-errors "dbus-1 >= 0.60 dbus-glib-1 >= 0.60") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "x${DBUS_CFLAGS}" != "x"; then - pkg_cv_DBUS_CFLAGS="${DBUS_CFLAGS}" - else - pkg_cv_DBUS_CFLAGS=`$PKG_CONFIG --cflags "dbus-1 >= 0.60 dbus-glib-1 >= 0.60" 2>/dev/null` - fi - if test "x${DBUS_LIBS}" != "x"; then - pkg_cv_DBUS_LIBS="${DBUS_LIBS}" - else - pkg_cv_DBUS_LIBS=`$PKG_CONFIG --libs "dbus-1 >= 0.60 dbus-glib-1 >= 0.60" 2>/dev/null` + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else - pkg_failed="yes" + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done fi -else - pkg_failed="untried" -fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - DBUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "dbus-1 >= 0.60 dbus-glib-1 >= 0.60" 2>&1` - else - DBUS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "dbus-1 >= 0.60 dbus-glib-1 >= 0.60" 2>&1` - fi - echo "$DBUS_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - as_fn_error $? "Cannot find dbus-glib >= 0.60" "$LINENO" 5 - ] -elif test "x$pkg_failed" = "xuntried"; then - as_fn_error $? "Cannot find dbus-glib >= 0.60" "$LINENO" 5 - ] -else - DBUS_CFLAGS="$pkg_cv_DBUS_CFLAGS" - DBUS_LIBS="$pkg_cv_DBUS_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - if test "x$PC_REQUIRES" = "x"; then - PC_REQUIRES="dbus-1 >= 0.60 dbus-glib-1 >= 0.60" - else - PC_REQUIRES="$PC_REQUIRES, dbus-1 >= 0.60 dbus-glib-1 >= 0.60" - fi -$as_echo "#define USE_DBUS 1" >>confdefs.h + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +$as_echo_n "checking for GNU gettext in libintl... " >&6; } +if eval \${$gt_func_gnugettext_libintl+:} false; then : + $as_echo_n "(cached) " >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$gt_func_gnugettext_libintl=yes" +else + eval "$gt_func_gnugettext_libintl=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" fi - - - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MOWGLI" >&5 -$as_echo_n "checking for MOWGLI... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmowgli >= 0.4.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libmowgli >= 0.4.0") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "x${MOWGLI_CFLAGS}" != "x"; then - pkg_cv_MOWGLI_CFLAGS="${MOWGLI_CFLAGS}" - else - pkg_cv_MOWGLI_CFLAGS=`$PKG_CONFIG --cflags "libmowgli >= 0.4.0" 2>/dev/null` - fi - if test "x${MOWGLI_LIBS}" != "x"; then - pkg_cv_MOWGLI_LIBS="${MOWGLI_LIBS}" - else - pkg_cv_MOWGLI_LIBS=`$PKG_CONFIG --libs "libmowgli >= 0.4.0" 2>/dev/null` +eval ac_res=\$$gt_func_gnugettext_libintl + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } fi - else - pkg_failed="yes" - fi -else - pkg_failed="untried" -fi - -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - MOWGLI_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libmowgli >= 0.4.0" 2>&1` + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes else - MOWGLI_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libmowgli >= 0.4.0" 2>&1` + LIBINTL= + LTLIBINTL= + INCINTL= fi - echo "$MOWGLI_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - as_fn_error $? "Cannot find libmowgli >= 0.4.0, try http://www.atheme.org/projects/mowgli.shtml" "$LINENO" 5 - -elif test "x$pkg_failed" = "xuntried"; then - as_fn_error $? "Cannot find libmowgli >= 0.4.0, try http://www.atheme.org/projects/mowgli.shtml" "$LINENO" 5 - -else - MOWGLI_CFLAGS="$pkg_cv_MOWGLI_CFLAGS" - MOWGLI_LIBS="$pkg_cv_MOWGLI_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - if test "x$PC_REQUIRES" = "x"; then - PC_REQUIRES="libmowgli >= 0.4.0" - else - PC_REQUIRES="$PC_REQUIRES, libmowgli >= 0.4.0" - fi -fi + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi -# Check whether --enable-ipv6 was given. -if test "${enable_ipv6+set}" = set; then : - enableval=$enable_ipv6; enable_ipv6=$enableval -else - enable_ipv6=no -fi + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then -if test "x$enable_ipv6" = "xyes"; then +$as_echo "#define ENABLE_NLS 1" >>confdefs.h -$as_echo "#define USE_IPV6 /**/" >>confdefs.h + else + USE_NLS=no + fi + fi -fi - if test "x$enable_ipv6" = "xyes"; then - USE_IPV6_TRUE= - USE_IPV6_FALSE='#' -else - USE_IPV6_TRUE='#' - USE_IPV6_FALSE= -fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +$as_echo_n "checking whether to use NLS... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +$as_echo "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +$as_echo_n "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +$as_echo "$gt_source" >&6; } + fi + if test "$USE_NLS" = "yes"; then + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +$as_echo_n "checking how to link with libintl... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +$as_echo "$LIBINTL" >&6; } -# Check whether --enable-chardet was given. -if test "${enable_chardet+set}" = set; then : - enableval=$enable_chardet; enable_chardet=$enableval -else - enable_chardet=no -fi + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do -if test "x$enable_chardet" = "xyes"; then + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" -$as_echo "#define USE_CHARDET 1" >>confdefs.h + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done -fi - if test "x$enable_chardet" = "xyes"; then - USE_CHARDET_TRUE= - USE_CHARDET_FALSE='#' -else - USE_CHARDET_TRUE='#' - USE_CHARDET_FALSE= -fi + fi +$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h +$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library system" >&5 -$as_echo_n "checking for shared library system... " >&6; } - case "$host_os" in - darwin*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5 -$as_echo "Darwin" >&6; } - LIB_CPPFLAGS='-DPIC' - LIB_CFLAGS='-fPIC' - LIB_LDFLAGS='-dynamiclib -flat_namespace' - LIB_PREFIX='lib' - LIB_SUFFIX='.dylib' - LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CPPFLAGS='-DPIC' - PLUGIN_CFLAGS='-fPIC' - PLUGIN_LDFLAGS='-bundle -flat_namespace -undefined suppress' - PLUGIN_SUFFIX='.impl' - INSTALL_LIB='${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib' - CLEAN_LIB='' - ;; - solaris*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Solaris" >&5 -$as_echo "Solaris" >&6; } - LIB_CPPFLAGS='-DPIC' - LIB_CFLAGS='-fPIC' - LIB_LDFLAGS='-shared -fPIC -Wl,-soname=${LIB}.${LIB_MAJOR}.${LIB_MINOR}' - LIB_PREFIX='lib' - LIB_SUFFIX='.so' - LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CPPFLAGS='-DPIC' - PLUGIN_CFLAGS='-fPIC' - PLUGIN_LDFLAGS='-shared -fPIC' - PLUGIN_SUFFIX='.so' - INSTALL_LIB='${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR} && rm -f ${DESTDIR}${libdir}/$$i && ${LN_S} $$i.${LIB_MAJOR}.${LIB_MINOR} ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}' - CLEAN_LIB='' - ;; - openbsd* | mirbsd*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: OpenBSD" >&5 -$as_echo "OpenBSD" >&6; } - LIB_CPPFLAGS='-DPIC' - LIB_CFLAGS='-fPIC' - LIB_LDFLAGS='-shared -fPIC' - LIB_PREFIX='lib' - LIB_SUFFIX='.so.${LIB_MAJOR}.${LIB_MINOR}' - LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CPPFLAGS='-DPIC' - PLUGIN_CFLAGS='-fPIC' - PLUGIN_LDFLAGS='-shared -fPIC' - PLUGIN_SUFFIX='.so' - INSTALL_LIB='${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='rm -f ${DESTDIR}${libdir}/$$i' - CLEAN_LIB='' - ;; - cygwin* | mingw*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Win32" >&5 -$as_echo "Win32" >&6; } - LIB_CPPFLAGS='-DPIC' - LIB_CFLAGS='' - LIB_LDFLAGS='-shared -Wl,--out-implib,${LIB}.a' - LIB_PREFIX='lib' - LIB_SUFFIX='.dll' - LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CPPFLAGS='' - PLUGIN_CFLAGS='' - PLUGIN_LDFLAGS='-shared' - PLUGIN_SUFFIX='.dll' - INSTALL_LIB='${MKDIR_P} ${DESTDIR}${bindir} && ${INSTALL} -m 755 $$i ${DESTDIR}${bindir}/$$i && ${INSTALL} -m 755 $$i.a ${DESTDIR}${libdir}/$$i.a' - UNINSTALL_LIB='rm -f ${DESTDIR}${bindir}/$$i ${DESTDIR}${libdir}/$$i.a' - CLEAN_LIB='${LIB}.a' - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: GNU" >&5 -$as_echo "GNU" >&6; } - LIB_CPPFLAGS='-DPIC' - LIB_CFLAGS='-fPIC' - LIB_LDFLAGS='-shared -fPIC -Wl,-soname=${LIB}.${LIB_MAJOR}' - LIB_PREFIX='lib' - LIB_SUFFIX='.so' - LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CPPFLAGS='-DPIC' - PLUGIN_CFLAGS='-fPIC' - PLUGIN_LDFLAGS='-shared -fPIC' - PLUGIN_SUFFIX='.so' - INSTALL_LIB='${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0 && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0' - CLEAN_LIB='' - ;; - esac + INTLLIBS="$LIBINTL" +if test "$MSGFMT" = ":" ; then + as_fn_error $? "msgfmt was not found; have you installed gettext?" "$LINENO" 5 +fi +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AUDACIOUS" >&5 +$as_echo_n "checking for AUDACIOUS... " >&6; } +if test -n "$AUDACIOUS_CFLAGS"; then + pkg_cv_AUDACIOUS_CFLAGS="$AUDACIOUS_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"audacious >= 3.2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "audacious >= 3.2") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_AUDACIOUS_CFLAGS=`$PKG_CONFIG --cflags "audacious >= 3.2" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$AUDACIOUS_LIBS"; then + pkg_cv_AUDACIOUS_LIBS="$AUDACIOUS_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"audacious >= 3.2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "audacious >= 3.2") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_AUDACIOUS_LIBS=`$PKG_CONFIG --libs "audacious >= 3.2" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + AUDACIOUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "audacious >= 3.2" 2>&1` + else + AUDACIOUS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "audacious >= 3.2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$AUDACIOUS_PKG_ERRORS" >&5 + as_fn_error $? "Cannot find Audacious 3.2; have you installed Audacious yet?" "$LINENO" 5 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need an implib" >&5 -$as_echo_n "checking whether we need an implib... " >&6; } - case "$host_os" in - cygwin* | mingw*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - PROG_IMPLIB_NEEDED='yes' - PROG_IMPLIB_LDFLAGS='-Wl,-export-all-symbols,--out-implib,lib${PROG}.a' - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - PROG_IMPLIB_NEEDED='no' - PROG_IMPLIB_LDFLAGS='' - ;; - esac + as_fn_error $? "Cannot find Audacious 3.2; have you installed Audacious yet?" "$LINENO" 5 +else + AUDACIOUS_CFLAGS=$pkg_cv_AUDACIOUS_CFLAGS + AUDACIOUS_LIBS=$pkg_cv_AUDACIOUS_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +CPPFLAGS="$CPPFLAGS $AUDACIOUS_CFLAGS" +LIBS="$LIBS $AUDACIOUS_LIBS" -test "x$PROG_IMPLIB_NEEDED" = "xyes" && LIBS="$LIBS -L\${libdir} -laudacious.exe" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if you are running Apple-GCC" >&5 -$as_echo_n "checking if you are running Apple-GCC... " >&6; } -case "$target" in - *-apple-*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, sorry you poor bastard" >&5 -$as_echo "yes, sorry you poor bastard" >&6; } - LDFLAGS="$LDFLAGS -Wl,-framework -Wl,CoreFoundation -Wl,-framework -Wl,CoreServices" - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; -esac +INPUT_PLUGINS="tonegen metronom vtx" +OUTPUT_PLUGINS="null" +EFFECT_PLUGINS="compressor crossfade crystalizer ladspa mixer sndstretch stereo_plugin voice_removal echo_plugin" +GENERAL_PLUGINS="alarm albumart search-tool" +VISUALIZATION_PLUGINS="blur_scope cairo-spectrum" +CONTAINER_PLUGINS="audpl m3u pls asx" +TRANSPORT_PLUGINS="unix-io" -# Check whether --enable-pulse was given. -if test "${enable_pulse+set}" = set; then : - enableval=$enable_pulse; enable_pulse=$enableval +# Check whether --enable-gtk3 was given. +if test "${enable_gtk3+set}" = set; then : + enableval=$enable_gtk3; use_gtk3=$enableval else - enable_pulse="yes" - + use_gtk3=yes fi -if test "x$enable_pulse" = "xyes"; then - pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PULSE" >&5 -$as_echo_n "checking for PULSE... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpulse >= 0.9.5\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libpulse >= 0.9.5") 2>&5 +if test $use_gtk3 = yes ; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK" >&5 +$as_echo_n "checking for GTK... " >&6; } + +if test -n "$GTK_CFLAGS"; then + pkg_cv_GTK_CFLAGS="$GTK_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-3.0 >= 3.0.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gtk+-3.0 >= 3.0.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${PULSE_CFLAGS}" != "x"; then - pkg_cv_PULSE_CFLAGS="${PULSE_CFLAGS}" - else - pkg_cv_PULSE_CFLAGS=`$PKG_CONFIG --cflags "libpulse >= 0.9.5" 2>/dev/null` - fi - if test "x${PULSE_LIBS}" != "x"; then - pkg_cv_PULSE_LIBS="${PULSE_LIBS}" - else - pkg_cv_PULSE_LIBS=`$PKG_CONFIG --libs "libpulse >= 0.9.5" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-3.0 >= 3.0.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GTK_LIBS"; then + pkg_cv_GTK_LIBS="$GTK_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-3.0 >= 3.0.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gtk+-3.0 >= 3.0.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtk+-3.0 >= 3.0.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - PULSE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libpulse >= 0.9.5" 2>&1` - else - PULSE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libpulse >= 0.9.5" 2>&1` - fi - echo "$PULSE_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - have_pulse=no -elif test "x$pkg_failed" = "xuntried"; then - have_pulse=no +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-3.0 >= 3.0.0" 2>&1` + else + GTK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-3.0 >= 3.0.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GTK_PKG_ERRORS" >&5 + use_gtk3=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + use_gtk3=no else - PULSE_CFLAGS="$pkg_cv_PULSE_CFLAGS" - PULSE_LIBS="$pkg_cv_PULSE_LIBS" + GTK_CFLAGS=$pkg_cv_GTK_CFLAGS + GTK_LIBS=$pkg_cv_GTK_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - have_pulse=yes - OUTPUT_PLUGINS="$OUTPUT_PLUGINS pulse_audio" + use_gtk3=yes fi +fi + +if test $use_gtk3 = no ; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK" >&5 +$as_echo_n "checking for GTK... " >&6; } + +if test -n "$GTK_CFLAGS"; then + pkg_cv_GTK_CFLAGS="$GTK_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.12.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.12.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.12.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** pulseaudio output plugin disabled per user request ***" >&5 -$as_echo "*** pulseaudio output plugin disabled per user request ***" >&6; } - have_pulse=no + pkg_failed=yes +fi + else + pkg_failed=untried fi +if test -n "$GTK_LIBS"; then + pkg_cv_GTK_LIBS="$GTK_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.12.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.12.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.12.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-2.0 >= 2.12.0" 2>&1` + else + GTK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-2.0 >= 2.12.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GTK_PKG_ERRORS" >&5 -# Check whether --enable-roar was given. -if test "${enable_roar+set}" = set; then : - enableval=$enable_roar; enable_roar=$enableval + as_fn_error $? "Cannot find GTK headers. Aborting ..." "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? "Cannot find GTK headers. Aborting ..." "$LINENO" 5 else - enable_roar="yes" + GTK_CFLAGS=$pkg_cv_GTK_CFLAGS + GTK_LIBS=$pkg_cv_GTK_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + use_gtk3=no +fi +fi + + + + +# Check whether --enable-gio was given. +if test "${enable_gio+set}" = set; then : + enableval=$enable_gio; enable_gio=$enableval +else + enable_gio=no fi -if test "x$enable_roar" = "xyes"; then - pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBROAR" >&5 -$as_echo_n "checking for LIBROAR... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libroar\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libroar") 2>&5 +if test "x$enable_gio" = "xyes"; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GIO" >&5 +$as_echo_n "checking for GIO... " >&6; } + +if test -n "$GIO_CFLAGS"; then + pkg_cv_GIO_CFLAGS="$GIO_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= 2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${LIBROAR_CFLAGS}" != "x"; then - pkg_cv_LIBROAR_CFLAGS="${LIBROAR_CFLAGS}" - else - pkg_cv_LIBROAR_CFLAGS=`$PKG_CONFIG --cflags "libroar" 2>/dev/null` - fi - if test "x${LIBROAR_LIBS}" != "x"; then - pkg_cv_LIBROAR_LIBS="${LIBROAR_LIBS}" - else - pkg_cv_LIBROAR_LIBS=`$PKG_CONFIG --libs "libroar" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_GIO_CFLAGS=`$PKG_CONFIG --cflags "gio-2.0 >= 2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GIO_LIBS"; then + pkg_cv_GIO_LIBS="$GIO_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= 2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GIO_LIBS=`$PKG_CONFIG --libs "gio-2.0 >= 2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - LIBROAR_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libroar" 2>&1` - else - LIBROAR_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libroar" 2>&1` - fi - echo "$LIBROAR_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - have_roar=no -elif test "x$pkg_failed" = "xuntried"; then - have_roar=no +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gio-2.0 >= 2.0" 2>&1` + else + GIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gio-2.0 >= 2.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GIO_PKG_ERRORS" >&5 + enable_gio=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + enable_gio=no else - LIBROAR_CFLAGS="$pkg_cv_LIBROAR_CFLAGS" - LIBROAR_LIBS="$pkg_cv_LIBROAR_LIBS" + GIO_CFLAGS=$pkg_cv_GIO_CFLAGS + GIO_LIBS=$pkg_cv_GIO_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - have_roar=yes - OUTPUT_PLUGINS="$OUTPUT_PLUGINS roaraudio" + enable_gio=yes +fi +fi + +if test "x$enable_gio" = "xyes"; then + TRANSPORT_PLUGINS="$TRANSPORT_PLUGINS gio" +fi + +### --------------------------------------------------------------------------- +PTHREAD_LIBS= +PTHREAD_CFLAGS= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 +$as_echo_n "checking for pthread_create in -lpthread... " >&6; } +if ${ac_cv_lib_pthread_pthread_create+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_create (); +int +main () +{ +return pthread_create (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pthread_pthread_create=yes +else + ac_cv_lib_pthread_pthread_create=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 +$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; } +if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then : + PTHREAD_LIBS="-lpthread" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthreads" >&5 +$as_echo_n "checking for pthread_create in -lpthreads... " >&6; } +if ${ac_cv_lib_pthreads_pthread_create+:} false; then : + $as_echo_n "(cached) " >&6 else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** pulseaudio output plugin disabled per user request ***" >&5 -$as_echo "*** pulseaudio output plugin disabled per user request ***" >&6; } - have_pulse=no + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthreads $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_create (); +int +main () +{ +return pthread_create (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pthreads_pthread_create=yes +else + ac_cv_lib_pthreads_pthread_create=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthreads_pthread_create" >&5 +$as_echo "$ac_cv_lib_pthreads_pthread_create" >&6; } +if test "x$ac_cv_lib_pthreads_pthread_create" = xyes; then : + PTHREAD_LIBS="-lpthreads" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthreadGC2" >&5 +$as_echo_n "checking for pthread_create in -lpthreadGC2... " >&6; } +if ${ac_cv_lib_pthreadGC2_pthread_create+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthreadGC2 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_create (); +int +main () +{ +return pthread_create (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pthreadGC2_pthread_create=yes +else + ac_cv_lib_pthreadGC2_pthread_create=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthreadGC2_pthread_create" >&5 +$as_echo "$ac_cv_lib_pthreadGC2_pthread_create" >&6; } +if test "x$ac_cv_lib_pthreadGC2_pthread_create" = xyes; then : + PTHREAD_LIBS="-lpthreadGC2" +fi + + +fi + + +fi + + + + + +# Check whether --enable-ipv6 was given. +if test "${enable_ipv6+set}" = set; then : + enableval=$enable_ipv6; enable_ipv6=$enableval +else + enable_ipv6=no fi +if test "x$enable_ipv6" = "xyes"; then -# Check whether --enable-coreaudio was given. -if test "${enable_coreaudio+set}" = set; then : - enableval=$enable_coreaudio; enable_coreaudio=$enableval -else - enable_coreaudio="yes" +$as_echo "#define USE_IPV6 /**/" >>confdefs.h fi - - -if test "x$enable_coreaudio" = "xyes"; then - for ac_header in CoreServices/CoreServices.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "CoreServices/CoreServices.h" "ac_cv_header_CoreServices_CoreServices_h" "$ac_includes_default" -if test "x$ac_cv_header_CoreServices_CoreServices_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_CORESERVICES_CORESERVICES_H 1 -_ACEOF - have_coreaudio=yes - OUTPUT_PLUGINS="$OUTPUT_PLUGINS CoreAudio" + if test "x$enable_ipv6" = "xyes"; then + USE_IPV6_TRUE= + USE_IPV6_FALSE='#' else - have_coreaudio=no + USE_IPV6_TRUE='#' + USE_IPV6_FALSE= fi -done -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** CoreAudio output plugin disabled per user request ***" >&5 -$as_echo "*** CoreAudio output plugin disabled per user request ***" >&6; } - have_coreaudio=no -fi -# Check whether --enable-dockalbumart was given. -if test "${enable_dockalbumart+set}" = set; then : - enableval=$enable_dockalbumart; enable_dockalbumart=$enableval +# Check whether --enable-console was given. +if test "${enable_console+set}" = set; then : + enableval=$enable_console; enable_console=$enableval else - enable_dockalbumart="yes" - + enable_console="yes" fi -if test "x$enable_dockalbumart" = "xyes"; then - for ac_header in Carbon/Carbon.h +if test $enable_console = yes ; then + for ac_header in zlib.h do : - ac_fn_c_check_header_mongrel "$LINENO" "Carbon/Carbon.h" "ac_cv_header_Carbon_Carbon_h" "$ac_includes_default" -if test "x$ac_cv_header_Carbon_Carbon_h" = xyes; then : + ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" +if test "x$ac_cv_header_zlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF -#define HAVE_CARBON_CARBON_H 1 +#define HAVE_ZLIB_H 1 _ACEOF - have_dockalbumart=yes - GENERAL_PLUGINS="$GENERAL_PLUGINS dockalbumart" + enable_console=yes else - have_dockalbumart=no + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find zlib.h; disabling game music decoder (console)" >&5 +$as_echo "$as_me: WARNING: Cannot find zlib.h; disabling game music decoder (console)" >&2;} + enable_console=no fi done -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** DockAlbumArt plugin disabled per user request ***" >&5 -$as_echo "*** DockAlbumArt plugin disabled per user request ***" >&6; } - have_dockalbumart=no fi - -# Check whether --enable-altivec was given. -if test "${enable_altivec+set}" = set; then : - enableval=$enable_altivec; enable_altivec=$enableval -else - enable_altivec=yes - +if test $enable_console = yes ; then + INPUT_PLUGINS="$INPUT_PLUGINS console" fi -if test "x$enable_altivec" = "xyes"; then - for ac_header in altivec.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "altivec.h" "ac_cv_header_altivec_h" "$ac_includes_default" -if test "x$ac_cv_header_altivec_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_ALTIVEC_H 1 -_ACEOF - -$as_echo "#define HAVE_ALTIVEC 1" >>confdefs.h +# Check whether --enable-xsf was given. +if test "${enable_xsf+set}" = set; then : + enableval=$enable_xsf; enable_xsf=$enableval +else + enable_xsf="yes" +fi -$as_echo "#define HAVE_ALTIVEC_H 1" >>confdefs.h +if test $enable_xsf = yes ; then + INPUT_PLUGINS="$INPUT_PLUGINS xsf" +fi -$as_echo "#define ARCH_POWERPC 1" >>confdefs.h - DCT64=dct64_altivec.c - SIMD_CFLAGS=-maltivec +# Check whether --enable-pulse was given. +if test "${enable_pulse+set}" = set; then : + enableval=$enable_pulse; enable_pulse=$enableval else - DCT64=dct64.c + enable_pulse="yes" fi -done - -fi +if test "x$enable_pulse" = "xyes"; then +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PULSE" >&5 +$as_echo_n "checking for PULSE... " >&6; } -# Check whether --enable-sse2 was given. -if test "${enable_sse2+set}" = set; then : - enableval=$enable_sse2; enable_sse2=$enableval +if test -n "$PULSE_CFLAGS"; then + pkg_cv_PULSE_CFLAGS="$PULSE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpulse >= 0.9.5\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libpulse >= 0.9.5") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PULSE_CFLAGS=`$PKG_CONFIG --cflags "libpulse >= 0.9.5" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - enable_sse2=yes - + pkg_failed=yes fi - -if test "x$enable_sse2" = "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking SSE2" >&5 -$as_echo_n "checking SSE2... " >&6; } - ac_save_CFLAGS="$CFLAGS" - CFLAGS="-msse2" - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } + else + pkg_failed=untried +fi +if test -n "$PULSE_LIBS"; then + pkg_cv_PULSE_LIBS="$PULSE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpulse >= 0.9.5\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libpulse >= 0.9.5") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PULSE_LIBS=`$PKG_CONFIG --libs "libpulse >= 0.9.5" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ + pkg_failed=yes +fi + else + pkg_failed=untried +fi - #include - int main() - { - _mm_setzero_pd(); - asm volatile("xorpd %xmm0,%xmm0\n\t"); - return 0; - } -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: SSE2 yes" >&5 -$as_echo "SSE2 yes" >&6; } -$as_echo "#define HAVE_SSE2 1" >>confdefs.h +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } - SIMD_CFLAGS=-msse2 +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: SSE2 no" >&5 -$as_echo "SSE2 no" >&6; } -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + _pkg_short_errors_supported=no fi + if test $_pkg_short_errors_supported = yes; then + PULSE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libpulse >= 0.9.5" 2>&1` + else + PULSE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libpulse >= 0.9.5" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$PULSE_PKG_ERRORS" >&5 -fi + have_pulse=no -CFLAGS="$ac_save_CFLAGS" +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_pulse=no +else + PULSE_CFLAGS=$pkg_cv_PULSE_CFLAGS + PULSE_LIBS=$pkg_cv_PULSE_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_pulse=yes + OUTPUT_PLUGINS="$OUTPUT_PLUGINS pulse_audio" +fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** pulseaudio output plugin disabled per user request ***" >&5 +$as_echo "*** pulseaudio output plugin disabled per user request ***" >&6; } + have_pulse=no +fi # Check whether --enable-psf was given. @@ -8025,233 +9056,251 @@ fi - -# Check whether --enable-usf was given. -if test "${enable_usf+set}" = set; then : - enableval=$enable_usf; enable_usf=$enableval -else - enable_usf=no - -fi - - -if test "x$enable_usf" = "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if your platform is supported for the USF plugin" >&5 -$as_echo_n "checking if your platform is supported for the USF plugin... " >&6; } - case "$target" in - x86_64-*-linux-gnu) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, AMD64 Linux" >&5 -$as_echo "yes, AMD64 Linux" >&6; } - enable_usf=yes - ;; - i*86-*-linux-gnu) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, X86 Linux" >&5 -$as_echo "yes, X86 Linux" >&6; } - enable_usf=yes - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - enable_usf=no - ;; - esac - - if test "x$enable_usf" = "xyes"; then - INPUT_PLUGINS="$INPUT_PLUGINS usf" - fi -fi - - # Check whether --enable-mp3 was given. if test "${enable_mp3+set}" = set; then : enableval=$enable_mp3; enable_mp3=$enableval else enable_mp3=yes - fi -if test "x$enable_mp3" = "xyes"; then - INPUT_PLUGINS="$INPUT_PLUGINS mpg123" -fi +if test $enable_mp3 = yes ; then +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPG123" >&5 +$as_echo_n "checking for MPG123... " >&6; } -# Check whether --enable-rocklight was given. -if test "${enable_rocklight+set}" = set; then : - enableval=$enable_rocklight; enable_rocklight="$enableval" +if test -n "$MPG123_CFLAGS"; then + pkg_cv_MPG123_CFLAGS="$MPG123_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmpg123 >= 1.12\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libmpg123 >= 1.12") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_MPG123_CFLAGS=`$PKG_CONFIG --cflags "libmpg123 >= 1.12" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - enable_rocklight="yes" - + pkg_failed=yes fi - - -if test "x$enable_rocklight" = "xyes"; then - VISUALIZATION_PLUGINS="$VISUALIZATION_PLUGINS rocklight" + else + pkg_failed=untried fi - - -# Check whether --enable-lirc was given. -if test "${enable_lirc+set}" = set; then : - enableval=$enable_lirc; enable_lirc=$enableval +if test -n "$MPG123_LIBS"; then + pkg_cv_MPG123_LIBS="$MPG123_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmpg123 >= 1.12\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libmpg123 >= 1.12") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_MPG123_LIBS=`$PKG_CONFIG --libs "libmpg123 >= 1.12" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - enable_lirc="yes" - + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$enable_lirc" = "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lirc_init in -llirc_client" >&5 -$as_echo_n "checking for lirc_init in -llirc_client... " >&6; } -if ${ac_cv_lib_lirc_client_lirc_init+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-llirc_client $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char lirc_init (); -int -main () -{ -return lirc_init (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_lirc_client_lirc_init=yes +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes else - ac_cv_lib_lirc_client_lirc_init=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS + _pkg_short_errors_supported=no fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lirc_client_lirc_init" >&5 -$as_echo "$ac_cv_lib_lirc_client_lirc_init" >&6; } -if test "x$ac_cv_lib_lirc_client_lirc_init" = xyes; then : - have_lirc=yes + if test $_pkg_short_errors_supported = yes; then + MPG123_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libmpg123 >= 1.12" 2>&1` + else + MPG123_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libmpg123 >= 1.12" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$MPG123_PKG_ERRORS" >&5 + + enable_mp3=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + enable_mp3=no else - have_lirc=no + MPG123_CFLAGS=$pkg_cv_MPG123_CFLAGS + MPG123_LIBS=$pkg_cv_MPG123_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + enable_mp3=yes fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** LIRC plugin disabled per user request ***" >&5 -$as_echo "*** LIRC plugin disabled per user request ***" >&6; } - have_lirc="no" + if test $enable_mp3 = yes ; then + INPUT_PLUGINS="$INPUT_PLUGINS mpg123" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** libmpg123 not found; MP3 plugin disabled" >&5 +$as_echo "*** libmpg123 not found; MP3 plugin disabled" >&6; } + fi fi -if test "x$have_lirc" = "xyes"; then - ac_fn_c_check_header_mongrel "$LINENO" "lirc/lirc_client.h" "ac_cv_header_lirc_lirc_client_h" "$ac_includes_default" -if test "x$ac_cv_header_lirc_lirc_client_h" = xyes; then : +# Check whether --enable-hotkey was given. +if test "${enable_hotkey+set}" = set; then : + enableval=$enable_hotkey; enable_hotkey=$enableval else - have_lirc=no -fi - + enable_hotkey="yes" fi -if test "x$have_lirc" = "xyes"; then - GENERAL_PLUGINS="$GENERAL_PLUGINS lirc" -fi +if test "x$enable_hotkey" = "xyes"; then + if test $use_gtk3 = yes ; then -# Check whether --enable-evdevplug was given. -if test "${enable_evdevplug+set}" = set; then : - enableval=$enable_evdevplug; enable_evdevplug=$enableval -else - enable_evdevplug="yes" +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GDKX11" >&5 +$as_echo_n "checking for GDKX11... " >&6; } +if test -n "$GDKX11_CFLAGS"; then + pkg_cv_GDKX11_CFLAGS="$GDKX11_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdk-x11-3.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gdk-x11-3.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GDKX11_CFLAGS=`$PKG_CONFIG --cflags "gdk-x11-3.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes fi - - -if test "x$enable_evdevplug" = "xyes"; then - case "$target" in - *-*-linux*) - have_evdevplug="yes" - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** Linux evdev plugin disabled (host does not run linux) ***" >&5 -$as_echo "*** Linux evdev plugin disabled (host does not run linux) ***" >&6; } - have_evdevplug="no" - ;; - esac + else + pkg_failed=untried +fi +if test -n "$GDKX11_LIBS"; then + pkg_cv_GDKX11_LIBS="$GDKX11_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdk-x11-3.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gdk-x11-3.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GDKX11_LIBS=`$PKG_CONFIG --libs "gdk-x11-3.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** Linux evdev plugin disabled per user request ***" >&5 -$as_echo "*** Linux evdev plugin disabled per user request ***" >&6; } - have_evdevplug="no" + pkg_failed=yes fi - -if test "x$have_evdevplug" = "xyes"; then - GENERAL_PLUGINS="$GENERAL_PLUGINS evdev-plug" + else + pkg_failed=untried fi -# Check whether --enable-hotkey was given. -if test "${enable_hotkey+set}" = set; then : - enableval=$enable_hotkey; enable_hotkey=$enableval -else - enable_hotkey="yes" +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no fi + if test $_pkg_short_errors_supported = yes; then + GDKX11_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gdk-x11-3.0" 2>&1` + else + GDKX11_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gdk-x11-3.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GDKX11_PKG_ERRORS" >&5 + have_hotkey="no" +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_hotkey="no" +else + GDKX11_CFLAGS=$pkg_cv_GDKX11_CFLAGS + GDKX11_LIBS=$pkg_cv_GDKX11_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_hotkey="yes" +fi + else -if test "x$enable_hotkey" = "xyes"; then - have_hotkey="yes" - pkg_failed=no +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GDKX11" >&5 $as_echo_n "checking for GDKX11... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdk-x11-2.0 >= 2.6.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "gdk-x11-2.0 >= 2.6.0") 2>&5 + +if test -n "$GDKX11_CFLAGS"; then + pkg_cv_GDKX11_CFLAGS="$GDKX11_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdk-x11-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gdk-x11-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${GDKX11_CFLAGS}" != "x"; then - pkg_cv_GDKX11_CFLAGS="${GDKX11_CFLAGS}" - else - pkg_cv_GDKX11_CFLAGS=`$PKG_CONFIG --cflags "gdk-x11-2.0 >= 2.6.0" 2>/dev/null` - fi - if test "x${GDKX11_LIBS}" != "x"; then - pkg_cv_GDKX11_LIBS="${GDKX11_LIBS}" - else - pkg_cv_GDKX11_LIBS=`$PKG_CONFIG --libs "gdk-x11-2.0 >= 2.6.0" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_GDKX11_CFLAGS=`$PKG_CONFIG --cflags "gdk-x11-2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GDKX11_LIBS"; then + pkg_cv_GDKX11_LIBS="$GDKX11_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdk-x11-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gdk-x11-2.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GDKX11_LIBS=`$PKG_CONFIG --libs "gdk-x11-2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - GDKX11_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gdk-x11-2.0 >= 2.6.0" 2>&1` + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GDKX11_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gdk-x11-2.0" 2>&1` else - GDKX11_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gdk-x11-2.0 >= 2.6.0" 2>&1` + GDKX11_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gdk-x11-2.0" 2>&1` fi - echo "$GDKX11_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$GDKX11_PKG_ERRORS" >&5 + + have_hotkey="no" +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - have_hotkey="no" -elif test "x$pkg_failed" = "xuntried"; then have_hotkey="no" else - GDKX11_CFLAGS="$pkg_cv_GDKX11_CFLAGS" - GDKX11_LIBS="$pkg_cv_GDKX11_LIBS" + GDKX11_CFLAGS=$pkg_cv_GDKX11_CFLAGS + GDKX11_LIBS=$pkg_cv_GDKX11_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + have_hotkey="yes" fi + fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** X11 Global Hotkey plugin disabled per user request ***" >&5 $as_echo "*** X11 Global Hotkey plugin disabled per user request ***" >&6; } @@ -8274,51 +9323,80 @@ if test "x$enable_gnomeshortcuts" = "xyes"; then have_gnomeshortcuts="yes" - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUS" >&5 $as_echo_n "checking for DBUS... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 0.60 dbus-glib-1 >= 0.60\""; } >&5 + +if test -n "$DBUS_CFLAGS"; then + pkg_cv_DBUS_CFLAGS="$DBUS_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 0.60 dbus-glib-1 >= 0.60\""; } >&5 ($PKG_CONFIG --exists --print-errors "dbus-1 >= 0.60 dbus-glib-1 >= 0.60") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${DBUS_CFLAGS}" != "x"; then - pkg_cv_DBUS_CFLAGS="${DBUS_CFLAGS}" - else - pkg_cv_DBUS_CFLAGS=`$PKG_CONFIG --cflags "dbus-1 >= 0.60 dbus-glib-1 >= 0.60" 2>/dev/null` - fi - if test "x${DBUS_LIBS}" != "x"; then - pkg_cv_DBUS_LIBS="${DBUS_LIBS}" - else - pkg_cv_DBUS_LIBS=`$PKG_CONFIG --libs "dbus-1 >= 0.60 dbus-glib-1 >= 0.60" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_DBUS_CFLAGS=`$PKG_CONFIG --cflags "dbus-1 >= 0.60 dbus-glib-1 >= 0.60" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$DBUS_LIBS"; then + pkg_cv_DBUS_LIBS="$DBUS_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 0.60 dbus-glib-1 >= 0.60\""; } >&5 + ($PKG_CONFIG --exists --print-errors "dbus-1 >= 0.60 dbus-glib-1 >= 0.60") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_DBUS_LIBS=`$PKG_CONFIG --libs "dbus-1 >= 0.60 dbus-glib-1 >= 0.60" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes fi + else + pkg_failed=untried +fi + -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - DBUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "dbus-1 >= 0.60 dbus-glib-1 >= 0.60" 2>&1` +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + DBUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "dbus-1 >= 0.60 dbus-glib-1 >= 0.60" 2>&1` else - DBUS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "dbus-1 >= 0.60 dbus-glib-1 >= 0.60" 2>&1` + DBUS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "dbus-1 >= 0.60 dbus-glib-1 >= 0.60" 2>&1` fi - echo "$DBUS_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$DBUS_PKG_ERRORS" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find dbus-glib >= 0.60; disabling Gnome shortcuts plugin." >&5 +$as_echo "$as_me: WARNING: Cannot find dbus-glib >= 0.60; disabling Gnome shortcuts plugin." >&2;} + have_gnomeshortcuts=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - as_fn_error $? "Cannot find dbus-glib >= 0.60 for gnomeshortcuts plugin" "$LINENO" 5 -elif test "x$pkg_failed" = "xuntried"; then - as_fn_error $? "Cannot find dbus-glib >= 0.60 for gnomeshortcuts plugin" "$LINENO" 5 + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find dbus-glib >= 0.60; disabling Gnome shortcuts plugin." >&5 +$as_echo "$as_me: WARNING: Cannot find dbus-glib >= 0.60; disabling Gnome shortcuts plugin." >&2;} + have_gnomeshortcuts=no else - DBUS_CFLAGS="$pkg_cv_DBUS_CFLAGS" - DBUS_LIBS="$pkg_cv_DBUS_LIBS" + DBUS_CFLAGS=$pkg_cv_DBUS_CFLAGS + DBUS_LIBS=$pkg_cv_DBUS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + have_gnomeshortcuts=yes fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** Gnome Shortcuts Plugin disabled per user request ***" >&5 @@ -8326,71 +9404,128 @@ have_gnomeshortcuts="no" fi -if test "x$have_gnomeshortcuts" = "xyes"; then - GENERAL_PLUGINS="$GENERAL_PLUGINS gnomeshortcuts" +if test "x$have_gnomeshortcuts" = "xyes"; then + GENERAL_PLUGINS="$GENERAL_PLUGINS gnomeshortcuts" +fi + + +# Check whether --enable-songchange was given. +if test "${enable_songchange+set}" = set; then : + enableval=$enable_songchange; enable_songchange=$enableval +else + enable_songchange="yes" +fi + + +if test $enable_songchange = yes ; then + for ac_header in sys/wait.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_wait_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_WAIT_H 1 +_ACEOF + enable_songchange=yes +else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find sys/wait.h; disabling song change plugin" >&5 +$as_echo "$as_me: WARNING: Cannot find sys/wait.h; disabling song change plugin" >&2;} + enable_songchange=no +fi + +done + +fi + +if test $enable_songchange = yes ; then + GENERAL_PLUGINS="$GENERAL_PLUGINS song_change" fi # Check whether --enable-statusicon was given. if test "${enable_statusicon+set}" = set; then : - enableval=$enable_statusicon; enable_statusicon=$enableval + enableval=$enable_statusicon; have_statusicon=$enableval else - enable_statusicon="yes" - + have_statusicon="yes" fi -if test "x$enable_statusicon" = "xyes"; then - pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK" >&5 -$as_echo_n "checking for GTK... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.16.0\""; } >&5 +if test $have_statusicon = yes ; then + if test $use_gtk3 != yes ; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK216" >&5 +$as_echo_n "checking for GTK216... " >&6; } + +if test -n "$GTK216_CFLAGS"; then + pkg_cv_GTK216_CFLAGS="$GTK216_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.16.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.16.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${GTK_CFLAGS}" != "x"; then - pkg_cv_GTK_CFLAGS="${GTK_CFLAGS}" - else - pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.16.0" 2>/dev/null` - fi - if test "x${GTK_LIBS}" != "x"; then - pkg_cv_GTK_LIBS="${GTK_LIBS}" - else - pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.16.0" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_GTK216_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.16.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GTK216_LIBS"; then + pkg_cv_GTK216_LIBS="$GTK216_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.16.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.16.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GTK216_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.16.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gtk+-2.0 >= 2.16.0" 2>&1` + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GTK216_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-2.0 >= 2.16.0" 2>&1` else - GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtk+-2.0 >= 2.16.0" 2>&1` + GTK216_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-2.0 >= 2.16.0" 2>&1` fi - echo "$GTK_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$GTK216_PKG_ERRORS" >&5 + + have_statusicon=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - have_statusicon=no -elif test "x$pkg_failed" = "xuntried"; then have_statusicon=no else - GTK_CFLAGS="$pkg_cv_GTK_CFLAGS" - GTK_LIBS="$pkg_cv_GTK_LIBS" + GTK216_CFLAGS=$pkg_cv_GTK216_CFLAGS + GTK216_LIBS=$pkg_cv_GTK216_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_statusicon=yes fi + fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** X11 Status Icon plugin disabled per user request ***" >&5 $as_echo "*** X11 Status Icon plugin disabled per user request ***" >&6; } - have_statusicon="no" fi if test "x$have_statusicon" = "xyes"; then @@ -8418,264 +9553,389 @@ if test "x$enable_aosd" = "xguess"; then have_aosd="yes" - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PANGO" >&5 $as_echo_n "checking for PANGO... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango >= 1.14.7\""; } >&5 + +if test -n "$PANGO_CFLAGS"; then + pkg_cv_PANGO_CFLAGS="$PANGO_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango >= 1.14.7\""; } >&5 ($PKG_CONFIG --exists --print-errors "pango >= 1.14.7") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${PANGO_CFLAGS}" != "x"; then - pkg_cv_PANGO_CFLAGS="${PANGO_CFLAGS}" - else - pkg_cv_PANGO_CFLAGS=`$PKG_CONFIG --cflags "pango >= 1.14.7" 2>/dev/null` - fi - if test "x${PANGO_LIBS}" != "x"; then - pkg_cv_PANGO_LIBS="${PANGO_LIBS}" - else - pkg_cv_PANGO_LIBS=`$PKG_CONFIG --libs "pango >= 1.14.7" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_PANGO_CFLAGS=`$PKG_CONFIG --cflags "pango >= 1.14.7" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$PANGO_LIBS"; then + pkg_cv_PANGO_LIBS="$PANGO_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango >= 1.14.7\""; } >&5 + ($PKG_CONFIG --exists --print-errors "pango >= 1.14.7") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANGO_LIBS=`$PKG_CONFIG --libs "pango >= 1.14.7" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes fi + else + pkg_failed=untried +fi + -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - PANGO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "pango >= 1.14.7" 2>&1` +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PANGO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "pango >= 1.14.7" 2>&1` else - PANGO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "pango >= 1.14.7" 2>&1` + PANGO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "pango >= 1.14.7" 2>&1` fi - echo "$PANGO_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_aosd="no" + # Put the nasty error message in config.log where it belongs + echo "$PANGO_PKG_ERRORS" >&5 + + have_aosd="no" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** pango >= 1.14.7 is required for Audacious OSD plugin ***" >&5 $as_echo "*** pango >= 1.14.7 is required for Audacious OSD plugin ***" >&6; } -elif test "x$pkg_failed" = "xuntried"; then +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } have_aosd="no" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** pango >= 1.14.7 is required for Audacious OSD plugin ***" >&5 $as_echo "*** pango >= 1.14.7 is required for Audacious OSD plugin ***" >&6; } else - PANGO_CFLAGS="$pkg_cv_PANGO_CFLAGS" - PANGO_LIBS="$pkg_cv_PANGO_LIBS" + PANGO_CFLAGS=$pkg_cv_PANGO_CFLAGS + PANGO_LIBS=$pkg_cv_PANGO_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAIRO" >&5 $as_echo_n "checking for CAIRO... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo >= 1.2.4\""; } >&5 + +if test -n "$CAIRO_CFLAGS"; then + pkg_cv_CAIRO_CFLAGS="$CAIRO_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo >= 1.2.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "cairo >= 1.2.4") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${CAIRO_CFLAGS}" != "x"; then - pkg_cv_CAIRO_CFLAGS="${CAIRO_CFLAGS}" - else - pkg_cv_CAIRO_CFLAGS=`$PKG_CONFIG --cflags "cairo >= 1.2.4" 2>/dev/null` - fi - if test "x${CAIRO_LIBS}" != "x"; then - pkg_cv_CAIRO_LIBS="${CAIRO_LIBS}" - else - pkg_cv_CAIRO_LIBS=`$PKG_CONFIG --libs "cairo >= 1.2.4" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_CAIRO_CFLAGS=`$PKG_CONFIG --cflags "cairo >= 1.2.4" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$CAIRO_LIBS"; then + pkg_cv_CAIRO_LIBS="$CAIRO_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo >= 1.2.4\""; } >&5 + ($PKG_CONFIG --exists --print-errors "cairo >= 1.2.4") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CAIRO_LIBS=`$PKG_CONFIG --libs "cairo >= 1.2.4" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "cairo >= 1.2.4" 2>&1` + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cairo >= 1.2.4" 2>&1` else - CAIRO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "cairo >= 1.2.4" 2>&1` + CAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cairo >= 1.2.4" 2>&1` fi - echo "$CAIRO_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_aosd="no" + # Put the nasty error message in config.log where it belongs + echo "$CAIRO_PKG_ERRORS" >&5 + + have_aosd="no" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** cairo >= 1.2.4 is required for Audacious OSD plugin ***" >&5 $as_echo "*** cairo >= 1.2.4 is required for Audacious OSD plugin ***" >&6; } -elif test "x$pkg_failed" = "xuntried"; then +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } have_aosd="no" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** cairo >= 1.2.4 is required for Audacious OSD plugin ***" >&5 $as_echo "*** cairo >= 1.2.4 is required for Audacious OSD plugin ***" >&6; } else - CAIRO_CFLAGS="$pkg_cv_CAIRO_CFLAGS" - CAIRO_LIBS="$pkg_cv_CAIRO_LIBS" + CAIRO_CFLAGS=$pkg_cv_CAIRO_CFLAGS + CAIRO_LIBS=$pkg_cv_CAIRO_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PANGOCAIRO" >&5 $as_echo_n "checking for PANGOCAIRO... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pangocairo >= 1.14.7\""; } >&5 + +if test -n "$PANGOCAIRO_CFLAGS"; then + pkg_cv_PANGOCAIRO_CFLAGS="$PANGOCAIRO_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pangocairo >= 1.14.7\""; } >&5 ($PKG_CONFIG --exists --print-errors "pangocairo >= 1.14.7") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${PANGOCAIRO_CFLAGS}" != "x"; then - pkg_cv_PANGOCAIRO_CFLAGS="${PANGOCAIRO_CFLAGS}" - else - pkg_cv_PANGOCAIRO_CFLAGS=`$PKG_CONFIG --cflags "pangocairo >= 1.14.7" 2>/dev/null` - fi - if test "x${PANGOCAIRO_LIBS}" != "x"; then - pkg_cv_PANGOCAIRO_LIBS="${PANGOCAIRO_LIBS}" - else - pkg_cv_PANGOCAIRO_LIBS=`$PKG_CONFIG --libs "pangocairo >= 1.14.7" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_PANGOCAIRO_CFLAGS=`$PKG_CONFIG --cflags "pangocairo >= 1.14.7" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$PANGOCAIRO_LIBS"; then + pkg_cv_PANGOCAIRO_LIBS="$PANGOCAIRO_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pangocairo >= 1.14.7\""; } >&5 + ($PKG_CONFIG --exists --print-errors "pangocairo >= 1.14.7") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PANGOCAIRO_LIBS=`$PKG_CONFIG --libs "pangocairo >= 1.14.7" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes fi + else + pkg_failed=untried +fi + -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - PANGOCAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "pangocairo >= 1.14.7" 2>&1` +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PANGOCAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "pangocairo >= 1.14.7" 2>&1` else - PANGOCAIRO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "pangocairo >= 1.14.7" 2>&1` + PANGOCAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "pangocairo >= 1.14.7" 2>&1` fi - echo "$PANGOCAIRO_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_aosd="no" + # Put the nasty error message in config.log where it belongs + echo "$PANGOCAIRO_PKG_ERRORS" >&5 + + have_aosd="no" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** pangocairo >= 1.14.7 is required for Audacious OSD plugin ***" >&5 $as_echo "*** pangocairo >= 1.14.7 is required for Audacious OSD plugin ***" >&6; } -elif test "x$pkg_failed" = "xuntried"; then +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } have_aosd="no" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** pangocairo >= 1.14.7 is required for Audacious OSD plugin ***" >&5 $as_echo "*** pangocairo >= 1.14.7 is required for Audacious OSD plugin ***" >&6; } else - PANGOCAIRO_CFLAGS="$pkg_cv_PANGOCAIRO_CFLAGS" - PANGOCAIRO_LIBS="$pkg_cv_PANGOCAIRO_LIBS" + PANGOCAIRO_CFLAGS=$pkg_cv_PANGOCAIRO_CFLAGS + PANGOCAIRO_LIBS=$pkg_cv_PANGOCAIRO_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XRENDER" >&5 $as_echo_n "checking for XRENDER... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xrender\""; } >&5 + +if test -n "$XRENDER_CFLAGS"; then + pkg_cv_XRENDER_CFLAGS="$XRENDER_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xrender\""; } >&5 ($PKG_CONFIG --exists --print-errors "xrender") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${XRENDER_CFLAGS}" != "x"; then - pkg_cv_XRENDER_CFLAGS="${XRENDER_CFLAGS}" - else - pkg_cv_XRENDER_CFLAGS=`$PKG_CONFIG --cflags "xrender" 2>/dev/null` - fi - if test "x${XRENDER_LIBS}" != "x"; then - pkg_cv_XRENDER_LIBS="${XRENDER_LIBS}" - else - pkg_cv_XRENDER_LIBS=`$PKG_CONFIG --libs "xrender" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_XRENDER_CFLAGS=`$PKG_CONFIG --cflags "xrender" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$XRENDER_LIBS"; then + pkg_cv_XRENDER_LIBS="$XRENDER_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xrender\""; } >&5 + ($PKG_CONFIG --exists --print-errors "xrender") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_XRENDER_LIBS=`$PKG_CONFIG --libs "xrender" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - XRENDER_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "xrender" 2>&1` + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + XRENDER_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "xrender" 2>&1` else - XRENDER_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "xrender" 2>&1` + XRENDER_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "xrender" 2>&1` fi - echo "$XRENDER_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_aosd="no" + # Put the nasty error message in config.log where it belongs + echo "$XRENDER_PKG_ERRORS" >&5 + + have_aosd="no" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** X Render extension is required for Audacious OSD plugin ***" >&5 $as_echo "*** X Render extension is required for Audacious OSD plugin ***" >&6; } -elif test "x$pkg_failed" = "xuntried"; then +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } have_aosd="no" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** X Render extension is required for Audacious OSD plugin ***" >&5 $as_echo "*** X Render extension is required for Audacious OSD plugin ***" >&6; } else - XRENDER_CFLAGS="$pkg_cv_XRENDER_CFLAGS" - XRENDER_LIBS="$pkg_cv_XRENDER_LIBS" + XRENDER_CFLAGS=$pkg_cv_XRENDER_CFLAGS + XRENDER_LIBS=$pkg_cv_XRENDER_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi if test "x$enable_aosd_xcomp" = "xyes"; then have_aosd_xcomp="yes" - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XCOMPOSITE" >&5 $as_echo_n "checking for XCOMPOSITE... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xcomposite\""; } >&5 + +if test -n "$XCOMPOSITE_CFLAGS"; then + pkg_cv_XCOMPOSITE_CFLAGS="$XCOMPOSITE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xcomposite\""; } >&5 ($PKG_CONFIG --exists --print-errors "xcomposite") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${XCOMPOSITE_CFLAGS}" != "x"; then - pkg_cv_XCOMPOSITE_CFLAGS="${XCOMPOSITE_CFLAGS}" - else - pkg_cv_XCOMPOSITE_CFLAGS=`$PKG_CONFIG --cflags "xcomposite" 2>/dev/null` - fi - if test "x${XCOMPOSITE_LIBS}" != "x"; then - pkg_cv_XCOMPOSITE_LIBS="${XCOMPOSITE_LIBS}" - else - pkg_cv_XCOMPOSITE_LIBS=`$PKG_CONFIG --libs "xcomposite" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_XCOMPOSITE_CFLAGS=`$PKG_CONFIG --cflags "xcomposite" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$XCOMPOSITE_LIBS"; then + pkg_cv_XCOMPOSITE_LIBS="$XCOMPOSITE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xcomposite\""; } >&5 + ($PKG_CONFIG --exists --print-errors "xcomposite") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_XCOMPOSITE_LIBS=`$PKG_CONFIG --libs "xcomposite" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes fi + else + pkg_failed=untried +fi + -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - XCOMPOSITE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "xcomposite" 2>&1` +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + XCOMPOSITE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "xcomposite" 2>&1` else - XCOMPOSITE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "xcomposite" 2>&1` + XCOMPOSITE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "xcomposite" 2>&1` fi - echo "$XCOMPOSITE_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_aosd_xcomp="no" + # Put the nasty error message in config.log where it belongs + echo "$XCOMPOSITE_PKG_ERRORS" >&5 + + have_aosd_xcomp="no" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** X Composite extension not found, composite support for Audacious OSD will not be compiled ***" >&5 $as_echo "*** X Composite extension not found, composite support for Audacious OSD will not be compiled ***" >&6; } -elif test "x$pkg_failed" = "xuntried"; then +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } have_aosd_xcomp="no" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** X Composite extension not found, composite support for Audacious OSD will not be compiled ***" >&5 $as_echo "*** X Composite extension not found, composite support for Audacious OSD will not be compiled ***" >&6; } else - XCOMPOSITE_CFLAGS="$pkg_cv_XCOMPOSITE_CFLAGS" - XCOMPOSITE_LIBS="$pkg_cv_XCOMPOSITE_LIBS" + XCOMPOSITE_CFLAGS=$pkg_cv_XCOMPOSITE_CFLAGS + XCOMPOSITE_LIBS=$pkg_cv_XCOMPOSITE_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } @@ -8694,54 +9954,79 @@ have_aosd="yes" if test "x$enable_aosd_xcomp" = "xyes"; then have_aosd_xcomp="yes" - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XCOMPOSITE" >&5 $as_echo_n "checking for XCOMPOSITE... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xcomposite\""; } >&5 + +if test -n "$XCOMPOSITE_CFLAGS"; then + pkg_cv_XCOMPOSITE_CFLAGS="$XCOMPOSITE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xcomposite\""; } >&5 ($PKG_CONFIG --exists --print-errors "xcomposite") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${XCOMPOSITE_CFLAGS}" != "x"; then - pkg_cv_XCOMPOSITE_CFLAGS="${XCOMPOSITE_CFLAGS}" - else - pkg_cv_XCOMPOSITE_CFLAGS=`$PKG_CONFIG --cflags "xcomposite" 2>/dev/null` - fi - if test "x${XCOMPOSITE_LIBS}" != "x"; then - pkg_cv_XCOMPOSITE_LIBS="${XCOMPOSITE_LIBS}" - else - pkg_cv_XCOMPOSITE_LIBS=`$PKG_CONFIG --libs "xcomposite" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_XCOMPOSITE_CFLAGS=`$PKG_CONFIG --cflags "xcomposite" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$XCOMPOSITE_LIBS"; then + pkg_cv_XCOMPOSITE_LIBS="$XCOMPOSITE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xcomposite\""; } >&5 + ($PKG_CONFIG --exists --print-errors "xcomposite") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_XCOMPOSITE_LIBS=`$PKG_CONFIG --libs "xcomposite" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes fi + else + pkg_failed=untried +fi + -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - XCOMPOSITE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "xcomposite" 2>&1` +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + XCOMPOSITE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "xcomposite" 2>&1` else - XCOMPOSITE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "xcomposite" 2>&1` + XCOMPOSITE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "xcomposite" 2>&1` fi - echo "$XCOMPOSITE_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_aosd_xcomp="no" + # Put the nasty error message in config.log where it belongs + echo "$XCOMPOSITE_PKG_ERRORS" >&5 + + have_aosd_xcomp="no" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** X Composite extension not found, composite support for Audacious OSD will not be compiled ***" >&5 $as_echo "*** X Composite extension not found, composite support for Audacious OSD will not be compiled ***" >&6; } -elif test "x$pkg_failed" = "xuntried"; then +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } have_aosd_xcomp="no" { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** X Composite extension not found, composite support for Audacious OSD will not be compiled ***" >&5 $as_echo "*** X Composite extension not found, composite support for Audacious OSD will not be compiled ***" >&6; } else - XCOMPOSITE_CFLAGS="$pkg_cv_XCOMPOSITE_CFLAGS" - XCOMPOSITE_LIBS="$pkg_cv_XCOMPOSITE_LIBS" + XCOMPOSITE_CFLAGS=$pkg_cv_XCOMPOSITE_CFLAGS + XCOMPOSITE_LIBS=$pkg_cv_XCOMPOSITE_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } @@ -8775,61 +10060,174 @@ if test "x$enable_notify" = "xyes"; then - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NOTIFY" >&5 $as_echo_n "checking for NOTIFY... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnotify\""; } >&5 + +if test -n "$NOTIFY_CFLAGS"; then + pkg_cv_NOTIFY_CFLAGS="$NOTIFY_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnotify\""; } >&5 ($PKG_CONFIG --exists --print-errors "libnotify") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${NOTIFY_CFLAGS}" != "x"; then - pkg_cv_NOTIFY_CFLAGS="${NOTIFY_CFLAGS}" - else - pkg_cv_NOTIFY_CFLAGS=`$PKG_CONFIG --cflags "libnotify" 2>/dev/null` - fi - if test "x${NOTIFY_LIBS}" != "x"; then - pkg_cv_NOTIFY_LIBS="${NOTIFY_LIBS}" + pkg_cv_NOTIFY_CFLAGS=`$PKG_CONFIG --cflags "libnotify" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$NOTIFY_LIBS"; then + pkg_cv_NOTIFY_LIBS="$NOTIFY_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnotify\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libnotify") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_NOTIFY_LIBS=`$PKG_CONFIG --libs "libnotify" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + NOTIFY_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libnotify" 2>&1` else - pkg_cv_NOTIFY_LIBS=`$PKG_CONFIG --libs "libnotify" 2>/dev/null` + NOTIFY_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libnotify" 2>&1` fi - else - pkg_failed="yes" - fi + # Put the nasty error message in config.log where it belongs + echo "$NOTIFY_PKG_ERRORS" >&5 + + have_notify="no" +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_notify="no" +else + NOTIFY_CFLAGS=$pkg_cv_NOTIFY_CFLAGS + NOTIFY_LIBS=$pkg_cv_NOTIFY_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_notify="yes" +fi +else + have_notify="no" +fi + +if test "x$have_notify" = "xyes"; then + GENERAL_PLUGINS="$GENERAL_PLUGINS notify" +fi + + +# Check whether --enable-mpris2 was given. +if test "${enable_mpris2+set}" = set; then : + enableval=$enable_mpris2; enable_mpris2=$enableval +else + enable_mpris2=yes +fi + + +if test $enable_mpris2 = yes ; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GIO_UNIX" >&5 +$as_echo_n "checking for GIO_UNIX... " >&6; } + +if test -n "$GIO_UNIX_CFLAGS"; then + pkg_cv_GIO_UNIX_CFLAGS="$GIO_UNIX_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-unix-2.0 >= 2.30\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gio-unix-2.0 >= 2.30") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GIO_UNIX_CFLAGS=`$PKG_CONFIG --cflags "gio-unix-2.0 >= 2.30" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GIO_UNIX_LIBS"; then + pkg_cv_GIO_UNIX_LIBS="$GIO_UNIX_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-unix-2.0 >= 2.30\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gio-unix-2.0 >= 2.30") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GIO_UNIX_LIBS=`$PKG_CONFIG --libs "gio-unix-2.0 >= 2.30" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes fi + else + pkg_failed=untried +fi + -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - NOTIFY_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libnotify" 2>&1` +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GIO_UNIX_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gio-unix-2.0 >= 2.30" 2>&1` else - NOTIFY_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libnotify" 2>&1` + GIO_UNIX_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gio-unix-2.0 >= 2.30" 2>&1` fi - echo "$NOTIFY_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$GIO_UNIX_PKG_ERRORS" >&5 + + enable_mpris2=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - have_notify="no" -elif test "x$pkg_failed" = "xuntried"; then - have_notify="no" + enable_mpris2=no else - NOTIFY_CFLAGS="$pkg_cv_NOTIFY_CFLAGS" - NOTIFY_LIBS="$pkg_cv_NOTIFY_LIBS" + GIO_UNIX_CFLAGS=$pkg_cv_GIO_UNIX_CFLAGS + GIO_UNIX_LIBS=$pkg_cv_GIO_UNIX_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - have_notify="yes" + enable_mpris2=yes fi -else - have_notify="no" fi -if test "x$have_notify" = "xyes"; then - GENERAL_PLUGINS="$GENERAL_PLUGINS notify" -fi +if test $enable_mpris2 = yes ; then + GENERAL_PLUGINS="$GENERAL_PLUGINS mpris2" +fi + # Check whether --enable-adplug was given. if test "${enable_adplug+set}" = set; then : @@ -8842,51 +10240,76 @@ if test "x$enable_adplug" = "xyes"; then have_adplug="yes" - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BINIO" >&5 $as_echo_n "checking for BINIO... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libbinio >= 1.4\""; } >&5 + +if test -n "$BINIO_CFLAGS"; then + pkg_cv_BINIO_CFLAGS="$BINIO_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libbinio >= 1.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libbinio >= 1.4") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${BINIO_CFLAGS}" != "x"; then - pkg_cv_BINIO_CFLAGS="${BINIO_CFLAGS}" - else - pkg_cv_BINIO_CFLAGS=`$PKG_CONFIG --cflags "libbinio >= 1.4" 2>/dev/null` - fi - if test "x${BINIO_LIBS}" != "x"; then - pkg_cv_BINIO_LIBS="${BINIO_LIBS}" - else - pkg_cv_BINIO_LIBS=`$PKG_CONFIG --libs "libbinio >= 1.4" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_BINIO_CFLAGS=`$PKG_CONFIG --cflags "libbinio >= 1.4" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$BINIO_LIBS"; then + pkg_cv_BINIO_LIBS="$BINIO_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libbinio >= 1.4\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libbinio >= 1.4") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_BINIO_LIBS=`$PKG_CONFIG --libs "libbinio >= 1.4" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes fi + else + pkg_failed=untried +fi + -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - BINIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libbinio >= 1.4" 2>&1` +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + BINIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libbinio >= 1.4" 2>&1` else - BINIO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libbinio >= 1.4" 2>&1` + BINIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libbinio >= 1.4" 2>&1` fi - echo "$BINIO_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$BINIO_PKG_ERRORS" >&5 + + have_adplug=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - have_adplug=no -elif test "x$pkg_failed" = "xuntried"; then have_adplug=no else - BINIO_CFLAGS="$pkg_cv_BINIO_CFLAGS" - BINIO_LIBS="$pkg_cv_BINIO_LIBS" + BINIO_CFLAGS=$pkg_cv_BINIO_CFLAGS + BINIO_LIBS=$pkg_cv_BINIO_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** AdPlug plugin disabled per user request ***" >&5 @@ -8910,54 +10333,79 @@ if test "x$enable_vorbis" = "xyes"; then - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OGG_VORBIS" >&5 $as_echo_n "checking for OGG_VORBIS... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ogg >= 1.0 vorbis >= 1.1 vorbisfile >= 1.1\""; } >&5 + +if test -n "$OGG_VORBIS_CFLAGS"; then + pkg_cv_OGG_VORBIS_CFLAGS="$OGG_VORBIS_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ogg >= 1.0 vorbis >= 1.1 vorbisfile >= 1.1\""; } >&5 ($PKG_CONFIG --exists --print-errors "ogg >= 1.0 vorbis >= 1.1 vorbisfile >= 1.1") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${OGG_VORBIS_CFLAGS}" != "x"; then - pkg_cv_OGG_VORBIS_CFLAGS="${OGG_VORBIS_CFLAGS}" - else - pkg_cv_OGG_VORBIS_CFLAGS=`$PKG_CONFIG --cflags "ogg >= 1.0 vorbis >= 1.1 vorbisfile >= 1.1" 2>/dev/null` - fi - if test "x${OGG_VORBIS_LIBS}" != "x"; then - pkg_cv_OGG_VORBIS_LIBS="${OGG_VORBIS_LIBS}" - else - pkg_cv_OGG_VORBIS_LIBS=`$PKG_CONFIG --libs "ogg >= 1.0 vorbis >= 1.1 vorbisfile >= 1.1" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_OGG_VORBIS_CFLAGS=`$PKG_CONFIG --cflags "ogg >= 1.0 vorbis >= 1.1 vorbisfile >= 1.1" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$OGG_VORBIS_LIBS"; then + pkg_cv_OGG_VORBIS_LIBS="$OGG_VORBIS_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ogg >= 1.0 vorbis >= 1.1 vorbisfile >= 1.1\""; } >&5 + ($PKG_CONFIG --exists --print-errors "ogg >= 1.0 vorbis >= 1.1 vorbisfile >= 1.1") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_OGG_VORBIS_LIBS=`$PKG_CONFIG --libs "ogg >= 1.0 vorbis >= 1.1 vorbisfile >= 1.1" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - OGG_VORBIS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "ogg >= 1.0 vorbis >= 1.1 vorbisfile >= 1.1" 2>&1` + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + OGG_VORBIS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "ogg >= 1.0 vorbis >= 1.1 vorbisfile >= 1.1" 2>&1` else - OGG_VORBIS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ogg >= 1.0 vorbis >= 1.1 vorbisfile >= 1.1" 2>&1` + OGG_VORBIS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "ogg >= 1.0 vorbis >= 1.1 vorbisfile >= 1.1" 2>&1` fi - echo "$OGG_VORBIS_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find libogg/libvorbis, Ogg Vorbis support will not be built ***" >&5 + # Put the nasty error message in config.log where it belongs + echo "$OGG_VORBIS_PKG_ERRORS" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find libogg/libvorbis, Ogg Vorbis support will not be built ***" >&5 $as_echo "$as_me: WARNING: *** Cannot find libogg/libvorbis, Ogg Vorbis support will not be built ***" >&2;} have_oggvorbis=no -elif test "x$pkg_failed" = "xuntried"; then +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find libogg/libvorbis, Ogg Vorbis support will not be built ***" >&5 $as_echo "$as_me: WARNING: *** Cannot find libogg/libvorbis, Ogg Vorbis support will not be built ***" >&2;} have_oggvorbis=no else - OGG_VORBIS_CFLAGS="$pkg_cv_OGG_VORBIS_CFLAGS" - OGG_VORBIS_LIBS="$pkg_cv_OGG_VORBIS_LIBS" + OGG_VORBIS_CFLAGS=$pkg_cv_OGG_VORBIS_CFLAGS + OGG_VORBIS_LIBS=$pkg_cv_OGG_VORBIS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_oggvorbis=yes @@ -8984,160 +10432,82 @@ if test "x$enable_flacng" = "xyes"; then -# Check whether --with-libFLAC was given. -if test "${with_libFLAC+set}" = set; then : - withval=$with_libFLAC; libFLAC_prefix="$withval" -else - libFLAC_prefix="" -fi - +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBFLAC" >&5 +$as_echo_n "checking for LIBFLAC... " >&6; } -# Check whether --with-libFLAC-libraries was given. -if test "${with_libFLAC_libraries+set}" = set; then : - withval=$with_libFLAC_libraries; libFLAC_libraries="$withval" +if test -n "$LIBFLAC_CFLAGS"; then + pkg_cv_LIBFLAC_CFLAGS="$LIBFLAC_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flac >= 1.2.1\""; } >&5 + ($PKG_CONFIG --exists --print-errors "flac >= 1.2.1") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBFLAC_CFLAGS=`$PKG_CONFIG --cflags "flac >= 1.2.1" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - libFLAC_libraries="" + pkg_failed=yes fi - - -# Check whether --with-libFLAC-includes was given. -if test "${with_libFLAC_includes+set}" = set; then : - withval=$with_libFLAC_includes; libFLAC_includes="$withval" -else - libFLAC_includes="" + else + pkg_failed=untried fi - -# Check whether --enable-libFLACtest was given. -if test "${enable_libFLACtest+set}" = set; then : - enableval=$enable_libFLACtest; +if test -n "$LIBFLAC_LIBS"; then + pkg_cv_LIBFLAC_LIBS="$LIBFLAC_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flac >= 1.2.1\""; } >&5 + ($PKG_CONFIG --exists --print-errors "flac >= 1.2.1") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBFLAC_LIBS=`$PKG_CONFIG --libs "flac >= 1.2.1" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - enable_libFLACtest=yes + pkg_failed=yes +fi + else + pkg_failed=untried fi - if test "x$libFLAC_libraries" != "x" ; then - LIBFLAC_LIBS="-L$libFLAC_libraries" - elif test "x$libFLAC_prefix" != "x" ; then - LIBFLAC_LIBS="-L$libFLAC_prefix/lib" - elif test "x$prefix" != "xNONE" ; then - LIBFLAC_LIBS="-L$libdir" - fi - - LIBFLAC_LIBS="$LIBFLAC_LIBS -lFLAC -lm" - - if test "x$libFLAC_includes" != "x" ; then - LIBFLAC_CFLAGS="-I$libFLAC_includes" - elif test "x$libFLAC_prefix" != "x" ; then - LIBFLAC_CFLAGS="-I$libFLAC_prefix/include" - elif test "x$prefix" != "xNONE"; then - LIBFLAC_CFLAGS="-I$prefix/include" - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libFLAC >= 1.1.2" >&5 -$as_echo_n "checking for libFLAC >= 1.1.2... " >&6; } - no_libFLAC="" - - - if test "x$enable_libFLACtest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_CXXFLAGS="$CXXFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $LIBFLAC_CFLAGS" - CXXFLAGS="$CXXFLAGS $LIBFLAC_CFLAGS" - LIBS="$LIBS $LIBFLAC_LIBS" - rm -f conf.libFLACtest - if test "$cross_compiling" = yes; then : - echo $ac_n "cross compiling; assumed OK... $ac_c" -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include - -int main () -{ -FLAC__format_vorbiscomment_entry_name_is_legal("foo"); - system("touch conf.libFLACtest"); - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes else - no_libFLAC=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + _pkg_short_errors_supported=no fi + if test $_pkg_short_errors_supported = yes; then + LIBFLAC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "flac >= 1.2.1" 2>&1` + else + LIBFLAC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "flac >= 1.2.1" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBFLAC_PKG_ERRORS" >&5 - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find libFLAC 1.2.1+, FLAC support will not be built ***" >&5 +$as_echo "$as_me: WARNING: *** Cannot find libFLAC 1.2.1+, FLAC support will not be built ***" >&2;} + have_flacng=no - if test "x$no_libFLAC" = "x" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - have_flacng=yes - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - if test -f conf.libFLACtest ; then - : - else - echo "*** Could not run libFLAC test program, checking why..." - CFLAGS="$CFLAGS $LIBFLAC_CFLAGS" - LIBS="$LIBS $LIBFLAC_LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find libFLAC 1.2.1+, FLAC support will not be built ***" >&5 +$as_echo "$as_me: WARNING: *** Cannot find libFLAC 1.2.1+, FLAC support will not be built ***" >&2;} + have_flacng=no -int -main () -{ - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding libFLAC or finding the wrong" - echo "*** version of libFLAC. If it is not finding libFLAC, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else - echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means libFLAC was incorrectly installed" - echo "*** or that you have moved libFLAC since it was installed. In the latter case, you" - echo "*** may want to edit the libFLAC-config script: $LIBFLAC_CONFIG" + LIBFLAC_CFLAGS=$pkg_cv_LIBFLAC_CFLAGS + LIBFLAC_LIBS=$pkg_cv_LIBFLAC_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_flacng=yes fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - LIBFLAC_CFLAGS="" - LIBFLAC_LIBS="" - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find libFLAC, FLACng will not be built ***" >&5 -$as_echo "$as_me: WARNING: *** Cannot find libFLAC, FLACng will not be built ***" >&2;} - have_flacng=no - - fi - - - rm -f conf.libFLACtest - else { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** FLACng plugin disabled per user request ***" >&5 $as_echo "*** FLACng plugin disabled per user request ***" >&6; } @@ -9159,54 +10529,79 @@ if test "x$enable_wavpack" = "xyes"; then - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for WAVPACK" >&5 $as_echo_n "checking for WAVPACK... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wavpack >= 4.31\""; } >&5 + +if test -n "$WAVPACK_CFLAGS"; then + pkg_cv_WAVPACK_CFLAGS="$WAVPACK_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wavpack >= 4.31\""; } >&5 ($PKG_CONFIG --exists --print-errors "wavpack >= 4.31") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${WAVPACK_CFLAGS}" != "x"; then - pkg_cv_WAVPACK_CFLAGS="${WAVPACK_CFLAGS}" - else - pkg_cv_WAVPACK_CFLAGS=`$PKG_CONFIG --cflags "wavpack >= 4.31" 2>/dev/null` - fi - if test "x${WAVPACK_LIBS}" != "x"; then - pkg_cv_WAVPACK_LIBS="${WAVPACK_LIBS}" - else - pkg_cv_WAVPACK_LIBS=`$PKG_CONFIG --libs "wavpack >= 4.31" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_WAVPACK_CFLAGS=`$PKG_CONFIG --cflags "wavpack >= 4.31" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$WAVPACK_LIBS"; then + pkg_cv_WAVPACK_LIBS="$WAVPACK_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wavpack >= 4.31\""; } >&5 + ($PKG_CONFIG --exists --print-errors "wavpack >= 4.31") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_WAVPACK_LIBS=`$PKG_CONFIG --libs "wavpack >= 4.31" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - WAVPACK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "wavpack >= 4.31" 2>&1` + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + WAVPACK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "wavpack >= 4.31" 2>&1` else - WAVPACK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "wavpack >= 4.31" 2>&1` + WAVPACK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "wavpack >= 4.31" 2>&1` fi - echo "$WAVPACK_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find WavPack 4.31+, WavPack support will not be built ***" >&5 + # Put the nasty error message in config.log where it belongs + echo "$WAVPACK_PKG_ERRORS" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find WavPack 4.31+, WavPack support will not be built ***" >&5 $as_echo "$as_me: WARNING: *** Cannot find WavPack 4.31+, WavPack support will not be built ***" >&2;} have_wavpack=no -elif test "x$pkg_failed" = "xuntried"; then +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find WavPack 4.31+, WavPack support will not be built ***" >&5 $as_echo "$as_me: WARNING: *** Cannot find WavPack 4.31+, WavPack support will not be built ***" >&2;} have_wavpack=no else - WAVPACK_CFLAGS="$pkg_cv_WAVPACK_CFLAGS" - WAVPACK_LIBS="$pkg_cv_WAVPACK_LIBS" + WAVPACK_CFLAGS=$pkg_cv_WAVPACK_CFLAGS + WAVPACK_LIBS=$pkg_cv_WAVPACK_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_wavpack=yes @@ -9326,50 +10721,75 @@ if test "x$enable_sndfile" = "xyes"; then - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SNDFILE" >&5 $as_echo_n "checking for SNDFILE... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndfile >= 0.19\""; } >&5 + +if test -n "$SNDFILE_CFLAGS"; then + pkg_cv_SNDFILE_CFLAGS="$SNDFILE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndfile >= 0.19\""; } >&5 ($PKG_CONFIG --exists --print-errors "sndfile >= 0.19") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${SNDFILE_CFLAGS}" != "x"; then - pkg_cv_SNDFILE_CFLAGS="${SNDFILE_CFLAGS}" - else - pkg_cv_SNDFILE_CFLAGS=`$PKG_CONFIG --cflags "sndfile >= 0.19" 2>/dev/null` - fi - if test "x${SNDFILE_LIBS}" != "x"; then - pkg_cv_SNDFILE_LIBS="${SNDFILE_LIBS}" - else - pkg_cv_SNDFILE_LIBS=`$PKG_CONFIG --libs "sndfile >= 0.19" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_SNDFILE_CFLAGS=`$PKG_CONFIG --cflags "sndfile >= 0.19" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$SNDFILE_LIBS"; then + pkg_cv_SNDFILE_LIBS="$SNDFILE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndfile >= 0.19\""; } >&5 + ($PKG_CONFIG --exists --print-errors "sndfile >= 0.19") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SNDFILE_LIBS=`$PKG_CONFIG --libs "sndfile >= 0.19" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - SNDFILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "sndfile >= 0.19" 2>&1` + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + SNDFILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "sndfile >= 0.19" 2>&1` else - SNDFILE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "sndfile >= 0.19" 2>&1` + SNDFILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "sndfile >= 0.19" 2>&1` fi - echo "$SNDFILE_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - enable_sndfile=no + # Put the nasty error message in config.log where it belongs + echo "$SNDFILE_PKG_ERRORS" >&5 -elif test "x$pkg_failed" = "xuntried"; then + enable_sndfile=no + +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } enable_sndfile=no else - SNDFILE_CFLAGS="$pkg_cv_SNDFILE_CFLAGS" - SNDFILE_LIBS="$pkg_cv_SNDFILE_LIBS" + SNDFILE_CFLAGS=$pkg_cv_SNDFILE_CFLAGS + SNDFILE_LIBS=$pkg_cv_SNDFILE_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } enable_sndfile=yes @@ -9394,307 +10814,478 @@ fi -if test "x$enable_modplug" = "xyes"; then - INPUT_PLUGINS="$INPUT_PLUGINS modplug" - have_modplug="yes" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** ModPlug plugin disabled per user request ***" >&5 -$as_echo "*** ModPlug plugin disabled per user request ***" >&6; } - have_modplug="no" -fi +if test $enable_modplug = yes ; then +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MODPLUG" >&5 +$as_echo_n "checking for MODPLUG... " >&6; } -have_ffaudio="no" -# Check whether --enable-ffaudio was given. -if test "${enable_ffaudio+set}" = set; then : - enableval=$enable_ffaudio; enable_ffaudio=$enableval +if test -n "$MODPLUG_CFLAGS"; then + pkg_cv_MODPLUG_CFLAGS="$MODPLUG_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmodplug\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libmodplug") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_MODPLUG_CFLAGS=`$PKG_CONFIG --cflags "libmodplug" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - enable_ffaudio="yes" - + pkg_failed=yes fi - - - -if test $enable_ffaudio = yes ; then - pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for NEED_AVCORE" >&5 -$as_echo_n "checking for NEED_AVCORE... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavcodec >= 52.94.3\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libavcodec >= 52.94.3") 2>&5 + else + pkg_failed=untried +fi +if test -n "$MODPLUG_LIBS"; then + pkg_cv_MODPLUG_LIBS="$MODPLUG_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmodplug\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libmodplug") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${NEED_AVCORE_CFLAGS}" != "x"; then - pkg_cv_NEED_AVCORE_CFLAGS="${NEED_AVCORE_CFLAGS}" - else - pkg_cv_NEED_AVCORE_CFLAGS=`$PKG_CONFIG --cflags "libavcodec >= 52.94.3" 2>/dev/null` - fi - if test "x${NEED_AVCORE_LIBS}" != "x"; then - pkg_cv_NEED_AVCORE_LIBS="${NEED_AVCORE_LIBS}" - else - pkg_cv_NEED_AVCORE_LIBS=`$PKG_CONFIG --libs "libavcodec >= 52.94.3" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_MODPLUG_LIBS=`$PKG_CONFIG --libs "libmodplug" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - NEED_AVCORE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libavcodec >= 52.94.3" 2>&1` + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + MODPLUG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libmodplug" 2>&1` else - NEED_AVCORE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libavcodec >= 52.94.3" 2>&1` + MODPLUG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libmodplug" 2>&1` fi - echo "$NEED_AVCORE_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$MODPLUG_PKG_ERRORS" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find libmodplug; modplug plugin disabled ***" >&5 +$as_echo "$as_me: WARNING: *** Cannot find libmodplug; modplug plugin disabled ***" >&2;} + have_modplug=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - have_new_ffmpeg=no -elif test "x$pkg_failed" = "xuntried"; then - have_new_ffmpeg=no + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find libmodplug; modplug plugin disabled ***" >&5 +$as_echo "$as_me: WARNING: *** Cannot find libmodplug; modplug plugin disabled ***" >&2;} + have_modplug=no else - NEED_AVCORE_CFLAGS="$pkg_cv_NEED_AVCORE_CFLAGS" - NEED_AVCORE_LIBS="$pkg_cv_NEED_AVCORE_LIBS" + MODPLUG_CFLAGS=$pkg_cv_MODPLUG_CFLAGS + MODPLUG_LIBS=$pkg_cv_MODPLUG_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - have_new_ffmpeg=yes + INPUT_PLUGINS="$INPUT_PLUGINS modplug" + have_modplug=yes fi +fi + + +have_ffaudio="no" +# Check whether --enable-ffaudio was given. +if test "${enable_ffaudio+set}" = set; then : + enableval=$enable_ffaudio; enable_ffaudio=$enableval +else + enable_ffaudio="yes" + +fi + - if test $have_new_ffmpeg = yes ; then - pkg_failed=no +if test $enable_ffaudio = yes ; then + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FFMPEG" >&5 $as_echo_n "checking for FFMPEG... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavcodec >= 52.20.0 libavcore >= 0.12.0 libavformat >= 52.31.0 libavutil >= 49.15.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libavcodec >= 52.20.0 libavcore >= 0.12.0 libavformat >= 52.31.0 libavutil >= 49.15.0") 2>&5 + +if test -n "$FFMPEG_CFLAGS"; then + pkg_cv_FFMPEG_CFLAGS="$FFMPEG_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavcodec >= 53.40.0 libavformat >= 53.5.0 libavutil >= 50.42.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libavcodec >= 53.40.0 libavformat >= 53.5.0 libavutil >= 50.42.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${FFMPEG_CFLAGS}" != "x"; then - pkg_cv_FFMPEG_CFLAGS="${FFMPEG_CFLAGS}" - else - pkg_cv_FFMPEG_CFLAGS=`$PKG_CONFIG --cflags "libavcodec >= 52.20.0 libavcore >= 0.12.0 libavformat >= 52.31.0 libavutil >= 49.15.0" 2>/dev/null` - fi - if test "x${FFMPEG_LIBS}" != "x"; then - pkg_cv_FFMPEG_LIBS="${FFMPEG_LIBS}" - else - pkg_cv_FFMPEG_LIBS=`$PKG_CONFIG --libs "libavcodec >= 52.20.0 libavcore >= 0.12.0 libavformat >= 52.31.0 libavutil >= 49.15.0" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_FFMPEG_CFLAGS=`$PKG_CONFIG --cflags "libavcodec >= 53.40.0 libavformat >= 53.5.0 libavutil >= 50.42.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes fi - - -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - FFMPEG_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libavcodec >= 52.20.0 libavcore >= 0.12.0 libavformat >= 52.31.0 libavutil >= 49.15.0" 2>&1` - else - FFMPEG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libavcodec >= 52.20.0 libavcore >= 0.12.0 libavformat >= 52.31.0 libavutil >= 49.15.0" 2>&1` - fi - echo "$FFMPEG_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_ffaudio=no -elif test "x$pkg_failed" = "xuntried"; then - have_ffaudio=no -else - FFMPEG_CFLAGS="$pkg_cv_FFMPEG_CFLAGS" - FFMPEG_LIBS="$pkg_cv_FFMPEG_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - have_ffaudio=yes + else + pkg_failed=untried fi - else - pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FFMPEG" >&5 -$as_echo_n "checking for FFMPEG... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavcodec >= 52.20.0 libavformat >= 52.31.0 libavutil >= 49.15.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libavcodec >= 52.20.0 libavformat >= 52.31.0 libavutil >= 49.15.0") 2>&5 +if test -n "$FFMPEG_LIBS"; then + pkg_cv_FFMPEG_LIBS="$FFMPEG_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavcodec >= 53.40.0 libavformat >= 53.5.0 libavutil >= 50.42.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libavcodec >= 53.40.0 libavformat >= 53.5.0 libavutil >= 50.42.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${FFMPEG_CFLAGS}" != "x"; then - pkg_cv_FFMPEG_CFLAGS="${FFMPEG_CFLAGS}" - else - pkg_cv_FFMPEG_CFLAGS=`$PKG_CONFIG --cflags "libavcodec >= 52.20.0 libavformat >= 52.31.0 libavutil >= 49.15.0" 2>/dev/null` - fi - if test "x${FFMPEG_LIBS}" != "x"; then - pkg_cv_FFMPEG_LIBS="${FFMPEG_LIBS}" - else - pkg_cv_FFMPEG_LIBS=`$PKG_CONFIG --libs "libavcodec >= 52.20.0 libavformat >= 52.31.0 libavutil >= 49.15.0" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_FFMPEG_LIBS=`$PKG_CONFIG --libs "libavcodec >= 53.40.0 libavformat >= 53.5.0 libavutil >= 50.42.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - FFMPEG_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libavcodec >= 52.20.0 libavformat >= 52.31.0 libavutil >= 49.15.0" 2>&1` + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + FFMPEG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libavcodec >= 53.40.0 libavformat >= 53.5.0 libavutil >= 50.42.0" 2>&1` else - FFMPEG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libavcodec >= 52.20.0 libavformat >= 52.31.0 libavutil >= 49.15.0" 2>&1` + FFMPEG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libavcodec >= 53.40.0 libavformat >= 53.5.0 libavutil >= 50.42.0" 2>&1` fi - echo "$FFMPEG_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$FFMPEG_PKG_ERRORS" >&5 + + have_ffaudio=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - have_ffaudio=no -elif test "x$pkg_failed" = "xuntried"; then have_ffaudio=no else - FFMPEG_CFLAGS="$pkg_cv_FFMPEG_CFLAGS" - FFMPEG_LIBS="$pkg_cv_FFMPEG_LIBS" + FFMPEG_CFLAGS=$pkg_cv_FFMPEG_CFLAGS + FFMPEG_LIBS=$pkg_cv_FFMPEG_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_ffaudio=yes fi - fi fi if test "x$have_ffaudio" = "xyes"; then INPUT_PLUGINS="$INPUT_PLUGINS ffaudio" fi + # Check whether --enable-jack was given. if test "${enable_jack+set}" = set; then : enableval=$enable_jack; enable_jack=$enableval else - enable_jack="yes" + enable_jack=yes fi -if test "x$enable_jack" = "xyes"; then - pkg_failed=no +if test $enable_jack = yes ; then + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JACK" >&5 $as_echo_n "checking for JACK... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack >= 0.100.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "jack >= 0.100.0") 2>&5 + +if test -n "$JACK_CFLAGS"; then + pkg_cv_JACK_CFLAGS="$JACK_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack >= 1.9.7\""; } >&5 + ($PKG_CONFIG --exists --print-errors "jack >= 1.9.7") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${JACK_CFLAGS}" != "x"; then - pkg_cv_JACK_CFLAGS="${JACK_CFLAGS}" - else - pkg_cv_JACK_CFLAGS=`$PKG_CONFIG --cflags "jack >= 0.100.0" 2>/dev/null` - fi - if test "x${JACK_LIBS}" != "x"; then - pkg_cv_JACK_LIBS="${JACK_LIBS}" + pkg_cv_JACK_CFLAGS=`$PKG_CONFIG --cflags "jack >= 1.9.7" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$JACK_LIBS"; then + pkg_cv_JACK_LIBS="$JACK_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack >= 1.9.7\""; } >&5 + ($PKG_CONFIG --exists --print-errors "jack >= 1.9.7") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_JACK_LIBS=`$PKG_CONFIG --libs "jack >= 1.9.7" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + JACK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "jack >= 1.9.7" 2>&1` else - pkg_cv_JACK_LIBS=`$PKG_CONFIG --libs "jack >= 0.100.0" 2>/dev/null` + JACK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "jack >= 1.9.7" 2>&1` fi - else - pkg_failed="yes" - fi + # Put the nasty error message in config.log where it belongs + echo "$JACK_PKG_ERRORS" >&5 + + + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for JACK" >&5 +$as_echo_n "checking for JACK... " >&6; } + +if test -n "$JACK_CFLAGS"; then + pkg_cv_JACK_CFLAGS="$JACK_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack >= 0.120.1 jack < 1.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "jack >= 0.120.1 jack < 1.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_JACK_CFLAGS=`$PKG_CONFIG --cflags "jack >= 0.120.1 jack < 1.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$JACK_LIBS"; then + pkg_cv_JACK_LIBS="$JACK_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack >= 0.120.1 jack < 1.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "jack >= 0.120.1 jack < 1.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_JACK_LIBS=`$PKG_CONFIG --libs "jack >= 0.120.1 jack < 1.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes fi + else + pkg_failed=untried +fi + -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - JACK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "jack >= 0.100.0" 2>&1` +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + JACK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "jack >= 0.120.1 jack < 1.0" 2>&1` else - JACK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "jack >= 0.100.0" 2>&1` + JACK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "jack >= 0.120.1 jack < 1.0" 2>&1` fi - echo "$JACK_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$JACK_PKG_ERRORS" >&5 + + enable_jack=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - have_jack=no -elif test "x$pkg_failed" = "xuntried"; then - have_jack=no + enable_jack=no else - JACK_CFLAGS="$pkg_cv_JACK_CFLAGS" - JACK_LIBS="$pkg_cv_JACK_LIBS" + JACK_CFLAGS=$pkg_cv_JACK_CFLAGS + JACK_LIBS=$pkg_cv_JACK_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - have_jack=yes + enable_jack=$enable_jack fi +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SAMPLERATE" >&5 -$as_echo_n "checking for SAMPLERATE... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"samplerate >= 0.0.15\""; } >&5 - ($PKG_CONFIG --exists --print-errors "samplerate >= 0.0.15") 2>&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for JACK" >&5 +$as_echo_n "checking for JACK... " >&6; } + +if test -n "$JACK_CFLAGS"; then + pkg_cv_JACK_CFLAGS="$JACK_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack >= 0.120.1 jack < 1.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "jack >= 0.120.1 jack < 1.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${SAMPLERATE_CFLAGS}" != "x"; then - pkg_cv_SAMPLERATE_CFLAGS="${SAMPLERATE_CFLAGS}" - else - pkg_cv_SAMPLERATE_CFLAGS=`$PKG_CONFIG --cflags "samplerate >= 0.0.15" 2>/dev/null` - fi - if test "x${SAMPLERATE_LIBS}" != "x"; then - pkg_cv_SAMPLERATE_LIBS="${SAMPLERATE_LIBS}" - else - pkg_cv_SAMPLERATE_LIBS=`$PKG_CONFIG --libs "samplerate >= 0.0.15" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_JACK_CFLAGS=`$PKG_CONFIG --cflags "jack >= 0.120.1 jack < 1.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$JACK_LIBS"; then + pkg_cv_JACK_LIBS="$JACK_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack >= 0.120.1 jack < 1.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "jack >= 0.120.1 jack < 1.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_JACK_LIBS=`$PKG_CONFIG --libs "jack >= 0.120.1 jack < 1.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - SAMPLERATE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "samplerate >= 0.0.15" 2>&1` + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + JACK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "jack >= 0.120.1 jack < 1.0" 2>&1` else - SAMPLERATE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "samplerate >= 0.0.15" 2>&1` + JACK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "jack >= 0.120.1 jack < 1.0" 2>&1` fi - echo "$SAMPLERATE_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$JACK_PKG_ERRORS" >&5 + + enable_jack=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - ac_cv_samplerate=0 -elif test "x$pkg_failed" = "xuntried"; then - ac_cv_samplerate=0 + enable_jack=no else - SAMPLERATE_CFLAGS="$pkg_cv_SAMPLERATE_CFLAGS" - SAMPLERATE_LIBS="$pkg_cv_SAMPLERATE_LIBS" + JACK_CFLAGS=$pkg_cv_JACK_CFLAGS + JACK_LIBS=$pkg_cv_JACK_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - ac_cv_samplerate=1 + enable_jack=$enable_jack fi +else + JACK_CFLAGS=$pkg_cv_JACK_CFLAGS + JACK_LIBS=$pkg_cv_JACK_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + enable_jack=$enable_jack +fi -cat >>confdefs.h <<_ACEOF -#define HAVE_SAMPLERATE ${ac_cv_samplerate} -_ACEOF +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SAMPLERATE" >&5 +$as_echo_n "checking for SAMPLERATE... " >&6; } -if test "x${ac_cv_samplerate}" = "x0"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find libsamplerate, necessary for jack output plugin." >&5 -$as_echo "$as_me: WARNING: Could not find libsamplerate, necessary for jack output plugin." >&2;} - have_jack=no +if test -n "$SAMPLERATE_CFLAGS"; then + pkg_cv_SAMPLERATE_CFLAGS="$SAMPLERATE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"samplerate\""; } >&5 + ($PKG_CONFIG --exists --print-errors "samplerate") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SAMPLERATE_CFLAGS=`$PKG_CONFIG --cflags "samplerate" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$SAMPLERATE_LIBS"; then + pkg_cv_SAMPLERATE_LIBS="$SAMPLERATE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"samplerate\""; } >&5 + ($PKG_CONFIG --exists --print-errors "samplerate") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SAMPLERATE_LIBS=`$PKG_CONFIG --libs "samplerate" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$have_jack" = "xno"; then - have_jack=no + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes else - have_jack=yes + _pkg_short_errors_supported=no fi + if test $_pkg_short_errors_supported = yes; then + SAMPLERATE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "samplerate" 2>&1` + else + SAMPLERATE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "samplerate" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$SAMPLERATE_PKG_ERRORS" >&5 - + enable_jack=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + enable_jack=no else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** jack plugin disabled per user request ***" >&5 -$as_echo "*** jack plugin disabled per user request ***" >&6; } - have_jack=no + SAMPLERATE_CFLAGS=$pkg_cv_SAMPLERATE_CFLAGS + SAMPLERATE_LIBS=$pkg_cv_SAMPLERATE_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + enable_jack=$enable_jack fi -if test "x$have_jack" = "xyes"; then - OUTPUT_PLUGINS="$OUTPUT_PLUGINS jack" + if test $enable_jack = yes ; then + OUTPUT_PLUGINS="$OUTPUT_PLUGINS jack" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** JACK or libsamplerate not found; JACK output plugin disabled" >&5 +$as_echo "*** JACK or libsamplerate not found; JACK output plugin disabled" >&6; } + fi fi # Check whether --enable-sid was given. @@ -10828,7 +12419,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HardSID builder module" >&5 $as_echo_n "checking for HardSID builder module... " >&6; } -# xs_try_library ( builders:$BUILDERS_CFLAGS:$BUILDERS_LDFLAGS:hardsid-builder:sidplay/builders/hardsid.h:HardSID *sid; ) +# xs_try_library ( builders:$BUILDERS_CFLAGS:$BUILDERS_LDFLAGS:hardsid-builder:sidplay/builders/hardsid.h:HardSIDBuilder *sid; ) xs_cxxflags_save="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $BUILDERS_CFLAGS" @@ -10843,7 +12434,7 @@ int main () { -HardSID *sid; +HardSIDBuilder *sid; ; return 0; @@ -11000,369 +12591,461 @@ # Check whether --enable-oss was given. if test "${enable_oss+set}" = set; then : - enableval=$enable_oss; enable_oss=$enableval + enableval=$enable_oss; enable_oss="$enableval" else - enable_oss=yes + enable_oss="no" fi -have_oss=no -if test "x$enable_oss" = "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OSS include dir" >&5 -$as_echo_n "checking for OSS include dir... " >&6; } - OSS_CFLAGS="" - if test -f "/etc/oss.conf" ; then - for i in `cat /etc/oss.conf`; do - t=`echo $i | sed -e 's/OSSLIBDIR=//'` - if test "x$i" != "x$t" ; then - if test -f "$t/include/sys/soundcard.h" -o -f "$i/include/soundcard.h" ; then - OSS_CFLAGS="-I$t/include" - fi - fi - done - fi - if test -n "$OSS_CFLAGS" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OSS_CFLAGS" >&5 -$as_echo "$OSS_CFLAGS" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 -$as_echo "not found" >&6; } - fi - CFLAGS_save=$CFLAGS - CFLAGS="$CFLAGS $OSS_CFLAGS" - for ac_header in soundcard.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "soundcard.h" "ac_cv_header_soundcard_h" "$ac_includes_default" -if test "x$ac_cv_header_soundcard_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SOUNDCARD_H 1 -_ACEOF +# Check whether --enable-oss4 was given. +if test "${enable_oss4+set}" = set; then : + enableval=$enable_oss4; enable_oss4="$enableval" +else + enable_oss4="yes" fi -done - for ac_header in sys/soundcard.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/soundcard.h" "ac_cv_header_sys_soundcard_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_soundcard_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_SOUNDCARD_H 1 -_ACEOF +have_oss="no" +have_oss4="no" +OSS_CFLAGS="" -fi +if test "$enable_oss" = "yes" || test "$enable_oss4" = "yes" ; then + if test -f "/etc/oss.conf"; then + . "/etc/oss.conf" + OSS_CFLAGS="-I$OSSLIBDIR/include" + fi -done + OLD_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $OSS_CFLAGS" - for ac_header in machine/soundcard.h + for ac_header in sys/soundcard.h soundcard.h do : - ac_fn_c_check_header_mongrel "$LINENO" "machine/soundcard.h" "ac_cv_header_machine_soundcard_h" "$ac_includes_default" -if test "x$ac_cv_header_machine_soundcard_h" = xyes; then : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF -#define HAVE_MACHINE_SOUNDCARD_H 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF - + have_oss="yes" +else + have_oss="$have_oss" fi done - CFLAGS=$CFLAGS_save - if test "x${ac_cv_header_soundcard_h}" = "xyes" || test "x${ac_cv_header_sys_soundcard_h}" = "xyes" || test "x${ac_cv_header_machine_soundcard_h}" = "xyes"; then - have_oss=yes - fi + if test "$enable_oss4" = "yes" && test "$have_oss" = "yes" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OSS4" >&5 +$as_echo_n "checking for OSS4... " >&6; } - if test "x${have_oss}" = "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -lossaudio" >&5 -$as_echo_n "checking whether we need -lossaudio... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - - #include - #ifdef HAVE_SYS_SOUNDCARD_H - #include - #else - #include - #endif - -int -main () -{ - - int fd, value; - ioctl(fd, SOUND_MIXER_READ_VOLUME, &value); - - ; - return 0; -} +#ifdef HAVE_SYS_SOUNDCARD_H + #include + #else + #include + #endif + #if OSS_VERSION >= 0x40000 || SOUND_VERSION >= 0x40000 + yes + #endif _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then : + have_oss4="yes" else + have_oss4="no" +fi +rm -f conftest* - OSS_LIBS="-lossaudio" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_oss4" >&5 +$as_echo "$have_oss4" >&6; } + fi + + CPPFLAGS="$OLD_CPPFLAGS" fi -if test "x$have_oss" = "xyes"; then -$as_echo "#define HAVE_OSS 1" >>confdefs.h -else - have_oss=no +if test "$enable_oss" = "yes" && test "$have_oss" = "no" ; then + enable_oss="no" fi -if test "x$have_oss" = "xyes"; then - OUTPUT_PLUGINS="$OUTPUT_PLUGINS OSS" +if test "$enable_oss" = "yes"; then + OUTPUT_PLUGINS="$OUTPUT_PLUGINS OSS" fi +if test "$enable_oss4" = "yes" && test "$have_oss4" = "no" ; then + enable_oss4="no" +fi +if test "$enable_oss4" = "yes"; then + OUTPUT_PLUGINS="$OUTPUT_PLUGINS oss4" +fi - -# Check whether --enable-oss4 was given. -if test "${enable_oss4+set}" = set; then : - enableval=$enable_oss4; enable_oss4=$enableval +# Check whether --enable-alsa was given. +if test "${enable_alsa+set}" = set; then : + enableval=$enable_alsa; enable_alsa=$enableval else - enable_oss4=no + enable_alsa=yes fi -have_oss4=no -if test "x$enable_oss4" = "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OSS4 include dir" >&5 -$as_echo_n "checking for OSS4 include dir... " >&6; } - OSS4_CFLAGS="" - if test -f "/etc/oss.conf" ; then - for i in `cat /etc/oss.conf`; do - t=`echo $i | sed -e 's/OSSLIBDIR=//'` - if test "x$i" != "x$t" ; then - if test -f "$t/include/sys/soundcard.h" -o -f "$i/include/soundcard.h" ; then - OSS4_CFLAGS="-I$t/include" - fi - fi - done - fi - if test -n "$OSS4_CFLAGS" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OSS4_CFLAGS" >&5 -$as_echo "$OSS4_CFLAGS" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 -$as_echo "not found" >&6; } - fi - CFLAGS_save=$CFLAGS - CFLAGS="$CFLAGS $OSS4_CFLAGS" - for ac_header in soundcard.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "soundcard.h" "ac_cv_header_soundcard_h" "$ac_includes_default" -if test "x$ac_cv_header_soundcard_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SOUNDCARD_H 1 -_ACEOF +if test "x$enable_alsa" = "xyes"; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ALSA" >&5 +$as_echo_n "checking for ALSA... " >&6; } +if test -n "$ALSA_CFLAGS"; then + pkg_cv_ALSA_CFLAGS="$ALSA_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"alsa >= 1.0.16\""; } >&5 + ($PKG_CONFIG --exists --print-errors "alsa >= 1.0.16") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_ALSA_CFLAGS=`$PKG_CONFIG --cflags "alsa >= 1.0.16" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$ALSA_LIBS"; then + pkg_cv_ALSA_LIBS="$ALSA_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"alsa >= 1.0.16\""; } >&5 + ($PKG_CONFIG --exists --print-errors "alsa >= 1.0.16") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_ALSA_LIBS=`$PKG_CONFIG --libs "alsa >= 1.0.16" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried fi -done - for ac_header in sys/soundcard.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/soundcard.h" "ac_cv_header_sys_soundcard_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_soundcard_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_SOUNDCARD_H 1 -_ACEOF +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no fi + if test $_pkg_short_errors_supported = yes; then + ALSA_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "alsa >= 1.0.16" 2>&1` + else + ALSA_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "alsa >= 1.0.16" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$ALSA_PKG_ERRORS" >&5 -done + have_alsa=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_alsa=no +else + ALSA_CFLAGS=$pkg_cv_ALSA_CFLAGS + ALSA_LIBS=$pkg_cv_ALSA_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_alsa=yes +fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** ALSA output plugin disabled per user request ***" >&5 +$as_echo "*** ALSA output plugin disabled per user request ***" >&6; } + have_alsa=no +fi - for ac_header in machine/soundcard.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "machine/soundcard.h" "ac_cv_header_machine_soundcard_h" "$ac_includes_default" -if test "x$ac_cv_header_machine_soundcard_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MACHINE_SOUNDCARD_H 1 -_ACEOF +if test "x$have_alsa" = "xyes"; then + OUTPUT_PLUGINS="$OUTPUT_PLUGINS alsa" +fi + +# Check whether --enable-sdlout was given. +if test "${enable_sdlout+set}" = set; then : + enableval=$enable_sdlout; enable_sdlout=$enableval +else + enable_sdlout=yes fi -done - CFLAGS=$CFLAGS_save +if test $enable_sdlout = yes ; then - if test "x${ac_cv_header_soundcard_h}" = "xyes" || test "x${ac_cv_header_sys_soundcard_h}" = "xyes" || test "x${ac_cv_header_machine_soundcard_h}" = "xyes"; then - have_oss4=yes - fi +# Check whether --with-sdl-prefix was given. +if test "${with_sdl_prefix+set}" = set; then : + withval=$with_sdl_prefix; sdl_prefix="$withval" +else + sdl_prefix="" +fi - if test "x${have_oss4}" = "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -lossaudio" >&5 -$as_echo_n "checking whether we need -lossaudio... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - #include - #ifdef HAVE_SYS_SOUNDCARD_H - #include - #else - #include - #endif +# Check whether --with-sdl-exec-prefix was given. +if test "${with_sdl_exec_prefix+set}" = set; then : + withval=$with_sdl_exec_prefix; sdl_exec_prefix="$withval" +else + sdl_exec_prefix="" +fi + +# Check whether --enable-sdltest was given. +if test "${enable_sdltest+set}" = set; then : + enableval=$enable_sdltest; +else + enable_sdltest=yes +fi -int -main () -{ - int fd, value; - ioctl(fd, SOUND_MIXER_READ_VOLUME, &value); + if test x$sdl_exec_prefix != x ; then + sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix" + if test x${SDL_CONFIG+set} != xset ; then + SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config + fi + fi + if test x$sdl_prefix != x ; then + sdl_config_args="$sdl_config_args --prefix=$sdl_prefix" + if test x${SDL_CONFIG+set} != xset ; then + SDL_CONFIG=$sdl_prefix/bin/sdl-config + fi + fi - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + as_save_PATH="$PATH" + if test "x$prefix" != xNONE; then + PATH="$prefix/bin:$prefix/usr/bin:$PATH" + fi + # Extract the first word of "sdl-config", so it can be a program name with args. +set dummy sdl-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_SDL_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 else + case $SDL_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_SDL_CONFIG="$SDL_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_SDL_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS - OSS_LIBS="-lossaudio" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - + test -z "$ac_cv_path_SDL_CONFIG" && ac_cv_path_SDL_CONFIG="no" + ;; +esac fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - fi +SDL_CONFIG=$ac_cv_path_SDL_CONFIG +if test -n "$SDL_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SDL_CONFIG" >&5 +$as_echo "$SDL_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -if test "x$have_oss4" = "xyes"; then -$as_echo "#define HAVE_OSS4 1" >>confdefs.h + PATH="$as_save_PATH" + min_sdl_version=1.2.5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDL - version >= $min_sdl_version" >&5 +$as_echo_n "checking for SDL - version >= $min_sdl_version... " >&6; } + no_sdl="" + if test "$SDL_CONFIG" = "no" ; then + no_sdl=yes + else + SDL_CFLAGS=`$SDL_CONFIG $sdl_config_args --cflags` + SDL_LIBS=`$SDL_CONFIG $sdl_config_args --libs` + sdl_major_version=`$SDL_CONFIG $sdl_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + sdl_minor_version=`$SDL_CONFIG $sdl_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + if test "x$enable_sdltest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_CXXFLAGS="$CXXFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $SDL_CFLAGS" + CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" + LIBS="$LIBS $SDL_LIBS" + rm -f conf.sdltest + if test "$cross_compiling" = yes; then : + echo $ac_n "cross compiling; assumed OK... $ac_c" else - have_oss4=no -fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -if test "x$have_oss4" = "xyes"; then - OUTPUT_PLUGINS="$OUTPUT_PLUGINS oss4" -fi +#include +#include +#include +#include "SDL.h" +char* +my_strdup (char *str) +{ + char *new_str; + if (str) + { + new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); + strcpy (new_str, str); + } + else + new_str = NULL; + return new_str; +} -# Check whether --enable-alsa was given. -if test "${enable_alsa+set}" = set; then : - enableval=$enable_alsa; enable_alsa=$enableval -else - enable_alsa=yes +int main (int argc, char *argv[]) +{ + int major, minor, micro; + char *tmp_version; -fi + /* This hangs on some systems (?) + system ("touch conf.sdltest"); + */ + { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = my_strdup("$min_sdl_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_sdl_version"); + exit(1); + } + + if (($sdl_major_version > major) || + (($sdl_major_version == major) && ($sdl_minor_version > minor)) || + (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); + printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); + printf("*** best to upgrade to the required version.\n"); + printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); + printf("*** to point to the correct copy of sdl-config, and remove the file\n"); + printf("*** config.cache before re-running configure\n"); + return 1; + } +} -if test "x$enable_alsa" = "xyes"; then - pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ALSA" >&5 -$as_echo_n "checking for ALSA... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"alsa >= 1.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "alsa >= 1.0") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "x${ALSA_CFLAGS}" != "x"; then - pkg_cv_ALSA_CFLAGS="${ALSA_CFLAGS}" - else - pkg_cv_ALSA_CFLAGS=`$PKG_CONFIG --cflags "alsa >= 1.0" 2>/dev/null` - fi - if test "x${ALSA_LIBS}" != "x"; then - pkg_cv_ALSA_LIBS="${ALSA_LIBS}" - else - pkg_cv_ALSA_LIBS=`$PKG_CONFIG --libs "alsa >= 1.0" 2>/dev/null` - fi - else - pkg_failed="yes" - fi +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + else - pkg_failed="untried" + no_sdl=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - ALSA_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "alsa >= 1.0" 2>&1` - else - ALSA_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "alsa >= 1.0" 2>&1` - fi - echo "$ALSA_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_alsa=no -elif test "x$pkg_failed" = "xuntried"; then - have_alsa=no -else - ALSA_CFLAGS="$pkg_cv_ALSA_CFLAGS" - ALSA_LIBS="$pkg_cv_ALSA_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + CFLAGS="$ac_save_CFLAGS" + CXXFLAGS="$ac_save_CXXFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_sdl" = x ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - have_alsa=yes -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for snd_device_name_hint in -lasound" >&5 -$as_echo_n "checking for snd_device_name_hint in -lasound... " >&6; } -if ${ac_cv_lib_asound_snd_device_name_hint+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lasound $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext + enable_sdlout=yes + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + if test "$SDL_CONFIG" = "no" ; then + echo "*** The sdl-config script installed by SDL could not be found" + echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the SDL_CONFIG environment variable to the" + echo "*** full path to sdl-config." + else + if test -f conf.sdltest ; then + : + else + echo "*** Could not run SDL test program, checking why..." + CFLAGS="$CFLAGS $SDL_CFLAGS" + CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" + LIBS="$LIBS $SDL_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char snd_device_name_hint (); +#include +#include "SDL.h" + +int main(int argc, char *argv[]) +{ return 0; } +#undef main +#define main K_and_R_C_main + int main () { -return snd_device_name_hint (); + return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_asound_snd_device_name_hint=yes + echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding SDL or finding the wrong" + echo "*** version of SDL. If it is not finding SDL, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else - ac_cv_lib_asound_snd_device_name_hint=no + echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means SDL was incorrectly installed" + echo "*** or that you have moved SDL since it was installed. In the latter case, you" + echo "*** may want to edit the sdl-config script: $SDL_CONFIG" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_asound_snd_device_name_hint" >&5 -$as_echo "$ac_cv_lib_asound_snd_device_name_hint" >&6; } -if test "x$ac_cv_lib_asound_snd_device_name_hint" = xyes; then : + CFLAGS="$ac_save_CFLAGS" + CXXFLAGS="$ac_save_CXXFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + SDL_CFLAGS="" + SDL_LIBS="" + enable_sdlout=no + fi -$as_echo "#define HAVE_SND_DEVICE_NAME_HINT 1" >>confdefs.h -fi + rm -f conf.sdltest -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** ALSA output plugin disabled per user request ***" >&5 -$as_echo "*** ALSA output plugin disabled per user request ***" >&6; } - have_alsa=no fi -if test "x$have_alsa" = "xyes"; then - OUTPUT_PLUGINS="$OUTPUT_PLUGINS alsa" +if test $enable_sdlout = yes ; then + OUTPUT_PLUGINS="$OUTPUT_PLUGINS sdlout" fi @@ -11444,48 +13127,73 @@ if test "x$alsalib_midi" = "xyes"; then enable_amidiplug=yes else - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FLUIDSYNTH" >&5 $as_echo_n "checking for FLUIDSYNTH... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fluidsynth >= 1.0.6\""; } >&5 + +if test -n "$FLUIDSYNTH_CFLAGS"; then + pkg_cv_FLUIDSYNTH_CFLAGS="$FLUIDSYNTH_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fluidsynth >= 1.0.6\""; } >&5 ($PKG_CONFIG --exists --print-errors "fluidsynth >= 1.0.6") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${FLUIDSYNTH_CFLAGS}" != "x"; then - pkg_cv_FLUIDSYNTH_CFLAGS="${FLUIDSYNTH_CFLAGS}" - else - pkg_cv_FLUIDSYNTH_CFLAGS=`$PKG_CONFIG --cflags "fluidsynth >= 1.0.6" 2>/dev/null` - fi - if test "x${FLUIDSYNTH_LIBS}" != "x"; then - pkg_cv_FLUIDSYNTH_LIBS="${FLUIDSYNTH_LIBS}" - else - pkg_cv_FLUIDSYNTH_LIBS=`$PKG_CONFIG --libs "fluidsynth >= 1.0.6" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_FLUIDSYNTH_CFLAGS=`$PKG_CONFIG --cflags "fluidsynth >= 1.0.6" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$FLUIDSYNTH_LIBS"; then + pkg_cv_FLUIDSYNTH_LIBS="$FLUIDSYNTH_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fluidsynth >= 1.0.6\""; } >&5 + ($PKG_CONFIG --exists --print-errors "fluidsynth >= 1.0.6") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_FLUIDSYNTH_LIBS=`$PKG_CONFIG --libs "fluidsynth >= 1.0.6" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes fi + else + pkg_failed=untried +fi + -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - FLUIDSYNTH_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "fluidsynth >= 1.0.6" 2>&1` +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + FLUIDSYNTH_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "fluidsynth >= 1.0.6" 2>&1` else - FLUIDSYNTH_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "fluidsynth >= 1.0.6" 2>&1` + FLUIDSYNTH_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "fluidsynth >= 1.0.6" 2>&1` fi - echo "$FLUIDSYNTH_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$FLUIDSYNTH_PKG_ERRORS" >&5 + + fluidsynth_available=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - fluidsynth_available=no -elif test "x$pkg_failed" = "xuntried"; then fluidsynth_available=no else - FLUIDSYNTH_CFLAGS="$pkg_cv_FLUIDSYNTH_CFLAGS" - FLUIDSYNTH_LIBS="$pkg_cv_FLUIDSYNTH_LIBS" + FLUIDSYNTH_CFLAGS=$pkg_cv_FLUIDSYNTH_CFLAGS + FLUIDSYNTH_LIBS=$pkg_cv_FLUIDSYNTH_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fluidsynth_available=yes @@ -11494,48 +13202,73 @@ enable_amidiplug=yes else enable_amidiplug=no - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Neither ALSA or FluidSynth software synth (>= 1.0.6) have been found, so amidi-plug won't be compiled unless you explicitly request it with --enable-amidiplug ***" >&5 -$as_echo "$as_me: WARNING: *** Neither ALSA or FluidSynth software synth (>= 1.0.6) have been found, so amidi-plug won't be compiled unless you explicitly request it with --enable-amidiplug ***" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"*** Neither ALSA or FluidSynth software synth (>= 1.0.6) have been found, so amidi-plug won't be compiled unless you explicitly request it with --enable-amidiplug ***\"" >&5 +$as_echo "$as_me: WARNING: \"*** Neither ALSA or FluidSynth software synth (>= 1.0.6) have been found, so amidi-plug won't be compiled unless you explicitly request it with --enable-amidiplug ***\"" >&2;} fi fi fi if test "x$enable_amidiplug" = "xyes"; then INPUT_PLUGINS="$INPUT_PLUGINS amidi-plug" - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB" >&5 $as_echo_n "checking for GLIB... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.6.0\""; } >&5 + +if test -n "$GLIB_CFLAGS"; then + pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.6.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.6.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${GLIB_CFLAGS}" != "x"; then - pkg_cv_GLIB_CFLAGS="${GLIB_CFLAGS}" - else - pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.6.0" 2>/dev/null` - fi - if test "x${GLIB_LIBS}" != "x"; then - pkg_cv_GLIB_LIBS="${GLIB_LIBS}" - else - pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.6.0" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.6.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GLIB_LIBS"; then + pkg_cv_GLIB_LIBS="$GLIB_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.6.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.6.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.6.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes fi + else + pkg_failed=untried +fi + -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "glib-2.0 >= 2.6.0" 2>&1` +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.6.0" 2>&1` else - GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glib-2.0 >= 2.6.0" 2>&1` + GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.6.0" 2>&1` fi - echo "$GLIB_PKG_ERRORS" >&5 + # Put the nasty error message in config.log where it belongs + echo "$GLIB_PKG_ERRORS" >&5 + as_fn_error $? "Package requirements (glib-2.0 >= 2.6.0) were not met: $GLIB_PKG_ERRORS @@ -11545,9 +13278,10 @@ Alternatively, you may set the environment variables GLIB_CFLAGS and GLIB_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 -elif test "x$pkg_failed" = "xuntried"; then +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it @@ -11561,46 +13295,71 @@ To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else - GLIB_CFLAGS="$pkg_cv_GLIB_CFLAGS" - GLIB_LIBS="$pkg_cv_GLIB_LIBS" + GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS + GLIB_LIBS=$pkg_cv_GLIB_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GMODULE" >&5 $as_echo_n "checking for GMODULE... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gmodule-2.0 >= 2.6.0\""; } >&5 + +if test -n "$GMODULE_CFLAGS"; then + pkg_cv_GMODULE_CFLAGS="$GMODULE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gmodule-2.0 >= 2.6.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gmodule-2.0 >= 2.6.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${GMODULE_CFLAGS}" != "x"; then - pkg_cv_GMODULE_CFLAGS="${GMODULE_CFLAGS}" - else - pkg_cv_GMODULE_CFLAGS=`$PKG_CONFIG --cflags "gmodule-2.0 >= 2.6.0" 2>/dev/null` - fi - if test "x${GMODULE_LIBS}" != "x"; then - pkg_cv_GMODULE_LIBS="${GMODULE_LIBS}" - else - pkg_cv_GMODULE_LIBS=`$PKG_CONFIG --libs "gmodule-2.0 >= 2.6.0" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_GMODULE_CFLAGS=`$PKG_CONFIG --cflags "gmodule-2.0 >= 2.6.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GMODULE_LIBS"; then + pkg_cv_GMODULE_LIBS="$GMODULE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gmodule-2.0 >= 2.6.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gmodule-2.0 >= 2.6.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GMODULE_LIBS=`$PKG_CONFIG --libs "gmodule-2.0 >= 2.6.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - GMODULE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gmodule-2.0 >= 2.6.0" 2>&1` + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GMODULE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gmodule-2.0 >= 2.6.0" 2>&1` else - GMODULE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gmodule-2.0 >= 2.6.0" 2>&1` + GMODULE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gmodule-2.0 >= 2.6.0" 2>&1` fi - echo "$GMODULE_PKG_ERRORS" >&5 + # Put the nasty error message in config.log where it belongs + echo "$GMODULE_PKG_ERRORS" >&5 + as_fn_error $? "Package requirements (gmodule-2.0 >= 2.6.0) were not met: $GMODULE_PKG_ERRORS @@ -11610,9 +13369,10 @@ Alternatively, you may set the environment variables GMODULE_CFLAGS and GMODULE_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 -elif test "x$pkg_failed" = "xuntried"; then +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it @@ -11626,11 +13386,11 @@ To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else - GMODULE_CFLAGS="$pkg_cv_GMODULE_CFLAGS" - GMODULE_LIBS="$pkg_cv_GMODULE_LIBS" + GMODULE_CFLAGS=$pkg_cv_GMODULE_CFLAGS + GMODULE_LIBS=$pkg_cv_GMODULE_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi AMIDIPLUG_BACKEND_DIR=amidi-plug @@ -11649,48 +13409,73 @@ fi if test "x$enable_amidiplug_fluidsynth" = "xauto" -o "x$enable_amidiplug_fluidsynth" = "xyes"; then if test "x$fluidsynth_available" != "xyes" -a "x$fluidsynth_available" != "xno"; then - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FLUIDSYNTH" >&5 $as_echo_n "checking for FLUIDSYNTH... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fluidsynth >= 1.0.6\""; } >&5 + +if test -n "$FLUIDSYNTH_CFLAGS"; then + pkg_cv_FLUIDSYNTH_CFLAGS="$FLUIDSYNTH_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fluidsynth >= 1.0.6\""; } >&5 + ($PKG_CONFIG --exists --print-errors "fluidsynth >= 1.0.6") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_FLUIDSYNTH_CFLAGS=`$PKG_CONFIG --cflags "fluidsynth >= 1.0.6" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$FLUIDSYNTH_LIBS"; then + pkg_cv_FLUIDSYNTH_LIBS="$FLUIDSYNTH_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fluidsynth >= 1.0.6\""; } >&5 ($PKG_CONFIG --exists --print-errors "fluidsynth >= 1.0.6") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${FLUIDSYNTH_CFLAGS}" != "x"; then - pkg_cv_FLUIDSYNTH_CFLAGS="${FLUIDSYNTH_CFLAGS}" - else - pkg_cv_FLUIDSYNTH_CFLAGS=`$PKG_CONFIG --cflags "fluidsynth >= 1.0.6" 2>/dev/null` - fi - if test "x${FLUIDSYNTH_LIBS}" != "x"; then - pkg_cv_FLUIDSYNTH_LIBS="${FLUIDSYNTH_LIBS}" - else - pkg_cv_FLUIDSYNTH_LIBS=`$PKG_CONFIG --libs "fluidsynth >= 1.0.6" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_FLUIDSYNTH_LIBS=`$PKG_CONFIG --libs "fluidsynth >= 1.0.6" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes fi + else + pkg_failed=untried +fi + -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - FLUIDSYNTH_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "fluidsynth >= 1.0.6" 2>&1` +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + FLUIDSYNTH_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "fluidsynth >= 1.0.6" 2>&1` else - FLUIDSYNTH_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "fluidsynth >= 1.0.6" 2>&1` + FLUIDSYNTH_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "fluidsynth >= 1.0.6" 2>&1` fi - echo "$FLUIDSYNTH_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$FLUIDSYNTH_PKG_ERRORS" >&5 + + fluidsynth_available=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - fluidsynth_available=no -elif test "x$pkg_failed" = "xuntried"; then fluidsynth_available=no else - FLUIDSYNTH_CFLAGS="$pkg_cv_FLUIDSYNTH_CFLAGS" - FLUIDSYNTH_LIBS="$pkg_cv_FLUIDSYNTH_LIBS" + FLUIDSYNTH_CFLAGS=$pkg_cv_FLUIDSYNTH_CFLAGS + FLUIDSYNTH_LIBS=$pkg_cv_FLUIDSYNTH_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fluidsynth_available=yes @@ -11712,167 +13497,6 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FreeBSD newpcm driver" >&5 -$as_echo_n "checking for FreeBSD newpcm driver... " >&6; } -if ${beep_cv_newpcm_driver+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -r "/dev/sndstat"; then - grep 'newpcm' /dev/sndstat 2>/dev/null 1>/dev/null - if test "x$?" = "x0"; then - beep_cv_newpcm_driver="yes" - else - beep_cv_newpcm_driver="no" - fi - else - beep_cv_newpcm_driver="no" - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $beep_cv_newpcm_driver" >&5 -$as_echo "$beep_cv_newpcm_driver" >&6; } - -if test "x$beep_cv_newpcm_driver" = "xyes"; then - -$as_echo "#define HAVE_NEWPCM 1" >>confdefs.h - -fi - - -for ac_header in linux/joystick.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "linux/joystick.h" "ac_cv_header_linux_joystick_h" "$ac_includes_default" -if test "x$ac_cv_header_linux_joystick_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LINUX_JOYSTICK_H 1 -_ACEOF - -fi - -done - -for ac_header in unistd.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" -if test "x$ac_cv_header_unistd_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_UNISTD_H 1 -_ACEOF - -fi - -done - -for ac_header in fcntl.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" -if test "x$ac_cv_header_fcntl_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_FCNTL_H 1 -_ACEOF - -fi - -done - -for ac_header in sys/ioctl.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_ioctl_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_IOCTL_H 1 -_ACEOF - -fi - -done - -for ac_header in fnmatch.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "fnmatch.h" "ac_cv_header_fnmatch_h" "$ac_includes_default" -if test "x$ac_cv_header_fnmatch_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_FNMATCH_H 1 -_ACEOF - -fi - -done - -for ac_header in limits.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" -if test "x$ac_cv_header_limits_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIMITS_H 1 -_ACEOF - -fi - -done - -for ac_header in wchar.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default" -if test "x$ac_cv_header_wchar_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_WCHAR_H 1 -_ACEOF - -fi - -done - -for ac_header in fts.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "fts.h" "ac_cv_header_fts_h" "$ac_includes_default" -if test "x$ac_cv_header_fts_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_FTS_H 1 -_ACEOF - -fi - -done - - -ac_fn_c_check_decl "$LINENO" "lrintf" "ac_cv_have_decl_lrintf" " -#define _ISOC9X_SOURCE -#include - -" -if test "x$ac_cv_have_decl_lrintf" = xyes; then : - $as_echo "#define HAVE_LRINTF 1" >>confdefs.h - -else - for ac_func in lrintf -do : - ac_fn_c_check_func "$LINENO" "lrintf" "ac_cv_func_lrintf" -if test "x$ac_cv_func_lrintf" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LRINTF 1 -_ACEOF - -fi -done - -fi - -for ac_func in mkdtemp getmntinfo statvfs strtoul -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - - # Check whether --enable-cdaudio was given. if test "${enable_cdaudio+set}" = set; then : enableval=$enable_cdaudio; enable_cdaudio_ng=$enableval @@ -11883,109 +13507,159 @@ if test "$enable_cdaudio_ng" = "yes"; then - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CDIO" >&5 $as_echo_n "checking for CDIO... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcdio >= 0.70\""; } >&5 + +if test -n "$CDIO_CFLAGS"; then + pkg_cv_CDIO_CFLAGS="$CDIO_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcdio >= 0.70\""; } >&5 ($PKG_CONFIG --exists --print-errors "libcdio >= 0.70") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${CDIO_CFLAGS}" != "x"; then - pkg_cv_CDIO_CFLAGS="${CDIO_CFLAGS}" - else - pkg_cv_CDIO_CFLAGS=`$PKG_CONFIG --cflags "libcdio >= 0.70" 2>/dev/null` - fi - if test "x${CDIO_LIBS}" != "x"; then - pkg_cv_CDIO_LIBS="${CDIO_LIBS}" - else - pkg_cv_CDIO_LIBS=`$PKG_CONFIG --libs "libcdio >= 0.70" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_CDIO_CFLAGS=`$PKG_CONFIG --cflags "libcdio >= 0.70" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$CDIO_LIBS"; then + pkg_cv_CDIO_LIBS="$CDIO_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcdio >= 0.70\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libcdio >= 0.70") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CDIO_LIBS=`$PKG_CONFIG --libs "libcdio >= 0.70" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes fi + else + pkg_failed=untried +fi + -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - CDIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libcdio >= 0.70" 2>&1` +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + CDIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libcdio >= 0.70" 2>&1` else - CDIO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libcdio >= 0.70" 2>&1` + CDIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libcdio >= 0.70" 2>&1` fi - echo "$CDIO_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find libcdio 0.70 or newer, cdaudio-ng will not be built ***" >&5 + # Put the nasty error message in config.log where it belongs + echo "$CDIO_PKG_ERRORS" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find libcdio 0.70 or newer, cdaudio-ng will not be built ***" >&5 $as_echo "$as_me: WARNING: *** Cannot find libcdio 0.70 or newer, cdaudio-ng will not be built ***" >&2;} enable_cdaudio_ng=no -elif test "x$pkg_failed" = "xuntried"; then +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find libcdio 0.70 or newer, cdaudio-ng will not be built ***" >&5 $as_echo "$as_me: WARNING: *** Cannot find libcdio 0.70 or newer, cdaudio-ng will not be built ***" >&2;} enable_cdaudio_ng=no else - CDIO_CFLAGS="$pkg_cv_CDIO_CFLAGS" - CDIO_LIBS="$pkg_cv_CDIO_LIBS" + CDIO_CFLAGS=$pkg_cv_CDIO_CFLAGS + CDIO_LIBS=$pkg_cv_CDIO_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi fi if test "$enable_cdaudio_ng" = "yes"; then - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CDIO" >&5 $as_echo_n "checking for CDIO... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcdio_cdda >= 0.70\""; } >&5 + +if test -n "$CDIO_CFLAGS"; then + pkg_cv_CDIO_CFLAGS="$CDIO_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcdio_cdda >= 0.70\""; } >&5 ($PKG_CONFIG --exists --print-errors "libcdio_cdda >= 0.70") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${CDIO_CFLAGS}" != "x"; then - pkg_cv_CDIO_CFLAGS="${CDIO_CFLAGS}" - else - pkg_cv_CDIO_CFLAGS=`$PKG_CONFIG --cflags "libcdio_cdda >= 0.70" 2>/dev/null` - fi - if test "x${CDIO_LIBS}" != "x"; then - pkg_cv_CDIO_LIBS="${CDIO_LIBS}" - else - pkg_cv_CDIO_LIBS=`$PKG_CONFIG --libs "libcdio_cdda >= 0.70" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_CDIO_CFLAGS=`$PKG_CONFIG --cflags "libcdio_cdda >= 0.70" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$CDIO_LIBS"; then + pkg_cv_CDIO_LIBS="$CDIO_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcdio_cdda >= 0.70\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libcdio_cdda >= 0.70") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CDIO_LIBS=`$PKG_CONFIG --libs "libcdio_cdda >= 0.70" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - CDIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libcdio_cdda >= 0.70" 2>&1` + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + CDIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libcdio_cdda >= 0.70" 2>&1` else - CDIO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libcdio_cdda >= 0.70" 2>&1` + CDIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libcdio_cdda >= 0.70" 2>&1` fi - echo "$CDIO_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find libcdio_cdda 0.70 or newer, cdaudio-ng will not be built ***" >&5 + # Put the nasty error message in config.log where it belongs + echo "$CDIO_PKG_ERRORS" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find libcdio_cdda 0.70 or newer, cdaudio-ng will not be built ***" >&5 $as_echo "$as_me: WARNING: *** Cannot find libcdio_cdda 0.70 or newer, cdaudio-ng will not be built ***" >&2;} enable_cdaudio_ng=no -elif test "x$pkg_failed" = "xuntried"; then +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find libcdio_cdda 0.70 or newer, cdaudio-ng will not be built ***" >&5 $as_echo "$as_me: WARNING: *** Cannot find libcdio_cdda 0.70 or newer, cdaudio-ng will not be built ***" >&2;} enable_cdaudio_ng=no else - CDIO_CFLAGS="$pkg_cv_CDIO_CFLAGS" - CDIO_LIBS="$pkg_cv_CDIO_LIBS" + CDIO_CFLAGS=$pkg_cv_CDIO_CFLAGS + CDIO_LIBS=$pkg_cv_CDIO_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } CDIO_LIBS=`pkg-config --libs libcdio_cdda` @@ -11996,54 +13670,79 @@ fi if test "$enable_cdaudio_ng" = "yes"; then - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CDDB" >&5 $as_echo_n "checking for CDDB... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcddb >= 1.2.1\""; } >&5 + +if test -n "$CDDB_CFLAGS"; then + pkg_cv_CDDB_CFLAGS="$CDDB_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcddb >= 1.2.1\""; } >&5 ($PKG_CONFIG --exists --print-errors "libcddb >= 1.2.1") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${CDDB_CFLAGS}" != "x"; then - pkg_cv_CDDB_CFLAGS="${CDDB_CFLAGS}" - else - pkg_cv_CDDB_CFLAGS=`$PKG_CONFIG --cflags "libcddb >= 1.2.1" 2>/dev/null` - fi - if test "x${CDDB_LIBS}" != "x"; then - pkg_cv_CDDB_LIBS="${CDDB_LIBS}" - else - pkg_cv_CDDB_LIBS=`$PKG_CONFIG --libs "libcddb >= 1.2.1" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_CDDB_CFLAGS=`$PKG_CONFIG --cflags "libcddb >= 1.2.1" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$CDDB_LIBS"; then + pkg_cv_CDDB_LIBS="$CDDB_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcddb >= 1.2.1\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libcddb >= 1.2.1") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CDDB_LIBS=`$PKG_CONFIG --libs "libcddb >= 1.2.1" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - CDDB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libcddb >= 1.2.1" 2>&1` + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + CDDB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libcddb >= 1.2.1" 2>&1` else - CDDB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libcddb >= 1.2.1" 2>&1` + CDDB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libcddb >= 1.2.1" 2>&1` fi - echo "$CDDB_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find libcddb 1.2.1 or newer, cdaudio-ng will not be built ***" >&5 + # Put the nasty error message in config.log where it belongs + echo "$CDDB_PKG_ERRORS" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find libcddb 1.2.1 or newer, cdaudio-ng will not be built ***" >&5 $as_echo "$as_me: WARNING: *** Cannot find libcddb 1.2.1 or newer, cdaudio-ng will not be built ***" >&2;} enable_cdaudio_ng=no -elif test "x$pkg_failed" = "xuntried"; then +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Cannot find libcddb 1.2.1 or newer, cdaudio-ng will not be built ***" >&5 $as_echo "$as_me: WARNING: *** Cannot find libcddb 1.2.1 or newer, cdaudio-ng will not be built ***" >&2;} enable_cdaudio_ng=no else - CDDB_CFLAGS="$pkg_cv_CDDB_CFLAGS" - CDDB_LIBS="$pkg_cv_CDDB_LIBS" + CDDB_CFLAGS=$pkg_cv_CDDB_CFLAGS + CDDB_LIBS=$pkg_cv_CDDB_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } INPUT_PLUGINS="$INPUT_PLUGINS cdaudio-ng" @@ -12055,102 +13754,6 @@ fi fi -# Check whether --enable-streambrowser was given. -if test "${enable_streambrowser+set}" = set; then : - enableval=$enable_streambrowser; enable_streambrowser=$enableval -else - enable_streambrowser=yes - -fi - - -if test "$enable_streambrowser" = "yes"; then - GENERAL_PLUGINS="$GENERAL_PLUGINS streambrowser" -fi - - if test "${ac_cv_header_linux_cdrom_h}" = "yes" || test "${ac_cv_header_sys_cdio_h}" = "yes"; then - HAVE_CDROM_TRUE= - HAVE_CDROM_FALSE='#' -else - HAVE_CDROM_TRUE='#' - HAVE_CDROM_FALSE= -fi - - if test "${ac_cv_header_linux_joystick_h}" = "yes"; then - HAVE_LINUX_JOYSTICK_TRUE= - HAVE_LINUX_JOYSTICK_FALSE='#' -else - HAVE_LINUX_JOYSTICK_TRUE='#' - HAVE_LINUX_JOYSTICK_FALSE= -fi - - -CPPFLAGS="$CPPFLAGS $AUDACIOUS_CFLAGS $DBUS_CFLAGS" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if __ELF__ is defined" >&5 -$as_echo_n "checking if __ELF__ is defined... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __ELF__ - yes - #endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : - is_elf=yes -else - is_elf=no - -fi -rm -f conftest* - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${is_elf}" >&5 -$as_echo "${is_elf}" >&6; } - - -have_solaris=no -have_sun=no -ARCH_DEFINES="" -case "$host" in - *-*-openbsd* | *-*-netbsd* | *-*-mirbsd*) - have_sun=yes - if test "${is_elf}" = "no" - then - -$as_echo "#define SYMBOL_PREFIX \"_\"" >>confdefs.h - - fi - OUTPUT_PLUGINS="$OUTPUT_PLUGINS sun" - ;; - *-*-darwin*) - -$as_echo "#define SYMBOL_PREFIX \"_\"" >>confdefs.h - - ;; - *-hpux-*) - ARCH_DEFINES="-DHPUX" - ;; - *-*-solaris* | *-*-sunos*) - have_solaris=yes - ;; -esac - -arch_type=other -x86_asm=no -case "$host" in - i386-*-* | i486-*-* | i586-*-* | i686-*-* | i86pc-*-*) - arch_type=ix86 - case "$host" in - *-*-netbsd* | *-*openbsd* | *-*-mirbsd*) - ;; - *) - ARCH_DEFINES="-DI386_ASSEM" - x86_asm=yes - ;; - esac - ;; -esac # Check whether --enable-scrobbler was given. @@ -12162,48 +13765,73 @@ if test "x$have_scrobbler" = "xyes"; then - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CURL" >&5 $as_echo_n "checking for CURL... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcurl >= 7.9.7\""; } >&5 + +if test -n "$CURL_CFLAGS"; then + pkg_cv_CURL_CFLAGS="$CURL_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcurl >= 7.9.7\""; } >&5 ($PKG_CONFIG --exists --print-errors "libcurl >= 7.9.7") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${CURL_CFLAGS}" != "x"; then - pkg_cv_CURL_CFLAGS="${CURL_CFLAGS}" - else - pkg_cv_CURL_CFLAGS=`$PKG_CONFIG --cflags "libcurl >= 7.9.7" 2>/dev/null` - fi - if test "x${CURL_LIBS}" != "x"; then - pkg_cv_CURL_LIBS="${CURL_LIBS}" - else - pkg_cv_CURL_LIBS=`$PKG_CONFIG --libs "libcurl >= 7.9.7" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_CURL_CFLAGS=`$PKG_CONFIG --cflags "libcurl >= 7.9.7" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$CURL_LIBS"; then + pkg_cv_CURL_LIBS="$CURL_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcurl >= 7.9.7\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libcurl >= 7.9.7") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CURL_LIBS=`$PKG_CONFIG --libs "libcurl >= 7.9.7" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - CURL_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libcurl >= 7.9.7" 2>&1` + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + CURL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libcurl >= 7.9.7" 2>&1` else - CURL_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libcurl >= 7.9.7" 2>&1` + CURL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libcurl >= 7.9.7" 2>&1` fi - echo "$CURL_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$CURL_PKG_ERRORS" >&5 + + have_scrobbler="no" +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - have_scrobbler="no" -elif test "x$pkg_failed" = "xuntried"; then have_scrobbler="no" else - CURL_CFLAGS="$pkg_cv_CURL_CFLAGS" - CURL_LIBS="$pkg_cv_CURL_LIBS" + CURL_CFLAGS=$pkg_cv_CURL_CFLAGS + CURL_LIBS=$pkg_cv_CURL_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_scrobbler="$have_scrobbler" @@ -12226,48 +13854,73 @@ if test "x$have_neon" = "xyes"; then - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NEON" >&5 $as_echo_n "checking for NEON... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"neon >= 0.26\""; } >&5 + +if test -n "$NEON_CFLAGS"; then + pkg_cv_NEON_CFLAGS="$NEON_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"neon >= 0.26\""; } >&5 ($PKG_CONFIG --exists --print-errors "neon >= 0.26") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${NEON_CFLAGS}" != "x"; then - pkg_cv_NEON_CFLAGS="${NEON_CFLAGS}" - else - pkg_cv_NEON_CFLAGS=`$PKG_CONFIG --cflags "neon >= 0.26" 2>/dev/null` - fi - if test "x${NEON_LIBS}" != "x"; then - pkg_cv_NEON_LIBS="${NEON_LIBS}" - else - pkg_cv_NEON_LIBS=`$PKG_CONFIG --libs "neon >= 0.26" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_NEON_CFLAGS=`$PKG_CONFIG --cflags "neon >= 0.26" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$NEON_LIBS"; then + pkg_cv_NEON_LIBS="$NEON_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"neon >= 0.26\""; } >&5 + ($PKG_CONFIG --exists --print-errors "neon >= 0.26") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_NEON_LIBS=`$PKG_CONFIG --libs "neon >= 0.26" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - NEON_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "neon >= 0.26" 2>&1` + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + NEON_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "neon >= 0.26" 2>&1` else - NEON_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "neon >= 0.26" 2>&1` + NEON_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "neon >= 0.26" 2>&1` fi - echo "$NEON_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$NEON_PKG_ERRORS" >&5 + + have_neon="no" +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - have_neon="no" -elif test "x$pkg_failed" = "xuntried"; then have_neon="no" else - NEON_CFLAGS="$pkg_cv_NEON_CFLAGS" - NEON_LIBS="$pkg_cv_NEON_LIBS" + NEON_CFLAGS=$pkg_cv_NEON_CFLAGS + NEON_LIBS=$pkg_cv_NEON_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } TRANSPORT_PLUGINS="$TRANSPORT_PLUGINS neon" @@ -12321,7 +13974,6 @@ - # Check whether --enable-mms was given. if test "${enable_mms+set}" = set; then : enableval=$enable_mms; have_mms=$enableval @@ -12330,777 +13982,376 @@ fi -if test "x$have_mms" = "xyes"; then - have_mms=yes - pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MMS" >&5 -$as_echo_n "checking for MMS... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmms >= 0.3\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libmms >= 0.3") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "x${MMS_CFLAGS}" != "x"; then - pkg_cv_MMS_CFLAGS="${MMS_CFLAGS}" - else - pkg_cv_MMS_CFLAGS=`$PKG_CONFIG --cflags "libmms >= 0.3" 2>/dev/null` - fi - if test "x${MMS_LIBS}" != "x"; then - pkg_cv_MMS_LIBS="${MMS_LIBS}" - else - pkg_cv_MMS_LIBS=`$PKG_CONFIG --libs "libmms >= 0.3" 2>/dev/null` - fi - else - pkg_failed="yes" - fi -else - pkg_failed="untried" -fi - - -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - MMS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libmms >= 0.3" 2>&1` - else - MMS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libmms >= 0.3" 2>&1` - fi - echo "$MMS_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_mms="no" -elif test "x$pkg_failed" = "xuntried"; then - have_mms="no" -else - MMS_CFLAGS="$pkg_cv_MMS_CFLAGS" - MMS_LIBS="$pkg_cv_MMS_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - TRANSPORT_PLUGINS="$TRANSPORT_PLUGINS mms" -fi -else - have_mms=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** mms plugin disabled by request ***" >&5 -$as_echo "*** mms plugin disabled by request ***" >&6; } -fi - - - -# Check whether --enable-mtp_up was given. -if test "${enable_mtp_up+set}" = set; then : - enableval=$enable_mtp_up; have_mtp_up=$enableval -else - have_mtp_up=yes -fi - - -if test "x$have_mtp_up" = "xyes"; then - have_mtp_up=yes - pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MTP" >&5 -$as_echo_n "checking for MTP... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmtp >= 0.1.3\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libmtp >= 0.1.3") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "x${MTP_CFLAGS}" != "x"; then - pkg_cv_MTP_CFLAGS="${MTP_CFLAGS}" - else - pkg_cv_MTP_CFLAGS=`$PKG_CONFIG --cflags "libmtp >= 0.1.3" 2>/dev/null` - fi - if test "x${MTP_LIBS}" != "x"; then - pkg_cv_MTP_LIBS="${MTP_LIBS}" - else - pkg_cv_MTP_LIBS=`$PKG_CONFIG --libs "libmtp >= 0.1.3" 2>/dev/null` - fi - else - pkg_failed="yes" - fi -else - pkg_failed="untried" -fi - - -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - MTP_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libmtp >= 0.1.3" 2>&1` - else - MTP_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libmtp >= 0.1.3" 2>&1` - fi - echo "$MTP_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_mtp_up="no" -elif test "x$pkg_failed" = "xuntried"; then - have_mtp_up="no" -else - MTP_CFLAGS="$pkg_cv_MTP_CFLAGS" - MTP_LIBS="$pkg_cv_MTP_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - GENERAL_PLUGINS="$GENERAL_PLUGINS mtp_up" -fi - MTP_LIBS=`pkg-config --libs libmtp` - MTP_CFLAGS=`pkg-config --cflags libmtp` - if test "x$PKG_CONFIG" != "x" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmtp >= 0.3.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libmtp >= 0.3.0") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - libmtp_030_pkg=yes -else - libmtp_030_pkg=no -fi - if test x"$libmtp_030_pkg" = "xyes" ; then - -$as_echo "#define HAVE_LIBMTP_030 1" >>confdefs.h - - fi -else - have_mtp_up=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** mtp upload plugin disabled by request ***" >&5 -$as_echo "*** mtp upload plugin disabled by request ***" >&6; } -fi - - - - -# Check whether --enable-bluetooth was given. -if test "${enable_bluetooth+set}" = set; then : - enableval=$enable_bluetooth; have_bluetooth=$enableval -else - have_bluetooth=yes -fi - - -have_bluetooth=no -if test "x$have_bluetooth" = "xyes" -a "x$have_alsa" = "xyes"; then - have_bluetooth=yes - pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BLUEZ" >&5 -$as_echo_n "checking for BLUEZ... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"bluez >= 2.22\""; } >&5 - ($PKG_CONFIG --exists --print-errors "bluez >= 2.22") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "x${BLUEZ_CFLAGS}" != "x"; then - pkg_cv_BLUEZ_CFLAGS="${BLUEZ_CFLAGS}" - else - pkg_cv_BLUEZ_CFLAGS=`$PKG_CONFIG --cflags "bluez >= 2.22" 2>/dev/null` - fi - if test "x${BLUEZ_LIBS}" != "x"; then - pkg_cv_BLUEZ_LIBS="${BLUEZ_LIBS}" - else - pkg_cv_BLUEZ_LIBS=`$PKG_CONFIG --libs "bluez >= 2.22" 2>/dev/null` - fi - else - pkg_failed="yes" - fi -else - pkg_failed="untried" -fi - - -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - BLUEZ_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "bluez >= 2.22" 2>&1` - else - BLUEZ_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "bluez >= 2.22" 2>&1` - fi - echo "$BLUEZ_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_bluetooth="no" -elif test "x$pkg_failed" = "xuntried"; then - have_bluetooth="no" -else - BLUEZ_CFLAGS="$pkg_cv_BLUEZ_CFLAGS" - BLUEZ_LIBS="$pkg_cv_BLUEZ_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - GENERAL_PLUGINS="$GENERAL_PLUGINS bluetooth" -fi - BLUEZ_LIBS=`pkg-config --libs bluez` - BLUEZ_CFLAGS=`pkg-config --cflags bluez` -else - have_bluetooth=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** bluetooth audio support plugin disabled by request ***" >&5 -$as_echo "*** bluetooth audio support plugin disabled by request ***" >&6; } -fi - - - - -# Check whether --enable-paranormal was given. -if test "${enable_paranormal+set}" = set; then : - enableval=$enable_paranormal; have_paranormal=$enableval -else - have_paranormal=yes -fi - - -if test "x$have_paranormal" = "xyes"; then - have_paranormal=yes - -# Check whether --with-sdl-prefix was given. -if test "${with_sdl_prefix+set}" = set; then : - withval=$with_sdl_prefix; sdl_prefix="$withval" -else - sdl_prefix="" -fi - - -# Check whether --with-sdl-exec-prefix was given. -if test "${with_sdl_exec_prefix+set}" = set; then : - withval=$with_sdl_exec_prefix; sdl_exec_prefix="$withval" -else - sdl_exec_prefix="" -fi - - - if test x$sdl_exec_prefix != x ; then - sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" - if test x${SDL_CONFIG+set} != xset ; then - SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config - fi - fi - if test x$sdl_prefix != x ; then - sdl_args="$sdl_args --prefix=$sdl_prefix" - if test x${SDL_CONFIG+set} != xset ; then - SDL_CONFIG=$sdl_prefix/bin/sdl-config - fi - fi - - - PATH="$prefix/bin:$prefix/usr/bin:$PATH" - # Extract the first word of "sdl-config", so it can be a program name with args. -set dummy sdl-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_SDL_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $SDL_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_SDL_CONFIG="$SDL_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_SDL_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_SDL_CONFIG" && ac_cv_path_SDL_CONFIG="no" - ;; -esac -fi -SDL_CONFIG=$ac_cv_path_SDL_CONFIG -if test -n "$SDL_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SDL_CONFIG" >&5 -$as_echo "$SDL_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - min_sdl_version=1.2.5 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDL - version >= $min_sdl_version" >&5 -$as_echo_n "checking for SDL - version >= $min_sdl_version... " >&6; } - no_sdl="" - if test "$SDL_CONFIG" = "no" ; then - no_sdl=yes - else - SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` - SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` - - sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` - sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` - sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` - fi - if test "x$no_sdl" = x ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - : - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - if test "$SDL_CONFIG" = "no" ; then - echo "*** The sdl-config script installed by SDL could not be found" - echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the SDL_CONFIG environment variable to the" - echo "*** full path to sdl-config." - fi - SDL_CFLAGS="" - SDL_LIBS="" - - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** SDL is not installed. Paranormal will not be built. ***" >&5 -$as_echo "$as_me: WARNING: *** SDL is not installed. Paranormal will not be built. ***" >&2;} - have_paranormal="no" - - fi - +if test "x$have_mms" = "xyes"; then + have_mms=yes - rm -f conf.sdltest +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MMS" >&5 +$as_echo_n "checking for MMS... " >&6; } +if test -n "$MMS_CFLAGS"; then + pkg_cv_MMS_CFLAGS="$MMS_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmms >= 0.3\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libmms >= 0.3") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_MMS_CFLAGS=`$PKG_CONFIG --cflags "libmms >= 0.3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - have_paranormal=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** paranormal plugin disabled by request ***" >&5 -$as_echo "*** paranormal plugin disabled by request ***" >&6; } + pkg_failed=yes fi - -if test "x$have_paranormal" = "xyes"; then - VISUALIZATION_PLUGINS="$VISUALIZATION_PLUGINS paranormal" + else + pkg_failed=untried fi - - - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML" >&5 -$as_echo_n "checking for XML... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libxml-2.0") 2>&5 +if test -n "$MMS_LIBS"; then + pkg_cv_MMS_LIBS="$MMS_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmms >= 0.3\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libmms >= 0.3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${XML_CFLAGS}" != "x"; then - pkg_cv_XML_CFLAGS="${XML_CFLAGS}" - else - pkg_cv_XML_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0" 2>/dev/null` - fi - if test "x${XML_LIBS}" != "x"; then - pkg_cv_XML_LIBS="${XML_LIBS}" - else - pkg_cv_XML_LIBS=`$PKG_CONFIG --libs "libxml-2.0" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_MMS_LIBS=`$PKG_CONFIG --libs "libmms >= 0.3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes fi + else + pkg_failed=untried +fi + -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - XML_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libxml-2.0" 2>&1` +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + MMS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libmms >= 0.3" 2>&1` else - XML_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libxml-2.0" 2>&1` + MMS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libmms >= 0.3" 2>&1` fi - echo "$XML_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$MMS_PKG_ERRORS" >&5 + + have_mms="no" +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - have_xml=no -elif test "x$pkg_failed" = "xuntried"; then - have_xml=no + have_mms="no" else - XML_CFLAGS="$pkg_cv_XML_CFLAGS" - XML_LIBS="$pkg_cv_XML_LIBS" + MMS_CFLAGS=$pkg_cv_MMS_CFLAGS + MMS_LIBS=$pkg_cv_MMS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - have_xml=yes + TRANSPORT_PLUGINS="$TRANSPORT_PLUGINS mms" fi - -if test $have_xml = "no" ; then - as_fn_error $? "Please install libxml-2.0." "$LINENO" 5 +else + have_mms=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** mms plugin disabled by request ***" >&5 +$as_echo "*** mms plugin disabled by request ***" >&6; } fi -CONTAINER_PLUGINS="$CONTAINER_PLUGINS xspf" +# Check whether --enable-smb was given. +if test "${enable_smb+set}" = set; then : + enableval=$enable_smb; enable_smb="$enableval" +else + enable_smb="no" +fi -# Check whether --enable-cue was given. -if test "${enable_cue+set}" = set; then : - enableval=$enable_cue; have_cue=$enableval +if test $enable_smb = yes ; then + for ac_header in libsmbclient.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "libsmbclient.h" "ac_cv_header_libsmbclient_h" "$ac_includes_default" +if test "x$ac_cv_header_libsmbclient_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSMBCLIENT_H 1 +_ACEOF + enable_smb=yes else - have_cue=yes + enable_smb=no fi +done -if test "x$have_cue" = "xyes"; then - have_cue=yes - pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CUE" >&5 -$as_echo_n "checking for CUE... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcue\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libcue") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "x${CUE_CFLAGS}" != "x"; then - pkg_cv_CUE_CFLAGS="${CUE_CFLAGS}" - else - pkg_cv_CUE_CFLAGS=`$PKG_CONFIG --cflags "libcue" 2>/dev/null` - fi - if test "x${CUE_LIBS}" != "x"; then - pkg_cv_CUE_LIBS="${CUE_LIBS}" - else - pkg_cv_CUE_LIBS=`$PKG_CONFIG --libs "libcue" 2>/dev/null` - fi + + if test $enable_smb = yes ; then + TRANSPORT_PLUGINS="$TRANSPORT_PLUGINS smb" else - pkg_failed="yes" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** libsmbclient not found; SMB client disabled" >&5 +$as_echo "*** libsmbclient not found; SMB client disabled" >&6; } fi -else - pkg_failed="untried" fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - CUE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libcue" 2>&1` - else - CUE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libcue" 2>&1` - fi - echo "$CUE_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_cue="no" -elif test "x$pkg_failed" = "xuntried"; then - have_cue="no" -else - CUE_CFLAGS="$pkg_cv_CUE_CFLAGS" - CUE_LIBS="$pkg_cv_CUE_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - CONTAINER_PLUGINS="$CONTAINER_PLUGINS cue" -fi +# Check whether --enable-mtp_up was given. +if test "${enable_mtp_up+set}" = set; then : + enableval=$enable_mtp_up; have_mtp_up=$enableval else - have_cue=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** cue plugin disabled by request ***" >&5 -$as_echo "*** cue plugin disabled by request ***" >&6; } + have_mtp_up=yes fi -# Check whether --enable-projectm was given. -if test "${enable_projectm+set}" = set; then : - enableval=$enable_projectm; have_projectm=$enableval -else - have_projectm=yes -fi +if test "x$have_mtp_up" = "xyes"; then + have_mtp_up=yes +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MTP" >&5 +$as_echo_n "checking for MTP... " >&6; } -if test "x$have_projectm" = "xyes"; then - pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBPROJECTM" >&5 -$as_echo_n "checking for LIBPROJECTM... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libprojectM < 1.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libprojectM < 1.0") 2>&5 +if test -n "$MTP_CFLAGS"; then + pkg_cv_MTP_CFLAGS="$MTP_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmtp >= 0.3.5\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libmtp >= 0.3.5") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${LIBPROJECTM_CFLAGS}" != "x"; then - pkg_cv_LIBPROJECTM_CFLAGS="${LIBPROJECTM_CFLAGS}" - else - pkg_cv_LIBPROJECTM_CFLAGS=`$PKG_CONFIG --cflags "libprojectM < 1.0" 2>/dev/null` - fi - if test "x${LIBPROJECTM_LIBS}" != "x"; then - pkg_cv_LIBPROJECTM_LIBS="${LIBPROJECTM_LIBS}" - else - pkg_cv_LIBPROJECTM_LIBS=`$PKG_CONFIG --libs "libprojectM < 1.0" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_MTP_CFLAGS=`$PKG_CONFIG --cflags "libmtp >= 0.3.5" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$MTP_LIBS"; then + pkg_cv_MTP_LIBS="$MTP_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmtp >= 0.3.5\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libmtp >= 0.3.5") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_MTP_LIBS=`$PKG_CONFIG --libs "libmtp >= 0.3.5" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - LIBPROJECTM_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libprojectM < 1.0" 2>&1` + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + MTP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libmtp >= 0.3.5" 2>&1` else - LIBPROJECTM_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libprojectM < 1.0" 2>&1` + MTP_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libmtp >= 0.3.5" 2>&1` fi - echo "$LIBPROJECTM_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$MTP_PKG_ERRORS" >&5 + + have_mtp_up="no" +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - have_projectm="no" -elif test "x$pkg_failed" = "xuntried"; then - have_projectm="no" + have_mtp_up="no" else - LIBPROJECTM_CFLAGS="$pkg_cv_LIBPROJECTM_CFLAGS" - LIBPROJECTM_LIBS="$pkg_cv_LIBPROJECTM_LIBS" + MTP_CFLAGS=$pkg_cv_MTP_CFLAGS + MTP_LIBS=$pkg_cv_MTP_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - have_projectm="yes" + GENERAL_PLUGINS="$GENERAL_PLUGINS mtp_up" fi - -# Check whether --with-sdl-prefix was given. -if test "${with_sdl_prefix+set}" = set; then : - withval=$with_sdl_prefix; sdl_prefix="$withval" + MTP_LIBS=`pkg-config --libs libmtp` + MTP_CFLAGS=`pkg-config --cflags libmtp` else - sdl_prefix="" + have_mtp_up=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** mtp upload plugin disabled by request ***" >&5 +$as_echo "*** mtp upload plugin disabled by request ***" >&6; } fi -# Check whether --with-sdl-exec-prefix was given. -if test "${with_sdl_exec_prefix+set}" = set; then : - withval=$with_sdl_exec_prefix; sdl_exec_prefix="$withval" -else - sdl_exec_prefix="" -fi - if test x$sdl_exec_prefix != x ; then - sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" - if test x${SDL_CONFIG+set} != xset ; then - SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config - fi - fi - if test x$sdl_prefix != x ; then - sdl_args="$sdl_args --prefix=$sdl_prefix" - if test x${SDL_CONFIG+set} != xset ; then - SDL_CONFIG=$sdl_prefix/bin/sdl-config - fi - fi +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML" >&5 +$as_echo_n "checking for XML... " >&6; } - PATH="$prefix/bin:$prefix/usr/bin:$PATH" - # Extract the first word of "sdl-config", so it can be a program name with args. -set dummy sdl-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_SDL_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 +if test -n "$XML_CFLAGS"; then + pkg_cv_XML_CFLAGS="$XML_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libxml-2.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_XML_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - case $SDL_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_SDL_CONFIG="$SDL_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_SDL_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_SDL_CONFIG" && ac_cv_path_SDL_CONFIG="no" - ;; -esac + pkg_failed=yes fi -SDL_CONFIG=$ac_cv_path_SDL_CONFIG -if test -n "$SDL_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SDL_CONFIG" >&5 -$as_echo "$SDL_CONFIG" >&6; } + else + pkg_failed=untried +fi +if test -n "$XML_LIBS"; then + pkg_cv_XML_LIBS="$XML_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libxml-2.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_XML_LIBS=`$PKG_CONFIG --libs "libxml-2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + pkg_failed=yes +fi + else + pkg_failed=untried fi - min_sdl_version=1.2.5 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDL - version >= $min_sdl_version" >&5 -$as_echo_n "checking for SDL - version >= $min_sdl_version... " >&6; } - no_sdl="" - if test "$SDL_CONFIG" = "no" ; then - no_sdl=yes - else - SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` - SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` - sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` - sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` - sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` - fi - if test "x$no_sdl" = x ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - : - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - if test "$SDL_CONFIG" = "no" ; then - echo "*** The sdl-config script installed by SDL could not be found" - echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the SDL_CONFIG environment variable to the" - echo "*** full path to sdl-config." - fi - SDL_CFLAGS="" - SDL_LIBS="" - - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** SDL is not installed. projectM will not be built. ***" >&5 -$as_echo "$as_me: WARNING: *** SDL is not installed. projectM will not be built. ***" >&2;} - have_projectm="no" - - fi - - - rm -f conf.sdltest - if test "x$libprjM" = "xno"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** libprojectM not found. - libprojectM is needed to build this package. - You can download libprojectM at http://projectm.sf.net/" >&5 -$as_echo "$as_me: WARNING: *** libprojectM not found. - libprojectM is needed to build this package. - You can download libprojectM at http://projectm.sf.net/" >&2;} - fi - LIBPROJECTM_datadir=`pkg-config --variable=pkgdatadir libprojectM`; - LIBPROJECTM_sysconfdir=`pkg-config --variable=sysconfdir libprojectM`; - LIBPROJECTM_CFLAGS="$LIBPROJECTM_CFLAGS -DPROJECTM_DATADIR=\\\"$LIBPROJECTM_datadir\\\" -DPROJECTM_SYSCONFDIR=\\\"$LIBPROJECTM_sysconfdir\\\""; +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no fi + if test $_pkg_short_errors_supported = yes; then + XML_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libxml-2.0" 2>&1` + else + XML_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libxml-2.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$XML_PKG_ERRORS" >&5 + have_xml=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_xml=no +else + XML_CFLAGS=$pkg_cv_XML_CFLAGS + XML_LIBS=$pkg_cv_XML_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_xml=yes +fi - -if test "x$have_projectm" = "xyes"; then - VISUALIZATION_PLUGINS="$VISUALIZATION_PLUGINS projectm" +if test $have_xml = "no" ; then + as_fn_error $? "Please install libxml-2.0." "$LINENO" 5 fi +CONTAINER_PLUGINS="$CONTAINER_PLUGINS xspf" -# Check whether --enable-projectm-1.0 was given. -if test "${enable_projectm_1_0+set}" = set; then : - enableval=$enable_projectm_1_0; have_projectm1=$enableval -else - have_projectm1=yes -fi -if test "$have_projectm1" = "yes"; then - pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBPROJECTM1" >&5 -$as_echo_n "checking for LIBPROJECTM1... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libprojectM >= 1.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libprojectM >= 1.1") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "x${LIBPROJECTM1_CFLAGS}" != "x"; then - pkg_cv_LIBPROJECTM1_CFLAGS="${LIBPROJECTM1_CFLAGS}" - else - pkg_cv_LIBPROJECTM1_CFLAGS=`$PKG_CONFIG --cflags "libprojectM >= 1.1" 2>/dev/null` - fi - if test "x${LIBPROJECTM1_LIBS}" != "x"; then - pkg_cv_LIBPROJECTM1_LIBS="${LIBPROJECTM1_LIBS}" - else - pkg_cv_LIBPROJECTM1_LIBS=`$PKG_CONFIG --libs "libprojectM >= 1.1" 2>/dev/null` - fi - else - pkg_failed="yes" - fi +# Check whether --enable-cue was given. +if test "${enable_cue+set}" = set; then : + enableval=$enable_cue; have_cue=$enableval else - pkg_failed="untried" + have_cue=yes fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - LIBPROJECTM1_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libprojectM >= 1.1" 2>&1` - else - LIBPROJECTM1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libprojectM >= 1.1" 2>&1` - fi - echo "$LIBPROJECTM1_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_projectm1="no" -elif test "x$pkg_failed" = "xuntried"; then - have_projectm1="no" +if test "x$have_cue" = "xyes"; then + have_cue=yes + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CUE" >&5 +$as_echo_n "checking for CUE... " >&6; } + +if test -n "$CUE_CFLAGS"; then + pkg_cv_CUE_CFLAGS="$CUE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcue\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libcue") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CUE_CFLAGS=`$PKG_CONFIG --cflags "libcue" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - LIBPROJECTM1_CFLAGS="$pkg_cv_LIBPROJECTM1_CFLAGS" - LIBPROJECTM1_LIBS="$pkg_cv_LIBPROJECTM1_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - have_projectm1="yes" + pkg_failed=yes fi + else + pkg_failed=untried fi - -if test "$have_projectm1" = "yes"; then - pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKGLEXT" >&5 -$as_echo_n "checking for GTKGLEXT... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtkglext-1.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "gtkglext-1.0") 2>&5 +if test -n "$CUE_LIBS"; then + pkg_cv_CUE_LIBS="$CUE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcue\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libcue") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${GTKGLEXT_CFLAGS}" != "x"; then - pkg_cv_GTKGLEXT_CFLAGS="${GTKGLEXT_CFLAGS}" - else - pkg_cv_GTKGLEXT_CFLAGS=`$PKG_CONFIG --cflags "gtkglext-1.0" 2>/dev/null` - fi - if test "x${GTKGLEXT_LIBS}" != "x"; then - pkg_cv_GTKGLEXT_LIBS="${GTKGLEXT_LIBS}" - else - pkg_cv_GTKGLEXT_LIBS=`$PKG_CONFIG --libs "gtkglext-1.0" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_CUE_LIBS=`$PKG_CONFIG --libs "libcue" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes +fi + else + pkg_failed=untried fi -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - GTKGLEXT_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gtkglext-1.0" 2>&1` + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + CUE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libcue" 2>&1` else - GTKGLEXT_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtkglext-1.0" 2>&1` + CUE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libcue" 2>&1` fi - echo "$GTKGLEXT_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$CUE_PKG_ERRORS" >&5 + + have_cue="no" +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - have_projectm1="no" -elif test "x$pkg_failed" = "xuntried"; then - have_projectm1="no" + have_cue="no" else - GTKGLEXT_CFLAGS="$pkg_cv_GTKGLEXT_CFLAGS" - GTKGLEXT_LIBS="$pkg_cv_GTKGLEXT_LIBS" + CUE_CFLAGS=$pkg_cv_CUE_CFLAGS + CUE_LIBS=$pkg_cv_CUE_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - have_projectm1="yes" -fi -fi - -if test "$have_projectm1" = "yes"; then - LIBPROJECTM1_datadir=`pkg-config --variable=pkgdatadir libprojectM`; - LIBPROJECTM1_sysconfdir=`pkg-config --variable=sysconfdir libprojectM`; - LIBPROJECTM1_prefix=`pkg-config --variable=prefix libprojectM`; - LIBPROJECTM1_CFLAGS="$LIBPROJECTM1_CFLAGS -DPROJECTM_DATADIR=\\\"$LIBPROJECTM1_datadir\\\" -DPROJECTM_SYSCONFDIR=\\\"$LIBPROJECTM1_sysconfdir\\\" -DPROJECTM_PREFIX=\\\"$LIBPROJECTM1_prefix\\\""; + CONTAINER_PLUGINS="$CONTAINER_PLUGINS cue" fi - - - - - - -if test "x$have_projectm1" = "xyes"; then - VISUALIZATION_PLUGINS="$VISUALIZATION_PLUGINS projectm-1.0" +else + have_cue=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** cue plugin disabled by request ***" >&5 +$as_echo "*** cue plugin disabled by request ***" >&6; } fi @@ -13191,48 +14442,73 @@ if test "x$enable_filewriter_vorbis" = "xyes"; then - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OGG_VORBIS" >&5 $as_echo_n "checking for OGG_VORBIS... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ogg >= 1.0 vorbis >= 1.0 vorbisfile >= 1.0\""; } >&5 + +if test -n "$OGG_VORBIS_CFLAGS"; then + pkg_cv_OGG_VORBIS_CFLAGS="$OGG_VORBIS_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ogg >= 1.0 vorbis >= 1.0 vorbisfile >= 1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "ogg >= 1.0 vorbis >= 1.0 vorbisfile >= 1.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${OGG_VORBIS_CFLAGS}" != "x"; then - pkg_cv_OGG_VORBIS_CFLAGS="${OGG_VORBIS_CFLAGS}" - else - pkg_cv_OGG_VORBIS_CFLAGS=`$PKG_CONFIG --cflags "ogg >= 1.0 vorbis >= 1.0 vorbisfile >= 1.0" 2>/dev/null` - fi - if test "x${OGG_VORBIS_LIBS}" != "x"; then - pkg_cv_OGG_VORBIS_LIBS="${OGG_VORBIS_LIBS}" - else - pkg_cv_OGG_VORBIS_LIBS=`$PKG_CONFIG --libs "ogg >= 1.0 vorbis >= 1.0 vorbisfile >= 1.0" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_OGG_VORBIS_CFLAGS=`$PKG_CONFIG --cflags "ogg >= 1.0 vorbis >= 1.0 vorbisfile >= 1.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$OGG_VORBIS_LIBS"; then + pkg_cv_OGG_VORBIS_LIBS="$OGG_VORBIS_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ogg >= 1.0 vorbis >= 1.0 vorbisfile >= 1.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "ogg >= 1.0 vorbis >= 1.0 vorbisfile >= 1.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_OGG_VORBIS_LIBS=`$PKG_CONFIG --libs "ogg >= 1.0 vorbis >= 1.0 vorbisfile >= 1.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes fi + else + pkg_failed=untried +fi + -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - OGG_VORBIS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "ogg >= 1.0 vorbis >= 1.0 vorbisfile >= 1.0" 2>&1` +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + OGG_VORBIS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "ogg >= 1.0 vorbis >= 1.0 vorbisfile >= 1.0" 2>&1` else - OGG_VORBIS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ogg >= 1.0 vorbis >= 1.0 vorbisfile >= 1.0" 2>&1` + OGG_VORBIS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "ogg >= 1.0 vorbis >= 1.0 vorbisfile >= 1.0" 2>&1` fi - echo "$OGG_VORBIS_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$OGG_VORBIS_PKG_ERRORS" >&5 + + have_vorbisenc=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - have_vorbisenc=no -elif test "x$pkg_failed" = "xuntried"; then have_vorbisenc=no else - OGG_VORBIS_CFLAGS="$pkg_cv_OGG_VORBIS_CFLAGS" - OGG_VORBIS_LIBS="$pkg_cv_OGG_VORBIS_LIBS" + OGG_VORBIS_CFLAGS=$pkg_cv_OGG_VORBIS_CFLAGS + OGG_VORBIS_LIBS=$pkg_cv_OGG_VORBIS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_vorbisenc=yes @@ -13257,50 +14533,75 @@ if test "x$enable_filewriter_flac" = "xyes"; then - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FLAC" >&5 $as_echo_n "checking for FLAC... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flac >= 1.1.3\""; } >&5 + +if test -n "$FLAC_CFLAGS"; then + pkg_cv_FLAC_CFLAGS="$FLAC_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flac >= 1.1.3\""; } >&5 ($PKG_CONFIG --exists --print-errors "flac >= 1.1.3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${FLAC_CFLAGS}" != "x"; then - pkg_cv_FLAC_CFLAGS="${FLAC_CFLAGS}" - else - pkg_cv_FLAC_CFLAGS=`$PKG_CONFIG --cflags "flac >= 1.1.3" 2>/dev/null` - fi - if test "x${FLAC_LIBS}" != "x"; then - pkg_cv_FLAC_LIBS="${FLAC_LIBS}" - else - pkg_cv_FLAC_LIBS=`$PKG_CONFIG --libs "flac >= 1.1.3" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_FLAC_CFLAGS=`$PKG_CONFIG --cflags "flac >= 1.1.3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$FLAC_LIBS"; then + pkg_cv_FLAC_LIBS="$FLAC_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flac >= 1.1.3\""; } >&5 + ($PKG_CONFIG --exists --print-errors "flac >= 1.1.3") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_FLAC_LIBS=`$PKG_CONFIG --libs "flac >= 1.1.3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes fi + else + pkg_failed=untried +fi + -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - FLAC_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "flac >= 1.1.3" 2>&1` +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + FLAC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "flac >= 1.1.3" 2>&1` else - FLAC_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "flac >= 1.1.3" 2>&1` + FLAC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "flac >= 1.1.3" 2>&1` fi - echo "$FLAC_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_writer_flac=no + # Put the nasty error message in config.log where it belongs + echo "$FLAC_PKG_ERRORS" >&5 + + have_writer_flac=no -elif test "x$pkg_failed" = "xuntried"; then +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } have_writer_flac=no else - FLAC_CFLAGS="$pkg_cv_FLAC_CFLAGS" - FLAC_LIBS="$pkg_cv_FLAC_LIBS" + FLAC_CFLAGS=$pkg_cv_FLAC_CFLAGS + FLAC_LIBS=$pkg_cv_FLAC_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_writer_flac=yes @@ -13334,48 +14635,73 @@ if test "x$enable_bs2b" = "xyes"; then - pkg_failed=no + +pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BS2B" >&5 $as_echo_n "checking for BS2B... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libbs2b >= 3.0.0\""; } >&5 + +if test -n "$BS2B_CFLAGS"; then + pkg_cv_BS2B_CFLAGS="$BS2B_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libbs2b >= 3.0.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libbs2b >= 3.0.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${BS2B_CFLAGS}" != "x"; then - pkg_cv_BS2B_CFLAGS="${BS2B_CFLAGS}" - else - pkg_cv_BS2B_CFLAGS=`$PKG_CONFIG --cflags "libbs2b >= 3.0.0" 2>/dev/null` - fi - if test "x${BS2B_LIBS}" != "x"; then - pkg_cv_BS2B_LIBS="${BS2B_LIBS}" - else - pkg_cv_BS2B_LIBS=`$PKG_CONFIG --libs "libbs2b >= 3.0.0" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_BS2B_CFLAGS=`$PKG_CONFIG --cflags "libbs2b >= 3.0.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$BS2B_LIBS"; then + pkg_cv_BS2B_LIBS="$BS2B_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libbs2b >= 3.0.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libbs2b >= 3.0.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_BS2B_LIBS=`$PKG_CONFIG --libs "libbs2b >= 3.0.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes fi + else + pkg_failed=untried +fi + -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - BS2B_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libbs2b >= 3.0.0" 2>&1` +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + BS2B_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libbs2b >= 3.0.0" 2>&1` else - BS2B_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libbs2b >= 3.0.0" 2>&1` + BS2B_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libbs2b >= 3.0.0" 2>&1` fi - echo "$BS2B_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$BS2B_PKG_ERRORS" >&5 + + have_bs2b=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - have_bs2b=no -elif test "x$pkg_failed" = "xuntried"; then have_bs2b=no else - BS2B_CFLAGS="$pkg_cv_BS2B_CFLAGS" - BS2B_LIBS="$pkg_cv_BS2B_LIBS" + BS2B_CFLAGS=$pkg_cv_BS2B_CFLAGS + BS2B_LIBS=$pkg_cv_BS2B_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_bs2b=yes @@ -13402,48 +14728,77 @@ if test "x$enable_resample" = "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for src_process in -lsamplerate" >&5 -$as_echo_n "checking for src_process in -lsamplerate... " >&6; } -if ${ac_cv_lib_samplerate_src_process+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsamplerate $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char src_process (); -int -main () -{ -return src_process (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_samplerate_src_process=yes +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SAMPLERATE" >&5 +$as_echo_n "checking for SAMPLERATE... " >&6; } + +if test -n "$SAMPLERATE_CFLAGS"; then + pkg_cv_SAMPLERATE_CFLAGS="$SAMPLERATE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"samplerate\""; } >&5 + ($PKG_CONFIG --exists --print-errors "samplerate") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SAMPLERATE_CFLAGS=`$PKG_CONFIG --cflags "samplerate" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - ac_cv_lib_samplerate_src_process=no + pkg_failed=yes fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS + else + pkg_failed=untried fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_samplerate_src_process" >&5 -$as_echo "$ac_cv_lib_samplerate_src_process" >&6; } -if test "x$ac_cv_lib_samplerate_src_process" = xyes; then : - enable_resample=yes +if test -n "$SAMPLERATE_LIBS"; then + pkg_cv_SAMPLERATE_LIBS="$SAMPLERATE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"samplerate\""; } >&5 + ($PKG_CONFIG --exists --print-errors "samplerate") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SAMPLERATE_LIBS=`$PKG_CONFIG --libs "samplerate" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes else - enable_resample=no + _pkg_short_errors_supported=no fi + if test $_pkg_short_errors_supported = yes; then + SAMPLERATE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "samplerate" 2>&1` + else + SAMPLERATE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "samplerate" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$SAMPLERATE_PKG_ERRORS" >&5 + enable_resample=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + enable_resample=no +else + SAMPLERATE_CFLAGS=$pkg_cv_SAMPLERATE_CFLAGS + SAMPLERATE_LIBS=$pkg_cv_SAMPLERATE_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + enable_resample=yes +fi fi if test "x$enable_resample" = "xyes"; then @@ -13451,6 +14806,32 @@ fi +# Check whether --enable-gtkui was given. +if test "${enable_gtkui+set}" = set; then : + enableval=$enable_gtkui; enable_gtkui=$enableval +else + enable_gtkui="yes" +fi + + +if test $enable_gtkui = yes ; then + GENERAL_PLUGINS="$GENERAL_PLUGINS gtkui" +fi + + +# Check whether --enable-skins was given. +if test "${enable_skins+set}" = set; then : + enableval=$enable_skins; enable_skins=$enableval +else + enable_skins="yes" +fi + + +if test $enable_skins = yes ; then + GENERAL_PLUGINS="$GENERAL_PLUGINS skins" +fi + + # Check whether --enable-lyricwiki was given. if test "${enable_lyricwiki+set}" = set; then : enableval=$enable_lyricwiki; enable_lyricwiki=$enableval @@ -13460,48 +14841,73 @@ if test "x$enable_lyricwiki" = "xyes"; then - pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB" >&5 -$as_echo_n "checking for GLIB... " >&6; } -if test "x$PKG_CONFIG" != "x"; then - if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.14\""; } >&5 + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB214" >&5 +$as_echo_n "checking for GLIB214... " >&6; } + +if test -n "$GLIB214_CFLAGS"; then + pkg_cv_GLIB214_CFLAGS="$GLIB214_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.14\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.14") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "x${GLIB_CFLAGS}" != "x"; then - pkg_cv_GLIB_CFLAGS="${GLIB_CFLAGS}" - else - pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.14" 2>/dev/null` - fi - if test "x${GLIB_LIBS}" != "x"; then - pkg_cv_GLIB_LIBS="${GLIB_LIBS}" - else - pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.14" 2>/dev/null` - fi - else - pkg_failed="yes" - fi + pkg_cv_GLIB214_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.14" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GLIB214_LIBS"; then + pkg_cv_GLIB214_LIBS="$GLIB214_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.14\""; } >&5 + ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.14") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GLIB214_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.14" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else - pkg_failed="untried" + pkg_failed=yes fi + else + pkg_failed=untried +fi + -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "glib-2.0 >= 2.14" 2>&1` +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GLIB214_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.14" 2>&1` else - GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glib-2.0 >= 2.14" 2>&1` + GLIB214_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.14" 2>&1` fi - echo "$GLIB_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$GLIB214_PKG_ERRORS" >&5 + + enable_lyricwiki=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - enable_lyricwiki=no -elif test "x$pkg_failed" = "xuntried"; then enable_lyricwiki=no else - GLIB_CFLAGS="$pkg_cv_GLIB_CFLAGS" - GLIB_LIBS="$pkg_cv_GLIB_LIBS" + GLIB214_CFLAGS=$pkg_cv_GLIB214_CFLAGS + GLIB214_LIBS=$pkg_cv_GLIB214_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } enable_lyricwiki=yes @@ -13513,41 +14919,6 @@ fi - - - if test "x$arch_type" = "xix86"; then - ARCH_X86_TRUE= - ARCH_X86_FALSE='#' -else - ARCH_X86_TRUE='#' - ARCH_X86_FALSE= -fi - - if test "x$x86_asm" = xyes; then - USE_X86ASM_TRUE= - USE_X86ASM_FALSE='#' -else - USE_X86ASM_TRUE='#' - USE_X86ASM_FALSE= -fi - - if test "x$have_solaris" = xyes; then - HAVE_SOLARIS_TRUE= - HAVE_SOLARIS_FALSE='#' -else - HAVE_SOLARIS_TRUE='#' - HAVE_SOLARIS_FALSE= -fi - - if test "x$have_sun" = xyes; then - HAVE_SUN_TRUE= - HAVE_SUN_FALSE='#' -else - HAVE_SUN_TRUE='#' - HAVE_SUN_FALSE= -fi - - plugindir=`pkg-config audacious --variable=plugin_dir` @@ -13580,24 +14951,6 @@ localedir="$datadir/locale" -BEEP_DEFINES="$CFLAGS -DDATA_DIR=\\\"$datadir/audacious\\\" -DPLUGIN_DIR=\\\"$plugindir\\\" -DPLUGINSUBS=$pluginsubs -DLOCALEDIR=\\\"$localedir\\\"" -CFLAGS="$CFLAGS $EXTRA_CFLAGS" - -if test "x$enable_user_plugin_dir" = "xno"; then - -$as_echo "#define DISABLE_USER_PLUGIN_DIR /**/" >>confdefs.h - -fi - - -$as_echo "#define BMP_RCPATH \".audacious\"" >>confdefs.h - - - - - - - @@ -13611,7 +14964,7 @@ - ${as_echo:="echo"} "${as_me:="configure"}: touching .deps files" + ${as_echo:="echo"} ${as_me:="configure"}": touching .deps files" for i in $(find . -name Makefile); do DEPSFILE="$(dirname $i)/.deps" test -f "$DEPSFILE" && rm "$DEPSFILE" @@ -13727,7 +15080,6 @@ LTLIBOBJS=$ac_ltlibobjs - if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -13736,38 +15088,11 @@ as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi + if test -z "${USE_IPV6_TRUE}" && test -z "${USE_IPV6_FALSE}"; then as_fn_error $? "conditional \"USE_IPV6\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${USE_CHARDET_TRUE}" && test -z "${USE_CHARDET_FALSE}"; then - as_fn_error $? "conditional \"USE_CHARDET\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HAVE_CDROM_TRUE}" && test -z "${HAVE_CDROM_FALSE}"; then - as_fn_error $? "conditional \"HAVE_CDROM\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HAVE_LINUX_JOYSTICK_TRUE}" && test -z "${HAVE_LINUX_JOYSTICK_FALSE}"; then - as_fn_error $? "conditional \"HAVE_LINUX_JOYSTICK\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ARCH_X86_TRUE}" && test -z "${ARCH_X86_FALSE}"; then - as_fn_error $? "conditional \"ARCH_X86\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${USE_X86ASM_TRUE}" && test -z "${USE_X86ASM_FALSE}"; then - as_fn_error $? "conditional \"USE_X86ASM\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HAVE_SOLARIS_TRUE}" && test -z "${HAVE_SOLARIS_FALSE}"; then - as_fn_error $? "conditional \"HAVE_SOLARIS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HAVE_SUN_TRUE}" && test -z "${HAVE_SUN_FALSE}"; then - as_fn_error $? "conditional \"HAVE_SUN\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 @@ -14177,7 +15502,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by audacious-plugins $as_me 2.4.4, which was +This file was extended by audacious-plugins $as_me 3.2, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -14237,13 +15562,13 @@ Configuration commands: $config_commands -Report bugs to ." +Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -audacious-plugins config.status 2.4.4 +audacious-plugins config.status 3.2 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" @@ -14254,6 +15579,7 @@ ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' test -n "\$AWK" || AWK=awk _ACEOF @@ -14362,8 +15688,8 @@ # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # Capture the value of obsolete ALL_LINGUAS because we need it to compute - # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it - # from automake. + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" @@ -14379,7 +15705,7 @@ case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; "buildsys.mk") CONFIG_FILES="$CONFIG_FILES buildsys.mk" ;; "extra.mk") CONFIG_FILES="$CONFIG_FILES extra.mk" ;; @@ -14830,6 +16156,11 @@ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 @@ -14884,6 +16215,7 @@ s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ @@ -15032,7 +16364,7 @@ done } ;; - "default-1":C) + "po-directories":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in @@ -15052,12 +16384,15 @@ /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" - # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then @@ -15065,27 +16400,36 @@ if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi - ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= - GMOFILES= UPDATEPOFILES= DUMMYPOFILES= + GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. @@ -15120,7 +16464,7 @@ done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in @@ -15179,19 +16523,17 @@ echo echo " Output Plugins" echo " --------------" -echo " Open Sound System (oss): $have_oss" -echo " Open Sound System v4 (oss4): $have_oss4" +echo " Open Sound System (oss4): $enable_oss4" echo " Advanced Linux Sound Arch. (alsa): $have_alsa" echo " PulseAudio (pulse): $have_pulse" -echo " RoarAudio (roaraudio): $have_roar" -echo " Jack Audio Connection Kit (jack): $have_jack" -echo " BSD/SUN audio output (sun): $have_sun" -echo " Mac OS X sound support (CoreAudio): $have_coreaudio" +echo " Jack Audio Connection Kit (jack): $enable_jack" +echo " Simple DirectMedia Layer (sdlout): $enable_sdlout" echo " FileWriter: $enable_filewriter" echo " -> FileWriter MP3 output part: $have_lame" echo " -> FileWriter Vorbis output part: $have_vorbisenc" echo " -> FileWriter FLAC output part: $have_writer_flac" echo " Null Audio output (null): yes" +echo " Open Sound System v3 (deprecated): $enable_oss" echo echo " Input Plugins" echo " -------------" @@ -15211,64 +16553,65 @@ echo " -> libSIDPlay1 support: $xs_have_sidplay1" echo " -> libSIDPlay2 support: $xs_have_sidplay2" echo " -> distortion patched libSIDPlay2: $xs_have_distortion" -echo " Game music (spc, nsf & gbs): yes" +echo " Game music (spc, nsf & gbs): $enable_console" echo " PlayStation (psf/psf2) audio: $enable_psf" -echo " Nintendo 64 audio (usf): $enable_usf" -echo " Nintendo DS audio (xsf): yes experimental" +echo " Nintendo DS audio (xsf): $enable_xsf" echo " AdLib synthesizer (adplug): $have_adplug" -echo " Apple Lossless Audio Codec (alac): $have_ffaudio" echo " WavPack 4.31+ (wavpack): $have_wavpack" echo " Metronom: yes" echo echo " General" echo " -------" echo " Alarm: yes" -echo " Song Change: yes" +echo " Album Art: yes" +echo " MPRIS 2 Server: $enable_mpris2" +echo " Search Tool: yes" +echo " Song Change: $enable_songchange" echo " Status Icon: $have_statusicon" echo " Audacious OSD: $have_aosd" echo " -> X Composite support: $have_aosd_xcomp" echo " libnotify OSD: $have_notify" -echo " Control via event device (evdev-plug): $have_evdevplug" echo " Global Hotkey Plugin: $have_hotkey" echo " Gnome Shortcuts Plugin: $have_gnomeshortcuts" -echo " LIRC: $have_lirc" echo " AudioScrobbler Client: $have_scrobbler" echo " Upload to MTP device: $have_mtp_up" -echo " Bluetooth audio support: $have_bluetooth" -echo " MacOS Dock Album Art plugin: $have_dockalbumart" -echo " Streambrowser: $enable_streambrowser" echo " LyricWiki viewer: $enable_lyricwiki" echo echo " Effect" echo " ------" +echo " Channel Mixer: yes" +echo " Crystalizer: yes" echo " Dynamic Range Compressor: yes" -echo " LADSPA effects host (ladspa): yes" -echo " Voice Removal: yes" -echo " Extra Stereo: yes" echo " Echo/Surround: yes" +echo " Extra Stereo: yes" +echo " LADSPA Host: yes" echo " SndStretch: yes" -echo " Crystalizer: yes" +echo " Voice Removal: yes" echo " Bauer stereophonic-to-binaural (bs2b): $have_bs2b" echo " Sample Rate Converter (resample): $enable_resample" echo echo " Visualization" echo " -------------" echo " Blur Scope: yes" -echo " Spectrum Analyzer: yes" -echo " Paranormal Visualization Library: $have_paranormal" -echo " projectM 0.x (GL milkdrop): $have_projectm" -echo " projectM 1.x (GL milkdrop): $have_projectm1" +echo " Cairo Spectrum Analyzer: yes" echo echo " Transport" echo " ---------" -echo " gio transport: $enable_gio" echo " neon-based http/https: $have_neon" echo " libmms-based mms: $have_mms" +echo " GIO transport (experimental): $enable_gio" +echo " SMB transport (experimental): $enable_smb" echo echo " Container" echo " ---------" +echo " Audacious playlist format (audpl): yes" echo " Winamp PLS playlist format (pls): yes" echo " M3U playlist format (m3u): yes" echo " XML Sharable Playlist Format (xspf): yes" echo " CUE playlist format (cue): $have_cue" echo +echo " Interfaces" +echo " ----------" +echo " GTK (gtkui): $enable_gtkui" +echo " Winamp Classic (skins): $enable_skins" +echo diff -Nru audacious-plugins-2.4.4/configure.ac audacious-plugins-3.2/configure.ac --- audacious-plugins-2.4.4/configure.ac 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/configure.ac 2012-01-20 19:48:30.000000000 +0000 @@ -1,190 +1,108 @@ -dnl Process this file with autoconf to produce a configure script. +dnl *** +dnl *** Process this file with autoconf to produce a configure script. +dnl *** -AC_INIT([audacious-plugins], [2.4.4], [bugs+audacious-plugins@atheme.org]) +dnl Initialize +dnl ========== AC_PREREQ([2.59]) +AC_INIT([audacious-plugins], [3.2]) +AC_COPYRIGHT([(C) 2005-2012 Audacious Team]) -AC_CANONICAL_HOST -AC_CANONICAL_TARGET -AC_CONFIG_HEADERS([config.h]) - -dnl XXX kludge for FreeBSD -if test -d "/usr/X11R6/include"; then - CPPFLAGS="$CPPFLAGS -I/usr/X11R6/include" -fi - -dnl append audacious header path to CPPFLAGS when --prefix is specified. -if test "x$prefix" != "xNONE" ; then - CPPFLAGS="$CPPFLAGS -I${includedir}" -fi - -dnl OMK bootstrap AC_SUBST([PACKAGE], [AC_PACKAGE_TARNAME]) AC_SUBST([VERSION], [AC_PACKAGE_VERSION]) +AC_DEFINE_UNQUOTED([PACKAGE], "$PACKAGE", [Name of package]) +AC_DEFINE_UNQUOTED([VERSION], "$VERSION", [Version number of package]) -AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) -AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]) - -dnl Check for C compiler - -AC_PROG_CC -AC_PROG_CXX -AC_ISC_POSIX -AC_C_BIGENDIAN - -if test "x$GCC" = "xyes"; then - CFLAGS="$CFLAGS -pipe -Wall" - CXXFLAGS="$CXXFLAGS -pipe -Wall" -fi - -dnl Chainsaw says this is broken. -dnl LDFLAGS="$LDFLAGS -z defs" - -dnl Large file support -dnl ================== -CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=64" - -dnl Locate a program and check that its version is acceptable. -dnl AC_PROG_CHECK_VER(var, namelist, version-switch, -dnl [version-extract-regexp], version-glob [, do-if-fail]) -AC_DEFUN([AC_CHECK_PROG_VER], -[AC_CHECK_PROGS([$1], [$2]) -if test -z "[$]$1"; then - ac_verc_fail=yes -else - # Found it, now check the version. - AC_MSG_CHECKING([version of [$]$1]) -changequote(<<,>>)dnl - ac_prog_version=`<<$>>$1 $3 2>&1 ifelse(<<$4>>,,, - <<| sed -n 's/^.*patsubst(<<$4>>,/,\/).*$/\1/p'>>)` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - <<$5>>) -changequote([,])dnl - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - - esac - AC_MSG_RESULT([$ac_prog_version]) -fi -ifelse([$6],,, -[if test $ac_verc_fail = yes; then - $6 -fi]) -]) - -GCC42_CFLAGS="-fgnu89-inline" -AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v, - [version \([egcygnustpi-]*[0-9.]*\)], [4.[2-9]* ], - GCC42_CFLAGS="") - -dnl Check for assembler - -AM_PROG_AS +AC_CANONICAL_HOST +AC_CANONICAL_TARGET +AC_CONFIG_HEADERS([config.h]) -dnl Checks for various programs +AUD_COMMON_PROGS -AC_PROG_LN_S -AC_PROG_MAKE_SET +BUILDSYS_INIT +BUILDSYS_SHARED_LIB -AC_PATH_PROG(RM, rm) -AC_PATH_PROG(MV, mv) -AC_PATH_PROG(CP, cp) -AC_PATH_PROG(AR, ar) -AC_PATH_PROG(TR, tr) -AC_PATH_PROG(RANLIB, ranlib) +dnl Headers and functions +dnl ===================== +AC_CHECK_FUNCS([fcntl fsync mkdtemp]) -dnl Gettext -nenolod +dnl gettext +dnl ======= AM_GNU_GETTEXT([external]) +if test "$MSGFMT" = ":" ; then + AC_MSG_ERROR([msgfmt was not found; have you installed gettext?]) +fi -AC_CHECK_FUNC(strnlen, [AC_DEFINE(HAVE_STRNLEN, 1, [Whether we have strnlen])],) - -dnl Path settings +dnl Check for Audacious +dnl =================== -AC_ARG_WITH(dev-dsp, - [ --with-dev-dsp=path Path to OSS DSP data pipe, default is /dev/dsp.], - [dev_dsp=$withval], - [dev_dsp=/dev/dsp] -) -AC_DEFINE_UNQUOTED(DEV_DSP, "$dev_dsp", - [Path to OSS DSP, really just a data pipe, default is /dev/dsp.] +PKG_CHECK_MODULES(AUDACIOUS, [audacious >= 3.2], + [], + [AC_MSG_ERROR([Cannot find Audacious 3.2; have you installed Audacious yet?])] ) -AC_ARG_WITH(dev-mixer, - [ --with-dev-mixer=path Path to OSS sound mixer, default is /dev/mixer.], - [dev_mixer=$withval], - [dev_mixer=/dev/mixer] -) -AC_DEFINE_UNQUOTED(DEV_MIXER, "$dev_mixer", - [Path to OSS mixer, default is /dev/mixer.] -) +CPPFLAGS="$CPPFLAGS $AUDACIOUS_CFLAGS" +LIBS="$LIBS $AUDACIOUS_LIBS" -dnl These plugins are always built. +dnl Default Set of Plugins +dnl ====================== -INPUT_PLUGINS="tonegen console xsf metronom vtx" +INPUT_PLUGINS="tonegen metronom vtx" OUTPUT_PLUGINS="null" -EFFECT_PLUGINS="compressor crossfade crystalizer ladspa sndstretch stereo_plugin voice_removal echo_plugin" -GENERAL_PLUGINS="song_change alarm skins gtkui" -VISUALIZATION_PLUGINS="blur_scope spectrum" -CONTAINER_PLUGINS="m3u pls" +EFFECT_PLUGINS="compressor crossfade crystalizer ladspa mixer sndstretch stereo_plugin voice_removal echo_plugin" +GENERAL_PLUGINS="alarm albumart search-tool" +VISUALIZATION_PLUGINS="blur_scope cairo-spectrum" +CONTAINER_PLUGINS="audpl m3u pls asx" TRANSPORT_PLUGINS="unix-io" -dnl Check for Audacious +dnl Check for GTK+ +dnl ============== -PKG_CHECK_MODULES(AUDACIOUS, [audacious >= 2.4], - [ADD_PC_REQUIRES([audacious >= 2.4])], - [AC_MSG_ERROR([Cannot find Audacious 2.4 or later, have you installed audacious yet?])] -) +AC_ARG_ENABLE([gtk3], + [AS_HELP_STRING([--disable-gtk3], [Use GTK2 even if GTK3 is present])], + [use_gtk3=$enableval], [use_gtk3=yes]) -CFLAGS="$CFLAGS $AUDACIOUS_CFLAGS" -CPPFLAGS="$CPPFLAGS $AUDACIOUS_CPPFLAGS" -LIBS="$LIBS $AUDACIOUS_LIBS" +if test $use_gtk3 = yes ; then + PKG_CHECK_MODULES([GTK], [gtk+-3.0 >= 3.0.0], [use_gtk3=yes], [use_gtk3=no]) +fi -dnl Check for GTK/GLib/GThread/Pango/DBus +if test $use_gtk3 = no ; then + PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.12.0], [use_gtk3=no], + AC_MSG_ERROR([Cannot find GTK headers. Aborting ...])) +fi -PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.12.0 gthread-2.0], - [ADD_PC_REQUIRES([glib-2.0 >= 2.12.0])], - [AC_MSG_ERROR([Cannot find Glib2 >= 2.12.0])] -) +AC_SUBST([GTK_LIBS]) +AC_SUBST([GTK_CFLAGS]) -PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.8.0], - [ADD_PC_REQUIRES([gtk+-2.0 >= 2.8.0])], - [AC_MSG_ERROR([Cannot find Gtk+2 >= 2.8.0])] -) +dnl Check for GIO +dnl ============= -AC_ARG_ENABLE(gio, [ --disable-gio disable GIO support (default=enabled if GIO present)], - enable_gio=$enableval, enable_gio=yes) +AC_ARG_ENABLE(gio, + AS_HELP_STRING([--enable-gio], [enable GIO support (default=disabled)]), + enable_gio=$enableval, enable_gio=no) if test "x$enable_gio" = "xyes"; then - PKG_CHECK_MODULES(GIO, [gio-2.0 >= 2.0], [ADD_PC_REQUIRES([gio-2.0 >= 2.0])], [enable_gio=no]) + PKG_CHECK_MODULES(GIO, [gio-2.0 >= 2.0], [enable_gio=yes], [enable_gio=no]) fi if test "x$enable_gio" = "xyes"; then TRANSPORT_PLUGINS="$TRANSPORT_PLUGINS gio" fi -PKG_CHECK_MODULES(PANGO, [pango >= 1.8.0], - [ADD_PC_REQUIRES([pango >= 1.8.0])], - [AC_MSG_ERROR([Cannot find Pango >= 1.8.0])] +### --------------------------------------------------------------------------- +dnl Pthread support +dnl =============== +PTHREAD_LIBS= +PTHREAD_CFLAGS= + +AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIBS="-lpthread", + [AC_CHECK_LIB(pthreads, pthread_create, PTHREAD_LIBS="-lpthreads", + [AC_CHECK_LIB(pthreadGC2, pthread_create, PTHREAD_LIBS="-lpthreadGC2")] + )] ) -AC_ARG_ENABLE(dbus, - [ --disable-dbus disable DBus support (default=enabled)], - enable_dbus=$enableval, enable_dbus=yes) -if test "x$enable_dbus" = "xyes"; then - PKG_CHECK_MODULES(DBUS, [dbus-1 >= 0.60 dbus-glib-1 >= 0.60], - [ADD_PC_REQUIRES([dbus-1 >= 0.60 dbus-glib-1 >= 0.60]) - AC_DEFINE(USE_DBUS, 1, [Define if D-Bus support enabled])], - [AC_MSG_ERROR([Cannot find dbus-glib >= 0.60])] - ]) -fi - - -dnl Check for libmowgli. - -PKG_CHECK_MODULES(MOWGLI, [libmowgli >= 0.4.0], - [ADD_PC_REQUIRES([libmowgli >= 0.4.0])], - [AC_MSG_ERROR([Cannot find libmowgli >= 0.4.0, try http://www.atheme.org/projects/mowgli.shtml])] -) +AC_SUBST([PTHREAD_LIBS]) +AC_SUBST([PTHREAD_CFLAGS]) dnl IPv6 support dnl ======================== @@ -197,36 +115,37 @@ AM_CONDITIONAL(USE_IPV6,test "x$enable_ipv6" = "xyes") AC_SUBST(USE_IPV6) -dnl chardet support -dnl ======================== -AC_ARG_ENABLE(chardet, - [ --enable-chardet enable character set detection support (default=no)], - enable_chardet=$enableval, enable_chardet=no) -if test "x$enable_chardet" = "xyes"; then - AC_DEFINE(USE_CHARDET, 1, [Define if character set detection enabled] ) +dnl Console +dnl ======= + +AC_ARG_ENABLE(console, + [ --disable-console disable game music decoder (console)], + [enable_console=$enableval], [enable_console="yes"]) + +if test $enable_console = yes ; then + AC_CHECK_HEADERS([zlib.h], [enable_console=yes], + [AC_MSG_WARN([Cannot find zlib.h; disabling game music decoder (console)]) + enable_console=no]) fi -AM_CONDITIONAL(USE_CHARDET,test "x$enable_chardet" = "xyes") -AC_SUBST(USE_CHARDET) -dnl plugin stuff -dnl ======================== +if test $enable_console = yes ; then + INPUT_PLUGINS="$INPUT_PLUGINS console" +fi -BUILDSYS_SHARED_LIB -BUILDSYS_PROG_IMPLIB -test "x$PROG_IMPLIB_NEEDED" = "xyes" && LIBS="$LIBS -L\${libdir} -laudacious.exe" +dnl XSF +dnl ======= -AC_MSG_CHECKING([if you are running Apple-GCC]) -case "$target" in - *-apple-*) - AC_MSG_RESULT([yes, sorry you poor bastard]) - LDFLAGS="$LDFLAGS -Wl,-framework -Wl,CoreFoundation -Wl,-framework -Wl,CoreServices" - ;; - *) - AC_MSG_RESULT([no]) - ;; -esac +AC_ARG_ENABLE(xsf, + [ --disable-xsf disable Nintendo DS audio decoder (xsf)], + [enable_xsf=$enableval], [enable_xsf="yes"]) -dnl *** PulseAudio +if test $enable_xsf = yes ; then + INPUT_PLUGINS="$INPUT_PLUGINS xsf" +fi + + +dnl PulseAudio +dnl ========== AC_ARG_ENABLE( pulse, [ --disable-pulse disable PulseAudio output plugin (default=enabled)], @@ -245,116 +164,11 @@ have_pulse=no fi -dnl *** RoarAudio - -AC_ARG_ENABLE(roar, - [ --disable-roar disable PulseAudio output plugin (default=enabled)], - [enable_roar=$enableval], - [enable_roar="yes"] -) - -if test "x$enable_roar" = "xyes"; then - PKG_CHECK_MODULES(LIBROAR, [libroar], - [have_roar=yes - OUTPUT_PLUGINS="$OUTPUT_PLUGINS roaraudio"], - [have_roar=no] - ) -else - AC_MSG_RESULT([*** pulseaudio output plugin disabled per user request ***]) - have_pulse=no -fi - -dnl *** CoreAudio - -AC_ARG_ENABLE(coreaudio, - [ --disable-coreaudio disable CoreAudio output plugin (default=enabled)], - [enable_coreaudio=$enableval], - [enable_coreaudio="yes"] -) - -if test "x$enable_coreaudio" = "xyes"; then - AC_CHECK_HEADERS([CoreServices/CoreServices.h], - [have_coreaudio=yes - OUTPUT_PLUGINS="$OUTPUT_PLUGINS CoreAudio"], - [have_coreaudio=no]) -else - AC_MSG_RESULT([*** CoreAudio output plugin disabled per user request ***]) - have_coreaudio=no -fi - -dnl *** Dock Album Art (MacOS) - -AC_ARG_ENABLE(dockalbumart, - [ --disable-dockalbumart disable MacOS dock albumart plugin (default=guess)], - [enable_dockalbumart=$enableval], - [enable_dockalbumart="yes"] -) - -if test "x$enable_dockalbumart" = "xyes"; then - AC_CHECK_HEADERS([Carbon/Carbon.h], - [have_dockalbumart=yes - GENERAL_PLUGINS="$GENERAL_PLUGINS dockalbumart"], - [have_dockalbumart=no]) -else - AC_MSG_RESULT([*** DockAlbumArt plugin disabled per user request ***]) - have_dockalbumart=no -fi - -dnl *** AltiVec - -AC_ARG_ENABLE(altivec, - [ --disable-altivec disable AltiVec support. (default=enabled) ], - [enable_altivec=$enableval], - [enable_altivec=yes] -) -if test "x$enable_altivec" = "xyes"; then - AC_CHECK_HEADERS(altivec.h, - [AC_DEFINE(HAVE_ALTIVEC, 1, [Define to 1 if your system has AltiVec.]) - AC_DEFINE(HAVE_ALTIVEC_H, 1, [Define to 1 if your system has an altivec.h file.]) - AC_DEFINE(ARCH_POWERPC, 1, [Define to 1 if your system is a PowerPC.]) - DCT64=dct64_altivec.c - SIMD_CFLAGS=-maltivec - AC_SUBST(SIMD_CFLAGS)], - [DCT64=dct64.c] - ) -fi -AC_SUBST(DCT64) - -dnl *** SSE2 - -AC_ARG_ENABLE(sse2, - [ --disable-sse2 disable SSE2 support. (default=enabled) ], - [enable_sse2=$enableval], - [enable_sse2=yes] -) -if test "x$enable_sse2" = "xyes"; then - AC_MSG_CHECKING(SSE2) - ac_save_CFLAGS="$CFLAGS" - CFLAGS="-msse2" - AC_TRY_RUN([ - #include - int main() - { - _mm_setzero_pd(); - asm volatile("xorpd %xmm0,%xmm0\n\t"); - return 0; - } - ], - [AC_MSG_RESULT(SSE2 yes) - AC_DEFINE(HAVE_SSE2, 1, [Define to 1 if your system has SSE2]) - SIMD_CFLAGS=-msse2], - [AC_MSG_RESULT(SSE2 no)], - ) -fi -AC_SUBST(SIMD_CFLAGS) -CFLAGS="$ac_save_CFLAGS" - - dnl PSF dnl === AC_ARG_ENABLE(psf, - [ --disable-psf disable PlayStation (psf/psf2) audio decoder], + [ --disable-psf disable PlayStation (psf/psf2) audio decoder], [enable_psf=$enableval], [enable_psf=yes]) @@ -362,109 +176,21 @@ INPUT_PLUGINS="$INPUT_PLUGINS psf" fi - -dnl *** USF - -AC_ARG_ENABLE(usf, - [ --enable-usf enable the USF input plugin (default=disabled)], - [enable_usf=$enableval], - [enable_usf=no] -) - -if test "x$enable_usf" = "xyes"; then - AC_MSG_CHECKING([if your platform is supported for the USF plugin]) - case "$target" in - x86_64-*-linux-gnu) - AC_MSG_RESULT([yes, AMD64 Linux]) - enable_usf=yes - ;; - i*86-*-linux-gnu) - AC_MSG_RESULT([yes, X86 Linux]) - enable_usf=yes - ;; - *) - AC_MSG_RESULT([no]) - enable_usf=no - ;; - esac - - if test "x$enable_usf" = "xyes"; then - INPUT_PLUGINS="$INPUT_PLUGINS usf" - fi -fi - dnl *** MP3 AC_ARG_ENABLE(mp3, - [ --disable-mp3 disable mp3 plugin. (default=enabled) ], - [enable_mp3=$enableval], - [enable_mp3=yes] -) - -if test "x$enable_mp3" = "xyes"; then - INPUT_PLUGINS="$INPUT_PLUGINS mpg123" -fi + AS_HELP_STRING([--disable-mp3], [disable MP3 plugin (default=enabled)]), + [enable_mp3=$enableval], [enable_mp3=yes]) -dnl *** Rocklight +if test $enable_mp3 = yes ; then + PKG_CHECK_MODULES(MPG123, [libmpg123 >= 1.12], + [enable_mp3=yes], [enable_mp3=no]) -AC_ARG_ENABLE(rocklight, - AS_HELP_STRING([--disable-rocklight], [disable Rocklight vis plugin (default=enabled)]), - [enable_rocklight="$enableval"], - [enable_rocklight="yes"] -) - -if test "x$enable_rocklight" = "xyes"; then - VISUALIZATION_PLUGINS="$VISUALIZATION_PLUGINS rocklight" -fi - -dnl *** LIRC client libraries - -AC_ARG_ENABLE(lirc, - [ --disable-lirc disable LIRC plugin (default=enabled)], - [enable_lirc=$enableval], - [enable_lirc="yes"] -) - -if test "x$enable_lirc" = "xyes"; then - AC_CHECK_LIB([lirc_client],[lirc_init],[have_lirc=yes],[have_lirc=no]) -else - AC_MSG_RESULT([*** LIRC plugin disabled per user request ***]) - have_lirc="no" -fi - -if test "x$have_lirc" = "xyes"; then - AC_CHECK_HEADER(lirc/lirc_client.h,[],[have_lirc=no]) -fi - -if test "x$have_lirc" = "xyes"; then - GENERAL_PLUGINS="$GENERAL_PLUGINS lirc" -fi - -dnl *** EvDev-Plug general plugin (only built on Linux) - -AC_ARG_ENABLE(evdevplug, - [ --disable-evdevplug disable Linux evdev plugin (default=enabled)], - [enable_evdevplug=$enableval], - [enable_evdevplug="yes"] -) - -if test "x$enable_evdevplug" = "xyes"; then - case "$target" in - *-*-linux*) - have_evdevplug="yes" - ;; - *) - AC_MSG_RESULT([*** Linux evdev plugin disabled (host does not run linux) ***]) - have_evdevplug="no" - ;; - esac -else - AC_MSG_RESULT([*** Linux evdev plugin disabled per user request ***]) - have_evdevplug="no" -fi - -if test "x$have_evdevplug" = "xyes"; then - GENERAL_PLUGINS="$GENERAL_PLUGINS evdev-plug" + if test $enable_mp3 = yes ; then + INPUT_PLUGINS="$INPUT_PLUGINS mpg123" + else + AC_MSG_RESULT([*** libmpg123 not found; MP3 plugin disabled]) + fi fi dnl *** Global Hotkey general plugin (only built on X11) @@ -476,8 +202,11 @@ ) if test "x$enable_hotkey" = "xyes"; then - have_hotkey="yes" - PKG_CHECK_MODULES(GDKX11,[gdk-x11-2.0 >= 2.6.0],,[have_hotkey="no"]) + if test $use_gtk3 = yes ; then + PKG_CHECK_MODULES(GDKX11, [gdk-x11-3.0], [have_hotkey="yes"], [have_hotkey="no"]) + else + PKG_CHECK_MODULES(GDKX11, [gdk-x11-2.0], [have_hotkey="yes"], [have_hotkey="no"]) + fi else AC_MSG_RESULT([*** X11 Global Hotkey plugin disabled per user request ***]) have_hotkey="no" @@ -497,8 +226,10 @@ if test "x$enable_gnomeshortcuts" = "xyes"; then have_gnomeshortcuts="yes" - PKG_CHECK_MODULES(DBUS, [dbus-1 >= 0.60 dbus-glib-1 >= 0.60],, - [AC_MSG_ERROR([Cannot find dbus-glib >= 0.60 for gnomeshortcuts plugin])]) + PKG_CHECK_MODULES(DBUS, [dbus-1 >= 0.60 dbus-glib-1 >= 0.60], + [have_gnomeshortcuts=yes], + [AC_MSG_WARN([Cannot find dbus-glib >= 0.60; disabling Gnome shortcuts plugin.]) + have_gnomeshortcuts=no]) else AC_MSG_RESULT([*** Gnome Shortcuts Plugin disabled per user request ***]) have_gnomeshortcuts="no" @@ -508,20 +239,37 @@ GENERAL_PLUGINS="$GENERAL_PLUGINS gnomeshortcuts" fi -dnl *** Status Icon plugin (for X11 only) +dnl Song Change +dnl =========== + +AC_ARG_ENABLE(songchange, + [ --disable-songchange disable song change plugin], + [enable_songchange=$enableval], [enable_songchange="yes"]) + +if test $enable_songchange = yes ; then + AC_CHECK_HEADERS([sys/wait.h], [enable_songchange=yes], + [AC_MSG_WARN([Cannot find sys/wait.h; disabling song change plugin]) + enable_songchange=no]) +fi + +if test $enable_songchange = yes ; then + GENERAL_PLUGINS="$GENERAL_PLUGINS song_change" +fi + +dnl Status Icon +dnl =========== AC_ARG_ENABLE(statusicon, - [ --disable-statusicon disable X11 Status Icon plugin (default=enabled)], - [enable_statusicon=$enableval], - [enable_statusicon="yes"] -) + [ --disable-statusicon disable X11 Status Icon plugin (default=enabled)], + [have_statusicon=$enableval], [have_statusicon="yes"]) -if test "x$enable_statusicon" = "xyes"; then - PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.16.0], [have_statusicon=yes], - [have_statusicon=no]) +if test $have_statusicon = yes ; then + if test $use_gtk3 != yes ; then + PKG_CHECK_MODULES(GTK216, [gtk+-2.0 >= 2.16.0], [have_statusicon=yes], + [have_statusicon=no]) + fi else AC_MSG_RESULT([*** X11 Status Icon plugin disabled per user request ***]) - have_statusicon="no" fi if test "x$have_statusicon" = "xyes"; then @@ -614,6 +362,23 @@ GENERAL_PLUGINS="$GENERAL_PLUGINS notify" fi +dnl MPRIS 2 (requires GDBus) +dnl ======================== + +AC_ARG_ENABLE(mpris2, + AS_HELP_STRING([--disable-mpris2], [disable MPRIS 2 support (default=enabled)]), + [enable_mpris2=$enableval], [enable_mpris2=yes]) + +if test $enable_mpris2 = yes ; then + PKG_CHECK_MODULES([GIO_UNIX], [gio-unix-2.0 >= 2.30], + [enable_mpris2=yes], [enable_mpris2=no]) +fi + +if test $enable_mpris2 = yes ; then + GENERAL_PLUGINS="$GENERAL_PLUGINS mpris2" + AC_SUBST(GIO_UNIX_CFLAGS) + AC_SUBST(GIO_UNIX_LIBS) +fi dnl *** AdPlug requirement (libbinio) @@ -659,7 +424,7 @@ INPUT_PLUGINS="$INPUT_PLUGINS vorbis" fi -dnl *** FLACng (in progress replacement to XMMS-flac port) +dnl *** FLACng AC_ARG_ENABLE(flacng, [ --disable-flacng disable flac input plugin (default=enabled)], @@ -668,8 +433,9 @@ ) if test "x$enable_flacng" = "xyes"; then - AM_PATH_LIBFLAC([have_flacng=yes], - [AC_MSG_WARN([*** Cannot find libFLAC, FLACng will not be built ***]) + PKG_CHECK_MODULES(LIBFLAC, [flac >= 1.2.1], + [have_flacng=yes], + [AC_MSG_WARN([*** Cannot find libFLAC 1.2.1+, FLAC support will not be built ***]) have_flacng=no] ) else @@ -764,12 +530,12 @@ [enable_modplug="yes"] ) -if test "x$enable_modplug" = "xyes"; then - INPUT_PLUGINS="$INPUT_PLUGINS modplug" - have_modplug="yes" -else - AC_MSG_RESULT([*** ModPlug plugin disabled per user request ***]) - have_modplug="no" +if test $enable_modplug = yes ; then + PKG_CHECK_MODULES(MODPLUG, libmodplug, + [INPUT_PLUGINS="$INPUT_PLUGINS modplug" + have_modplug=yes], + [AC_MSG_WARN([*** Cannot find libmodplug; modplug plugin disabled ***]) + have_modplug=no]) fi dnl *** FFaudio @@ -781,22 +547,10 @@ [enable_ffaudio="yes"] ) -dnl In 2010, some libavcodec functions were moved into a new library called -dnl libavcore, making our checks here a bit complex. - if test $enable_ffaudio = yes ; then - PKG_CHECK_MODULES([NEED_AVCORE], [libavcodec >= 52.94.3], - [have_new_ffmpeg=yes], [have_new_ffmpeg=no]) - - if test $have_new_ffmpeg = yes ; then - PKG_CHECK_MODULES([FFMPEG], - [libavcodec >= 52.20.0 libavcore >= 0.12.0 libavformat >= 52.31.0 libavutil >= 49.15.0], - [have_ffaudio=yes], [have_ffaudio=no]) - else - PKG_CHECK_MODULES([FFMPEG], - [libavcodec >= 52.20.0 libavformat >= 52.31.0 libavutil >= 49.15.0], - [have_ffaudio=yes], [have_ffaudio=no]) - fi + PKG_CHECK_MODULES([FFMPEG], + [libavcodec >= 53.40.0 libavformat >= 53.5.0 libavutil >= 50.42.0], + [have_ffaudio=yes], [have_ffaudio=no]) fi if test "x$have_ffaudio" = "xyes"; then @@ -804,19 +558,26 @@ fi dnl *** jack output plugin -AC_ARG_ENABLE( jack, -[ --disable-jack disable jack output plugin (default=enabled)], [enable_jack=$enableval], - [enable_jack="yes"]) -if test "x$enable_jack" = "xyes"; then - AM_PATH_JACK(have_jack=yes, have_jack=no) -else - AC_MSG_RESULT([*** jack plugin disabled per user request ***]) - have_jack=no -fi +AC_ARG_ENABLE(jack, + AS_HELP_STRING([--disable-jack], [disable JACK output plugin (default=enabled)]), + [enable_jack=$enableval], [enable_jack=yes]) + +if test $enable_jack = yes ; then + PKG_CHECK_MODULES(JACK, [jack >= 1.9.7], + [enable_jack=$enable_jack], [ + PKG_CHECK_MODULES(JACK, [jack >= 0.120.1 jack < 1.0], + [enable_jack=$enable_jack], [enable_jack=no]) + ]) -if test "x$have_jack" = "xyes"; then - OUTPUT_PLUGINS="$OUTPUT_PLUGINS jack" + PKG_CHECK_MODULES([SAMPLERATE], [samplerate], + [enable_jack=$enable_jack], [enable_jack=no]) + + if test $enable_jack = yes ; then + OUTPUT_PLUGINS="$OUTPUT_PLUGINS jack" + else + AC_MSG_RESULT([*** JACK or libsamplerate not found; JACK output plugin disabled]) + fi fi dnl *** sid @@ -835,157 +596,86 @@ INPUT_PLUGINS="$INPUT_PLUGINS sid" fi -dnl *** OSS output +dnl OSS output +dnl ========== AC_ARG_ENABLE(oss, - [ --disable-oss disable the OSS output plugin (default=enabled)], - [enable_oss=$enableval], - [enable_oss=yes] -) - -have_oss=no -if test "x$enable_oss" = "xyes"; then - AC_MSG_CHECKING(for OSS include dir) - OSS_CFLAGS="" - if test -f "/etc/oss.conf" ; then - for i in `cat /etc/oss.conf`; do - t=`echo $i | sed -e 's/OSSLIBDIR=//'` - if test "x$i" != "x$t" ; then - if test -f "$t/include/sys/soundcard.h" -o -f "$i/include/soundcard.h" ; then - OSS_CFLAGS="-I$t/include" - fi - fi - done - fi - if test -n "$OSS_CFLAGS" ; then - AC_MSG_RESULT([$OSS_CFLAGS]) - else - AC_MSG_RESULT([not found]) - fi - CFLAGS_save=$CFLAGS - CFLAGS="$CFLAGS $OSS_CFLAGS" - AC_CHECK_HEADERS(soundcard.h) - AC_CHECK_HEADERS(sys/soundcard.h) - AC_CHECK_HEADERS(machine/soundcard.h) - CFLAGS=$CFLAGS_save + [ --enable-oss enable OSS3 output plugin], + [enable_oss="$enableval"], + [enable_oss="no"] +) - if test "x${ac_cv_header_soundcard_h}" = "xyes" || test "x${ac_cv_header_sys_soundcard_h}" = "xyes" || test "x${ac_cv_header_machine_soundcard_h}" = "xyes"; then - have_oss=yes +AC_ARG_ENABLE(oss4, + [ --disable-oss4 disable OSS4 output plugin], + [enable_oss4="$enableval"], + [enable_oss4="yes"] +) + +have_oss="no" +have_oss4="no" +OSS_CFLAGS="" + +if test "$enable_oss" = "yes" || test "$enable_oss4" = "yes" ; then + if test -f "/etc/oss.conf"; then + . "/etc/oss.conf" + OSS_CFLAGS="-I$OSSLIBDIR/include" fi - if test "x${have_oss}" = "xyes"; then - AC_MSG_CHECKING(whether we need -lossaudio) - AC_TRY_LINK([ - #include - #ifdef HAVE_SYS_SOUNDCARD_H - #include - #else - #include - #endif - ], [ - int fd, value; - ioctl(fd, SOUND_MIXER_READ_VOLUME, &value); - ], AC_MSG_RESULT(no), [ - OSS_LIBS="-lossaudio" - AC_MSG_RESULT(yes) - ]) - fi -fi + OLD_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $OSS_CFLAGS" -if test "x$have_oss" = "xyes"; then - AC_DEFINE(HAVE_OSS, 1, [Define if the OSS output plugin should be built]) -else - have_oss=no -fi - -if test "x$have_oss" = "xyes"; then - OUTPUT_PLUGINS="$OUTPUT_PLUGINS OSS" -fi -AC_SUBST(OSS_CFLAGS) -AC_SUBST(OSS_LIBS) + AC_CHECK_HEADERS([sys/soundcard.h soundcard.h], + [have_oss="yes"], [have_oss="$have_oss"]) + if test "$enable_oss4" = "yes" && test "$have_oss" = "yes" ; then + AC_MSG_CHECKING(for OSS4) -dnl *** OSS4 output + AC_EGREP_CPP(yes, + [#ifdef HAVE_SYS_SOUNDCARD_H + #include + #else + #include + #endif + #if OSS_VERSION >= 0x40000 || SOUND_VERSION >= 0x40000 + yes + #endif], + [have_oss4="yes"], + [have_oss4="no"]) -AC_ARG_ENABLE(oss4, - [ --enable-oss4 enable the OSS4 output plugin (default=disabled)], - [enable_oss4=$enableval], - [enable_oss4=no] -) - -have_oss4=no -if test "x$enable_oss4" = "xyes"; then - AC_MSG_CHECKING(for OSS4 include dir) - OSS4_CFLAGS="" - if test -f "/etc/oss.conf" ; then - for i in `cat /etc/oss.conf`; do - t=`echo $i | sed -e 's/OSSLIBDIR=//'` - if test "x$i" != "x$t" ; then - if test -f "$t/include/sys/soundcard.h" -o -f "$i/include/soundcard.h" ; then - OSS4_CFLAGS="-I$t/include" - fi - fi - done + AC_MSG_RESULT([$have_oss4]) fi - if test -n "$OSS4_CFLAGS" ; then - AC_MSG_RESULT([$OSS4_CFLAGS]) - else - AC_MSG_RESULT([not found]) - fi - CFLAGS_save=$CFLAGS - CFLAGS="$CFLAGS $OSS4_CFLAGS" - AC_CHECK_HEADERS(soundcard.h) - AC_CHECK_HEADERS(sys/soundcard.h) - AC_CHECK_HEADERS(machine/soundcard.h) - CFLAGS=$CFLAGS_save - if test "x${ac_cv_header_soundcard_h}" = "xyes" || test "x${ac_cv_header_sys_soundcard_h}" = "xyes" || test "x${ac_cv_header_machine_soundcard_h}" = "xyes"; then - have_oss4=yes - fi + CPPFLAGS="$OLD_CPPFLAGS" +fi - if test "x${have_oss4}" = "xyes"; then - AC_MSG_CHECKING(whether we need -lossaudio) - AC_TRY_LINK([ - #include - #ifdef HAVE_SYS_SOUNDCARD_H - #include - #else - #include - #endif - ], [ - int fd, value; - ioctl(fd, SOUND_MIXER_READ_VOLUME, &value); - ], AC_MSG_RESULT(no), [ - OSS_LIBS="-lossaudio" - AC_MSG_RESULT(yes) - ]) - fi +AC_SUBST(OSS_CFLAGS) + +if test "$enable_oss" = "yes" && test "$have_oss" = "no" ; then + enable_oss="no" fi -if test "x$have_oss4" = "xyes"; then - AC_DEFINE(HAVE_OSS4, 1, [Define if the OSS4 output plugin should be built]) -else - have_oss4=no +if test "$enable_oss" = "yes"; then + OUTPUT_PLUGINS="$OUTPUT_PLUGINS OSS" fi -if test "x$have_oss4" = "xyes"; then - OUTPUT_PLUGINS="$OUTPUT_PLUGINS oss4" +if test "$enable_oss4" = "yes" && test "$have_oss4" = "no" ; then + enable_oss4="no" fi -AC_SUBST(OSS_LIBS) +if test "$enable_oss4" = "yes"; then + OUTPUT_PLUGINS="$OUTPUT_PLUGINS oss4" +fi dnl *** ALSA output plugin AC_ARG_ENABLE(alsa, - [ --disable-alsa disable ALSA input plugin (default=enabled)], + [ --disable-alsa disable ALSA output plugin], [enable_alsa=$enableval], [enable_alsa=yes] ) if test "x$enable_alsa" = "xyes"; then - PKG_CHECK_MODULES([ALSA], [alsa >= 1.0], [have_alsa=yes], [have_alsa=no]) - AC_CHECK_LIB([asound], [snd_device_name_hint], - AC_DEFINE(HAVE_SND_DEVICE_NAME_HINT, 1, Define if you have snd_device_name_hint)) + PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.16], [have_alsa=yes], [have_alsa=no]) else AC_MSG_RESULT([*** ALSA output plugin disabled per user request ***]) have_alsa=no @@ -995,6 +685,21 @@ OUTPUT_PLUGINS="$OUTPUT_PLUGINS alsa" fi +dnl SDL Output +dnl ========== + +AC_ARG_ENABLE(sdlout, + [ --disable-sdlout disable SDL output plugin], + [enable_sdlout=$enableval], [enable_sdlout=yes]) + +if test $enable_sdlout = yes ; then + AM_PATH_SDL(1.2.5, [enable_sdlout=yes], [enable_sdlout=no]) +fi + +if test $enable_sdlout = yes ; then + OUTPUT_PLUGINS="$OUTPUT_PLUGINS sdlout" +fi + dnl *** amidi-plug (note: to avoid checking twice ALSA, this should appear somewhere after the alsa output plugin check) @@ -1045,7 +750,7 @@ enable_amidiplug=yes else enable_amidiplug=no - AC_MSG_WARN([*** Neither ALSA or FluidSynth software synth (>= 1.0.6) have been found, so amidi-plug won't be compiled unless you explicitly request it with --enable-amidiplug ***]) + AC_MSG_WARN(["*** Neither ALSA or FluidSynth software synth (>= 1.0.6) have been found, so amidi-plug won't be compiled unless you explicitly request it with --enable-amidiplug ***"]) fi fi fi @@ -1089,43 +794,8 @@ AC_SUBST(AMIDIPLUG_BACKENDS) fi -dnl FreeBSD newpcm driver detection - -AC_CACHE_CHECK(for FreeBSD newpcm driver, beep_cv_newpcm_driver, - if test -r "/dev/sndstat"; then - grep 'newpcm' /dev/sndstat 2>/dev/null 1>/dev/null - if test "x$?" = "x0"; then - beep_cv_newpcm_driver="yes" - else - beep_cv_newpcm_driver="no" - fi - else - beep_cv_newpcm_driver="no" - fi -) - -if test "x$beep_cv_newpcm_driver" = "xyes"; then - AC_DEFINE(HAVE_NEWPCM, 1, [Define if you have the FreeBSD newpcm driver]) -fi - - -AC_CHECK_HEADERS(linux/joystick.h) -AC_CHECK_HEADERS(unistd.h) -AC_CHECK_HEADERS(fcntl.h) -AC_CHECK_HEADERS(sys/ioctl.h) -AC_CHECK_HEADERS(fnmatch.h) -AC_CHECK_HEADERS(limits.h) -AC_CHECK_HEADERS(wchar.h) -AC_CHECK_HEADERS(fts.h) - -AC_CHECK_DECL([lrintf],[AC_DEFINE(HAVE_LRINTF,1)],[AC_CHECK_FUNCS([lrintf])],[ -#define _ISOC9X_SOURCE -#include -], [AC_CHECK_FUNCS([lrintf])]) -AC_CHECK_FUNCS([mkdtemp getmntinfo statvfs strtoul]) - - -dnl CD-Audio New Generation +dnl Audio CD +dnl ======== AC_ARG_ENABLE(cdaudio, [ --disable-cdaudio disable cdaudio-ng input plugin (default=enabled) ], @@ -1165,76 +835,11 @@ ) fi -AC_ARG_ENABLE(streambrowser, - [ --disable-streambrowser disable streambrowser general plugin (default=enabled) ], - [enable_streambrowser=$enableval], - [enable_streambrowser=yes] -) - -if test "$enable_streambrowser" = "yes"; then - GENERAL_PLUGINS="$GENERAL_PLUGINS streambrowser" -fi - -AM_CONDITIONAL(HAVE_CDROM, test "${ac_cv_header_linux_cdrom_h}" = "yes" || test "${ac_cv_header_sys_cdio_h}" = "yes") -AM_CONDITIONAL(HAVE_LINUX_JOYSTICK,test "${ac_cv_header_linux_joystick_h}" = "yes") - -CPPFLAGS="$CPPFLAGS $AUDACIOUS_CFLAGS $DBUS_CFLAGS" - -AC_MSG_CHECKING(if __ELF__ is defined) -AC_EGREP_CPP(yes, - [#ifdef __ELF__ - yes - #endif - ], - [is_elf=yes], - [is_elf=no] -) -AC_MSG_RESULT([${is_elf}]) - - -have_solaris=no -have_sun=no -ARCH_DEFINES="" -case "$host" in - *-*-openbsd* | *-*-netbsd* | *-*-mirbsd*) - have_sun=yes - if test "${is_elf}" = "no" - then - AC_DEFINE(SYMBOL_PREFIX, "_", [Define to symbol prefix, if any]) - fi - OUTPUT_PLUGINS="$OUTPUT_PLUGINS sun" - ;; - *-*-darwin*) - AC_DEFINE(SYMBOL_PREFIX, "_", [Define to symbol prefix, if any]) - ;; - *-hpux-*) - ARCH_DEFINES="-DHPUX" - ;; - *-*-solaris* | *-*-sunos*) - have_solaris=yes - ;; -esac - -arch_type=other -x86_asm=no -case "$host" in - i386-*-* | i486-*-* | i586-*-* | i686-*-* | i86pc-*-*) - arch_type=ix86 - case "$host" in - *-*-netbsd* | *-*openbsd* | *-*-mirbsd*) - ;; - *) - ARCH_DEFINES="-DI386_ASSEM" - x86_asm=yes - ;; - esac - ;; -esac dnl *** scrobbler *** AC_ARG_ENABLE(scrobbler, - [ --enable-scrobbler enable Scrobbler plugin (default=enabled)], + [ --disable-scrobbler disable Scrobbler plugin (default=enabled)], [have_scrobbler=$enableval], [have_scrobbler="yes"]) if test "x$have_scrobbler" = "xyes"; then @@ -1264,8 +869,8 @@ AC_SUBST([NEON_LIBS]) AC_SUBST([NEON_CFLAGS]) - -dnl *** MMS +dnl MMS +dnl === AC_ARG_ENABLE(mms, [ --disable-mms disable mms support. (default=enabled)], @@ -1280,6 +885,22 @@ AC_MSG_RESULT([*** mms plugin disabled by request ***]) fi +dnl SMB +dnl === + +AC_ARG_ENABLE(smb, + AS_HELP_STRING([--enable-smb], [enable SMB transport (default=disabled)]), + [enable_smb="$enableval"], [enable_smb="no"]) + +if test $enable_smb = yes ; then + AC_CHECK_HEADERS([libsmbclient.h], [enable_smb=yes], [enable_smb=no]) + + if test $enable_smb = yes ; then + TRANSPORT_PLUGINS="$TRANSPORT_PLUGINS smb" + else + AC_MSG_RESULT([*** libsmbclient not found; SMB client disabled]) + fi +fi dnl *** MTP Upload @@ -1290,14 +911,9 @@ if test "x$have_mtp_up" = "xyes"; then have_mtp_up=yes - PKG_CHECK_MODULES(MTP, [libmtp >= 0.1.3], [GENERAL_PLUGINS="$GENERAL_PLUGINS mtp_up" ], [have_mtp_up="no"]) + PKG_CHECK_MODULES(MTP, [libmtp >= 0.3.5], [GENERAL_PLUGINS="$GENERAL_PLUGINS mtp_up" ], [have_mtp_up="no"]) MTP_LIBS=`pkg-config --libs libmtp` MTP_CFLAGS=`pkg-config --cflags libmtp` - dnl Check for libmtp 0.3.0+ - PKG_CHECK_EXISTS(libmtp >= 0.3.0, libmtp_030_pkg=yes, libmtp_030_pkg=no) - if test x"$libmtp_030_pkg" = "xyes" ; then - AC_DEFINE([HAVE_LIBMTP_030], 1, [indidaces if libmtp 0.3.0 is installed]) - fi else have_mtp_up=no AC_MSG_RESULT([*** mtp upload plugin disabled by request ***]) @@ -1305,51 +921,6 @@ AC_SUBST(MTP_LIBS) AC_SUBST(MTP_CFLAGS) -dnl *** Bluetooth audio support - -AC_ARG_ENABLE(bluetooth, -[ --disable-bluetooth disable bluetooth audio support. (default=enabled)], -[have_bluetooth=$enableval], -[have_bluetooth=yes]) - -dnl This has been broken by the output plugin on-demand work -have_bluetooth=no -if test "x$have_bluetooth" = "xyes" -a "x$have_alsa" = "xyes"; then - have_bluetooth=yes - PKG_CHECK_MODULES(BLUEZ, [bluez >= 2.22], - [GENERAL_PLUGINS="$GENERAL_PLUGINS bluetooth" ], [have_bluetooth="no"]) - BLUEZ_LIBS=`pkg-config --libs bluez` - BLUEZ_CFLAGS=`pkg-config --cflags bluez` -else - have_bluetooth=no - AC_MSG_RESULT([*** bluetooth audio support plugin disabled by request ***]) -fi -AC_SUBST(BLUEZ_LIBS) -AC_SUBST(BLUEZ_CFLAGS) - -dnl *** libparanormal checks - -AC_ARG_ENABLE(paranormal, -[ --disable-paranormal disable paranormal vis plugin. (default=enabled)], -[have_paranormal=$enableval], -[have_paranormal=yes]) - -if test "x$have_paranormal" = "xyes"; then - have_paranormal=yes - AM_PATH_SDL(1.2.5, , [ - AC_MSG_WARN([*** SDL is not installed. Paranormal will not be built. ***]) - have_paranormal="no" - ]) -else - have_paranormal=no - AC_MSG_RESULT([*** paranormal plugin disabled by request ***]) -fi - -if test "x$have_paranormal" = "xyes"; then - VISUALIZATION_PLUGINS="$VISUALIZATION_PLUGINS paranormal" -fi - - dnl XSPF dnl ---- @@ -1378,67 +949,8 @@ AC_MSG_RESULT([*** cue plugin disabled by request ***]) fi -dnl *** projectM (GL Milkdrop port) - -AC_ARG_ENABLE(projectm, -[ --disable-projectm disable projectM vis plugin. (default=enabled)], -[have_projectm=$enableval], -[have_projectm=yes]) - -if test "x$have_projectm" = "xyes"; then - PKG_CHECK_MODULES(LIBPROJECTM, libprojectM < 1.0, [have_projectm="yes"], [have_projectm="no"]) - AM_PATH_SDL(1.2.5, , [ - AC_MSG_WARN([*** SDL is not installed. projectM will not be built. ***]) - have_projectm="no" - ]) - if test "x$libprjM" = "xno"; then - AC_MSG_WARN([*** libprojectM not found. - libprojectM is needed to build this package. - You can download libprojectM at http://projectm.sf.net/]) - fi - LIBPROJECTM_datadir=`pkg-config --variable=pkgdatadir libprojectM`; - LIBPROJECTM_sysconfdir=`pkg-config --variable=sysconfdir libprojectM`; - LIBPROJECTM_CFLAGS="$LIBPROJECTM_CFLAGS -DPROJECTM_DATADIR=\\\"$LIBPROJECTM_datadir\\\" -DPROJECTM_SYSCONFDIR=\\\"$LIBPROJECTM_sysconfdir\\\""; -fi -AC_SUBST(LIBPROJECTM_LIBS) -AC_SUBST(LIBPROJECTM_CFLAGS) - -if test "x$have_projectm" = "xyes"; then - VISUALIZATION_PLUGINS="$VISUALIZATION_PLUGINS projectm" -fi - -dnl *** projectM (GL Milkdrop port) - -AC_ARG_ENABLE(projectm-1.0, -[ --disable-projectm-1.0 disable projectM 1.0+ vis plugin. (default=enabled)], -[have_projectm1=$enableval], -[have_projectm1=yes]) - -if test "$have_projectm1" = "yes"; then - PKG_CHECK_MODULES(LIBPROJECTM1, [libprojectM >= 1.1], [have_projectm1="yes"], [have_projectm1="no"]) -fi - -if test "$have_projectm1" = "yes"; then - PKG_CHECK_MODULES(GTKGLEXT, [gtkglext-1.0], [have_projectm1="yes"], [have_projectm1="no"]) -fi - -if test "$have_projectm1" = "yes"; then - LIBPROJECTM1_datadir=`pkg-config --variable=pkgdatadir libprojectM`; - LIBPROJECTM1_sysconfdir=`pkg-config --variable=sysconfdir libprojectM`; - LIBPROJECTM1_prefix=`pkg-config --variable=prefix libprojectM`; - LIBPROJECTM1_CFLAGS="$LIBPROJECTM1_CFLAGS -DPROJECTM_DATADIR=\\\"$LIBPROJECTM1_datadir\\\" -DPROJECTM_SYSCONFDIR=\\\"$LIBPROJECTM1_sysconfdir\\\" -DPROJECTM_PREFIX=\\\"$LIBPROJECTM1_prefix\\\""; -fi - -AC_SUBST(LIBPROJECTM1_LIBS) -AC_SUBST(LIBPROJECTM1_CFLAGS) -AC_SUBST(GTKGLEXT_LIBS) -AC_SUBST(GTKGLEXT_CFLAGS) - -if test "x$have_projectm1" = "xyes"; then - VISUALIZATION_PLUGINS="$VISUALIZATION_PLUGINS projectm-1.0" -fi - -dnl *** FileWriter +dnl FileWriter +dnl ========== AC_ARG_ENABLE(filewriter, [ --disable-filewriter disable FileWriter output plugin (default=enabled) ], @@ -1534,14 +1046,36 @@ ) if test "x$enable_resample" = "xyes"; then - AC_CHECK_LIB([samplerate], [src_process], [enable_resample=yes], - [enable_resample=no]) + PKG_CHECK_MODULES([SAMPLERATE], [samplerate], + [enable_resample=yes], [enable_resample=no]) fi if test "x$enable_resample" = "xyes"; then EFFECT_PLUGINS="$EFFECT_PLUGINS resample" fi +dnl GTK Interface +dnl ============= + +AC_ARG_ENABLE(gtkui, + [ --disable-gtkui disable GTK interface (gtkui)], + [enable_gtkui=$enableval], [enable_gtkui="yes"]) + +if test $enable_gtkui = yes ; then + GENERAL_PLUGINS="$GENERAL_PLUGINS gtkui" +fi + +dnl Winamp Classic Interface +dnl ============= + +AC_ARG_ENABLE(skins, + [ --disable-skins disable Winamp Classic interface (skins)], + [enable_skins=$enableval], [enable_skins="yes"]) + +if test $enable_skins = yes ; then + GENERAL_PLUGINS="$GENERAL_PLUGINS skins" +fi + dnl LyricWiki dnl ========= @@ -1550,7 +1084,8 @@ [enable_lyricwiki=$enableval], [enable_lyricwiki=yes]) if test "x$enable_lyricwiki" = "xyes"; then - PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.14], [enable_lyricwiki=yes], [enable_lyricwiki=no]) + PKG_CHECK_MODULES(GLIB214, [glib-2.0 >= 2.14], [enable_lyricwiki=yes], + [enable_lyricwiki=no]) fi if test "x$enable_lyricwiki" = "xyes"; then @@ -1559,14 +1094,6 @@ dnl *** End of all plugin checks *** -AC_SUBST(ARCH_DEFINES) - -dnl XXX delete ASAP -nenolod -AM_CONDITIONAL(ARCH_X86, test "x$arch_type" = "xix86") -AM_CONDITIONAL(USE_X86ASM, test "x$x86_asm" = xyes) -AM_CONDITIONAL(HAVE_SOLARIS, test "x$have_solaris" = xyes) -AM_CONDITIONAL(HAVE_SUN, test "x$have_sun" = xyes) - plugindir=`pkg-config audacious --variable=plugin_dir` AC_SUBST(plugindir) @@ -1601,20 +1128,6 @@ localedir="$datadir/locale" AC_SUBST(localedir) -BEEP_DEFINES="$CFLAGS -DDATA_DIR=\\\"$datadir/audacious\\\" -DPLUGIN_DIR=\\\"$plugindir\\\" -DPLUGINSUBS=$pluginsubs -DLOCALEDIR=\\\"$localedir\\\"" -CFLAGS="$CFLAGS $EXTRA_CFLAGS" - -if test "x$enable_user_plugin_dir" = "xno"; then - AC_DEFINE(DISABLE_USER_PLUGIN_DIR,, [Define to disable per user plugin directory]) -fi - -AC_DEFINE(BMP_RCPATH, ".audacious", [Config dir to use]) - -AC_SUBST(BEEP_DEFINES) - -AC_SUBST(beepdir) -AC_SUBST(plugindir) - AC_SUBST(EFFECT_PLUGINS) AC_SUBST(GENERAL_PLUGINS) AC_SUBST(INPUT_PLUGINS) @@ -1639,19 +1152,17 @@ echo echo " Output Plugins" echo " --------------" -echo " Open Sound System (oss): $have_oss" -echo " Open Sound System v4 (oss4): $have_oss4" +echo " Open Sound System (oss4): $enable_oss4" echo " Advanced Linux Sound Arch. (alsa): $have_alsa" echo " PulseAudio (pulse): $have_pulse" -echo " RoarAudio (roaraudio): $have_roar" -echo " Jack Audio Connection Kit (jack): $have_jack" -echo " BSD/SUN audio output (sun): $have_sun" -echo " Mac OS X sound support (CoreAudio): $have_coreaudio" +echo " Jack Audio Connection Kit (jack): $enable_jack" +echo " Simple DirectMedia Layer (sdlout): $enable_sdlout" echo " FileWriter: $enable_filewriter" echo " -> FileWriter MP3 output part: $have_lame" echo " -> FileWriter Vorbis output part: $have_vorbisenc" echo " -> FileWriter FLAC output part: $have_writer_flac" echo " Null Audio output (null): yes" +echo " Open Sound System v3 (deprecated): $enable_oss" echo echo " Input Plugins" echo " -------------" @@ -1671,64 +1182,65 @@ echo " -> libSIDPlay1 support: $xs_have_sidplay1" echo " -> libSIDPlay2 support: $xs_have_sidplay2" echo " -> distortion patched libSIDPlay2: $xs_have_distortion" -echo " Game music (spc, nsf & gbs): yes" +echo " Game music (spc, nsf & gbs): $enable_console" echo " PlayStation (psf/psf2) audio: $enable_psf" -echo " Nintendo 64 audio (usf): $enable_usf" -echo " Nintendo DS audio (xsf): yes [experimental]" +echo " Nintendo DS audio (xsf): $enable_xsf" echo " AdLib synthesizer (adplug): $have_adplug" -echo " Apple Lossless Audio Codec (alac): $have_ffaudio" echo " WavPack 4.31+ (wavpack): $have_wavpack" echo " Metronom: yes" echo echo " General" echo " -------" echo " Alarm: yes" -echo " Song Change: yes" +echo " Album Art: yes" +echo " MPRIS 2 Server: $enable_mpris2" +echo " Search Tool: yes" +echo " Song Change: $enable_songchange" echo " Status Icon: $have_statusicon" echo " Audacious OSD: $have_aosd" echo " -> X Composite support: $have_aosd_xcomp" echo " libnotify OSD: $have_notify" -echo " Control via event device (evdev-plug): $have_evdevplug" echo " Global Hotkey Plugin: $have_hotkey" echo " Gnome Shortcuts Plugin: $have_gnomeshortcuts" -echo " LIRC: $have_lirc" echo " AudioScrobbler Client: $have_scrobbler" echo " Upload to MTP device: $have_mtp_up" -echo " Bluetooth audio support: $have_bluetooth" -echo " MacOS Dock Album Art plugin: $have_dockalbumart" -echo " Streambrowser: $enable_streambrowser" echo " LyricWiki viewer: $enable_lyricwiki" echo echo " Effect" echo " ------" +echo " Channel Mixer: yes" +echo " Crystalizer: yes" echo " Dynamic Range Compressor: yes" -echo " LADSPA effects host (ladspa): yes" -echo " Voice Removal: yes" -echo " Extra Stereo: yes" echo " Echo/Surround: yes" +echo " Extra Stereo: yes" +echo " LADSPA Host: yes" echo " SndStretch: yes" -echo " Crystalizer: yes" +echo " Voice Removal: yes" echo " Bauer stereophonic-to-binaural (bs2b): $have_bs2b" echo " Sample Rate Converter (resample): $enable_resample" echo echo " Visualization" echo " -------------" echo " Blur Scope: yes" -echo " Spectrum Analyzer: yes" -echo " Paranormal Visualization Library: $have_paranormal" -echo " projectM 0.x (GL milkdrop): $have_projectm" -echo " projectM 1.x (GL milkdrop): $have_projectm1" +echo " Cairo Spectrum Analyzer: yes" echo echo " Transport" echo " ---------" -echo " gio transport: $enable_gio" echo " neon-based http/https: $have_neon" echo " libmms-based mms: $have_mms" +echo " GIO transport (experimental): $enable_gio" +echo " SMB transport (experimental): $enable_smb" echo echo " Container" echo " ---------" +echo " Audacious playlist format (audpl): yes" echo " Winamp PLS playlist format (pls): yes" echo " M3U playlist format (m3u): yes" echo " XML Sharable Playlist Format (xspf): yes" echo " CUE playlist format (cue): $have_cue" echo +echo " Interfaces" +echo " ----------" +echo " GTK (gtkui): $enable_gtkui" +echo " Winamp Classic (skins): $enable_skins" +echo diff -Nru audacious-plugins-2.4.4/debian/changelog audacious-plugins-3.2/debian/changelog --- audacious-plugins-2.4.4/debian/changelog 2012-01-09 15:48:11.000000000 +0000 +++ audacious-plugins-3.2/debian/changelog 2012-01-27 08:02:40.000000000 +0000 @@ -1,20 +1,17 @@ -audacious-plugins (2.4.4-1build3) precise; urgency=low - - * Rebuild for libcdio10. - - -- Colin Watson Mon, 09 Jan 2012 15:48:11 +0000 - -audacious-plugins (2.4.4-1build2) oneiric; urgency=low - - * Rebuild for fluidsynth transition (LP: #821346). - - -- Alessio Treglia Fri, 05 Aug 2011 18:34:13 +0200 - -audacious-plugins (2.4.4-1build1) oneiric; urgency=low - - * Rebuild for Libav 0.7 - - -- Reinhard Tartler Sun, 29 May 2011 15:19:36 +0200 +audacious-plugins (3.2-1) unstable; urgency=low + + * New upstream release. (Closes: #657095) + * debian/control: + + Added build-deps necessary for mp3, bs2b and modplug support. + + Enabling OSS4 support. (Closes: #632303) + + Raised the build-dep of audacious-dev to 3.2. + * debian/rules: + + Removed "--enable-chardet" and "--disable-altivec" config flags as they + are not used anymore. + * Add correct_spelling_error.diff to suppress the lintian warning (patch + submitted upstream) + + -- Cyril Lavier Fri, 27 Jan 2012 09:02:40 +0100 audacious-plugins (2.4.4-1) unstable; urgency=low diff -Nru audacious-plugins-2.4.4/debian/control audacious-plugins-3.2/debian/control --- audacious-plugins-2.4.4/debian/control 2011-04-11 15:07:57.000000000 +0000 +++ audacious-plugins-3.2/debian/control 2012-01-26 22:01:52.000000000 +0000 @@ -3,14 +3,16 @@ Priority: optional Maintainer: Debian Multimedia Maintainers Uploaders: Chris Taylor , - Bilal Akhtar -Build-Depends: audacious-dev (>= 2.4.3), + Bilal Akhtar , + Cyril Lavier +Build-Depends: audacious-dev (>= 3.2), debhelper (>= 7.0.50~), libasound2-dev (>= 1.0) [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386] | libasound-dev (>= 1.0) [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], libavcodec-dev (>= 4:0.6.1), libavformat-dev (>= 4:0.6.1), libavutil-dev (>= 4:0.6.1), libbinio-dev (>= 1.4), + libbs2b-dev, libcairo2-dev (>= 1.2.4), libcddb2-dev (>= 1.2.1) | libcddb-dev (>= 1.2.1), libcdio-cdda-dev (>= 0.70), @@ -29,8 +31,12 @@ libmad0-dev, libmcs-dev, libmms-dev (>= 0.3), + libmodplug-dev, + libmp3lame-dev, + libmpg123-dev, libmtp-dev (>= 0.1.3), libneon27-gnutls-dev (>= 0.26), + libnotify-dev, libogg-dev (>= 1.0), libprojectm-dev (>> 1.0), libpulse-dev (>= 0.9) [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], @@ -43,7 +49,8 @@ libtagc0-dev (>= 1.4), libvorbis-dev (>= 1.1), libwavpack-dev (>= 4.31), - libxcomposite-dev + libxcomposite-dev, + oss4-dev Homepage: http://www.audacious-media-player.org/ Standards-Version: 3.9.2 VCS-Browser: http://git.debian.org/?p=pkg-multimedia/audacious-plugins.git;a=summary diff -Nru audacious-plugins-2.4.4/debian/copyright audacious-plugins-3.2/debian/copyright --- audacious-plugins-2.4.4/debian/copyright 2011-04-04 12:19:52.000000000 +0000 +++ audacious-plugins-3.2/debian/copyright 2012-01-27 08:04:43.000000000 +0000 @@ -1,6 +1,5 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135 -Name: audacious-plugins -Maintainer: Adam Cécile (Le_Vert) +Format: http://anonscm.debian.org/viewvc/dep/web/deps/dep5.mdwn?revision=174 +Upstream-Name: audacious-plugins Source: http://www.audacious-media-player.org/ Files: * @@ -48,7 +47,7 @@ Files: src/adplug/* Copyright: 2002, 2007 Simon Peter -Liense: LGPL-2.1+ +License: LGPL-2.1+ Files: src/adplug/core/adl.cxx Copyright: 2006 The ScummVM project @@ -197,8 +196,8 @@ Copyright: 2005-2009 William Pitcock, Yoshiki Yazawa, John Lindgren License: GPL-2 -Files src/metronom/* -Copyright: 2000 Martin Strau? +Files: src/metronom/* +Copyright: 2000 Martin Strauß License: GPL-2+ Files: src/modplug/* @@ -272,7 +271,7 @@ License: GPL-3 Files: src/smb/* -Copyright 2007 Daniel Bradshaw +Copyright: 2007 Daniel Bradshaw License: GPL-2+ Files: src/sndfile/* diff -Nru audacious-plugins-2.4.4/debian/patches/correct_spelling_error.diff audacious-plugins-3.2/debian/patches/correct_spelling_error.diff --- audacious-plugins-2.4.4/debian/patches/correct_spelling_error.diff 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/debian/patches/correct_spelling_error.diff 2012-01-26 22:01:52.000000000 +0000 @@ -0,0 +1,409 @@ +Description: Correct the spelling error "ouput" in place of "output" +Forwarded: http://redmine.audacious-media-player.org/issues/63 +Author: Cyril Lavier +Last-Update: 2012-01-26 +--- a/po/audacious-plugins.pot ++++ b/po/audacious-plugins.pot +@@ -332,7 +332,7 @@ + "time software synthesizer based on the SoundFont2 specification (www." + "fluidsynth.org).\n" + "Produced audio can be manipulated via player effect plugins and is processed " +-"by chosen ouput plugin.\n" ++"by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + +--- a/po/ca.po ++++ b/po/ca.po +@@ -116,7 +116,7 @@ + "time software synthesizer based on the SoundFont2 specification (www." + "fluidsynth.org).\n" + "Produced audio can be manipulated via player effect plugins and is processed " +-"by chosen ouput plugin.\n" ++"by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "Aquest fons produeix so, tot enviant esdeveniments MIDI al programa " +@@ -5513,7 +5513,7 @@ + #~ msgid "" + #~ "* Select ALSA mixer card *\n" + #~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +-#~ "ouput plugins from the player. During playback, the player volumeslider " ++#~ "output plugins from the player. During playback, the player volumeslider " + #~ "will manipulate the mixer control you select here. If you're using " + #~ "wavetable synthesizer ports, you'll probably want to select the Synth " + #~ "control here." +@@ -5528,7 +5528,7 @@ + #~ msgid "" + #~ "* Select ALSA mixer control *\n" + #~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +-#~ "ouput plugins from the player. During playback, the player volume slider " ++#~ "output plugins from the player. During playback, the player volume slider " + #~ "will manipulate the mixer control you select here. If you're using " + #~ "wavetable synthesizer ports, you'll probably want to select the Synth " + #~ "control here." +--- a/po/cs.po ++++ b/po/cs.po +@@ -413,7 +413,7 @@ + "time software synthesizer based on the SoundFont2 specification (www." + "fluidsynth.org).\n" + "Produced audio can be manipulated via player effect plugins and is processed " +-"by chosen ouput plugin.\n" ++"by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "Tento backend vytváří zvuky zasíláním MIDI událostí do FluidSynth, což je " +@@ -5473,7 +5473,7 @@ + #~ msgid "" + #~ "* Select ALSA mixer card *\n" + #~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +-#~ "ouput plugins from the player. During playback, the player volumeslider " ++#~ "output plugins from the player. During playback, the player volumeslider " + #~ "will manipulate the mixer control you select here. If you're using " + #~ "wavetable synthesizer ports, you'll probably want to select the Synth " + #~ "control here." +@@ -5488,7 +5488,7 @@ + #~ msgid "" + #~ "* Select ALSA mixer control *\n" + #~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +-#~ "ouput plugins from the player. During playback, the player volume slider " ++#~ "output plugins from the player. During playback, the player volume slider " + #~ "will manipulate the mixer control you select here. If you're using " + #~ "wavetable synthesizer ports, you'll probably want to select the Synth " + #~ "control here." +--- a/po/cy.po ++++ b/po/cy.po +@@ -104,7 +104,7 @@ + "time software synthesizer based on the SoundFont2 specification (www." + "fluidsynth.org).\n" + "Produced audio can be manipulated via player effect plugins and is processed " +-"by chosen ouput plugin.\n" ++"by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + +--- a/po/de.po ++++ b/po/de.po +@@ -392,7 +392,7 @@ + "time software synthesizer based on the SoundFont2 specification (www." + "fluidsynth.org).\n" + "Produced audio can be manipulated via player effect plugins and is processed " +-"by chosen ouput plugin.\n" ++"by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "Diesed Backend erzeugt Audiomaterial durch Senden von MIDI Events an " +--- a/po/es.po ++++ b/po/es.po +@@ -389,7 +389,7 @@ + #: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 + msgid "" + "This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +-"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" ++"Produced audio can be manipulated via player effect plugins and is processed by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "Este motor produce sonido al enviar eventos MIDI a FluidSynth, un sintetizador software en tiempo real basado en la especificación SoundFont2 (www.fluidsynth.org).\n" +--- a/po/es_AR.po ++++ b/po/es_AR.po +@@ -389,7 +389,7 @@ + #: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 + msgid "" + "This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +-"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" ++"Produced audio can be manipulated via player effect plugins and is processed by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "Este motor produce sonido al enviar eventos MIDI a FluidSynth, un sintetizador software en tiempo real basado en la especificación SoundFont2 (www.fluidsynth.org).\n" +--- a/po/es_MX.po ++++ b/po/es_MX.po +@@ -385,7 +385,7 @@ + #: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 + msgid "" + "This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +-"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" ++"Produced audio can be manipulated via player effect plugins and is processed by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "Este motor produce audio enviando los eventos MIDI a Fluidsynth, un sintetizador de software en tiempo real basado en la especificación SoundFont2 (www.fluidsynth.org).\n" +--- a/po/et.po ++++ b/po/et.po +@@ -105,7 +105,7 @@ + "time software synthesizer based on the SoundFont2 specification (www." + "fluidsynth.org).\n" + "Produced audio can be manipulated via player effect plugins and is processed " +-"by chosen ouput plugin.\n" ++"by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + +--- a/po/eu.po ++++ b/po/eu.po +@@ -117,7 +117,7 @@ + "time software synthesizer based on the SoundFont2 specification (www." + "fluidsynth.org).\n" + "Produced audio can be manipulated via player effect plugins and is processed " +-"by chosen ouput plugin.\n" ++"by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "Motor honek audioa ezkoizten du MIDI gertaerak FluidSynth-era bidaliz. " +@@ -5511,7 +5511,7 @@ + #~ msgid "" + #~ "* Select ALSA mixer card *\n" + #~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +-#~ "ouput plugins from the player. During playback, the player volumeslider " ++#~ "output plugins from the player. During playback, the player volumeslider " + #~ "will manipulate the mixer control you select here. If you're using " + #~ "wavetable synthesizer ports, you'll probably want to select the Synth " + #~ "control here." +@@ -5527,7 +5527,7 @@ + #~ msgid "" + #~ "* Select ALSA mixer control *\n" + #~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +-#~ "ouput plugins from the player. During playback, the player volume slider " ++#~ "output plugins from the player. During playback, the player volume slider " + #~ "will manipulate the mixer control you select here. If you're using " + #~ "wavetable synthesizer ports, you'll probably want to select the Synth " + #~ "control here." +--- a/po/fr.po ++++ b/po/fr.po +@@ -336,7 +336,7 @@ + #: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 + msgid "" + "This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +-"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" ++"Produced audio can be manipulated via player effect plugins and is processed by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "Ce système de sortie produit des flux audio en envoyant les événements MIDI à « FluidSynth », un synthétiseur logiciel en temps réel conçu à partir des principes de « SoundFont2 » (www.fluidsynth.org).\n" +--- a/po/hu.po ++++ b/po/hu.po +@@ -328,7 +328,7 @@ + #: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 + msgid "" + "This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +-"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" ++"Produced audio can be manipulated via player effect plugins and is processed by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + +--- a/po/it.po ++++ b/po/it.po +@@ -390,7 +390,7 @@ + #: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 + msgid "" + "This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +-"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" ++"Produced audio can be manipulated via player effect plugins and is processed by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "Questo backend produce audio inviando eventi MIDI a FluidSynth, un sintetizzatore software in tempo reale basato sulla specifica SoundFont2 (www.fluidsynth.org).\n" +--- a/po/ja.po ++++ b/po/ja.po +@@ -121,7 +121,7 @@ + "time software synthesizer based on the SoundFont2 specification (www." + "fluidsynth.org).\n" + "Produced audio can be manipulated via player effect plugins and is processed " +-"by chosen ouput plugin.\n" ++"by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "ã“ã®ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã¯ MIDI イベントを, SoundFont2 仕様ã«åŸºã¥ãリアルタイムソフト" +@@ -5484,7 +5484,7 @@ + #~ msgid "" + #~ "* Select ALSA mixer card *\n" + #~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +-#~ "ouput plugins from the player. During playback, the player volumeslider " ++#~ "output plugins from the player. During playback, the player volumeslider " + #~ "will manipulate the mixer control you select here. If you're using " + #~ "wavetable synthesizer ports, you'll probably want to select the Synth " + #~ "control here." +@@ -5498,7 +5498,7 @@ + #~ msgid "" + #~ "* Select ALSA mixer control *\n" + #~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +-#~ "ouput plugins from the player. During playback, the player volume slider " ++#~ "output plugins from the player. During playback, the player volume slider " + #~ "will manipulate the mixer control you select here. If you're using " + #~ "wavetable synthesizer ports, you'll probably want to select the Synth " + #~ "control here." +--- a/po/lt.po ++++ b/po/lt.po +@@ -388,7 +388,7 @@ + #: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 + msgid "" + "This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +-"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" ++"Produced audio can be manipulated via player effect plugins and is processed by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "Å i posistemÄ— atkuria garsÄ… sisųdama MIDI įvykius į FluidSynth, realaus laiko programinį sintezatorių, paremtÄ… SoundFont2 specifika (www.fluidsynth.org).\n" +--- a/po/lv.po ++++ b/po/lv.po +@@ -111,7 +111,7 @@ + "time software synthesizer based on the SoundFont2 specification (www." + "fluidsynth.org).\n" + "Produced audio can be manipulated via player effect plugins and is processed " +-"by chosen ouput plugin.\n" ++"by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "Å Ä« aizmugure izveido skaņu, sÅ«tot MIDI notikumus uz FluidSynth, reÄllaika " +@@ -5448,7 +5448,7 @@ + #~ msgid "" + #~ "* Select ALSA mixer card *\n" + #~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +-#~ "ouput plugins from the player. During playback, the player volumeslider " ++#~ "output plugins from the player. During playback, the player volumeslider " + #~ "will manipulate the mixer control you select here. If you're using " + #~ "wavetable synthesizer ports, you'll probably want to select the Synth " + #~ "control here." +@@ -5463,7 +5463,7 @@ + #~ msgid "" + #~ "* Select ALSA mixer control *\n" + #~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +-#~ "ouput plugins from the player. During playback, the player volume slider " ++#~ "output plugins from the player. During playback, the player volume slider " + #~ "will manipulate the mixer control you select here. If you're using " + #~ "wavetable synthesizer ports, you'll probably want to select the Synth " + #~ "control here." +--- a/po/pl.po ++++ b/po/pl.po +@@ -386,7 +386,7 @@ + #: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 + msgid "" + "This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +-"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" ++"Produced audio can be manipulated via player effect plugins and is processed by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "Ten backend wytwarza dźwiÄ™k poprzez wysyÅ‚anie zdarzeÅ„ MIDI do FluidSynth, programowego syntezatora czasu rzeczywistego opartego na specyfikacji SoundFont2 (www.fluidsynth.org).\n" +--- a/po/ro.po ++++ b/po/ro.po +@@ -121,7 +121,7 @@ + "time software synthesizer based on the SoundFont2 specification (www." + "fluidsynth.org).\n" + "Produced audio can be manipulated via player effect plugins and is processed " +-"by chosen ouput plugin.\n" ++"by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + +--- a/po/ru.po ++++ b/po/ru.po +@@ -386,7 +386,7 @@ + #: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 + msgid "" + "This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +-"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" ++"Produced audio can be manipulated via player effect plugins and is processed by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "Этот внутренний модуль производит звук, отправлÑÑ ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ MIDI на FluidSynth, программный Ñинтезатор реального времени, оÑнованный на ÑпецификациÑÑ… SoundFont2 (www.fluidsynth.org).\n" +--- a/po/sk.po ++++ b/po/sk.po +@@ -386,7 +386,7 @@ + #: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 + msgid "" + "This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +-"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" ++"Produced audio can be manipulated via player effect plugins and is processed by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "Toto koncové zariadenie vytvára zvuk posielaním MIDI udalostí do FluidSynth (softvérový syntetizátor pracujúci v reálnom Äase založený na Å¡pecifikácii SoundFont2 www.fluidsynth.org).\n" +--- a/po/sr.po ++++ b/po/sr.po +@@ -385,7 +385,7 @@ + #: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 + msgid "" + "This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +-"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" ++"Produced audio can be manipulated via player effect plugins and is processed by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "Овај позадинац производи звук тако што шаље МИДИ догађаје Флуид Ñинту, реално временÑком ÑофтверÑком ÑинтиÑајзеру заÑнованом на СаундФонт2 Ñпецификацији (www.fluidsynth.org).\n" +--- a/po/tr.po ++++ b/po/tr.po +@@ -123,7 +123,7 @@ + "time software synthesizer based on the SoundFont2 specification (www." + "fluidsynth.org).\n" + "Produced audio can be manipulated via player effect plugins and is processed " +-"by chosen ouput plugin.\n" ++"by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "Bu arkayüz, MIDI olaylarını, SoundFont2 tabanlı gerçek zamanlı yazılım " +@@ -5408,7 +5408,7 @@ + #~ msgid "" + #~ "* Select ALSA mixer card *\n" + #~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +-#~ "ouput plugins from the player. During playback, the player volumeslider " ++#~ "output plugins from the player. During playback, the player volumeslider " + #~ "will manipulate the mixer control you select here. If you're using " + #~ "wavetable synthesizer ports, you'll probably want to select the Synth " + #~ "control here." +@@ -5423,7 +5423,7 @@ + #~ msgid "" + #~ "* Select ALSA mixer control *\n" + #~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +-#~ "ouput plugins from the player. During playback, the player volume slider " ++#~ "output plugins from the player. During playback, the player volume slider " + #~ "will manipulate the mixer control you select here. If you're using " + #~ "wavetable synthesizer ports, you'll probably want to select the Synth " + #~ "control here." +--- a/po/uk.po ++++ b/po/uk.po +@@ -392,7 +392,7 @@ + #: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 + msgid "" + "This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +-"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" ++"Produced audio can be manipulated via player effect plugins and is processed by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "Цей поÑтпроцеÑор утворює звук унаÑлідок відÑÐ¸Ð»Ð°Ð½Ð½Ñ MIDI-повідомлень до FluidSynth, програмного Ñинтезатора реального чаÑу, котрий базуєтьÑÑ Ð½Ð° Ñпецифікації SoundFont2 (www.fluidsynth.org).\n" +--- a/po/vi.po ++++ b/po/vi.po +@@ -360,7 +360,7 @@ + #: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 + msgid "" + "This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +-"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" ++"Produced audio can be manipulated via player effect plugins and is processed by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -436,7 +436,7 @@ + "time software synthesizer based on the SoundFont2 specification (www." + "fluidsynth.org).\n" + "Produced audio can be manipulated via player effect plugins and is processed " +-"by chosen ouput plugin.\n" ++"by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "æ­¤åŽç«¯é€šè¿‡æŠŠMIDI事件å‘é€åˆ°FluidSynth生æˆéŸ³é¢‘,FluidSynth是符åˆSoundFont2标准" +--- a/po/zh_TW.po ++++ b/po/zh_TW.po +@@ -388,7 +388,7 @@ + "time software synthesizer based on the SoundFont2 specification (www." + "fluidsynth.org).\n" + "Produced audio can be manipulated via player effect plugins and is processed " +-"by chosen ouput plugin.\n" ++"by chosen output plugin.\n" + "Backend written by Giacomo Lozito." + msgstr "" + "這個後端會將 MIDI 事件傳é€çµ¦ FluidSynth 並產生音效,FluidSynth 是一個基於 " +--- a/src/amidi-plug/backend-fluidsynth/b-fluidsynth.c ++++ b/src/amidi-plug/backend-fluidsynth/b-fluidsynth.c +@@ -41,7 +41,7 @@ + "to FluidSynth, a real-time software synthesizer based " + "on the SoundFont2 specification (www.fluidsynth.org).\n" + "Produced audio can be manipulated via player effect " +- "plugins and is processed by chosen ouput plugin.\n" ++ "plugins and is processed by chosen output plugin.\n" + "Backend written by Giacomo Lozito.") ); + if ( ppos != NULL ) + *ppos = 2; /* preferred position in backend list */ diff -Nru audacious-plugins-2.4.4/debian/patches/series audacious-plugins-3.2/debian/patches/series --- audacious-plugins-2.4.4/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/debian/patches/series 2012-01-26 22:01:52.000000000 +0000 @@ -0,0 +1 @@ +correct_spelling_error.diff diff -Nru audacious-plugins-2.4.4/debian/rules audacious-plugins-3.2/debian/rules --- audacious-plugins-2.4.4/debian/rules 2011-04-04 12:15:56.000000000 +0000 +++ audacious-plugins-3.2/debian/rules 2012-01-26 22:01:52.000000000 +0000 @@ -11,8 +11,6 @@ override_dh_auto_configure: dh_auto_configure -- \ - --enable-chardet \ - --disable-altivec \ --disable-psf \ --disable-rpath \ $(additional_confflags) diff -Nru audacious-plugins-2.4.4/extra.mk.in audacious-plugins-3.2/extra.mk.in --- audacious-plugins-2.4.4/extra.mk.in 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/extra.mk.in 2012-01-20 19:48:30.000000000 +0000 @@ -1,82 +1,29 @@ -@SET_MAKE@ +USE_NLS ?= @USE_NLS@ +VERSION ?= @VERSION@ + +# overrides setting in buildsys.mk +plugindir = @plugindir@ + +CONTAINER_PLUGIN_DIR ?= @CONTAINER_PLUGIN_DIR@ +CONTAINER_PLUGINS ?= @CONTAINER_PLUGINS@ +EFFECT_PLUGINS ?= @EFFECT_PLUGINS@ +EFFECT_PLUGIN_DIR ?= @EFFECT_PLUGIN_DIR@ +GENERAL_PLUGINS ?= @GENERAL_PLUGINS@ +GENERAL_PLUGIN_DIR ?= @GENERAL_PLUGIN_DIR@ +INPUT_PLUGINS ?= @INPUT_PLUGINS@ +INPUT_PLUGIN_DIR ?= @INPUT_PLUGIN_DIR@ +OUTPUT_PLUGINS ?= @OUTPUT_PLUGINS@ +OUTPUT_PLUGIN_DIR ?= @OUTPUT_PLUGIN_DIR@ +TRANSPORT_PLUGIN_DIR ?= @TRANSPORT_PLUGIN_DIR@ +TRANSPORT_PLUGINS ?= @TRANSPORT_PLUGINS@ +VISUALIZATION_PLUGINS ?= @VISUALIZATION_PLUGINS@ +VISUALIZATION_PLUGIN_DIR ?= @VISUALIZATION_PLUGIN_DIR@ -srcdir ?= @srcdir@ -top_srcdir ?= @top_srcdir@ -VPATH ?= @srcdir@ -pkgdatadir ?= $(datadir)/@PACKAGE@ -pkglibdir ?= $(libdir)/@PACKAGE@ -pkgincludedir ?= $(includedir)/@PACKAGE@ -top_builddir ?= . -am__cd ?= CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL ?= @INSTALL@ -install_sh_DATA ?= $(install_sh) -c -m 644 -install_sh_PROGRAM ?= $(install_sh) -c -install_sh_SCRIPT ?= $(install_sh) -c -INSTALL_HEADER ?= $(INSTALL_DATA) -transform ?= $(program_transform_name) -NORMAL_INSTALL ?= : -PRE_INSTALL ?= : -POST_INSTALL ?= : -NORMAL_UNINSTALL ?= : -PRE_UNINSTALL ?= : -POST_UNINSTALL ?= : -build_triplet ?= @build@ -host_triplet ?= @host@ -target_triplet ?= @target@ -subdir ?= . -ACLOCAL_M4 ?= $(top_srcdir)/aclocal.m4 -CONFIG_HEADER ?= config.h -CONFIG_CLEAN_FILES ?= audacious.1 audacious.spec audacious.pc \ - intl/Makefile -SOURCES = -DIST_SOURCES = -man1dir ?= $(mandir)/man1 -am__installdirs ?= "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(pkgconfigdir)" -NROFF ?= nroff -MANS ?= $(man_MANS) -am__vpath_adj_setup ?= srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj ?= case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir ?= `echo $$p | sed -e 's|^.*/||'`; -pkgconfigDATA_INSTALL ?= $(INSTALL_DATA) -DATA ?= $(pkgconfig_DATA) -ETAGS ?= etags -CTAGS ?= ctags -DIST_SUBDIRS ?= $(SUBDIRS) -DISTFILES ?= $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir ?= $(PACKAGE)-$(VERSION) -top_distdir ?= $(distdir) -am__remove_distdir ?= \ - { test ! -d $(distdir) \ - || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr $(distdir); }; } -DIST_ARCHIVES ?= $(distdir).tar.gz -GZIP_ENV ?= --best -distuninstallcheck_listfiles ?= find . -type f -print -distcleancheck_listfiles ?= find . -type f -print -ACLOCAL ?= @ACLOCAL@ -ALLOCA ?= @ALLOCA@ -ALSA_CFLAGS ?= @ALSA_CFLAGS@ -ALSA_LIBS ?= @ALSA_LIBS@ -AMDEP_FALSE ?= @AMDEP_FALSE@ -AMDEP_TRUE ?= @AMDEP_TRUE@ AMIDIPLUG_BACKEND_DIR ?= @AMIDIPLUG_BACKEND_DIR@ AMIDIPLUG_BACKENDS ?= @AMIDIPLUG_BACKENDS@ -AMTAR ?= @AMTAR@ -AR ?= @AR@ -ARCH_DEFINES ?= @ARCH_DEFINES@ -ARCH_X86_FALSE ?= @ARCH_X86_FALSE@ -ARCH_X86_TRUE ?= @ARCH_X86_TRUE@ -ARTSC_CFLAGS ?= @ARTSC_CFLAGS@ -ARTSC_LIBS ?= @ARTSC_LIBS@ -AUTOCONF ?= @AUTOCONF@ -AUTOHEADER ?= @AUTOHEADER@ -AUTOMAKE ?= @AUTOMAKE@ -AWK ?= @AWK@ -BEEP_DEFINES ?= @BEEP_DEFINES@ -BEEP_PATH ?= @BEEP_PATH@ + +ALSA_CFLAGS ?= @ALSA_CFLAGS@ +ALSA_LIBS ?= @ALSA_LIBS@ BINIO_CFLAGS ?= @BINIO_CFLAGS@ BINIO_LIBS ?= @BINIO_LIBS@ BS2B_CFLAGS ?= @BS2B_CFLAGS@ @@ -84,315 +31,80 @@ BUILDERS_CFLAGS ?= @BUILDERS_CFLAGS@ BUILDERS_LDFLAGS ?= @BUILDERS_LDFLAGS@ BUILDERS_LIBS ?= @BUILDERS_LIBS@ -BUILD_INCLUDED_LIBINTL ?= @BUILD_INCLUDED_LIBINTL@ CAIRO_CFLAGS ?= @CAIRO_CFLAGS@ CAIRO_LIBS ?= @CAIRO_LIBS@ -CATOBJEXT ?= @CATOBJEXT@ -CCAS ?= @CCAS@ -CCASFLAGS ?= @CCASFLAGS@ -CCDEPMODE ?= @CCDEPMODE@ -CXXCPP ?= @CXXCPP@ -CXXDEPMODE ?= @CXXDEPMODE@ -CYGPATH_W ?= @CYGPATH_W@ -DATADIRNAME ?= @DATADIRNAME@ +CDIO_LIBS ?= @CDIO_LIBS@ +CDIO_CFLAGS ?= @CDIO_CFLAGS@ +CDDB_LIBS ?= @CDDB_LIBS@ +CDDB_CFLAGS ?= @CDDB_CFLAGS@ +CUE_CFLAGS ?= @CUE_CFLAGS@ +CUE_LIBS ?= @CUE_LIBS@ +CURL_CFLAGS ?= @CURL_CFLAGS@ +CURL_LIBS ?= @CURL_LIBS@ DBUS_CFLAGS ?= @DBUS_CFLAGS@ DBUS_LIBS ?= @DBUS_LIBS@ -DCT64 ?= @DCT64@ -DEFS ?= @DEFS@ -DEPDIR ?= @DEPDIR@ -ECHO ?= @ECHO@ -ECHO_C ?= @ECHO_C@ -ECHO_N ?= @ECHO_N@ -ECHO_T ?= @ECHO_T@ -EFFECT_PLUGINS ?= @EFFECT_PLUGINS@ -EFFECT_PLUGIN_DIR ?= @EFFECT_PLUGIN_DIR@ -EGREP ?= @EGREP@ -ENABLE_AAC_FALSE ?= @ENABLE_AAC_FALSE@ -ENABLE_AAC_TRUE ?= @ENABLE_AAC_TRUE@ -ENABLE_AMIDIPLUG_FALSE ?= @ENABLE_AMIDIPLUG_FALSE@ -ENABLE_AMIDIPLUG_TRUE ?= @ENABLE_AMIDIPLUG_TRUE@ -ENABLE_CROSSFADE_FALSE ?= @ENABLE_CROSSFADE_FALSE@ -ENABLE_CROSSFADE_TRUE ?= @ENABLE_CROSSFADE_TRUE@ -ENABLE_MPG123_FALSE ?= @ENABLE_MPG123_FALSE@ -ENABLE_MPG123_TRUE ?= @ENABLE_MPG123_TRUE@ -ENABLE_MUSEPACK_FALSE ?= @ENABLE_MUSEPACK_FALSE@ -ENABLE_MUSEPACK_TRUE ?= @ENABLE_MUSEPACK_TRUE@ -ENABLE_TIMIDITY_FALSE ?= @ENABLE_TIMIDITY_FALSE@ -ENABLE_TIMIDITY_TRUE ?= @ENABLE_TIMIDITY_TRUE@ -ENABLE_WMA_FALSE ?= @ENABLE_WMA_FALSE@ -ENABLE_WMA_TRUE ?= @ENABLE_WMA_TRUE@ -ESD_CFLAGS ?= @ESD_CFLAGS@ -ESD_LIBS ?= @ESD_LIBS@ -EXEEXT ?= @EXEEXT@ FAAD_CFLAGS ?= @FAAD_CFLAGS@ FAAD_LIBS ?= @FAAD_LIBS@ +FFMPEG_CFLAGS ?= @FFMPEG_CFLAGS@ +FFMPEG_LIBS ?= @FFMPEG_LIBS@ +FILEWRITER_CFLAGS ?= @FILEWRITER_CFLAGS@ +FILEWRITER_LIBS ?= @FILEWRITER_LIBS@ FLUIDSYNTH_CFLAGS ?= @FLUIDSYNTH_CFLAGS@ FLUIDSYNTH_LIBS ?= @FLUIDSYNTH_LIBS@ -GCONF_CFLAGS ?= @GCONF_CFLAGS@ -GCONF_LIBS ?= @GCONF_LIBS@ GDKX11_CFLAGS ?= @GDKX11_CFLAGS@ GDKX11_LIBS ?= @GDKX11_LIBS@ -GENCAT ?= @GENCAT@ -GENERAL_PLUGINS ?= @GENERAL_PLUGINS@ -GENERAL_PLUGIN_DIR ?= @GENERAL_PLUGIN_DIR@ -GLIBC21 ?= @GLIBC21@ +GIO_UNIX_CFLAGS ?= @GIO_UNIX_CFLAGS@ +GIO_UNIX_LIBS ?= @GIO_UNIX_LIBS@ GLIB_CFLAGS ?= @GLIB_CFLAGS@ GLIB_LIBS ?= @GLIB_LIBS@ -GIO_LIBS ?= @GIO_LIBS@ GMODULE_CFLAGS ?= @GMODULE_CFLAGS@ GMODULE_LIBS ?= @GMODULE_LIBS@ -GMSGFMT ?= @GMSGFMT@ -GNOMEVFS_CFLAGS ?= @GNOMEVFS_CFLAGS@ -GNOMEVFS_LIBS ?= @GNOMEVFS_LIBS@ GTK_CFLAGS ?= @GTK_CFLAGS@ GTK_LIBS ?= @GTK_LIBS@ -HARDSID_LIBS ?= @HARDSID_LIBS@ -HAVE_ADPLUG_FALSE ?= @HAVE_ADPLUG_FALSE@ -HAVE_ADPLUG_TRUE ?= @HAVE_ADPLUG_TRUE@ -HAVE_ALSA_FALSE ?= @HAVE_ALSA_FALSE@ -HAVE_ALSA_TRUE ?= @HAVE_ALSA_TRUE@ -HAVE_CDROM_FALSE ?= @HAVE_CDROM_FALSE@ -HAVE_CDROM_TRUE ?= @HAVE_CDROM_TRUE@ -HAVE_ESD_FALSE ?= @HAVE_ESD_FALSE@ -HAVE_ESD_TRUE ?= @HAVE_ESD_TRUE@ -HAVE_FLAC_FALSE ?= @HAVE_FLAC_FALSE@ -HAVE_FLAC_TRUE ?= @HAVE_FLAC_TRUE@ -HAVE_GCONF_FALSE ?= @HAVE_GCONF_FALSE@ -HAVE_GCONF_TRUE ?= @HAVE_GCONF_TRUE@ -HAVE_GNOME_VFS_FALSE ?= @HAVE_GNOME_VFS_FALSE@ -HAVE_GNOME_VFS_TRUE ?= @HAVE_GNOME_VFS_TRUE@ -HAVE_JACK_FALSE ?= @HAVE_JACK_FALSE@ -HAVE_JACK_TRUE ?= @HAVE_JACK_TRUE@ -HAVE_NULL_TRUE ?= @HAVE_NULL_TRUE@ -HAVE_LIBSAMPLERATE_FALSE ?= @HAVE_LIBSAMPLERATE_FALSE@ -HAVE_LIBSAMPLERATE_TRUE ?= @HAVE_LIBSAMPLERATE_TRUE@ -HAVE_LIBSNDFILE_FALSE ?= @HAVE_LIBSNDFILE_FALSE@ -HAVE_LIBSNDFILE_TRUE ?= @HAVE_LIBSNDFILE_TRUE@ -HAVE_LIBVISUAL_FALSE ?= @HAVE_LIBVISUAL_FALSE@ -HAVE_LIBVISUAL_TRUE ?= @HAVE_LIBVISUAL_TRUE@ -HAVE_LINUX_JOYSTICK_FALSE ?= @HAVE_LINUX_JOYSTICK_FALSE@ -HAVE_LINUX_JOYSTICK_TRUE ?= @HAVE_LINUX_JOYSTICK_TRUE@ -HAVE_LIRC_FALSE ?= @HAVE_LIRC_FALSE@ -HAVE_LIRC_TRUE ?= @HAVE_LIRC_TRUE@ -HAVE_MODPLUG_FALSE ?= @HAVE_MODPLUG_FALSE@ -HAVE_MODPLUG_TRUE ?= @HAVE_MODPLUG_TRUE@ -HAVE_OGGVORBIS_FALSE ?= @HAVE_OGGVORBIS_FALSE@ -HAVE_OGGVORBIS_TRUE ?= @HAVE_OGGVORBIS_TRUE@ -HAVE_OSS_FALSE ?= @HAVE_OSS_FALSE@ -HAVE_OSS_TRUE ?= @HAVE_OSS_TRUE@ -HAVE_SIDPLAY_FALSE ?= @HAVE_SIDPLAY_FALSE@ -HAVE_SIDPLAY_TRUE ?= @HAVE_SIDPLAY_TRUE@ -HAVE_SOLARIS_FALSE ?= @HAVE_SOLARIS_FALSE@ -HAVE_SOLARIS_TRUE ?= @HAVE_SOLARIS_TRUE@ -HAVE_SUN_FALSE ?= @HAVE_SUN_FALSE@ -HAVE_SUN_TRUE ?= @HAVE_SUN_TRUE@ -INPUT_PLUGINS ?= @INPUT_PLUGINS@ -INPUT_PLUGIN_DIR ?= @INPUT_PLUGIN_DIR@ -INSTALL_DATA ?= @INSTALL_DATA@ -INSTALL_PROGRAM ?= @INSTALL_PROGRAM@ -INSTALL_SCRIPT ?= @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM ?= @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT ?= @INSTOBJEXT@ -INTLBISON ?= @INTLBISON@ -INTLLIBS ?= @INTLLIBS@ -INTLOBJS ?= @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX ?= @INTL_LIBTOOL_SUFFIX_PREFIX@ JACK_CFLAGS ?= @JACK_CFLAGS@ JACK_LIBS ?= @JACK_LIBS@ -LDFLAGS ?= @LDFLAGS@ -LEDCODE ?= @LEDCODE@ -LIBBEEP_MAJOR_VERSION ?= @LIBBEEP_MAJOR_VERSION@ -LIBBEEP_MICRO_VERSION ?= @LIBBEEP_MICRO_VERSION@ -LIBBEEP_MINOR_VERSION ?= @LIBBEEP_MINOR_VERSION@ -FLAC_CFLAGS ?= @FLAC_CFLAGS@ -FLAC_LIBS ?= @FLAC_LIBS@ -LIBGLADE_CFLAGS ?= @LIBGLADE_CFLAGS@ -LIBGLADE_LIBS ?= @LIBGLADE_LIBS@ -LIBNMS_CFLAGS ?= @LIBNMS_CFLAGS@ -LIBNMS_LIBS ?= @LIBNMS_LIBS@ -LIBNMS_SRC ?= @LIBNMS_SRC@ -LIBICONV ?= @LIBICONV@ -LIBINTL ?= @LIBINTL@ -LIBOBJS ?= @LIBOBJS@ -LIBS ?= @LIBS@ -LIBTOOL ?= @LIBTOOL@ -LIBVISUAL_CFLAGS ?= @LIBVISUAL_CFLAGS@ -LIBVISUAL_LIBS ?= @LIBVISUAL_LIBS@ -LN_S ?= @LN_S@ -LTLIBICONV ?= @LTLIBICONV@ -LTLIBINTL ?= @LTLIBINTL@ -LTLIBOBJS ?= @LTLIBOBJS@ -MAKEINFO ?= @MAKEINFO@ -MKINSTALLDIRS ?= @MKINSTALLDIRS@ -MSGFMT ?= @MSGFMT@ -MSGMERGE ?= @MSGMERGE@ +LIBFLAC_LIBS ?= @LIBFLAC_LIBS@ +LIBFLAC_CFLAGS ?= @LIBFLAC_CFLAGS@ +LIBROAR_CFLAGS ?= @LIBROAR_CFLAGS@ +LIBROAR_LIBS ?= @LIBROAR_LIBS@ +MMS_CFLAGS ?= @MMS_CFLAGS@ +MMS_LIBS ?= @MMS_LIBS@ +MODPLUG_CFLAGS ?= @MODPLUG_CFLAGS@ +MODPLUG_LIBS ?= @MODPLUG_LIBS@ +MPG123_CFLAGS ?= @MPG123_CFLAGS@ +MPG123_LIBS ?= @MPG123_LIBS@ MTP_CFLAGS ?= @MTP_CFLAGS@ MTP_LIBS ?= @MTP_LIBS@ +NEON_CFLAGS ?= @NEON_CFLAGS@ +NEON_LIBS ?= @NEON_LIBS@ NOTIFY_CFLAGS ?= @NOTIFY_CFLAGS@ NOTIFY_LIBS ?= @NOTIFY_LIBS@ -OBJEXT ?= @OBJEXT@ OGG_VORBIS_CFLAGS ?= @OGG_VORBIS_CFLAGS@ OGG_VORBIS_LIBS ?= @OGG_VORBIS_LIBS@ -OSS_LIBS ?= @OSS_LIBS@ -OUTPUT_PLUGINS ?= @OUTPUT_PLUGINS@ -OUTPUT_PLUGIN_DIR ?= @OUTPUT_PLUGIN_DIR@ -PACKAGE ?= @PACKAGE@ -PACKAGE_BUGREPORT ?= @PACKAGE_BUGREPORT@ -PACKAGE_NAME ?= @PACKAGE_NAME@ -PACKAGE_STRING ?= @PACKAGE_STRING@ -PACKAGE_TARNAME ?= @PACKAGE_TARNAME@ -PACKAGE_VERSION ?= @PACKAGE_VERSION@ +OPENAL_CFLAGS ?= @OPENAL_CFLAGS@ +OPENAL_LIBS ?= @OPENAL_LIBS@ +OSS_CFLAGS ?= @OSS_CFLAGS@ PANGO_CFLAGS ?= @PANGO_CFLAGS@ PANGO_LIBS ?= @PANGO_LIBS@ PANGOCAIRO_CFLAGS ?= @PANGOCAIRO_CFLAGS@ PANGOCAIRO_LIBS ?= @PANGOCAIRO_LIBS@ -PATH_SEPARATOR ?= @PATH_SEPARATOR@ -PC_REQUIRES ?= @PC_REQUIRES@ -PKG_CONFIG ?= @PKG_CONFIG@ -PLUGIN_LDFLAGS ?= @PLUGIN_LDFLAGS@ -POSUB ?= @POSUB@ -RANLIB ?= @RANLIB@ -RESID_LIBS ?= @RESID_LIBS@ +PTHREAD_CFLAGS ?= @PTHREAD_CFLAGS@ +PTHREAD_LIBS ?= @PTHREAD_LIBS@ SAMPLERATE_CFLAGS ?= @SAMPLERATE_CFLAGS@ SAMPLERATE_LIBS ?= @SAMPLERATE_LIBS@ SDL_CFLAGS ?= @SDL_CFLAGS@ -SDL_CONFIG ?= @SDL_CONFIG@ SDL_LIBS ?= @SDL_LIBS@ -SET_MAKE ?= @SET_MAKE@ -SHELL ?= @SHELL@ -SHOUT_CFLAGS ?= @SHOUT_CFLAGS@ -SHOUT_LIBS ?= @SHOUT_LIBS@ SIDPLAY1_CFLAGS ?= @SIDPLAY1_CFLAGS@ SIDPLAY1_LIBS ?= @SIDPLAY1_LIBS@ SIDPLAY2_CFLAGS ?= @SIDPLAY2_CFLAGS@ SIDPLAY2_LIBS ?= @SIDPLAY2_LIBS@ SNDFILE_CFLAGS ?= @SNDFILE_CFLAGS@ SNDFILE_LIBS ?= @SNDFILE_LIBS@ -STRIP ?= @STRIP@ -TAGLIB_CFLAGS ?= @TAGLIB_CFLAGS@ -TAGLIB_CONFIG ?= @TAGLIB_CONFIG@ -TAGLIB_LIBS ?= @TAGLIB_LIBS@ -TR ?= @TR@ -USE_INCLUDED_LIBINTL ?= @USE_INCLUDED_LIBINTL@ -USE_NLS ?= @USE_NLS@ -USE_X86ASM_FALSE ?= @USE_X86ASM_FALSE@ -USE_X86ASM_TRUE ?= @USE_X86ASM_TRUE@ -VERSION ?= @VERSION@ -VISUALIZATION_PLUGINS ?= @VISUALIZATION_PLUGINS@ -VISUALIZATION_PLUGIN_DIR ?= @VISUALIZATION_PLUGIN_DIR@ -XGETTEXT ?= @XGETTEXT@ -ac_ct_AR ?= @ac_ct_AR@ -ac_ct_CC ?= @ac_ct_CC@ -ac_ct_CXX ?= @ac_ct_CXX@ -ac_ct_RANLIB ?= @ac_ct_RANLIB@ -ac_ct_STRIP ?= @ac_ct_STRIP@ -am__fastdepCC_FALSE ?= @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE ?= @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE ?= @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE ?= @am__fastdepCXX_TRUE@ -am__include ?= @am__include@ -am__leading_dot ?= @am__leading_dot@ -am__quote ?= @am__quote@ -am__tar ?= @am__tar@ -am__untar ?= @am__untar@ -beepdir ?= @beepdir@ -bindir ?= @bindir@ -build ?= @build@ -build_alias ?= @build_alias@ -build_cpu ?= @build_cpu@ -build_os ?= @build_os@ -build_vendor ?= @build_vendor@ -datadir ?= @datadir@ -datarootdir ?= @datarootdir@ -exec_prefix ?= @exec_prefix@ -host ?= @host@ -host_alias ?= @host_alias@ -host_cpu ?= @host_cpu@ -host_os ?= @host_os@ -host_vendor ?= @host_vendor@ -includedir ?= @includedir@ -infodir ?= @infodir@ -install_sh ?= @install_sh@ -libdir ?= @libdir@ -libexecdir ?= @libexecdir@ -localedir ?= @localedir@ -localstatedir ?= @localstatedir@ -mandir ?= @mandir@ -mkdir_p ?= @mkdir_p@ -oldincludedir ?= @oldincludedir@ -pluginsubs ?= @pluginsubs@ -prefix ?= @prefix@ -program_transform_name ?= @program_transform_name@ -sbindir ?= @sbindir@ -sharedstatedir ?= @sharedstatedir@ -sysconfdir ?= @sysconfdir@ -target ?= @target@ -target_alias ?= @target_alias@ -target_cpu ?= @target_cpu@ -target_os ?= @target_os@ -target_vendor ?= @target_vendor@ -WAV_SNDFILE ?= @WAV_SNDFILE@ -VFS_BACKEND ?= @VFS_BACKEND@ -CONFIGDB_BACKEND ?= @CONFIGDB_BACKEND@ -CURL_CFLAGS ?= @CURL_CFLAGS@ -CURL_LIBS ?= @CURL_LIBS@ -NEON_CFLAGS ?= @NEON_CFLAGS@ -NEON_LIBS ?= @NEON_LIBS@ -CHARDET_LIBS ?= @CHARDET_LIBS@ -SUBDIR_GUESS ?= @SUBDIR_GUESS@ -LIBNOTIFY_CFLAGS ?= @LIBNOTIFY_CFLAGS@ -LIBNOTIFY_LIBS ?= @LIBNOTIFY_LIBS@ -XML_CFLAGS ?= @XML_CFLAGS@ -XML_LIBS ?= @XML_LIBS@ -CONTAINER_PLUGIN_DIR ?= @CONTAINER_PLUGIN_DIR@ -CONTAINER_PLUGINS ?= @CONTAINER_PLUGINS@ -SHARED_SUFFIX ?= @SHARED_SUFFIX@ -PICFLAGS ?= @PICFLAGS@ -PICLDFLAGS ?= @PICLDFLAGS@ -LIBLDFLAGS ?= @LIBLDFLAGS@ WAVPACK_CFLAGS ?= @WAVPACK_CFLAGS@ WAVPACK_LIBS ?= @WAVPACK_LIBS@ XCOMPOSITE_CFLAGS ?= @XCOMPOSITE_CFLAGS@ XCOMPOSITE_LIBS ?= @XCOMPOSITE_LIBS@ +XML_CFLAGS ?= @XML_CFLAGS@ +XML_LIBS ?= @XML_LIBS@ XRENDER_CFLAGS ?= @XRENDER_CFLAGS@ XRENDER_LIBS ?= @XRENDER_LIBS@ -XXF86VM_CFLAGS ?= @XXF86VM_CFLAGS@ -XXF86VM_LIBS ?= @XXF86VM_LIBS@ -LIBPROJECTM_CFLAGS ?= @LIBPROJECTM_CFLAGS@ -LIBPROJECTM_LIBS ?= @LIBPROJECTM_LIBS@ -LIBPROJECTM1_CFLAGS ?= @LIBPROJECTM1_CFLAGS@ -LIBPROJECTM1_LIBS ?= @LIBPROJECTM1_LIBS@ -MMS_CFLAGS ?= @MMS_CFLAGS@ -MMS_LIBS ?= @MMS_LIBS@ -MPG123_CFLAGS ?= @MPG123_CFLAGS@ -MPG123_LIBS ?= @MPG123_LIBS@ -IMLIB2_CFLAGS ?= @IMLIB2_CFLAGS@ -IMLIB2_LIBS ?= @IMLIB2_LIBS@ -SIMD_CFLAGS ?= @SIMD_CFLAGS@ -FILEWRITER_CFLAGS ?= @FILEWRITER_CFLAGS@ -FILEWRITER_LIBS ?= @FILEWRITER_LIBS@ -GCC42_CFLAGS ?= @GCC42_CFLAGS@ -CDIO_LIBS ?= @CDIO_LIBS@ -CDIO_CFLAGS ?= @CDIO_CFLAGS@ -CDDB_LIBS ?= @CDDB_LIBS@ -CDDB_CFLAGS ?= @CDDB_CFLAGS@ -TRANSPORT_PLUGIN_DIR ?= @TRANSPORT_PLUGIN_DIR@ -TRANSPORT_PLUGINS ?= @TRANSPORT_PLUGINS@ -LIBFLAC_LIBS ?= @LIBFLAC_LIBS@ -LIBFLAC_CFLAGS ?= @LIBFLAC_CFLAGS@ -MOWGLI_CFLAGS ?= @MOWGLI_CFLAGS@ -MOWGLI_LIBS ?= @MOWGLI_LIBS@ -pluginlibdir = @plugindir@ -plugindir = ${pluginlibdir} -GTKGLEXT_CFLAGS ?= @GTKGLEXT_CFLAGS@ -GTKGLEXT_LIBS ?= @GTKGLEXT_LIBS@ -TR = @TR@ -PLUGIN_DEFNAME := `echo ${subst ${PLUGIN_SUFFIX},,${PLUGIN}} | LC_ALL=C tr '[:lower:]' '[:upper:]' | tr '-' '_'` -PLUGIN_CPPFLAGS += -D${PLUGIN_DEFNAME}_CFGID="\"${subst ${PLUGIN_SUFFIX},,${PLUGIN}}\"" -FFMPEG_CFLAGS ?= @FFMPEG_CFLAGS@ -FFMPEG_LIBS ?= @FFMPEG_LIBS@ -CUE_CFLAGS ?= @CUE_CFLAGS@ -CUE_LIBS ?= @CUE_LIBS@ -DEBUG ?= @DEBUG@ -LIBROAR_CFLAGS ?= @LIBROAR_CFLAGS@ -LIBROAR_LIBS ?= @LIBROAR_LIBS@ diff -Nru audacious-plugins-2.4.4/INSTALL audacious-plugins-3.2/INSTALL --- audacious-plugins-2.4.4/INSTALL 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/INSTALL 2012-01-20 19:48:30.000000000 +0000 @@ -1,16 +1,25 @@ Installation Instructions ************************* -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free -Software Foundation, Inc. +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, +2006, 2007, 2008, 2009 Free Software Foundation, Inc. -This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. Basic Installation ================== -These are generic installation instructions. + Briefly, the shell commands `./configure; make; make install' should +configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. Some packages provide this +`INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses @@ -23,9 +32,9 @@ It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is +the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale -cache files.) +cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail @@ -35,30 +44,37 @@ may remove or edit it. The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. +`configure' by a program called `autoconf'. You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. -The simplest way to compile this package is: + The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. + `./configure' to configure the package for your system. - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. + Running `configure' might take a while. While running, it prints + some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with - the package. + the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and - documentation. + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the `make install' phase executed with root + privileges. + + 5. Optionally, type `make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior `make install' required + root privileges, verifies that the installation completed + correctly. - 5. You can remove the program binaries and object files from the + 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is @@ -67,45 +83,69 @@ all sorts of other programs in order to regenerate files that came with the distribution. + 7. Often, you can also type `make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide `make + distcheck', which can by used by developers to test that all other + targets like `make install' and `make uninstall' work correctly. + This target is generally not run by end users. + Compilers and Options ===================== -Some systems require unusual options for compilation or linking that the -`configure' script does not know about. Run `./configure --help' for -details on some of the pertinent environment variables. + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== -You can compile the package for more than one kind of computer at the + You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the +own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. +source code in the directory that `configure' is in and in `..'. This +is known as a "VPATH" build. - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. + With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple `-arch' options to the +compiler but only a single `-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the `lipo' tool if you have problems. Installation Names ================== -By default, `make install' installs the package's commands under + By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX'. +`configure' the option `--prefix=PREFIX', where PREFIX must be an +absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you @@ -116,16 +156,47 @@ In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. +you can set and what kinds of files go in them. In general, the +default for these options is expressed in terms of `${prefix}', so that +specifying just `--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to `configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +`make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, `make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +`${prefix}'. Any directories that were specified during `configure', +but not in terms of `${prefix}', must each be overridden at install +time for the entire installation to be relocated. The approach of +makefile variable overrides for each directory variable is required by +the GNU Coding Standards, and ideally causes no recompilation. +However, some platforms have known limitations with the semantics of +shared libraries that end up requiring recompilation when using this +method, particularly noticeable in packages that use GNU Libtool. + + The second method involves providing the `DESTDIR' variable. For +example, `make install DESTDIR=/alternate/directory' will prepend +`/alternate/directory' before all installation names. The approach of +`DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of `${prefix}' +at `configure' time. + +Optional Features +================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. -Optional Features -================= - -Some packages pay attention to `--enable-FEATURE' options to + Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The @@ -137,14 +208,53 @@ you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. + Some packages offer the ability to configure how verbose the +execution of `make' will be. For these packages, running `./configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with `make V=1'; while running `./configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with `make V=0'. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU +CC is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `' header file. The option `-nodtk' can be used as +a workaround. If GNU CC is not installed, it is therefore recommended +to try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put `/usr/ucb' early in your `PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in `/usr/bin'. So, if you need `/usr/ucb' +in your `PATH', put it _after_ `/usr/bin'. + + On Haiku, software installed for all users goes in `/boot/common', +not `/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + Specifying the System Type ========================== -There may be some features `configure' cannot figure out automatically, -but needs to determine by the type of machine the package will run on. -Usually, assuming the package is built to be run on the _same_ -architectures, `configure' can figure that out, but if it prints a -message saying it cannot guess the machine type, give it the + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: @@ -152,7 +262,8 @@ where SYSTEM can have one of these forms: - OS KERNEL-OS + OS + KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't @@ -170,9 +281,9 @@ Sharing Defaults ================ -If you want to set default values for `configure' scripts to share, you -can create a site shell script called `config.site' that gives default -values for variables like `CC', `cache_file', and `prefix'. + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. @@ -181,7 +292,7 @@ Defining Variables ================== -Variables not defined in a site shell script can be set in the + Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set @@ -190,21 +301,29 @@ ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is -overridden in the site shell script). Here is a another example: +overridden in the site shell script). - /bin/bash ./configure CONFIG_SHELL=/bin/bash +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf bug. Until the bug is fixed you can use this workaround: -Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent -configuration-related scripts to be executed by `/bin/bash'. + CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== -`configure' recognizes the following options to control how it operates. + `configure' recognizes the following options to control how it +operates. `--help' `-h' - Print a summary of the options to `configure', and exit. + Print a summary of all of the options to `configure', and exit. + +`--help=short' +`--help=recursive' + Print a summary of the options unique to this package's + `configure', and exit. The `short' variant lists options used + only in the top level, while the `recursive' variant lists options + also present in any nested packages. `--version' `-V' @@ -231,6 +350,16 @@ Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. +`--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: + for more details, including other options available for fine-tuning + the installation locations. + +`--no-create' +`-n' + Run the configure checks, but stop before creating any output + files. + `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. diff -Nru audacious-plugins-2.4.4/install-sh audacious-plugins-3.2/install-sh --- audacious-plugins-2.4.4/install-sh 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/install-sh 2012-01-20 19:48:30.000000000 +0000 @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2005-05-14.22 +scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -39,38 +39,68 @@ # when there is no Makefile. # # This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. +# from scratch. + +nl=' +' +IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" +doit=${DOITPROG-} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi -# put in absolute paths if you don't have them in your path; or use env. vars. +# Put in absolute file names if you don't have them in your path; +# or use environment vars. -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 -chmodcmd="$chmodprog 0755" -chowncmd= chgrpcmd= -stripcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog rmcmd="$rmprog -f" -mvcmd="$mvprog" +stripcmd= + src= dst= dir_arg= -dstarg= +dst_arg= + +copy_on_change=false no_target_directory= -usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... @@ -80,81 +110,86 @@ In the 4th, create DIRECTORIES. Options: --c (ignored) --d create directories instead of installing files. --g GROUP $chgrpprog installed files to GROUP. --m MODE $chmodprog installed files to MODE. --o USER $chownprog installed files to USER. --s $stripprog installed files. --t DIRECTORY install into DIRECTORY. --T report an error if DSTFILE is a directory. ---help display this help and exit. ---version display version info and exit. + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG " -while test -n "$1"; do +while test $# -ne 0; do case $1 in - -c) shift - continue;; + -c) ;; - -d) dir_arg=true - shift - continue;; + -C) copy_on_change=true;; + + -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; + shift;; --help) echo "$usage"; exit $?;; - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; + -m) mode=$2 + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -s) stripcmd=$stripprog - shift - continue;; - - -t) dstarg=$2 - shift - shift - continue;; - - -T) no_target_directory=true - shift - continue;; + shift;; + + -s) stripcmd=$stripprog;; + + -t) dst_arg=$2 + shift;; + + -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; - *) # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - test -n "$dir_arg$dstarg" && break - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dstarg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dstarg" - shift # fnord - fi - shift # arg - dstarg=$arg - done + --) shift break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; esac + shift done -if test -z "$1"; then +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + done +fi + +if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 @@ -164,24 +199,47 @@ exit 0 fi +if test -z "$dir_arg"; then + trap '(exit $?); exit' 1 2 13 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + for src do # Protect names starting with `-'. case $src in - -*) src=./$src ;; + -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src - src= - - if test -d "$dst"; then - mkdircmd=: - chmodcmd= - else - mkdircmd=$mkdirprog - fi + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? else + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. @@ -190,71 +248,199 @@ exit 1 fi - if test -z "$dstarg"; then + if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi - dst=$dstarg + dst=$dst_arg # Protect names starting with `-'. case $dst in - -*) dst=./$dst ;; + -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then - echo "$0: $dstarg: Is a directory" >&2 + echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi - dst=$dst/`basename "$src"` + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? fi fi - # This sed command emulates the dirname command. - dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` - - # Make sure that the destination directory exists. + obsolete_mkdir_used=false - # Skip lots of stat calls in the usual case. - if test ! -d "$dstdir"; then - defaultIFS=' - ' - IFS="${IFS-$defaultIFS}" - - oIFS=$IFS - # Some sh's can't handle IFS=/ for some reason. - IFS='%' - set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` - shift - IFS=$oIFS + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac - pathcomp= + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else - while test $# -ne 0 ; do - pathcomp=$pathcomp$1 + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + -*) prefix='./';; + *) prefix='';; + esac + + eval "$initialize_posix_glob" + + oIFS=$IFS + IFS=/ + $posix_glob set -f + set fnord $dstdir shift - if test ! -d "$pathcomp"; then - $mkdirprog "$pathcomp" - # mkdir can fail with a `File exist' error in case several - # install-sh are creating the directory concurrently. This - # is OK. - test -d "$pathcomp" || exit + $posix_glob set +f + IFS=$oIFS + + prefixes= + + for d + do + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true fi - pathcomp=$pathcomp/ - done + fi fi if test -n "$dir_arg"; then - $doit $mkdircmd "$dst" \ - && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } - + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else - dstfile=`basename "$dst"` # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ @@ -262,10 +448,9 @@ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - trap '(exit $?); exit' 1 2 13 15 # Copy the file name to the temp name. - $doit $cpprog "$src" "$dsttmp" && + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # @@ -273,51 +458,63 @@ # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && - - # Now rename the file to the real destination. - { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ - || { - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - if test -f "$dstdir/$dstfile"; then - $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ - || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ - || { - echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 - (exit 1); exit 1 - } - else - : - fi - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" - } - } - fi || { (exit 1); exit 1; } -done + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + $posix_glob set +f && + + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || -# The final little trick to "correctly" pass the exit status to the exit trap. -{ - (exit 0); exit 0 -} + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" # End: diff -Nru audacious-plugins-2.4.4/m4/arts.m4 audacious-plugins-3.2/m4/arts.m4 --- audacious-plugins-2.4.4/m4/arts.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/arts.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,131 +0,0 @@ -# CFLAGS and library paths for aRts -# written 15 December 1999 by Ben Gertzfield -# hacked for artsc by Haavard Kvaalen - -dnl Usage: -dnl AM_PATH_ARTSC([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) -dnl -dnl Example: -dnl AM_PATH_ARTSC(0.9.5, , AC_MSG_ERROR([*** ARTSC >= 0.9.5 not installed - please install first ***])) -dnl -dnl Defines ARTSC_CFLAGS, ARTSC_LIBS and ARTSC_VERSION. -dnl - -dnl ARTSC_TEST_VERSION(AVAILABLE-VERSION, NEEDED-VERSION [, ACTION-IF-OKAY [, ACTION-IF-NOT-OKAY]]) -AC_DEFUN([ARTSC_TEST_VERSION], [ - -# Determine which version number is greater. Prints 2 to stdout if -# the second number is greater, 1 if the first number is greater, -# 0 if the numbers are equal. - -# Written 15 December 1999 by Ben Gertzfield -# Revised 15 December 1999 by Jim Monty - - AC_PROG_AWK - artsc_got_version=[` $AWK ' \ -BEGIN { \ - print vercmp(ARGV[1], ARGV[2]); \ -} \ - \ -function vercmp(ver1, ver2, ver1arr, ver2arr, \ - ver1len, ver2len, \ - ver1int, ver2int, len, i, p) { \ - \ - ver1len = split(ver1, ver1arr, /\./); \ - ver2len = split(ver2, ver2arr, /\./); \ - \ - len = ver1len > ver2len ? ver1len : ver2len; \ - \ - for (i = 1; i <= len; i++) { \ - p = 1000 ^ (len - i); \ - ver1int += ver1arr[i] * p; \ - ver2int += ver2arr[i] * p; \ - } \ - \ - if (ver1int < ver2int) \ - return 2; \ - else if (ver1int > ver2int) \ - return 1; \ - else \ - return 0; \ -}' $1 $2`] - - if test $artsc_got_version -eq 2; then # failure - ifelse([$4], , :, $4) - else # success! - ifelse([$3], , :, $3) - fi -]) - -AC_DEFUN([AM_PATH_ARTSC], -[ -AC_ARG_WITH(artsc-prefix,[ --with-artsc-prefix=PFX Prefix where aRts is installed (optional)], - artsc_config_prefix="$withval", artsc_config_prefix="") -AC_ARG_WITH(artsc-exec-prefix,[ --with-artsc-exec-prefix=PFX Exec prefix where aRts is installed (optional)], - artsc_config_exec_prefix="$withval", artsc_config_exec_prefix="") - -if test x$artsc_config_exec_prefix != x; then - artsc_config_args="$artsc_config_args --exec-prefix=$artsc_config_exec_prefix" - if test x${ARTSC_CONFIG+set} != xset; then - ARTSC_CONFIG=$artsc_config_exec_prefix/bin/artsc-config - fi -fi - -if test x$artsc_config_prefix != x; then - artsc_config_args="$artsc_config_args --prefix=$artsc_config_prefix" - if test x${ARTSC_CONFIG+set} != xset; then - ARTSC_CONFIG=$artsc_config_prefix/bin/artsc-config - fi -fi - -AC_PATH_PROG(ARTSC_CONFIG, artsc-config, no) -min_artsc_version=ifelse([$1], ,0.9.5.1, $1) - -if test "$ARTSC_CONFIG" = "no"; then - no_artsc=yes -else - ARTSC_CFLAGS=`$ARTSC_CONFIG $artsc_config_args --cflags` - ARTSC_LIBS=`$ARTSC_CONFIG $artsc_config_args --libs` - ARTSC_VERSION=`$ARTSC_CONFIG $artsc_config_args --version` - - ARTSC_TEST_VERSION($ARTSC_VERSION, $min_artsc_version, ,no_artsc=version) -fi - -AC_MSG_CHECKING(for artsc - version >= $min_artsc_version) - -if test "x$no_artsc" = x; then - AC_MSG_RESULT(yes) - AC_SUBST(ARTSC_CFLAGS) - AC_SUBST(ARTSC_LIBS) - AC_SUBST(ARTSC_VERSION) - ifelse([$2], , :, [$2]) -else - AC_MSG_RESULT(no) - - if test "$ARTSC_CONFIG" = "no" ; then - echo "*** The artsc-config script installed by aRts could not be found." - echo "*** If aRts was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the ARTSC_CONFIG environment variable to the" - echo "*** full path to artsc-config." - else - if test "$no_artsc" = "version"; then - echo "*** An old version of aRts, $ARTSC_VERSION, was found." - echo "*** You need a version of aRts newer than $min_artsc_version." - echo "*** The latest version of aRts is available from" - echo "*** http://www.arts-project.org/" - echo "***" - - echo "*** If you have already installed a sufficiently new version, this error" - echo "*** probably means that the wrong copy of the artsc-config shell script is" - echo "*** being found. The easiest way to fix this is to remove the old version" - echo "*** of aRts, but you can also set the ARTSC_CONFIG environment to point to the" - echo "*** correct copy of artsc-config. (In this case, you will have to" - echo "*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf" - echo "*** so that the correct libraries are found at run-time)" - fi - fi - ARTSC_CFLAGS="" - ARTSC_LIBS="" - ifelse([$3], , :, [$3]) -fi -]) diff -Nru audacious-plugins-2.4.4/m4/buildsys.m4 audacious-plugins-3.2/m4/buildsys.m4 --- audacious-plugins-2.4.4/m4/buildsys.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/buildsys.m4 2012-01-20 19:48:30.000000000 +0000 @@ -20,13 +20,51 @@ dnl POSSIBILITY OF SUCH DAMAGE. dnl -AC_DEFUN([BUILDSYS_LIB], [ - AC_ARG_ENABLE(shared, - AS_HELP_STRING([--disable-shared], [don't build shared libraries])) - - AS_IF([test x"$enable_shared" = x"no"], - [BUILDSYS_STATIC_LIB_ONLY], - [BUILDSYS_SHARED_LIB]) +AC_DEFUN([BUILDSYS_INIT], [ + AC_PATH_PROG(TPUT, tput) + + AS_IF([test x"$TPUT" != x""], [ + if x=$($TPUT el 2>/dev/null); then + AC_SUBST(TERM_EL, "$x") + else + AC_SUBST(TERM_EL, "$($TPUT ce 2>/dev/null)") + fi + + if x=$($TPUT sgr0 2>/dev/null); then + AC_SUBST(TERM_SGR0, "$x") + else + AC_SUBST(TERM_SGR0, "$($TPUT me 2>/dev/null)") + fi + + if x=$($TPUT bold 2>/dev/null); then + AC_SUBST(TERM_BOLD, "$x") + else + AC_SUBST(TERM_BOLD, "$($TPUT md 2>/dev/null)") + fi + + if x=$($TPUT setaf 1 2>/dev/null); then + AC_SUBST(TERM_SETAF1, "$x") + AC_SUBST(TERM_SETAF2, "$($TPUT setaf 2 2>/dev/null)") + AC_SUBST(TERM_SETAF3, "$($TPUT setaf 3 2>/dev/null)") + AC_SUBST(TERM_SETAF4, "$($TPUT setaf 4 2>/dev/null)") + AC_SUBST(TERM_SETAF6, "$($TPUT setaf 6 2>/dev/null)") + else + AC_SUBST(TERM_SETAF1, "$($TPUT AF 1 2>/dev/null)") + AC_SUBST(TERM_SETAF2, "$($TPUT AF 2 2>/dev/null)") + AC_SUBST(TERM_SETAF3, "$($TPUT AF 3 2>/dev/null)") + AC_SUBST(TERM_SETAF4, "$($TPUT AF 4 2>/dev/null)") + AC_SUBST(TERM_SETAF6, "$($TPUT AF 6 2>/dev/null)") + fi + ], [ + AC_SUBST(TERM_EL, '\033\133K') + AC_SUBST(TERM_SGR0, '\033\133m') + AC_SUBST(TERM_BOLD, '\033\1331m') + AC_SUBST(TERM_SETAF1, '\033\13331m') + AC_SUBST(TERM_SETAF2, '\033\13332m') + AC_SUBST(TERM_SETAF3, '\033\13333m') + AC_SUBST(TERM_SETAF4, '\033\13334m') + AC_SUBST(TERM_SETAF6, '\033\13336m') + ]) ]) AC_DEFUN([BUILDSYS_PROG_IMPLIB], [ @@ -55,93 +93,81 @@ case "$host_os" in darwin*) AC_MSG_RESULT(Darwin) - LIB_CPPFLAGS='-DPIC' - LIB_CFLAGS='-fPIC' - LIB_LDFLAGS='-dynamiclib -flat_namespace' + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}' LIB_PREFIX='lib' LIB_SUFFIX='.dylib' LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CPPFLAGS='-DPIC' - PLUGIN_CFLAGS='-fPIC' - PLUGIN_LDFLAGS='-bundle -flat_namespace -undefined suppress' + PLUGIN_CFLAGS='-fPIC -DPIC' + PLUGIN_LDFLAGS='-bundle -undefined dynamic_lookup' PLUGIN_SUFFIX='.impl' - INSTALL_LIB='${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib' + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib' CLEAN_LIB='' ;; solaris*) AC_MSG_RESULT(Solaris) - LIB_CPPFLAGS='-DPIC' - LIB_CFLAGS='-fPIC' - LIB_LDFLAGS='-shared -fPIC -Wl,-soname=${LIB}.${LIB_MAJOR}.${LIB_MINOR}' + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-shared -Wl,-soname=${LIB}.${LIB_MAJOR}.${LIB_MINOR}' LIB_PREFIX='lib' LIB_SUFFIX='.so' LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CPPFLAGS='-DPIC' - PLUGIN_CFLAGS='-fPIC' - PLUGIN_LDFLAGS='-shared -fPIC' + PLUGIN_CFLAGS='-fPIC -DPIC' + PLUGIN_LDFLAGS='-shared' PLUGIN_SUFFIX='.so' - INSTALL_LIB='${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR} && rm -f ${DESTDIR}${libdir}/$$i && ${LN_S} $$i.${LIB_MAJOR}.${LIB_MINOR} ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}' + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR} && rm -f ${DESTDIR}${libdir}/$$i && ${LN_S} $$i.${LIB_MAJOR}.${LIB_MINOR} ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}' CLEAN_LIB='' ;; openbsd* | mirbsd*) AC_MSG_RESULT(OpenBSD) - LIB_CPPFLAGS='-DPIC' - LIB_CFLAGS='-fPIC' - LIB_LDFLAGS='-shared -fPIC' + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-shared' LIB_PREFIX='lib' LIB_SUFFIX='.so.${LIB_MAJOR}.${LIB_MINOR}' LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CPPFLAGS='-DPIC' - PLUGIN_CFLAGS='-fPIC' - PLUGIN_LDFLAGS='-shared -fPIC' + PLUGIN_CFLAGS='-fPIC -DPIC' + PLUGIN_LDFLAGS='-shared' PLUGIN_SUFFIX='.so' - INSTALL_LIB='${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='rm -f ${DESTDIR}${libdir}/$$i' + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i' CLEAN_LIB='' ;; cygwin* | mingw*) AC_MSG_RESULT(Win32) - LIB_CPPFLAGS='-DPIC' LIB_CFLAGS='' LIB_LDFLAGS='-shared -Wl,--out-implib,${LIB}.a' LIB_PREFIX='lib' LIB_SUFFIX='.dll' LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CPPFLAGS='' PLUGIN_CFLAGS='' PLUGIN_LDFLAGS='-shared' PLUGIN_SUFFIX='.dll' - INSTALL_LIB='${MKDIR_P} ${DESTDIR}${bindir} && ${INSTALL} -m 755 $$i ${DESTDIR}${bindir}/$$i && ${INSTALL} -m 755 $$i.a ${DESTDIR}${libdir}/$$i.a' - UNINSTALL_LIB='rm -f ${DESTDIR}${bindir}/$$i ${DESTDIR}${libdir}/$$i.a' + INSTALL_LIB='&& ${MKDIR_P} ${DESTDIR}${bindir} && ${INSTALL} -m 755 $$i ${DESTDIR}${bindir}/$$i && ${INSTALL} -m 755 $$i.a ${DESTDIR}${libdir}/$$i.a' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${bindir}/$$i ${DESTDIR}${libdir}/$$i.a' CLEAN_LIB='${LIB}.a' ;; *) AC_MSG_RESULT(GNU) - LIB_CPPFLAGS='-DPIC' - LIB_CFLAGS='-fPIC' - LIB_LDFLAGS='-shared -fPIC -Wl,-soname=${LIB}.${LIB_MAJOR}' + LIB_CFLAGS='-fPIC -DPIC' + LIB_LDFLAGS='-shared -Wl,-soname=${LIB}.${LIB_MAJOR}' LIB_PREFIX='lib' LIB_SUFFIX='.so' LDFLAGS_RPATH='-Wl,-rpath,${libdir}' - PLUGIN_CPPFLAGS='-DPIC' - PLUGIN_CFLAGS='-fPIC' - PLUGIN_LDFLAGS='-shared -fPIC' + PLUGIN_CFLAGS='-fPIC -DPIC' + PLUGIN_LDFLAGS='-shared' PLUGIN_SUFFIX='.so' - INSTALL_LIB='${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0 && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0' + INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0 && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0' CLEAN_LIB='' ;; esac - AC_SUBST(LIB_CPPFLAGS) AC_SUBST(LIB_CFLAGS) AC_SUBST(LIB_LDFLAGS) AC_SUBST(LIB_PREFIX) AC_SUBST(LIB_SUFFIX) AC_SUBST(LDFLAGS_RPATH) - AC_SUBST(PLUGIN_CPPFLAGS) AC_SUBST(PLUGIN_CFLAGS) AC_SUBST(PLUGIN_LDFLAGS) AC_SUBST(PLUGIN_SUFFIX) @@ -150,33 +176,8 @@ AC_SUBST(CLEAN_LIB) ]) -AC_DEFUN([BUILDSYS_STATIC_LIB_ONLY], [ - AC_REQUIRE([AC_PROG_RANLIB]) - AC_PATH_TOOL(AR, ar) - - LIB_CPPFLAGS='' - LIB_CFLAGS='' - LIB_LDFLAGS='' - LIB_PREFIX='lib' - LIB_SUFFIX='.a' - LDFLAGS_RPATH='' - INSTALL_LIB='${INSTALL} -m 644 $$i ${DESTDIR}${libdir}/$$i' - UNINSTALL_LIB='rm -f ${DESTDIR}${libdir}/$$i' - CLEAN_LIB='' - - AC_SUBST(LIB_CPPFLAGS) - AC_SUBST(LIB_CFLAGS) - AC_SUBST(LIB_LDFLAGS) - AC_SUBST(LIB_PREFIX) - AC_SUBST(LIB_SUFFIX) - AC_SUBST(LDFLAGS_RPATH) - AC_SUBST(INSTALL_LIB) - AC_SUBST(UNINSTALL_LIB) - AC_SUBST(CLEAN_LIB) -]) - AC_DEFUN([BUILDSYS_TOUCH_DEPS], [ - ${as_echo:="echo"} "${as_me:="configure"}: touching .deps files" + ${as_echo:="echo"} ${as_me:="configure"}": touching .deps files" for i in $(find . -name Makefile); do DEPSFILE="$(dirname $i)/.deps" test -f "$DEPSFILE" && rm "$DEPSFILE" diff -Nru audacious-plugins-2.4.4/m4/codeset.m4 audacious-plugins-3.2/m4/codeset.m4 --- audacious-plugins-2.4.4/m4/codeset.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/codeset.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -# codeset.m4 serial AM1 (gettext-0.10.40) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -AC_DEFUN([AM_LANGINFO_CODESET], -[ - AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, - [AC_TRY_LINK([#include ], - [char* cs = nl_langinfo(CODESET);], - am_cv_langinfo_codeset=yes, - am_cv_langinfo_codeset=no) - ]) - if test $am_cv_langinfo_codeset = yes; then - AC_DEFINE(HAVE_LANGINFO_CODESET, 1, - [Define if you have and nl_langinfo(CODESET).]) - fi -]) diff -Nru audacious-plugins-2.4.4/m4/gettext.m4 audacious-plugins-3.2/m4/gettext.m4 --- audacious-plugins-2.4.4/m4/gettext.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/gettext.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,415 +0,0 @@ -# gettext.m4 serial 20 (gettext-0.12) -dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995-2000. -dnl Bruno Haible , 2000-2003. - -dnl Macro to add for using GNU gettext. - -dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). -dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The -dnl default (if it is not specified or empty) is 'no-libtool'. -dnl INTLSYMBOL should be 'external' for packages with no intl directory, -dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. -dnl If INTLSYMBOL is 'use-libtool', then a libtool library -dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, -dnl depending on --{enable,disable}-{shared,static} and on the presence of -dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library -dnl $(top_builddir)/intl/libintl.a will be created. -dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext -dnl implementations (in libc or libintl) without the ngettext() function -dnl will be ignored. If NEEDSYMBOL is specified and is -dnl 'need-formatstring-macros', then GNU gettext implementations that don't -dnl support the ISO C 99 formatstring macros will be ignored. -dnl INTLDIR is used to find the intl libraries. If empty, -dnl the value `$(top_builddir)/intl/' is used. -dnl -dnl The result of the configuration is one of three cases: -dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled -dnl and used. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 2) GNU gettext has been found in the system's C library. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 3) No internationalization, always use English msgid. -dnl Catalog format: none -dnl Catalog extension: none -dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. -dnl The use of .gmo is historical (it was needed to avoid overwriting the -dnl GNU format catalogs when building on a platform with an X/Open gettext), -dnl but we keep it in order not to force irrelevant filename changes on the -dnl maintainers. -dnl -AC_DEFUN([AM_GNU_GETTEXT], -[ - dnl Argument checking. - ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , - [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT -])])])])]) - ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , - [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT -])])])]) - define(gt_included_intl, ifelse([$1], [external], [no], [yes])) - define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) - - AC_REQUIRE([AM_PO_SUBDIRS])dnl - ifelse(gt_included_intl, yes, [ - AC_REQUIRE([AM_INTL_SUBDIR])dnl - ]) - - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Sometimes libintl requires libiconv, so first search for libiconv. - dnl Ideally we would do this search only after the - dnl if test "$USE_NLS" = "yes"; then - dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then - dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT - dnl the configure script would need to contain the same shell code - dnl again, outside any 'if'. There are two solutions: - dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. - dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. - dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not - dnl documented, we avoid it. - ifelse(gt_included_intl, yes, , [ - AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - ]) - - dnl Set USE_NLS. - AM_NLS - - ifelse(gt_included_intl, yes, [ - BUILD_INCLUDED_LIBINTL=no - USE_INCLUDED_LIBINTL=no - ]) - LIBINTL= - LTLIBINTL= - POSUB= - - dnl If we use NLS figure out what method - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no - ifelse(gt_included_intl, yes, [ - AC_MSG_CHECKING([whether included gettext is requested]) - AC_ARG_WITH(included-gettext, - [ --with-included-gettext use the GNU gettext library included here], - nls_cv_force_use_gnu_gettext=$withval, - nls_cv_force_use_gnu_gettext=no) - AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) - - nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" - if test "$nls_cv_force_use_gnu_gettext" != "yes"; then - ]) - dnl User does not insist on using GNU NLS library. Figure out what - dnl to use. If GNU gettext is available we use this. Else we have - dnl to fall back to GNU NLS library. - - dnl Add a version number to the cache macros. - define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) - define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) - define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) - - AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, - [AC_TRY_LINK([#include -]ifelse([$2], [need-formatstring-macros], -[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -], [])[extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings;], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], - gt_cv_func_gnugettext_libc=yes, - gt_cv_func_gnugettext_libc=no)]) - - if test "$gt_cv_func_gnugettext_libc" != "yes"; then - dnl Sometimes libintl requires libiconv, so first search for libiconv. - ifelse(gt_included_intl, yes, , [ - AM_ICONV_LINK - ]) - dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL - dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) - dnl because that would add "-liconv" to LIBINTL and LTLIBINTL - dnl even if libiconv doesn't exist. - AC_LIB_LINKFLAGS_BODY([intl]) - AC_CACHE_CHECK([for GNU gettext in libintl], - gt_cv_func_gnugettext_libintl, - [gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - dnl Now see whether libintl exists and does not depend on libiconv. - AC_TRY_LINK([#include -]ifelse([$2], [need-formatstring-macros], -[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -], [])[extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias ();], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], - gt_cv_func_gnugettext_libintl=yes, - gt_cv_func_gnugettext_libintl=no) - dnl Now see whether libintl exists and depends on libiconv. - if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - AC_TRY_LINK([#include -]ifelse([$2], [need-formatstring-macros], -[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -], [])[extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias ();], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], - [LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - gt_cv_func_gnugettext_libintl=yes - ]) - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS"]) - fi - - dnl If an already present or preinstalled GNU gettext() is found, - dnl use it. But if this macro is used in GNU gettext, and GNU - dnl gettext is already preinstalled in libintl, we update this - dnl libintl. (Cf. the install rule in intl/Makefile.in.) - if test "$gt_cv_func_gnugettext_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ - && test "$PACKAGE" != gettext-runtime \ - && test "$PACKAGE" != gettext-tools; }; then - gt_use_preinstalled_gnugettext=yes - else - dnl Reset the values set by searching for libintl. - LIBINTL= - LTLIBINTL= - INCINTL= - fi - - ifelse(gt_included_intl, yes, [ - if test "$gt_use_preinstalled_gnugettext" != "yes"; then - dnl GNU gettext is not found in the C library. - dnl Fall back on included GNU gettext library. - nls_cv_use_gnu_gettext=yes - fi - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions used to generate GNU NLS library. - BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" - LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions to use GNU gettext tools. - CATOBJEXT=.gmo - fi - ]) - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - AC_DEFINE(ENABLE_NLS, 1, - [Define to 1 if translation of program messages to the user's native language - is requested.]) - else - USE_NLS=no - fi - fi - - AC_MSG_CHECKING([whether to use NLS]) - AC_MSG_RESULT([$USE_NLS]) - if test "$USE_NLS" = "yes"; then - AC_MSG_CHECKING([where the gettext function comes from]) - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext_libintl" = "yes"; then - gt_source="external libintl" - else - gt_source="libc" - fi - else - gt_source="included intl directory" - fi - AC_MSG_RESULT([$gt_source]) - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext_libintl" = "yes"; then - AC_MSG_CHECKING([how to link with libintl]) - AC_MSG_RESULT([$LIBINTL]) - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) - fi - - dnl For backward compatibility. Some packages may be using this. - AC_DEFINE(HAVE_GETTEXT, 1, - [Define if the GNU gettext() function is already present or preinstalled.]) - AC_DEFINE(HAVE_DCGETTEXT, 1, - [Define if the GNU dcgettext() function is already present or preinstalled.]) - fi - - dnl We need to process the po/ directory. - POSUB=po - fi - - ifelse(gt_included_intl, yes, [ - dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL - dnl to 'yes' because some of the testsuite requires it. - if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then - BUILD_INCLUDED_LIBINTL=yes - fi - - dnl Make all variables we use known to autoconf. - AC_SUBST(BUILD_INCLUDED_LIBINTL) - AC_SUBST(USE_INCLUDED_LIBINTL) - AC_SUBST(CATOBJEXT) - - dnl For backward compatibility. Some configure.ins may be using this. - nls_cv_header_intl= - nls_cv_header_libgt= - - dnl For backward compatibility. Some Makefiles may be using this. - DATADIRNAME=share - AC_SUBST(DATADIRNAME) - - dnl For backward compatibility. Some Makefiles may be using this. - INSTOBJEXT=.mo - AC_SUBST(INSTOBJEXT) - - dnl For backward compatibility. Some Makefiles may be using this. - GENCAT=gencat - AC_SUBST(GENCAT) - - dnl For backward compatibility. Some Makefiles may be using this. - if test "$USE_INCLUDED_LIBINTL" = yes; then - INTLOBJS="\$(GETTOBJS)" - fi - AC_SUBST(INTLOBJS) - - dnl Enable libtool support if the surrounding package wishes it. - INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix - AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) - ]) - - dnl For backward compatibility. Some Makefiles may be using this. - INTLLIBS="$LIBINTL" - AC_SUBST(INTLLIBS) - - dnl Make all documented variables known to autoconf. - AC_SUBST(LIBINTL) - AC_SUBST(LTLIBINTL) - AC_SUBST(POSUB) -]) - - -dnl Checks for all prerequisites of the intl subdirectory, -dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, -dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. -AC_DEFUN([AM_INTL_SUBDIR], -[ - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AM_MKINSTALLDIRS])dnl - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_CANONICAL_HOST])dnl - AC_REQUIRE([AC_PROG_RANLIB])dnl - AC_REQUIRE([AC_ISC_POSIX])dnl - AC_REQUIRE([AC_HEADER_STDC])dnl - AC_REQUIRE([AC_C_CONST])dnl - AC_REQUIRE([AC_C_INLINE])dnl - AC_REQUIRE([AC_TYPE_OFF_T])dnl - AC_REQUIRE([AC_TYPE_SIZE_T])dnl - AC_REQUIRE([AC_FUNC_ALLOCA])dnl - AC_REQUIRE([AC_FUNC_MMAP])dnl - AC_REQUIRE([jm_GLIBC21])dnl - AC_REQUIRE([gt_INTDIV0])dnl - AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl - AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl - AC_REQUIRE([gt_INTTYPES_PRI])dnl - - AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ -stdlib.h string.h unistd.h sys/param.h]) - AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ -geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ -strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \ -__fsetlocking]) - - AM_ICONV - AM_LANGINFO_CODESET - if test $ac_cv_header_locale_h = yes; then - AM_LC_MESSAGES - fi - - dnl intl/plural.c is generated from intl/plural.y. It requires bison, - dnl because plural.y uses bison specific features. It requires at least - dnl bison-1.26 because earlier versions generate a plural.c that doesn't - dnl compile. - dnl bison is only needed for the maintainer (who touches plural.y). But in - dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put - dnl the rule in general Makefile. Now, some people carelessly touch the - dnl files or have a broken "make" program, hence the plural.c rule will - dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not - dnl present or too old. - AC_CHECK_PROGS([INTLBISON], [bison]) - if test -z "$INTLBISON"; then - ac_verc_fail=yes - else - dnl Found it, now check the version. - AC_MSG_CHECKING([version of bison]) -changequote(<<,>>)dnl - ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) -changequote([,])dnl - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - esac - AC_MSG_RESULT([$ac_prog_version]) - fi - if test $ac_verc_fail = yes; then - INTLBISON=: - fi -]) - - -dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) -AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) diff -Nru audacious-plugins-2.4.4/m4/glibc21.m4 audacious-plugins-3.2/m4/glibc21.m4 --- audacious-plugins-2.4.4/m4/glibc21.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/glibc21.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -# Test for the GNU C Library, version 2.1 or newer. -# From Bruno Haible. - -AC_DEFUN([jm_GLIBC21], - [ - AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, - ac_cv_gnu_library_2_1, - [AC_EGREP_CPP([Lucky GNU user], - [ -#include -#ifdef __GNU_LIBRARY__ - #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) - Lucky GNU user - #endif -#endif - ], - ac_cv_gnu_library_2_1=yes, - ac_cv_gnu_library_2_1=no) - ] - ) - AC_SUBST(GLIBC21) - GLIBC21="$ac_cv_gnu_library_2_1" - ] -) diff -Nru audacious-plugins-2.4.4/m4/iconv.m4 audacious-plugins-3.2/m4/iconv.m4 --- audacious-plugins-2.4.4/m4/iconv.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/iconv.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,103 +0,0 @@ -# iconv.m4 serial AM4 (gettext-0.11.3) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], -[ - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([iconv]) -]) - -AC_DEFUN([AM_ICONV_LINK], -[ - dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and - dnl those with the standalone portable GNU libiconv installed). - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - - dnl Add $INCICONV to CPPFLAGS before performing the following checks, - dnl because if the user has installed libiconv and not disabled its use - dnl via --without-libiconv-prefix, he wants to use it. The first - dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. - am_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) - - AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - AC_TRY_LINK([#include -#include ], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - am_cv_func_iconv=yes) - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - AC_TRY_LINK([#include -#include ], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - am_cv_lib_iconv=yes - am_cv_func_iconv=yes) - LIBS="$am_save_LIBS" - fi - ]) - if test "$am_cv_func_iconv" = yes; then - AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) - fi - if test "$am_cv_lib_iconv" = yes; then - AC_MSG_CHECKING([how to link with libiconv]) - AC_MSG_RESULT([$LIBICONV]) - else - dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV - dnl either. - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - AC_SUBST(LIBICONV) - AC_SUBST(LTLIBICONV) -]) - -AC_DEFUN([AM_ICONV], -[ - AM_ICONV_LINK - if test "$am_cv_func_iconv" = yes; then - AC_MSG_CHECKING([for iconv declaration]) - AC_CACHE_VAL(am_cv_proto_iconv, [ - AC_TRY_COMPILE([ -#include -#include -extern -#ifdef __cplusplus -"C" -#endif -#if defined(__STDC__) || defined(__cplusplus) -size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); -#else -size_t iconv(); -#endif -], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") - am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) - am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` - AC_MSG_RESULT([$]{ac_t:- - }[$]am_cv_proto_iconv) - AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, - [Define as const if the declaration of iconv() needs const.]) - fi -]) diff -Nru audacious-plugins-2.4.4/m4/intdiv0.m4 audacious-plugins-3.2/m4/intdiv0.m4 --- audacious-plugins-2.4.4/m4/intdiv0.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/intdiv0.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ -# intdiv0.m4 serial 1 (gettext-0.11.3) -dnl Copyright (C) 2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -AC_DEFUN([gt_INTDIV0], -[ - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_CANONICAL_HOST])dnl - - AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], - gt_cv_int_divbyzero_sigfpe, - [ - AC_TRY_RUN([ -#include -#include - -static void -#ifdef __cplusplus -sigfpe_handler (int sig) -#else -sigfpe_handler (sig) int sig; -#endif -{ - /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ - exit (sig != SIGFPE); -} - -int x = 1; -int y = 0; -int z; -int nan; - -int main () -{ - signal (SIGFPE, sigfpe_handler); -/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ -#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) - signal (SIGTRAP, sigfpe_handler); -#endif -/* Linux/SPARC yields signal SIGILL. */ -#if defined (__sparc__) && defined (__linux__) - signal (SIGILL, sigfpe_handler); -#endif - - z = x / y; - nan = y / y; - exit (1); -} -], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, - [ - # Guess based on the CPU. - case "$host_cpu" in - alpha* | i[34567]86 | m68k | s390*) - gt_cv_int_divbyzero_sigfpe="guessing yes";; - *) - gt_cv_int_divbyzero_sigfpe="guessing no";; - esac - ]) - ]) - case "$gt_cv_int_divbyzero_sigfpe" in - *yes) value=1;; - *) value=0;; - esac - AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, - [Define if integer division by zero raises signal SIGFPE.]) -]) diff -Nru audacious-plugins-2.4.4/m4/inttypes_h.m4 audacious-plugins-3.2/m4/inttypes_h.m4 --- audacious-plugins-2.4.4/m4/inttypes_h.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/inttypes_h.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -# inttypes_h.m4 serial 5 (gettext-0.12) -dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, -# doesn't clash with , and declares uintmax_t. - -AC_DEFUN([jm_AC_HEADER_INTTYPES_H], -[ - AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h, - [AC_TRY_COMPILE( - [#include -#include ], - [uintmax_t i = (uintmax_t) -1;], - jm_ac_cv_header_inttypes_h=yes, - jm_ac_cv_header_inttypes_h=no)]) - if test $jm_ac_cv_header_inttypes_h = yes; then - AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, - [Define if exists, doesn't clash with , - and declares uintmax_t. ]) - fi -]) diff -Nru audacious-plugins-2.4.4/m4/inttypes.m4 audacious-plugins-3.2/m4/inttypes.m4 --- audacious-plugins-2.4.4/m4/inttypes.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/inttypes.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -# inttypes.m4 serial 1 (gettext-0.11.4) -dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -# Define HAVE_INTTYPES_H if exists and doesn't clash with -# . - -AC_DEFUN([gt_HEADER_INTTYPES_H], -[ - AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, - [ - AC_TRY_COMPILE( - [#include -#include ], - [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) - ]) - if test $gt_cv_header_inttypes_h = yes; then - AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, - [Define if exists and doesn't clash with .]) - fi -]) diff -Nru audacious-plugins-2.4.4/m4/inttypes-pri.m4 audacious-plugins-3.2/m4/inttypes-pri.m4 --- audacious-plugins-2.4.4/m4/inttypes-pri.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/inttypes-pri.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -# inttypes-pri.m4 serial 1 (gettext-0.11.4) -dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -# Define PRI_MACROS_BROKEN if exists and defines the PRI* -# macros to non-string values. This is the case on AIX 4.3.3. - -AC_DEFUN([gt_INTTYPES_PRI], -[ - AC_REQUIRE([gt_HEADER_INTTYPES_H]) - if test $gt_cv_header_inttypes_h = yes; then - AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], - gt_cv_inttypes_pri_broken, - [ - AC_TRY_COMPILE([#include -#ifdef PRId32 -char *p = PRId32; -#endif -], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) - ]) - fi - if test "$gt_cv_inttypes_pri_broken" = yes; then - AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, - [Define if exists and defines unusable PRI* macros.]) - fi -]) diff -Nru audacious-plugins-2.4.4/m4/isc-posix.m4 audacious-plugins-3.2/m4/isc-posix.m4 --- audacious-plugins-2.4.4/m4/isc-posix.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/isc-posix.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -# isc-posix.m4 serial 2 (gettext-0.11.2) -dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -# This file is not needed with autoconf-2.53 and newer. Remove it in 2005. - -# This test replaces the one in autoconf. -# Currently this macro should have the same name as the autoconf macro -# because gettext's gettext.m4 (distributed in the automake package) -# still uses it. Otherwise, the use in gettext.m4 makes autoheader -# give these diagnostics: -# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX -# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX - -undefine([AC_ISC_POSIX]) - -AC_DEFUN([AC_ISC_POSIX], - [ - dnl This test replaces the obsolescent AC_ISC_POSIX kludge. - AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) - ] -) diff -Nru audacious-plugins-2.4.4/m4/jack.m4 audacious-plugins-3.2/m4/jack.m4 --- audacious-plugins-2.4.4/m4/jack.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/jack.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -# Configure paths for JACK - -dnl AM_PATH_JACK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) -dnl Test for JACK, and define JACK_CFLAGS and JACK_LIBS -dnl -AC_DEFUN([AM_PATH_JACK], -[dnl -dnl *** Check for JACK libraries -dnl -PKG_CHECK_MODULES([JACK], [jack >= 0.100.0], [have_jack=yes], [have_jack=no]) - -dnl *** Check for libsamplerate necessary for bio2jack -PKG_CHECK_MODULES([SAMPLERATE], [samplerate >= 0.0.15], - [ac_cv_samplerate=1], [ac_cv_samplerate=0]) - -AC_DEFINE_UNQUOTED([HAVE_SAMPLERATE], ${ac_cv_samplerate}, - [Set to 1 if you have libsamplerate.]) - -dnl *** Make sure libsamplerate is found, we can't compile without it -if test "x${ac_cv_samplerate}" = "x0"; then - AC_MSG_WARN([Could not find libsamplerate, necessary for jack output plugin.]) - have_jack=no -fi - -dnl AC_SUBST(SAMPLERATE_CFLAGS) -dnl AC_SUBST(SAMPLERATE_LIBS) - -if test "x$have_jack" = "xno"; then - ifelse([$2], , :, [$2]) -else - ifelse([$1], , :, [$1]) -fi - -]) diff -Nru audacious-plugins-2.4.4/m4/lcmessage.m4 audacious-plugins-3.2/m4/lcmessage.m4 --- audacious-plugins-2.4.4/m4/lcmessage.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/lcmessage.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -# lcmessage.m4 serial 3 (gettext-0.11.3) -dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995. - -# Check whether LC_MESSAGES is available in . - -AC_DEFUN([AM_LC_MESSAGES], -[ - AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, - [AC_TRY_LINK([#include ], [return LC_MESSAGES], - am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) - if test $am_cv_val_LC_MESSAGES = yes; then - AC_DEFINE(HAVE_LC_MESSAGES, 1, - [Define if your file defines LC_MESSAGES.]) - fi -]) diff -Nru audacious-plugins-2.4.4/m4/libFLAC.m4 audacious-plugins-3.2/m4/libFLAC.m4 --- audacious-plugins-2.4.4/m4/libFLAC.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/libFLAC.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,106 +0,0 @@ -# For audacious by MSameer -# Configure paths for libFLAC -# "Inspired" by ogg.m4 - -dnl AM_PATH_LIBFLAC([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -dnl Test for libFLAC, and define LIBFLAC_CFLAGS and LIBFLAC_LIBS -dnl -AC_DEFUN([AM_PATH_LIBFLAC], -[dnl -dnl Get the cflags and libraries -dnl -AC_ARG_WITH(libFLAC,[ --with-libFLAC=PFX Prefix where libFLAC is installed (optional)], libFLAC_prefix="$withval", libFLAC_prefix="") -AC_ARG_WITH(libFLAC-libraries,[ --with-libFLAC-libraries=DIR Directory where libFLAC library is installed (optional)], libFLAC_libraries="$withval", libFLAC_libraries="") -AC_ARG_WITH(libFLAC-includes,[ --with-libFLAC-includes=DIR Directory where libFLAC header files are installed (optional)], libFLAC_includes="$withval", libFLAC_includes="") -AC_ARG_ENABLE(libFLACtest, [ --disable-libFLACtest do not try to compile and run a test libFLAC program],, enable_libFLACtest=yes) - - if test "x$libFLAC_libraries" != "x" ; then - LIBFLAC_LIBS="-L$libFLAC_libraries" - elif test "x$libFLAC_prefix" != "x" ; then - LIBFLAC_LIBS="-L$libFLAC_prefix/lib" - elif test "x$prefix" != "xNONE" ; then - LIBFLAC_LIBS="-L$libdir" - fi - - LIBFLAC_LIBS="$LIBFLAC_LIBS -lFLAC -lm" - - if test "x$libFLAC_includes" != "x" ; then - LIBFLAC_CFLAGS="-I$libFLAC_includes" - elif test "x$libFLAC_prefix" != "x" ; then - LIBFLAC_CFLAGS="-I$libFLAC_prefix/include" - elif test "x$prefix" != "xNONE"; then - LIBFLAC_CFLAGS="-I$prefix/include" - fi - - AC_MSG_CHECKING(for libFLAC >= 1.1.2) - no_libFLAC="" - - - if test "x$enable_libFLACtest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_CXXFLAGS="$CXXFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $LIBFLAC_CFLAGS" - CXXFLAGS="$CXXFLAGS $LIBFLAC_CFLAGS" - LIBS="$LIBS $LIBFLAC_LIBS" -dnl -dnl Now check if the installed libFLAC is sufficiently new. -dnl - rm -f conf.libFLACtest - AC_TRY_RUN([ -#include -#include -#include -#include - -int main () -{ -FLAC__format_vorbiscomment_entry_name_is_legal("foo"); - system("touch conf.libFLACtest"); - return 0; -} - -],, no_libFLAC=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - - if test "x$no_libFLAC" = "x" ; then - AC_MSG_RESULT(yes) - ifelse([$1], , :, [$1]) - else - AC_MSG_RESULT(no) - if test -f conf.libFLACtest ; then - : - else - echo "*** Could not run libFLAC test program, checking why..." - CFLAGS="$CFLAGS $LIBFLAC_CFLAGS" - LIBS="$LIBS $LIBFLAC_LIBS" - AC_TRY_LINK([ -#include -#include -], [ return 0; ], - [ echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding libFLAC or finding the wrong" - echo "*** version of libFLAC. If it is not finding libFLAC, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], - [ echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means libFLAC was incorrectly installed" - echo "*** or that you have moved libFLAC since it was installed. In the latter case, you" - echo "*** may want to edit the libFLAC-config script: $LIBFLAC_CONFIG" ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - LIBFLAC_CFLAGS="" - LIBFLAC_LIBS="" - ifelse([$2], , :, [$2]) - fi - AC_SUBST(LIBFLAC_CFLAGS) - AC_SUBST(LIBFLAC_LIBS) - rm -f conf.libFLACtest -]) diff -Nru audacious-plugins-2.4.4/m4/lib-ld.m4 audacious-plugins-3.2/m4/lib-ld.m4 --- audacious-plugins-2.4.4/m4/lib-ld.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/lib-ld.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,110 +0,0 @@ -# lib-ld.m4 serial 2 (gettext-0.12) -dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl Subroutines of libtool.m4, -dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision -dnl with libtool.m4. - -dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. -AC_DEFUN([AC_LIB_PROG_LD_GNU], -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then - acl_cv_prog_gnu_ld=yes -else - acl_cv_prog_gnu_ld=no -fi]) -with_gnu_ld=$acl_cv_prog_gnu_ld -]) - -dnl From libtool-1.4. Sets the variable LD. -AC_DEFUN([AC_LIB_PROG_LD], -[AC_ARG_WITH(gnu-ld, -[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], -test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by GCC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]* | [A-Za-z]:[\\/]*)] - [re_direlt='/[^/][^/]*/\.\./'] - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(acl_cv_path_LD, -[if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$acl_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT($LD) -else - AC_MSG_RESULT(no) -fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -AC_LIB_PROG_LD_GNU -]) diff -Nru audacious-plugins-2.4.4/m4/lib-link.m4 audacious-plugins-3.2/m4/lib-link.m4 --- audacious-plugins-2.4.4/m4/lib-link.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/lib-link.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,551 +0,0 @@ -# lib-link.m4 serial 4 (gettext-0.12) -dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and -dnl augments the CPPFLAGS variable. -AC_DEFUN([AC_LIB_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - define([Name],[translit([$1],[./-], [___])]) - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - ac_cv_lib[]Name[]_libs="$LIB[]NAME" - ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" - ac_cv_lib[]Name[]_cppflags="$INC[]NAME" - ]) - LIB[]NAME="$ac_cv_lib[]Name[]_libs" - LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" - INC[]NAME="$ac_cv_lib[]Name[]_cppflags" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the - dnl results of this search when this library appears as a dependency. - HAVE_LIB[]NAME=yes - undefine([Name]) - undefine([NAME]) -]) - -dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) -dnl searches for libname and the libraries corresponding to explicit and -dnl implicit dependencies, together with the specified include files and -dnl the ability to compile and link the specified testcode. If found, it -dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and -dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and -dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs -dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. -AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - define([Name],[translit([$1],[./-], [___])]) - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - - dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - - dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, - dnl because if the user has installed lib[]Name and not disabled its use - dnl via --without-lib[]Name-prefix, he wants to use it. - ac_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - - AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ - ac_save_LIBS="$LIBS" - LIBS="$LIBS $LIB[]NAME" - AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) - LIBS="$ac_save_LIBS" - ]) - if test "$ac_cv_lib[]Name" = yes; then - HAVE_LIB[]NAME=yes - AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) - AC_MSG_CHECKING([how to link with lib[]$1]) - AC_MSG_RESULT([$LIB[]NAME]) - else - HAVE_LIB[]NAME=no - dnl If $LIB[]NAME didn't lead to a usable library, we don't need - dnl $INC[]NAME either. - CPPFLAGS="$ac_save_CPPFLAGS" - LIB[]NAME= - LTLIB[]NAME= - fi - AC_SUBST([HAVE_LIB]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - undefine([Name]) - undefine([NAME]) -]) - -dnl Determine the platform dependent parameters needed to use rpath: -dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, -dnl hardcode_direct, hardcode_minus_L. -AC_DEFUN([AC_LIB_RPATH], -[ - AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS - AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld - AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host - AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir - AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - ]) - wl="$acl_cv_wl" - libext="$acl_cv_libext" - shlibext="$acl_cv_shlibext" - hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - hardcode_direct="$acl_cv_hardcode_direct" - hardcode_minus_L="$acl_cv_hardcode_minus_L" - dnl Determine whether the user wants rpath handling at all. - AC_ARG_ENABLE(rpath, - [ --disable-rpath do not hardcode runtime library paths], - :, enable_rpath=yes) -]) - -dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. -AC_DEFUN([AC_LIB_LINKFLAGS_BODY], -[ - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_LIB_ARG_WITH([lib$1-prefix], -[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib - --without-lib$1-prefix don't search for lib$1 in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi -]) - dnl Search the library and its dependencies in $additional_libdir and - dnl $LDFLAGS. Using breadth-first-seach. - LIB[]NAME= - LTLIB[]NAME= - INC[]NAME= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='$1 $2' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - dnl See if it was already located by an earlier AC_LIB_LINKFLAGS - dnl or AC_LIB_HAVE_LINKFLAGS call. - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" - else - dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined - dnl that this library doesn't exist. So just drop it. - : - fi - else - dnl Search the library lib$name in $additional_libdir and $LDFLAGS - dnl and the already constructed $LIBNAME/$LTLIBNAME. - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - dnl Found the library. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - dnl Linking with a shared library. We attempt to hardcode its - dnl directory into the executable's runpath, unless it's the - dnl standard /usr/lib. - if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then - dnl No hardcoding is needed. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - dnl The hardcoding into $LIBNAME is system dependent. - if test "$hardcode_direct" = yes; then - dnl Using DIR/libNAME.so during linking hardcodes DIR into the - dnl resulting binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - dnl Rely on "-L$found_dir". - dnl But don't add it if it's already contained in the LDFLAGS - dnl or the already constructed $LIBNAME - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH - dnl here, because this doesn't fit in flags passed to the - dnl compiler. So give up. No hardcoding. This affects only - dnl very old systems. - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - dnl Linking with a static library. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" - else - dnl We shouldn't come here, but anyway it's good to have a - dnl fallback. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" - fi - fi - dnl Assume the include files are nearby. - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - dnl Potentially add $additional_includedir to $INCNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's /usr/local/include and we are using GCC on Linux, - dnl 3. if it's already present in $CPPFLAGS or the already - dnl constructed $INCNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INC[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $INCNAME. - INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - dnl Look for dependencies. - if test -n "$found_la"; then - dnl Read the .la file. It defines the variables - dnl dlname, library_names, old_library, dependency_libs, current, - dnl age, revision, installed, dlopen, dlpreopen, libdir. - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - dnl We use only dependency_libs. - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's /usr/local/lib and we are using GCC on Linux, - dnl 3. if it's already present in $LDFLAGS or the already - dnl constructed $LIBNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LIBNAME. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LTLIBNAME. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - dnl Handle this in the next round. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - dnl Handle this in the next round. Throw away the .la's - dnl directory; it is already contained in a preceding -L - dnl option. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - dnl Most likely an immediate library name. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" - ;; - esac - done - fi - else - dnl Didn't find the library; assume it is in the system directories - dnl known to the linker and runtime loader. (All the system - dnl directories known to the linker should also be known to the - dnl runtime loader, otherwise the system is severely misconfigured.) - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - dnl Weird platform: only the last -rpath option counts, the user must - dnl pass all path elements in one option. We can arrange that for a - dnl single library, but not when more than one $LIBNAMEs are used. - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - else - dnl The -rpath options are cumulative. - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - dnl When using libtool, the option that works for both libraries and - dnl executables is -R. The -R options are cumulative. - for found_dir in $ltrpathdirs; do - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" - done - fi -]) - -dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, -dnl unless already present in VAR. -dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes -dnl contains two or three consecutive elements that belong together. -AC_DEFUN([AC_LIB_APPENDTOVAR], -[ - for element in [$2]; do - haveit= - for x in $[$1]; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - [$1]="${[$1]}${[$1]:+ }$element" - fi - done -]) diff -Nru audacious-plugins-2.4.4/m4/libmad.m4 audacious-plugins-3.2/m4/libmad.m4 --- audacious-plugins-2.4.4/m4/libmad.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/libmad.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,116 +0,0 @@ -dnl Configure paths for libmad -dnl derived from libFLAC.m4 - -dnl AM_PATH_LIBMAD([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -dnl Test for libmad, and define MAD_CFLAGS and MAD_LIBS -dnl -AC_DEFUN([AM_PATH_LIBMAD], -[dnl -dnl Get the cflags and libraries -dnl -AC_ARG_WITH([libmad], -[AS_HELP_STRING([--with-libmad=PFX], [Prefix where libmad is installed])], -[libmad_prefix="$withval"], [libmad_prefix=""]) - -AC_ARG_WITH([libmad-libraries], -[AS_HELP_STRING([--with-libmad-libraries=DIR], [Directory where libmad library is installed])], -[libmad_libraries="$withval"], [libmad_libraries=""]) - -AC_ARG_WITH([libmad-includes], -[AS_HELP_STRING([--with-libmad-includes=DIR], [Directory where libmad header files are installed])], -[libmad_includes="$withval"], [libmad_includes=""]) - -AC_ARG_ENABLE([libmadtest], -[AS_HELP_STRING([--disable-libmadtest], [Do not try to compile and run a test libmad program])],, -[enable_libmadtest="yes"]) - - if test "x$libmad_libraries" != "x" ; then - MAD_LIBS="-L$libmad_libraries" - elif test "x$libmad_prefix" != "x" ; then - MAD_LIBS="-L$libmad_prefix/lib" - elif test "x$prefix" != "xNONE" ; then - MAD_LIBS="-L$libdir" - fi - - MAD_LIBS="$MAD_LIBS -lmad -lm" - - if test "x$libmad_includes" != "x" ; then - MAD_CFLAGS="-I$libmad_includes" - elif test "x$libmad_prefix" != "x" ; then - MAD_CFLAGS="-I$libmad_prefix/include" - elif test "x$prefix" != "xNONE"; then - MAD_CFLAGS="-I$prefix/include" - fi - - no_libmad="" - - - if test "x$enable_libmadtest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_CXXFLAGS="$CXXFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $MAD_CFLAGS" - CXXFLAGS="$CXXFLAGS $MAD_CFLAGS" - LIBS="$LIBS $MAD_LIBS" -dnl -dnl Now check if the installed libmad is sufficiently new. -dnl - AC_MSG_CHECKING([for libmad]) - rm -f conf.libmadtest - AC_TRY_RUN([ -#include -#include -#include -#include - -int main () -{ - mad_timer_t t; - mad_timer_add(&t, t); - system("touch conf.libmadtest"); - return 0; -} - -],, [no_libmad="yes"],[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - - if test "x$no_libmad" = "x" ; then - AC_MSG_RESULT([yes]) - ifelse([$1], , :, [$1]) - else - AC_MSG_RESULT([no]) - if test -f conf.libmadtest ; then - : - else - echo "*** Could not run libmad test program, checking why..." - CFLAGS="$CFLAGS $MAD_CFLAGS" - LIBS="$LIBS $MAD_LIBS" - AC_TRY_LINK([ -#include -], [ return 0; ], - [ echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding libmad or finding the wrong" - echo "*** version of libmad. If it is not finding libmad, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], - [ echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means libmad was incorrectly installed" - echo "*** or that you have moved libmad since it was installed. In the latter case, you" - echo "*** may want to edit the libmad-config script: $LIBMAD_CONFIG" ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - MAD_CFLAGS="" - MAD_LIBS="" - ifelse([$2], , :, [$2]) - fi - AC_SUBST([MAD_CFLAGS]) - AC_SUBST([MAD_LIBS]) - rm -f conf.libmadtest -]) diff -Nru audacious-plugins-2.4.4/m4/lib-prefix.m4 audacious-plugins-3.2/m4/lib-prefix.m4 --- audacious-plugins-2.4.4/m4/lib-prefix.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/lib-prefix.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,155 +0,0 @@ -# lib-prefix.m4 serial 2 (gettext-0.12) -dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and -dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't -dnl require excessive bracketing. -ifdef([AC_HELP_STRING], -[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], -[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) - -dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed -dnl to access previously installed libraries. The basic assumption is that -dnl a user will want packages to use other packages he previously installed -dnl with the same --prefix option. -dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate -dnl libraries, but is otherwise very convenient. -AC_DEFUN([AC_LIB_PREFIX], -[ - AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) - AC_REQUIRE([AC_PROG_CC]) - AC_REQUIRE([AC_CANONICAL_HOST]) - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_LIB_ARG_WITH([lib-prefix], -[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib - --without-lib-prefix don't search for libraries in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi -]) - if test $use_additional = yes; then - dnl Potentially add $additional_includedir to $CPPFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's already present in $CPPFLAGS, - dnl 3. if it's /usr/local/include and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - for x in $CPPFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $CPPFLAGS. - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" - fi - fi - fi - fi - dnl Potentially add $additional_libdir to $LDFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's already present in $LDFLAGS, - dnl 3. if it's /usr/local/lib and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - for x in $LDFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LDFLAGS. - LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" - fi - fi - fi - fi - fi -]) - -dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, -dnl acl_final_exec_prefix, containing the values to which $prefix and -dnl $exec_prefix will expand at the end of the configure script. -AC_DEFUN([AC_LIB_PREPARE_PREFIX], -[ - dnl Unfortunately, prefix and exec_prefix get only finally determined - dnl at the end of configure. - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" -]) - -dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the -dnl variables prefix and exec_prefix bound to the values they will have -dnl at the end of the configure script. -AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], -[ - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - $1 - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" -]) diff -Nru audacious-plugins-2.4.4/m4/lirc.m4 audacious-plugins-3.2/m4/lirc.m4 --- audacious-plugins-2.4.4/m4/lirc.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/lirc.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,363 +0,0 @@ -## lirc.m4 (Macros for autoconf) -## -## (C) 1999 Christoph Bartelmus (lirc@bartelmus.de) -## - -####################################################################### -## -## Check for LIRC -## -####################################################################### - -dnl AC_PATH_LIRC([MINIMUM-VERSION]) -dnl Check for LIRC and define LIRCD -dnl -AC_DEFUN([AC_PATH_LIRC], -[ - min_lirc_version=ifelse([$1], ,0.5.5,$1) - AC_MSG_CHECKING(for LIRC>=$min_lirc_version) - - AC_CACHE_VAL(ac_cv_have_lirc,[ - no_lirc=no - lirc_version=none - lirc_cross_compiling=no - - if test ! -S /dev/lircd; then - LIRCD=/dev/null - no_lirc=yes - else - LIRCD=/dev/lircd - - rm -f conf.lirc - ac_save_cflags="${CFLAGS}" - CFLAGS="$CFLAGS -DLIRCD=\"$LIRCD\"" - AC_TRY_RUN( -[ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define PACKET_SIZE 256 -/* three seconds */ -#define TIMEOUT 3 - -int timeout=0; - -void sigalrm(int sig) -{ - timeout=1; -} - -const char *read_string(int fd) -{ - static char buffer[PACKET_SIZE+1]=""; - char *end; - static int ptr=0; - ssize_t ret; - - if(ptr>0) - { - memmove(buffer,buffer+ptr,strlen(buffer+ptr)+1); - ptr=strlen(buffer); - end=strchr(buffer,'\n'); - } - else - { - end=NULL; - } - alarm(TIMEOUT); - while(end==NULL) - { - if(PACKET_SIZE<=ptr) - { - ptr=0; - return(NULL); - } - ret=read(fd,buffer+ptr,PACKET_SIZE-ptr); - - if(ret<=0 || timeout) - { - if(!timeout) - { - alarm(0); - } - ptr=0; - return(NULL); - } - buffer[ptr+ret]=0; - ptr=strlen(buffer); - end=strchr(buffer,'\n'); - } - alarm(0);timeout=0; - - end[0]=0; - ptr=strlen(buffer)+1; - return(buffer); -} - -enum packet_state -{ - P_BEGIN, - P_MESSAGE, - P_STATUS, - P_DATA, - P_N, - P_DATA_N, - P_END -}; - -char *get_version(int fd,const char *packet) -{ - int done,todo; - const char *string,*data; - char *endptr; - enum packet_state state; - int status,n; - unsigned long data_n; - unsigned int major,minor,micro; - static char version[100]; - - todo=strlen(packet); - data=packet; - while(todo>0) - { - done=write(fd,(void *) data,todo); - if(done<0) - { - return(NULL); - } - data+=done; - todo-=done; - } - - /* get response */ - status=0; - state=P_BEGIN; - n=0; - while(1) - { - string=read_string(fd); - if(string==NULL) return(NULL); - switch(state) - { - case P_BEGIN: - if(strcasecmp(string,"BEGIN")!=0) - { - continue; - } - state=P_MESSAGE; - break; - case P_MESSAGE: - if(strncasecmp(string,packet,strlen(string))!=0 || - strlen(string)+1!=strlen(packet)) - { - state=P_BEGIN; - continue; - } - state=P_STATUS; - break; - case P_STATUS: - if(strcasecmp(string,"SUCCESS")==0) - { - status=0; - } - else if(strcasecmp(string,"END")==0) - { - status=0; - return(NULL); - } - else if(strcasecmp(string,"ERROR")==0) - { - status=-1; - } - else - { - goto bad_packet; - } - state=P_DATA; - break; - case P_DATA: - if(strcasecmp(string,"END")==0) - { - return(NULL); - } - else if(strcasecmp(string,"DATA")==0) - { - state=P_N; - break; - } - goto bad_packet; - case P_N: - errno=0; - data_n=strtoul(string,&endptr,0); - if(!*string || *endptr) - { - goto bad_packet; - } - if(data_n==0) - { - state=P_END; - } - else - { - state=P_DATA_N; - } - break; - case P_DATA_N: - if(data_n==1 && status==0) - { - if(sscanf(string,"%u.%u.%u", - &major,&minor,µ)==3) - { - sprintf(version,"%u.%u.%u", - major,minor,micro); - } - else - { - goto bad_packet; - } - } - n++; - if(n==data_n) state=P_END; - break; - case P_END: - if(strcasecmp(string,"END")==0) - { - return(version); - } - goto bad_packet; - break; - } - } - bad_packet: - return(NULL); -} - -int main(int argc,char **argv) -{ - char *version,*min_version; - unsigned int major,minor,micro,min_major,min_minor,min_micro; - struct sockaddr_un addr; - FILE *result; - int fd; - struct sigaction act; - - result=fopen("conf.lirc","w"); - if(result==NULL) exit(EXIT_FAILURE); - - act.sa_handler=sigalrm; - sigemptyset(&act.sa_mask); - act.sa_flags=0; /* we need EINTR */ - sigaction(SIGALRM,&act,NULL); - - addr.sun_family=AF_UNIX; - strcpy(addr.sun_path,LIRCD); - fd=socket(AF_UNIX,SOCK_STREAM,0); - if(fd==-1) - { - fprintf(result,"unknown"); - fclose(result); - close(fd); - exit(EXIT_FAILURE); - }; - if(connect(fd,(struct sockaddr *)&addr,sizeof(addr))==-1) - { - fprintf(result,"unknown"); - fclose(result); - close(fd); - exit(EXIT_FAILURE); - }; - - version=get_version(fd,"VERSION\n"); - if(version==NULL) - { - fprintf(result,"<0.5.5"); - fclose(result); - close(fd); - exit(EXIT_FAILURE); - } - fprintf(result,"%s",version); - fclose(result); - close(fd); - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - - min_version=strdup("$min_lirc_version"); - if(min_version==NULL) exit(EXIT_FAILURE); - - if(sscanf(version,"%u.%u.%u",&major,&minor,µ)!=3 || - sscanf(min_version,"%u.%u.%u",&min_major,&min_minor,&min_micro)!=3) - { - exit(EXIT_FAILURE); - } - if(major, 1995-2000. -dnl Bruno Haible , 2000-2003. - -AC_DEFUN([AM_NLS], -[ - AC_MSG_CHECKING([whether NLS is requested]) - dnl Default is enabled NLS - AC_ARG_ENABLE(nls, - [ --disable-nls do not use Native Language Support], - USE_NLS=$enableval, USE_NLS=yes) - AC_MSG_RESULT($USE_NLS) - AC_SUBST(USE_NLS) -]) - -AC_DEFUN([AM_MKINSTALLDIRS], -[ - dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly - dnl find the mkinstalldirs script in another subdir but $(top_srcdir). - dnl Try to locate it. - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - case "$ac_aux_dir" in - /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; - *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; - esac - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - AC_SUBST(MKINSTALLDIRS) -]) diff -Nru audacious-plugins-2.4.4/m4/pkg.m4 audacious-plugins-3.2/m4/pkg.m4 --- audacious-plugins-2.4.4/m4/pkg.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/pkg.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,150 +0,0 @@ -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# -# Copyright © 2004 Scott James Remnant . -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program 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 -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# PKG_PROG_PKG_CONFIG([MIN-VERSION]) -# ---------------------------------- -AC_DEFUN([PKG_PROG_PKG_CONFIG], -[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) -m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) -AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) -fi -if test "x$PKG_CONFIG" != "x"; then - _pkg_min_version=m4_default([$1], [0.9.0]) - AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version ; then - AC_MSG_RESULT([yes]) - if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes - else - _pkg_short_errors_supported=no - fi - else - AC_MSG_RESULT([no]) - PKG_CONFIG="" - fi - -fi[]dnl -])# PKG_PROG_PKG_CONFIG - -# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# -# Check to see whether a particular set of modules exists. Similar -# to PKG_CHECK_MODULES(), but does not set variables or print errors. -# -# -# Similar to PKG_CHECK_MODULES, make sure that the first instance of -# this or PKG_CHECK_MODULES is called, or make sure to call -# PKG_CHECK_EXISTS manually -# -------------------------------------------------------------- -AC_DEFUN([PKG_CHECK_EXISTS], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -if test "x$PKG_CONFIG" != "x" && \ - AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then - m4_ifval([$2], [$2], [:]) -m4_ifvaln([$3], [else - $3])dnl -fi]) - -# _PKG_CONFIG([VARIABLE], [MODULES]) -# --------------------------------------------- -m4_define([_PKG_CONFIG], -[if test "x$PKG_CONFIG" != "x"; then - if AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$2"]); then - if test "x${$1[]_CFLAGS}" != "x"; then - pkg_cv_[]$1[]_CFLAGS="${$1[]_CFLAGS}" - else - pkg_cv_[]$1[]_CFLAGS=`$PKG_CONFIG --cflags "$2" 2>/dev/null` - fi - if test "x${$1[]_LIBS}" != "x"; then - pkg_cv_[]$1[]_LIBS="${$1_LIBS}" - else - pkg_cv_[]$1[]_LIBS=`$PKG_CONFIG --libs "$2" 2>/dev/null` - fi - else - pkg_failed="yes" - fi -else - pkg_failed="untried" -fi[]dnl -])# _PKG_CONFIG - -# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -# [ACTION-IF-NOT-FOUND]) -# -# -# Note that if there is a possibility the first call to -# PKG_CHECK_MODULES might not happen, you should be sure to include an -# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac -# -# -# -------------------------------------------------------------- -AC_DEFUN([PKG_CHECK_MODULES], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl -AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl -pkg_failed=no -AC_MSG_CHECKING([for $1]) -_PKG_CONFIG([$1], [$2]) -m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS -and $1[]_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details.]) - -if test "x$pkg_failed" = "xyes"; then - if test "x$_pkg_short_errors_supported" = "xyes"; then - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2" 2>&1` - else - $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2" 2>&1` - fi - dnl Put the nasty error message in config.log where it belongs - echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD - ifelse([$4], , [AC_MSG_ERROR(dnl -[Package requirements ($2) were not met: - -$$1_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -_PKG_TEXT -])], - [AC_MSG_RESULT([no]) - $4]) -elif test "x$pkg_failed" = "xuntried"; then - ifelse([$4], , [AC_MSG_FAILURE(dnl -[The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -_PKG_TEXT - -To get pkg-config, see .])], - [$4]) -else - $1[]_CFLAGS="$pkg_cv_[]$1[]_CFLAGS" - $1[]_LIBS="$pkg_cv_[]$1[]_LIBS" - AC_MSG_RESULT([yes]) - ifelse([$3], , :, [$3]) -fi[]dnl -])# PKG_CHECK_MODULES diff -Nru audacious-plugins-2.4.4/m4/po.m4 audacious-plugins-3.2/m4/po.m4 --- audacious-plugins-2.4.4/m4/po.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/po.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,197 +0,0 @@ -# po.m4 serial 1 (gettext-0.12) -dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995-2000. -dnl Bruno Haible , 2000-2003. - -dnl Checks for all prerequisites of the po subdirectory. -AC_DEFUN([AM_PO_SUBDIRS], -[ - AC_REQUIRE([AC_PROG_MAKE_SET])dnl - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AM_MKINSTALLDIRS])dnl - AC_REQUIRE([AM_NLS])dnl - - dnl Perform the following tests also if --disable-nls has been given, - dnl because they are needed for "make dist" to work. - - dnl Search for GNU msgfmt in the PATH. - dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. - dnl The second test excludes FreeBSD msgfmt. - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - - dnl Search for GNU xgettext 0.12 or newer in the PATH. - dnl The first test excludes Solaris xgettext and early GNU xgettext versions. - dnl The second test excludes FreeBSD xgettext. - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - dnl Remove leftover from FreeBSD xgettext call. - rm -f messages.po - - dnl Search for GNU msgmerge 0.11 or newer in the PATH. - AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, - [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) - - dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. - dnl Test whether we really found GNU msgfmt. - if test "$GMSGFMT" != ":"; then - dnl If it is no GNU msgfmt we define it as : so that the - dnl Makefiles still can work. - if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && - (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - AC_MSG_RESULT( - [found $GMSGFMT program is not GNU msgfmt; ignore it]) - GMSGFMT=":" - fi - fi - - dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. - dnl Test whether we really found GNU xgettext. - if test "$XGETTEXT" != ":"; then - dnl If it is no GNU xgettext we define it as : so that the - dnl Makefiles still can work. - if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && - (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - AC_MSG_RESULT( - [found xgettext program is not GNU xgettext; ignore it]) - XGETTEXT=":" - fi - dnl Remove leftover from FreeBSD xgettext call. - rm -f messages.po - fi - - AC_OUTPUT_COMMANDS([ - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - POMAKEFILEDEPS="POTFILES.in" - # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$OBSOLETE_ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" - else - # The set of available languages was given in configure.in. - eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' - fi - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - GMOFILES= - UPDATEPOFILES= - DUMMYPOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done], - [# Capture the value of obsolete ALL_LINGUAS because we need it to compute - # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it - # from automake. - eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - ]) -]) diff -Nru audacious-plugins-2.4.4/m4/progtest.m4 audacious-plugins-3.2/m4/progtest.m4 --- audacious-plugins-2.4.4/m4/progtest.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/progtest.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -# progtest.m4 serial 3 (gettext-0.12) -dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1996. - -# Search path for a program which passes the given test. - -dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, -dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) -AC_DEFUN([AM_PATH_PROG_WITH_TEST], -[ -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "$2", so it can be a program name with args. -set dummy $2; ac_word=[$]2 -AC_MSG_CHECKING([for $ac_word]) -AC_CACHE_VAL(ac_cv_path_$1, -[case "[$]$1" in - [[\\/]]* | ?:[[\\/]]*) - ac_cv_path_$1="[$]$1" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in ifelse([$5], , $PATH, [$5]); do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - if [$3]; then - ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" -dnl If no 4th arg is given, leave the cache variable unset, -dnl so AC_PATH_PROGS will keep looking. -ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" -])dnl - ;; -esac])dnl -$1="$ac_cv_path_$1" -if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then - AC_MSG_RESULT([$]$1) -else - AC_MSG_RESULT(no) -fi -AC_SUBST($1)dnl -]) diff -Nru audacious-plugins-2.4.4/m4/sdl.m4 audacious-plugins-3.2/m4/sdl.m4 --- audacious-plugins-2.4.4/m4/sdl.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/sdl.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,70 +0,0 @@ -# Configure paths for SDL -# Sam Lantinga 9/21/99 -# stolen from Manish Singh -# stolen back from Frank Belew -# stolen from Manish Singh -# Shamelessly stolen from Owen Taylor - -dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) -dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS -dnl -AC_DEFUN([AM_PATH_SDL], -[dnl -dnl Get the cflags and libraries from the sdl-config script -dnl -AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)], - sdl_prefix="$withval", sdl_prefix="") -AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)], - sdl_exec_prefix="$withval", sdl_exec_prefix="") - - if test x$sdl_exec_prefix != x ; then - sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" - if test x${SDL_CONFIG+set} != xset ; then - SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config - fi - fi - if test x$sdl_prefix != x ; then - sdl_args="$sdl_args --prefix=$sdl_prefix" - if test x${SDL_CONFIG+set} != xset ; then - SDL_CONFIG=$sdl_prefix/bin/sdl-config - fi - fi - - AC_REQUIRE([AC_CANONICAL_TARGET]) - PATH="$prefix/bin:$prefix/usr/bin:$PATH" - AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH]) - min_sdl_version=ifelse([$1], ,0.11.0,$1) - AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) - no_sdl="" - if test "$SDL_CONFIG" = "no" ; then - no_sdl=yes - else - SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` - SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` - - sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - fi - if test "x$no_sdl" = x ; then - AC_MSG_RESULT(yes) - ifelse([$2], , :, [$2]) - else - AC_MSG_RESULT(no) - if test "$SDL_CONFIG" = "no" ; then - echo "*** The sdl-config script installed by SDL could not be found" - echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the SDL_CONFIG environment variable to the" - echo "*** full path to sdl-config." - fi - SDL_CFLAGS="" - SDL_LIBS="" - ifelse([$3], , :, [$3]) - fi - AC_SUBST(SDL_CFLAGS) - AC_SUBST(SDL_LIBS) - rm -f conf.sdltest -]) diff -Nru audacious-plugins-2.4.4/m4/sid.m4 audacious-plugins-3.2/m4/sid.m4 --- audacious-plugins-2.4.4/m4/sid.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/sid.m4 2012-01-20 19:48:30.000000000 +0000 @@ -14,7 +14,7 @@ XS_BUILDERS_CHECK xs_builders_available="no" XS_BUILDERS_FIND([reSID], [resid-builder], [resid.h], [ReSIDBuilder]) - XS_BUILDERS_FIND([HardSID], [hardsid-builder], [hardsid.h], [HardSID]) + XS_BUILDERS_FIND([HardSID], [hardsid-builder], [hardsid.h], [HardSIDBuilder]) if test "x$xs_builders_available" = "xno"; then AC_MSG_WARN([No builder modules were found in the sidbuilders directory!]); xs_have_sidplay2=no diff -Nru audacious-plugins-2.4.4/m4/stdint_h.m4 audacious-plugins-3.2/m4/stdint_h.m4 --- audacious-plugins-2.4.4/m4/stdint_h.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/stdint_h.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -# stdint_h.m4 serial 3 (gettext-0.12) -dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -# Define HAVE_STDINT_H_WITH_UINTMAX if exists, -# doesn't clash with , and declares uintmax_t. - -AC_DEFUN([jm_AC_HEADER_STDINT_H], -[ - AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h, - [AC_TRY_COMPILE( - [#include -#include ], - [uintmax_t i = (uintmax_t) -1;], - jm_ac_cv_header_stdint_h=yes, - jm_ac_cv_header_stdint_h=no)]) - if test $jm_ac_cv_header_stdint_h = yes; then - AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, - [Define if exists, doesn't clash with , - and declares uintmax_t. ]) - fi -]) diff -Nru audacious-plugins-2.4.4/m4/uintmax_t.m4 audacious-plugins-3.2/m4/uintmax_t.m4 --- audacious-plugins-2.4.4/m4/uintmax_t.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/uintmax_t.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -# uintmax_t.m4 serial 7 (gettext-0.12) -dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -AC_PREREQ(2.13) - -# Define uintmax_t to 'unsigned long' or 'unsigned long long' -# if it is not already defined in or . - -AC_DEFUN([jm_AC_TYPE_UINTMAX_T], -[ - AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) - AC_REQUIRE([jm_AC_HEADER_STDINT_H]) - if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then - AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) - test $ac_cv_type_unsigned_long_long = yes \ - && ac_type='unsigned long long' \ - || ac_type='unsigned long' - AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, - [Define to unsigned long or unsigned long long - if and don't define.]) - else - AC_DEFINE(HAVE_UINTMAX_T, 1, - [Define if you have the 'uintmax_t' type in or .]) - fi -]) diff -Nru audacious-plugins-2.4.4/m4/ulonglong.m4 audacious-plugins-3.2/m4/ulonglong.m4 --- audacious-plugins-2.4.4/m4/ulonglong.m4 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/m4/ulonglong.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -# ulonglong.m4 serial 2 (fileutils-4.0.32, gettext-0.10.40) -dnl Copyright (C) 1999-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG], -[ - AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, - [AC_TRY_LINK([unsigned long long ull = 1; int i = 63;], - [unsigned long long ullmax = (unsigned long long) -1; - return ull << i | ull >> i | ullmax / ull | ullmax % ull;], - ac_cv_type_unsigned_long_long=yes, - ac_cv_type_unsigned_long_long=no)]) - if test $ac_cv_type_unsigned_long_long = yes; then - AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, - [Define if you have the unsigned long long type.]) - fi -]) diff -Nru audacious-plugins-2.4.4/Mercurial-Access audacious-plugins-3.2/Mercurial-Access --- audacious-plugins-2.4.4/Mercurial-Access 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/Mercurial-Access 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -The atheme.org mercurial repository is available for anonymous read-only -access. - -To retrieve the audacious-plugins development branch from hg.atheme.org, do: - $ hg clone http://hg.atheme.org/audacious-plugins/ audacious-plugins-devel - -To retrieve the audacious-plugins stable branch from hg.atheme.org, do: - $ hg clone http://hg.atheme.org/release/audacious-plugins-$VERSION/ - - Where $VERSION is the stable major version, for example the latest - fixes and updates to 1.5-series of plugins would be in: - - $ hg clone http://hg.atheme.org/release/audacious-plugins-1.5/ diff -Nru audacious-plugins-2.4.4/mkinstalldirs audacious-plugins-3.2/mkinstalldirs --- audacious-plugins-2.4.4/mkinstalldirs 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/mkinstalldirs 1970-01-01 00:00:00.000000000 +0000 @@ -1,111 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman -# Created: 1993-05-16 -# Public domain - -errstatus=0 -dirmode="" - -usage="\ -Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." - -# process command line arguments -while test $# -gt 0 ; do - case $1 in - -h | --help | --h*) # -h for help - echo "$usage" 1>&2 - exit 0 - ;; - -m) # -m PERM arg - shift - test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } - dirmode=$1 - shift - ;; - --) # stop option processing - shift - break - ;; - -*) # unknown option - echo "$usage" 1>&2 - exit 1 - ;; - *) # first non-opt arg - break - ;; - esac -done - -for file -do - if test -d "$file"; then - shift - else - break - fi -done - -case $# in - 0) exit 0 ;; -esac - -case $dirmode in - '') - if mkdir -p -- . 2>/dev/null; then - echo "mkdir -p -- $*" - exec mkdir -p -- "$@" - fi - ;; - *) - if mkdir -m "$dirmode" -p -- . 2>/dev/null; then - echo "mkdir -m $dirmode -p -- $*" - exec mkdir -m "$dirmode" -p -- "$@" - fi - ;; -esac - -for file -do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d - do - pathcomp="$pathcomp$d" - case $pathcomp in - -*) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - else - if test ! -z "$dirmode"; then - echo "chmod $dirmode $pathcomp" - lasterr="" - chmod "$dirmode" "$pathcomp" || lasterr=$? - - if test ! -z "$lasterr"; then - errstatus=$lasterr - fi - fi - fi - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# End: -# mkinstalldirs ends here diff -Nru audacious-plugins-2.4.4/po/audacious-plugins.pot audacious-plugins-3.2/po/audacious-plugins.pot --- audacious-plugins-2.4.4/po/audacious-plugins.pot 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/audacious-plugins.pot 2012-01-20 19:48:30.000000000 +0000 @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: http://jira.atheme.org/\n" -"POT-Creation-Date: 2010-08-03 18:09-0400\n" +"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2012-01-11 09:01-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,8 +16,9 @@ "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: src/aac/libmp4.c:291 +#: src/aac/libmp4.c:256 #, c-format msgid "" "Using libfaad2-%s for decoding.\n" @@ -25,421 +26,172 @@ "Copyright (c) 2005-2006 Audacious team" msgstr "" -#: src/aac/libmp4.c:296 +#: src/aac/libmp4.c:261 msgid "About MP4 AAC decoder plugin" msgstr "" -#: src/adplug/adplug-xmms.cc:153 -msgid "About " +#: src/alarm/alarm.c:312 +msgid "About Alarm" msgstr "" -#: src/adplug/adplug-xmms.cc:157 +#: src/alarm/alarm.c:313 msgid "" +"A plugin that can be used to start playing at a certain time.\n" "\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"This plugin is released under the terms and conditions of the GNU LGPL.\n" -"See http://www.gnu.org/licenses/lgpl.html for details.\n" -"\n" -"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et " -"al.\n" -"Linked AdPlug library version: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:234 -msgid "AdPlug :: Configuration" -msgstr "" - -#: src/adplug/adplug-xmms.cc:243 src/adplug/adplug-xmms.cc:504 -#: src/cdaudio-ng/configure.c:258 src/crystalizer/crystalizer.c:127 -#: src/echo_plugin/gui.c:122 src/jack/configure.c:146 src/null/null.c:109 -#: src/stereo_plugin/stereo.c:123 src/sun/configure.c:557 -msgid "Ok" -msgstr "" - -#: src/adplug/adplug-xmms.cc:253 src/alarm/interface.c:1398 -#: src/cdaudio-ng/configure.c:263 src/crystalizer/crystalizer.c:136 -#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 -#: src/modplug/gui/interface.cxx:715 src/null/null.c:110 -#: src/stereo_plugin/stereo.c:132 src/sun/configure.c:565 -msgid "Cancel" -msgstr "" - -#: src/adplug/adplug-xmms.cc:269 src/console/configure.c:154 -#: src/modplug/gui/interface.cxx:629 src/modplug/gui/interface.cxx:888 -msgid "General" -msgstr "" - -#: src/adplug/adplug-xmms.cc:281 -msgid "Sound quality" -msgstr "" - -#: src/adplug/adplug-xmms.cc:286 src/modplug/gui/interface.cxx:188 -msgid "Resolution" -msgstr "" - -#: src/adplug/adplug-xmms.cc:288 -msgid "8bit" -msgstr "" - -#: src/adplug/adplug-xmms.cc:293 -msgid "16bit" -msgstr "" - -#: src/adplug/adplug-xmms.cc:301 src/modplug/gui/interface.cxx:219 -msgid "Channels" -msgstr "" - -#: src/adplug/adplug-xmms.cc:303 src/filewriter/mp3.c:934 -#: src/mpg123/mpg123.c:174 src/sid/xs_interface.c:301 -msgid "Mono" -msgstr "" - -#: src/adplug/adplug-xmms.cc:308 src/filewriter/mp3.c:929 -#: src/modplug/gui/interface.cxx:205 src/mpg123/mpg123.c:174 -#: src/sid/xs_interface.c:308 -msgid "Stereo" -msgstr "" - -#: src/adplug/adplug-xmms.cc:312 -msgid "" -"Setting stereo is not recommended, unless you need to. This won't add any " -"stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!" -msgstr "" - -#: src/adplug/adplug-xmms.cc:320 -msgid "Frequency" -msgstr "" - -#: src/adplug/adplug-xmms.cc:356 src/adplug/adplug-xmms.cc:560 -#: src/console/configure.c:156 src/gtkui/ui_manager.c:64 -#: src/skins/ui_manager.c:165 -msgid "Playback" -msgstr "" - -#: src/adplug/adplug-xmms.cc:360 -msgid "Detect songend" -msgstr "" - -#: src/adplug/adplug-xmms.cc:364 -msgid "" -"If enabled, XMMS will detect a song's ending, stop it and advance in the " -"playlist. If disabled, XMMS won't take notice of a song's ending and loop it " -"all over again and again." -msgstr "" - -#: src/adplug/adplug-xmms.cc:375 -msgid "Formats" -msgstr "" - -#: src/adplug/adplug-xmms.cc:382 -msgid "Format selection" -msgstr "" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Format" -msgstr "" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Extension" -msgstr "" - -#: src/adplug/adplug-xmms.cc:425 -msgid "" -"Selected file types will be recognized and played back by this plugin. " -"Deselected types will be ignored to make room for other plugins to play " -"these files." -msgstr "" - -#: src/adplug/adplug-xmms.cc:511 -msgid "AdPlug :: File Info" -msgstr "" - -#: src/adplug/adplug-xmms.cc:533 src/amidi-plug/i_configure-fluidsynth.c:348 -msgid "Filename" -msgstr "" - -#: src/adplug/adplug-xmms.cc:537 src/skins/ui_playlist.c:390 -msgid "Title: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:538 -msgid "Author: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:539 -msgid "File Type: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:540 -msgid "Subsongs: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:541 -msgid "Instruments: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:546 -msgid "Orders: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:547 -msgid "Patterns: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:551 -msgid "Song" -msgstr "" - -#: src/adplug/adplug-xmms.cc:577 -msgid "Instrument name" -msgstr "" - -#: src/adplug/adplug-xmms.cc:619 -msgid "Song message" -msgstr "" - -#: src/adplug/adplug-xmms.cc:641 -msgid "Subsong selection" -msgstr "" - -#: src/adplug/adplug-xmms.cc:707 -msgid "Order: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:708 -msgid "Pattern: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:710 -msgid "Row: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:711 -msgid "Speed: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:712 -msgid "Timer: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:713 src/console/configure.c:234 -#: src/sid/xs_interface.c:354 -msgid "Hz" -msgstr "" - -#: src/alarm/interface.c:34 -msgid "About XMMS Alarm" +"Originally written by Adam Feakin and Daniel Stodden." msgstr "" -#: src/alarm/interface.c:47 -msgid "XMMS Alarm" -msgstr "" - -#: src/alarm/interface.c:56 -msgid "" -"An XMMS plugin which can be used\n" -"to start playing at a certain time.\n" -"\n" -"Send all complaints to:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" -msgstr "" - -#: src/alarm/interface.c:71 src/bluetooth/scan_gui.c:149 src/lirc/about.c:115 -#: src/modplug/gui/interface.cxx:972 src/sid/xs_about.c:214 -#: src/sid/xs_interface.c:1825 -msgid "Close" -msgstr "" - -#: src/alarm/interface.c:101 +#: src/alarm/interface.c:33 msgid "Alarm" msgstr "" -#: src/alarm/interface.c:109 +#: src/alarm/interface.c:40 msgid "This is your wakeup call." msgstr "" -#: src/alarm/interface.c:124 src/alarm/interface.c:1389 -#: src/modplug/gui/interface.cxx:703 src/sid/xs_config.c:322 +#: src/alarm/interface.c:55 src/alarm/interface.c:1213 msgid "OK" msgstr "" -#: src/alarm/interface.c:152 -msgid "Select Playlist" -msgstr "" - -#: src/alarm/interface.c:196 -msgid "Sorry" -msgstr "" - -#: src/alarm/interface.c:204 -msgid "Warning" -msgstr "" - -#: src/alarm/interface.c:213 -msgid "" -"For safety reasons the \"quiet\" time must be at least 65 seconds longer " -"than the fading time, it must also be more than 10 seconds. This basically " -"means that there is a bug in the code and until I find a way of really " -"fixing it this message will appear :)\n" -"\n" -"Your fading settings have NOT been saved\n" -"\n" -"--\n" -"Adam" -msgstr "" - -#: src/alarm/interface.c:229 -msgid "Oh Well" -msgstr "" - -#: src/alarm/interface.c:388 +#: src/alarm/interface.c:214 msgid "Alarm Settings" msgstr "" -#: src/alarm/interface.c:404 src/alarm/interface.c:576 -#: src/alarm/interface.c:948 +#: src/alarm/interface.c:229 src/alarm/interface.c:401 +#: src/alarm/interface.c:773 msgid "Time" msgstr "" -#: src/alarm/interface.c:445 +#: src/alarm/interface.c:270 msgid "hours" msgstr "" -#: src/alarm/interface.c:506 +#: src/alarm/interface.c:331 msgid "h" msgstr "" -#: src/alarm/interface.c:536 +#: src/alarm/interface.c:361 msgid "minutes" msgstr "" -#: src/alarm/interface.c:554 +#: src/alarm/interface.c:379 msgid "Quiet after:" msgstr "" -#: src/alarm/interface.c:564 +#: src/alarm/interface.c:389 msgid "Alarm at (default):" msgstr "" -#: src/alarm/interface.c:584 +#: src/alarm/interface.c:409 msgid "Choose the days for the alarm to come on" msgstr "" -#: src/alarm/interface.c:612 src/alarm/interface.c:660 -#: src/alarm/interface.c:708 src/alarm/interface.c:756 -#: src/alarm/interface.c:804 src/alarm/interface.c:852 -#: src/alarm/interface.c:900 src/OSS/configure.c:166 -#: src/skins/ui_manager.c:439 src/skins/ui_manager.c:460 +#: src/alarm/interface.c:437 src/alarm/interface.c:485 +#: src/alarm/interface.c:533 src/alarm/interface.c:581 +#: src/alarm/interface.c:629 src/alarm/interface.c:677 +#: src/alarm/interface.c:725 src/bs2b/plugin.c:198 src/OSS/configure.c:153 +#: src/skins/ui_equalizer.c:1104 src/skins/ui_manager.c:447 +#: src/skins/ui_manager.c:468 msgid "Default" msgstr "" -#: src/alarm/interface.c:938 +#: src/alarm/interface.c:763 msgid "Day" msgstr "" -#: src/alarm/interface.c:958 +#: src/alarm/interface.c:783 msgid "Tuesday" msgstr "" -#: src/alarm/interface.c:969 +#: src/alarm/interface.c:794 msgid "Wednesday" msgstr "" -#: src/alarm/interface.c:980 +#: src/alarm/interface.c:805 msgid "Thursday" msgstr "" -#: src/alarm/interface.c:991 +#: src/alarm/interface.c:816 msgid "Friday" msgstr "" -#: src/alarm/interface.c:1002 +#: src/alarm/interface.c:827 msgid "Saturday" msgstr "" -#: src/alarm/interface.c:1013 +#: src/alarm/interface.c:838 msgid "Sunday" msgstr "" -#: src/alarm/interface.c:1023 +#: src/alarm/interface.c:848 msgid "Monday" msgstr "" -#: src/alarm/interface.c:1034 +#: src/alarm/interface.c:859 msgid "Days" msgstr "" -#: src/alarm/interface.c:1050 +#: src/alarm/interface.c:875 msgid "Fading" msgstr "" -#: src/alarm/interface.c:1087 src/sid/xs_interface.c:921 -#: src/sid/xs_interface.c:975 src/sid/xs_interface.c:1155 +#: src/alarm/interface.c:912 msgid "seconds" msgstr "" -#: src/alarm/interface.c:1095 src/alarm/interface.c:1211 -#: src/modplug/gui/interface.cxx:550 +#: src/alarm/interface.c:920 src/alarm/interface.c:1035 msgid "Volume" msgstr "" -#: src/alarm/interface.c:1121 +#: src/alarm/interface.c:946 msgid "Current" msgstr "" -#: src/alarm/interface.c:1128 -msgid "reset to current output volume" -msgstr "" - -#: src/alarm/interface.c:1130 +#: src/alarm/interface.c:954 msgid "Start at" msgstr "" -#: src/alarm/interface.c:1158 src/alarm/interface.c:1202 +#: src/alarm/interface.c:982 src/alarm/interface.c:1026 msgid "%" msgstr "" -#: src/alarm/interface.c:1174 +#: src/alarm/interface.c:998 msgid "Final" msgstr "" -#: src/alarm/interface.c:1227 +#: src/alarm/interface.c:1051 msgid "Additional Command" msgstr "" -#: src/alarm/interface.c:1253 +#: src/alarm/interface.c:1077 msgid "enable" msgstr "" -#: src/alarm/interface.c:1261 +#: src/alarm/interface.c:1085 msgid "Playlist (optional)" msgstr "" -#: src/alarm/interface.c:1287 +#: src/alarm/interface.c:1111 msgid "Browse..." msgstr "" -#: src/alarm/interface.c:1295 src/alarm/interface.c:1460 +#: src/alarm/interface.c:1119 src/alarm/interface.c:1283 msgid "Reminder" msgstr "" -#: src/alarm/interface.c:1312 +#: src/alarm/interface.c:1136 msgid "Use reminder" msgstr "" -#: src/alarm/interface.c:1328 src/sndstretch/sndstretch_xmms.c:394 +#: src/alarm/interface.c:1152 src/sndstretch/sndstretch_xmms.c:358 msgid "Options" msgstr "" -#: src/alarm/interface.c:1336 +#: src/alarm/interface.c:1160 msgid "What do these options mean?" msgstr "" -#: src/alarm/interface.c:1364 +#: src/alarm/interface.c:1188 msgid "" "\n" "Time\n" @@ -494,24 +246,29 @@ " toggle button if you want it to be shown.\n" msgstr "" -#: src/alarm/interface.c:1366 src/gtkui/ui_manager.c:165 -#: src/skins/ui_manager.c:371 +#: src/alarm/interface.c:1190 src/skins/ui_manager.c:382 msgid "Help" msgstr "" -#: src/alarm/interface.c:1468 +#: src/alarm/interface.c:1222 src/cdaudio-ng/configure.c:249 +#: src/crystalizer/crystalizer.c:130 src/echo_plugin/gui.c:125 +#: src/jack/configure.c:148 src/null/null.c:108 src/stereo_plugin/stereo.c:125 +msgid "Cancel" +msgstr "" + +#: src/alarm/interface.c:1290 msgid "Your reminder for today is.." msgstr "" -#: src/alarm/interface.c:1493 +#: src/alarm/interface.c:1315 msgid "Thankyou" msgstr "" -#: src/alsa/config.c:209 +#: src/alsa/config.c:210 msgid "Default PCM device" msgstr "" -#: src/alsa/config.c:234 +#: src/alsa/config.c:235 msgid "Default mixer device" msgstr "" @@ -523,7 +280,7 @@ msgid "PCM device:" msgstr "" -#: src/alsa/config.c:447 src/OSS/configure.c:256 src/sun/configure.c:218 +#: src/alsa/config.c:447 src/OSS/configure.c:237 msgid "Mixer device:" msgstr "" @@ -535,15 +292,15 @@ msgid "Work around drain hangup" msgstr "" -#: src/alsa/plugin.c:61 +#: src/alsa/plugin.c:59 msgid "About ALSA Output Plugin" msgstr "" -#: src/alsa/plugin.c:83 +#: src/alsa/plugin.c:81 msgid "ALSA error" msgstr "" -#: src/amidi-plug/amidi-plug.c:323 +#: src/amidi-plug/amidi-plug.c:326 msgid "" "You have not selected any sequencer ports for MIDI playback. You can do so " "in the MIDI plugin preferences." @@ -565,11 +322,11 @@ "Backend written by Giacomo Lozito." msgstr "" -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:41 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 msgid "FluidSynth Backend " msgstr "" -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:43 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 msgid "" "This backend produces audio by sending MIDI events to FluidSynth, a real-" "time software synthesizer based on the SoundFont2 specification (www." @@ -579,367 +336,205 @@ "Backend written by Giacomo Lozito." msgstr "" -#: src/amidi-plug/i_configure-alsa.c:221 +#: src/amidi-plug/i_configure-alsa.c:228 msgid "ALSA BACKEND CONFIGURATION" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:326 +#: src/amidi-plug/i_configure-alsa.c:331 msgid "Port" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:328 +#: src/amidi-plug/i_configure-alsa.c:333 msgid "Client name" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:330 +#: src/amidi-plug/i_configure-alsa.c:335 msgid "Port name" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:341 +#: src/amidi-plug/i_configure-alsa.c:346 msgid "ALSA output ports" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:394 +#: src/amidi-plug/i_configure-alsa.c:399 msgid "Soundcard: " msgstr "" -#: src/amidi-plug/i_configure-alsa.c:396 +#: src/amidi-plug/i_configure-alsa.c:401 msgid "Mixer control: " msgstr "" -#: src/amidi-plug/i_configure-alsa.c:408 +#: src/amidi-plug/i_configure-alsa.c:413 msgid "Mixer settings" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:421 -msgid "" -"* Select ALSA output ports *\n" -"MIDI events will be sent to the ports selected here. In example, if your " -"audio card provides a hardware synth and you want to play MIDI with it, " -"you'll probably want to select the wavetable synthesizer ports." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:426 -msgid "" -"* Select ALSA mixer card *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volumeslider will " -"manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:433 -msgid "" -"* Select ALSA mixer control *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volume slider " -"will manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:444 +#: src/amidi-plug/i_configure-alsa.c:429 msgid "ALSA Backend not loaded or not available" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:463 +#: src/amidi-plug/i_configure-alsa.c:448 msgid "" "ALSA\n" "backend" msgstr "" -#: src/amidi-plug/i_configure-ap.c:56 +#: src/amidi-plug/i_configure-ap.c:59 msgid "AMIDI-Plug - backend information" msgstr "" -#: src/amidi-plug/i_configure-ap.c:194 +#: src/amidi-plug/i_configure-ap.c:196 msgid "AMIDI-PLUG PREFERENCES" msgstr "" -#: src/amidi-plug/i_configure-ap.c:221 +#: src/amidi-plug/i_configure-ap.c:223 msgid "Backend selection" msgstr "" -#: src/amidi-plug/i_configure-ap.c:225 +#: src/amidi-plug/i_configure-ap.c:227 msgid "Available backends" msgstr "" -#: src/amidi-plug/i_configure-ap.c:255 +#: src/amidi-plug/i_configure-ap.c:257 msgid "Playback settings" msgstr "" -#: src/amidi-plug/i_configure-ap.c:260 +#: src/amidi-plug/i_configure-ap.c:262 msgid "Transpose: " msgstr "" -#: src/amidi-plug/i_configure-ap.c:269 +#: src/amidi-plug/i_configure-ap.c:271 msgid "Drum shift: " msgstr "" -#: src/amidi-plug/i_configure-ap.c:287 +#: src/amidi-plug/i_configure-ap.c:289 msgid "Advanced settings" msgstr "" -#: src/amidi-plug/i_configure-ap.c:291 +#: src/amidi-plug/i_configure-ap.c:293 msgid "pre-calculate length of MIDI files in playlist" msgstr "" -#: src/amidi-plug/i_configure-ap.c:296 +#: src/amidi-plug/i_configure-ap.c:298 msgid "extract comments from MIDI file (if available)" msgstr "" -#: src/amidi-plug/i_configure-ap.c:301 +#: src/amidi-plug/i_configure-ap.c:303 msgid "extract lyrics from MIDI file (if available)" msgstr "" -#: src/amidi-plug/i_configure-ap.c:320 -msgid "" -"* Backend selection *\n" -"AMIDI-Plug works with backends, in a modular fashion; here you should select " -"your backend; that is, the way MIDI events are going to be handled and " -"played.\n" -"If you have a hardware synthesizer on your audio card, and ALSA supports it, " -"you'll want to use the ALSA backend. It can also be used with anything that " -"provides an interface to the ALSA sequencer, including software synths or " -"external devices.\n" -"If you want to rely on a software synthesizer and/or want to pipe audio into " -"effect and output plugins of the player you'll want to use the good " -"FluidSynth backend.\n" -"Press the info button to read specific information about each backend." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:331 -msgid "" -"* Transpose function *\n" -"This option allows you to play the midi file transposed in a different key, " -"by shifting of the desired number of semitones all its notes (excepting " -"those on midi channel 10, reserved for percussions). Especially useful if " -"you wish to sing or play along with another instrument." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:337 -msgid "" -"* Drumshift function *\n" -"This option allows you to shift notes on midi channel 10 (the standard " -"percussions channel) of the desired number of semitones. This results in " -"different drumset and percussions being used during midi playback, so if you " -"wish to enhance (or reduce, or alter) percussion sounds, try to play with " -"this value." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:344 -msgid "" -"* Pre-calculate MIDI length *\n" -"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as " -"soon as the player requests it, instead of doing that only when the MIDI " -"file is being played. In example, MIDI length will be calculated straight " -"after adding MIDI files in a playlist. Disable this option if you want " -"faster playlist loading (when a lot of MIDI files are added), enable it to " -"display more information in the playlist straight after loading." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:353 -msgid "" -"* Extract comments from MIDI files *\n" -"Some MIDI files contain text comments (author, copyright, instrument notes, " -"etc.). If this option is enabled, AMIDI-Plug will extract and display " -"comments (if available) in the file information dialog." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:358 -msgid "" -"* Extract lyrics from MIDI files *\n" -"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug " -"will extract and display song lyrics (if available) in the file information " -"dialog." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:375 +#: src/amidi-plug/i_configure-ap.c:333 msgid "" "AMIDI\n" "Plug" msgstr "" -#: src/amidi-plug/i_configure.c:73 +#: src/amidi-plug/i_configure.c:76 msgid "AMIDI-Plug - select file" msgstr "" -#: src/amidi-plug/i_configure.c:126 +#: src/amidi-plug/i_configure.c:129 msgid "AMIDI-Plug - configuration" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:52 +#: src/amidi-plug/i_configure-fluidsynth.c:55 msgid "AMIDI-Plug - select SoundFont file" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:268 +#: src/amidi-plug/i_configure-fluidsynth.c:270 msgid "FLUIDSYNTH BACKEND CONFIGURATION" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:316 +#: src/amidi-plug/i_configure-fluidsynth.c:313 msgid "SoundFont settings" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:352 +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 msgid "Size (bytes)" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:401 +#: src/amidi-plug/i_configure-fluidsynth.c:398 msgid "Load SF on player start" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:405 +#: src/amidi-plug/i_configure-fluidsynth.c:402 msgid "Load SF on first midifile play" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:420 +#: src/amidi-plug/i_configure-fluidsynth.c:417 msgid "Synthesizer settings" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:429 +#: src/amidi-plug/i_configure-fluidsynth.c:426 msgid "gain" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:435 -#: src/amidi-plug/i_configure-fluidsynth.c:463 -#: src/amidi-plug/i_configure-fluidsynth.c:491 -#: src/amidi-plug/i_configure-fluidsynth.c:522 +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 msgid "use default" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:438 -#: src/amidi-plug/i_configure-fluidsynth.c:466 +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 msgid "value:" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:457 +#: src/amidi-plug/i_configure-fluidsynth.c:454 msgid "poliphony" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:485 +#: src/amidi-plug/i_configure-fluidsynth.c:482 msgid "reverb" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:494 -#: src/amidi-plug/i_configure-fluidsynth.c:525 +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 msgid "yes" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:496 -#: src/amidi-plug/i_configure-fluidsynth.c:527 +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 msgid "no" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:516 +#: src/amidi-plug/i_configure-fluidsynth.c:513 msgid "chorus" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:547 +#: src/amidi-plug/i_configure-fluidsynth.c:544 msgid "sample rate" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:553 +#: src/amidi-plug/i_configure-fluidsynth.c:550 msgid "22050 Hz " msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:556 +#: src/amidi-plug/i_configure-fluidsynth.c:553 msgid "44100 Hz " msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:559 +#: src/amidi-plug/i_configure-fluidsynth.c:556 msgid "96000 Hz " msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:562 +#: src/amidi-plug/i_configure-fluidsynth.c:559 msgid "custom " msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:571 +#: src/amidi-plug/i_configure-fluidsynth.c:568 msgid "Hz " msgstr "" #: src/amidi-plug/i_configure-fluidsynth.c:621 -msgid "" -"* Select SoundFont files *\n" -"In order to play MIDI with FluidSynth, you need to specify at least one " -"valid SoundFont file here (use absolute paths). The loading order is from " -"the top (first) to the bottom (last)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:626 -msgid "" -"* Load SoundFont on player start *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:634 -msgid "" -"* Load SoundFont on first midifile play *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:642 -msgid "" -"* Synthesizer gain *\n" -"From FluidSynth docs: the gain is applied to the final or master output of " -"the synthesizer; it is set to a low value by default to avoid the saturation " -"of the output when random MIDI files are played." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:647 -msgid "" -"* Synthesizer polyphony *\n" -"From FluidSynth docs: the polyphony defines how many voices can be played in " -"parallel; the number of voices is not necessarily equivalent to the number " -"of notes played simultaneously; indeed, when a note is struck on a specific " -"MIDI channel, the preset on that channel may create several voices, for " -"example, one for the left audio channel and one for the right audio " -"channels; the number of voices activated depends on the number of instrument " -"zones that fall in the correspond to the velocity and key of the played note." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:657 -#: src/amidi-plug/i_configure-fluidsynth.c:663 -msgid "" -"* Synthesizer reverb *\n" -"From FluidSynth docs: when set to \"yes\" the reverb effects module is " -"activated; note that when the reverb module is active, the amount of signal " -"sent to the reverb module depends on the \"reverb send\" generator defined " -"in the SoundFont." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:669 -#: src/amidi-plug/i_configure-fluidsynth.c:675 -msgid "" -"* Synthesizer chorus *\n" -"From FluidSynth docs: when set to \"yes\" the chorus effects module is " -"activated; note that when the chorus module is active, the amount of signal " -"sent to the chorus module depends on the \"chorus send\" generator defined " -"in the SoundFont." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:681 -#: src/amidi-plug/i_configure-fluidsynth.c:685 -#: src/amidi-plug/i_configure-fluidsynth.c:689 -#: src/amidi-plug/i_configure-fluidsynth.c:693 -msgid "" -"* Synthesizer samplerate *\n" -"The sample rate of the audio generated by the synthesizer. You can also " -"specify a custom value in the interval 22050Hz-96000Hz." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:701 msgid "FluidSynth Backend not loaded or not available" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:720 +#: src/amidi-plug/i_configure-fluidsynth.c:640 msgid "" "FluidSynth\n" "backend" @@ -959,8 +554,7 @@ "backend" msgstr "" -#: src/amidi-plug/i_fileinfo.c:169 src/bluetooth/gui.c:271 -#: src/sid/xs_interface.c:1769 +#: src/amidi-plug/i_fileinfo.c:169 msgid "Name:" msgstr "" @@ -1063,241 +657,239 @@ msgid "None" msgstr "" -#: src/aosd/aosd_trigger.c:77 +#: src/aosd/aosd_trigger.c:78 msgid "Playback Start" msgstr "" -#: src/aosd/aosd_trigger.c:78 +#: src/aosd/aosd_trigger.c:79 msgid "Triggers OSD when a playlist entry is played." msgstr "" -#: src/aosd/aosd_trigger.c:82 +#: src/aosd/aosd_trigger.c:83 msgid "Title Change" msgstr "" -#: src/aosd/aosd_trigger.c:83 +#: src/aosd/aosd_trigger.c:84 msgid "" "Triggers OSD when, during playback, the song title changes but the filename " "is the same. This is mostly useful to display title changes in internet " "streams." msgstr "" -#: src/aosd/aosd_trigger.c:89 +#: src/aosd/aosd_trigger.c:90 msgid "Volume Change" msgstr "" -#: src/aosd/aosd_trigger.c:90 +#: src/aosd/aosd_trigger.c:91 msgid "Triggers OSD when volume is changed." msgstr "" -#: src/aosd/aosd_trigger.c:94 +#: src/aosd/aosd_trigger.c:95 msgid "Pause On" msgstr "" -#: src/aosd/aosd_trigger.c:95 +#: src/aosd/aosd_trigger.c:96 msgid "Triggers OSD when playback is paused." msgstr "" -#: src/aosd/aosd_trigger.c:99 +#: src/aosd/aosd_trigger.c:100 msgid "Pause Off" msgstr "" -#: src/aosd/aosd_trigger.c:100 +#: src/aosd/aosd_trigger.c:101 msgid "Triggers OSD when playback is unpaused." msgstr "" -#: src/aosd/aosd_ui.c:168 +#: src/aosd/aosd_ui.c:179 msgid "Placement" msgstr "" -#: src/aosd/aosd_ui.c:202 +#: src/aosd/aosd_ui.c:218 msgid "Relative X offset:" msgstr "" -#: src/aosd/aosd_ui.c:211 +#: src/aosd/aosd_ui.c:227 msgid "Relative Y offset:" msgstr "" -#: src/aosd/aosd_ui.c:220 +#: src/aosd/aosd_ui.c:236 msgid "Max OSD width:" msgstr "" -#: src/aosd/aosd_ui.c:233 +#: src/aosd/aosd_ui.c:249 msgid "Multi-Monitor options" msgstr "" -#: src/aosd/aosd_ui.c:237 +#: src/aosd/aosd_ui.c:253 msgid "Display OSD using:" msgstr "" -#: src/aosd/aosd_ui.c:239 +#: src/aosd/aosd_ui.c:264 msgid "all monitors" msgstr "" -#: src/aosd/aosd_ui.c:242 +#: src/aosd/aosd_ui.c:267 #, c-format msgid "monitor %i" msgstr "" -#: src/aosd/aosd_ui.c:295 +#: src/aosd/aosd_ui.c:322 msgid "Timing (ms)" msgstr "" -#: src/aosd/aosd_ui.c:300 +#: src/aosd/aosd_ui.c:327 msgid "Display:" msgstr "" -#: src/aosd/aosd_ui.c:305 +#: src/aosd/aosd_ui.c:332 msgid "Fade in:" msgstr "" -#: src/aosd/aosd_ui.c:310 +#: src/aosd/aosd_ui.c:337 msgid "Fade out:" msgstr "" -#: src/aosd/aosd_ui.c:391 +#: src/aosd/aosd_ui.c:418 msgid "Fonts" msgstr "" -#: src/aosd/aosd_ui.c:399 +#: src/aosd/aosd_ui.c:426 #, c-format msgid "Font %i:" msgstr "" -#: src/aosd/aosd_ui.c:416 +#: src/aosd/aosd_ui.c:443 msgid "Shadow" msgstr "" -#: src/aosd/aosd_ui.c:451 +#: src/aosd/aosd_ui.c:478 msgid "Internationalization" msgstr "" -#: src/aosd/aosd_ui.c:457 +#: src/aosd/aosd_ui.c:484 msgid "Disable UTF-8 conversion of text (in aosd)" msgstr "" -#: src/aosd/aosd_ui.c:475 +#: src/aosd/aosd_ui.c:502 msgid "Select Skin File" msgstr "" -#: src/aosd/aosd_ui.c:586 +#: src/aosd/aosd_ui.c:613 msgid "Render Style" msgstr "" -#: src/aosd/aosd_ui.c:602 +#: src/aosd/aosd_ui.c:629 msgid "Colors" msgstr "" -#: src/aosd/aosd_ui.c:615 +#: src/aosd/aosd_ui.c:642 #, c-format msgid "Color %i:" msgstr "" -#: src/aosd/aosd_ui.c:635 +#: src/aosd/aosd_ui.c:662 msgid "Custom Skin" msgstr "" -#: src/aosd/aosd_ui.c:641 +#: src/aosd/aosd_ui.c:668 msgid "Skin file:" msgstr "" -#: src/aosd/aosd_ui.c:644 src/sid/xs_interface.c:1044 -#: src/sid/xs_interface.c:1236 src/sid/xs_interface.c:1292 +#: src/aosd/aosd_ui.c:671 msgid "Browse" msgstr "" -#: src/aosd/aosd_ui.c:746 +#: src/aosd/aosd_ui.c:773 msgid "Enable trigger" msgstr "" -#: src/aosd/aosd_ui.c:773 +#: src/aosd/aosd_ui.c:800 msgid "Event" msgstr "" -#: src/aosd/aosd_ui.c:801 +#: src/aosd/aosd_ui.c:828 msgid "Composite manager detected" msgstr "" -#: src/aosd/aosd_ui.c:808 +#: src/aosd/aosd_ui.c:835 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " "manager otherwise the OSD won't work properly" msgstr "" -#: src/aosd/aosd_ui.c:816 +#: src/aosd/aosd_ui.c:843 msgid "Composite manager not required for fake transparency" msgstr "" -#: src/aosd/aosd_ui.c:854 +#: src/aosd/aosd_ui.c:881 msgid "Transparency" msgstr "" -#: src/aosd/aosd_ui.c:860 +#: src/aosd/aosd_ui.c:887 msgid "Fake transparency" msgstr "" -#: src/aosd/aosd_ui.c:862 +#: src/aosd/aosd_ui.c:889 msgid "Real transparency (requires X Composite Ext.)" msgstr "" -#: src/aosd/aosd_ui.c:904 +#: src/aosd/aosd_ui.c:931 msgid "Composite extension not loaded" msgstr "" -#: src/aosd/aosd_ui.c:912 +#: src/aosd/aosd_ui.c:939 msgid "Composite extension not available" msgstr "" -#: src/aosd/aosd_ui.c:931 +#: src/aosd/aosd_ui.c:958 #, c-format msgid "Audacious OSD" msgstr "" -#: src/aosd/aosd_ui.c:1012 +#: src/aosd/aosd_ui.c:1039 msgid "Audacious OSD - configuration" msgstr "" -#: src/aosd/aosd_ui.c:1033 +#: src/aosd/aosd_ui.c:1060 msgid "Test" msgstr "" -#: src/aosd/aosd_ui.c:1048 +#: src/aosd/aosd_ui.c:1075 msgid "Position" msgstr "" -#: src/aosd/aosd_ui.c:1053 +#: src/aosd/aosd_ui.c:1080 msgid "Animation" msgstr "" -#: src/aosd/aosd_ui.c:1058 +#: src/aosd/aosd_ui.c:1085 msgid "Text" msgstr "" -#: src/aosd/aosd_ui.c:1063 +#: src/aosd/aosd_ui.c:1090 msgid "Decoration" msgstr "" -#: src/aosd/aosd_ui.c:1068 +#: src/aosd/aosd_ui.c:1095 msgid "Trigger" msgstr "" -#: src/aosd/aosd_ui.c:1073 src/cdaudio-ng/configure.c:178 -#: src/modplug/gui/interface.cxx:689 src/sid/xs_interface.c:1302 +#: src/aosd/aosd_ui.c:1100 src/cdaudio-ng/configure.c:171 msgid "Misc" msgstr "" -#: src/aosd/aosd_ui.c:1110 +#: src/aosd/aosd_ui.c:1137 msgid "Audacious OSD - about" msgstr "" -#: src/aosd/aosd_ui.c:1140 +#: src/aosd/aosd_ui.c:1167 msgid "" "\n" "Audacious OSD " msgstr "" -#: src/aosd/aosd_ui.c:1141 +#: src/aosd/aosd_ui.c:1168 msgid "" "\n" "http://www.develia.org/projects.php?p=audacious#aosd\n" @@ -1310,267 +902,193 @@ "\n" msgstr "" -#: src/bluetooth/agent.c:356 src/bluetooth/agent.c:397 -#, c-format -msgid "Pairing request for '%s'" +#: src/blur_scope/config.c:73 +msgid "Blur Scope: Color selection" msgstr "" -#: src/bluetooth/agent.c:544 -#, c-format -msgid "Authorization request for %s" +#: src/blur_scope/config.c:83 src/jack/configure.c:106 +msgid "Options:" msgstr "" -#: src/bluetooth/agent.c:728 -#, c-format -msgid "Created bonding with %s" +#: src/bs2b/plugin.c:157 +msgid "Bauer stereophonic-to-binaural Preferences" msgstr "" -#: src/bluetooth/agent.c:756 -#, c-format -msgid "Removed bonding with %s" +#: src/bs2b/plugin.c:168 +msgid "Feed level:" msgstr "" -#: src/bluetooth/agent.c:808 -msgid "Device has been switched off" +#: src/bs2b/plugin.c:182 +msgid "Cut frequency:" msgstr "" -#: src/bluetooth/agent.c:811 -msgid "Device has been made non-discoverable" +#: src/bs2b/plugin.c:196 +msgid "Presets:" msgstr "" -#: src/bluetooth/agent.c:813 -msgid "Device has been made connectable" +#: src/cdaudio-ng/cdaudio-ng.c:242 +msgid "About Audio CD Plugin" msgstr "" -#: src/bluetooth/agent.c:815 -msgid "Device has been made discoverable" +#: src/cdaudio-ng/cdaudio-ng.c:243 +msgid "" +"Copyright (c) 2007, by Calin Crisan and The Audacious " +"Team.\n" +"\n" +"Many thanks to libcdio developers \n" +"\tand to libcddb developers .\n" +"\n" +"Also thank you Tony Vroon for mentoring & guiding me.\n" +"\n" +"This was a Google Summer of Code 2007 project.\n" +"\n" +"Copyright 2009 John Lindgren" msgstr "" -#: src/bluetooth/agent.c:817 -msgid "Device has been made limited discoverable" +#: src/cdaudio-ng/cdaudio-ng.c:552 +msgid "Audio CD" msgstr "" -#: src/bluetooth/agent.c:819 -msgid "Device has been switched into pairing mode" +#: src/cdaudio-ng/cdaudio-ng.c:924 +msgid "Drive is empty." msgstr "" -#: src/bluetooth/bluetooth.c:117 -msgid "Bluetooth headset support plugin" +#: src/cdaudio-ng/cdaudio-ng.c:926 +msgid "Unsupported disk type." msgstr "" -#: src/bluetooth/bluetooth.c:118 -msgid "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the " -"Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" +#: src/cdaudio-ng/configure.c:148 +msgid "CD Audio Plugin Configuration" msgstr "" -#: src/bluetooth/gui.c:148 -msgid "Producer" +#: src/cdaudio-ng/configure.c:160 +msgid "Digital audio extraction" msgstr "" -#: src/bluetooth/gui.c:221 -msgid "Available Headsets" +#: src/cdaudio-ng/configure.c:165 +msgid "Title information" msgstr "" -#: src/bluetooth/gui.c:224 -msgid "Current Headset" +#: src/cdaudio-ng/configure.c:176 +msgid "Disc speed:" msgstr "" -#: src/bluetooth/gui.c:227 -msgid "_Refresh" +#: src/cdaudio-ng/configure.c:184 +msgid "Use cd-text if available" msgstr "" -#: src/bluetooth/gui.c:231 -msgid "_Connect" +#: src/cdaudio-ng/configure.c:191 +msgid "Use CDDB if available" msgstr "" -#: src/bluetooth/gui.c:237 -msgid "_Close" +#: src/cdaudio-ng/configure.c:197 +msgid "Server: " msgstr "" -#: src/bluetooth/gui.c:274 -msgid "Class" +#: src/cdaudio-ng/configure.c:201 +msgid "Path: " msgstr "" -#: src/bluetooth/gui.c:278 -msgid "Address:" +#: src/cdaudio-ng/configure.c:205 +msgid "Port: " msgstr "" -#: src/bluetooth/scan_gui.c:69 -msgid "Bonding finish!" +#: src/cdaudio-ng/configure.c:218 +msgid "Use HTTP instead of CDDBP" msgstr "" -#: src/bluetooth/scan_gui.c:76 -msgid "No devices found!" +#: src/cdaudio-ng/configure.c:230 +msgid "Override default device: " msgstr "" -#: src/bluetooth/scan_gui.c:119 -msgid "Scanning..." +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:123 +#: src/echo_plugin/gui.c:118 src/jack/configure.c:141 src/null/null.c:107 +#: src/stereo_plugin/stereo.c:118 +msgid "Ok" msgstr "" -#: src/bluetooth/scan_gui.c:122 -msgid "Pairing..." +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Play CD" msgstr "" -#: src/bluetooth/scan_gui.c:138 -msgid "Rescan" +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Add CD" msgstr "" -#: src/bluetooth/scan_gui.c:142 src/gtkui/ui_manager.c:66 -#: src/gtkui/ui_manager.c:67 src/hotkey/gui.c:71 src/skins/ui_manager.c:167 -#: src/skins/ui_manager.c:168 -msgid "Play" +#: src/compressor/plugin.c:63 +msgid "About Dynamic Range Compression Plugin" msgstr "" -#: src/blur_scope/config.c:73 -msgid "Blur Scope: Color selection" +#: src/compressor/plugin.c:95 +msgid "Dynamic Range Compressor Preferences" msgstr "" -#: src/blur_scope/config.c:83 src/jack/configure.c:111 -msgid "Options:" +#: src/compressor/plugin.c:107 +msgid "Center volume:" msgstr "" -#: src/cdaudio-ng/cdaudio-ng.c:278 -msgid "About Audio CD Plugin" +#: src/compressor/plugin.c:120 +msgid "Dynamic range:" msgstr "" -#: src/cdaudio-ng/cdaudio-ng.c:279 -msgid "" -"Copyright (c) 2007, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"Many thanks to libcdio developers \n" -"\tand to libcddb developers .\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me.\n" -"\n" -"This was a Google Summer of Code 2007 project.\n" -"\n" -"Copyright 2009 John Lindgren" -msgstr "" - -#: src/cdaudio-ng/configure.c:155 -msgid "CD Audio Plugin Configuration" -msgstr "" - -#: src/cdaudio-ng/configure.c:167 -msgid "Digital audio extraction" -msgstr "" - -#: src/cdaudio-ng/configure.c:172 -msgid "Title information" -msgstr "" - -#: src/cdaudio-ng/configure.c:190 -msgid "Disc speed:" -msgstr "" - -#: src/cdaudio-ng/configure.c:198 -msgid "Use cd-text if available" -msgstr "" - -#: src/cdaudio-ng/configure.c:205 -msgid "Use CDDB if available" -msgstr "" - -#: src/cdaudio-ng/configure.c:211 -msgid "Server: " -msgstr "" - -#: src/cdaudio-ng/configure.c:215 -msgid "Path: " -msgstr "" - -#: src/cdaudio-ng/configure.c:219 -msgid "Port: " -msgstr "" - -#: src/cdaudio-ng/configure.c:232 -msgid "Use HTTP instead of CDDBP" -msgstr "" - -#: src/cdaudio-ng/configure.c:244 -msgid "Override default device: " -msgstr "" - -#: src/cd-menu-items/cd-menu-items.c:35 -msgid "Play CD" -msgstr "" - -#: src/cd-menu-items/cd-menu-items.c:35 -msgid "Add CD" -msgstr "" - -#: src/compressor/plugin.c:58 -msgid "About Dynamic Range Compression Plugin" -msgstr "" - -#: src/compressor/plugin.c:91 -msgid "Dynamic Range Compressor Preferences" -msgstr "" - -#: src/compressor/plugin.c:103 -msgid "Target volume:" +#: src/console/configure.c:136 +msgid "Game Console Music Decoder" msgstr "" -#: src/compressor/plugin.c:116 -msgid "Effect strength:" +#: src/console/configure.c:153 +msgid "General" msgstr "" -#: src/console/configure.c:137 -msgid "Game Console Music Decoder" +#: src/console/configure.c:155 src/skins/ui_manager.c:176 +msgid "Playback" msgstr "" -#: src/console/configure.c:171 +#: src/console/configure.c:170 msgid "Bass:" msgstr "" -#: src/console/configure.c:175 src/console/configure.c:186 -#: src/console/configure.c:207 +#: src/console/configure.c:174 src/console/configure.c:185 +#: src/console/configure.c:206 msgid "secs" msgstr "" -#: src/console/configure.c:182 +#: src/console/configure.c:181 msgid "Treble:" msgstr "" -#: src/console/configure.c:203 +#: src/console/configure.c:202 msgid "Default song length:" msgstr "" -#: src/console/configure.c:209 src/modplug/gui/interface.cxx:269 -#: src/sid/xs_interface.c:666 +#: src/console/configure.c:208 msgid "Resampling" msgstr "" -#: src/console/configure.c:215 +#: src/console/configure.c:214 msgid "Enable audio resampling" msgstr "" -#: src/console/configure.c:230 +#: src/console/configure.c:229 msgid "Resampling rate:" msgstr "" -#: src/console/configure.c:245 +#: src/console/configure.c:233 +msgid "Hz" +msgstr "" + +#: src/console/configure.c:244 msgid "SPC" msgstr "" -#: src/console/configure.c:246 +#: src/console/configure.c:245 msgid "Ignore length from SPC tags" msgstr "" -#: src/console/configure.c:247 +#: src/console/configure.c:246 msgid "Increase reverb" msgstr "" -#: src/console/configure.c:272 +#: src/console/configure.c:271 msgid "" "The default song length, expressed in seconds, is used for songs that do not " "provide length information (i.e. looping tracks)." @@ -1588,28 +1106,28 @@ " Shay Green \n" msgstr "" -#: src/crossfade/plugin.c:51 +#: src/crossfade/plugin.c:60 msgid "About Crossfade" msgstr "" -#: src/crossfade/plugin.c:84 +#: src/crossfade/plugin.c:92 msgid "Crossfade Preferences" msgstr "" -#: src/crossfade/plugin.c:95 +#: src/crossfade/plugin.c:104 msgid "Overlap (in seconds):" msgstr "" -#: src/crossfade/plugin.c:129 src/crossfade/plugin.c:137 +#: src/crossfade/plugin.c:135 src/crossfade/plugin.c:141 msgid "Crossfade Error" msgstr "" -#: src/crossfade/plugin.c:130 +#: src/crossfade/plugin.c:135 msgid "" "Crossfading failed because the songs had a different number of channels." msgstr "" -#: src/crossfade/plugin.c:138 +#: src/crossfade/plugin.c:143 msgid "" "Crossfading failed because the songs had different sample rates.\n" "\n" @@ -1617,20 +1135,20 @@ "same rate." msgstr "" -#: src/crystalizer/crystalizer.c:104 +#: src/crystalizer/crystalizer.c:100 msgid "Configure Crystalizer" msgstr "" -#: src/crystalizer/crystalizer.c:106 src/stereo_plugin/stereo.c:102 +#: src/crystalizer/crystalizer.c:102 src/stereo_plugin/stereo.c:97 msgid "Effect intensity:" msgstr "" -#: src/crystalizer/crystalizer.c:143 src/echo_plugin/gui.c:137 -#: src/modplug/gui/interface.cxx:709 src/stereo_plugin/stereo.c:139 +#: src/crystalizer/crystalizer.c:136 src/echo_plugin/gui.c:131 +#: src/stereo_plugin/stereo.c:131 msgid "Apply" msgstr "" -#: src/echo_plugin/gui.c:14 +#: src/echo_plugin/gui.c:15 msgid "" "Echo Plugin\n" "By Johan Levin 1999.\n" @@ -1638,2997 +1156,1953 @@ "Surround echo by Carl van Schaik 1999" msgstr "" -#: src/echo_plugin/gui.c:26 +#: src/echo_plugin/gui.c:27 msgid "About Echo Plugin" msgstr "" -#: src/echo_plugin/gui.c:69 +#: src/echo_plugin/gui.c:67 msgid "Configure Echo" msgstr "" -#: src/echo_plugin/gui.c:82 +#: src/echo_plugin/gui.c:83 msgid "Delay: (ms)" msgstr "" -#: src/echo_plugin/gui.c:87 +#: src/echo_plugin/gui.c:88 msgid "Feedback: (%)" msgstr "" -#: src/echo_plugin/gui.c:92 +#: src/echo_plugin/gui.c:93 msgid "Volume: (%)" msgstr "" -#: src/evdev-plug/ed.c:60 -msgid "Playback->Play" +#: src/ffaudio/ffaudio-core.c:725 +#, c-format +msgid "" +"Multi-format audio decoding plugin for Audacious based on\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious plugin by:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" msgstr "" -#: src/evdev-plug/ed.c:61 -msgid "Playback->Stop" +#: src/ffaudio/ffaudio-core.c:739 +msgid "About FFaudio Plugin" msgstr "" -#: src/evdev-plug/ed.c:62 -msgid "Playback->Pause" +#: src/filewriter/filewriter.c:166 +msgid "About FileWriter-Plugin" msgstr "" -#: src/evdev-plug/ed.c:63 -msgid "Playback->Prev" +#: src/filewriter/filewriter.c:461 +msgid "File Writer Configuration" msgstr "" -#: src/evdev-plug/ed.c:64 -msgid "Playback->Next" +#: src/filewriter/filewriter.c:473 +msgid "Output file format:" msgstr "" -#: src/evdev-plug/ed.c:65 -msgid "Playback->Eject" +#: src/filewriter/filewriter.c:491 +msgid "Configure" msgstr "" -#: src/evdev-plug/ed.c:67 -msgid "Playlist->Repeat" +#: src/filewriter/filewriter.c:506 +msgid "Save into original directory" msgstr "" -#: src/evdev-plug/ed.c:68 -msgid "Playlist->Shuffle" +#: src/filewriter/filewriter.c:511 +msgid "Save into custom directory" msgstr "" -#: src/evdev-plug/ed.c:70 -msgid "Volume->Up_5" +#: src/filewriter/filewriter.c:521 +msgid "Output file folder:" msgstr "" -#: src/evdev-plug/ed.c:71 -msgid "Volume->Down_5" +#: src/filewriter/filewriter.c:525 +msgid "Pick a folder" msgstr "" -#: src/evdev-plug/ed.c:72 -msgid "Volume->Up_10" +#: src/filewriter/filewriter.c:544 +msgid "Get filename from:" msgstr "" -#: src/evdev-plug/ed.c:73 -msgid "Volume->Down_10" +#: src/filewriter/filewriter.c:547 +msgid "original file tags" msgstr "" -#: src/evdev-plug/ed.c:74 -msgid "Volume->Mute" +#: src/filewriter/filewriter.c:553 +msgid "original filename" msgstr "" -#: src/evdev-plug/ed.c:76 -msgid "Window->Main" +#: src/filewriter/filewriter.c:563 +msgid "Don't strip file name extension" msgstr "" -#: src/evdev-plug/ed.c:77 -msgid "Window->Playlist" +#: src/filewriter/filewriter.c:578 +msgid "Prepend track number to filename" msgstr "" -#: src/evdev-plug/ed.c:78 -msgid "Window->Equalizer" +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:765 +msgid "Auto" msgstr "" -#: src/evdev-plug/ed.c:79 -msgid "Window->JumpToFile" +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" msgstr "" -#: src/evdev-plug/ed_internals.c:94 -#, c-format -msgid "" -"event-device-plugin: unable to open device file %s , skipping this device; " -"check that the file exists and that you have read permission for it\n" +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Stereo" msgstr "" -#: src/evdev-plug/ed_internals.c:103 -#, c-format -msgid "" -"event-device-plugin: unable to create a io_channel for device file %s ," -"skipping this device\n" +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Mono" msgstr "" -#: src/evdev-plug/ed_internals.c:342 -msgid "" -"event-device-plugin: unable to open /proc/bus/input/devices , automatic " -"detection of event devices won't work.\n" +#: src/filewriter/mp3.c:706 +msgid "MP3 Configuration" msgstr "" -#: src/evdev-plug/ed_internals.c:351 -msgid "" -"event-device-plugin: unable to open a io_channel for /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" +#: src/filewriter/mp3.c:729 +msgid "Algorithm Quality:" msgstr "" -#: src/evdev-plug/ed_internals.c:361 -msgid "" -"event-device-plugin: an error occurred while reading /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" +#: src/filewriter/mp3.c:754 +msgid "Output Samplerate:" msgstr "" -#: src/evdev-plug/ed_internals.c:424 -#, c-format -msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" +#: src/filewriter/mp3.c:782 +msgid "(Hz)" msgstr "" -#: src/evdev-plug/ed_internals.c:489 src/evdev-plug/ed_internals.c:583 -#, c-format -msgid "" -"event-device-plugin: unable to load config file %s , default settings will " -"be used.\n" +#: src/filewriter/mp3.c:789 +msgid "Bitrate / Compression ratio:" msgstr "" -#: src/evdev-plug/ed_internals.c:535 -#, c-format -msgid "" -"event-device-plugin: incomplete information in config file for device \"%s" -"\" , skipping.\n" +#: src/filewriter/mp3.c:813 +msgid "Bitrate (kbps):" msgstr "" -#: src/evdev-plug/ed_internals.c:604 src/evdev-plug/ed_internals.c:936 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_active value for device " -"\"%s\", skipping it.\n" +#: src/filewriter/mp3.c:846 +msgid "Compression ratio:" msgstr "" -#: src/evdev-plug/ed_internals.c:840 -#, c-format -msgid "" -"event-device-plugin: unable to access local directory %s , settings will not " -"be saved.\n" +#: src/filewriter/mp3.c:870 +msgid "Audio Mode:" msgstr "" -#: src/evdev-plug/ed_internals.c:890 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get filename value for device " -"\"%s\", skipping it.\n" +#: src/filewriter/mp3.c:895 +msgid "Misc:" msgstr "" -#: src/evdev-plug/ed_internals.c:906 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get phys value for device \"%s" -"\", skipping it.\n" +#: src/filewriter/mp3.c:906 +msgid "Enforce strict ISO complience" msgstr "" -#: src/evdev-plug/ed_internals.c:922 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_custom value for device " -"\"%s\", skipping it.\n" +#: src/filewriter/mp3.c:917 +msgid "Error protection" msgstr "" -#: src/evdev-plug/ed_internals.c:946 -#, c-format -msgid "" -"event-device-plugin: configuration, unexpected value for device \"%s\", " -"skipping it.\n" +#: src/filewriter/mp3.c:929 src/filewriter/vorbis.c:247 +msgid "Quality" msgstr "" -#: src/evdev-plug/ed_ui.c:212 -msgid "Detected" +#: src/filewriter/mp3.c:939 +msgid "Enable VBR/ABR" msgstr "" -#: src/evdev-plug/ed_ui.c:217 -msgid "Custom" +#: src/filewriter/mp3.c:949 +msgid "Type:" msgstr "" -#: src/evdev-plug/ed_ui.c:223 -msgid "Not Detected" +#: src/filewriter/mp3.c:982 +msgid "VBR Options:" msgstr "" -#: src/evdev-plug/ed_ui.c:275 src/evdev-plug/ed_ui.c:411 -#: src/evdev-plug/ed_ui.c:874 -msgid "Information" +#: src/filewriter/mp3.c:998 +msgid "Minimum bitrate (kbps):" msgstr "" -#: src/evdev-plug/ed_ui.c:276 -msgid "" -"Cannot open bindings window for a not-detected device.\n" -"Ensure that the device has been correctly plugged in." +#: src/filewriter/mp3.c:1025 +msgid "Maximum bitrate (kbps):" msgstr "" -#: src/evdev-plug/ed_ui.c:319 -msgid "Error" +#: src/filewriter/mp3.c:1048 +msgid "Strictly enforce minimum bitrate" msgstr "" -#: src/evdev-plug/ed_ui.c:320 -msgid "" -"Unable to open selected device.\n" -"Please check read permissions on device file." +#: src/filewriter/mp3.c:1060 +msgid "ABR Options:" msgstr "" -#: src/evdev-plug/ed_ui.c:341 -msgid "EvDev-Plug - Add custom device" +#: src/filewriter/mp3.c:1070 +msgid "Average bitrate (kbps):" msgstr "" -#: src/evdev-plug/ed_ui.c:353 -msgid "" -"EvDev-Plug tries to automatically detect and update information about\n" -"event devices available on the system.\n" -"However, if auto-detect doesn't work for your system, or you have event\n" -"devices in a non-standard location (currently they're only searched in\n" -"/dev/input/ ), you may want to add a custom device, explicitly specifying\n" -"name and device file." +#: src/filewriter/mp3.c:1098 +msgid "VBR quality level:" msgstr "" -#: src/evdev-plug/ed_ui.c:361 -msgid "Device name:" +#: src/filewriter/mp3.c:1117 +msgid "Don't write Xing VBR header" msgstr "" -#: src/evdev-plug/ed_ui.c:365 -msgid "Device file:" +#: src/filewriter/mp3.c:1131 +msgid "VBR/ABR" msgstr "" -#: src/evdev-plug/ed_ui.c:404 -msgid "(custom)" +#: src/filewriter/mp3.c:1141 +msgid "Frame params:" msgstr "" -#: src/evdev-plug/ed_ui.c:412 -msgid "" -"Please specify both name and filename.\n" -"Filename must be specified with absolute path." +#: src/filewriter/mp3.c:1153 +msgid "Mark as copyright" msgstr "" -#: src/evdev-plug/ed_ui.c:447 -msgid "Do you want to remove the existing configuration for selected device?\n" +#: src/filewriter/mp3.c:1164 +msgid "Mark as original" msgstr "" -#: src/evdev-plug/ed_ui.c:466 -msgid "Do you want to remove the selected custom device?\n" +#: src/filewriter/mp3.c:1176 +msgid "ID3 params:" msgstr "" -#: src/evdev-plug/ed_ui.c:612 -msgid "EvDev-Plug - Configuration" +#: src/filewriter/mp3.c:1187 +msgid "Force addition of version 2 tag" msgstr "" -#: src/evdev-plug/ed_ui.c:651 -msgid "Active" +#: src/filewriter/mp3.c:1197 +msgid "Only add v1 tag" msgstr "" -#: src/evdev-plug/ed_ui.c:655 src/sun/configure.c:486 -msgid "Status" +#: src/filewriter/mp3.c:1204 +msgid "Only add v2 tag" msgstr "" -#: src/evdev-plug/ed_ui.c:664 -msgid "Device Name" +#: src/filewriter/mp3.c:1225 +msgid "Tags" msgstr "" -#: src/evdev-plug/ed_ui.c:668 -msgid "Device File" +#: src/filewriter/vorbis.c:240 +msgid "Vorbis Encoder Configuration" msgstr "" -#: src/evdev-plug/ed_ui.c:672 -msgid "Device Address" +#: src/filewriter/vorbis.c:260 +msgid "Quality level (0 - 10):" msgstr "" -#: src/evdev-plug/ed_ui.c:689 -msgid "_Bindings" +#: src/flacng/plugin.c:380 +msgid "About FLAC Audio Plugin" msgstr "" -#: src/evdev-plug/ed_ui.c:838 +#: src/flacng/plugin.c:381 msgid "" -"Press a key of your device to bind it;\n" -"if no key is pressed in five seconds, this window\n" -"will close without binding changes." +"\n" +"\n" +"Original code by\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" +msgstr "" + +#: src/gnomeshortcuts/gnomeshortcuts.c:303 +msgid "About Gnome Shortcut Plugin" msgstr "" -#: src/evdev-plug/ed_ui.c:875 +#: src/gnomeshortcuts/gnomeshortcuts.c:304 msgid "" -"This input event has been already assigned.\n" +"Gnome Shortcut Plugin\n" +"Let's you control the player with Gnome's shortcuts.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" "\n" -"It's not possible to assign multiple actions to the same input event " -"(although it's possible to assign the same action to multiple events)." msgstr "" -#: src/evdev-plug/ed_ui.c:1323 -msgid "EvDev-Plug - Bindings Configuration" +#: src/gtkui/columns.c:36 +msgid "Entry number" msgstr "" -#: src/evdev-plug/ed_ui.c:1363 -msgid "Name: " +#: src/gtkui/columns.c:36 src/search-tool/search-tool.c:43 +msgid "Title" msgstr "" -#: src/evdev-plug/ed_ui.c:1372 -msgid "Filename: " +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:42 +msgid "Artist" msgstr "" -#: src/evdev-plug/ed_ui.c:1381 -msgid "Phys.Address: " +#: src/gtkui/columns.c:37 +msgid "Year" msgstr "" -#: src/evdev-plug/ed_ui.c:1460 -msgid "EvDev-Plug - about" +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:43 +msgid "Album" msgstr "" -#: src/evdev-plug/ed_ui.c:1491 -msgid "" -"\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"written by Giacomo Lozito\n" +#: src/gtkui/columns.c:37 +msgid "Track" msgstr "" -#: src/ffaudio/ffaudio-core.c:662 -#, c-format -msgid "" -"Multi-format audio decoding plugin for Audacious based on\n" -"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" -"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" -"\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" -"Audacious plugin by:\n" -" William Pitcock ,\n" -" Matti Hämäläinen \n" +#: src/gtkui/columns.c:37 +msgid "Queue position" msgstr "" -#: src/ffaudio/ffaudio-core.c:675 -msgid "About FFaudio Plugin" +#: src/gtkui/columns.c:38 +msgid "Length" msgstr "" -#: src/filewriter/filewriter.c:180 -msgid "About FileWriter-Plugin" +#: src/gtkui/columns.c:38 +msgid "File path" msgstr "" -#: src/filewriter/filewriter.c:181 -msgid "" -"FileWriter-Plugin\n" -"\n" -"This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." +#: src/gtkui/columns.c:38 +msgid "File name" msgstr "" -#: src/filewriter/filewriter.c:466 -msgid "File Writer Configuration" +#: src/gtkui/columns.c:38 +msgid "Custom title" msgstr "" -#: src/filewriter/filewriter.c:478 -msgid "Output file format:" +#: src/gtkui/columns.c:39 +msgid "Bitrate" msgstr "" -#: src/filewriter/filewriter.c:496 src/ladspa/ladspa.c:1058 -msgid "Configure" +#: src/gtkui/columns.c:278 +msgid "Choose Columns" msgstr "" -#: src/filewriter/filewriter.c:511 -msgid "Save into original directory" +#: src/gtkui/columns.c:292 +msgid "Available:" msgstr "" -#: src/filewriter/filewriter.c:516 -msgid "Save into custom directory" +#: src/gtkui/columns.c:326 +msgid "Chosen:" msgstr "" -#: src/filewriter/filewriter.c:528 -msgid "Output file folder:" +#: src/gtkui/layout.c:122 +msgid "Dock at Left" msgstr "" -#: src/filewriter/filewriter.c:532 -msgid "Pick a folder" +#: src/gtkui/layout.c:122 +msgid "Dock at Right" msgstr "" -#: src/filewriter/filewriter.c:551 -msgid "Get filename from:" +#: src/gtkui/layout.c:123 +msgid "Dock at Top" msgstr "" -#: src/filewriter/filewriter.c:554 -msgid "original file tags" +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" msgstr "" -#: src/filewriter/filewriter.c:560 -msgid "original filename" +#: src/gtkui/layout.c:123 +msgid "Undock" msgstr "" -#: src/filewriter/filewriter.c:570 -msgid "Don't strip file name extension" +#: src/gtkui/layout.c:123 src/ladspa/plugin.c:644 +msgid "Disable" msgstr "" -#: src/filewriter/filewriter.c:574 -msgid "" -"If enabled, the extension from the original filename will not be stripped " -"before adding the new file extension to the end." +#: src/gtkui/menus.c:131 +msgid "_Open Files ..." msgstr "" -#: src/filewriter/filewriter.c:588 -msgid "Prepend track number to filename" +#: src/gtkui/menus.c:132 +msgid "Open _URL ..." msgstr "" -#: src/filewriter/mp3.c:710 -msgid "MP3 Configuration" +#: src/gtkui/menus.c:133 +msgid "_Add Files ..." msgstr "" -#: src/filewriter/mp3.c:737 -msgid "Algorithm Quality:" +#: src/gtkui/menus.c:134 +msgid "Add U_RL ..." msgstr "" -#: src/filewriter/mp3.c:759 -msgid "" -"best/slowest:0;\n" -"worst/fastest:9;\n" -"recommended:2;\n" -"default:5;" +#: src/gtkui/menus.c:136 +msgid "A_bout ..." msgstr "" -#: src/filewriter/mp3.c:767 -msgid "Output Samplerate:" +#: src/gtkui/menus.c:137 +msgid "_Preferences ..." msgstr "" -#: src/filewriter/mp3.c:778 src/filewriter/mp3.c:919 -msgid "Auto" +#: src/gtkui/menus.c:138 src/skins/ui_manager.c:406 +msgid "_Quit" msgstr "" -#: src/filewriter/mp3.c:800 -msgid "(Hz)" +#: src/gtkui/menus.c:141 +msgid "_Play" msgstr "" -#: src/filewriter/mp3.c:812 -msgid "Bitrate / Compression ratio:" +#: src/gtkui/menus.c:142 +msgid "Paus_e" msgstr "" -#: src/filewriter/mp3.c:838 -msgid "Bitrate (kbps):" +#: src/gtkui/menus.c:143 +msgid "_Stop" msgstr "" -#: src/filewriter/mp3.c:879 -msgid "Compression ratio:" +#: src/gtkui/menus.c:144 +msgid "Pre_vious" msgstr "" -#: src/filewriter/mp3.c:909 -msgid "Audio Mode:" +#: src/gtkui/menus.c:145 +msgid "_Next" msgstr "" -#: src/filewriter/mp3.c:924 -msgid "Joint-Stereo" +#: src/gtkui/menus.c:147 +msgid "_Repeat" msgstr "" -#: src/filewriter/mp3.c:967 -msgid "Misc:" +#: src/gtkui/menus.c:148 +msgid "S_huffle" msgstr "" -#: src/filewriter/mp3.c:978 -msgid "Enforce strict ISO complience" +#: src/gtkui/menus.c:149 +msgid "N_o Playlist Advance" msgstr "" -#: src/filewriter/mp3.c:989 -msgid "Error protection" +#: src/gtkui/menus.c:150 +msgid "Stop _After This Song" msgstr "" -#: src/filewriter/mp3.c:1001 -msgid "Adds 16 bit checksum to every frame" +#: src/gtkui/menus.c:152 src/gtkui/menus.c:212 +msgid "Song _Info ..." msgstr "" -#: src/filewriter/mp3.c:1006 src/filewriter/vorbis.c:247 -#: src/modplug/gui/interface.cxx:320 -msgid "Quality" +#: src/gtkui/menus.c:153 +msgid "Jump to _Time ..." msgstr "" -#: src/filewriter/mp3.c:1018 -msgid "Enable VBR/ABR" +#: src/gtkui/menus.c:154 +msgid "_Jump to Song ..." msgstr "" -#: src/filewriter/mp3.c:1030 -msgid "Type:" +#: src/gtkui/menus.c:157 +msgid "By Track _Number" msgstr "" -#: src/filewriter/mp3.c:1041 -msgid "Variable bitrate" +#: src/gtkui/menus.c:158 +msgid "By _Title" msgstr "" -#: src/filewriter/mp3.c:1053 -msgid "Average bitrate" +#: src/gtkui/menus.c:159 +msgid "By _Artist" msgstr "" -#: src/filewriter/mp3.c:1067 -msgid "VBR Options:" +#: src/gtkui/menus.c:160 +msgid "By A_lbum" msgstr "" -#: src/filewriter/mp3.c:1083 -msgid "Minimum bitrate (kbps):" +#: src/gtkui/menus.c:161 +msgid "By Release _Date" msgstr "" -#: src/filewriter/mp3.c:1119 -msgid "Maximum bitrate (kbps):" +#: src/gtkui/menus.c:162 +msgid "By _File Path" msgstr "" -#: src/filewriter/mp3.c:1151 -msgid "Strictly enforce minimum bitrate" +#: src/gtkui/menus.c:163 +msgid "By _Custom Title" msgstr "" -#: src/filewriter/mp3.c:1153 -msgid "" -"For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/" -"mp3 player)" +#: src/gtkui/menus.c:165 +msgid "R_everse Order" msgstr "" -#: src/filewriter/mp3.c:1166 -msgid "ABR Options:" +#: src/gtkui/menus.c:166 +msgid "_Random Order" msgstr "" -#: src/filewriter/mp3.c:1176 -msgid "Average bitrate (kbps):" +#: src/gtkui/menus.c:169 src/gtkui/menus.c:214 +msgid "_Refresh" msgstr "" -#: src/filewriter/mp3.c:1213 -msgid "VBR quality level:" +#: src/gtkui/menus.c:170 +msgid "Remove _Unavailable Files" msgstr "" -#: src/filewriter/mp3.c:1228 -msgid "" -"highest:0;\n" -"lowest:9;\n" -"default:4;" +#: src/gtkui/menus.c:172 +msgid "_Sort" msgstr "" -#: src/filewriter/mp3.c:1236 -msgid "Don't write Xing VBR header" +#: src/gtkui/menus.c:174 +msgid "_New" msgstr "" -#: src/filewriter/mp3.c:1250 -msgid "VBR/ABR" +#: src/gtkui/menus.c:175 src/gtkui/menus.c:225 +msgid "_Close" msgstr "" -#: src/filewriter/mp3.c:1262 -msgid "Frame params:" +#: src/gtkui/menus.c:177 +msgid "_Import ..." msgstr "" -#: src/filewriter/mp3.c:1274 -msgid "Mark as copyright" +#: src/gtkui/menus.c:178 +msgid "_Export ..." msgstr "" -#: src/filewriter/mp3.c:1285 -msgid "Mark as original" +#: src/gtkui/menus.c:180 +msgid "_Playlist Manager ..." msgstr "" -#: src/filewriter/mp3.c:1297 -msgid "ID3 params:" +#: src/gtkui/menus.c:181 +msgid "_Queue Manager ..." msgstr "" -#: src/filewriter/mp3.c:1308 -msgid "Force addition of version 2 tag" +#: src/gtkui/menus.c:184 +msgid "Volume _Up" msgstr "" -#: src/filewriter/mp3.c:1318 -msgid "Only add v1 tag" +#: src/gtkui/menus.c:185 +msgid "Volume _Down" msgstr "" -#: src/filewriter/mp3.c:1325 -msgid "Only add v2 tag" +#: src/gtkui/menus.c:187 +msgid "_Equalizer" msgstr "" -#: src/filewriter/mp3.c:1346 -msgid "Tags" +#: src/gtkui/menus.c:189 +msgid "E_ffects" msgstr "" -#: src/filewriter/vorbis.c:240 -msgid "Vorbis Encoder Configuration" +#: src/gtkui/menus.c:192 +msgid "_Interface" msgstr "" -#: src/filewriter/vorbis.c:260 -msgid "Quality level (0 - 10):" +#: src/gtkui/menus.c:193 +msgid "_Visualizations" msgstr "" -#: src/flacng/plugin.c:457 -msgid "FLAC Audio Plugin " +#: src/gtkui/menus.c:195 +msgid "Show _Menu Bar" msgstr "" -#: src/flacng/plugin.c:458 -msgid "" -"\n" -"\n" -"Original code by\n" -"Ralf Ertzinger \n" -"\n" -"http://www.skytale.net/projects/bmp-flac2/" -msgstr "" - -#: src/flacng/plugin.c:464 -msgid "About FLAC Audio Plugin" -msgstr "" - -#: src/gnomeshortcuts/gnomeshortcuts.c:306 -msgid "About Gnome Shortcut Plugin" -msgstr "" - -#: src/gnomeshortcuts/gnomeshortcuts.c:307 -msgid "" -"Gnome Shortcut Plugin\n" -"Let's you control the player with Gnome's shortcuts.\n" -"\n" -"Copyright (C) 2007-2008 Sascha Hlusiak \n" -"\n" -msgstr "" - -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:273 -msgid "Open Files" -msgstr "" - -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 -msgid "Add Files" -msgstr "" - -#: src/gntui/gntui.c:271 -msgid "Audacious2" -msgstr "" - -#: src/gntui/gntui.c:312 -msgid "gnt interface" -msgstr "" - -#: src/gtkui/actions.c:257 src/skins/ui_main.c:818 -msgid "Can't jump to time when no track is being played.\n" -msgstr "" - -#: src/gtkui/actions.c:272 src/gtkui/ui_manager.c:204 -#: src/gtkui/ui_manager.c:205 src/skins/ui_main.c:833 -#: src/skins/ui_manager.c:410 src/skins/ui_manager.c:411 -msgid "Jump to Time" -msgstr "" - -#: src/gtkui/actions.c:289 src/skins/ui_main.c:854 -msgid "minutes:seconds" -msgstr "" - -#: src/gtkui/actions.c:299 src/skins/ui_main.c:864 -msgid "Track length:" -msgstr "" - -#: src/gtkui/actions.c:610 src/skins/ui_playlist.c:648 -#, c-format -msgid "Error writing playlist \"%s\": %s" -msgstr "" - -#: src/gtkui/actions.c:625 src/skins/ui_playlist.c:670 -#, c-format -msgid "%s already exist. Continue?" -msgstr "" - -#: src/gtkui/actions.c:651 src/skins/ui_manager.c:214 -msgid "Export Playlist" -msgstr "" - -#: src/gtkui/actions.c:723 src/skins/ui_manager.c:211 -msgid "Import Playlist" -msgstr "" - -#: src/gtkui/ui_gtk.c:72 -msgid "GTK Interface" -msgstr "" - -#: src/gtkui/ui_gtk.c:281 src/skins/ui_main.c:388 -#, c-format -msgid "%s - Audacious" -msgstr "" - -#: src/gtkui/ui_gtk.c:287 src/skins/ui_main.c:390 src/skins/ui_main.c:2166 -msgid "Audacious" -msgstr "" - -#: src/gtkui/ui_manager.c:35 src/gtkui/ui_manager.c:36 -#: src/skins/ui_manager.c:53 src/skins/ui_manager.c:54 -msgid "Stop after Current Song" -msgstr "" - -#: src/gtkui/ui_manager.c:38 src/gtkui/ui_manager.c:39 -#: src/skins/ui_manager.c:59 src/skins/ui_manager.c:60 -msgid "Repeat" -msgstr "" - -#: src/gtkui/ui_manager.c:41 src/gtkui/ui_manager.c:42 -#: src/skins/ui_manager.c:62 src/skins/ui_manager.c:63 -msgid "Shuffle" -msgstr "" - -#: src/gtkui/ui_manager.c:44 src/gtkui/ui_manager.c:45 -#: src/skins/ui_manager.c:65 src/skins/ui_manager.c:66 -msgid "No Playlist Advance" -msgstr "" - -#: src/gtkui/ui_manager.c:47 -msgid "Show playlists" -msgstr "" - -#: src/gtkui/ui_manager.c:48 -msgid "Show/hide playlists" -msgstr "" - -#: src/gtkui/ui_manager.c:50 -msgid "Show infoarea" -msgstr "" - -#: src/gtkui/ui_manager.c:51 -msgid "Show/hide infoarea" -msgstr "" - -#: src/gtkui/ui_manager.c:53 -msgid "Show main menu" -msgstr "" - -#: src/gtkui/ui_manager.c:54 -msgid "Show/hide main menu" -msgstr "" - -#: src/gtkui/ui_manager.c:56 -msgid "Show statusbar" -msgstr "" - -#: src/gtkui/ui_manager.c:57 -msgid "Show/hide statusbar" -msgstr "" - -#: src/gtkui/ui_manager.c:69 src/gtkui/ui_manager.c:70 -#: src/skins/ui_manager.c:170 src/skins/ui_manager.c:171 -msgid "Pause" -msgstr "" - -#: src/gtkui/ui_manager.c:72 src/gtkui/ui_manager.c:73 src/hotkey/gui.c:73 -#: src/skins/ui_manager.c:173 src/skins/ui_manager.c:174 -msgid "Stop" -msgstr "" - -#: src/gtkui/ui_manager.c:75 src/gtkui/ui_manager.c:76 -#: src/skins/ui_manager.c:176 src/skins/ui_manager.c:177 -msgid "Previous" -msgstr "" - -#: src/gtkui/ui_manager.c:78 src/gtkui/ui_manager.c:79 -#: src/skins/ui_manager.c:179 src/skins/ui_manager.c:180 -msgid "Next" -msgstr "" - -#: src/gtkui/ui_manager.c:84 src/skins/ui_manager.c:197 -msgid "Playlist" -msgstr "" - -#: src/gtkui/ui_manager.c:86 src/gtkui/ui_manager.c:87 -#: src/skins/ui_manager.c:199 src/skins/ui_manager.c:200 -msgid "New Playlist" -msgstr "" - -#: src/gtkui/ui_manager.c:89 src/gtkui/ui_manager.c:90 -#: src/skins/ui_manager.c:208 src/skins/ui_manager.c:209 -msgid "Delete Playlist" -msgstr "" - -#: src/gtkui/ui_manager.c:92 -msgid "Import Playlist ..." -msgstr "" - -#: src/gtkui/ui_manager.c:93 src/skins/ui_manager.c:212 -msgid "Loads a playlist file into the selected playlist." -msgstr "" - -#: src/gtkui/ui_manager.c:95 -msgid "Export Playlist ..." -msgstr "" - -#: src/gtkui/ui_manager.c:96 src/skins/ui_manager.c:215 -msgid "Saves the selected playlist." -msgstr "" - -#: src/gtkui/ui_manager.c:98 src/skins/ui_manager.c:217 -msgid "Save All Playlists" -msgstr "" - -#: src/gtkui/ui_manager.c:99 src/skins/ui_manager.c:218 -msgid "" -"Saves all the playlists that are open. Note that this is done automatically " -"when Audacious quits." -msgstr "" - -#: src/gtkui/ui_manager.c:103 -msgid "Refresh" -msgstr "" - -#: src/gtkui/ui_manager.c:104 src/skins/ui_manager.c:223 -msgid "Refreshes metadata associated with a playlist entry." -msgstr "" - -#: src/gtkui/ui_manager.c:107 -msgid "Playlist Manager" -msgstr "" - -#: src/gtkui/ui_manager.c:108 src/skins/ui_manager.c:227 -msgid "Opens the playlist manager." -msgstr "" - -#: src/gtkui/ui_manager.c:111 -msgid "Add URL ..." -msgstr "" - -#: src/gtkui/ui_manager.c:112 src/skins/ui_manager.c:237 -msgid "Adds a remote track to the playlist." -msgstr "" - -#: src/gtkui/ui_manager.c:115 -msgid "Add Files ..." -msgstr "" - -#: src/gtkui/ui_manager.c:116 src/skins/ui_manager.c:241 -msgid "Adds files to the playlist." -msgstr "" - -#: src/gtkui/ui_manager.c:119 src/skins/ui_manager.c:264 -msgid "Remove All" -msgstr "" - -#: src/gtkui/ui_manager.c:120 src/skins/ui_manager.c:265 -msgid "Removes all entries from the playlist." -msgstr "" - -#: src/gtkui/ui_manager.c:123 src/skins/ui_manager.c:290 -msgid "Remove Unselected" -msgstr "" - -#: src/gtkui/ui_manager.c:124 src/skins/ui_manager.c:291 -msgid "Remove unselected entries from the playlist." -msgstr "" - -#: src/gtkui/ui_manager.c:127 src/skins/ui_manager.c:294 -msgid "Remove Selected" -msgstr "" - -#: src/gtkui/ui_manager.c:128 src/skins/ui_manager.c:295 -msgid "Remove selected entries from the playlist." -msgstr "" - -#: src/gtkui/ui_manager.c:131 -msgid "Sort" -msgstr "" - -#: src/gtkui/ui_manager.c:132 src/skins/ui_manager.c:330 -#: src/skins/ui_manager.c:360 -msgid "By Track Number" -msgstr "" - -#: src/gtkui/ui_manager.c:134 src/skins/ui_manager.c:278 -#: src/skins/ui_manager.c:306 src/skins/ui_manager.c:336 -msgid "By Title" -msgstr "" - -#: src/gtkui/ui_manager.c:136 src/skins/ui_manager.c:314 -#: src/skins/ui_manager.c:344 -msgid "By Artist" -msgstr "" - -#: src/gtkui/ui_manager.c:138 src/skins/ui_manager.c:310 -#: src/skins/ui_manager.c:340 -msgid "By Album" -msgstr "" - -#: src/gtkui/ui_manager.c:140 -msgid "By File Path" -msgstr "" - -#: src/gtkui/ui_manager.c:142 -msgid "Reverse Order" -msgstr "" - -#: src/gtkui/ui_manager.c:147 -msgid "Output" -msgstr "" - -#: src/gtkui/ui_manager.c:149 src/modplug/gui/interface.cxx:572 -msgid "Effects" -msgstr "" - -#: src/gtkui/ui_manager.c:151 -msgid "Equalizer" -msgstr "" - -#: src/gtkui/ui_manager.c:156 src/skins/ui_manager.c:232 -msgid "View" -msgstr "" - -#: src/gtkui/ui_manager.c:157 src/skins/ui_manager.c:233 -msgid "Interface" -msgstr "" - -#: src/gtkui/ui_manager.c:164 src/skins/ui_manager.c:370 -msgid "File" -msgstr "" - -#: src/gtkui/ui_manager.c:167 -msgid "Components" -msgstr "" - -#: src/gtkui/ui_manager.c:169 src/gtkui/ui_manager.c:172 -#: src/skins/ui_manager.c:375 src/skins/ui_manager.c:378 -msgid "View Track Details" -msgstr "" - -#: src/gtkui/ui_manager.c:170 src/gtkui/ui_manager.c:173 -#: src/skins/ui_manager.c:376 src/skins/ui_manager.c:379 -msgid "View track details" -msgstr "" - -#: src/gtkui/ui_manager.c:175 src/gtkui/ui_manager.c:176 -#: src/skins/ui_manager.c:381 src/skins/ui_manager.c:382 -msgid "About Audacious" -msgstr "" - -#: src/gtkui/ui_manager.c:178 -msgid "Open Files ..." -msgstr "" - -#: src/gtkui/ui_manager.c:179 src/skins/ui_manager.c:385 -msgid "Load and play a file" -msgstr "" - -#: src/gtkui/ui_manager.c:181 -msgid "Open URL ..." -msgstr "" - -#: src/gtkui/ui_manager.c:182 src/skins/ui_manager.c:388 -msgid "Play media from the selected location" -msgstr "" - -#: src/gtkui/ui_manager.c:184 src/skins/ui_manager.c:390 -msgid "Plugin services" -msgstr "" - -#: src/gtkui/ui_manager.c:186 src/skins/ui_manager.c:392 -msgid "Preferences" -msgstr "" - -#: src/gtkui/ui_manager.c:187 src/skins/ui_manager.c:393 -msgid "Open preferences window" -msgstr "" - -#: src/gtkui/ui_manager.c:189 src/skins/ui_manager.c:395 -msgid "_Quit" -msgstr "" - -#: src/gtkui/ui_manager.c:190 src/skins/ui_manager.c:396 -msgid "Quit Audacious" -msgstr "" - -#: src/gtkui/ui_manager.c:192 src/gtkui/ui_manager.c:193 -#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 -msgid "Set A-B" -msgstr "" - -#: src/gtkui/ui_manager.c:195 src/gtkui/ui_manager.c:196 -#: src/skins/ui_manager.c:401 src/skins/ui_manager.c:402 -msgid "Clear A-B" -msgstr "" - -#: src/gtkui/ui_manager.c:198 src/gtkui/ui_manager.c:199 -#: src/skins/ui_manager.c:404 src/skins/ui_manager.c:405 -msgid "Jump to Playlist Start" -msgstr "" - -#: src/gtkui/ui_manager.c:201 src/gtkui/ui_manager.c:202 src/hotkey/gui.c:80 -#: src/skins/ui_manager.c:407 src/skins/ui_manager.c:408 -msgid "Jump to File" -msgstr "" - -#: src/gtkui/ui_manager.c:207 src/skins/ui_manager.c:413 -msgid "Queue Toggle" -msgstr "" - -#: src/gtkui/ui_manager.c:208 src/skins/ui_manager.c:414 -msgid "Enables/disables the entry in the playlist's queue." -msgstr "" - -#: src/gtkui/ui_manager.c:211 src/skins/ui_manager.c:417 -msgid "Copy" -msgstr "" - -#: src/gtkui/ui_manager.c:214 src/skins/ui_manager.c:419 -msgid "Cut" -msgstr "" - -#: src/gtkui/ui_manager.c:217 src/skins/ui_manager.c:421 -msgid "Paste" -msgstr "" - -#: src/gtkui/ui_manager.c:220 src/skins/ui_manager.c:254 -msgid "Select All" -msgstr "" - -#: src/gtkui/ui_manager.c:221 src/skins/ui_manager.c:255 -msgid "Selects all of the playlist entries." -msgstr "" - -#: src/gtkui/ui_manager.c:224 src/skins/ui_manager.c:258 -msgid "Select None" -msgstr "" - -#: src/gtkui/ui_manager.c:225 src/skins/ui_manager.c:259 -msgid "Deselects all of the playlist entries." -msgstr "" - -#: src/gtkui/ui_statusbar.c:91 src/skins/ui_main.c:609 -msgid "mono" -msgstr "" - -#: src/gtkui/ui_statusbar.c:94 src/skins/ui_main.c:608 -msgid "stereo" -msgstr "" - -#: src/gtkui/ui_statusbar.c:97 -#, c-format -msgid "%d channels" -msgstr "" - -#: src/gtkui/ui_statusbar.c:101 -#, c-format -msgid "%s: %d kbps, %d Hz, %s" -msgstr "" - -#: src/hotkey/gui.c:70 -msgid "Previous Track" -msgstr "" - -#: src/hotkey/gui.c:72 -msgid "Pause/Resume" -msgstr "" - -#: src/hotkey/gui.c:74 -msgid "Next Track" -msgstr "" - -#: src/hotkey/gui.c:75 -msgid "Forward 5 Seconds" -msgstr "" - -#: src/hotkey/gui.c:76 -msgid "Rewind 5 Seconds" -msgstr "" - -#: src/hotkey/gui.c:77 -msgid "Mute" -msgstr "" - -#: src/hotkey/gui.c:78 -msgid "Volume Up" -msgstr "" - -#: src/hotkey/gui.c:79 -msgid "Volume Down" -msgstr "" - -#: src/hotkey/gui.c:81 -msgid "Toggle Player Windows" -msgstr "" - -#: src/hotkey/gui.c:82 -msgid "Show On-Screen-Display" -msgstr "" - -#: src/hotkey/gui.c:92 -msgid "(none)" -msgstr "" - -#: src/hotkey/gui.c:229 -msgid "" -"It is not recommended to bind the primary mouse buttons without " -"modificators.\n" -"\n" -"Do you want to continue?" -msgstr "" - -#: src/hotkey/gui.c:231 -msgid "Binding mouse buttons" -msgstr "" - -#: src/hotkey/gui.c:381 -msgid "Global Hotkey Plugin Configuration" -msgstr "" - -#: src/hotkey/gui.c:397 -msgid "" -"Press a key combination inside a text field.\n" -"You can also bind mouse buttons." -msgstr "" - -#: src/hotkey/gui.c:402 -msgid "Hotkeys:" -msgstr "" - -#: src/hotkey/gui.c:421 -msgid "Action:" -msgstr "" - -#: src/hotkey/gui.c:429 -msgid "Key Binding:" -msgstr "" - -#: src/hotkey/gui.c:660 -msgid "About Global Hotkey Plugin" -msgstr "" - -#: src/hotkey/gui.c:661 -msgid "" -"Global Hotkey Plugin\n" -"Control the player with global key combinations or multimedia keys.\n" -"\n" -"Copyright (C) 2007-2008 Sascha Hlusiak \n" -"\n" -"Contributers include:\n" -"Copyright (C) 2006-2007 Vladimir Paskov \n" -"Copyright (C) 2000-2002 Ville Syrjälä \n" -"\t\t\tBryn Davies \n" -"\t\t\tJonathan A. Davis \n" -"\t\t\tJeremy Tan \n" -"\n" -msgstr "" - -#: src/jack/configure.c:71 -msgid "Connect to all available jack ports" -msgstr "" - -#: src/jack/configure.c:78 -msgid "Connect only the output ports" -msgstr "" - -#: src/jack/configure.c:85 -msgid "Connect to no ports" -msgstr "" - -#: src/jack/configure.c:103 -msgid "jack Plugin configuration" -msgstr "" - -#: src/jack/configure.c:121 -msgid "Connection mode:" -msgstr "" - -#: src/jack/configure.c:133 -msgid "Enable debug printing" -msgstr "" - -#: src/jack/jack.c:437 -msgid "" -"XMMS jack Driver 0.17\n" -"\n" -"xmms-jack.sf.net\n" -"Chris Morgan\n" -"\n" -"Audacious port by\n" -"Giacomo Lozito from develia.org" -msgstr "" - -#: src/jack/jack.c:442 -msgid "About JACK Output Plugin 0.17" -msgstr "" - -#: src/ladspa/ladspa.c:824 -msgid "This LADSPA plugin has no user controls" -msgstr "" - -#: src/ladspa/ladspa.c:865 src/ladspa/ladspa.c:952 -msgid "Name" -msgstr "" - -#: src/ladspa/ladspa.c:952 -msgid "UID" -msgstr "" - -#: src/ladspa/ladspa.c:1029 -msgid "Installed plugins" -msgstr "" - -#: src/ladspa/ladspa.c:1037 -msgid "Running plugins" -msgstr "" - -#: src/ladspa/ladspa.c:1052 -msgid "Add" -msgstr "" - -#: src/ladspa/ladspa.c:1055 -msgid "Remove" -msgstr "" - -#: src/ladspa/ladspa.c:1066 -msgid "LADSPA Plugin Catalog" -msgstr "" - -#: src/lirc/about.c:63 -msgid "About LIRC Audacious Plugin" -msgstr "" - -#: src/lirc/about.c:90 -msgid "LIRC Plugin " -msgstr "" - -#: src/lirc/about.c:92 -msgid "" -"\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" -"\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" -msgstr "" - -#: src/lirc/interface.c:37 -msgid "LIRC plugin settings" -msgstr "" - -#: src/lirc/interface.c:61 -msgid "Reconnect to LIRC server" -msgstr "" - -#: src/lirc/interface.c:68 -msgid "Timeout before reconnecting (seconds): " -msgstr "" - -#: src/lirc/interface.c:75 -msgid "Reconnect" -msgstr "" - -#: src/lirc/interface.c:79 -msgid "Connection" -msgstr "" - -#: src/lirc/lirc.c:82 -#, c-format -msgid "%s: could not init LIRC support\n" +#: src/gtkui/menus.c:196 +msgid "Show I_nfo Bar" msgstr "" -#: src/lirc/lirc.c:90 -#, c-format -msgid "" -"%s: could not read LIRC config file\n" -"%s: please read the documentation of LIRC\n" -"%s: how to create a proper config file\n" -msgstr "" - -#: src/lirc/lirc.c:117 -#, c-format -msgid "%s: trying to reconnect...\n" -msgstr "" - -#: src/lirc/lirc.c:332 -#, c-format -msgid "%s: unknown command \"%s\"\n" -msgstr "" - -#: src/lirc/lirc.c:342 -#, c-format -msgid "%s: disconnected from LIRC\n" -msgstr "" - -#: src/lirc/lirc.c:346 -#, c-format -msgid "%s: will try reconnect every %d seconds...\n" -msgstr "" - -#: src/lyricwiki/lyricwiki.c:244 -msgid "LyricWiki" -msgstr "" - -#: src/lyricwiki/lyricwiki.c:337 -msgid "" -"\n" -"No lyrics were found." -msgstr "" - -#: src/metronom/metronom.c:90 -msgid "About Metronom" -msgstr "" - -#: src/metronom/metronom.c:91 -msgid "" -"A Tact Generator by Martin Strauss \n" -"\n" -"To use it, add a URL: tact://beats*num/den\n" -"e.g. tact://77 to play 77 beats per minute\n" -"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +#: src/gtkui/menus.c:197 +msgid "Show _Status Bar" msgstr "" -#: src/metronom/metronom.c:145 -#, c-format -msgid "Tact generator: %d bpm" +#: src/gtkui/menus.c:199 +msgid "Show Column _Headers" msgstr "" -#: src/metronom/metronom.c:147 -#, c-format -msgid "Tact generator: %d bpm %d/%d" +#: src/gtkui/menus.c:200 +msgid "Choose _Columns ..." msgstr "" -#: src/modplug/gui/interface.cxx:137 -msgid "ModPlug Configuration" +#: src/gtkui/menus.c:201 +msgid "Scrol_l on Song Change" msgstr "" -#: src/modplug/gui/interface.cxx:174 -msgid "16 bit" +#: src/gtkui/menus.c:204 +msgid "_File" msgstr "" -#: src/modplug/gui/interface.cxx:181 -msgid "8 bit" +#: src/gtkui/menus.c:205 +msgid "_Playback" msgstr "" -#: src/modplug/gui/interface.cxx:212 -msgid "Mono (downmix)" +#: src/gtkui/menus.c:206 +msgid "P_laylist" msgstr "" -#: src/modplug/gui/interface.cxx:241 -msgid "Nearest (fastest)" +#: src/gtkui/menus.c:207 src/gtkui/menus.c:221 +msgid "_Services" msgstr "" -#: src/modplug/gui/interface.cxx:248 -msgid "Linear (fast)" +#: src/gtkui/menus.c:208 +msgid "_Output" msgstr "" -#: src/modplug/gui/interface.cxx:255 -msgid "Spline (good quality)" +#: src/gtkui/menus.c:209 +msgid "_View" msgstr "" -#: src/modplug/gui/interface.cxx:262 -msgid "8-tap Fir (extremely high quality)" +#: src/gtkui/menus.c:213 +msgid "_Queue/Unqueue" msgstr "" -#: src/modplug/gui/interface.cxx:286 -msgid "96 kHz" +#: src/gtkui/menus.c:216 +msgid "Cu_t" msgstr "" -#: src/modplug/gui/interface.cxx:293 -msgid "48 kHz" +#: src/gtkui/menus.c:217 +msgid "_Copy" msgstr "" -#: src/modplug/gui/interface.cxx:300 -msgid "44 kHz" +#: src/gtkui/menus.c:218 +msgid "_Paste" msgstr "" -#: src/modplug/gui/interface.cxx:307 -msgid "22 kHz" +#: src/gtkui/menus.c:219 +msgid "Select _All" msgstr "" -#: src/modplug/gui/interface.cxx:315 -msgid "Sampling Rate" +#: src/gtkui/menus.c:224 +msgid "_Rename" msgstr "" -#: src/modplug/gui/interface.cxx:349 src/modplug/gui/interface.cxx:411 -#: src/modplug/gui/interface.cxx:477 src/modplug/gui/interface.cxx:539 -msgid "Enable" +#: src/gtkui/ui_gtk.c:95 +msgid "GTK Interface" msgstr "" -#: src/modplug/gui/interface.cxx:378 src/modplug/gui/interface.cxx:506 -msgid "Depth" +#: src/gtkui/ui_gtk.c:156 src/skins/ui_main.c:303 +#, c-format +msgid "%s - Audacious" msgstr "" -#: src/modplug/gui/interface.cxx:386 src/modplug/gui/interface.cxx:514 -msgid "Delay" +#: src/gtkui/ui_gtk.c:162 +msgid "Buffering ..." msgstr "" -#: src/modplug/gui/interface.cxx:394 -msgid "Reverb" +#: src/gtkui/ui_gtk.c:165 src/skins/ui_main.c:305 src/skins/ui_main.c:1504 +msgid "Audacious" msgstr "" -#: src/modplug/gui/interface.cxx:440 -msgid "Amount" +#: src/gtkui/ui_gtk.c:216 src/skins/plugin.c:190 +msgid "Error" msgstr "" -#: src/modplug/gui/interface.cxx:448 -msgid "Range" +#: src/gtkui/ui_playlist_notebook.c:97 +msgid "Close" msgstr "" -#: src/modplug/gui/interface.cxx:456 -msgid "Bass Boost" +#: src/gtkui/ui_statusbar.c:105 src/skins/ui_main.c:460 +msgid "mono" msgstr "" -#: src/modplug/gui/interface.cxx:522 src/mpg123/mpg123.c:174 -msgid "Surround" +#: src/gtkui/ui_statusbar.c:107 src/skins/ui_main.c:459 +msgid "stereo" msgstr "" -#: src/modplug/gui/interface.cxx:561 -msgid "" -"Note: Setting the preamp\n" -"too high may cause clipping\n" -"(annoying clicks and pops)!" -msgstr "" +#: src/gtkui/ui_statusbar.c:109 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "" +msgstr[1] "" -#: src/modplug/gui/interface.cxx:567 -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "Preamp" +#: src/gtkui/ui_statusbar.c:124 +#, c-format +msgid "%d kbps" msgstr "" -#: src/modplug/gui/interface.cxx:601 -msgid "Use Filename as Song Title" +#: src/hotkey/gui.c:71 +msgid "Previous Track" msgstr "" -#: src/modplug/gui/interface.cxx:606 -msgid "Fast Playlist Info" +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" msgstr "" -#: src/modplug/gui/interface.cxx:617 -msgid "Noise Reduction" +#: src/hotkey/gui.c:73 +msgid "Pause/Resume" msgstr "" -#: src/modplug/gui/interface.cxx:623 -msgid "Play Amiga MOD" +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +msgid "Stop" msgstr "" -#: src/modplug/gui/interface.cxx:646 -msgid "Don't loop" +#: src/hotkey/gui.c:75 +msgid "Next Track" msgstr "" -#: src/modplug/gui/interface.cxx:658 -msgid "Loop" +#: src/hotkey/gui.c:76 +msgid "Forward 5 Seconds" msgstr "" -#: src/modplug/gui/interface.cxx:671 -msgid "time(s)" +#: src/hotkey/gui.c:77 +msgid "Rewind 5 Seconds" msgstr "" -#: src/modplug/gui/interface.cxx:677 -msgid "Loop forever" +#: src/hotkey/gui.c:78 +msgid "Mute" msgstr "" -#: src/modplug/gui/interface.cxx:684 -msgid "Looping" +#: src/hotkey/gui.c:79 +msgid "Volume Up" msgstr "" -#: src/modplug/gui/interface.cxx:859 -msgid "MOD Info" +#: src/hotkey/gui.c:80 +msgid "Volume Down" msgstr "" -#: src/modplug/gui/interface.cxx:878 -msgid "" -"Filename:\n" -"Title:\n" -"Type:\n" -"Length:\n" -"Speed:\n" -"Tempo:\n" -"Samples:\n" -"Instruments:\n" -"Patterns:\n" -"Channels:" +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Jump to File" msgstr "" -#: src/modplug/gui/interface.cxx:883 -msgid "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" +#: src/hotkey/gui.c:82 +msgid "Toggle Player Windows" msgstr "" -#: src/modplug/gui/interface.cxx:913 -msgid "Samples" +#: src/hotkey/gui.c:83 +msgid "Show On-Screen-Display" msgstr "" -#: src/modplug/gui/interface.cxx:938 -msgid "Instruments" +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" msgstr "" -#: src/modplug/gui/interface.cxx:959 -msgid "Message" +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" msgstr "" -#: src/modplug/gui/main.cxx:51 -msgid "Modplug Input Plugin for Audacious ver" +#: src/hotkey/gui.c:95 +msgid "(none)" msgstr "" -#: src/modplug/gui/main.cxx:52 +#: src/hotkey/gui.c:232 msgid "" +"It is not recommended to bind the primary mouse buttons without " +"modificators.\n" "\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." -msgstr "" - -#: src/modplug/gui/main.cxx:55 -msgid "About Modplug" -msgstr "" - -#: src/modplug/gui/support.cxx:90 src/modplug/gui/support.cxx:114 -#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 -#, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "" - -#: src/mtp_up/mtp.c:35 -msgid "Upload selected track(s)" -msgstr "" - -#: src/mtp_up/mtp.c:291 -msgid "Upload in progress..." -msgstr "" - -#: src/mtp_up/mtp.c:300 -msgid "MTP device handler" +"Do you want to continue?" msgstr "" -#: src/mtp_up/mtp.c:304 -msgid "Disconnect the device" +#: src/hotkey/gui.c:234 +msgid "Binding mouse buttons" msgstr "" -#: src/null/null.c:63 -msgid "Null output plugin " +#: src/hotkey/gui.c:384 +msgid "Global Hotkey Plugin Configuration" msgstr "" -#: src/null/null.c:64 +#: src/hotkey/gui.c:400 msgid "" -" by Christian Birchinger \n" -"based on the XMMS plugin by HÃ¥vard KvÃ¥l " -msgstr "" - -#: src/null/null.c:67 -msgid "About Null Output" -msgstr "" - -#: src/null/null.c:93 -msgid "Null output preferences" -msgstr "" - -#: src/null/null.c:102 -msgid "Run in real time" -msgstr "" - -#: src/oss4/configure.c:89 -msgid "1. Default device" -msgstr "" - -#: src/oss4/configure.c:151 -msgid "OSS4 Output Plugin Preferences" -msgstr "" - -#: src/oss4/configure.c:163 src/OSS/configure.c:213 src/sun/configure.c:181 -msgid "Audio device:" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." msgstr "" -#: src/oss4/configure.c:189 src/OSS/configure.c:235 src/OSS/configure.c:276 -msgid "Use alternate device:" +#: src/hotkey/gui.c:405 +msgid "Hotkeys:" msgstr "" -#: src/oss4/configure.c:202 -msgid "Save volume between sessions" +#: src/hotkey/gui.c:424 +msgid "Action:" msgstr "" -#: src/oss4/configure.c:206 -msgid "Enable format conversions made by the OSS software." +#: src/hotkey/gui.c:432 +msgid "Key Binding:" msgstr "" -#: src/oss4/plugin.c:54 -msgid "About OSS4 Plugin" +#: src/hotkey/gui.c:663 +msgid "About Global Hotkey Plugin" msgstr "" -#: src/oss4/plugin.c:55 +#: src/hotkey/gui.c:664 msgid "" -"OSS4 Output Plugin for Audacious\n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"I would like to thank people on #audacious, especially Tony Vroon and John " -"Lindgren and of course the authors of the previous OSS plugin.\n" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" "\n" -"This program is free software: you can redistribute it and/or modify it " -"under the terms of the GNU General Public License as published by the Free " -"Software Foundation, either version 3 of the License, or (at your option) " -"any later version.\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" "\n" -"This program 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 General Public License for " -"more details.\n" +"Contributers include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä \n" +"\t\t\tBryn Davies \n" +"\t\t\tJonathan A. Davis \n" +"\t\t\tJeremy Tan \n" "\n" -"You should have received a copy of the GNU General Public License along with " -"this program. If not, see .\n" -msgstr "" - -#: src/oss4/utils.c:204 -msgid "OSS4 error" -msgstr "" - -#: src/OSS/configure.c:148 -#, c-format -msgid "Default (%s)" -msgstr "" - -#: src/OSS/configure.c:197 -msgid "OSS Driver configuration" -msgstr "" - -#: src/OSS/configure.c:298 src/sun/configure.c:246 -msgid "Devices" -msgstr "" - -#: src/OSS/configure.c:300 src/sun/configure.c:257 -msgid "Buffering:" msgstr "" -#: src/OSS/configure.c:313 src/sun/configure.c:288 -msgid "Pre-buffer (percent):" +#: src/jack/configure.c:66 +msgid "Connect to all available jack ports" msgstr "" -#: src/OSS/configure.c:324 src/sun/configure.c:302 -msgid "Buffering" +#: src/jack/configure.c:73 +msgid "Connect only the output ports" msgstr "" -#: src/OSS/configure.c:325 -msgid "Mixer Settings:" +#: src/jack/configure.c:80 +msgid "Connect to no ports" msgstr "" -#: src/OSS/configure.c:331 -msgid "Volume controls Master not PCM" +#: src/jack/configure.c:98 +msgid "jack Plugin configuration" msgstr "" -#: src/OSS/configure.c:337 src/sun/configure.c:392 -msgid "Mixer" +#: src/jack/configure.c:116 +msgid "Connection mode:" msgstr "" -#: src/OSS/OSS.c:40 -msgid "About OSS Driver" +#: src/jack/configure.c:128 +msgid "Enable debug printing" msgstr "" -#: src/OSS/OSS.c:41 +#: src/jack/jack.c:435 msgid "" -"Audacious OSS Driver\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" +"XMMS jack Driver 0.17\n" "\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" "\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." +"Audacious port by\n" +"Giacomo Lozito from develia.org" msgstr "" -#: src/pulse_audio/pulse_audio.c:691 -msgid "About Audacious PulseAudio Output Plugin" +#: src/jack/jack.c:440 +msgid "About JACK Output Plugin 0.17" msgstr "" -#: src/pulse_audio/pulse_audio.c:692 -msgid "" -"Audacious PulseAudio Output Plugin\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." +#: src/ladspa/plugin.c:415 +msgid "About LADSPA Host" msgstr "" -#: src/resample/plugin.c:78 -msgid "About Sample Rate Converter Plugin" +#: src/ladspa/plugin.c:516 +#, c-format +msgid "%s Settings" msgstr "" -#: src/resample/plugin.c:134 -msgid "Sample Rate Converter Preferences" +#: src/ladspa/plugin.c:584 +msgid "LADSPA Host Settings" msgstr "" -#: src/resample/plugin.c:146 -msgid "Rate mappings:" +#: src/ladspa/plugin.c:593 +msgid "Module paths:" msgstr "" -#: src/resample/plugin.c:169 -msgid "All others:" +#: src/ladspa/plugin.c:598 +msgid "" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." msgstr "" -#: src/resample/plugin.c:181 -msgid "Method:" +#: src/ladspa/plugin.c:614 +msgid "Available plugins:" msgstr "" -#: src/scrobbler/configure.c:152 src/scrobbler/configure.c:228 -msgid "Change password" +#: src/ladspa/plugin.c:626 +msgid "Enable" msgstr "" -#: src/scrobbler/configure.c:174 -msgid "Services" +#: src/ladspa/plugin.c:632 +msgid "Enabled plugins:" msgstr "" -#: src/scrobbler/configure.c:196 -msgid "Username:" +#: src/ladspa/plugin.c:647 +msgid "Settings" msgstr "" -#: src/scrobbler/configure.c:202 -msgid "Password:" +#: src/lyricwiki/lyricwiki.c:267 +msgid "" +"\n" +"Looking for lyrics..." msgstr "" -#: src/scrobbler/configure.c:210 -msgid "Scrobbler URL:" +#: src/lyricwiki/lyricwiki.c:304 +msgid "" +"\n" +"Connecting to lyrics.wikia.com..." msgstr "" -#: src/scrobbler/configure.c:242 -msgid "Last.FM" +#: src/lyricwiki/lyricwiki.c:377 +msgid "" +"\n" +"No lyrics were found." msgstr "" -#: src/scrobbler/configure.c:287 -msgid "Scrobbler" +#: src/metronom/metronom.c:86 +msgid "About Metronom" msgstr "" -#: src/scrobbler/plugin.c:213 +#: src/metronom/metronom.c:87 msgid "" -"Audacious AudioScrobbler Plugin\n" +"A Tact Generator by Martin Strauss \n" "\n" -"Originally created by Audun Hove and Pipian \n" -msgstr "" - -#: src/scrobbler/plugin.c:215 -msgid "About Scrobbler Plugin" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" msgstr "" -#: src/sid/xs_about.c:84 +#: src/metronom/metronom.c:144 #, c-format -msgid "About %s" -msgstr "" - -#: src/sid/xs_config.c:322 -msgid " Error" -msgstr "" - -#: src/sid/xs_fileinfo.c:151 -msgid "General info" +msgid "Tact generator: %d bpm" msgstr "" -#: src/sid/xs_fileinfo.c:164 +#: src/metronom/metronom.c:146 #, c-format -msgid "Tune #%i: " -msgstr "" - -#: src/sid/xs_interface.c:234 -msgid "Audacious-SID configuration" -msgstr "" - -#: src/sid/xs_interface.c:270 -msgid "8-bit" -msgstr "" - -#: src/sid/xs_interface.c:277 -msgid "16-bit" -msgstr "" - -#: src/sid/xs_interface.c:284 -msgid "Resolution:" -msgstr "" - -#: src/sid/xs_interface.c:315 -msgid "Autopanning" -msgstr "" - -#: src/sid/xs_interface.c:322 -msgid "Channels:" -msgstr "" - -#: src/sid/xs_interface.c:366 -msgid "Samplerate:" -msgstr "" - -#: src/sid/xs_interface.c:383 -msgid "Use oversampling" -msgstr "" - -#: src/sid/xs_interface.c:394 -msgid "Factor:" -msgstr "" - -#: src/sid/xs_interface.c:406 -msgid "Large factors require more CPU-power" -msgstr "" - -#: src/sid/xs_interface.c:412 -msgid "Oversampling:" +msgid "Tact generator: %d bpm %d/%d" msgstr "" -#: src/sid/xs_interface.c:417 -msgid "Audio" +#: src/mixer/plugin.c:64 +msgid "About Channel Mixer" msgstr "" -#: src/sid/xs_interface.c:445 -msgid "Force speed" +#: src/mixer/plugin.c:93 +msgid "Channel Mixer Settings" msgstr "" -#: src/sid/xs_interface.c:449 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"clock speed/frequency. Otherwise the speed is determined from played file " -"itself." +#: src/mixer/plugin.c:102 +msgid "Output channels:" msgstr "" -#: src/sid/xs_interface.c:451 -msgid "PAL (50 Hz)" +#: src/mixer/plugin.c:112 +msgid "Changes take effect at the next song change." msgstr "" -#: src/sid/xs_interface.c:455 -msgid "" -"PAL is the european TV standard, which uses 50Hz vertical refresh frequency. " -"Most of SID-tunes have been made for PAL computers." +#: src/mpg123/mpg123.c:191 +msgid "Surround" msgstr "" -#: src/sid/xs_interface.c:459 -msgid "NTSC (60 Hz)" +#: src/mtp_up/mtp.c:340 +msgid "Upload in progress..." msgstr "" -#: src/sid/xs_interface.c:463 -msgid "" -"NTSC is the TV standard with 60Hz vertical refresh rate (and other features " -"that differ from PAL). It is mainly used in United States, Japan and certain " -"other countries." +#: src/mtp_up/mtp.c:352 +msgid "Upload to MTP Device" msgstr "" -#: src/sid/xs_interface.c:467 -msgid "Clock speed:" +#: src/mtp_up/mtp.c:353 +msgid "Disconnect MTP Device" msgstr "" -#: src/sid/xs_interface.c:484 -msgid "Force model" +#: src/notify/libnotify-aosd_event.c:48 +msgid "Stopped" msgstr "" -#: src/sid/xs_interface.c:488 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"SID-chip model. Otherwise the preferred SID model is determined from the " -"file (if PSIDv2NG type) or if not available, this setting is used." +#: src/notify/libnotify-aosd_event.c:48 +msgid "Audacious is not playing." msgstr "" -#: src/sid/xs_interface.c:490 -msgid "MOS 6581" +#: src/null/null.c:64 +msgid "Null output plugin " msgstr "" -#: src/sid/xs_interface.c:494 +#: src/null/null.c:65 msgid "" -"MOS/CSG 6581 is the earlier major version of SID chip. It differs from 8580 " -"in few ways, having much fuller filter (which, due to design error, is never " -"same between two different SID-chips) and has the \"volume adjustment bug\", " -"which enables playing of digital samples." -msgstr "" - -#: src/sid/xs_interface.c:498 -msgid "MOS 8580" -msgstr "" - -#: src/sid/xs_interface.c:505 -msgid "SID model:" -msgstr "" - -#: src/sid/xs_interface.c:522 -msgid "SIDPlay 1 (frame-based)" +" by Christian Birchinger \n" +"based on the XMMS plugin by HÃ¥vard KvÃ¥l " msgstr "" -#: src/sid/xs_interface.c:526 -msgid "" -"Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most " -"cases, though." +#: src/null/null.c:68 +msgid "About Null Output" msgstr "" -#: src/sid/xs_interface.c:530 -msgid "SIDPlay 2 (cycle-based)" +#: src/null/null.c:89 +msgid "Null output preferences" msgstr "" -#: src/sid/xs_interface.c:534 -msgid "" -"Use libSIDPlay 2.x emulation, which requires powerful CPU due to more exact " -"emulation." +#: src/null/null.c:100 +msgid "Run in real time" msgstr "" -#: src/sid/xs_interface.c:538 -msgid "Emulation library selection:" +#: src/oss4/configure.c:81 +msgid "1. Default device" msgstr "" -#: src/sid/xs_interface.c:555 -msgid "Real C64 (SIDPlay 2 only)" +#: src/oss4/configure.c:138 +msgid "OSS4 Output Plugin Preferences" msgstr "" -#: src/sid/xs_interface.c:562 -msgid "Bank switching" +#: src/oss4/configure.c:150 src/OSS/configure.c:194 +msgid "Audio device:" msgstr "" -#: src/sid/xs_interface.c:569 -msgid "Transparent ROM" +#: src/oss4/configure.c:178 src/OSS/configure.c:217 src/OSS/configure.c:260 +msgid "Use alternate device:" msgstr "" -#: src/sid/xs_interface.c:576 -msgid "PlaySID environment" +#: src/oss4/configure.c:193 +msgid "Save volume between sessions" msgstr "" -#: src/sid/xs_interface.c:583 -msgid "Memory mode:" +#: src/oss4/configure.c:197 +msgid "Enable format conversions made by the OSS software." msgstr "" -#: src/sid/xs_interface.c:588 -msgid "Emu#1" +#: src/oss4/configure.c:201 +msgid "Enable exclusive mode to prevent virtual mixing." msgstr "" -#: src/sid/xs_interface.c:611 -msgid "Optimization mode (faster, inaccurate)" +#: src/oss4/plugin.c:51 +msgid "About OSS4 Plugin" msgstr "" -#: src/sid/xs_interface.c:615 -msgid "" -"This setting can be used to enable libSIDPlay2's \"optimization mode\", " -"which in downgrades the emulation from cycle-exact to something similar to " -"frame-exact. The result is lower CPU usage, but worse accuracy." +#: src/oss4/utils.c:211 +msgid "OSS4 error" msgstr "" -#: src/sid/xs_interface.c:617 -msgid "reSID-emulation" +#: src/OSS/configure.c:137 +#, c-format +msgid "Default (%s)" msgstr "" -#: src/sid/xs_interface.c:621 -msgid "" -"reSID is the software SID-chip simulator based on SID reverse-engineering, " -"created by Dag Lem. It is probably the closest thing to real SID available " -"as software-only emulation." +#: src/OSS/configure.c:178 +msgid "OSS Driver configuration" msgstr "" -#: src/sid/xs_interface.c:625 -msgid "HardSID" +#: src/OSS/configure.c:281 +msgid "Devices" msgstr "" -#: src/sid/xs_interface.c:629 -msgid "" -"HardSID is a EISA/PCI card for PC-compatibles, which can be fitted with a " -"real SID-chip. Software can be used to control the HardSID and combined with " -"software emulation of rest of C64 via libSIDPlay2 HardSID can be used to " -"achieve \"near 100%\" similarity to real C64. For more information, see " -"http://www.hardsid.com/" +#: src/OSS/configure.c:283 +msgid "Buffering:" msgstr "" -#: src/sid/xs_interface.c:633 -msgid "SIDPlay 2 options:" +#: src/OSS/configure.c:296 +msgid "Pre-buffer (percent):" msgstr "" -#: src/sid/xs_interface.c:650 -msgid "Fast (nearest neighbour)" +#: src/OSS/configure.c:307 +msgid "Buffering" msgstr "" -#: src/sid/xs_interface.c:654 -msgid "" -"Fastest and also worst sounding sampling method, simply picks nearest " -"neighbouring sample." +#: src/OSS/configure.c:308 +msgid "Mixer Settings:" msgstr "" -#: src/sid/xs_interface.c:658 -msgid "Linear interpolation" +#: src/OSS/configure.c:314 +msgid "Volume controls Master not PCM" msgstr "" -#: src/sid/xs_interface.c:662 -msgid "" -"Uses linear interpolation between samples, yielding higher audio quality " -"with less sampling noise." +#: src/OSS/configure.c:320 +msgid "Mixer" msgstr "" -#: src/sid/xs_interface.c:673 -msgid "Resampling (FIR)" +#: src/OSS/OSS.c:41 +msgid "About OSS Driver" msgstr "" -#: src/sid/xs_interface.c:680 -msgid "reSID sampling options:" +#: src/pulse_audio/pulse_audio.c:669 +msgid "About Audacious PulseAudio Output Plugin" msgstr "" -#: src/sid/xs_interface.c:685 -msgid "Emu#2" +#: src/resample/plugin.c:89 +msgid "About Sample Rate Converter Plugin" msgstr "" -#: src/sid/xs_interface.c:697 -msgid "Emulate filters" +#: src/resample/plugin.c:144 +msgid "Sample Rate Converter Preferences" msgstr "" -#: src/sid/xs_interface.c:701 -msgid "" -"This option enables emulation of SID filter. The filter is an essential part " -"of SID's sound capacity, but accurate emulation of it may require quite much " -"CPU power. However, if filter emulation is disabled, tunes won't sound " -"authentic at all if they utilize the filter." +#: src/resample/plugin.c:156 +msgid "Rate mappings:" msgstr "" -#: src/sid/xs_interface.c:726 -msgid "FS" +#: src/resample/plugin.c:179 +msgid "All others:" msgstr "" -#: src/sid/xs_interface.c:743 -msgid "FM" +#: src/resample/plugin.c:191 +msgid "Method:" msgstr "" -#: src/sid/xs_interface.c:760 -msgid "FT" +#: src/scrobbler/configure.c:123 src/scrobbler/configure.c:198 +msgid "Change password" msgstr "" -#: src/sid/xs_interface.c:771 -msgid "Reset values" +#: src/scrobbler/configure.c:144 +msgid "Services" msgstr "" -#: src/sid/xs_interface.c:776 -msgid "SIDPlay1" +#: src/scrobbler/configure.c:166 +msgid "Username:" msgstr "" -#: src/sid/xs_interface.c:817 -msgid "Export" +#: src/scrobbler/configure.c:172 +msgid "Password:" msgstr "" -#: src/sid/xs_interface.c:825 -msgid "Use" +#: src/scrobbler/configure.c:180 +msgid "Scrobbler URL:" msgstr "" -#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:430 -msgid "Save" +#: src/scrobbler/configure.c:212 +msgid "Last.FM" msgstr "" -#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:429 -msgid "Import" +#: src/scrobbler/configure.c:239 +msgid "Scrobbler" msgstr "" -#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:431 -msgid "Delete" +#: src/scrobbler/plugin.c:194 +msgid "" +"Audacious AudioScrobbler Plugin\n" +"\n" +"Originally created by Audun Hove and Pipian \n" msgstr "" -#: src/sid/xs_interface.c:863 -msgid "Filter curve:" +#: src/scrobbler/plugin.c:196 +msgid "About Scrobbler Plugin" msgstr "" -#: src/sid/xs_interface.c:868 -msgid "SIDPlay2" +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" msgstr "" -#: src/sid/xs_interface.c:874 -msgid "Filters" +#: src/sdlout/plugin.c:78 +msgid "SDL error" msgstr "" -#: src/sid/xs_interface.c:897 -msgid "Play at least for specified time" +#: src/search-tool/search-tool.c:42 +msgid "Genre" msgstr "" -#: src/sid/xs_interface.c:901 -msgid "" -"If enabled, the tune is played at least for the specified time, adding " -"silence to the end if necessary." +#: src/search-tool/search-tool.c:96 src/search-tool/search-tool.c:106 +msgid "Library" msgstr "" -#: src/sid/xs_interface.c:908 src/sid/xs_interface.c:962 -#: src/sid/xs_interface.c:1142 -msgid "Playtime:" +#: src/search-tool/search-tool.c:591 +msgid "_Create Playlist" msgstr "" -#: src/sid/xs_interface.c:928 -msgid "Minimum playtime:" +#: src/search-tool/search-tool.c:598 +msgid "_Add to Playlist" msgstr "" -#: src/sid/xs_interface.c:945 -msgid "Play for specified time maximum" +#: src/search-tool/search-tool.c:641 +msgid "Search library" msgstr "" -#: src/sid/xs_interface.c:949 +#: src/search-tool/search-tool.c:645 msgid "" -"If enabled, tune is played until specified duration is reached (aka maximum " -"playtime)." +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." msgstr "" -#: src/sid/xs_interface.c:951 -msgid "Only when song length is unknown" +#: src/search-tool/search-tool.c:653 +msgid "Please wait ..." msgstr "" -#: src/sid/xs_interface.c:955 -msgid "" -"If enabled, the maximum playtime is applied only if song/tune length is not " -"known." +#: src/search-tool/search-tool.c:675 +msgid "Choose Folder" msgstr "" -#: src/sid/xs_interface.c:982 -msgid "Maximum playtime:" +#: src/skins/plugin.c:167 +msgid "About Skinned GUI" msgstr "" -#: src/sid/xs_interface.c:999 -msgid "Use XSIDPLAY-compatible database" +#: src/skins/plugin.c:168 +msgid "" +"Copyright (c) 2008, by Tomasz MoÅ„ \n" +"\n" msgstr "" -#: src/sid/xs_interface.c:1003 -msgid "" -"This option enables using of XSIDPLAY compatible song length database. " -"(Refer to Audacious-SID documentation for more information)" +#: src/skins/skins_cfg.c:207 +msgid "_Player:" msgstr "" -#: src/sid/xs_interface.c:1010 -msgid "DB-file:" +#: src/skins/skins_cfg.c:208 +msgid "Select main player window font:" msgstr "" -#: src/sid/xs_interface.c:1020 -msgid "Database path and filename" +#: src/skins/skins_cfg.c:210 +msgid "_Playlist:" msgstr "" -#: src/sid/xs_interface.c:1027 -msgid "Browse for song length-database file" +#: src/skins/skins_cfg.c:211 +msgid "Select playlist font:" msgstr "" -#: src/sid/xs_interface.c:1049 -msgid "Song length database:" +#: src/skins/skins_cfg.c:215 +msgid "_Fonts" msgstr "" -#: src/sid/xs_interface.c:1054 -msgid "Songlength" +#: src/skins/skins_cfg.c:218 +msgid "Use bitmap fonts (supports ASCII only)" msgstr "" -#: src/sid/xs_interface.c:1072 -msgid "Override generic Tuplez format string" +#: src/skins/skins_cfg.c:220 +msgid "Scroll song title in both directions" msgstr "" -#: src/sid/xs_interface.c:1076 -msgid "" -"By enabling this option you can specify a custom Tuplez formatting string " -"for SID-files. The SID-plugin specific Tuplez tags are described shortly " -"below." +#: src/skins/skins_cfg.c:298 +msgid "_Skin" msgstr "" -#: src/sid/xs_interface.c:1087 -msgid "Tuplez format string for SID-files" +#: src/skins/skins_cfg.c:345 +msgid "Interface Preferences" msgstr "" -#: src/sid/xs_interface.c:1090 -msgid "" -"SID-specific Tuplez fields:\n" -"\n" -"sid-format\t\t- Specific fileformat\n" -"sid-model\t\t- 6581 or 8580\n" -"sid-speed\t\t- Timing or speed: PAL/NTSC/etc.\n" -"\n" -"Other \"special\" fields set:\n" -"\n" -"subsong-num, subsong-id" +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" msgstr "" -#: src/sid/xs_interface.c:1098 -msgid "Song title format:" +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" msgstr "" -#: src/sid/xs_interface.c:1103 -msgid "Title" +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" msgstr "" -#: src/sid/xs_interface.c:1125 -msgid "Add sub-tunes to playlist" +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" msgstr "" -#: src/sid/xs_interface.c:1129 -msgid "" -"If enabled, sub-tunes of each file will be added to playlist. If disabled, " -"only the default sub-tune will be added." +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" msgstr "" -#: src/sid/xs_interface.c:1131 -msgid "Only tunes with specified minimum duration" +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" msgstr "" -#: src/sid/xs_interface.c:1135 -msgid "Only add sub-tunes that have a duration of at least specified time." +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" msgstr "" -#: src/sid/xs_interface.c:1162 -msgid "Sub-tune handling:" +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" msgstr "" -#: src/sid/xs_interface.c:1179 -msgid "Use STIL database" +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" msgstr "" -#: src/sid/xs_interface.c:1183 -msgid "" -"If this option is enabled (and the database & HVSC settings below are " -"correctly set), Audacious-SID will use and display additional information " -"from STIL database when HVSC SIDs are played." +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" msgstr "" -#: src/sid/xs_interface.c:1190 -msgid "STIL file:" +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" msgstr "" -#: src/sid/xs_interface.c:1206 -msgid "" -"Path and filename of STIL database file (STIL.txt), usually found from " -"HVSC's DOCUMENTS-subdirectory." +#: src/skins/ui_equalizer.c:379 +msgid "Audacious Equalizer" msgstr "" -#: src/sid/xs_interface.c:1219 -msgid "Browse for STIL-database file" +#: src/skins/ui_equalizer.c:887 +msgid "Presets" msgstr "" -#: src/sid/xs_interface.c:1246 -msgid "HVSC path:" +#: src/skins/ui_equalizer.c:968 src/skins/ui_manager.c:442 +msgid "Load preset" msgstr "" -#: src/sid/xs_interface.c:1262 -msgid "" -"Path to base-directory of your High Voltage SID Collection (HVSC), for " -"example /media/C64Music/" +#: src/skins/ui_equalizer.c:985 +msgid "Load auto-preset" msgstr "" -#: src/sid/xs_interface.c:1275 -msgid "Browse for HVSC path" +#: src/skins/ui_equalizer.c:1015 src/skins/ui_equalizer.c:1033 +#: src/skins/ui_equalizer.c:1049 +msgid "Load equalizer preset" msgstr "" -#: src/sid/xs_interface.c:1297 -msgid "SID Tune Information List (STIL) database:" +#: src/skins/ui_equalizer.c:1068 src/skins/ui_manager.c:463 +msgid "Save preset" msgstr "" -#: src/sid/xs_interface.c:1321 -msgid "Cancel any changes" +#: src/skins/ui_equalizer.c:1084 +msgid "Save auto-preset" msgstr "" -#: src/sid/xs_interface.c:1328 -msgid "Accept and update changes" +#: src/skins/ui_equalizer.c:1114 src/skins/ui_equalizer.c:1150 +msgid "Save equalizer preset" msgstr "" -#: src/sid/xs_interface.c:1628 -msgid "Audacious-SID Fileinfo" +#: src/skins/ui_equalizer.c:1169 src/skins/ui_manager.c:478 +msgid "Delete preset" msgstr "" -#: src/sid/xs_interface.c:1649 -msgid "Filename:" +#: src/skins/ui_equalizer.c:1186 +msgid "Delete auto-preset" msgstr "" -#: src/sid/xs_interface.c:1657 -msgid "Songname:" +#: src/skins/ui_main.c:444 +msgid "kbps" msgstr "" -#: src/sid/xs_interface.c:1665 -msgid "Composer:" +#: src/skins/ui_main.c:452 +msgid "kHz" msgstr "" -#: src/sid/xs_interface.c:1673 -msgid "Copyright:" +#: src/skins/ui_main.c:459 +msgid "surround" msgstr "" -#: src/sid/xs_interface.c:1717 -msgid "Song Information:" +#: src/skins/ui_main.c:807 +#, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "" -#: src/sid/xs_interface.c:1752 -msgid "Author:" +#: src/skins/ui_main.c:828 +#, c-format +msgid "Volume: %d%%" msgstr "" -#: src/sid/xs_interface.c:1786 -msgid "Duration:" +#: src/skins/ui_main.c:851 +#, c-format +msgid "Balance: %d%% left" msgstr "" -#: src/sid/xs_interface.c:1820 -msgid "Sub-tune Information:" +#: src/skins/ui_main.c:853 +msgid "Balance: center" msgstr "" -#: src/sid/xs_interface.c:1881 -msgid "Select HVSC song length database" +#: src/skins/ui_main.c:855 +#, c-format +msgid "Balance: %d%% right" msgstr "" -#: src/sid/xs_interface.c:1922 -msgid "Select STIL-database" +#: src/skins/ui_main.c:981 +msgid "Options Menu" msgstr "" -#: src/sid/xs_interface.c:1963 -msgid "Select HVSC location prefix" +#: src/skins/ui_main.c:985 +msgid "Disable 'Always On Top'" msgstr "" -#: src/sid/xs_interface.c:2004 -msgid "Select SIDPlay2 filters file for importing" +#: src/skins/ui_main.c:987 +msgid "Enable 'Always On Top'" msgstr "" -#: src/sid/xs_interface.c:2045 -msgid "Select SIDPlay2 filters file for exporting" +#: src/skins/ui_main.c:990 +msgid "File Info Box" msgstr "" -#: src/sid/xs_interface.c:2093 src/sid/xs_interface.c:2106 -msgid "Confirm selected action" +#: src/skins/ui_main.c:995 +msgid "Visualization Menu" msgstr "" -#: src/sid/xs_interface.c:2123 -msgid "Yes" +#: src/skins/ui_main.c:1653 +msgid "Single mode." msgstr "" -#: src/sid/xs_interface.c:2129 -msgid "No" +#: src/skins/ui_main.c:1655 +msgid "Playlist mode." msgstr "" -#: src/skins/plugin.c:179 -msgid "About Skinned GUI" +#: src/skins/ui_main.c:1677 +msgid "Stopping after song." msgstr "" -#: src/skins/plugin.c:180 -msgid "" -"Copyright (c) 2008, by Tomasz MoÅ„ \n" -"\n" +#: src/skins/ui_main.c:1679 +msgid "Not stopping after song." msgstr "" -#: src/skins/plugin.c:196 -msgid "Skinned Interface" +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 +msgid "Autoscroll Songname" msgstr "" -#: src/skins/skins_cfg.c:316 -msgid "_Player:" +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" msgstr "" -#: src/skins/skins_cfg.c:316 -msgid "Select main player window font:" +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 +msgid "Peaks" msgstr "" -#: src/skins/skins_cfg.c:317 -msgid "_Playlist:" +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" msgstr "" -#: src/skins/skins_cfg.c:317 -msgid "Select playlist font:" +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" msgstr "" -#: src/skins/skins_cfg.c:321 -msgid "_Fonts" +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" msgstr "" -#: src/skins/skins_cfg.c:323 -msgid "Use Bitmap fonts if available" +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 +msgid "Show Player" msgstr "" -#: src/skins/skins_cfg.c:323 -msgid "" -"Use bitmap fonts if they are available. Bitmap fonts do not support Unicode " -"strings." +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 +msgid "Show Playlist Editor" msgstr "" -#: src/skins/skins_cfg.c:324 -msgid "_Miscellaneous" +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 +msgid "Show Equalizer" msgstr "" -#: src/skins/skins_cfg.c:325 -msgid "Show separators in playlist" +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 +msgid "Always on Top" msgstr "" -#: src/skins/skins_cfg.c:327 -msgid "Show window manager decoration" +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 +msgid "Put on All Workspaces" msgstr "" -#: src/skins/skins_cfg.c:328 -msgid "This enables the window manager to show decorations for windows." +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 +msgid "Roll up Player" msgstr "" -#: src/skins/skins_cfg.c:329 -msgid "Use two-way text scroller" +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 +msgid "Roll up Playlist Editor" msgstr "" -#: src/skins/skins_cfg.c:330 -msgid "" -"If selected, the file information text in the main window will scroll back " -"and forth. If not selected, the text will only scroll in one direction." +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 +msgid "Roll up Equalizer" msgstr "" -#: src/skins/skins_cfg.c:331 -msgid "Disable inline gtk theme" +#: src/skins/ui_manager.c:115 +msgid "Analyzer" msgstr "" -#: src/skins/skins_cfg.c:333 -msgid "Random skin on play" +#: src/skins/ui_manager.c:116 +msgid "Scope" msgstr "" -#: src/skins/skins_cfg.c:334 -msgid "Allow loading incomplete skins" +#: src/skins/ui_manager.c:117 +msgid "Voiceprint" msgstr "" -#: src/skins/skins_cfg.c:335 -msgid "" -"If selected, audacious won't refuse loading broken skins. Use only if your " -"favourite skin doesn't work" +#: src/skins/ui_manager.c:118 +msgid "Off" msgstr "" -#: src/skins/skins_cfg.c:401 -msgid "Color Adjustment" +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 +msgid "Normal" msgstr "" -#: src/skins/skins_cfg.c:407 -msgid "" -"Audacious allows you to alter the color balance of the skinned UI. The " -"sliders below will allow you to do this." +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 +msgid "Fire" msgstr "" -#: src/skins/skins_cfg.c:417 -msgid "Blue" +#: src/skins/ui_manager.c:124 +msgid "Vertical Lines" msgstr "" -#: src/skins/skins_cfg.c:424 -msgid "Green" +#: src/skins/ui_manager.c:128 +msgid "Lines" msgstr "" -#: src/skins/skins_cfg.c:431 -msgid "Red" +#: src/skins/ui_manager.c:129 +msgid "Bars" msgstr "" -#: src/skins/skins_cfg.c:569 -msgid "_Skin" +#: src/skins/ui_manager.c:133 +msgid "Dot Scope" msgstr "" -#: src/skins/skins_cfg.c:574 -msgid "Color adjustment ..." +#: src/skins/ui_manager.c:134 +msgid "Line Scope" msgstr "" -#: src/skins/ui_equalizer.c:463 -msgid "Audacious Equalizer" +#: src/skins/ui_manager.c:135 +msgid "Solid Scope" msgstr "" -#: src/skins/ui_equalizer.c:991 -msgid "Presets" +#: src/skins/ui_manager.c:141 +msgid "Ice" msgstr "" -#: src/skins/ui_main.c:593 -msgid "kbps" +#: src/skins/ui_manager.c:146 +msgid "Smooth" msgstr "" -#: src/skins/ui_main.c:601 -msgid "kHz" +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 +msgid "Slowest" msgstr "" -#: src/skins/ui_main.c:608 -msgid "surround" +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 +msgid "Slow" msgstr "" -#: src/skins/ui_main.c:981 -msgid "Audacious - visibility warning" +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 +msgid "Medium" msgstr "" -#: src/skins/ui_main.c:984 -msgid "Show main player window" +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 +msgid "Fast" msgstr "" -#: src/skins/ui_main.c:985 -msgid "Ignore" +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 +msgid "Fastest" msgstr "" -#: src/skins/ui_main.c:991 -msgid "" -"Audacious has been started with all of its windows hidden.\n" -"You may want to show the player window again to control Audacious; " -"otherwise, you'll have to control it remotely via audtool or enabled plugins " -"(such as the statusicon plugin)." +#: src/skins/ui_manager.c:166 +msgid "Time Elapsed" msgstr "" -#: src/skins/ui_main.c:997 -msgid "Always ignore, show/hide is controlled remotely" +#: src/skins/ui_manager.c:167 +msgid "Time Remaining" msgstr "" -#: src/skins/ui_main.c:1042 -msgid "Audacious - broken GTK engine usage warning" +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" msgstr "" -#: src/skins/ui_main.c:1050 -#, c-format -msgid "" -"Broken GTK engine in use\n" -"\n" -"Audacious has detected that you are using a broken GTK engine.\n" -"\n" -"The theme engine you are using, %s, is incompatible with some of the " -"features used by modern skins. The incompatible features have been disabled " -"for this session.\n" -"\n" -"To use these features, please consider using a different GTK theme engine." +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" msgstr "" -#: src/skins/ui_main.c:1061 -msgid "Do not display this warning again" +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" msgstr "" -#: src/skins/ui_main.c:1269 -#, c-format -msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)" +#: src/skins/ui_manager.c:196 +msgid "Visualization" msgstr "" -#: src/skins/ui_main.c:1299 -#, c-format -msgid "Volume: %d%%" +#: src/skins/ui_manager.c:197 +msgid "Visualization Mode" msgstr "" -#: src/skins/ui_main.c:1322 -#, c-format -msgid "Balance: %d%% left" +#: src/skins/ui_manager.c:198 +msgid "Analyzer Mode" msgstr "" -#: src/skins/ui_main.c:1324 -msgid "Balance: center" +#: src/skins/ui_manager.c:199 +msgid "Scope Mode" msgstr "" -#: src/skins/ui_main.c:1326 -#, c-format -msgid "Balance: %d%% right" +#: src/skins/ui_manager.c:200 +msgid "Voiceprint Mode" msgstr "" -#: src/skins/ui_main.c:1618 -msgid "Options Menu" +#: src/skins/ui_manager.c:201 +msgid "WindowShade VU Mode" msgstr "" -#: src/skins/ui_main.c:1622 -msgid "Disable 'Always On Top'" +#: src/skins/ui_manager.c:202 +msgid "Analyzer Falloff" msgstr "" -#: src/skins/ui_main.c:1624 -msgid "Enable 'Always On Top'" +#: src/skins/ui_manager.c:203 +msgid "Peaks Falloff" msgstr "" -#: src/skins/ui_main.c:1627 -msgid "File Info Box" +#: src/skins/ui_manager.c:208 +msgid "Playlist" msgstr "" -#: src/skins/ui_main.c:1631 -msgid "Disable 'GUI Scaling'" +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" msgstr "" -#: src/skins/ui_main.c:1633 -msgid "Enable 'GUI Scaling'" +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 +msgid "Select Next Playlist" msgstr "" -#: src/skins/ui_main.c:1636 -msgid "Visualization Menu" +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 +msgid "Select Previous Playlist" msgstr "" -#: src/skins/ui_main.c:2348 -msgid "Single mode." +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" msgstr "" -#: src/skins/ui_main.c:2350 -msgid "Playlist mode." +#: src/skins/ui_manager.c:222 +msgid "Import Playlist" msgstr "" -#: src/skins/ui_main.c:2374 -msgid "Stopping after song." +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." msgstr "" -#: src/skins/ui_main.c:2376 -msgid "Not stopping after song." +#: src/skins/ui_manager.c:226 +msgid "Export Playlist" msgstr "" -#: src/skins/ui_manager.c:50 src/skins/ui_manager.c:51 -msgid "Autoscroll Songname" +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." msgstr "" -#: src/skins/ui_manager.c:56 src/skins/ui_manager.c:57 -msgid "Peaks" +#: src/skins/ui_manager.c:229 +msgid "Refresh List" msgstr "" -#: src/skins/ui_manager.c:68 src/skins/ui_manager.c:69 -msgid "Show Player" +#: src/skins/ui_manager.c:230 +msgid "Refreshes metadata associated with a playlist entry." msgstr "" -#: src/skins/ui_manager.c:71 src/skins/ui_manager.c:72 -msgid "Show Playlist Editor" +#: src/skins/ui_manager.c:233 +msgid "Playlist Manager" msgstr "" -#: src/skins/ui_manager.c:74 src/skins/ui_manager.c:75 -msgid "Show Equalizer" +#: src/skins/ui_manager.c:234 +msgid "Queue Manager" msgstr "" -#: src/skins/ui_manager.c:77 src/skins/ui_manager.c:78 -msgid "Always on Top" +#: src/skins/ui_manager.c:237 +msgid "View" msgstr "" -#: src/skins/ui_manager.c:80 src/skins/ui_manager.c:81 -msgid "Put on All Workspaces" +#: src/skins/ui_manager.c:238 +msgid "Interface" msgstr "" -#: src/skins/ui_manager.c:83 src/skins/ui_manager.c:84 -msgid "Roll up Player" +#: src/skins/ui_manager.c:239 +msgid "Interface Preferences ..." msgstr "" -#: src/skins/ui_manager.c:86 src/skins/ui_manager.c:87 -msgid "Roll up Playlist Editor" +#: src/skins/ui_manager.c:243 +msgid "Add Internet Address..." msgstr "" -#: src/skins/ui_manager.c:89 src/skins/ui_manager.c:90 -msgid "Roll up Equalizer" +#: src/skins/ui_manager.c:244 +msgid "Adds a remote track to the playlist." msgstr "" -#: src/skins/ui_manager.c:92 src/sndstretch/sndstretch_xmms.c:393 -msgid "Scale" +#: src/skins/ui_manager.c:247 +msgid "Add Files..." msgstr "" -#: src/skins/ui_manager.c:93 -msgid "DoubleSize" +#: src/skins/ui_manager.c:248 +msgid "Adds files to the playlist." msgstr "" -#: src/skins/ui_manager.c:95 src/skins/ui_manager.c:96 -msgid "Easy Move" +#: src/skins/ui_manager.c:253 +msgid "Search and Select" msgstr "" -#: src/skins/ui_manager.c:104 -msgid "Analyzer" +#: src/skins/ui_manager.c:254 +msgid "" +"Searches the playlist and selects playlist entries based on specific " +"criteria." msgstr "" -#: src/skins/ui_manager.c:105 -msgid "Scope" +#: src/skins/ui_manager.c:257 +msgid "Invert Selection" msgstr "" -#: src/skins/ui_manager.c:106 -msgid "Voiceprint" +#: src/skins/ui_manager.c:258 +msgid "Inverts the selected and unselected entries." msgstr "" -#: src/skins/ui_manager.c:107 -msgid "Off" +#: src/skins/ui_manager.c:261 +msgid "Select All" msgstr "" -#: src/skins/ui_manager.c:111 src/skins/ui_manager.c:128 -#: src/skins/ui_manager.c:134 -msgid "Normal" +#: src/skins/ui_manager.c:262 +msgid "Selects all of the playlist entries." msgstr "" -#: src/skins/ui_manager.c:112 src/skins/ui_manager.c:129 -msgid "Fire" +#: src/skins/ui_manager.c:265 +msgid "Select None" msgstr "" -#: src/skins/ui_manager.c:113 -msgid "Vertical Lines" +#: src/skins/ui_manager.c:266 +msgid "Deselects all of the playlist entries." msgstr "" -#: src/skins/ui_manager.c:117 -msgid "Lines" +#: src/skins/ui_manager.c:271 +msgid "Remove All" msgstr "" -#: src/skins/ui_manager.c:118 -msgid "Bars" +#: src/skins/ui_manager.c:272 +msgid "Removes all entries from the playlist." msgstr "" -#: src/skins/ui_manager.c:122 -msgid "Dot Scope" +#: src/skins/ui_manager.c:275 +msgid "Clear Queue" msgstr "" -#: src/skins/ui_manager.c:123 -msgid "Line Scope" +#: src/skins/ui_manager.c:276 +msgid "Clears the queue associated with this playlist." msgstr "" -#: src/skins/ui_manager.c:124 -msgid "Solid Scope" +#: src/skins/ui_manager.c:279 +msgid "Remove Unavailable Files" msgstr "" -#: src/skins/ui_manager.c:130 -msgid "Ice" +#: src/skins/ui_manager.c:280 +msgid "Removes unavailable files from the playlist." msgstr "" -#: src/skins/ui_manager.c:135 -msgid "Smooth" +#: src/skins/ui_manager.c:283 +msgid "Remove Duplicates" msgstr "" -#: src/skins/ui_manager.c:139 src/skins/ui_manager.c:147 -msgid "Slowest" +#: src/skins/ui_manager.c:285 src/skins/ui_manager.c:317 +#: src/skins/ui_manager.c:347 +msgid "By Title" msgstr "" -#: src/skins/ui_manager.c:140 src/skins/ui_manager.c:148 -msgid "Slow" +#: src/skins/ui_manager.c:286 +msgid "Removes duplicate entries from the playlist by title." msgstr "" -#: src/skins/ui_manager.c:141 src/skins/ui_manager.c:149 -msgid "Medium" +#: src/skins/ui_manager.c:289 src/skins/ui_manager.c:329 +#: src/skins/ui_manager.c:359 +msgid "By Filename" msgstr "" -#: src/skins/ui_manager.c:142 src/skins/ui_manager.c:150 -msgid "Fast" +#: src/skins/ui_manager.c:290 +msgid "Removes duplicate entries from the playlist by filename." msgstr "" -#: src/skins/ui_manager.c:143 src/skins/ui_manager.c:151 -msgid "Fastest" +#: src/skins/ui_manager.c:293 src/skins/ui_manager.c:333 +#: src/skins/ui_manager.c:363 +msgid "By Path + Filename" msgstr "" -#: src/skins/ui_manager.c:155 -msgid "Time Elapsed" +#: src/skins/ui_manager.c:294 +msgid "Removes duplicate entries from the playlist by their full path." msgstr "" -#: src/skins/ui_manager.c:156 -msgid "Time Remaining" +#: src/skins/ui_manager.c:297 +msgid "Remove Unselected" msgstr "" -#: src/skins/ui_manager.c:185 -msgid "Visualization" +#: src/skins/ui_manager.c:298 +msgid "Remove unselected entries from the playlist." msgstr "" -#: src/skins/ui_manager.c:186 -msgid "Visualization Mode" +#: src/skins/ui_manager.c:301 +msgid "Remove Selected" msgstr "" -#: src/skins/ui_manager.c:187 -msgid "Analyzer Mode" +#: src/skins/ui_manager.c:302 +msgid "Remove selected entries from the playlist." msgstr "" -#: src/skins/ui_manager.c:188 -msgid "Scope Mode" +#: src/skins/ui_manager.c:307 +msgid "Randomize List" msgstr "" -#: src/skins/ui_manager.c:189 -msgid "Voiceprint Mode" +#: src/skins/ui_manager.c:308 +msgid "Randomizes the playlist." msgstr "" -#: src/skins/ui_manager.c:190 -msgid "WindowShade VU Mode" +#: src/skins/ui_manager.c:311 +msgid "Reverse List" msgstr "" -#: src/skins/ui_manager.c:191 -msgid "Analyzer Falloff" +#: src/skins/ui_manager.c:312 +msgid "Reverses the playlist." msgstr "" -#: src/skins/ui_manager.c:192 -msgid "Peaks Falloff" +#: src/skins/ui_manager.c:315 +msgid "Sort List" msgstr "" -#: src/skins/ui_manager.c:202 src/skins/ui_manager.c:203 -msgid "Select Next Playlist" +#: src/skins/ui_manager.c:318 src/skins/ui_manager.c:348 +msgid "Sorts the list by title." msgstr "" -#: src/skins/ui_manager.c:205 src/skins/ui_manager.c:206 -msgid "Select Previous Playlist" +#: src/skins/ui_manager.c:321 src/skins/ui_manager.c:351 +msgid "By Album" msgstr "" -#: src/skins/ui_manager.c:222 -msgid "Refresh List" +#: src/skins/ui_manager.c:322 src/skins/ui_manager.c:352 +msgid "Sorts the list by album." msgstr "" -#: src/skins/ui_manager.c:226 -msgid "List Manager" +#: src/skins/ui_manager.c:325 src/skins/ui_manager.c:355 +msgid "By Artist" msgstr "" -#: src/skins/ui_manager.c:236 -msgid "Add Internet Address..." +#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +msgid "Sorts the list by artist." msgstr "" -#: src/skins/ui_manager.c:240 -msgid "Add Files..." +#: src/skins/ui_manager.c:330 src/skins/ui_manager.c:360 +msgid "Sorts the list by filename." msgstr "" -#: src/skins/ui_manager.c:246 -msgid "Search and Select" +#: src/skins/ui_manager.c:334 src/skins/ui_manager.c:364 +msgid "Sorts the list by full pathname." msgstr "" -#: src/skins/ui_manager.c:247 -msgid "" -"Searches the playlist and selects playlist entries based on specific " -"criteria." +#: src/skins/ui_manager.c:337 src/skins/ui_manager.c:367 +msgid "By Date" msgstr "" -#: src/skins/ui_manager.c:250 -msgid "Invert Selection" +#: src/skins/ui_manager.c:338 src/skins/ui_manager.c:368 +msgid "Sorts the list by modification time." msgstr "" -#: src/skins/ui_manager.c:251 -msgid "Inverts the selected and unselected entries." +#: src/skins/ui_manager.c:341 src/skins/ui_manager.c:371 +msgid "By Track Number" msgstr "" -#: src/skins/ui_manager.c:268 -msgid "Clear Queue" +#: src/skins/ui_manager.c:342 src/skins/ui_manager.c:372 +msgid "Sorts the list by track number." msgstr "" -#: src/skins/ui_manager.c:269 -msgid "Clears the queue associated with this playlist." +#: src/skins/ui_manager.c:345 +msgid "Sort Selected" msgstr "" -#: src/skins/ui_manager.c:272 -msgid "Remove Unavailable Files" +#: src/skins/ui_manager.c:381 +msgid "File" msgstr "" -#: src/skins/ui_manager.c:273 -msgid "Removes unavailable files from the playlist." +#: src/skins/ui_manager.c:384 +msgid "Plugin Services" msgstr "" -#: src/skins/ui_manager.c:276 -msgid "Remove Duplicates" +#: src/skins/ui_manager.c:386 src/skins/ui_manager.c:389 +msgid "View Track Details" msgstr "" -#: src/skins/ui_manager.c:279 -msgid "Removes duplicate entries from the playlist by title." +#: src/skins/ui_manager.c:387 src/skins/ui_manager.c:390 +msgid "View track details" msgstr "" -#: src/skins/ui_manager.c:282 src/skins/ui_manager.c:318 -#: src/skins/ui_manager.c:348 -msgid "By Filename" +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:393 +msgid "About Audacious" msgstr "" -#: src/skins/ui_manager.c:283 -msgid "Removes duplicate entries from the playlist by filename." +#: src/skins/ui_manager.c:395 +msgid "Play File" msgstr "" -#: src/skins/ui_manager.c:286 src/skins/ui_manager.c:322 -#: src/skins/ui_manager.c:352 -msgid "By Path + Filename" +#: src/skins/ui_manager.c:396 +msgid "Load and play a file" msgstr "" -#: src/skins/ui_manager.c:287 -msgid "Removes duplicate entries from the playlist by their full path." +#: src/skins/ui_manager.c:398 +msgid "Play Location" msgstr "" -#: src/skins/ui_manager.c:300 -msgid "Reverse List" +#: src/skins/ui_manager.c:399 +msgid "Play media from the selected location" msgstr "" -#: src/skins/ui_manager.c:301 -msgid "Reverses the playlist." +#: src/skins/ui_manager.c:401 +msgid "Plugin services" msgstr "" -#: src/skins/ui_manager.c:304 -msgid "Sort List" +#: src/skins/ui_manager.c:403 +msgid "Preferences" msgstr "" -#: src/skins/ui_manager.c:307 src/skins/ui_manager.c:337 -msgid "Sorts the list by title." +#: src/skins/ui_manager.c:404 +msgid "Open preferences window" msgstr "" -#: src/skins/ui_manager.c:311 src/skins/ui_manager.c:341 -msgid "Sorts the list by album." +#: src/skins/ui_manager.c:407 +msgid "Quit Audacious" msgstr "" -#: src/skins/ui_manager.c:315 src/skins/ui_manager.c:345 -msgid "Sorts the list by artist." +#: src/skins/ui_manager.c:409 src/skins/ui_manager.c:410 +msgid "Set A-B" msgstr "" -#: src/skins/ui_manager.c:319 src/skins/ui_manager.c:349 -msgid "Sorts the list by filename." +#: src/skins/ui_manager.c:412 src/skins/ui_manager.c:413 +msgid "Clear A-B" msgstr "" -#: src/skins/ui_manager.c:323 src/skins/ui_manager.c:353 -msgid "Sorts the list by full pathname." +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Jump to Time" msgstr "" -#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 -msgid "By Date" +#: src/skins/ui_manager.c:421 +msgid "Queue Toggle" msgstr "" -#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 -msgid "Sorts the list by modification time." +#: src/skins/ui_manager.c:422 +msgid "Enables/disables the entry in the playlist's queue." msgstr "" -#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 -msgid "Sorts the list by track number." +#: src/skins/ui_manager.c:425 +msgid "Copy" msgstr "" -#: src/skins/ui_manager.c:334 -msgid "Sort Selected" +#: src/skins/ui_manager.c:427 +msgid "Cut" msgstr "" -#: src/skins/ui_manager.c:373 -msgid "Plugin Services" +#: src/skins/ui_manager.c:429 +msgid "Paste" msgstr "" -#: src/skins/ui_manager.c:384 -msgid "Play File" +#: src/skins/ui_manager.c:436 +msgid "Load" msgstr "" -#: src/skins/ui_manager.c:387 -msgid "Play Location" +#: src/skins/ui_manager.c:437 +msgid "Import" msgstr "" -#: src/skins/ui_manager.c:428 -msgid "Load" +#: src/skins/ui_manager.c:438 +msgid "Save" msgstr "" -#: src/skins/ui_manager.c:433 src/skins/ui_manager.c:454 -#: src/skins/ui_manager.c:469 -msgid "Preset" +#: src/skins/ui_manager.c:439 +msgid "Delete" msgstr "" -#: src/skins/ui_manager.c:434 -msgid "Load preset" +#: src/skins/ui_manager.c:441 src/skins/ui_manager.c:462 +#: src/skins/ui_manager.c:477 +msgid "Preset" msgstr "" -#: src/skins/ui_manager.c:436 src/skins/ui_manager.c:457 -#: src/skins/ui_manager.c:472 +#: src/skins/ui_manager.c:444 src/skins/ui_manager.c:465 +#: src/skins/ui_manager.c:480 msgid "Auto-load preset" msgstr "" -#: src/skins/ui_manager.c:437 +#: src/skins/ui_manager.c:445 msgid "Load auto-load preset" msgstr "" -#: src/skins/ui_manager.c:440 +#: src/skins/ui_manager.c:448 msgid "Load default preset into equalizer" msgstr "" -#: src/skins/ui_manager.c:442 +#: src/skins/ui_manager.c:450 msgid "Zero" msgstr "" -#: src/skins/ui_manager.c:443 +#: src/skins/ui_manager.c:451 msgid "Set equalizer preset levels to zero" msgstr "" -#: src/skins/ui_manager.c:445 +#: src/skins/ui_manager.c:453 msgid "From file" msgstr "" -#: src/skins/ui_manager.c:446 +#: src/skins/ui_manager.c:454 msgid "Load preset from file" msgstr "" -#: src/skins/ui_manager.c:448 +#: src/skins/ui_manager.c:456 msgid "From WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:449 +#: src/skins/ui_manager.c:457 msgid "Load preset from WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:451 +#: src/skins/ui_manager.c:459 msgid "WinAMP Presets" msgstr "" -#: src/skins/ui_manager.c:452 +#: src/skins/ui_manager.c:460 msgid "Import WinAMP presets" msgstr "" -#: src/skins/ui_manager.c:455 -msgid "Save preset" -msgstr "" - -#: src/skins/ui_manager.c:458 +#: src/skins/ui_manager.c:466 msgid "Save auto-load preset" msgstr "" -#: src/skins/ui_manager.c:461 +#: src/skins/ui_manager.c:469 msgid "Save default preset" msgstr "" -#: src/skins/ui_manager.c:463 +#: src/skins/ui_manager.c:471 msgid "To file" msgstr "" -#: src/skins/ui_manager.c:464 +#: src/skins/ui_manager.c:472 msgid "Save preset to file" msgstr "" -#: src/skins/ui_manager.c:466 +#: src/skins/ui_manager.c:474 msgid "To WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:467 +#: src/skins/ui_manager.c:475 msgid "Save preset to WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:470 -msgid "Delete preset" -msgstr "" - -#: src/skins/ui_manager.c:473 +#: src/skins/ui_manager.c:481 msgid "Delete auto-load preset" msgstr "" -#: src/skins/ui_playlist.c:374 +#: src/skins/ui_playlist.c:248 msgid "Search entries in active playlist" msgstr "" -#: src/skins/ui_playlist.c:382 +#: src/skins/ui_playlist.c:256 msgid "" "Select entries in playlist by filling one or more fields. Fields use regular " "expressions syntax, case-insensitive. If you don't know how regular " @@ -4636,182 +3110,111 @@ "for." msgstr "" -#: src/skins/ui_playlist.c:397 +#: src/skins/ui_playlist.c:264 +msgid "Title: " +msgstr "" + +#: src/skins/ui_playlist.c:271 msgid "Album: " msgstr "" -#: src/skins/ui_playlist.c:404 +#: src/skins/ui_playlist.c:278 msgid "Artist: " msgstr "" -#: src/skins/ui_playlist.c:411 +#: src/skins/ui_playlist.c:285 msgid "Filename: " msgstr "" -#: src/skins/ui_playlist.c:419 +#: src/skins/ui_playlist.c:293 msgid "Clear previous selection before searching" msgstr "" -#: src/skins/ui_playlist.c:422 +#: src/skins/ui_playlist.c:296 msgid "Automatically toggle queue for matching entries" msgstr "" -#: src/skins/ui_playlist.c:425 +#: src/skins/ui_playlist.c:299 msgid "Create a new playlist with matching entries" msgstr "" -#: src/skins/ui_playlist.c:772 -msgid "Save as Static Playlist" -msgstr "" - -#: src/skins/ui_playlist.c:779 -msgid "Use Relative Path" -msgstr "" - -#: src/skins/ui_playlist.c:802 -msgid "Load Playlist" -msgstr "" - -#: src/skins/ui_playlist.c:815 -msgid "Save Playlist" -msgstr "" - -#: src/skins/ui_playlist.c:1146 +#: src/skins/ui_playlist.c:765 msgid "Audacious Playlist Editor" msgstr "" -#: src/skins/ui_playlist.c:1206 +#: src/skins/ui_playlist.c:812 #, c-format msgid "%s (%d of %d)" msgstr "" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "31 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "63 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "125 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "250 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "500 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "1 kHz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "2 kHz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -msgid "4 kHz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -msgid "8 kHz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -msgid "16 kHz" -msgstr "" - -#: src/skins/ui_skinselector.c:179 +#: src/skins/ui_skinselector.c:162 msgid "Archived Winamp 2.x skin" msgstr "" -#: src/skins/ui_skinselector.c:184 +#: src/skins/ui_skinselector.c:167 msgid "Unarchived Winamp 2.x skin" msgstr "" -#: src/skins/util.c:834 +#: src/skins/util.c:774 #, c-format msgid "Could not create directory (%s): %s\n" msgstr "" -#: src/sndfile/plugin.c:531 +#: src/sndfile/plugin.c:456 msgid "About sndfile plugin" msgstr "" -#: src/sndfile/plugin.c:532 -msgid "" -"Adapted for Audacious usage by Tony Vroon \n" -"from the xmms_sndfile plugin which is:\n" -"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -"This program is free software ; you can redistribute it and/or modify \n" -"it under the terms of the GNU General Public License as published by \n" -"the Free Software Foundation ; either version 2 of the License, or \n" -"(at your option) any later version. \n" -" \n" -"This program is distributed in the hope that it will be useful, \n" -"but WITHOUT ANY WARRANTY ; without even the implied warranty of \n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n" -"See the GNU General Public License for more details. \n" -"\n" -"You should have received a copy of the GNU General Public \n" -"License along with this program ; if not, write to \n" -"the Free Software Foundation, Inc., \n" -"51 Franklin Street, Fifth Floor, \n" -"Boston, MA 02110-1301 USA" -msgstr "" - -#: src/sndstretch/sndstretch_xmms.c:175 +#: src/sndstretch/sndstretch_xmms.c:155 msgid "About SndStretch" msgstr "" -#: src/sndstretch/sndstretch_xmms.c:336 +#: src/sndstretch/sndstretch_xmms.c:308 msgid "Volume corr." msgstr "" -#: src/sndstretch/sndstretch_xmms.c:337 +#: src/sndstretch/sndstretch_xmms.c:309 msgid "Short Overlap" msgstr "" -#: src/sndstretch/sndstretch_xmms.c:391 +#: src/sndstretch/sndstretch_xmms.c:355 msgid "Speed" msgstr "" -#: src/sndstretch/sndstretch_xmms.c:392 +#: src/sndstretch/sndstretch_xmms.c:356 msgid "Pitch" msgstr "" -#: src/sndstretch/sndstretch_xmms.c:413 +#: src/sndstretch/sndstretch_xmms.c:357 +msgid "Scale" +msgstr "" + +#: src/sndstretch/sndstretch_xmms.c:377 msgid "SndStretch - Configuration" msgstr "" -#: src/song_change/song_change.c:397 +#: src/song_change/song_change.c:437 msgid "Command to run when Audacious starts a new song." msgstr "" -#: src/song_change/song_change.c:398 src/song_change/song_change.c:402 -#: src/song_change/song_change.c:406 src/song_change/song_change.c:410 +#: src/song_change/song_change.c:439 src/song_change/song_change.c:445 +#: src/song_change/song_change.c:451 src/song_change/song_change.c:457 msgid "Command:" msgstr "" -#: src/song_change/song_change.c:401 +#: src/song_change/song_change.c:443 msgid "Command to run toward the end of a song." msgstr "" -#: src/song_change/song_change.c:405 +#: src/song_change/song_change.c:449 msgid "Command to run when Audacious reaches the end of the playlist." msgstr "" -#: src/song_change/song_change.c:409 +#: src/song_change/song_change.c:455 msgid "" "Command to run when title changes for a song (i.e. network streams titles)." msgstr "" -#: src/song_change/song_change.c:413 +#: src/song_change/song_change.c:461 msgid "" "You can use the following format strings which\n" "will be substituted before calling the command\n" @@ -4824,32 +3227,31 @@ "%n or %s: Song name\n" "%r: Rate (in bits per second)\n" "%t: Playlist position (%02d)\n" -"%p: Currently playing (1 or 0)" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" msgstr "" -#: src/song_change/song_change.c:437 +#: src/song_change/song_change.c:488 msgid "" "Parameters passed to the shell should be encapsulated in " "quotes. Doing otherwise is a security risk." msgstr "" -#: src/song_change/song_change.c:448 +#: src/song_change/song_change.c:499 msgid "Commands" msgstr "" -#: src/song_change/song_change.c:484 +#: src/song_change/song_change.c:529 msgid "Song Change" msgstr "" -#: src/spectrum/spectrum.c:89 -msgid "Spectrum Analyzer" -msgstr "" - -#: src/statusicon/statusicon.c:355 +#: src/statusicon/statusicon.c:379 msgid "About Status Icon Plugin" msgstr "" -#: src/statusicon/statusicon.c:356 +#: src/statusicon/statusicon.c:380 msgid "" "Status Icon Plugin\n" "\n" @@ -4860,135 +3262,70 @@ "the system tray area of the window manager.\n" msgstr "" -#: src/statusicon/statusicon.c:418 +#: src/statusicon/statusicon.c:451 msgid "Status Icon Plugin - Preferences" msgstr "" -#: src/statusicon/statusicon.c:428 +#: src/statusicon/statusicon.c:461 msgid "Right-Click Menu" msgstr "" -#: src/statusicon/statusicon.c:433 +#: src/statusicon/statusicon.c:466 msgid "Small playback menu #1" msgstr "" -#: src/statusicon/statusicon.c:436 +#: src/statusicon/statusicon.c:469 msgid "Small playback menu #2" msgstr "" -#: src/statusicon/statusicon.c:452 +#: src/statusicon/statusicon.c:485 msgid "Mouse Scroll Action" msgstr "" -#: src/statusicon/statusicon.c:456 +#: src/statusicon/statusicon.c:489 msgid "Change volume" msgstr "" -#: src/statusicon/statusicon.c:458 +#: src/statusicon/statusicon.c:491 msgid "Change playing song" msgstr "" -#: src/stereo_plugin/stereo.c:40 -msgid "" -"Extra Stereo Plugin\n" -"\n" -"By Johan Levin 1999." -msgstr "" - -#: src/stereo_plugin/stereo.c:64 -msgid "About Extra Stereo Plugin" -msgstr "" - -#: src/stereo_plugin/stereo.c:100 -msgid "Configure Extra Stereo" -msgstr "" - -#: src/streambrowser/gui/streambrowser_win.c:62 -msgid "Search:" -msgstr "" - -#: src/streambrowser/gui/streambrowser_win.c:81 -#: src/streambrowser/gui/streambrowser_win.c:370 -msgid "Add Bookmark" +#: src/statusicon/statusicon.c:504 +msgid "Other settings" msgstr "" -#: src/streambrowser/gui/streambrowser_win.c:95 -msgid "Stream browser" +#: src/statusicon/statusicon.c:509 +msgid "Disable the popup window" msgstr "" -#: src/streambrowser/gui/streambrowser_win.c:319 -msgid "Stream name" +#: src/statusicon/statusicon.c:516 +msgid "Close to the notification area (system tray)" msgstr "" -#: src/streambrowser/gui/streambrowser_win.c:326 -msgid "Now playing" +#: src/statusicon/statusicon.c:524 +msgid "Advance in playlist when scrolling upward" msgstr "" -#: src/streambrowser/gui/streambrowser_win.c:367 -msgid "Remove Bookmark" -msgstr "" - -#: src/streambrowser/streambrowser.c:331 -msgid "About Stream Browser" -msgstr "" - -#: src/streambrowser/streambrowser.c:332 -msgid "" -"Copyright (c) 2008, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming " -"directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" -"\n" -"This was a Google Summer of Code 2008 project." -msgstr "" - -#: src/streambrowser/streambrowser.c:357 src/streambrowser/streambrowser.c:367 -msgid "Streambrowser" -msgstr "" - -#: src/sun/about.c:30 -msgid "About the Sun Driver" -msgstr "" - -#: src/sun/about.c:31 +#: src/stereo_plugin/stereo.c:45 msgid "" -"XMMS BSD Sun Driver\n" +"Extra Stereo Plugin\n" "\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" -msgstr "" - -#: src/sun/configure.c:199 -msgid "Audio control device:" -msgstr "" - -#: src/sun/configure.c:270 -msgid "Buffer size (ms):" -msgstr "" - -#: src/sun/configure.c:348 -msgid "Volume controls device:" +"By Johan Levin 1999." msgstr "" -#: src/sun/configure.c:361 -msgid "XMMS uses mixer exclusively." +#: src/stereo_plugin/stereo.c:64 +msgid "About Extra Stereo Plugin" msgstr "" -#: src/sun/configure.c:536 -msgid "Sun driver configuration" +#: src/stereo_plugin/stereo.c:95 +msgid "Configure Extra Stereo" msgstr "" -#: src/tonegen/tonegen.c:53 +#: src/tonegen/tonegen.c:49 msgid "About Tone Generator" msgstr "" -#: src/tonegen/tonegen.c:55 +#: src/tonegen/tonegen.c:51 msgid "" "Sinus tone generator by Haavard Kvaalen \n" "Modified by Daniel J. Peng \n" @@ -4997,36 +3334,24 @@ "e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" msgstr "" -#: src/tonegen/tonegen.c:105 +#: src/tonegen/tonegen.c:101 #, c-format msgid "%s %.1f Hz" msgstr "" -#: src/tonegen/tonegen.c:105 +#: src/tonegen/tonegen.c:101 msgid "Tone Generator: " msgstr "" -#: src/vorbis/configure.c:31 -msgid "Override generic titles" -msgstr "" - -#: src/vorbis/configure.c:32 -msgid "Title format:" -msgstr "" - -#: src/vorbis/configure.c:36 -msgid "Ogg Vorbis Tags" -msgstr "" - -#: src/vorbis/configure.c:68 -msgid "Ogg Vorbis Audio Plugin Configuration" +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" msgstr "" -#: src/vorbis/vorbis.c:549 +#: src/vorbis/vorbis.c:573 msgid "About Ogg Vorbis Audio Plugin" msgstr "" -#: src/vorbis/vorbis.c:554 +#: src/vorbis/vorbis.c:578 msgid "" "Ogg Vorbis Plugin by the Xiph.org Foundation\n" "\n" @@ -5061,12 +3386,12 @@ "Audacious implementation by Pavel Vymetalek " msgstr "" -#: src/wavpack/wavpack.c:371 +#: src/wavpack/wavpack.c:353 #, c-format msgid "Wavpack Decoder Plugin %s" msgstr "" -#: src/wavpack/wavpack.c:372 +#: src/wavpack/wavpack.c:354 msgid "" "Copyright (c) 2006 William Pitcock \n" "\n" diff -Nru audacious-plugins-2.4.4/po/ca.po audacious-plugins-3.2/po/ca.po --- audacious-plugins-2.4.4/po/ca.po 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/ca.po 2012-01-20 19:48:30.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: audacious-plugins 1.5.1\n" "Report-Msgid-Bugs-To: http://jira.atheme.org/\n" -"POT-Creation-Date: 2010-08-03 17:55-0400\n" +"POT-Creation-Date: 2011-07-17 18:49-0400\n" "PO-Revision-Date: 2009-04-11 16:07+0200\n" "Last-Translator: Ernest Adrogué \n" "Language-Team: Catalan \n" @@ -15,7 +15,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/aac/libmp4.c:291 +#: src/aac/libmp4.c:256 #, fuzzy, c-format msgid "" "Using libfaad2-%s for decoding.\n" @@ -26,618 +26,55 @@ "Descodificador FAAD2 AAC/HE-AAC/HE-AACv2/DRM (c) Nero AG, www.nero.com\n" "Copyright (c) 2005-2006 Equip de l'Audacious" -#: src/aac/libmp4.c:296 +#: src/aac/libmp4.c:261 #, fuzzy msgid "About MP4 AAC decoder plugin" msgstr "Quant al connector per a àudio MPEG" -#: src/adplug/adplug-xmms.cc:153 -msgid "About " -msgstr "Quant al connector " - -#: src/adplug/adplug-xmms.cc:157 -msgid "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"This plugin is released under the terms and conditions of the GNU LGPL.\n" -"See http://www.gnu.org/licenses/lgpl.html for details.\n" -"\n" -"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et " -"al.\n" -"Linked AdPlug library version: " -msgstr "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"Aquest connector s'ha publicat sota els termes i condicions de la\n" -"llicència GNU LGPL. Vegeu http://www.gnu.org/licenses/lgpl.html per a\n" -"més detalls.\n" -"\n" -"Aquest connector fa ús de la llibreria AdPlug, el copyright (C) de la qual\n" -"pertany a Simon Peter, et al.\n" -"\n" -"Versió de la llibreria AdPlug enllaçada: " - -#: src/adplug/adplug-xmms.cc:234 -msgid "AdPlug :: Configuration" -msgstr "AdPlug :: Configuració" - -#: src/adplug/adplug-xmms.cc:243 src/adplug/adplug-xmms.cc:504 -#: src/cdaudio-ng/configure.c:258 src/crystalizer/crystalizer.c:127 -#: src/echo_plugin/gui.c:122 src/jack/configure.c:146 src/null/null.c:109 -#: src/stereo_plugin/stereo.c:123 src/sun/configure.c:557 -msgid "Ok" -msgstr "D'acord" - -#: src/adplug/adplug-xmms.cc:253 src/alarm/interface.c:1398 -#: src/cdaudio-ng/configure.c:263 src/crystalizer/crystalizer.c:136 -#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 -#: src/modplug/gui/interface.cxx:715 src/null/null.c:110 -#: src/stereo_plugin/stereo.c:132 src/sun/configure.c:565 -msgid "Cancel" -msgstr "Cancel·la" - -#: src/adplug/adplug-xmms.cc:269 src/console/configure.c:154 -#: src/modplug/gui/interface.cxx:629 src/modplug/gui/interface.cxx:888 -msgid "General" -msgstr "General" - -#: src/adplug/adplug-xmms.cc:281 -msgid "Sound quality" -msgstr "Qualitat de so" - -#: src/adplug/adplug-xmms.cc:286 src/modplug/gui/interface.cxx:188 -msgid "Resolution" -msgstr "Resolució" - -#: src/adplug/adplug-xmms.cc:288 -msgid "8bit" -msgstr "8 bits" - -#: src/adplug/adplug-xmms.cc:293 -msgid "16bit" -msgstr "16 bits" - -#: src/adplug/adplug-xmms.cc:301 src/modplug/gui/interface.cxx:219 -msgid "Channels" -msgstr "Canals" - -#: src/adplug/adplug-xmms.cc:303 src/filewriter/mp3.c:934 -#: src/mpg123/mpg123.c:174 src/sid/xs_interface.c:301 -msgid "Mono" -msgstr "Mono" - -#: src/adplug/adplug-xmms.cc:308 src/filewriter/mp3.c:929 -#: src/modplug/gui/interface.cxx:205 src/mpg123/mpg123.c:174 -#: src/sid/xs_interface.c:308 -msgid "Stereo" -msgstr "Estèreo" - -#: src/adplug/adplug-xmms.cc:312 -msgid "" -"Setting stereo is not recommended, unless you need to. This won't add any " -"stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!" -msgstr "" -"Activar l'estèreo no és recomanable, si no ho heu de fer. Això no afegirà " -"cap efecte estèreo al so -l'OPL2 és mono- però consumeix més CPU!" - -#: src/adplug/adplug-xmms.cc:320 -msgid "Frequency" -msgstr "Freqüència" - -#: src/adplug/adplug-xmms.cc:356 src/adplug/adplug-xmms.cc:560 -#: src/console/configure.c:156 src/gtkui/ui_manager.c:64 -#: src/skins/ui_manager.c:165 -msgid "Playback" -msgstr "Reproducció" - -#: src/adplug/adplug-xmms.cc:360 -msgid "Detect songend" -msgstr "Detecta el final de la pista" - -#: src/adplug/adplug-xmms.cc:364 -msgid "" -"If enabled, XMMS will detect a song's ending, stop it and advance in the " -"playlist. If disabled, XMMS won't take notice of a song's ending and loop it " -"all over again and again." -msgstr "" -"Si està activat, l'XMMS detectarà el final de la pista, pararà i passarà a " -"la següent. Si no està activat, l'XMMS pot no detectar que la pista s'ha " -"acabat i seguir reproduint-la un cop i un altre." - -#: src/adplug/adplug-xmms.cc:375 -msgid "Formats" -msgstr "Formats" - -#: src/adplug/adplug-xmms.cc:382 -msgid "Format selection" -msgstr "Selecció de formats" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Format" -msgstr "Format" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Extension" -msgstr "Extensió" - -#: src/adplug/adplug-xmms.cc:425 -msgid "" -"Selected file types will be recognized and played back by this plugin. " -"Deselected types will be ignored to make room for other plugins to play " -"these files." -msgstr "" -"Els tipus de fitxers seleccionats seran reconeguts i reproduïts per aquest " -"connector. Els tipus no seleccionats seran ignorats, i podran ser reproduïts " -"per altres connectors." - -#: src/adplug/adplug-xmms.cc:511 -msgid "AdPlug :: File Info" -msgstr "AdPlug :: Informació del fitxer" - -#: src/adplug/adplug-xmms.cc:533 src/amidi-plug/i_configure-fluidsynth.c:348 -msgid "Filename" -msgstr "Nom del fitxer" - -#: src/adplug/adplug-xmms.cc:537 src/skins/ui_playlist.c:390 -msgid "Title: " -msgstr "Títol: " - -#: src/adplug/adplug-xmms.cc:538 -msgid "Author: " -msgstr "Autor: " - -#: src/adplug/adplug-xmms.cc:539 -msgid "File Type: " -msgstr "Tipus de fitxer: " - -#: src/adplug/adplug-xmms.cc:540 -msgid "Subsongs: " -msgstr "Sub-pistes: " - -#: src/adplug/adplug-xmms.cc:541 -msgid "Instruments: " -msgstr "Instruments: " - -#: src/adplug/adplug-xmms.cc:546 -msgid "Orders: " -msgstr "Ordres: " - -#: src/adplug/adplug-xmms.cc:547 -msgid "Patterns: " -msgstr "Pautes: " - -#: src/adplug/adplug-xmms.cc:551 -msgid "Song" -msgstr "Cançó" - -#: src/adplug/adplug-xmms.cc:577 -msgid "Instrument name" -msgstr "Nom de l'instrument" - -#: src/adplug/adplug-xmms.cc:619 -msgid "Song message" -msgstr "Missatge de la cançó" - -#: src/adplug/adplug-xmms.cc:641 -msgid "Subsong selection" -msgstr "Selecció de sub-pistes" - -#: src/adplug/adplug-xmms.cc:707 -msgid "Order: " -msgstr "Ordre: " - -#: src/adplug/adplug-xmms.cc:708 -msgid "Pattern: " -msgstr "Pauta: " - -#: src/adplug/adplug-xmms.cc:710 -msgid "Row: " -msgstr "Fila: " - -#: src/adplug/adplug-xmms.cc:711 -msgid "Speed: " -msgstr "Velocitat: " - -#: src/adplug/adplug-xmms.cc:712 -msgid "Timer: " -msgstr "Temporitzador: " - -#: src/adplug/adplug-xmms.cc:713 src/console/configure.c:234 -#: src/sid/xs_interface.c:354 -msgid "Hz" -msgstr "Hz" - -#: src/alarm/interface.c:34 -msgid "About XMMS Alarm" -msgstr "Quant a l'alarma XMMS" - -#: src/alarm/interface.c:47 -msgid "XMMS Alarm" -msgstr "Alarma XMMS" - -#: src/alarm/interface.c:56 -msgid "" -"An XMMS plugin which can be used\n" -"to start playing at a certain time.\n" -"\n" -"Send all complaints to:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" -msgstr "" -"Un connector XMMS que es pot fer servir\n" -"per a començar a reproduir a una certa hora.\n" -"\n" -"Envieu totes les queixes a:\n" -"Adam Feakin \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" - -#: src/alarm/interface.c:71 src/bluetooth/scan_gui.c:149 src/lirc/about.c:115 -#: src/modplug/gui/interface.cxx:972 src/sid/xs_about.c:214 -#: src/sid/xs_interface.c:1825 -msgid "Close" -msgstr "Tanca" - -#: src/alarm/interface.c:101 -msgid "Alarm" -msgstr "Alarma" - -#: src/alarm/interface.c:109 -msgid "This is your wakeup call." -msgstr "Això és l'avís per despertar-se." - -#: src/alarm/interface.c:124 src/alarm/interface.c:1389 -#: src/modplug/gui/interface.cxx:703 src/sid/xs_config.c:322 -msgid "OK" -msgstr "D'acord" - -#: src/alarm/interface.c:152 -msgid "Select Playlist" -msgstr "Seleccioneu una llista de reproducció" - -#: src/alarm/interface.c:196 -msgid "Sorry" -msgstr "Ho sentim" - -#: src/alarm/interface.c:204 -msgid "Warning" -msgstr "Atenció" - -#: src/alarm/interface.c:213 -msgid "" -"For safety reasons the \"quiet\" time must be at least 65 seconds longer " -"than the fading time, it must also be more than 10 seconds. This basically " -"means that there is a bug in the code and until I find a way of really " -"fixing it this message will appear :)\n" -"\n" -"Your fading settings have NOT been saved\n" -"\n" -"--\n" -"Adam" -msgstr "" -"Per raons de seguretat, el temps \"tranquil\" ha de durar almenys 65 segons " -"més que el temps de fosa, i ha de durar més de 10 segons. Això bàsicament " -"significa que hi ha un \"bug\" en el codi i que fins que no trobi la manera " -"de resoldre'l sortirà aquest missatge :)\n" -"\n" -"Els paràmetres de fosa NO s'han desat\n" -"\n" -"--\n" -"Adam" - -#: src/alarm/interface.c:229 -msgid "Oh Well" -msgstr "Vaja" - -#: src/alarm/interface.c:388 -msgid "Alarm Settings" -msgstr "Paràmetres de l'alarma" - -#: src/alarm/interface.c:404 src/alarm/interface.c:576 -#: src/alarm/interface.c:948 -msgid "Time" -msgstr "Hora" - -#: src/alarm/interface.c:445 -msgid "hours" -msgstr "hores" - -#: src/alarm/interface.c:506 -msgid "h" -msgstr "h" - -#: src/alarm/interface.c:536 -msgid "minutes" -msgstr "minuts" - -#: src/alarm/interface.c:554 -msgid "Quiet after:" -msgstr "Para al cap de:" - -#: src/alarm/interface.c:564 -msgid "Alarm at (default):" -msgstr "Alarma (per defecte) a les:" - -#: src/alarm/interface.c:584 -msgid "Choose the days for the alarm to come on" -msgstr "Trieu els dies que ha de saltar l'alarma" - -#: src/alarm/interface.c:612 src/alarm/interface.c:660 -#: src/alarm/interface.c:708 src/alarm/interface.c:756 -#: src/alarm/interface.c:804 src/alarm/interface.c:852 -#: src/alarm/interface.c:900 src/OSS/configure.c:166 -#: src/skins/ui_manager.c:439 src/skins/ui_manager.c:460 -msgid "Default" -msgstr "Per defecte" - -#: src/alarm/interface.c:938 -msgid "Day" -msgstr "Dia" - -#: src/alarm/interface.c:958 -msgid "Tuesday" -msgstr "Dimarts" - -#: src/alarm/interface.c:969 -msgid "Wednesday" -msgstr "Dimecres" - -#: src/alarm/interface.c:980 -msgid "Thursday" -msgstr "Dijous" - -#: src/alarm/interface.c:991 -msgid "Friday" -msgstr "Divendres" - -#: src/alarm/interface.c:1002 -msgid "Saturday" -msgstr "Dissabte" - -#: src/alarm/interface.c:1013 -msgid "Sunday" -msgstr "Diumenge" - -#: src/alarm/interface.c:1023 -msgid "Monday" -msgstr "Dilluns" - -#: src/alarm/interface.c:1034 -msgid "Days" -msgstr "Dies" - -#: src/alarm/interface.c:1050 -msgid "Fading" -msgstr "Fosa" - -#: src/alarm/interface.c:1087 src/sid/xs_interface.c:921 -#: src/sid/xs_interface.c:975 src/sid/xs_interface.c:1155 -msgid "seconds" -msgstr "segons" - -#: src/alarm/interface.c:1095 src/alarm/interface.c:1211 -#: src/modplug/gui/interface.cxx:550 -msgid "Volume" -msgstr "Volum" - -#: src/alarm/interface.c:1121 -msgid "Current" -msgstr "Actual" - -#: src/alarm/interface.c:1128 -msgid "reset to current output volume" -msgstr "posa al volum de sortida actual" - -#: src/alarm/interface.c:1130 -msgid "Start at" -msgstr "Comença a" - -#: src/alarm/interface.c:1158 src/alarm/interface.c:1202 -msgid "%" -msgstr "%" - -#: src/alarm/interface.c:1174 -msgid "Final" -msgstr "Final" - -#: src/alarm/interface.c:1227 -msgid "Additional Command" -msgstr "Ordre Addicional" - -#: src/alarm/interface.c:1253 -msgid "enable" -msgstr "activa" - -#: src/alarm/interface.c:1261 -msgid "Playlist (optional)" -msgstr "Llista de reproducció (opcional)" - -#: src/alarm/interface.c:1287 -msgid "Browse..." -msgstr "Vés a..." - -#: src/alarm/interface.c:1295 src/alarm/interface.c:1460 -msgid "Reminder" -msgstr "Recordatori" - -#: src/alarm/interface.c:1312 -msgid "Use reminder" -msgstr "Activa els recordatoris" - -#: src/alarm/interface.c:1328 src/sndstretch/sndstretch_xmms.c:394 -msgid "Options" -msgstr "Opcions" - -#: src/alarm/interface.c:1336 -msgid "What do these options mean?" -msgstr "Què signifiquen aquestes opcions?" - -#: src/alarm/interface.c:1364 -msgid "" -"\n" -"Time\n" -" Alarm at: \n" -" The time for the alarm to come on.\n" -"\n" -" Quiet After: \n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading: \n" -" Fade the volume up to the chosen volume \n" -" for this amount of time.\n" -"\n" -" Start at: \n" -" Start fading from this volume.\n" -"\n" -" Final: \n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist: \n" -" Load this playlist for playing songs from \n" -" (must have .m3u extension). If no playlist\n" -" is given then the songs which are currently\n" -" in the list will be used.\n" -" The URL of an mp3/ogg stream can also be\n" -" entered here, but loading of playlists from\n" -" URLs is not currently supported by xmms.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off,\n" -" type the reminder in the box and turn on the\n" -" toggle button if you want it to be shown.\n" -msgstr "" -"\n" -"Temps\n" -" Alarma a les: \n" -" Hora en que salta l'alarma.\n" -"\n" -" Para al cap de: \n" -" Para l'alarma quan hagi passat aquesta estona.\n" -" (si no heu tancat el diàleg de despertada)\n" -"\n" -"\n" -"Dies\n" -" Dia:\n" -" Els dies de la setmana en que s'activa l'alarma.\n" -"\n" -" Hora:\n" -" L'hora en que salta l'alarma cada dia, o bé marqueu\n" -" la casella per a fer servir l'hora per defecte.\n" -"\n" -"\n" -"Volum\n" -" Fosa: \n" -" Augmenta el volum fins el nivell especificat durant el \n" -" temps indicat.\n" -"\n" -" Comença a: \n" -" Comença amb aquest volum.\n" -"\n" -" Final: \n" -" El nivell de volum final. Si el temps de fosa\n" -" és 0, es començarà a reproduir a aquest nivell\n" -" des del principi.\n" -"\n" -"\n" -"Opcions:\n" -" Ordre addicional:\n" -" Executa aquesta ordre quan salta l'alarma.\n" -"\n" -" Llista de reproducció: \n" -" Carrega aquesta llista de reproducció (ha\n" -" de tenir extensió .m3u). Si no introduïu cap\n" -" llista, es faran servir les cançons que hi\n" -" hagin a la llista en aquest moment.\n" -" També és possible introduir un URL d'un flux\n" -" mp3/ogg, però carregar llistes de reproducció\n" -" des d'URLS de moment no està suportat.\n" -"\n" -" Recordatori:\n" -" Mostra un recordatori quan salta l'alarma,\n" -" escriviu el recordatori en el camp de text i\n" -" marqueu la casella si voleu que es mostri.\n" - -#: src/alarm/interface.c:1366 src/gtkui/ui_manager.c:165 -#: src/skins/ui_manager.c:371 -msgid "Help" -msgstr "Ajuda" - -#: src/alarm/interface.c:1468 -msgid "Your reminder for today is.." -msgstr "El vostre recordatori d'avui és.." - -#: src/alarm/interface.c:1493 -msgid "Thankyou" -msgstr "Gràcies" - -#: src/alsa/config.c:209 +#: src/alsa/config.c:210 #, fuzzy msgid "Default PCM device" msgstr "Dispositiu PCM per defecte (%s)" -#: src/alsa/config.c:234 +#: src/alsa/config.c:235 #, fuzzy msgid "Default mixer device" msgstr "Dispositiu PCM per defecte (%s)" -#: src/alsa/config.c:438 +#: src/alsa/config.c:447 #, fuzzy msgid "ALSA Output Plugin Preferences" msgstr "Connector d'Icona d'Estat - Preferències" -#: src/alsa/config.c:445 +#: src/alsa/config.c:454 #, fuzzy msgid "PCM device:" msgstr "Dispositiu de mescla:" -#: src/alsa/config.c:447 src/OSS/configure.c:256 src/sun/configure.c:218 +#: src/alsa/config.c:456 src/OSS/configure.c:246 msgid "Mixer device:" msgstr "Dispositiu de mescla:" -#: src/alsa/config.c:449 +#: src/alsa/config.c:458 #, fuzzy msgid "Mixer element:" msgstr "Dispositiu de mescla:" -#: src/alsa/config.c:452 +#: src/alsa/config.c:461 msgid "Work around drain hangup" msgstr "" -#: src/alsa/plugin.c:61 +#: src/alsa/plugin.c:59 #, fuzzy msgid "About ALSA Output Plugin" msgstr "Quant al connector de sortida JACK 0.17" -#: src/alsa/plugin.c:83 +#: src/alsa/plugin.c:81 #, fuzzy msgid "ALSA error" msgstr "Error" -#: src/amidi-plug/amidi-plug.c:323 +#: src/amidi-plug/amidi-plug.c:335 msgid "" "You have not selected any sequencer ports for MIDI playback. You can do so " "in the MIDI plugin preferences." @@ -669,11 +106,11 @@ "maquinari en qüestió.\n" "Fons escrit per Giacomo Lozito." -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:41 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 msgid "FluidSynth Backend " msgstr "Fons FluidSynth" -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:43 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 msgid "" "This backend produces audio by sending MIDI events to FluidSynth, a real-" "time software synthesizer based on the SoundFont2 specification (www." @@ -689,86 +126,43 @@ "reproductor i és processat pel connector de sortida que trieu.\n" "Fons escrit per Giacomo Lozito." -#: src/amidi-plug/i_configure-alsa.c:221 +#: src/amidi-plug/i_configure-alsa.c:228 msgid "ALSA BACKEND CONFIGURATION" msgstr "CONFIGURACIÓ DEL FONS ALSA" -#: src/amidi-plug/i_configure-alsa.c:326 +#: src/amidi-plug/i_configure-alsa.c:331 msgid "Port" msgstr "Port" -#: src/amidi-plug/i_configure-alsa.c:328 +#: src/amidi-plug/i_configure-alsa.c:333 msgid "Client name" msgstr "Nom del client" -#: src/amidi-plug/i_configure-alsa.c:330 +#: src/amidi-plug/i_configure-alsa.c:335 msgid "Port name" msgstr "Nom del port" -#: src/amidi-plug/i_configure-alsa.c:341 +#: src/amidi-plug/i_configure-alsa.c:346 msgid "ALSA output ports" msgstr "Ports ALSA de sortida" -#: src/amidi-plug/i_configure-alsa.c:394 +#: src/amidi-plug/i_configure-alsa.c:399 msgid "Soundcard: " msgstr "Targeta de so: " -#: src/amidi-plug/i_configure-alsa.c:396 +#: src/amidi-plug/i_configure-alsa.c:401 msgid "Mixer control: " msgstr "Control del volum:" -#: src/amidi-plug/i_configure-alsa.c:408 +#: src/amidi-plug/i_configure-alsa.c:413 msgid "Mixer settings" msgstr "Paràmetres del mesclador" -#: src/amidi-plug/i_configure-alsa.c:421 -msgid "" -"* Select ALSA output ports *\n" -"MIDI events will be sent to the ports selected here. In example, if your " -"audio card provides a hardware synth and you want to play MIDI with it, " -"you'll probably want to select the wavetable synthesizer ports." -msgstr "" -"* Seleccioneu els ports ALSA de sortida *\n" -"Els esdeveniments MIDI seran enviats a els ports seleccionats. Per exemple, " -"si la vostra targeta de so té un sintetitzador integrat i voleu que " -"reprodueixi MIDI, probablement voldreu seleccionar els ports de la taula " -"d'ones del sintetitzador." - -#: src/amidi-plug/i_configure-alsa.c:426 -msgid "" -"* Select ALSA mixer card *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volumeslider will " -"manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" -"* Seleccioneu la targeta de so *\n" -"El fons ALSA envia la sortida directament a través d'ALSA, no fa servir cap " -"altre connector d'efectes o de sortida del reproductor. Durant la " -"reproducció, la maneta del volum tindrà efecte sobre el control que " -"seleccioneu aquí. Si esteu utilitzant ports de la taula d'ones d'un " -"sintetitzador, probablement voldreu seleccionar el control \"Synth\"." - -#: src/amidi-plug/i_configure-alsa.c:433 -msgid "" -"* Select ALSA mixer control *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volume slider " -"will manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" -"* Seleccioneu el control de volum *\n" -"El fons ALSA envia la sortida directament a través d'ALSA, no fa servir cap " -"altre connector d'efectes o de sortida del reproductor. Durant la " -"reproducció, la maneta del volum tindrà efecte sobre el control que " -"seleccioneu aquí. Si esteu utilitzant ports de la taula d'ones d'un " -"sintetitzador, probablement voldreu seleccionar el control \"Synth\"." - -#: src/amidi-plug/i_configure-alsa.c:444 +#: src/amidi-plug/i_configure-alsa.c:429 msgid "ALSA Backend not loaded or not available" msgstr "Fons ALSA no carregat o no disponible" -#: src/amidi-plug/i_configure-alsa.c:463 +#: src/amidi-plug/i_configure-alsa.c:448 msgid "" "ALSA\n" "backend" @@ -776,154 +170,51 @@ "Fons\n" "ALSA" -#: src/amidi-plug/i_configure-ap.c:56 +#: src/amidi-plug/i_configure-ap.c:59 msgid "AMIDI-Plug - backend information" msgstr "Connector AMIDI-Plug - Informació de l'aplicació de fons" -#: src/amidi-plug/i_configure-ap.c:194 +#: src/amidi-plug/i_configure-ap.c:196 msgid "AMIDI-PLUG PREFERENCES" msgstr "PREFERÈNCIES DEL CONNECTOR AMIDI-PLUG" -#: src/amidi-plug/i_configure-ap.c:221 +#: src/amidi-plug/i_configure-ap.c:223 msgid "Backend selection" msgstr "Selecció de l'aplicació de fons" -#: src/amidi-plug/i_configure-ap.c:225 +#: src/amidi-plug/i_configure-ap.c:227 msgid "Available backends" msgstr "Aplicacions de fons disponibles" -#: src/amidi-plug/i_configure-ap.c:255 +#: src/amidi-plug/i_configure-ap.c:257 msgid "Playback settings" msgstr "Paràmetres de la reproducció" -#: src/amidi-plug/i_configure-ap.c:260 +#: src/amidi-plug/i_configure-ap.c:262 msgid "Transpose: " msgstr "Transposició: " -#: src/amidi-plug/i_configure-ap.c:269 +#: src/amidi-plug/i_configure-ap.c:271 msgid "Drum shift: " msgstr "Desplaçament de la percussió: " -#: src/amidi-plug/i_configure-ap.c:287 +#: src/amidi-plug/i_configure-ap.c:289 msgid "Advanced settings" msgstr "Paràmetres avançats" -#: src/amidi-plug/i_configure-ap.c:291 +#: src/amidi-plug/i_configure-ap.c:293 msgid "pre-calculate length of MIDI files in playlist" msgstr "pre-calcula la durada dels fitxers MIDI a la llista de reproducció" -#: src/amidi-plug/i_configure-ap.c:296 +#: src/amidi-plug/i_configure-ap.c:298 msgid "extract comments from MIDI file (if available)" msgstr "extreu els comentaris del fitxer MIDI (si n'hi ha)" -#: src/amidi-plug/i_configure-ap.c:301 +#: src/amidi-plug/i_configure-ap.c:303 msgid "extract lyrics from MIDI file (if available)" msgstr "extreu la lletra del fitxer MIDI (si n'hi ha)" -#: src/amidi-plug/i_configure-ap.c:320 -msgid "" -"* Backend selection *\n" -"AMIDI-Plug works with backends, in a modular fashion; here you should select " -"your backend; that is, the way MIDI events are going to be handled and " -"played.\n" -"If you have a hardware synthesizer on your audio card, and ALSA supports it, " -"you'll want to use the ALSA backend. It can also be used with anything that " -"provides an interface to the ALSA sequencer, including software synths or " -"external devices.\n" -"If you want to rely on a software synthesizer and/or want to pipe audio into " -"effect and output plugins of the player you'll want to use the good " -"FluidSynth backend.\n" -"Press the info button to read specific information about each backend." -msgstr "" -"* Selecció de l'aplicació de fons *\n" -"El connector AMIDI-Plug funciona amb aplicacions de fons, d'una manera " -"modular; aquí hauríeu de seleccionar un fons; és a dir, la manera com els " -"esdeveniments MIDI han de ser tractats i reproduïts.\n" -"Si teniu maquinari de síntesi a la targeta de so, i ALSA el suporta, voldreu " -"fer servir el fons ALSA. També es pot fer servir amb qualsevol cosa que " -"tingui una interfície amb el seqüenciador ALSA, incloent programari de " -"síntesi o dispositius externs.\n" -"Si voleu fer servir programari de síntesi i/o voleu que el so generat sigui " -"processat pels connectors d'efectes i de sortida del reproductor, voldreu " -"fer servir el fons FluidSynth.\n" -"Premeu el botó d'informació per a llegir informació específica de cada fons." - -#: src/amidi-plug/i_configure-ap.c:331 -#, fuzzy -msgid "" -"* Transpose function *\n" -"This option allows you to play the midi file transposed in a different key, " -"by shifting of the desired number of semitones all its notes (excepting " -"those on midi channel 10, reserved for percussions). Especially useful if " -"you wish to sing or play along with another instrument." -msgstr "" -"* Funció de transposició *\n" -"Aquesta opció permet reproduir el fitxer MIDI transposat a una clau " -"diferent, tot desplaçant totes les notes el nombre desitjat de semitons " -"(exceptuant aquelles en el canal MIDI 10, reservat per a percussió). Resulta " -"útil especialment per a cantar o acompanyar amb un altre instrument." - -#: src/amidi-plug/i_configure-ap.c:337 -msgid "" -"* Drumshift function *\n" -"This option allows you to shift notes on midi channel 10 (the standard " -"percussions channel) of the desired number of semitones. This results in " -"different drumset and percussions being used during midi playback, so if you " -"wish to enhance (or reduce, or alter) percussion sounds, try to play with " -"this value." -msgstr "" -"* Funció de desplaçament de la percussió *\n" -"Aquesta opció permet desplaçar les notes del canal MIDI 10 (el canal " -"estàndard de percussió) el nombre desitjat de semitons. El resultat és un " -"conjunt diferent d'instruments usats en la reproducció MIDI, de manera que " -"si voleu millorar (o reduir, o alterar) la percussió, proveu de jugar amb " -"aquest valor." - -#: src/amidi-plug/i_configure-ap.c:344 -msgid "" -"* Pre-calculate MIDI length *\n" -"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as " -"soon as the player requests it, instead of doing that only when the MIDI " -"file is being played. In example, MIDI length will be calculated straight " -"after adding MIDI files in a playlist. Disable this option if you want " -"faster playlist loading (when a lot of MIDI files are added), enable it to " -"display more information in the playlist straight after loading." -msgstr "" -"* Pre-càlcul de la durada MIDI *\n" -"Si aquesta opció està activada, el connector AMIDI-Plug calcularà la durada " -"del fitxer MIDI tan aviat com el reproductor ho requereixi, en lloc de fer-" -"ho només quan es reprodueix el fitxer. Per exemple, la durada d'un fitxer " -"MIDI es calcularà just després de ser afegit a la llista de reproducció. " -"Desactiveu aquesta opció si voleu que les llistes de reproducció es " -"carreguin més ràpidament (quan s'afegeixen molts fitxers MIDI), activeu-la " -"per a mostrar més informació immediatament en carregar fitxers." - -#: src/amidi-plug/i_configure-ap.c:353 -msgid "" -"* Extract comments from MIDI files *\n" -"Some MIDI files contain text comments (author, copyright, instrument notes, " -"etc.). If this option is enabled, AMIDI-Plug will extract and display " -"comments (if available) in the file information dialog." -msgstr "" -"* Extracció de comentaris de fitxers MIDI *\n" -"Alguns fitxers MIDI contenen comentaris (autor, copyright, comentaris sobre " -"instruments, etc.). Si aquesta opció està activada, el connector AMIDI-Plug " -"extraurà i mostrarà els comentaris (si n'hi ha cap) en el diàleg " -"d'informació del fitxer." - -#: src/amidi-plug/i_configure-ap.c:358 -msgid "" -"* Extract lyrics from MIDI files *\n" -"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug " -"will extract and display song lyrics (if available) in the file information " -"dialog." -msgstr "" -"* Extracció de lletres de fitxer MIDI *\n" -"Alguns fitxers MIDI contenen les lletres de les cançons. Si aquesta opció " -"està activada, el connector AMIDI-Plug extraurà i mostrarà les lletres de " -"les cançons (si n'hi ha cap) en el diàleg d'informació del fitxer." - -#: src/amidi-plug/i_configure-ap.c:375 +#: src/amidi-plug/i_configure-ap.c:333 msgid "" "AMIDI\n" "Plug" @@ -931,235 +222,113 @@ "Connector\n" "AMIDI" -#: src/amidi-plug/i_configure.c:73 +#: src/amidi-plug/i_configure.c:76 msgid "AMIDI-Plug - select file" msgstr "Connector AMIDI-Plug - Seleccioneu un fitxer" -#: src/amidi-plug/i_configure.c:126 +#: src/amidi-plug/i_configure.c:129 msgid "AMIDI-Plug - configuration" msgstr "Connector AMIDI-Plug - Configuració" -#: src/amidi-plug/i_configure-fluidsynth.c:52 +#: src/amidi-plug/i_configure-fluidsynth.c:55 msgid "AMIDI-Plug - select SoundFont file" msgstr "Connector AMIDI-Plug - Seleccioneu un fitxer SoundFont" -#: src/amidi-plug/i_configure-fluidsynth.c:268 +#: src/amidi-plug/i_configure-fluidsynth.c:270 msgid "FLUIDSYNTH BACKEND CONFIGURATION" msgstr "CONFIGURACIÓ DEL FONS FLUIDSYNTH" -#: src/amidi-plug/i_configure-fluidsynth.c:316 +#: src/amidi-plug/i_configure-fluidsynth.c:313 msgid "SoundFont settings" msgstr "Paràmetres SoundFont" -#: src/amidi-plug/i_configure-fluidsynth.c:352 +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Nom del fitxer" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 msgid "Size (bytes)" msgstr "Mida (octets)" -#: src/amidi-plug/i_configure-fluidsynth.c:401 +#: src/amidi-plug/i_configure-fluidsynth.c:398 msgid "Load SF on player start" msgstr "Carrega les SF en arrencar el reproductor" -#: src/amidi-plug/i_configure-fluidsynth.c:405 +#: src/amidi-plug/i_configure-fluidsynth.c:402 msgid "Load SF on first midifile play" msgstr "Carrega les SF abans de reproduir fitxers MIDI" -#: src/amidi-plug/i_configure-fluidsynth.c:420 +#: src/amidi-plug/i_configure-fluidsynth.c:417 msgid "Synthesizer settings" msgstr "Paràmetres del sintetitzador" -#: src/amidi-plug/i_configure-fluidsynth.c:429 +#: src/amidi-plug/i_configure-fluidsynth.c:426 msgid "gain" msgstr "guany" -#: src/amidi-plug/i_configure-fluidsynth.c:435 -#: src/amidi-plug/i_configure-fluidsynth.c:463 -#: src/amidi-plug/i_configure-fluidsynth.c:491 -#: src/amidi-plug/i_configure-fluidsynth.c:522 +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 msgid "use default" msgstr "per defecte" -#: src/amidi-plug/i_configure-fluidsynth.c:438 -#: src/amidi-plug/i_configure-fluidsynth.c:466 +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 msgid "value:" msgstr "valor:" -#: src/amidi-plug/i_configure-fluidsynth.c:457 +#: src/amidi-plug/i_configure-fluidsynth.c:454 msgid "poliphony" msgstr "polifonia" -#: src/amidi-plug/i_configure-fluidsynth.c:485 +#: src/amidi-plug/i_configure-fluidsynth.c:482 msgid "reverb" msgstr "reverberació" -#: src/amidi-plug/i_configure-fluidsynth.c:494 -#: src/amidi-plug/i_configure-fluidsynth.c:525 +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 msgid "yes" msgstr "sí" -#: src/amidi-plug/i_configure-fluidsynth.c:496 -#: src/amidi-plug/i_configure-fluidsynth.c:527 +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 msgid "no" msgstr "no" -#: src/amidi-plug/i_configure-fluidsynth.c:516 +#: src/amidi-plug/i_configure-fluidsynth.c:513 msgid "chorus" msgstr "cor" -#: src/amidi-plug/i_configure-fluidsynth.c:547 +#: src/amidi-plug/i_configure-fluidsynth.c:544 msgid "sample rate" msgstr "freqüència de mostra" -#: src/amidi-plug/i_configure-fluidsynth.c:553 +#: src/amidi-plug/i_configure-fluidsynth.c:550 msgid "22050 Hz " msgstr "22050 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:556 +#: src/amidi-plug/i_configure-fluidsynth.c:553 msgid "44100 Hz " msgstr "44100 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:559 +#: src/amidi-plug/i_configure-fluidsynth.c:556 msgid "96000 Hz " msgstr "96000 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:562 +#: src/amidi-plug/i_configure-fluidsynth.c:559 msgid "custom " msgstr "personalitzat" -#: src/amidi-plug/i_configure-fluidsynth.c:571 +#: src/amidi-plug/i_configure-fluidsynth.c:568 msgid "Hz " msgstr "Hz " #: src/amidi-plug/i_configure-fluidsynth.c:621 -msgid "" -"* Select SoundFont files *\n" -"In order to play MIDI with FluidSynth, you need to specify at least one " -"valid SoundFont file here (use absolute paths). The loading order is from " -"the top (first) to the bottom (last)." -msgstr "" -"* Selecció de fitxers SoundFont *\n" -"Per a reproduir fitxers MIDI amb el FluidSynth, heu d'especificar almenys un " -"fitxer SoundFont vàlid (useu camins absoluts). L'ordre de càrrega és de dalt " -"(primer) a baix (últim)." - -#: src/amidi-plug/i_configure-fluidsynth.c:626 -msgid "" -"* Load SoundFont on player start *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" -"* Carrega la SoundFont en arrencar el reproductor *\n" -"Depenent de la velocitat del vostre sistema, la càrrega de SoundFonts pot " -"trigar uns quants segons. Aquesta tasca s'ha de fer un sol cop (la SoundFont " -"quedarà carregada fins que es canvii per una altra, o el fons sigui " -"descarregat), i es pot for quan arrenca el reproductor, o abans de reproduir " -"el primer fitxer MIDI (aquesta última és l'opció més recomanable si no useu " -"el reproductor per escoltar només fitxers MIDI)." - -#: src/amidi-plug/i_configure-fluidsynth.c:634 -msgid "" -"* Load SoundFont on first midifile play *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" -"* Carrega la SoundFont abans de reproduir fitxers MIDI *\n" -"Depenent de la velocitat del vostre sistema, la càrrega de SoundFonts pot " -"trigar uns quants segons. Aquesta tasca s'ha de fer un sol cop (la SoundFont " -"quedarà carregada fins que es canvii per una altra, o el fons sigui " -"descarregat), i es pot for quan arrenca el reproductor, o abans de reproduir " -"el primer fitxer MIDI (aquesta última és l'opció més recomanable si no useu " -"el reproductor per escoltar només fitxers MIDI)." - -#: src/amidi-plug/i_configure-fluidsynth.c:642 -msgid "" -"* Synthesizer gain *\n" -"From FluidSynth docs: the gain is applied to the final or master output of " -"the synthesizer; it is set to a low value by default to avoid the saturation " -"of the output when random MIDI files are played." -msgstr "" -"* Guany del sintetitzador *\n" -"De la documentació del FluidSynth: el guany s'aplica a la sortida final o " -"màster del sintetitzador; per defecte és un valor baix, per a evitar la " -"saturació de la sortida quan es reprodueixen fitxers MIDI arbitraris." - -#: src/amidi-plug/i_configure-fluidsynth.c:647 -msgid "" -"* Synthesizer polyphony *\n" -"From FluidSynth docs: the polyphony defines how many voices can be played in " -"parallel; the number of voices is not necessarily equivalent to the number " -"of notes played simultaneously; indeed, when a note is struck on a specific " -"MIDI channel, the preset on that channel may create several voices, for " -"example, one for the left audio channel and one for the right audio " -"channels; the number of voices activated depends on the number of instrument " -"zones that fall in the correspond to the velocity and key of the played note." -msgstr "" -"* Polifonia *\n" -"De la documentació del FluidSynth: la polifonia defineix quantes veus poden " -"ser reproduïdes en paral·lel; el nombre de veus no és necessàriament " -"equivalent al nombre de notes que sonen de forma simultània; quan una nota " -"sona en un canal MIDI específic, el perfil del canal pot crear diverses " -"veus, per exemple, una per al canal de so esquerre i una altra per al canal " -"dret; el nombre de veus que s'activen depèn del nombre de zones " -"d'instruments que s'activen, depenent de la velocitat i la clau de la nota " -"reproduïda." - -#: src/amidi-plug/i_configure-fluidsynth.c:657 -#: src/amidi-plug/i_configure-fluidsynth.c:663 -msgid "" -"* Synthesizer reverb *\n" -"From FluidSynth docs: when set to \"yes\" the reverb effects module is " -"activated; note that when the reverb module is active, the amount of signal " -"sent to the reverb module depends on the \"reverb send\" generator defined " -"in the SoundFont." -msgstr "" -"* Reverberació del sintetitzador *\n" -"De la documentació del FluidSynth: aquesta opció activa el mòdul d'efecte de " -"reverberació; tingueu en compte que la quantitat de senyal que s'envia al " -"mòdul de reverberació depèn del generador \"reverb send\" definit a la " -"SoundFont." - -#: src/amidi-plug/i_configure-fluidsynth.c:669 -#: src/amidi-plug/i_configure-fluidsynth.c:675 -msgid "" -"* Synthesizer chorus *\n" -"From FluidSynth docs: when set to \"yes\" the chorus effects module is " -"activated; note that when the chorus module is active, the amount of signal " -"sent to the chorus module depends on the \"chorus send\" generator defined " -"in the SoundFont." -msgstr "" -"* Cor del sintetitzador *\n" -"De la documentació de FluidSynth: aquesta opció activa el mòdul d'efecte de " -"cor; tingueu en compte que quan el mòdul de cor està actiu, la quantitat de " -"senyal enviada al mòdul de cor depèn del generador \"chorus send\" definit a " -"la SoundFont." - -#: src/amidi-plug/i_configure-fluidsynth.c:681 -#: src/amidi-plug/i_configure-fluidsynth.c:685 -#: src/amidi-plug/i_configure-fluidsynth.c:689 -#: src/amidi-plug/i_configure-fluidsynth.c:693 -#, fuzzy -msgid "" -"* Synthesizer samplerate *\n" -"The sample rate of the audio generated by the synthesizer. You can also " -"specify a custom value in the interval 22050Hz-96000Hz." -msgstr "" -"* Freqüència de mostra del sintetitzador *\n" -"Freqüència de mostra de l'àudio que genera el sintetitzador. També podeu " -"especificar un valor pertanyent a l'interval 22050Hz-96000Hz.\n" -"NOTA: els buffers per defecte estan configurats per a 44100Hz; si canvieu la " -"freqüència de mostra potser haureu de canviar també els buffers per a " -"obtenir una qualitat de so bona." - -#: src/amidi-plug/i_configure-fluidsynth.c:701 msgid "FluidSynth Backend not loaded or not available" msgstr "Fons FluidSynth no carregat o no disponible" -#: src/amidi-plug/i_configure-fluidsynth.c:720 +#: src/amidi-plug/i_configure-fluidsynth.c:640 msgid "" "FluidSynth\n" "backend" @@ -1183,8 +352,7 @@ "Fons\n" "Timidity" -#: src/amidi-plug/i_fileinfo.c:169 src/bluetooth/gui.c:271 -#: src/sid/xs_interface.c:1769 +#: src/amidi-plug/i_fileinfo.c:169 src/sid/xs_interface.c:1769 msgid "Name:" msgstr "Nom:" @@ -1357,119 +525,119 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Activa l'OSD quan la reproducció deixa d'estar en pausa." -#: src/aosd/aosd_ui.c:168 +#: src/aosd/aosd_ui.c:180 msgid "Placement" msgstr "Posició" -#: src/aosd/aosd_ui.c:202 +#: src/aosd/aosd_ui.c:219 msgid "Relative X offset:" msgstr "Desplaçament relatiu X:" -#: src/aosd/aosd_ui.c:211 +#: src/aosd/aosd_ui.c:228 msgid "Relative Y offset:" msgstr "Desplaçament relatiu Y:" -#: src/aosd/aosd_ui.c:220 +#: src/aosd/aosd_ui.c:237 msgid "Max OSD width:" msgstr "Amplada màxima de l'OSD:" -#: src/aosd/aosd_ui.c:233 +#: src/aosd/aosd_ui.c:250 msgid "Multi-Monitor options" msgstr "Opcions multi-monitor" -#: src/aosd/aosd_ui.c:237 +#: src/aosd/aosd_ui.c:254 msgid "Display OSD using:" msgstr "Mostra l'OSD en:" -#: src/aosd/aosd_ui.c:239 +#: src/aosd/aosd_ui.c:265 msgid "all monitors" msgstr "tots els monitors" -#: src/aosd/aosd_ui.c:242 +#: src/aosd/aosd_ui.c:268 #, c-format msgid "monitor %i" msgstr "el monitor %i" -#: src/aosd/aosd_ui.c:295 +#: src/aosd/aosd_ui.c:323 msgid "Timing (ms)" msgstr "Durada (ms)" -#: src/aosd/aosd_ui.c:300 +#: src/aosd/aosd_ui.c:328 msgid "Display:" msgstr "Visible:" -#: src/aosd/aosd_ui.c:305 +#: src/aosd/aosd_ui.c:333 msgid "Fade in:" msgstr "Fosa entrant:" -#: src/aosd/aosd_ui.c:310 +#: src/aosd/aosd_ui.c:338 msgid "Fade out:" msgstr "Fosa sortint:" -#: src/aosd/aosd_ui.c:391 +#: src/aosd/aosd_ui.c:419 msgid "Fonts" msgstr "Foses" -#: src/aosd/aosd_ui.c:399 +#: src/aosd/aosd_ui.c:427 #, c-format msgid "Font %i:" msgstr "Fosa %i:" -#: src/aosd/aosd_ui.c:416 +#: src/aosd/aosd_ui.c:444 msgid "Shadow" msgstr "Ombra" -#: src/aosd/aosd_ui.c:451 +#: src/aosd/aosd_ui.c:479 msgid "Internationalization" msgstr "Internacionalització" -#: src/aosd/aosd_ui.c:457 +#: src/aosd/aosd_ui.c:485 msgid "Disable UTF-8 conversion of text (in aosd)" msgstr "Desactiva la conversió del text a UTF-8 (a l'aosd)" -#: src/aosd/aosd_ui.c:475 +#: src/aosd/aosd_ui.c:503 msgid "Select Skin File" msgstr "Seleccioneu un fitxer de decoració" -#: src/aosd/aosd_ui.c:586 +#: src/aosd/aosd_ui.c:614 msgid "Render Style" msgstr "Estil de representació" -#: src/aosd/aosd_ui.c:602 +#: src/aosd/aosd_ui.c:630 msgid "Colors" msgstr "Colors" -#: src/aosd/aosd_ui.c:615 +#: src/aosd/aosd_ui.c:643 #, c-format msgid "Color %i:" msgstr "Color %i:" -#: src/aosd/aosd_ui.c:635 +#: src/aosd/aosd_ui.c:663 msgid "Custom Skin" msgstr "Decoració personalitzada" -#: src/aosd/aosd_ui.c:641 +#: src/aosd/aosd_ui.c:669 msgid "Skin file:" msgstr "Fitxer de decoració:" -#: src/aosd/aosd_ui.c:644 src/sid/xs_interface.c:1044 +#: src/aosd/aosd_ui.c:672 src/sid/xs_interface.c:1044 #: src/sid/xs_interface.c:1236 src/sid/xs_interface.c:1292 msgid "Browse" msgstr "Explora" -#: src/aosd/aosd_ui.c:746 +#: src/aosd/aosd_ui.c:774 msgid "Enable trigger" msgstr "Habilita activador" -#: src/aosd/aosd_ui.c:773 +#: src/aosd/aosd_ui.c:801 msgid "Event" msgstr "Esdeveniment" -#: src/aosd/aosd_ui.c:801 +#: src/aosd/aosd_ui.c:829 msgid "Composite manager detected" msgstr "S'ha detectat un gestor Composite" -#: src/aosd/aosd_ui.c:808 +#: src/aosd/aosd_ui.c:836 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -1479,73 +647,73 @@ "tret que sapigueu que ja n'està funcionant un, activeu un gestor Composite o " "l'OSD no funcionarà correctament" -#: src/aosd/aosd_ui.c:816 +#: src/aosd/aosd_ui.c:844 msgid "Composite manager not required for fake transparency" msgstr "La transparència simulada no requereix un gestor Composite" -#: src/aosd/aosd_ui.c:854 +#: src/aosd/aosd_ui.c:882 msgid "Transparency" msgstr "Transparència" -#: src/aosd/aosd_ui.c:860 +#: src/aosd/aosd_ui.c:888 msgid "Fake transparency" msgstr "Transparència simulada" -#: src/aosd/aosd_ui.c:862 +#: src/aosd/aosd_ui.c:890 msgid "Real transparency (requires X Composite Ext.)" msgstr "Transparència real (requereix l'ext. X composite)" -#: src/aosd/aosd_ui.c:904 +#: src/aosd/aosd_ui.c:932 msgid "Composite extension not loaded" msgstr "L'extensió Composite no està carregada" -#: src/aosd/aosd_ui.c:912 +#: src/aosd/aosd_ui.c:940 msgid "Composite extension not available" msgstr "L'extensió Composite no està disponible" -#: src/aosd/aosd_ui.c:931 +#: src/aosd/aosd_ui.c:959 #, c-format msgid "Audacious OSD" msgstr "OSD de l'Audacious" -#: src/aosd/aosd_ui.c:1012 +#: src/aosd/aosd_ui.c:1040 msgid "Audacious OSD - configuration" msgstr "Audacious OSD - Configuració" -#: src/aosd/aosd_ui.c:1033 +#: src/aosd/aosd_ui.c:1061 msgid "Test" msgstr "Prova" -#: src/aosd/aosd_ui.c:1048 +#: src/aosd/aosd_ui.c:1076 msgid "Position" msgstr "Posició" -#: src/aosd/aosd_ui.c:1053 +#: src/aosd/aosd_ui.c:1081 msgid "Animation" msgstr "Animació" -#: src/aosd/aosd_ui.c:1058 +#: src/aosd/aosd_ui.c:1086 msgid "Text" msgstr "Text" -#: src/aosd/aosd_ui.c:1063 +#: src/aosd/aosd_ui.c:1091 msgid "Decoration" msgstr "Decoració" -#: src/aosd/aosd_ui.c:1068 +#: src/aosd/aosd_ui.c:1096 msgid "Trigger" msgstr "Llançador" -#: src/aosd/aosd_ui.c:1073 src/cdaudio-ng/configure.c:178 -#: src/modplug/gui/interface.cxx:689 src/sid/xs_interface.c:1302 +#: src/aosd/aosd_ui.c:1101 src/cdaudio-ng/configure.c:171 +#: src/sid/xs_interface.c:1302 msgid "Misc" msgstr "Misc" -#: src/aosd/aosd_ui.c:1110 +#: src/aosd/aosd_ui.c:1138 msgid "Audacious OSD - about" msgstr "Quant a l'OSD de l'Audacious" -#: src/aosd/aosd_ui.c:1140 +#: src/aosd/aosd_ui.c:1168 msgid "" "\n" "Audacious OSD " @@ -1553,7 +721,7 @@ "\n" "Audacious OSD " -#: src/aosd/aosd_ui.c:1141 +#: src/aosd/aosd_ui.c:1169 msgid "" "\n" "http://www.develia.org/projects.php?p=audacious#aosd\n" @@ -1575,133 +743,6 @@ "http://neugierig.org/software/ghosd/\n" "\n" -#: src/bluetooth/agent.c:356 src/bluetooth/agent.c:397 -#, c-format -msgid "Pairing request for '%s'" -msgstr "" - -#: src/bluetooth/agent.c:544 -#, c-format -msgid "Authorization request for %s" -msgstr "" - -#: src/bluetooth/agent.c:728 -#, c-format -msgid "Created bonding with %s" -msgstr "" - -#: src/bluetooth/agent.c:756 -#, c-format -msgid "Removed bonding with %s" -msgstr "" - -#: src/bluetooth/agent.c:808 -msgid "Device has been switched off" -msgstr "" - -#: src/bluetooth/agent.c:811 -msgid "Device has been made non-discoverable" -msgstr "" - -#: src/bluetooth/agent.c:813 -msgid "Device has been made connectable" -msgstr "" - -#: src/bluetooth/agent.c:815 -msgid "Device has been made discoverable" -msgstr "" - -#: src/bluetooth/agent.c:817 -msgid "Device has been made limited discoverable" -msgstr "" - -#: src/bluetooth/agent.c:819 -msgid "Device has been switched into pairing mode" -msgstr "" - -#: src/bluetooth/bluetooth.c:117 -msgid "Bluetooth headset support plugin" -msgstr "" - -#: src/bluetooth/bluetooth.c:118 -msgid "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the " -"Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" -msgstr "" - -#: src/bluetooth/gui.c:148 -msgid "Producer" -msgstr "" - -#: src/bluetooth/gui.c:221 -#, fuzzy -msgid "Available Headsets" -msgstr "Aplicacions de fons disponibles" - -#: src/bluetooth/gui.c:224 -#, fuzzy -msgid "Current Headset" -msgstr "Actual" - -#: src/bluetooth/gui.c:227 -#, fuzzy -msgid "_Refresh" -msgstr "Velocitat de refresc" - -#: src/bluetooth/gui.c:231 -#, fuzzy -msgid "_Connect" -msgstr "Connexió" - -#: src/bluetooth/gui.c:237 -#, fuzzy -msgid "_Close" -msgstr "Tanca" - -#: src/bluetooth/gui.c:274 -#, fuzzy -msgid "Class" -msgstr "Clàssica" - -#: src/bluetooth/gui.c:278 -#, fuzzy -msgid "Address:" -msgstr "Adreça del dispositiu" - -#: src/bluetooth/scan_gui.c:69 -msgid "Bonding finish!" -msgstr "" - -#: src/bluetooth/scan_gui.c:76 -msgid "No devices found!" -msgstr "" - -#: src/bluetooth/scan_gui.c:119 -msgid "Scanning..." -msgstr "" - -#: src/bluetooth/scan_gui.c:122 -msgid "Pairing..." -msgstr "" - -#: src/bluetooth/scan_gui.c:138 -#, fuzzy -msgid "Rescan" -msgstr "Rellegeix el CD" - -#: src/bluetooth/scan_gui.c:142 src/gtkui/ui_manager.c:66 -#: src/gtkui/ui_manager.c:67 src/hotkey/gui.c:71 src/skins/ui_manager.c:167 -#: src/skins/ui_manager.c:168 -msgid "Play" -msgstr "Reprodueix" - #: src/blur_scope/config.c:73 msgid "Blur Scope: Color selection" msgstr "Oscil·loscopi difús: Selecció de color" @@ -1710,12 +751,12 @@ msgid "Options:" msgstr "Opcions:" -#: src/cdaudio-ng/cdaudio-ng.c:278 +#: src/cdaudio-ng/cdaudio-ng.c:264 #, fuzzy msgid "About Audio CD Plugin" msgstr "Quant al connector d'àudio FLAC" -#: src/cdaudio-ng/cdaudio-ng.c:279 +#: src/cdaudio-ng/cdaudio-ng.c:265 #, fuzzy msgid "" "Copyright (c) 2007, by Calin Crisan and The Audacious " @@ -1741,128 +782,163 @@ "\n" "Això va ser un projecte del Google Summer of Code de 2007." -#: src/cdaudio-ng/configure.c:155 +#: src/cdaudio-ng/cdaudio-ng.c:558 +#, fuzzy +msgid "Audio CD" +msgstr "Àudio" + +#: src/cdaudio-ng/cdaudio-ng.c:913 +msgid "Drive is empty." +msgstr "" + +#: src/cdaudio-ng/cdaudio-ng.c:915 +msgid "Unsupported disk type." +msgstr "" + +#: src/cdaudio-ng/configure.c:148 msgid "CD Audio Plugin Configuration" msgstr "Configuració del connector Audio CD" -#: src/cdaudio-ng/configure.c:167 +#: src/cdaudio-ng/configure.c:160 msgid "Digital audio extraction" msgstr "Extracció d'àudio digital" -#: src/cdaudio-ng/configure.c:172 +#: src/cdaudio-ng/configure.c:165 msgid "Title information" msgstr "Informació dels títols" -#: src/cdaudio-ng/configure.c:190 +#: src/cdaudio-ng/configure.c:176 #, fuzzy msgid "Disc speed:" msgstr "Velocitat del rellotge:" -#: src/cdaudio-ng/configure.c:198 +#: src/cdaudio-ng/configure.c:184 msgid "Use cd-text if available" msgstr "Usa CD-Text si està disponible" -#: src/cdaudio-ng/configure.c:205 +#: src/cdaudio-ng/configure.c:191 msgid "Use CDDB if available" msgstr "Usa CDDB si està disponible" -#: src/cdaudio-ng/configure.c:211 +#: src/cdaudio-ng/configure.c:197 msgid "Server: " msgstr "Servidor: " -#: src/cdaudio-ng/configure.c:215 +#: src/cdaudio-ng/configure.c:201 msgid "Path: " msgstr "Camí: " -#: src/cdaudio-ng/configure.c:219 +#: src/cdaudio-ng/configure.c:205 msgid "Port: " msgstr "Port: " -#: src/cdaudio-ng/configure.c:232 +#: src/cdaudio-ng/configure.c:218 msgid "Use HTTP instead of CDDBP" msgstr "Usa HTTP en lloc de CDDBP" -#: src/cdaudio-ng/configure.c:244 +#: src/cdaudio-ng/configure.c:230 msgid "Override default device: " msgstr "Ignora el dispositiu per defecte:" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:131 +#: src/echo_plugin/gui.c:123 src/jack/configure.c:146 src/null/null.c:112 +#: src/stereo_plugin/stereo.c:125 +msgid "Ok" +msgstr "D'acord" + +#: src/cdaudio-ng/configure.c:249 src/crystalizer/crystalizer.c:138 +#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 src/null/null.c:113 +#: src/stereo_plugin/stereo.c:132 +msgid "Cancel" +msgstr "Cancel·la" + +#: src/cd-menu-items/cd-menu-items.c:34 #, fuzzy msgid "Play CD" msgstr "Reprodueix" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Add CD" msgstr "Afegeix CD" -#: src/compressor/plugin.c:58 +#: src/compressor/plugin.c:67 #, fuzzy msgid "About Dynamic Range Compression Plugin" msgstr "Quant al connector d'estèreo extra" -#: src/compressor/plugin.c:91 +#: src/compressor/plugin.c:99 #, fuzzy msgid "Dynamic Range Compressor Preferences" msgstr "Preferències per a l'AudioCompress" -#: src/compressor/plugin.c:103 +#: src/compressor/plugin.c:111 #, fuzzy -msgid "Target volume:" +msgid "Center volume:" msgstr "Canvia el volum" -#: src/compressor/plugin.c:116 -#, fuzzy -msgid "Effect strength:" -msgstr "Intensitat de l'efecte:" +#: src/compressor/plugin.c:124 +msgid "Dynamic range:" +msgstr "" -#: src/console/configure.c:137 +#: src/console/configure.c:138 #, fuzzy msgid "Game Console Music Decoder" msgstr "Descodificador de música de consoles" -#: src/console/configure.c:171 -msgid "Bass:" -msgstr "Baixos:" +#: src/console/configure.c:155 +msgid "General" +msgstr "General" + +#: src/console/configure.c:157 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "Reproducció" + +#: src/console/configure.c:172 +msgid "Bass:" +msgstr "Baixos:" -#: src/console/configure.c:175 src/console/configure.c:186 -#: src/console/configure.c:207 +#: src/console/configure.c:176 src/console/configure.c:187 +#: src/console/configure.c:208 msgid "secs" msgstr "segons" -#: src/console/configure.c:182 +#: src/console/configure.c:183 msgid "Treble:" msgstr "Aguts:" -#: src/console/configure.c:203 +#: src/console/configure.c:204 msgid "Default song length:" msgstr "Durada per defecte:" -#: src/console/configure.c:209 src/modplug/gui/interface.cxx:269 -#: src/sid/xs_interface.c:666 +#: src/console/configure.c:210 src/sid/xs_interface.c:666 msgid "Resampling" msgstr "Remostratge" -#: src/console/configure.c:215 +#: src/console/configure.c:216 msgid "Enable audio resampling" msgstr "Activa el remostratge d'àudio" -#: src/console/configure.c:230 +#: src/console/configure.c:231 msgid "Resampling rate:" msgstr "Taxa de remostratge:" -#: src/console/configure.c:245 +#: src/console/configure.c:235 src/sid/xs_interface.c:354 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:246 msgid "SPC" msgstr "SPC" -#: src/console/configure.c:246 +#: src/console/configure.c:247 msgid "Ignore length from SPC tags" msgstr "Ignora la durada indicada a les etiquetes SPC" -#: src/console/configure.c:247 +#: src/console/configure.c:248 msgid "Increase reverb" msgstr "Incrementa la reverberació" -#: src/console/configure.c:272 +#: src/console/configure.c:273 msgid "" "The default song length, expressed in seconds, is used for songs that do not " "provide length information (i.e. looping tracks)." @@ -1889,31 +965,31 @@ "Implemetació en l'Audacious per: William Pitcock ,\n" "Shay Green " -#: src/crossfade/plugin.c:51 +#: src/crossfade/plugin.c:65 #, fuzzy msgid "About Crossfade" msgstr "Quant al connector Scrobbler" -#: src/crossfade/plugin.c:84 +#: src/crossfade/plugin.c:97 #, fuzzy msgid "Crossfade Preferences" msgstr "Preferències" -#: src/crossfade/plugin.c:95 +#: src/crossfade/plugin.c:109 msgid "Overlap (in seconds):" msgstr "" -#: src/crossfade/plugin.c:129 src/crossfade/plugin.c:137 +#: src/crossfade/plugin.c:140 src/crossfade/plugin.c:146 #, fuzzy msgid "Crossfade Error" msgstr "Crossover" -#: src/crossfade/plugin.c:130 +#: src/crossfade/plugin.c:140 msgid "" "Crossfading failed because the songs had a different number of channels." msgstr "" -#: src/crossfade/plugin.c:138 +#: src/crossfade/plugin.c:148 msgid "" "Crossfading failed because the songs had different sample rates.\n" "\n" @@ -1921,20 +997,24 @@ "same rate." msgstr "" -#: src/crystalizer/crystalizer.c:104 +#: src/crystalizer/crystalizer.c:108 msgid "Configure Crystalizer" msgstr "Configuració del Crystalizer" -#: src/crystalizer/crystalizer.c:106 src/stereo_plugin/stereo.c:102 +#: src/crystalizer/crystalizer.c:110 src/stereo_plugin/stereo.c:104 msgid "Effect intensity:" msgstr "Intensitat de l'efecte:" -#: src/crystalizer/crystalizer.c:143 src/echo_plugin/gui.c:137 -#: src/modplug/gui/interface.cxx:709 src/stereo_plugin/stereo.c:139 +#: src/crystalizer/crystalizer.c:144 src/echo_plugin/gui.c:136 +#: src/stereo_plugin/stereo.c:138 msgid "Apply" msgstr "Aplica" -#: src/echo_plugin/gui.c:14 +#: src/daemon/daemon.c:58 +msgid "Daemon Interface (like old headless mode)" +msgstr "" + +#: src/echo_plugin/gui.c:15 msgid "" "Echo Plugin\n" "By Johan Levin 1999.\n" @@ -1946,413 +1026,52 @@ "\n" "Eco envolvent per Carl van Schaik, 1999." -#: src/echo_plugin/gui.c:26 +#: src/echo_plugin/gui.c:27 msgid "About Echo Plugin" msgstr "Quant al connector d'eco" -#: src/echo_plugin/gui.c:69 +#: src/echo_plugin/gui.c:72 msgid "Configure Echo" msgstr "Configuració de l'eco" -#: src/echo_plugin/gui.c:82 +#: src/echo_plugin/gui.c:88 msgid "Delay: (ms)" msgstr "Retard: (ms)" -#: src/echo_plugin/gui.c:87 +#: src/echo_plugin/gui.c:93 msgid "Feedback: (%)" msgstr "Retorn: (%)" -#: src/echo_plugin/gui.c:92 +#: src/echo_plugin/gui.c:98 msgid "Volume: (%)" msgstr "Volum: (%)" -#: src/evdev-plug/ed.c:60 -msgid "Playback->Play" -msgstr "Reproducció->Reprodueix" - -#: src/evdev-plug/ed.c:61 -msgid "Playback->Stop" -msgstr "Reproducció->Para" - -#: src/evdev-plug/ed.c:62 -msgid "Playback->Pause" -msgstr "Reproducció->Pausa" - -#: src/evdev-plug/ed.c:63 -msgid "Playback->Prev" -msgstr "Reproducció->Anterior" - -#: src/evdev-plug/ed.c:64 -msgid "Playback->Next" -msgstr "Reproducció->Següent" - -#: src/evdev-plug/ed.c:65 -msgid "Playback->Eject" -msgstr "Reproducció->Expulsa" - -#: src/evdev-plug/ed.c:67 -msgid "Playlist->Repeat" -msgstr "Llista de reproducció->Repeteix" - -#: src/evdev-plug/ed.c:68 -msgid "Playlist->Shuffle" -msgstr "Llista de reproducció->Barreja" - -#: src/evdev-plug/ed.c:70 -msgid "Volume->Up_5" -msgstr "Volum->Amunt_5" - -#: src/evdev-plug/ed.c:71 -msgid "Volume->Down_5" -msgstr "Volum->Avall_5" - -#: src/evdev-plug/ed.c:72 -msgid "Volume->Up_10" -msgstr "Volum->Amunt_10" - -#: src/evdev-plug/ed.c:73 -msgid "Volume->Down_10" -msgstr "Volum->Avall_10" - -#: src/evdev-plug/ed.c:74 -msgid "Volume->Mute" -msgstr "Volum->Silenciat" - -#: src/evdev-plug/ed.c:76 -msgid "Window->Main" -msgstr "Finestra->Principal" - -#: src/evdev-plug/ed.c:77 -msgid "Window->Playlist" -msgstr "Finestra->Llista de reproducció" - -#: src/evdev-plug/ed.c:78 -msgid "Window->Equalizer" -msgstr "Finestra->Equalitzador" - -#: src/evdev-plug/ed.c:79 -msgid "Window->JumpToFile" -msgstr "Finestra->SaltaAlFitxer" - -#: src/evdev-plug/ed_internals.c:94 -#, c-format -msgid "" -"event-device-plugin: unable to open device file %s , skipping this device; " -"check that the file exists and that you have read permission for it\n" -msgstr "" -"event-device-plugin: no s'ha pogut obrir el fitxer de dispositiu %s, s'omet " -"aquest dispositiu; comproveu que el fitxer existeix i que teniu permís de " -"lectura\n" - -#: src/evdev-plug/ed_internals.c:103 -#, c-format -msgid "" -"event-device-plugin: unable to create a io_channel for device file %s ," -"skipping this device\n" -msgstr "" -"event-device-plugin: no s'ha pogut crear un canal e/s pel fitxer de " -"dispositiu %s, s'omet aquest dispositiu\n" - -#: src/evdev-plug/ed_internals.c:342 -msgid "" -"event-device-plugin: unable to open /proc/bus/input/devices , automatic " -"detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: no s'ha pogut obrir /proc/bus/input/devices, no " -"funcionarà la detecció automàtica de dispositius.\n" - -#: src/evdev-plug/ed_internals.c:351 -msgid "" -"event-device-plugin: unable to open a io_channel for /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: no s'ha pogut obrir un canal e/s per a /proc/bus/input/" -"devices, la detecció automàtica de dispositius no funcionarà.\n" - -#: src/evdev-plug/ed_internals.c:361 -msgid "" -"event-device-plugin: an error occurred while reading /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: s'ha produït un error en llegir /proc/bus/input/" -"devices, la detecció automàtica de dispositius no funcionarà.\n" - -#: src/evdev-plug/ed_internals.c:424 -#, c-format -msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" -msgstr "" -"event-device-plugin: el dispositiu %s no s'ha trobat a /dev/input, s'omet.\n" - -#: src/evdev-plug/ed_internals.c:489 src/evdev-plug/ed_internals.c:583 -#, c-format -msgid "" -"event-device-plugin: unable to load config file %s , default settings will " -"be used.\n" -msgstr "" -"event-device-plugin: no s'ha pogut carregar el fitxer de configuració %s, " -"s'utilitzaran els paràmetres per defecte.\n" - -#: src/evdev-plug/ed_internals.c:535 -#, c-format -msgid "" -"event-device-plugin: incomplete information in config file for device \"%s" -"\" , skipping.\n" -msgstr "" -"event-device-plugin: informació incompleta en el fitxer de config per al " -"dispositiu \"%s\", s'omet.\n" - -#: src/evdev-plug/ed_internals.c:604 src/evdev-plug/ed_internals.c:936 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_active value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: configuració, no s'ha pogut obtenir el valor is_active " -"pel dispositiu \"%s\", s'omet.\n" - -#: src/evdev-plug/ed_internals.c:840 -#, c-format -msgid "" -"event-device-plugin: unable to access local directory %s , settings will not " -"be saved.\n" -msgstr "" -"event-device-plugin: no s'ha pogut accedir al directori local %s, no es " -"desaran les preferències.\n" - -#: src/evdev-plug/ed_internals.c:890 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get filename value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: configuració, no s'ha pogut obtenir el valor filename " -"per al dispositiu \"%s\", s'omet.\n" - -#: src/evdev-plug/ed_internals.c:906 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get phys value for device \"%s" -"\", skipping it.\n" -msgstr "" -"event-device-plugin: configuració, no s'ha pogut el valor get phys per al " -"dispositiu \"%s\", s'omet.\n" - -#: src/evdev-plug/ed_internals.c:922 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_custom value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: configuració, no s'ha pogut obtenir el valor is_custom " -"per al dispositiu \"%s\", s'omet.\n" - -#: src/evdev-plug/ed_internals.c:946 -#, c-format -msgid "" -"event-device-plugin: configuration, unexpected value for device \"%s\", " -"skipping it.\n" -msgstr "" -"event-device-plugin: configuració, valor inesperat per al dispositiu \"%s\", " -"s'omet.\n" - -#: src/evdev-plug/ed_ui.c:212 -#, fuzzy -msgid "Detected" -msgstr "Detecta el final de la pista" - -#: src/evdev-plug/ed_ui.c:217 -#, fuzzy -msgid "Custom" -msgstr "personalitzat" - -#: src/evdev-plug/ed_ui.c:223 -#, fuzzy -msgid "Not Detected" -msgstr "Ordena els seleccionats" - -#: src/evdev-plug/ed_ui.c:275 src/evdev-plug/ed_ui.c:411 -#: src/evdev-plug/ed_ui.c:874 -msgid "Information" -msgstr "Informació" - -#: src/evdev-plug/ed_ui.c:276 -msgid "" -"Cannot open bindings window for a not-detected device.\n" -"Ensure that the device has been correctly plugged in." -msgstr "" -"No es pot obrir la finestra de vincles per a un dispositiu no detectat.\n" -"Assegureu-vos que el dispositiu està ben endollat." - -#: src/evdev-plug/ed_ui.c:319 -msgid "Error" -msgstr "Error" - -#: src/evdev-plug/ed_ui.c:320 -msgid "" -"Unable to open selected device.\n" -"Please check read permissions on device file." -msgstr "" -"No es pot obrir el dispositiu seleccionat.\n" -"Comproveu que teniu permís de lectura per a aquest dispositiu." - -#: src/evdev-plug/ed_ui.c:341 -msgid "EvDev-Plug - Add custom device" -msgstr "EvDev-Plug - Afegiu un dispositiu personalitzat" - -#: src/evdev-plug/ed_ui.c:353 -msgid "" -"EvDev-Plug tries to automatically detect and update information about\n" -"event devices available on the system.\n" -"However, if auto-detect doesn't work for your system, or you have event\n" -"devices in a non-standard location (currently they're only searched in\n" -"/dev/input/ ), you may want to add a custom device, explicitly specifying\n" -"name and device file." -msgstr "" -"EvDev-Plug intenta detectar i actualitzar informació sobre dispositius\n" -"d'esdeveniments disponibles al sistema de manera automàtica.\n" -"De totes maneres, si l'auto-detecció no funciona en el vostre sistema, o bé\n" -"teniu dispositius d'esdeveniments en ubicacions no-estàndard (actualment\n" -"només es busquen a /dev/input/), potser voldreu afegir un dispositiu\n" -"personalitzat, especificant explícitament el nom i el fitxer del dispositiu." - -#: src/evdev-plug/ed_ui.c:361 -msgid "Device name:" -msgstr "Nom del dispositiu:" - -#: src/evdev-plug/ed_ui.c:365 -msgid "Device file:" -msgstr "Fitxer del dispositiu:" - -#: src/evdev-plug/ed_ui.c:404 -#, fuzzy -msgid "(custom)" -msgstr "personalitzat" - -#: src/evdev-plug/ed_ui.c:412 -msgid "" -"Please specify both name and filename.\n" -"Filename must be specified with absolute path." -msgstr "" -"Si us plau, especifiqueu un nom i un fitxer.\n" -"El fitxer s'ha d'especificar amb un camí absolut." - -#: src/evdev-plug/ed_ui.c:447 -msgid "Do you want to remove the existing configuration for selected device?\n" -msgstr "" -"Voleu eliminar la configuració existent per al dispositiu seleccionat?\n" - -#: src/evdev-plug/ed_ui.c:466 -msgid "Do you want to remove the selected custom device?\n" -msgstr "Voleu eliminar el dispositiu seleccionat?\n" - -#: src/evdev-plug/ed_ui.c:612 -msgid "EvDev-Plug - Configuration" -msgstr "EvDev-Plug - Configuració" - -#: src/evdev-plug/ed_ui.c:651 -msgid "Active" -msgstr "Actiu" - -#: src/evdev-plug/ed_ui.c:655 src/sun/configure.c:486 -msgid "Status" -msgstr "Estat" - -#: src/evdev-plug/ed_ui.c:664 -msgid "Device Name" -msgstr "Nom del dispositiu" - -#: src/evdev-plug/ed_ui.c:668 -msgid "Device File" -msgstr "Fitxer del dispositiu" - -#: src/evdev-plug/ed_ui.c:672 -msgid "Device Address" -msgstr "Adreça del dispositiu" - -#: src/evdev-plug/ed_ui.c:689 -msgid "_Bindings" -msgstr "_Vincles" - -#: src/evdev-plug/ed_ui.c:838 -msgid "" -"Press a key of your device to bind it;\n" -"if no key is pressed in five seconds, this window\n" -"will close without binding changes." -msgstr "" -"Premeu una tecla del dispositiu per a vincular-la;\n" -"si no premeu cap tecla en 5 segons, aquesta finestra\n" -"es tancarà sense fer cap canvi." - -#: src/evdev-plug/ed_ui.c:875 -msgid "" -"This input event has been already assigned.\n" -"\n" -"It's not possible to assign multiple actions to the same input event " -"(although it's possible to assign the same action to multiple events)." -msgstr "" -"Aquest esdeveniment d'entrada ja està assignat.\n" -"\n" -"No és possible assignar múltiples accions al mateix esdeveniment d'entrada " -"(és possible assignar la mateixa acció a múltiples esdeveniments, però)." - -#: src/evdev-plug/ed_ui.c:1323 -msgid "EvDev-Plug - Bindings Configuration" -msgstr "EvDev-Plug - Configuració dels vincles" - -#: src/evdev-plug/ed_ui.c:1363 -msgid "Name: " -msgstr "Nom: " - -#: src/evdev-plug/ed_ui.c:1372 -msgid "Filename: " -msgstr "Nom del fitxer: " - -#: src/evdev-plug/ed_ui.c:1381 -msgid "Phys.Address: " -msgstr "Adreça física: " - -#: src/evdev-plug/ed_ui.c:1460 -msgid "EvDev-Plug - about" -msgstr "Quant al connector EvDev-Plug" - -#: src/evdev-plug/ed_ui.c:1491 -msgid "" -"\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"written by Giacomo Lozito\n" -msgstr "" -"\n" -"control remot del reproductor via dispositius d'esdeveniments\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"escrit per Giacomo Lozito\n" - -#: src/ffaudio/ffaudio-core.c:662 +#: src/ffaudio/ffaudio-core.c:763 #, c-format msgid "" "Multi-format audio decoding plugin for Audacious based on\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" "Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" "\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" "Audacious plugin by:\n" " William Pitcock ,\n" " Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" msgstr "" -#: src/ffaudio/ffaudio-core.c:675 +#: src/ffaudio/ffaudio-core.c:777 #, fuzzy msgid "About FFaudio Plugin" msgstr "Quant al connector d'àudio FLAC" -#: src/filewriter/filewriter.c:180 +#: src/filewriter/filewriter.c:155 msgid "About FileWriter-Plugin" msgstr "Quant al connector FileWriter" -#: src/filewriter/filewriter.c:181 +#: src/filewriter/filewriter.c:156 #, fuzzy msgid "" "FileWriter-Plugin\n" @@ -2389,250 +1108,208 @@ "Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" "Boston, MA 02110-1301, USA." -#: src/filewriter/filewriter.c:466 +#: src/filewriter/filewriter.c:450 msgid "File Writer Configuration" msgstr "Configuració de l'escriptura al disc" -#: src/filewriter/filewriter.c:478 +#: src/filewriter/filewriter.c:462 msgid "Output file format:" msgstr "Format del fitxer de sortida:" -#: src/filewriter/filewriter.c:496 src/ladspa/ladspa.c:1058 +#: src/filewriter/filewriter.c:480 msgid "Configure" msgstr "Configuració" -#: src/filewriter/filewriter.c:511 +#: src/filewriter/filewriter.c:495 msgid "Save into original directory" msgstr "Desa al directori original" -#: src/filewriter/filewriter.c:516 +#: src/filewriter/filewriter.c:500 msgid "Save into custom directory" msgstr "Desa a un altre directori" -#: src/filewriter/filewriter.c:528 +#: src/filewriter/filewriter.c:510 msgid "Output file folder:" msgstr "Directori de sortida:" -#: src/filewriter/filewriter.c:532 +#: src/filewriter/filewriter.c:514 msgid "Pick a folder" msgstr "Trieu un directori" -#: src/filewriter/filewriter.c:551 +#: src/filewriter/filewriter.c:533 msgid "Get filename from:" msgstr "Agafa el nom del fitxer de:" -#: src/filewriter/filewriter.c:554 +#: src/filewriter/filewriter.c:536 msgid "original file tags" msgstr "etiquetes del fitxer originals" -#: src/filewriter/filewriter.c:560 +#: src/filewriter/filewriter.c:542 msgid "original filename" msgstr "nom del fitxer original" -#: src/filewriter/filewriter.c:570 +#: src/filewriter/filewriter.c:552 msgid "Don't strip file name extension" msgstr "Deixa l'extensió del fitxer" -#: src/filewriter/filewriter.c:574 -msgid "" -"If enabled, the extension from the original filename will not be stripped " -"before adding the new file extension to the end." -msgstr "" -"Si està activat, l'extensió del nom de fitxer original no s'esborrarà abans " -"d'afegir una nova extensió al final." - -#: src/filewriter/filewriter.c:588 +#: src/filewriter/filewriter.c:567 msgid "Prepend track number to filename" msgstr "Precedeix el nom del fitxer pel nombre de pista" -#: src/filewriter/mp3.c:710 +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:783 +msgid "Auto" +msgstr "Auto" + +#: src/filewriter/mp3.c:38 +#, fuzzy +msgid "Joint Stereo" +msgstr "Estèreo conjunt" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 src/sid/xs_interface.c:308 +msgid "Stereo" +msgstr "Estèreo" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 src/sid/xs_interface.c:301 +msgid "Mono" +msgstr "Mono" + +#: src/filewriter/mp3.c:724 msgid "MP3 Configuration" msgstr "Configuració d'MP3" -#: src/filewriter/mp3.c:737 +#: src/filewriter/mp3.c:747 msgid "Algorithm Quality:" msgstr "Qualitat de l'algoritme:" -#: src/filewriter/mp3.c:759 -msgid "" -"best/slowest:0;\n" -"worst/fastest:9;\n" -"recommended:2;\n" -"default:5;" -msgstr "" -"millor/més lent:0;\n" -"pitjor/més ràpid:9;\n" -"recomanat:2;\n" -"per defecte:5;" - -#: src/filewriter/mp3.c:767 +#: src/filewriter/mp3.c:772 msgid "Output Samplerate:" msgstr "Freqüència de mostra de sortida:" -#: src/filewriter/mp3.c:778 src/filewriter/mp3.c:919 -msgid "Auto" -msgstr "Auto" - #: src/filewriter/mp3.c:800 msgid "(Hz)" msgstr "(Hz)" -#: src/filewriter/mp3.c:812 +#: src/filewriter/mp3.c:807 msgid "Bitrate / Compression ratio:" msgstr "Flux de bits / Ràtio de compressió:" -#: src/filewriter/mp3.c:838 +#: src/filewriter/mp3.c:831 msgid "Bitrate (kbps):" msgstr "Flux de bits (kbps):" -#: src/filewriter/mp3.c:879 +#: src/filewriter/mp3.c:864 msgid "Compression ratio:" msgstr "Ràtio de compressió:" -#: src/filewriter/mp3.c:909 +#: src/filewriter/mp3.c:888 msgid "Audio Mode:" msgstr "Mode d'àudio:" -#: src/filewriter/mp3.c:924 -msgid "Joint-Stereo" -msgstr "Estèreo conjunt" - -#: src/filewriter/mp3.c:967 +#: src/filewriter/mp3.c:913 msgid "Misc:" msgstr "Misc:" -#: src/filewriter/mp3.c:978 +#: src/filewriter/mp3.c:924 msgid "Enforce strict ISO complience" msgstr "Força el compliment estricte de l'estàndard ISO" -#: src/filewriter/mp3.c:989 +#: src/filewriter/mp3.c:935 msgid "Error protection" msgstr "Protecció d'errors" -#: src/filewriter/mp3.c:1001 -msgid "Adds 16 bit checksum to every frame" -msgstr "Afegeix una suma de verificació de 16 bits a cada marc" - -#: src/filewriter/mp3.c:1006 src/filewriter/vorbis.c:247 -#: src/modplug/gui/interface.cxx:320 +#: src/filewriter/mp3.c:947 src/filewriter/vorbis.c:245 msgid "Quality" msgstr "Qualitat" -#: src/filewriter/mp3.c:1018 +#: src/filewriter/mp3.c:957 msgid "Enable VBR/ABR" msgstr "Activa VBR/ABR" -#: src/filewriter/mp3.c:1030 +#: src/filewriter/mp3.c:967 msgid "Type:" msgstr "Tipus:" -#: src/filewriter/mp3.c:1041 -msgid "Variable bitrate" -msgstr "Flux de bits variable" - -#: src/filewriter/mp3.c:1053 -msgid "Average bitrate" -msgstr "Flux de bits mitjà" - -#: src/filewriter/mp3.c:1067 +#: src/filewriter/mp3.c:1000 msgid "VBR Options:" msgstr "Opcions VBR:" -#: src/filewriter/mp3.c:1083 +#: src/filewriter/mp3.c:1016 msgid "Minimum bitrate (kbps):" msgstr "Flux de bits mínim (kbps):" -#: src/filewriter/mp3.c:1119 +#: src/filewriter/mp3.c:1043 msgid "Maximum bitrate (kbps):" msgstr "Flux de bits màxim (kbps):" -#: src/filewriter/mp3.c:1151 +#: src/filewriter/mp3.c:1066 msgid "Strictly enforce minimum bitrate" msgstr "Compliment estricte el flux de bit mínim" -#: src/filewriter/mp3.c:1153 -msgid "" -"For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/" -"mp3 player)" -msgstr "" -"Per a reproductors que no suporten MP3 amb flux de bits baixos (reproductor " -"DVD/MP3 Apex AD600-A)" - -#: src/filewriter/mp3.c:1166 +#: src/filewriter/mp3.c:1078 msgid "ABR Options:" msgstr "Opcions ABR:" -#: src/filewriter/mp3.c:1176 +#: src/filewriter/mp3.c:1088 msgid "Average bitrate (kbps):" msgstr "Flux de bits mitjà (kbps):" -#: src/filewriter/mp3.c:1213 +#: src/filewriter/mp3.c:1116 msgid "VBR quality level:" msgstr "Nivell de qualitat VBR:" -#: src/filewriter/mp3.c:1228 -msgid "" -"highest:0;\n" -"lowest:9;\n" -"default:4;" -msgstr "" -"el més alt:0;\n" -"el més baix:9;\n" -"per defecte:4;" - -#: src/filewriter/mp3.c:1236 +#: src/filewriter/mp3.c:1135 msgid "Don't write Xing VBR header" msgstr "Omet escriure la capçalera VBR Xing" -#: src/filewriter/mp3.c:1250 +#: src/filewriter/mp3.c:1149 msgid "VBR/ABR" msgstr "VBR/ABR" -#: src/filewriter/mp3.c:1262 +#: src/filewriter/mp3.c:1159 msgid "Frame params:" msgstr "Paràmetres dels marcs:" -#: src/filewriter/mp3.c:1274 +#: src/filewriter/mp3.c:1171 msgid "Mark as copyright" msgstr "Marca com a copyright" -#: src/filewriter/mp3.c:1285 +#: src/filewriter/mp3.c:1182 msgid "Mark as original" msgstr "Marca com a original" -#: src/filewriter/mp3.c:1297 +#: src/filewriter/mp3.c:1194 msgid "ID3 params:" msgstr "Etiquetes ID3:" -#: src/filewriter/mp3.c:1308 +#: src/filewriter/mp3.c:1205 msgid "Force addition of version 2 tag" msgstr "Força l'afegit d'etiquetes ID3 versió 2" -#: src/filewriter/mp3.c:1318 +#: src/filewriter/mp3.c:1215 msgid "Only add v1 tag" msgstr "Només etiquetes v1" -#: src/filewriter/mp3.c:1325 +#: src/filewriter/mp3.c:1222 msgid "Only add v2 tag" msgstr "Només etiquetes v2" -#: src/filewriter/mp3.c:1346 +#: src/filewriter/mp3.c:1243 msgid "Tags" msgstr "Etiquetes" -#: src/filewriter/vorbis.c:240 +#: src/filewriter/vorbis.c:238 msgid "Vorbis Encoder Configuration" msgstr "Configuració del codificador Vorbis" -#: src/filewriter/vorbis.c:260 +#: src/filewriter/vorbis.c:258 msgid "Quality level (0 - 10):" msgstr "Nivell de qualitat (0 - 10):" -#: src/flacng/plugin.c:457 -msgid "FLAC Audio Plugin " -msgstr "Connector d'àudio FLAC " +#: src/flacng/plugin.c:379 +msgid "About FLAC Audio Plugin" +msgstr "Quant al connector d'àudio FLAC" -#: src/flacng/plugin.c:458 +#: src/flacng/plugin.c:380 msgid "" "\n" "\n" @@ -2648,15 +1325,11 @@ "\n" "http://www.skytale.net/projects/bmp-flac2/" -#: src/flacng/plugin.c:464 -msgid "About FLAC Audio Plugin" -msgstr "Quant al connector d'àudio FLAC" - -#: src/gnomeshortcuts/gnomeshortcuts.c:306 +#: src/gnomeshortcuts/gnomeshortcuts.c:303 msgid "About Gnome Shortcut Plugin" msgstr "Quant al connector de tecles ràpides de Gnome" -#: src/gnomeshortcuts/gnomeshortcuts.c:307 +#: src/gnomeshortcuts/gnomeshortcuts.c:304 msgid "" "Gnome Shortcut Plugin\n" "Let's you control the player with Gnome's shortcuts.\n" @@ -2670,494 +1343,506 @@ "Copyright (C) 2007-2008 Sascha Hlusiak \n" "\n" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:273 +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 msgid "Open Files" msgstr "" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:271 #, fuzzy msgid "Add Files" msgstr "Afegeix fitxers..." -#: src/gntui/gntui.c:271 +#: src/gntui/gntui.c:270 #, fuzzy msgid "Audacious2" msgstr "Audacious" -#: src/gntui/gntui.c:312 +#: src/gntui/gntui.c:311 msgid "gnt interface" msgstr "" -#: src/gtkui/actions.c:257 src/skins/ui_main.c:818 -msgid "Can't jump to time when no track is being played.\n" -msgstr "No es pot saltar al temps quan no s'està reproduint cap pista.\n" - -#: src/gtkui/actions.c:272 src/gtkui/ui_manager.c:204 -#: src/gtkui/ui_manager.c:205 src/skins/ui_main.c:833 -#: src/skins/ui_manager.c:410 src/skins/ui_manager.c:411 -msgid "Jump to Time" -msgstr "Salta al temps" - -#: src/gtkui/actions.c:289 src/skins/ui_main.c:854 -msgid "minutes:seconds" -msgstr "minuts:segons" - -#: src/gtkui/actions.c:299 src/skins/ui_main.c:864 -msgid "Track length:" -msgstr "Durada de la pista:" +#: src/gtkui/columns.c:36 +#, fuzzy +msgid "Entry number" +msgstr "Número de pista:" -#: src/gtkui/actions.c:610 src/skins/ui_playlist.c:648 -#, c-format -msgid "Error writing playlist \"%s\": %s" -msgstr "Error quan s'escrivia la llista de reproducció \"%s\": %s" +#: src/gtkui/columns.c:36 src/sid/xs_interface.c:1103 +msgid "Title" +msgstr "Títol" -#: src/gtkui/actions.c:625 src/skins/ui_playlist.c:670 -#, c-format -msgid "%s already exist. Continue?" -msgstr "%s ja existeix. Voleu continuar?" +#: src/gtkui/columns.c:37 +#, fuzzy +msgid "Artist" +msgstr "Artista:" -#: src/gtkui/actions.c:651 src/skins/ui_manager.c:214 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "Export Playlist" -msgstr "Carrega una llista de reproducció" +msgid "Year" +msgstr "Any:" -#: src/gtkui/actions.c:723 src/skins/ui_manager.c:211 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "Import Playlist" -msgstr "Carrega una llista de reproducció" +msgid "Album" +msgstr "Àlbum:" -#: src/gtkui/ui_gtk.c:72 -msgid "GTK Interface" -msgstr "" +#: src/gtkui/columns.c:37 +#, fuzzy +msgid "Track" +msgstr "Pista:" -#: src/gtkui/ui_gtk.c:281 src/skins/ui_main.c:388 -#, c-format -msgid "%s - Audacious" -msgstr "%s - Audacious" +#: src/gtkui/columns.c:37 +#, fuzzy +msgid "Queue position" +msgstr "Posició" -#: src/gtkui/ui_gtk.c:287 src/skins/ui_main.c:390 src/skins/ui_main.c:2166 -msgid "Audacious" -msgstr "Audacious" +#: src/gtkui/columns.c:38 +#, fuzzy +msgid "Length" +msgstr "Durada (ms):" -#: src/gtkui/ui_manager.c:35 src/gtkui/ui_manager.c:36 -#: src/skins/ui_manager.c:53 src/skins/ui_manager.c:54 -msgid "Stop after Current Song" -msgstr "Para quan s'acabi la cançó" +#: src/gtkui/columns.c:38 +#, fuzzy +msgid "File path" +msgstr "Per nom de fitxer" -#: src/gtkui/ui_manager.c:38 src/gtkui/ui_manager.c:39 -#: src/skins/ui_manager.c:59 src/skins/ui_manager.c:60 -msgid "Repeat" -msgstr "Repeteix" +#: src/gtkui/columns.c:38 +#, fuzzy +msgid "File name" +msgstr "Nom del fitxer" -#: src/gtkui/ui_manager.c:41 src/gtkui/ui_manager.c:42 -#: src/skins/ui_manager.c:62 src/skins/ui_manager.c:63 -msgid "Shuffle" -msgstr "Barreja" +#: src/gtkui/columns.c:38 +#, fuzzy +msgid "Custom title" +msgstr "Decoració personalitzada" -#: src/gtkui/ui_manager.c:44 src/gtkui/ui_manager.c:45 -#: src/skins/ui_manager.c:65 src/skins/ui_manager.c:66 -msgid "No Playlist Advance" -msgstr "Discontinua la reproducció programada" +#: src/gtkui/columns.c:39 +#, fuzzy +msgid "Bitrate" +msgstr "Para al cap de:" -#: src/gtkui/ui_manager.c:47 +#: src/gtkui/columns.c:286 #, fuzzy -msgid "Show playlists" -msgstr "Mostra l'editor de llistes" +msgid "Choose Columns" +msgstr "Mostra el reproductor" -#: src/gtkui/ui_manager.c:48 +#: src/gtkui/columns.c:300 #, fuzzy -msgid "Show/hide playlists" -msgstr "Desa una llista de reproducció" +msgid "Available:" +msgstr "variable" -#: src/gtkui/ui_manager.c:50 -msgid "Show infoarea" +#: src/gtkui/columns.c:334 +msgid "Chosen:" msgstr "" -#: src/gtkui/ui_manager.c:51 -msgid "Show/hide infoarea" +#: src/gtkui/layout.c:122 +msgid "Dock at Left" msgstr "" -#: src/gtkui/ui_manager.c:53 -#, fuzzy -msgid "Show main menu" -msgstr "Mostra la finestra principal" +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "" -#: src/gtkui/ui_manager.c:54 -msgid "Show/hide main menu" +#: src/gtkui/layout.c:123 +msgid "Dock at Top" msgstr "" -#: src/gtkui/ui_manager.c:56 -#, fuzzy -msgid "Show statusbar" -msgstr "Estat" +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "" -#: src/gtkui/ui_manager.c:57 +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "" + +#: src/gtkui/layout.c:123 #, fuzzy -msgid "Show/hide statusbar" -msgstr "Desa una llista de reproducció" +msgid "Disable" +msgstr "variable" -#: src/gtkui/ui_manager.c:69 src/gtkui/ui_manager.c:70 -#: src/skins/ui_manager.c:170 src/skins/ui_manager.c:171 -msgid "Pause" -msgstr "Pausa" +#: src/gtkui/menus.c:132 +#, fuzzy +msgid "_Open Files ..." +msgstr "Afegeix fitxers..." -#: src/gtkui/ui_manager.c:72 src/gtkui/ui_manager.c:73 src/hotkey/gui.c:73 -#: src/skins/ui_manager.c:173 src/skins/ui_manager.c:174 -msgid "Stop" -msgstr "Para" +#: src/gtkui/menus.c:133 +#, fuzzy +msgid "Open _URL ..." +msgstr "Afegeix fitxers..." -#: src/gtkui/ui_manager.c:75 src/gtkui/ui_manager.c:76 -#: src/skins/ui_manager.c:176 src/skins/ui_manager.c:177 -msgid "Previous" -msgstr "Anterior" +#: src/gtkui/menus.c:134 +#, fuzzy +msgid "_Add File ..." +msgstr "Afegeix fitxers..." -#: src/gtkui/ui_manager.c:78 src/gtkui/ui_manager.c:79 -#: src/skins/ui_manager.c:179 src/skins/ui_manager.c:180 -msgid "Next" -msgstr "Següent" +#: src/gtkui/menus.c:135 +#, fuzzy +msgid "Add U_RL ..." +msgstr "Afegeix fitxers..." -#: src/gtkui/ui_manager.c:84 src/skins/ui_manager.c:197 -msgid "Playlist" -msgstr "Llistes" +#: src/gtkui/menus.c:137 +#, fuzzy +msgid "A_bout ..." +msgstr "Quant al connector " -#: src/gtkui/ui_manager.c:86 src/gtkui/ui_manager.c:87 -#: src/skins/ui_manager.c:199 src/skins/ui_manager.c:200 -msgid "New Playlist" -msgstr "Llista de reproducció nova" +#: src/gtkui/menus.c:138 +#, fuzzy +msgid "_Preferences ..." +msgstr "Preferències" -#: src/gtkui/ui_manager.c:89 src/gtkui/ui_manager.c:90 -#: src/skins/ui_manager.c:208 src/skins/ui_manager.c:209 -msgid "Delete Playlist" -msgstr "Esborra la llista" +#: src/gtkui/menus.c:139 src/skins/ui_manager.c:412 +msgid "_Quit" +msgstr "_Surt" -#: src/gtkui/ui_manager.c:92 +#: src/gtkui/menus.c:142 #, fuzzy -msgid "Import Playlist ..." -msgstr "Carrega una llista de reproducció" - -#: src/gtkui/ui_manager.c:93 src/skins/ui_manager.c:212 -msgid "Loads a playlist file into the selected playlist." -msgstr "Afegeix una llista de reproducció a la llista seleccionada" +msgid "_Play" +msgstr "Reprodueix" -#: src/gtkui/ui_manager.c:95 +#: src/gtkui/menus.c:143 #, fuzzy -msgid "Export Playlist ..." -msgstr "Carrega una llista de reproducció" - -#: src/gtkui/ui_manager.c:96 src/skins/ui_manager.c:215 -msgid "Saves the selected playlist." -msgstr "Desa les llistes de reproducció seleccionades." +msgid "Paus_e" +msgstr "Pausa" -#: src/gtkui/ui_manager.c:98 src/skins/ui_manager.c:217 +#: src/gtkui/menus.c:144 #, fuzzy -msgid "Save All Playlists" -msgstr "Desa una llista de reproducció" - -#: src/gtkui/ui_manager.c:99 src/skins/ui_manager.c:218 -msgid "" -"Saves all the playlists that are open. Note that this is done automatically " -"when Audacious quits." -msgstr "" +msgid "_Stop" +msgstr "Para" -#: src/gtkui/ui_manager.c:103 +#: src/gtkui/menus.c:145 #, fuzzy -msgid "Refresh" -msgstr "Velocitat de refresc" - -#: src/gtkui/ui_manager.c:104 src/skins/ui_manager.c:223 -msgid "Refreshes metadata associated with a playlist entry." -msgstr "Refresca les meta-dades associades a cada element de la llista." +msgid "Pre_vious" +msgstr "Anterior" -#: src/gtkui/ui_manager.c:107 +#: src/gtkui/menus.c:146 #, fuzzy -msgid "Playlist Manager" -msgstr "Gestor de llistes" - -#: src/gtkui/ui_manager.c:108 src/skins/ui_manager.c:227 -msgid "Opens the playlist manager." -msgstr "Obre el gestor de llistes de reproducció." +msgid "_Next" +msgstr "Següent" -#: src/gtkui/ui_manager.c:111 +#: src/gtkui/menus.c:148 #, fuzzy -msgid "Add URL ..." -msgstr "Afegeix fitxers..." - -#: src/gtkui/ui_manager.c:112 src/skins/ui_manager.c:237 -msgid "Adds a remote track to the playlist." -msgstr "Afegeix una pista remota a la llista de reproducció." +msgid "_Repeat" +msgstr "Repeteix" -#: src/gtkui/ui_manager.c:115 +#: src/gtkui/menus.c:149 #, fuzzy -msgid "Add Files ..." -msgstr "Afegeix fitxers..." - -#: src/gtkui/ui_manager.c:116 src/skins/ui_manager.c:241 -msgid "Adds files to the playlist." -msgstr "Afegeix fitxers a la llista de reproducció." - -#: src/gtkui/ui_manager.c:119 src/skins/ui_manager.c:264 -msgid "Remove All" -msgstr "Treu tots els elements" +msgid "S_huffle" +msgstr "Barreja" -#: src/gtkui/ui_manager.c:120 src/skins/ui_manager.c:265 -msgid "Removes all entries from the playlist." -msgstr "Treu tots els elements de la llista de reproducció." +#: src/gtkui/menus.c:150 +#, fuzzy +msgid "N_o Playlist Advance" +msgstr "Discontinua la reproducció programada" -#: src/gtkui/ui_manager.c:123 src/skins/ui_manager.c:290 -msgid "Remove Unselected" -msgstr "Treu els no seleccionats" +#: src/gtkui/menus.c:151 +#, fuzzy +msgid "Stop _After This Song" +msgstr "Para quan s'acabi la cançó" -#: src/gtkui/ui_manager.c:124 src/skins/ui_manager.c:291 -msgid "Remove unselected entries from the playlist." -msgstr "Treu els elements no seleccionats de la llista de reproducció." +#: src/gtkui/menus.c:153 src/gtkui/menus.c:210 +msgid "Song _Info ..." +msgstr "" -#: src/gtkui/ui_manager.c:127 src/skins/ui_manager.c:294 -msgid "Remove Selected" -msgstr "Treu els seleccionats" +#: src/gtkui/menus.c:154 +#, fuzzy +msgid "Jump to _Time ..." +msgstr "Salta al temps" -#: src/gtkui/ui_manager.c:128 src/skins/ui_manager.c:295 -msgid "Remove selected entries from the playlist." -msgstr "Treu els elements seleccionats de la llista de reproducció." +#: src/gtkui/menus.c:155 +msgid "_Jump to Song ..." +msgstr "" -#: src/gtkui/ui_manager.c:131 +#: src/gtkui/menus.c:158 #, fuzzy -msgid "Sort" -msgstr "Port" - -#: src/gtkui/ui_manager.c:132 src/skins/ui_manager.c:330 -#: src/skins/ui_manager.c:360 -msgid "By Track Number" +msgid "By Track _Number" msgstr "Pel número de pista" -#: src/gtkui/ui_manager.c:134 src/skins/ui_manager.c:278 -#: src/skins/ui_manager.c:306 src/skins/ui_manager.c:336 -msgid "By Title" +#: src/gtkui/menus.c:159 +#, fuzzy +msgid "By _Title" msgstr "Per títol" -#: src/gtkui/ui_manager.c:136 src/skins/ui_manager.c:314 -#: src/skins/ui_manager.c:344 -msgid "By Artist" +#: src/gtkui/menus.c:160 +#, fuzzy +msgid "By _Artist" msgstr "Per l'artista" -#: src/gtkui/ui_manager.c:138 src/skins/ui_manager.c:310 -#: src/skins/ui_manager.c:340 +#: src/gtkui/menus.c:161 #, fuzzy -msgid "By Album" +msgid "By A_lbum" msgstr "Àlbum:" -#: src/gtkui/ui_manager.c:140 +#: src/gtkui/menus.c:162 +#, fuzzy +msgid "By Release _Date" +msgstr "Per la data" + +#: src/gtkui/menus.c:163 #, fuzzy -msgid "By File Path" +msgid "By _File Path" msgstr "Per nom de fitxer" -#: src/gtkui/ui_manager.c:142 +#: src/gtkui/menus.c:164 #, fuzzy -msgid "Reverse Order" -msgstr "Inverteix la llista" +msgid "By _Custom Title" +msgstr "Decoració personalitzada" -#: src/gtkui/ui_manager.c:147 -msgid "Output" -msgstr "" +#: src/gtkui/menus.c:166 +#, fuzzy +msgid "R_everse Order" +msgstr "Inverteix la llista" -#: src/gtkui/ui_manager.c:149 src/modplug/gui/interface.cxx:572 -msgid "Effects" -msgstr "Efectes" +#: src/gtkui/menus.c:167 +#, fuzzy +msgid "_Random Order" +msgstr "_Aleatori" -#: src/gtkui/ui_manager.c:151 +#: src/gtkui/menus.c:170 src/gtkui/menus.c:212 #, fuzzy -msgid "Equalizer" -msgstr "Mostra l'equalitzador" +msgid "_Refresh" +msgstr "Velocitat de refresc" -#: src/gtkui/ui_manager.c:156 src/skins/ui_manager.c:232 -msgid "View" -msgstr "Finestres" +#: src/gtkui/menus.c:172 +#, fuzzy +msgid "_Sort" +msgstr "Port" -#: src/gtkui/ui_manager.c:157 src/skins/ui_manager.c:233 -msgid "Interface" +#: src/gtkui/menus.c:174 +msgid "_New" msgstr "" -#: src/gtkui/ui_manager.c:164 src/skins/ui_manager.c:370 -msgid "File" -msgstr "Fitxer" +#: src/gtkui/menus.c:175 +#, fuzzy +msgid "_Close" +msgstr "Tanca" -#: src/gtkui/ui_manager.c:167 +#: src/gtkui/menus.c:177 #, fuzzy -msgid "Components" -msgstr "Comentari:" +msgid "_Import ..." +msgstr "Importa" -#: src/gtkui/ui_manager.c:169 src/gtkui/ui_manager.c:172 -#: src/skins/ui_manager.c:375 src/skins/ui_manager.c:378 -msgid "View Track Details" -msgstr "Mostra detalls de la pista" +#: src/gtkui/menus.c:178 +#, fuzzy +msgid "_Export ..." +msgstr "Exporta" -#: src/gtkui/ui_manager.c:170 src/gtkui/ui_manager.c:173 -#: src/skins/ui_manager.c:376 src/skins/ui_manager.c:379 -msgid "View track details" -msgstr "Mostra detalls de la pista" +#: src/gtkui/menus.c:180 +#, fuzzy +msgid "_Playlist Manager ..." +msgstr "Gestor de llistes" -#: src/gtkui/ui_manager.c:175 src/gtkui/ui_manager.c:176 -#: src/skins/ui_manager.c:381 src/skins/ui_manager.c:382 -msgid "About Audacious" -msgstr "Quant a l'Audacious" +#: src/gtkui/menus.c:183 +#, fuzzy +msgid "Volume _Up" +msgstr "Puja el volum" -#: src/gtkui/ui_manager.c:178 +#: src/gtkui/menus.c:184 #, fuzzy -msgid "Open Files ..." -msgstr "Afegeix fitxers..." +msgid "Volume _Down" +msgstr "Baixa el volum" -#: src/gtkui/ui_manager.c:179 src/skins/ui_manager.c:385 -msgid "Load and play a file" -msgstr "Carrega i reprodueix un fitxer" +#: src/gtkui/menus.c:186 +#, fuzzy +msgid "_Equalizer" +msgstr "Mostra l'equalitzador" + +#: src/gtkui/menus.c:188 +#, fuzzy +msgid "E_ffects" +msgstr "Efectes" -#: src/gtkui/ui_manager.c:181 -msgid "Open URL ..." +#: src/gtkui/menus.c:191 +msgid "_Interface" msgstr "" -#: src/gtkui/ui_manager.c:182 src/skins/ui_manager.c:388 -msgid "Play media from the selected location" -msgstr "Reprodueix un mitjà des de la ubicació seleccionada" +#: src/gtkui/menus.c:193 +msgid "Show _Menu Bar" +msgstr "" -#: src/gtkui/ui_manager.c:184 src/skins/ui_manager.c:390 -msgid "Plugin services" -msgstr "Serveis de connectors" +#: src/gtkui/menus.c:194 +msgid "Show I_nfo Bar" +msgstr "" -#: src/gtkui/ui_manager.c:186 src/skins/ui_manager.c:392 -msgid "Preferences" -msgstr "Preferències" +#: src/gtkui/menus.c:195 +#, fuzzy +msgid "Show _Status Bar" +msgstr "Estat" -#: src/gtkui/ui_manager.c:187 src/skins/ui_manager.c:393 -msgid "Open preferences window" -msgstr "Obre la finestra de preferències" +#: src/gtkui/menus.c:197 +#, fuzzy +msgid "Show Column _Headers" +msgstr "Mostra el reproductor" -#: src/gtkui/ui_manager.c:189 src/skins/ui_manager.c:395 -msgid "_Quit" -msgstr "_Surt" +#: src/gtkui/menus.c:198 +#, fuzzy +msgid "Choose _Columns ..." +msgstr "Mostra el reproductor" -#: src/gtkui/ui_manager.c:190 src/skins/ui_manager.c:396 -msgid "Quit Audacious" -msgstr "Tanca l'Audacious" +#: src/gtkui/menus.c:199 +#, fuzzy +msgid "Scrol_l on Song Change" +msgstr "Missatge de la cançó" -#: src/gtkui/ui_manager.c:192 src/gtkui/ui_manager.c:193 -#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 -msgid "Set A-B" -msgstr "Estableix A-B" +#: src/gtkui/menus.c:202 +#, fuzzy +msgid "_File" +msgstr "Fitxer" -#: src/gtkui/ui_manager.c:195 src/gtkui/ui_manager.c:196 -#: src/skins/ui_manager.c:401 src/skins/ui_manager.c:402 -msgid "Clear A-B" -msgstr "Esborra A-B" +#: src/gtkui/menus.c:203 +#, fuzzy +msgid "_Playback" +msgstr "Reproducció" -#: src/gtkui/ui_manager.c:198 src/gtkui/ui_manager.c:199 -#: src/skins/ui_manager.c:404 src/skins/ui_manager.c:405 -msgid "Jump to Playlist Start" -msgstr "Salta a l'inici de la llista" +#: src/gtkui/menus.c:204 +#, fuzzy +msgid "P_laylist" +msgstr "Llistes" -#: src/gtkui/ui_manager.c:201 src/gtkui/ui_manager.c:202 src/hotkey/gui.c:80 -#: src/skins/ui_manager.c:407 src/skins/ui_manager.c:408 -msgid "Jump to File" -msgstr "Salta al fitxer" +#: src/gtkui/menus.c:205 src/gtkui/menus.c:219 +#, fuzzy +msgid "_Services" +msgstr "Dispositius" -#: src/gtkui/ui_manager.c:207 src/skins/ui_manager.c:413 -msgid "Queue Toggle" -msgstr "Posa o treu de la cua" +#: src/gtkui/menus.c:206 +#, fuzzy +msgid "_Output" +msgstr "Connector de sortida nul" -#: src/gtkui/ui_manager.c:208 src/skins/ui_manager.c:414 -msgid "Enables/disables the entry in the playlist's queue." -msgstr "Posa o lleva un element de la cua." +#: src/gtkui/menus.c:207 +#, fuzzy +msgid "_View" +msgstr "Finestres" -#: src/gtkui/ui_manager.c:211 src/skins/ui_manager.c:417 -msgid "Copy" +#: src/gtkui/menus.c:211 +msgid "_Queue/Unqueue" msgstr "" -#: src/gtkui/ui_manager.c:214 src/skins/ui_manager.c:419 -#, fuzzy -msgid "Cut" -msgstr "De culte" +#: src/gtkui/menus.c:214 +msgid "Cu_t" +msgstr "" -#: src/gtkui/ui_manager.c:217 src/skins/ui_manager.c:421 +#: src/gtkui/menus.c:215 +msgid "_Copy" +msgstr "" + +#: src/gtkui/menus.c:216 #, fuzzy -msgid "Paste" +msgid "_Paste" msgstr "Al màxim" -#: src/gtkui/ui_manager.c:220 src/skins/ui_manager.c:254 -msgid "Select All" +#: src/gtkui/menus.c:217 +#, fuzzy +msgid "Select _All" msgstr "Selecciona tots els elements" -#: src/gtkui/ui_manager.c:221 src/skins/ui_manager.c:255 -msgid "Selects all of the playlist entries." -msgstr "Selecciona tots els elements de la llista de reproducció." +#: src/gtkui/menus.c:222 +#, fuzzy +msgid "_Rename" +msgstr "Nom del fitxer" -#: src/gtkui/ui_manager.c:224 src/skins/ui_manager.c:258 -msgid "Select None" -msgstr "Selecciona no res" +#: src/gtkui/ui_gtk.c:75 +msgid "GTK Interface" +msgstr "" -#: src/gtkui/ui_manager.c:225 src/skins/ui_manager.c:259 -msgid "Deselects all of the playlist entries." -msgstr "Deselecciona tots els elements de la llista de reproducció." +#: src/gtkui/ui_gtk.c:132 src/skins/ui_main.c:303 +#, c-format +msgid "%s - Audacious" +msgstr "%s - Audacious" + +#: src/gtkui/ui_gtk.c:138 src/skins/ui_main.c:305 src/skins/ui_main.c:1498 +msgid "Audacious" +msgstr "Audacious" + +#: src/gtkui/ui_gtk.c:177 src/skins/plugin.c:185 +msgid "Error" +msgstr "Error" -#: src/gtkui/ui_statusbar.c:91 src/skins/ui_main.c:609 +#: src/gtkui/ui_statusbar.c:102 src/skins/ui_main.c:460 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.c:94 src/skins/ui_main.c:608 +#: src/gtkui/ui_statusbar.c:104 src/skins/ui_main.c:459 msgid "stereo" msgstr "estèreo" -#: src/gtkui/ui_statusbar.c:97 +#: src/gtkui/ui_statusbar.c:106 #, fuzzy, c-format -msgid "%d channels" -msgstr "Canals" +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "Canals" +msgstr[1] "Canals" -#: src/gtkui/ui_statusbar.c:101 +#: src/gtkui/ui_statusbar.c:121 #, c-format -msgid "%s: %d kbps, %d Hz, %s" +msgid "%d kbps" msgstr "" -#: src/hotkey/gui.c:70 +#: src/hotkey/gui.c:71 msgid "Previous Track" msgstr "Pista anterior" -#: src/hotkey/gui.c:72 +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "Reprodueix" + +#: src/hotkey/gui.c:73 msgid "Pause/Resume" msgstr "Pausa/Represa" -#: src/hotkey/gui.c:74 +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +msgid "Stop" +msgstr "Para" + +#: src/hotkey/gui.c:75 msgid "Next Track" msgstr "Següent pista" -#: src/hotkey/gui.c:75 +#: src/hotkey/gui.c:76 msgid "Forward 5 Seconds" msgstr "Endavant 5 segons" -#: src/hotkey/gui.c:76 +#: src/hotkey/gui.c:77 msgid "Rewind 5 Seconds" msgstr "Enrere 5 segons" -#: src/hotkey/gui.c:77 +#: src/hotkey/gui.c:78 msgid "Mute" msgstr "Silencia" -#: src/hotkey/gui.c:78 +#: src/hotkey/gui.c:79 msgid "Volume Up" msgstr "Puja el volum" -#: src/hotkey/gui.c:79 +#: src/hotkey/gui.c:80 msgid "Volume Down" msgstr "Baixa el volum" -#: src/hotkey/gui.c:81 +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:424 src/skins/ui_manager.c:425 +msgid "Jump to File" +msgstr "Salta al fitxer" + +#: src/hotkey/gui.c:82 msgid "Toggle Player Windows" msgstr "Commuta les finestres" -#: src/hotkey/gui.c:82 +#: src/hotkey/gui.c:83 msgid "Show On-Screen-Display" msgstr "Activa l'OSD (sobre-impressió)" -#: src/hotkey/gui.c:92 +#: src/hotkey/gui.c:84 +#, fuzzy +msgid "Toggle Repeat" +msgstr "Repeteix" + +#: src/hotkey/gui.c:85 +#, fuzzy +msgid "Toggle Shuffle" +msgstr "Barreja" + +#: src/hotkey/gui.c:95 msgid "(none)" msgstr "(cap)" -#: src/hotkey/gui.c:229 +#: src/hotkey/gui.c:232 msgid "" "It is not recommended to bind the primary mouse buttons without " "modificators.\n" @@ -3169,15 +1854,15 @@ "\n" "Voleu continuar?" -#: src/hotkey/gui.c:231 +#: src/hotkey/gui.c:234 msgid "Binding mouse buttons" msgstr "Vinculació dels botons del ratolí" -#: src/hotkey/gui.c:381 +#: src/hotkey/gui.c:384 msgid "Global Hotkey Plugin Configuration" msgstr "Configuració del connector de tecles ràpides globals" -#: src/hotkey/gui.c:397 +#: src/hotkey/gui.c:400 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -3185,23 +1870,23 @@ "Premeu una combinació de tecles dins del camp de text.\n" "També podeu vincular botons del ratolí." -#: src/hotkey/gui.c:402 +#: src/hotkey/gui.c:405 msgid "Hotkeys:" msgstr "Tecles ràpides:" -#: src/hotkey/gui.c:421 +#: src/hotkey/gui.c:424 msgid "Action:" msgstr "Acció:" -#: src/hotkey/gui.c:429 +#: src/hotkey/gui.c:432 msgid "Key Binding:" msgstr "Vinculació de tecles:" -#: src/hotkey/gui.c:660 +#: src/hotkey/gui.c:663 msgid "About Global Hotkey Plugin" msgstr "Quant al connector de tecles ràpides globals" -#: src/hotkey/gui.c:661 +#: src/hotkey/gui.c:664 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3254,7 +1939,7 @@ msgid "Enable debug printing" msgstr "Activa els missatges de depuració" -#: src/jack/jack.c:437 +#: src/jack/jack.c:438 msgid "" "XMMS jack Driver 0.17\n" "\n" @@ -3272,134 +1957,20 @@ "Portat a l'Audacious per\n" "Giacomo Lozito de develia.org" -#: src/jack/jack.c:442 +#: src/jack/jack.c:443 msgid "About JACK Output Plugin 0.17" msgstr "Quant al connector de sortida JACK 0.17" -#: src/ladspa/ladspa.c:824 -msgid "This LADSPA plugin has no user controls" -msgstr "Aquest connector LADSPA no té controls d'usuari" - -#: src/ladspa/ladspa.c:865 src/ladspa/ladspa.c:952 -msgid "Name" -msgstr "Nom" - -#: src/ladspa/ladspa.c:952 -msgid "UID" -msgstr "UID" - -#: src/ladspa/ladspa.c:1029 -msgid "Installed plugins" -msgstr "Connectors instal·lats" - -#: src/ladspa/ladspa.c:1037 -msgid "Running plugins" -msgstr "Connectors actius" - -#: src/ladspa/ladspa.c:1052 -msgid "Add" -msgstr "Afegeix" - -#: src/ladspa/ladspa.c:1055 -msgid "Remove" -msgstr "Elimina" - -#: src/ladspa/ladspa.c:1066 -msgid "LADSPA Plugin Catalog" -msgstr "Catàleg de connectors LADSPA" - -#: src/lirc/about.c:63 -msgid "About LIRC Audacious Plugin" -msgstr "Quant al connector LIRC de l'Audacious" - -#: src/lirc/about.c:90 -msgid "LIRC Plugin " -msgstr "Connector per a LIRC" - -#: src/lirc/about.c:92 +#: src/lyricwiki/lyricwiki.c:226 msgid "" "\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" -"\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" -msgstr "" -"\n" -"Un simple connector que permet controlar\n" -"l'Audacious amb el dimoni de control remot LIRC.\n" -"\n" -"Adapatat per a l'Audacious per Tony Vroon \n" -"a partir del connector LIRC de l'XMMS de:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"Podeu trobar informació sobre el LIRC a:\n" -"http://lirc.org" - -#: src/lirc/interface.c:37 -msgid "LIRC plugin settings" -msgstr "Paràmetres del connector LIRC" - -#: src/lirc/interface.c:61 -msgid "Reconnect to LIRC server" -msgstr "Reconnecta amb el servidor LIRC" - -#: src/lirc/interface.c:68 -msgid "Timeout before reconnecting (seconds): " -msgstr "Temps d'espera abans d'intentar reconnectar (segons): " - -#: src/lirc/interface.c:75 -msgid "Reconnect" -msgstr "Reconnexió" - -#: src/lirc/interface.c:79 -msgid "Connection" -msgstr "Connexió" - -#: src/lirc/lirc.c:82 -#, c-format -msgid "%s: could not init LIRC support\n" -msgstr "%s: no s'ha pogut inicialitzar el suport per a LIRC\n" +"Looking for lyrics..." +msgstr "" -#: src/lirc/lirc.c:90 -#, c-format +#: src/lyricwiki/lyricwiki.c:249 msgid "" -"%s: could not read LIRC config file\n" -"%s: please read the documentation of LIRC\n" -"%s: how to create a proper config file\n" -msgstr "" -"%s: no s'ha pogut llegir el firxer de configuració de LIRC\n" -"%s: si us plau, llegiu la documentació de LIRC, per a saber\n" -"%s: com crear un fitxer de configuració adequat\n" - -#: src/lirc/lirc.c:117 -#, c-format -msgid "%s: trying to reconnect...\n" -msgstr "%s: tractant de reconnectar...\n" - -#: src/lirc/lirc.c:332 -#, c-format -msgid "%s: unknown command \"%s\"\n" -msgstr "%s: ordre desconeguda \"%s\"\n" - -#: src/lirc/lirc.c:342 -#, c-format -msgid "%s: disconnected from LIRC\n" -msgstr "%s: desconnectat del LIRC\n" - -#: src/lirc/lirc.c:346 -#, c-format -msgid "%s: will try reconnect every %d seconds...\n" -msgstr "%s: s'intentarà reconnectar cada %d segons...\n" - -#: src/lyricwiki/lyricwiki.c:244 -msgid "LyricWiki" +"\n" +"Connecting to lyrics.wikia.com..." msgstr "" #: src/lyricwiki/lyricwiki.c:337 @@ -3408,11 +1979,11 @@ "No lyrics were found." msgstr "" -#: src/metronom/metronom.c:90 +#: src/metronom/metronom.c:85 msgid "About Metronom" msgstr "Quant al connector Metronom" -#: src/metronom/metronom.c:91 +#: src/metronom/metronom.c:86 msgid "" "A Tact Generator by Martin Strauss \n" "\n" @@ -3426,269 +1997,48 @@ "p.e. tact://77 per a fer 77 tocs per minut\n" "o tact://60*3/4 per fer 70 tocs per minut en 3/4." -#: src/metronom/metronom.c:145 +#: src/metronom/metronom.c:143 #, c-format msgid "Tact generator: %d bpm" msgstr "Generador de compassos: %d bpm" -#: src/metronom/metronom.c:147 +#: src/metronom/metronom.c:145 #, c-format msgid "Tact generator: %d bpm %d/%d" msgstr "Generador de compassos: %d bpm %d/%d" -#: src/modplug/gui/interface.cxx:137 -msgid "ModPlug Configuration" -msgstr "Configuració del connector ModPlug" +#: src/mpg123/mpg123.c:183 +msgid "Surround" +msgstr "So envolvent" -#: src/modplug/gui/interface.cxx:174 -msgid "16 bit" -msgstr "16 bits" +#: src/mtp_up/mtp.c:298 +msgid "Upload in progress..." +msgstr "Pujada en curs..." -#: src/modplug/gui/interface.cxx:181 -msgid "8 bit" -msgstr "8 bits" +#: src/mtp_up/mtp.c:310 +msgid "Upload to MTP Device" +msgstr "" -#: src/modplug/gui/interface.cxx:212 -msgid "Mono (downmix)" -msgstr "Mono (remescla)" +#: src/mtp_up/mtp.c:311 +#, fuzzy +msgid "Disconnect MTP Device" +msgstr "Desconnecta el dispositiu" -#: src/modplug/gui/interface.cxx:241 -msgid "Nearest (fastest)" -msgstr "Més proper (molt ràpid)" +#: src/notify/libnotify-aosd_event.c:47 +#, fuzzy +msgid "Stopped" +msgstr "Para" -#: src/modplug/gui/interface.cxx:248 -msgid "Linear (fast)" -msgstr "Lineal (ràpid)" +#: src/notify/libnotify-aosd_event.c:47 +#, fuzzy +msgid "Audacious is not playing." +msgstr "Audacious - avís de visibilitat" -#: src/modplug/gui/interface.cxx:255 -msgid "Spline (good quality)" -msgstr "Spline (bona qualitat)" - -#: src/modplug/gui/interface.cxx:262 -msgid "8-tap Fir (extremely high quality)" -msgstr "8-tap Fir (qualitat extremament alta)" - -#: src/modplug/gui/interface.cxx:286 -#, fuzzy -msgid "96 kHz" -msgstr "48 kHz" - -#: src/modplug/gui/interface.cxx:293 -msgid "48 kHz" -msgstr "48 kHz" - -#: src/modplug/gui/interface.cxx:300 -msgid "44 kHz" -msgstr "44 kHz" - -#: src/modplug/gui/interface.cxx:307 -msgid "22 kHz" -msgstr "22 kHz" - -#: src/modplug/gui/interface.cxx:315 -msgid "Sampling Rate" -msgstr "Freqüència de mostra" - -#: src/modplug/gui/interface.cxx:349 src/modplug/gui/interface.cxx:411 -#: src/modplug/gui/interface.cxx:477 src/modplug/gui/interface.cxx:539 -msgid "Enable" -msgstr "Activa" - -#: src/modplug/gui/interface.cxx:378 src/modplug/gui/interface.cxx:506 -msgid "Depth" -msgstr "Profunditat" - -#: src/modplug/gui/interface.cxx:386 src/modplug/gui/interface.cxx:514 -msgid "Delay" -msgstr "Retard" - -#: src/modplug/gui/interface.cxx:394 -msgid "Reverb" -msgstr "Reverberació" - -#: src/modplug/gui/interface.cxx:440 -msgid "Amount" -msgstr "Quantitat" - -#: src/modplug/gui/interface.cxx:448 -msgid "Range" -msgstr "Amplitud" - -#: src/modplug/gui/interface.cxx:456 -msgid "Bass Boost" -msgstr "Amplificació de baixos" - -#: src/modplug/gui/interface.cxx:522 src/mpg123/mpg123.c:174 -msgid "Surround" -msgstr "So envolvent" - -#: src/modplug/gui/interface.cxx:561 -msgid "" -"Note: Setting the preamp\n" -"too high may cause clipping\n" -"(annoying clicks and pops)!" -msgstr "" -"Nota: Posar el preamplificador\n" -"massa alt pot escapçar el senyal\n" -"(sorollets emprenyadors)!\"" - -#: src/modplug/gui/interface.cxx:567 -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "Preamp" -msgstr "Preamplificació" - -#: src/modplug/gui/interface.cxx:601 -msgid "Use Filename as Song Title" -msgstr "Usa el nom del fitxer com a títol" - -#: src/modplug/gui/interface.cxx:606 -msgid "Fast Playlist Info" -msgstr "Informació de la llista de reproducció ràpida" - -#: src/modplug/gui/interface.cxx:617 -msgid "Noise Reduction" -msgstr "Reducció de soroll" - -#: src/modplug/gui/interface.cxx:623 -msgid "Play Amiga MOD" -msgstr "Reprodueix MODs d'Amiga" - -#: src/modplug/gui/interface.cxx:646 -msgid "Don't loop" -msgstr "Al final, torna a començar" - -#: src/modplug/gui/interface.cxx:658 -msgid "Loop" -msgstr "Al final, no torna a començar" - -#: src/modplug/gui/interface.cxx:671 -msgid "time(s)" -msgstr "cop(s)" - -#: src/modplug/gui/interface.cxx:677 -msgid "Loop forever" -msgstr "Torna a començar sempre" - -#: src/modplug/gui/interface.cxx:684 -msgid "Looping" -msgstr "Iteracions" - -#: src/modplug/gui/interface.cxx:859 -msgid "MOD Info" -msgstr "Informació MOD" - -#: src/modplug/gui/interface.cxx:878 -msgid "" -"Filename:\n" -"Title:\n" -"Type:\n" -"Length:\n" -"Speed:\n" -"Tempo:\n" -"Samples:\n" -"Instruments:\n" -"Patterns:\n" -"Channels:" -msgstr "" -"Fitxer:\n" -"Títol:\n" -"Tipus:\n" -"Durada:\n" -"Velocitat:\n" -"Tempo:\n" -"Mostres:\n" -"Instruments:\n" -"Patrons:\n" -"Canals:" - -#: src/modplug/gui/interface.cxx:883 -msgid "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" -msgstr "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" - -#: src/modplug/gui/interface.cxx:913 -msgid "Samples" -msgstr "Mostres" - -#: src/modplug/gui/interface.cxx:938 -msgid "Instruments" -msgstr "Instruments" - -#: src/modplug/gui/interface.cxx:959 -msgid "Message" -msgstr "Missatge" - -#: src/modplug/gui/main.cxx:51 -msgid "Modplug Input Plugin for Audacious ver" -msgstr "Connector d'entrada Modplug per a l'Audacious, ver" - -#: src/modplug/gui/main.cxx:52 -#, fuzzy -msgid "" -"\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." -msgstr "" -"\n" -"Motor de so del Modplug escrit per Olivier Lapicque.\n" -"Interfície XMMS per al Modplug per Kenton Varda.\n" -"(c)2000 Olivier Lapicque i Kenton Varda.\n" -"Actualitzacions i manteniment per Konstanty Bialkowski.\n" -"Portat al BMP per Theofilos Intzoglou." - -#: src/modplug/gui/main.cxx:55 -msgid "About Modplug" -msgstr "Quant al connector Modplug" - -#: src/modplug/gui/support.cxx:90 src/modplug/gui/support.cxx:114 -#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 -#, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "No s'ha trobat el fitxer de mapa-de-bits: %s" - -#: src/mtp_up/mtp.c:35 -msgid "Upload selected track(s)" -msgstr "Puja les pistes seleccionades" - -#: src/mtp_up/mtp.c:291 -msgid "Upload in progress..." -msgstr "Pujada en curs..." - -#: src/mtp_up/mtp.c:300 -msgid "MTP device handler" -msgstr "Gestor de dispositius MTP" - -#: src/mtp_up/mtp.c:304 -msgid "Disconnect the device" -msgstr "Desconnecta el dispositiu" - -#: src/null/null.c:63 +#: src/null/null.c:64 msgid "Null output plugin " msgstr "Connector de sortida nul" -#: src/null/null.c:64 +#: src/null/null.c:65 msgid "" " by Christian Birchinger \n" "based on the XMMS plugin by HÃ¥vard KvÃ¥l " @@ -3696,15 +2046,15 @@ " per Christian Birchinger \n" " basat el connector XMMS de HÃ¥vard KvÃ¥l " -#: src/null/null.c:67 +#: src/null/null.c:68 msgid "About Null Output" msgstr "Quant a la sortida nul·la" -#: src/null/null.c:93 +#: src/null/null.c:94 msgid "Null output preferences" msgstr "Preferències de la sortida nul·la" -#: src/null/null.c:102 +#: src/null/null.c:105 msgid "Run in real time" msgstr "Funciona en temps real" @@ -3718,11 +2068,11 @@ msgid "OSS4 Output Plugin Preferences" msgstr "Connector d'Icona d'Estat - Preferències" -#: src/oss4/configure.c:163 src/OSS/configure.c:213 src/sun/configure.c:181 +#: src/oss4/configure.c:163 src/OSS/configure.c:203 msgid "Audio device:" msgstr "Dispositiu d'àudio:" -#: src/oss4/configure.c:189 src/OSS/configure.c:235 src/OSS/configure.c:276 +#: src/oss4/configure.c:189 src/OSS/configure.c:226 src/OSS/configure.c:269 msgid "Use alternate device:" msgstr "Usa un dispositiu alternatiu:" @@ -3735,12 +2085,12 @@ msgid "Enable format conversions made by the OSS software." msgstr "" -#: src/oss4/plugin.c:54 +#: src/oss4/plugin.c:51 #, fuzzy msgid "About OSS4 Plugin" msgstr "Quant al connector ESounD" -#: src/oss4/plugin.c:55 +#: src/oss4/plugin.c:52 #, fuzzy msgid "" "OSS4 Output Plugin for Audacious\n" @@ -3784,40 +2134,45 @@ msgid "OSS4 error" msgstr "Error" -#: src/OSS/configure.c:148 +#: src/OSS/configure.c:146 #, c-format msgid "Default (%s)" msgstr "Per defecte (%s)" -#: src/OSS/configure.c:197 +#: src/OSS/configure.c:162 src/skins/ui_manager.c:456 +#: src/skins/ui_manager.c:477 +msgid "Default" +msgstr "Per defecte" + +#: src/OSS/configure.c:187 msgid "OSS Driver configuration" msgstr "Configuració del driver OSS" -#: src/OSS/configure.c:298 src/sun/configure.c:246 +#: src/OSS/configure.c:290 msgid "Devices" msgstr "Dispositius" -#: src/OSS/configure.c:300 src/sun/configure.c:257 +#: src/OSS/configure.c:292 msgid "Buffering:" msgstr "Buffers:" -#: src/OSS/configure.c:313 src/sun/configure.c:288 +#: src/OSS/configure.c:305 msgid "Pre-buffer (percent):" msgstr "Pre-buffer (percentatge):" -#: src/OSS/configure.c:324 src/sun/configure.c:302 +#: src/OSS/configure.c:316 msgid "Buffering" msgstr "Buffers" -#: src/OSS/configure.c:325 +#: src/OSS/configure.c:317 msgid "Mixer Settings:" msgstr "Paràmetres del mesclador:" -#: src/OSS/configure.c:331 +#: src/OSS/configure.c:323 msgid "Volume controls Master not PCM" msgstr "El volum canvia el màster, no el PCM" -#: src/OSS/configure.c:337 src/sun/configure.c:392 +#: src/OSS/configure.c:329 msgid "Mixer" msgstr "Mesclador" @@ -3861,11 +2216,11 @@ "Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" "Boston, MA 02110-1301, USA." -#: src/pulse_audio/pulse_audio.c:691 +#: src/pulse_audio/pulse_audio.c:687 msgid "About Audacious PulseAudio Output Plugin" msgstr "Quant al connector de sortida PulseAudio" -#: src/pulse_audio/pulse_audio.c:692 +#: src/pulse_audio/pulse_audio.c:688 msgid "" "Audacious PulseAudio Output Plugin\n" "\n" @@ -3901,54 +2256,54 @@ "Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" "Boston, MA 02110-1301, USA." -#: src/resample/plugin.c:78 +#: src/resample/plugin.c:91 #, fuzzy msgid "About Sample Rate Converter Plugin" msgstr "Quant al connector d'icona d'estat" -#: src/resample/plugin.c:134 +#: src/resample/plugin.c:146 msgid "Sample Rate Converter Preferences" msgstr "" -#: src/resample/plugin.c:146 +#: src/resample/plugin.c:158 msgid "Rate mappings:" msgstr "" -#: src/resample/plugin.c:169 +#: src/resample/plugin.c:181 msgid "All others:" msgstr "" -#: src/resample/plugin.c:181 +#: src/resample/plugin.c:193 msgid "Method:" msgstr "" -#: src/scrobbler/configure.c:152 src/scrobbler/configure.c:228 +#: src/scrobbler/configure.c:128 src/scrobbler/configure.c:204 #, fuzzy msgid "Change password" msgstr "Canvia la cançó" -#: src/scrobbler/configure.c:174 +#: src/scrobbler/configure.c:150 msgid "Services" msgstr "Serveis" -#: src/scrobbler/configure.c:196 +#: src/scrobbler/configure.c:172 msgid "Username:" msgstr "Nom d'usuari:" -#: src/scrobbler/configure.c:202 +#: src/scrobbler/configure.c:178 msgid "Password:" msgstr "Contrasenya:" -#: src/scrobbler/configure.c:210 +#: src/scrobbler/configure.c:186 #, fuzzy msgid "Scrobbler URL:" msgstr "Error de Scrobbler" -#: src/scrobbler/configure.c:242 +#: src/scrobbler/configure.c:218 msgid "Last.FM" msgstr "Last.FM" -#: src/scrobbler/configure.c:287 +#: src/scrobbler/configure.c:262 #, fuzzy msgid "Scrobbler" msgstr "Error de Scrobbler" @@ -3969,16 +2324,34 @@ msgid "About Scrobbler Plugin" msgstr "Quant al connector Scrobbler" +#: src/sdlout/plugin.c:58 +#, fuzzy +msgid "About SDL Output Plugin" +msgstr "Quant al connector de sortida JACK 0.17" + +#: src/sdlout/plugin.c:78 +#, fuzzy +msgid "SDL error" +msgstr "Error" + #: src/sid/xs_about.c:84 #, c-format msgid "About %s" msgstr "Quant a %s" -#: src/sid/xs_config.c:322 +#: src/sid/xs_about.c:214 src/sid/xs_interface.c:1825 +msgid "Close" +msgstr "Tanca" + +#: src/sid/xs_config.c:326 #, fuzzy msgid " Error" msgstr "Error" +#: src/sid/xs_config.c:326 +msgid "OK" +msgstr "D'acord" + #: src/sid/xs_fileinfo.c:151 msgid "General info" msgstr "Informació general" @@ -3988,6 +2361,11 @@ msgid "Tune #%i: " msgstr "Melodia #%i: " +#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 +#, c-format +msgid "Couldn't find pixmap file: %s" +msgstr "No s'ha trobat el fitxer de mapa-de-bits: %s" + #: src/sid/xs_interface.c:234 msgid "Audacious-SID configuration" msgstr "Configuració del connector Audacious-SID" @@ -4303,15 +2681,15 @@ msgid "Use" msgstr "Usa" -#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:430 +#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:447 msgid "Save" msgstr "Desa" -#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:429 +#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:446 msgid "Import" msgstr "Importa" -#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:431 +#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:448 msgid "Delete" msgstr "Elimina" @@ -4344,6 +2722,11 @@ msgid "Playtime:" msgstr "Durada:" +#: src/sid/xs_interface.c:921 src/sid/xs_interface.c:975 +#: src/sid/xs_interface.c:1155 +msgid "seconds" +msgstr "segons" + #: src/sid/xs_interface.c:928 msgid "Minimum playtime:" msgstr "Durada mínima de reproducció" @@ -4453,10 +2836,6 @@ msgid "Song title format:" msgstr "Format del títol:" -#: src/sid/xs_interface.c:1103 -msgid "Title" -msgstr "Títol" - #: src/sid/xs_interface.c:1125 msgid "Add sub-tunes to playlist" msgstr "Afegeix les sub-melodies a la llista de reproducció" @@ -4610,11 +2989,11 @@ msgid "No" msgstr "No" -#: src/skins/plugin.c:179 +#: src/skins/plugin.c:167 msgid "About Skinned GUI" msgstr "Quant a la interfície d'usuari gràfica" -#: src/skins/plugin.c:180 +#: src/skins/plugin.c:168 msgid "" "Copyright (c) 2008, by Tomasz MoÅ„ \n" "\n" @@ -4622,475 +3001,462 @@ "Copyright (c) 2008, per Tomasz MoÅ„ \n" "\n" -#: src/skins/plugin.c:196 -msgid "Skinned Interface" -msgstr "" - -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:254 msgid "_Player:" msgstr "_Reproductor:" -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:254 msgid "Select main player window font:" msgstr "Trieu la fosa de la finestra principal:" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:255 msgid "_Playlist:" msgstr "_Llista de reproducció:" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:255 msgid "Select playlist font:" msgstr "Trieu la fosa de la llista de reproducció:" -#: src/skins/skins_cfg.c:321 +#: src/skins/skins_cfg.c:259 msgid "_Fonts" msgstr "_Foses" -#: src/skins/skins_cfg.c:323 -msgid "Use Bitmap fonts if available" -msgstr "Usa foses mapa de bits, si n'hi ha de disponibles" +#: src/skins/skins_cfg.c:261 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "" -#: src/skins/skins_cfg.c:323 -msgid "" -"Use bitmap fonts if they are available. Bitmap fonts do not support Unicode " -"strings." +#: src/skins/skins_cfg.c:263 +msgid "Scroll song title in both directions" msgstr "" -"Usa foses tipus mapa de bits, si n'hi ha de disponibles. Les fonts de mapa " -"de bits no suporten cadenes Unicode." -#: src/skins/skins_cfg.c:324 -msgid "_Miscellaneous" -msgstr "_Miscel·lània" +#: src/skins/skins_cfg.c:346 +msgid "_Skin" +msgstr "_Decoració" -#: src/skins/skins_cfg.c:325 -msgid "Show separators in playlist" -msgstr "Mostra separadors a la llista de reproducció" +#: src/skins/skins_cfg.c:393 +#, fuzzy +msgid "Interface Preferences" +msgstr "Preferències" -#: src/skins/skins_cfg.c:327 -msgid "Show window manager decoration" -msgstr "Mostra la decoració del gestor de finestres" +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "Preamplificació" -#: src/skins/skins_cfg.c:328 -msgid "This enables the window manager to show decorations for windows." +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" msgstr "" -"Això permet al gestor de finestres mostrar la decoració de les finestres." -#: src/skins/skins_cfg.c:329 -msgid "Use two-way text scroller" -msgstr "Usa desplaçament de text bidireccional" - -#: src/skins/skins_cfg.c:330 -msgid "" -"If selected, the file information text in the main window will scroll back " -"and forth. If not selected, the text will only scroll in one direction." +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" msgstr "" -"Si està seleccionat, la informació del fitxer a la finestra principal es " -"desplaçarà endavant i enrere. Si no està seleccionat, el text es desplaçarà " -"en una sola direcció." - -#: src/skins/skins_cfg.c:331 -msgid "Disable inline gtk theme" -msgstr "Deshabilita els temes GTK en línia" -#: src/skins/skins_cfg.c:333 -#, fuzzy -msgid "Random skin on play" -msgstr "Reordena la llista de forma aleatòria." - -#: src/skins/skins_cfg.c:334 -msgid "Allow loading incomplete skins" -msgstr "Permet carregar decoracions incompletes" - -#: src/skins/skins_cfg.c:335 -msgid "" -"If selected, audacious won't refuse loading broken skins. Use only if your " -"favourite skin doesn't work" +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" msgstr "" -"Si està seleccionat, l'Audacious no refusarà carregar decoracions " -"defectuoses. Useu-ho només si la vostra decoració favorita no funciona" -#: src/skins/skins_cfg.c:401 -msgid "Color Adjustment" -msgstr "Ajustament del color" +#: src/skins/ui_equalizer.c:335 +#, fuzzy +msgid "250 Hz" +msgstr "22050 Hz " -#: src/skins/skins_cfg.c:407 -msgid "" -"Audacious allows you to alter the color balance of the skinned UI. The " -"sliders below will allow you to do this." -msgstr "" -"L'Audacious us permet alterar el balanç de colors de la decoració de la IG. " -"Els controls de sota us permetran fer això." +#: src/skins/ui_equalizer.c:335 +#, fuzzy +msgid "500 Hz" +msgstr "11000 Hz" -#: src/skins/skins_cfg.c:417 -msgid "Blue" -msgstr "Blau" +#: src/skins/ui_equalizer.c:335 +#, fuzzy +msgid "1 kHz" +msgstr "11 kHz" -#: src/skins/skins_cfg.c:424 -msgid "Green" -msgstr "Verd" +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "2 kHz" +msgstr "22 kHz" -#: src/skins/skins_cfg.c:431 -msgid "Red" -msgstr "Roig" +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "4 kHz" +msgstr "44 kHz" -#: src/skins/skins_cfg.c:569 -msgid "_Skin" -msgstr "_Decoració" +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "8 kHz" +msgstr "48 kHz" -#: src/skins/skins_cfg.c:574 +#: src/skins/ui_equalizer.c:336 #, fuzzy -msgid "Color adjustment ..." -msgstr "Ajustament del color" +msgid "16 kHz" +msgstr "48 kHz" -#: src/skins/ui_equalizer.c:463 +#: src/skins/ui_equalizer.c:378 msgid "Audacious Equalizer" msgstr "Equalitzador de l'Audacious" -#: src/skins/ui_equalizer.c:991 +#: src/skins/ui_equalizer.c:884 msgid "Presets" msgstr "Perfils" -#: src/skins/ui_main.c:593 +#: src/skins/ui_main.c:444 msgid "kbps" msgstr "" -#: src/skins/ui_main.c:601 +#: src/skins/ui_main.c:452 #, fuzzy msgid "kHz" msgstr "Hz" -#: src/skins/ui_main.c:608 +#: src/skins/ui_main.c:459 #, fuzzy msgid "surround" msgstr "So envolvent" -#: src/skins/ui_main.c:981 -msgid "Audacious - visibility warning" -msgstr "Audacious - avís de visibilitat" - -#: src/skins/ui_main.c:984 -msgid "Show main player window" -msgstr "Mostra la finestra principal" - -#: src/skins/ui_main.c:985 -msgid "Ignore" -msgstr "Ignora" - -#: src/skins/ui_main.c:991 -msgid "" -"Audacious has been started with all of its windows hidden.\n" -"You may want to show the player window again to control Audacious; " -"otherwise, you'll have to control it remotely via audtool or enabled plugins " -"(such as the statusicon plugin)." -msgstr "" -"L'Audacious ha arrencat amb totes les finestres ocultes.\n" -"Potser voldreu mostrar la finestra del reproductor per a controlar " -"l'Audacious; en cas contrari, l'haureu de controlar remotament via l'audtool " -"o connectors (com ara el connector statusicon)." - -#: src/skins/ui_main.c:997 -msgid "Always ignore, show/hide is controlled remotely" -msgstr "Ignora sempre, mostra/oculta es controla remotament" - -#: src/skins/ui_main.c:1042 -msgid "Audacious - broken GTK engine usage warning" -msgstr "Audacious- avís de motor GTK defectuós" - -#: src/skins/ui_main.c:1050 -#, c-format -msgid "" -"Broken GTK engine in use\n" -"\n" -"Audacious has detected that you are using a broken GTK engine.\n" -"\n" -"The theme engine you are using, %s, is incompatible with some of the " -"features used by modern skins. The incompatible features have been disabled " -"for this session.\n" -"\n" -"To use these features, please consider using a different GTK theme engine." -msgstr "" -"Esteu utilitzant un motor GTK defectuós\n" -"\n" -"L'Audacious ha detectat que esteu utilitzant un motor GTK defectuós.\n" -"\n" -"El motor de temes que esteu usant, %s, és incompatible amb algunes " -"funcions que usen moltes decoracions actuals. Les funcions en qüestió s'han " -"deshabilitat per a aquesta sessió.\n" -"\n" -"Si voleu utilitzar aquestes funcions, considereu canviar el motor GTK actual." - -#: src/skins/ui_main.c:1061 -msgid "Do not display this warning again" -msgstr "No mostrar més aquest avís" - -#: src/skins/ui_main.c:1269 -#, c-format -msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)" +#: src/skins/ui_main.c:807 +#, fuzzy, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Anar a: %d:%-2.2d/%d:%-2.2d (%d%%)" -#: src/skins/ui_main.c:1299 +#: src/skins/ui_main.c:828 #, c-format msgid "Volume: %d%%" msgstr "Volum: %d%%" -#: src/skins/ui_main.c:1322 +#: src/skins/ui_main.c:851 #, c-format msgid "Balance: %d%% left" msgstr "Balanç: %d%% esquerra" -#: src/skins/ui_main.c:1324 +#: src/skins/ui_main.c:853 msgid "Balance: center" msgstr "Balanç: centrat" -#: src/skins/ui_main.c:1326 +#: src/skins/ui_main.c:855 #, c-format msgid "Balance: %d%% right" msgstr "Balanç: %d%% dreta" -#: src/skins/ui_main.c:1618 +#: src/skins/ui_main.c:981 msgid "Options Menu" msgstr "Menú d'opcions" -#: src/skins/ui_main.c:1622 +#: src/skins/ui_main.c:985 msgid "Disable 'Always On Top'" msgstr "Desactiva 'Sempre per sobre'" -#: src/skins/ui_main.c:1624 +#: src/skins/ui_main.c:987 msgid "Enable 'Always On Top'" msgstr "Activa 'Sempre per sobre'" -#: src/skins/ui_main.c:1627 +#: src/skins/ui_main.c:990 msgid "File Info Box" msgstr "Informació del fitxer" -#: src/skins/ui_main.c:1631 -msgid "Disable 'GUI Scaling'" -msgstr "Desactiva l'escalat de la IUG" - -#: src/skins/ui_main.c:1633 -msgid "Enable 'GUI Scaling'" -msgstr "Activa l'escalat de la IUG" - -#: src/skins/ui_main.c:1636 +#: src/skins/ui_main.c:995 msgid "Visualization Menu" msgstr "Menú de visualització" -#: src/skins/ui_main.c:2348 +#: src/skins/ui_main.c:1645 msgid "Single mode." msgstr "" -#: src/skins/ui_main.c:2350 +#: src/skins/ui_main.c:1647 #, fuzzy msgid "Playlist mode." msgstr "Llistes" -#: src/skins/ui_main.c:2374 +#: src/skins/ui_main.c:1669 #, fuzzy msgid "Stopping after song." msgstr "Para quan s'acabi la cançó" -#: src/skins/ui_main.c:2376 +#: src/skins/ui_main.c:1671 msgid "Not stopping after song." msgstr "" -#: src/skins/ui_manager.c:50 src/skins/ui_manager.c:51 +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 msgid "Autoscroll Songname" msgstr "Belluga el títol" -#: src/skins/ui_manager.c:56 src/skins/ui_manager.c:57 +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "Para quan s'acabi la cançó" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 msgid "Peaks" msgstr "Pics" -#: src/skins/ui_manager.c:68 src/skins/ui_manager.c:69 +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "Repeteix" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "Barreja" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "Discontinua la reproducció programada" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 msgid "Show Player" msgstr "Mostra el reproductor" -#: src/skins/ui_manager.c:71 src/skins/ui_manager.c:72 +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 msgid "Show Playlist Editor" msgstr "Mostra l'editor de llistes" -#: src/skins/ui_manager.c:74 src/skins/ui_manager.c:75 +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 msgid "Show Equalizer" msgstr "Mostra l'equalitzador" -#: src/skins/ui_manager.c:77 src/skins/ui_manager.c:78 +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 msgid "Always on Top" msgstr "Sempre per sobre" -#: src/skins/ui_manager.c:80 src/skins/ui_manager.c:81 +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 msgid "Put on All Workspaces" msgstr "A tots els espais de treball" -#: src/skins/ui_manager.c:83 src/skins/ui_manager.c:84 +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 msgid "Roll up Player" msgstr "Enrotlla el reproductor" -#: src/skins/ui_manager.c:86 src/skins/ui_manager.c:87 +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 msgid "Roll up Playlist Editor" msgstr "Enrotlla l'editor de llistes" -#: src/skins/ui_manager.c:89 src/skins/ui_manager.c:90 +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 msgid "Roll up Equalizer" msgstr "Enrotlla l'equalitzador" -#: src/skins/ui_manager.c:92 src/sndstretch/sndstretch_xmms.c:393 -msgid "Scale" -msgstr "Escala" - -#: src/skins/ui_manager.c:93 -msgid "DoubleSize" -msgstr "Dobla la mida" - -#: src/skins/ui_manager.c:95 src/skins/ui_manager.c:96 -msgid "Easy Move" -msgstr "Moviment fàcil" - -#: src/skins/ui_manager.c:104 +#: src/skins/ui_manager.c:115 msgid "Analyzer" msgstr "Analitzador" -#: src/skins/ui_manager.c:105 +#: src/skins/ui_manager.c:116 msgid "Scope" msgstr "Oscil·loscopi" -#: src/skins/ui_manager.c:106 +#: src/skins/ui_manager.c:117 msgid "Voiceprint" msgstr "Empremta de veu" -#: src/skins/ui_manager.c:107 +#: src/skins/ui_manager.c:118 msgid "Off" msgstr "Apagat" -#: src/skins/ui_manager.c:111 src/skins/ui_manager.c:128 -#: src/skins/ui_manager.c:134 +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 msgid "Normal" msgstr "Normal" -#: src/skins/ui_manager.c:112 src/skins/ui_manager.c:129 +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 msgid "Fire" msgstr "Foc" -#: src/skins/ui_manager.c:113 +#: src/skins/ui_manager.c:124 msgid "Vertical Lines" msgstr "Línies verticals" -#: src/skins/ui_manager.c:117 +#: src/skins/ui_manager.c:128 msgid "Lines" msgstr "Línies" -#: src/skins/ui_manager.c:118 +#: src/skins/ui_manager.c:129 msgid "Bars" msgstr "Barres" -#: src/skins/ui_manager.c:122 +#: src/skins/ui_manager.c:133 msgid "Dot Scope" msgstr "Oscil·loscopi de punts" -#: src/skins/ui_manager.c:123 +#: src/skins/ui_manager.c:134 msgid "Line Scope" msgstr "Oscil·loscopi de línies" -#: src/skins/ui_manager.c:124 +#: src/skins/ui_manager.c:135 msgid "Solid Scope" msgstr "Oscil·loscopi sòlid" -#: src/skins/ui_manager.c:130 +#: src/skins/ui_manager.c:141 msgid "Ice" msgstr "Gel" -#: src/skins/ui_manager.c:135 +#: src/skins/ui_manager.c:146 msgid "Smooth" msgstr "Suau" -#: src/skins/ui_manager.c:139 src/skins/ui_manager.c:147 +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 msgid "Slowest" msgstr "Mínim" -#: src/skins/ui_manager.c:140 src/skins/ui_manager.c:148 +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 msgid "Slow" msgstr "Lent" -#: src/skins/ui_manager.c:141 src/skins/ui_manager.c:149 +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 msgid "Medium" msgstr "Mitjà" -#: src/skins/ui_manager.c:142 src/skins/ui_manager.c:150 +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 msgid "Fast" msgstr "Ràpid" -#: src/skins/ui_manager.c:143 src/skins/ui_manager.c:151 +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 msgid "Fastest" msgstr "Al màxim" -#: src/skins/ui_manager.c:155 +#: src/skins/ui_manager.c:166 msgid "Time Elapsed" msgstr "Temps transcorregut" -#: src/skins/ui_manager.c:156 +#: src/skins/ui_manager.c:167 msgid "Time Remaining" msgstr "Temps que queda" -#: src/skins/ui_manager.c:185 +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "Pausa" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "Anterior" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "Següent" + +#: src/skins/ui_manager.c:196 msgid "Visualization" msgstr "Visualització" -#: src/skins/ui_manager.c:186 +#: src/skins/ui_manager.c:197 msgid "Visualization Mode" msgstr "Mode de visualització" -#: src/skins/ui_manager.c:187 +#: src/skins/ui_manager.c:198 msgid "Analyzer Mode" msgstr "Mode de l'analitzador" -#: src/skins/ui_manager.c:188 +#: src/skins/ui_manager.c:199 msgid "Scope Mode" msgstr "Mode de l'oscil·loscopi" -#: src/skins/ui_manager.c:189 +#: src/skins/ui_manager.c:200 msgid "Voiceprint Mode" msgstr "Mode de l'empremta de veu" -#: src/skins/ui_manager.c:190 +#: src/skins/ui_manager.c:201 msgid "WindowShade VU Mode" msgstr "Mode del WindowShade VU" -#: src/skins/ui_manager.c:191 +#: src/skins/ui_manager.c:202 msgid "Analyzer Falloff" msgstr "Caiguda de l'analitzador" -#: src/skins/ui_manager.c:192 +#: src/skins/ui_manager.c:203 msgid "Peaks Falloff" msgstr "Caiguda dels pics" -#: src/skins/ui_manager.c:202 src/skins/ui_manager.c:203 +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "Llistes" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "Llista de reproducció nova" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 msgid "Select Next Playlist" msgstr "Selecciona la llista següent" -#: src/skins/ui_manager.c:205 src/skins/ui_manager.c:206 +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 msgid "Select Previous Playlist" msgstr "Selecciona la llista anterior" +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "Esborra la llista" + #: src/skins/ui_manager.c:222 +#, fuzzy +msgid "Import Playlist" +msgstr "Carrega una llista de reproducció" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "Afegeix una llista de reproducció a la llista seleccionada" + +#: src/skins/ui_manager.c:226 +#, fuzzy +msgid "Export Playlist" +msgstr "Carrega una llista de reproducció" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "Desa les llistes de reproducció seleccionades." + +#: src/skins/ui_manager.c:229 +#, fuzzy +msgid "Save All Playlists" +msgstr "Desa una llista de reproducció" + +#: src/skins/ui_manager.c:230 +msgid "" +"Saves all the playlists that are open. Note that this is done automatically " +"when Audacious quits." +msgstr "" + +#: src/skins/ui_manager.c:234 msgid "Refresh List" msgstr "Refresca la llista" -#: src/skins/ui_manager.c:226 +#: src/skins/ui_manager.c:235 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "Refresca les meta-dades associades a cada element de la llista." + +#: src/skins/ui_manager.c:238 msgid "List Manager" msgstr "Gestor de llistes" -#: src/skins/ui_manager.c:236 +#: src/skins/ui_manager.c:239 +msgid "Opens the playlist manager." +msgstr "Obre el gestor de llistes de reproducció." + +#: src/skins/ui_manager.c:243 +msgid "View" +msgstr "Finestres" + +#: src/skins/ui_manager.c:244 +msgid "Interface" +msgstr "" + +#: src/skins/ui_manager.c:245 +#, fuzzy +msgid "Interface Preferences ..." +msgstr "Preferències" + +#: src/skins/ui_manager.c:249 msgid "Add Internet Address..." msgstr "Afegeix una adreça d'Internet..." -#: src/skins/ui_manager.c:240 +#: src/skins/ui_manager.c:250 +msgid "Adds a remote track to the playlist." +msgstr "Afegeix una pista remota a la llista de reproducció." + +#: src/skins/ui_manager.c:253 msgid "Add Files..." msgstr "Afegeix fitxers..." -#: src/skins/ui_manager.c:246 +#: src/skins/ui_manager.c:254 +msgid "Adds files to the playlist." +msgstr "Afegeix fitxers a la llista de reproducció." + +#: src/skins/ui_manager.c:259 msgid "Search and Select" msgstr "Cerca i selecciona" -#: src/skins/ui_manager.c:247 +#: src/skins/ui_manager.c:260 msgid "" "Searches the playlist and selects playlist entries based on specific " "criteria." @@ -5098,219 +3464,367 @@ "Cerca a la llista de reproducció i selecciona elements basant-se en criteris " "específics." -#: src/skins/ui_manager.c:250 +#: src/skins/ui_manager.c:263 msgid "Invert Selection" msgstr "Inverteix la selecció" -#: src/skins/ui_manager.c:251 +#: src/skins/ui_manager.c:264 msgid "Inverts the selected and unselected entries." msgstr "Inverteix els elements seleccionats i no seleccionats." +#: src/skins/ui_manager.c:267 +msgid "Select All" +msgstr "Selecciona tots els elements" + #: src/skins/ui_manager.c:268 +msgid "Selects all of the playlist entries." +msgstr "Selecciona tots els elements de la llista de reproducció." + +#: src/skins/ui_manager.c:271 +msgid "Select None" +msgstr "Selecciona no res" + +#: src/skins/ui_manager.c:272 +msgid "Deselects all of the playlist entries." +msgstr "Deselecciona tots els elements de la llista de reproducció." + +#: src/skins/ui_manager.c:277 +msgid "Remove All" +msgstr "Treu tots els elements" + +#: src/skins/ui_manager.c:278 +msgid "Removes all entries from the playlist." +msgstr "Treu tots els elements de la llista de reproducció." + +#: src/skins/ui_manager.c:281 msgid "Clear Queue" msgstr "Neteja la cua" -#: src/skins/ui_manager.c:269 +#: src/skins/ui_manager.c:282 msgid "Clears the queue associated with this playlist." msgstr "Neteja la cua associada a aquesta llista de reproducció. " -#: src/skins/ui_manager.c:272 +#: src/skins/ui_manager.c:285 msgid "Remove Unavailable Files" msgstr "Treu els fitxers no disponibles" -#: src/skins/ui_manager.c:273 +#: src/skins/ui_manager.c:286 msgid "Removes unavailable files from the playlist." msgstr "Treu els fitxers no disponibles de la llista de reproducció." -#: src/skins/ui_manager.c:276 +#: src/skins/ui_manager.c:289 msgid "Remove Duplicates" msgstr "Treu els duplicats" -#: src/skins/ui_manager.c:279 +#: src/skins/ui_manager.c:291 src/skins/ui_manager.c:323 +#: src/skins/ui_manager.c:353 +msgid "By Title" +msgstr "Per títol" + +#: src/skins/ui_manager.c:292 msgid "Removes duplicate entries from the playlist by title." msgstr "Treu els elements duplicats de la llista de reproducció per títol." -#: src/skins/ui_manager.c:282 src/skins/ui_manager.c:318 -#: src/skins/ui_manager.c:348 +#: src/skins/ui_manager.c:295 src/skins/ui_manager.c:335 +#: src/skins/ui_manager.c:365 msgid "By Filename" msgstr "Per nom de fitxer" -#: src/skins/ui_manager.c:283 +#: src/skins/ui_manager.c:296 msgid "Removes duplicate entries from the playlist by filename." msgstr "" "Treu els elements duplicats de la llista de reproducció per nom de fitxer." -#: src/skins/ui_manager.c:286 src/skins/ui_manager.c:322 -#: src/skins/ui_manager.c:352 +#: src/skins/ui_manager.c:299 src/skins/ui_manager.c:339 +#: src/skins/ui_manager.c:369 msgid "By Path + Filename" msgstr "Per ubicació i nom de fitxer" -#: src/skins/ui_manager.c:287 +#: src/skins/ui_manager.c:300 msgid "Removes duplicate entries from the playlist by their full path." msgstr "" "Treu els elements duplicats de la llista de reproducció per l'ubicació " "completa." -#: src/skins/ui_manager.c:300 -msgid "Reverse List" -msgstr "Inverteix la llista" +#: src/skins/ui_manager.c:303 +msgid "Remove Unselected" +msgstr "Treu els no seleccionats" -#: src/skins/ui_manager.c:301 -msgid "Reverses the playlist." +#: src/skins/ui_manager.c:304 +msgid "Remove unselected entries from the playlist." +msgstr "Treu els elements no seleccionats de la llista de reproducció." + +#: src/skins/ui_manager.c:307 +msgid "Remove Selected" +msgstr "Treu els seleccionats" + +#: src/skins/ui_manager.c:308 +msgid "Remove selected entries from the playlist." +msgstr "Treu els elements seleccionats de la llista de reproducció." + +#: src/skins/ui_manager.c:313 +msgid "Randomize List" +msgstr "Barreja la llista" + +#: src/skins/ui_manager.c:314 +msgid "Randomizes the playlist." +msgstr "Reordena la llista de forma aleatòria." + +#: src/skins/ui_manager.c:317 +msgid "Reverse List" +msgstr "Inverteix la llista" + +#: src/skins/ui_manager.c:318 +msgid "Reverses the playlist." msgstr "Inverteix l'ordre de la llista." -#: src/skins/ui_manager.c:304 +#: src/skins/ui_manager.c:321 msgid "Sort List" msgstr "Ordena la llista" -#: src/skins/ui_manager.c:307 src/skins/ui_manager.c:337 +#: src/skins/ui_manager.c:324 src/skins/ui_manager.c:354 msgid "Sorts the list by title." msgstr "Ordena la llista pel títol." -#: src/skins/ui_manager.c:311 src/skins/ui_manager.c:341 +#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +#, fuzzy +msgid "By Album" +msgstr "Àlbum:" + +#: src/skins/ui_manager.c:328 src/skins/ui_manager.c:358 #, fuzzy msgid "Sorts the list by album." msgstr "Ordena la llista pel títol." -#: src/skins/ui_manager.c:315 src/skins/ui_manager.c:345 +#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +msgid "By Artist" +msgstr "Per l'artista" + +#: src/skins/ui_manager.c:332 src/skins/ui_manager.c:362 msgid "Sorts the list by artist." msgstr "Ordena la llista per l'artista." -#: src/skins/ui_manager.c:319 src/skins/ui_manager.c:349 +#: src/skins/ui_manager.c:336 src/skins/ui_manager.c:366 msgid "Sorts the list by filename." msgstr "Ordena la llista pel nom de fitxer." -#: src/skins/ui_manager.c:323 src/skins/ui_manager.c:353 +#: src/skins/ui_manager.c:340 src/skins/ui_manager.c:370 msgid "Sorts the list by full pathname." msgstr "Ordena la llista per la ubicació completa." -#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +#: src/skins/ui_manager.c:343 src/skins/ui_manager.c:373 msgid "By Date" msgstr "Per la data" -#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +#: src/skins/ui_manager.c:344 src/skins/ui_manager.c:374 msgid "Sorts the list by modification time." msgstr "Ordena la llista per la data de modificació." -#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +#: src/skins/ui_manager.c:347 src/skins/ui_manager.c:377 +msgid "By Track Number" +msgstr "Pel número de pista" + +#: src/skins/ui_manager.c:348 src/skins/ui_manager.c:378 msgid "Sorts the list by track number." msgstr "Ordena la llista pel número de pista." -#: src/skins/ui_manager.c:334 +#: src/skins/ui_manager.c:351 msgid "Sort Selected" msgstr "Ordena els seleccionats" -#: src/skins/ui_manager.c:373 +#: src/skins/ui_manager.c:387 +msgid "File" +msgstr "Fitxer" + +#: src/skins/ui_manager.c:388 +msgid "Help" +msgstr "Ajuda" + +#: src/skins/ui_manager.c:390 msgid "Plugin Services" msgstr "Serveis de connectors" -#: src/skins/ui_manager.c:384 +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:395 +msgid "View Track Details" +msgstr "Mostra detalls de la pista" + +#: src/skins/ui_manager.c:393 src/skins/ui_manager.c:396 +msgid "View track details" +msgstr "Mostra detalls de la pista" + +#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 +msgid "About Audacious" +msgstr "Quant a l'Audacious" + +#: src/skins/ui_manager.c:401 msgid "Play File" msgstr "Reprodueix fitxer" -#: src/skins/ui_manager.c:387 +#: src/skins/ui_manager.c:402 +msgid "Load and play a file" +msgstr "Carrega i reprodueix un fitxer" + +#: src/skins/ui_manager.c:404 msgid "Play Location" msgstr "Reprodueix una font remota" -#: src/skins/ui_manager.c:428 +#: src/skins/ui_manager.c:405 +msgid "Play media from the selected location" +msgstr "Reprodueix un mitjà des de la ubicació seleccionada" + +#: src/skins/ui_manager.c:407 +msgid "Plugin services" +msgstr "Serveis de connectors" + +#: src/skins/ui_manager.c:409 +msgid "Preferences" +msgstr "Preferències" + +#: src/skins/ui_manager.c:410 +msgid "Open preferences window" +msgstr "Obre la finestra de preferències" + +#: src/skins/ui_manager.c:413 +msgid "Quit Audacious" +msgstr "Tanca l'Audacious" + +#: src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Set A-B" +msgstr "Estableix A-B" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Clear A-B" +msgstr "Esborra A-B" + +#: src/skins/ui_manager.c:421 src/skins/ui_manager.c:422 +msgid "Jump to Playlist Start" +msgstr "Salta a l'inici de la llista" + +#: src/skins/ui_manager.c:427 src/skins/ui_manager.c:428 +msgid "Jump to Time" +msgstr "Salta al temps" + +#: src/skins/ui_manager.c:430 +msgid "Queue Toggle" +msgstr "Posa o treu de la cua" + +#: src/skins/ui_manager.c:431 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "Posa o lleva un element de la cua." + +#: src/skins/ui_manager.c:434 +msgid "Copy" +msgstr "" + +#: src/skins/ui_manager.c:436 +#, fuzzy +msgid "Cut" +msgstr "De culte" + +#: src/skins/ui_manager.c:438 +#, fuzzy +msgid "Paste" +msgstr "Al màxim" + +#: src/skins/ui_manager.c:445 msgid "Load" msgstr "Carrega" -#: src/skins/ui_manager.c:433 src/skins/ui_manager.c:454 -#: src/skins/ui_manager.c:469 +#: src/skins/ui_manager.c:450 src/skins/ui_manager.c:471 +#: src/skins/ui_manager.c:486 msgid "Preset" msgstr "Perfil" -#: src/skins/ui_manager.c:434 +#: src/skins/ui_manager.c:451 msgid "Load preset" msgstr "Carrega un perfil" -#: src/skins/ui_manager.c:436 src/skins/ui_manager.c:457 -#: src/skins/ui_manager.c:472 +#: src/skins/ui_manager.c:453 src/skins/ui_manager.c:474 +#: src/skins/ui_manager.c:489 msgid "Auto-load preset" msgstr "Perfil automàtics" -#: src/skins/ui_manager.c:437 +#: src/skins/ui_manager.c:454 msgid "Load auto-load preset" msgstr "Carrega un perfil automàtic" -#: src/skins/ui_manager.c:440 +#: src/skins/ui_manager.c:457 msgid "Load default preset into equalizer" msgstr "Carrega el perfil per defecte a l'equalitzador" -#: src/skins/ui_manager.c:442 +#: src/skins/ui_manager.c:459 msgid "Zero" msgstr "Zero" -#: src/skins/ui_manager.c:443 +#: src/skins/ui_manager.c:460 msgid "Set equalizer preset levels to zero" msgstr "Posa els valors de l'equalitzador a zero" -#: src/skins/ui_manager.c:445 +#: src/skins/ui_manager.c:462 msgid "From file" msgstr "Des d'un fitxer" -#: src/skins/ui_manager.c:446 +#: src/skins/ui_manager.c:463 msgid "Load preset from file" msgstr "Carrega el perfil des d'un fitxer" -#: src/skins/ui_manager.c:448 +#: src/skins/ui_manager.c:465 msgid "From WinAMP EQF file" msgstr "D'un fitxer EQF del WinAMP" -#: src/skins/ui_manager.c:449 +#: src/skins/ui_manager.c:466 msgid "Load preset from WinAMP EQF file" msgstr "Carrega el perfil des d'un fitxer EQF del WinAMP" -#: src/skins/ui_manager.c:451 +#: src/skins/ui_manager.c:468 msgid "WinAMP Presets" msgstr "Perfils del WinAMP" -#: src/skins/ui_manager.c:452 +#: src/skins/ui_manager.c:469 msgid "Import WinAMP presets" msgstr "Importa perfils del WinAMP" -#: src/skins/ui_manager.c:455 +#: src/skins/ui_manager.c:472 msgid "Save preset" msgstr "Desa el perfil" -#: src/skins/ui_manager.c:458 +#: src/skins/ui_manager.c:475 msgid "Save auto-load preset" msgstr "Desa com a perfil automàtic" -#: src/skins/ui_manager.c:461 +#: src/skins/ui_manager.c:478 msgid "Save default preset" msgstr "Desa com a perfil per defecte" -#: src/skins/ui_manager.c:463 +#: src/skins/ui_manager.c:480 msgid "To file" msgstr "En un fitxer" -#: src/skins/ui_manager.c:464 +#: src/skins/ui_manager.c:481 msgid "Save preset to file" msgstr "Desa el perfil en un fitxer" -#: src/skins/ui_manager.c:466 +#: src/skins/ui_manager.c:483 msgid "To WinAMP EQF file" msgstr "En un fitxer EQF del WinAMP" -#: src/skins/ui_manager.c:467 +#: src/skins/ui_manager.c:484 msgid "Save preset to WinAMP EQF file" msgstr "Desa els valors en un fitxer EQF del WinAMP" -#: src/skins/ui_manager.c:470 +#: src/skins/ui_manager.c:487 msgid "Delete preset" msgstr "Esborra el perfil" -#: src/skins/ui_manager.c:473 +#: src/skins/ui_manager.c:490 msgid "Delete auto-load preset" msgstr "Esborra el perfil automàtic" -#: src/skins/ui_playlist.c:374 +#: src/skins/ui_playlist.c:244 msgid "Search entries in active playlist" msgstr "Cerca elements en la llista de reproducció activa" -#: src/skins/ui_playlist.c:382 +#: src/skins/ui_playlist.c:252 msgid "" "Select entries in playlist by filling one or more fields. Fields use regular " "expressions syntax, case-insensitive. If you don't know how regular " @@ -5322,120 +3836,61 @@ "insensibles a la capitalització. Si no sabeu com funcionen les expressions " "regulars, podeu escriure literalment el text que busqueu." -#: src/skins/ui_playlist.c:397 +#: src/skins/ui_playlist.c:260 +msgid "Title: " +msgstr "Títol: " + +#: src/skins/ui_playlist.c:267 msgid "Album: " msgstr "Àlbum:" -#: src/skins/ui_playlist.c:404 +#: src/skins/ui_playlist.c:274 msgid "Artist: " msgstr "Artista: " -#: src/skins/ui_playlist.c:411 +#: src/skins/ui_playlist.c:281 msgid "Filename: " msgstr "Nom del fitxer: " -#: src/skins/ui_playlist.c:419 +#: src/skins/ui_playlist.c:289 msgid "Clear previous selection before searching" msgstr "Neteja la selecció anterior abans de cercar" -#: src/skins/ui_playlist.c:422 +#: src/skins/ui_playlist.c:292 msgid "Automatically toggle queue for matching entries" msgstr "Posa o treu de la cua automàticament els elements trobats" -#: src/skins/ui_playlist.c:425 +#: src/skins/ui_playlist.c:295 msgid "Create a new playlist with matching entries" msgstr "Crea una llista de reproducció nova amb els elements trobats" -#: src/skins/ui_playlist.c:772 -msgid "Save as Static Playlist" -msgstr "Desa com a llista de reproducció estàtica" - -#: src/skins/ui_playlist.c:779 -msgid "Use Relative Path" -msgstr "Usa camins relatius" - -#: src/skins/ui_playlist.c:802 -msgid "Load Playlist" -msgstr "Carrega una llista de reproducció" - -#: src/skins/ui_playlist.c:815 -msgid "Save Playlist" -msgstr "Desa una llista de reproducció" - -#: src/skins/ui_playlist.c:1146 +#: src/skins/ui_playlist.c:762 msgid "Audacious Playlist Editor" msgstr "Editor de llistes de l'Audacious" -#: src/skins/ui_playlist.c:1206 +#: src/skins/ui_playlist.c:809 #, c-format msgid "%s (%d of %d)" msgstr "" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "31 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "63 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "125 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "250 Hz" -msgstr "22050 Hz " - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "500 Hz" -msgstr "11000 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "1 kHz" -msgstr "11 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "2 kHz" -msgstr "22 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "4 kHz" -msgstr "44 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "8 kHz" -msgstr "48 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "16 kHz" -msgstr "48 kHz" - -#: src/skins/ui_skinselector.c:179 +#: src/skins/ui_skinselector.c:162 msgid "Archived Winamp 2.x skin" msgstr "Decoració del Winamp 2.x arxivada" -#: src/skins/ui_skinselector.c:184 +#: src/skins/ui_skinselector.c:167 msgid "Unarchived Winamp 2.x skin" msgstr "Decoració del Winamp 2.x no arxivada" -#: src/skins/util.c:834 +#: src/skins/util.c:773 #, c-format msgid "Could not create directory (%s): %s\n" msgstr "No s'ha pogut crear el directori (%s): %s\n" -#: src/sndfile/plugin.c:531 +#: src/sndfile/plugin.c:438 msgid "About sndfile plugin" msgstr "Quant al connector sndfile" -#: src/sndfile/plugin.c:532 +#: src/sndfile/plugin.c:439 msgid "" "Adapted for Audacious usage by Tony Vroon \n" "from the xmms_sndfile plugin which is:\n" @@ -5476,56 +3931,64 @@ "Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" "Boston, MA 02110-1301, USA." -#: src/sndstretch/sndstretch_xmms.c:175 +#: src/sndstretch/sndstretch_xmms.c:155 msgid "About SndStretch" msgstr "Quant a SndStretch" -#: src/sndstretch/sndstretch_xmms.c:336 +#: src/sndstretch/sndstretch_xmms.c:313 msgid "Volume corr." msgstr "Correcció de volum" -#: src/sndstretch/sndstretch_xmms.c:337 +#: src/sndstretch/sndstretch_xmms.c:314 msgid "Short Overlap" msgstr "Encavalcament curt" -#: src/sndstretch/sndstretch_xmms.c:391 +#: src/sndstretch/sndstretch_xmms.c:360 msgid "Speed" msgstr "Velocitat" -#: src/sndstretch/sndstretch_xmms.c:392 +#: src/sndstretch/sndstretch_xmms.c:361 msgid "Pitch" msgstr "To" -#: src/sndstretch/sndstretch_xmms.c:413 +#: src/sndstretch/sndstretch_xmms.c:362 +msgid "Scale" +msgstr "Escala" + +#: src/sndstretch/sndstretch_xmms.c:363 +msgid "Options" +msgstr "Opcions" + +#: src/sndstretch/sndstretch_xmms.c:382 msgid "SndStretch - Configuration" msgstr "SndStretch - Configuració" -#: src/song_change/song_change.c:397 +#: src/song_change/song_change.c:464 msgid "Command to run when Audacious starts a new song." msgstr "Ordre a executar quan l'Audacious comença una nova cançó." -#: src/song_change/song_change.c:398 src/song_change/song_change.c:402 -#: src/song_change/song_change.c:406 src/song_change/song_change.c:410 +#: src/song_change/song_change.c:465 src/song_change/song_change.c:469 +#: src/song_change/song_change.c:473 src/song_change/song_change.c:477 msgid "Command:" msgstr "Ordre:" -#: src/song_change/song_change.c:401 +#: src/song_change/song_change.c:468 msgid "Command to run toward the end of a song." msgstr "Ordre a executar cap al final de la cançó." -#: src/song_change/song_change.c:405 +#: src/song_change/song_change.c:472 msgid "Command to run when Audacious reaches the end of the playlist." msgstr "" "Ordre a executar quan l'Audacious arriba al final de la llista de " "reproducció." -#: src/song_change/song_change.c:409 +#: src/song_change/song_change.c:476 msgid "" "Command to run when title changes for a song (i.e. network streams titles)." msgstr "" "Ordre a executar quan canvia el títol d'una cançó (en fluxos de xarxa)." -#: src/song_change/song_change.c:413 +#: src/song_change/song_change.c:480 #, fuzzy msgid "" "You can use the following format strings which\n" @@ -5539,7 +4002,10 @@ "%n or %s: Song name\n" "%r: Rate (in bits per second)\n" "%t: Playlist position (%02d)\n" -"%p: Currently playing (1 or 0)" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" msgstr "" "Podeu utilitzar les següents cadenes de format\n" "que se substituiran abans de cridar l'ordre (no\n" @@ -5554,7 +4020,7 @@ "%%t: Posició a la llista de reproducció (%%02d)\n" "%%p: Reproducció en curs (1 o 0)" -#: src/song_change/song_change.c:437 +#: src/song_change/song_change.c:507 msgid "" "Parameters passed to the shell should be encapsulated in " "quotes. Doing otherwise is a security risk." @@ -5563,311 +4029,1833 @@ "entre\n" "cometes. Altrament seria un risc per a la seguretat." -#: src/song_change/song_change.c:448 +#: src/song_change/song_change.c:518 msgid "Commands" msgstr "Ordres" -#: src/song_change/song_change.c:484 +#: src/song_change/song_change.c:555 #, fuzzy msgid "Song Change" msgstr "Missatge de la cançó" -#: src/spectrum/spectrum.c:89 -msgid "Spectrum Analyzer" -msgstr "Analitzador d'espectre" +#: src/statusicon/statusicon.c:378 +msgid "About Status Icon Plugin" +msgstr "Quant al connector d'icona d'estat" + +#: src/statusicon/statusicon.c:379 +#, fuzzy +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager.\n" +msgstr "" +"\n" +"escrit per Giacomo Lozito < james@develia.org >\n" +"Aquest connector proporciona una icona d'estat, que\n" +"es col·loca a l'àrea de la safata del gestor de finestres.\n" + +#: src/statusicon/statusicon.c:447 +msgid "Status Icon Plugin - Preferences" +msgstr "Connector d'Icona d'Estat - Preferències" + +#: src/statusicon/statusicon.c:457 +msgid "Right-Click Menu" +msgstr "Clic amb el botó dret" + +#: src/statusicon/statusicon.c:462 +msgid "Small playback menu #1" +msgstr "Menú de reproducció #1" + +#: src/statusicon/statusicon.c:465 +msgid "Small playback menu #2" +msgstr "Menú de reproducció #2" + +#: src/statusicon/statusicon.c:481 +msgid "Mouse Scroll Action" +msgstr "Roda del ratolí" + +#: src/statusicon/statusicon.c:485 +msgid "Change volume" +msgstr "Canvia el volum" + +#: src/statusicon/statusicon.c:487 +msgid "Change playing song" +msgstr "Canvia la cançó" + +#: src/statusicon/statusicon.c:500 +#, fuzzy +msgid "Other settings" +msgstr "Paràmetres del mesclador" + +#: src/statusicon/statusicon.c:505 +msgid "Disable the popup window" +msgstr "" + +#: src/statusicon/statusicon.c:512 +msgid "Close to the notification area (system tray)" +msgstr "" + +#: src/stereo_plugin/stereo.c:41 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin 1999." +msgstr "" +"Connector d'estèreo extra\n" +"\n" +"Per Johan Levin, 1999." + +#: src/stereo_plugin/stereo.c:65 +msgid "About Extra Stereo Plugin" +msgstr "Quant al connector d'estèreo extra" + +#: src/stereo_plugin/stereo.c:102 +msgid "Configure Extra Stereo" +msgstr "Configuració de l'estèreo extra" + +#: src/tonegen/tonegen.c:48 +msgid "About Tone Generator" +msgstr "Quant al connector generador de tons" + +#: src/tonegen/tonegen.c:50 +msgid "" +"Sinus tone generator by Haavard Kvaalen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" +msgstr "" +"Generador de tons sinusoïdals per Haavard Kvaalen \n" +"Modificat per Daniel J. Peng \n" +"\n" +"Per a fer-lo servir, afegiu un URL: tone://freq1;freq2;...\n" +"e.g. tone://2000;2005 per a generar un to de 2000 Hz i un to\n" +"de 2005 Hz." + +#: src/tonegen/tonegen.c:100 +#, c-format +msgid "%s %.1f Hz" +msgstr "%s %.1f Hz" + +#: src/tonegen/tonegen.c:100 +msgid "Tone Generator: " +msgstr "Generador de tons:" + +#: src/unix-io/gtk.c:34 +#, fuzzy +msgid "About File I/O Plugin" +msgstr "Quant al connector ESounD" + +#: src/vorbis/configure.c:31 +msgid "Override generic titles" +msgstr "Ignora els títols genèrics" + +#: src/vorbis/configure.c:32 +msgid "Title format:" +msgstr "Format del títol:" + +#: src/vorbis/configure.c:36 +#, fuzzy +msgid "Ogg Vorbis Tags" +msgstr "Etiquetes Ogg Vorbis:" + +#: src/vorbis/configure.c:69 +msgid "Ogg Vorbis Audio Plugin Configuration" +msgstr "Configuració del connector d'àudio Ogg Vorbis" + +#: src/vorbis/vorbis.c:581 +msgid "About Ogg Vorbis Audio Plugin" +msgstr "Quant al connector d'àudio Ogg Vorbis" + +#: src/vorbis/vorbis.c:586 +msgid "" +"Ogg Vorbis Plugin by the Xiph.org Foundation\n" +"\n" +"Original code by\n" +"Tony Arcieri \n" +"Contributions from\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visit the Xiph.org Foundation at http://www.xiph.org/\n" +msgstr "" +"Connector Ogg Vorbis per la Fundació Xiph.org\n" +"\n" +"Codi original per\n" +"Tony Arcieri \n" +"Contribucions de\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visiteu la Fundació Xiph.org a http://www.xiph.org/\n" + +#: src/vtx/about.c:14 +msgid "About Vortex Player" +msgstr "Quant al connector reproductor Vortex" + +#: src/vtx/about.c:15 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"\n" +"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" +"and other AY/YM music sites.\n" +"\n" +"Audacious implementation by Pavel Vymetalek " +msgstr "" +"Reproductor de format Vortex per Sashnov Alexander \n" +"Basat en el codi font original in_vtx.dll de Roman Sherbakov " +"\n" +"\n" +"Podeu trobar música en format vtx a http://vtx.microfor.ru/music.htm\n" +"i a altres llocs de música AY/YM.\n" +"\n" +"Implementat a l'Audacious per Pavel Vymetalek " + +#: src/wavpack/wavpack.c:353 +#, c-format +msgid "Wavpack Decoder Plugin %s" +msgstr "Connector descodificador Wavpack %s" + +#: src/wavpack/wavpack.c:354 +msgid "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan\n" +"Visit the Wavpack site at http://www.wavpack.com/\n" +msgstr "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Alguns trossos del codi són de Miles Egan\n" +"Visiteu la plana web de Wavpack a http://www.wavpack.com/\n" + +#~ msgid "Use Bitmap fonts if available" +#~ msgstr "Usa foses mapa de bits, si n'hi ha de disponibles" + +#~ msgid "" +#~ "Use bitmap fonts if they are available. Bitmap fonts do not support " +#~ "Unicode strings." +#~ msgstr "" +#~ "Usa foses tipus mapa de bits, si n'hi ha de disponibles. Les fonts de " +#~ "mapa de bits no suporten cadenes Unicode." + +#~ msgid "_Miscellaneous" +#~ msgstr "_Miscel·lània" + +#~ msgid "Use two-way text scroller" +#~ msgstr "Usa desplaçament de text bidireccional" + +#~ msgid "About " +#~ msgstr "Quant al connector " + +#~ msgid "" +#~ "\n" +#~ "Copyright (C) 2002, 2003 Simon Peter \n" +#~ "\n" +#~ "This plugin is released under the terms and conditions of the GNU LGPL.\n" +#~ "See http://www.gnu.org/licenses/lgpl.html for details.\n" +#~ "\n" +#~ "This plugin uses the AdPlug library, which is copyright (C) Simon Peter, " +#~ "et al.\n" +#~ "Linked AdPlug library version: " +#~ msgstr "" +#~ "\n" +#~ "Copyright (C) 2002, 2003 Simon Peter \n" +#~ "\n" +#~ "Aquest connector s'ha publicat sota els termes i condicions de la\n" +#~ "llicència GNU LGPL. Vegeu http://www.gnu.org/licenses/lgpl.html per a\n" +#~ "més detalls.\n" +#~ "\n" +#~ "Aquest connector fa ús de la llibreria AdPlug, el copyright (C) de la " +#~ "qual\n" +#~ "pertany a Simon Peter, et al.\n" +#~ "\n" +#~ "Versió de la llibreria AdPlug enllaçada: " + +#~ msgid "AdPlug :: Configuration" +#~ msgstr "AdPlug :: Configuració" + +#~ msgid "Sound quality" +#~ msgstr "Qualitat de so" + +#~ msgid "Resolution" +#~ msgstr "Resolució" + +#~ msgid "8bit" +#~ msgstr "8 bits" + +#~ msgid "16bit" +#~ msgstr "16 bits" + +#~ msgid "Channels" +#~ msgstr "Canals" + +#~ msgid "" +#~ "Setting stereo is not recommended, unless you need to. This won't add any " +#~ "stereo effects to the sound - OPL2 is just mono - but eats up more CPU " +#~ "power!" +#~ msgstr "" +#~ "Activar l'estèreo no és recomanable, si no ho heu de fer. Això no afegirà " +#~ "cap efecte estèreo al so -l'OPL2 és mono- però consumeix més CPU!" + +#~ msgid "Frequency" +#~ msgstr "Freqüència" + +#~ msgid "Detect songend" +#~ msgstr "Detecta el final de la pista" + +#~ msgid "" +#~ "If enabled, XMMS will detect a song's ending, stop it and advance in the " +#~ "playlist. If disabled, XMMS won't take notice of a song's ending and loop " +#~ "it all over again and again." +#~ msgstr "" +#~ "Si està activat, l'XMMS detectarà el final de la pista, pararà i passarà " +#~ "a la següent. Si no està activat, l'XMMS pot no detectar que la pista " +#~ "s'ha acabat i seguir reproduint-la un cop i un altre." + +#~ msgid "Formats" +#~ msgstr "Formats" + +#~ msgid "Format selection" +#~ msgstr "Selecció de formats" + +#~ msgid "Format" +#~ msgstr "Format" + +#~ msgid "Extension" +#~ msgstr "Extensió" + +#~ msgid "" +#~ "Selected file types will be recognized and played back by this plugin. " +#~ "Deselected types will be ignored to make room for other plugins to play " +#~ "these files." +#~ msgstr "" +#~ "Els tipus de fitxers seleccionats seran reconeguts i reproduïts per " +#~ "aquest connector. Els tipus no seleccionats seran ignorats, i podran ser " +#~ "reproduïts per altres connectors." + +#~ msgid "AdPlug :: File Info" +#~ msgstr "AdPlug :: Informació del fitxer" + +#~ msgid "Author: " +#~ msgstr "Autor: " + +#~ msgid "File Type: " +#~ msgstr "Tipus de fitxer: " + +#~ msgid "Subsongs: " +#~ msgstr "Sub-pistes: " + +#~ msgid "Instruments: " +#~ msgstr "Instruments: " + +#~ msgid "Orders: " +#~ msgstr "Ordres: " + +#~ msgid "Patterns: " +#~ msgstr "Pautes: " + +#~ msgid "Song" +#~ msgstr "Cançó" + +#~ msgid "Instrument name" +#~ msgstr "Nom de l'instrument" + +#~ msgid "Song message" +#~ msgstr "Missatge de la cançó" + +#~ msgid "Subsong selection" +#~ msgstr "Selecció de sub-pistes" + +#~ msgid "Order: " +#~ msgstr "Ordre: " + +#~ msgid "Pattern: " +#~ msgstr "Pauta: " + +#~ msgid "Row: " +#~ msgstr "Fila: " + +#~ msgid "Speed: " +#~ msgstr "Velocitat: " + +#~ msgid "Timer: " +#~ msgstr "Temporitzador: " + +#~ msgid "About XMMS Alarm" +#~ msgstr "Quant a l'alarma XMMS" + +#~ msgid "XMMS Alarm" +#~ msgstr "Alarma XMMS" + +#~ msgid "" +#~ "An XMMS plugin which can be used\n" +#~ "to start playing at a certain time.\n" +#~ "\n" +#~ "Send all complaints to:\n" +#~ "Adam Feakin \n" +#~ "Daniel Stodden \n" +#~ "\n" +#~ "http://www.snika.uklinux.net/xmms-alarm/" +#~ msgstr "" +#~ "Un connector XMMS que es pot fer servir\n" +#~ "per a començar a reproduir a una certa hora.\n" +#~ "\n" +#~ "Envieu totes les queixes a:\n" +#~ "Adam Feakin \n" +#~ "\n" +#~ "http://www.snika.uklinux.net/xmms-alarm/" + +#~ msgid "Alarm" +#~ msgstr "Alarma" + +#~ msgid "This is your wakeup call." +#~ msgstr "Això és l'avís per despertar-se." + +#~ msgid "Select Playlist" +#~ msgstr "Seleccioneu una llista de reproducció" + +#~ msgid "Sorry" +#~ msgstr "Ho sentim" + +#~ msgid "Warning" +#~ msgstr "Atenció" + +#~ msgid "" +#~ "For safety reasons the \"quiet\" time must be at least 65 seconds longer " +#~ "than the fading time, it must also be more than 10 seconds. This " +#~ "basically means that there is a bug in the code and until I find a way of " +#~ "really fixing it this message will appear :)\n" +#~ "\n" +#~ "Your fading settings have NOT been saved\n" +#~ "\n" +#~ "--\n" +#~ "Adam" +#~ msgstr "" +#~ "Per raons de seguretat, el temps \"tranquil\" ha de durar almenys 65 " +#~ "segons més que el temps de fosa, i ha de durar més de 10 segons. Això " +#~ "bàsicament significa que hi ha un \"bug\" en el codi i que fins que no " +#~ "trobi la manera de resoldre'l sortirà aquest missatge :)\n" +#~ "\n" +#~ "Els paràmetres de fosa NO s'han desat\n" +#~ "\n" +#~ "--\n" +#~ "Adam" + +#~ msgid "Oh Well" +#~ msgstr "Vaja" + +#~ msgid "Alarm Settings" +#~ msgstr "Paràmetres de l'alarma" + +#~ msgid "Time" +#~ msgstr "Hora" + +#~ msgid "hours" +#~ msgstr "hores" + +#~ msgid "h" +#~ msgstr "h" + +#~ msgid "minutes" +#~ msgstr "minuts" + +#~ msgid "Quiet after:" +#~ msgstr "Para al cap de:" + +#~ msgid "Alarm at (default):" +#~ msgstr "Alarma (per defecte) a les:" + +#~ msgid "Choose the days for the alarm to come on" +#~ msgstr "Trieu els dies que ha de saltar l'alarma" + +#~ msgid "Day" +#~ msgstr "Dia" + +#~ msgid "Tuesday" +#~ msgstr "Dimarts" + +#~ msgid "Wednesday" +#~ msgstr "Dimecres" + +#~ msgid "Thursday" +#~ msgstr "Dijous" + +#~ msgid "Friday" +#~ msgstr "Divendres" + +#~ msgid "Saturday" +#~ msgstr "Dissabte" + +#~ msgid "Sunday" +#~ msgstr "Diumenge" + +#~ msgid "Monday" +#~ msgstr "Dilluns" + +#~ msgid "Days" +#~ msgstr "Dies" + +#~ msgid "Fading" +#~ msgstr "Fosa" + +#~ msgid "Volume" +#~ msgstr "Volum" + +#~ msgid "Current" +#~ msgstr "Actual" + +#~ msgid "reset to current output volume" +#~ msgstr "posa al volum de sortida actual" + +#~ msgid "Start at" +#~ msgstr "Comença a" + +#~ msgid "%" +#~ msgstr "%" + +#~ msgid "Final" +#~ msgstr "Final" + +#~ msgid "Additional Command" +#~ msgstr "Ordre Addicional" + +#~ msgid "enable" +#~ msgstr "activa" + +#~ msgid "Playlist (optional)" +#~ msgstr "Llista de reproducció (opcional)" + +#~ msgid "Browse..." +#~ msgstr "Vés a..." + +#~ msgid "Reminder" +#~ msgstr "Recordatori" + +#~ msgid "Use reminder" +#~ msgstr "Activa els recordatoris" + +#~ msgid "What do these options mean?" +#~ msgstr "Què signifiquen aquestes opcions?" + +#~ msgid "" +#~ "\n" +#~ "Time\n" +#~ " Alarm at: \n" +#~ " The time for the alarm to come on.\n" +#~ "\n" +#~ " Quiet After: \n" +#~ " Stop alarm after this amount of time.\n" +#~ " (if the wakeup dialog is not closed)\n" +#~ "\n" +#~ "\n" +#~ "Days\n" +#~ " Day:\n" +#~ " Select the days for the alarm to activate.\n" +#~ "\n" +#~ " Time:\n" +#~ " Choose the time for the alarm on each day,\n" +#~ " or select the toggle button to use the default\n" +#~ " time.\n" +#~ "\n" +#~ "\n" +#~ "Volume\n" +#~ " Fading: \n" +#~ " Fade the volume up to the chosen volume \n" +#~ " for this amount of time.\n" +#~ "\n" +#~ " Start at: \n" +#~ " Start fading from this volume.\n" +#~ "\n" +#~ " Final: \n" +#~ " The volume to stop fading at. If the fading\n" +#~ " time is 0 then set volume to this and start\n" +#~ " playing.\n" +#~ "\n" +#~ "\n" +#~ "Options:\n" +#~ " Additional Command:\n" +#~ " Run this command at the alarm time.\n" +#~ "\n" +#~ " Playlist: \n" +#~ " Load this playlist for playing songs from \n" +#~ " (must have .m3u extension). If no playlist\n" +#~ " is given then the songs which are currently\n" +#~ " in the list will be used.\n" +#~ " The URL of an mp3/ogg stream can also be\n" +#~ " entered here, but loading of playlists from\n" +#~ " URLs is not currently supported by xmms.\n" +#~ "\n" +#~ " Reminder:\n" +#~ " Display a reminder when the alarm goes off,\n" +#~ " type the reminder in the box and turn on the\n" +#~ " toggle button if you want it to be shown.\n" +#~ msgstr "" +#~ "\n" +#~ "Temps\n" +#~ " Alarma a les: \n" +#~ " Hora en que salta l'alarma.\n" +#~ "\n" +#~ " Para al cap de: \n" +#~ " Para l'alarma quan hagi passat aquesta estona.\n" +#~ " (si no heu tancat el diàleg de despertada)\n" +#~ "\n" +#~ "\n" +#~ "Dies\n" +#~ " Dia:\n" +#~ " Els dies de la setmana en que s'activa l'alarma.\n" +#~ "\n" +#~ " Hora:\n" +#~ " L'hora en que salta l'alarma cada dia, o bé marqueu\n" +#~ " la casella per a fer servir l'hora per defecte.\n" +#~ "\n" +#~ "\n" +#~ "Volum\n" +#~ " Fosa: \n" +#~ " Augmenta el volum fins el nivell especificat durant el \n" +#~ " temps indicat.\n" +#~ "\n" +#~ " Comença a: \n" +#~ " Comença amb aquest volum.\n" +#~ "\n" +#~ " Final: \n" +#~ " El nivell de volum final. Si el temps de fosa\n" +#~ " és 0, es començarà a reproduir a aquest nivell\n" +#~ " des del principi.\n" +#~ "\n" +#~ "\n" +#~ "Opcions:\n" +#~ " Ordre addicional:\n" +#~ " Executa aquesta ordre quan salta l'alarma.\n" +#~ "\n" +#~ " Llista de reproducció: \n" +#~ " Carrega aquesta llista de reproducció (ha\n" +#~ " de tenir extensió .m3u). Si no introduïu cap\n" +#~ " llista, es faran servir les cançons que hi\n" +#~ " hagin a la llista en aquest moment.\n" +#~ " També és possible introduir un URL d'un flux\n" +#~ " mp3/ogg, però carregar llistes de reproducció\n" +#~ " des d'URLS de moment no està suportat.\n" +#~ "\n" +#~ " Recordatori:\n" +#~ " Mostra un recordatori quan salta l'alarma,\n" +#~ " escriviu el recordatori en el camp de text i\n" +#~ " marqueu la casella si voleu que es mostri.\n" + +#~ msgid "Your reminder for today is.." +#~ msgstr "El vostre recordatori d'avui és.." + +#~ msgid "Thankyou" +#~ msgstr "Gràcies" + +#, fuzzy +#~ msgid "Available Headsets" +#~ msgstr "Aplicacions de fons disponibles" + +#, fuzzy +#~ msgid "Current Headset" +#~ msgstr "Actual" + +#, fuzzy +#~ msgid "_Connect" +#~ msgstr "Connexió" + +#, fuzzy +#~ msgid "Class" +#~ msgstr "Clàssica" + +#, fuzzy +#~ msgid "Address:" +#~ msgstr "Adreça del dispositiu" + +#, fuzzy +#~ msgid "Rescan" +#~ msgstr "Rellegeix el CD" + +#~ msgid "Playback->Play" +#~ msgstr "Reproducció->Reprodueix" + +#~ msgid "Playback->Stop" +#~ msgstr "Reproducció->Para" + +#~ msgid "Playback->Pause" +#~ msgstr "Reproducció->Pausa" + +#~ msgid "Playback->Prev" +#~ msgstr "Reproducció->Anterior" + +#~ msgid "Playback->Next" +#~ msgstr "Reproducció->Següent" + +#~ msgid "Playback->Eject" +#~ msgstr "Reproducció->Expulsa" + +#~ msgid "Playlist->Repeat" +#~ msgstr "Llista de reproducció->Repeteix" + +#~ msgid "Playlist->Shuffle" +#~ msgstr "Llista de reproducció->Barreja" + +#~ msgid "Volume->Up_5" +#~ msgstr "Volum->Amunt_5" + +#~ msgid "Volume->Down_5" +#~ msgstr "Volum->Avall_5" + +#~ msgid "Volume->Up_10" +#~ msgstr "Volum->Amunt_10" + +#~ msgid "Volume->Down_10" +#~ msgstr "Volum->Avall_10" + +#~ msgid "Volume->Mute" +#~ msgstr "Volum->Silenciat" + +#~ msgid "Window->Main" +#~ msgstr "Finestra->Principal" + +#~ msgid "Window->Playlist" +#~ msgstr "Finestra->Llista de reproducció" + +#~ msgid "Window->Equalizer" +#~ msgstr "Finestra->Equalitzador" + +#~ msgid "Window->JumpToFile" +#~ msgstr "Finestra->SaltaAlFitxer" + +#~ msgid "" +#~ "event-device-plugin: unable to open device file %s , skipping this " +#~ "device; check that the file exists and that you have read permission for " +#~ "it\n" +#~ msgstr "" +#~ "event-device-plugin: no s'ha pogut obrir el fitxer de dispositiu %s, " +#~ "s'omet aquest dispositiu; comproveu que el fitxer existeix i que teniu " +#~ "permís de lectura\n" + +#~ msgid "" +#~ "event-device-plugin: unable to create a io_channel for device file %s ," +#~ "skipping this device\n" +#~ msgstr "" +#~ "event-device-plugin: no s'ha pogut crear un canal e/s pel fitxer de " +#~ "dispositiu %s, s'omet aquest dispositiu\n" + +#~ msgid "" +#~ "event-device-plugin: unable to open /proc/bus/input/devices , automatic " +#~ "detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: no s'ha pogut obrir /proc/bus/input/devices, no " +#~ "funcionarà la detecció automàtica de dispositius.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to open a io_channel for /proc/bus/input/" +#~ "devices , automatic detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: no s'ha pogut obrir un canal e/s per a /proc/bus/" +#~ "input/devices, la detecció automàtica de dispositius no funcionarà.\n" + +#~ msgid "" +#~ "event-device-plugin: an error occurred while reading /proc/bus/input/" +#~ "devices , automatic detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: s'ha produït un error en llegir /proc/bus/input/" +#~ "devices, la detecció automàtica de dispositius no funcionarà.\n" + +#~ msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" +#~ msgstr "" +#~ "event-device-plugin: el dispositiu %s no s'ha trobat a /dev/input, " +#~ "s'omet.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to load config file %s , default settings " +#~ "will be used.\n" +#~ msgstr "" +#~ "event-device-plugin: no s'ha pogut carregar el fitxer de configuració %s, " +#~ "s'utilitzaran els paràmetres per defecte.\n" + +#~ msgid "" +#~ "event-device-plugin: incomplete information in config file for device \"%s" +#~ "\" , skipping.\n" +#~ msgstr "" +#~ "event-device-plugin: informació incompleta en el fitxer de config per al " +#~ "dispositiu \"%s\", s'omet.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get is_active value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: configuració, no s'ha pogut obtenir el valor " +#~ "is_active pel dispositiu \"%s\", s'omet.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to access local directory %s , settings will " +#~ "not be saved.\n" +#~ msgstr "" +#~ "event-device-plugin: no s'ha pogut accedir al directori local %s, no es " +#~ "desaran les preferències.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get filename value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: configuració, no s'ha pogut obtenir el valor " +#~ "filename per al dispositiu \"%s\", s'omet.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get phys value for device " +#~ "\"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: configuració, no s'ha pogut el valor get phys per al " +#~ "dispositiu \"%s\", s'omet.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get is_custom value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: configuració, no s'ha pogut obtenir el valor " +#~ "is_custom per al dispositiu \"%s\", s'omet.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unexpected value for device \"%s\", " +#~ "skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: configuració, valor inesperat per al dispositiu \"%s" +#~ "\", s'omet.\n" + +#, fuzzy +#~ msgid "Detected" +#~ msgstr "Detecta el final de la pista" + +#, fuzzy +#~ msgid "Custom" +#~ msgstr "personalitzat" + +#, fuzzy +#~ msgid "Not Detected" +#~ msgstr "Ordena els seleccionats" + +#~ msgid "Information" +#~ msgstr "Informació" + +#~ msgid "" +#~ "Cannot open bindings window for a not-detected device.\n" +#~ "Ensure that the device has been correctly plugged in." +#~ msgstr "" +#~ "No es pot obrir la finestra de vincles per a un dispositiu no detectat.\n" +#~ "Assegureu-vos que el dispositiu està ben endollat." + +#~ msgid "" +#~ "Unable to open selected device.\n" +#~ "Please check read permissions on device file." +#~ msgstr "" +#~ "No es pot obrir el dispositiu seleccionat.\n" +#~ "Comproveu que teniu permís de lectura per a aquest dispositiu." + +#~ msgid "EvDev-Plug - Add custom device" +#~ msgstr "EvDev-Plug - Afegiu un dispositiu personalitzat" + +#~ msgid "" +#~ "EvDev-Plug tries to automatically detect and update information about\n" +#~ "event devices available on the system.\n" +#~ "However, if auto-detect doesn't work for your system, or you have event\n" +#~ "devices in a non-standard location (currently they're only searched in\n" +#~ "/dev/input/ ), you may want to add a custom device, explicitly " +#~ "specifying\n" +#~ "name and device file." +#~ msgstr "" +#~ "EvDev-Plug intenta detectar i actualitzar informació sobre dispositius\n" +#~ "d'esdeveniments disponibles al sistema de manera automàtica.\n" +#~ "De totes maneres, si l'auto-detecció no funciona en el vostre sistema, o " +#~ "bé\n" +#~ "teniu dispositius d'esdeveniments en ubicacions no-estàndard (actualment\n" +#~ "només es busquen a /dev/input/), potser voldreu afegir un dispositiu\n" +#~ "personalitzat, especificant explícitament el nom i el fitxer del " +#~ "dispositiu." + +#~ msgid "Device name:" +#~ msgstr "Nom del dispositiu:" + +#~ msgid "Device file:" +#~ msgstr "Fitxer del dispositiu:" + +#, fuzzy +#~ msgid "(custom)" +#~ msgstr "personalitzat" + +#~ msgid "" +#~ "Please specify both name and filename.\n" +#~ "Filename must be specified with absolute path." +#~ msgstr "" +#~ "Si us plau, especifiqueu un nom i un fitxer.\n" +#~ "El fitxer s'ha d'especificar amb un camí absolut." + +#~ msgid "" +#~ "Do you want to remove the existing configuration for selected device?\n" +#~ msgstr "" +#~ "Voleu eliminar la configuració existent per al dispositiu seleccionat?\n" + +#~ msgid "Do you want to remove the selected custom device?\n" +#~ msgstr "Voleu eliminar el dispositiu seleccionat?\n" + +#~ msgid "EvDev-Plug - Configuration" +#~ msgstr "EvDev-Plug - Configuració" + +#~ msgid "Active" +#~ msgstr "Actiu" + +#~ msgid "Status" +#~ msgstr "Estat" + +#~ msgid "Device Name" +#~ msgstr "Nom del dispositiu" + +#~ msgid "Device File" +#~ msgstr "Fitxer del dispositiu" + +#~ msgid "Device Address" +#~ msgstr "Adreça del dispositiu" + +#~ msgid "_Bindings" +#~ msgstr "_Vincles" + +#~ msgid "" +#~ "Press a key of your device to bind it;\n" +#~ "if no key is pressed in five seconds, this window\n" +#~ "will close without binding changes." +#~ msgstr "" +#~ "Premeu una tecla del dispositiu per a vincular-la;\n" +#~ "si no premeu cap tecla en 5 segons, aquesta finestra\n" +#~ "es tancarà sense fer cap canvi." + +#~ msgid "" +#~ "This input event has been already assigned.\n" +#~ "\n" +#~ "It's not possible to assign multiple actions to the same input event " +#~ "(although it's possible to assign the same action to multiple events)." +#~ msgstr "" +#~ "Aquest esdeveniment d'entrada ja està assignat.\n" +#~ "\n" +#~ "No és possible assignar múltiples accions al mateix esdeveniment " +#~ "d'entrada (és possible assignar la mateixa acció a múltiples " +#~ "esdeveniments, però)." + +#~ msgid "EvDev-Plug - Bindings Configuration" +#~ msgstr "EvDev-Plug - Configuració dels vincles" + +#~ msgid "Name: " +#~ msgstr "Nom: " + +#~ msgid "Filename: " +#~ msgstr "Nom del fitxer: " + +#~ msgid "Phys.Address: " +#~ msgstr "Adreça física: " + +#~ msgid "EvDev-Plug - about" +#~ msgstr "Quant al connector EvDev-Plug" + +#~ msgid "" +#~ "\n" +#~ "player remote control via event devices\n" +#~ "http://www.develia.org/projects.php?p=audacious#evdevplug\n" +#~ "\n" +#~ "written by Giacomo Lozito\n" +#~ msgstr "" +#~ "\n" +#~ "control remot del reproductor via dispositius d'esdeveniments\n" +#~ "http://www.develia.org/projects.php?p=audacious#evdevplug\n" +#~ "\n" +#~ "escrit per Giacomo Lozito\n" + +#~ msgid "This LADSPA plugin has no user controls" +#~ msgstr "Aquest connector LADSPA no té controls d'usuari" + +#~ msgid "Name" +#~ msgstr "Nom" + +#~ msgid "UID" +#~ msgstr "UID" + +#~ msgid "Installed plugins" +#~ msgstr "Connectors instal·lats" + +#~ msgid "Running plugins" +#~ msgstr "Connectors actius" + +#~ msgid "Add" +#~ msgstr "Afegeix" + +#~ msgid "Remove" +#~ msgstr "Elimina" + +#~ msgid "LADSPA Plugin Catalog" +#~ msgstr "Catàleg de connectors LADSPA" + +#~ msgid "About LIRC Audacious Plugin" +#~ msgstr "Quant al connector LIRC de l'Audacious" + +#~ msgid "LIRC Plugin " +#~ msgstr "Connector per a LIRC" + +#~ msgid "" +#~ "\n" +#~ "A simple plugin that lets you control\n" +#~ "Audacious using the LIRC remote control daemon\n" +#~ "\n" +#~ "Adapted for Audacious usage by Tony Vroon \n" +#~ "from the XMMS LIRC plugin by:\n" +#~ "Carl van Schaik \n" +#~ "Christoph Bartelmus \n" +#~ "Andrew O. Shadoura \n" +#~ "You can get LIRC information at:\n" +#~ "http://lirc.org" +#~ msgstr "" +#~ "\n" +#~ "Un simple connector que permet controlar\n" +#~ "l'Audacious amb el dimoni de control remot LIRC.\n" +#~ "\n" +#~ "Adapatat per a l'Audacious per Tony Vroon \n" +#~ "a partir del connector LIRC de l'XMMS de:\n" +#~ "Carl van Schaik \n" +#~ "Christoph Bartelmus \n" +#~ "Andrew O. Shadoura \n" +#~ "Podeu trobar informació sobre el LIRC a:\n" +#~ "http://lirc.org" + +#~ msgid "LIRC plugin settings" +#~ msgstr "Paràmetres del connector LIRC" + +#~ msgid "Reconnect to LIRC server" +#~ msgstr "Reconnecta amb el servidor LIRC" + +#~ msgid "Timeout before reconnecting (seconds): " +#~ msgstr "Temps d'espera abans d'intentar reconnectar (segons): " + +#~ msgid "Reconnect" +#~ msgstr "Reconnexió" + +#~ msgid "Connection" +#~ msgstr "Connexió" + +#~ msgid "%s: could not init LIRC support\n" +#~ msgstr "%s: no s'ha pogut inicialitzar el suport per a LIRC\n" + +#~ msgid "" +#~ "%s: could not read LIRC config file\n" +#~ "%s: please read the documentation of LIRC\n" +#~ "%s: how to create a proper config file\n" +#~ msgstr "" +#~ "%s: no s'ha pogut llegir el firxer de configuració de LIRC\n" +#~ "%s: si us plau, llegiu la documentació de LIRC, per a saber\n" +#~ "%s: com crear un fitxer de configuració adequat\n" + +#~ msgid "%s: trying to reconnect...\n" +#~ msgstr "%s: tractant de reconnectar...\n" + +#~ msgid "%s: unknown command \"%s\"\n" +#~ msgstr "%s: ordre desconeguda \"%s\"\n" + +#~ msgid "%s: disconnected from LIRC\n" +#~ msgstr "%s: desconnectat del LIRC\n" + +#~ msgid "%s: will try reconnect every %d seconds...\n" +#~ msgstr "%s: s'intentarà reconnectar cada %d segons...\n" + +#~ msgid "ModPlug Configuration" +#~ msgstr "Configuració del connector ModPlug" + +#~ msgid "16 bit" +#~ msgstr "16 bits" + +#~ msgid "8 bit" +#~ msgstr "8 bits" + +#~ msgid "Mono (downmix)" +#~ msgstr "Mono (remescla)" + +#~ msgid "Nearest (fastest)" +#~ msgstr "Més proper (molt ràpid)" + +#~ msgid "Linear (fast)" +#~ msgstr "Lineal (ràpid)" + +#~ msgid "Spline (good quality)" +#~ msgstr "Spline (bona qualitat)" + +#~ msgid "8-tap Fir (extremely high quality)" +#~ msgstr "8-tap Fir (qualitat extremament alta)" + +#, fuzzy +#~ msgid "96 kHz" +#~ msgstr "48 kHz" + +#~ msgid "48 kHz" +#~ msgstr "48 kHz" + +#~ msgid "44 kHz" +#~ msgstr "44 kHz" + +#~ msgid "22 kHz" +#~ msgstr "22 kHz" + +#~ msgid "Sampling Rate" +#~ msgstr "Freqüència de mostra" + +#~ msgid "Enable" +#~ msgstr "Activa" + +#~ msgid "Depth" +#~ msgstr "Profunditat" + +#~ msgid "Delay" +#~ msgstr "Retard" + +#~ msgid "Reverb" +#~ msgstr "Reverberació" + +#~ msgid "Amount" +#~ msgstr "Quantitat" + +#~ msgid "Range" +#~ msgstr "Amplitud" + +#~ msgid "Bass Boost" +#~ msgstr "Amplificació de baixos" + +#~ msgid "" +#~ "Note: Setting the preamp\n" +#~ "too high may cause clipping\n" +#~ "(annoying clicks and pops)!" +#~ msgstr "" +#~ "Nota: Posar el preamplificador\n" +#~ "massa alt pot escapçar el senyal\n" +#~ "(sorollets emprenyadors)!\"" + +#~ msgid "Effects" +#~ msgstr "Efectes" + +#~ msgid "Use Filename as Song Title" +#~ msgstr "Usa el nom del fitxer com a títol" + +#~ msgid "Fast Playlist Info" +#~ msgstr "Informació de la llista de reproducció ràpida" + +#~ msgid "Noise Reduction" +#~ msgstr "Reducció de soroll" + +#~ msgid "Play Amiga MOD" +#~ msgstr "Reprodueix MODs d'Amiga" + +#~ msgid "Don't loop" +#~ msgstr "Al final, torna a començar" + +#~ msgid "Loop" +#~ msgstr "Al final, no torna a començar" + +#~ msgid "time(s)" +#~ msgstr "cop(s)" + +#~ msgid "Loop forever" +#~ msgstr "Torna a començar sempre" + +#~ msgid "Looping" +#~ msgstr "Iteracions" + +#~ msgid "MOD Info" +#~ msgstr "Informació MOD" + +#~ msgid "" +#~ "Filename:\n" +#~ "Title:\n" +#~ "Type:\n" +#~ "Length:\n" +#~ "Speed:\n" +#~ "Tempo:\n" +#~ "Samples:\n" +#~ "Instruments:\n" +#~ "Patterns:\n" +#~ "Channels:" +#~ msgstr "" +#~ "Fitxer:\n" +#~ "Títol:\n" +#~ "Tipus:\n" +#~ "Durada:\n" +#~ "Velocitat:\n" +#~ "Tempo:\n" +#~ "Mostres:\n" +#~ "Instruments:\n" +#~ "Patrons:\n" +#~ "Canals:" + +#~ msgid "" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---" +#~ msgstr "" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---" + +#~ msgid "Samples" +#~ msgstr "Mostres" + +#~ msgid "Instruments" +#~ msgstr "Instruments" + +#~ msgid "Message" +#~ msgstr "Missatge" + +#~ msgid "Modplug Input Plugin for Audacious ver" +#~ msgstr "Connector d'entrada Modplug per a l'Audacious, ver" + +#, fuzzy +#~ msgid "" +#~ "\n" +#~ "Modplug sound engine written by Olivier Lapicque.\n" +#~ "XMMS interface for Modplug by Kenton Varda.\n" +#~ "(c)2000 Olivier Lapicque and Kenton Varda.\n" +#~ "Updates and maintenance by Konstanty Bialkowski.\n" +#~ "Ported to BMP by Theofilos Intzoglou." +#~ msgstr "" +#~ "\n" +#~ "Motor de so del Modplug escrit per Olivier Lapicque.\n" +#~ "Interfície XMMS per al Modplug per Kenton Varda.\n" +#~ "(c)2000 Olivier Lapicque i Kenton Varda.\n" +#~ "Actualitzacions i manteniment per Konstanty Bialkowski.\n" +#~ "Portat al BMP per Theofilos Intzoglou." + +#~ msgid "About Modplug" +#~ msgstr "Quant al connector Modplug" + +#~ msgid "Show separators in playlist" +#~ msgstr "Mostra separadors a la llista de reproducció" + +#~ msgid "Show window manager decoration" +#~ msgstr "Mostra la decoració del gestor de finestres" + +#~ msgid "This enables the window manager to show decorations for windows." +#~ msgstr "" +#~ "Això permet al gestor de finestres mostrar la decoració de les finestres." + +#~ msgid "" +#~ "If selected, the file information text in the main window will scroll " +#~ "back and forth. If not selected, the text will only scroll in one " +#~ "direction." +#~ msgstr "" +#~ "Si està seleccionat, la informació del fitxer a la finestra principal es " +#~ "desplaçarà endavant i enrere. Si no està seleccionat, el text es " +#~ "desplaçarà en una sola direcció." + +#~ msgid "Disable inline gtk theme" +#~ msgstr "Deshabilita els temes GTK en línia" + +#, fuzzy +#~ msgid "Random skin on play" +#~ msgstr "Reordena la llista de forma aleatòria." + +#~ msgid "Allow loading incomplete skins" +#~ msgstr "Permet carregar decoracions incompletes" + +#~ msgid "" +#~ "If selected, audacious won't refuse loading broken skins. Use only if " +#~ "your favourite skin doesn't work" +#~ msgstr "" +#~ "Si està seleccionat, l'Audacious no refusarà carregar decoracions " +#~ "defectuoses. Useu-ho només si la vostra decoració favorita no funciona" + +#~ msgid "Color Adjustment" +#~ msgstr "Ajustament del color" + +#~ msgid "" +#~ "Audacious allows you to alter the color balance of the skinned UI. The " +#~ "sliders below will allow you to do this." +#~ msgstr "" +#~ "L'Audacious us permet alterar el balanç de colors de la decoració de la " +#~ "IG. Els controls de sota us permetran fer això." + +#~ msgid "Blue" +#~ msgstr "Blau" + +#~ msgid "Green" +#~ msgstr "Verd" + +#~ msgid "Red" +#~ msgstr "Roig" + +#, fuzzy +#~ msgid "Color adjustment ..." +#~ msgstr "Ajustament del color" + +#~ msgid "Disable 'GUI Scaling'" +#~ msgstr "Desactiva l'escalat de la IUG" + +#~ msgid "Enable 'GUI Scaling'" +#~ msgstr "Activa l'escalat de la IUG" + +#~ msgid "DoubleSize" +#~ msgstr "Dobla la mida" + +#~ msgid "Easy Move" +#~ msgstr "Moviment fàcil" + +#~ msgid "Spectrum Analyzer" +#~ msgstr "Analitzador d'espectre" + +#, fuzzy +#~ msgid "Search:" +#~ msgstr "Any:" + +#, fuzzy +#~ msgid "Stream name" +#~ msgstr "Nom de l'instrument" + +#, fuzzy +#~ msgid "Now playing" +#~ msgstr "Llista de reproducció nova" + +#, fuzzy +#~ msgid "Remove Bookmark" +#~ msgstr "Esborra l'etiqueta" + +#, fuzzy +#~ msgid "About Stream Browser" +#~ msgstr "Quant al driver OSS" + +#, fuzzy +#~ msgid "" +#~ "Copyright (c) 2008, by Calin Crisan and The Audacious " +#~ "Team.\n" +#~ "\n" +#~ "This is a simple stream browser that includes the most popular streaming " +#~ "directories.\n" +#~ "Many thanks to the Streamtuner developers ,\n" +#~ "\tand of course to the whole Audacious community.\n" +#~ "\n" +#~ "Also thank you Tony Vroon for mentoring & guiding me, again.\n" +#~ "\n" +#~ "This was a Google Summer of Code 2008 project." +#~ msgstr "" +#~ "Copyright (c) 2007, per Calin Crisan i l'Equip " +#~ "Audacious.\n" +#~ "\n" +#~ "Moltes gràcies als desenvolupadors de la libcdio \n" +#~ "\ti als desenvolupadors de la libcddb .\n" +#~ "\n" +#~ "També gràcies al meu mentor Tony Vroon pels seus consells.\n" +#~ "\n" +#~ "Això va ser un projecte del Google Summer of Code de 2007." + +#~ msgid "Can't jump to time when no track is being played.\n" +#~ msgstr "No es pot saltar al temps quan no s'està reproduint cap pista.\n" + +#~ msgid "minutes:seconds" +#~ msgstr "minuts:segons" + +#~ msgid "Track length:" +#~ msgstr "Durada de la pista:" + +#~ msgid "Error writing playlist \"%s\": %s" +#~ msgstr "Error quan s'escrivia la llista de reproducció \"%s\": %s" + +#~ msgid "%s already exist. Continue?" +#~ msgstr "%s ja existeix. Voleu continuar?" + +#, fuzzy +#~ msgid "Show main menu" +#~ msgstr "Mostra la finestra principal" + +#, fuzzy +#~ msgid "Show/hide statusbar" +#~ msgstr "Desa una llista de reproducció" + +#, fuzzy +#~ msgid "Import Playlist ..." +#~ msgstr "Carrega una llista de reproducció" + +#, fuzzy +#~ msgid "Export Playlist ..." +#~ msgstr "Carrega una llista de reproducció" + +#, fuzzy +#~ msgid "Refresh" +#~ msgstr "Velocitat de refresc" + +#, fuzzy +#~ msgid "Refresh Selected" +#~ msgstr "Treu els seleccionats" + +#, fuzzy +#~ msgid "Refreshes metadata associated with selected entries." +#~ msgstr "Refresca les meta-dades associades a cada element de la llista." + +#, fuzzy +#~ msgid "Edit the playlist title." +#~ msgstr "Reordena la llista de forma aleatòria." + +#, fuzzy +#~ msgid "By Formatted Title" +#~ msgstr "Per títol" + +#, fuzzy +#~ msgid "Components" +#~ msgstr "Comentari:" + +#~ msgid "Upload selected track(s)" +#~ msgstr "Puja les pistes seleccionades" + +#~ msgid "MTP device handler" +#~ msgstr "Gestor de dispositius MTP" + +#~ msgid "Show main player window" +#~ msgstr "Mostra la finestra principal" + +#~ msgid "Ignore" +#~ msgstr "Ignora" + +#~ msgid "" +#~ "Audacious has been started with all of its windows hidden.\n" +#~ "You may want to show the player window again to control Audacious; " +#~ "otherwise, you'll have to control it remotely via audtool or enabled " +#~ "plugins (such as the statusicon plugin)." +#~ msgstr "" +#~ "L'Audacious ha arrencat amb totes les finestres ocultes.\n" +#~ "Potser voldreu mostrar la finestra del reproductor per a controlar " +#~ "l'Audacious; en cas contrari, l'haureu de controlar remotament via " +#~ "l'audtool o connectors (com ara el connector statusicon)." + +#~ msgid "Always ignore, show/hide is controlled remotely" +#~ msgstr "Ignora sempre, mostra/oculta es controla remotament" + +#~ msgid "Audacious - broken GTK engine usage warning" +#~ msgstr "Audacious- avís de motor GTK defectuós" + +#~ msgid "" +#~ "Broken GTK engine in use\n" +#~ "\n" +#~ "Audacious has detected that you are using a broken GTK engine.\n" +#~ "\n" +#~ "The theme engine you are using, %s, is incompatible with some of " +#~ "the features used by modern skins. The incompatible features have been " +#~ "disabled for this session.\n" +#~ "\n" +#~ "To use these features, please consider using a different GTK theme engine." +#~ msgstr "" +#~ "Esteu utilitzant un motor GTK defectuós\n" +#~ "\n" +#~ "L'Audacious ha detectat que esteu utilitzant un motor GTK defectuós.\n" +#~ "\n" +#~ "El motor de temes que esteu usant, %s, és incompatible amb algunes " +#~ "funcions que usen moltes decoracions actuals. Les funcions en qüestió " +#~ "s'han deshabilitat per a aquesta sessió.\n" +#~ "\n" +#~ "Si voleu utilitzar aquestes funcions, considereu canviar el motor GTK " +#~ "actual." + +#~ msgid "Do not display this warning again" +#~ msgstr "No mostrar més aquest avís" -#: src/statusicon/statusicon.c:355 -msgid "About Status Icon Plugin" -msgstr "Quant al connector d'icona d'estat" +#~ msgid "Save as Static Playlist" +#~ msgstr "Desa com a llista de reproducció estàtica" -#: src/statusicon/statusicon.c:356 -#, fuzzy -msgid "" -"Status Icon Plugin\n" -"\n" -"Copyright 2005-2007 Giacomo Lozito \n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"This plugin provides a status icon, placed in\n" -"the system tray area of the window manager.\n" -msgstr "" -"\n" -"escrit per Giacomo Lozito < james@develia.org >\n" -"Aquest connector proporciona una icona d'estat, que\n" -"es col·loca a l'àrea de la safata del gestor de finestres.\n" +#~ msgid "Use Relative Path" +#~ msgstr "Usa camins relatius" -#: src/statusicon/statusicon.c:418 -msgid "Status Icon Plugin - Preferences" -msgstr "Connector d'Icona d'Estat - Preferències" +#~ msgid "Load Playlist" +#~ msgstr "Carrega una llista de reproducció" -#: src/statusicon/statusicon.c:428 -msgid "Right-Click Menu" -msgstr "Clic amb el botó dret" +#~ msgid "Save Playlist" +#~ msgstr "Desa una llista de reproducció" -#: src/statusicon/statusicon.c:433 -msgid "Small playback menu #1" -msgstr "Menú de reproducció #1" +#~ msgid "" +#~ "* Select ALSA output ports *\n" +#~ "MIDI events will be sent to the ports selected here. In example, if your " +#~ "audio card provides a hardware synth and you want to play MIDI with it, " +#~ "you'll probably want to select the wavetable synthesizer ports." +#~ msgstr "" +#~ "* Seleccioneu els ports ALSA de sortida *\n" +#~ "Els esdeveniments MIDI seran enviats a els ports seleccionats. Per " +#~ "exemple, si la vostra targeta de so té un sintetitzador integrat i voleu " +#~ "que reprodueixi MIDI, probablement voldreu seleccionar els ports de la " +#~ "taula d'ones del sintetitzador." -#: src/statusicon/statusicon.c:436 -msgid "Small playback menu #2" -msgstr "Menú de reproducció #2" +#~ msgid "" +#~ "* Select ALSA mixer card *\n" +#~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +#~ "ouput plugins from the player. During playback, the player volumeslider " +#~ "will manipulate the mixer control you select here. If you're using " +#~ "wavetable synthesizer ports, you'll probably want to select the Synth " +#~ "control here." +#~ msgstr "" +#~ "* Seleccioneu la targeta de so *\n" +#~ "El fons ALSA envia la sortida directament a través d'ALSA, no fa servir " +#~ "cap altre connector d'efectes o de sortida del reproductor. Durant la " +#~ "reproducció, la maneta del volum tindrà efecte sobre el control que " +#~ "seleccioneu aquí. Si esteu utilitzant ports de la taula d'ones d'un " +#~ "sintetitzador, probablement voldreu seleccionar el control \"Synth\"." -#: src/statusicon/statusicon.c:452 -msgid "Mouse Scroll Action" -msgstr "Roda del ratolí" +#~ msgid "" +#~ "* Select ALSA mixer control *\n" +#~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +#~ "ouput plugins from the player. During playback, the player volume slider " +#~ "will manipulate the mixer control you select here. If you're using " +#~ "wavetable synthesizer ports, you'll probably want to select the Synth " +#~ "control here." +#~ msgstr "" +#~ "* Seleccioneu el control de volum *\n" +#~ "El fons ALSA envia la sortida directament a través d'ALSA, no fa servir " +#~ "cap altre connector d'efectes o de sortida del reproductor. Durant la " +#~ "reproducció, la maneta del volum tindrà efecte sobre el control que " +#~ "seleccioneu aquí. Si esteu utilitzant ports de la taula d'ones d'un " +#~ "sintetitzador, probablement voldreu seleccionar el control \"Synth\"." -#: src/statusicon/statusicon.c:456 -msgid "Change volume" -msgstr "Canvia el volum" +#~ msgid "" +#~ "* Backend selection *\n" +#~ "AMIDI-Plug works with backends, in a modular fashion; here you should " +#~ "select your backend; that is, the way MIDI events are going to be handled " +#~ "and played.\n" +#~ "If you have a hardware synthesizer on your audio card, and ALSA supports " +#~ "it, you'll want to use the ALSA backend. It can also be used with " +#~ "anything that provides an interface to the ALSA sequencer, including " +#~ "software synths or external devices.\n" +#~ "If you want to rely on a software synthesizer and/or want to pipe audio " +#~ "into effect and output plugins of the player you'll want to use the good " +#~ "FluidSynth backend.\n" +#~ "Press the info button to read specific information about each backend." +#~ msgstr "" +#~ "* Selecció de l'aplicació de fons *\n" +#~ "El connector AMIDI-Plug funciona amb aplicacions de fons, d'una manera " +#~ "modular; aquí hauríeu de seleccionar un fons; és a dir, la manera com els " +#~ "esdeveniments MIDI han de ser tractats i reproduïts.\n" +#~ "Si teniu maquinari de síntesi a la targeta de so, i ALSA el suporta, " +#~ "voldreu fer servir el fons ALSA. També es pot fer servir amb qualsevol " +#~ "cosa que tingui una interfície amb el seqüenciador ALSA, incloent " +#~ "programari de síntesi o dispositius externs.\n" +#~ "Si voleu fer servir programari de síntesi i/o voleu que el so generat " +#~ "sigui processat pels connectors d'efectes i de sortida del reproductor, " +#~ "voldreu fer servir el fons FluidSynth.\n" +#~ "Premeu el botó d'informació per a llegir informació específica de cada " +#~ "fons." -#: src/statusicon/statusicon.c:458 -msgid "Change playing song" -msgstr "Canvia la cançó" +#, fuzzy +#~ msgid "" +#~ "* Transpose function *\n" +#~ "This option allows you to play the midi file transposed in a different " +#~ "key, by shifting of the desired number of semitones all its notes " +#~ "(excepting those on midi channel 10, reserved for percussions). " +#~ "Especially useful if you wish to sing or play along with another " +#~ "instrument." +#~ msgstr "" +#~ "* Funció de transposició *\n" +#~ "Aquesta opció permet reproduir el fitxer MIDI transposat a una clau " +#~ "diferent, tot desplaçant totes les notes el nombre desitjat de semitons " +#~ "(exceptuant aquelles en el canal MIDI 10, reservat per a percussió). " +#~ "Resulta útil especialment per a cantar o acompanyar amb un altre " +#~ "instrument." -#: src/stereo_plugin/stereo.c:40 -msgid "" -"Extra Stereo Plugin\n" -"\n" -"By Johan Levin 1999." -msgstr "" -"Connector d'estèreo extra\n" -"\n" -"Per Johan Levin, 1999." +#~ msgid "" +#~ "* Drumshift function *\n" +#~ "This option allows you to shift notes on midi channel 10 (the standard " +#~ "percussions channel) of the desired number of semitones. This results in " +#~ "different drumset and percussions being used during midi playback, so if " +#~ "you wish to enhance (or reduce, or alter) percussion sounds, try to play " +#~ "with this value." +#~ msgstr "" +#~ "* Funció de desplaçament de la percussió *\n" +#~ "Aquesta opció permet desplaçar les notes del canal MIDI 10 (el canal " +#~ "estàndard de percussió) el nombre desitjat de semitons. El resultat és un " +#~ "conjunt diferent d'instruments usats en la reproducció MIDI, de manera " +#~ "que si voleu millorar (o reduir, o alterar) la percussió, proveu de jugar " +#~ "amb aquest valor." -#: src/stereo_plugin/stereo.c:64 -msgid "About Extra Stereo Plugin" -msgstr "Quant al connector d'estèreo extra" +#~ msgid "" +#~ "* Pre-calculate MIDI length *\n" +#~ "If this option is enabled, AMIDI-Plug will calculate the MIDI file length " +#~ "as soon as the player requests it, instead of doing that only when the " +#~ "MIDI file is being played. In example, MIDI length will be calculated " +#~ "straight after adding MIDI files in a playlist. Disable this option if " +#~ "you want faster playlist loading (when a lot of MIDI files are added), " +#~ "enable it to display more information in the playlist straight after " +#~ "loading." +#~ msgstr "" +#~ "* Pre-càlcul de la durada MIDI *\n" +#~ "Si aquesta opció està activada, el connector AMIDI-Plug calcularà la " +#~ "durada del fitxer MIDI tan aviat com el reproductor ho requereixi, en " +#~ "lloc de fer-ho només quan es reprodueix el fitxer. Per exemple, la durada " +#~ "d'un fitxer MIDI es calcularà just després de ser afegit a la llista de " +#~ "reproducció. Desactiveu aquesta opció si voleu que les llistes de " +#~ "reproducció es carreguin més ràpidament (quan s'afegeixen molts fitxers " +#~ "MIDI), activeu-la per a mostrar més informació immediatament en carregar " +#~ "fitxers." -#: src/stereo_plugin/stereo.c:100 -msgid "Configure Extra Stereo" -msgstr "Configuració de l'estèreo extra" +#~ msgid "" +#~ "* Extract comments from MIDI files *\n" +#~ "Some MIDI files contain text comments (author, copyright, instrument " +#~ "notes, etc.). If this option is enabled, AMIDI-Plug will extract and " +#~ "display comments (if available) in the file information dialog." +#~ msgstr "" +#~ "* Extracció de comentaris de fitxers MIDI *\n" +#~ "Alguns fitxers MIDI contenen comentaris (autor, copyright, comentaris " +#~ "sobre instruments, etc.). Si aquesta opció està activada, el connector " +#~ "AMIDI-Plug extraurà i mostrarà els comentaris (si n'hi ha cap) en el " +#~ "diàleg d'informació del fitxer." -#: src/streambrowser/gui/streambrowser_win.c:62 -#, fuzzy -msgid "Search:" -msgstr "Any:" +#~ msgid "" +#~ "* Extract lyrics from MIDI files *\n" +#~ "Some MIDI files contain song lyrics. If this option is enabled, AMIDI-" +#~ "Plug will extract and display song lyrics (if available) in the file " +#~ "information dialog." +#~ msgstr "" +#~ "* Extracció de lletres de fitxer MIDI *\n" +#~ "Alguns fitxers MIDI contenen les lletres de les cançons. Si aquesta opció " +#~ "està activada, el connector AMIDI-Plug extraurà i mostrarà les lletres de " +#~ "les cançons (si n'hi ha cap) en el diàleg d'informació del fitxer." -#: src/streambrowser/gui/streambrowser_win.c:81 -#: src/streambrowser/gui/streambrowser_win.c:370 -msgid "Add Bookmark" -msgstr "" +#~ msgid "" +#~ "* Select SoundFont files *\n" +#~ "In order to play MIDI with FluidSynth, you need to specify at least one " +#~ "valid SoundFont file here (use absolute paths). The loading order is from " +#~ "the top (first) to the bottom (last)." +#~ msgstr "" +#~ "* Selecció de fitxers SoundFont *\n" +#~ "Per a reproduir fitxers MIDI amb el FluidSynth, heu d'especificar almenys " +#~ "un fitxer SoundFont vàlid (useu camins absoluts). L'ordre de càrrega és " +#~ "de dalt (primer) a baix (últim)." -#: src/streambrowser/gui/streambrowser_win.c:95 -#, fuzzy -msgid "Stream browser" -msgstr "Explora..." +#~ msgid "" +#~ "* Load SoundFont on player start *\n" +#~ "Depending on your system speed, SoundFont loading in FluidSynth will " +#~ "require up to a few seconds. This is a one-time task (the soundfont will " +#~ "stay loaded until it is changed or the backend is unloaded) that can be " +#~ "done at player start, or before the first MIDI file is played (the latter " +#~ "is a better choice if you don't use your player to listen MIDI files " +#~ "only)." +#~ msgstr "" +#~ "* Carrega la SoundFont en arrencar el reproductor *\n" +#~ "Depenent de la velocitat del vostre sistema, la càrrega de SoundFonts pot " +#~ "trigar uns quants segons. Aquesta tasca s'ha de fer un sol cop (la " +#~ "SoundFont quedarà carregada fins que es canvii per una altra, o el fons " +#~ "sigui descarregat), i es pot for quan arrenca el reproductor, o abans de " +#~ "reproduir el primer fitxer MIDI (aquesta última és l'opció més " +#~ "recomanable si no useu el reproductor per escoltar només fitxers MIDI)." -#: src/streambrowser/gui/streambrowser_win.c:319 -#, fuzzy -msgid "Stream name" -msgstr "Nom de l'instrument" +#~ msgid "" +#~ "* Load SoundFont on first midifile play *\n" +#~ "Depending on your system speed, SoundFont loading in FluidSynth will " +#~ "require up to a few seconds. This is a one-time task (the soundfont will " +#~ "stay loaded until it is changed or the backend is unloaded) that can be " +#~ "done at player start, or before the first MIDI file is played (the latter " +#~ "is a better choice if you don't use your player to listen MIDI files " +#~ "only)." +#~ msgstr "" +#~ "* Carrega la SoundFont abans de reproduir fitxers MIDI *\n" +#~ "Depenent de la velocitat del vostre sistema, la càrrega de SoundFonts pot " +#~ "trigar uns quants segons. Aquesta tasca s'ha de fer un sol cop (la " +#~ "SoundFont quedarà carregada fins que es canvii per una altra, o el fons " +#~ "sigui descarregat), i es pot for quan arrenca el reproductor, o abans de " +#~ "reproduir el primer fitxer MIDI (aquesta última és l'opció més " +#~ "recomanable si no useu el reproductor per escoltar només fitxers MIDI)." -#: src/streambrowser/gui/streambrowser_win.c:326 -#, fuzzy -msgid "Now playing" -msgstr "Llista de reproducció nova" +#~ msgid "" +#~ "* Synthesizer gain *\n" +#~ "From FluidSynth docs: the gain is applied to the final or master output " +#~ "of the synthesizer; it is set to a low value by default to avoid the " +#~ "saturation of the output when random MIDI files are played." +#~ msgstr "" +#~ "* Guany del sintetitzador *\n" +#~ "De la documentació del FluidSynth: el guany s'aplica a la sortida final o " +#~ "màster del sintetitzador; per defecte és un valor baix, per a evitar la " +#~ "saturació de la sortida quan es reprodueixen fitxers MIDI arbitraris." -#: src/streambrowser/gui/streambrowser_win.c:367 -#, fuzzy -msgid "Remove Bookmark" -msgstr "Esborra l'etiqueta" +#~ msgid "" +#~ "* Synthesizer polyphony *\n" +#~ "From FluidSynth docs: the polyphony defines how many voices can be played " +#~ "in parallel; the number of voices is not necessarily equivalent to the " +#~ "number of notes played simultaneously; indeed, when a note is struck on a " +#~ "specific MIDI channel, the preset on that channel may create several " +#~ "voices, for example, one for the left audio channel and one for the right " +#~ "audio channels; the number of voices activated depends on the number of " +#~ "instrument zones that fall in the correspond to the velocity and key of " +#~ "the played note." +#~ msgstr "" +#~ "* Polifonia *\n" +#~ "De la documentació del FluidSynth: la polifonia defineix quantes veus " +#~ "poden ser reproduïdes en paral·lel; el nombre de veus no és " +#~ "necessàriament equivalent al nombre de notes que sonen de forma " +#~ "simultània; quan una nota sona en un canal MIDI específic, el perfil del " +#~ "canal pot crear diverses veus, per exemple, una per al canal de so " +#~ "esquerre i una altra per al canal dret; el nombre de veus que s'activen " +#~ "depèn del nombre de zones d'instruments que s'activen, depenent de la " +#~ "velocitat i la clau de la nota reproduïda." -#: src/streambrowser/streambrowser.c:331 -#, fuzzy -msgid "About Stream Browser" -msgstr "Quant al driver OSS" +#~ msgid "" +#~ "* Synthesizer reverb *\n" +#~ "From FluidSynth docs: when set to \"yes\" the reverb effects module is " +#~ "activated; note that when the reverb module is active, the amount of " +#~ "signal sent to the reverb module depends on the \"reverb send\" generator " +#~ "defined in the SoundFont." +#~ msgstr "" +#~ "* Reverberació del sintetitzador *\n" +#~ "De la documentació del FluidSynth: aquesta opció activa el mòdul d'efecte " +#~ "de reverberació; tingueu en compte que la quantitat de senyal que s'envia " +#~ "al mòdul de reverberació depèn del generador \"reverb send\" definit a la " +#~ "SoundFont." -#: src/streambrowser/streambrowser.c:332 -#, fuzzy -msgid "" -"Copyright (c) 2008, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming " -"directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" -"\n" -"This was a Google Summer of Code 2008 project." -msgstr "" -"Copyright (c) 2007, per Calin Crisan i l'Equip " -"Audacious.\n" -"\n" -"Moltes gràcies als desenvolupadors de la libcdio \n" -"\ti als desenvolupadors de la libcddb .\n" -"\n" -"També gràcies al meu mentor Tony Vroon pels seus consells.\n" -"\n" -"Això va ser un projecte del Google Summer of Code de 2007." +#~ msgid "" +#~ "* Synthesizer chorus *\n" +#~ "From FluidSynth docs: when set to \"yes\" the chorus effects module is " +#~ "activated; note that when the chorus module is active, the amount of " +#~ "signal sent to the chorus module depends on the \"chorus send\" generator " +#~ "defined in the SoundFont." +#~ msgstr "" +#~ "* Cor del sintetitzador *\n" +#~ "De la documentació de FluidSynth: aquesta opció activa el mòdul d'efecte " +#~ "de cor; tingueu en compte que quan el mòdul de cor està actiu, la " +#~ "quantitat de senyal enviada al mòdul de cor depèn del generador \"chorus " +#~ "send\" definit a la SoundFont." -#: src/streambrowser/streambrowser.c:357 src/streambrowser/streambrowser.c:367 #, fuzzy -msgid "Streambrowser" -msgstr "Explora..." +#~ msgid "" +#~ "* Synthesizer samplerate *\n" +#~ "The sample rate of the audio generated by the synthesizer. You can also " +#~ "specify a custom value in the interval 22050Hz-96000Hz." +#~ msgstr "" +#~ "* Freqüència de mostra del sintetitzador *\n" +#~ "Freqüència de mostra de l'àudio que genera el sintetitzador. També podeu " +#~ "especificar un valor pertanyent a l'interval 22050Hz-96000Hz.\n" +#~ "NOTA: els buffers per defecte estan configurats per a 44100Hz; si canvieu " +#~ "la freqüència de mostra potser haureu de canviar també els buffers per a " +#~ "obtenir una qualitat de so bona." -#: src/sun/about.c:30 -msgid "About the Sun Driver" -msgstr "Quant al driver Sun" +#~ msgid "" +#~ "If enabled, the extension from the original filename will not be stripped " +#~ "before adding the new file extension to the end." +#~ msgstr "" +#~ "Si està activat, l'extensió del nom de fitxer original no s'esborrarà " +#~ "abans d'afegir una nova extensió al final." -#: src/sun/about.c:31 -msgid "" -"XMMS BSD Sun Driver\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" -msgstr "" -"Driver BSD Sun per a l'XMMS\n" -"\n" -"Copyright (C) 2001 CubeSoft Communications, Inc.\n" -"Mantenidor: .\n" +#~ msgid "" +#~ "best/slowest:0;\n" +#~ "worst/fastest:9;\n" +#~ "recommended:2;\n" +#~ "default:5;" +#~ msgstr "" +#~ "millor/més lent:0;\n" +#~ "pitjor/més ràpid:9;\n" +#~ "recomanat:2;\n" +#~ "per defecte:5;" -#: src/sun/configure.c:199 -msgid "Audio control device:" -msgstr "Dispositiu de control d'àudio:" +#~ msgid "Adds 16 bit checksum to every frame" +#~ msgstr "Afegeix una suma de verificació de 16 bits a cada marc" -#: src/sun/configure.c:270 -msgid "Buffer size (ms):" -msgstr "Mida del buffer (ms):" +#~ msgid "Variable bitrate" +#~ msgstr "Flux de bits variable" -#: src/sun/configure.c:348 -msgid "Volume controls device:" -msgstr "Dispositiu de control del volum:" +#~ msgid "Average bitrate" +#~ msgstr "Flux de bits mitjà" -#: src/sun/configure.c:361 -msgid "XMMS uses mixer exclusively." -msgstr "L'XMMS usa el mesclador exclusivament." +#~ msgid "" +#~ "For use with players that do not support low bitrate mp3 (Apex AD600-A " +#~ "DVD/mp3 player)" +#~ msgstr "" +#~ "Per a reproductors que no suporten MP3 amb flux de bits baixos " +#~ "(reproductor DVD/MP3 Apex AD600-A)" -#: src/sun/configure.c:536 -msgid "Sun driver configuration" -msgstr "Configuració del driver Sun" +#~ msgid "" +#~ "highest:0;\n" +#~ "lowest:9;\n" +#~ "default:4;" +#~ msgstr "" +#~ "el més alt:0;\n" +#~ "el més baix:9;\n" +#~ "per defecte:4;" -#: src/tonegen/tonegen.c:53 -msgid "About Tone Generator" -msgstr "Quant al connector generador de tons" +#, fuzzy +#~ msgid "Show playlists" +#~ msgstr "Mostra l'editor de llistes" -#: src/tonegen/tonegen.c:55 -msgid "" -"Sinus tone generator by Haavard Kvaalen \n" -"Modified by Daniel J. Peng \n" -"\n" -"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" -"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" -msgstr "" -"Generador de tons sinusoïdals per Haavard Kvaalen \n" -"Modificat per Daniel J. Peng \n" -"\n" -"Per a fer-lo servir, afegiu un URL: tone://freq1;freq2;...\n" -"e.g. tone://2000;2005 per a generar un to de 2000 Hz i un to\n" -"de 2005 Hz." +#, fuzzy +#~ msgid "Show/hide playlists" +#~ msgstr "Desa una llista de reproducció" -#: src/tonegen/tonegen.c:105 -#, c-format -msgid "%s %.1f Hz" -msgstr "%s %.1f Hz" +#~ msgid "About the Sun Driver" +#~ msgstr "Quant al driver Sun" -#: src/tonegen/tonegen.c:105 -msgid "Tone Generator: " -msgstr "Generador de tons:" +#~ msgid "" +#~ "XMMS BSD Sun Driver\n" +#~ "\n" +#~ "Copyright (c) 2001 CubeSoft Communications, Inc.\n" +#~ "Maintainer: .\n" +#~ msgstr "" +#~ "Driver BSD Sun per a l'XMMS\n" +#~ "\n" +#~ "Copyright (C) 2001 CubeSoft Communications, Inc.\n" +#~ "Mantenidor: .\n" -#: src/vorbis/configure.c:31 -msgid "Override generic titles" -msgstr "Ignora els títols genèrics" +#~ msgid "Audio control device:" +#~ msgstr "Dispositiu de control d'àudio:" -#: src/vorbis/configure.c:32 -msgid "Title format:" -msgstr "Format del títol:" +#~ msgid "Buffer size (ms):" +#~ msgstr "Mida del buffer (ms):" -#: src/vorbis/configure.c:36 -#, fuzzy -msgid "Ogg Vorbis Tags" -msgstr "Etiquetes Ogg Vorbis:" +#~ msgid "Volume controls device:" +#~ msgstr "Dispositiu de control del volum:" -#: src/vorbis/configure.c:68 -msgid "Ogg Vorbis Audio Plugin Configuration" -msgstr "Configuració del connector d'àudio Ogg Vorbis" +#~ msgid "XMMS uses mixer exclusively." +#~ msgstr "L'XMMS usa el mesclador exclusivament." -#: src/vorbis/vorbis.c:549 -msgid "About Ogg Vorbis Audio Plugin" -msgstr "Quant al connector d'àudio Ogg Vorbis" +#~ msgid "Sun driver configuration" +#~ msgstr "Configuració del driver Sun" -#: src/vorbis/vorbis.c:554 -msgid "" -"Ogg Vorbis Plugin by the Xiph.org Foundation\n" -"\n" -"Original code by\n" -"Tony Arcieri \n" -"Contributions from\n" -"Chris Montgomery \n" -"Peter Alm \n" -"Michael Smith \n" -"Jack Moffitt \n" -"Jorn Baayen \n" -"Haavard Kvaalen \n" -"Gian-Carlo Pascutto \n" -"Eugene Zagidullin \n" -"\n" -"Visit the Xiph.org Foundation at http://www.xiph.org/\n" -msgstr "" -"Connector Ogg Vorbis per la Fundació Xiph.org\n" -"\n" -"Codi original per\n" -"Tony Arcieri \n" -"Contribucions de\n" -"Chris Montgomery \n" -"Peter Alm \n" -"Michael Smith \n" -"Jack Moffitt \n" -"Jorn Baayen \n" -"Haavard Kvaalen \n" -"Gian-Carlo Pascutto \n" -"Eugene Zagidullin \n" -"\n" -"Visiteu la Fundació Xiph.org a http://www.xiph.org/\n" +#, fuzzy +#~ msgid "Target volume:" +#~ msgstr "Canvia el volum" -#: src/vtx/about.c:14 -msgid "About Vortex Player" -msgstr "Quant al connector reproductor Vortex" +#, fuzzy +#~ msgid "Effect strength:" +#~ msgstr "Intensitat de l'efecte:" -#: src/vtx/about.c:15 -msgid "" -"Vortex file format player by Sashnov Alexander \n" -"Founded on original source in_vtx.dll by Roman Sherbakov \n" -"\n" -"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" -"and other AY/YM music sites.\n" -"\n" -"Audacious implementation by Pavel Vymetalek " -msgstr "" -"Reproductor de format Vortex per Sashnov Alexander \n" -"Basat en el codi font original in_vtx.dll de Roman Sherbakov " -"\n" -"\n" -"Podeu trobar música en format vtx a http://vtx.microfor.ru/music.htm\n" -"i a altres llocs de música AY/YM.\n" -"\n" -"Implementat a l'Audacious per Pavel Vymetalek " +#~ msgid "FLAC Audio Plugin " +#~ msgstr "Connector d'àudio FLAC " -#: src/wavpack/wavpack.c:371 -#, c-format -msgid "Wavpack Decoder Plugin %s" -msgstr "Connector descodificador Wavpack %s" +#, fuzzy +#~ msgid "Stream browser" +#~ msgstr "Explora..." -#: src/wavpack/wavpack.c:372 -msgid "" -"Copyright (c) 2006 William Pitcock \n" -"\n" -"Some of the plugin code was by Miles Egan\n" -"Visit the Wavpack site at http://www.wavpack.com/\n" -msgstr "" -"Copyright (c) 2006 William Pitcock \n" -"\n" -"Alguns trossos del codi són de Miles Egan\n" -"Visiteu la plana web de Wavpack a http://www.wavpack.com/\n" +#, fuzzy +#~ msgid "Streambrowser" +#~ msgstr "Explora..." #~ msgid "PREAMP" #~ msgstr "PREAMP" @@ -6020,12 +6008,6 @@ #~ "\n" #~ "Tipus de fitxer desconegut: '%s'.\n" -#~ msgid "Randomize List" -#~ msgstr "Barreja la llista" - -#~ msgid "Randomizes the playlist." -#~ msgstr "Reordena la llista de forma aleatòria." - #, fuzzy #~ msgid "ALSA Gapless Output Plugin Preferences" #~ msgstr "Connector d'Icona d'Estat - Preferències" @@ -6346,10 +6328,6 @@ #~ msgstr "Quant al connector " #, fuzzy -#~ msgid "Output plugin" -#~ msgstr "Connector de sortida nul" - -#, fuzzy #~ msgid "Throttle Output" #~ msgstr "Quant a la sortida aRts" @@ -6473,10 +6451,6 @@ #~ "Desa les llistes de reproducció seleccionades a la ubicació per defecte." #, fuzzy -#~ msgid "_Rename" -#~ msgstr "Nom del fitxer" - -#, fuzzy #~ msgid "About Icecast-Plugin" #~ msgstr "Quant al connector d'eco" @@ -6747,21 +6721,9 @@ #~ msgid "Title:" #~ msgstr "Títol:" -#~ msgid "Artist:" -#~ msgstr "Artista:" - -#~ msgid "Album:" -#~ msgstr "Àlbum:" - #~ msgid "Comment:" #~ msgstr "Comentari:" -#~ msgid "Year:" -#~ msgstr "Any:" - -#~ msgid "Track number:" -#~ msgstr "Número de pista:" - #~ msgid "Genre:" #~ msgstr "Gènere:" @@ -7006,9 +6968,6 @@ #~ msgid "Musepack Tag" #~ msgstr "Etiqueta Musepack" -#~ msgid "Track:" -#~ msgstr "Pista:" - #~ msgid "Musepack Info" #~ msgstr "Informació Musepack" @@ -7200,9 +7159,6 @@ #~ msgid "auto-M/S mode" #~ msgstr "mode auto-M/S" -#~ msgid "_Random" -#~ msgstr "_Aleatori" - #~ msgid "Show track numbers in playlist" #~ msgstr "Mostra el número de pista a la llista de reproducció" @@ -7919,14 +7875,6 @@ #~ msgstr "Etiquetes Ogg Vorbis:" #, fuzzy -#~ msgid "Bit rate:" -#~ msgstr "Para al cap de:" - -#, fuzzy -#~ msgid "Length:" -#~ msgstr "Durada (ms):" - -#, fuzzy #~ msgid "File size:" #~ msgstr "Mida del fitxer: %d octets" diff -Nru audacious-plugins-2.4.4/po/cs.po audacious-plugins-3.2/po/cs.po --- audacious-plugins-2.4.4/po/cs.po 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/cs.po 2012-01-20 19:48:30.000000000 +0000 @@ -3,7 +3,7 @@ # This file is distributed under the same license as the audacious-plugins # package. # Based on audacious-1.2.2.cs.po by Jan Nárovec , 2004. -# Petr Pisar , 2007, 2008, 2009, 2010. +# Petr Pisar , 2007, 2008, 2009, 2010, 2011. # # clicks (sound) → praskání, praskot  # crossfade → pÅ™echod @@ -19,18 +19,20 @@ # msgid "" msgstr "" -"Project-Id-Version: audacious-plugins 9cc8503d1935\n" +"Project-Id-Version: audacious-plugins audacious-plugins-3.1-24-gf8985b0\n" "Report-Msgid-Bugs-To: http://jira.atheme.org/\n" -"POT-Creation-Date: 2010-08-03 17:55-0400\n" -"PO-Revision-Date: 2010-06-14 22:39+0200\n" +"POT-Creation-Date: 2011-11-20 21:26+0100\n" +"PO-Revision-Date: 2011-11-20 21:30+0100\n" "Last-Translator: Petr PísaÅ™ \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"g41e8449\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: src/aac/libmp4.c:291 +#: src/aac/libmp4.c:256 #, c-format msgid "" "Using libfaad2-%s for decoding.\n" @@ -41,454 +43,177 @@ "FAAD2 AAC/HE-AAC/HE-AACv2/DRM dekodér © Nero AG, www.nero.com\n" "Copyright © 2005–2006 tým Audacious" -#: src/aac/libmp4.c:296 +#: src/aac/libmp4.c:261 msgid "About MP4 AAC decoder plugin" msgstr "O modulu dekodéru MP4 AAC" -#: src/adplug/adplug-xmms.cc:153 -msgid "About " -msgstr "O " +#: src/alarm/alarm.c:312 +msgid "About Alarm" +msgstr "O budíku" -#: src/adplug/adplug-xmms.cc:157 +#: src/alarm/alarm.c:313 msgid "" +"A plugin that can be used to start playing at a certain time.\n" "\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"This plugin is released under the terms and conditions of the GNU LGPL.\n" -"See http://www.gnu.org/licenses/lgpl.html for details.\n" -"\n" -"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et " -"al.\n" -"Linked AdPlug library version: " -msgstr "" -"\n" -"Copyright © 2002, 2003 Simon Peter \n" -"\n" -"Tento modul je uvolnÄ›n za podmínek licence GNU LGPL.\n" -"Pro podrobnosti vizte http://www.gnu.org/licenses/lgpl.html.\n" -"\n" -"Tento modul používá knihovnu AdPlug, copyright © Simon Peter aj.\n" -"Sestaveno s verzí knihovny AdPlug: " - -#: src/adplug/adplug-xmms.cc:234 -msgid "AdPlug :: Configuration" -msgstr "AdPlug :: Nastavení" - -#: src/adplug/adplug-xmms.cc:243 src/adplug/adplug-xmms.cc:504 -#: src/cdaudio-ng/configure.c:258 src/crystalizer/crystalizer.c:127 -#: src/echo_plugin/gui.c:122 src/jack/configure.c:146 src/null/null.c:109 -#: src/stereo_plugin/stereo.c:123 src/sun/configure.c:557 -msgid "Ok" -msgstr "OK" - -#: src/adplug/adplug-xmms.cc:253 src/alarm/interface.c:1398 -#: src/cdaudio-ng/configure.c:263 src/crystalizer/crystalizer.c:136 -#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 -#: src/modplug/gui/interface.cxx:715 src/null/null.c:110 -#: src/stereo_plugin/stereo.c:132 src/sun/configure.c:565 -msgid "Cancel" -msgstr "ZruÅ¡it" - -#: src/adplug/adplug-xmms.cc:269 src/console/configure.c:154 -#: src/modplug/gui/interface.cxx:629 src/modplug/gui/interface.cxx:888 -msgid "General" -msgstr "Obecné" - -#: src/adplug/adplug-xmms.cc:281 -msgid "Sound quality" -msgstr "Kvalita zvuku" - -#: src/adplug/adplug-xmms.cc:286 src/modplug/gui/interface.cxx:188 -msgid "Resolution" -msgstr "RozliÅ¡ení" - -#: src/adplug/adplug-xmms.cc:288 -msgid "8bit" -msgstr "8 bitů" - -#: src/adplug/adplug-xmms.cc:293 -msgid "16bit" -msgstr "16 bitů" - -#: src/adplug/adplug-xmms.cc:301 src/modplug/gui/interface.cxx:219 -msgid "Channels" -msgstr "Kanály" - -#: src/adplug/adplug-xmms.cc:303 src/filewriter/mp3.c:934 -#: src/mpg123/mpg123.c:174 src/sid/xs_interface.c:301 -msgid "Mono" -msgstr "Mono" - -#: src/adplug/adplug-xmms.cc:308 src/filewriter/mp3.c:929 -#: src/modplug/gui/interface.cxx:205 src/mpg123/mpg123.c:174 -#: src/sid/xs_interface.c:308 -msgid "Stereo" -msgstr "Stereo" - -#: src/adplug/adplug-xmms.cc:312 -msgid "" -"Setting stereo is not recommended, unless you need to. This won't add any " -"stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!" -msgstr "" -"Nastavení sterea není doporuÄeno, pokud jej opravdu nepotÅ™ebujete. Tato " -"volba nepÅ™idává do zvuku žádné stereo efekty – OPL2 je prostÄ› mono – ale " -"spotÅ™ebovává více výkonu CPU!" - -#: src/adplug/adplug-xmms.cc:320 -msgid "Frequency" -msgstr "Frekvence" - -#: src/adplug/adplug-xmms.cc:356 src/adplug/adplug-xmms.cc:560 -#: src/console/configure.c:156 src/gtkui/ui_manager.c:64 -#: src/skins/ui_manager.c:165 -msgid "Playback" -msgstr "PÅ™ehrát" - -#: src/adplug/adplug-xmms.cc:360 -msgid "Detect songend" -msgstr "Rozpoznat konec skladby" - -#: src/adplug/adplug-xmms.cc:364 -msgid "" -"If enabled, XMMS will detect a song's ending, stop it and advance in the " -"playlist. If disabled, XMMS won't take notice of a song's ending and loop it " -"all over again and again." -msgstr "" -"Je-li zapnuto, XMMS pozná konec skladby, zastaví ji a pÅ™ejde na další ze " -"seznamu skladeb. Je-li vypnuto, XMMS nebude reagovat na konec skladby a bude " -"ji opakovat stále dokola." - -#: src/adplug/adplug-xmms.cc:375 -msgid "Formats" -msgstr "Formáty" - -#: src/adplug/adplug-xmms.cc:382 -msgid "Format selection" -msgstr "VýbÄ›r formátu" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Format" -msgstr "Formát" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Extension" -msgstr "Přípona" - -#: src/adplug/adplug-xmms.cc:425 -msgid "" -"Selected file types will be recognized and played back by this plugin. " -"Deselected types will be ignored to make room for other plugins to play " -"these files." -msgstr "" -"Vybrané druhy souborů budou rozpoznány a hrány tímto modulem. Nevybrané " -"druhy budou ignorovány a pÅ™enechány ostatním modulům." - -#: src/adplug/adplug-xmms.cc:511 -msgid "AdPlug :: File Info" -msgstr "AdPlug :: Informace o souboru" - -#: src/adplug/adplug-xmms.cc:533 src/amidi-plug/i_configure-fluidsynth.c:348 -msgid "Filename" -msgstr "Jméno souboru" - -#: src/adplug/adplug-xmms.cc:537 src/skins/ui_playlist.c:390 -msgid "Title: " -msgstr "Název: " - -#: src/adplug/adplug-xmms.cc:538 -msgid "Author: " -msgstr "Autor: " - -#: src/adplug/adplug-xmms.cc:539 -msgid "File Type: " -msgstr "Velikost souboru: " - -#: src/adplug/adplug-xmms.cc:540 -msgid "Subsongs: " -msgstr "Podskladby: " - -#: src/adplug/adplug-xmms.cc:541 -msgid "Instruments: " -msgstr "Nástroje: " - -#: src/adplug/adplug-xmms.cc:546 -msgid "Orders: " -msgstr "PoÅ™adí: " - -#: src/adplug/adplug-xmms.cc:547 -msgid "Patterns: " -msgstr "Vzorky: " - -#: src/adplug/adplug-xmms.cc:551 -msgid "Song" -msgstr "Skladba" - -#: src/adplug/adplug-xmms.cc:577 -msgid "Instrument name" -msgstr "Jméno nástroje" - -#: src/adplug/adplug-xmms.cc:619 -msgid "Song message" -msgstr "Zpráva skladby" - -#: src/adplug/adplug-xmms.cc:641 -msgid "Subsong selection" -msgstr "VýbÄ›r podskladby" - -#: src/adplug/adplug-xmms.cc:707 -msgid "Order: " -msgstr "PoÅ™adí: " - -#: src/adplug/adplug-xmms.cc:708 -msgid "Pattern: " -msgstr "Vzorek: " - -#: src/adplug/adplug-xmms.cc:710 -msgid "Row: " -msgstr "Řada: " - -#: src/adplug/adplug-xmms.cc:711 -msgid "Speed: " -msgstr "Rychlost: " - -#: src/adplug/adplug-xmms.cc:712 -msgid "Timer: " -msgstr "ÄŒasovaÄ: " - -#: src/adplug/adplug-xmms.cc:713 src/console/configure.c:234 -#: src/sid/xs_interface.c:354 -msgid "Hz" -msgstr "Hz" - -#: src/alarm/interface.c:34 -msgid "About XMMS Alarm" -msgstr "O XMMS budíku" - -#: src/alarm/interface.c:47 -msgid "XMMS Alarm" -msgstr "XMMS budík" - -#: src/alarm/interface.c:56 -msgid "" -"An XMMS plugin which can be used\n" -"to start playing at a certain time.\n" -"\n" -"Send all complaints to:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" +"Originally written by Adam Feakin and Daniel Stodden." msgstr "" -"XMMS modul, který může být použit\n" -"k naÄasovanému zahájení pÅ™ehrávání.\n" +"Modul, kterým lze zaÄít pÅ™ehrávání v urÄitou dobu.\n" "\n" -"VÅ¡echny stížnosti zasílejte na:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" - -#: src/alarm/interface.c:71 src/bluetooth/scan_gui.c:149 src/lirc/about.c:115 -#: src/modplug/gui/interface.cxx:972 src/sid/xs_about.c:214 -#: src/sid/xs_interface.c:1825 -msgid "Close" -msgstr "Zavřít" +"PůvodnÄ› napsali Adam Feakin a Daniel Stodden." -#: src/alarm/interface.c:101 +#: src/alarm/interface.c:33 msgid "Alarm" msgstr "Budík" -#: src/alarm/interface.c:109 +#: src/alarm/interface.c:40 msgid "This is your wakeup call." msgstr "Toto je váš budící signál." -#: src/alarm/interface.c:124 src/alarm/interface.c:1389 -#: src/modplug/gui/interface.cxx:703 src/sid/xs_config.c:322 +#: src/alarm/interface.c:55 src/alarm/interface.c:1213 msgid "OK" msgstr "Budiž" -#: src/alarm/interface.c:152 -msgid "Select Playlist" -msgstr "Vybrat seznam skladeb" - -#: src/alarm/interface.c:196 -msgid "Sorry" -msgstr "Je mi líto" - -#: src/alarm/interface.c:204 -msgid "Warning" -msgstr "Varování" - -#: src/alarm/interface.c:213 -msgid "" -"For safety reasons the \"quiet\" time must be at least 65 seconds longer " -"than the fading time, it must also be more than 10 seconds. This basically " -"means that there is a bug in the code and until I find a way of really " -"fixing it this message will appear :)\n" -"\n" -"Your fading settings have NOT been saved\n" -"\n" -"--\n" -"Adam" -msgstr "" -"Z bezpeÄnostních důvodů musí být doba „ticha“ alespoň o 65 sekund delší než " -"doba zesilování, také musí být delší než 10 sekund. Toto v zásadÄ› znamená, " -"že v kódu je chyba a dokud nezjistím, jak ji opravdu opravit, tato zpráva se " -"bude zobrazovat :)\n" -"\n" -"VaÅ¡e nastavení zesilování NEBYLO uloženo.\n" -"\n" -"–\n" -"Adam" - -#: src/alarm/interface.c:229 -msgid "Oh Well" -msgstr "Dobrá" - -#: src/alarm/interface.c:388 +#: src/alarm/interface.c:214 msgid "Alarm Settings" msgstr "Nastavení budíku" -#: src/alarm/interface.c:404 src/alarm/interface.c:576 -#: src/alarm/interface.c:948 +#: src/alarm/interface.c:229 src/alarm/interface.c:401 +#: src/alarm/interface.c:773 msgid "Time" msgstr "ÄŒas" -#: src/alarm/interface.c:445 +# TODO: Pluralize +#: src/alarm/interface.c:270 msgid "hours" -msgstr "hodin" +msgstr "h" -#: src/alarm/interface.c:506 +#: src/alarm/interface.c:331 msgid "h" msgstr "h" -#: src/alarm/interface.c:536 +# TODO: Pluralize +#: src/alarm/interface.c:361 msgid "minutes" -msgstr "minut" +msgstr "min" -#: src/alarm/interface.c:554 +#: src/alarm/interface.c:379 msgid "Quiet after:" msgstr "Ticho po:" -#: src/alarm/interface.c:564 +#: src/alarm/interface.c:389 msgid "Alarm at (default):" msgstr "Budit v (standardní):" -#: src/alarm/interface.c:584 +#: src/alarm/interface.c:409 msgid "Choose the days for the alarm to come on" msgstr "Vyberte dny, kdy má budík budit" -#: src/alarm/interface.c:612 src/alarm/interface.c:660 -#: src/alarm/interface.c:708 src/alarm/interface.c:756 -#: src/alarm/interface.c:804 src/alarm/interface.c:852 -#: src/alarm/interface.c:900 src/OSS/configure.c:166 -#: src/skins/ui_manager.c:439 src/skins/ui_manager.c:460 +#: src/alarm/interface.c:437 src/alarm/interface.c:485 +#: src/alarm/interface.c:533 src/alarm/interface.c:581 +#: src/alarm/interface.c:629 src/alarm/interface.c:677 +#: src/alarm/interface.c:725 src/bs2b/plugin.c:198 src/OSS/configure.c:153 +#: src/skins/ui_manager.c:450 src/skins/ui_manager.c:471 msgid "Default" msgstr "Standardní" -#: src/alarm/interface.c:938 +#: src/alarm/interface.c:763 msgid "Day" msgstr "Den" -#: src/alarm/interface.c:958 +#: src/alarm/interface.c:783 msgid "Tuesday" msgstr "Úterý" -#: src/alarm/interface.c:969 +#: src/alarm/interface.c:794 msgid "Wednesday" msgstr "StÅ™eda" -#: src/alarm/interface.c:980 +#: src/alarm/interface.c:805 msgid "Thursday" msgstr "ÄŒtvrtek" -#: src/alarm/interface.c:991 +#: src/alarm/interface.c:816 msgid "Friday" msgstr "Pátek" -#: src/alarm/interface.c:1002 +#: src/alarm/interface.c:827 msgid "Saturday" msgstr "Sobota" -#: src/alarm/interface.c:1013 +#: src/alarm/interface.c:838 msgid "Sunday" msgstr "NedÄ›le" -#: src/alarm/interface.c:1023 +#: src/alarm/interface.c:848 msgid "Monday" msgstr "PondÄ›lí" -#: src/alarm/interface.c:1034 +#: src/alarm/interface.c:859 msgid "Days" msgstr "Dny" -#: src/alarm/interface.c:1050 +#: src/alarm/interface.c:875 msgid "Fading" msgstr "Zesilování" -#: src/alarm/interface.c:1087 src/sid/xs_interface.c:921 -#: src/sid/xs_interface.c:975 src/sid/xs_interface.c:1155 +# TODO: Pluralize +#: src/alarm/interface.c:912 msgid "seconds" msgstr "sekund" -#: src/alarm/interface.c:1095 src/alarm/interface.c:1211 -#: src/modplug/gui/interface.cxx:550 +#: src/alarm/interface.c:920 src/alarm/interface.c:1035 msgid "Volume" msgstr "Hlasitost" -#: src/alarm/interface.c:1121 +#: src/alarm/interface.c:946 msgid "Current" msgstr "SouÄasná" -#: src/alarm/interface.c:1128 -msgid "reset to current output volume" -msgstr "navrátit na souÄasnou hlasitost výstupu" - -#: src/alarm/interface.c:1130 +#: src/alarm/interface.c:954 msgid "Start at" msgstr "ZaÄít na" -#: src/alarm/interface.c:1158 src/alarm/interface.c:1202 +#: src/alarm/interface.c:982 src/alarm/interface.c:1026 msgid "%" msgstr "%" -#: src/alarm/interface.c:1174 +#: src/alarm/interface.c:998 msgid "Final" msgstr "SkonÄit na" -#: src/alarm/interface.c:1227 +#: src/alarm/interface.c:1051 msgid "Additional Command" msgstr "DodateÄný příkaz" -#: src/alarm/interface.c:1253 +#: src/alarm/interface.c:1077 msgid "enable" msgstr "zapnout" -#: src/alarm/interface.c:1261 +#: src/alarm/interface.c:1085 msgid "Playlist (optional)" msgstr "Seznam skladeb (volitelné)" -#: src/alarm/interface.c:1287 +#: src/alarm/interface.c:1111 msgid "Browse..." msgstr "Procházet…" -#: src/alarm/interface.c:1295 src/alarm/interface.c:1460 +#: src/alarm/interface.c:1119 src/alarm/interface.c:1283 msgid "Reminder" msgstr "Upomínání" -#: src/alarm/interface.c:1312 +#: src/alarm/interface.c:1136 msgid "Use reminder" msgstr "Upomínat" -#: src/alarm/interface.c:1328 src/sndstretch/sndstretch_xmms.c:394 +#: src/alarm/interface.c:1152 src/sndstretch/sndstretch_xmms.c:358 msgid "Options" msgstr "Nastavení" -#: src/alarm/interface.c:1336 +#: src/alarm/interface.c:1160 msgid "What do these options mean?" msgstr "Co tyto volby znamenají?" -#: src/alarm/interface.c:1364 +#: src/alarm/interface.c:1188 msgid "" "\n" "Time\n" @@ -563,14 +288,14 @@ "\n" "Hlasitost\n" " Zesilování: \n" -" Zesiluje až na vybranou hodnotu\n" +" Zesiluje až na urÄenou úroveň\n" " po vybranou dobu.\n" "\n" " ZaÄít na: \n" -" Zesilovat zaÄne z této hlasitosti.\n" +" Zesilovat zaÄne na této hlasitosti.\n" "\n" " SkonÄit na: \n" -" Hlasitost na konci zesílení. Je-li doba zesilování 0,\n" +" Hlasitost na konci zesílení. Je-li doba zesilování 0,\n" " pak hlasitost bude tato.\n" "\n" "\n" @@ -581,35 +306,40 @@ " Seznam skladeb: \n" " NaÄte tento seznam skladeb, z kterého bude hrát\n" " (musí mít příponu .m3u). Není-li seznam zadán\n" -" bude použity skladby, které budou v aktuálním\n" +" budou použity skladby, které budou v aktuálním\n" " seznamu skladeb.\n" -" URL MP3/OGG proudu zde také může být zadáno,\n" +" URL MP3/OGG proudu zde také může být zadáno,\n" " ale naÄítání seznamu skladeb z URL není\n" " v souÄasnosti podporováno.\n" "\n" " Upomínání:\n" " PÅ™i vypnutí budíku zobrazí vzkaz.\n" -" Text vzkazu vepiÅ¡te do vstupního pole a zapnÄ›te tlaÄítko,\n" +" Text vzkazu vepiÅ¡te do vstupního pole a zapnÄ›te pÅ™epínaÄ,\n" " pÅ™ejete-li si zobrazovat vzkaz.\n" -#: src/alarm/interface.c:1366 src/gtkui/ui_manager.c:165 -#: src/skins/ui_manager.c:371 +#: src/alarm/interface.c:1190 src/skins/ui_manager.c:382 msgid "Help" msgstr "NápovÄ›da" -#: src/alarm/interface.c:1468 +#: src/alarm/interface.c:1222 src/cdaudio-ng/configure.c:249 +#: src/crystalizer/crystalizer.c:130 src/echo_plugin/gui.c:125 +#: src/jack/configure.c:148 src/null/null.c:108 src/stereo_plugin/stereo.c:125 +msgid "Cancel" +msgstr "ZruÅ¡it" + +#: src/alarm/interface.c:1290 msgid "Your reminder for today is.." msgstr "Váš vzkaz pro dneÅ¡ek je…" -#: src/alarm/interface.c:1493 +#: src/alarm/interface.c:1315 msgid "Thankyou" msgstr "DÄ›kuji" -#: src/alsa/config.c:209 +#: src/alsa/config.c:210 msgid "Default PCM device" msgstr "Implicitní PCM zařízení" -#: src/alsa/config.c:234 +#: src/alsa/config.c:235 msgid "Default mixer device" msgstr "Implicitní směšovací zařízení" @@ -621,7 +351,7 @@ msgid "PCM device:" msgstr "Zařízení PCM:" -#: src/alsa/config.c:447 src/OSS/configure.c:256 src/sun/configure.c:218 +#: src/alsa/config.c:447 src/OSS/configure.c:237 msgid "Mixer device:" msgstr "Zařízení směšovaÄe:" @@ -633,15 +363,15 @@ msgid "Work around drain hangup" msgstr "Obejít zaseknutí pÅ™i vyprazdňovaní" -#: src/alsa/plugin.c:61 +#: src/alsa/plugin.c:59 msgid "About ALSA Output Plugin" msgstr "O výstupním modulu ALSA" -#: src/alsa/plugin.c:83 +#: src/alsa/plugin.c:81 msgid "ALSA error" msgstr "Chyba ALSY" -#: src/amidi-plug/amidi-plug.c:323 +#: src/amidi-plug/amidi-plug.c:325 msgid "" "You have not selected any sequencer ports for MIDI playback. You can do so " "in the MIDI plugin preferences." @@ -673,11 +403,11 @@ "události zaslané hardwarovému syntetizátoru budou hrány přímo jím.\n" "Backend napsal Giacomo Lozito." -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:41 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 msgid "FluidSynth Backend " msgstr "Becken FluidSynth" -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:43 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 msgid "" "This backend produces audio by sending MIDI events to FluidSynth, a real-" "time software synthesizer based on the SoundFont2 specification (www." @@ -693,86 +423,43 @@ "je zpracován vybraným výstupním modulem.\n" "Backend napsal Giacomo Lozito." -#: src/amidi-plug/i_configure-alsa.c:221 +#: src/amidi-plug/i_configure-alsa.c:228 msgid "ALSA BACKEND CONFIGURATION" msgstr "NASTAVENà BACKANDU ALSY" -#: src/amidi-plug/i_configure-alsa.c:326 +#: src/amidi-plug/i_configure-alsa.c:331 msgid "Port" msgstr "Port" -#: src/amidi-plug/i_configure-alsa.c:328 +#: src/amidi-plug/i_configure-alsa.c:333 msgid "Client name" msgstr "Jméno klientu" -#: src/amidi-plug/i_configure-alsa.c:330 +#: src/amidi-plug/i_configure-alsa.c:335 msgid "Port name" msgstr "Jméno portu" -#: src/amidi-plug/i_configure-alsa.c:341 +#: src/amidi-plug/i_configure-alsa.c:346 msgid "ALSA output ports" msgstr "Výstupní port ALSY" -#: src/amidi-plug/i_configure-alsa.c:394 +#: src/amidi-plug/i_configure-alsa.c:399 msgid "Soundcard: " msgstr "Zvuková karta: " -#: src/amidi-plug/i_configure-alsa.c:396 +#: src/amidi-plug/i_configure-alsa.c:401 msgid "Mixer control: " msgstr "Ovládání směšovaÄe: " -#: src/amidi-plug/i_configure-alsa.c:408 +#: src/amidi-plug/i_configure-alsa.c:413 msgid "Mixer settings" msgstr "Nastavení směšovaÄe" -#: src/amidi-plug/i_configure-alsa.c:421 -msgid "" -"* Select ALSA output ports *\n" -"MIDI events will be sent to the ports selected here. In example, if your " -"audio card provides a hardware synth and you want to play MIDI with it, " -"you'll probably want to select the wavetable synthesizer ports." -msgstr "" -"* Vyberte výstupní port ALSY *\n" -"MIDI události budou zasílány portům zde vybraným. Na příklad pokud vaÅ¡e " -"zvuková karta poskytuje hardwarový syntetizátor a chcete-li jím pÅ™ehrávat " -"MIDI, budete pravdÄ›podobnÄ› potÅ™ebovat vybrat porty tabulkového (wavetable) " -"syntetizátoru." - -#: src/amidi-plug/i_configure-alsa.c:426 -msgid "" -"* Select ALSA mixer card *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volumeslider will " -"manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" -"* Vyberte kartu se směšovaÄem ALSY *\n" -"Backend ALSY posílá výstup přímo skrz ALSU. Efekty a výstupní moduly " -"pÅ™ehrávaÄe nebudou použity. BÄ›hem pÅ™ehrávání jezdec ovládající hlasitost " -"bude pracovat se směšovaÄem, který zde vyberete. Používáte-li porty " -"tabulkového syntetizátoru, pravdÄ›podobnÄ› zde budete chtít vybrat „Ovládání " -"syntézy“." - -#: src/amidi-plug/i_configure-alsa.c:433 -msgid "" -"* Select ALSA mixer control *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volume slider " -"will manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" -"* Vyberte ovládání směšovaÄe ALSY *\n" -"Backend ALSY posílá výstup přímo skrz ALSU. Efekty a výstupní moduly " -"pÅ™ehrávaÄe nebudou použity. BÄ›hem pÅ™ehrávání jezdec ovládající hlasitost " -"bude pracovat se směšovaÄem, který zde vyberete. Používáte-li porty " -"tabulkového syntetizátoru, pravdÄ›podobnÄ› zde budete chtít vybrat „Ovládání " -"syntézy“." - -#: src/amidi-plug/i_configure-alsa.c:444 +#: src/amidi-plug/i_configure-alsa.c:429 msgid "ALSA Backend not loaded or not available" msgstr "Backend ALSY není nahrán nebo není dostupný" -#: src/amidi-plug/i_configure-alsa.c:463 +#: src/amidi-plug/i_configure-alsa.c:448 msgid "" "ALSA\n" "backend" @@ -780,151 +467,51 @@ "Backend\n" "ALSA" -#: src/amidi-plug/i_configure-ap.c:56 +#: src/amidi-plug/i_configure-ap.c:59 msgid "AMIDI-Plug - backend information" msgstr "AMIDI-Plug – podrobnosti o backendu" -#: src/amidi-plug/i_configure-ap.c:194 +#: src/amidi-plug/i_configure-ap.c:196 msgid "AMIDI-PLUG PREFERENCES" msgstr "NASTAVENà AMIDI-PLUGU" -#: src/amidi-plug/i_configure-ap.c:221 +#: src/amidi-plug/i_configure-ap.c:223 msgid "Backend selection" msgstr "VýbÄ›r backendu" -#: src/amidi-plug/i_configure-ap.c:225 +#: src/amidi-plug/i_configure-ap.c:227 msgid "Available backends" msgstr "Dostupné backendy" -#: src/amidi-plug/i_configure-ap.c:255 +#: src/amidi-plug/i_configure-ap.c:257 msgid "Playback settings" msgstr "Nastavení pÅ™ehrávání" -#: src/amidi-plug/i_configure-ap.c:260 +#: src/amidi-plug/i_configure-ap.c:262 msgid "Transpose: " msgstr "Transponovat: " -#: src/amidi-plug/i_configure-ap.c:269 +#: src/amidi-plug/i_configure-ap.c:271 msgid "Drum shift: " msgstr "Posun bubnu: " -#: src/amidi-plug/i_configure-ap.c:287 +#: src/amidi-plug/i_configure-ap.c:289 msgid "Advanced settings" msgstr "PokroÄilá nastavení" -#: src/amidi-plug/i_configure-ap.c:291 +#: src/amidi-plug/i_configure-ap.c:293 msgid "pre-calculate length of MIDI files in playlist" msgstr "pÅ™edpoÄítat délku MIDI souborů v seznamu skladeb" -#: src/amidi-plug/i_configure-ap.c:296 +#: src/amidi-plug/i_configure-ap.c:298 msgid "extract comments from MIDI file (if available)" msgstr "vytáhnout komentáře z MIDI souboru (pokud existují)" -#: src/amidi-plug/i_configure-ap.c:301 +#: src/amidi-plug/i_configure-ap.c:303 msgid "extract lyrics from MIDI file (if available)" msgstr "vytáhnout text z MIDI souboru (pokud existuje)" -#: src/amidi-plug/i_configure-ap.c:320 -msgid "" -"* Backend selection *\n" -"AMIDI-Plug works with backends, in a modular fashion; here you should select " -"your backend; that is, the way MIDI events are going to be handled and " -"played.\n" -"If you have a hardware synthesizer on your audio card, and ALSA supports it, " -"you'll want to use the ALSA backend. It can also be used with anything that " -"provides an interface to the ALSA sequencer, including software synths or " -"external devices.\n" -"If you want to rely on a software synthesizer and/or want to pipe audio into " -"effect and output plugins of the player you'll want to use the good " -"FluidSynth backend.\n" -"Press the info button to read specific information about each backend." -msgstr "" -"* VýbÄ›r backendu *\n" -"AMIDI-Plug pracuje s backendy modulárním způsobem. Zde byste si mÄ›li vybrat " -"svůj backend, tj. způsob, jakým způsobem se bude zacházet s MIDI událostmi a " -"jak budou hrány.\n" -"Jestliže na zvukové kartÄ› máte hardwarový syntetizátor a ALSA jej podporuje, " -"je rozumné použít backend ALSY. Taktéž pÅ™ijde vhod, máte cokoliv jiného, " -"vÄetnÄ› softwarových syntetizátorů nebo vnÄ›jších zařízení, co má rozhraní " -"k sekvenceru ALSY.\n" -"Pokud se chcete spolehnout na softwarový syntetizátor a/nebo chcete zvuk " -"protáhnout efektovými a výstupním modulem, dobrou volbou bude backend " -"FluidSynth.\n" -"Podrobnosti o jednotlivých backendech získáte pÅ™es tlaÄítko „Podrobnosti“." - -#: src/amidi-plug/i_configure-ap.c:331 -msgid "" -"* Transpose function *\n" -"This option allows you to play the midi file transposed in a different key, " -"by shifting of the desired number of semitones all its notes (excepting " -"those on midi channel 10, reserved for percussions). Especially useful if " -"you wish to sing or play along with another instrument." -msgstr "" -"* Funkce transpozice *\n" -"Tato volba nabízí transpozici pÅ™ehrávaného MIDI souboru do jiné tóniny " -"o zadaný poÄet půltónů (kromÄ› tónů 10. stopy, která je vyhrazena pro bicí). " -"Tato funkce je užiteÄná, chcete-li doprovázet skladbu zpÄ›vem Äi jiným " -"nástrojem." - -#: src/amidi-plug/i_configure-ap.c:337 -msgid "" -"* Drumshift function *\n" -"This option allows you to shift notes on midi channel 10 (the standard " -"percussions channel) of the desired number of semitones. This results in " -"different drumset and percussions being used during midi playback, so if you " -"wish to enhance (or reduce, or alter) percussion sounds, try to play with " -"this value." -msgstr "" -"* Funkce posunu bubnů *\n" -"Tato volba nabízí posun not na 10. MIDI kanále (standardní kanál pro bicí) " -"o zadaný poÄet půltónů. Výsledkem je odliÅ¡ná sada bicích nástrojů použitá " -"bÄ›hem pÅ™ehrávání. Takže chcete-li vylepÅ¡it (ztlumit Äi jinak pozmÄ›nit) zvuk " -"bicích, pohrejte si s touto hodnotou." - -#: src/amidi-plug/i_configure-ap.c:344 -msgid "" -"* Pre-calculate MIDI length *\n" -"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as " -"soon as the player requests it, instead of doing that only when the MIDI " -"file is being played. In example, MIDI length will be calculated straight " -"after adding MIDI files in a playlist. Disable this option if you want " -"faster playlist loading (when a lot of MIDI files are added), enable it to " -"display more information in the playlist straight after loading." -msgstr "" -"* PÅ™edpoÄítat délku skladby *\n" -"Pokud je tato funkce zapnuta, AMIDI-Plug vypoÄítá délku MIDI souboru " -"okamžitÄ›, jak o ni pÅ™ehrávaÄ požádá. Jinak bude délka urÄena až pÅ™i prvním " -"pÅ™ehrání. Na příklad délka skladby bude vypoÄtena ihned po pÅ™idání MIDI " -"souboru do seznamu skladeb. VypnÄ›te tuto funkci, požadujete-li rychlejší " -"nahrávání seznamu skladeb (obzvláštÄ› má-li mnoho MIDI souborů), zapnÄ›te tuto " -"funkci, potÅ™ebujete-li vidÄ›t délku skladeb ihned po naÄtení seznamu." - -#: src/amidi-plug/i_configure-ap.c:353 -msgid "" -"* Extract comments from MIDI files *\n" -"Some MIDI files contain text comments (author, copyright, instrument notes, " -"etc.). If this option is enabled, AMIDI-Plug will extract and display " -"comments (if available) in the file information dialog." -msgstr "" -"* Vytáhnout komentáře z MIDI souborů *\n" -"NÄ›které MIDI soubory obsahují textové komentáře (autora, autorská práva, " -"poznámky k nástrojům apod.). Pokud je tato funkce zapnutá, AMIDI-Plug tyto " -"komentáře zjistí a zobrazí v dialogu o podrobnostech souboru (pokud " -"existují)." - -#: src/amidi-plug/i_configure-ap.c:358 -msgid "" -"* Extract lyrics from MIDI files *\n" -"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug " -"will extract and display song lyrics (if available) in the file information " -"dialog." -msgstr "" -"* Vytáhnout text z MIDI souborů *\n" -"NÄ›které MIDI soubory obsahují text písnÄ›. Pokud je tato funkce zapnuta, " -"AMIDI-Plug tento text získá a zobrazí v dialogu o podrobnostech souboru " -"(pokud existuje)." - -#: src/amidi-plug/i_configure-ap.c:375 +#: src/amidi-plug/i_configure-ap.c:333 msgid "" "AMIDI\n" "Plug" @@ -932,230 +519,113 @@ "AMIDI\n" "Plug" -#: src/amidi-plug/i_configure.c:73 +#: src/amidi-plug/i_configure.c:76 msgid "AMIDI-Plug - select file" msgstr "AMIDI-Plug – vyberte soubor" -#: src/amidi-plug/i_configure.c:126 +#: src/amidi-plug/i_configure.c:129 msgid "AMIDI-Plug - configuration" msgstr "AMIDI-Plug – nastavení" -#: src/amidi-plug/i_configure-fluidsynth.c:52 +#: src/amidi-plug/i_configure-fluidsynth.c:55 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug – vyberte soundfontový soubor" -#: src/amidi-plug/i_configure-fluidsynth.c:268 +#: src/amidi-plug/i_configure-fluidsynth.c:270 msgid "FLUIDSYNTH BACKEND CONFIGURATION" msgstr "NASTAVENà FLUIDSYNTH BACKENDU" -#: src/amidi-plug/i_configure-fluidsynth.c:316 +#: src/amidi-plug/i_configure-fluidsynth.c:313 msgid "SoundFont settings" msgstr "Nastavení SoundFontu" -#: src/amidi-plug/i_configure-fluidsynth.c:352 +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Jméno souboru" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 msgid "Size (bytes)" msgstr "Velikost (v bajtech):" -#: src/amidi-plug/i_configure-fluidsynth.c:401 +#: src/amidi-plug/i_configure-fluidsynth.c:398 msgid "Load SF on player start" msgstr "SoundFont nahrát pÅ™i spuÅ¡tÄ›ní pÅ™ehrávaÄe" -#: src/amidi-plug/i_configure-fluidsynth.c:405 +#: src/amidi-plug/i_configure-fluidsynth.c:402 msgid "Load SF on first midifile play" msgstr "SoundFont nahrát pÅ™i pÅ™ehrání prvního MIDI souboru" -#: src/amidi-plug/i_configure-fluidsynth.c:420 +#: src/amidi-plug/i_configure-fluidsynth.c:417 msgid "Synthesizer settings" msgstr "Nastavení syntetizátoru" -#: src/amidi-plug/i_configure-fluidsynth.c:429 +#: src/amidi-plug/i_configure-fluidsynth.c:426 msgid "gain" msgstr "zesílení" -#: src/amidi-plug/i_configure-fluidsynth.c:435 -#: src/amidi-plug/i_configure-fluidsynth.c:463 -#: src/amidi-plug/i_configure-fluidsynth.c:491 -#: src/amidi-plug/i_configure-fluidsynth.c:522 +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 msgid "use default" msgstr "použít implicitní" -#: src/amidi-plug/i_configure-fluidsynth.c:438 -#: src/amidi-plug/i_configure-fluidsynth.c:466 +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 msgid "value:" msgstr "hodnota:" -#: src/amidi-plug/i_configure-fluidsynth.c:457 +#: src/amidi-plug/i_configure-fluidsynth.c:454 msgid "poliphony" msgstr "vícehlas" -#: src/amidi-plug/i_configure-fluidsynth.c:485 +#: src/amidi-plug/i_configure-fluidsynth.c:482 msgid "reverb" msgstr "dozvuk" -#: src/amidi-plug/i_configure-fluidsynth.c:494 -#: src/amidi-plug/i_configure-fluidsynth.c:525 +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 msgid "yes" msgstr "ano" -#: src/amidi-plug/i_configure-fluidsynth.c:496 -#: src/amidi-plug/i_configure-fluidsynth.c:527 +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 msgid "no" msgstr "ne" -#: src/amidi-plug/i_configure-fluidsynth.c:516 +#: src/amidi-plug/i_configure-fluidsynth.c:513 msgid "chorus" msgstr "sbor" -#: src/amidi-plug/i_configure-fluidsynth.c:547 +#: src/amidi-plug/i_configure-fluidsynth.c:544 msgid "sample rate" msgstr "vzorkovací kmitoÄet" -#: src/amidi-plug/i_configure-fluidsynth.c:553 +#: src/amidi-plug/i_configure-fluidsynth.c:550 msgid "22050 Hz " msgstr "22050 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:556 +#: src/amidi-plug/i_configure-fluidsynth.c:553 msgid "44100 Hz " msgstr "44100 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:559 +#: src/amidi-plug/i_configure-fluidsynth.c:556 msgid "96000 Hz " msgstr "96000 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:562 +#: src/amidi-plug/i_configure-fluidsynth.c:559 msgid "custom " msgstr "vlastní " -#: src/amidi-plug/i_configure-fluidsynth.c:571 +#: src/amidi-plug/i_configure-fluidsynth.c:568 msgid "Hz " msgstr "Hz " #: src/amidi-plug/i_configure-fluidsynth.c:621 -msgid "" -"* Select SoundFont files *\n" -"In order to play MIDI with FluidSynth, you need to specify at least one " -"valid SoundFont file here (use absolute paths). The loading order is from " -"the top (first) to the bottom (last)." -msgstr "" -"* VýbÄ›r SoundFont souborů *\n" -"Abyste mohli pÅ™ehrávat MIDI pÅ™es FluidSynth, musíte urÄit alespoň jeden " -"platný soundfontový soubor (použijte absolutní cesty). PoÅ™adí nahrávání je " -"od shora (první) dolů (poslední)." - -#: src/amidi-plug/i_configure-fluidsynth.c:626 -msgid "" -"* Load SoundFont on player start *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" -"* Nahrát SoundFont pÅ™i spuÅ¡tÄ›ní pÅ™ehrávaÄe *\n" -"V závislosti na rychlosti vaÅ¡eho systému nahrávání SoundFontu do FluidSynthu " -"může trvat i nÄ›kolik sekund. Jedná se jednorázovou záležitost (soundfont " -"zůstane nahraný, dokud jej nevymÄ›níte nebo nezrušíte backend), která může " -"být provedena bÄ›hem spouÅ¡tÄ›ní pÅ™ehrávaÄe nebo pÅ™ed zahájením produkce " -"prvního MIDI souboru (druhá možnost je výhodnÄ›jší, jestliže neplánujete " -"poslouchat jen MIDI soubory)." - -#: src/amidi-plug/i_configure-fluidsynth.c:634 -msgid "" -"* Load SoundFont on first midifile play *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" -"* Nahrát SoundFont pÅ™ed prvním MIDI souborem *\n" -"V závislosti na rychlosti vaÅ¡eho systému nahrávání SoundFontu do FluidSynthu " -"může trvat i nÄ›kolik sekund. Jedná se jednorázovou záležitost (soundfont " -"zůstane nahraný, dokud jej nevymÄ›níte nebo nezrušíte backend), která může " -"být provedena bÄ›hem spouÅ¡tÄ›ní pÅ™ehrávaÄe nebo pÅ™ed zahájením produkce " -"prvního MIDI souboru (druhá možnost je výhodnÄ›jší, jestliže neplánujete " -"poslouchat jen MIDI soubory)." - -#: src/amidi-plug/i_configure-fluidsynth.c:642 -msgid "" -"* Synthesizer gain *\n" -"From FluidSynth docs: the gain is applied to the final or master output of " -"the synthesizer; it is set to a low value by default to avoid the saturation " -"of the output when random MIDI files are played." -msgstr "" -"* Zesílení syntetizátoru *\n" -"Z dokumentace FluidSynth: zesílení je aplikován na koneÄný nebo hlavní " -"výstup syntetizátoru. ImplicitnÄ› je nastaveno na nízkou hodnotu, aby se " -"zabránilo oÅ™ezávání pÅ™i pÅ™ehrávání různorodých MIDI souborů." - -#: src/amidi-plug/i_configure-fluidsynth.c:647 -msgid "" -"* Synthesizer polyphony *\n" -"From FluidSynth docs: the polyphony defines how many voices can be played in " -"parallel; the number of voices is not necessarily equivalent to the number " -"of notes played simultaneously; indeed, when a note is struck on a specific " -"MIDI channel, the preset on that channel may create several voices, for " -"example, one for the left audio channel and one for the right audio " -"channels; the number of voices activated depends on the number of instrument " -"zones that fall in the correspond to the velocity and key of the played note." -msgstr "" -"* Vícehlas syntetizátoru *\n" -"Z dokumentace FluidSynth: vícehlas urÄuje, kolik hlasů může hrát najednou. " -"PoÄet hlasů není nezbytnÄ› shodný s poÄtem not hraných souÄasnÄ›. Ve " -"skuteÄnosti když je nota vyslána na urÄitém MIDI kanálu, pÅ™edvolba na " -"takovém kanálu může vytvoÅ™it více hlasů, na příklad jeden pro levý zvukový " -"kanál a jeden pro pravý zvukový kanál. PoÄet aktivovaných hlasů závisí na " -"poÄtu nástrojových zón, které spadají do odpovídající rychlosti a klíÄi " -"hrané noty." - -#: src/amidi-plug/i_configure-fluidsynth.c:657 -#: src/amidi-plug/i_configure-fluidsynth.c:663 -msgid "" -"* Synthesizer reverb *\n" -"From FluidSynth docs: when set to \"yes\" the reverb effects module is " -"activated; note that when the reverb module is active, the amount of signal " -"sent to the reverb module depends on the \"reverb send\" generator defined " -"in the SoundFont." -msgstr "" -"* Dozvuk syntetizátoru *\n" -"Z dokumentace FluidSynth: je-li nastaveno na „ano“, modul efektu dozvuku je " -"aktivován. Pamatujte, že pÅ™i aktivovaném modulu dozvuku je množství signálu " -"zasílaného tomuto modulu závislé na generátoru „zasílání dozvuku“, který je " -"definován v SoundFontu." - -#: src/amidi-plug/i_configure-fluidsynth.c:669 -#: src/amidi-plug/i_configure-fluidsynth.c:675 -msgid "" -"* Synthesizer chorus *\n" -"From FluidSynth docs: when set to \"yes\" the chorus effects module is " -"activated; note that when the chorus module is active, the amount of signal " -"sent to the chorus module depends on the \"chorus send\" generator defined " -"in the SoundFont." -msgstr "" -"* Sbor syntetizátoru *\n" -"Z dokumentace FluidSynth: je-li nastaveno na „ano“, modul efektu sboru je " -"aktivován. Pamatujte, že pÅ™i aktivovaném modulu sboru je množství signálu " -"zasílaného tomuto modulu závislé na generátoru „zasílání sboru“, který je " -"definován v SoundFontu." - -#: src/amidi-plug/i_configure-fluidsynth.c:681 -#: src/amidi-plug/i_configure-fluidsynth.c:685 -#: src/amidi-plug/i_configure-fluidsynth.c:689 -#: src/amidi-plug/i_configure-fluidsynth.c:693 -msgid "" -"* Synthesizer samplerate *\n" -"The sample rate of the audio generated by the synthesizer. You can also " -"specify a custom value in the interval 22050Hz-96000Hz." -msgstr "" -"* Vzorkovací frekvence syntetizátoru *\n" -"Vzorkovací frekvence zvuku generovaného syntetizátorem. Lze zadat vlastní " -"hodnotu z intervalu 22050 Hz–96000 Hz." - -#: src/amidi-plug/i_configure-fluidsynth.c:701 msgid "FluidSynth Backend not loaded or not available" msgstr "FluidSynth backend není nahrán nebo není dostupný" -#: src/amidi-plug/i_configure-fluidsynth.c:720 +#: src/amidi-plug/i_configure-fluidsynth.c:640 msgid "" "FluidSynth\n" "backend" @@ -1179,8 +649,7 @@ "Backend\n" "TiMidity" -#: src/amidi-plug/i_fileinfo.c:169 src/bluetooth/gui.c:271 -#: src/sid/xs_interface.c:1769 +#: src/amidi-plug/i_fileinfo.c:169 msgid "Name:" msgstr "Jméno:" @@ -1356,119 +825,118 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Spustí OSD, když pÅ™ehrávání obnoveno." -#: src/aosd/aosd_ui.c:168 +#: src/aosd/aosd_ui.c:180 msgid "Placement" msgstr "UmístÄ›ní" -#: src/aosd/aosd_ui.c:202 +#: src/aosd/aosd_ui.c:219 msgid "Relative X offset:" msgstr "Relativní odsazení ve smÄ›ru osy X:" -#: src/aosd/aosd_ui.c:211 +#: src/aosd/aosd_ui.c:228 msgid "Relative Y offset:" msgstr "Relativní odsazení ve smÄ›ru osy Y" -#: src/aosd/aosd_ui.c:220 +#: src/aosd/aosd_ui.c:237 msgid "Max OSD width:" msgstr "Maximální šířka OSD" -#: src/aosd/aosd_ui.c:233 +#: src/aosd/aosd_ui.c:250 msgid "Multi-Monitor options" msgstr "Nastavení pro více monitorů" -#: src/aosd/aosd_ui.c:237 +#: src/aosd/aosd_ui.c:254 msgid "Display OSD using:" msgstr "Zobrazit OSD na:" -#: src/aosd/aosd_ui.c:239 +#: src/aosd/aosd_ui.c:265 msgid "all monitors" msgstr "vÅ¡ech monitorech" -#: src/aosd/aosd_ui.c:242 +#: src/aosd/aosd_ui.c:268 #, c-format msgid "monitor %i" msgstr "monitoru %i" -#: src/aosd/aosd_ui.c:295 +#: src/aosd/aosd_ui.c:323 msgid "Timing (ms)" msgstr "ÄŒasování (ms)" -#: src/aosd/aosd_ui.c:300 +#: src/aosd/aosd_ui.c:328 msgid "Display:" msgstr "Zobrazení:" -#: src/aosd/aosd_ui.c:305 +#: src/aosd/aosd_ui.c:333 msgid "Fade in:" msgstr "Rozsvícení:" -#: src/aosd/aosd_ui.c:310 +#: src/aosd/aosd_ui.c:338 msgid "Fade out:" msgstr "Pohasnutí:" -#: src/aosd/aosd_ui.c:391 +#: src/aosd/aosd_ui.c:419 msgid "Fonts" msgstr "Fonty" -#: src/aosd/aosd_ui.c:399 +#: src/aosd/aosd_ui.c:427 #, c-format msgid "Font %i:" msgstr "Font %i:" -#: src/aosd/aosd_ui.c:416 +#: src/aosd/aosd_ui.c:444 msgid "Shadow" msgstr "Stín" -#: src/aosd/aosd_ui.c:451 +#: src/aosd/aosd_ui.c:479 msgid "Internationalization" msgstr "Internacionalizace" -#: src/aosd/aosd_ui.c:457 +#: src/aosd/aosd_ui.c:485 msgid "Disable UTF-8 conversion of text (in aosd)" msgstr "Zakázat pÅ™evod textu do UTF-8 (uvnitÅ™ aosd)" -#: src/aosd/aosd_ui.c:475 +#: src/aosd/aosd_ui.c:503 msgid "Select Skin File" msgstr "Vyberte soubor se skinem" -#: src/aosd/aosd_ui.c:586 +#: src/aosd/aosd_ui.c:614 msgid "Render Style" msgstr "Styl vyobrazení" -#: src/aosd/aosd_ui.c:602 +#: src/aosd/aosd_ui.c:630 msgid "Colors" msgstr "Barvy" -#: src/aosd/aosd_ui.c:615 +#: src/aosd/aosd_ui.c:643 #, c-format msgid "Color %i:" msgstr "Barvy %i:" -#: src/aosd/aosd_ui.c:635 +#: src/aosd/aosd_ui.c:663 msgid "Custom Skin" msgstr "Vlastní skin:" -#: src/aosd/aosd_ui.c:641 +#: src/aosd/aosd_ui.c:669 msgid "Skin file:" msgstr "Soubor se skinem:" -#: src/aosd/aosd_ui.c:644 src/sid/xs_interface.c:1044 -#: src/sid/xs_interface.c:1236 src/sid/xs_interface.c:1292 +#: src/aosd/aosd_ui.c:672 msgid "Browse" msgstr "Procházet" -#: src/aosd/aosd_ui.c:746 +#: src/aosd/aosd_ui.c:774 msgid "Enable trigger" msgstr "Povolit spouÅ¡tÄ›Ä" -#: src/aosd/aosd_ui.c:773 +#: src/aosd/aosd_ui.c:801 msgid "Event" msgstr "Událost" -#: src/aosd/aosd_ui.c:801 +#: src/aosd/aosd_ui.c:829 msgid "Composite manager detected" msgstr "Nalezen kompozitní správce" -#: src/aosd/aosd_ui.c:808 +#: src/aosd/aosd_ui.c:836 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -1478,73 +946,72 @@ "Pokud nevíte, že byste jste již nÄ›jakého spustili, prosím, aktivujte " "kompozitního správce, jinak OSD nebude správnÄ› fungovat." -#: src/aosd/aosd_ui.c:816 +#: src/aosd/aosd_ui.c:844 msgid "Composite manager not required for fake transparency" msgstr "PÅ™i faleÅ¡né průhlednosti není kompozitní správce potÅ™eba" -#: src/aosd/aosd_ui.c:854 +#: src/aosd/aosd_ui.c:882 msgid "Transparency" msgstr "Průhlednost" -#: src/aosd/aosd_ui.c:860 +#: src/aosd/aosd_ui.c:888 msgid "Fake transparency" msgstr "FaleÅ¡ná průhlednost" -#: src/aosd/aosd_ui.c:862 +#: src/aosd/aosd_ui.c:890 msgid "Real transparency (requires X Composite Ext.)" msgstr "SkuteÄná průhlednost (vyžaduje kompozitní rozšíření X)" -#: src/aosd/aosd_ui.c:904 +#: src/aosd/aosd_ui.c:932 msgid "Composite extension not loaded" msgstr "Kompozitní rozšíření není nahráno" -#: src/aosd/aosd_ui.c:912 +#: src/aosd/aosd_ui.c:940 msgid "Composite extension not available" msgstr "Kompozitní rozšíření není dostupné" -#: src/aosd/aosd_ui.c:931 +#: src/aosd/aosd_ui.c:959 #, c-format msgid "Audacious OSD" msgstr "OSD Audacious" -#: src/aosd/aosd_ui.c:1012 +#: src/aosd/aosd_ui.c:1040 msgid "Audacious OSD - configuration" msgstr "OSD pro Audacious – nastavení" -#: src/aosd/aosd_ui.c:1033 +#: src/aosd/aosd_ui.c:1061 msgid "Test" msgstr "VyzkouÅ¡et" -#: src/aosd/aosd_ui.c:1048 +#: src/aosd/aosd_ui.c:1076 msgid "Position" msgstr "UmístÄ›ní" -#: src/aosd/aosd_ui.c:1053 +#: src/aosd/aosd_ui.c:1081 msgid "Animation" msgstr "Animace" -#: src/aosd/aosd_ui.c:1058 +#: src/aosd/aosd_ui.c:1086 msgid "Text" msgstr "Text" -#: src/aosd/aosd_ui.c:1063 +#: src/aosd/aosd_ui.c:1091 msgid "Decoration" msgstr "Výzdoba" -#: src/aosd/aosd_ui.c:1068 +#: src/aosd/aosd_ui.c:1096 msgid "Trigger" msgstr "SpouÅ¡tÄ›Ä" -#: src/aosd/aosd_ui.c:1073 src/cdaudio-ng/configure.c:178 -#: src/modplug/gui/interface.cxx:689 src/sid/xs_interface.c:1302 +#: src/aosd/aosd_ui.c:1101 src/cdaudio-ng/configure.c:171 msgid "Misc" msgstr "Různé" -#: src/aosd/aosd_ui.c:1110 +#: src/aosd/aosd_ui.c:1138 msgid "Audacious OSD - about" msgstr "OSD pro Audacious – o modulu" -#: src/aosd/aosd_ui.c:1140 +#: src/aosd/aosd_ui.c:1168 msgid "" "\n" "Audacious OSD " @@ -1552,7 +1019,7 @@ "\n" "OSD pro Audacious " -#: src/aosd/aosd_ui.c:1141 +#: src/aosd/aosd_ui.c:1169 msgid "" "\n" "http://www.develia.org/projects.php?p=audacious#aosd\n" @@ -1574,147 +1041,35 @@ "http://neugierig.org/software/ghosd/\n" "\n" -#: src/bluetooth/agent.c:356 src/bluetooth/agent.c:397 -#, c-format -msgid "Pairing request for '%s'" -msgstr "Požadavek na spárování „%s“" - -#: src/bluetooth/agent.c:544 -#, c-format -msgid "Authorization request for %s" -msgstr "Požadavek na autorizaci %s" - -#: src/bluetooth/agent.c:728 -#, c-format -msgid "Created bonding with %s" -msgstr "Vazba s %s vytvoÅ™ena" - -#: src/bluetooth/agent.c:756 -#, c-format -msgid "Removed bonding with %s" -msgstr "Vazba s %s odstranÄ›na" - -#: src/bluetooth/agent.c:808 -msgid "Device has been switched off" -msgstr "Zařízení bylo vypnuto" - -#: src/bluetooth/agent.c:811 -msgid "Device has been made non-discoverable" -msgstr "Zařízení bylo uÄinÄ›no neobjevitelným" - -#: src/bluetooth/agent.c:813 -msgid "Device has been made connectable" -msgstr "Zařízení bylo uÄinÄ›no pÅ™ipojitelným" - -#: src/bluetooth/agent.c:815 -msgid "Device has been made discoverable" -msgstr "Zařízení bylo uÄinÄ›no objevitelným" - -#: src/bluetooth/agent.c:817 -msgid "Device has been made limited discoverable" -msgstr "Zařízení bylo uÄinÄ›no omezenÄ› objevitelným" - -#: src/bluetooth/agent.c:819 -msgid "Device has been switched into pairing mode" -msgstr "Zařízení bylo pÅ™epnuto do režimu párování" - -#: src/bluetooth/bluetooth.c:117 -msgid "Bluetooth headset support plugin" -msgstr "Modul podporující náhlavní sady s bluetooth" - -#: src/bluetooth/bluetooth.c:118 -msgid "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the " -"Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" -msgstr "" -"Podpora náhlavních sad s bluetooth\n" -"Copyright © 2008 Paula Stanciu \n" -"Toto byl projekt GSoC 2008 – PodÄ›kování patří mému uÄiteli Tony Vroonovi a " -"týmu Audacious\n" -" \n" -"Aby fungoval AVRCP, potÅ™ebuje zavést do jádra modul uinput.\n" -"TlaÄítka náhlavní sady se tak budou jevit jako normální multimediální\n" -"klávesy a mohou být nastaveny pomocí Audacious modulu Globální horké\n" -"klávesy nebo jinými nástroji, které poskytuje váš správce oken.\n" - -#: src/bluetooth/gui.c:148 -msgid "Producer" -msgstr "Výrobce" - -#: src/bluetooth/gui.c:221 -msgid "Available Headsets" -msgstr "Dostupné náhlavní sady" - -#: src/bluetooth/gui.c:224 -msgid "Current Headset" -msgstr "SouÄasná náhlavní sada" - -#: src/bluetooth/gui.c:227 -msgid "_Refresh" -msgstr "_Obnovit" - -#: src/bluetooth/gui.c:231 -msgid "_Connect" -msgstr "_Spojit" - -#: src/bluetooth/gui.c:237 -msgid "_Close" -msgstr "_Zavřít" - -#: src/bluetooth/gui.c:274 -msgid "Class" -msgstr "Třída" - -#: src/bluetooth/gui.c:278 -msgid "Address:" -msgstr "Adresa:" - -#: src/bluetooth/scan_gui.c:69 -msgid "Bonding finish!" -msgstr "Vazba vytvoÅ™ena!" - -#: src/bluetooth/scan_gui.c:76 -msgid "No devices found!" -msgstr "Žádné zařízení nenalezeno!" - -#: src/bluetooth/scan_gui.c:119 -msgid "Scanning..." -msgstr "Vyhledává se…" - -#: src/bluetooth/scan_gui.c:122 -msgid "Pairing..." -msgstr "Páruje se…" - -#: src/bluetooth/scan_gui.c:138 -msgid "Rescan" -msgstr "Znovu vyhledat" - -#: src/bluetooth/scan_gui.c:142 src/gtkui/ui_manager.c:66 -#: src/gtkui/ui_manager.c:67 src/hotkey/gui.c:71 src/skins/ui_manager.c:167 -#: src/skins/ui_manager.c:168 -msgid "Play" -msgstr "Hrát" - #: src/blur_scope/config.c:73 msgid "Blur Scope: Color selection" msgstr "Blur scope: výbÄ›r barvy" -#: src/blur_scope/config.c:83 src/jack/configure.c:111 +#: src/blur_scope/config.c:83 src/jack/configure.c:106 msgid "Options:" msgstr "Volby:" -#: src/cdaudio-ng/cdaudio-ng.c:278 +#: src/bs2b/plugin.c:157 +msgid "Bauer stereophonic-to-binaural Preferences" +msgstr "Nastavení Bauerovy stereofonní-dvojuÅ¡ní transformace" + +#: src/bs2b/plugin.c:168 +msgid "Feed level:" +msgstr "Úroveň pÅ™eslechu:" + +#: src/bs2b/plugin.c:182 +msgid "Cut frequency:" +msgstr "OÅ™ezová frekvence:" + +#: src/bs2b/plugin.c:196 +msgid "Presets:" +msgstr "PÅ™edvolby:" + +#: src/cdaudio-ng/cdaudio-ng.c:241 msgid "About Audio CD Plugin" msgstr "O zásuvném modulu zvukových CD" -#: src/cdaudio-ng/cdaudio-ng.c:279 +#: src/cdaudio-ng/cdaudio-ng.c:242 msgid "" "Copyright (c) 2007, by Calin Crisan and The Audacious " "Team.\n" @@ -1738,121 +1093,150 @@ "Toto byl projekt z Google Summer of Code 2007.\n" "Copyright 2009 John Lindgren" -#: src/cdaudio-ng/configure.c:155 +#: src/cdaudio-ng/cdaudio-ng.c:550 +msgid "Audio CD" +msgstr "Zvukové CD" + +#: src/cdaudio-ng/cdaudio-ng.c:922 +msgid "Drive is empty." +msgstr "Mechanika je prázdná" + +#: src/cdaudio-ng/cdaudio-ng.c:924 +msgid "Unsupported disk type." +msgstr "Nepodporovaný druh disku." + +#: src/cdaudio-ng/configure.c:148 msgid "CD Audio Plugin Configuration" msgstr "Nastavení modulu pro zvuková CD" -#: src/cdaudio-ng/configure.c:167 +#: src/cdaudio-ng/configure.c:160 msgid "Digital audio extraction" msgstr "Digitální získání zvuku" -#: src/cdaudio-ng/configure.c:172 +#: src/cdaudio-ng/configure.c:165 msgid "Title information" msgstr "Informace o titulu" -#: src/cdaudio-ng/configure.c:190 +#: src/cdaudio-ng/configure.c:176 msgid "Disc speed:" msgstr "Rychlost disku:" -#: src/cdaudio-ng/configure.c:198 +#: src/cdaudio-ng/configure.c:184 msgid "Use cd-text if available" msgstr "Pokud možno, použít cd-text" -#: src/cdaudio-ng/configure.c:205 +#: src/cdaudio-ng/configure.c:191 msgid "Use CDDB if available" msgstr "Pokud možno, použít CDDB" -#: src/cdaudio-ng/configure.c:211 +#: src/cdaudio-ng/configure.c:197 msgid "Server: " msgstr "Server: " -#: src/cdaudio-ng/configure.c:215 +#: src/cdaudio-ng/configure.c:201 msgid "Path: " msgstr "Cesta: " -#: src/cdaudio-ng/configure.c:219 +#: src/cdaudio-ng/configure.c:205 msgid "Port: " msgstr "Port: " -#: src/cdaudio-ng/configure.c:232 +#: src/cdaudio-ng/configure.c:218 msgid "Use HTTP instead of CDDBP" msgstr "Použít HTTP místo CDDBP" -#: src/cdaudio-ng/configure.c:244 +#: src/cdaudio-ng/configure.c:230 msgid "Override default device: " msgstr "PÅ™ebít výchozí zařízení: " -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:123 +#: src/echo_plugin/gui.c:118 src/jack/configure.c:141 src/null/null.c:107 +#: src/stereo_plugin/stereo.c:118 +msgid "Ok" +msgstr "OK" + +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Play CD" msgstr "PÅ™ehrát CD" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Add CD" msgstr "PÅ™idat CD" -#: src/compressor/plugin.c:58 +#: src/compressor/plugin.c:63 msgid "About Dynamic Range Compression Plugin" msgstr "O modulu Komprese dynamického rozsahu" -#: src/compressor/plugin.c:91 +#: src/compressor/plugin.c:95 msgid "Dynamic Range Compressor Preferences" msgstr "Nastavení komprese dynamického rozsahu" -#: src/compressor/plugin.c:103 -msgid "Target volume:" -msgstr "Cílová hlasitost:" - -#: src/compressor/plugin.c:116 -msgid "Effect strength:" -msgstr "Síla efektu:" +#: src/compressor/plugin.c:107 +msgid "Center volume:" +msgstr "Hlasitost stÅ™edu:" + +#: src/compressor/plugin.c:120 +msgid "Dynamic range:" +msgstr "Rozsah dynamiky:" -#: src/console/configure.c:137 +#: src/console/configure.c:136 msgid "Game Console Music Decoder" msgstr "Dekodér hudby pro herní konzole" -#: src/console/configure.c:171 +#: src/console/configure.c:153 +msgid "General" +msgstr "Obecné" + +#: src/console/configure.c:155 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "PÅ™ehrát" + +#: src/console/configure.c:170 msgid "Bass:" msgstr "Hloubky:" -#: src/console/configure.c:175 src/console/configure.c:186 -#: src/console/configure.c:207 +#: src/console/configure.c:174 src/console/configure.c:185 +#: src/console/configure.c:206 msgid "secs" msgstr "s" -#: src/console/configure.c:182 +#: src/console/configure.c:181 msgid "Treble:" msgstr "Výšky:" -#: src/console/configure.c:203 +#: src/console/configure.c:202 msgid "Default song length:" msgstr "Implicitní délka skladby:" -#: src/console/configure.c:209 src/modplug/gui/interface.cxx:269 -#: src/sid/xs_interface.c:666 +#: src/console/configure.c:208 msgid "Resampling" msgstr "PÅ™evzorkování" -#: src/console/configure.c:215 +#: src/console/configure.c:214 msgid "Enable audio resampling" msgstr "Povolit pÅ™evzorkování zvuku" -#: src/console/configure.c:230 +#: src/console/configure.c:229 msgid "Resampling rate:" msgstr "PÅ™evzorkovat na:" -#: src/console/configure.c:245 +#: src/console/configure.c:233 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:244 msgid "SPC" msgstr "SPC" -#: src/console/configure.c:246 +#: src/console/configure.c:245 msgid "Ignore length from SPC tags" msgstr "Ignorovat délku z SPC popisků" -#: src/console/configure.c:247 +#: src/console/configure.c:246 msgid "Increase reverb" msgstr "Prodloužit dozvuk" -#: src/console/configure.c:272 +#: src/console/configure.c:271 msgid "" "The default song length, expressed in seconds, is used for songs that do not " "provide length information (i.e. looping tracks)." @@ -1876,29 +1260,29 @@ "Implementace v Audacious: William Pitcock ,\n" " Shay Green \n" -#: src/crossfade/plugin.c:51 +#: src/crossfade/plugin.c:60 msgid "About Crossfade" msgstr "O modulu Crossfade (pÅ™echodu)" -#: src/crossfade/plugin.c:84 +#: src/crossfade/plugin.c:92 msgid "Crossfade Preferences" msgstr "Nastavení modulu Crossfade" -#: src/crossfade/plugin.c:95 +#: src/crossfade/plugin.c:104 msgid "Overlap (in seconds):" msgstr "PÅ™esah (v sekundách):" -#: src/crossfade/plugin.c:129 src/crossfade/plugin.c:137 +#: src/crossfade/plugin.c:135 src/crossfade/plugin.c:141 msgid "Crossfade Error" msgstr "Chyba pÅ™echodu" -#: src/crossfade/plugin.c:130 +#: src/crossfade/plugin.c:135 msgid "" "Crossfading failed because the songs had a different number of channels." msgstr "" "UplatnÄ›ní použití pÅ™echodu selhalo, protože skladby mají jiný poÄet kanálů." -#: src/crossfade/plugin.c:138 +#: src/crossfade/plugin.c:143 msgid "" "Crossfading failed because the songs had different sample rates.\n" "\n" @@ -1911,20 +1295,20 @@ "Skladby můžete pÅ™evzorkovat na stejnou frekvenci pomocí efektu PÅ™evodníku " "vzorkovací frekvence." -#: src/crystalizer/crystalizer.c:104 +#: src/crystalizer/crystalizer.c:100 msgid "Configure Crystalizer" msgstr "Nastavit krystalizér" -#: src/crystalizer/crystalizer.c:106 src/stereo_plugin/stereo.c:102 +#: src/crystalizer/crystalizer.c:102 src/stereo_plugin/stereo.c:97 msgid "Effect intensity:" msgstr "Síla efektu:" -#: src/crystalizer/crystalizer.c:143 src/echo_plugin/gui.c:137 -#: src/modplug/gui/interface.cxx:709 src/stereo_plugin/stereo.c:139 +#: src/crystalizer/crystalizer.c:136 src/echo_plugin/gui.c:131 +#: src/stereo_plugin/stereo.c:131 msgid "Apply" msgstr "Použít" -#: src/echo_plugin/gui.c:14 +#: src/echo_plugin/gui.c:15 msgid "" "Echo Plugin\n" "By Johan Levin 1999.\n" @@ -1936,695 +1320,262 @@ "\n" "Prostorovou ozvÄ›nu pÅ™idal Carl van Schaik, 1999" -#: src/echo_plugin/gui.c:26 +#: src/echo_plugin/gui.c:27 msgid "About Echo Plugin" msgstr "O modulu ozvÄ›ny" -#: src/echo_plugin/gui.c:69 +#: src/echo_plugin/gui.c:67 msgid "Configure Echo" msgstr "Nastavit ozvÄ›nu" -#: src/echo_plugin/gui.c:82 +#: src/echo_plugin/gui.c:83 msgid "Delay: (ms)" msgstr "ZpoždÄ›ní: (ms)" -#: src/echo_plugin/gui.c:87 +#: src/echo_plugin/gui.c:88 msgid "Feedback: (%)" msgstr "ZpÄ›tná vazba: (%)" -#: src/echo_plugin/gui.c:92 +#: src/echo_plugin/gui.c:93 msgid "Volume: (%)" msgstr "Hlasitost: (%)" -#: src/evdev-plug/ed.c:60 -msgid "Playback->Play" -msgstr "PÅ™ehrát → Hrát" - -#: src/evdev-plug/ed.c:61 -msgid "Playback->Stop" -msgstr "PÅ™ehrát → Zastavit" - -#: src/evdev-plug/ed.c:62 -msgid "Playback->Pause" -msgstr "PÅ™ehrát → Pozastavit" - -#: src/evdev-plug/ed.c:63 -msgid "Playback->Prev" -msgstr "PÅ™ehrát → PÅ™edchozí" - -#: src/evdev-plug/ed.c:64 -msgid "Playback->Next" -msgstr "PÅ™ehrát → Další" - -#: src/evdev-plug/ed.c:65 -msgid "Playback->Eject" -msgstr "PÅ™ehrát → Vysunout" - -#: src/evdev-plug/ed.c:67 -msgid "Playlist->Repeat" -msgstr "Seznam skladeb → Opakovat" - -#: src/evdev-plug/ed.c:68 -msgid "Playlist->Shuffle" -msgstr "Seznam skladeb → Náhodné pÅ™ehrávání" - -#: src/evdev-plug/ed.c:70 -msgid "Volume->Up_5" -msgstr "Hlasitost → Zvýšit o 5" - -#: src/evdev-plug/ed.c:71 -msgid "Volume->Down_5" -msgstr "Hlasitost → Snížit o 5" - -#: src/evdev-plug/ed.c:72 -msgid "Volume->Up_10" -msgstr "Hlasitost → Zvýšit o 10" - -#: src/evdev-plug/ed.c:73 -msgid "Volume->Down_10" -msgstr "Hlasitost → Snížit o 10" - -#: src/evdev-plug/ed.c:74 -msgid "Volume->Mute" -msgstr "Hlasitost → Ztlumit" - -#: src/evdev-plug/ed.c:76 -msgid "Window->Main" -msgstr "Okno → Hlavní" - -#: src/evdev-plug/ed.c:77 -msgid "Window->Playlist" -msgstr "Okno → Seznam skladeb" - -#: src/evdev-plug/ed.c:78 -msgid "Window->Equalizer" -msgstr "Okno → Ekvalizér" - -#: src/evdev-plug/ed.c:79 -msgid "Window->JumpToFile" -msgstr "Okno → PÅ™ejít na soubor" - -#: src/evdev-plug/ed_internals.c:94 +#: src/ffaudio/ffaudio-core.c:794 #, c-format msgid "" -"event-device-plugin: unable to open device file %s , skipping this device; " -"check that the file exists and that you have read permission for it\n" +"Multi-format audio decoding plugin for Audacious based on\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious plugin by:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" msgstr "" -"event-device-plugin: nelze otevřít zařízení %s, pÅ™eskakuji toto zařízení; " -"zkontrolujte, že soubor existuje a že máte právo jej Äíst\n" +"Víceformátový zvuk dekódující modul pro Audacious založený na\n" +"multimediálním systému FFmpeg (http://www.ffmpeg.org/)\n" +"Copyright © 2000–2009 Fabrice Bellard aj.\n" +"\n" +"Modul do Audacious napsali:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" -#: src/evdev-plug/ed_internals.c:103 -#, c-format -msgid "" -"event-device-plugin: unable to create a io_channel for device file %s ," -"skipping this device\n" -msgstr "" -"event-device-plugin: nelze vytvoÅ™it io_channel (vstupnÄ›-výstupní kanál) pro " -"zařízení %s, pÅ™eskakuji toto zařízení\n" +#: src/ffaudio/ffaudio-core.c:808 +msgid "About FFaudio Plugin" +msgstr "O modulu FFaudio" -#: src/evdev-plug/ed_internals.c:342 -msgid "" -"event-device-plugin: unable to open /proc/bus/input/devices , automatic " -"detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: nelze otevřít /proc/bus/input/devices, samoÄinné " -"vyhledávání událostních zařízení nebude fungovat.\n" +#: src/filewriter/filewriter.c:166 +msgid "About FileWriter-Plugin" +msgstr "O modulu FileWriter" -#: src/evdev-plug/ed_internals.c:351 -msgid "" -"event-device-plugin: unable to open a io_channel for /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: nelze otevřít io_channel (vstupnÄ›-výstupní kanál) pro /" -"proc/bus/input/devices, samoÄinné vyhledávání událostních zařízení nebude " -"fungovat.\n" +#: src/filewriter/filewriter.c:455 +msgid "File Writer Configuration" +msgstr "Nastavení zápisu do souboru" -#: src/evdev-plug/ed_internals.c:361 -msgid "" -"event-device-plugin: an error occurred while reading /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: doÅ¡lo k chybÄ› pÅ™i Ätení z /proc/bus/input/devices, " -"samoÄinné vyhledávání událostních zařízení nebude fungovat.\n" +#: src/filewriter/filewriter.c:467 +msgid "Output file format:" +msgstr "Formát výstupního souboru:" -#: src/evdev-plug/ed_internals.c:424 -#, c-format -msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" -msgstr "" -"event-device-plugin: zařízení %s nebylo nalezeno v /dev/input, pÅ™eskakuji.\n" +#: src/filewriter/filewriter.c:485 +msgid "Configure" +msgstr "Nastavit" -#: src/evdev-plug/ed_internals.c:489 src/evdev-plug/ed_internals.c:583 -#, c-format -msgid "" -"event-device-plugin: unable to load config file %s , default settings will " -"be used.\n" -msgstr "" -"event-device-plugin: nelze naÄíst konfiguraÄní soubor %s, bude použito " -"implicitní nastavení.\n" +#: src/filewriter/filewriter.c:500 +msgid "Save into original directory" +msgstr "Ukládat do původního adresáře" -#: src/evdev-plug/ed_internals.c:535 -#, c-format -msgid "" -"event-device-plugin: incomplete information in config file for device \"%s" -"\" , skipping.\n" -msgstr "" -"event-device-plugin: neúplné informace v konfiguraÄním souboru pro zařízení " -"„%s“, pÅ™eskakuji.\n" +#: src/filewriter/filewriter.c:505 +msgid "Save into custom directory" +msgstr "Ukládat do vlastního adresáře" -#: src/evdev-plug/ed_internals.c:604 src/evdev-plug/ed_internals.c:936 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_active value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: konfigurace: nelze získat hodnotu is_active pro " -"zařízení „%s“, pÅ™eskakuji.\n" +#: src/filewriter/filewriter.c:515 +msgid "Output file folder:" +msgstr "Složka s výstupními soubory:" -#: src/evdev-plug/ed_internals.c:840 -#, c-format -msgid "" -"event-device-plugin: unable to access local directory %s , settings will not " -"be saved.\n" -msgstr "" -"event-device-plugin: nelze pÅ™istoupit k místnímu adresáři %s, nastavení " -"nebude uloženo.\n" +#: src/filewriter/filewriter.c:519 +msgid "Pick a folder" +msgstr "Vybrat složku" -#: src/evdev-plug/ed_internals.c:890 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get filename value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: konfigurace: nelze získat hodnotu filename pro zařízení " -"„%s“, pÅ™eskakuji.\n" +#: src/filewriter/filewriter.c:538 +msgid "Get filename from:" +msgstr "Získat jméno souboru z:" -#: src/evdev-plug/ed_internals.c:906 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get phys value for device \"%s" -"\", skipping it.\n" -msgstr "" -"event-device-plugin: konfigurace: nelze získat hodnotu phys pro zařízení " -"„%s“, pÅ™eskakuji.\n" +#: src/filewriter/filewriter.c:541 +msgid "original file tags" +msgstr "původních znaÄek v souboru" -#: src/evdev-plug/ed_internals.c:922 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_custom value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: konfigurace: nelze získat hodnotu is_custom pro " -"zařízení „%s“, pÅ™eskakuji.\n" +#: src/filewriter/filewriter.c:547 +msgid "original filename" +msgstr "jména původního souboru" -#: src/evdev-plug/ed_internals.c:946 -#, c-format -msgid "" -"event-device-plugin: configuration, unexpected value for device \"%s\", " -"skipping it.\n" -msgstr "" -"event-device-plugin: konfigurace: neoÄekávaná hodnot pro zařízení „%s“, " -"pÅ™eskakuji.\n" +#: src/filewriter/filewriter.c:557 +msgid "Don't strip file name extension" +msgstr "Nezkracovat příponu jména souboru" -#: src/evdev-plug/ed_ui.c:212 -msgid "Detected" -msgstr "Nalezeno" +#: src/filewriter/filewriter.c:572 +msgid "Prepend track number to filename" +msgstr "PÅ™edÅ™adit jménu souboru Äíslo stopy" -#: src/evdev-plug/ed_ui.c:217 -msgid "Custom" -msgstr "Vlastní" +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:771 +msgid "Auto" +msgstr "Auto" -#: src/evdev-plug/ed_ui.c:223 -msgid "Not Detected" -msgstr "Nenalezeno" +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" +msgstr "Joint-stereo" -#: src/evdev-plug/ed_ui.c:275 src/evdev-plug/ed_ui.c:411 -#: src/evdev-plug/ed_ui.c:874 -msgid "Information" -msgstr "Podrobnosti" +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 +msgid "Stereo" +msgstr "Stereo" -#: src/evdev-plug/ed_ui.c:276 -msgid "" -"Cannot open bindings window for a not-detected device.\n" -"Ensure that the device has been correctly plugged in." -msgstr "" -"Nelze otevřít okno s vazbami pro nerozpoznané zařízení.\n" -"UjistÄ›te se, že zařízení bylo správnÄ› zapojeno." +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 +msgid "Mono" +msgstr "Mono" -#: src/evdev-plug/ed_ui.c:319 -msgid "Error" -msgstr "Chyba" +#: src/filewriter/mp3.c:712 +msgid "MP3 Configuration" +msgstr "Nastavení MP3" -#: src/evdev-plug/ed_ui.c:320 -msgid "" -"Unable to open selected device.\n" -"Please check read permissions on device file." -msgstr "" -"Nelze otevřít vybrané zařízení.\n" -"Prosím, zkontrolujte práva k tomuto zařízení." +#: src/filewriter/mp3.c:735 +msgid "Algorithm Quality:" +msgstr "Kvalita algoritmu:" -#: src/evdev-plug/ed_ui.c:341 -msgid "EvDev-Plug - Add custom device" -msgstr "EvDev-Plug  – PÅ™idat vlastní zařízení" +#: src/filewriter/mp3.c:760 +msgid "Output Samplerate:" +msgstr "Výstupní vzorkovací kmitoÄet" -#: src/evdev-plug/ed_ui.c:353 -msgid "" -"EvDev-Plug tries to automatically detect and update information about\n" -"event devices available on the system.\n" -"However, if auto-detect doesn't work for your system, or you have event\n" -"devices in a non-standard location (currently they're only searched in\n" -"/dev/input/ ), you may want to add a custom device, explicitly specifying\n" -"name and device file." -msgstr "" -"EvDev-Plug zkusí sám rozpoznat událostní zařízení pÅ™ipojená do systému\n" -"a aktualizovat údaje o nich.\n" -"Pokud vÅ¡ak samoÄinné vyhledání selže nebo máte událostní zařízení\n" -"v nestandardním adresáři (v souÄasnosti je prohledáván jen /dev/input),\n" -"můžete pÅ™idat zařízení ruÄnÄ› jako vlastní, pÅ™iÄemž budete muset zadat\n" -"jeho název a soubor tohoto zařízení." +#: src/filewriter/mp3.c:788 +msgid "(Hz)" +msgstr "(Hz)" -#: src/evdev-plug/ed_ui.c:361 -msgid "Device name:" -msgstr "Název zařízení:" +#: src/filewriter/mp3.c:795 +msgid "Bitrate / Compression ratio:" +msgstr "Datový tok / Kompresní pomÄ›r:" -#: src/evdev-plug/ed_ui.c:365 -msgid "Device file:" -msgstr "Soubor zařízení:" +#: src/filewriter/mp3.c:819 +msgid "Bitrate (kbps):" +msgstr "Datový tok (kb/s):" -#: src/evdev-plug/ed_ui.c:404 -msgid "(custom)" -msgstr "(vlastní)" +#: src/filewriter/mp3.c:852 +msgid "Compression ratio:" +msgstr "Kompresní pomÄ›r:" -#: src/evdev-plug/ed_ui.c:412 -msgid "" -"Please specify both name and filename.\n" -"Filename must be specified with absolute path." -msgstr "" -"Prosím, zadejte jak název, tak název souboru.\n" -"Název souboru musí být uveden s absolutní cestou." +#: src/filewriter/mp3.c:876 +msgid "Audio Mode:" +msgstr "Zvukový režim:" -#: src/evdev-plug/ed_ui.c:447 -msgid "Do you want to remove the existing configuration for selected device?\n" -msgstr "PÅ™ejete si odstranit existující nastavení pro vybrané zařízení?\n" +#: src/filewriter/mp3.c:901 +msgid "Misc:" +msgstr "Různé:" -#: src/evdev-plug/ed_ui.c:466 -msgid "Do you want to remove the selected custom device?\n" -msgstr "PÅ™ejete si odstranit vybrané vlastní zařízení?\n" - -#: src/evdev-plug/ed_ui.c:612 -msgid "EvDev-Plug - Configuration" -msgstr "EvDev-Plug – Nastavení" - -#: src/evdev-plug/ed_ui.c:651 -msgid "Active" -msgstr "Aktivní" - -#: src/evdev-plug/ed_ui.c:655 src/sun/configure.c:486 -msgid "Status" -msgstr "Stav" - -#: src/evdev-plug/ed_ui.c:664 -msgid "Device Name" -msgstr "Název zařízení" - -#: src/evdev-plug/ed_ui.c:668 -msgid "Device File" -msgstr "Soubor zařízení" - -#: src/evdev-plug/ed_ui.c:672 -msgid "Device Address" -msgstr "Adresa zařízení" - -#: src/evdev-plug/ed_ui.c:689 -msgid "_Bindings" -msgstr "_Vazby" - -#: src/evdev-plug/ed_ui.c:838 -msgid "" -"Press a key of your device to bind it;\n" -"if no key is pressed in five seconds, this window\n" -"will close without binding changes." -msgstr "" -"Pro navázání, prosím, stisknÄ›te klávesu na vaÅ¡em zařízení;\n" -"pokud nebude stiÅ¡tÄ›na žádná klávesa do pÄ›ti sekund,\n" -"toto okno bude zavÅ™eno, aniž by se vazba zmÄ›nila." - -#: src/evdev-plug/ed_ui.c:875 -msgid "" -"This input event has been already assigned.\n" -"\n" -"It's not possible to assign multiple actions to the same input event " -"(although it's possible to assign the same action to multiple events)." -msgstr "" -"Vstupní událost již byla pÅ™iÅ™azena.\n" -"\n" -"Není možné pÅ™iÅ™adit více akcí stejné vstupní události (aÄkoliv je možné " -"pÅ™iÅ™adit stejnou akci více událostem)." - -#: src/evdev-plug/ed_ui.c:1323 -msgid "EvDev-Plug - Bindings Configuration" -msgstr "EvDev-Plug – Nastavení vazeb" - -#: src/evdev-plug/ed_ui.c:1363 -msgid "Name: " -msgstr "Název: " - -#: src/evdev-plug/ed_ui.c:1372 -msgid "Filename: " -msgstr "Název souboru: " - -#: src/evdev-plug/ed_ui.c:1381 -msgid "Phys.Address: " -msgstr "Fyzická adresa: " - -#: src/evdev-plug/ed_ui.c:1460 -msgid "EvDev-Plug - about" -msgstr "EvDev-Plug – o modulu" - -#: src/evdev-plug/ed_ui.c:1491 -msgid "" -"\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"written by Giacomo Lozito\n" -msgstr "" -"\n" -"dálkové ovládání pÅ™ehrávaÄe pomocí událostních zařízení\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"napsal Giacomo Lozito\n" - -#: src/ffaudio/ffaudio-core.c:662 -#, fuzzy, c-format -msgid "" -"Multi-format audio decoding plugin for Audacious based on\n" -"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" -"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" -"\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" -"Audacious plugin by:\n" -" William Pitcock ,\n" -" Matti Hämäläinen \n" -msgstr "" -"Víceformátový zvuk dekódující modul pro Audacious založený na\n" -"multimediálním systému FFmpeg (http://www.ffmpeg.org/)\n" -"Copyright © 2000–2009 Fabrice Bellard aj.\n" -"\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" -"Podporované formáty: %s\n" -"\n" -"Modul do Audacious napsali:\n" -" William Pitcock ,\n" -" Matti Hämäläinen \n" - -#: src/ffaudio/ffaudio-core.c:675 -msgid "About FFaudio Plugin" -msgstr "O modulu FFaudio" - -#: src/filewriter/filewriter.c:180 -msgid "About FileWriter-Plugin" -msgstr "O modulu FileWriter" - -#: src/filewriter/filewriter.c:181 -msgid "" -"FileWriter-Plugin\n" -"\n" -"This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" -"Modul FileWriter\n" -"\n" -"Tento program je svobodný software; můžete jej šířit a/nebo mÄ›nit,\n" -"pokud dodržíte podmínky GNU General Public License (GPL) vydané\n" -"Free Software Foundation a to buÄ ve verzi 2 nebo (dle vaší volby)\n" -"libovolné novÄ›jší.\n" -"\n" -"Program je šířen v nadÄ›ji, že bude užiteÄný, ale BEZ JAKÉKOLIV\n" -"ZÃRUKY a to ani odvozené záruky OBCHODOVATELNOSTI nebo VHODNOSTI PRO\n" -"JAKÃKOLIV ÚČEL. Více informací naleznete v GNU GPL.\n" -"\n" -"S tímto programem byste mÄ›li obdržet kopii GNU GPL. Pokud se\n" -"tak nestalo, obraÅ¥te se na Free Software Foundation, Inc.,\n" -"51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." - -#: src/filewriter/filewriter.c:466 -msgid "File Writer Configuration" -msgstr "Nastavení zápisu do souboru" - -#: src/filewriter/filewriter.c:478 -msgid "Output file format:" -msgstr "Formát výstupního souboru:" - -#: src/filewriter/filewriter.c:496 src/ladspa/ladspa.c:1058 -msgid "Configure" -msgstr "Nastavit" - -#: src/filewriter/filewriter.c:511 -msgid "Save into original directory" -msgstr "Ukládat do původního adresáře" - -#: src/filewriter/filewriter.c:516 -msgid "Save into custom directory" -msgstr "Ukládat do vlastního adresáře" - -#: src/filewriter/filewriter.c:528 -msgid "Output file folder:" -msgstr "Složka s výstupními soubory:" - -#: src/filewriter/filewriter.c:532 -msgid "Pick a folder" -msgstr "Vybrat složku" - -#: src/filewriter/filewriter.c:551 -msgid "Get filename from:" -msgstr "Získat jméno souboru z:" - -#: src/filewriter/filewriter.c:554 -msgid "original file tags" -msgstr "původních znaÄek v souboru" - -#: src/filewriter/filewriter.c:560 -msgid "original filename" -msgstr "jména původního souboru" - -#: src/filewriter/filewriter.c:570 -msgid "Don't strip file name extension" -msgstr "Nezkracovat příponu jména souboru" - -#: src/filewriter/filewriter.c:574 -msgid "" -"If enabled, the extension from the original filename will not be stripped " -"before adding the new file extension to the end." -msgstr "" -"Je-li zapnuto, přípona ze jména původního souboru nebude pÅ™ed pÅ™idáním nové " -"přípony odstranÄ›na." - -#: src/filewriter/filewriter.c:588 -msgid "Prepend track number to filename" -msgstr "PÅ™edÅ™adit jménu souboru Äíslo stopy" - -#: src/filewriter/mp3.c:710 -msgid "MP3 Configuration" -msgstr "Nastavení MP3" - -#: src/filewriter/mp3.c:737 -msgid "Algorithm Quality:" -msgstr "Kvalita algoritmu:" - -#: src/filewriter/mp3.c:759 -msgid "" -"best/slowest:0;\n" -"worst/fastest:9;\n" -"recommended:2;\n" -"default:5;" -msgstr "" -"nejlepší/nejpomalejší:0;\n" -"nejhorší/nejrychlejší:9;\n" -"doporuÄená:2;\n" -"výchozí:5;" - -#: src/filewriter/mp3.c:767 -msgid "Output Samplerate:" -msgstr "Výstupní vzorkovací kmitoÄet" - -#: src/filewriter/mp3.c:778 src/filewriter/mp3.c:919 -msgid "Auto" -msgstr "Auto" - -#: src/filewriter/mp3.c:800 -msgid "(Hz)" -msgstr "(Hz)" - -#: src/filewriter/mp3.c:812 -msgid "Bitrate / Compression ratio:" -msgstr "Datový tok / Kompresní pomÄ›r:" - -#: src/filewriter/mp3.c:838 -msgid "Bitrate (kbps):" -msgstr "Datový tok (kb/s):" - -#: src/filewriter/mp3.c:879 -msgid "Compression ratio:" -msgstr "Kompresní pomÄ›r:" - -#: src/filewriter/mp3.c:909 -msgid "Audio Mode:" -msgstr "Zvukový režim:" - -#: src/filewriter/mp3.c:924 -msgid "Joint-Stereo" -msgstr "Joint-Stereo" - -#: src/filewriter/mp3.c:967 -msgid "Misc:" -msgstr "Různé:" - -#: src/filewriter/mp3.c:978 +#: src/filewriter/mp3.c:912 msgid "Enforce strict ISO complience" msgstr "Vynutit přísnou shodu s ISO" -#: src/filewriter/mp3.c:989 +#: src/filewriter/mp3.c:923 msgid "Error protection" msgstr "Ochrana pÅ™ed chybami" -#: src/filewriter/mp3.c:1001 -msgid "Adds 16 bit checksum to every frame" -msgstr "Ke každému rámci pÅ™idat 16b kontrolní souÄet" - -#: src/filewriter/mp3.c:1006 src/filewriter/vorbis.c:247 -#: src/modplug/gui/interface.cxx:320 +#: src/filewriter/mp3.c:935 src/filewriter/vorbis.c:243 msgid "Quality" msgstr "Kvalita" -#: src/filewriter/mp3.c:1018 +#: src/filewriter/mp3.c:945 msgid "Enable VBR/ABR" msgstr "Povolit VBR/ABR" -#: src/filewriter/mp3.c:1030 +#: src/filewriter/mp3.c:955 msgid "Type:" msgstr "Druh:" -#: src/filewriter/mp3.c:1041 -msgid "Variable bitrate" -msgstr "PromÄ›nný datový tok" - -#: src/filewriter/mp3.c:1053 -msgid "Average bitrate" -msgstr "PrůmÄ›rný datový tok" - -#: src/filewriter/mp3.c:1067 +#: src/filewriter/mp3.c:988 msgid "VBR Options:" msgstr "Nastavení VBR:" -#: src/filewriter/mp3.c:1083 +#: src/filewriter/mp3.c:1004 msgid "Minimum bitrate (kbps):" msgstr "Nejmenší datový tok (kb/s):" -#: src/filewriter/mp3.c:1119 +#: src/filewriter/mp3.c:1031 msgid "Maximum bitrate (kbps):" msgstr "NejvÄ›tší datový tok (kb/s):" -#: src/filewriter/mp3.c:1151 +#: src/filewriter/mp3.c:1054 msgid "Strictly enforce minimum bitrate" msgstr "PřísnÄ› vynucovat nejmenší datový tok" -#: src/filewriter/mp3.c:1153 -msgid "" -"For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/" -"mp3 player)" -msgstr "" -"Pro použití v pÅ™ehrávaÄích, které nepodporují úzkopásmové MP3 (pÅ™ehrávaÄ " -"Apex AD600-A DVD/MP3)" - -#: src/filewriter/mp3.c:1166 +#: src/filewriter/mp3.c:1066 msgid "ABR Options:" msgstr "Nastavení ABR:" -#: src/filewriter/mp3.c:1176 +#: src/filewriter/mp3.c:1076 msgid "Average bitrate (kbps):" msgstr "PrůmÄ›rný datový tok (kb/s):" -#: src/filewriter/mp3.c:1213 +#: src/filewriter/mp3.c:1104 msgid "VBR quality level:" msgstr "Úroveň kvality VBR:" -#: src/filewriter/mp3.c:1228 -msgid "" -"highest:0;\n" -"lowest:9;\n" -"default:4;" -msgstr "" -"nejvyšší:0;\n" -"nejnižší:9;\n" -"výchozí:4;" - -#: src/filewriter/mp3.c:1236 +#: src/filewriter/mp3.c:1123 msgid "Don't write Xing VBR header" msgstr "Nezapisovat VBR hlaviÄku Xing" -#: src/filewriter/mp3.c:1250 +#: src/filewriter/mp3.c:1137 msgid "VBR/ABR" msgstr "VBR/ABR" -#: src/filewriter/mp3.c:1262 +#: src/filewriter/mp3.c:1147 msgid "Frame params:" msgstr "Parametry rámců:" -#: src/filewriter/mp3.c:1274 +#: src/filewriter/mp3.c:1159 msgid "Mark as copyright" msgstr "OznaÄit jako podléhající autorskému právu" -#: src/filewriter/mp3.c:1285 +#: src/filewriter/mp3.c:1170 msgid "Mark as original" msgstr "OznaÄit jako původní" -#: src/filewriter/mp3.c:1297 +#: src/filewriter/mp3.c:1182 msgid "ID3 params:" msgstr "Parametry ID3:" -#: src/filewriter/mp3.c:1308 +#: src/filewriter/mp3.c:1193 msgid "Force addition of version 2 tag" msgstr "Vynutit pÅ™idání popisků verze 2" -#: src/filewriter/mp3.c:1318 +#: src/filewriter/mp3.c:1203 msgid "Only add v1 tag" msgstr "PÅ™idávat jen popisky verze 1" -#: src/filewriter/mp3.c:1325 +#: src/filewriter/mp3.c:1210 msgid "Only add v2 tag" msgstr "PÅ™idávat jen popisky verze 2" -#: src/filewriter/mp3.c:1346 +#: src/filewriter/mp3.c:1231 msgid "Tags" msgstr "Popisky" -#: src/filewriter/vorbis.c:240 +#: src/filewriter/vorbis.c:236 msgid "Vorbis Encoder Configuration" msgstr "Nastavení vorbis kodéru" -#: src/filewriter/vorbis.c:260 +#: src/filewriter/vorbis.c:256 msgid "Quality level (0 - 10):" msgstr "Úroveň kvality (0–10):" -#: src/flacng/plugin.c:457 -msgid "FLAC Audio Plugin " -msgstr "Zvukový modul FLAC" +#: src/flacng/plugin.c:378 +msgid "About FLAC Audio Plugin" +msgstr "O zvukovém modulu FLAC" -#: src/flacng/plugin.c:458 +#: src/flacng/plugin.c:379 msgid "" "\n" "\n" @@ -2640,15 +1591,11 @@ "\n" "http://www.skytale.net/projects/bmp-flac2/" -#: src/flacng/plugin.c:464 -msgid "About FLAC Audio Plugin" -msgstr "O zvukovém modulu FLAC" - -#: src/gnomeshortcuts/gnomeshortcuts.c:306 +#: src/gnomeshortcuts/gnomeshortcuts.c:303 msgid "About Gnome Shortcut Plugin" msgstr "O modulu pro zkratky Gnome" -#: src/gnomeshortcuts/gnomeshortcuts.c:307 +#: src/gnomeshortcuts/gnomeshortcuts.c:304 msgid "" "Gnome Shortcut Plugin\n" "Let's you control the player with Gnome's shortcuts.\n" @@ -2662,506 +1609,468 @@ "Copyright © 2007–2008 Sascha Hlusiak \n" "\n" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:273 +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 msgid "Open Files" msgstr "Otevřít soubory" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:271 msgid "Add Files" msgstr "PÅ™idat soubory" -#: src/gntui/gntui.c:271 +#: src/gntui/gntui.c:270 msgid "Audacious2" msgstr "Audacious2" -#: src/gntui/gntui.c:312 +#: src/gntui/gntui.c:311 msgid "gnt interface" msgstr "Rozhraní gnt" -#: src/gtkui/actions.c:257 src/skins/ui_main.c:818 -msgid "Can't jump to time when no track is being played.\n" -msgstr "Když nehraje žádná skladba, nelze pÅ™ejít na Äas.\n" - -#: src/gtkui/actions.c:272 src/gtkui/ui_manager.c:204 -#: src/gtkui/ui_manager.c:205 src/skins/ui_main.c:833 -#: src/skins/ui_manager.c:410 src/skins/ui_manager.c:411 -msgid "Jump to Time" -msgstr "PÅ™ejít na Äas" +#: src/gtkui/columns.c:36 +msgid "Entry number" +msgstr "Číslo položky" -#: src/gtkui/actions.c:289 src/skins/ui_main.c:854 -msgid "minutes:seconds" -msgstr "minuty:sekundy" - -#: src/gtkui/actions.c:299 src/skins/ui_main.c:864 -msgid "Track length:" -msgstr "Délka stopy:" +#: src/gtkui/columns.c:36 +msgid "Title" +msgstr "Název" -#: src/gtkui/actions.c:610 src/skins/ui_playlist.c:648 -#, c-format -msgid "Error writing playlist \"%s\": %s" -msgstr "Chyba pÅ™i zapisování seznamu skladeb „%s“: %s" +#: src/gtkui/columns.c:37 +msgid "Artist" +msgstr "UmÄ›lec" + +#: src/gtkui/columns.c:37 +msgid "Year" +msgstr "Rok" + +#: src/gtkui/columns.c:37 +msgid "Album" +msgstr "Album" + +#: src/gtkui/columns.c:37 +msgid "Track" +msgstr "Stopa" + +#: src/gtkui/columns.c:37 +msgid "Queue position" +msgstr "UmístÄ›ní ve frontÄ›" + +#: src/gtkui/columns.c:38 +msgid "Length" +msgstr "Délka" -#: src/gtkui/actions.c:625 src/skins/ui_playlist.c:670 -#, c-format -msgid "%s already exist. Continue?" -msgstr "%s už existuje. PokraÄovat?" +#: src/gtkui/columns.c:38 +msgid "File path" +msgstr "Cesta k souboru" -#: src/gtkui/actions.c:651 src/skins/ui_manager.c:214 -msgid "Export Playlist" -msgstr "Exportovat seznam skladeb" +#: src/gtkui/columns.c:38 +msgid "File name" +msgstr "Název souboru" + +#: src/gtkui/columns.c:38 +msgid "Custom title" +msgstr "Vlastní název" + +#: src/gtkui/columns.c:39 +msgid "Bitrate" +msgstr "Datový tok" + +#: src/gtkui/columns.c:278 +msgid "Choose Columns" +msgstr "Vybrat sloupce" + +#: src/gtkui/columns.c:292 +msgid "Available:" +msgstr "Dostupné:" + +#: src/gtkui/columns.c:326 +msgid "Chosen:" +msgstr "Vybráno:" + +#: src/gtkui/layout.c:122 +msgid "Dock at Left" +msgstr "Umístit vlevo" + +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "Umístit vpravo" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "Umístit nahoru" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "Umístit dolů" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "NeumisÅ¥ovat" + +#: src/gtkui/layout.c:123 src/ladspa/plugin.c:643 +msgid "Disable" +msgstr "Zakázat" + +#: src/gtkui/menus.c:130 +msgid "_Open Files ..." +msgstr "_Otevřít soubory…" + +#: src/gtkui/menus.c:131 +msgid "Open _URL ..." +msgstr "Otevřít _URL…" + +#: src/gtkui/menus.c:132 +msgid "_Add File ..." +msgstr "PÅ™id_at soubor…" + +#: src/gtkui/menus.c:133 +msgid "Add U_RL ..." +msgstr "PÅ™idat U_RL…" + +#: src/gtkui/menus.c:135 +msgid "A_bout ..." +msgstr "_O programu… " + +#: src/gtkui/menus.c:136 +msgid "_Preferences ..." +msgstr "Nasta_vení…" -#: src/gtkui/actions.c:723 src/skins/ui_manager.c:211 -msgid "Import Playlist" -msgstr "Importovat seznam skladeb" +#: src/gtkui/menus.c:137 src/skins/ui_manager.c:406 +msgid "_Quit" +msgstr "_Konec" + +#: src/gtkui/menus.c:140 +msgid "_Play" +msgstr "_Hrát" + +#: src/gtkui/menus.c:141 +msgid "Paus_e" +msgstr "P_ozastavit" + +#: src/gtkui/menus.c:142 +msgid "_Stop" +msgstr "Za_stavit" + +#: src/gtkui/menus.c:143 +msgid "Pre_vious" +msgstr "PÅ™ed_chozí" + +#: src/gtkui/menus.c:144 +msgid "_Next" +msgstr "_Další" + +#: src/gtkui/menus.c:146 +msgid "_Repeat" +msgstr "_Opakovat" + +#: src/gtkui/menus.c:147 +msgid "S_huffle" +msgstr "Ná_hodné pÅ™ehrávání" + +#: src/gtkui/menus.c:148 +msgid "N_o Playlist Advance" +msgstr "Žádné p_okraÄování dle seznamu skladeb" + +#: src/gtkui/menus.c:149 +msgid "Stop _After This Song" +msgstr "Z_astavuje po skladbÄ›." + +#: src/gtkui/menus.c:151 src/gtkui/menus.c:209 +msgid "Song _Info ..." +msgstr "_Informace o skladbě…" + +#: src/gtkui/menus.c:152 +msgid "Jump to _Time ..." +msgstr "PÅ™ejí_t na Äas…" + +#: src/gtkui/menus.c:153 +msgid "_Jump to Song ..." +msgstr "PÅ™e_jít na skladbu…" + +#: src/gtkui/menus.c:156 +msgid "By Track _Number" +msgstr "Podle Äísla _stopy" + +#: src/gtkui/menus.c:157 +msgid "By _Title" +msgstr "Podle ná_zvu" + +#: src/gtkui/menus.c:158 +msgid "By _Artist" +msgstr "Podle _umÄ›lce" + +#: src/gtkui/menus.c:159 +msgid "By A_lbum" +msgstr "Podle a_lba" + +#: src/gtkui/menus.c:160 +msgid "By Release _Date" +msgstr "Podle data vy_dání" + +#: src/gtkui/menus.c:161 +msgid "By _File Path" +msgstr "Podle _cesty k souboru" + +#: src/gtkui/menus.c:162 +msgid "By _Custom Title" +msgstr "_Vlastní název" + +#: src/gtkui/menus.c:164 +msgid "R_everse Order" +msgstr "_Obrátit poÅ™adí" + +#: src/gtkui/menus.c:165 +msgid "_Random Order" +msgstr "Ná_hodné poÅ™adí" + +#: src/gtkui/menus.c:168 src/gtkui/menus.c:211 +msgid "_Refresh" +msgstr "_Obnovit" + +#: src/gtkui/menus.c:170 +msgid "_Sort" +msgstr "_SeÅ™adit" + +#: src/gtkui/menus.c:172 +msgid "_New" +msgstr "_Nový" + +#: src/gtkui/menus.c:173 src/gtkui/menus.c:222 +msgid "_Close" +msgstr "_Zavřít" + +#: src/gtkui/menus.c:175 +msgid "_Import ..." +msgstr "_Importovat…" + +#: src/gtkui/menus.c:176 +msgid "_Export ..." +msgstr "_Exportovat…" + +#: src/gtkui/menus.c:178 +msgid "_Playlist Manager ..." +msgstr "S_právce seznamů skladeb…" + +#: src/gtkui/menus.c:179 +msgid "_Queue Manager ..." +msgstr "Správce _fronty…" + +#: src/gtkui/menus.c:182 +msgid "Volume _Up" +msgstr "Ze_sílit" + +#: src/gtkui/menus.c:183 +msgid "Volume _Down" +msgstr "Z_tiÅ¡it" + +#: src/gtkui/menus.c:185 +msgid "_Equalizer" +msgstr "_Ekvalizér" + +#: src/gtkui/menus.c:187 +msgid "E_ffects" +msgstr "E_fekty" + +#: src/gtkui/menus.c:190 +msgid "_Interface" +msgstr "_Rozhraní" + +#: src/gtkui/menus.c:192 +msgid "Show _Menu Bar" +msgstr "Zobrazit h_lavní nabídku" + +#: src/gtkui/menus.c:193 +msgid "Show I_nfo Bar" +msgstr "Zobrazit oblast i_nformací" + +#: src/gtkui/menus.c:194 +msgid "Show _Status Bar" +msgstr "Zobrazit _stavový panel" + +#: src/gtkui/menus.c:196 +msgid "Show Column _Headers" +msgstr "Zobrazit zá_hlaví sloupců" + +#: src/gtkui/menus.c:197 +msgid "Choose _Columns ..." +msgstr "Vybrat sloup_ce…" + +#: src/gtkui/menus.c:198 +msgid "Scrol_l on Song Change" +msgstr "Odro_lovat na zmÄ›nÄ›nou skladbu" + +#: src/gtkui/menus.c:201 +msgid "_File" +msgstr "_Soubor" + +#: src/gtkui/menus.c:202 +msgid "_Playback" +msgstr "_PÅ™ehrát" + +#: src/gtkui/menus.c:203 +msgid "P_laylist" +msgstr "Seznam sk_ladeb" + +#: src/gtkui/menus.c:204 src/gtkui/menus.c:218 +msgid "_Services" +msgstr "_Služby" + +#: src/gtkui/menus.c:205 +msgid "_Output" +msgstr "_Výstup" + +#: src/gtkui/menus.c:206 +msgid "_View" +msgstr "_Zobrazení" + +#: src/gtkui/menus.c:210 +msgid "_Queue/Unqueue" +msgstr "Ode_brat/pÅ™idat z/do fronty" + +#: src/gtkui/menus.c:213 +msgid "Cu_t" +msgstr "V_yjmout" + +#: src/gtkui/menus.c:214 +msgid "_Copy" +msgstr "_Kopírovat" + +#: src/gtkui/menus.c:215 +msgid "_Paste" +msgstr "V_ložit" + +#: src/gtkui/menus.c:216 +msgid "Select _All" +msgstr "Vybr_at vÅ¡e" + +#: src/gtkui/menus.c:221 +msgid "_Rename" +msgstr "_PÅ™ejmenovat" -#: src/gtkui/ui_gtk.c:72 -#, fuzzy +#: src/gtkui/ui_gtk.c:95 msgid "GTK Interface" -msgstr "Rozhraní gnt" +msgstr "Rozhraní GTK" -#: src/gtkui/ui_gtk.c:281 src/skins/ui_main.c:388 +#: src/gtkui/ui_gtk.c:156 src/skins/ui_main.c:302 #, c-format msgid "%s - Audacious" msgstr "%s – Audacious" -#: src/gtkui/ui_gtk.c:287 src/skins/ui_main.c:390 src/skins/ui_main.c:2166 +#: src/gtkui/ui_gtk.c:162 +msgid "Buffering ..." +msgstr "PlnÄ›ní vyrovnávácí pamÄ›ti…" + +#: src/gtkui/ui_gtk.c:165 src/skins/ui_main.c:304 src/skins/ui_main.c:1499 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_manager.c:35 src/gtkui/ui_manager.c:36 -#: src/skins/ui_manager.c:53 src/skins/ui_manager.c:54 -msgid "Stop after Current Song" -msgstr "Zastavit po souÄasné skladbÄ›" - -#: src/gtkui/ui_manager.c:38 src/gtkui/ui_manager.c:39 -#: src/skins/ui_manager.c:59 src/skins/ui_manager.c:60 -msgid "Repeat" -msgstr "Opakovat" - -#: src/gtkui/ui_manager.c:41 src/gtkui/ui_manager.c:42 -#: src/skins/ui_manager.c:62 src/skins/ui_manager.c:63 -msgid "Shuffle" -msgstr "Náhodné pÅ™ehrávání" - -#: src/gtkui/ui_manager.c:44 src/gtkui/ui_manager.c:45 -#: src/skins/ui_manager.c:65 src/skins/ui_manager.c:66 -msgid "No Playlist Advance" -msgstr "Žádné pokraÄování dle seznamu skladeb" - -#: src/gtkui/ui_manager.c:47 -msgid "Show playlists" -msgstr "Zobrazit seznamy skladeb" - -#: src/gtkui/ui_manager.c:48 -msgid "Show/hide playlists" -msgstr "Zobrazit/skrýt seznamy skladeb" +#: src/gtkui/ui_gtk.c:211 src/skins/plugin.c:183 +msgid "Error" +msgstr "Chyba" -#: src/gtkui/ui_manager.c:50 -msgid "Show infoarea" -msgstr "" +#: src/gtkui/ui_statusbar.c:103 src/skins/ui_main.c:459 +msgid "mono" +msgstr "mono" -#: src/gtkui/ui_manager.c:51 -msgid "Show/hide infoarea" -msgstr "" +#: src/gtkui/ui_statusbar.c:105 src/skins/ui_main.c:458 +msgid "stereo" +msgstr "stereo" -#: src/gtkui/ui_manager.c:53 -#, fuzzy -msgid "Show main menu" -msgstr "Zobrazit hlavním okno pÅ™ehrávaÄe" +#: src/gtkui/ui_statusbar.c:107 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d kanál" +msgstr[1] "%d kanály" +msgstr[2] "%d kanálů" -#: src/gtkui/ui_manager.c:54 -#, fuzzy -msgid "Show/hide main menu" -msgstr "Zobrazit/skrýt seznamy skladeb" +#: src/gtkui/ui_statusbar.c:122 +#, c-format +msgid "%d kbps" +msgstr "%d kb/s" -#: src/gtkui/ui_manager.c:56 -#, fuzzy -msgid "Show statusbar" -msgstr "Stav" +#: src/hotkey/gui.c:71 +msgid "Previous Track" +msgstr "PÅ™edchozí stopa" -#: src/gtkui/ui_manager.c:57 -#, fuzzy -msgid "Show/hide statusbar" -msgstr "Zobrazit/skrýt seznamy skladeb" +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "Hrát" -#: src/gtkui/ui_manager.c:69 src/gtkui/ui_manager.c:70 -#: src/skins/ui_manager.c:170 src/skins/ui_manager.c:171 -msgid "Pause" -msgstr "Pozastavit" +#: src/hotkey/gui.c:73 +msgid "Pause/Resume" +msgstr "Pozastavit/PokraÄovat" -#: src/gtkui/ui_manager.c:72 src/gtkui/ui_manager.c:73 src/hotkey/gui.c:73 -#: src/skins/ui_manager.c:173 src/skins/ui_manager.c:174 +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 msgid "Stop" msgstr "Zastavit" -#: src/gtkui/ui_manager.c:75 src/gtkui/ui_manager.c:76 -#: src/skins/ui_manager.c:176 src/skins/ui_manager.c:177 -msgid "Previous" -msgstr "PÅ™edchozí" +#: src/hotkey/gui.c:75 +msgid "Next Track" +msgstr "Další stopa" -#: src/gtkui/ui_manager.c:78 src/gtkui/ui_manager.c:79 -#: src/skins/ui_manager.c:179 src/skins/ui_manager.c:180 -msgid "Next" -msgstr "Další" +#: src/hotkey/gui.c:76 +msgid "Forward 5 Seconds" +msgstr "O 5 sekund vpÅ™ed" -#: src/gtkui/ui_manager.c:84 src/skins/ui_manager.c:197 -msgid "Playlist" -msgstr "Seznam skladeb" +#: src/hotkey/gui.c:77 +msgid "Rewind 5 Seconds" +msgstr "O 5 sekund zpÄ›t" -#: src/gtkui/ui_manager.c:86 src/gtkui/ui_manager.c:87 -#: src/skins/ui_manager.c:199 src/skins/ui_manager.c:200 -msgid "New Playlist" -msgstr "Nový seznam skladeb" +#: src/hotkey/gui.c:78 +msgid "Mute" +msgstr "Vypnout zvuk" -#: src/gtkui/ui_manager.c:89 src/gtkui/ui_manager.c:90 -#: src/skins/ui_manager.c:208 src/skins/ui_manager.c:209 -msgid "Delete Playlist" -msgstr "Smazat seznam skladeb" +#: src/hotkey/gui.c:79 +msgid "Volume Up" +msgstr "Zesílit" -#: src/gtkui/ui_manager.c:92 -#, fuzzy -msgid "Import Playlist ..." -msgstr "Importovat seznam skladeb" +#: src/hotkey/gui.c:80 +msgid "Volume Down" +msgstr "ZtiÅ¡it" -#: src/gtkui/ui_manager.c:93 src/skins/ui_manager.c:212 -msgid "Loads a playlist file into the selected playlist." -msgstr "NaÄte soubor se seznamem skladeb do vybraného seznamu." +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Jump to File" +msgstr "PÅ™ejít na soubor" -#: src/gtkui/ui_manager.c:95 -#, fuzzy -msgid "Export Playlist ..." -msgstr "Exportovat seznam skladeb" +#: src/hotkey/gui.c:82 +msgid "Toggle Player Windows" +msgstr "PÅ™epnout okna pÅ™ehrávaÄe" -#: src/gtkui/ui_manager.c:96 src/skins/ui_manager.c:215 -msgid "Saves the selected playlist." -msgstr "Uloží vybraný seznam skladeb." +#: src/hotkey/gui.c:83 +msgid "Show On-Screen-Display" +msgstr "Zobrazit OSD (nápis na obrazovce)" + +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "PÅ™epnout opakování" + +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "PÅ™epnout náhodné pÅ™ehrávání" -#: src/gtkui/ui_manager.c:98 src/skins/ui_manager.c:217 -msgid "Save All Playlists" -msgstr "Uložit vÅ¡echny seznamy skladeb" +#: src/hotkey/gui.c:95 +msgid "(none)" +msgstr "(žádné)" -#: src/gtkui/ui_manager.c:99 src/skins/ui_manager.c:218 +#: src/hotkey/gui.c:232 msgid "" -"Saves all the playlists that are open. Note that this is done automatically " -"when Audacious quits." -msgstr "" -"Uloží vÅ¡echny seznamy skladeb, které jsou otevÅ™eny. VezmÄ›te na vÄ›domí, že " -"toto bude rovněž provedeno pÅ™i ukonÄení Audacious." - -#: src/gtkui/ui_manager.c:103 -#, fuzzy -msgid "Refresh" -msgstr "_Obnovit" - -#: src/gtkui/ui_manager.c:104 src/skins/ui_manager.c:223 -msgid "Refreshes metadata associated with a playlist entry." -msgstr "Obnovuje metadata náležící skladbÄ› ze seznamu." - -#: src/gtkui/ui_manager.c:107 -msgid "Playlist Manager" -msgstr "Správce seznamů skladeb" - -#: src/gtkui/ui_manager.c:108 src/skins/ui_manager.c:227 -msgid "Opens the playlist manager." -msgstr "OtevÅ™e správce seznamu skladeb." - -#: src/gtkui/ui_manager.c:111 -#, fuzzy -msgid "Add URL ..." -msgstr "PÅ™idat soubory…" - -#: src/gtkui/ui_manager.c:112 src/skins/ui_manager.c:237 -msgid "Adds a remote track to the playlist." -msgstr "Do seznamu pÅ™idá vzdálenou stopu." - -#: src/gtkui/ui_manager.c:115 -#, fuzzy -msgid "Add Files ..." -msgstr "PÅ™idat soubory…" - -#: src/gtkui/ui_manager.c:116 src/skins/ui_manager.c:241 -msgid "Adds files to the playlist." -msgstr "PÅ™idá soubory do seznamu skladeb." - -#: src/gtkui/ui_manager.c:119 src/skins/ui_manager.c:264 -msgid "Remove All" -msgstr "Odebrat vÅ¡echny" - -#: src/gtkui/ui_manager.c:120 src/skins/ui_manager.c:265 -msgid "Removes all entries from the playlist." -msgstr "Ze seznamu odstraní vÅ¡echny skladby." - -#: src/gtkui/ui_manager.c:123 src/skins/ui_manager.c:290 -msgid "Remove Unselected" -msgstr "Odebrat neoznaÄené" - -#: src/gtkui/ui_manager.c:124 src/skins/ui_manager.c:291 -msgid "Remove unselected entries from the playlist." -msgstr "Odebrat neoznaÄené skladby se seznamu." - -#: src/gtkui/ui_manager.c:127 src/skins/ui_manager.c:294 -msgid "Remove Selected" -msgstr "Odebrat oznaÄené" - -#: src/gtkui/ui_manager.c:128 src/skins/ui_manager.c:295 -msgid "Remove selected entries from the playlist." -msgstr "Odebrat oznaÄené skladby ze seznamu." - -#: src/gtkui/ui_manager.c:131 -#, fuzzy -msgid "Sort" -msgstr "Port" - -#: src/gtkui/ui_manager.c:132 src/skins/ui_manager.c:330 -#: src/skins/ui_manager.c:360 -msgid "By Track Number" -msgstr "Podle Äísla stopy" - -#: src/gtkui/ui_manager.c:134 src/skins/ui_manager.c:278 -#: src/skins/ui_manager.c:306 src/skins/ui_manager.c:336 -msgid "By Title" -msgstr "Podle názvu" - -#: src/gtkui/ui_manager.c:136 src/skins/ui_manager.c:314 -#: src/skins/ui_manager.c:344 -msgid "By Artist" -msgstr "Podle umÄ›lce" - -#: src/gtkui/ui_manager.c:138 src/skins/ui_manager.c:310 -#: src/skins/ui_manager.c:340 -msgid "By Album" -msgstr "Podle alba" - -#: src/gtkui/ui_manager.c:140 -#, fuzzy -msgid "By File Path" -msgstr "Cesta k souboru" - -#: src/gtkui/ui_manager.c:142 -#, fuzzy -msgid "Reverse Order" -msgstr "Obrátit vyvážení" - -#: src/gtkui/ui_manager.c:147 -msgid "Output" -msgstr "Výstup" - -#: src/gtkui/ui_manager.c:149 src/modplug/gui/interface.cxx:572 -msgid "Effects" -msgstr "Efekty" - -#: src/gtkui/ui_manager.c:151 -#, fuzzy -msgid "Equalizer" -msgstr "BMP ekvalizér" - -#: src/gtkui/ui_manager.c:156 src/skins/ui_manager.c:232 -msgid "View" -msgstr "Zobrazení" - -#: src/gtkui/ui_manager.c:157 src/skins/ui_manager.c:233 -#, fuzzy -msgid "Interface" -msgstr "Rozhraní gnt" - -#: src/gtkui/ui_manager.c:164 src/skins/ui_manager.c:370 -msgid "File" -msgstr "Soubor" - -#: src/gtkui/ui_manager.c:167 -msgid "Components" -msgstr "SouÄásti" - -#: src/gtkui/ui_manager.c:169 src/gtkui/ui_manager.c:172 -#: src/skins/ui_manager.c:375 src/skins/ui_manager.c:378 -msgid "View Track Details" -msgstr "Zobrazit informace o skladbÄ›" - -#: src/gtkui/ui_manager.c:170 src/gtkui/ui_manager.c:173 -#: src/skins/ui_manager.c:376 src/skins/ui_manager.c:379 -msgid "View track details" -msgstr "Zobrazit informace o skladbÄ›" - -#: src/gtkui/ui_manager.c:175 src/gtkui/ui_manager.c:176 -#: src/skins/ui_manager.c:381 src/skins/ui_manager.c:382 -msgid "About Audacious" -msgstr "O Audacious" - -#: src/gtkui/ui_manager.c:178 -#, fuzzy -msgid "Open Files ..." -msgstr "Otevřít soubory" - -#: src/gtkui/ui_manager.c:179 src/skins/ui_manager.c:385 -msgid "Load and play a file" -msgstr "NaÄíst a pÅ™ehrát soubor" - -#: src/gtkui/ui_manager.c:181 -msgid "Open URL ..." -msgstr "" - -#: src/gtkui/ui_manager.c:182 src/skins/ui_manager.c:388 -msgid "Play media from the selected location" -msgstr "Hrát média z vybraného místa" - -#: src/gtkui/ui_manager.c:184 src/skins/ui_manager.c:390 -msgid "Plugin services" -msgstr "Služby modulů" - -#: src/gtkui/ui_manager.c:186 src/skins/ui_manager.c:392 -msgid "Preferences" -msgstr "Nastavení" - -#: src/gtkui/ui_manager.c:187 src/skins/ui_manager.c:393 -msgid "Open preferences window" -msgstr "Otevřít okno s nastavením" - -#: src/gtkui/ui_manager.c:189 src/skins/ui_manager.c:395 -msgid "_Quit" -msgstr "_Konec" - -#: src/gtkui/ui_manager.c:190 src/skins/ui_manager.c:396 -msgid "Quit Audacious" -msgstr "O Audacious" - -#: src/gtkui/ui_manager.c:192 src/gtkui/ui_manager.c:193 -#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 -msgid "Set A-B" -msgstr "Nastavit A-B" - -#: src/gtkui/ui_manager.c:195 src/gtkui/ui_manager.c:196 -#: src/skins/ui_manager.c:401 src/skins/ui_manager.c:402 -msgid "Clear A-B" -msgstr "Vyprázdnit A-B" - -#: src/gtkui/ui_manager.c:198 src/gtkui/ui_manager.c:199 -#: src/skins/ui_manager.c:404 src/skins/ui_manager.c:405 -msgid "Jump to Playlist Start" -msgstr "PÅ™ejít na zaÄátek seznamu skladeb" - -#: src/gtkui/ui_manager.c:201 src/gtkui/ui_manager.c:202 src/hotkey/gui.c:80 -#: src/skins/ui_manager.c:407 src/skins/ui_manager.c:408 -msgid "Jump to File" -msgstr "PÅ™ejít na soubor" - -#: src/gtkui/ui_manager.c:207 src/skins/ui_manager.c:413 -msgid "Queue Toggle" -msgstr "PÅ™epnout frontu" - -#: src/gtkui/ui_manager.c:208 src/skins/ui_manager.c:414 -msgid "Enables/disables the entry in the playlist's queue." -msgstr "Povolí/zakáže položku ve frontÄ› seznamu skladeb." - -#: src/gtkui/ui_manager.c:211 src/skins/ui_manager.c:417 -msgid "Copy" -msgstr "Kopírovat" - -#: src/gtkui/ui_manager.c:214 src/skins/ui_manager.c:419 -msgid "Cut" -msgstr "Oříznout" - -#: src/gtkui/ui_manager.c:217 src/skins/ui_manager.c:421 -msgid "Paste" -msgstr "Vložit" - -#: src/gtkui/ui_manager.c:220 src/skins/ui_manager.c:254 -msgid "Select All" -msgstr "Vybrat vÅ¡e" - -#: src/gtkui/ui_manager.c:221 src/skins/ui_manager.c:255 -msgid "Selects all of the playlist entries." -msgstr "Vybere vÅ¡echny skladby v seznamu." - -#: src/gtkui/ui_manager.c:224 src/skins/ui_manager.c:258 -msgid "Select None" -msgstr "Nevybrat žádné" - -#: src/gtkui/ui_manager.c:225 src/skins/ui_manager.c:259 -msgid "Deselects all of the playlist entries." -msgstr "Žádná skladba v seznamu nebude vybraná." - -#: src/gtkui/ui_statusbar.c:91 src/skins/ui_main.c:609 -msgid "mono" -msgstr "mono" - -#: src/gtkui/ui_statusbar.c:94 src/skins/ui_main.c:608 -msgid "stereo" -msgstr "stereo" - -#: src/gtkui/ui_statusbar.c:97 -#, fuzzy, c-format -msgid "%d channels" -msgstr "Kanály" - -#: src/gtkui/ui_statusbar.c:101 -#, c-format -msgid "%s: %d kbps, %d Hz, %s" -msgstr "" - -#: src/hotkey/gui.c:70 -msgid "Previous Track" -msgstr "PÅ™edchozí stopa" - -#: src/hotkey/gui.c:72 -msgid "Pause/Resume" -msgstr "Pozastavit/PokraÄovat" - -#: src/hotkey/gui.c:74 -msgid "Next Track" -msgstr "Další stopa" - -#: src/hotkey/gui.c:75 -msgid "Forward 5 Seconds" -msgstr "O 5 sekund vpÅ™ed" - -#: src/hotkey/gui.c:76 -msgid "Rewind 5 Seconds" -msgstr "O 5 sekund zpÄ›t" - -#: src/hotkey/gui.c:77 -msgid "Mute" -msgstr "Vypnout zvuk" - -#: src/hotkey/gui.c:78 -msgid "Volume Up" -msgstr "Zesílit" - -#: src/hotkey/gui.c:79 -msgid "Volume Down" -msgstr "ZtiÅ¡it" - -#: src/hotkey/gui.c:81 -msgid "Toggle Player Windows" -msgstr "PÅ™epnout okna pÅ™ehrávaÄe" - -#: src/hotkey/gui.c:82 -msgid "Show On-Screen-Display" -msgstr "Zobrazit OSD (nápis na obrazovce)" - -#: src/hotkey/gui.c:92 -msgid "(none)" -msgstr "(žádné)" - -#: src/hotkey/gui.c:229 -msgid "" -"It is not recommended to bind the primary mouse buttons without " -"modificators.\n" -"\n" -"Do you want to continue?" +"It is not recommended to bind the primary mouse buttons without " +"modificators.\n" +"\n" +"Do you want to continue?" msgstr "" "PÅ™iÅ™azení prvního tlaÄítka myÅ¡i mez modifikátoru není doporuÄeno.\n" "\n" "Chcete pokraÄovat?" -#: src/hotkey/gui.c:231 +#: src/hotkey/gui.c:234 msgid "Binding mouse buttons" msgstr "PÅ™iÅ™azuji tlaÄítka myÅ¡i" -#: src/hotkey/gui.c:381 +#: src/hotkey/gui.c:384 msgid "Global Hotkey Plugin Configuration" msgstr "Hlavní nastavení modulu pro horké klávesy" -#: src/hotkey/gui.c:397 +#: src/hotkey/gui.c:400 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -3169,23 +2078,23 @@ "UvnitÅ™ textového pole stisknÄ›te kombinaci kláves.\n" "Navázat lze také tlaÄítka myÅ¡i." -#: src/hotkey/gui.c:402 +#: src/hotkey/gui.c:405 msgid "Hotkeys:" msgstr "Horké klávesy:" -#: src/hotkey/gui.c:421 +#: src/hotkey/gui.c:424 msgid "Action:" msgstr "Akce" -#: src/hotkey/gui.c:429 +#: src/hotkey/gui.c:432 msgid "Key Binding:" msgstr "Navázání kláves:" -#: src/hotkey/gui.c:660 +#: src/hotkey/gui.c:663 msgid "About Global Hotkey Plugin" msgstr "O modulu Global Hotkey" -#: src/hotkey/gui.c:661 +#: src/hotkey/gui.c:664 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3214,31 +2123,31 @@ "\t\t\tJeremy Tan \n" "\n" -#: src/jack/configure.c:71 +#: src/jack/configure.c:66 msgid "Connect to all available jack ports" msgstr "PÅ™ipojit se na vÅ¡echny dostupné porty jacku" -#: src/jack/configure.c:78 +#: src/jack/configure.c:73 msgid "Connect only the output ports" msgstr "PÅ™ipojit se pouze na výstupní porty" -#: src/jack/configure.c:85 +#: src/jack/configure.c:80 msgid "Connect to no ports" msgstr "Na žádné porty se nepÅ™ipojovat" -#: src/jack/configure.c:103 +#: src/jack/configure.c:98 msgid "jack Plugin configuration" msgstr "Nastavení modulu jack" -#: src/jack/configure.c:121 +#: src/jack/configure.c:116 msgid "Connection mode:" msgstr "Režim pÅ™ipojení:" -#: src/jack/configure.c:133 +#: src/jack/configure.c:128 msgid "Enable debug printing" msgstr "Povolit ladící výpisy" -#: src/jack/jack.c:437 +#: src/jack/jack.c:422 msgid "" "XMMS jack Driver 0.17\n" "\n" @@ -3256,148 +2165,83 @@ "Pro Audacious pÅ™evedl\n" "Giacomo Lozito z develia.org" -#: src/jack/jack.c:442 +#: src/jack/jack.c:427 msgid "About JACK Output Plugin 0.17" msgstr "O výstupním modulu JACK 0.17" -#: src/ladspa/ladspa.c:824 -msgid "This LADSPA plugin has no user controls" -msgstr "Tento LADSPA modul nemá žádné možnosti nastavení uživatelem" +#: src/ladspa/plugin.c:414 +msgid "About LADSPA Host" +msgstr "O hostiteli LADSPA" -#: src/ladspa/ladspa.c:865 src/ladspa/ladspa.c:952 -msgid "Name" -msgstr "Jméno" - -#: src/ladspa/ladspa.c:952 -msgid "UID" -msgstr "UID" +#: src/ladspa/plugin.c:515 +#, c-format +msgid "%s Settings" +msgstr "Nastavení %s" -#: src/ladspa/ladspa.c:1029 -msgid "Installed plugins" -msgstr "Nainstalované moduly" +#: src/ladspa/plugin.c:583 +msgid "LADSPA Host Settings" +msgstr "Nastavení hostitele LADSPA" -#: src/ladspa/ladspa.c:1037 -msgid "Running plugins" -msgstr "Bežící moduly" +#: src/ladspa/plugin.c:592 +msgid "Module paths:" +msgstr "Cesta k modulům:" -#: src/ladspa/ladspa.c:1052 -msgid "Add" -msgstr "PÅ™idat" +#: src/ladspa/plugin.c:597 +msgid "" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." +msgstr "" +"Cesty se od sebe oddÄ›lují dvojteÄkou.\n" +"Tyto cesty se prohledávají spolu s LADSPA_PATH.\n" +"Po té, co pÅ™idáte novou cestu, je tÅ™eba stisknout Enter, aby se vyhledaly " +"nové moduly." -#: src/ladspa/ladspa.c:1055 -msgid "Remove" -msgstr "Odebrat" +#: src/ladspa/plugin.c:613 +msgid "Available plugins:" +msgstr "Dostupné moduly:" -#: src/ladspa/ladspa.c:1066 -msgid "LADSPA Plugin Catalog" -msgstr "Katalog LADSPA modulů" +#: src/ladspa/plugin.c:625 +msgid "Enable" +msgstr "Povolit" -#: src/lirc/about.c:63 -msgid "About LIRC Audacious Plugin" -msgstr "O modulu LIRC pro Audacious" +#: src/ladspa/plugin.c:631 +msgid "Enabled plugins:" +msgstr "Povolené moduly:" -#: src/lirc/about.c:90 -msgid "LIRC Plugin " -msgstr "Modul LIRC " +#: src/ladspa/plugin.c:646 +msgid "Settings" +msgstr "Nastavení" -#: src/lirc/about.c:92 +#: src/lyricwiki/lyricwiki.c:269 msgid "" "\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" -"\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" +"Looking for lyrics..." msgstr "" "\n" -"Jednoduchý modul, který vám dovolí ovládat Audacious\n" -"prostÅ™ednictvím démona dálkového ovládání LIRC.\n" -"\n" -"Pro Audacious upravil Tony Vroon \n" -"z XMMS LIRC modulu, jehož tvůrci jsou:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"Informace o LIRC lze získat na:\n" -"http://lirc.org/" - -#: src/lirc/interface.c:37 -msgid "LIRC plugin settings" -msgstr "Nastavení modulu LIRC" +"Vyhledává se text…" -#: src/lirc/interface.c:61 -msgid "Reconnect to LIRC server" -msgstr "Znovu se pÅ™ipojit k serveru LIRC" - -#: src/lirc/interface.c:68 -msgid "Timeout before reconnecting (seconds): " -msgstr "ÄŒasový limit pro znovupÅ™ipojení (sekundy): " - -#: src/lirc/interface.c:75 -msgid "Reconnect" -msgstr "Znovu se pÅ™ipojit" - -#: src/lirc/interface.c:79 -msgid "Connection" -msgstr "Spojení" - -#: src/lirc/lirc.c:82 -#, c-format -msgid "%s: could not init LIRC support\n" -msgstr "%s: nelze inicializovat podporu LIRC\n" - -#: src/lirc/lirc.c:90 -#, c-format +#: src/lyricwiki/lyricwiki.c:293 msgid "" -"%s: could not read LIRC config file\n" -"%s: please read the documentation of LIRC\n" -"%s: how to create a proper config file\n" -msgstr "" -"%s: nelze Äíst z konfiguraÄního souboru LIRC\n" -"%s: prosím, pÅ™eÄtÄ›te si dokumentaci k LIRC,\n" -"%s: jak správnÄ› vytvoÅ™it konfiguraÄní soubor\n" - -#: src/lirc/lirc.c:117 -#, c-format -msgid "%s: trying to reconnect...\n" -msgstr "%s: pokouším se znovu pÅ™ipojit…\n" - -#: src/lirc/lirc.c:332 -#, c-format -msgid "%s: unknown command \"%s\"\n" -msgstr "%s: neznámý příkaz „%s“\n" - -#: src/lirc/lirc.c:342 -#, c-format -msgid "%s: disconnected from LIRC\n" -msgstr "%s: odpojeno od LIRC\n" - -#: src/lirc/lirc.c:346 -#, c-format -msgid "%s: will try reconnect every %d seconds...\n" -msgstr "%s: pokus o pÅ™ipojení budu opakovat každých %d sekund…\n" - -#: src/lyricwiki/lyricwiki.c:244 -msgid "LyricWiki" +"\n" +"Connecting to lyrics.wikia.com..." msgstr "" +"\n" +"PÅ™ipoje se k lyrics.wikia.com…" -#: src/lyricwiki/lyricwiki.c:337 -#, fuzzy +#: src/lyricwiki/lyricwiki.c:381 msgid "" "\n" "No lyrics were found." -msgstr "Žádné zařízení nenalezeno!" +msgstr "" +"\n" +"Žádné texty nebyly nalezeny." -#: src/metronom/metronom.c:90 +#: src/metronom/metronom.c:85 msgid "About Metronom" msgstr "O metronomu" -#: src/metronom/metronom.c:91 +#: src/metronom/metronom.c:86 msgid "" "A Tact Generator by Martin Strauss \n" "\n" @@ -3411,267 +2255,61 @@ "napÅ™. tact://77 hraje 77 úderů za minutu\n" "nebo tact://60*3/4 hraje v tempu 60 úderu za minutu v 3â„4 taktu" -#: src/metronom/metronom.c:145 +#: src/metronom/metronom.c:143 #, c-format msgid "Tact generator: %d bpm" msgstr "Generátor taktu: %d dob/min" -#: src/metronom/metronom.c:147 +#: src/metronom/metronom.c:145 #, c-format msgid "Tact generator: %d bpm %d/%d" msgstr "Generátor taktu: %d dob/min %dâ„%d" -#: src/modplug/gui/interface.cxx:137 -msgid "ModPlug Configuration" -msgstr "Nastavení ModPlugu" - -#: src/modplug/gui/interface.cxx:174 -msgid "16 bit" -msgstr "16 bitů" - -#: src/modplug/gui/interface.cxx:181 -msgid "8 bit" -msgstr "8 bitů" - -#: src/modplug/gui/interface.cxx:212 -msgid "Mono (downmix)" -msgstr "Mono (smísit kanály)" - -#: src/modplug/gui/interface.cxx:241 -msgid "Nearest (fastest)" -msgstr "Nejbližší (nejrychlejší)" - -#: src/modplug/gui/interface.cxx:248 -msgid "Linear (fast)" -msgstr "Lineární (rychlé)" - -#: src/modplug/gui/interface.cxx:255 -msgid "Spline (good quality)" -msgstr "Spline (kvalitní)" - -#: src/modplug/gui/interface.cxx:262 -msgid "8-tap Fir (extremely high quality)" -msgstr "FIR filtr osmého řádu (velmi kvalitní)" - -#: src/modplug/gui/interface.cxx:286 -msgid "96 kHz" -msgstr "96 kHz " - -#: src/modplug/gui/interface.cxx:293 -msgid "48 kHz" -msgstr "48 kHz" - -#: src/modplug/gui/interface.cxx:300 -msgid "44 kHz" -msgstr "44 kHz" - -#: src/modplug/gui/interface.cxx:307 -msgid "22 kHz" -msgstr "22 kHz" - -#: src/modplug/gui/interface.cxx:315 -msgid "Sampling Rate" -msgstr "Vzorkovací kmitoÄet" - -#: src/modplug/gui/interface.cxx:349 src/modplug/gui/interface.cxx:411 -#: src/modplug/gui/interface.cxx:477 src/modplug/gui/interface.cxx:539 -msgid "Enable" -msgstr "Povolit" - -#: src/modplug/gui/interface.cxx:378 src/modplug/gui/interface.cxx:506 -msgid "Depth" -msgstr "Hloubka" - -#: src/modplug/gui/interface.cxx:386 src/modplug/gui/interface.cxx:514 -msgid "Delay" -msgstr "ZpoždÄ›ní" - -#: src/modplug/gui/interface.cxx:394 -msgid "Reverb" -msgstr "Dozvuk" - -#: src/modplug/gui/interface.cxx:440 -msgid "Amount" -msgstr "Množství" - -#: src/modplug/gui/interface.cxx:448 -msgid "Range" -msgstr "Rozsah" - -#: src/modplug/gui/interface.cxx:456 -msgid "Bass Boost" -msgstr "ZvýraznÄ›ní hlubokých tónů" +#: src/mixer/plugin.c:64 +msgid "About Channel Mixer" +msgstr "O směšovaÄi kanálů" + +#: src/mixer/plugin.c:93 +msgid "Channel Mixer Settings" +msgstr "Nastavení směšovaÄe kanálů" + +#: src/mixer/plugin.c:102 +msgid "Output channels:" +msgstr "Výstupní kanály:" + +#: src/mixer/plugin.c:112 +msgid "Changes take effect at the next song change." +msgstr "ZmÄ›ny se projeví pÅ™i pÅ™epnutí na další skladbu." -#: src/modplug/gui/interface.cxx:522 src/mpg123/mpg123.c:174 +#: src/mpg123/mpg123.c:183 msgid "Surround" msgstr "Prostorový zvuk" -#: src/modplug/gui/interface.cxx:561 -msgid "" -"Note: Setting the preamp\n" -"too high may cause clipping\n" -"(annoying clicks and pops)!" -msgstr "" -"Poznámka: Vysoké hodnoty\n" -"pÅ™edzesílení mohou vést k oÅ™ezu\n" -"zvuku (obtěžující praskání)!" - -#: src/modplug/gui/interface.cxx:567 -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "Preamp" -msgstr "PÅ™edzesílení" - -#: src/modplug/gui/interface.cxx:601 -msgid "Use Filename as Song Title" -msgstr "Použít jméno souboru jako název skladby" - -#: src/modplug/gui/interface.cxx:606 -msgid "Fast Playlist Info" -msgstr "Rychlé informace o seznamu skladeb" - -#: src/modplug/gui/interface.cxx:617 -msgid "Noise Reduction" -msgstr "Redukce Å¡umu" - -#: src/modplug/gui/interface.cxx:623 -msgid "Play Amiga MOD" -msgstr "Hrát MODY z Amigy" - -#: src/modplug/gui/interface.cxx:646 -msgid "Don't loop" -msgstr "Nevracet se ve smyÄce" - -#: src/modplug/gui/interface.cxx:658 -msgid "Loop" -msgstr "Opakovat" - -#: src/modplug/gui/interface.cxx:671 -msgid "time(s)" -msgstr "×" - -#: src/modplug/gui/interface.cxx:677 -msgid "Loop forever" -msgstr "NekoneÄná smyÄka" - -#: src/modplug/gui/interface.cxx:684 -msgid "Looping" -msgstr "SmyÄky" - -#: src/modplug/gui/interface.cxx:859 -msgid "MOD Info" -msgstr "Informace o MODU" - -#: src/modplug/gui/interface.cxx:878 -msgid "" -"Filename:\n" -"Title:\n" -"Type:\n" -"Length:\n" -"Speed:\n" -"Tempo:\n" -"Samples:\n" -"Instruments:\n" -"Patterns:\n" -"Channels:" -msgstr "" -"Jméno souboru:\n" -"Název skladby:\n" -"Typ:\n" -"Délka:\n" -"Rychlost:\n" -"Tempo:\n" -"Vzorků:\n" -"Nástrojů:\n" -"Vzory:\n" -"Kanálů:" - -#: src/modplug/gui/interface.cxx:883 -msgid "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" -msgstr "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" - -#: src/modplug/gui/interface.cxx:913 -msgid "Samples" -msgstr "Vzorky" - -#: src/modplug/gui/interface.cxx:938 -msgid "Instruments" -msgstr "Nástroje" - -#: src/modplug/gui/interface.cxx:959 -msgid "Message" -msgstr "Vzkaz" - -#: src/modplug/gui/main.cxx:51 -msgid "Modplug Input Plugin for Audacious ver" -msgstr "Vstupní modul pro Audacious Modplug verze " - -#: src/modplug/gui/main.cxx:52 -msgid "" -"\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." -msgstr "" -"\n" -"Zvukové jádro Modplugu napsal Olivier Lapicque.\n" -"XMMS rozhraní Modplugu od Kentona Varda.\n" -"© 2000 Olivier Lapicque a Kenton Varda.\n" -"Aktualizuje a udržuje Konstanty Bialkowski.\n" -"Na BMP pÅ™evedl Theofilos Intzoglou." - -#: src/modplug/gui/main.cxx:55 -msgid "About Modplug" -msgstr "O modulu Modplug" - -#: src/modplug/gui/support.cxx:90 src/modplug/gui/support.cxx:114 -#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 -#, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "Nebylo možné nalézt soubor s pixmapou: %s" - -#: src/mtp_up/mtp.c:35 -msgid "Upload selected track(s)" -msgstr "Nahrát vybranou stopu(y)" - -#: src/mtp_up/mtp.c:291 +#: src/mtp_up/mtp.c:298 msgid "Upload in progress..." -msgstr "Nahrávám…" +msgstr "Nahrává se…" -#: src/mtp_up/mtp.c:300 -msgid "MTP device handler" -msgstr "Deskriptor MTP zařízení" +#: src/mtp_up/mtp.c:310 +msgid "Upload to MTP Device" +msgstr "Nahrát do zařízení MTP" + +#: src/mtp_up/mtp.c:311 +msgid "Disconnect MTP Device" +msgstr "Odpojit zařízení MTP" + +#: src/notify/libnotify-aosd_event.c:47 +msgid "Stopped" +msgstr "Zastaveno" + +#: src/notify/libnotify-aosd_event.c:47 +msgid "Audacious is not playing." +msgstr "Audacious nyní nehraje." -#: src/mtp_up/mtp.c:304 -msgid "Disconnect the device" -msgstr "Odpojit zařízení" - -#: src/null/null.c:63 +#: src/null/null.c:64 msgid "Null output plugin " -msgstr "Slepý výstupní modul " +msgstr "Hluchý výstupní modul " -#: src/null/null.c:64 +#: src/null/null.c:65 msgid "" " by Christian Birchinger \n" "based on the XMMS plugin by HÃ¥vard KvÃ¥l " @@ -3679,123 +2317,88 @@ " napsal Christian Birchinger \n" "založeno na modulu pro XMMS, jehož autor je HÃ¥vard KvÃ¥l " -#: src/null/null.c:67 +#: src/null/null.c:68 msgid "About Null Output" msgstr "O slepém výstupu" -#: src/null/null.c:93 +#: src/null/null.c:89 msgid "Null output preferences" msgstr "Nastavení slepého výstupu" -#: src/null/null.c:102 +#: src/null/null.c:100 msgid "Run in real time" msgstr "Běžet v reálném Äase" -#: src/oss4/configure.c:89 +#: src/oss4/configure.c:81 msgid "1. Default device" msgstr "1. Implicitní zařízení" -#: src/oss4/configure.c:151 +#: src/oss4/configure.c:138 msgid "OSS4 Output Plugin Preferences" msgstr "Nastavení výstupního modulu OSS4" -#: src/oss4/configure.c:163 src/OSS/configure.c:213 src/sun/configure.c:181 +#: src/oss4/configure.c:150 src/OSS/configure.c:194 msgid "Audio device:" msgstr "Zvukové zařízení:" -#: src/oss4/configure.c:189 src/OSS/configure.c:235 src/OSS/configure.c:276 +#: src/oss4/configure.c:178 src/OSS/configure.c:217 src/OSS/configure.c:260 msgid "Use alternate device:" msgstr "Použít jiné zařízení:" -#: src/oss4/configure.c:202 +#: src/oss4/configure.c:193 msgid "Save volume between sessions" msgstr "Mezi relacemi ukládat hlasitost" -#: src/oss4/configure.c:206 +#: src/oss4/configure.c:197 msgid "Enable format conversions made by the OSS software." msgstr "Zapnout pÅ™evody formátu prostÅ™ednictvím OSS." -#: src/oss4/plugin.c:54 +#: src/oss4/configure.c:201 +msgid "Enable exclusive mode to prevent virtual mixing." +msgstr "Zabránit virtuálnímu směšování použitím výluÄného režimu." + +#: src/oss4/plugin.c:51 msgid "About OSS4 Plugin" msgstr "O modulu OSS4" -#: src/oss4/plugin.c:55 -msgid "" -"OSS4 Output Plugin for Audacious\n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"I would like to thank people on #audacious, especially Tony Vroon and John " -"Lindgren and of course the authors of the previous OSS plugin.\n" -"\n" -"This program is free software: you can redistribute it and/or modify it " -"under the terms of the GNU General Public License as published by the Free " -"Software Foundation, either version 3 of the License, or (at your option) " -"any later version.\n" -"\n" -"This program 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 General Public License for " -"more details.\n" -"\n" -"You should have received a copy of the GNU General Public License along with " -"this program. If not, see .\n" -msgstr "" -"Výstupní modul OSS4 pro Audacious\n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"Rád bych podÄ›koval lidem na #audacious, zvláštÄ› Tony Vroonovi a Johnu " -"Lindgrenovi a samozÅ™ejmÄ› autorům pÅ™edchozího modulu OSS.\n" -"\n" -"Tento program je svobodný software; můžete jej šířit a/nebo mÄ›nit\n" -"v souladu s podmínkami GNU General Public License (GPL) vydané\n" -"Free Software Foundation a to buÄ ve verzi 3 nebo (dle vaší volby)\n" -"libovolné novÄ›jší.\n" -"\n" -"Program je šířen v nadÄ›ji, že bude užiteÄný, ale BEZ JAKÉKOLIV\n" -"ZÃRUKY, a to ani odvozené záruky OBCHODOVATELNOSTI nebo VHODNOSTI PRO\n" -"URÄŒITà ÚČEL. Více informací najdete v GNU GPL.\n" -"\n" -"S tímto programem byste mÄ›li obdržet kopii GNU GPL. Pokud se\n" -"tak nestalo, vizte .\n" - -#: src/oss4/utils.c:204 +#: src/oss4/utils.c:211 msgid "OSS4 error" msgstr "Chyba OSS4" -#: src/OSS/configure.c:148 +#: src/OSS/configure.c:137 #, c-format msgid "Default (%s)" msgstr "StandardnÄ› (%s)" -#: src/OSS/configure.c:197 +#: src/OSS/configure.c:178 msgid "OSS Driver configuration" msgstr "Nastavení ovladaÄe OSS" -#: src/OSS/configure.c:298 src/sun/configure.c:246 +#: src/OSS/configure.c:281 msgid "Devices" msgstr "Zařízení" -#: src/OSS/configure.c:300 src/sun/configure.c:257 +#: src/OSS/configure.c:283 msgid "Buffering:" msgstr "Vyrovnávání:" -#: src/OSS/configure.c:313 src/sun/configure.c:288 +#: src/OSS/configure.c:296 msgid "Pre-buffer (percent):" msgstr "NaÄíst pÅ™edem (v procentech):" -#: src/OSS/configure.c:324 src/sun/configure.c:302 +#: src/OSS/configure.c:307 msgid "Buffering" msgstr "Vyrovnávání" -#: src/OSS/configure.c:325 +#: src/OSS/configure.c:308 msgid "Mixer Settings:" msgstr "Nastavení mixéru:" -#: src/OSS/configure.c:331 +#: src/OSS/configure.c:314 msgid "Volume controls Master not PCM" msgstr "Hlasitost ovládána Master kanálem místo PCM" -#: src/OSS/configure.c:337 src/sun/configure.c:392 +#: src/OSS/configure.c:320 msgid "Mixer" msgstr "Mixér" @@ -3803,128 +2406,60 @@ msgid "About OSS Driver" msgstr "O modulu OSS" -#: src/OSS/OSS.c:41 -msgid "" -"Audacious OSS Driver\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" -"OvladaÄ OSS programu Audacious\n" -"\n" -"Tento program je svobodný software; můžete jej šířit a/nebo mÄ›nit,\n" -"pokud dodržíte podmínky GNU General Public License (GPL) vydané\n" -"Free Software Foundation a to buÄ ve verzi 2 nebo (dle vaší volby)\n" -"libovolné novÄ›jší.\n" -"\n" -"Program je šířen v nadÄ›ji, že bude užiteÄný, ale BEZ JAKÉKOLIV\n" -"ZÃRUKY a to ani záruky OBCHODOVATELNOSTI nebo VHODNOSTI PRO\n" -"JAKÃKOLIV ÚČEL. Více informací najdete v GNU GPL.\n" -"\n" -"S tímto programem byste mÄ›li obdržet kopii GNU GPL. Pokud se tak\n" -"nestalo, obraÅ¥te se na Free Software Foundation, Inc.,\n" -"51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." - -#: src/pulse_audio/pulse_audio.c:691 +#: src/pulse_audio/pulse_audio.c:673 msgid "About Audacious PulseAudio Output Plugin" msgstr "O výstupním modulu PulseAudio pro Audacious" -#: src/pulse_audio/pulse_audio.c:692 -msgid "" -"Audacious PulseAudio Output Plugin\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" -"Výstupní modul PulseAudio pro Audacious\n" -"\n" -"Tento program je svobodný software; můžete jej šířit a/nebo mÄ›nit,\n" -"pokud dodržíte podmínky GNU General Public License (GPL) vydané\n" -"Free Software Foundation a to buÄ ve verzi 2 nebo (dle vaší volby)\n" -"libovolné novÄ›jší.\n" -"\n" -"Program je šířen v nadÄ›ji, že bude užiteÄný, ale BEZ JAKÉKOLIV\n" -"ZÃRUKY a to ani záruky OBCHODOVATELNOSTI nebo VHODNOSTI PRO\n" -"JAKÃKOLIV ÚČEL. Více informací najdete v GNU GPL.\n" -"\n" -"S tímto programem byste mÄ›li obdržet kopii GNU GPL. Pokud se\n" -"tak nestalo, obraÅ¥te se na Free Software Foundation, Inc.,\n" -"51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." - -#: src/resample/plugin.c:78 +#: src/resample/plugin.c:89 msgid "About Sample Rate Converter Plugin" msgstr "O modulu PÅ™evodník vzorkovací frekvence" -#: src/resample/plugin.c:134 +#: src/resample/plugin.c:144 msgid "Sample Rate Converter Preferences" msgstr "Nastavení PÅ™evodníku vzorkovací frekvence" -#: src/resample/plugin.c:146 +#: src/resample/plugin.c:156 msgid "Rate mappings:" msgstr "PÅ™iÅ™azení frekvencí:" # FIXME: Rod? Rate mappings? -#: src/resample/plugin.c:169 +#: src/resample/plugin.c:179 msgid "All others:" msgstr "VÅ¡echna ostatní:" -#: src/resample/plugin.c:181 +#: src/resample/plugin.c:191 msgid "Method:" msgstr "Metoda:" -#: src/scrobbler/configure.c:152 src/scrobbler/configure.c:228 +#: src/scrobbler/configure.c:122 src/scrobbler/configure.c:197 msgid "Change password" msgstr "ZmÄ›nit heslo" -#: src/scrobbler/configure.c:174 +#: src/scrobbler/configure.c:143 msgid "Services" msgstr "Služby" -#: src/scrobbler/configure.c:196 +#: src/scrobbler/configure.c:165 msgid "Username:" msgstr "Přístupové jméno:" -#: src/scrobbler/configure.c:202 +#: src/scrobbler/configure.c:171 msgid "Password:" msgstr "Heslo:" -#: src/scrobbler/configure.c:210 +#: src/scrobbler/configure.c:179 msgid "Scrobbler URL:" msgstr "URL Scrobbleru:" -#: src/scrobbler/configure.c:242 +#: src/scrobbler/configure.c:211 msgid "Last.FM" msgstr "Last.FM" -#: src/scrobbler/configure.c:287 +#: src/scrobbler/configure.c:238 msgid "Scrobbler" msgstr "Scrobbler" -#: src/scrobbler/plugin.c:213 +#: src/scrobbler/plugin.c:194 msgid "" "Audacious AudioScrobbler Plugin\n" "\n" @@ -3935,646 +2470,23 @@ "\n" "PůvodnÄ› vytvoÅ™il Audun Hove a Pipian \n" -#: src/scrobbler/plugin.c:215 +#: src/scrobbler/plugin.c:196 msgid "About Scrobbler Plugin" msgstr "O modulu Scrobbler" -#: src/sid/xs_about.c:84 -#, c-format -msgid "About %s" -msgstr "O %s" - -#: src/sid/xs_config.c:322 -msgid " Error" -msgstr " Chyba" - -#: src/sid/xs_fileinfo.c:151 -msgid "General info" -msgstr "Obecné informace" - -#: src/sid/xs_fileinfo.c:164 -#, c-format -msgid "Tune #%i: " -msgstr "Skladba Ä. %i:" - -#: src/sid/xs_interface.c:234 -msgid "Audacious-SID configuration" -msgstr "Nastavení Audacious-SID" - -#: src/sid/xs_interface.c:270 -msgid "8-bit" -msgstr "8bitový" - -#: src/sid/xs_interface.c:277 -msgid "16-bit" -msgstr "16bitový" - -#: src/sid/xs_interface.c:284 -msgid "Resolution:" -msgstr "RozliÅ¡ení:" - -#: src/sid/xs_interface.c:315 -msgid "Autopanning" -msgstr "Automatický posun" - -#: src/sid/xs_interface.c:322 -msgid "Channels:" -msgstr "Kanály:" - -#: src/sid/xs_interface.c:366 -msgid "Samplerate:" -msgstr "Vzorkovací kmitoÄet:" - -#: src/sid/xs_interface.c:383 -msgid "Use oversampling" -msgstr "PÅ™evzorkovat" - -#: src/sid/xs_interface.c:394 -msgid "Factor:" -msgstr "Násobek:" - -#: src/sid/xs_interface.c:406 -msgid "Large factors require more CPU-power" -msgstr "VÄ›tší Äinitel vyžaduje více výkonu CPU" - -#: src/sid/xs_interface.c:412 -msgid "Oversampling:" -msgstr "PÅ™evzorkování:" - -#: src/sid/xs_interface.c:417 -msgid "Audio" -msgstr "Zvuk" - -#: src/sid/xs_interface.c:445 -msgid "Force speed" -msgstr "Vnutit rychlost" - -#: src/sid/xs_interface.c:449 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"clock speed/frequency. Otherwise the speed is determined from played file " -"itself." -msgstr "" -"Je-li zapnuto, bude emulaÄnímu jádru vnucen vybraná rychlost hodin/" -"frekvence. V opaÄném případÄ› bude rychlost urÄena z pÅ™ehrávaného souboru " -"samotného." - -#: src/sid/xs_interface.c:451 -msgid "PAL (50 Hz)" -msgstr "PAL (50 Hz)" - -#: src/sid/xs_interface.c:455 -msgid "" -"PAL is the european TV standard, which uses 50Hz vertical refresh frequency. " -"Most of SID-tunes have been made for PAL computers." -msgstr "" -"PAL je evropský televizní standard, který používá 50Hz vertikální obnovovací " -"frekvenci. VÄ›tÅ¡ina SID skladeb byla urÄena pro poÄítaÄe s výstupem PAL." - -#: src/sid/xs_interface.c:459 -msgid "NTSC (60 Hz)" -msgstr "NTSC (60 Hz)" - -#: src/sid/xs_interface.c:463 -msgid "" -"NTSC is the TV standard with 60Hz vertical refresh rate (and other features " -"that differ from PAL). It is mainly used in United States, Japan and certain " -"other countries." -msgstr "" -"NTSC je televizní standard s 60HZ vertikální obnovovací frekvencí (kromÄ› " -"jiných rozdílů od PALU). Používá se pÅ™edevším ve Spojených státech, " -"Japonsku, nÄ›kolika dalších zemí." - -#: src/sid/xs_interface.c:467 -msgid "Clock speed:" -msgstr "Rychlost hodin:" - -#: src/sid/xs_interface.c:484 -msgid "Force model" -msgstr "Vnutit model" - -#: src/sid/xs_interface.c:488 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"SID-chip model. Otherwise the preferred SID model is determined from the " -"file (if PSIDv2NG type) or if not available, this setting is used." -msgstr "" -"Je-li zapnuto, emulaÄnímu jádru bude vnucen vybraný modelu SID Äipu. " -"V opaÄném případÄ› bude modul SIDU urÄen ze souboru (je-li typu PSIDv2NG). " -"Vybraný model bude také použit, nebude-li jej možno ze souboru urÄit." - -#: src/sid/xs_interface.c:490 -msgid "MOS 6581" -msgstr "MOS 6581" - -#: src/sid/xs_interface.c:494 -msgid "" -"MOS/CSG 6581 is the earlier major version of SID chip. It differs from 8580 " -"in few ways, having much fuller filter (which, due to design error, is never " -"same between two different SID-chips) and has the \"volume adjustment bug\", " -"which enables playing of digital samples." -msgstr "" -"MOS/CSG 6581 je starší verze SID Äipu. Od 8580 se odliÅ¡uje tím, že má " -"plnÄ›jší filtr (který, kvůli chybÄ› v návrhu, není nikdy stejný mezi dvÄ›ma " -"Äipy) a „trpí chybou“ pÅ™i ladÄ›ní hlasitosti, která umožňuje pÅ™ehrávání " -"digitálních vzorků." - -#: src/sid/xs_interface.c:498 -msgid "MOS 8580" -msgstr "MOS 8580" - -#: src/sid/xs_interface.c:505 -msgid "SID model:" -msgstr "Model SIDU:" - -#: src/sid/xs_interface.c:522 -msgid "SIDPlay 1 (frame-based)" -msgstr "SIDPlay 1 (rámcová technika)" - -#: src/sid/xs_interface.c:526 -msgid "" -"Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most " -"cases, though." -msgstr "" -"K emulaci použije libSIDPlay 1.x. Rychlejší, ale ne tak pÅ™esné. Ve vÄ›tÅ¡inÄ› " -"případů postaÄuje." - -#: src/sid/xs_interface.c:530 -msgid "SIDPlay 2 (cycle-based)" -msgstr "DISPlay 2 (cyklová technika)" - -#: src/sid/xs_interface.c:534 -msgid "" -"Use libSIDPlay 2.x emulation, which requires powerful CPU due to more exact " -"emulation." -msgstr "" -"K emulaci použijte libSIDPlay 2.x, který kvůli pÅ™esnÄ›jší emulaci vyžaduje " -"výkonnÄ›jší CPU." - -#: src/sid/xs_interface.c:538 -msgid "Emulation library selection:" -msgstr "VýbÄ›r emulaÄní knihovny" - -#: src/sid/xs_interface.c:555 -msgid "Real C64 (SIDPlay 2 only)" -msgstr "SkuteÄný C64 (pouze SIDPlay 2)" - -#: src/sid/xs_interface.c:562 -msgid "Bank switching" -msgstr "PÅ™epínání bank" - -#: src/sid/xs_interface.c:569 -msgid "Transparent ROM" -msgstr "Transparentní ROM" - -#: src/sid/xs_interface.c:576 -msgid "PlaySID environment" -msgstr "ProstÅ™edí PlaySID" - -#: src/sid/xs_interface.c:583 -msgid "Memory mode:" -msgstr "Režim pamÄ›ti" - -#: src/sid/xs_interface.c:588 -msgid "Emu#1" -msgstr "Emu#1" - -#: src/sid/xs_interface.c:611 -msgid "Optimization mode (faster, inaccurate)" -msgstr "Optimalizující režim (rychlejší, nepÅ™esný)" - -#: src/sid/xs_interface.c:615 -msgid "" -"This setting can be used to enable libSIDPlay2's \"optimization mode\", " -"which in downgrades the emulation from cycle-exact to something similar to " -"frame-exact. The result is lower CPU usage, but worse accuracy." -msgstr "" -"Toto nastavení může být použito pro povolení „optimalizující režimu“ " -"libSIDPlay2, který nezachovává pÅ™esnost na cyklus a více se podobá rámcové " -"technice. Výsledkem je nižší zatížení CPU, ale vÄ›tší nepÅ™esnost." - -#: src/sid/xs_interface.c:617 -msgid "reSID-emulation" -msgstr "Emulace reSID" - -#: src/sid/xs_interface.c:621 -msgid "" -"reSID is the software SID-chip simulator based on SID reverse-engineering, " -"created by Dag Lem. It is probably the closest thing to real SID available " -"as software-only emulation." -msgstr "" -"reSID je softwarový emulátor Äipu založený na zpÄ›tném inženýrství SID Äipu. " -"Autorem je Dag Lem. Jedná se pravdÄ›podobnÄ› o nejvÄ›rnÄ›jší softwarovou emulaci " -"skuteÄného Äipu." - -#: src/sid/xs_interface.c:625 -msgid "HardSID" -msgstr "HardSID" - -#: src/sid/xs_interface.c:629 -msgid "" -"HardSID is a EISA/PCI card for PC-compatibles, which can be fitted with a " -"real SID-chip. Software can be used to control the HardSID and combined with " -"software emulation of rest of C64 via libSIDPlay2 HardSID can be used to " -"achieve \"near 100%\" similarity to real C64. For more information, see " -"http://www.hardsid.com/" -msgstr "" -"HardSID je EISA/PCI karta pro PC kompatibilní poÄítaÄe, která může nést " -"skuteÄný SID Äip. Software slouží k ovládání HardSIDu a v kombinaci se " -"softwarovou emulací zbytku C64 pomocí libSIDPlay2 lze dosáhnout „téměř 100%“ " -"shody se skuteÄným C64. Podrobnosti naleznete na http://www.hardsid.com/" - -#: src/sid/xs_interface.c:633 -msgid "SIDPlay 2 options:" -msgstr "Nastavení SIDPlay 2:" - -#: src/sid/xs_interface.c:650 -msgid "Fast (nearest neighbour)" -msgstr "Rychlá (nejbližší sousední)" - -#: src/sid/xs_interface.c:654 -msgid "" -"Fastest and also worst sounding sampling method, simply picks nearest " -"neighbouring sample." -msgstr "" -"Nejrychlejší a také nejhůře znÄ›jící vzorkovací metoda. JednoduÅ¡e vybírá " -"nejbližší vzorek." - -#: src/sid/xs_interface.c:658 -msgid "Linear interpolation" -msgstr "Lineární interpolace" - -#: src/sid/xs_interface.c:662 -msgid "" -"Uses linear interpolation between samples, yielding higher audio quality " -"with less sampling noise." -msgstr "" -"Používá lineární interpolaci mezi vzorky. Tím dosahuje vyšší kvality zvuku " -"s menšími ruchy." - -#: src/sid/xs_interface.c:673 -msgid "Resampling (FIR)" -msgstr "PÅ™evzorkování (FIR)" - -#: src/sid/xs_interface.c:680 -msgid "reSID sampling options:" -msgstr "Nastavení pÅ™evzorkování reSIDu:" - -#: src/sid/xs_interface.c:685 -msgid "Emu#2" -msgstr "Emu#2" - -#: src/sid/xs_interface.c:697 -msgid "Emulate filters" -msgstr "Emulovat filtry" - -#: src/sid/xs_interface.c:701 -msgid "" -"This option enables emulation of SID filter. The filter is an essential part " -"of SID's sound capacity, but accurate emulation of it may require quite much " -"CPU power. However, if filter emulation is disabled, tunes won't sound " -"authentic at all if they utilize the filter." -msgstr "" -"Tato volba zapíná emulaci SID filtru. Tento filtr je nepostradatelnou " -"souÄástí výbavy SIDU, avÅ¡ak jeho pÅ™esná emulace může vyžadovat hodnÄ› výkonu " -"CPU. Vypnete-li filtr, sklady které jej používají, nebudou vůbec znít " -"vÄ›rohodnÄ›." - -#: src/sid/xs_interface.c:726 -msgid "FS" -msgstr "FS" - -#: src/sid/xs_interface.c:743 -msgid "FM" -msgstr "FM" - -#: src/sid/xs_interface.c:760 -msgid "FT" -msgstr "FT" - -#: src/sid/xs_interface.c:771 -msgid "Reset values" -msgstr "Resetovat hodnoty" - -#: src/sid/xs_interface.c:776 -msgid "SIDPlay1" -msgstr "SIDPlay1" - -#: src/sid/xs_interface.c:817 -msgid "Export" -msgstr "Exportovat" - -#: src/sid/xs_interface.c:825 -msgid "Use" -msgstr "Použít" - -#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:430 -msgid "Save" -msgstr "Uložit" - -#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:429 -msgid "Import" -msgstr "Importovat" - -#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:431 -msgid "Delete" -msgstr "Smazat" - -#: src/sid/xs_interface.c:863 -msgid "Filter curve:" -msgstr "KÅ™ivka filtru:" - -#: src/sid/xs_interface.c:868 -msgid "SIDPlay2" -msgstr "SIDPlay2" - -#: src/sid/xs_interface.c:874 -msgid "Filters" -msgstr "Filtry" - -#: src/sid/xs_interface.c:897 -msgid "Play at least for specified time" -msgstr "Hrát alespoň po urÄenou dobu" - -#: src/sid/xs_interface.c:901 -msgid "" -"If enabled, the tune is played at least for the specified time, adding " -"silence to the end if necessary." -msgstr "" -"Je-li zapnuto, skladba bude hrána alespoň po zadanou dobu, případnÄ› na konec " -"bude pÅ™idáno ticho." - -#: src/sid/xs_interface.c:908 src/sid/xs_interface.c:962 -#: src/sid/xs_interface.c:1142 -msgid "Playtime:" -msgstr "Doba pÅ™ehrávání:" - -#: src/sid/xs_interface.c:928 -msgid "Minimum playtime:" -msgstr "Minimální doba pÅ™ehrávání:" - -#: src/sid/xs_interface.c:945 -msgid "Play for specified time maximum" -msgstr "PÅ™ehrávat do maximální požadované doby" - -#: src/sid/xs_interface.c:949 -msgid "" -"If enabled, tune is played until specified duration is reached (aka maximum " -"playtime)." -msgstr "" -"Je-li zapnuto, skladba bude hrána nejvýše po zadanou dobu (tj. maximální " -"délku pÅ™ehrávání)." - -#: src/sid/xs_interface.c:951 -msgid "Only when song length is unknown" -msgstr "Jen není-li délka skladby známa" +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" +msgstr "O výstupním modulu SDL" + +#: src/sdlout/plugin.c:78 +msgid "SDL error" +msgstr "Chyba SDL" -#: src/sid/xs_interface.c:955 -msgid "" -"If enabled, the maximum playtime is applied only if song/tune length is not " -"known." -msgstr "" -"Je-li zapnuto, maximální doba pÅ™ehrávání bude uplatnÄ›na jen tehdy, nebude-li " -"délka skladby známa." - -#: src/sid/xs_interface.c:982 -msgid "Maximum playtime:" -msgstr "Maximální doba pÅ™ehrávání:" - -#: src/sid/xs_interface.c:999 -msgid "Use XSIDPLAY-compatible database" -msgstr "Použít databázi kompatibilní s XSIDPLAY" - -#: src/sid/xs_interface.c:1003 -msgid "" -"This option enables using of XSIDPLAY compatible song length database. " -"(Refer to Audacious-SID documentation for more information)" -msgstr "" -"Tato volba zapíná použití databáze délek skladeb kompatibilní " -"s XSIDPLAY. (Podrobnosti naleznete v dokumentaci k Audacious-SID modulu.)" - -#: src/sid/xs_interface.c:1010 -msgid "DB-file:" -msgstr "Databázový soubor:" - -#: src/sid/xs_interface.c:1020 -msgid "Database path and filename" -msgstr "Cesta k databázi a jméno souboru" - -#: src/sid/xs_interface.c:1027 -msgid "Browse for song length-database file" -msgstr "Ukázat soubor s databází délek" - -#: src/sid/xs_interface.c:1049 -msgid "Song length database:" -msgstr "Databáze s délkou skladeb:" - -#: src/sid/xs_interface.c:1054 -msgid "Songlength" -msgstr "Délka skladby" - -#: src/sid/xs_interface.c:1072 -msgid "Override generic Tuplez format string" -msgstr "PÅ™epsat původní formátovací Å™etÄ›zec Tuplez" - -#: src/sid/xs_interface.c:1076 -msgid "" -"By enabling this option you can specify a custom Tuplez formatting string " -"for SID-files. The SID-plugin specific Tuplez tags are described shortly " -"below." -msgstr "" -"Po povolením této volby lze uživatelem urÄit formátovací Å™etÄ›zec Tuplez pro " -"SID soubory. Tuplez znaÄky modulu SID jsou popsány níže." - -#: src/sid/xs_interface.c:1087 -msgid "Tuplez format string for SID-files" -msgstr "Formátovací Å™etÄ›zec Tuplez pro soubory SID" - -#: src/sid/xs_interface.c:1090 -msgid "" -"SID-specific Tuplez fields:\n" -"\n" -"sid-format\t\t- Specific fileformat\n" -"sid-model\t\t- 6581 or 8580\n" -"sid-speed\t\t- Timing or speed: PAL/NTSC/etc.\n" -"\n" -"Other \"special\" fields set:\n" -"\n" -"subsong-num, subsong-id" -msgstr "" -"SIDové položky Tuplez:\n" -"\n" -"sid-format\t\t– Výslovný formát souboru\n" -"sid-model\t\t– 6581 nebo 8580\n" -"sid-speed\t\t– Časování nebo rychlost: PAL/NTSC atd..\n" -"\n" -"Další „zvláštní“ sady položek:\n" -"\n" -"subsong-num, subsong-id" - -#: src/sid/xs_interface.c:1098 -msgid "Song title format:" -msgstr "Formát názvu skladby:" - -#: src/sid/xs_interface.c:1103 -msgid "Title" -msgstr "Název" - -#: src/sid/xs_interface.c:1125 -msgid "Add sub-tunes to playlist" -msgstr "Do seznamu skladeb pÅ™idat podskladby" - -#: src/sid/xs_interface.c:1129 -msgid "" -"If enabled, sub-tunes of each file will be added to playlist. If disabled, " -"only the default sub-tune will be added." -msgstr "" -"Je-li zapnuto, podskladby každého souboru budou pÅ™idány do seznamu skladeb. " -"Je-li vypnuto, bude pÅ™idána pouze výchozí podskladba." - -#: src/sid/xs_interface.c:1131 -msgid "Only tunes with specified minimum duration" -msgstr "Jen skladby se zadanou minimální délkou" - -#: src/sid/xs_interface.c:1135 -msgid "Only add sub-tunes that have a duration of at least specified time." -msgstr "PÅ™idat pouze podskladby, jejichž délka je vÄ›tší nebo rovna zadané." - -#: src/sid/xs_interface.c:1162 -msgid "Sub-tune handling:" -msgstr "Zacházení s podskladbami:" - -#: src/sid/xs_interface.c:1179 -msgid "Use STIL database" -msgstr "Používat databázi STIL" - -#: src/sid/xs_interface.c:1183 -msgid "" -"If this option is enabled (and the database & HVSC settings below are " -"correctly set), Audacious-SID will use and display additional information " -"from STIL database when HVSC SIDs are played." -msgstr "" -"Je-li tato volba povolena (a databáze a HVSC konfigurace níže správnÄ› " -"nastavena), Audacious-SID použije a zobrazí dodateÄné informace z databáze " -"STIL, je-li hrána skladba z HVSC." - -#: src/sid/xs_interface.c:1190 -msgid "STIL file:" -msgstr "Soubor STIL:" - -#: src/sid/xs_interface.c:1206 -msgid "" -"Path and filename of STIL database file (STIL.txt), usually found from " -"HVSC's DOCUMENTS-subdirectory." -msgstr "" -"Cesta a jméno souboru souboru s databází STIL (STIL.txt). Obvykle se nachází " -"v podadresáři DOCUMENTS od HVSC." - -#: src/sid/xs_interface.c:1219 -msgid "Browse for STIL-database file" -msgstr "Ukázat na soubor s databází STIL" - -#: src/sid/xs_interface.c:1246 -msgid "HVSC path:" -msgstr "Cesta k HVSC" - -#: src/sid/xs_interface.c:1262 -msgid "" -"Path to base-directory of your High Voltage SID Collection (HVSC), for " -"example /media/C64Music/" -msgstr "" -"Cesta ke koÅ™enovému adresáři vaší High Voltage SID sbírce (HVSC). Na příklad " -"„/media/C64Music/“." - -#: src/sid/xs_interface.c:1275 -msgid "Browse for HVSC path" -msgstr "Ukázat cestu k HSVC" - -#: src/sid/xs_interface.c:1297 -msgid "SID Tune Information List (STIL) database:" -msgstr "Databáze SID Tune Information List (STIL):" - -#: src/sid/xs_interface.c:1321 -msgid "Cancel any changes" -msgstr "Jakékoliv zmÄ›ny zamítnout" - -#: src/sid/xs_interface.c:1328 -msgid "Accept and update changes" -msgstr "PÅ™ijmout a provést zmÄ›ny" - -#: src/sid/xs_interface.c:1628 -msgid "Audacious-SID Fileinfo" -msgstr "Audacious – Informace o souboru SID" - -#: src/sid/xs_interface.c:1649 -msgid "Filename:" -msgstr "Jméno souboru:" - -#: src/sid/xs_interface.c:1657 -msgid "Songname:" -msgstr "Název skladby:" - -#: src/sid/xs_interface.c:1665 -msgid "Composer:" -msgstr "Skladatel:" - -#: src/sid/xs_interface.c:1673 -msgid "Copyright:" -msgstr "Autorská práva:" - -#: src/sid/xs_interface.c:1717 -msgid "Song Information:" -msgstr "Informace o skladbÄ›:" - -#: src/sid/xs_interface.c:1752 -msgid "Author:" -msgstr "Autor:" - -#: src/sid/xs_interface.c:1786 -msgid "Duration:" -msgstr "Délka:" - -#: src/sid/xs_interface.c:1820 -msgid "Sub-tune Information:" -msgstr "Informace o podskladbách" - -#: src/sid/xs_interface.c:1881 -msgid "Select HVSC song length database" -msgstr "Vybrat databázi délek skladeb od HVSC" - -#: src/sid/xs_interface.c:1922 -msgid "Select STIL-database" -msgstr "Vybrat databázi STIL" - -#: src/sid/xs_interface.c:1963 -msgid "Select HVSC location prefix" -msgstr "Vybrat cestu k HVSC" - -#: src/sid/xs_interface.c:2004 -msgid "Select SIDPlay2 filters file for importing" -msgstr "Vybrat soubor se SIDPlay2 filtry pro import" - -#: src/sid/xs_interface.c:2045 -msgid "Select SIDPlay2 filters file for exporting" -msgstr "Vybrat soubor se SIDPlay2 filtry pro export" - -#: src/sid/xs_interface.c:2093 src/sid/xs_interface.c:2106 -msgid "Confirm selected action" -msgstr "Potvrdit vybrané akce" - -#: src/sid/xs_interface.c:2123 -msgid "Yes" -msgstr "Ano" - -#: src/sid/xs_interface.c:2129 -msgid "No" -msgstr "Ne" - -#: src/skins/plugin.c:179 +#: src/skins/plugin.c:165 msgid "About Skinned GUI" msgstr "O GUI s mÄ›nitelným vzhledem" -#: src/skins/plugin.c:180 +#: src/skins/plugin.c:166 msgid "" "Copyright (c) 2008, by Tomasz MoÅ„ \n" "\n" @@ -4582,685 +2494,804 @@ "Copyright © 2008, Tomasz MoÅ„ \n" "\n" -#: src/skins/plugin.c:196 -msgid "Skinned Interface" -msgstr "Témata rozhraní" - -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:207 msgid "_Player:" msgstr "_PÅ™ehrávaÄ:" -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:208 msgid "Select main player window font:" msgstr "Font v hlavním oknÄ› pÅ™ehrávaÄe:" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:210 msgid "_Playlist:" msgstr "_Seznamu skladeb:" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:211 msgid "Select playlist font:" msgstr "Vyberte font pro seznam skladeb:" -#: src/skins/skins_cfg.c:321 +#: src/skins/skins_cfg.c:215 msgid "_Fonts" msgstr "_Fonty" -#: src/skins/skins_cfg.c:323 -msgid "Use Bitmap fonts if available" -msgstr "Pokud možno, používat bitmapové fonty" - -#: src/skins/skins_cfg.c:323 -msgid "" -"Use bitmap fonts if they are available. Bitmap fonts do not support Unicode " -"strings." -msgstr "" -"Pokud to bude možné, použijí se bitmapové fonty. Bitmapové fonty nepodporují " -"unicodové Å™etÄ›zce." - -#: src/skins/skins_cfg.c:324 -msgid "_Miscellaneous" -msgstr "_Různé" - -#: src/skins/skins_cfg.c:325 -msgid "Show separators in playlist" -msgstr "Zobrazovat oddÄ›lovaÄe v seznamu skladeb" - -#: src/skins/skins_cfg.c:327 -msgid "Show window manager decoration" -msgstr "Zobrazovat dekoraci podle správce oken" - -#: src/skins/skins_cfg.c:328 -msgid "This enables the window manager to show decorations for windows." -msgstr "" -"Tímto necháte rozhodnutí na správci oken, kdy má zobrazovat dekorace oken." +#: src/skins/skins_cfg.c:218 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "Použít bitmapové fonty (podporuje pouze ASCII)" + +#: src/skins/skins_cfg.c:220 +msgid "Scroll song title in both directions" +msgstr "PÅ™evíjet název skladby obÄ›ma smÄ›ry" -#: src/skins/skins_cfg.c:329 -msgid "Use two-way text scroller" -msgstr "Pohybovat textem v obou smÄ›rech" +#: src/skins/skins_cfg.c:298 +msgid "_Skin" +msgstr "_Vzhled" -#: src/skins/skins_cfg.c:330 -msgid "" -"If selected, the file information text in the main window will scroll back " -"and forth. If not selected, the text will only scroll in one direction." -msgstr "" -"Bude-li vybráno, text s informacemi v hlavním oknÄ› bude bÄ›hat tam a zpÄ›t. " -"Nebude-li vybráno, text se bude pohybovat jen jedním smÄ›rem." +#: src/skins/skins_cfg.c:345 +msgid "Interface Preferences" +msgstr "Nastavení rozhraní" -#: src/skins/skins_cfg.c:331 -msgid "Disable inline gtk theme" -msgstr "Zakázat vnitÅ™ní téma GTK" +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "PÅ™edzesílení" -#: src/skins/skins_cfg.c:333 -msgid "Random skin on play" -msgstr "PÅ™i pÅ™ehrávání zvolit náhodné téma" +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" +msgstr "31 Hz" -#: src/skins/skins_cfg.c:334 -msgid "Allow loading incomplete skins" -msgstr "Povolit naÄítání neúplných vzhledů" +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "63 Hz" -#: src/skins/skins_cfg.c:335 -msgid "" -"If selected, audacious won't refuse loading broken skins. Use only if your " -"favourite skin doesn't work" -msgstr "" -"Je-li vybráno, Audacious neodmítne nahrát rozbitý vzhled. Použijte jen, když " -"váš oblíbený vzhled nefunguje." +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" +msgstr "125 Hz" -#: src/skins/skins_cfg.c:401 -msgid "Color Adjustment" -msgstr "PÅ™izpůsobení barvy" +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" +msgstr "250 Hz " -#: src/skins/skins_cfg.c:407 -msgid "" -"Audacious allows you to alter the color balance of the skinned UI. The " -"sliders below will allow you to do this." -msgstr "" -"Audacious umožňuje zmÄ›nit zabarvení mÄ›nitelného vzhledu uživatelského " -"rozhraní pomocí následujících jezdců." +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" +msgstr "500 Hz" -#: src/skins/skins_cfg.c:417 -msgid "Blue" -msgstr "Modrá" +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" +msgstr "1 kHz" -#: src/skins/skins_cfg.c:424 -msgid "Green" -msgstr "Zelená" +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" +msgstr "2 kHz" -#: src/skins/skins_cfg.c:431 -msgid "Red" -msgstr "ÄŒervená" +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" +msgstr "4 kHz" -#: src/skins/skins_cfg.c:569 -msgid "_Skin" -msgstr "_Vzhled" +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" +msgstr "8 kHz" -#: src/skins/skins_cfg.c:574 -#, fuzzy -msgid "Color adjustment ..." -msgstr "PÅ™izpůsobení barvy" +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" +msgstr "16 kHz" -#: src/skins/ui_equalizer.c:463 +#: src/skins/ui_equalizer.c:379 msgid "Audacious Equalizer" msgstr "Ekvalizér" -#: src/skins/ui_equalizer.c:991 +#: src/skins/ui_equalizer.c:896 msgid "Presets" msgstr "PÅ™edvolby" -#: src/skins/ui_main.c:593 +#: src/skins/ui_main.c:443 msgid "kbps" msgstr "kb/s" -#: src/skins/ui_main.c:601 +#: src/skins/ui_main.c:451 msgid "kHz" msgstr "kHz" -#: src/skins/ui_main.c:608 +#: src/skins/ui_main.c:458 msgid "surround" msgstr "prostorový zvuk" -#: src/skins/ui_main.c:981 -msgid "Audacious - visibility warning" -msgstr "Audacious – varování o viditelnosti" - -#: src/skins/ui_main.c:984 -msgid "Show main player window" -msgstr "Zobrazit hlavním okno pÅ™ehrávaÄe" - -#: src/skins/ui_main.c:985 -msgid "Ignore" -msgstr "Ignorovat" - -#: src/skins/ui_main.c:991 -msgid "" -"Audacious has been started with all of its windows hidden.\n" -"You may want to show the player window again to control Audacious; " -"otherwise, you'll have to control it remotely via audtool or enabled plugins " -"(such as the statusicon plugin)." -msgstr "" -"Audacious byl spuÅ¡tÄ›n se vÅ¡emi svými okny skrytými.\n" -"Asi budete chtít opÄ›t zobrazit okno pÅ™ehrávaÄe, abyste mohli Audacious " -"ovládat. V opaÄném případÄ› si budete muset vystaÄit se vzdáleným ovládáním " -"pÅ™es audtool nebo povolený zásuvný modul (napÅ™. modul statusicon)." - -#: src/skins/ui_main.c:997 -msgid "Always ignore, show/hide is controlled remotely" -msgstr "Vždy ignorovat, zobrazit/skrýt se ovládá vzdálenÄ›" - -#: src/skins/ui_main.c:1042 -msgid "Audacious - broken GTK engine usage warning" -msgstr "Audacious – varování o rozbitém jádru GTK" - -#: src/skins/ui_main.c:1050 -#, c-format -msgid "" -"Broken GTK engine in use\n" -"\n" -"Audacious has detected that you are using a broken GTK engine.\n" -"\n" -"The theme engine you are using, %s, is incompatible with some of the " -"features used by modern skins. The incompatible features have been disabled " -"for this session.\n" -"\n" -"To use these features, please consider using a different GTK theme engine." -msgstr "" -"Používá se rozbité jádro GTK\n" -"\n" -"Audacious zjistil, že používáte GTK s rozbitým jádrem.\n" -"\n" -"Jádro pro zpracování témat, které používáte (%s), není sluÄitelné " -"s nÄ›kterými funkcemi používanými moderními vzhledy. Pro tuto relaci byly " -"problematické funkce vypnuty.\n" -" \n" -"Abyste mohli využít tÄ›chto funkcí, zvažte použití jiného tématického jádra " -"GTK." - -#: src/skins/ui_main.c:1061 -msgid "Do not display this warning again" -msgstr "Toto varování již příštÄ› nezobrazovat" - -#: src/skins/ui_main.c:1269 +#: src/skins/ui_main.c:806 #, c-format -msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)" -msgstr "PÅ™ejít na: %d:%-2.2d/%d:%-2.2d (%d %%)" +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "PÅ™ejít na %d:%-2.2d / %d:%-2.2d" -#: src/skins/ui_main.c:1299 +#: src/skins/ui_main.c:827 #, c-format msgid "Volume: %d%%" msgstr "Hlasitost: %d %%" -#: src/skins/ui_main.c:1322 +#: src/skins/ui_main.c:850 #, c-format msgid "Balance: %d%% left" msgstr "Vyvážení: %d %% vlevo" -#: src/skins/ui_main.c:1324 +#: src/skins/ui_main.c:852 msgid "Balance: center" msgstr "Vyvážení: stÅ™ed" -#: src/skins/ui_main.c:1326 +#: src/skins/ui_main.c:854 #, c-format msgid "Balance: %d%% right" msgstr "Vyvážení: %d %% vpravo" -#: src/skins/ui_main.c:1618 +#: src/skins/ui_main.c:980 msgid "Options Menu" msgstr "Nabídka nastavení" -#: src/skins/ui_main.c:1622 +#: src/skins/ui_main.c:984 msgid "Disable 'Always On Top'" msgstr "Vypnout „Vždy na vrchu“" -#: src/skins/ui_main.c:1624 +#: src/skins/ui_main.c:986 msgid "Enable 'Always On Top'" msgstr "Zapnout „Vždy na vrchu“" -#: src/skins/ui_main.c:1627 +#: src/skins/ui_main.c:989 msgid "File Info Box" msgstr "Informace o souboru" -#: src/skins/ui_main.c:1631 -msgid "Disable 'GUI Scaling'" -msgstr "Zakázat „Škálovat GUI“" - -#: src/skins/ui_main.c:1633 -msgid "Enable 'GUI Scaling'" -msgstr "Povolit „škálovat GUI“" - -#: src/skins/ui_main.c:1636 +#: src/skins/ui_main.c:994 msgid "Visualization Menu" msgstr "Nabídka znázornÄ›ní" -#: src/skins/ui_main.c:2348 +#: src/skins/ui_main.c:1648 msgid "Single mode." msgstr "Režim jedné skladby." -#: src/skins/ui_main.c:2350 +#: src/skins/ui_main.c:1650 msgid "Playlist mode." msgstr "Režim seznamu skladeb." -#: src/skins/ui_main.c:2374 +#: src/skins/ui_main.c:1672 msgid "Stopping after song." msgstr "Zastavuje po skladbÄ›." -#: src/skins/ui_main.c:2376 +#: src/skins/ui_main.c:1674 msgid "Not stopping after song." msgstr "Po skladbÄ› nezastavuje." -#: src/skins/ui_manager.c:50 src/skins/ui_manager.c:51 +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 msgid "Autoscroll Songname" msgstr "Automatický posun názvu skladby" -#: src/skins/ui_manager.c:56 src/skins/ui_manager.c:57 +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "Zastavit po souÄasné skladbÄ›" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 msgid "Peaks" msgstr "Vrcholky" -#: src/skins/ui_manager.c:68 src/skins/ui_manager.c:69 -msgid "Show Player" -msgstr "Zobrazit pÅ™ehrávaÄ" +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "Opakovat" -#: src/skins/ui_manager.c:71 src/skins/ui_manager.c:72 -msgid "Show Playlist Editor" -msgstr "Zobrazit editor seznamu skladeb" +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "Náhodné pÅ™ehrávání" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "Žádné pokraÄování dle seznamu skladeb" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 +msgid "Show Player" +msgstr "Zobrazit pÅ™ehrávaÄ" -#: src/skins/ui_manager.c:74 src/skins/ui_manager.c:75 +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 +msgid "Show Playlist Editor" +msgstr "Zobrazit editor seznamu skladeb" + +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 msgid "Show Equalizer" msgstr "Ukázat ekvalizér" -#: src/skins/ui_manager.c:77 src/skins/ui_manager.c:78 +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 msgid "Always on Top" msgstr "Vždy na vrchu" -#: src/skins/ui_manager.c:80 src/skins/ui_manager.c:81 +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 msgid "Put on All Workspaces" msgstr "Zobrazovat na vÅ¡ech plochách" -#: src/skins/ui_manager.c:83 src/skins/ui_manager.c:84 +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 msgid "Roll up Player" msgstr "Sbalit pÅ™ehrávaÄ" -#: src/skins/ui_manager.c:86 src/skins/ui_manager.c:87 +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 msgid "Roll up Playlist Editor" msgstr "Sbalit editor seznamu skladeb" -#: src/skins/ui_manager.c:89 src/skins/ui_manager.c:90 +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 msgid "Roll up Equalizer" msgstr "Sbalit ekvalizér" -#: src/skins/ui_manager.c:92 src/sndstretch/sndstretch_xmms.c:393 -msgid "Scale" -msgstr "Natažení" - -#: src/skins/ui_manager.c:93 -msgid "DoubleSize" -msgstr "Dvojitá velikost" - -#: src/skins/ui_manager.c:95 src/skins/ui_manager.c:96 -msgid "Easy Move" -msgstr "Snadný pohyb" - -#: src/skins/ui_manager.c:104 +#: src/skins/ui_manager.c:115 msgid "Analyzer" msgstr "Analyzátor" -#: src/skins/ui_manager.c:105 +#: src/skins/ui_manager.c:116 msgid "Scope" msgstr "Vlnovka" -#: src/skins/ui_manager.c:106 +#: src/skins/ui_manager.c:117 msgid "Voiceprint" msgstr "Otisk" -#: src/skins/ui_manager.c:107 +#: src/skins/ui_manager.c:118 msgid "Off" msgstr "Žádný" -#: src/skins/ui_manager.c:111 src/skins/ui_manager.c:128 -#: src/skins/ui_manager.c:134 +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 msgid "Normal" msgstr "Normální" -#: src/skins/ui_manager.c:112 src/skins/ui_manager.c:129 +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 msgid "Fire" msgstr "Oheň" -#: src/skins/ui_manager.c:113 +#: src/skins/ui_manager.c:124 msgid "Vertical Lines" msgstr "Svislé Äáry" -#: src/skins/ui_manager.c:117 +#: src/skins/ui_manager.c:128 msgid "Lines" msgstr "Čáry" -#: src/skins/ui_manager.c:118 +#: src/skins/ui_manager.c:129 msgid "Bars" msgstr "Sloupce" -#: src/skins/ui_manager.c:122 +#: src/skins/ui_manager.c:133 msgid "Dot Scope" msgstr "TeÄková vlnovka" -#: src/skins/ui_manager.c:123 +#: src/skins/ui_manager.c:134 msgid "Line Scope" msgstr "Čárová vlnovka" -#: src/skins/ui_manager.c:124 +#: src/skins/ui_manager.c:135 msgid "Solid Scope" msgstr "Plná vlnovka" -#: src/skins/ui_manager.c:130 +#: src/skins/ui_manager.c:141 msgid "Ice" msgstr "Led" -#: src/skins/ui_manager.c:135 +#: src/skins/ui_manager.c:146 msgid "Smooth" msgstr "Plynulý" -#: src/skins/ui_manager.c:139 src/skins/ui_manager.c:147 +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 msgid "Slowest" msgstr "Nejpomalejší" -#: src/skins/ui_manager.c:140 src/skins/ui_manager.c:148 +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 msgid "Slow" msgstr "Pomalé" -#: src/skins/ui_manager.c:141 src/skins/ui_manager.c:149 +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 msgid "Medium" msgstr "StÅ™ední" -#: src/skins/ui_manager.c:142 src/skins/ui_manager.c:150 +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 msgid "Fast" msgstr "Rychlé" -#: src/skins/ui_manager.c:143 src/skins/ui_manager.c:151 +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 msgid "Fastest" msgstr "Nejrychlejší" -#: src/skins/ui_manager.c:155 +#: src/skins/ui_manager.c:166 msgid "Time Elapsed" msgstr "Dosažený Äas" -#: src/skins/ui_manager.c:156 +#: src/skins/ui_manager.c:167 msgid "Time Remaining" msgstr "Zbývající Äas" -#: src/skins/ui_manager.c:185 +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "Pozastavit" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "PÅ™edchozí" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "Další" + +#: src/skins/ui_manager.c:196 msgid "Visualization" msgstr "ZnázornÄ›ní" -#: src/skins/ui_manager.c:186 +#: src/skins/ui_manager.c:197 msgid "Visualization Mode" msgstr "Typ znázornÄ›ní" -#: src/skins/ui_manager.c:187 +#: src/skins/ui_manager.c:198 msgid "Analyzer Mode" msgstr "Režim analyzátoru" -#: src/skins/ui_manager.c:188 +#: src/skins/ui_manager.c:199 msgid "Scope Mode" msgstr "Typ vlnovky" -#: src/skins/ui_manager.c:189 +#: src/skins/ui_manager.c:200 msgid "Voiceprint Mode" msgstr "Typ otisku" -#: src/skins/ui_manager.c:190 +#: src/skins/ui_manager.c:201 msgid "WindowShade VU Mode" msgstr "Typ WindowShade VU" -#: src/skins/ui_manager.c:191 +#: src/skins/ui_manager.c:202 msgid "Analyzer Falloff" msgstr "Klesání sloupců" -#: src/skins/ui_manager.c:192 +#: src/skins/ui_manager.c:203 msgid "Peaks Falloff" msgstr "Klesání vrcholků" -#: src/skins/ui_manager.c:202 src/skins/ui_manager.c:203 +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "Seznam skladeb" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "Nový seznam skladeb" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 msgid "Select Next Playlist" msgstr "Vybrat následující seznam skladeb" -#: src/skins/ui_manager.c:205 src/skins/ui_manager.c:206 +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 msgid "Select Previous Playlist" msgstr "Vybrat pÅ™edchozí seznam skladeb" +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "Smazat seznam skladeb" + #: src/skins/ui_manager.c:222 +msgid "Import Playlist" +msgstr "Importovat seznam skladeb" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "NaÄte soubor se seznamem skladeb do vybraného seznamu." + +#: src/skins/ui_manager.c:226 +msgid "Export Playlist" +msgstr "Exportovat seznam skladeb" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "Uloží vybraný seznam skladeb." + +#: src/skins/ui_manager.c:229 msgid "Refresh List" msgstr "Obnovit seznam" -#: src/skins/ui_manager.c:226 -msgid "List Manager" -msgstr "Správce seznamů" +#: src/skins/ui_manager.c:230 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "Obnovuje metadata náležící skladbÄ› ze seznamu." + +#: src/skins/ui_manager.c:233 +msgid "Playlist Manager" +msgstr "Správce seznamů skladeb" + +#: src/skins/ui_manager.c:234 +msgid "Queue Manager" +msgstr "Správce fronty" + +#: src/skins/ui_manager.c:237 +msgid "View" +msgstr "Zobrazení" + +#: src/skins/ui_manager.c:238 +msgid "Interface" +msgstr "Rozhraní" -#: src/skins/ui_manager.c:236 +#: src/skins/ui_manager.c:239 +msgid "Interface Preferences ..." +msgstr "Nastavení rozhraní…" + +#: src/skins/ui_manager.c:243 msgid "Add Internet Address..." msgstr "PÅ™idat internetovou adresu…" -#: src/skins/ui_manager.c:240 +#: src/skins/ui_manager.c:244 +msgid "Adds a remote track to the playlist." +msgstr "Do seznamu pÅ™idá vzdálenou stopu." + +#: src/skins/ui_manager.c:247 msgid "Add Files..." msgstr "PÅ™idat soubory…" -#: src/skins/ui_manager.c:246 +#: src/skins/ui_manager.c:248 +msgid "Adds files to the playlist." +msgstr "PÅ™idá soubory do seznamu skladeb." + +#: src/skins/ui_manager.c:253 msgid "Search and Select" msgstr "Hledání a výbÄ›r" -#: src/skins/ui_manager.c:247 +#: src/skins/ui_manager.c:254 msgid "" "Searches the playlist and selects playlist entries based on specific " "criteria." msgstr "" "Prohledá seznam skladeb a vybere skladby ze seznamu podle zadaných omezení." -#: src/skins/ui_manager.c:250 +#: src/skins/ui_manager.c:257 msgid "Invert Selection" msgstr "Invertovat výbÄ›r" -#: src/skins/ui_manager.c:251 +#: src/skins/ui_manager.c:258 msgid "Inverts the selected and unselected entries." msgstr "ZamÄ›ní vybrané a nevybrané položky." -#: src/skins/ui_manager.c:268 +#: src/skins/ui_manager.c:261 +msgid "Select All" +msgstr "Vybrat vÅ¡e" + +#: src/skins/ui_manager.c:262 +msgid "Selects all of the playlist entries." +msgstr "Vybere vÅ¡echny skladby v seznamu." + +#: src/skins/ui_manager.c:265 +msgid "Select None" +msgstr "Nevybrat žádné" + +#: src/skins/ui_manager.c:266 +msgid "Deselects all of the playlist entries." +msgstr "Žádná skladba v seznamu nebude vybraná." + +#: src/skins/ui_manager.c:271 +msgid "Remove All" +msgstr "Odebrat vÅ¡echny" + +#: src/skins/ui_manager.c:272 +msgid "Removes all entries from the playlist." +msgstr "Ze seznamu odstraní vÅ¡echny skladby." + +#: src/skins/ui_manager.c:275 msgid "Clear Queue" msgstr "Vyprázdnit frontu" -#: src/skins/ui_manager.c:269 +#: src/skins/ui_manager.c:276 msgid "Clears the queue associated with this playlist." msgstr "Vyprázdní frontu spojenou s tímto seznamem skladeb." -#: src/skins/ui_manager.c:272 +#: src/skins/ui_manager.c:279 msgid "Remove Unavailable Files" msgstr "Odstranit nedostupné soubory" -#: src/skins/ui_manager.c:273 +#: src/skins/ui_manager.c:280 msgid "Removes unavailable files from the playlist." msgstr "Ze seznamu skladeb odstraní nedostupné soubory." -#: src/skins/ui_manager.c:276 +#: src/skins/ui_manager.c:283 msgid "Remove Duplicates" msgstr "Odebrat duplikáty" -#: src/skins/ui_manager.c:279 +#: src/skins/ui_manager.c:285 src/skins/ui_manager.c:317 +#: src/skins/ui_manager.c:347 +msgid "By Title" +msgstr "Podle názvu" + +#: src/skins/ui_manager.c:286 msgid "Removes duplicate entries from the playlist by title." msgstr "Ze seznamu odstraní skladby na základÄ› jejich názvu." -#: src/skins/ui_manager.c:282 src/skins/ui_manager.c:318 -#: src/skins/ui_manager.c:348 +#: src/skins/ui_manager.c:289 src/skins/ui_manager.c:329 +#: src/skins/ui_manager.c:359 msgid "By Filename" msgstr "Podle jména souboru" -#: src/skins/ui_manager.c:283 +#: src/skins/ui_manager.c:290 msgid "Removes duplicate entries from the playlist by filename." msgstr "Ze seznamu odstraní skladby na základÄ› jména souboru." -#: src/skins/ui_manager.c:286 src/skins/ui_manager.c:322 -#: src/skins/ui_manager.c:352 +#: src/skins/ui_manager.c:293 src/skins/ui_manager.c:333 +#: src/skins/ui_manager.c:363 msgid "By Path + Filename" msgstr "Podle cesty a jména souboru" -#: src/skins/ui_manager.c:287 +#: src/skins/ui_manager.c:294 msgid "Removes duplicate entries from the playlist by their full path." msgstr "Ze seznamu odstraní skladby na základÄ› celé cesty." -#: src/skins/ui_manager.c:300 +#: src/skins/ui_manager.c:297 +msgid "Remove Unselected" +msgstr "Odebrat neoznaÄené" + +#: src/skins/ui_manager.c:298 +msgid "Remove unselected entries from the playlist." +msgstr "Odebrat neoznaÄené skladby se seznamu." + +#: src/skins/ui_manager.c:301 +msgid "Remove Selected" +msgstr "Odebrat oznaÄené" + +#: src/skins/ui_manager.c:302 +msgid "Remove selected entries from the playlist." +msgstr "Odebrat oznaÄené skladby ze seznamu." + +#: src/skins/ui_manager.c:307 +msgid "Randomize List" +msgstr "Zamíchat poÅ™adí" + +#: src/skins/ui_manager.c:308 +msgid "Randomizes the playlist." +msgstr "Sklady v seznamu seÅ™adí náhodnÄ›." + +#: src/skins/ui_manager.c:311 msgid "Reverse List" msgstr "OtoÄit seznam" -#: src/skins/ui_manager.c:301 +#: src/skins/ui_manager.c:312 msgid "Reverses the playlist." msgstr "Obrátí poÅ™adí skladeb v seznamu." -#: src/skins/ui_manager.c:304 +#: src/skins/ui_manager.c:315 msgid "Sort List" msgstr "SeÅ™adit seznam" -#: src/skins/ui_manager.c:307 src/skins/ui_manager.c:337 +#: src/skins/ui_manager.c:318 src/skins/ui_manager.c:348 msgid "Sorts the list by title." msgstr "SeÅ™adí seznam podle názvu." -#: src/skins/ui_manager.c:311 src/skins/ui_manager.c:341 +#: src/skins/ui_manager.c:321 src/skins/ui_manager.c:351 +msgid "By Album" +msgstr "Podle alba" + +#: src/skins/ui_manager.c:322 src/skins/ui_manager.c:352 msgid "Sorts the list by album." msgstr "SeÅ™adí seznam podle alba." -#: src/skins/ui_manager.c:315 src/skins/ui_manager.c:345 +#: src/skins/ui_manager.c:325 src/skins/ui_manager.c:355 +msgid "By Artist" +msgstr "Podle umÄ›lce" + +#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 msgid "Sorts the list by artist." msgstr "Skladby v seznam seÅ™adí podle jména umÄ›lce." -#: src/skins/ui_manager.c:319 src/skins/ui_manager.c:349 +#: src/skins/ui_manager.c:330 src/skins/ui_manager.c:360 msgid "Sorts the list by filename." msgstr "Skladby v seznamu seÅ™adí podle jména souboru" -#: src/skins/ui_manager.c:323 src/skins/ui_manager.c:353 +#: src/skins/ui_manager.c:334 src/skins/ui_manager.c:364 msgid "Sorts the list by full pathname." msgstr "Skladby v seznamu seÅ™adí podle celé cesty." -#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +#: src/skins/ui_manager.c:337 src/skins/ui_manager.c:367 msgid "By Date" msgstr "Podle data" -#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +#: src/skins/ui_manager.c:338 src/skins/ui_manager.c:368 msgid "Sorts the list by modification time." msgstr "Skladby v seznamu seÅ™adí podle Äasu poslední zmÄ›ny v obsahu souboru." -#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +#: src/skins/ui_manager.c:341 src/skins/ui_manager.c:371 +msgid "By Track Number" +msgstr "Podle Äísla stopy" + +#: src/skins/ui_manager.c:342 src/skins/ui_manager.c:372 msgid "Sorts the list by track number." msgstr "Skladby v seznamu seÅ™adí podle Äísla stopy." -#: src/skins/ui_manager.c:334 +#: src/skins/ui_manager.c:345 msgid "Sort Selected" msgstr "SeÅ™adit vybrané" -#: src/skins/ui_manager.c:373 +#: src/skins/ui_manager.c:381 +msgid "File" +msgstr "Soubor" + +#: src/skins/ui_manager.c:384 msgid "Plugin Services" msgstr "Služby modulů" -#: src/skins/ui_manager.c:384 +#: src/skins/ui_manager.c:386 src/skins/ui_manager.c:389 +msgid "View Track Details" +msgstr "Zobrazit informace o skladbÄ›" + +#: src/skins/ui_manager.c:387 src/skins/ui_manager.c:390 +msgid "View track details" +msgstr "Zobrazit informace o skladbÄ›" + +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:393 +msgid "About Audacious" +msgstr "O Audacious" + +#: src/skins/ui_manager.c:395 msgid "Play File" msgstr "PÅ™ehrát soubor" -#: src/skins/ui_manager.c:387 +#: src/skins/ui_manager.c:396 +msgid "Load and play a file" +msgstr "NaÄíst a pÅ™ehrát soubor" + +#: src/skins/ui_manager.c:398 msgid "Play Location" msgstr "Hrát z adresy" +#: src/skins/ui_manager.c:399 +msgid "Play media from the selected location" +msgstr "Hrát média z vybraného místa" + +#: src/skins/ui_manager.c:401 +msgid "Plugin services" +msgstr "Služby modulů" + +#: src/skins/ui_manager.c:403 +msgid "Preferences" +msgstr "Nastavení" + +#: src/skins/ui_manager.c:404 +msgid "Open preferences window" +msgstr "Otevřít okno s nastavením" + +#: src/skins/ui_manager.c:407 +msgid "Quit Audacious" +msgstr "O Audacious" + +#: src/skins/ui_manager.c:409 src/skins/ui_manager.c:410 +msgid "Set A-B" +msgstr "Nastavit A-B" + +#: src/skins/ui_manager.c:412 src/skins/ui_manager.c:413 +msgid "Clear A-B" +msgstr "Vyprázdnit A-B" + +#: src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Jump to Playlist Start" +msgstr "PÅ™ejít na zaÄátek seznamu skladeb" + +#: src/skins/ui_manager.c:421 src/skins/ui_manager.c:422 +msgid "Jump to Time" +msgstr "PÅ™ejít na Äas" + +#: src/skins/ui_manager.c:424 +msgid "Queue Toggle" +msgstr "PÅ™epnout frontu" + +#: src/skins/ui_manager.c:425 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "Povolí/zakáže položku ve frontÄ› seznamu skladeb." + #: src/skins/ui_manager.c:428 +msgid "Copy" +msgstr "Kopírovat" + +#: src/skins/ui_manager.c:430 +msgid "Cut" +msgstr "Oříznout" + +#: src/skins/ui_manager.c:432 +msgid "Paste" +msgstr "Vložit" + +#: src/skins/ui_manager.c:439 msgid "Load" msgstr "NaÄíst" -#: src/skins/ui_manager.c:433 src/skins/ui_manager.c:454 -#: src/skins/ui_manager.c:469 +#: src/skins/ui_manager.c:440 +msgid "Import" +msgstr "Importovat" + +#: src/skins/ui_manager.c:441 +msgid "Save" +msgstr "Uložit" + +#: src/skins/ui_manager.c:442 +msgid "Delete" +msgstr "Smazat" + +#: src/skins/ui_manager.c:444 src/skins/ui_manager.c:465 +#: src/skins/ui_manager.c:480 msgid "Preset" msgstr "PÅ™edvolby" -#: src/skins/ui_manager.c:434 +#: src/skins/ui_manager.c:445 msgid "Load preset" msgstr "NaÄíst pÅ™edvolbu" -#: src/skins/ui_manager.c:436 src/skins/ui_manager.c:457 -#: src/skins/ui_manager.c:472 +#: src/skins/ui_manager.c:447 src/skins/ui_manager.c:468 +#: src/skins/ui_manager.c:483 msgid "Auto-load preset" msgstr "Souborová pÅ™edvolba" -#: src/skins/ui_manager.c:437 +#: src/skins/ui_manager.c:448 msgid "Load auto-load preset" msgstr "NaÄíst souborovou pÅ™edvolbu" -#: src/skins/ui_manager.c:440 +#: src/skins/ui_manager.c:451 msgid "Load default preset into equalizer" msgstr "NaÄíst standardní pÅ™edvolbu do ekvalizéru" -#: src/skins/ui_manager.c:442 +#: src/skins/ui_manager.c:453 msgid "Zero" msgstr "Vynulovat" -#: src/skins/ui_manager.c:443 +#: src/skins/ui_manager.c:454 msgid "Set equalizer preset levels to zero" msgstr "Vynulovat pÅ™edvolby ekvalizéru" -#: src/skins/ui_manager.c:445 +#: src/skins/ui_manager.c:456 msgid "From file" msgstr "Ze souboru" -#: src/skins/ui_manager.c:446 +#: src/skins/ui_manager.c:457 msgid "Load preset from file" msgstr "NaÄíst pÅ™edvolbu ze souboru" -#: src/skins/ui_manager.c:448 +#: src/skins/ui_manager.c:459 msgid "From WinAMP EQF file" msgstr "Ze souboru WinAMP EQF" -#: src/skins/ui_manager.c:449 +#: src/skins/ui_manager.c:460 msgid "Load preset from WinAMP EQF file" msgstr "NaÄíst pÅ™edvolbu ze souboru WinAMP EQF" -#: src/skins/ui_manager.c:451 +#: src/skins/ui_manager.c:462 msgid "WinAMP Presets" msgstr "PÅ™edvolby WinAMPu" -#: src/skins/ui_manager.c:452 +#: src/skins/ui_manager.c:463 msgid "Import WinAMP presets" msgstr "Importovat pÅ™edvolby WinAMPu" -#: src/skins/ui_manager.c:455 +#: src/skins/ui_manager.c:466 msgid "Save preset" msgstr "Uložit pÅ™edvolbu" -#: src/skins/ui_manager.c:458 +#: src/skins/ui_manager.c:469 msgid "Save auto-load preset" msgstr "Uložit souborovou pÅ™edvolbu" -#: src/skins/ui_manager.c:461 +#: src/skins/ui_manager.c:472 msgid "Save default preset" msgstr "Uložit standardní pÅ™edvolbu" -#: src/skins/ui_manager.c:463 +#: src/skins/ui_manager.c:474 msgid "To file" msgstr "Do souboru" -#: src/skins/ui_manager.c:464 +#: src/skins/ui_manager.c:475 msgid "Save preset to file" msgstr "Uložit pÅ™edvolbu do souboru" -#: src/skins/ui_manager.c:466 +#: src/skins/ui_manager.c:477 msgid "To WinAMP EQF file" msgstr "Do souboru WinAMP EQF" -#: src/skins/ui_manager.c:467 +#: src/skins/ui_manager.c:478 msgid "Save preset to WinAMP EQF file" msgstr "Uložit pÅ™edvolbu do souboru WinAMP EQF" -#: src/skins/ui_manager.c:470 +#: src/skins/ui_manager.c:481 msgid "Delete preset" msgstr "Smazat pÅ™edvolbu" -#: src/skins/ui_manager.c:473 +#: src/skins/ui_manager.c:484 msgid "Delete auto-load preset" msgstr "Smazat souborovou pÅ™edvolbu" -#: src/skins/ui_playlist.c:374 +#: src/skins/ui_playlist.c:244 msgid "Search entries in active playlist" msgstr "Vyhledat skladby v souÄasném seznamu skladeb" -#: src/skins/ui_playlist.c:382 +#: src/skins/ui_playlist.c:252 msgid "" "Select entries in playlist by filling one or more fields. Fields use regular " "expressions syntax, case-insensitive. If you don't know how regular " @@ -5272,544 +3303,2506 @@ "regulárním výrazům nerozumíte, jednoduÅ¡e vložte Äásti textu, které chcete " "vyhledat." -#: src/skins/ui_playlist.c:397 +#: src/skins/ui_playlist.c:260 +msgid "Title: " +msgstr "Název: " + +#: src/skins/ui_playlist.c:267 msgid "Album: " msgstr "Album: " -#: src/skins/ui_playlist.c:404 +#: src/skins/ui_playlist.c:274 msgid "Artist: " msgstr "UmÄ›lec: " -#: src/skins/ui_playlist.c:411 +#: src/skins/ui_playlist.c:281 msgid "Filename: " msgstr "Jméno souboru: " -#: src/skins/ui_playlist.c:419 +#: src/skins/ui_playlist.c:289 msgid "Clear previous selection before searching" msgstr "PÅ™ed hledáním vymazat pÅ™edchozí výbÄ›r" -#: src/skins/ui_playlist.c:422 +#: src/skins/ui_playlist.c:292 msgid "Automatically toggle queue for matching entries" msgstr "Shodující se položky automaticky zaÅ™adit/vyÅ™adit z fronty" -#: src/skins/ui_playlist.c:425 +#: src/skins/ui_playlist.c:295 msgid "Create a new playlist with matching entries" msgstr "Ze shodujících se položek vytvoÅ™it nový seznam skladeb" -#: src/skins/ui_playlist.c:772 -msgid "Save as Static Playlist" -msgstr "Uložit jako statický seznam skladeb" - -#: src/skins/ui_playlist.c:779 -msgid "Use Relative Path" -msgstr "Použít relativní cestu" - -#: src/skins/ui_playlist.c:802 -msgid "Load Playlist" -msgstr "NaÄíst seznam skladeb" - -#: src/skins/ui_playlist.c:815 -msgid "Save Playlist" -msgstr "Uložit seznam skladeb" - -#: src/skins/ui_playlist.c:1146 +#: src/skins/ui_playlist.c:762 msgid "Audacious Playlist Editor" msgstr "Zobrazit editor seznamu skladeb" -#: src/skins/ui_playlist.c:1206 +# FIXME: plural +#: src/skins/ui_playlist.c:809 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d z %d)" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "31 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "63 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "125 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "250 Hz" -msgstr "22050 Hz " - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "500 Hz" -msgstr "11000 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "1 kHz" -msgstr "11 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "2 kHz" -msgstr "22 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "4 kHz" -msgstr "44 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "8 kHz" -msgstr "48 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "16 kHz" -msgstr "96 kHz " - -#: src/skins/ui_skinselector.c:179 +#: src/skins/ui_skinselector.c:162 msgid "Archived Winamp 2.x skin" msgstr "Zabalený skin Winapmu 2.x" -#: src/skins/ui_skinselector.c:184 +#: src/skins/ui_skinselector.c:167 msgid "Unarchived Winamp 2.x skin" msgstr "Nezabalený skin Winampu 2.x" -#: src/skins/util.c:834 +#: src/skins/util.c:773 #, c-format msgid "Could not create directory (%s): %s\n" msgstr "Adresář („%s“) nebylo možné vytvoÅ™it: %s\n" -#: src/sndfile/plugin.c:531 +#: src/sndfile/plugin.c:454 msgid "About sndfile plugin" msgstr "O modulu sndfile" -#: src/sndfile/plugin.c:532 -msgid "" -"Adapted for Audacious usage by Tony Vroon \n" -"from the xmms_sndfile plugin which is:\n" -"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -"This program is free software ; you can redistribute it and/or modify \n" -"it under the terms of the GNU General Public License as published by \n" -"the Free Software Foundation ; either version 2 of the License, or \n" -"(at your option) any later version. \n" -" \n" -"This program is distributed in the hope that it will be useful, \n" -"but WITHOUT ANY WARRANTY ; without even the implied warranty of \n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n" -"See the GNU General Public License for more details. \n" -"\n" -"You should have received a copy of the GNU General Public \n" -"License along with this program ; if not, write to \n" -"the Free Software Foundation, Inc., \n" -"51 Franklin Street, Fifth Floor, \n" -"Boston, MA 02110-1301 USA" -msgstr "" -"Pro Audacious upravil Tony Vroon \n" -"z původního modulu xmms_sndfile,\n" -"copyright © 2000, 2002 Erik de Castro Lopo\n" -"\n" -"Tento program je svobodný software; můžete jej šířit a/nebo mÄ›nit,\n" -"pokud dodržíte podmínky GNU General Public License (GPL) vydané\n" -"Free Software Foundation a to buÄ ve verzi 2 nebo (dle vaší volby)\n" -"libovolné novÄ›jší.\n" -"\n" -"Program je šířen v nadÄ›ji, že bude užiteÄný, ale BEZ JAKÉKOLIV\n" -"ZÃRUKY a to ani záruky OBCHODOVATELNOSTI nebo VHODNOSTI PRO\n" -"JAKÃKOLIV ÚČEL. Více informací najdete v GNU GPL.\n" -"\n" -"S tímto programem byste mÄ›li obdržet kopii GNU GPL. Pokud se\n" -"tak nestalo, obraÅ¥te se na\n" -"Free Software Foundation, Inc.,\n" -"51 Franklin Street, Fifth Floor, \n" -"Boston, MA  02110-1301  USA" - -#: src/sndstretch/sndstretch_xmms.c:175 +#: src/sndstretch/sndstretch_xmms.c:155 msgid "About SndStretch" msgstr "O modulu SndStrech" -#: src/sndstretch/sndstretch_xmms.c:336 +#: src/sndstretch/sndstretch_xmms.c:308 msgid "Volume corr." msgstr "Oprava hlasitosti" -#: src/sndstretch/sndstretch_xmms.c:337 +#: src/sndstretch/sndstretch_xmms.c:309 msgid "Short Overlap" msgstr "Krátké pÅ™esahy" -#: src/sndstretch/sndstretch_xmms.c:391 +#: src/sndstretch/sndstretch_xmms.c:355 msgid "Speed" msgstr "Rychlost" -#: src/sndstretch/sndstretch_xmms.c:392 +#: src/sndstretch/sndstretch_xmms.c:356 msgid "Pitch" msgstr "Výška" -#: src/sndstretch/sndstretch_xmms.c:413 +#: src/sndstretch/sndstretch_xmms.c:357 +msgid "Scale" +msgstr "Natažení" + +#: src/sndstretch/sndstretch_xmms.c:377 msgid "SndStretch - Configuration" msgstr "SndStrech – Nastavení" -#: src/song_change/song_change.c:397 +#: src/song_change/song_change.c:447 msgid "Command to run when Audacious starts a new song." msgstr "Příkaz, který se provede, když Audacious zaÄne novou skladbu." -#: src/song_change/song_change.c:398 src/song_change/song_change.c:402 -#: src/song_change/song_change.c:406 src/song_change/song_change.c:410 -msgid "Command:" -msgstr "Příkaz:" +#: src/song_change/song_change.c:449 src/song_change/song_change.c:455 +#: src/song_change/song_change.c:461 src/song_change/song_change.c:467 +msgid "Command:" +msgstr "Příkaz:" + +#: src/song_change/song_change.c:453 +msgid "Command to run toward the end of a song." +msgstr "Příkaz, který se provede na konci skladby." + +#: src/song_change/song_change.c:459 +msgid "Command to run when Audacious reaches the end of the playlist." +msgstr "" +"Příkaz, který se provede, když Audacious dosáhne konce seznamu skladeb." + +#: src/song_change/song_change.c:465 +msgid "" +"Command to run when title changes for a song (i.e. network streams titles)." +msgstr "" +"Příkaz, který se provede pÅ™i zmÄ›nÄ› názvu skladbu (tj. názvy v síťových " +"proudech)." + +#: src/song_change/song_change.c:471 +msgid "" +"You can use the following format strings which\n" +"will be substituted before calling the command\n" +"(not all are useful for the end-of-playlist command).\n" +"\n" +"%F: Frequency (in hertz)\n" +"%c: Number of channels\n" +"%f: filename (full path)\n" +"%l: length (in milliseconds)\n" +"%n or %s: Song name\n" +"%r: Rate (in bits per second)\n" +"%t: Playlist position (%02d)\n" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" +msgstr "" +"Můžete používat následující formátovací Å™etÄ›zce, které budou\n" +"pÅ™ed spuÅ¡tÄ›ním příkazu nahrazeny (ne vÅ¡echny jsou užiteÄné\n" +"pro příkaz spouÅ¡tÄ›ný na konci seznamu skladeb).\n" +"\n" +"%F: Frekvence (v hertzech)\n" +"%c: PoÄet kanálů\n" +"%f: Název souboru (celá cesta)\n" +"%l: Délka (v milisekundách)\n" +"%n nebo %s: Název skladby\n" +"%r: Datový tok (v bitech za sekundu)\n" +"%t: Pozice v seznamu skladeb (%02d)\n" +"%p: PrávÄ› se hraje (1, nebo 0)\n" +"%a: UmÄ›lec\n" +"%b: Album\n" +"%T: Název stopy" + +#: src/song_change/song_change.c:498 +msgid "" +"Parameters passed to the shell should be encapsulated in " +"quotes. Doing otherwise is a security risk." +msgstr "" +"Parametry pÅ™edávané shellu by mÄ›ly být uzavÅ™eny do " +"uvozovek. Nerespektování této rady pÅ™edstavuje bezpeÄnostní riziko." + +#: src/song_change/song_change.c:509 +msgid "Commands" +msgstr "Příkazy" + +#: src/song_change/song_change.c:539 +msgid "Song Change" +msgstr "ZmÄ›na skladby" + +#: src/statusicon/statusicon.c:378 +msgid "About Status Icon Plugin" +msgstr "O modulu Stavová ikona" + +#: src/statusicon/statusicon.c:379 +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager.\n" +msgstr "" +"Modul Stavová ikona\n" +"\n" +"\n" +"Copyright 2005–2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"Tento modul poskytuje stavovou ikonu, která\n" +"je umístÄ›na v systémové oblasti desktopu.\n" + +#: src/statusicon/statusicon.c:447 +msgid "Status Icon Plugin - Preferences" +msgstr "Modul stavové ikony – Nastavení" + +#: src/statusicon/statusicon.c:457 +msgid "Right-Click Menu" +msgstr "Nabídka pÅ™i stisku pravého tlaÄítka" + +#: src/statusicon/statusicon.c:462 +msgid "Small playback menu #1" +msgstr "Drobná nabídka pro pÅ™ehrávání Ä. 1" + +#: src/statusicon/statusicon.c:465 +msgid "Small playback menu #2" +msgstr "Drobná nabídka pro pÅ™ehrávání Ä. 2" + +#: src/statusicon/statusicon.c:481 +msgid "Mouse Scroll Action" +msgstr "Reakce na rolování myší" + +#: src/statusicon/statusicon.c:485 +msgid "Change volume" +msgstr "ZmÄ›nit hlasitost" + +#: src/statusicon/statusicon.c:487 +msgid "Change playing song" +msgstr "ZmÄ›nit hranou skladbu" + +#: src/statusicon/statusicon.c:500 +msgid "Other settings" +msgstr "Ostatní nastavení" + +#: src/statusicon/statusicon.c:505 +msgid "Disable the popup window" +msgstr "Zakázat vyskakovací okno" + +#: src/statusicon/statusicon.c:512 +msgid "Close to the notification area (system tray)" +msgstr "Zavřít do oznamovací oblasti (systémové oblasti)" + +#: src/stereo_plugin/stereo.c:45 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin 1999." +msgstr "" +"Extra stereo modul\n" +"\n" +"Napsal Johan Levin, 1999." + +#: src/stereo_plugin/stereo.c:64 +msgid "About Extra Stereo Plugin" +msgstr "O modulu Extra sterou" + +#: src/stereo_plugin/stereo.c:95 +msgid "Configure Extra Stereo" +msgstr "Nastavit Extra sterou" + +#: src/streambrowser/gui/streambrowser_win.c:78 +msgid "Search:" +msgstr "Hledat:" + +#: src/streambrowser/gui/streambrowser_win.c:97 +#: src/streambrowser/gui/streambrowser_win.c:372 +msgid "Add Bookmark" +msgstr "PÅ™idat záložku" + +#: src/streambrowser/gui/streambrowser_win.c:324 +msgid "Stream name" +msgstr "Název proudu" + +#: src/streambrowser/gui/streambrowser_win.c:331 +msgid "Now playing" +msgstr "PrávÄ› hraje" + +#: src/streambrowser/gui/streambrowser_win.c:369 +msgid "Remove Bookmark" +msgstr "Odstranit záložku" + +#: src/streambrowser/streambrowser.c:330 +msgid "About Stream Browser" +msgstr "O prohlížeÄi proudů" + +#: src/streambrowser/streambrowser.c:331 +msgid "" +"Copyright (c) 2008, by Calin Crisan and The Audacious " +"Team.\n" +"\n" +"This is a simple stream browser that includes the most popular streaming " +"directories.\n" +"Many thanks to the Streamtuner developers ,\n" +"\tand of course to the whole Audacious community.\n" +"\n" +"Also thank you Tony Vroon for mentoring & guiding me, again.\n" +"\n" +"This was a Google Summer of Code 2008 project." +msgstr "" +"Copyright © 2008 Calin Crisan a tým Audacious.\n" +"\n" +"Toto je jednoduchý prohlížeÄ proudů, který obsahuje nejpopulárnÄ›jší adresáře " +"proudů.\n" +"Mnoho díků patří vývojářům Streamtuneru ,\n" +"\ta samozÅ™ejmÄ› celé komunitÄ› kolem Audacious.\n" +"\n" +"Také dÄ›kuji tobÄ›, Tony Vroone, za rady a vedení, opÄ›t.\n" +"\n" +"Toto byl projekt z Google Summer of Code 2008." + +#: src/tonegen/tonegen.c:48 +msgid "About Tone Generator" +msgstr "O generátoru tónů" + +#: src/tonegen/tonegen.c:50 +msgid "" +"Sinus tone generator by Haavard Kvaalen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" +msgstr "" +"Generátor harmonických tónů, vytvoÅ™il HÃ¥vard KvÃ¥len \n" +"Upraven Danielem J. Pengem \n" +"\n" +"Pro jeho aktivaci zadejte URL: tone://frekvence1;frekvence2;frekvence3;...\n" +"napÅ™. tone://2000;2005 pro pÅ™ehrání tónů o frekvenci 2000 a 2005 Hz." + +#: src/tonegen/tonegen.c:100 +#, c-format +msgid "%s %.1f Hz" +msgstr "%s %.1f Hz" + +#: src/tonegen/tonegen.c:100 +msgid "Tone Generator: " +msgstr "Generátor tónů:" + +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" +msgstr "O modulu vstupu/výstupu ze/do souboru" + +#: src/vorbis/vorbis.c:572 +msgid "About Ogg Vorbis Audio Plugin" +msgstr "O modulu Ogg Vorbis Audio" + +#: src/vorbis/vorbis.c:577 +msgid "" +"Ogg Vorbis Plugin by the Xiph.org Foundation\n" +"\n" +"Original code by\n" +"Tony Arcieri \n" +"Contributions from\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visit the Xiph.org Foundation at http://www.xiph.org/\n" +msgstr "" +"Modul Ogg Vorbis od Xiph.org Foundation\n" +"\n" +"Původní kód napsal\n" +"Tony Arcieri \n" +"PÅ™ispÄ›li\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"HÃ¥vard KvÃ¥len \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"NavÅ¡tivte stránky Xiph.org Foundation na http://www.xiph.org/.\n" + +#: src/vtx/about.c:14 +msgid "About Vortex Player" +msgstr "O pÅ™ehrávaÄi vortexu" + +#: src/vtx/about.c:15 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"\n" +"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" +"and other AY/YM music sites.\n" +"\n" +"Audacious implementation by Pavel Vymetalek " +msgstr "" +"PÅ™ehrávaÄ souborového formátu Vortex napsal Sashnov Alexander .\n" +"Založeno na původním zdrojovém kódu in_vtx.dll od Romana Sherbakova " +".\n" +"\n" +"Hudba ve formátu VTX je k nalezení na http://vtx.microfor.ru/music.htm\n" +"a dalších AY/YM hudebních stránkách.\n" +"\n" +"Do Audacious implementoval Pavel Vymetálek ." + +#: src/wavpack/wavpack.c:353 +#, c-format +msgid "Wavpack Decoder Plugin %s" +msgstr "Dekódovací modul Wavpack %s" + +#: src/wavpack/wavpack.c:354 +msgid "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan\n" +"Visit the Wavpack site at http://www.wavpack.com/\n" +msgstr "" +"Copyright © 2006 William Pitcock \n" +"\n" +"Části kódu modulu napsal Miles Egan\n" +"NavÅ¡tivte stránku Wavpacku na http://www.wavpack.com/\n" + +#~ msgid "XMMS Alarm" +#~ msgstr "XMMS budík" + +#~ msgid "" +#~ "An XMMS plugin which can be used\n" +#~ "to start playing at a certain time.\n" +#~ "\n" +#~ "Send all complaints to:\n" +#~ "Adam Feakin \n" +#~ "Daniel Stodden \n" +#~ "\n" +#~ "http://www.snika.uklinux.net/xmms-alarm/" +#~ msgstr "" +#~ "XMMS modul, který může být použit\n" +#~ "k naÄasovanému zahájení pÅ™ehrávání.\n" +#~ "\n" +#~ "VÅ¡echny stížnosti zasílejte na:\n" +#~ "Adam Feakin \n" +#~ "Daniel Stodden \n" +#~ "\n" +#~ "http://www.snika.uklinux.net/xmms-alarm/" + +#~ msgid "Close" +#~ msgstr "Zavřít" + +#~ msgid "Sorry" +#~ msgstr "Je mi líto" + +#~ msgid "Warning" +#~ msgstr "Varování" + +#~ msgid "" +#~ "For safety reasons the \"quiet\" time must be at least 65 seconds longer " +#~ "than the fading time, it must also be more than 10 seconds. This " +#~ "basically means that there is a bug in the code and until I find a way of " +#~ "really fixing it this message will appear :)\n" +#~ "\n" +#~ "Your fading settings have NOT been saved\n" +#~ "\n" +#~ "--\n" +#~ "Adam" +#~ msgstr "" +#~ "Z bezpeÄnostních důvodů musí být doba „ticha“ alespoň o 65 sekund delší " +#~ "než doba zesilování, také musí být delší než 10 sekund. Toto v zásadÄ› " +#~ "znamená, že v kódu je chyba a dokud nezjistím, jak ji opravdu opravit, " +#~ "tato zpráva se bude zobrazovat :)\n" +#~ "\n" +#~ "VaÅ¡e nastavení zesilování NEBYLO uloženo.\n" +#~ "\n" +#~ "–\n" +#~ "Adam" + +#~ msgid "Oh Well" +#~ msgstr "Dobrá" + +#~ msgid "Daemon Interface (like old headless mode)" +#~ msgstr "Rozhraní démona (jako starý bezhlavý režim)" + +#~ msgid "" +#~ "FileWriter-Plugin\n" +#~ "\n" +#~ "This program is free software; you can redistribute it and/or modify\n" +#~ "it under the terms of the GNU General Public License as published by\n" +#~ "the Free Software Foundation; either version 2 of the License, or\n" +#~ "(at your option) any later version.\n" +#~ "\n" +#~ "This program is distributed in the hope that it will be useful,\n" +#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +#~ "GNU General Public License for more details.\n" +#~ "\n" +#~ "You should have received a copy of the GNU General Public License\n" +#~ "along with this program; if not, write to the Free Software\n" +#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA " +#~ "02110-1301,\n" +#~ "USA." +#~ msgstr "" +#~ "Modul FileWriter\n" +#~ "\n" +#~ "Tento program je svobodný software; můžete jej šířit a/nebo mÄ›nit,\n" +#~ "pokud dodržíte podmínky GNU General Public License (GPL) vydané\n" +#~ "Free Software Foundation a to buÄ ve verzi 2 nebo (dle vaší volby)\n" +#~ "libovolné novÄ›jší.\n" +#~ "\n" +#~ "Program je šířen v nadÄ›ji, že bude užiteÄný, ale BEZ JAKÉKOLIV\n" +#~ "ZÃRUKY a to ani odvozené záruky OBCHODOVATELNOSTI nebo VHODNOSTI PRO\n" +#~ "JAKÃKOLIV ÚČEL. Více informací naleznete v GNU GPL.\n" +#~ "\n" +#~ "S tímto programem byste mÄ›li obdržet kopii GNU GPL. Pokud se\n" +#~ "tak nestalo, obraÅ¥te se na Free Software Foundation, Inc.,\n" +#~ "51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." + +#~ msgid "" +#~ "Audacious OSS Driver\n" +#~ "\n" +#~ " This program is free software; you can redistribute it and/or modify\n" +#~ "it under the terms of the GNU General Public License as published by\n" +#~ "the Free Software Foundation; either version 2 of the License, or\n" +#~ "(at your option) any later version.\n" +#~ "\n" +#~ "This program is distributed in the hope that it will be useful,\n" +#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +#~ "GNU General Public License for more details.\n" +#~ "\n" +#~ "You should have received a copy of the GNU General Public License\n" +#~ "along with this program; if not, write to the Free Software\n" +#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA " +#~ "02110-1301,\n" +#~ "USA." +#~ msgstr "" +#~ "OvladaÄ OSS programu Audacious\n" +#~ "\n" +#~ "Tento program je svobodný software; můžete jej šířit a/nebo mÄ›nit,\n" +#~ "pokud dodržíte podmínky GNU General Public License (GPL) vydané\n" +#~ "Free Software Foundation a to buÄ ve verzi 2 nebo (dle vaší volby)\n" +#~ "libovolné novÄ›jší.\n" +#~ "\n" +#~ "Program je šířen v nadÄ›ji, že bude užiteÄný, ale BEZ JAKÉKOLIV\n" +#~ "ZÃRUKY a to ani záruky OBCHODOVATELNOSTI nebo VHODNOSTI PRO\n" +#~ "JAKÃKOLIV ÚČEL. Více informací najdete v GNU GPL.\n" +#~ "\n" +#~ "S tímto programem byste mÄ›li obdržet kopii GNU GPL. Pokud se tak\n" +#~ "nestalo, obraÅ¥te se na Free Software Foundation, Inc.,\n" +#~ "51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." + +#~ msgid "" +#~ "Audacious PulseAudio Output Plugin\n" +#~ "\n" +#~ " This program is free software; you can redistribute it and/or modify\n" +#~ "it under the terms of the GNU General Public License as published by\n" +#~ "the Free Software Foundation; either version 2 of the License, or\n" +#~ "(at your option) any later version.\n" +#~ "\n" +#~ "This program is distributed in the hope that it will be useful,\n" +#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +#~ "GNU General Public License for more details.\n" +#~ "\n" +#~ "You should have received a copy of the GNU General Public License\n" +#~ "along with this program; if not, write to the Free Software\n" +#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA " +#~ "02110-1301,\n" +#~ "USA." +#~ msgstr "" +#~ "Výstupní modul PulseAudio pro Audacious\n" +#~ "\n" +#~ "Tento program je svobodný software; můžete jej šířit a/nebo mÄ›nit,\n" +#~ "pokud dodržíte podmínky GNU General Public License (GPL) vydané\n" +#~ "Free Software Foundation a to buÄ ve verzi 2 nebo (dle vaší volby)\n" +#~ "libovolné novÄ›jší.\n" +#~ "\n" +#~ "Program je šířen v nadÄ›ji, že bude užiteÄný, ale BEZ JAKÉKOLIV\n" +#~ "ZÃRUKY a to ani záruky OBCHODOVATELNOSTI nebo VHODNOSTI PRO\n" +#~ "JAKÃKOLIV ÚČEL. Více informací najdete v GNU GPL.\n" +#~ "\n" +#~ "S tímto programem byste mÄ›li obdržet kopii GNU GPL. Pokud se\n" +#~ "tak nestalo, obraÅ¥te se na Free Software Foundation, Inc.,\n" +#~ "51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." + +#~ msgid "About %s" +#~ msgstr "O %s" + +#~ msgid " Error" +#~ msgstr " Chyba" + +#~ msgid "General info" +#~ msgstr "Obecné informace" + +#~ msgid "Tune #%i: " +#~ msgstr "Skladba Ä. %i:" + +#~ msgid "Couldn't find pixmap file: %s" +#~ msgstr "Nebylo možné nalézt soubor s pixmapou: %s" + +#~ msgid "Audacious-SID configuration" +#~ msgstr "Nastavení Audacious-SID" + +#~ msgid "8-bit" +#~ msgstr "8bitový" + +#~ msgid "16-bit" +#~ msgstr "16bitový" + +#~ msgid "Resolution:" +#~ msgstr "RozliÅ¡ení:" + +#~ msgid "Autopanning" +#~ msgstr "Automatický posun" + +#~ msgid "Channels:" +#~ msgstr "Kanály:" + +#~ msgid "Samplerate:" +#~ msgstr "Vzorkovací kmitoÄet:" + +#~ msgid "Use oversampling" +#~ msgstr "PÅ™evzorkovat" + +#~ msgid "Factor:" +#~ msgstr "Násobek:" + +#~ msgid "Large factors require more CPU-power" +#~ msgstr "VÄ›tší Äinitel vyžaduje více výkonu CPU" + +#~ msgid "Oversampling:" +#~ msgstr "PÅ™evzorkování:" + +#~ msgid "Audio" +#~ msgstr "Zvuk" + +#~ msgid "Force speed" +#~ msgstr "Vnutit rychlost" + +#~ msgid "" +#~ "If enabled, this option \"forces\" the emulation engine to use the " +#~ "selected clock speed/frequency. Otherwise the speed is determined from " +#~ "played file itself." +#~ msgstr "" +#~ "Je-li zapnuto, bude emulaÄnímu jádru vnucen vybraná rychlost hodin/" +#~ "frekvence. V opaÄném případÄ› bude rychlost urÄena z pÅ™ehrávaného souboru " +#~ "samotného." + +#~ msgid "PAL (50 Hz)" +#~ msgstr "PAL (50 Hz)" + +#~ msgid "" +#~ "PAL is the european TV standard, which uses 50Hz vertical refresh " +#~ "frequency. Most of SID-tunes have been made for PAL computers." +#~ msgstr "" +#~ "PAL je evropský televizní standard, který používá 50Hz vertikální " +#~ "obnovovací frekvenci. VÄ›tÅ¡ina SID skladeb byla urÄena pro poÄítaÄe s " +#~ "výstupem PAL." + +#~ msgid "NTSC (60 Hz)" +#~ msgstr "NTSC (60 Hz)" + +#~ msgid "" +#~ "NTSC is the TV standard with 60Hz vertical refresh rate (and other " +#~ "features that differ from PAL). It is mainly used in United States, Japan " +#~ "and certain other countries." +#~ msgstr "" +#~ "NTSC je televizní standard s 60HZ vertikální obnovovací frekvencí (kromÄ› " +#~ "jiných rozdílů od PALU). Používá se pÅ™edevším ve Spojených státech, " +#~ "Japonsku, nÄ›kolika dalších zemí." + +#~ msgid "Clock speed:" +#~ msgstr "Rychlost hodin:" + +#~ msgid "Force model" +#~ msgstr "Vnutit model" + +#~ msgid "" +#~ "If enabled, this option \"forces\" the emulation engine to use the " +#~ "selected SID-chip model. Otherwise the preferred SID model is determined " +#~ "from the file (if PSIDv2NG type) or if not available, this setting is " +#~ "used." +#~ msgstr "" +#~ "Je-li zapnuto, emulaÄnímu jádru bude vnucen vybraný modelu SID Äipu. " +#~ "V opaÄném případÄ› bude modul SIDU urÄen ze souboru (je-li typu PSIDv2NG). " +#~ "Vybraný model bude také použit, nebude-li jej možno ze souboru urÄit." + +#~ msgid "MOS 6581" +#~ msgstr "MOS 6581" + +#~ msgid "" +#~ "MOS/CSG 6581 is the earlier major version of SID chip. It differs from " +#~ "8580 in few ways, having much fuller filter (which, due to design error, " +#~ "is never same between two different SID-chips) and has the \"volume " +#~ "adjustment bug\", which enables playing of digital samples." +#~ msgstr "" +#~ "MOS/CSG 6581 je starší verze SID Äipu. Od 8580 se odliÅ¡uje tím, že má " +#~ "plnÄ›jší filtr (který, kvůli chybÄ› v návrhu, není nikdy stejný mezi dvÄ›ma " +#~ "Äipy) a „trpí chybou“ pÅ™i ladÄ›ní hlasitosti, která umožňuje pÅ™ehrávání " +#~ "digitálních vzorků." + +#~ msgid "MOS 8580" +#~ msgstr "MOS 8580" + +#~ msgid "SID model:" +#~ msgstr "Model SIDU:" + +#~ msgid "SIDPlay 1 (frame-based)" +#~ msgstr "SIDPlay 1 (rámcová technika)" + +#~ msgid "" +#~ "Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most " +#~ "cases, though." +#~ msgstr "" +#~ "K emulaci použije libSIDPlay 1.x. Rychlejší, ale ne tak pÅ™esné. Ve " +#~ "vÄ›tÅ¡inÄ› případů postaÄuje." + +#~ msgid "SIDPlay 2 (cycle-based)" +#~ msgstr "DISPlay 2 (cyklová technika)" + +#~ msgid "" +#~ "Use libSIDPlay 2.x emulation, which requires powerful CPU due to more " +#~ "exact emulation." +#~ msgstr "" +#~ "K emulaci použijte libSIDPlay 2.x, který kvůli pÅ™esnÄ›jší emulaci vyžaduje " +#~ "výkonnÄ›jší CPU." + +#~ msgid "Emulation library selection:" +#~ msgstr "VýbÄ›r emulaÄní knihovny" + +#~ msgid "Real C64 (SIDPlay 2 only)" +#~ msgstr "SkuteÄný C64 (pouze SIDPlay 2)" + +#~ msgid "Bank switching" +#~ msgstr "PÅ™epínání bank" + +#~ msgid "Transparent ROM" +#~ msgstr "Transparentní ROM" + +#~ msgid "PlaySID environment" +#~ msgstr "ProstÅ™edí PlaySID" + +#~ msgid "Memory mode:" +#~ msgstr "Režim pamÄ›ti" + +#~ msgid "Emu#1" +#~ msgstr "Emu#1" + +#~ msgid "Optimization mode (faster, inaccurate)" +#~ msgstr "Optimalizující režim (rychlejší, nepÅ™esný)" + +#~ msgid "" +#~ "This setting can be used to enable libSIDPlay2's \"optimization mode\", " +#~ "which in downgrades the emulation from cycle-exact to something similar " +#~ "to frame-exact. The result is lower CPU usage, but worse accuracy." +#~ msgstr "" +#~ "Toto nastavení může být použito pro povolení „optimalizující režimu“ " +#~ "libSIDPlay2, který nezachovává pÅ™esnost na cyklus a více se podobá " +#~ "rámcové technice. Výsledkem je nižší zatížení CPU, ale vÄ›tší nepÅ™esnost." + +#~ msgid "reSID-emulation" +#~ msgstr "Emulace reSID" + +#~ msgid "" +#~ "reSID is the software SID-chip simulator based on SID reverse-" +#~ "engineering, created by Dag Lem. It is probably the closest thing to real " +#~ "SID available as software-only emulation." +#~ msgstr "" +#~ "reSID je softwarový emulátor Äipu založený na zpÄ›tném inženýrství SID " +#~ "Äipu. Autorem je Dag Lem. Jedná se pravdÄ›podobnÄ› o nejvÄ›rnÄ›jší " +#~ "softwarovou emulaci skuteÄného Äipu." + +#~ msgid "HardSID" +#~ msgstr "HardSID" + +#~ msgid "" +#~ "HardSID is a EISA/PCI card for PC-compatibles, which can be fitted with a " +#~ "real SID-chip. Software can be used to control the HardSID and combined " +#~ "with software emulation of rest of C64 via libSIDPlay2 HardSID can be " +#~ "used to achieve \"near 100%\" similarity to real C64. For more " +#~ "information, see http://www.hardsid.com/" +#~ msgstr "" +#~ "HardSID je EISA/PCI karta pro PC kompatibilní poÄítaÄe, která může nést " +#~ "skuteÄný SID Äip. Software slouží k ovládání HardSIDu a v kombinaci se " +#~ "softwarovou emulací zbytku C64 pomocí libSIDPlay2 lze dosáhnout „téměř " +#~ "100%“ shody se skuteÄným C64. Podrobnosti naleznete na http://www.hardsid." +#~ "com/" + +#~ msgid "SIDPlay 2 options:" +#~ msgstr "Nastavení SIDPlay 2:" + +#~ msgid "Fast (nearest neighbour)" +#~ msgstr "Rychlá (nejbližší sousední)" + +#~ msgid "" +#~ "Fastest and also worst sounding sampling method, simply picks nearest " +#~ "neighbouring sample." +#~ msgstr "" +#~ "Nejrychlejší a také nejhůře znÄ›jící vzorkovací metoda. JednoduÅ¡e vybírá " +#~ "nejbližší vzorek." + +#~ msgid "Linear interpolation" +#~ msgstr "Lineární interpolace" + +#~ msgid "" +#~ "Uses linear interpolation between samples, yielding higher audio quality " +#~ "with less sampling noise." +#~ msgstr "" +#~ "Používá lineární interpolaci mezi vzorky. Tím dosahuje vyšší kvality " +#~ "zvuku s menšími ruchy." + +#~ msgid "Resampling (FIR)" +#~ msgstr "PÅ™evzorkování (FIR)" + +#~ msgid "reSID sampling options:" +#~ msgstr "Nastavení pÅ™evzorkování reSIDu:" + +#~ msgid "Emu#2" +#~ msgstr "Emu#2" + +#~ msgid "Emulate filters" +#~ msgstr "Emulovat filtry" + +#~ msgid "" +#~ "This option enables emulation of SID filter. The filter is an essential " +#~ "part of SID's sound capacity, but accurate emulation of it may require " +#~ "quite much CPU power. However, if filter emulation is disabled, tunes " +#~ "won't sound authentic at all if they utilize the filter." +#~ msgstr "" +#~ "Tato volba zapíná emulaci SID filtru. Tento filtr je nepostradatelnou " +#~ "souÄástí výbavy SIDU, avÅ¡ak jeho pÅ™esná emulace může vyžadovat hodnÄ› " +#~ "výkonu CPU. Vypnete-li filtr, sklady které jej používají, nebudou vůbec " +#~ "znít vÄ›rohodnÄ›." + +#~ msgid "FS" +#~ msgstr "FS" + +#~ msgid "FM" +#~ msgstr "FM" + +#~ msgid "FT" +#~ msgstr "FT" + +#~ msgid "Reset values" +#~ msgstr "Resetovat hodnoty" + +#~ msgid "SIDPlay1" +#~ msgstr "SIDPlay1" + +#~ msgid "Export" +#~ msgstr "Exportovat" + +#~ msgid "Use" +#~ msgstr "Použít" + +#~ msgid "Filter curve:" +#~ msgstr "KÅ™ivka filtru:" + +#~ msgid "SIDPlay2" +#~ msgstr "SIDPlay2" + +#~ msgid "Filters" +#~ msgstr "Filtry" + +#~ msgid "Play at least for specified time" +#~ msgstr "Hrát alespoň po urÄenou dobu" + +#~ msgid "" +#~ "If enabled, the tune is played at least for the specified time, adding " +#~ "silence to the end if necessary." +#~ msgstr "" +#~ "Je-li zapnuto, skladba bude hrána alespoň po zadanou dobu, případnÄ› na " +#~ "konec bude pÅ™idáno ticho." + +#~ msgid "Playtime:" +#~ msgstr "Doba pÅ™ehrávání:" + +#~ msgid "Minimum playtime:" +#~ msgstr "Minimální doba pÅ™ehrávání:" + +#~ msgid "Play for specified time maximum" +#~ msgstr "PÅ™ehrávat do maximální požadované doby" + +#~ msgid "" +#~ "If enabled, tune is played until specified duration is reached (aka " +#~ "maximum playtime)." +#~ msgstr "" +#~ "Je-li zapnuto, skladba bude hrána nejvýše po zadanou dobu (tj. maximální " +#~ "délku pÅ™ehrávání)." + +#~ msgid "Only when song length is unknown" +#~ msgstr "Jen není-li délka skladby známa" + +#~ msgid "" +#~ "If enabled, the maximum playtime is applied only if song/tune length is " +#~ "not known." +#~ msgstr "" +#~ "Je-li zapnuto, maximální doba pÅ™ehrávání bude uplatnÄ›na jen tehdy, nebude-" +#~ "li délka skladby známa." + +#~ msgid "Maximum playtime:" +#~ msgstr "Maximální doba pÅ™ehrávání:" + +#~ msgid "Use XSIDPLAY-compatible database" +#~ msgstr "Použít databázi kompatibilní s XSIDPLAY" + +#~ msgid "" +#~ "This option enables using of XSIDPLAY compatible song length database. " +#~ "(Refer to Audacious-SID documentation for more information)" +#~ msgstr "" +#~ "Tato volba zapíná použití databáze délek skladeb kompatibilní " +#~ "s XSIDPLAY. (Podrobnosti naleznete v dokumentaci k Audacious-SID modulu.)" + +#~ msgid "DB-file:" +#~ msgstr "Databázový soubor:" + +#~ msgid "Database path and filename" +#~ msgstr "Cesta k databázi a jméno souboru" + +#~ msgid "Browse for song length-database file" +#~ msgstr "Ukázat soubor s databází délek" + +#~ msgid "Song length database:" +#~ msgstr "Databáze s délkou skladeb:" + +#~ msgid "Songlength" +#~ msgstr "Délka skladby" + +#~ msgid "Override generic Tuplez format string" +#~ msgstr "PÅ™epsat původní formátovací Å™etÄ›zec Tuplez" + +#~ msgid "" +#~ "By enabling this option you can specify a custom Tuplez formatting string " +#~ "for SID-files. The SID-plugin specific Tuplez tags are described shortly " +#~ "below." +#~ msgstr "" +#~ "Po povolením této volby lze uživatelem urÄit formátovací Å™etÄ›zec Tuplez " +#~ "pro SID soubory. Tuplez znaÄky modulu SID jsou popsány níže." + +#~ msgid "Tuplez format string for SID-files" +#~ msgstr "Formátovací Å™etÄ›zec Tuplez pro soubory SID" + +#~ msgid "" +#~ "SID-specific Tuplez fields:\n" +#~ "\n" +#~ "sid-format\t\t- Specific fileformat\n" +#~ "sid-model\t\t- 6581 or 8580\n" +#~ "sid-speed\t\t- Timing or speed: PAL/NTSC/etc.\n" +#~ "\n" +#~ "Other \"special\" fields set:\n" +#~ "\n" +#~ "subsong-num, subsong-id" +#~ msgstr "" +#~ "SIDové položky Tuplez:\n" +#~ "\n" +#~ "sid-format\t\t– Výslovný formát souboru\n" +#~ "sid-model\t\t– 6581 nebo 8580\n" +#~ "sid-speed\t\t– Časování nebo rychlost: PAL/NTSC atd..\n" +#~ "\n" +#~ "Další „zvláštní“ sady položek:\n" +#~ "\n" +#~ "subsong-num, subsong-id" + +#~ msgid "Song title format:" +#~ msgstr "Formát názvu skladby:" + +#~ msgid "Add sub-tunes to playlist" +#~ msgstr "Do seznamu skladeb pÅ™idat podskladby" + +#~ msgid "" +#~ "If enabled, sub-tunes of each file will be added to playlist. If " +#~ "disabled, only the default sub-tune will be added." +#~ msgstr "" +#~ "Je-li zapnuto, podskladby každého souboru budou pÅ™idány do seznamu " +#~ "skladeb. Je-li vypnuto, bude pÅ™idána pouze výchozí podskladba." + +#~ msgid "Only tunes with specified minimum duration" +#~ msgstr "Jen skladby se zadanou minimální délkou" + +#~ msgid "Only add sub-tunes that have a duration of at least specified time." +#~ msgstr "PÅ™idat pouze podskladby, jejichž délka je vÄ›tší nebo rovna zadané." + +#~ msgid "Sub-tune handling:" +#~ msgstr "Zacházení s podskladbami:" + +#~ msgid "Use STIL database" +#~ msgstr "Používat databázi STIL" + +#~ msgid "" +#~ "If this option is enabled (and the database & HVSC settings below are " +#~ "correctly set), Audacious-SID will use and display additional information " +#~ "from STIL database when HVSC SIDs are played." +#~ msgstr "" +#~ "Je-li tato volba povolena (a databáze a HVSC konfigurace níže správnÄ› " +#~ "nastavena), Audacious-SID použije a zobrazí dodateÄné informace " +#~ "z databáze STIL, je-li hrána skladba z HVSC." + +#~ msgid "STIL file:" +#~ msgstr "Soubor STIL:" + +#~ msgid "" +#~ "Path and filename of STIL database file (STIL.txt), usually found from " +#~ "HVSC's DOCUMENTS-subdirectory." +#~ msgstr "" +#~ "Cesta a jméno souboru souboru s databází STIL (STIL.txt). Obvykle se " +#~ "nachází v podadresáři DOCUMENTS od HVSC." + +#~ msgid "Browse for STIL-database file" +#~ msgstr "Ukázat na soubor s databází STIL" + +#~ msgid "HVSC path:" +#~ msgstr "Cesta k HVSC" + +#~ msgid "" +#~ "Path to base-directory of your High Voltage SID Collection (HVSC), for " +#~ "example /media/C64Music/" +#~ msgstr "" +#~ "Cesta ke koÅ™enovému adresáři vaší High Voltage SID sbírce (HVSC). Na " +#~ "příklad „/media/C64Music/“." + +#~ msgid "Browse for HVSC path" +#~ msgstr "Ukázat cestu k HSVC" + +#~ msgid "SID Tune Information List (STIL) database:" +#~ msgstr "Databáze SID Tune Information List (STIL):" + +#~ msgid "Cancel any changes" +#~ msgstr "Jakékoliv zmÄ›ny zamítnout" + +#~ msgid "Accept and update changes" +#~ msgstr "PÅ™ijmout a provést zmÄ›ny" + +#~ msgid "Audacious-SID Fileinfo" +#~ msgstr "Audacious – Informace o souboru SID" + +#~ msgid "Filename:" +#~ msgstr "Jméno souboru:" + +#~ msgid "Songname:" +#~ msgstr "Název skladby:" + +#~ msgid "Composer:" +#~ msgstr "Skladatel:" + +#~ msgid "Copyright:" +#~ msgstr "Autorská práva:" + +#~ msgid "Song Information:" +#~ msgstr "Informace o skladbÄ›:" + +#~ msgid "Author:" +#~ msgstr "Autor:" + +#~ msgid "Duration:" +#~ msgstr "Délka:" + +#~ msgid "Sub-tune Information:" +#~ msgstr "Informace o podskladbách" + +#~ msgid "Select HVSC song length database" +#~ msgstr "Vybrat databázi délek skladeb od HVSC" + +#~ msgid "Select STIL-database" +#~ msgstr "Vybrat databázi STIL" + +#~ msgid "Select HVSC location prefix" +#~ msgstr "Vybrat cestu k HVSC" + +#~ msgid "Select SIDPlay2 filters file for importing" +#~ msgstr "Vybrat soubor se SIDPlay2 filtry pro import" + +#~ msgid "Select SIDPlay2 filters file for exporting" +#~ msgstr "Vybrat soubor se SIDPlay2 filtry pro export" + +#~ msgid "Confirm selected action" +#~ msgstr "Potvrdit vybrané akce" + +#~ msgid "Yes" +#~ msgstr "Ano" + +#~ msgid "No" +#~ msgstr "Ne" + +#~ msgid "" +#~ "Adapted for Audacious usage by Tony Vroon \n" +#~ "from the xmms_sndfile plugin which is:\n" +#~ "Copyright (C) 2000, 2002 Erik de Castro Lopo\n" +#~ "\n" +#~ "This program is free software ; you can redistribute it and/or modify \n" +#~ "it under the terms of the GNU General Public License as published by \n" +#~ "the Free Software Foundation ; either version 2 of the License, or \n" +#~ "(at your option) any later version. \n" +#~ " \n" +#~ "This program is distributed in the hope that it will be useful, \n" +#~ "but WITHOUT ANY WARRANTY ; without even the implied warranty of \n" +#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n" +#~ "See the GNU General Public License for more details. \n" +#~ "\n" +#~ "You should have received a copy of the GNU General Public \n" +#~ "License along with this program ; if not, write to \n" +#~ "the Free Software Foundation, Inc., \n" +#~ "51 Franklin Street, Fifth Floor, \n" +#~ "Boston, MA 02110-1301 USA" +#~ msgstr "" +#~ "Pro Audacious upravil Tony Vroon \n" +#~ "z původního modulu xmms_sndfile,\n" +#~ "copyright © 2000, 2002 Erik de Castro Lopo\n" +#~ "\n" +#~ "Tento program je svobodný software; můžete jej šířit a/nebo mÄ›nit,\n" +#~ "pokud dodržíte podmínky GNU General Public License (GPL) vydané\n" +#~ "Free Software Foundation a to buÄ ve verzi 2 nebo (dle vaší volby)\n" +#~ "libovolné novÄ›jší.\n" +#~ "\n" +#~ "Program je šířen v nadÄ›ji, že bude užiteÄný, ale BEZ JAKÉKOLIV\n" +#~ "ZÃRUKY a to ani záruky OBCHODOVATELNOSTI nebo VHODNOSTI PRO\n" +#~ "JAKÃKOLIV ÚČEL. Více informací najdete v GNU GPL.\n" +#~ "\n" +#~ "S tímto programem byste mÄ›li obdržet kopii GNU GPL. Pokud se\n" +#~ "tak nestalo, obraÅ¥te se na\n" +#~ "Free Software Foundation, Inc.,\n" +#~ "51 Franklin Street, Fifth Floor, \n" +#~ "Boston, MA  02110-1301  USA" + +#~ msgid "" +#~ "OSS4 Output Plugin for Audacious\n" +#~ "Copyright 2010 MichaÅ‚ Lipski \n" +#~ "\n" +#~ "I would like to thank people on #audacious, especially Tony Vroon and " +#~ "John Lindgren and of course the authors of the previous OSS plugin.\n" +#~ "\n" +#~ "This program is free software: you can redistribute it and/or modify it " +#~ "under the terms of the GNU General Public License as published by the " +#~ "Free Software Foundation, either version 3 of the License, or (at your " +#~ "option) any later version.\n" +#~ "\n" +#~ "This program 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 General " +#~ "Public License for more details.\n" +#~ "\n" +#~ "You should have received a copy of the GNU General Public License along " +#~ "with this program. If not, see .\n" +#~ msgstr "" +#~ "Výstupní modul OSS4 pro Audacious\n" +#~ "Copyright 2010 MichaÅ‚ Lipski \n" +#~ "\n" +#~ "Rád bych podÄ›koval lidem na #audacious, zvláštÄ› Tony Vroonovi a Johnu " +#~ "Lindgrenovi a samozÅ™ejmÄ› autorům pÅ™edchozího modulu OSS.\n" +#~ "\n" +#~ "Tento program je svobodný software; můžete jej šířit a/nebo mÄ›nit\n" +#~ "v souladu s podmínkami GNU General Public License (GPL) vydané\n" +#~ "Free Software Foundation a to buÄ ve verzi 3 nebo (dle vaší volby)\n" +#~ "libovolné novÄ›jší.\n" +#~ "\n" +#~ "Program je šířen v nadÄ›ji, že bude užiteÄný, ale BEZ JAKÉKOLIV\n" +#~ "ZÃRUKY, a to ani odvozené záruky OBCHODOVATELNOSTI nebo VHODNOSTI PRO\n" +#~ "URÄŒITà ÚČEL. Více informací najdete v GNU GPL.\n" +#~ "\n" +#~ "S tímto programem byste mÄ›li obdržet kopii GNU GPL. Pokud se\n" +#~ "tak nestalo, vizte .\n" + +#~ msgid "Save All Playlists" +#~ msgstr "Uložit vÅ¡echny seznamy skladeb" + +#~ msgid "" +#~ "Saves all the playlists that are open. Note that this is done " +#~ "automatically when Audacious quits." +#~ msgstr "" +#~ "Uloží vÅ¡echny seznamy skladeb, které jsou otevÅ™eny. VezmÄ›te na vÄ›domí, že " +#~ "toto bude rovněž provedeno pÅ™i ukonÄení Audacious." + +#~ msgid "Opens the playlist manager." +#~ msgstr "OtevÅ™e správce seznamu skladeb." + +#~ msgid "Override generic titles" +#~ msgstr "PÅ™epsat původní názvy" + +#~ msgid "Title format:" +#~ msgstr "Formát názvu:" + +#~ msgid "Ogg Vorbis Tags" +#~ msgstr "Popisky Ogg Vorbis" + +#~ msgid "Ogg Vorbis Audio Plugin Configuration" +#~ msgstr "Nastavení modulu Ogg Vorbis Audio" + +#~ msgid "About " +#~ msgstr "O " + +#~ msgid "" +#~ "\n" +#~ "Copyright (C) 2002, 2003 Simon Peter \n" +#~ "\n" +#~ "This plugin is released under the terms and conditions of the GNU LGPL.\n" +#~ "See http://www.gnu.org/licenses/lgpl.html for details.\n" +#~ "\n" +#~ "This plugin uses the AdPlug library, which is copyright (C) Simon Peter, " +#~ "et al.\n" +#~ "Linked AdPlug library version: " +#~ msgstr "" +#~ "\n" +#~ "Copyright © 2002, 2003 Simon Peter \n" +#~ "\n" +#~ "Tento modul je uvolnÄ›n za podmínek licence GNU LGPL.\n" +#~ "Pro podrobnosti vizte http://www.gnu.org/licenses/lgpl.html.\n" +#~ "\n" +#~ "Tento modul používá knihovnu AdPlug, copyright © Simon Peter aj.\n" +#~ "Sestaveno s verzí knihovny AdPlug: " + +#~ msgid "AdPlug :: Configuration" +#~ msgstr "AdPlug :: Nastavení" + +#~ msgid "Sound quality" +#~ msgstr "Kvalita zvuku" + +#~ msgid "Resolution" +#~ msgstr "RozliÅ¡ení" + +#~ msgid "8bit" +#~ msgstr "8 bitů" + +#~ msgid "16bit" +#~ msgstr "16 bitů" + +#~ msgid "Channels" +#~ msgstr "Kanály" + +#~ msgid "" +#~ "Setting stereo is not recommended, unless you need to. This won't add any " +#~ "stereo effects to the sound - OPL2 is just mono - but eats up more CPU " +#~ "power!" +#~ msgstr "" +#~ "Nastavení sterea není doporuÄeno, pokud jej opravdu nepotÅ™ebujete. Tato " +#~ "volba nepÅ™idává do zvuku žádné stereo efekty – OPL2 je prostÄ› mono – ale " +#~ "spotÅ™ebovává více výkonu CPU!" + +#~ msgid "Detect songend" +#~ msgstr "Rozpoznat konec skladby" + +#~ msgid "" +#~ "If enabled, XMMS will detect a song's ending, stop it and advance in the " +#~ "playlist. If disabled, XMMS won't take notice of a song's ending and loop " +#~ "it all over again and again." +#~ msgstr "" +#~ "Je-li zapnuto, XMMS pozná konec skladby, zastaví ji a pÅ™ejde na další ze " +#~ "seznamu skladeb. Je-li vypnuto, XMMS nebude reagovat na konec skladby a " +#~ "bude ji opakovat stále dokola." + +#~ msgid "Formats" +#~ msgstr "Formáty" + +#~ msgid "Format selection" +#~ msgstr "VýbÄ›r formátu" + +#~ msgid "Format" +#~ msgstr "Formát" + +#~ msgid "Extension" +#~ msgstr "Přípona" + +#~ msgid "" +#~ "Selected file types will be recognized and played back by this plugin. " +#~ "Deselected types will be ignored to make room for other plugins to play " +#~ "these files." +#~ msgstr "" +#~ "Vybrané druhy souborů budou rozpoznány a hrány tímto modulem. Nevybrané " +#~ "druhy budou ignorovány a pÅ™enechány ostatním modulům." + +#~ msgid "AdPlug :: File Info" +#~ msgstr "AdPlug :: Informace o souboru" + +#~ msgid "Author: " +#~ msgstr "Autor: " + +#~ msgid "File Type: " +#~ msgstr "Velikost souboru: " + +#~ msgid "Subsongs: " +#~ msgstr "Podskladby: " + +#~ msgid "Instruments: " +#~ msgstr "Nástroje: " + +#~ msgid "Orders: " +#~ msgstr "PoÅ™adí: " + +#~ msgid "Patterns: " +#~ msgstr "Vzorky: " + +#~ msgid "Song" +#~ msgstr "Skladba" + +#~ msgid "Instrument name" +#~ msgstr "Jméno nástroje" + +#~ msgid "Song message" +#~ msgstr "Zpráva skladby" + +#~ msgid "Subsong selection" +#~ msgstr "VýbÄ›r podskladby" + +#~ msgid "Order: " +#~ msgstr "PoÅ™adí: " + +#~ msgid "Pattern: " +#~ msgstr "Vzorek: " + +#~ msgid "Row: " +#~ msgstr "Řada: " + +#~ msgid "Speed: " +#~ msgstr "Rychlost: " + +#~ msgid "Timer: " +#~ msgstr "ÄŒasovaÄ: " + +#~ msgid "Select Playlist" +#~ msgstr "Vybrat seznam skladeb" + +#~ msgid "reset to current output volume" +#~ msgstr "navrátit na souÄasnou hlasitost výstupu" + +#~ msgid "Pairing request for '%s'" +#~ msgstr "Požadavek na spárování „%s“" + +#~ msgid "Authorization request for %s" +#~ msgstr "Požadavek na autorizaci %s" + +#~ msgid "Created bonding with %s" +#~ msgstr "Vazba s %s vytvoÅ™ena" + +#~ msgid "Removed bonding with %s" +#~ msgstr "Vazba s %s odstranÄ›na" + +#~ msgid "Device has been switched off" +#~ msgstr "Zařízení bylo vypnuto" + +#~ msgid "Device has been made non-discoverable" +#~ msgstr "Zařízení bylo uÄinÄ›no neobjevitelným" + +#~ msgid "Device has been made connectable" +#~ msgstr "Zařízení bylo uÄinÄ›no pÅ™ipojitelným" + +#~ msgid "Device has been made discoverable" +#~ msgstr "Zařízení bylo uÄinÄ›no objevitelným" + +#~ msgid "Device has been made limited discoverable" +#~ msgstr "Zařízení bylo uÄinÄ›no omezenÄ› objevitelným" + +#~ msgid "Device has been switched into pairing mode" +#~ msgstr "Zařízení bylo pÅ™epnuto do režimu párování" + +#~ msgid "Bluetooth headset support plugin" +#~ msgstr "Modul podporující náhlavní sady s bluetooth" + +#~ msgid "" +#~ "Bluetooth headset support\n" +#~ "Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" +#~ "This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and " +#~ "the Audacious team\n" +#~ " \n" +#~ "In order to use the AVRCP you need the uinput module loaded into the " +#~ "kernel\n" +#~ "The headset keys will be recognized as normal mutimedia keys and \n" +#~ "can be configured using the Audacious Global Hotkey plugin or ohter " +#~ "tools \n" +#~ "provided by your window manager\n" +#~ msgstr "" +#~ "Podpora náhlavních sad s bluetooth\n" +#~ "Copyright © 2008 Paula Stanciu \n" +#~ "Toto byl projekt GSoC 2008 – PodÄ›kování patří mému uÄiteli Tony Vroonovi " +#~ "a týmu Audacious\n" +#~ " \n" +#~ "Aby fungoval AVRCP, potÅ™ebuje zavést do jádra modul uinput.\n" +#~ "TlaÄítka náhlavní sady se tak budou jevit jako normální multimediální\n" +#~ "klávesy a mohou být nastaveny pomocí Audacious modulu Globální horké\n" +#~ "klávesy nebo jinými nástroji, které poskytuje váš správce oken.\n" + +#~ msgid "Producer" +#~ msgstr "Výrobce" + +#~ msgid "Available Headsets" +#~ msgstr "Dostupné náhlavní sady" + +#~ msgid "Current Headset" +#~ msgstr "SouÄasná náhlavní sada" + +#~ msgid "_Connect" +#~ msgstr "_Spojit" + +#~ msgid "Class" +#~ msgstr "Třída" + +#~ msgid "Address:" +#~ msgstr "Adresa:" + +#~ msgid "Bonding finish!" +#~ msgstr "Vazba vytvoÅ™ena!" + +#~ msgid "No devices found!" +#~ msgstr "Žádné zařízení nenalezeno!" + +#~ msgid "Scanning..." +#~ msgstr "Vyhledává se…" + +#~ msgid "Pairing..." +#~ msgstr "Páruje se…" + +#~ msgid "Rescan" +#~ msgstr "Znovu vyhledat" + +#~ msgid "Playback->Play" +#~ msgstr "PÅ™ehrát → Hrát" + +#~ msgid "Playback->Stop" +#~ msgstr "PÅ™ehrát → Zastavit" + +#~ msgid "Playback->Pause" +#~ msgstr "PÅ™ehrát → Pozastavit" + +#~ msgid "Playback->Prev" +#~ msgstr "PÅ™ehrát → PÅ™edchozí" + +#~ msgid "Playback->Next" +#~ msgstr "PÅ™ehrát → Další" + +#~ msgid "Playback->Eject" +#~ msgstr "PÅ™ehrát → Vysunout" + +#~ msgid "Playlist->Repeat" +#~ msgstr "Seznam skladeb → Opakovat" + +#~ msgid "Playlist->Shuffle" +#~ msgstr "Seznam skladeb → Náhodné pÅ™ehrávání" + +#~ msgid "Volume->Up_5" +#~ msgstr "Hlasitost → Zvýšit o 5" + +#~ msgid "Volume->Down_5" +#~ msgstr "Hlasitost → Snížit o 5" + +#~ msgid "Volume->Up_10" +#~ msgstr "Hlasitost → Zvýšit o 10" + +#~ msgid "Volume->Down_10" +#~ msgstr "Hlasitost → Snížit o 10" + +#~ msgid "Volume->Mute" +#~ msgstr "Hlasitost → Ztlumit" + +#~ msgid "Window->Main" +#~ msgstr "Okno → Hlavní" + +#~ msgid "Window->Playlist" +#~ msgstr "Okno → Seznam skladeb" + +#~ msgid "Window->Equalizer" +#~ msgstr "Okno → Ekvalizér" + +#~ msgid "Window->JumpToFile" +#~ msgstr "Okno → PÅ™ejít na soubor" + +#~ msgid "" +#~ "event-device-plugin: unable to open device file %s , skipping this " +#~ "device; check that the file exists and that you have read permission for " +#~ "it\n" +#~ msgstr "" +#~ "event-device-plugin: nelze otevřít zařízení %s, pÅ™eskakuji toto zařízení; " +#~ "zkontrolujte, že soubor existuje a že máte právo jej Äíst\n" + +#~ msgid "" +#~ "event-device-plugin: unable to create a io_channel for device file %s ," +#~ "skipping this device\n" +#~ msgstr "" +#~ "event-device-plugin: nelze vytvoÅ™it io_channel (vstupnÄ›-výstupní kanál) " +#~ "pro zařízení %s, pÅ™eskakuji toto zařízení\n" + +#~ msgid "" +#~ "event-device-plugin: unable to open /proc/bus/input/devices , automatic " +#~ "detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: nelze otevřít /proc/bus/input/devices, samoÄinné " +#~ "vyhledávání událostních zařízení nebude fungovat.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to open a io_channel for /proc/bus/input/" +#~ "devices , automatic detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: nelze otevřít io_channel (vstupnÄ›-výstupní kanál) " +#~ "pro /proc/bus/input/devices, samoÄinné vyhledávání událostních zařízení " +#~ "nebude fungovat.\n" + +#~ msgid "" +#~ "event-device-plugin: an error occurred while reading /proc/bus/input/" +#~ "devices , automatic detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: doÅ¡lo k chybÄ› pÅ™i Ätení z /proc/bus/input/devices, " +#~ "samoÄinné vyhledávání událostních zařízení nebude fungovat.\n" + +#~ msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" +#~ msgstr "" +#~ "event-device-plugin: zařízení %s nebylo nalezeno v /dev/input, " +#~ "pÅ™eskakuji.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to load config file %s , default settings " +#~ "will be used.\n" +#~ msgstr "" +#~ "event-device-plugin: nelze naÄíst konfiguraÄní soubor %s, bude použito " +#~ "implicitní nastavení.\n" + +#~ msgid "" +#~ "event-device-plugin: incomplete information in config file for device \"%s" +#~ "\" , skipping.\n" +#~ msgstr "" +#~ "event-device-plugin: neúplné informace v konfiguraÄním souboru pro " +#~ "zařízení „%s“, pÅ™eskakuji.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get is_active value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: konfigurace: nelze získat hodnotu is_active pro " +#~ "zařízení „%s“, pÅ™eskakuji.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to access local directory %s , settings will " +#~ "not be saved.\n" +#~ msgstr "" +#~ "event-device-plugin: nelze pÅ™istoupit k místnímu adresáři %s, nastavení " +#~ "nebude uloženo.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get filename value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: konfigurace: nelze získat hodnotu filename pro " +#~ "zařízení „%s“, pÅ™eskakuji.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get phys value for device " +#~ "\"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: konfigurace: nelze získat hodnotu phys pro zařízení " +#~ "„%s“, pÅ™eskakuji.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get is_custom value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: konfigurace: nelze získat hodnotu is_custom pro " +#~ "zařízení „%s“, pÅ™eskakuji.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unexpected value for device \"%s\", " +#~ "skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: konfigurace: neoÄekávaná hodnot pro zařízení „%s“, " +#~ "pÅ™eskakuji.\n" + +#~ msgid "Detected" +#~ msgstr "Nalezeno" + +#~ msgid "Custom" +#~ msgstr "Vlastní" + +#~ msgid "Not Detected" +#~ msgstr "Nenalezeno" + +#~ msgid "Information" +#~ msgstr "Podrobnosti" + +#~ msgid "" +#~ "Cannot open bindings window for a not-detected device.\n" +#~ "Ensure that the device has been correctly plugged in." +#~ msgstr "" +#~ "Nelze otevřít okno s vazbami pro nerozpoznané zařízení.\n" +#~ "UjistÄ›te se, že zařízení bylo správnÄ› zapojeno." + +#~ msgid "" +#~ "Unable to open selected device.\n" +#~ "Please check read permissions on device file." +#~ msgstr "" +#~ "Nelze otevřít vybrané zařízení.\n" +#~ "Prosím, zkontrolujte práva k tomuto zařízení." + +#~ msgid "EvDev-Plug - Add custom device" +#~ msgstr "EvDev-Plug  – PÅ™idat vlastní zařízení" + +#~ msgid "" +#~ "EvDev-Plug tries to automatically detect and update information about\n" +#~ "event devices available on the system.\n" +#~ "However, if auto-detect doesn't work for your system, or you have event\n" +#~ "devices in a non-standard location (currently they're only searched in\n" +#~ "/dev/input/ ), you may want to add a custom device, explicitly " +#~ "specifying\n" +#~ "name and device file." +#~ msgstr "" +#~ "EvDev-Plug zkusí sám rozpoznat událostní zařízení pÅ™ipojená do systému\n" +#~ "a aktualizovat údaje o nich.\n" +#~ "Pokud vÅ¡ak samoÄinné vyhledání selže nebo máte událostní zařízení\n" +#~ "v nestandardním adresáři (v souÄasnosti je prohledáván jen /dev/input),\n" +#~ "můžete pÅ™idat zařízení ruÄnÄ› jako vlastní, pÅ™iÄemž budete muset zadat\n" +#~ "jeho název a soubor tohoto zařízení." + +#~ msgid "Device name:" +#~ msgstr "Název zařízení:" + +#~ msgid "Device file:" +#~ msgstr "Soubor zařízení:" + +#~ msgid "(custom)" +#~ msgstr "(vlastní)" + +#~ msgid "" +#~ "Please specify both name and filename.\n" +#~ "Filename must be specified with absolute path." +#~ msgstr "" +#~ "Prosím, zadejte jak název, tak název souboru.\n" +#~ "Název souboru musí být uveden s absolutní cestou." + +#~ msgid "" +#~ "Do you want to remove the existing configuration for selected device?\n" +#~ msgstr "PÅ™ejete si odstranit existující nastavení pro vybrané zařízení?\n" + +#~ msgid "Do you want to remove the selected custom device?\n" +#~ msgstr "PÅ™ejete si odstranit vybrané vlastní zařízení?\n" + +#~ msgid "EvDev-Plug - Configuration" +#~ msgstr "EvDev-Plug – Nastavení" + +#~ msgid "Active" +#~ msgstr "Aktivní" + +#~ msgid "Status" +#~ msgstr "Stav" + +#~ msgid "Device Name" +#~ msgstr "Název zařízení" + +#~ msgid "Device File" +#~ msgstr "Soubor zařízení" + +#~ msgid "Device Address" +#~ msgstr "Adresa zařízení" + +#~ msgid "_Bindings" +#~ msgstr "_Vazby" + +#~ msgid "" +#~ "Press a key of your device to bind it;\n" +#~ "if no key is pressed in five seconds, this window\n" +#~ "will close without binding changes." +#~ msgstr "" +#~ "Pro navázání, prosím, stisknÄ›te klávesu na vaÅ¡em zařízení;\n" +#~ "pokud nebude stiÅ¡tÄ›na žádná klávesa do pÄ›ti sekund,\n" +#~ "toto okno bude zavÅ™eno, aniž by se vazba zmÄ›nila." + +#~ msgid "" +#~ "This input event has been already assigned.\n" +#~ "\n" +#~ "It's not possible to assign multiple actions to the same input event " +#~ "(although it's possible to assign the same action to multiple events)." +#~ msgstr "" +#~ "Vstupní událost již byla pÅ™iÅ™azena.\n" +#~ "\n" +#~ "Není možné pÅ™iÅ™adit více akcí stejné vstupní události (aÄkoliv je možné " +#~ "pÅ™iÅ™adit stejnou akci více událostem)." + +#~ msgid "EvDev-Plug - Bindings Configuration" +#~ msgstr "EvDev-Plug – Nastavení vazeb" + +#~ msgid "Name: " +#~ msgstr "Název: " + +#~ msgid "Filename: " +#~ msgstr "Název souboru: " + +#~ msgid "Phys.Address: " +#~ msgstr "Fyzická adresa: " + +#~ msgid "EvDev-Plug - about" +#~ msgstr "EvDev-Plug – o modulu" + +#~ msgid "" +#~ "\n" +#~ "player remote control via event devices\n" +#~ "http://www.develia.org/projects.php?p=audacious#evdevplug\n" +#~ "\n" +#~ "written by Giacomo Lozito\n" +#~ msgstr "" +#~ "\n" +#~ "dálkové ovládání pÅ™ehrávaÄe pomocí událostních zařízení\n" +#~ "http://www.develia.org/projects.php?p=audacious#evdevplug\n" +#~ "\n" +#~ "napsal Giacomo Lozito\n" + +#~ msgid "This LADSPA plugin has no user controls" +#~ msgstr "Tento LADSPA modul nemá žádné možnosti nastavení uživatelem" + +#~ msgid "Name" +#~ msgstr "Jméno" + +#~ msgid "UID" +#~ msgstr "UID" + +#~ msgid "Running plugins" +#~ msgstr "Bežící moduly" + +#~ msgid "Add" +#~ msgstr "PÅ™idat" + +#~ msgid "Remove" +#~ msgstr "Odebrat" + +#~ msgid "LADSPA Plugin Catalog" +#~ msgstr "Katalog LADSPA modulů" + +#~ msgid "About LIRC Audacious Plugin" +#~ msgstr "O modulu LIRC pro Audacious" + +#~ msgid "LIRC Plugin " +#~ msgstr "Modul LIRC " + +#~ msgid "" +#~ "\n" +#~ "A simple plugin that lets you control\n" +#~ "Audacious using the LIRC remote control daemon\n" +#~ "\n" +#~ "Adapted for Audacious usage by Tony Vroon \n" +#~ "from the XMMS LIRC plugin by:\n" +#~ "Carl van Schaik \n" +#~ "Christoph Bartelmus \n" +#~ "Andrew O. Shadoura \n" +#~ "You can get LIRC information at:\n" +#~ "http://lirc.org" +#~ msgstr "" +#~ "\n" +#~ "Jednoduchý modul, který vám dovolí ovládat Audacious\n" +#~ "prostÅ™ednictvím démona dálkového ovládání LIRC.\n" +#~ "\n" +#~ "Pro Audacious upravil Tony Vroon \n" +#~ "z XMMS LIRC modulu, jehož tvůrci jsou:\n" +#~ "Carl van Schaik \n" +#~ "Christoph Bartelmus \n" +#~ "Andrew O. Shadoura \n" +#~ "Informace o LIRC lze získat na:\n" +#~ "http://lirc.org/" + +#~ msgid "LIRC plugin settings" +#~ msgstr "Nastavení modulu LIRC" + +#~ msgid "Reconnect to LIRC server" +#~ msgstr "Znovu se pÅ™ipojit k serveru LIRC" + +#~ msgid "Timeout before reconnecting (seconds): " +#~ msgstr "ÄŒasový limit pro znovupÅ™ipojení (sekundy): " + +#~ msgid "Reconnect" +#~ msgstr "Znovu se pÅ™ipojit" + +#~ msgid "Connection" +#~ msgstr "Spojení" + +#~ msgid "%s: could not init LIRC support\n" +#~ msgstr "%s: nelze inicializovat podporu LIRC\n" + +#~ msgid "" +#~ "%s: could not read LIRC config file\n" +#~ "%s: please read the documentation of LIRC\n" +#~ "%s: how to create a proper config file\n" +#~ msgstr "" +#~ "%s: nelze Äíst z konfiguraÄního souboru LIRC\n" +#~ "%s: prosím, pÅ™eÄtÄ›te si dokumentaci k LIRC,\n" +#~ "%s: jak správnÄ› vytvoÅ™it konfiguraÄní soubor\n" + +#~ msgid "%s: trying to reconnect...\n" +#~ msgstr "%s: pokouším se znovu pÅ™ipojit…\n" + +#~ msgid "%s: unknown command \"%s\"\n" +#~ msgstr "%s: neznámý příkaz „%s“\n" + +#~ msgid "%s: disconnected from LIRC\n" +#~ msgstr "%s: odpojeno od LIRC\n" + +# FIXME: plural +#~ msgid "%s: will try reconnect every %d seconds...\n" +#~ msgstr "%s: pokus o pÅ™ipojení budu opakovat každých %d sekund…\n" + +#~ msgid "ModPlug Configuration" +#~ msgstr "Nastavení ModPlugu" + +#~ msgid "16 bit" +#~ msgstr "16 bitů" + +#~ msgid "8 bit" +#~ msgstr "8 bitů" + +#~ msgid "Mono (downmix)" +#~ msgstr "Mono (smísit kanály)" + +#~ msgid "Nearest (fastest)" +#~ msgstr "Nejbližší (nejrychlejší)" + +#~ msgid "Linear (fast)" +#~ msgstr "Lineární (rychlé)" + +#~ msgid "Spline (good quality)" +#~ msgstr "Spline (kvalitní)" + +#~ msgid "8-tap Fir (extremely high quality)" +#~ msgstr "FIR filtr osmého řádu (velmi kvalitní)" + +#~ msgid "96 kHz" +#~ msgstr "96 kHz " + +#~ msgid "48 kHz" +#~ msgstr "48 kHz" + +#~ msgid "44 kHz" +#~ msgstr "44 kHz" + +#~ msgid "22 kHz" +#~ msgstr "22 kHz" + +#~ msgid "Sampling Rate" +#~ msgstr "Vzorkovací kmitoÄet" + +#~ msgid "Depth" +#~ msgstr "Hloubka" + +#~ msgid "Delay" +#~ msgstr "ZpoždÄ›ní" + +#~ msgid "Reverb" +#~ msgstr "Dozvuk" + +#~ msgid "Amount" +#~ msgstr "Množství" + +#~ msgid "Range" +#~ msgstr "Rozsah" + +#~ msgid "Bass Boost" +#~ msgstr "ZvýraznÄ›ní hlubokých tónů" + +#~ msgid "" +#~ "Note: Setting the preamp\n" +#~ "too high may cause clipping\n" +#~ "(annoying clicks and pops)!" +#~ msgstr "" +#~ "Poznámka: Vysoké hodnoty\n" +#~ "pÅ™edzesílení mohou vést k oÅ™ezu\n" +#~ "zvuku (obtěžující praskání)!" + +#~ msgid "Effects" +#~ msgstr "Efekty" + +#~ msgid "Use Filename as Song Title" +#~ msgstr "Použít jméno souboru jako název skladby" + +#~ msgid "Fast Playlist Info" +#~ msgstr "Rychlé informace o seznamu skladeb" + +#~ msgid "Noise Reduction" +#~ msgstr "Redukce Å¡umu" + +#~ msgid "Play Amiga MOD" +#~ msgstr "Hrát MODY z Amigy" + +#~ msgid "Don't loop" +#~ msgstr "Nevracet se ve smyÄce" + +#~ msgid "Loop" +#~ msgstr "Opakovat" + +#~ msgid "time(s)" +#~ msgstr "×" + +#~ msgid "Loop forever" +#~ msgstr "NekoneÄná smyÄka" + +#~ msgid "Looping" +#~ msgstr "SmyÄky" + +#~ msgid "MOD Info" +#~ msgstr "Informace o MODU" + +#~ msgid "" +#~ "Filename:\n" +#~ "Title:\n" +#~ "Type:\n" +#~ "Length:\n" +#~ "Speed:\n" +#~ "Tempo:\n" +#~ "Samples:\n" +#~ "Instruments:\n" +#~ "Patterns:\n" +#~ "Channels:" +#~ msgstr "" +#~ "Jméno souboru:\n" +#~ "Název skladby:\n" +#~ "Typ:\n" +#~ "Délka:\n" +#~ "Rychlost:\n" +#~ "Tempo:\n" +#~ "Vzorků:\n" +#~ "Nástrojů:\n" +#~ "Vzory:\n" +#~ "Kanálů:" + +#~ msgid "" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---" +#~ msgstr "" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---" + +#~ msgid "Samples" +#~ msgstr "Vzorky" + +#~ msgid "Instruments" +#~ msgstr "Nástroje" + +#~ msgid "Message" +#~ msgstr "Vzkaz" + +#~ msgid "Modplug Input Plugin for Audacious ver" +#~ msgstr "Vstupní modul pro Audacious Modplug verze " + +#~ msgid "" +#~ "\n" +#~ "Modplug sound engine written by Olivier Lapicque.\n" +#~ "XMMS interface for Modplug by Kenton Varda.\n" +#~ "(c)2000 Olivier Lapicque and Kenton Varda.\n" +#~ "Updates and maintenance by Konstanty Bialkowski.\n" +#~ "Ported to BMP by Theofilos Intzoglou." +#~ msgstr "" +#~ "\n" +#~ "Zvukové jádro Modplugu napsal Olivier Lapicque.\n" +#~ "XMMS rozhraní Modplugu od Kentona Varda.\n" +#~ "© 2000 Olivier Lapicque a Kenton Varda.\n" +#~ "Aktualizuje a udržuje Konstanty Bialkowski.\n" +#~ "Na BMP pÅ™evedl Theofilos Intzoglou." + +#~ msgid "About Modplug" +#~ msgstr "O modulu Modplug" + +#~ msgid "Use Bitmap fonts if available" +#~ msgstr "Pokud možno, používat bitmapové fonty" + +#~ msgid "" +#~ "Use bitmap fonts if they are available. Bitmap fonts do not support " +#~ "Unicode strings." +#~ msgstr "" +#~ "Pokud to bude možné, použijí se bitmapové fonty. Bitmapové fonty " +#~ "nepodporují unicodové Å™etÄ›zce." + +#~ msgid "_Miscellaneous" +#~ msgstr "_Různé" + +#~ msgid "Show separators in playlist" +#~ msgstr "Zobrazovat oddÄ›lovaÄe v seznamu skladeb" + +#~ msgid "Show window manager decoration" +#~ msgstr "Zobrazovat dekoraci podle správce oken" + +#~ msgid "This enables the window manager to show decorations for windows." +#~ msgstr "" +#~ "Tímto necháte rozhodnutí na správci oken, kdy má zobrazovat dekorace oken." + +#~ msgid "Use two-way text scroller" +#~ msgstr "Pohybovat textem v obou smÄ›rech" + +#~ msgid "" +#~ "If selected, the file information text in the main window will scroll " +#~ "back and forth. If not selected, the text will only scroll in one " +#~ "direction." +#~ msgstr "" +#~ "Bude-li vybráno, text s informacemi v hlavním oknÄ› bude bÄ›hat tam a zpÄ›t. " +#~ "Nebude-li vybráno, text se bude pohybovat jen jedním smÄ›rem." + +#~ msgid "Disable inline gtk theme" +#~ msgstr "Zakázat vnitÅ™ní téma GTK" + +#~ msgid "Random skin on play" +#~ msgstr "PÅ™i pÅ™ehrávání zvolit náhodné téma" + +#~ msgid "Allow loading incomplete skins" +#~ msgstr "Povolit naÄítání neúplných vzhledů" + +#~ msgid "" +#~ "If selected, audacious won't refuse loading broken skins. Use only if " +#~ "your favourite skin doesn't work" +#~ msgstr "" +#~ "Je-li vybráno, Audacious neodmítne nahrát rozbitý vzhled. Použijte jen, " +#~ "když váš oblíbený vzhled nefunguje." + +#~ msgid "Color Adjustment" +#~ msgstr "PÅ™izpůsobení barvy" + +#~ msgid "" +#~ "Audacious allows you to alter the color balance of the skinned UI. The " +#~ "sliders below will allow you to do this." +#~ msgstr "" +#~ "Audacious umožňuje zmÄ›nit zabarvení mÄ›nitelného vzhledu uživatelského " +#~ "rozhraní pomocí následujících jezdců." + +#~ msgid "Blue" +#~ msgstr "Modrá" + +#~ msgid "Green" +#~ msgstr "Zelená" + +#~ msgid "Red" +#~ msgstr "ÄŒervená" -#: src/song_change/song_change.c:401 -msgid "Command to run toward the end of a song." -msgstr "Příkaz, který se provede na konci skladby." +#~ msgid "Color adjustment ..." +#~ msgstr "PÅ™izpůsobení barvy…" -#: src/song_change/song_change.c:405 -msgid "Command to run when Audacious reaches the end of the playlist." -msgstr "" -"Příkaz, který se provede, když Audacious dosáhne konce seznamu skladeb." +#~ msgid "Disable 'GUI Scaling'" +#~ msgstr "Zakázat „Škálovat GUI“" -#: src/song_change/song_change.c:409 -msgid "" -"Command to run when title changes for a song (i.e. network streams titles)." -msgstr "" -"Příkaz, který se provede pÅ™i zmÄ›nÄ› názvu skladbu (tj. názvy v síťových " -"proudech)." +#~ msgid "Enable 'GUI Scaling'" +#~ msgstr "Povolit „škálovat GUI“" -#: src/song_change/song_change.c:413 -msgid "" -"You can use the following format strings which\n" -"will be substituted before calling the command\n" -"(not all are useful for the end-of-playlist command).\n" -"\n" -"%F: Frequency (in hertz)\n" -"%c: Number of channels\n" -"%f: filename (full path)\n" -"%l: length (in milliseconds)\n" -"%n or %s: Song name\n" -"%r: Rate (in bits per second)\n" -"%t: Playlist position (%02d)\n" -"%p: Currently playing (1 or 0)" -msgstr "" -"Můžete používat následující formátovací Å™etÄ›zce, které budou\n" -"pÅ™ed spuÅ¡tÄ›ním příkazu nahrazeny (ne vÅ¡echny jsou užiteÄné\n" -"pro příkaz spouÅ¡tÄ›ný na konci seznamu skladeb).\n" -"\n" -"%F: Frekvence (v hertzech)\n" -"%c: PoÄet kanálů\n" -"%f: Název souboru (celá cesta)\n" -"%l: Délka (v milisekundách)\n" -"%n nebo %s: Název skladby\n" -"%r: Datový tok (v bitech za sekundu)\n" -"%t: Pozice v seznamu skladeb (%02d)\n" -"%p: PrávÄ› se hraje (1, nebo 0)" +#~ msgid "DoubleSize" +#~ msgstr "Dvojitá velikost" -#: src/song_change/song_change.c:437 -msgid "" -"Parameters passed to the shell should be encapsulated in " -"quotes. Doing otherwise is a security risk." -msgstr "" -"Parametry pÅ™edávané shellu by mÄ›ly být uzavÅ™eny do " -"uvozovek. Nerespektování této rady pÅ™edstavuje bezpeÄnostní riziko." +#~ msgid "Easy Move" +#~ msgstr "Snadný pohyb" -#: src/song_change/song_change.c:448 -msgid "Commands" -msgstr "Příkazy" +#~ msgid "Spectrum Analyzer" +#~ msgstr "Analyzátor spektra" -#: src/song_change/song_change.c:484 -msgid "Song Change" -msgstr "ZmÄ›na skladby" +#~ msgid "Can't jump to time when no track is being played.\n" +#~ msgstr "Když nehraje žádná skladba, nelze pÅ™ejít na Äas.\n" -#: src/spectrum/spectrum.c:89 -msgid "Spectrum Analyzer" -msgstr "Analyzátor spektra" +#~ msgid "minutes:seconds" +#~ msgstr "minuty:sekundy" -#: src/statusicon/statusicon.c:355 -msgid "About Status Icon Plugin" -msgstr "O modulu Stavová ikona" +#~ msgid "Track length:" +#~ msgstr "Délka stopy:" -#: src/statusicon/statusicon.c:356 -msgid "" -"Status Icon Plugin\n" -"\n" -"Copyright 2005-2007 Giacomo Lozito \n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"This plugin provides a status icon, placed in\n" -"the system tray area of the window manager.\n" -msgstr "" -"Modul Stavová ikona\n" -"\n" -"\n" -"Copyright 2005–2007 Giacomo Lozito \n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"Tento modul poskytuje stavovou ikonu, která\n" -"je umístÄ›na v systémové oblasti desktopu.\n" +#~ msgid "Error writing playlist \"%s\": %s" +#~ msgstr "Chyba pÅ™i zapisování seznamu skladeb „%s“: %s" -#: src/statusicon/statusicon.c:418 -msgid "Status Icon Plugin - Preferences" -msgstr "Modul stavové ikony – Nastavení" +#~ msgid "%s already exist. Continue?" +#~ msgstr "%s už existuje. PokraÄovat?" -#: src/statusicon/statusicon.c:428 -msgid "Right-Click Menu" -msgstr "Nabídka pÅ™i stisku pravého tlaÄítka" +#~ msgid "Show/hide infoarea" +#~ msgstr "Zobrazit/skrýt oblast informací" -#: src/statusicon/statusicon.c:433 -msgid "Small playback menu #1" -msgstr "Drobná nabídka pro pÅ™ehrávání Ä. 1" +#~ msgid "Show main menu" +#~ msgstr "Zobrazit hlavní nabídku" -#: src/statusicon/statusicon.c:436 -msgid "Small playback menu #2" -msgstr "Drobná nabídka pro pÅ™ehrávání Ä. 2" +#~ msgid "Show/hide main menu" +#~ msgstr "Zobrazit/skrýt hlavní nabídku" -#: src/statusicon/statusicon.c:452 -msgid "Mouse Scroll Action" -msgstr "Reakce na rolování myší" +#~ msgid "Show/hide statusbar" +#~ msgstr "Zobrazit/skrýt stavový panel" -#: src/statusicon/statusicon.c:456 -msgid "Change volume" -msgstr "ZmÄ›nit hlasitost" +#~ msgid "Import Playlist ..." +#~ msgstr "Importovat seznam skladeb…" -#: src/statusicon/statusicon.c:458 -msgid "Change playing song" -msgstr "ZmÄ›nit hranou skladbu" +#~ msgid "Export Playlist ..." +#~ msgstr "Exportovat seznam skladeb…" -#: src/stereo_plugin/stereo.c:40 -msgid "" -"Extra Stereo Plugin\n" -"\n" -"By Johan Levin 1999." -msgstr "" -"Extra stereo modul\n" -"\n" -"Napsal Johan Levin, 1999." +#~ msgid "Refresh" +#~ msgstr "Obnovit" -#: src/stereo_plugin/stereo.c:64 -msgid "About Extra Stereo Plugin" -msgstr "O modulu Extra sterou" +#~ msgid "Refresh Selected" +#~ msgstr "Obnovit oznaÄené" -#: src/stereo_plugin/stereo.c:100 -msgid "Configure Extra Stereo" -msgstr "Nastavit Extra sterou" +#~ msgid "Refreshes metadata associated with selected entries." +#~ msgstr "Obnovuje metadata náležící vybraným položkám." -#: src/streambrowser/gui/streambrowser_win.c:62 -msgid "Search:" -msgstr "Hledat:" +#~ msgid "Edit title" +#~ msgstr "Upravit název" -#: src/streambrowser/gui/streambrowser_win.c:81 -#: src/streambrowser/gui/streambrowser_win.c:370 -msgid "Add Bookmark" -msgstr "PÅ™idat záložku" +#~ msgid "Edit the playlist title." +#~ msgstr "Upravit název seznamu skladeb." -#: src/streambrowser/gui/streambrowser_win.c:95 -msgid "Stream browser" -msgstr "ProhlížeÄ proudů" +#~ msgid "By Formatted Title" +#~ msgstr "Podle formátovaného názvu" -#: src/streambrowser/gui/streambrowser_win.c:319 -msgid "Stream name" -msgstr "Název proudu" +#~ msgid "Components" +#~ msgstr "SouÄásti" -#: src/streambrowser/gui/streambrowser_win.c:326 -msgid "Now playing" -msgstr "PrávÄ› hraje" +#~ msgid "Upload selected track(s)" +#~ msgstr "Nahrát vybranou stopu(y)" -#: src/streambrowser/gui/streambrowser_win.c:367 -msgid "Remove Bookmark" -msgstr "Odstranit záložku" +#~ msgid "MTP device handler" +#~ msgstr "Deskriptor MTP zařízení" -#: src/streambrowser/streambrowser.c:331 -msgid "About Stream Browser" -msgstr "O prohlížeÄi proudů" +#~ msgid "Skinned Interface" +#~ msgstr "Témata rozhraní" -#: src/streambrowser/streambrowser.c:332 -msgid "" -"Copyright (c) 2008, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming " -"directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" -"\n" -"This was a Google Summer of Code 2008 project." -msgstr "" -"Copyright © 2008 Calin Crisan a tým Audacious.\n" -"\n" -"Toto je jednoduchý prohlížeÄ proudů, který obsahuje nejpopulárnÄ›jší adresáře " -"proudů.\n" -"Mnoho díků patří vývojářům Streamtuneru ,\n" -"\ta samozÅ™ejmÄ› celé komunitÄ› kolem Audacious.\n" -"\n" -"Také dÄ›kuji tobÄ›, Tony Vroone, za rady a vedení, opÄ›t.\n" -"\n" -"Toto byl projekt z Google Summer of Code 2008." +#~ msgid "Show main player window" +#~ msgstr "Zobrazit hlavním okno pÅ™ehrávaÄe" -#: src/streambrowser/streambrowser.c:357 src/streambrowser/streambrowser.c:367 -msgid "Streambrowser" -msgstr "ProhlížeÄ proudů" +#~ msgid "Ignore" +#~ msgstr "Ignorovat" -#: src/sun/about.c:30 -msgid "About the Sun Driver" -msgstr "O ovladaÄi pro Sun" +#~ msgid "" +#~ "Audacious has been started with all of its windows hidden.\n" +#~ "You may want to show the player window again to control Audacious; " +#~ "otherwise, you'll have to control it remotely via audtool or enabled " +#~ "plugins (such as the statusicon plugin)." +#~ msgstr "" +#~ "Audacious byl spuÅ¡tÄ›n se vÅ¡emi svými okny skrytými.\n" +#~ "Asi budete chtít opÄ›t zobrazit okno pÅ™ehrávaÄe, abyste mohli Audacious " +#~ "ovládat. V opaÄném případÄ› si budete muset vystaÄit se vzdáleným " +#~ "ovládáním pÅ™es audtool nebo povolený zásuvný modul (napÅ™. modul " +#~ "statusicon)." -#: src/sun/about.c:31 -msgid "" -"XMMS BSD Sun Driver\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" -msgstr "" -"BSD ovladaÄ pro Sun programu XMMS\n" -"\n" -"Copyright © 2001 CubeSoft Communications, Inc.\n" -"Správce: .\n" +#~ msgid "Always ignore, show/hide is controlled remotely" +#~ msgstr "Vždy ignorovat, zobrazit/skrýt se ovládá vzdálenÄ›" -#: src/sun/configure.c:199 -msgid "Audio control device:" -msgstr "Zařízení ovládání zvuku:" +#~ msgid "Audacious - broken GTK engine usage warning" +#~ msgstr "Audacious – varování o rozbitém jádru GTK" -#: src/sun/configure.c:270 -msgid "Buffer size (ms):" -msgstr "Velikost vyrovnávací pamÄ›ti (ms):" +#~ msgid "" +#~ "Broken GTK engine in use\n" +#~ "\n" +#~ "Audacious has detected that you are using a broken GTK engine.\n" +#~ "\n" +#~ "The theme engine you are using, %s, is incompatible with some of " +#~ "the features used by modern skins. The incompatible features have been " +#~ "disabled for this session.\n" +#~ "\n" +#~ "To use these features, please consider using a different GTK theme engine." +#~ msgstr "" +#~ "Používá se rozbité jádro GTK\n" +#~ "\n" +#~ "Audacious zjistil, že používáte GTK s rozbitým jádrem.\n" +#~ "\n" +#~ "Jádro pro zpracování témat, které používáte (%s), není sluÄitelné " +#~ "s nÄ›kterými funkcemi používanými moderními vzhledy. Pro tuto relaci byly " +#~ "problematické funkce vypnuty.\n" +#~ " \n" +#~ "Abyste mohli využít tÄ›chto funkcí, zvažte použití jiného tématického " +#~ "jádra GTK." -#: src/sun/configure.c:348 -msgid "Volume controls device:" -msgstr "Zařízení ovládání hlasitosti:" +#~ msgid "Do not display this warning again" +#~ msgstr "Toto varování již příštÄ› nezobrazovat" -#: src/sun/configure.c:361 -msgid "XMMS uses mixer exclusively." -msgstr "XMMS používá výluÄný přístup k mixéru" +#~ msgid "Save as Static Playlist" +#~ msgstr "Uložit jako statický seznam skladeb" -#: src/sun/configure.c:536 -msgid "Sun driver configuration" -msgstr "Nastavení ovladaÄe pro Sun" +#~ msgid "Use Relative Path" +#~ msgstr "Použít relativní cestu" -#: src/tonegen/tonegen.c:53 -msgid "About Tone Generator" -msgstr "O generátoru tónů" +#~ msgid "Load Playlist" +#~ msgstr "NaÄíst seznam skladeb" -#: src/tonegen/tonegen.c:55 -msgid "" -"Sinus tone generator by Haavard Kvaalen \n" -"Modified by Daniel J. Peng \n" -"\n" -"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" -"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" -msgstr "" -"Generátor harmonických tónů, vytvoÅ™il HÃ¥vard KvÃ¥len \n" -"Upraven Danielem J. Pengem \n" -"\n" -"Pro jeho aktivaci zadejte URL: tone://frekvence1;frekvence2;frekvence3;...\n" -"napÅ™. tone://2000;2005 pro pÅ™ehrání tónů o frekvenci 2000 a 2005 Hz." +#~ msgid "Save Playlist" +#~ msgstr "Uložit seznam skladeb" -#: src/tonegen/tonegen.c:105 -#, c-format -msgid "%s %.1f Hz" -msgstr "%s %.1f Hz" +#~ msgid "%s: %d kbps, %d Hz, %s" +#~ msgstr "%s: %d kb/s, %d Hz, %s" -#: src/tonegen/tonegen.c:105 -msgid "Tone Generator: " -msgstr "Generátor tónů:" +#~ msgid "" +#~ "* Select ALSA output ports *\n" +#~ "MIDI events will be sent to the ports selected here. In example, if your " +#~ "audio card provides a hardware synth and you want to play MIDI with it, " +#~ "you'll probably want to select the wavetable synthesizer ports." +#~ msgstr "" +#~ "* Vyberte výstupní port ALSY *\n" +#~ "MIDI události budou zasílány portům zde vybraným. Na příklad pokud vaÅ¡e " +#~ "zvuková karta poskytuje hardwarový syntetizátor a chcete-li jím pÅ™ehrávat " +#~ "MIDI, budete pravdÄ›podobnÄ› potÅ™ebovat vybrat porty tabulkového " +#~ "(wavetable) syntetizátoru." + +#~ msgid "" +#~ "* Select ALSA mixer card *\n" +#~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +#~ "ouput plugins from the player. During playback, the player volumeslider " +#~ "will manipulate the mixer control you select here. If you're using " +#~ "wavetable synthesizer ports, you'll probably want to select the Synth " +#~ "control here." +#~ msgstr "" +#~ "* Vyberte kartu se směšovaÄem ALSY *\n" +#~ "Backend ALSY posílá výstup přímo skrz ALSU. Efekty a výstupní moduly " +#~ "pÅ™ehrávaÄe nebudou použity. BÄ›hem pÅ™ehrávání jezdec ovládající hlasitost " +#~ "bude pracovat se směšovaÄem, který zde vyberete. Používáte-li porty " +#~ "tabulkového syntetizátoru, pravdÄ›podobnÄ› zde budete chtít vybrat " +#~ "„Ovládání syntézy“." + +#~ msgid "" +#~ "* Select ALSA mixer control *\n" +#~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +#~ "ouput plugins from the player. During playback, the player volume slider " +#~ "will manipulate the mixer control you select here. If you're using " +#~ "wavetable synthesizer ports, you'll probably want to select the Synth " +#~ "control here." +#~ msgstr "" +#~ "* Vyberte ovládání směšovaÄe ALSY *\n" +#~ "Backend ALSY posílá výstup přímo skrz ALSU. Efekty a výstupní moduly " +#~ "pÅ™ehrávaÄe nebudou použity. BÄ›hem pÅ™ehrávání jezdec ovládající hlasitost " +#~ "bude pracovat se směšovaÄem, který zde vyberete. Používáte-li porty " +#~ "tabulkového syntetizátoru, pravdÄ›podobnÄ› zde budete chtít vybrat " +#~ "„Ovládání syntézy“." + +#~ msgid "" +#~ "* Backend selection *\n" +#~ "AMIDI-Plug works with backends, in a modular fashion; here you should " +#~ "select your backend; that is, the way MIDI events are going to be handled " +#~ "and played.\n" +#~ "If you have a hardware synthesizer on your audio card, and ALSA supports " +#~ "it, you'll want to use the ALSA backend. It can also be used with " +#~ "anything that provides an interface to the ALSA sequencer, including " +#~ "software synths or external devices.\n" +#~ "If you want to rely on a software synthesizer and/or want to pipe audio " +#~ "into effect and output plugins of the player you'll want to use the good " +#~ "FluidSynth backend.\n" +#~ "Press the info button to read specific information about each backend." +#~ msgstr "" +#~ "* VýbÄ›r backendu *\n" +#~ "AMIDI-Plug pracuje s backendy modulárním způsobem. Zde byste si mÄ›li " +#~ "vybrat svůj backend, tj. způsob, jakým způsobem se bude zacházet s MIDI " +#~ "událostmi a jak budou hrány.\n" +#~ "Jestliže na zvukové kartÄ› máte hardwarový syntetizátor a ALSA jej " +#~ "podporuje, je rozumné použít backend ALSY. Taktéž pÅ™ijde vhod, máte " +#~ "cokoliv jiného, vÄetnÄ› softwarových syntetizátorů nebo vnÄ›jších zařízení, " +#~ "co má rozhraní k sekvenceru ALSY.\n" +#~ "Pokud se chcete spolehnout na softwarový syntetizátor a/nebo chcete zvuk " +#~ "protáhnout efektovými a výstupním modulem, dobrou volbou bude backend " +#~ "FluidSynth.\n" +#~ "Podrobnosti o jednotlivých backendech získáte pÅ™es tlaÄítko „Podrobnosti“." + +#~ msgid "" +#~ "* Transpose function *\n" +#~ "This option allows you to play the midi file transposed in a different " +#~ "key, by shifting of the desired number of semitones all its notes " +#~ "(excepting those on midi channel 10, reserved for percussions). " +#~ "Especially useful if you wish to sing or play along with another " +#~ "instrument." +#~ msgstr "" +#~ "* Funkce transpozice *\n" +#~ "Tato volba nabízí transpozici pÅ™ehrávaného MIDI souboru do jiné tóniny " +#~ "o zadaný poÄet půltónů (kromÄ› tónů 10. stopy, která je vyhrazena pro " +#~ "bicí). Tato funkce je užiteÄná, chcete-li doprovázet skladbu zpÄ›vem Äi " +#~ "jiným nástrojem." + +#~ msgid "" +#~ "* Drumshift function *\n" +#~ "This option allows you to shift notes on midi channel 10 (the standard " +#~ "percussions channel) of the desired number of semitones. This results in " +#~ "different drumset and percussions being used during midi playback, so if " +#~ "you wish to enhance (or reduce, or alter) percussion sounds, try to play " +#~ "with this value." +#~ msgstr "" +#~ "* Funkce posunu bubnů *\n" +#~ "Tato volba nabízí posun not na 10. MIDI kanále (standardní kanál pro " +#~ "bicí) o zadaný poÄet půltónů. Výsledkem je odliÅ¡ná sada bicích nástrojů " +#~ "použitá bÄ›hem pÅ™ehrávání. Takže chcete-li vylepÅ¡it (ztlumit Äi jinak " +#~ "pozmÄ›nit) zvuk bicích, pohrejte si s touto hodnotou." + +#~ msgid "" +#~ "* Pre-calculate MIDI length *\n" +#~ "If this option is enabled, AMIDI-Plug will calculate the MIDI file length " +#~ "as soon as the player requests it, instead of doing that only when the " +#~ "MIDI file is being played. In example, MIDI length will be calculated " +#~ "straight after adding MIDI files in a playlist. Disable this option if " +#~ "you want faster playlist loading (when a lot of MIDI files are added), " +#~ "enable it to display more information in the playlist straight after " +#~ "loading." +#~ msgstr "" +#~ "* PÅ™edpoÄítat délku skladby *\n" +#~ "Pokud je tato funkce zapnuta, AMIDI-Plug vypoÄítá délku MIDI souboru " +#~ "okamžitÄ›, jak o ni pÅ™ehrávaÄ požádá. Jinak bude délka urÄena až pÅ™i " +#~ "prvním pÅ™ehrání. Na příklad délka skladby bude vypoÄtena ihned po pÅ™idání " +#~ "MIDI souboru do seznamu skladeb. VypnÄ›te tuto funkci, požadujete-li " +#~ "rychlejší nahrávání seznamu skladeb (obzvláštÄ› má-li mnoho MIDI souborů), " +#~ "zapnÄ›te tuto funkci, potÅ™ebujete-li vidÄ›t délku skladeb ihned po naÄtení " +#~ "seznamu." + +#~ msgid "" +#~ "* Extract comments from MIDI files *\n" +#~ "Some MIDI files contain text comments (author, copyright, instrument " +#~ "notes, etc.). If this option is enabled, AMIDI-Plug will extract and " +#~ "display comments (if available) in the file information dialog." +#~ msgstr "" +#~ "* Vytáhnout komentáře z MIDI souborů *\n" +#~ "NÄ›které MIDI soubory obsahují textové komentáře (autora, autorská práva, " +#~ "poznámky k nástrojům apod.). Pokud je tato funkce zapnutá, AMIDI-Plug " +#~ "tyto komentáře zjistí a zobrazí v dialogu o podrobnostech souboru (pokud " +#~ "existují)." + +#~ msgid "" +#~ "* Extract lyrics from MIDI files *\n" +#~ "Some MIDI files contain song lyrics. If this option is enabled, AMIDI-" +#~ "Plug will extract and display song lyrics (if available) in the file " +#~ "information dialog." +#~ msgstr "" +#~ "* Vytáhnout text z MIDI souborů *\n" +#~ "NÄ›které MIDI soubory obsahují text písnÄ›. Pokud je tato funkce zapnuta, " +#~ "AMIDI-Plug tento text získá a zobrazí v dialogu o podrobnostech souboru " +#~ "(pokud existuje)." + +#~ msgid "" +#~ "* Select SoundFont files *\n" +#~ "In order to play MIDI with FluidSynth, you need to specify at least one " +#~ "valid SoundFont file here (use absolute paths). The loading order is from " +#~ "the top (first) to the bottom (last)." +#~ msgstr "" +#~ "* VýbÄ›r SoundFont souborů *\n" +#~ "Abyste mohli pÅ™ehrávat MIDI pÅ™es FluidSynth, musíte urÄit alespoň jeden " +#~ "platný soundfontový soubor (použijte absolutní cesty). PoÅ™adí nahrávání " +#~ "je od shora (první) dolů (poslední)." + +#~ msgid "" +#~ "* Load SoundFont on player start *\n" +#~ "Depending on your system speed, SoundFont loading in FluidSynth will " +#~ "require up to a few seconds. This is a one-time task (the soundfont will " +#~ "stay loaded until it is changed or the backend is unloaded) that can be " +#~ "done at player start, or before the first MIDI file is played (the latter " +#~ "is a better choice if you don't use your player to listen MIDI files " +#~ "only)." +#~ msgstr "" +#~ "* Nahrát SoundFont pÅ™i spuÅ¡tÄ›ní pÅ™ehrávaÄe *\n" +#~ "V závislosti na rychlosti vaÅ¡eho systému nahrávání SoundFontu do " +#~ "FluidSynthu může trvat i nÄ›kolik sekund. Jedná se jednorázovou záležitost " +#~ "(soundfont zůstane nahraný, dokud jej nevymÄ›níte nebo nezrušíte backend), " +#~ "která může být provedena bÄ›hem spouÅ¡tÄ›ní pÅ™ehrávaÄe nebo pÅ™ed zahájením " +#~ "produkce prvního MIDI souboru (druhá možnost je výhodnÄ›jší, jestliže " +#~ "neplánujete poslouchat jen MIDI soubory)." + +#~ msgid "" +#~ "* Load SoundFont on first midifile play *\n" +#~ "Depending on your system speed, SoundFont loading in FluidSynth will " +#~ "require up to a few seconds. This is a one-time task (the soundfont will " +#~ "stay loaded until it is changed or the backend is unloaded) that can be " +#~ "done at player start, or before the first MIDI file is played (the latter " +#~ "is a better choice if you don't use your player to listen MIDI files " +#~ "only)." +#~ msgstr "" +#~ "* Nahrát SoundFont pÅ™ed prvním MIDI souborem *\n" +#~ "V závislosti na rychlosti vaÅ¡eho systému nahrávání SoundFontu do " +#~ "FluidSynthu může trvat i nÄ›kolik sekund. Jedná se jednorázovou záležitost " +#~ "(soundfont zůstane nahraný, dokud jej nevymÄ›níte nebo nezrušíte backend), " +#~ "která může být provedena bÄ›hem spouÅ¡tÄ›ní pÅ™ehrávaÄe nebo pÅ™ed zahájením " +#~ "produkce prvního MIDI souboru (druhá možnost je výhodnÄ›jší, jestliže " +#~ "neplánujete poslouchat jen MIDI soubory)." + +#~ msgid "" +#~ "* Synthesizer gain *\n" +#~ "From FluidSynth docs: the gain is applied to the final or master output " +#~ "of the synthesizer; it is set to a low value by default to avoid the " +#~ "saturation of the output when random MIDI files are played." +#~ msgstr "" +#~ "* Zesílení syntetizátoru *\n" +#~ "Z dokumentace FluidSynth: zesílení je aplikován na koneÄný nebo hlavní " +#~ "výstup syntetizátoru. ImplicitnÄ› je nastaveno na nízkou hodnotu, aby se " +#~ "zabránilo oÅ™ezávání pÅ™i pÅ™ehrávání různorodých MIDI souborů." + +#~ msgid "" +#~ "* Synthesizer polyphony *\n" +#~ "From FluidSynth docs: the polyphony defines how many voices can be played " +#~ "in parallel; the number of voices is not necessarily equivalent to the " +#~ "number of notes played simultaneously; indeed, when a note is struck on a " +#~ "specific MIDI channel, the preset on that channel may create several " +#~ "voices, for example, one for the left audio channel and one for the right " +#~ "audio channels; the number of voices activated depends on the number of " +#~ "instrument zones that fall in the correspond to the velocity and key of " +#~ "the played note." +#~ msgstr "" +#~ "* Vícehlas syntetizátoru *\n" +#~ "Z dokumentace FluidSynth: vícehlas urÄuje, kolik hlasů může hrát " +#~ "najednou. PoÄet hlasů není nezbytnÄ› shodný s poÄtem not hraných souÄasnÄ›. " +#~ "Ve skuteÄnosti když je nota vyslána na urÄitém MIDI kanálu, pÅ™edvolba na " +#~ "takovém kanálu může vytvoÅ™it více hlasů, na příklad jeden pro levý " +#~ "zvukový kanál a jeden pro pravý zvukový kanál. PoÄet aktivovaných hlasů " +#~ "závisí na poÄtu nástrojových zón, které spadají do odpovídající rychlosti " +#~ "a klíÄi hrané noty." + +#~ msgid "" +#~ "* Synthesizer reverb *\n" +#~ "From FluidSynth docs: when set to \"yes\" the reverb effects module is " +#~ "activated; note that when the reverb module is active, the amount of " +#~ "signal sent to the reverb module depends on the \"reverb send\" generator " +#~ "defined in the SoundFont." +#~ msgstr "" +#~ "* Dozvuk syntetizátoru *\n" +#~ "Z dokumentace FluidSynth: je-li nastaveno na „ano“, modul efektu dozvuku " +#~ "je aktivován. Pamatujte, že pÅ™i aktivovaném modulu dozvuku je množství " +#~ "signálu zasílaného tomuto modulu závislé na generátoru „zasílání " +#~ "dozvuku“, který je definován v SoundFontu." + +#~ msgid "" +#~ "* Synthesizer chorus *\n" +#~ "From FluidSynth docs: when set to \"yes\" the chorus effects module is " +#~ "activated; note that when the chorus module is active, the amount of " +#~ "signal sent to the chorus module depends on the \"chorus send\" generator " +#~ "defined in the SoundFont." +#~ msgstr "" +#~ "* Sbor syntetizátoru *\n" +#~ "Z dokumentace FluidSynth: je-li nastaveno na „ano“, modul efektu sboru je " +#~ "aktivován. Pamatujte, že pÅ™i aktivovaném modulu sboru je množství signálu " +#~ "zasílaného tomuto modulu závislé na generátoru „zasílání sboru“, který je " +#~ "definován v SoundFontu." + +#~ msgid "" +#~ "* Synthesizer samplerate *\n" +#~ "The sample rate of the audio generated by the synthesizer. You can also " +#~ "specify a custom value in the interval 22050Hz-96000Hz." +#~ msgstr "" +#~ "* Vzorkovací frekvence syntetizátoru *\n" +#~ "Vzorkovací frekvence zvuku generovaného syntetizátorem. Lze zadat vlastní " +#~ "hodnotu z intervalu 22050 Hz–96000 Hz." + +#~ msgid "Target volume:" +#~ msgstr "Cílová hlasitost:" + +#~ msgid "" +#~ "If enabled, the extension from the original filename will not be stripped " +#~ "before adding the new file extension to the end." +#~ msgstr "" +#~ "Je-li zapnuto, přípona ze jména původního souboru nebude pÅ™ed pÅ™idáním " +#~ "nové přípony odstranÄ›na." + +#~ msgid "" +#~ "best/slowest:0;\n" +#~ "worst/fastest:9;\n" +#~ "recommended:2;\n" +#~ "default:5;" +#~ msgstr "" +#~ "nejlepší/nejpomalejší:0;\n" +#~ "nejhorší/nejrychlejší:9;\n" +#~ "doporuÄená:2;\n" +#~ "výchozí:5;" + +#~ msgid "Adds 16 bit checksum to every frame" +#~ msgstr "Ke každému rámci pÅ™idat 16b kontrolní souÄet" + +#~ msgid "Variable bitrate" +#~ msgstr "PromÄ›nný datový tok" + +#~ msgid "Average bitrate" +#~ msgstr "PrůmÄ›rný datový tok" + +#~ msgid "" +#~ "For use with players that do not support low bitrate mp3 (Apex AD600-A " +#~ "DVD/mp3 player)" +#~ msgstr "" +#~ "Pro použití v pÅ™ehrávaÄích, které nepodporují úzkopásmové MP3 (pÅ™ehrávaÄ " +#~ "Apex AD600-A DVD/MP3)" + +#~ msgid "" +#~ "highest:0;\n" +#~ "lowest:9;\n" +#~ "default:4;" +#~ msgstr "" +#~ "nejvyšší:0;\n" +#~ "nejnižší:9;\n" +#~ "výchozí:4;" + +#~ msgid "FLAC Audio Plugin " +#~ msgstr "Zvukový modul FLAC" + +#~ msgid "Show playlists" +#~ msgstr "Zobrazit seznamy skladeb" + +#~ msgid "Show/hide playlists" +#~ msgstr "Zobrazit/skrýt seznamy skladeb" + +#~ msgid "LyricWiki" +#~ msgstr "LyricWiki" + +#~ msgid "Stream browser" +#~ msgstr "ProhlížeÄ proudů" + +#~ msgid "Streambrowser" +#~ msgstr "ProhlížeÄ proudů" + +#~ msgid "" +#~ "XMMS BSD Sun Driver\n" +#~ "\n" +#~ "Copyright (c) 2001 CubeSoft Communications, Inc.\n" +#~ "Maintainer: .\n" +#~ msgstr "" +#~ "BSD ovladaÄ pro Sun programu XMMS\n" +#~ "\n" +#~ "Copyright © 2001 CubeSoft Communications, Inc.\n" +#~ "Správce: .\n" -#: src/vorbis/configure.c:31 -msgid "Override generic titles" -msgstr "PÅ™epsat původní názvy" - -#: src/vorbis/configure.c:32 -msgid "Title format:" -msgstr "Formát názvu:" - -#: src/vorbis/configure.c:36 -msgid "Ogg Vorbis Tags" -msgstr "Popisky Ogg Vorbis" - -#: src/vorbis/configure.c:68 -msgid "Ogg Vorbis Audio Plugin Configuration" -msgstr "Nastavení modulu Ogg Vorbis Audio" +#~ msgid "Audio control device:" +#~ msgstr "Zařízení ovládání zvuku:" -#: src/vorbis/vorbis.c:549 -msgid "About Ogg Vorbis Audio Plugin" -msgstr "O modulu Ogg Vorbis Audio" +#~ msgid "Buffer size (ms):" +#~ msgstr "Velikost vyrovnávací pamÄ›ti (ms):" -#: src/vorbis/vorbis.c:554 -msgid "" -"Ogg Vorbis Plugin by the Xiph.org Foundation\n" -"\n" -"Original code by\n" -"Tony Arcieri \n" -"Contributions from\n" -"Chris Montgomery \n" -"Peter Alm \n" -"Michael Smith \n" -"Jack Moffitt \n" -"Jorn Baayen \n" -"Haavard Kvaalen \n" -"Gian-Carlo Pascutto \n" -"Eugene Zagidullin \n" -"\n" -"Visit the Xiph.org Foundation at http://www.xiph.org/\n" -msgstr "" -"Modul Ogg Vorbis od Xiph.org Foundation\n" -"\n" -"Původní kód napsal\n" -"Tony Arcieri \n" -"PÅ™ispÄ›li\n" -"Chris Montgomery \n" -"Peter Alm \n" -"Michael Smith \n" -"Jack Moffitt \n" -"Jorn Baayen \n" -"HÃ¥vard KvÃ¥len \n" -"Gian-Carlo Pascutto \n" -"Eugene Zagidullin \n" -"\n" -"NavÅ¡tivte stránky Xiph.org Foundation na http://www.xiph.org/.\n" +#~ msgid "Volume controls device:" +#~ msgstr "Zařízení ovládání hlasitosti:" -#: src/vtx/about.c:14 -msgid "About Vortex Player" -msgstr "O pÅ™ehrávaÄi vortexu" +#~ msgid "XMMS uses mixer exclusively." +#~ msgstr "XMMS používá výluÄný přístup k mixéru" -#: src/vtx/about.c:15 -msgid "" -"Vortex file format player by Sashnov Alexander \n" -"Founded on original source in_vtx.dll by Roman Sherbakov \n" -"\n" -"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" -"and other AY/YM music sites.\n" -"\n" -"Audacious implementation by Pavel Vymetalek " -msgstr "" -"PÅ™ehrávaÄ souborového formátu Vortex napsal Sashnov Alexander .\n" -"Založeno na původním zdrojovém kódu in_vtx.dll od Romana Sherbakova " -".\n" -"\n" -"Hudba ve formátu VTX je k nalezení na http://vtx.microfor.ru/music.htm\n" -"a dalších AY/YM hudebních stránkách.\n" -"\n" -"Do Audacious implementoval Pavel Vymetálek ." +#~ msgid "Sun driver configuration" +#~ msgstr "Nastavení ovladaÄe pro Sun" -#: src/wavpack/wavpack.c:371 -#, c-format -msgid "Wavpack Decoder Plugin %s" -msgstr "Dekódovací modul Wavpack %s" +#~ msgid "Queue" +#~ msgstr "Fronta" -#: src/wavpack/wavpack.c:372 -msgid "" -"Copyright (c) 2006 William Pitcock \n" -"\n" -"Some of the plugin code was by Miles Egan\n" -"Visit the Wavpack site at http://www.wavpack.com/\n" -msgstr "" -"Copyright © 2006 William Pitcock \n" -"\n" -"Části kódu modulu napsal Miles Egan\n" -"NavÅ¡tivte stránku Wavpacku na http://www.wavpack.com/\n" +#~ msgid "Effect strength:" +#~ msgstr "Síla efektu:" #~ msgid "PREAMP" #~ msgstr "PREAMP" @@ -5965,12 +5958,6 @@ #~ "\n" #~ "Neznámý typ souboru %s.\n" -#~ msgid "Randomize List" -#~ msgstr "Zamíchat poÅ™adí" - -#~ msgid "Randomizes the playlist." -#~ msgstr "Sklady v seznamu seÅ™adí náhodnÄ›." - #~ msgid "Start of playback" #~ msgstr "ZaÄátek pÅ™ehrávání" @@ -6895,9 +6882,6 @@ #~ msgid "Artist:" #~ msgstr "UmÄ›lec:" -#~ msgid "Album:" -#~ msgstr "Album:" - #~ msgid "Comment:" #~ msgstr "Komentář:" @@ -6928,9 +6912,6 @@ #~ msgid "bits per sample: %d" #~ msgstr "bitů na vzorek: %d" -#~ msgid "channels: %d" -#~ msgstr "kanálů: %d" - #~ msgid "length: %d:%.2d" #~ msgstr "délka: %d:%.2d" @@ -6988,9 +6969,6 @@ #~ msgid "Entries" #~ msgstr "Položky" -#~ msgid "_Rename" -#~ msgstr "_PÅ™ejmenovat" - #~ msgid "VBR" #~ msgstr "VBR" @@ -7164,9 +7142,6 @@ #~ msgid " Target & gain" #~ msgstr " Cíl a zesílení" -#~ msgid "Target audio level:" -#~ msgstr "Cílová hladina hlasitosti:" - #~ msgid "Maximum gain:" #~ msgstr "Maximální zesílení:" @@ -7461,9 +7436,6 @@ #~ msgid "Musepack Tag" #~ msgstr "Popis musepacku" -#~ msgid "Track:" -#~ msgstr "Stopa:" - #~ msgid "Musepack Info" #~ msgstr "Informace o musepacku" @@ -7564,9 +7536,6 @@ #~ msgid "Eighth (~6 fps)" #~ msgstr "Osminová (~6 Hz)" -#~ msgid "Audio Settings" -#~ msgstr "Nastavení zvuku" - #~ msgid "Force reopen audio when audio type changed" #~ msgstr "Vynutit znovuotevÅ™ení zvuku, když se typ zvuku zmÄ›ní" @@ -8407,12 +8376,6 @@ #~ msgid " Ogg Vorbis Info " #~ msgstr " Ogg Vorbis Info " -#~ msgid "Bit rate:" -#~ msgstr "Datový tok:" - -#~ msgid "Length:" -#~ msgstr "Délka:" - #~ msgid "File size:" #~ msgstr "Velikost souboru:" @@ -9003,9 +8966,6 @@ #~ msgid "Add new files to a temporary playlist" #~ msgstr "PÅ™idat soubory do doÄasného seznamu skladeb" -#~ msgid "Display the main window" -#~ msgstr "Zobrazit hlavní okno" - #~ msgid "Display all open Audacious windows" #~ msgstr "Zobrazit vÅ¡echna okna Audacious" @@ -9250,24 +9210,15 @@ #~ msgid "Mouse" #~ msgstr "MyÅ¡" -#~ msgid "Artist" -#~ msgstr "UmÄ›lec" - #~ msgid "Tracknumber" #~ msgstr "Číslo stopy" #~ msgid "Genre" #~ msgstr "Žánr" -#~ msgid "Filepath" -#~ msgstr "Cesta k souboru" - #~ msgid "Date" #~ msgstr "Datum" -#~ msgid "Year" -#~ msgstr "Rok" - #~ msgid "localhost" #~ msgstr "localhost" @@ -9298,12 +9249,6 @@ #~ msgid "Add/Open URL Dialog" #~ msgstr "Dialog PÅ™idat/otevřít URL" -#~ msgid "Un_queue" -#~ msgstr "Ode_brat z fronty" - -#~ msgid "_Queue" -#~ msgstr "_Fronta" - #~ msgid "_Filter:" #~ msgstr "_Filtr:" @@ -9320,9 +9265,6 @@ #~ msgid "File extension" #~ msgstr "Přípona souboru" -#~ msgid "Track number" -#~ msgstr "Číslo stopy" - #~ msgid "%{n:...%}: Display \"...\" only if element %n is present" #~ msgstr "%{n:…%}: Zobraz „…“ pouze pokud %n nechybí" @@ -10307,9 +10249,6 @@ #~ msgid "Visualization Plugins" #~ msgstr "VizualizaÄní moduly" -#~ msgid "Enable/Disable" -#~ msgstr "Povolit/zakázat" - #~ msgid "Fullscreen" #~ msgstr "Na celou obrazovku" diff -Nru audacious-plugins-2.4.4/po/cy.po audacious-plugins-3.2/po/cy.po --- audacious-plugins-2.4.4/po/cy.po 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/cy.po 2012-01-20 19:48:30.000000000 +0000 @@ -5,7 +5,7 @@ msgstr "" "Project-Id-Version: audacious-plugins 1.3\n" "Report-Msgid-Bugs-To: http://jira.atheme.org/\n" -"POT-Creation-Date: 2010-08-03 17:55-0400\n" +"POT-Creation-Date: 2011-07-17 18:49-0400\n" "PO-Revision-Date: 2007-02-12 03:37-0600\n" "Last-Translator: William Pitcock \n" "Language-Team: Welsh \n" @@ -16,7 +16,7 @@ "X-Poedit-Language: Welsh\n" "X-Poedit-SourceCharset: utf-8\n" -#: src/aac/libmp4.c:291 +#: src/aac/libmp4.c:256 #, c-format msgid "" "Using libfaad2-%s for decoding.\n" @@ -24,5516 +24,4592 @@ "Copyright (c) 2005-2006 Audacious team" msgstr "" -#: src/aac/libmp4.c:296 +#: src/aac/libmp4.c:261 #, fuzzy msgid "About MP4 AAC decoder plugin" msgstr "Ynghylch Ategyn Sain MPEG" -#: src/adplug/adplug-xmms.cc:153 -msgid "About " -msgstr "Ynghylch" - -#: src/adplug/adplug-xmms.cc:157 -msgid "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"This plugin is released under the terms and conditions of the GNU LGPL.\n" -"See http://www.gnu.org/licenses/lgpl.html for details.\n" -"\n" -"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et " -"al.\n" -"Linked AdPlug library version: " -msgstr "" -"\n" -"Hawlfraint (C) 2002, 2003 Simon Peter \n" -"\n" -"Mae'r rhaglen hwn yn rhyddhau â GNU LGPL.\n" -"Canfod http://www.gnu.org/licenses/lgpl.html am manylion.\n" -"\n" -"Mae'r rhaglen defnyddio yn AdPlug llyfrgell, pa ys hawlfraint (C) Simon " -"Peter, et al.\n" -"Fersiwn cynnwys AdPlug llyfrgell:" - -#: src/adplug/adplug-xmms.cc:234 +#: src/alsa/config.c:210 #, fuzzy -msgid "AdPlug :: Configuration" -msgstr "AMIDI-Plug - ffurfweddu" - -#: src/adplug/adplug-xmms.cc:243 src/adplug/adplug-xmms.cc:504 -#: src/cdaudio-ng/configure.c:258 src/crystalizer/crystalizer.c:127 -#: src/echo_plugin/gui.c:122 src/jack/configure.c:146 src/null/null.c:109 -#: src/stereo_plugin/stereo.c:123 src/sun/configure.c:557 -msgid "Ok" -msgstr "Iawn" - -#: src/adplug/adplug-xmms.cc:253 src/alarm/interface.c:1398 -#: src/cdaudio-ng/configure.c:263 src/crystalizer/crystalizer.c:136 -#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 -#: src/modplug/gui/interface.cxx:715 src/null/null.c:110 -#: src/stereo_plugin/stereo.c:132 src/sun/configure.c:565 -msgid "Cancel" -msgstr "Dileu" - -#: src/adplug/adplug-xmms.cc:269 src/console/configure.c:154 -#: src/modplug/gui/interface.cxx:629 src/modplug/gui/interface.cxx:888 -msgid "General" -msgstr "Cyffredinol" +msgid "Default PCM device" +msgstr "Dyfais PCM rhagosodedig (%s)" -#: src/adplug/adplug-xmms.cc:281 +#: src/alsa/config.c:235 #, fuzzy -msgid "Sound quality" -msgstr "Clip Sain" +msgid "Default mixer device" +msgstr "Dyfais PCM rhagosodedig (%s)" -#: src/adplug/adplug-xmms.cc:286 src/modplug/gui/interface.cxx:188 +#: src/alsa/config.c:447 #, fuzzy -msgid "Resolution" -msgstr "Cydraniad:" +msgid "ALSA Output Plugin Preferences" +msgstr "Ynghylch Ategyn ESounD" -#: src/adplug/adplug-xmms.cc:288 +#: src/alsa/config.c:454 #, fuzzy -msgid "8bit" -msgstr "8 did" +msgid "PCM device:" +msgstr "Dyfais cymysgu" + +#: src/alsa/config.c:456 src/OSS/configure.c:246 +msgid "Mixer device:" +msgstr "Dyfais cymysgu" -#: src/adplug/adplug-xmms.cc:293 +#: src/alsa/config.c:458 #, fuzzy -msgid "16bit" -msgstr "16 did" +msgid "Mixer element:" +msgstr "Dyfais cymysgu" -#: src/adplug/adplug-xmms.cc:301 src/modplug/gui/interface.cxx:219 -msgid "Channels" -msgstr "Sianeli:" +#: src/alsa/config.c:461 +msgid "Work around drain hangup" +msgstr "" -#: src/adplug/adplug-xmms.cc:303 src/filewriter/mp3.c:934 -#: src/mpg123/mpg123.c:174 src/sid/xs_interface.c:301 -msgid "Mono" -msgstr "Mono" +#: src/alsa/plugin.c:59 +#, fuzzy +msgid "About ALSA Output Plugin" +msgstr "Ynghylch Ategyn Allbwn JACK 0.17" -#: src/adplug/adplug-xmms.cc:308 src/filewriter/mp3.c:929 -#: src/modplug/gui/interface.cxx:205 src/mpg123/mpg123.c:174 -#: src/sid/xs_interface.c:308 -msgid "Stereo" -msgstr "Stereo" +#: src/alsa/plugin.c:81 +#, fuzzy +msgid "ALSA error" +msgstr "Terror" -#: src/adplug/adplug-xmms.cc:312 +#: src/amidi-plug/amidi-plug.c:335 msgid "" -"Setting stereo is not recommended, unless you need to. This won't add any " -"stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!" -msgstr "" - -#: src/adplug/adplug-xmms.cc:320 -msgid "Frequency" +"You have not selected any sequencer ports for MIDI playback. You can do so " +"in the MIDI plugin preferences." msgstr "" -#: src/adplug/adplug-xmms.cc:356 src/adplug/adplug-xmms.cc:560 -#: src/console/configure.c:156 src/gtkui/ui_manager.c:64 -#: src/skins/ui_manager.c:165 -msgid "Playback" -msgstr "Chwarae" - -#: src/adplug/adplug-xmms.cc:360 -msgid "Detect songend" +#: src/amidi-plug/backend-alsa/b-alsa.c:35 +msgid "ALSA Backend " msgstr "" -#: src/adplug/adplug-xmms.cc:364 +#: src/amidi-plug/backend-alsa/b-alsa.c:37 msgid "" -"If enabled, XMMS will detect a song's ending, stop it and advance in the " -"playlist. If disabled, XMMS won't take notice of a song's ending and loop it " -"all over again and again." -msgstr "" - -#: src/adplug/adplug-xmms.cc:375 -#, fuzzy -msgid "Formats" -msgstr "Fformat:" - -#: src/adplug/adplug-xmms.cc:382 -msgid "Format selection" +"This backend sends MIDI events to a group of user-chosen ALSA sequencer " +"ports. The ALSA sequencer interface is very versatile, it can provide ports " +"for audio cards hardware synthesizers (i.e. emu10k1) but also for software " +"synths, external devices, etc.\n" +"This backend does not produce audio, MIDI events are handled directly from " +"devices/programs behind the ALSA ports; in example, MIDI events sent to the " +"hardware synth will be directly played.\n" +"Backend written by Giacomo Lozito." msgstr "" -#: src/adplug/adplug-xmms.cc:385 -#, fuzzy -msgid "Format" -msgstr "Fformat:" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Extension" +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 +msgid "FluidSynth Backend " msgstr "" -#: src/adplug/adplug-xmms.cc:425 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 msgid "" -"Selected file types will be recognized and played back by this plugin. " -"Deselected types will be ignored to make room for other plugins to play " -"these files." +"This backend produces audio by sending MIDI events to FluidSynth, a real-" +"time software synthesizer based on the SoundFont2 specification (www." +"fluidsynth.org).\n" +"Produced audio can be manipulated via player effect plugins and is processed " +"by chosen ouput plugin.\n" +"Backend written by Giacomo Lozito." msgstr "" -#: src/adplug/adplug-xmms.cc:511 -msgid "AdPlug :: File Info" +#: src/amidi-plug/i_configure-alsa.c:228 +msgid "ALSA BACKEND CONFIGURATION" msgstr "" -#: src/adplug/adplug-xmms.cc:533 src/amidi-plug/i_configure-fluidsynth.c:348 -msgid "Filename" -msgstr "Enw ffeil" - -#: src/adplug/adplug-xmms.cc:537 src/skins/ui_playlist.c:390 -#, fuzzy -msgid "Title: " -msgstr "Teitl:" +#: src/amidi-plug/i_configure-alsa.c:331 +msgid "Port" +msgstr "Porth" -#: src/adplug/adplug-xmms.cc:538 -msgid "Author: " +#: src/amidi-plug/i_configure-alsa.c:333 +msgid "Client name" msgstr "" -#: src/adplug/adplug-xmms.cc:539 -#, fuzzy -msgid "File Type: " -msgstr "Maint ffeil:" - -#: src/adplug/adplug-xmms.cc:540 -msgid "Subsongs: " +#: src/amidi-plug/i_configure-alsa.c:335 +msgid "Port name" msgstr "" -#: src/adplug/adplug-xmms.cc:541 -#, fuzzy -msgid "Instruments: " -msgstr "Offerynnol" - -#: src/adplug/adplug-xmms.cc:546 -msgid "Orders: " +#: src/amidi-plug/i_configure-alsa.c:346 +msgid "ALSA output ports" msgstr "" -#: src/adplug/adplug-xmms.cc:547 -msgid "Patterns: " +#: src/amidi-plug/i_configure-alsa.c:399 +msgid "Soundcard: " msgstr "" -#: src/adplug/adplug-xmms.cc:551 -#, fuzzy -msgid "Song" -msgstr "Swing" - -#: src/adplug/adplug-xmms.cc:577 -#, fuzzy -msgid "Instrument name" -msgstr "Offerynnol" - -#: src/adplug/adplug-xmms.cc:619 -#, fuzzy -msgid "Song message" -msgstr "Newid Cân %s" +#: src/amidi-plug/i_configure-alsa.c:401 +msgid "Mixer control: " +msgstr "Cymysgu rheoli:" -#: src/adplug/adplug-xmms.cc:641 -msgid "Subsong selection" -msgstr "" +#: src/amidi-plug/i_configure-alsa.c:413 +msgid "Mixer settings" +msgstr "Gosodiadau cymysgu" -#: src/adplug/adplug-xmms.cc:707 -msgid "Order: " +#: src/amidi-plug/i_configure-alsa.c:429 +msgid "ALSA Backend not loaded or not available" msgstr "" -#: src/adplug/adplug-xmms.cc:708 -msgid "Pattern: " +#: src/amidi-plug/i_configure-alsa.c:448 +msgid "" +"ALSA\n" +"backend" msgstr "" -#: src/adplug/adplug-xmms.cc:710 -msgid "Row: " +#: src/amidi-plug/i_configure-ap.c:59 +msgid "AMIDI-Plug - backend information" msgstr "" -#: src/adplug/adplug-xmms.cc:711 -#, fuzzy -msgid "Speed: " -msgstr "Llais" - -#: src/adplug/adplug-xmms.cc:712 -#, fuzzy -msgid "Timer: " -msgstr "Teitl:" - -#: src/adplug/adplug-xmms.cc:713 src/console/configure.c:234 -#: src/sid/xs_interface.c:354 -msgid "Hz" -msgstr "Hz" - -#: src/alarm/interface.c:34 -msgid "About XMMS Alarm" +#: src/amidi-plug/i_configure-ap.c:196 +msgid "AMIDI-PLUG PREFERENCES" msgstr "" -#: src/alarm/interface.c:47 -msgid "XMMS Alarm" +#: src/amidi-plug/i_configure-ap.c:223 +msgid "Backend selection" msgstr "" -#: src/alarm/interface.c:56 -msgid "" -"An XMMS plugin which can be used\n" -"to start playing at a certain time.\n" -"\n" -"Send all complaints to:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" +#: src/amidi-plug/i_configure-ap.c:227 +msgid "Available backends" msgstr "" -#: src/alarm/interface.c:71 src/bluetooth/scan_gui.c:149 src/lirc/about.c:115 -#: src/modplug/gui/interface.cxx:972 src/sid/xs_about.c:214 -#: src/sid/xs_interface.c:1825 -msgid "Close" -msgstr "Cau" +#: src/amidi-plug/i_configure-ap.c:257 +msgid "Playback settings" +msgstr "Gosodiadau'r playback" -#: src/alarm/interface.c:101 -msgid "Alarm" +#: src/amidi-plug/i_configure-ap.c:262 +msgid "Transpose: " msgstr "" -#: src/alarm/interface.c:109 -msgid "This is your wakeup call." +#: src/amidi-plug/i_configure-ap.c:271 +msgid "Drum shift: " msgstr "" -#: src/alarm/interface.c:124 src/alarm/interface.c:1389 -#: src/modplug/gui/interface.cxx:703 src/sid/xs_config.c:322 -msgid "OK" -msgstr "Iawn" +#: src/amidi-plug/i_configure-ap.c:289 +msgid "Advanced settings" +msgstr "Gosodiadau uwch" -#: src/alarm/interface.c:152 -msgid "Select Playlist" +#: src/amidi-plug/i_configure-ap.c:293 +msgid "pre-calculate length of MIDI files in playlist" msgstr "" -#: src/alarm/interface.c:196 -msgid "Sorry" +#: src/amidi-plug/i_configure-ap.c:298 +msgid "extract comments from MIDI file (if available)" msgstr "" -#: src/alarm/interface.c:204 -msgid "Warning" +#: src/amidi-plug/i_configure-ap.c:303 +msgid "extract lyrics from MIDI file (if available)" msgstr "" -#: src/alarm/interface.c:213 +#: src/amidi-plug/i_configure-ap.c:333 msgid "" -"For safety reasons the \"quiet\" time must be at least 65 seconds longer " -"than the fading time, it must also be more than 10 seconds. This basically " -"means that there is a bug in the code and until I find a way of really " -"fixing it this message will appear :)\n" -"\n" -"Your fading settings have NOT been saved\n" -"\n" -"--\n" -"Adam" +"AMIDI\n" +"Plug" msgstr "" -#: src/alarm/interface.c:229 -msgid "Oh Well" +#: src/amidi-plug/i_configure.c:76 +msgid "AMIDI-Plug - select file" msgstr "" -#: src/alarm/interface.c:388 -#, fuzzy -msgid "Alarm Settings" -msgstr "Gosodiadau Cymysgu" - -#: src/alarm/interface.c:404 src/alarm/interface.c:576 -#: src/alarm/interface.c:948 -#, fuzzy -msgid "Time" -msgstr "Teitl" - -#: src/alarm/interface.c:445 -#, fuzzy -msgid "hours" -msgstr "Chorus" +#: src/amidi-plug/i_configure.c:129 +msgid "AMIDI-Plug - configuration" +msgstr "AMIDI-Plug - ffurfweddu" -#: src/alarm/interface.c:506 -msgid "h" +#: src/amidi-plug/i_configure-fluidsynth.c:55 +msgid "AMIDI-Plug - select SoundFont file" msgstr "" -#: src/alarm/interface.c:536 -msgid "minutes" +#: src/amidi-plug/i_configure-fluidsynth.c:270 +msgid "FLUIDSYNTH BACKEND CONFIGURATION" msgstr "" -#: src/alarm/interface.c:554 -#, fuzzy -msgid "Quiet after:" -msgstr "Didradd:" +#: src/amidi-plug/i_configure-fluidsynth.c:313 +msgid "SoundFont settings" +msgstr "Ffurfweddu SoundFont" + +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Enw ffeil" -#: src/alarm/interface.c:564 -msgid "Alarm at (default):" +#: src/amidi-plug/i_configure-fluidsynth.c:349 +msgid "Size (bytes)" +msgstr "Maint Ffeil (bytes)" + +#: src/amidi-plug/i_configure-fluidsynth.c:398 +msgid "Load SF on player start" msgstr "" -#: src/alarm/interface.c:584 -msgid "Choose the days for the alarm to come on" +#: src/amidi-plug/i_configure-fluidsynth.c:402 +msgid "Load SF on first midifile play" msgstr "" -#: src/alarm/interface.c:612 src/alarm/interface.c:660 -#: src/alarm/interface.c:708 src/alarm/interface.c:756 -#: src/alarm/interface.c:804 src/alarm/interface.c:852 -#: src/alarm/interface.c:900 src/OSS/configure.c:166 -#: src/skins/ui_manager.c:439 src/skins/ui_manager.c:460 -msgid "Default" -msgstr "Rhagosodedig" +#: src/amidi-plug/i_configure-fluidsynth.c:417 +#, fuzzy +msgid "Synthesizer settings" +msgstr "Gosodiadau Cymysgu" -#: src/alarm/interface.c:938 -msgid "Day" -msgstr "" +#: src/amidi-plug/i_configure-fluidsynth.c:426 +msgid "gain" +msgstr "cynnydd" -#: src/alarm/interface.c:958 -msgid "Tuesday" -msgstr "" +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 +msgid "use default" +msgstr "rhagosodedig" -#: src/alarm/interface.c:969 -msgid "Wednesday" +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 +msgid "value:" msgstr "" -#: src/alarm/interface.c:980 -msgid "Thursday" +#: src/amidi-plug/i_configure-fluidsynth.c:454 +msgid "poliphony" msgstr "" -#: src/alarm/interface.c:991 -msgid "Friday" -msgstr "" +#: src/amidi-plug/i_configure-fluidsynth.c:482 +msgid "reverb" +msgstr "adlais" -#: src/alarm/interface.c:1002 -msgid "Saturday" -msgstr "" +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 +msgid "yes" +msgstr "iawn" -#: src/alarm/interface.c:1013 -#, fuzzy -msgid "Sunday" -msgstr "Trac Sain" +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 +msgid "no" +msgstr "dim" -#: src/alarm/interface.c:1023 -#, fuzzy -msgid "Monday" -msgstr "Mono" +#: src/amidi-plug/i_configure-fluidsynth.c:513 +msgid "chorus" +msgstr "cytgan" -#: src/alarm/interface.c:1034 -msgid "Days" -msgstr "" +#: src/amidi-plug/i_configure-fluidsynth.c:544 +msgid "sample rate" +msgstr "graddfa samplo" -#: src/alarm/interface.c:1050 +#: src/amidi-plug/i_configure-fluidsynth.c:550 #, fuzzy -msgid "Fading" -msgstr "cynnydd" +msgid "22050 Hz " +msgstr "22000 Hz" -#: src/alarm/interface.c:1087 src/sid/xs_interface.c:921 -#: src/sid/xs_interface.c:975 src/sid/xs_interface.c:1155 +#: src/amidi-plug/i_configure-fluidsynth.c:553 #, fuzzy -msgid "seconds" -msgstr "eiliad" +msgid "44100 Hz " +msgstr "44100 Hz" -#: src/alarm/interface.c:1095 src/alarm/interface.c:1211 -#: src/modplug/gui/interface.cxx:550 +#: src/amidi-plug/i_configure-fluidsynth.c:556 #, fuzzy -msgid "Volume" -msgstr "Sain:(%)" - -#: src/alarm/interface.c:1121 -msgid "Current" -msgstr "" - -#: src/alarm/interface.c:1128 -msgid "reset to current output volume" -msgstr "" +msgid "96000 Hz " +msgstr "11000 Hz" -#: src/alarm/interface.c:1130 -msgid "Start at" +#: src/amidi-plug/i_configure-fluidsynth.c:559 +msgid "custom " msgstr "" -#: src/alarm/interface.c:1158 src/alarm/interface.c:1202 +#: src/amidi-plug/i_configure-fluidsynth.c:568 #, fuzzy -msgid "%" -msgstr "%d" - -#: src/alarm/interface.c:1174 -#, fuzzy -msgid "Final" -msgstr "Enw ffeil" +msgid "Hz " +msgstr "Hz" -#: src/alarm/interface.c:1227 -msgid "Additional Command" +#: src/amidi-plug/i_configure-fluidsynth.c:621 +msgid "FluidSynth Backend not loaded or not available" msgstr "" -#: src/alarm/interface.c:1253 -#, fuzzy -msgid "enable" -msgstr "Cyffredinol" - -#: src/alarm/interface.c:1261 -msgid "Playlist (optional)" +#: src/amidi-plug/i_configure-fluidsynth.c:640 +msgid "" +"FluidSynth\n" +"backend" msgstr "" -#: src/alarm/interface.c:1287 -msgid "Browse..." +#: src/amidi-plug/i_configure-timidity.c:39 +msgid "TIMIDITY BACKEND CONFIGURATION" msgstr "" -#: src/alarm/interface.c:1295 src/alarm/interface.c:1460 -msgid "Reminder" +#: src/amidi-plug/i_configure-timidity.c:64 +msgid "TiMidity Backend not loaded or not available" msgstr "" -#: src/alarm/interface.c:1312 -#, fuzzy -msgid "Use reminder" -msgstr "User Defined" +#: src/amidi-plug/i_configure-timidity.c:83 +msgid "" +"TiMidity\n" +"backend" +msgstr "" -#: src/alarm/interface.c:1328 src/sndstretch/sndstretch_xmms.c:394 -#, fuzzy -msgid "Options" -msgstr "Dewisiadau:" +#: src/amidi-plug/i_fileinfo.c:169 src/sid/xs_interface.c:1769 +msgid "Name:" +msgstr "Enw:" -#: src/alarm/interface.c:1336 -msgid "What do these options mean?" +#: src/amidi-plug/i_fileinfo.c:193 +msgid " MIDI Info " msgstr "" -#: src/alarm/interface.c:1364 -msgid "" -"\n" -"Time\n" -" Alarm at: \n" -" The time for the alarm to come on.\n" -"\n" -" Quiet After: \n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" +#: src/amidi-plug/i_fileinfo.c:205 +msgid "Format:" +msgstr "Fformat:" + +#: src/amidi-plug/i_fileinfo.c:208 +msgid "Length (msec):" +msgstr "Hyd (msec):" + +#: src/amidi-plug/i_fileinfo.c:211 +msgid "Num of Tracks:" +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:216 +msgid "variable" +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:217 +msgid "BPM:" +msgstr "BPM:" + +#: src/amidi-plug/i_fileinfo.c:223 +msgid "BPM (wavg):" +msgstr "BPM (wavg):" + +#: src/amidi-plug/i_fileinfo.c:226 +msgid "Time Div:" +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:237 +msgid " MIDI Comments and Lyrics " +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:288 +msgid "* no comments available in this MIDI file *" +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:301 +msgid "* no lyrics available in this MIDI file *" +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:349 +msgid " (invalid UTF-8)" +msgstr " (UTF-8 annybis)" + +#: src/amidi-plug/i_utils.c:43 +#, fuzzy +msgid "AMIDI-Plug - about" +msgstr "EvDev-Plug - ynghylch" + +#: src/amidi-plug/i_utils.c:68 +#, fuzzy +msgid "" "\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" +"AMIDI-Plug " +msgstr "AMIDI-Plug - rhybudd" + +#: src/amidi-plug/i_utils.c:69 +msgid "" "\n" +"modular MIDI music player\n" +"http://www.develia.org/projects.php?p=amidiplug\n" "\n" -"Volume\n" -" Fading: \n" -" Fade the volume up to the chosen volume \n" -" for this amount of time.\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" "\n" -" Start at: \n" -" Start fading from this volume.\n" "\n" -" Final: \n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" +"special thanks to...\n" "\n" +"Clemens Ladisch and Jaroslav Kysela\n" +"for their cool programs aplaymidi and amixer; those\n" +"were really useful, along with alsa-lib docs, in order\n" +"to learn more about the ALSA API\n" "\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" +"Alfredo Spadafina\n" +"for the nice midi keyboard logo\n" "\n" -" Playlist: \n" -" Load this playlist for playing songs from \n" -" (must have .m3u extension). If no playlist\n" -" is given then the songs which are currently\n" -" in the list will be used.\n" -" The URL of an mp3/ogg stream can also be\n" -" entered here, but loading of playlists from\n" -" URLs is not currently supported by xmms.\n" +"Tony Vroon\n" +"for the good help with alpha testing\n" "\n" -" Reminder:\n" -" Display a reminder when the alarm goes off,\n" -" type the reminder in the box and turn on the\n" -" toggle button if you want it to be shown.\n" -msgstr "" - -#: src/alarm/interface.c:1366 src/gtkui/ui_manager.c:165 -#: src/skins/ui_manager.c:371 -msgid "Help" msgstr "" -#: src/alarm/interface.c:1468 -msgid "Your reminder for today is.." -msgstr "" - -#: src/alarm/interface.c:1493 -#, fuzzy -msgid "Thankyou" -msgstr "Tango" +#: src/aosd/aosd_style.c:75 +msgid "Rectangle" +msgstr "Cyfongl" -#: src/alsa/config.c:209 -#, fuzzy -msgid "Default PCM device" -msgstr "Dyfais PCM rhagosodedig (%s)" +#: src/aosd/aosd_style.c:79 +msgid "Rounded Rectangle" +msgstr "Cyfongl Cwmpas" -#: src/alsa/config.c:234 -#, fuzzy -msgid "Default mixer device" -msgstr "Dyfais PCM rhagosodedig (%s)" +#: src/aosd/aosd_style.c:83 +msgid "Concave Rectangle" +msgstr "Cyfongl Cafniog" -#: src/alsa/config.c:438 -#, fuzzy -msgid "ALSA Output Plugin Preferences" -msgstr "Ynghylch Ategyn ESounD" +#: src/aosd/aosd_style.c:87 +msgid "None" +msgstr "Dim" -#: src/alsa/config.c:445 -#, fuzzy -msgid "PCM device:" -msgstr "Dyfais cymysgu" +#: src/aosd/aosd_trigger.c:77 +msgid "Playback Start" +msgstr "Cychwyn Chwarae" -#: src/alsa/config.c:447 src/OSS/configure.c:256 src/sun/configure.c:218 -msgid "Mixer device:" -msgstr "Dyfais cymysgu" +#: src/aosd/aosd_trigger.c:78 +msgid "Triggers OSD when a playlist entry is played." +msgstr "" -#: src/alsa/config.c:449 -#, fuzzy -msgid "Mixer element:" -msgstr "Dyfais cymysgu" +#: src/aosd/aosd_trigger.c:82 +msgid "Title Change" +msgstr "Newid Teitl" -#: src/alsa/config.c:452 -msgid "Work around drain hangup" +#: src/aosd/aosd_trigger.c:83 +msgid "" +"Triggers OSD when, during playback, the song title changes but the filename " +"is the same. This is mostly useful to display title changes in internet " +"streams." msgstr "" -#: src/alsa/plugin.c:61 -#, fuzzy -msgid "About ALSA Output Plugin" -msgstr "Ynghylch Ategyn Allbwn JACK 0.17" - -#: src/alsa/plugin.c:83 +#: src/aosd/aosd_trigger.c:89 #, fuzzy -msgid "ALSA error" -msgstr "Terror" +msgid "Volume Change" +msgstr "Newid Teitl" -#: src/amidi-plug/amidi-plug.c:323 -msgid "" -"You have not selected any sequencer ports for MIDI playback. You can do so " -"in the MIDI plugin preferences." +#: src/aosd/aosd_trigger.c:90 +msgid "Triggers OSD when volume is changed." msgstr "" -#: src/amidi-plug/backend-alsa/b-alsa.c:35 -msgid "ALSA Backend " +#: src/aosd/aosd_trigger.c:94 +msgid "Pause On" msgstr "" -#: src/amidi-plug/backend-alsa/b-alsa.c:37 -msgid "" -"This backend sends MIDI events to a group of user-chosen ALSA sequencer " -"ports. The ALSA sequencer interface is very versatile, it can provide ports " -"for audio cards hardware synthesizers (i.e. emu10k1) but also for software " -"synths, external devices, etc.\n" -"This backend does not produce audio, MIDI events are handled directly from " -"devices/programs behind the ALSA ports; in example, MIDI events sent to the " -"hardware synth will be directly played.\n" -"Backend written by Giacomo Lozito." +#: src/aosd/aosd_trigger.c:95 +msgid "Triggers OSD when playback is paused." msgstr "" -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:41 -msgid "FluidSynth Backend " +#: src/aosd/aosd_trigger.c:99 +msgid "Pause Off" msgstr "" -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:43 -msgid "" -"This backend produces audio by sending MIDI events to FluidSynth, a real-" -"time software synthesizer based on the SoundFont2 specification (www." -"fluidsynth.org).\n" -"Produced audio can be manipulated via player effect plugins and is processed " -"by chosen ouput plugin.\n" -"Backend written by Giacomo Lozito." +#: src/aosd/aosd_trigger.c:100 +msgid "Triggers OSD when playback is unpaused." msgstr "" -#: src/amidi-plug/i_configure-alsa.c:221 -msgid "ALSA BACKEND CONFIGURATION" +#: src/aosd/aosd_ui.c:180 +msgid "Placement" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:326 -msgid "Port" -msgstr "Porth" - -#: src/amidi-plug/i_configure-alsa.c:328 -msgid "Client name" +#: src/aosd/aosd_ui.c:219 +msgid "Relative X offset:" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:330 -msgid "Port name" +#: src/aosd/aosd_ui.c:228 +msgid "Relative Y offset:" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:341 -msgid "ALSA output ports" +#: src/aosd/aosd_ui.c:237 +msgid "Max OSD width:" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:394 -msgid "Soundcard: " +#: src/aosd/aosd_ui.c:250 +msgid "Multi-Monitor options" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:396 -msgid "Mixer control: " -msgstr "Cymysgu rheoli:" - -#: src/amidi-plug/i_configure-alsa.c:408 -msgid "Mixer settings" -msgstr "Gosodiadau cymysgu" +#: src/aosd/aosd_ui.c:254 +msgid "Display OSD using:" +msgstr "" -#: src/amidi-plug/i_configure-alsa.c:421 -msgid "" -"* Select ALSA output ports *\n" -"MIDI events will be sent to the ports selected here. In example, if your " -"audio card provides a hardware synth and you want to play MIDI with it, " -"you'll probably want to select the wavetable synthesizer ports." +#: src/aosd/aosd_ui.c:265 +msgid "all monitors" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:426 -msgid "" -"* Select ALSA mixer card *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volumeslider will " -"manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." +#: src/aosd/aosd_ui.c:268 +#, c-format +msgid "monitor %i" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:433 -msgid "" -"* Select ALSA mixer control *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volume slider " -"will manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." +#: src/aosd/aosd_ui.c:323 +msgid "Timing (ms)" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:444 -msgid "ALSA Backend not loaded or not available" +#: src/aosd/aosd_ui.c:328 +msgid "Display:" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:463 -msgid "" -"ALSA\n" -"backend" +#: src/aosd/aosd_ui.c:333 +msgid "Fade in:" msgstr "" -#: src/amidi-plug/i_configure-ap.c:56 -msgid "AMIDI-Plug - backend information" +#: src/aosd/aosd_ui.c:338 +msgid "Fade out:" msgstr "" -#: src/amidi-plug/i_configure-ap.c:194 -msgid "AMIDI-PLUG PREFERENCES" +#: src/aosd/aosd_ui.c:419 +msgid "Fonts" msgstr "" -#: src/amidi-plug/i_configure-ap.c:221 -msgid "Backend selection" +#: src/aosd/aosd_ui.c:427 +#, c-format +msgid "Font %i:" msgstr "" -#: src/amidi-plug/i_configure-ap.c:225 -msgid "Available backends" +#: src/aosd/aosd_ui.c:444 +msgid "Shadow" msgstr "" -#: src/amidi-plug/i_configure-ap.c:255 -msgid "Playback settings" -msgstr "Gosodiadau'r playback" +#: src/aosd/aosd_ui.c:479 +#, fuzzy +msgid "Internationalization" +msgstr "Corff:" -#: src/amidi-plug/i_configure-ap.c:260 -msgid "Transpose: " +#: src/aosd/aosd_ui.c:485 +msgid "Disable UTF-8 conversion of text (in aosd)" msgstr "" -#: src/amidi-plug/i_configure-ap.c:269 -msgid "Drum shift: " +#: src/aosd/aosd_ui.c:503 +msgid "Select Skin File" msgstr "" -#: src/amidi-plug/i_configure-ap.c:287 -msgid "Advanced settings" -msgstr "Gosodiadau uwch" +#: src/aosd/aosd_ui.c:614 +msgid "Render Style" +msgstr "" -#: src/amidi-plug/i_configure-ap.c:291 -msgid "pre-calculate length of MIDI files in playlist" +#: src/aosd/aosd_ui.c:630 +msgid "Colors" +msgstr "Eiliwiau" + +#: src/aosd/aosd_ui.c:643 +#, fuzzy, c-format +msgid "Color %i:" +msgstr "Eiliwiau" + +#: src/aosd/aosd_ui.c:663 +msgid "Custom Skin" msgstr "" -#: src/amidi-plug/i_configure-ap.c:296 -msgid "extract comments from MIDI file (if available)" +#: src/aosd/aosd_ui.c:669 +msgid "Skin file:" msgstr "" -#: src/amidi-plug/i_configure-ap.c:301 -msgid "extract lyrics from MIDI file (if available)" +#: src/aosd/aosd_ui.c:672 src/sid/xs_interface.c:1044 +#: src/sid/xs_interface.c:1236 src/sid/xs_interface.c:1292 +msgid "Browse" msgstr "" -#: src/amidi-plug/i_configure-ap.c:320 -msgid "" -"* Backend selection *\n" -"AMIDI-Plug works with backends, in a modular fashion; here you should select " -"your backend; that is, the way MIDI events are going to be handled and " -"played.\n" -"If you have a hardware synthesizer on your audio card, and ALSA supports it, " -"you'll want to use the ALSA backend. It can also be used with anything that " -"provides an interface to the ALSA sequencer, including software synths or " -"external devices.\n" -"If you want to rely on a software synthesizer and/or want to pipe audio into " -"effect and output plugins of the player you'll want to use the good " -"FluidSynth backend.\n" -"Press the info button to read specific information about each backend." +#: src/aosd/aosd_ui.c:774 +msgid "Enable trigger" +msgstr "Galluogi clicied" + +#: src/aosd/aosd_ui.c:801 +msgid "Event" +msgstr "Achlysur" + +#: src/aosd/aosd_ui.c:829 +msgid "Composite manager detected" msgstr "" -#: src/amidi-plug/i_configure-ap.c:331 +#: src/aosd/aosd_ui.c:836 msgid "" -"* Transpose function *\n" -"This option allows you to play the midi file transposed in a different key, " -"by shifting of the desired number of semitones all its notes (excepting " -"those on midi channel 10, reserved for percussions). Especially useful if " -"you wish to sing or play along with another instrument." +"Composite manager not detected;\n" +"unless you know that you have one running, please activate a composite " +"manager otherwise the OSD won't work properly" msgstr "" -#: src/amidi-plug/i_configure-ap.c:337 -msgid "" -"* Drumshift function *\n" -"This option allows you to shift notes on midi channel 10 (the standard " -"percussions channel) of the desired number of semitones. This results in " -"different drumset and percussions being used during midi playback, so if you " -"wish to enhance (or reduce, or alter) percussion sounds, try to play with " -"this value." +#: src/aosd/aosd_ui.c:844 +msgid "Composite manager not required for fake transparency" msgstr "" -#: src/amidi-plug/i_configure-ap.c:344 -msgid "" -"* Pre-calculate MIDI length *\n" -"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as " -"soon as the player requests it, instead of doing that only when the MIDI " -"file is being played. In example, MIDI length will be calculated straight " -"after adding MIDI files in a playlist. Disable this option if you want " -"faster playlist loading (when a lot of MIDI files are added), enable it to " -"display more information in the playlist straight after loading." +#: src/aosd/aosd_ui.c:882 +msgid "Transparency" msgstr "" -#: src/amidi-plug/i_configure-ap.c:353 -msgid "" -"* Extract comments from MIDI files *\n" -"Some MIDI files contain text comments (author, copyright, instrument notes, " -"etc.). If this option is enabled, AMIDI-Plug will extract and display " -"comments (if available) in the file information dialog." +#: src/aosd/aosd_ui.c:888 +msgid "Fake transparency" msgstr "" -#: src/amidi-plug/i_configure-ap.c:358 -msgid "" -"* Extract lyrics from MIDI files *\n" -"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug " -"will extract and display song lyrics (if available) in the file information " -"dialog." +#: src/aosd/aosd_ui.c:890 +msgid "Real transparency (requires X Composite Ext.)" msgstr "" -#: src/amidi-plug/i_configure-ap.c:375 -msgid "" -"AMIDI\n" -"Plug" +#: src/aosd/aosd_ui.c:932 +msgid "Composite extension not loaded" msgstr "" -#: src/amidi-plug/i_configure.c:73 -msgid "AMIDI-Plug - select file" +#: src/aosd/aosd_ui.c:940 +msgid "Composite extension not available" msgstr "" -#: src/amidi-plug/i_configure.c:126 -msgid "AMIDI-Plug - configuration" -msgstr "AMIDI-Plug - ffurfweddu" - -#: src/amidi-plug/i_configure-fluidsynth.c:52 -msgid "AMIDI-Plug - select SoundFont file" +#: src/aosd/aosd_ui.c:959 +#, c-format +msgid "Audacious OSD" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:268 -msgid "FLUIDSYNTH BACKEND CONFIGURATION" -msgstr "" +#: src/aosd/aosd_ui.c:1040 +msgid "Audacious OSD - configuration" +msgstr "Audacious OSD - ffurfweddiad" -#: src/amidi-plug/i_configure-fluidsynth.c:316 -msgid "SoundFont settings" -msgstr "Ffurfweddu SoundFont" +#: src/aosd/aosd_ui.c:1061 +msgid "Test" +msgstr "Prawf" -#: src/amidi-plug/i_configure-fluidsynth.c:352 -msgid "Size (bytes)" -msgstr "Maint Ffeil (bytes)" +#: src/aosd/aosd_ui.c:1076 +#, fuzzy +msgid "Position" +msgstr "Disgrifiad:" -#: src/amidi-plug/i_configure-fluidsynth.c:401 -msgid "Load SF on player start" -msgstr "" +#: src/aosd/aosd_ui.c:1081 +#, fuzzy +msgid "Animation" +msgstr "Corff:" -#: src/amidi-plug/i_configure-fluidsynth.c:405 -msgid "Load SF on first midifile play" -msgstr "" +#: src/aosd/aosd_ui.c:1086 +msgid "Text" +msgstr "Testun" + +#: src/aosd/aosd_ui.c:1091 +msgid "Decoration" +msgstr "Addurniad" -#: src/amidi-plug/i_configure-fluidsynth.c:420 +#: src/aosd/aosd_ui.c:1096 #, fuzzy -msgid "Synthesizer settings" -msgstr "Gosodiadau Cymysgu" +msgid "Trigger" +msgstr "Trailer" -#: src/amidi-plug/i_configure-fluidsynth.c:429 -msgid "gain" -msgstr "cynnydd" +#: src/aosd/aosd_ui.c:1101 src/cdaudio-ng/configure.c:171 +#: src/sid/xs_interface.c:1302 +#, fuzzy +msgid "Misc" +msgstr "Disgo" -#: src/amidi-plug/i_configure-fluidsynth.c:435 -#: src/amidi-plug/i_configure-fluidsynth.c:463 -#: src/amidi-plug/i_configure-fluidsynth.c:491 -#: src/amidi-plug/i_configure-fluidsynth.c:522 -msgid "use default" -msgstr "rhagosodedig" +#: src/aosd/aosd_ui.c:1138 +msgid "Audacious OSD - about" +msgstr "Audacious OSD - ynghylch" -#: src/amidi-plug/i_configure-fluidsynth.c:438 -#: src/amidi-plug/i_configure-fluidsynth.c:466 -msgid "value:" +#: src/aosd/aosd_ui.c:1168 +msgid "" +"\n" +"Audacious OSD " msgstr "" +"\n" +"Audacious OSD" -#: src/amidi-plug/i_configure-fluidsynth.c:457 -msgid "poliphony" +#: src/aosd/aosd_ui.c:1169 +#, fuzzy +msgid "" +"\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"On-Screen-Display is based on Ghosd library\n" +"written by Evan Martin\n" +"http://neugierig.org/software/ghosd/\n" +"\n" msgstr "" +"\n" +"http://www.develia.org/projects.php?p=aosd\n" +"ysgrifenedig am Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"On-Screen-Display ys tarddu gan Ghosd llyfrgell\n" +"ysgrifenedig am Evan Martin\n" +"http://neugierig.org/software/ghosd/\n" +"\n" -#: src/amidi-plug/i_configure-fluidsynth.c:485 -msgid "reverb" -msgstr "adlais" +#: src/blur_scope/config.c:73 +msgid "Blur Scope: Color selection" +msgstr "Blur Scope: Color selection" -#: src/amidi-plug/i_configure-fluidsynth.c:494 -#: src/amidi-plug/i_configure-fluidsynth.c:525 -msgid "yes" -msgstr "iawn" +#: src/blur_scope/config.c:83 src/jack/configure.c:111 +msgid "Options:" +msgstr "Dewisiadau:" -#: src/amidi-plug/i_configure-fluidsynth.c:496 -#: src/amidi-plug/i_configure-fluidsynth.c:527 -msgid "no" -msgstr "dim" +#: src/cdaudio-ng/cdaudio-ng.c:264 +#, fuzzy +msgid "About Audio CD Plugin" +msgstr "Ategynnau Sain FLAC" -#: src/amidi-plug/i_configure-fluidsynth.c:516 -msgid "chorus" -msgstr "cytgan" +#: src/cdaudio-ng/cdaudio-ng.c:265 +msgid "" +"Copyright (c) 2007, by Calin Crisan and The Audacious " +"Team.\n" +"\n" +"Many thanks to libcdio developers \n" +"\tand to libcddb developers .\n" +"\n" +"Also thank you Tony Vroon for mentoring & guiding me.\n" +"\n" +"This was a Google Summer of Code 2007 project.\n" +"\n" +"Copyright 2009 John Lindgren" +msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:547 -msgid "sample rate" -msgstr "graddfa samplo" +#: src/cdaudio-ng/cdaudio-ng.c:558 +#, fuzzy +msgid "Audio CD" +msgstr "Dyfais sain:" -#: src/amidi-plug/i_configure-fluidsynth.c:553 +#: src/cdaudio-ng/cdaudio-ng.c:913 +msgid "Drive is empty." +msgstr "" + +#: src/cdaudio-ng/cdaudio-ng.c:915 +msgid "Unsupported disk type." +msgstr "" + +#: src/cdaudio-ng/configure.c:148 #, fuzzy -msgid "22050 Hz " -msgstr "22000 Hz" +msgid "CD Audio Plugin Configuration" +msgstr "Ffurfweddiad Chwaraeydd MPEG Sain" -#: src/amidi-plug/i_configure-fluidsynth.c:556 +#: src/cdaudio-ng/configure.c:160 +msgid "Digital audio extraction" +msgstr "Tynnu awdio digidôl" + +#: src/cdaudio-ng/configure.c:165 #, fuzzy -msgid "44100 Hz " -msgstr "44100 Hz" +msgid "Title information" +msgstr "Fformat y teitl:" -#: src/amidi-plug/i_configure-fluidsynth.c:559 +#: src/cdaudio-ng/configure.c:176 #, fuzzy -msgid "96000 Hz " -msgstr "11000 Hz" +msgid "Disc speed:" +msgstr "Chwarae cyflymedd" -#: src/amidi-plug/i_configure-fluidsynth.c:562 -msgid "custom " -msgstr "" +#: src/cdaudio-ng/configure.c:184 +#, fuzzy +msgid "Use cd-text if available" +msgstr "Stereo (os ar gael)" -#: src/amidi-plug/i_configure-fluidsynth.c:571 +#: src/cdaudio-ng/configure.c:191 #, fuzzy -msgid "Hz " -msgstr "Hz" +msgid "Use CDDB if available" +msgstr "Stereo (os ar gael)" -#: src/amidi-plug/i_configure-fluidsynth.c:621 -msgid "" -"* Select SoundFont files *\n" -"In order to play MIDI with FluidSynth, you need to specify at least one " -"valid SoundFont file here (use absolute paths). The loading order is from " -"the top (first) to the bottom (last)." -msgstr "" +#: src/cdaudio-ng/configure.c:197 +#, fuzzy +msgid "Server: " +msgstr "Gwasanaethwr" -#: src/amidi-plug/i_configure-fluidsynth.c:626 -msgid "" -"* Load SoundFont on player start *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" +#: src/cdaudio-ng/configure.c:201 +#, fuzzy +msgid "Path: " +msgstr "Porth:" -#: src/amidi-plug/i_configure-fluidsynth.c:634 -msgid "" -"* Load SoundFont on first midifile play *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" +#: src/cdaudio-ng/configure.c:205 +#, fuzzy +msgid "Port: " +msgstr "Porth:" -#: src/amidi-plug/i_configure-fluidsynth.c:642 -msgid "" -"* Synthesizer gain *\n" -"From FluidSynth docs: the gain is applied to the final or master output of " -"the synthesizer; it is set to a low value by default to avoid the saturation " -"of the output when random MIDI files are played." +#: src/cdaudio-ng/configure.c:218 +msgid "Use HTTP instead of CDDBP" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:647 -msgid "" -"* Synthesizer polyphony *\n" -"From FluidSynth docs: the polyphony defines how many voices can be played in " -"parallel; the number of voices is not necessarily equivalent to the number " -"of notes played simultaneously; indeed, when a note is struck on a specific " -"MIDI channel, the preset on that channel may create several voices, for " -"example, one for the left audio channel and one for the right audio " -"channels; the number of voices activated depends on the number of instrument " -"zones that fall in the correspond to the velocity and key of the played note." +#: src/cdaudio-ng/configure.c:230 +msgid "Override default device: " msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:657 -#: src/amidi-plug/i_configure-fluidsynth.c:663 -msgid "" -"* Synthesizer reverb *\n" -"From FluidSynth docs: when set to \"yes\" the reverb effects module is " -"activated; note that when the reverb module is active, the amount of signal " -"sent to the reverb module depends on the \"reverb send\" generator defined " -"in the SoundFont." -msgstr "" +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:131 +#: src/echo_plugin/gui.c:123 src/jack/configure.c:146 src/null/null.c:112 +#: src/stereo_plugin/stereo.c:125 +msgid "Ok" +msgstr "Iawn" -#: src/amidi-plug/i_configure-fluidsynth.c:669 -#: src/amidi-plug/i_configure-fluidsynth.c:675 -msgid "" -"* Synthesizer chorus *\n" -"From FluidSynth docs: when set to \"yes\" the chorus effects module is " -"activated; note that when the chorus module is active, the amount of signal " -"sent to the chorus module depends on the \"chorus send\" generator defined " -"in the SoundFont." -msgstr "" +#: src/cdaudio-ng/configure.c:249 src/crystalizer/crystalizer.c:138 +#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 src/null/null.c:113 +#: src/stereo_plugin/stereo.c:132 +msgid "Cancel" +msgstr "Dileu" -#: src/amidi-plug/i_configure-fluidsynth.c:681 -#: src/amidi-plug/i_configure-fluidsynth.c:685 -#: src/amidi-plug/i_configure-fluidsynth.c:689 -#: src/amidi-plug/i_configure-fluidsynth.c:693 -msgid "" -"* Synthesizer samplerate *\n" -"The sample rate of the audio generated by the synthesizer. You can also " -"specify a custom value in the interval 22050Hz-96000Hz." -msgstr "" +#: src/cd-menu-items/cd-menu-items.c:34 +#, fuzzy +msgid "Play CD" +msgstr "Modd chwarae:" -#: src/amidi-plug/i_configure-fluidsynth.c:701 -msgid "FluidSynth Backend not loaded or not available" +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Add CD" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:720 -msgid "" -"FluidSynth\n" -"backend" -msgstr "" +#: src/compressor/plugin.c:67 +#, fuzzy +msgid "About Dynamic Range Compression Plugin" +msgstr "Ynghylch Ategyn Extra Stereo" -#: src/amidi-plug/i_configure-timidity.c:39 -msgid "TIMIDITY BACKEND CONFIGURATION" -msgstr "" +#: src/compressor/plugin.c:99 +#, fuzzy +msgid "Dynamic Range Compressor Preferences" +msgstr "AudioCompress " -#: src/amidi-plug/i_configure-timidity.c:64 -msgid "TiMidity Backend not loaded or not available" -msgstr "" +#: src/compressor/plugin.c:111 +#, fuzzy +msgid "Center volume:" +msgstr "Sain:(%)" -#: src/amidi-plug/i_configure-timidity.c:83 -msgid "" -"TiMidity\n" -"backend" +#: src/compressor/plugin.c:124 +msgid "Dynamic range:" msgstr "" -#: src/amidi-plug/i_fileinfo.c:169 src/bluetooth/gui.c:271 -#: src/sid/xs_interface.c:1769 -msgid "Name:" -msgstr "Enw:" +#: src/console/configure.c:138 +#, fuzzy +msgid "Game Console Music Decoder" +msgstr "Chwaraeydd Sbort Modiwl" -#: src/amidi-plug/i_fileinfo.c:193 -msgid " MIDI Info " -msgstr "" +#: src/console/configure.c:155 +msgid "General" +msgstr "Cyffredinol" -#: src/amidi-plug/i_fileinfo.c:205 -msgid "Format:" -msgstr "Fformat:" +#: src/console/configure.c:157 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "Chwarae" -#: src/amidi-plug/i_fileinfo.c:208 -msgid "Length (msec):" -msgstr "Hyd (msec):" +#: src/console/configure.c:172 +msgid "Bass:" +msgstr "Bas" -#: src/amidi-plug/i_fileinfo.c:211 -msgid "Num of Tracks:" -msgstr "" +#: src/console/configure.c:176 src/console/configure.c:187 +#: src/console/configure.c:208 +msgid "secs" +msgstr "eiliad" -#: src/amidi-plug/i_fileinfo.c:216 -msgid "variable" -msgstr "" +#: src/console/configure.c:183 +msgid "Treble:" +msgstr "Trebl:" -#: src/amidi-plug/i_fileinfo.c:217 -msgid "BPM:" -msgstr "BPM:" +#: src/console/configure.c:204 +msgid "Default song length:" +msgstr "Hyd cân rhagosodedig:" -#: src/amidi-plug/i_fileinfo.c:223 -msgid "BPM (wavg):" -msgstr "BPM (wavg):" +#: src/console/configure.c:210 src/sid/xs_interface.c:666 +msgid "Resampling" +msgstr "Samplo" -#: src/amidi-plug/i_fileinfo.c:226 -msgid "Time Div:" -msgstr "" +#: src/console/configure.c:216 +msgid "Enable audio resampling" +msgstr "Gallougi sain dyblusampl" -#: src/amidi-plug/i_fileinfo.c:237 -msgid " MIDI Comments and Lyrics " -msgstr "" +#: src/console/configure.c:231 +msgid "Resampling rate:" +msgstr "Graddfa Samplo" -#: src/amidi-plug/i_fileinfo.c:288 -msgid "* no comments available in this MIDI file *" -msgstr "" +#: src/console/configure.c:235 src/sid/xs_interface.c:354 +msgid "Hz" +msgstr "Hz" -#: src/amidi-plug/i_fileinfo.c:301 -msgid "* no lyrics available in this MIDI file *" -msgstr "" +#: src/console/configure.c:246 +msgid "SPC" +msgstr "SPC" -#: src/amidi-plug/i_fileinfo.c:349 -msgid " (invalid UTF-8)" -msgstr " (UTF-8 annybis)" +#: src/console/configure.c:247 +msgid "Ignore length from SPC tags" +msgstr "Diystyru hyd am SPC tagiau" -#: src/amidi-plug/i_utils.c:43 -#, fuzzy -msgid "AMIDI-Plug - about" -msgstr "EvDev-Plug - ynghylch" +#: src/console/configure.c:248 +msgid "Increase reverb" +msgstr "" -#: src/amidi-plug/i_utils.c:68 +#: src/console/configure.c:273 #, fuzzy msgid "" -"\n" -"AMIDI-Plug " -msgstr "AMIDI-Plug - rhybudd" +"The default song length, expressed in seconds, is used for songs that do not " +"provide length information (i.e. looping tracks)." +msgstr "" +"* Rhagosodedig hyd sain *\n" +"Rhagosodedig hyd sain, mynegiau yn eiliad, ys gallougi am sain pa arlwyo na " +"hyd gwybodaeth (dollenau trac)." -#: src/amidi-plug/i_utils.c:69 +#: src/console/plugin.c:33 +#, fuzzy +msgid "About the Game Console Music Decoder" +msgstr "Ynghylch Ategyn Cerdd Console" + +#: src/console/plugin.c:34 +#, fuzzy msgid "" -"\n" -"modular MIDI music player\n" -"http://www.develia.org/projects.php?p=amidiplug\n" -"\n" -"written by Giacomo Lozito\n" -"< james@develia.org >\n" -"\n" -"\n" -"special thanks to...\n" -"\n" -"Clemens Ladisch and Jaroslav Kysela\n" -"for their cool programs aplaymidi and amixer; those\n" -"were really useful, along with alsa-lib docs, in order\n" -"to learn more about the ALSA API\n" -"\n" -"Alfredo Spadafina\n" -"for the nice midi keyboard logo\n" -"\n" -"Tony Vroon\n" -"for the good help with alpha testing\n" -"\n" +"Console music decoder engine based on Game_Music_Emu 0.5.2.\n" +"Supported formats: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Audacious implementation by: William Pitcock , \n" +" Shay Green \n" msgstr "" +"Ategyn cerdd console tarddu Game_Music_Emu 0.5.2.\n" +"Atgyfnerthu rhyw: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Audacious fersiwn at: William Pitcock , \n" +" Shay Green " -#: src/aosd/aosd_style.c:75 -msgid "Rectangle" -msgstr "Cyfongl" - -#: src/aosd/aosd_style.c:79 -msgid "Rounded Rectangle" -msgstr "Cyfongl Cwmpas" +#: src/crossfade/plugin.c:65 +#, fuzzy +msgid "About Crossfade" +msgstr "Ynghylch Ategyn Scrobbler" -#: src/aosd/aosd_style.c:83 -msgid "Concave Rectangle" -msgstr "Cyfongl Cafniog" +#: src/crossfade/plugin.c:97 +#, fuzzy +msgid "Crossfade Preferences" +msgstr "AudioCompress " -#: src/aosd/aosd_style.c:87 -msgid "None" -msgstr "Dim" +#: src/crossfade/plugin.c:109 +msgid "Overlap (in seconds):" +msgstr "" -#: src/aosd/aosd_trigger.c:77 -msgid "Playback Start" -msgstr "Cychwyn Chwarae" +#: src/crossfade/plugin.c:140 src/crossfade/plugin.c:146 +#, fuzzy +msgid "Crossfade Error" +msgstr "Crossover" -#: src/aosd/aosd_trigger.c:78 -msgid "Triggers OSD when a playlist entry is played." +#: src/crossfade/plugin.c:140 +msgid "" +"Crossfading failed because the songs had a different number of channels." msgstr "" -#: src/aosd/aosd_trigger.c:82 -msgid "Title Change" -msgstr "Newid Teitl" - -#: src/aosd/aosd_trigger.c:83 +#: src/crossfade/plugin.c:148 msgid "" -"Triggers OSD when, during playback, the song title changes but the filename " -"is the same. This is mostly useful to display title changes in internet " -"streams." +"Crossfading failed because the songs had different sample rates.\n" +"\n" +"You can use the Sample Rate Converter effect to resample the songs to the " +"same rate." msgstr "" -#: src/aosd/aosd_trigger.c:89 +#: src/crystalizer/crystalizer.c:108 #, fuzzy -msgid "Volume Change" -msgstr "Newid Teitl" - -#: src/aosd/aosd_trigger.c:90 -msgid "Triggers OSD when volume is changed." -msgstr "" +msgid "Configure Crystalizer" +msgstr "Ffurfweddu Extra Stereo" -#: src/aosd/aosd_trigger.c:94 -msgid "Pause On" -msgstr "" +#: src/crystalizer/crystalizer.c:110 src/stereo_plugin/stereo.c:104 +msgid "Effect intensity:" +msgstr "Dwyster yr effaith:" -#: src/aosd/aosd_trigger.c:95 -msgid "Triggers OSD when playback is paused." -msgstr "" +#: src/crystalizer/crystalizer.c:144 src/echo_plugin/gui.c:136 +#: src/stereo_plugin/stereo.c:138 +msgid "Apply" +msgstr "Gosod" -#: src/aosd/aosd_trigger.c:99 -msgid "Pause Off" +#: src/daemon/daemon.c:58 +msgid "Daemon Interface (like old headless mode)" msgstr "" -#: src/aosd/aosd_trigger.c:100 -msgid "Triggers OSD when playback is unpaused." +#: src/echo_plugin/gui.c:15 +msgid "" +"Echo Plugin\n" +"By Johan Levin 1999.\n" +"\n" +"Surround echo by Carl van Schaik 1999" msgstr "" +"Echo Plugin\n" +"Gan Johan Levin 1999.\n" +"\n" +"Surround echo gan Carl van Schaik 1999" -#: src/aosd/aosd_ui.c:168 -msgid "Placement" -msgstr "" +#: src/echo_plugin/gui.c:27 +msgid "About Echo Plugin" +msgstr "Ynghylch Ategyn Echo" -#: src/aosd/aosd_ui.c:202 -msgid "Relative X offset:" -msgstr "" +#: src/echo_plugin/gui.c:72 +msgid "Configure Echo" +msgstr "Ffurfweddu Echo" -#: src/aosd/aosd_ui.c:211 -msgid "Relative Y offset:" -msgstr "" +#: src/echo_plugin/gui.c:88 +msgid "Delay: (ms)" +msgstr "Oediad: (ms)" -#: src/aosd/aosd_ui.c:220 -msgid "Max OSD width:" -msgstr "" +#: src/echo_plugin/gui.c:93 +msgid "Feedback: (%)" +msgstr "Adborth: (%)" -#: src/aosd/aosd_ui.c:233 -msgid "Multi-Monitor options" -msgstr "" +#: src/echo_plugin/gui.c:98 +msgid "Volume: (%)" +msgstr "Sain:(%)" -#: src/aosd/aosd_ui.c:237 -msgid "Display OSD using:" +#: src/ffaudio/ffaudio-core.c:763 +#, c-format +msgid "" +"Multi-format audio decoding plugin for Audacious based on\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious plugin by:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" msgstr "" -#: src/aosd/aosd_ui.c:239 -msgid "all monitors" -msgstr "" +#: src/ffaudio/ffaudio-core.c:777 +#, fuzzy +msgid "About FFaudio Plugin" +msgstr "Ategynnau Sain FLAC" -#: src/aosd/aosd_ui.c:242 -#, c-format -msgid "monitor %i" -msgstr "" +#: src/filewriter/filewriter.c:155 +#, fuzzy +msgid "About FileWriter-Plugin" +msgstr "Ynghylch Ategyn Echo" -#: src/aosd/aosd_ui.c:295 -msgid "Timing (ms)" +#: src/filewriter/filewriter.c:156 +#, fuzzy +msgid "" +"FileWriter-Plugin\n" +"\n" +"This program is free software; you can redistribute it and/or modify\n" +"it under the terms of the GNU General Public License as published by\n" +"the Free Software Foundation; either version 2 of the License, or\n" +"(at your option) any later version.\n" +"\n" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +"\n" +"You should have received a copy of the GNU General Public License\n" +"along with this program; if not, write to the Free Software\n" +"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" +"USA." msgstr "" +"Ategyn ESounD XMMS\n" +"\n" +" Mae'r rhaglen hwn yn feddalwedd rhydd; cewch ei ailddosbarthu a/neu\n" +"ei newid o dan amodau'r Drwydded Gyhoeddus Gyffredinol GNU fel y'i\n" +"cyhoeddwyd gan y Free Software Foundation; un ai fersiwn 2 o'r\n" +"drwydded neu yn ôl eich dewis) unrhyw fersiwn arall.\n" +"\n" +"Mae'r rhaglen yn cael ei ddosbarthu yn y gobaith y byddwch yn ei gael\n" +"yn ddefnyddiol, on HEB UNRHYW WARANT; heb hyd yn oed awgrym\n" +"o warant MASNACHOL neu ADDASRWYDD AR GYFER UNRHYW\n" +"BWRPAS. Gw. y drwydded Gyhoeddus Gyffredin am ragor o wybodaeth.\n" +"\n" +"Dylech fod wedi derbyn copi o'r Drwydded gyda'r rhaglen; os nad cysylltwch\n" +"â 'r Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,\n" +" MA 02111-1307,\n" +"USA." -#: src/aosd/aosd_ui.c:300 -msgid "Display:" -msgstr "" +#: src/filewriter/filewriter.c:450 +#, fuzzy +msgid "File Writer Configuration" +msgstr "Ffurfweddiad Disk Writer" -#: src/aosd/aosd_ui.c:305 -msgid "Fade in:" -msgstr "" +#: src/filewriter/filewriter.c:462 +#, fuzzy +msgid "Output file format:" +msgstr "Ffeil cyfeiriadur allbwn:" -#: src/aosd/aosd_ui.c:310 -msgid "Fade out:" -msgstr "" +#: src/filewriter/filewriter.c:480 +#, fuzzy +msgid "Configure" +msgstr "Ffurfweddu Echo" -#: src/aosd/aosd_ui.c:391 -msgid "Fonts" +#: src/filewriter/filewriter.c:495 +msgid "Save into original directory" msgstr "" -#: src/aosd/aosd_ui.c:399 -#, c-format -msgid "Font %i:" +#: src/filewriter/filewriter.c:500 +msgid "Save into custom directory" msgstr "" -#: src/aosd/aosd_ui.c:416 -msgid "Shadow" -msgstr "" +#: src/filewriter/filewriter.c:510 +msgid "Output file folder:" +msgstr "Ffeil cyfeiriadur allbwn:" -#: src/aosd/aosd_ui.c:451 -#, fuzzy -msgid "Internationalization" -msgstr "Corff:" +#: src/filewriter/filewriter.c:514 +msgid "Pick a folder" +msgstr "Dewis cyfeiriadur" -#: src/aosd/aosd_ui.c:457 -msgid "Disable UTF-8 conversion of text (in aosd)" +#: src/filewriter/filewriter.c:533 +msgid "Get filename from:" msgstr "" -#: src/aosd/aosd_ui.c:475 -msgid "Select Skin File" +#: src/filewriter/filewriter.c:536 +msgid "original file tags" msgstr "" -#: src/aosd/aosd_ui.c:586 -msgid "Render Style" +#: src/filewriter/filewriter.c:542 +msgid "original filename" msgstr "" -#: src/aosd/aosd_ui.c:602 -msgid "Colors" -msgstr "Eiliwiau" - -#: src/aosd/aosd_ui.c:615 -#, fuzzy, c-format -msgid "Color %i:" -msgstr "Eiliwiau" - -#: src/aosd/aosd_ui.c:635 -msgid "Custom Skin" -msgstr "" - -#: src/aosd/aosd_ui.c:641 -msgid "Skin file:" -msgstr "" +#: src/filewriter/filewriter.c:552 +msgid "Don't strip file name extension" +msgstr "Cadw enw ffeil estyniad" -#: src/aosd/aosd_ui.c:644 src/sid/xs_interface.c:1044 -#: src/sid/xs_interface.c:1236 src/sid/xs_interface.c:1292 -msgid "Browse" +#: src/filewriter/filewriter.c:567 +msgid "Prepend track number to filename" msgstr "" -#: src/aosd/aosd_ui.c:746 -msgid "Enable trigger" -msgstr "Galluogi clicied" - -#: src/aosd/aosd_ui.c:773 -msgid "Event" -msgstr "Achlysur" - -#: src/aosd/aosd_ui.c:801 -msgid "Composite manager detected" -msgstr "" +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:783 +#, fuzzy +msgid "Auto" +msgstr "Ynghylch" -#: src/aosd/aosd_ui.c:808 -msgid "" -"Composite manager not detected;\n" -"unless you know that you have one running, please activate a composite " -"manager otherwise the OSD won't work properly" -msgstr "" +#: src/filewriter/mp3.c:38 +#, fuzzy +msgid "Joint Stereo" +msgstr "Stereo ar y cyd" -#: src/aosd/aosd_ui.c:816 -msgid "Composite manager not required for fake transparency" -msgstr "" +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 src/sid/xs_interface.c:308 +msgid "Stereo" +msgstr "Stereo" -#: src/aosd/aosd_ui.c:854 -msgid "Transparency" -msgstr "" +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 src/sid/xs_interface.c:301 +msgid "Mono" +msgstr "Mono" -#: src/aosd/aosd_ui.c:860 -msgid "Fake transparency" -msgstr "" +#: src/filewriter/mp3.c:724 +#, fuzzy +msgid "MP3 Configuration" +msgstr "Ffurfweddiad TiMidity" -#: src/aosd/aosd_ui.c:862 -msgid "Real transparency (requires X Composite Ext.)" +#: src/filewriter/mp3.c:747 +msgid "Algorithm Quality:" msgstr "" -#: src/aosd/aosd_ui.c:904 -msgid "Composite extension not loaded" -msgstr "" +#: src/filewriter/mp3.c:772 +#, fuzzy +msgid "Output Samplerate:" +msgstr "Graddfa samplo:" -#: src/aosd/aosd_ui.c:912 -msgid "Composite extension not available" -msgstr "" +#: src/filewriter/mp3.c:800 +#, fuzzy +msgid "(Hz)" +msgstr "Hz" -#: src/aosd/aosd_ui.c:931 -#, c-format -msgid "Audacious OSD" +#: src/filewriter/mp3.c:807 +msgid "Bitrate / Compression ratio:" msgstr "" -#: src/aosd/aosd_ui.c:1012 -msgid "Audacious OSD - configuration" -msgstr "Audacious OSD - ffurfweddiad" - -#: src/aosd/aosd_ui.c:1033 -msgid "Test" -msgstr "Prawf" - -#: src/aosd/aosd_ui.c:1048 -#, fuzzy -msgid "Position" -msgstr "Disgrifiad:" - -#: src/aosd/aosd_ui.c:1053 +#: src/filewriter/mp3.c:831 #, fuzzy -msgid "Animation" -msgstr "Corff:" - -#: src/aosd/aosd_ui.c:1058 -msgid "Text" -msgstr "Testun" +msgid "Bitrate (kbps):" +msgstr "Didradd:" -#: src/aosd/aosd_ui.c:1063 -msgid "Decoration" -msgstr "Addurniad" +#: src/filewriter/mp3.c:864 +msgid "Compression ratio:" +msgstr "" -#: src/aosd/aosd_ui.c:1068 +#: src/filewriter/mp3.c:888 #, fuzzy -msgid "Trigger" -msgstr "Trailer" +msgid "Audio Mode:" +msgstr "Dyfais sain:" -#: src/aosd/aosd_ui.c:1073 src/cdaudio-ng/configure.c:178 -#: src/modplug/gui/interface.cxx:689 src/sid/xs_interface.c:1302 +#: src/filewriter/mp3.c:913 #, fuzzy -msgid "Misc" +msgid "Misc:" msgstr "Disgo" -#: src/aosd/aosd_ui.c:1110 -msgid "Audacious OSD - about" -msgstr "Audacious OSD - ynghylch" - -#: src/aosd/aosd_ui.c:1140 -msgid "" -"\n" -"Audacious OSD " +#: src/filewriter/mp3.c:924 +msgid "Enforce strict ISO complience" msgstr "" -"\n" -"Audacious OSD" -#: src/aosd/aosd_ui.c:1141 +#: src/filewriter/mp3.c:935 #, fuzzy -msgid "" -"\n" -"http://www.develia.org/projects.php?p=audacious#aosd\n" -"written by Giacomo Lozito\n" -"< james@develia.org >\n" -"\n" -"On-Screen-Display is based on Ghosd library\n" -"written by Evan Martin\n" -"http://neugierig.org/software/ghosd/\n" -"\n" -msgstr "" -"\n" -"http://www.develia.org/projects.php?p=aosd\n" -"ysgrifenedig am Giacomo Lozito\n" -"< james@develia.org >\n" -"\n" -"On-Screen-Display ys tarddu gan Ghosd llyfrgell\n" -"ysgrifenedig am Evan Martin\n" -"http://neugierig.org/software/ghosd/\n" -"\n" +msgid "Error protection" +msgstr "Amddiffyn Gwall:" -#: src/bluetooth/agent.c:356 src/bluetooth/agent.c:397 -#, c-format -msgid "Pairing request for '%s'" +#: src/filewriter/mp3.c:947 src/filewriter/vorbis.c:245 +msgid "Quality" msgstr "" -#: src/bluetooth/agent.c:544 -#, c-format -msgid "Authorization request for %s" +#: src/filewriter/mp3.c:957 +msgid "Enable VBR/ABR" msgstr "" -#: src/bluetooth/agent.c:728 -#, c-format -msgid "Created bonding with %s" +#: src/filewriter/mp3.c:967 +msgid "Type:" msgstr "" -#: src/bluetooth/agent.c:756 -#, c-format -msgid "Removed bonding with %s" -msgstr "" +#: src/filewriter/mp3.c:1000 +#, fuzzy +msgid "VBR Options:" +msgstr "Dewisiadau:" -#: src/bluetooth/agent.c:808 -msgid "Device has been switched off" +#: src/filewriter/mp3.c:1016 +#, fuzzy +msgid "Minimum bitrate (kbps):" +msgstr "Didradd:" + +#: src/filewriter/mp3.c:1043 +msgid "Maximum bitrate (kbps):" msgstr "" -#: src/bluetooth/agent.c:811 -msgid "Device has been made non-discoverable" +#: src/filewriter/mp3.c:1066 +msgid "Strictly enforce minimum bitrate" msgstr "" -#: src/bluetooth/agent.c:813 -msgid "Device has been made connectable" +#: src/filewriter/mp3.c:1078 +#, fuzzy +msgid "ABR Options:" +msgstr "Dewisiadau:" + +#: src/filewriter/mp3.c:1088 +msgid "Average bitrate (kbps):" msgstr "" -#: src/bluetooth/agent.c:815 -msgid "Device has been made discoverable" +#: src/filewriter/mp3.c:1116 +msgid "VBR quality level:" msgstr "" -#: src/bluetooth/agent.c:817 -msgid "Device has been made limited discoverable" +#: src/filewriter/mp3.c:1135 +msgid "Don't write Xing VBR header" msgstr "" -#: src/bluetooth/agent.c:819 -msgid "Device has been switched into pairing mode" +#: src/filewriter/mp3.c:1149 +msgid "VBR/ABR" msgstr "" -#: src/bluetooth/bluetooth.c:117 -msgid "Bluetooth headset support plugin" +#: src/filewriter/mp3.c:1159 +msgid "Frame params:" msgstr "" -#: src/bluetooth/bluetooth.c:118 -msgid "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the " -"Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" +#: src/filewriter/mp3.c:1171 +msgid "Mark as copyright" msgstr "" -#: src/bluetooth/gui.c:148 -msgid "Producer" +#: src/filewriter/mp3.c:1182 +msgid "Mark as original" msgstr "" -#: src/bluetooth/gui.c:221 -msgid "Available Headsets" +#: src/filewriter/mp3.c:1194 +#, fuzzy +msgid "ID3 params:" +msgstr "Tagiau ID3:" + +#: src/filewriter/mp3.c:1205 +msgid "Force addition of version 2 tag" msgstr "" -#: src/bluetooth/gui.c:224 -msgid "Current Headset" +#: src/filewriter/mp3.c:1215 +msgid "Only add v1 tag" msgstr "" -#: src/bluetooth/gui.c:227 -msgid "_Refresh" +#: src/filewriter/mp3.c:1222 +msgid "Only add v2 tag" msgstr "" -#: src/bluetooth/gui.c:231 +#: src/filewriter/mp3.c:1243 #, fuzzy -msgid "_Connect" -msgstr "Lleoliad:" +msgid "Tags" +msgstr "Tango" -#: src/bluetooth/gui.c:237 +#: src/filewriter/vorbis.c:238 #, fuzzy -msgid "_Close" -msgstr "Cau" +msgid "Vorbis Encoder Configuration" +msgstr "Ffurfweddiad Disk Writer" -#: src/bluetooth/gui.c:274 -#, fuzzy -msgid "Class" -msgstr "Clasurôl" +#: src/filewriter/vorbis.c:258 +msgid "Quality level (0 - 10):" +msgstr "" -#: src/bluetooth/gui.c:278 +#: src/flacng/plugin.c:379 #, fuzzy -msgid "Address:" -msgstr "Dyfeisiau" +msgid "About FLAC Audio Plugin" +msgstr "Ategynnau Sain FLAC" -#: src/bluetooth/scan_gui.c:69 -msgid "Bonding finish!" +#: src/flacng/plugin.c:380 +msgid "" +"\n" +"\n" +"Original code by\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" msgstr "" -#: src/bluetooth/scan_gui.c:76 -msgid "No devices found!" -msgstr "" +#: src/gnomeshortcuts/gnomeshortcuts.c:303 +#, fuzzy +msgid "About Gnome Shortcut Plugin" +msgstr "Ynghylch Ategyn ESounD" -#: src/bluetooth/scan_gui.c:119 -msgid "Scanning..." +#: src/gnomeshortcuts/gnomeshortcuts.c:304 +msgid "" +"Gnome Shortcut Plugin\n" +"Let's you control the player with Gnome's shortcuts.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" msgstr "" -#: src/bluetooth/scan_gui.c:122 -msgid "Pairing..." +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 +msgid "Open Files" msgstr "" -#: src/bluetooth/scan_gui.c:138 +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:271 #, fuzzy -msgid "Rescan" -msgstr "Cyfongl" +msgid "Add Files" +msgstr "Ychwaneg gyrrwr" -#: src/bluetooth/scan_gui.c:142 src/gtkui/ui_manager.c:66 -#: src/gtkui/ui_manager.c:67 src/hotkey/gui.c:71 src/skins/ui_manager.c:167 -#: src/skins/ui_manager.c:168 +#: src/gntui/gntui.c:270 #, fuzzy -msgid "Play" -msgstr "Modd chwarae:" - -#: src/blur_scope/config.c:73 -msgid "Blur Scope: Color selection" -msgstr "Blur Scope: Color selection" +msgid "Audacious2" +msgstr "%s - Audacious" -#: src/blur_scope/config.c:83 src/jack/configure.c:111 -msgid "Options:" -msgstr "Dewisiadau:" +#: src/gntui/gntui.c:311 +msgid "gnt interface" +msgstr "" -#: src/cdaudio-ng/cdaudio-ng.c:278 +#: src/gtkui/columns.c:36 #, fuzzy -msgid "About Audio CD Plugin" -msgstr "Ategynnau Sain FLAC" +msgid "Entry number" +msgstr "Rhif y Trac:" -#: src/cdaudio-ng/cdaudio-ng.c:279 -msgid "" -"Copyright (c) 2007, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"Many thanks to libcdio developers \n" -"\tand to libcddb developers .\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me.\n" -"\n" -"This was a Google Summer of Code 2007 project.\n" -"\n" -"Copyright 2009 John Lindgren" -msgstr "" +#: src/gtkui/columns.c:36 src/sid/xs_interface.c:1103 +msgid "Title" +msgstr "Teitl" -#: src/cdaudio-ng/configure.c:155 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "CD Audio Plugin Configuration" -msgstr "Ffurfweddiad Chwaraeydd MPEG Sain" +msgid "Artist" +msgstr "Artist:" -#: src/cdaudio-ng/configure.c:167 -msgid "Digital audio extraction" -msgstr "Tynnu awdio digidôl" +#: src/gtkui/columns.c:37 +#, fuzzy +msgid "Year" +msgstr "Blwyddyn:" -#: src/cdaudio-ng/configure.c:172 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "Title information" -msgstr "Fformat y teitl:" +msgid "Album" +msgstr "Albwm:" -#: src/cdaudio-ng/configure.c:190 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "Disc speed:" -msgstr "Chwarae cyflymedd" +msgid "Track" +msgstr "Cynnydd trac:" -#: src/cdaudio-ng/configure.c:198 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "Use cd-text if available" -msgstr "Stereo (os ar gael)" +msgid "Queue position" +msgstr "Disgrifiad:" -#: src/cdaudio-ng/configure.c:205 +#: src/gtkui/columns.c:38 #, fuzzy -msgid "Use CDDB if available" -msgstr "Stereo (os ar gael)" +msgid "Length" +msgstr "Hyd:" -#: src/cdaudio-ng/configure.c:211 +#: src/gtkui/columns.c:38 #, fuzzy -msgid "Server: " -msgstr "Gwasanaethwr" +msgid "File path" +msgstr "Enw ffeil" -#: src/cdaudio-ng/configure.c:215 +#: src/gtkui/columns.c:38 #, fuzzy -msgid "Path: " -msgstr "Porth:" +msgid "File name" +msgstr "Enw ffeil" -#: src/cdaudio-ng/configure.c:219 +#: src/gtkui/columns.c:38 #, fuzzy -msgid "Port: " -msgstr "Porth:" +msgid "Custom title" +msgstr "Ynghylch" -#: src/cdaudio-ng/configure.c:232 -msgid "Use HTTP instead of CDDBP" +#: src/gtkui/columns.c:39 +#, fuzzy +msgid "Bitrate" +msgstr "Didradd:" + +#: src/gtkui/columns.c:286 +msgid "Choose Columns" msgstr "" -#: src/cdaudio-ng/configure.c:244 -msgid "Override default device: " +#: src/gtkui/columns.c:300 +msgid "Available:" msgstr "" -#: src/cd-menu-items/cd-menu-items.c:35 -#, fuzzy -msgid "Play CD" -msgstr "Modd chwarae:" +#: src/gtkui/columns.c:334 +msgid "Chosen:" +msgstr "" -#: src/cd-menu-items/cd-menu-items.c:35 -msgid "Add CD" +#: src/gtkui/layout.c:122 +msgid "Dock at Left" msgstr "" -#: src/compressor/plugin.c:58 -#, fuzzy -msgid "About Dynamic Range Compression Plugin" -msgstr "Ynghylch Ategyn Extra Stereo" +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "" -#: src/compressor/plugin.c:91 +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "" + +#: src/gtkui/layout.c:123 #, fuzzy -msgid "Dynamic Range Compressor Preferences" -msgstr "AudioCompress " +msgid "Disable" +msgstr "Cyffredinol" -#: src/compressor/plugin.c:103 +#: src/gtkui/menus.c:132 #, fuzzy -msgid "Target volume:" -msgstr "Sain:(%)" +msgid "_Open Files ..." +msgstr "Ychwaneg gyrrwr" + +#: src/gtkui/menus.c:133 +msgid "Open _URL ..." +msgstr "" -#: src/compressor/plugin.c:116 +#: src/gtkui/menus.c:134 #, fuzzy -msgid "Effect strength:" -msgstr "Dwyster yr effaith:" +msgid "_Add File ..." +msgstr "Ychwaneg gyrrwr" -#: src/console/configure.c:137 +#: src/gtkui/menus.c:135 #, fuzzy -msgid "Game Console Music Decoder" -msgstr "Chwaraeydd Sbort Modiwl" +msgid "Add U_RL ..." +msgstr "Ychwaneg gyrrwr" -#: src/console/configure.c:171 -msgid "Bass:" -msgstr "Bas" +#: src/gtkui/menus.c:137 +#, fuzzy +msgid "A_bout ..." +msgstr "Ynghylch" -#: src/console/configure.c:175 src/console/configure.c:186 -#: src/console/configure.c:207 -msgid "secs" -msgstr "eiliad" +#: src/gtkui/menus.c:138 +#, fuzzy +msgid "_Preferences ..." +msgstr "AudioCompress " -#: src/console/configure.c:182 -msgid "Treble:" -msgstr "Trebl:" +#: src/gtkui/menus.c:139 src/skins/ui_manager.c:412 +msgid "_Quit" +msgstr "" -#: src/console/configure.c:203 -msgid "Default song length:" -msgstr "Hyd cân rhagosodedig:" +#: src/gtkui/menus.c:142 +#, fuzzy +msgid "_Play" +msgstr "Modd chwarae:" -#: src/console/configure.c:209 src/modplug/gui/interface.cxx:269 -#: src/sid/xs_interface.c:666 -msgid "Resampling" -msgstr "Samplo" +#: src/gtkui/menus.c:143 +#, fuzzy +msgid "Paus_e" +msgstr "Chwarae" -#: src/console/configure.c:215 -msgid "Enable audio resampling" -msgstr "Gallougi sain dyblusampl" +#: src/gtkui/menus.c:144 +#, fuzzy +msgid "_Stop" +msgstr "Synthpop" -#: src/console/configure.c:230 -msgid "Resampling rate:" -msgstr "Graddfa Samplo" +#: src/gtkui/menus.c:145 +#, fuzzy +msgid "Pre_vious" +msgstr "Primus" -#: src/console/configure.c:245 -msgid "SPC" -msgstr "SPC" +#: src/gtkui/menus.c:146 +#, fuzzy +msgid "_Next" +msgstr "Testun" -#: src/console/configure.c:246 -msgid "Ignore length from SPC tags" -msgstr "Diystyru hyd am SPC tagiau" +#: src/gtkui/menus.c:148 +#, fuzzy +msgid "_Repeat" +msgstr "Beat" -#: src/console/configure.c:247 -msgid "Increase reverb" +#: src/gtkui/menus.c:149 +msgid "S_huffle" msgstr "" -#: src/console/configure.c:272 +#: src/gtkui/menus.c:150 #, fuzzy -msgid "" -"The default song length, expressed in seconds, is used for songs that do not " -"provide length information (i.e. looping tracks)." +msgid "N_o Playlist Advance" +msgstr "Modd chwarae:" + +#: src/gtkui/menus.c:151 +msgid "Stop _After This Song" msgstr "" -"* Rhagosodedig hyd sain *\n" -"Rhagosodedig hyd sain, mynegiau yn eiliad, ys gallougi am sain pa arlwyo na " -"hyd gwybodaeth (dollenau trac)." -#: src/console/plugin.c:33 -#, fuzzy -msgid "About the Game Console Music Decoder" -msgstr "Ynghylch Ategyn Cerdd Console" +#: src/gtkui/menus.c:153 src/gtkui/menus.c:210 +msgid "Song _Info ..." +msgstr "" -#: src/console/plugin.c:34 -#, fuzzy -msgid "" -"Console music decoder engine based on Game_Music_Emu 0.5.2.\n" -"Supported formats: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" -"Audacious implementation by: William Pitcock , \n" -" Shay Green \n" +#: src/gtkui/menus.c:154 +msgid "Jump to _Time ..." msgstr "" -"Ategyn cerdd console tarddu Game_Music_Emu 0.5.2.\n" -"Atgyfnerthu rhyw: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" -"Audacious fersiwn at: William Pitcock , \n" -" Shay Green " -#: src/crossfade/plugin.c:51 -#, fuzzy -msgid "About Crossfade" -msgstr "Ynghylch Ategyn Scrobbler" +#: src/gtkui/menus.c:155 +msgid "_Jump to Song ..." +msgstr "" -#: src/crossfade/plugin.c:84 +#: src/gtkui/menus.c:158 #, fuzzy -msgid "Crossfade Preferences" -msgstr "AudioCompress " - -#: src/crossfade/plugin.c:95 -msgid "Overlap (in seconds):" -msgstr "" +msgid "By Track _Number" +msgstr "Rhif y Trac:" -#: src/crossfade/plugin.c:129 src/crossfade/plugin.c:137 +#: src/gtkui/menus.c:159 #, fuzzy -msgid "Crossfade Error" -msgstr "Crossover" +msgid "By _Title" +msgstr "Teitl" -#: src/crossfade/plugin.c:130 -msgid "" -"Crossfading failed because the songs had a different number of channels." -msgstr "" +#: src/gtkui/menus.c:160 +#, fuzzy +msgid "By _Artist" +msgstr "Artist:" -#: src/crossfade/plugin.c:138 -msgid "" -"Crossfading failed because the songs had different sample rates.\n" -"\n" -"You can use the Sample Rate Converter effect to resample the songs to the " -"same rate." -msgstr "" +#: src/gtkui/menus.c:161 +#, fuzzy +msgid "By A_lbum" +msgstr "Albwm:" -#: src/crystalizer/crystalizer.c:104 +#: src/gtkui/menus.c:162 #, fuzzy -msgid "Configure Crystalizer" -msgstr "Ffurfweddu Extra Stereo" +msgid "By Release _Date" +msgstr "Dyddiad!" -#: src/crystalizer/crystalizer.c:106 src/stereo_plugin/stereo.c:102 -msgid "Effect intensity:" -msgstr "Dwyster yr effaith:" +#: src/gtkui/menus.c:163 +#, fuzzy +msgid "By _File Path" +msgstr "Enw ffeil" -#: src/crystalizer/crystalizer.c:143 src/echo_plugin/gui.c:137 -#: src/modplug/gui/interface.cxx:709 src/stereo_plugin/stereo.c:139 -msgid "Apply" -msgstr "Gosod" +#: src/gtkui/menus.c:164 +#, fuzzy +msgid "By _Custom Title" +msgstr "Ynghylch" -#: src/echo_plugin/gui.c:14 -msgid "" -"Echo Plugin\n" -"By Johan Levin 1999.\n" -"\n" -"Surround echo by Carl van Schaik 1999" +#: src/gtkui/menus.c:166 +msgid "R_everse Order" msgstr "" -"Echo Plugin\n" -"Gan Johan Levin 1999.\n" -"\n" -"Surround echo gan Carl van Schaik 1999" - -#: src/echo_plugin/gui.c:26 -msgid "About Echo Plugin" -msgstr "Ynghylch Ategyn Echo" -#: src/echo_plugin/gui.c:69 -msgid "Configure Echo" -msgstr "Ffurfweddu Echo" +#: src/gtkui/menus.c:167 +msgid "_Random Order" +msgstr "" -#: src/echo_plugin/gui.c:82 -msgid "Delay: (ms)" -msgstr "Oediad: (ms)" +#: src/gtkui/menus.c:170 src/gtkui/menus.c:212 +msgid "_Refresh" +msgstr "" -#: src/echo_plugin/gui.c:87 -msgid "Feedback: (%)" -msgstr "Adborth: (%)" +#: src/gtkui/menus.c:172 +#, fuzzy +msgid "_Sort" +msgstr "Porth" -#: src/echo_plugin/gui.c:92 -msgid "Volume: (%)" -msgstr "Sain:(%)" +#: src/gtkui/menus.c:174 +msgid "_New" +msgstr "" -#: src/evdev-plug/ed.c:60 +#: src/gtkui/menus.c:175 #, fuzzy -msgid "Playback->Play" -msgstr "Chwarae" +msgid "_Close" +msgstr "Cau" -#: src/evdev-plug/ed.c:61 +#: src/gtkui/menus.c:177 #, fuzzy -msgid "Playback->Stop" -msgstr "Chwarae" +msgid "_Import ..." +msgstr "Porth" -#: src/evdev-plug/ed.c:62 +#: src/gtkui/menus.c:178 #, fuzzy -msgid "Playback->Pause" -msgstr "Chwarae" +msgid "_Export ..." +msgstr "Porth" -#: src/evdev-plug/ed.c:63 +#: src/gtkui/menus.c:180 #, fuzzy -msgid "Playback->Prev" -msgstr "Chwarae" +msgid "_Playlist Manager ..." +msgstr "Modd chwarae:" -#: src/evdev-plug/ed.c:64 +#: src/gtkui/menus.c:183 #, fuzzy -msgid "Playback->Next" -msgstr "Chwarae" +msgid "Volume _Up" +msgstr "Sain:(%)" -#: src/evdev-plug/ed.c:65 +#: src/gtkui/menus.c:184 #, fuzzy -msgid "Playback->Eject" -msgstr "Chwarae" +msgid "Volume _Down" +msgstr "Sain:(%)" -#: src/evdev-plug/ed.c:67 -msgid "Playlist->Repeat" +#: src/gtkui/menus.c:186 +msgid "_Equalizer" msgstr "" -#: src/evdev-plug/ed.c:68 -msgid "Playlist->Shuffle" +#: src/gtkui/menus.c:188 +msgid "E_ffects" msgstr "" -#: src/evdev-plug/ed.c:70 -msgid "Volume->Up_5" +#: src/gtkui/menus.c:191 +msgid "_Interface" msgstr "" -#: src/evdev-plug/ed.c:71 -msgid "Volume->Down_5" +#: src/gtkui/menus.c:193 +msgid "Show _Menu Bar" msgstr "" -#: src/evdev-plug/ed.c:72 -msgid "Volume->Up_10" +#: src/gtkui/menus.c:194 +msgid "Show I_nfo Bar" msgstr "" -#: src/evdev-plug/ed.c:73 -msgid "Volume->Down_10" -msgstr "" +#: src/gtkui/menus.c:195 +#, fuzzy +msgid "Show _Status Bar" +msgstr "Statws" -#: src/evdev-plug/ed.c:74 -msgid "Volume->Mute" +#: src/gtkui/menus.c:197 +msgid "Show Column _Headers" msgstr "" -#: src/evdev-plug/ed.c:76 -msgid "Window->Main" +#: src/gtkui/menus.c:198 +msgid "Choose _Columns ..." msgstr "" -#: src/evdev-plug/ed.c:77 -msgid "Window->Playlist" -msgstr "" +#: src/gtkui/menus.c:199 +#, fuzzy +msgid "Scrol_l on Song Change" +msgstr "Newid Cân %s" -#: src/evdev-plug/ed.c:78 -msgid "Window->Equalizer" -msgstr "" +#: src/gtkui/menus.c:202 +#, fuzzy +msgid "_File" +msgstr "Enw ffeil" -#: src/evdev-plug/ed.c:79 -msgid "Window->JumpToFile" -msgstr "" +#: src/gtkui/menus.c:203 +#, fuzzy +msgid "_Playback" +msgstr "Chwarae" -#: src/evdev-plug/ed_internals.c:94 -#, c-format -msgid "" -"event-device-plugin: unable to open device file %s , skipping this device; " -"check that the file exists and that you have read permission for it\n" -msgstr "" +#: src/gtkui/menus.c:204 +#, fuzzy +msgid "P_laylist" +msgstr "Modd chwarae:" -#: src/evdev-plug/ed_internals.c:103 -#, c-format -msgid "" -"event-device-plugin: unable to create a io_channel for device file %s ," -"skipping this device\n" -msgstr "" +#: src/gtkui/menus.c:205 src/gtkui/menus.c:219 +#, fuzzy +msgid "_Services" +msgstr "Dyfeisiau" -#: src/evdev-plug/ed_internals.c:342 -msgid "" -"event-device-plugin: unable to open /proc/bus/input/devices , automatic " -"detection of event devices won't work.\n" -msgstr "" +#: src/gtkui/menus.c:206 +#, fuzzy +msgid "_Output" +msgstr "Ategyn Allbwn OSS" -#: src/evdev-plug/ed_internals.c:351 -msgid "" -"event-device-plugin: unable to open a io_channel for /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" +#: src/gtkui/menus.c:207 +msgid "_View" msgstr "" -#: src/evdev-plug/ed_internals.c:361 -msgid "" -"event-device-plugin: an error occurred while reading /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" +#: src/gtkui/menus.c:211 +msgid "_Queue/Unqueue" msgstr "" -#: src/evdev-plug/ed_internals.c:424 -#, c-format -msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" +#: src/gtkui/menus.c:214 +msgid "Cu_t" msgstr "" -#: src/evdev-plug/ed_internals.c:489 src/evdev-plug/ed_internals.c:583 -#, c-format -msgid "" -"event-device-plugin: unable to load config file %s , default settings will " -"be used.\n" +#: src/gtkui/menus.c:215 +msgid "_Copy" msgstr "" -#: src/evdev-plug/ed_internals.c:535 -#, c-format -msgid "" -"event-device-plugin: incomplete information in config file for device \"%s" -"\" , skipping.\n" +#: src/gtkui/menus.c:216 +msgid "_Paste" msgstr "" -#: src/evdev-plug/ed_internals.c:604 src/evdev-plug/ed_internals.c:936 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_active value for device " -"\"%s\", skipping it.\n" +#: src/gtkui/menus.c:217 +msgid "Select _All" msgstr "" -#: src/evdev-plug/ed_internals.c:840 -#, c-format -msgid "" -"event-device-plugin: unable to access local directory %s , settings will not " -"be saved.\n" -msgstr "" +#: src/gtkui/menus.c:222 +#, fuzzy +msgid "_Rename" +msgstr "Enw ffeil" -#: src/evdev-plug/ed_internals.c:890 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get filename value for device " -"\"%s\", skipping it.\n" +#: src/gtkui/ui_gtk.c:75 +msgid "GTK Interface" msgstr "" -#: src/evdev-plug/ed_internals.c:906 +#: src/gtkui/ui_gtk.c:132 src/skins/ui_main.c:303 #, c-format -msgid "" -"event-device-plugin: configuration, unable to get phys value for device \"%s" -"\", skipping it.\n" -msgstr "" +msgid "%s - Audacious" +msgstr "%s - Audacious" -#: src/evdev-plug/ed_internals.c:922 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_custom value for device " -"\"%s\", skipping it.\n" -msgstr "" +#: src/gtkui/ui_gtk.c:138 src/skins/ui_main.c:305 src/skins/ui_main.c:1498 +#, fuzzy +msgid "Audacious" +msgstr "%s - Audacious" -#: src/evdev-plug/ed_internals.c:946 -#, c-format -msgid "" -"event-device-plugin: configuration, unexpected value for device \"%s\", " -"skipping it.\n" -msgstr "" +#: src/gtkui/ui_gtk.c:177 src/skins/plugin.c:185 +msgid "Error" +msgstr "Gwall" -#: src/evdev-plug/ed_ui.c:212 +#: src/gtkui/ui_statusbar.c:102 src/skins/ui_main.c:460 #, fuzzy -msgid "Detected" -msgstr "Rhagosodedig" +msgid "mono" +msgstr "Mono" -#: src/evdev-plug/ed_ui.c:217 +#: src/gtkui/ui_statusbar.c:104 src/skins/ui_main.c:459 #, fuzzy -msgid "Custom" -msgstr "Ynghylch" - -#: src/evdev-plug/ed_ui.c:223 -msgid "Not Detected" -msgstr "" +msgid "stereo" +msgstr "Stereo" -#: src/evdev-plug/ed_ui.c:275 src/evdev-plug/ed_ui.c:411 -#: src/evdev-plug/ed_ui.c:874 -#, fuzzy -msgid "Information" -msgstr "Fformat ID3:" +#: src/gtkui/ui_statusbar.c:106 +#, fuzzy, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "Sianeli:" +msgstr[1] "Sianeli:" -#: src/evdev-plug/ed_ui.c:276 -msgid "" -"Cannot open bindings window for a not-detected device.\n" -"Ensure that the device has been correctly plugged in." +#: src/gtkui/ui_statusbar.c:121 +#, c-format +msgid "%d kbps" msgstr "" -#: src/evdev-plug/ed_ui.c:319 -msgid "Error" -msgstr "Gwall" - -#: src/evdev-plug/ed_ui.c:320 -msgid "" -"Unable to open selected device.\n" -"Please check read permissions on device file." +#: src/hotkey/gui.c:71 +msgid "Previous Track" msgstr "" -#: src/evdev-plug/ed_ui.c:341 -msgid "EvDev-Plug - Add custom device" -msgstr "" +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +#, fuzzy +msgid "Play" +msgstr "Modd chwarae:" -#: src/evdev-plug/ed_ui.c:353 -msgid "" -"EvDev-Plug tries to automatically detect and update information about\n" -"event devices available on the system.\n" -"However, if auto-detect doesn't work for your system, or you have event\n" -"devices in a non-standard location (currently they're only searched in\n" -"/dev/input/ ), you may want to add a custom device, explicitly specifying\n" -"name and device file." +#: src/hotkey/gui.c:73 +msgid "Pause/Resume" msgstr "" -#: src/evdev-plug/ed_ui.c:361 +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 #, fuzzy -msgid "Device name:" -msgstr "Dyfais:" +msgid "Stop" +msgstr "Synthpop" -#: src/evdev-plug/ed_ui.c:365 +#: src/hotkey/gui.c:75 #, fuzzy -msgid "Device file:" -msgstr "Dyfais:" - -#: src/evdev-plug/ed_ui.c:404 -msgid "(custom)" -msgstr "" +msgid "Next Track" +msgstr "Cynnydd trac:" -#: src/evdev-plug/ed_ui.c:412 -msgid "" -"Please specify both name and filename.\n" -"Filename must be specified with absolute path." +#: src/hotkey/gui.c:76 +msgid "Forward 5 Seconds" msgstr "" -#: src/evdev-plug/ed_ui.c:447 -msgid "Do you want to remove the existing configuration for selected device?\n" +#: src/hotkey/gui.c:77 +msgid "Rewind 5 Seconds" msgstr "" -#: src/evdev-plug/ed_ui.c:466 -msgid "Do you want to remove the selected custom device?\n" -msgstr "" +#: src/hotkey/gui.c:78 +#, fuzzy +msgid "Mute" +msgstr "Dyddiad!" -#: src/evdev-plug/ed_ui.c:612 +#: src/hotkey/gui.c:79 #, fuzzy -msgid "EvDev-Plug - Configuration" -msgstr "Ffurfweddiad Chwaraeydd MPEG Sain" +msgid "Volume Up" +msgstr "Sain:(%)" -#: src/evdev-plug/ed_ui.c:651 +#: src/hotkey/gui.c:80 #, fuzzy -msgid "Active" -msgstr "Acid" +msgid "Volume Down" +msgstr "Sain:(%)" -#: src/evdev-plug/ed_ui.c:655 src/sun/configure.c:486 -msgid "Status" -msgstr "Statws" +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:424 src/skins/ui_manager.c:425 +msgid "Jump to File" +msgstr "" -#: src/evdev-plug/ed_ui.c:664 +#: src/hotkey/gui.c:82 #, fuzzy -msgid "Device Name" -msgstr "Dyfais" +msgid "Toggle Player Windows" +msgstr "/Toggle Decorations" -#: src/evdev-plug/ed_ui.c:668 -#, fuzzy -msgid "Device File" -msgstr "Dyfais" +#: src/hotkey/gui.c:83 +msgid "Show On-Screen-Display" +msgstr "" -#: src/evdev-plug/ed_ui.c:672 +#: src/hotkey/gui.c:84 #, fuzzy -msgid "Device Address" -msgstr "Dyfeisiau" +msgid "Toggle Repeat" +msgstr "Beat" -#: src/evdev-plug/ed_ui.c:689 -msgid "_Bindings" +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" msgstr "" -#: src/evdev-plug/ed_ui.c:838 -msgid "" -"Press a key of your device to bind it;\n" -"if no key is pressed in five seconds, this window\n" -"will close without binding changes." -msgstr "" +#: src/hotkey/gui.c:95 +#, fuzzy +msgid "(none)" +msgstr "Dim" -#: src/evdev-plug/ed_ui.c:875 +#: src/hotkey/gui.c:232 msgid "" -"This input event has been already assigned.\n" +"It is not recommended to bind the primary mouse buttons without " +"modificators.\n" "\n" -"It's not possible to assign multiple actions to the same input event " -"(although it's possible to assign the same action to multiple events)." +"Do you want to continue?" msgstr "" -#: src/evdev-plug/ed_ui.c:1323 +#: src/hotkey/gui.c:234 +msgid "Binding mouse buttons" +msgstr "" + +#: src/hotkey/gui.c:384 #, fuzzy -msgid "EvDev-Plug - Bindings Configuration" -msgstr "Ffurfweddiad Chwaraeydd MPEG Sain" +msgid "Global Hotkey Plugin Configuration" +msgstr "Ffurfweddu Ategyn ESD" + +#: src/hotkey/gui.c:400 +msgid "" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." +msgstr "" -#: src/evdev-plug/ed_ui.c:1363 +#: src/hotkey/gui.c:405 #, fuzzy -msgid "Name: " -msgstr "Hatena" +msgid "Hotkeys:" +msgstr "Gwesteiwr:" -#: src/evdev-plug/ed_ui.c:1372 +#: src/hotkey/gui.c:424 #, fuzzy -msgid "Filename: " +msgid "Action:" msgstr "Hatena" -#: src/evdev-plug/ed_ui.c:1381 -msgid "Phys.Address: " +#: src/hotkey/gui.c:432 +msgid "Key Binding:" msgstr "" -#: src/evdev-plug/ed_ui.c:1460 -msgid "EvDev-Plug - about" -msgstr "EvDev-Plug - ynghylch" +#: src/hotkey/gui.c:663 +#, fuzzy +msgid "About Global Hotkey Plugin" +msgstr "Ynghylch Ategyn Scrobbler" -#: src/evdev-plug/ed_ui.c:1491 +#: src/hotkey/gui.c:664 msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" "\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributers include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä \n" +"\t\t\tBryn Davies \n" +"\t\t\tJonathan A. Davis \n" +"\t\t\tJeremy Tan \n" "\n" -"written by Giacomo Lozito\n" msgstr "" -#: src/ffaudio/ffaudio-core.c:662 -#, c-format -msgid "" -"Multi-format audio decoding plugin for Audacious based on\n" -"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" -"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" -"\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" -"Audacious plugin by:\n" -" William Pitcock ,\n" -" Matti Hämäläinen \n" +#: src/jack/configure.c:71 +msgid "Connect to all available jack ports" msgstr "" -#: src/ffaudio/ffaudio-core.c:675 -#, fuzzy -msgid "About FFaudio Plugin" -msgstr "Ategynnau Sain FLAC" +#: src/jack/configure.c:78 +msgid "Connect only the output ports" +msgstr "" + +#: src/jack/configure.c:85 +msgid "Connect to no ports" +msgstr "" -#: src/filewriter/filewriter.c:180 +#: src/jack/configure.c:103 #, fuzzy -msgid "About FileWriter-Plugin" -msgstr "Ynghylch Ategyn Echo" +msgid "jack Plugin configuration" +msgstr "Ffurfweddu Ategyn ESD" + +#: src/jack/configure.c:121 +msgid "Connection mode:" +msgstr "" -#: src/filewriter/filewriter.c:181 +#: src/jack/configure.c:133 #, fuzzy +msgid "Enable debug printing" +msgstr "Galluogi ReplayGain" + +#: src/jack/jack.c:438 msgid "" -"FileWriter-Plugin\n" -"\n" -"This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" +"XMMS jack Driver 0.17\n" "\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" "\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." +"Audacious port by\n" +"Giacomo Lozito from develia.org" msgstr "" -"Ategyn ESounD XMMS\n" +"XMMS jack Driver 0.17\n" "\n" -" Mae'r rhaglen hwn yn feddalwedd rhydd; cewch ei ailddosbarthu a/neu\n" -"ei newid o dan amodau'r Drwydded Gyhoeddus Gyffredinol GNU fel y'i\n" -"cyhoeddwyd gan y Free Software Foundation; un ai fersiwn 2 o'r\n" -"drwydded neu yn ôl eich dewis) unrhyw fersiwn arall.\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" "\n" -"Mae'r rhaglen yn cael ei ddosbarthu yn y gobaith y byddwch yn ei gael\n" -"yn ddefnyddiol, on HEB UNRHYW WARANT; heb hyd yn oed awgrym\n" -"o warant MASNACHOL neu ADDASRWYDD AR GYFER UNRHYW\n" -"BWRPAS. Gw. y drwydded Gyhoeddus Gyffredin am ragor o wybodaeth.\n" +"Audacious ategyn gan\n" +"Giacomo Lozito o develia.org" + +#: src/jack/jack.c:443 +msgid "About JACK Output Plugin 0.17" +msgstr "Ynghylch Ategyn Allbwn JACK 0.17" + +#: src/lyricwiki/lyricwiki.c:226 +msgid "" "\n" -"Dylech fod wedi derbyn copi o'r Drwydded gyda'r rhaglen; os nad cysylltwch\n" -"â 'r Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,\n" -" MA 02111-1307,\n" -"USA." +"Looking for lyrics..." +msgstr "" -#: src/filewriter/filewriter.c:466 -#, fuzzy -msgid "File Writer Configuration" -msgstr "Ffurfweddiad Disk Writer" +#: src/lyricwiki/lyricwiki.c:249 +msgid "" +"\n" +"Connecting to lyrics.wikia.com..." +msgstr "" -#: src/filewriter/filewriter.c:478 -#, fuzzy -msgid "Output file format:" -msgstr "Ffeil cyfeiriadur allbwn:" +#: src/lyricwiki/lyricwiki.c:337 +msgid "" +"\n" +"No lyrics were found." +msgstr "" -#: src/filewriter/filewriter.c:496 src/ladspa/ladspa.c:1058 +#: src/metronom/metronom.c:85 #, fuzzy -msgid "Configure" -msgstr "Ffurfweddu Echo" +msgid "About Metronom" +msgstr "Ynghylch" -#: src/filewriter/filewriter.c:511 -msgid "Save into original directory" +#: src/metronom/metronom.c:86 +msgid "" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" msgstr "" -#: src/filewriter/filewriter.c:516 -msgid "Save into custom directory" +#: src/metronom/metronom.c:143 +#, fuzzy, c-format +msgid "Tact generator: %d bpm" +msgstr "Cynhyrchydd Tôn:" + +#: src/metronom/metronom.c:145 +#, c-format +msgid "Tact generator: %d bpm %d/%d" msgstr "" -#: src/filewriter/filewriter.c:528 -msgid "Output file folder:" -msgstr "Ffeil cyfeiriadur allbwn:" +#: src/mpg123/mpg123.c:183 +#, fuzzy +msgid "Surround" +msgstr "Adlais o amgylch" -#: src/filewriter/filewriter.c:532 -msgid "Pick a folder" -msgstr "Dewis cyfeiriadur" +#: src/mtp_up/mtp.c:298 +msgid "Upload in progress..." +msgstr "" -#: src/filewriter/filewriter.c:551 -msgid "Get filename from:" +#: src/mtp_up/mtp.c:310 +msgid "Upload to MTP Device" msgstr "" -#: src/filewriter/filewriter.c:554 -msgid "original file tags" +#: src/mtp_up/mtp.c:311 +msgid "Disconnect MTP Device" msgstr "" -#: src/filewriter/filewriter.c:560 -msgid "original filename" +#: src/notify/libnotify-aosd_event.c:47 +#, fuzzy +msgid "Stopped" +msgstr "Synthpop" + +#: src/notify/libnotify-aosd_event.c:47 +msgid "Audacious is not playing." msgstr "" -#: src/filewriter/filewriter.c:570 -msgid "Don't strip file name extension" -msgstr "Cadw enw ffeil estyniad" +#: src/null/null.c:64 +msgid "Null output plugin " +msgstr "Null ategyn allbwn" -#: src/filewriter/filewriter.c:574 +#: src/null/null.c:65 +#, fuzzy msgid "" -"If enabled, the extension from the original filename will not be stripped " -"before adding the new file extension to the end." +" by Christian Birchinger \n" +"based on the XMMS plugin by HÃ¥vard KvÃ¥l " msgstr "" +" am Christian Birchinger \n" +" tarddu gan yr XMMS modiwl am HÃ¥vard KvÃ¥l " -#: src/filewriter/filewriter.c:588 -msgid "Prepend track number to filename" -msgstr "" +#: src/null/null.c:68 +msgid "About Null Output" +msgstr "Ynghylch Ategyn Allwyn Null" -#: src/filewriter/mp3.c:710 +#: src/null/null.c:94 #, fuzzy -msgid "MP3 Configuration" -msgstr "Ffurfweddiad TiMidity" - -#: src/filewriter/mp3.c:737 -msgid "Algorithm Quality:" -msgstr "" +msgid "Null output preferences" +msgstr "Null ategyn allbwn" -#: src/filewriter/mp3.c:759 -msgid "" -"best/slowest:0;\n" -"worst/fastest:9;\n" -"recommended:2;\n" -"default:5;" +#: src/null/null.c:105 +msgid "Run in real time" msgstr "" -#: src/filewriter/mp3.c:767 +#: src/oss4/configure.c:89 #, fuzzy -msgid "Output Samplerate:" -msgstr "Graddfa samplo:" +msgid "1. Default device" +msgstr "Dyfais PCM rhagosodedig (%s)" -#: src/filewriter/mp3.c:778 src/filewriter/mp3.c:919 +#: src/oss4/configure.c:151 #, fuzzy -msgid "Auto" -msgstr "Ynghylch" +msgid "OSS4 Output Plugin Preferences" +msgstr "Ynghylch Ategyn ESounD" -#: src/filewriter/mp3.c:800 -#, fuzzy -msgid "(Hz)" -msgstr "Hz" +#: src/oss4/configure.c:163 src/OSS/configure.c:203 +msgid "Audio device:" +msgstr "Dyfais sain:" -#: src/filewriter/mp3.c:812 -msgid "Bitrate / Compression ratio:" -msgstr "" +#: src/oss4/configure.c:189 src/OSS/configure.c:226 src/OSS/configure.c:269 +msgid "Use alternate device:" +msgstr "Defnyddiwr ddyfais arall:" -#: src/filewriter/mp3.c:838 -#, fuzzy -msgid "Bitrate (kbps):" -msgstr "Didradd:" +#: src/oss4/configure.c:202 +msgid "Save volume between sessions" +msgstr "" -#: src/filewriter/mp3.c:879 -msgid "Compression ratio:" +#: src/oss4/configure.c:206 +msgid "Enable format conversions made by the OSS software." msgstr "" -#: src/filewriter/mp3.c:909 +#: src/oss4/plugin.c:51 #, fuzzy -msgid "Audio Mode:" -msgstr "Dyfais sain:" +msgid "About OSS4 Plugin" +msgstr "Ynghylch Ategyn ESounD" -#: src/filewriter/mp3.c:924 +#: src/oss4/plugin.c:52 #, fuzzy -msgid "Joint-Stereo" -msgstr "Stereo ar y cyd" - -#: src/filewriter/mp3.c:967 -#, fuzzy -msgid "Misc:" -msgstr "Disgo" - -#: src/filewriter/mp3.c:978 -msgid "Enforce strict ISO complience" +msgid "" +"OSS4 Output Plugin for Audacious\n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"I would like to thank people on #audacious, especially Tony Vroon and John " +"Lindgren and of course the authors of the previous OSS plugin.\n" +"\n" +"This program is free software: you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation, either version 3 of the License, or (at your option) " +"any later version.\n" +"\n" +"This program 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 General Public License for " +"more details.\n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"this program. If not, see .\n" msgstr "" +"Ategyn ESounD XMMS\n" +"\n" +" Mae'r rhaglen hwn yn feddalwedd rhydd; cewch ei ailddosbarthu a/neu\n" +"ei newid o dan amodau'r Drwydded Gyhoeddus Gyffredinol GNU fel y'i\n" +"cyhoeddwyd gan y Free Software Foundation; un ai fersiwn 2 o'r\n" +"drwydded neu yn ôl eich dewis) unrhyw fersiwn arall.\n" +"\n" +"Mae'r rhaglen yn cael ei ddosbarthu yn y gobaith y byddwch yn ei gael\n" +"yn ddefnyddiol, on HEB UNRHYW WARANT; heb hyd yn oed awgrym\n" +"o warant MASNACHOL neu ADDASRWYDD AR GYFER UNRHYW\n" +"BWRPAS. Gw. y drwydded Gyhoeddus Gyffredin am ragor o wybodaeth.\n" +"\n" +"Dylech fod wedi derbyn copi o'r Drwydded gyda'r rhaglen; os nad cysylltwch\n" +"â 'r Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,\n" +" MA 02111-1307,\n" +"USA." -#: src/filewriter/mp3.c:989 +#: src/oss4/utils.c:204 #, fuzzy -msgid "Error protection" -msgstr "Amddiffyn Gwall:" +msgid "OSS4 error" +msgstr "Terror" -#: src/filewriter/mp3.c:1001 -msgid "Adds 16 bit checksum to every frame" -msgstr "" +#: src/OSS/configure.c:146 +#, c-format +msgid "Default (%s)" +msgstr "Rhagosodedig (%s)" -#: src/filewriter/mp3.c:1006 src/filewriter/vorbis.c:247 -#: src/modplug/gui/interface.cxx:320 -msgid "Quality" -msgstr "" +#: src/OSS/configure.c:162 src/skins/ui_manager.c:456 +#: src/skins/ui_manager.c:477 +msgid "Default" +msgstr "Rhagosodedig" -#: src/filewriter/mp3.c:1018 -msgid "Enable VBR/ABR" -msgstr "" +#: src/OSS/configure.c:187 +msgid "OSS Driver configuration" +msgstr "Ffurfweddu'r Gyrrwr OSS" -#: src/filewriter/mp3.c:1030 -msgid "Type:" -msgstr "" +#: src/OSS/configure.c:290 +msgid "Devices" +msgstr "Dyfeisiau" -#: src/filewriter/mp3.c:1041 -msgid "Variable bitrate" -msgstr "" +#: src/OSS/configure.c:292 +msgid "Buffering:" +msgstr "Byffyru:" -#: src/filewriter/mp3.c:1053 -msgid "Average bitrate" -msgstr "" +#: src/OSS/configure.c:305 +msgid "Pre-buffer (percent):" +msgstr "Cyn fyffer (y cant):" -#: src/filewriter/mp3.c:1067 -#, fuzzy -msgid "VBR Options:" -msgstr "Dewisiadau:" +#: src/OSS/configure.c:316 +msgid "Buffering" +msgstr "Byffyru:" -#: src/filewriter/mp3.c:1083 -#, fuzzy -msgid "Minimum bitrate (kbps):" -msgstr "Didradd:" +#: src/OSS/configure.c:317 +msgid "Mixer Settings:" +msgstr "Gosodiadau Cymysgu" -#: src/filewriter/mp3.c:1119 -msgid "Maximum bitrate (kbps):" -msgstr "" +#: src/OSS/configure.c:323 +msgid "Volume controls Master not PCM" +msgstr "Nid yw'r Prif reolwr sain yn PCM" -#: src/filewriter/mp3.c:1151 -msgid "Strictly enforce minimum bitrate" -msgstr "" +#: src/OSS/configure.c:329 +msgid "Mixer" +msgstr "Cymysgwr" + +#: src/OSS/OSS.c:40 +msgid "About OSS Driver" +msgstr "Ynghylch Gyrrwr OSS" -#: src/filewriter/mp3.c:1153 +#: src/OSS/OSS.c:41 msgid "" -"For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/" -"mp3 player)" +"Audacious OSS Driver\n" +"\n" +" This program is free software; you can redistribute it and/or modify\n" +"it under the terms of the GNU General Public License as published by\n" +"the Free Software Foundation; either version 2 of the License, or\n" +"(at your option) any later version.\n" +"\n" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +"\n" +"You should have received a copy of the GNU General Public License\n" +"along with this program; if not, write to the Free Software\n" +"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" +"USA." msgstr "" +"Gyrrwr OSS Audacious\n" +"\n" +" Mae'r rhaglen hwn yn feddalwedd rhydd; cewch ei ailddosbarthu a/neu\n" +"ei newid o dan amodau'r Drwydded Gyhoeddus Gyffredinol GNU fel y'i\n" +"cyhoeddwyd gan y Free Software Foundation; un ai fersiwn 2 o'r\n" +"drwydded neu yn ôl eich dewis) unrhyw fersiwn arall.\n" +"\n" +"Mae'r rhaglen yn cael ei ddosbarthu yn y gobaith y byddwch yn ei gael\n" +"yn ddefnyddiol, on HEB UNRHYW WARANT; heb hyd yn oed awgrym\n" +"o warant MASNACHOL neu ADDASRWYDD AR GYFER UNRHYW\n" +"BWRPAS. Gw. y drwydded Gyhoeddus Gyffredin am ragor o wybodaeth.\n" +"\n" +"Dylech fod wedi derbyn copi o'r Drwydded gyda'r rhaglen; os nad cysylltwch\n" +"â 'r Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,\n" +" MA 02111-1307,\n" +"USA." -#: src/filewriter/mp3.c:1166 +#: src/pulse_audio/pulse_audio.c:687 #, fuzzy -msgid "ABR Options:" -msgstr "Dewisiadau:" - -#: src/filewriter/mp3.c:1176 -msgid "Average bitrate (kbps):" -msgstr "" - -#: src/filewriter/mp3.c:1213 -msgid "VBR quality level:" -msgstr "" +msgid "About Audacious PulseAudio Output Plugin" +msgstr "Ategyn Allbwn CoreAudio" -#: src/filewriter/mp3.c:1228 +#: src/pulse_audio/pulse_audio.c:688 +#, fuzzy msgid "" -"highest:0;\n" -"lowest:9;\n" -"default:4;" +"Audacious PulseAudio Output Plugin\n" +"\n" +" This program is free software; you can redistribute it and/or modify\n" +"it under the terms of the GNU General Public License as published by\n" +"the Free Software Foundation; either version 2 of the License, or\n" +"(at your option) any later version.\n" +"\n" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +"\n" +"You should have received a copy of the GNU General Public License\n" +"along with this program; if not, write to the Free Software\n" +"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" +"USA." msgstr "" +"Ategyn ESounD XMMS\n" +"\n" +" Mae'r rhaglen hwn yn feddalwedd rhydd; cewch ei ailddosbarthu a/neu\n" +"ei newid o dan amodau'r Drwydded Gyhoeddus Gyffredinol GNU fel y'i\n" +"cyhoeddwyd gan y Free Software Foundation; un ai fersiwn 2 o'r\n" +"drwydded neu yn ôl eich dewis) unrhyw fersiwn arall.\n" +"\n" +"Mae'r rhaglen yn cael ei ddosbarthu yn y gobaith y byddwch yn ei gael\n" +"yn ddefnyddiol, on HEB UNRHYW WARANT; heb hyd yn oed awgrym\n" +"o warant MASNACHOL neu ADDASRWYDD AR GYFER UNRHYW\n" +"BWRPAS. Gw. y drwydded Gyhoeddus Gyffredin am ragor o wybodaeth.\n" +"\n" +"Dylech fod wedi derbyn copi o'r Drwydded gyda'r rhaglen; os nad cysylltwch\n" +"â 'r Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,\n" +" MA 02111-1307,\n" +"USA." -#: src/filewriter/mp3.c:1236 -msgid "Don't write Xing VBR header" -msgstr "" +#: src/resample/plugin.c:91 +#, fuzzy +msgid "About Sample Rate Converter Plugin" +msgstr "Ynghylch Ategyn ESounD" -#: src/filewriter/mp3.c:1250 -msgid "VBR/ABR" +#: src/resample/plugin.c:146 +msgid "Sample Rate Converter Preferences" msgstr "" -#: src/filewriter/mp3.c:1262 -msgid "Frame params:" +#: src/resample/plugin.c:158 +msgid "Rate mappings:" msgstr "" -#: src/filewriter/mp3.c:1274 -msgid "Mark as copyright" +#: src/resample/plugin.c:181 +msgid "All others:" msgstr "" -#: src/filewriter/mp3.c:1285 -msgid "Mark as original" +#: src/resample/plugin.c:193 +msgid "Method:" msgstr "" -#: src/filewriter/mp3.c:1297 -#, fuzzy -msgid "ID3 params:" -msgstr "Tagiau ID3:" - -#: src/filewriter/mp3.c:1308 -msgid "Force addition of version 2 tag" +#: src/scrobbler/configure.c:128 src/scrobbler/configure.c:204 +msgid "Change password" msgstr "" -#: src/filewriter/mp3.c:1318 -msgid "Only add v1 tag" -msgstr "" +#: src/scrobbler/configure.c:150 +msgid "Services" +msgstr "Gwasanaethau" -#: src/filewriter/mp3.c:1325 -msgid "Only add v2 tag" -msgstr "" +#: src/scrobbler/configure.c:172 +msgid "Username:" +msgstr "Enw Defnyddiwr:" -#: src/filewriter/mp3.c:1346 -#, fuzzy -msgid "Tags" -msgstr "Tango" +#: src/scrobbler/configure.c:178 +msgid "Password:" +msgstr "Cyfrinair:" -#: src/filewriter/vorbis.c:240 +#: src/scrobbler/configure.c:186 #, fuzzy -msgid "Vorbis Encoder Configuration" -msgstr "Ffurfweddiad Disk Writer" +msgid "Scrobbler URL:" +msgstr "Ategyn Scrobbler" -#: src/filewriter/vorbis.c:260 -msgid "Quality level (0 - 10):" -msgstr "" +#: src/scrobbler/configure.c:218 +msgid "Last.FM" +msgstr "Last.FM" -#: src/flacng/plugin.c:457 +#: src/scrobbler/configure.c:262 #, fuzzy -msgid "FLAC Audio Plugin " -msgstr "Ategynnau Sain FLAC" +msgid "Scrobbler" +msgstr "Ategyn Scrobbler" -#: src/flacng/plugin.c:458 +#: src/scrobbler/plugin.c:213 msgid "" +"Audacious AudioScrobbler Plugin\n" "\n" -"\n" -"Original code by\n" -"Ralf Ertzinger \n" -"\n" -"http://www.skytale.net/projects/bmp-flac2/" +"Originally created by Audun Hove and Pipian \n" msgstr "" -#: src/flacng/plugin.c:464 +#: src/scrobbler/plugin.c:215 +msgid "About Scrobbler Plugin" +msgstr "Ynghylch Ategyn Scrobbler" + +#: src/sdlout/plugin.c:58 #, fuzzy -msgid "About FLAC Audio Plugin" -msgstr "Ategynnau Sain FLAC" +msgid "About SDL Output Plugin" +msgstr "Ynghylch Ategyn Allbwn JACK 0.17" -#: src/gnomeshortcuts/gnomeshortcuts.c:306 +#: src/sdlout/plugin.c:78 #, fuzzy -msgid "About Gnome Shortcut Plugin" -msgstr "Ynghylch Ategyn ESounD" +msgid "SDL error" +msgstr "Terror" -#: src/gnomeshortcuts/gnomeshortcuts.c:307 -msgid "" -"Gnome Shortcut Plugin\n" -"Let's you control the player with Gnome's shortcuts.\n" -"\n" -"Copyright (C) 2007-2008 Sascha Hlusiak \n" -"\n" -msgstr "" +#: src/sid/xs_about.c:84 +#, c-format +msgid "About %s" +msgstr "Ynghylch %s" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:273 -msgid "Open Files" -msgstr "" +#: src/sid/xs_about.c:214 src/sid/xs_interface.c:1825 +msgid "Close" +msgstr "Cau" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 +#: src/sid/xs_config.c:326 #, fuzzy -msgid "Add Files" -msgstr "Ychwaneg gyrrwr" +msgid " Error" +msgstr "Gwall" -#: src/gntui/gntui.c:271 -#, fuzzy -msgid "Audacious2" -msgstr "%s - Audacious" +#: src/sid/xs_config.c:326 +msgid "OK" +msgstr "Iawn" -#: src/gntui/gntui.c:312 -msgid "gnt interface" -msgstr "" +#: src/sid/xs_fileinfo.c:151 +#, fuzzy +msgid "General info" +msgstr "Cyffredinol" -#: src/gtkui/actions.c:257 src/skins/ui_main.c:818 -msgid "Can't jump to time when no track is being played.\n" +#: src/sid/xs_fileinfo.c:164 +#, c-format +msgid "Tune #%i: " msgstr "" -#: src/gtkui/actions.c:272 src/gtkui/ui_manager.c:204 -#: src/gtkui/ui_manager.c:205 src/skins/ui_main.c:833 -#: src/skins/ui_manager.c:410 src/skins/ui_manager.c:411 -msgid "Jump to Time" -msgstr "" +#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 +#, fuzzy, c-format +msgid "Couldn't find pixmap file: %s" +msgstr "Meth agor dyfais ffeil MIDI" -#: src/gtkui/actions.c:289 src/skins/ui_main.c:854 +#: src/sid/xs_interface.c:234 #, fuzzy -msgid "minutes:seconds" -msgstr "eiliad" +msgid "Audacious-SID configuration" +msgstr "Audacious OSD - ffurfweddiad" -#: src/gtkui/actions.c:299 src/skins/ui_main.c:864 +#: src/sid/xs_interface.c:270 #, fuzzy -msgid "Track length:" -msgstr "Cynnydd trac:" - -#: src/gtkui/actions.c:610 src/skins/ui_playlist.c:648 -#, c-format -msgid "Error writing playlist \"%s\": %s" -msgstr "" - -#: src/gtkui/actions.c:625 src/skins/ui_playlist.c:670 -#, c-format -msgid "%s already exist. Continue?" -msgstr "" +msgid "8-bit" +msgstr "8 did" -#: src/gtkui/actions.c:651 src/skins/ui_manager.c:214 +#: src/sid/xs_interface.c:277 #, fuzzy -msgid "Export Playlist" -msgstr "Modd chwarae:" +msgid "16-bit" +msgstr "16 did" -#: src/gtkui/actions.c:723 src/skins/ui_manager.c:211 +#: src/sid/xs_interface.c:284 #, fuzzy -msgid "Import Playlist" -msgstr "Modd chwarae:" +msgid "Resolution:" +msgstr "Cydraniad:" -#: src/gtkui/ui_gtk.c:72 -msgid "GTK Interface" +#: src/sid/xs_interface.c:315 +msgid "Autopanning" msgstr "" -#: src/gtkui/ui_gtk.c:281 src/skins/ui_main.c:388 -#, c-format -msgid "%s - Audacious" -msgstr "%s - Audacious" +#: src/sid/xs_interface.c:322 +msgid "Channels:" +msgstr "Sianeli:" -#: src/gtkui/ui_gtk.c:287 src/skins/ui_main.c:390 src/skins/ui_main.c:2166 +#: src/sid/xs_interface.c:366 #, fuzzy -msgid "Audacious" -msgstr "%s - Audacious" - -#: src/gtkui/ui_manager.c:35 src/gtkui/ui_manager.c:36 -#: src/skins/ui_manager.c:53 src/skins/ui_manager.c:54 -msgid "Stop after Current Song" -msgstr "" +msgid "Samplerate:" +msgstr "Graddfa samplo:" -#: src/gtkui/ui_manager.c:38 src/gtkui/ui_manager.c:39 -#: src/skins/ui_manager.c:59 src/skins/ui_manager.c:60 +#: src/sid/xs_interface.c:383 #, fuzzy -msgid "Repeat" -msgstr "Beat" +msgid "Use oversampling" +msgstr "Samplo" -#: src/gtkui/ui_manager.c:41 src/gtkui/ui_manager.c:42 -#: src/skins/ui_manager.c:62 src/skins/ui_manager.c:63 -msgid "Shuffle" +#: src/sid/xs_interface.c:394 +msgid "Factor:" msgstr "" -#: src/gtkui/ui_manager.c:44 src/gtkui/ui_manager.c:45 -#: src/skins/ui_manager.c:65 src/skins/ui_manager.c:66 -msgid "No Playlist Advance" +#: src/sid/xs_interface.c:406 +msgid "Large factors require more CPU-power" msgstr "" -#: src/gtkui/ui_manager.c:47 +#: src/sid/xs_interface.c:412 #, fuzzy -msgid "Show playlists" -msgstr "Modd chwarae:" +msgid "Oversampling:" +msgstr "Samplo" -#: src/gtkui/ui_manager.c:48 -msgid "Show/hide playlists" +#: src/sid/xs_interface.c:417 +msgid "Audio" msgstr "" -#: src/gtkui/ui_manager.c:50 -msgid "Show infoarea" +#: src/sid/xs_interface.c:445 +msgid "Force speed" msgstr "" -#: src/gtkui/ui_manager.c:51 -msgid "Show/hide infoarea" +#: src/sid/xs_interface.c:449 +msgid "" +"If enabled, this option \"forces\" the emulation engine to use the selected " +"clock speed/frequency. Otherwise the speed is determined from played file " +"itself." msgstr "" -#: src/gtkui/ui_manager.c:53 -#, fuzzy -msgid "Show main menu" -msgstr "Dangos ffenestr rhwydwaith" - -#: src/gtkui/ui_manager.c:54 -msgid "Show/hide main menu" +#: src/sid/xs_interface.c:451 +msgid "PAL (50 Hz)" msgstr "" -#: src/gtkui/ui_manager.c:56 -#, fuzzy -msgid "Show statusbar" -msgstr "Statws" - -#: src/gtkui/ui_manager.c:57 -msgid "Show/hide statusbar" +#: src/sid/xs_interface.c:455 +msgid "" +"PAL is the european TV standard, which uses 50Hz vertical refresh frequency. " +"Most of SID-tunes have been made for PAL computers." msgstr "" -#: src/gtkui/ui_manager.c:69 src/gtkui/ui_manager.c:70 -#: src/skins/ui_manager.c:170 src/skins/ui_manager.c:171 -#, fuzzy -msgid "Pause" -msgstr "Chwarae" - -#: src/gtkui/ui_manager.c:72 src/gtkui/ui_manager.c:73 src/hotkey/gui.c:73 -#: src/skins/ui_manager.c:173 src/skins/ui_manager.c:174 -#, fuzzy -msgid "Stop" -msgstr "Synthpop" +#: src/sid/xs_interface.c:459 +msgid "NTSC (60 Hz)" +msgstr "" -#: src/gtkui/ui_manager.c:75 src/gtkui/ui_manager.c:76 -#: src/skins/ui_manager.c:176 src/skins/ui_manager.c:177 -#, fuzzy -msgid "Previous" -msgstr "Primus" +#: src/sid/xs_interface.c:463 +msgid "" +"NTSC is the TV standard with 60Hz vertical refresh rate (and other features " +"that differ from PAL). It is mainly used in United States, Japan and certain " +"other countries." +msgstr "" -#: src/gtkui/ui_manager.c:78 src/gtkui/ui_manager.c:79 -#: src/skins/ui_manager.c:179 src/skins/ui_manager.c:180 +#: src/sid/xs_interface.c:467 #, fuzzy -msgid "Next" -msgstr "Testun" +msgid "Clock speed:" +msgstr "Chwarae cyflymedd" -#: src/gtkui/ui_manager.c:84 src/skins/ui_manager.c:197 +#: src/sid/xs_interface.c:484 #, fuzzy -msgid "Playlist" -msgstr "Modd chwarae:" +msgid "Force model" +msgstr "Enwau'r Traciau:" -#: src/gtkui/ui_manager.c:86 src/gtkui/ui_manager.c:87 -#: src/skins/ui_manager.c:199 src/skins/ui_manager.c:200 -msgid "New Playlist" +#: src/sid/xs_interface.c:488 +msgid "" +"If enabled, this option \"forces\" the emulation engine to use the selected " +"SID-chip model. Otherwise the preferred SID model is determined from the " +"file (if PSIDv2NG type) or if not available, this setting is used." msgstr "" -#: src/gtkui/ui_manager.c:89 src/gtkui/ui_manager.c:90 -#: src/skins/ui_manager.c:208 src/skins/ui_manager.c:209 -msgid "Delete Playlist" +#: src/sid/xs_interface.c:490 +msgid "MOS 6581" msgstr "" -#: src/gtkui/ui_manager.c:92 -#, fuzzy -msgid "Import Playlist ..." -msgstr "Modd chwarae:" +#: src/sid/xs_interface.c:494 +msgid "" +"MOS/CSG 6581 is the earlier major version of SID chip. It differs from 8580 " +"in few ways, having much fuller filter (which, due to design error, is never " +"same between two different SID-chips) and has the \"volume adjustment bug\", " +"which enables playing of digital samples." +msgstr "" -#: src/gtkui/ui_manager.c:93 src/skins/ui_manager.c:212 -msgid "Loads a playlist file into the selected playlist." +#: src/sid/xs_interface.c:498 +msgid "MOS 8580" msgstr "" -#: src/gtkui/ui_manager.c:95 +#: src/sid/xs_interface.c:505 #, fuzzy -msgid "Export Playlist ..." +msgid "SID model:" msgstr "Modd chwarae:" -#: src/gtkui/ui_manager.c:96 src/skins/ui_manager.c:215 -msgid "Saves the selected playlist." +#: src/sid/xs_interface.c:522 +msgid "SIDPlay 1 (frame-based)" msgstr "" -#: src/gtkui/ui_manager.c:98 src/skins/ui_manager.c:217 -#, fuzzy -msgid "Save All Playlists" -msgstr "Modd chwarae:" - -#: src/gtkui/ui_manager.c:99 src/skins/ui_manager.c:218 +#: src/sid/xs_interface.c:526 msgid "" -"Saves all the playlists that are open. Note that this is done automatically " -"when Audacious quits." +"Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most " +"cases, though." msgstr "" -#: src/gtkui/ui_manager.c:103 -msgid "Refresh" +#: src/sid/xs_interface.c:530 +msgid "SIDPlay 2 (cycle-based)" msgstr "" -#: src/gtkui/ui_manager.c:104 src/skins/ui_manager.c:223 -msgid "Refreshes metadata associated with a playlist entry." +#: src/sid/xs_interface.c:534 +msgid "" +"Use libSIDPlay 2.x emulation, which requires powerful CPU due to more exact " +"emulation." msgstr "" -#: src/gtkui/ui_manager.c:107 -#, fuzzy -msgid "Playlist Manager" -msgstr "Modd chwarae:" - -#: src/gtkui/ui_manager.c:108 src/skins/ui_manager.c:227 -msgid "Opens the playlist manager." +#: src/sid/xs_interface.c:538 +msgid "Emulation library selection:" msgstr "" -#: src/gtkui/ui_manager.c:111 -msgid "Add URL ..." +#: src/sid/xs_interface.c:555 +msgid "Real C64 (SIDPlay 2 only)" msgstr "" -#: src/gtkui/ui_manager.c:112 src/skins/ui_manager.c:237 -msgid "Adds a remote track to the playlist." +#: src/sid/xs_interface.c:562 +msgid "Bank switching" msgstr "" -#: src/gtkui/ui_manager.c:115 -#, fuzzy -msgid "Add Files ..." -msgstr "Ychwaneg gyrrwr" +#: src/sid/xs_interface.c:569 +msgid "Transparent ROM" +msgstr "" -#: src/gtkui/ui_manager.c:116 src/skins/ui_manager.c:241 -msgid "Adds files to the playlist." +#: src/sid/xs_interface.c:576 +msgid "PlaySID environment" msgstr "" -#: src/gtkui/ui_manager.c:119 src/skins/ui_manager.c:264 +#: src/sid/xs_interface.c:583 #, fuzzy -msgid "Remove All" -msgstr "Tynnu gyrrwr" +msgid "Memory mode:" +msgstr "Modd chwarae:" -#: src/gtkui/ui_manager.c:120 src/skins/ui_manager.c:265 -msgid "Removes all entries from the playlist." +#: src/sid/xs_interface.c:588 +msgid "Emu#1" msgstr "" -#: src/gtkui/ui_manager.c:123 src/skins/ui_manager.c:290 -msgid "Remove Unselected" +#: src/sid/xs_interface.c:611 +msgid "Optimization mode (faster, inaccurate)" msgstr "" -#: src/gtkui/ui_manager.c:124 src/skins/ui_manager.c:291 -msgid "Remove unselected entries from the playlist." +#: src/sid/xs_interface.c:615 +msgid "" +"This setting can be used to enable libSIDPlay2's \"optimization mode\", " +"which in downgrades the emulation from cycle-exact to something similar to " +"frame-exact. The result is lower CPU usage, but worse accuracy." msgstr "" -#: src/gtkui/ui_manager.c:127 src/skins/ui_manager.c:294 -msgid "Remove Selected" +#: src/sid/xs_interface.c:617 +msgid "reSID-emulation" msgstr "" -#: src/gtkui/ui_manager.c:128 src/skins/ui_manager.c:295 -msgid "Remove selected entries from the playlist." +#: src/sid/xs_interface.c:621 +msgid "" +"reSID is the software SID-chip simulator based on SID reverse-engineering, " +"created by Dag Lem. It is probably the closest thing to real SID available " +"as software-only emulation." msgstr "" -#: src/gtkui/ui_manager.c:131 -#, fuzzy -msgid "Sort" -msgstr "Porth" - -#: src/gtkui/ui_manager.c:132 src/skins/ui_manager.c:330 -#: src/skins/ui_manager.c:360 -#, fuzzy -msgid "By Track Number" -msgstr "Rhif y Trac:" - -#: src/gtkui/ui_manager.c:134 src/skins/ui_manager.c:278 -#: src/skins/ui_manager.c:306 src/skins/ui_manager.c:336 -#, fuzzy -msgid "By Title" -msgstr "Teitl" - -#: src/gtkui/ui_manager.c:136 src/skins/ui_manager.c:314 -#: src/skins/ui_manager.c:344 -#, fuzzy -msgid "By Artist" -msgstr "Artist:" - -#: src/gtkui/ui_manager.c:138 src/skins/ui_manager.c:310 -#: src/skins/ui_manager.c:340 -#, fuzzy -msgid "By Album" -msgstr "Albwm:" - -#: src/gtkui/ui_manager.c:140 -#, fuzzy -msgid "By File Path" -msgstr "Enw ffeil" +#: src/sid/xs_interface.c:625 +msgid "HardSID" +msgstr "" -#: src/gtkui/ui_manager.c:142 -msgid "Reverse Order" +#: src/sid/xs_interface.c:629 +msgid "" +"HardSID is a EISA/PCI card for PC-compatibles, which can be fitted with a " +"real SID-chip. Software can be used to control the HardSID and combined with " +"software emulation of rest of C64 via libSIDPlay2 HardSID can be used to " +"achieve \"near 100%\" similarity to real C64. For more information, see " +"http://www.hardsid.com/" msgstr "" -#: src/gtkui/ui_manager.c:147 -msgid "Output" +#: src/sid/xs_interface.c:633 +msgid "SIDPlay 2 options:" msgstr "" -#: src/gtkui/ui_manager.c:149 src/modplug/gui/interface.cxx:572 -msgid "Effects" +#: src/sid/xs_interface.c:650 +msgid "Fast (nearest neighbour)" msgstr "" -#: src/gtkui/ui_manager.c:151 -msgid "Equalizer" +#: src/sid/xs_interface.c:654 +msgid "" +"Fastest and also worst sounding sampling method, simply picks nearest " +"neighbouring sample." msgstr "" -#: src/gtkui/ui_manager.c:156 src/skins/ui_manager.c:232 -msgid "View" +#: src/sid/xs_interface.c:658 +msgid "Linear interpolation" msgstr "" -#: src/gtkui/ui_manager.c:157 src/skins/ui_manager.c:233 -msgid "Interface" +#: src/sid/xs_interface.c:662 +msgid "" +"Uses linear interpolation between samples, yielding higher audio quality " +"with less sampling noise." msgstr "" -#: src/gtkui/ui_manager.c:164 src/skins/ui_manager.c:370 +#: src/sid/xs_interface.c:673 #, fuzzy -msgid "File" -msgstr "Enw ffeil" - -#: src/gtkui/ui_manager.c:167 -#, fuzzy -msgid "Components" -msgstr "Sylw:" +msgid "Resampling (FIR)" +msgstr "Samplo" -#: src/gtkui/ui_manager.c:169 src/gtkui/ui_manager.c:172 -#: src/skins/ui_manager.c:375 src/skins/ui_manager.c:378 +#: src/sid/xs_interface.c:680 #, fuzzy -msgid "View Track Details" -msgstr "defnyddiwch Cynnydd/Brig Trac" +msgid "reSID sampling options:" +msgstr "Graddfa Samplo" -#: src/gtkui/ui_manager.c:170 src/gtkui/ui_manager.c:173 -#: src/skins/ui_manager.c:376 src/skins/ui_manager.c:379 -msgid "View track details" +#: src/sid/xs_interface.c:685 +msgid "Emu#2" msgstr "" -#: src/gtkui/ui_manager.c:175 src/gtkui/ui_manager.c:176 -#: src/skins/ui_manager.c:381 src/skins/ui_manager.c:382 -#, fuzzy -msgid "About Audacious" -msgstr "Ynghylch Audacious Ategyn LIRC" - -#: src/gtkui/ui_manager.c:178 -msgid "Open Files ..." +#: src/sid/xs_interface.c:697 +msgid "Emulate filters" msgstr "" -#: src/gtkui/ui_manager.c:179 src/skins/ui_manager.c:385 -msgid "Load and play a file" +#: src/sid/xs_interface.c:701 +msgid "" +"This option enables emulation of SID filter. The filter is an essential part " +"of SID's sound capacity, but accurate emulation of it may require quite much " +"CPU power. However, if filter emulation is disabled, tunes won't sound " +"authentic at all if they utilize the filter." msgstr "" -#: src/gtkui/ui_manager.c:181 -msgid "Open URL ..." +#: src/sid/xs_interface.c:726 +msgid "FS" msgstr "" -#: src/gtkui/ui_manager.c:182 src/skins/ui_manager.c:388 -msgid "Play media from the selected location" +#: src/sid/xs_interface.c:743 +msgid "FM" msgstr "" -#: src/gtkui/ui_manager.c:184 src/skins/ui_manager.c:390 -msgid "Plugin services" +#: src/sid/xs_interface.c:760 +msgid "FT" msgstr "" -#: src/gtkui/ui_manager.c:186 src/skins/ui_manager.c:392 -msgid "Preferences" +#: src/sid/xs_interface.c:771 +msgid "Reset values" msgstr "" -#: src/gtkui/ui_manager.c:187 src/skins/ui_manager.c:393 -msgid "Open preferences window" +#: src/sid/xs_interface.c:776 +msgid "SIDPlay1" msgstr "" -#: src/gtkui/ui_manager.c:189 src/skins/ui_manager.c:395 -msgid "_Quit" +#: src/sid/xs_interface.c:817 +#, fuzzy +msgid "Export" +msgstr "Porth" + +#: src/sid/xs_interface.c:825 +msgid "Use" msgstr "" -#: src/gtkui/ui_manager.c:190 src/skins/ui_manager.c:396 +#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:447 #, fuzzy -msgid "Quit Audacious" -msgstr "%s - Audacious" +msgid "Save" +msgstr "Rave" -#: src/gtkui/ui_manager.c:192 src/gtkui/ui_manager.c:193 -#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 -msgid "Set A-B" -msgstr "" +#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:446 +#, fuzzy +msgid "Import" +msgstr "Porth" -#: src/gtkui/ui_manager.c:195 src/gtkui/ui_manager.c:196 -#: src/skins/ui_manager.c:401 src/skins/ui_manager.c:402 -msgid "Clear A-B" -msgstr "" +#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:448 +#, fuzzy +msgid "Delete" +msgstr "Rhagosodedig" -#: src/gtkui/ui_manager.c:198 src/gtkui/ui_manager.c:199 -#: src/skins/ui_manager.c:404 src/skins/ui_manager.c:405 -msgid "Jump to Playlist Start" -msgstr "" +#: src/sid/xs_interface.c:863 +#, fuzzy +msgid "Filter curve:" +msgstr "Maint ffeil:" -#: src/gtkui/ui_manager.c:201 src/gtkui/ui_manager.c:202 src/hotkey/gui.c:80 -#: src/skins/ui_manager.c:407 src/skins/ui_manager.c:408 -msgid "Jump to File" +#: src/sid/xs_interface.c:868 +msgid "SIDPlay2" msgstr "" -#: src/gtkui/ui_manager.c:207 src/skins/ui_manager.c:413 -msgid "Queue Toggle" +#: src/sid/xs_interface.c:874 +msgid "Filters" msgstr "" -#: src/gtkui/ui_manager.c:208 src/skins/ui_manager.c:414 -msgid "Enables/disables the entry in the playlist's queue." +#: src/sid/xs_interface.c:897 +msgid "Play at least for specified time" msgstr "" -#: src/gtkui/ui_manager.c:211 src/skins/ui_manager.c:417 -msgid "Copy" +#: src/sid/xs_interface.c:901 +msgid "" +"If enabled, the tune is played at least for the specified time, adding " +"silence to the end if necessary." msgstr "" -#: src/gtkui/ui_manager.c:214 src/skins/ui_manager.c:419 +#: src/sid/xs_interface.c:908 src/sid/xs_interface.c:962 +#: src/sid/xs_interface.c:1142 #, fuzzy -msgid "Cut" -msgstr "Cult" +msgid "Playtime:" +msgstr "Modd chwarae:" -#: src/gtkui/ui_manager.c:217 src/skins/ui_manager.c:421 -msgid "Paste" -msgstr "" +#: src/sid/xs_interface.c:921 src/sid/xs_interface.c:975 +#: src/sid/xs_interface.c:1155 +#, fuzzy +msgid "seconds" +msgstr "eiliad" -#: src/gtkui/ui_manager.c:220 src/skins/ui_manager.c:254 -msgid "Select All" +#: src/sid/xs_interface.c:928 +msgid "Minimum playtime:" msgstr "" -#: src/gtkui/ui_manager.c:221 src/skins/ui_manager.c:255 -msgid "Selects all of the playlist entries." +#: src/sid/xs_interface.c:945 +msgid "Play for specified time maximum" msgstr "" -#: src/gtkui/ui_manager.c:224 src/skins/ui_manager.c:258 -msgid "Select None" +#: src/sid/xs_interface.c:949 +msgid "" +"If enabled, tune is played until specified duration is reached (aka maximum " +"playtime)." msgstr "" -#: src/gtkui/ui_manager.c:225 src/skins/ui_manager.c:259 -msgid "Deselects all of the playlist entries." +#: src/sid/xs_interface.c:951 +msgid "Only when song length is unknown" msgstr "" -#: src/gtkui/ui_statusbar.c:91 src/skins/ui_main.c:609 -#, fuzzy -msgid "mono" -msgstr "Mono" - -#: src/gtkui/ui_statusbar.c:94 src/skins/ui_main.c:608 -#, fuzzy -msgid "stereo" -msgstr "Stereo" - -#: src/gtkui/ui_statusbar.c:97 -#, fuzzy, c-format -msgid "%d channels" -msgstr "Sianeli:" +#: src/sid/xs_interface.c:955 +msgid "" +"If enabled, the maximum playtime is applied only if song/tune length is not " +"known." +msgstr "" -#: src/gtkui/ui_statusbar.c:101 -#, c-format -msgid "%s: %d kbps, %d Hz, %s" +#: src/sid/xs_interface.c:982 +msgid "Maximum playtime:" msgstr "" -#: src/hotkey/gui.c:70 -msgid "Previous Track" +#: src/sid/xs_interface.c:999 +msgid "Use XSIDPLAY-compatible database" msgstr "" -#: src/hotkey/gui.c:72 -msgid "Pause/Resume" +#: src/sid/xs_interface.c:1003 +msgid "" +"This option enables using of XSIDPLAY compatible song length database. " +"(Refer to Audacious-SID documentation for more information)" msgstr "" -#: src/hotkey/gui.c:74 +#: src/sid/xs_interface.c:1010 #, fuzzy -msgid "Next Track" -msgstr "Cynnydd trac:" +msgid "DB-file:" +msgstr "Dyfais:" -#: src/hotkey/gui.c:75 -msgid "Forward 5 Seconds" +#: src/sid/xs_interface.c:1020 +msgid "Database path and filename" msgstr "" -#: src/hotkey/gui.c:76 -msgid "Rewind 5 Seconds" +#: src/sid/xs_interface.c:1027 +msgid "Browse for song length-database file" msgstr "" -#: src/hotkey/gui.c:77 -#, fuzzy -msgid "Mute" -msgstr "Dyddiad!" - -#: src/hotkey/gui.c:78 -#, fuzzy -msgid "Volume Up" -msgstr "Sain:(%)" +#: src/sid/xs_interface.c:1049 +msgid "Song length database:" +msgstr "" -#: src/hotkey/gui.c:79 +#: src/sid/xs_interface.c:1054 #, fuzzy -msgid "Volume Down" -msgstr "Sain:(%)" +msgid "Songlength" +msgstr "Hyd cân rhagosodedig:" -#: src/hotkey/gui.c:81 +#: src/sid/xs_interface.c:1072 #, fuzzy -msgid "Toggle Player Windows" -msgstr "/Toggle Decorations" +msgid "Override generic Tuplez format string" +msgstr "Diystyru'r teitlau cyffredinol" -#: src/hotkey/gui.c:82 -msgid "Show On-Screen-Display" +#: src/sid/xs_interface.c:1076 +msgid "" +"By enabling this option you can specify a custom Tuplez formatting string " +"for SID-files. The SID-plugin specific Tuplez tags are described shortly " +"below." msgstr "" -#: src/hotkey/gui.c:92 -#, fuzzy -msgid "(none)" -msgstr "Dim" +#: src/sid/xs_interface.c:1087 +msgid "Tuplez format string for SID-files" +msgstr "" -#: src/hotkey/gui.c:229 +#: src/sid/xs_interface.c:1090 msgid "" -"It is not recommended to bind the primary mouse buttons without " -"modificators.\n" +"SID-specific Tuplez fields:\n" "\n" -"Do you want to continue?" -msgstr "" - -#: src/hotkey/gui.c:231 -msgid "Binding mouse buttons" +"sid-format\t\t- Specific fileformat\n" +"sid-model\t\t- 6581 or 8580\n" +"sid-speed\t\t- Timing or speed: PAL/NTSC/etc.\n" +"\n" +"Other \"special\" fields set:\n" +"\n" +"subsong-num, subsong-id" msgstr "" -#: src/hotkey/gui.c:381 +#: src/sid/xs_interface.c:1098 #, fuzzy -msgid "Global Hotkey Plugin Configuration" -msgstr "Ffurfweddu Ategyn ESD" +msgid "Song title format:" +msgstr "Fformat y teitl:" + +#: src/sid/xs_interface.c:1125 +msgid "Add sub-tunes to playlist" +msgstr "" -#: src/hotkey/gui.c:397 +#: src/sid/xs_interface.c:1129 msgid "" -"Press a key combination inside a text field.\n" -"You can also bind mouse buttons." +"If enabled, sub-tunes of each file will be added to playlist. If disabled, " +"only the default sub-tune will be added." msgstr "" -#: src/hotkey/gui.c:402 -#, fuzzy -msgid "Hotkeys:" -msgstr "Gwesteiwr:" +#: src/sid/xs_interface.c:1131 +msgid "Only tunes with specified minimum duration" +msgstr "" + +#: src/sid/xs_interface.c:1135 +msgid "Only add sub-tunes that have a duration of at least specified time." +msgstr "" -#: src/hotkey/gui.c:421 +#: src/sid/xs_interface.c:1162 #, fuzzy -msgid "Action:" -msgstr "Hatena" +msgid "Sub-tune handling:" +msgstr "Rheolwr sain" -#: src/hotkey/gui.c:429 -msgid "Key Binding:" +#: src/sid/xs_interface.c:1179 +msgid "Use STIL database" +msgstr "" + +#: src/sid/xs_interface.c:1183 +msgid "" +"If this option is enabled (and the database & HVSC settings below are " +"correctly set), Audacious-SID will use and display additional information " +"from STIL database when HVSC SIDs are played." msgstr "" -#: src/hotkey/gui.c:660 +#: src/sid/xs_interface.c:1190 #, fuzzy -msgid "About Global Hotkey Plugin" -msgstr "Ynghylch Ategyn Scrobbler" +msgid "STIL file:" +msgstr "Teitl:" -#: src/hotkey/gui.c:661 +#: src/sid/xs_interface.c:1206 msgid "" -"Global Hotkey Plugin\n" -"Control the player with global key combinations or multimedia keys.\n" -"\n" -"Copyright (C) 2007-2008 Sascha Hlusiak \n" -"\n" -"Contributers include:\n" -"Copyright (C) 2006-2007 Vladimir Paskov \n" -"Copyright (C) 2000-2002 Ville Syrjälä \n" -"\t\t\tBryn Davies \n" -"\t\t\tJonathan A. Davis \n" -"\t\t\tJeremy Tan \n" -"\n" +"Path and filename of STIL database file (STIL.txt), usually found from " +"HVSC's DOCUMENTS-subdirectory." msgstr "" -#: src/jack/configure.c:71 -msgid "Connect to all available jack ports" -msgstr "" - -#: src/jack/configure.c:78 -msgid "Connect only the output ports" -msgstr "" - -#: src/jack/configure.c:85 -msgid "Connect to no ports" -msgstr "" - -#: src/jack/configure.c:103 -#, fuzzy -msgid "jack Plugin configuration" -msgstr "Ffurfweddu Ategyn ESD" - -#: src/jack/configure.c:121 -msgid "Connection mode:" -msgstr "" - -#: src/jack/configure.c:133 -#, fuzzy -msgid "Enable debug printing" -msgstr "Galluogi ReplayGain" - -#: src/jack/jack.c:437 -msgid "" -"XMMS jack Driver 0.17\n" -"\n" -"xmms-jack.sf.net\n" -"Chris Morgan\n" -"\n" -"Audacious port by\n" -"Giacomo Lozito from develia.org" -msgstr "" -"XMMS jack Driver 0.17\n" -"\n" -"xmms-jack.sf.net\n" -"Chris Morgan\n" -"\n" -"Audacious ategyn gan\n" -"Giacomo Lozito o develia.org" - -#: src/jack/jack.c:442 -msgid "About JACK Output Plugin 0.17" -msgstr "Ynghylch Ategyn Allbwn JACK 0.17" - -#: src/ladspa/ladspa.c:824 -msgid "This LADSPA plugin has no user controls" -msgstr "" - -#: src/ladspa/ladspa.c:865 src/ladspa/ladspa.c:952 -#, fuzzy -msgid "Name" -msgstr "Enw:" - -#: src/ladspa/ladspa.c:952 -msgid "UID" -msgstr "" - -#: src/ladspa/ladspa.c:1029 -msgid "Installed plugins" -msgstr "" - -#: src/ladspa/ladspa.c:1037 -msgid "Running plugins" -msgstr "" - -#: src/ladspa/ladspa.c:1052 -msgid "Add" -msgstr "" - -#: src/ladspa/ladspa.c:1055 -#, fuzzy -msgid "Remove" -msgstr "Tynnu gyrrwr" - -#: src/ladspa/ladspa.c:1066 -msgid "LADSPA Plugin Catalog" -msgstr "" - -#: src/lirc/about.c:63 -msgid "About LIRC Audacious Plugin" -msgstr "Ynghylch Audacious Ategyn LIRC" - -#: src/lirc/about.c:90 -msgid "LIRC Plugin " -msgstr "Ategyn LIRC" - -#: src/lirc/about.c:92 -msgid "" -"\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" -"\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" -msgstr "" - -#: src/lirc/interface.c:37 -#, fuzzy -msgid "LIRC plugin settings" -msgstr "Ategyn LIRC" - -#: src/lirc/interface.c:61 -msgid "Reconnect to LIRC server" -msgstr "" - -#: src/lirc/interface.c:68 -msgid "Timeout before reconnecting (seconds): " -msgstr "" - -#: src/lirc/interface.c:75 -msgid "Reconnect" -msgstr "" - -#: src/lirc/interface.c:79 -#, fuzzy -msgid "Connection" -msgstr "Lleoliad:" - -#: src/lirc/lirc.c:82 -#, c-format -msgid "%s: could not init LIRC support\n" -msgstr "%s: methu â ymgychwyn LIRC ateg\n" - -#: src/lirc/lirc.c:90 -#, c-format -msgid "" -"%s: could not read LIRC config file\n" -"%s: please read the documentation of LIRC\n" -"%s: how to create a proper config file\n" -msgstr "" -"%s: methu â darllen LIRC ffurfweddiad ffeil\n" -"%s: plesio darllen yn dogfennau am LIRC\n" -"%s: pa at creu y addas ffurfweddiad ffeil\n" - -#: src/lirc/lirc.c:117 -#, c-format -msgid "%s: trying to reconnect...\n" -msgstr "" - -#: src/lirc/lirc.c:332 -#, c-format -msgid "%s: unknown command \"%s\"\n" -msgstr "%s: gorchymyn anhysbys \"%s\"\n" - -#: src/lirc/lirc.c:342 -#, c-format -msgid "%s: disconnected from LIRC\n" -msgstr "%s: datgysylltu am LIRC\n" - -#: src/lirc/lirc.c:346 -#, c-format -msgid "%s: will try reconnect every %d seconds...\n" -msgstr "" - -#: src/lyricwiki/lyricwiki.c:244 -msgid "LyricWiki" -msgstr "" - -#: src/lyricwiki/lyricwiki.c:337 -msgid "" -"\n" -"No lyrics were found." -msgstr "" - -#: src/metronom/metronom.c:90 -#, fuzzy -msgid "About Metronom" -msgstr "Ynghylch" - -#: src/metronom/metronom.c:91 -msgid "" -"A Tact Generator by Martin Strauss \n" -"\n" -"To use it, add a URL: tact://beats*num/den\n" -"e.g. tact://77 to play 77 beats per minute\n" -"or tact://60*3/4 to play 60 bpm in 3/4 tacts" -msgstr "" - -#: src/metronom/metronom.c:145 -#, fuzzy, c-format -msgid "Tact generator: %d bpm" -msgstr "Cynhyrchydd Tôn:" - -#: src/metronom/metronom.c:147 -#, c-format -msgid "Tact generator: %d bpm %d/%d" -msgstr "" - -#: src/modplug/gui/interface.cxx:137 -#, fuzzy -msgid "ModPlug Configuration" -msgstr "Ffurfweddiad TiMidity" - -#: src/modplug/gui/interface.cxx:174 -msgid "16 bit" -msgstr "16 did" - -#: src/modplug/gui/interface.cxx:181 -msgid "8 bit" -msgstr "8 did" - -#: src/modplug/gui/interface.cxx:212 -msgid "Mono (downmix)" -msgstr "" - -#: src/modplug/gui/interface.cxx:241 -msgid "Nearest (fastest)" -msgstr "" - -#: src/modplug/gui/interface.cxx:248 -msgid "Linear (fast)" -msgstr "" - -#: src/modplug/gui/interface.cxx:255 -msgid "Spline (good quality)" -msgstr "" - -#: src/modplug/gui/interface.cxx:262 -msgid "8-tap Fir (extremely high quality)" -msgstr "" - -#: src/modplug/gui/interface.cxx:286 -#, fuzzy -msgid "96 kHz" -msgstr "44100 Hz" - -#: src/modplug/gui/interface.cxx:293 -#, fuzzy -msgid "48 kHz" -msgstr "44100 Hz" - -#: src/modplug/gui/interface.cxx:300 -#, fuzzy -msgid "44 kHz" -msgstr "44100 Hz" - -#: src/modplug/gui/interface.cxx:307 -#, fuzzy -msgid "22 kHz" -msgstr "22000 Hz" - -#: src/modplug/gui/interface.cxx:315 -msgid "Sampling Rate" -msgstr "Graddfa Samplo" - -#: src/modplug/gui/interface.cxx:349 src/modplug/gui/interface.cxx:411 -#: src/modplug/gui/interface.cxx:477 src/modplug/gui/interface.cxx:539 -#, fuzzy -msgid "Enable" -msgstr "Galluogi clicied" - -#: src/modplug/gui/interface.cxx:378 src/modplug/gui/interface.cxx:506 -#, fuzzy -msgid "Depth" -msgstr "Duet" - -#: src/modplug/gui/interface.cxx:386 src/modplug/gui/interface.cxx:514 -#, fuzzy -msgid "Delay" -msgstr "Oediad: (ms)" - -#: src/modplug/gui/interface.cxx:394 -#, fuzzy -msgid "Reverb" -msgstr "adlais" - -#: src/modplug/gui/interface.cxx:440 -#, fuzzy -msgid "Amount" -msgstr "Ynghylch" - -#: src/modplug/gui/interface.cxx:448 -#, fuzzy -msgid "Range" -msgstr "Cyfongl" - -#: src/modplug/gui/interface.cxx:456 -msgid "Bass Boost" -msgstr "" - -#: src/modplug/gui/interface.cxx:522 src/mpg123/mpg123.c:174 -#, fuzzy -msgid "Surround" -msgstr "Adlais o amgylch" - -#: src/modplug/gui/interface.cxx:561 -msgid "" -"Note: Setting the preamp\n" -"too high may cause clipping\n" -"(annoying clicks and pops)!" -msgstr "" - -#: src/modplug/gui/interface.cxx:567 -#: src/skins/ui_skinned_equalizer_slider.c:435 -#, fuzzy -msgid "Preamp" -msgstr "Dream" - -#: src/modplug/gui/interface.cxx:601 -msgid "Use Filename as Song Title" -msgstr "" - -#: src/modplug/gui/interface.cxx:606 -msgid "Fast Playlist Info" -msgstr "" - -#: src/modplug/gui/interface.cxx:617 -msgid "Noise Reduction" -msgstr "" - -#: src/modplug/gui/interface.cxx:623 -msgid "Play Amiga MOD" -msgstr "" - -#: src/modplug/gui/interface.cxx:646 -msgid "Don't loop" -msgstr "" - -#: src/modplug/gui/interface.cxx:658 -msgid "Loop" -msgstr "" - -#: src/modplug/gui/interface.cxx:671 -msgid "time(s)" -msgstr "" - -#: src/modplug/gui/interface.cxx:677 -msgid "Loop forever" -msgstr "" - -#: src/modplug/gui/interface.cxx:684 -msgid "Looping" -msgstr "" - -#: src/modplug/gui/interface.cxx:859 -#, fuzzy -msgid "MOD Info" -msgstr "Gwybodaeth am y CD" - -#: src/modplug/gui/interface.cxx:878 -msgid "" -"Filename:\n" -"Title:\n" -"Type:\n" -"Length:\n" -"Speed:\n" -"Tempo:\n" -"Samples:\n" -"Instruments:\n" -"Patterns:\n" -"Channels:" -msgstr "" - -#: src/modplug/gui/interface.cxx:883 -msgid "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" -msgstr "" - -#: src/modplug/gui/interface.cxx:913 -#, fuzzy -msgid "Samples" -msgstr "Salsa" - -#: src/modplug/gui/interface.cxx:938 -#, fuzzy -msgid "Instruments" -msgstr "Offerynnol" - -#: src/modplug/gui/interface.cxx:959 -msgid "Message" -msgstr "" - -#: src/modplug/gui/main.cxx:51 -msgid "Modplug Input Plugin for Audacious ver" -msgstr "" - -#: src/modplug/gui/main.cxx:52 -msgid "" -"\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." -msgstr "" - -#: src/modplug/gui/main.cxx:55 -#, fuzzy -msgid "About Modplug" -msgstr "Ynghylch Ategyn Echo" - -#: src/modplug/gui/support.cxx:90 src/modplug/gui/support.cxx:114 -#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 -#, fuzzy, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "Meth agor dyfais ffeil MIDI" - -#: src/mtp_up/mtp.c:35 -msgid "Upload selected track(s)" -msgstr "" - -#: src/mtp_up/mtp.c:291 -msgid "Upload in progress..." -msgstr "" - -#: src/mtp_up/mtp.c:300 -msgid "MTP device handler" -msgstr "" - -#: src/mtp_up/mtp.c:304 -msgid "Disconnect the device" -msgstr "" - -#: src/null/null.c:63 -msgid "Null output plugin " -msgstr "Null ategyn allbwn" - -#: src/null/null.c:64 -#, fuzzy -msgid "" -" by Christian Birchinger \n" -"based on the XMMS plugin by HÃ¥vard KvÃ¥l " -msgstr "" -" am Christian Birchinger \n" -" tarddu gan yr XMMS modiwl am HÃ¥vard KvÃ¥l " - -#: src/null/null.c:67 -msgid "About Null Output" -msgstr "Ynghylch Ategyn Allwyn Null" - -#: src/null/null.c:93 -#, fuzzy -msgid "Null output preferences" -msgstr "Null ategyn allbwn" - -#: src/null/null.c:102 -msgid "Run in real time" -msgstr "" - -#: src/oss4/configure.c:89 -#, fuzzy -msgid "1. Default device" -msgstr "Dyfais PCM rhagosodedig (%s)" - -#: src/oss4/configure.c:151 -#, fuzzy -msgid "OSS4 Output Plugin Preferences" -msgstr "Ynghylch Ategyn ESounD" - -#: src/oss4/configure.c:163 src/OSS/configure.c:213 src/sun/configure.c:181 -msgid "Audio device:" -msgstr "Dyfais sain:" - -#: src/oss4/configure.c:189 src/OSS/configure.c:235 src/OSS/configure.c:276 -msgid "Use alternate device:" -msgstr "Defnyddiwr ddyfais arall:" - -#: src/oss4/configure.c:202 -msgid "Save volume between sessions" -msgstr "" - -#: src/oss4/configure.c:206 -msgid "Enable format conversions made by the OSS software." -msgstr "" - -#: src/oss4/plugin.c:54 -#, fuzzy -msgid "About OSS4 Plugin" -msgstr "Ynghylch Ategyn ESounD" - -#: src/oss4/plugin.c:55 -#, fuzzy -msgid "" -"OSS4 Output Plugin for Audacious\n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"I would like to thank people on #audacious, especially Tony Vroon and John " -"Lindgren and of course the authors of the previous OSS plugin.\n" -"\n" -"This program is free software: you can redistribute it and/or modify it " -"under the terms of the GNU General Public License as published by the Free " -"Software Foundation, either version 3 of the License, or (at your option) " -"any later version.\n" -"\n" -"This program 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 General Public License for " -"more details.\n" -"\n" -"You should have received a copy of the GNU General Public License along with " -"this program. If not, see .\n" +#: src/sid/xs_interface.c:1219 +msgid "Browse for STIL-database file" msgstr "" -"Ategyn ESounD XMMS\n" -"\n" -" Mae'r rhaglen hwn yn feddalwedd rhydd; cewch ei ailddosbarthu a/neu\n" -"ei newid o dan amodau'r Drwydded Gyhoeddus Gyffredinol GNU fel y'i\n" -"cyhoeddwyd gan y Free Software Foundation; un ai fersiwn 2 o'r\n" -"drwydded neu yn ôl eich dewis) unrhyw fersiwn arall.\n" -"\n" -"Mae'r rhaglen yn cael ei ddosbarthu yn y gobaith y byddwch yn ei gael\n" -"yn ddefnyddiol, on HEB UNRHYW WARANT; heb hyd yn oed awgrym\n" -"o warant MASNACHOL neu ADDASRWYDD AR GYFER UNRHYW\n" -"BWRPAS. Gw. y drwydded Gyhoeddus Gyffredin am ragor o wybodaeth.\n" -"\n" -"Dylech fod wedi derbyn copi o'r Drwydded gyda'r rhaglen; os nad cysylltwch\n" -"â 'r Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,\n" -" MA 02111-1307,\n" -"USA." - -#: src/oss4/utils.c:204 -#, fuzzy -msgid "OSS4 error" -msgstr "Terror" -#: src/OSS/configure.c:148 -#, c-format -msgid "Default (%s)" -msgstr "Rhagosodedig (%s)" - -#: src/OSS/configure.c:197 -msgid "OSS Driver configuration" -msgstr "Ffurfweddu'r Gyrrwr OSS" - -#: src/OSS/configure.c:298 src/sun/configure.c:246 -msgid "Devices" -msgstr "Dyfeisiau" - -#: src/OSS/configure.c:300 src/sun/configure.c:257 -msgid "Buffering:" -msgstr "Byffyru:" - -#: src/OSS/configure.c:313 src/sun/configure.c:288 -msgid "Pre-buffer (percent):" -msgstr "Cyn fyffer (y cant):" - -#: src/OSS/configure.c:324 src/sun/configure.c:302 -msgid "Buffering" -msgstr "Byffyru:" - -#: src/OSS/configure.c:325 -msgid "Mixer Settings:" -msgstr "Gosodiadau Cymysgu" - -#: src/OSS/configure.c:331 -msgid "Volume controls Master not PCM" -msgstr "Nid yw'r Prif reolwr sain yn PCM" - -#: src/OSS/configure.c:337 src/sun/configure.c:392 -msgid "Mixer" -msgstr "Cymysgwr" - -#: src/OSS/OSS.c:40 -msgid "About OSS Driver" -msgstr "Ynghylch Gyrrwr OSS" - -#: src/OSS/OSS.c:41 -msgid "" -"Audacious OSS Driver\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." +#: src/sid/xs_interface.c:1246 +msgid "HVSC path:" msgstr "" -"Gyrrwr OSS Audacious\n" -"\n" -" Mae'r rhaglen hwn yn feddalwedd rhydd; cewch ei ailddosbarthu a/neu\n" -"ei newid o dan amodau'r Drwydded Gyhoeddus Gyffredinol GNU fel y'i\n" -"cyhoeddwyd gan y Free Software Foundation; un ai fersiwn 2 o'r\n" -"drwydded neu yn ôl eich dewis) unrhyw fersiwn arall.\n" -"\n" -"Mae'r rhaglen yn cael ei ddosbarthu yn y gobaith y byddwch yn ei gael\n" -"yn ddefnyddiol, on HEB UNRHYW WARANT; heb hyd yn oed awgrym\n" -"o warant MASNACHOL neu ADDASRWYDD AR GYFER UNRHYW\n" -"BWRPAS. Gw. y drwydded Gyhoeddus Gyffredin am ragor o wybodaeth.\n" -"\n" -"Dylech fod wedi derbyn copi o'r Drwydded gyda'r rhaglen; os nad cysylltwch\n" -"â 'r Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,\n" -" MA 02111-1307,\n" -"USA." -#: src/pulse_audio/pulse_audio.c:691 -#, fuzzy -msgid "About Audacious PulseAudio Output Plugin" -msgstr "Ategyn Allbwn CoreAudio" - -#: src/pulse_audio/pulse_audio.c:692 -#, fuzzy +#: src/sid/xs_interface.c:1262 msgid "" -"Audacious PulseAudio Output Plugin\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" -"Ategyn ESounD XMMS\n" -"\n" -" Mae'r rhaglen hwn yn feddalwedd rhydd; cewch ei ailddosbarthu a/neu\n" -"ei newid o dan amodau'r Drwydded Gyhoeddus Gyffredinol GNU fel y'i\n" -"cyhoeddwyd gan y Free Software Foundation; un ai fersiwn 2 o'r\n" -"drwydded neu yn ôl eich dewis) unrhyw fersiwn arall.\n" -"\n" -"Mae'r rhaglen yn cael ei ddosbarthu yn y gobaith y byddwch yn ei gael\n" -"yn ddefnyddiol, on HEB UNRHYW WARANT; heb hyd yn oed awgrym\n" -"o warant MASNACHOL neu ADDASRWYDD AR GYFER UNRHYW\n" -"BWRPAS. Gw. y drwydded Gyhoeddus Gyffredin am ragor o wybodaeth.\n" -"\n" -"Dylech fod wedi derbyn copi o'r Drwydded gyda'r rhaglen; os nad cysylltwch\n" -"â 'r Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,\n" -" MA 02111-1307,\n" -"USA." - -#: src/resample/plugin.c:78 -#, fuzzy -msgid "About Sample Rate Converter Plugin" -msgstr "Ynghylch Ategyn ESounD" - -#: src/resample/plugin.c:134 -msgid "Sample Rate Converter Preferences" +"Path to base-directory of your High Voltage SID Collection (HVSC), for " +"example /media/C64Music/" msgstr "" -#: src/resample/plugin.c:146 -msgid "Rate mappings:" +#: src/sid/xs_interface.c:1275 +msgid "Browse for HVSC path" msgstr "" -#: src/resample/plugin.c:169 -msgid "All others:" +#: src/sid/xs_interface.c:1297 +msgid "SID Tune Information List (STIL) database:" msgstr "" -#: src/resample/plugin.c:181 -msgid "Method:" +#: src/sid/xs_interface.c:1321 +msgid "Cancel any changes" msgstr "" -#: src/scrobbler/configure.c:152 src/scrobbler/configure.c:228 -msgid "Change password" +#: src/sid/xs_interface.c:1328 +msgid "Accept and update changes" msgstr "" -#: src/scrobbler/configure.c:174 -msgid "Services" -msgstr "Gwasanaethau" +#: src/sid/xs_interface.c:1628 +#, fuzzy +msgid "Audacious-SID Fileinfo" +msgstr "" +"\n" +"Audacious OSD" -#: src/scrobbler/configure.c:196 -msgid "Username:" +#: src/sid/xs_interface.c:1649 +#, fuzzy +msgid "Filename:" msgstr "Enw Defnyddiwr:" -#: src/scrobbler/configure.c:202 -msgid "Password:" -msgstr "Cyfrinair:" +#: src/sid/xs_interface.c:1657 +msgid "Songname:" +msgstr "" -#: src/scrobbler/configure.c:210 -#, fuzzy -msgid "Scrobbler URL:" -msgstr "Ategyn Scrobbler" +#: src/sid/xs_interface.c:1665 +msgid "Composer:" +msgstr "" -#: src/scrobbler/configure.c:242 -msgid "Last.FM" -msgstr "Last.FM" +#: src/sid/xs_interface.c:1673 +msgid "Copyright:" +msgstr "Hawlfraint:" -#: src/scrobbler/configure.c:287 +#: src/sid/xs_interface.c:1717 #, fuzzy -msgid "Scrobbler" -msgstr "Ategyn Scrobbler" +msgid "Song Information:" +msgstr "Fformat ID3:" -#: src/scrobbler/plugin.c:213 -msgid "" -"Audacious AudioScrobbler Plugin\n" -"\n" -"Originally created by Audun Hove and Pipian \n" +#: src/sid/xs_interface.c:1752 +msgid "Author:" msgstr "" -#: src/scrobbler/plugin.c:215 -msgid "About Scrobbler Plugin" -msgstr "Ynghylch Ategyn Scrobbler" - -#: src/sid/xs_about.c:84 -#, c-format -msgid "About %s" -msgstr "Ynghylch %s" - -#: src/sid/xs_config.c:322 +#: src/sid/xs_interface.c:1786 #, fuzzy -msgid " Error" -msgstr "Gwall" +msgid "Duration:" +msgstr "Addurniad" -#: src/sid/xs_fileinfo.c:151 +#: src/sid/xs_interface.c:1820 #, fuzzy -msgid "General info" -msgstr "Cyffredinol" +msgid "Sub-tune Information:" +msgstr "Fformat ID3:" -#: src/sid/xs_fileinfo.c:164 -#, c-format -msgid "Tune #%i: " +#: src/sid/xs_interface.c:1881 +msgid "Select HVSC song length database" msgstr "" -#: src/sid/xs_interface.c:234 -#, fuzzy -msgid "Audacious-SID configuration" -msgstr "Audacious OSD - ffurfweddiad" - -#: src/sid/xs_interface.c:270 -#, fuzzy -msgid "8-bit" -msgstr "8 did" +#: src/sid/xs_interface.c:1922 +msgid "Select STIL-database" +msgstr "" -#: src/sid/xs_interface.c:277 -#, fuzzy -msgid "16-bit" -msgstr "16 did" +#: src/sid/xs_interface.c:1963 +msgid "Select HVSC location prefix" +msgstr "" -#: src/sid/xs_interface.c:284 -#, fuzzy -msgid "Resolution:" -msgstr "Cydraniad:" +#: src/sid/xs_interface.c:2004 +msgid "Select SIDPlay2 filters file for importing" +msgstr "" -#: src/sid/xs_interface.c:315 -msgid "Autopanning" +#: src/sid/xs_interface.c:2045 +msgid "Select SIDPlay2 filters file for exporting" msgstr "" -#: src/sid/xs_interface.c:322 -msgid "Channels:" -msgstr "Sianeli:" +#: src/sid/xs_interface.c:2093 src/sid/xs_interface.c:2106 +msgid "Confirm selected action" +msgstr "" -#: src/sid/xs_interface.c:366 +#: src/sid/xs_interface.c:2123 #, fuzzy -msgid "Samplerate:" -msgstr "Graddfa samplo:" +msgid "Yes" +msgstr "iawn" -#: src/sid/xs_interface.c:383 -#, fuzzy -msgid "Use oversampling" -msgstr "Samplo" +#: src/sid/xs_interface.c:2129 +msgid "No" +msgstr "Na" -#: src/sid/xs_interface.c:394 -msgid "Factor:" +#: src/skins/plugin.c:167 +msgid "About Skinned GUI" msgstr "" -#: src/sid/xs_interface.c:406 -msgid "Large factors require more CPU-power" +#: src/skins/plugin.c:168 +msgid "" +"Copyright (c) 2008, by Tomasz MoÅ„ \n" +"\n" msgstr "" -#: src/sid/xs_interface.c:412 +#: src/skins/skins_cfg.c:254 #, fuzzy -msgid "Oversampling:" -msgstr "Samplo" +msgid "_Player:" +msgstr "Modd chwarae:" -#: src/sid/xs_interface.c:417 -msgid "Audio" +#: src/skins/skins_cfg.c:254 +msgid "Select main player window font:" msgstr "" -#: src/sid/xs_interface.c:445 -msgid "Force speed" +#: src/skins/skins_cfg.c:255 +#, fuzzy +msgid "_Playlist:" +msgstr "Modd chwarae:" + +#: src/skins/skins_cfg.c:255 +msgid "Select playlist font:" msgstr "" -#: src/sid/xs_interface.c:449 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"clock speed/frequency. Otherwise the speed is determined from played file " -"itself." +#: src/skins/skins_cfg.c:259 +#, fuzzy +msgid "_Fonts" +msgstr "Hatena" + +#: src/skins/skins_cfg.c:261 +msgid "Use bitmap fonts (supports ASCII only)" msgstr "" -#: src/sid/xs_interface.c:451 -msgid "PAL (50 Hz)" +#: src/skins/skins_cfg.c:263 +msgid "Scroll song title in both directions" msgstr "" -#: src/sid/xs_interface.c:455 -msgid "" -"PAL is the european TV standard, which uses 50Hz vertical refresh frequency. " -"Most of SID-tunes have been made for PAL computers." +#: src/skins/skins_cfg.c:346 +#, fuzzy +msgid "_Skin" +msgstr "Hatena" + +#: src/skins/skins_cfg.c:393 +#, fuzzy +msgid "Interface Preferences" +msgstr "AudioCompress " + +#: src/skins/ui_equalizer.c:330 +#, fuzzy +msgid "Preamp" +msgstr "Dream" + +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" msgstr "" -#: src/sid/xs_interface.c:459 -msgid "NTSC (60 Hz)" +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" msgstr "" -#: src/sid/xs_interface.c:463 -msgid "" -"NTSC is the TV standard with 60Hz vertical refresh rate (and other features " -"that differ from PAL). It is mainly used in United States, Japan and certain " -"other countries." +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" msgstr "" -#: src/sid/xs_interface.c:467 +#: src/skins/ui_equalizer.c:335 #, fuzzy -msgid "Clock speed:" -msgstr "Chwarae cyflymedd" +msgid "250 Hz" +msgstr "22000 Hz" -#: src/sid/xs_interface.c:484 +#: src/skins/ui_equalizer.c:335 #, fuzzy -msgid "Force model" -msgstr "Enwau'r Traciau:" +msgid "500 Hz" +msgstr "11000 Hz" -#: src/sid/xs_interface.c:488 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"SID-chip model. Otherwise the preferred SID model is determined from the " -"file (if PSIDv2NG type) or if not available, this setting is used." -msgstr "" +#: src/skins/ui_equalizer.c:335 +#, fuzzy +msgid "1 kHz" +msgstr "11000 Hz" -#: src/sid/xs_interface.c:490 -msgid "MOS 6581" +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "2 kHz" +msgstr "22000 Hz" + +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "4 kHz" +msgstr "44100 Hz" + +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "8 kHz" +msgstr "44100 Hz" + +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "16 kHz" +msgstr "44100 Hz" + +#: src/skins/ui_equalizer.c:378 +msgid "Audacious Equalizer" msgstr "" -#: src/sid/xs_interface.c:494 -msgid "" -"MOS/CSG 6581 is the earlier major version of SID chip. It differs from 8580 " -"in few ways, having much fuller filter (which, due to design error, is never " -"same between two different SID-chips) and has the \"volume adjustment bug\", " -"which enables playing of digital samples." +#: src/skins/ui_equalizer.c:884 +msgid "Presets" msgstr "" -#: src/sid/xs_interface.c:498 -msgid "MOS 8580" +#: src/skins/ui_main.c:444 +msgid "kbps" msgstr "" -#: src/sid/xs_interface.c:505 +#: src/skins/ui_main.c:452 #, fuzzy -msgid "SID model:" -msgstr "Modd chwarae:" +msgid "kHz" +msgstr "Hz" -#: src/sid/xs_interface.c:522 -msgid "SIDPlay 1 (frame-based)" +#: src/skins/ui_main.c:459 +#, fuzzy +msgid "surround" +msgstr "Adlais o amgylch" + +#: src/skins/ui_main.c:807 +#, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "" + +#: src/skins/ui_main.c:828 +#, fuzzy, c-format +msgid "Volume: %d%%" +msgstr "Sain:(%)" + +#: src/skins/ui_main.c:851 +#, c-format +msgid "Balance: %d%% left" msgstr "" -#: src/sid/xs_interface.c:526 -msgid "" -"Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most " -"cases, though." +#: src/skins/ui_main.c:853 +msgid "Balance: center" msgstr "" -#: src/sid/xs_interface.c:530 -msgid "SIDPlay 2 (cycle-based)" +#: src/skins/ui_main.c:855 +#, c-format +msgid "Balance: %d%% right" msgstr "" -#: src/sid/xs_interface.c:534 -msgid "" -"Use libSIDPlay 2.x emulation, which requires powerful CPU due to more exact " -"emulation." -msgstr "" +#: src/skins/ui_main.c:981 +#, fuzzy +msgid "Options Menu" +msgstr "Dewisiadau:" -#: src/sid/xs_interface.c:538 -msgid "Emulation library selection:" +#: src/skins/ui_main.c:985 +msgid "Disable 'Always On Top'" msgstr "" -#: src/sid/xs_interface.c:555 -msgid "Real C64 (SIDPlay 2 only)" +#: src/skins/ui_main.c:987 +msgid "Enable 'Always On Top'" msgstr "" -#: src/sid/xs_interface.c:562 -msgid "Bank switching" -msgstr "" +#: src/skins/ui_main.c:990 +#, fuzzy +msgid "File Info Box" +msgstr "Gwybodaeth Ffeil - %s" -#: src/sid/xs_interface.c:569 -msgid "Transparent ROM" +#: src/skins/ui_main.c:995 +msgid "Visualization Menu" msgstr "" -#: src/sid/xs_interface.c:576 -msgid "PlaySID environment" +#: src/skins/ui_main.c:1645 +msgid "Single mode." msgstr "" -#: src/sid/xs_interface.c:583 +#: src/skins/ui_main.c:1647 #, fuzzy -msgid "Memory mode:" +msgid "Playlist mode." msgstr "Modd chwarae:" -#: src/sid/xs_interface.c:588 -msgid "Emu#1" +#: src/skins/ui_main.c:1669 +msgid "Stopping after song." msgstr "" -#: src/sid/xs_interface.c:611 -msgid "Optimization mode (faster, inaccurate)" +#: src/skins/ui_main.c:1671 +msgid "Not stopping after song." msgstr "" -#: src/sid/xs_interface.c:615 -msgid "" -"This setting can be used to enable libSIDPlay2's \"optimization mode\", " -"which in downgrades the emulation from cycle-exact to something similar to " -"frame-exact. The result is lower CPU usage, but worse accuracy." +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 +msgid "Autoscroll Songname" msgstr "" -#: src/sid/xs_interface.c:617 -msgid "reSID-emulation" +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" msgstr "" -#: src/sid/xs_interface.c:621 -msgid "" -"reSID is the software SID-chip simulator based on SID reverse-engineering, " -"created by Dag Lem. It is probably the closest thing to real SID available " -"as software-only emulation." -msgstr "" +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 +#, fuzzy +msgid "Peaks" +msgstr "Pranks" -#: src/sid/xs_interface.c:625 -msgid "HardSID" -msgstr "" +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +#, fuzzy +msgid "Repeat" +msgstr "Beat" -#: src/sid/xs_interface.c:629 -msgid "" -"HardSID is a EISA/PCI card for PC-compatibles, which can be fitted with a " -"real SID-chip. Software can be used to control the HardSID and combined with " -"software emulation of rest of C64 via libSIDPlay2 HardSID can be used to " -"achieve \"near 100%\" similarity to real C64. For more information, see " -"http://www.hardsid.com/" +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" msgstr "" -#: src/sid/xs_interface.c:633 -msgid "SIDPlay 2 options:" +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" msgstr "" -#: src/sid/xs_interface.c:650 -msgid "Fast (nearest neighbour)" +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 +msgid "Show Player" msgstr "" -#: src/sid/xs_interface.c:654 -msgid "" -"Fastest and also worst sounding sampling method, simply picks nearest " -"neighbouring sample." +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 +msgid "Show Playlist Editor" msgstr "" -#: src/sid/xs_interface.c:658 -msgid "Linear interpolation" +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 +msgid "Show Equalizer" msgstr "" -#: src/sid/xs_interface.c:662 -msgid "" -"Uses linear interpolation between samples, yielding higher audio quality " -"with less sampling noise." +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 +msgid "Always on Top" msgstr "" -#: src/sid/xs_interface.c:673 -#, fuzzy -msgid "Resampling (FIR)" -msgstr "Samplo" - -#: src/sid/xs_interface.c:680 -#, fuzzy -msgid "reSID sampling options:" -msgstr "Graddfa Samplo" - -#: src/sid/xs_interface.c:685 -msgid "Emu#2" +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 +msgid "Put on All Workspaces" msgstr "" -#: src/sid/xs_interface.c:697 -msgid "Emulate filters" +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 +msgid "Roll up Player" msgstr "" -#: src/sid/xs_interface.c:701 -msgid "" -"This option enables emulation of SID filter. The filter is an essential part " -"of SID's sound capacity, but accurate emulation of it may require quite much " -"CPU power. However, if filter emulation is disabled, tunes won't sound " -"authentic at all if they utilize the filter." +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 +msgid "Roll up Playlist Editor" msgstr "" -#: src/sid/xs_interface.c:726 -msgid "FS" +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 +msgid "Roll up Equalizer" msgstr "" -#: src/sid/xs_interface.c:743 -msgid "FM" +#: src/skins/ui_manager.c:115 +msgid "Analyzer" msgstr "" -#: src/sid/xs_interface.c:760 -msgid "FT" -msgstr "" +#: src/skins/ui_manager.c:116 +#, fuzzy +msgid "Scope" +msgstr "Synthpop" -#: src/sid/xs_interface.c:771 -msgid "Reset values" +#: src/skins/ui_manager.c:117 +msgid "Voiceprint" msgstr "" -#: src/sid/xs_interface.c:776 -msgid "SIDPlay1" +#: src/skins/ui_manager.c:118 +msgid "Off" msgstr "" -#: src/sid/xs_interface.c:817 +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 #, fuzzy -msgid "Export" -msgstr "Porth" - -#: src/sid/xs_interface.c:825 -msgid "Use" -msgstr "" +msgid "Normal" +msgstr "Fformat:" -#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:430 +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 #, fuzzy -msgid "Save" -msgstr "Rave" +msgid "Fire" +msgstr "Satire" -#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:429 -#, fuzzy -msgid "Import" -msgstr "Porth" +#: src/skins/ui_manager.c:124 +msgid "Vertical Lines" +msgstr "" -#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:431 +#: src/skins/ui_manager.c:128 #, fuzzy -msgid "Delete" -msgstr "Rhagosodedig" +msgid "Lines" +msgstr "Lladin" -#: src/sid/xs_interface.c:863 +#: src/skins/ui_manager.c:129 #, fuzzy -msgid "Filter curve:" -msgstr "Maint ffeil:" +msgid "Bars" +msgstr "Bas" -#: src/sid/xs_interface.c:868 -msgid "SIDPlay2" +#: src/skins/ui_manager.c:133 +msgid "Dot Scope" msgstr "" -#: src/sid/xs_interface.c:874 -msgid "Filters" +#: src/skins/ui_manager.c:134 +msgid "Line Scope" msgstr "" -#: src/sid/xs_interface.c:897 -msgid "Play at least for specified time" +#: src/skins/ui_manager.c:135 +msgid "Solid Scope" msgstr "" -#: src/sid/xs_interface.c:901 -msgid "" -"If enabled, the tune is played at least for the specified time, adding " -"silence to the end if necessary." +#: src/skins/ui_manager.c:141 +msgid "Ice" msgstr "" -#: src/sid/xs_interface.c:908 src/sid/xs_interface.c:962 -#: src/sid/xs_interface.c:1142 +#: src/skins/ui_manager.c:146 +msgid "Smooth" +msgstr "" + +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 #, fuzzy -msgid "Playtime:" -msgstr "Modd chwarae:" +msgid "Slowest" +msgstr "Showtunes" -#: src/sid/xs_interface.c:928 -msgid "Minimum playtime:" -msgstr "" +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 +#, fuzzy +msgid "Slow" +msgstr "Slow Jam" -#: src/sid/xs_interface.c:945 -msgid "Play for specified time maximum" +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 +msgid "Medium" msgstr "" -#: src/sid/xs_interface.c:949 -msgid "" -"If enabled, tune is played until specified duration is reached (aka maximum " -"playtime)." -msgstr "" +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 +#, fuzzy +msgid "Fast" +msgstr "Fformat:" -#: src/sid/xs_interface.c:951 -msgid "Only when song length is unknown" +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 +msgid "Fastest" msgstr "" -#: src/sid/xs_interface.c:955 -msgid "" -"If enabled, the maximum playtime is applied only if song/tune length is not " -"known." +#: src/skins/ui_manager.c:166 +msgid "Time Elapsed" msgstr "" -#: src/sid/xs_interface.c:982 -msgid "Maximum playtime:" +#: src/skins/ui_manager.c:167 +msgid "Time Remaining" msgstr "" -#: src/sid/xs_interface.c:999 -msgid "Use XSIDPLAY-compatible database" -msgstr "" +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +#, fuzzy +msgid "Pause" +msgstr "Chwarae" -#: src/sid/xs_interface.c:1003 -msgid "" -"This option enables using of XSIDPLAY compatible song length database. " -"(Refer to Audacious-SID documentation for more information)" -msgstr "" +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +#, fuzzy +msgid "Previous" +msgstr "Primus" -#: src/sid/xs_interface.c:1010 +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 #, fuzzy -msgid "DB-file:" -msgstr "Dyfais:" +msgid "Next" +msgstr "Testun" -#: src/sid/xs_interface.c:1020 -msgid "Database path and filename" -msgstr "" +#: src/skins/ui_manager.c:196 +#, fuzzy +msgid "Visualization" +msgstr "Corff:" -#: src/sid/xs_interface.c:1027 -msgid "Browse for song length-database file" +#: src/skins/ui_manager.c:197 +msgid "Visualization Mode" msgstr "" -#: src/sid/xs_interface.c:1049 -msgid "Song length database:" +#: src/skins/ui_manager.c:198 +msgid "Analyzer Mode" msgstr "" -#: src/sid/xs_interface.c:1054 -#, fuzzy -msgid "Songlength" -msgstr "Hyd cân rhagosodedig:" +#: src/skins/ui_manager.c:199 +msgid "Scope Mode" +msgstr "" -#: src/sid/xs_interface.c:1072 -#, fuzzy -msgid "Override generic Tuplez format string" -msgstr "Diystyru'r teitlau cyffredinol" +#: src/skins/ui_manager.c:200 +msgid "Voiceprint Mode" +msgstr "" -#: src/sid/xs_interface.c:1076 -msgid "" -"By enabling this option you can specify a custom Tuplez formatting string " -"for SID-files. The SID-plugin specific Tuplez tags are described shortly " -"below." +#: src/skins/ui_manager.c:201 +msgid "WindowShade VU Mode" msgstr "" -#: src/sid/xs_interface.c:1087 -msgid "Tuplez format string for SID-files" +#: src/skins/ui_manager.c:202 +msgid "Analyzer Falloff" msgstr "" -#: src/sid/xs_interface.c:1090 -msgid "" -"SID-specific Tuplez fields:\n" -"\n" -"sid-format\t\t- Specific fileformat\n" -"sid-model\t\t- 6581 or 8580\n" -"sid-speed\t\t- Timing or speed: PAL/NTSC/etc.\n" -"\n" -"Other \"special\" fields set:\n" -"\n" -"subsong-num, subsong-id" +#: src/skins/ui_manager.c:203 +msgid "Peaks Falloff" msgstr "" -#: src/sid/xs_interface.c:1098 +#: src/skins/ui_manager.c:208 #, fuzzy -msgid "Song title format:" -msgstr "Fformat y teitl:" - -#: src/sid/xs_interface.c:1103 -msgid "Title" -msgstr "Teitl" +msgid "Playlist" +msgstr "Modd chwarae:" -#: src/sid/xs_interface.c:1125 -msgid "Add sub-tunes to playlist" +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" msgstr "" -#: src/sid/xs_interface.c:1129 -msgid "" -"If enabled, sub-tunes of each file will be added to playlist. If disabled, " -"only the default sub-tune will be added." +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 +msgid "Select Next Playlist" msgstr "" -#: src/sid/xs_interface.c:1131 -msgid "Only tunes with specified minimum duration" +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 +msgid "Select Previous Playlist" msgstr "" -#: src/sid/xs_interface.c:1135 -msgid "Only add sub-tunes that have a duration of at least specified time." +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" msgstr "" -#: src/sid/xs_interface.c:1162 +#: src/skins/ui_manager.c:222 #, fuzzy -msgid "Sub-tune handling:" -msgstr "Rheolwr sain" - -#: src/sid/xs_interface.c:1179 -msgid "Use STIL database" -msgstr "" +msgid "Import Playlist" +msgstr "Modd chwarae:" -#: src/sid/xs_interface.c:1183 -msgid "" -"If this option is enabled (and the database & HVSC settings below are " -"correctly set), Audacious-SID will use and display additional information " -"from STIL database when HVSC SIDs are played." +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." msgstr "" -#: src/sid/xs_interface.c:1190 +#: src/skins/ui_manager.c:226 #, fuzzy -msgid "STIL file:" -msgstr "Teitl:" +msgid "Export Playlist" +msgstr "Modd chwarae:" -#: src/sid/xs_interface.c:1206 -msgid "" -"Path and filename of STIL database file (STIL.txt), usually found from " -"HVSC's DOCUMENTS-subdirectory." +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." msgstr "" -#: src/sid/xs_interface.c:1219 -msgid "Browse for STIL-database file" -msgstr "" +#: src/skins/ui_manager.c:229 +#, fuzzy +msgid "Save All Playlists" +msgstr "Modd chwarae:" -#: src/sid/xs_interface.c:1246 -msgid "HVSC path:" +#: src/skins/ui_manager.c:230 +msgid "" +"Saves all the playlists that are open. Note that this is done automatically " +"when Audacious quits." msgstr "" -#: src/sid/xs_interface.c:1262 -msgid "" -"Path to base-directory of your High Voltage SID Collection (HVSC), for " -"example /media/C64Music/" +#: src/skins/ui_manager.c:234 +msgid "Refresh List" msgstr "" -#: src/sid/xs_interface.c:1275 -msgid "Browse for HVSC path" +#: src/skins/ui_manager.c:235 +msgid "Refreshes metadata associated with a playlist entry." msgstr "" -#: src/sid/xs_interface.c:1297 -msgid "SID Tune Information List (STIL) database:" +#: src/skins/ui_manager.c:238 +msgid "List Manager" msgstr "" -#: src/sid/xs_interface.c:1321 -msgid "Cancel any changes" +#: src/skins/ui_manager.c:239 +msgid "Opens the playlist manager." msgstr "" -#: src/sid/xs_interface.c:1328 -msgid "Accept and update changes" +#: src/skins/ui_manager.c:243 +msgid "View" msgstr "" -#: src/sid/xs_interface.c:1628 -#, fuzzy -msgid "Audacious-SID Fileinfo" +#: src/skins/ui_manager.c:244 +msgid "Interface" msgstr "" -"\n" -"Audacious OSD" -#: src/sid/xs_interface.c:1649 +#: src/skins/ui_manager.c:245 #, fuzzy -msgid "Filename:" -msgstr "Enw Defnyddiwr:" +msgid "Interface Preferences ..." +msgstr "AudioCompress " -#: src/sid/xs_interface.c:1657 -msgid "Songname:" +#: src/skins/ui_manager.c:249 +msgid "Add Internet Address..." msgstr "" -#: src/sid/xs_interface.c:1665 -msgid "Composer:" +#: src/skins/ui_manager.c:250 +msgid "Adds a remote track to the playlist." msgstr "" -#: src/sid/xs_interface.c:1673 -msgid "Copyright:" -msgstr "Hawlfraint:" - -#: src/sid/xs_interface.c:1717 -#, fuzzy -msgid "Song Information:" -msgstr "Fformat ID3:" +#: src/skins/ui_manager.c:253 +msgid "Add Files..." +msgstr "" -#: src/sid/xs_interface.c:1752 -msgid "Author:" +#: src/skins/ui_manager.c:254 +msgid "Adds files to the playlist." msgstr "" -#: src/sid/xs_interface.c:1786 -#, fuzzy -msgid "Duration:" -msgstr "Addurniad" +#: src/skins/ui_manager.c:259 +msgid "Search and Select" +msgstr "" -#: src/sid/xs_interface.c:1820 -#, fuzzy -msgid "Sub-tune Information:" -msgstr "Fformat ID3:" +#: src/skins/ui_manager.c:260 +msgid "" +"Searches the playlist and selects playlist entries based on specific " +"criteria." +msgstr "" -#: src/sid/xs_interface.c:1881 -msgid "Select HVSC song length database" +#: src/skins/ui_manager.c:263 +msgid "Invert Selection" msgstr "" -#: src/sid/xs_interface.c:1922 -msgid "Select STIL-database" +#: src/skins/ui_manager.c:264 +msgid "Inverts the selected and unselected entries." msgstr "" -#: src/sid/xs_interface.c:1963 -msgid "Select HVSC location prefix" +#: src/skins/ui_manager.c:267 +msgid "Select All" msgstr "" -#: src/sid/xs_interface.c:2004 -msgid "Select SIDPlay2 filters file for importing" +#: src/skins/ui_manager.c:268 +msgid "Selects all of the playlist entries." msgstr "" -#: src/sid/xs_interface.c:2045 -msgid "Select SIDPlay2 filters file for exporting" +#: src/skins/ui_manager.c:271 +msgid "Select None" msgstr "" -#: src/sid/xs_interface.c:2093 src/sid/xs_interface.c:2106 -msgid "Confirm selected action" +#: src/skins/ui_manager.c:272 +msgid "Deselects all of the playlist entries." msgstr "" -#: src/sid/xs_interface.c:2123 +#: src/skins/ui_manager.c:277 #, fuzzy -msgid "Yes" -msgstr "iawn" +msgid "Remove All" +msgstr "Tynnu gyrrwr" -#: src/sid/xs_interface.c:2129 -msgid "No" -msgstr "Na" +#: src/skins/ui_manager.c:278 +msgid "Removes all entries from the playlist." +msgstr "" -#: src/skins/plugin.c:179 -msgid "About Skinned GUI" +#: src/skins/ui_manager.c:281 +msgid "Clear Queue" msgstr "" -#: src/skins/plugin.c:180 -msgid "" -"Copyright (c) 2008, by Tomasz MoÅ„ \n" -"\n" +#: src/skins/ui_manager.c:282 +msgid "Clears the queue associated with this playlist." +msgstr "" + +#: src/skins/ui_manager.c:285 +msgid "Remove Unavailable Files" msgstr "" -#: src/skins/plugin.c:196 -msgid "Skinned Interface" +#: src/skins/ui_manager.c:286 +msgid "Removes unavailable files from the playlist." msgstr "" -#: src/skins/skins_cfg.c:316 +#: src/skins/ui_manager.c:289 #, fuzzy -msgid "_Player:" -msgstr "Modd chwarae:" +msgid "Remove Duplicates" +msgstr "Tynnu gyrrwr" -#: src/skins/skins_cfg.c:316 -msgid "Select main player window font:" +#: src/skins/ui_manager.c:291 src/skins/ui_manager.c:323 +#: src/skins/ui_manager.c:353 +#, fuzzy +msgid "By Title" +msgstr "Teitl" + +#: src/skins/ui_manager.c:292 +msgid "Removes duplicate entries from the playlist by title." msgstr "" -#: src/skins/skins_cfg.c:317 +#: src/skins/ui_manager.c:295 src/skins/ui_manager.c:335 +#: src/skins/ui_manager.c:365 #, fuzzy -msgid "_Playlist:" -msgstr "Modd chwarae:" +msgid "By Filename" +msgstr "Enw ffeil" -#: src/skins/skins_cfg.c:317 -msgid "Select playlist font:" +#: src/skins/ui_manager.c:296 +msgid "Removes duplicate entries from the playlist by filename." msgstr "" -#: src/skins/skins_cfg.c:321 +#: src/skins/ui_manager.c:299 src/skins/ui_manager.c:339 +#: src/skins/ui_manager.c:369 #, fuzzy -msgid "_Fonts" -msgstr "Hatena" +msgid "By Path + Filename" +msgstr "Enw ffeil" -#: src/skins/skins_cfg.c:323 -#, fuzzy -msgid "Use Bitmap fonts if available" -msgstr "Stereo (os ar gael)" +#: src/skins/ui_manager.c:300 +msgid "Removes duplicate entries from the playlist by their full path." +msgstr "" -#: src/skins/skins_cfg.c:323 -msgid "" -"Use bitmap fonts if they are available. Bitmap fonts do not support Unicode " -"strings." +#: src/skins/ui_manager.c:303 +msgid "Remove Unselected" msgstr "" -#: src/skins/skins_cfg.c:324 -#, fuzzy -msgid "_Miscellaneous" -msgstr "Gwasanaethau" +#: src/skins/ui_manager.c:304 +msgid "Remove unselected entries from the playlist." +msgstr "" -#: src/skins/skins_cfg.c:325 -msgid "Show separators in playlist" +#: src/skins/ui_manager.c:307 +msgid "Remove Selected" msgstr "" -#: src/skins/skins_cfg.c:327 -msgid "Show window manager decoration" +#: src/skins/ui_manager.c:308 +msgid "Remove selected entries from the playlist." msgstr "" -#: src/skins/skins_cfg.c:328 -msgid "This enables the window manager to show decorations for windows." +#: src/skins/ui_manager.c:313 +#, fuzzy +msgid "Randomize List" +msgstr "Rave" + +#: src/skins/ui_manager.c:314 +msgid "Randomizes the playlist." msgstr "" -#: src/skins/skins_cfg.c:329 -msgid "Use two-way text scroller" +#: src/skins/ui_manager.c:317 +msgid "Reverse List" msgstr "" -#: src/skins/skins_cfg.c:330 -msgid "" -"If selected, the file information text in the main window will scroll back " -"and forth. If not selected, the text will only scroll in one direction." +#: src/skins/ui_manager.c:318 +msgid "Reverses the playlist." msgstr "" -#: src/skins/skins_cfg.c:331 -msgid "Disable inline gtk theme" +#: src/skins/ui_manager.c:321 +#, fuzzy +msgid "Sort List" +msgstr "Artist:" + +#: src/skins/ui_manager.c:324 src/skins/ui_manager.c:354 +msgid "Sorts the list by title." msgstr "" -#: src/skins/skins_cfg.c:333 -msgid "Random skin on play" +#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +#, fuzzy +msgid "By Album" +msgstr "Albwm:" + +#: src/skins/ui_manager.c:328 src/skins/ui_manager.c:358 +msgid "Sorts the list by album." msgstr "" -#: src/skins/skins_cfg.c:334 -msgid "Allow loading incomplete skins" +#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +#, fuzzy +msgid "By Artist" +msgstr "Artist:" + +#: src/skins/ui_manager.c:332 src/skins/ui_manager.c:362 +msgid "Sorts the list by artist." msgstr "" -#: src/skins/skins_cfg.c:335 -msgid "" -"If selected, audacious won't refuse loading broken skins. Use only if your " -"favourite skin doesn't work" +#: src/skins/ui_manager.c:336 src/skins/ui_manager.c:366 +msgid "Sorts the list by filename." msgstr "" -#: src/skins/skins_cfg.c:401 -msgid "Color Adjustment" +#: src/skins/ui_manager.c:340 src/skins/ui_manager.c:370 +msgid "Sorts the list by full pathname." msgstr "" -#: src/skins/skins_cfg.c:407 -msgid "" -"Audacious allows you to alter the color balance of the skinned UI. The " -"sliders below will allow you to do this." +#: src/skins/ui_manager.c:343 src/skins/ui_manager.c:373 +#, fuzzy +msgid "By Date" +msgstr "Dyddiad!" + +#: src/skins/ui_manager.c:344 src/skins/ui_manager.c:374 +msgid "Sorts the list by modification time." msgstr "" -#: src/skins/skins_cfg.c:417 +#: src/skins/ui_manager.c:347 src/skins/ui_manager.c:377 #, fuzzy -msgid "Blue" -msgstr "Y Felan" +msgid "By Track Number" +msgstr "Rhif y Trac:" -#: src/skins/skins_cfg.c:424 -msgid "Green" +#: src/skins/ui_manager.c:348 src/skins/ui_manager.c:378 +msgid "Sorts the list by track number." msgstr "" -#: src/skins/skins_cfg.c:431 -msgid "Red" +#: src/skins/ui_manager.c:351 +msgid "Sort Selected" msgstr "" -#: src/skins/skins_cfg.c:569 +#: src/skins/ui_manager.c:387 #, fuzzy -msgid "_Skin" -msgstr "Hatena" +msgid "File" +msgstr "Enw ffeil" -#: src/skins/skins_cfg.c:574 -msgid "Color adjustment ..." +#: src/skins/ui_manager.c:388 +msgid "Help" msgstr "" -#: src/skins/ui_equalizer.c:463 -msgid "Audacious Equalizer" +#: src/skins/ui_manager.c:390 +msgid "Plugin Services" msgstr "" -#: src/skins/ui_equalizer.c:991 -msgid "Presets" -msgstr "" +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:395 +#, fuzzy +msgid "View Track Details" +msgstr "defnyddiwch Cynnydd/Brig Trac" -#: src/skins/ui_main.c:593 -msgid "kbps" +#: src/skins/ui_manager.c:393 src/skins/ui_manager.c:396 +msgid "View track details" msgstr "" -#: src/skins/ui_main.c:601 +#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 #, fuzzy -msgid "kHz" -msgstr "Hz" +msgid "About Audacious" +msgstr "Ynghylch Audacious Ategyn LIRC" -#: src/skins/ui_main.c:608 +#: src/skins/ui_manager.c:401 #, fuzzy -msgid "surround" -msgstr "Adlais o amgylch" +msgid "Play File" +msgstr "Modd chwarae:" -#: src/skins/ui_main.c:981 -msgid "Audacious - visibility warning" +#: src/skins/ui_manager.c:402 +msgid "Load and play a file" msgstr "" -#: src/skins/ui_main.c:984 -#, fuzzy -msgid "Show main player window" -msgstr "Dangos ffenestr rhwydwaith" +#: src/skins/ui_manager.c:404 +msgid "Play Location" +msgstr "" -#: src/skins/ui_main.c:985 -msgid "Ignore" +#: src/skins/ui_manager.c:405 +msgid "Play media from the selected location" msgstr "" -#: src/skins/ui_main.c:991 -msgid "" -"Audacious has been started with all of its windows hidden.\n" -"You may want to show the player window again to control Audacious; " -"otherwise, you'll have to control it remotely via audtool or enabled plugins " -"(such as the statusicon plugin)." +#: src/skins/ui_manager.c:407 +msgid "Plugin services" msgstr "" -#: src/skins/ui_main.c:997 -msgid "Always ignore, show/hide is controlled remotely" +#: src/skins/ui_manager.c:409 +msgid "Preferences" msgstr "" -#: src/skins/ui_main.c:1042 -msgid "Audacious - broken GTK engine usage warning" +#: src/skins/ui_manager.c:410 +msgid "Open preferences window" msgstr "" -#: src/skins/ui_main.c:1050 -#, c-format -msgid "" -"Broken GTK engine in use\n" -"\n" -"Audacious has detected that you are using a broken GTK engine.\n" -"\n" -"The theme engine you are using, %s, is incompatible with some of the " -"features used by modern skins. The incompatible features have been disabled " -"for this session.\n" -"\n" -"To use these features, please consider using a different GTK theme engine." +#: src/skins/ui_manager.c:413 +#, fuzzy +msgid "Quit Audacious" +msgstr "%s - Audacious" + +#: src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Set A-B" msgstr "" -#: src/skins/ui_main.c:1061 -msgid "Do not display this warning again" +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Clear A-B" msgstr "" -#: src/skins/ui_main.c:1269 -#, c-format -msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)" +#: src/skins/ui_manager.c:421 src/skins/ui_manager.c:422 +msgid "Jump to Playlist Start" msgstr "" -#: src/skins/ui_main.c:1299 -#, fuzzy, c-format -msgid "Volume: %d%%" -msgstr "Sain:(%)" +#: src/skins/ui_manager.c:427 src/skins/ui_manager.c:428 +msgid "Jump to Time" +msgstr "" -#: src/skins/ui_main.c:1322 -#, c-format -msgid "Balance: %d%% left" +#: src/skins/ui_manager.c:430 +msgid "Queue Toggle" msgstr "" -#: src/skins/ui_main.c:1324 -msgid "Balance: center" +#: src/skins/ui_manager.c:431 +msgid "Enables/disables the entry in the playlist's queue." msgstr "" -#: src/skins/ui_main.c:1326 -#, c-format -msgid "Balance: %d%% right" +#: src/skins/ui_manager.c:434 +msgid "Copy" msgstr "" -#: src/skins/ui_main.c:1618 +#: src/skins/ui_manager.c:436 #, fuzzy -msgid "Options Menu" -msgstr "Dewisiadau:" +msgid "Cut" +msgstr "Cult" -#: src/skins/ui_main.c:1622 -msgid "Disable 'Always On Top'" +#: src/skins/ui_manager.c:438 +msgid "Paste" msgstr "" -#: src/skins/ui_main.c:1624 -msgid "Enable 'Always On Top'" +#: src/skins/ui_manager.c:445 +msgid "Load" msgstr "" -#: src/skins/ui_main.c:1627 +#: src/skins/ui_manager.c:450 src/skins/ui_manager.c:471 +#: src/skins/ui_manager.c:486 #, fuzzy -msgid "File Info Box" -msgstr "Gwybodaeth Ffeil - %s" +msgid "Preset" +msgstr "Porth" -#: src/skins/ui_main.c:1631 -#, fuzzy -msgid "Disable 'GUI Scaling'" -msgstr "Analluogi tagiau ID3V2" +#: src/skins/ui_manager.c:451 +msgid "Load preset" +msgstr "" -#: src/skins/ui_main.c:1633 -#, fuzzy -msgid "Enable 'GUI Scaling'" -msgstr "Gallougi sain dyblusampl" +#: src/skins/ui_manager.c:453 src/skins/ui_manager.c:474 +#: src/skins/ui_manager.c:489 +msgid "Auto-load preset" +msgstr "" -#: src/skins/ui_main.c:1636 -msgid "Visualization Menu" +#: src/skins/ui_manager.c:454 +msgid "Load auto-load preset" msgstr "" -#: src/skins/ui_main.c:2348 -msgid "Single mode." +#: src/skins/ui_manager.c:457 +msgid "Load default preset into equalizer" msgstr "" -#: src/skins/ui_main.c:2350 +#: src/skins/ui_manager.c:459 #, fuzzy -msgid "Playlist mode." -msgstr "Modd chwarae:" - -#: src/skins/ui_main.c:2374 -msgid "Stopping after song." -msgstr "" +msgid "Zero" +msgstr "Retro" -#: src/skins/ui_main.c:2376 -msgid "Not stopping after song." +#: src/skins/ui_manager.c:460 +msgid "Set equalizer preset levels to zero" msgstr "" -#: src/skins/ui_manager.c:50 src/skins/ui_manager.c:51 -msgid "Autoscroll Songname" +#: src/skins/ui_manager.c:462 +msgid "From file" msgstr "" -#: src/skins/ui_manager.c:56 src/skins/ui_manager.c:57 -#, fuzzy -msgid "Peaks" -msgstr "Pranks" - -#: src/skins/ui_manager.c:68 src/skins/ui_manager.c:69 -msgid "Show Player" +#: src/skins/ui_manager.c:463 +msgid "Load preset from file" msgstr "" -#: src/skins/ui_manager.c:71 src/skins/ui_manager.c:72 -msgid "Show Playlist Editor" +#: src/skins/ui_manager.c:465 +msgid "From WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:74 src/skins/ui_manager.c:75 -msgid "Show Equalizer" +#: src/skins/ui_manager.c:466 +msgid "Load preset from WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:77 src/skins/ui_manager.c:78 -msgid "Always on Top" +#: src/skins/ui_manager.c:468 +msgid "WinAMP Presets" msgstr "" -#: src/skins/ui_manager.c:80 src/skins/ui_manager.c:81 -msgid "Put on All Workspaces" +#: src/skins/ui_manager.c:469 +msgid "Import WinAMP presets" msgstr "" -#: src/skins/ui_manager.c:83 src/skins/ui_manager.c:84 -msgid "Roll up Player" +#: src/skins/ui_manager.c:472 +msgid "Save preset" msgstr "" -#: src/skins/ui_manager.c:86 src/skins/ui_manager.c:87 -msgid "Roll up Playlist Editor" +#: src/skins/ui_manager.c:475 +msgid "Save auto-load preset" msgstr "" -#: src/skins/ui_manager.c:89 src/skins/ui_manager.c:90 -msgid "Roll up Equalizer" -msgstr "" +#: src/skins/ui_manager.c:478 +#, fuzzy +msgid "Save default preset" +msgstr "rhagosodedig" -#: src/skins/ui_manager.c:92 src/sndstretch/sndstretch_xmms.c:393 +#: src/skins/ui_manager.c:480 #, fuzzy -msgid "Scale" -msgstr "Rave" +msgid "To file" +msgstr "Teitl:" -#: src/skins/ui_manager.c:93 -msgid "DoubleSize" -msgstr "" +#: src/skins/ui_manager.c:481 +#, fuzzy +msgid "Save preset to file" +msgstr "Cadw'r llif i ddisg" -#: src/skins/ui_manager.c:95 src/skins/ui_manager.c:96 -msgid "Easy Move" +#: src/skins/ui_manager.c:483 +msgid "To WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:104 -msgid "Analyzer" +#: src/skins/ui_manager.c:484 +msgid "Save preset to WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:105 +#: src/skins/ui_manager.c:487 #, fuzzy -msgid "Scope" -msgstr "Synthpop" +msgid "Delete preset" +msgstr "Rhagosodedig" -#: src/skins/ui_manager.c:106 -msgid "Voiceprint" +#: src/skins/ui_manager.c:490 +msgid "Delete auto-load preset" msgstr "" -#: src/skins/ui_manager.c:107 -msgid "Off" +#: src/skins/ui_playlist.c:244 +msgid "Search entries in active playlist" msgstr "" -#: src/skins/ui_manager.c:111 src/skins/ui_manager.c:128 -#: src/skins/ui_manager.c:134 -#, fuzzy -msgid "Normal" -msgstr "Fformat:" +#: src/skins/ui_playlist.c:252 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" -#: src/skins/ui_manager.c:112 src/skins/ui_manager.c:129 +#: src/skins/ui_playlist.c:260 #, fuzzy -msgid "Fire" -msgstr "Satire" - -#: src/skins/ui_manager.c:113 -msgid "Vertical Lines" -msgstr "" +msgid "Title: " +msgstr "Teitl:" -#: src/skins/ui_manager.c:117 +#: src/skins/ui_playlist.c:267 #, fuzzy -msgid "Lines" -msgstr "Lladin" +msgid "Album: " +msgstr "Albwm:" -#: src/skins/ui_manager.c:118 +#: src/skins/ui_playlist.c:274 #, fuzzy -msgid "Bars" -msgstr "Bas" +msgid "Artist: " +msgstr "Artist:" -#: src/skins/ui_manager.c:122 -msgid "Dot Scope" -msgstr "" +#: src/skins/ui_playlist.c:281 +#, fuzzy +msgid "Filename: " +msgstr "Enw Defnyddiwr:" -#: src/skins/ui_manager.c:123 -msgid "Line Scope" +#: src/skins/ui_playlist.c:289 +msgid "Clear previous selection before searching" msgstr "" -#: src/skins/ui_manager.c:124 -msgid "Solid Scope" +#: src/skins/ui_playlist.c:292 +msgid "Automatically toggle queue for matching entries" msgstr "" -#: src/skins/ui_manager.c:130 -msgid "Ice" +#: src/skins/ui_playlist.c:295 +msgid "Create a new playlist with matching entries" msgstr "" -#: src/skins/ui_manager.c:135 -msgid "Smooth" +#: src/skins/ui_playlist.c:762 +msgid "Audacious Playlist Editor" msgstr "" -#: src/skins/ui_manager.c:139 src/skins/ui_manager.c:147 -#, fuzzy -msgid "Slowest" -msgstr "Showtunes" - -#: src/skins/ui_manager.c:140 src/skins/ui_manager.c:148 -#, fuzzy -msgid "Slow" -msgstr "Slow Jam" - -#: src/skins/ui_manager.c:141 src/skins/ui_manager.c:149 -msgid "Medium" +#: src/skins/ui_playlist.c:809 +#, c-format +msgid "%s (%d of %d)" msgstr "" -#: src/skins/ui_manager.c:142 src/skins/ui_manager.c:150 -#, fuzzy -msgid "Fast" -msgstr "Fformat:" - -#: src/skins/ui_manager.c:143 src/skins/ui_manager.c:151 -msgid "Fastest" +#: src/skins/ui_skinselector.c:162 +msgid "Archived Winamp 2.x skin" msgstr "" -#: src/skins/ui_manager.c:155 -msgid "Time Elapsed" +#: src/skins/ui_skinselector.c:167 +msgid "Unarchived Winamp 2.x skin" msgstr "" -#: src/skins/ui_manager.c:156 -msgid "Time Remaining" +#: src/skins/util.c:773 +#, fuzzy, c-format +msgid "Could not create directory (%s): %s\n" msgstr "" +"Methu gwirio'r cyfeiradur %s\n" +"Gwall: %s" -#: src/skins/ui_manager.c:185 +#: src/sndfile/plugin.c:438 #, fuzzy -msgid "Visualization" -msgstr "Corff:" - -#: src/skins/ui_manager.c:186 -msgid "Visualization Mode" -msgstr "" +msgid "About sndfile plugin" +msgstr "Ategyn Sain WAV (sndfile)" -#: src/skins/ui_manager.c:187 -msgid "Analyzer Mode" +#: src/sndfile/plugin.c:439 +msgid "" +"Adapted for Audacious usage by Tony Vroon \n" +"from the xmms_sndfile plugin which is:\n" +"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" +"\n" +"This program is free software ; you can redistribute it and/or modify \n" +"it under the terms of the GNU General Public License as published by \n" +"the Free Software Foundation ; either version 2 of the License, or \n" +"(at your option) any later version. \n" +" \n" +"This program is distributed in the hope that it will be useful, \n" +"but WITHOUT ANY WARRANTY ; without even the implied warranty of \n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n" +"See the GNU General Public License for more details. \n" +"\n" +"You should have received a copy of the GNU General Public \n" +"License along with this program ; if not, write to \n" +"the Free Software Foundation, Inc., \n" +"51 Franklin Street, Fifth Floor, \n" +"Boston, MA 02110-1301 USA" msgstr "" +"Tarddu gan Audacious am Tony Vroon \n" +"Tarddu gan yr xmms_sndfile ategyn:\n" +"Hawlfraint (C) 2000, 2002 Erik de Castro Lopo\n" +"\n" +" Mae'r rhaglen hwn yn feddalwedd rhydd; cewch ei ailddosbarthu a/neu\n" +"ei newid o dan amodau'r Drwydded Gyhoeddus Gyffredinol GNU fel y'i\n" +"cyhoeddwyd gan y Free Software Foundation; un ai fersiwn 2 o'r\n" +"drwydded neu yn ôl eich dewis) unrhyw fersiwn arall.\n" +"\n" +"Mae'r rhaglen yn cael ei ddosbarthu yn y gobaith y byddwch yn ei gael\n" +"yn ddefnyddiol, on HEB UNRHYW WARANT; heb hyd yn oed awgrym\n" +"o warant MASNACHOL neu ADDASRWYDD AR GYFER UNRHYW\n" +"BWRPAS. Gw. y drwydded Gyhoeddus Gyffredin am ragor o wybodaeth.\n" +"\n" +"Dylech fod wedi derbyn copi o'r Drwydded gyda'r rhaglen; os nad cysylltwch\n" +"â 'r Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,\n" +" MA 02111-1307,\n" +"USA." -#: src/skins/ui_manager.c:188 -msgid "Scope Mode" -msgstr "" +#: src/sndstretch/sndstretch_xmms.c:155 +#, fuzzy +msgid "About SndStretch" +msgstr "Ynghylch Gyrrwr OSS" -#: src/skins/ui_manager.c:189 -msgid "Voiceprint Mode" -msgstr "" +#: src/sndstretch/sndstretch_xmms.c:313 +#, fuzzy +msgid "Volume corr." +msgstr "Rheolwr sain" -#: src/skins/ui_manager.c:190 -msgid "WindowShade VU Mode" +#: src/sndstretch/sndstretch_xmms.c:314 +msgid "Short Overlap" msgstr "" -#: src/skins/ui_manager.c:191 -msgid "Analyzer Falloff" -msgstr "" +#: src/sndstretch/sndstretch_xmms.c:360 +#, fuzzy +msgid "Speed" +msgstr "Llais" -#: src/skins/ui_manager.c:192 -msgid "Peaks Falloff" -msgstr "" +#: src/sndstretch/sndstretch_xmms.c:361 +#, fuzzy +msgid "Pitch" +msgstr "Llwybr:" -#: src/skins/ui_manager.c:202 src/skins/ui_manager.c:203 -msgid "Select Next Playlist" -msgstr "" +#: src/sndstretch/sndstretch_xmms.c:362 +#, fuzzy +msgid "Scale" +msgstr "Rave" -#: src/skins/ui_manager.c:205 src/skins/ui_manager.c:206 -msgid "Select Previous Playlist" -msgstr "" +#: src/sndstretch/sndstretch_xmms.c:363 +#, fuzzy +msgid "Options" +msgstr "Dewisiadau:" -#: src/skins/ui_manager.c:222 -msgid "Refresh List" -msgstr "" +#: src/sndstretch/sndstretch_xmms.c:382 +#, fuzzy +msgid "SndStretch - Configuration" +msgstr "Ffurfweddu'r Gyrrwr Sun" -#: src/skins/ui_manager.c:226 -msgid "List Manager" -msgstr "" +#: src/song_change/song_change.c:464 +msgid "Command to run when Audacious starts a new song." +msgstr "Gorchymyn cragen i'w redeg pan fo Audacious yn newid cân." -#: src/skins/ui_manager.c:236 -msgid "Add Internet Address..." -msgstr "" +#: src/song_change/song_change.c:465 src/song_change/song_change.c:469 +#: src/song_change/song_change.c:473 src/song_change/song_change.c:477 +msgid "Command:" +msgstr "Gorchymyn:" -#: src/skins/ui_manager.c:240 -msgid "Add Files..." +#: src/song_change/song_change.c:468 +msgid "Command to run toward the end of a song." msgstr "" +"Gorchymyn cragen, i'w redeg pan fo Audacious wedi cyrraedd diwedd chwarae." -#: src/skins/ui_manager.c:246 -msgid "Search and Select" +#: src/song_change/song_change.c:472 +msgid "Command to run when Audacious reaches the end of the playlist." msgstr "" +"Gorchymyn cragen.i'w redeg pan fo Audacious wedi cyrraedd diwedd rhestr " +"chwarae." -#: src/skins/ui_manager.c:247 +#: src/song_change/song_change.c:476 msgid "" -"Searches the playlist and selects playlist entries based on specific " -"criteria." +"Command to run when title changes for a song (i.e. network streams titles)." msgstr "" -#: src/skins/ui_manager.c:250 -msgid "Invert Selection" +#: src/song_change/song_change.c:480 +msgid "" +"You can use the following format strings which\n" +"will be substituted before calling the command\n" +"(not all are useful for the end-of-playlist command).\n" +"\n" +"%F: Frequency (in hertz)\n" +"%c: Number of channels\n" +"%f: filename (full path)\n" +"%l: length (in milliseconds)\n" +"%n or %s: Song name\n" +"%r: Rate (in bits per second)\n" +"%t: Playlist position (%02d)\n" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" msgstr "" -#: src/skins/ui_manager.c:251 -msgid "Inverts the selected and unselected entries." +#: src/song_change/song_change.c:507 +msgid "" +"Parameters passed to the shell should be encapsulated in " +"quotes. Doing otherwise is a security risk." msgstr "" +"Dylai enw ffeil a thagiau teitl cân fod o fewn dyfynodau " +"dwb (\"). Gall peidio gwneud achosi risg diogelwch." -#: src/skins/ui_manager.c:268 -msgid "Clear Queue" -msgstr "" +#: src/song_change/song_change.c:518 +msgid "Commands" +msgstr "Gorchymyn:" -#: src/skins/ui_manager.c:269 -msgid "Clears the queue associated with this playlist." -msgstr "" +#: src/song_change/song_change.c:555 +#, fuzzy +msgid "Song Change" +msgstr "Newid Cân %s" -#: src/skins/ui_manager.c:272 -msgid "Remove Unavailable Files" -msgstr "" +#: src/statusicon/statusicon.c:378 +#, fuzzy +msgid "About Status Icon Plugin" +msgstr "Ynghylch Ategyn ESounD" -#: src/skins/ui_manager.c:273 -msgid "Removes unavailable files from the playlist." +#: src/statusicon/statusicon.c:379 +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager.\n" msgstr "" -#: src/skins/ui_manager.c:276 +#: src/statusicon/statusicon.c:447 #, fuzzy -msgid "Remove Duplicates" -msgstr "Tynnu gyrrwr" +msgid "Status Icon Plugin - Preferences" +msgstr "Ynghylch Ategyn ESounD" -#: src/skins/ui_manager.c:279 -msgid "Removes duplicate entries from the playlist by title." +#: src/statusicon/statusicon.c:457 +msgid "Right-Click Menu" msgstr "" -#: src/skins/ui_manager.c:282 src/skins/ui_manager.c:318 -#: src/skins/ui_manager.c:348 -#, fuzzy -msgid "By Filename" -msgstr "Enw ffeil" - -#: src/skins/ui_manager.c:283 -msgid "Removes duplicate entries from the playlist by filename." +#: src/statusicon/statusicon.c:462 +msgid "Small playback menu #1" msgstr "" -#: src/skins/ui_manager.c:286 src/skins/ui_manager.c:322 -#: src/skins/ui_manager.c:352 -#, fuzzy -msgid "By Path + Filename" -msgstr "Enw ffeil" +#: src/statusicon/statusicon.c:465 +msgid "Small playback menu #2" +msgstr "" -#: src/skins/ui_manager.c:287 -msgid "Removes duplicate entries from the playlist by their full path." +#: src/statusicon/statusicon.c:481 +msgid "Mouse Scroll Action" msgstr "" -#: src/skins/ui_manager.c:300 -msgid "Reverse List" +#: src/statusicon/statusicon.c:485 +msgid "Change volume" msgstr "" -#: src/skins/ui_manager.c:301 -msgid "Reverses the playlist." +#: src/statusicon/statusicon.c:487 +msgid "Change playing song" msgstr "" -#: src/skins/ui_manager.c:304 +#: src/statusicon/statusicon.c:500 #, fuzzy -msgid "Sort List" -msgstr "Artist:" - -#: src/skins/ui_manager.c:307 src/skins/ui_manager.c:337 -msgid "Sorts the list by title." -msgstr "" +msgid "Other settings" +msgstr "Gosodiadau cymysgu" -#: src/skins/ui_manager.c:311 src/skins/ui_manager.c:341 -msgid "Sorts the list by album." +#: src/statusicon/statusicon.c:505 +msgid "Disable the popup window" msgstr "" -#: src/skins/ui_manager.c:315 src/skins/ui_manager.c:345 -msgid "Sorts the list by artist." +#: src/statusicon/statusicon.c:512 +msgid "Close to the notification area (system tray)" msgstr "" -#: src/skins/ui_manager.c:319 src/skins/ui_manager.c:349 -msgid "Sorts the list by filename." +#: src/stereo_plugin/stereo.c:41 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin 1999." msgstr "" +"Extra Stereo Plugin\n" +"\n" +"Gan Johan Levin 1999." -#: src/skins/ui_manager.c:323 src/skins/ui_manager.c:353 -msgid "Sorts the list by full pathname." -msgstr "" +#: src/stereo_plugin/stereo.c:65 +msgid "About Extra Stereo Plugin" +msgstr "Ynghylch Ategyn Extra Stereo" -#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 -#, fuzzy -msgid "By Date" -msgstr "Dyddiad!" +#: src/stereo_plugin/stereo.c:102 +msgid "Configure Extra Stereo" +msgstr "Ffurfweddu Extra Stereo" -#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 -msgid "Sorts the list by modification time." -msgstr "" +#: src/tonegen/tonegen.c:48 +msgid "About Tone Generator" +msgstr "Ynghylch Cynhyrchydd Tôn" -#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 -msgid "Sorts the list by track number." +#: src/tonegen/tonegen.c:50 +msgid "" +"Sinus tone generator by Haavard Kvaalen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" msgstr "" +"Cynhyrchwyd tôn sinus gan HÃ¥vard KvÃ¥len \n" +"Addaswyd gan Daniel J. Peng \n" +"\n" +"I'w ddefnyddio, ychwanegwch URL: tone://frequency1;frequency2;" +"frequency3;...\n" +"e.e. tôn://2000;2005 i chwarae tôn 2000Hz a thôn 2005Hz" -#: src/skins/ui_manager.c:334 -msgid "Sort Selected" +#: src/tonegen/tonegen.c:100 +#, c-format +msgid "%s %.1f Hz" msgstr "" -#: src/skins/ui_manager.c:373 -msgid "Plugin Services" -msgstr "" +#: src/tonegen/tonegen.c:100 +msgid "Tone Generator: " +msgstr "Cynhyrchydd Tôn:" -#: src/skins/ui_manager.c:384 +#: src/unix-io/gtk.c:34 #, fuzzy -msgid "Play File" -msgstr "Modd chwarae:" +msgid "About File I/O Plugin" +msgstr "Ynghylch Ategyn ESounD" -#: src/skins/ui_manager.c:387 -msgid "Play Location" -msgstr "" +#: src/vorbis/configure.c:31 +msgid "Override generic titles" +msgstr "Diystyru'r teitlau cyffredinol" -#: src/skins/ui_manager.c:428 -msgid "Load" -msgstr "" +#: src/vorbis/configure.c:32 +msgid "Title format:" +msgstr "Fformat y teitl:" -#: src/skins/ui_manager.c:433 src/skins/ui_manager.c:454 -#: src/skins/ui_manager.c:469 +#: src/vorbis/configure.c:36 #, fuzzy -msgid "Preset" -msgstr "Porth" - -#: src/skins/ui_manager.c:434 -msgid "Load preset" -msgstr "" - -#: src/skins/ui_manager.c:436 src/skins/ui_manager.c:457 -#: src/skins/ui_manager.c:472 -msgid "Auto-load preset" -msgstr "" +msgid "Ogg Vorbis Tags" +msgstr "Tagiau Ogg Vorbis:" -#: src/skins/ui_manager.c:437 -msgid "Load auto-load preset" -msgstr "" +#: src/vorbis/configure.c:69 +msgid "Ogg Vorbis Audio Plugin Configuration" +msgstr "Ffurfweddiad Ogg Vorbis" -#: src/skins/ui_manager.c:440 -msgid "Load default preset into equalizer" -msgstr "" +#: src/vorbis/vorbis.c:581 +msgid "About Ogg Vorbis Audio Plugin" +msgstr "Ynghylch Ategyn Ogg Vorbis" -#: src/skins/ui_manager.c:442 +#: src/vorbis/vorbis.c:586 #, fuzzy -msgid "Zero" -msgstr "Retro" - -#: src/skins/ui_manager.c:443 -msgid "Set equalizer preset levels to zero" +msgid "" +"Ogg Vorbis Plugin by the Xiph.org Foundation\n" +"\n" +"Original code by\n" +"Tony Arcieri \n" +"Contributions from\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visit the Xiph.org Foundation at http://www.xiph.org/\n" msgstr "" +"Ogg Vorbis Plugin gan Xiphophorus\n" +"\n" +"Cod gwreiddiol gan\n" +"Tony Arcieri \n" +"Cyfraniadau gan\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"HÃ¥vard KvÃ¥len \n" +"Gian-Carlo Pascutto \n" +"\n" +"Ewch i Xiph.org Founfation yn http://www.xiph.org/\n" -#: src/skins/ui_manager.c:445 -msgid "From file" +#: src/vtx/about.c:14 +msgid "About Vortex Player" msgstr "" -#: src/skins/ui_manager.c:446 -msgid "Load preset from file" +#: src/vtx/about.c:15 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"\n" +"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" +"and other AY/YM music sites.\n" +"\n" +"Audacious implementation by Pavel Vymetalek " msgstr "" -#: src/skins/ui_manager.c:448 -msgid "From WinAMP EQF file" -msgstr "" +#: src/wavpack/wavpack.c:353 +#, fuzzy, c-format +msgid "Wavpack Decoder Plugin %s" +msgstr "Ategyn Echo %s" -#: src/skins/ui_manager.c:449 -msgid "Load preset from WinAMP EQF file" +#: src/wavpack/wavpack.c:354 +msgid "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan\n" +"Visit the Wavpack site at http://www.wavpack.com/\n" msgstr "" -#: src/skins/ui_manager.c:451 -msgid "WinAMP Presets" -msgstr "" +#, fuzzy +#~ msgid "Use Bitmap fonts if available" +#~ msgstr "Stereo (os ar gael)" -#: src/skins/ui_manager.c:452 -msgid "Import WinAMP presets" -msgstr "" +#, fuzzy +#~ msgid "_Miscellaneous" +#~ msgstr "Gwasanaethau" -#: src/skins/ui_manager.c:455 -msgid "Save preset" -msgstr "" +#~ msgid "About " +#~ msgstr "Ynghylch" -#: src/skins/ui_manager.c:458 -msgid "Save auto-load preset" -msgstr "" +#~ msgid "" +#~ "\n" +#~ "Copyright (C) 2002, 2003 Simon Peter \n" +#~ "\n" +#~ "This plugin is released under the terms and conditions of the GNU LGPL.\n" +#~ "See http://www.gnu.org/licenses/lgpl.html for details.\n" +#~ "\n" +#~ "This plugin uses the AdPlug library, which is copyright (C) Simon Peter, " +#~ "et al.\n" +#~ "Linked AdPlug library version: " +#~ msgstr "" +#~ "\n" +#~ "Hawlfraint (C) 2002, 2003 Simon Peter \n" +#~ "\n" +#~ "Mae'r rhaglen hwn yn rhyddhau â GNU LGPL.\n" +#~ "Canfod http://www.gnu.org/licenses/lgpl.html am manylion.\n" +#~ "\n" +#~ "Mae'r rhaglen defnyddio yn AdPlug llyfrgell, pa ys hawlfraint (C) Simon " +#~ "Peter, et al.\n" +#~ "Fersiwn cynnwys AdPlug llyfrgell:" -#: src/skins/ui_manager.c:461 #, fuzzy -msgid "Save default preset" -msgstr "rhagosodedig" +#~ msgid "AdPlug :: Configuration" +#~ msgstr "AMIDI-Plug - ffurfweddu" -#: src/skins/ui_manager.c:463 #, fuzzy -msgid "To file" -msgstr "Teitl:" +#~ msgid "Sound quality" +#~ msgstr "Clip Sain" -#: src/skins/ui_manager.c:464 #, fuzzy -msgid "Save preset to file" -msgstr "Cadw'r llif i ddisg" - -#: src/skins/ui_manager.c:466 -msgid "To WinAMP EQF file" -msgstr "" +#~ msgid "Resolution" +#~ msgstr "Cydraniad:" -#: src/skins/ui_manager.c:467 -msgid "Save preset to WinAMP EQF file" -msgstr "" +#, fuzzy +#~ msgid "8bit" +#~ msgstr "8 did" -#: src/skins/ui_manager.c:470 #, fuzzy -msgid "Delete preset" -msgstr "Rhagosodedig" +#~ msgid "16bit" +#~ msgstr "16 did" -#: src/skins/ui_manager.c:473 -msgid "Delete auto-load preset" -msgstr "" +#~ msgid "Channels" +#~ msgstr "Sianeli:" -#: src/skins/ui_playlist.c:374 -msgid "Search entries in active playlist" -msgstr "" +#, fuzzy +#~ msgid "Formats" +#~ msgstr "Fformat:" -#: src/skins/ui_playlist.c:382 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" +#, fuzzy +#~ msgid "Format" +#~ msgstr "Fformat:" -#: src/skins/ui_playlist.c:397 #, fuzzy -msgid "Album: " -msgstr "Albwm:" +#~ msgid "File Type: " +#~ msgstr "Maint ffeil:" -#: src/skins/ui_playlist.c:404 #, fuzzy -msgid "Artist: " -msgstr "Artist:" +#~ msgid "Instruments: " +#~ msgstr "Offerynnol" -#: src/skins/ui_playlist.c:411 #, fuzzy -msgid "Filename: " -msgstr "Enw Defnyddiwr:" +#~ msgid "Song" +#~ msgstr "Swing" -#: src/skins/ui_playlist.c:419 -msgid "Clear previous selection before searching" -msgstr "" +#, fuzzy +#~ msgid "Instrument name" +#~ msgstr "Offerynnol" -#: src/skins/ui_playlist.c:422 -msgid "Automatically toggle queue for matching entries" -msgstr "" +#, fuzzy +#~ msgid "Song message" +#~ msgstr "Newid Cân %s" -#: src/skins/ui_playlist.c:425 -msgid "Create a new playlist with matching entries" -msgstr "" +#, fuzzy +#~ msgid "Speed: " +#~ msgstr "Llais" -#: src/skins/ui_playlist.c:772 -msgid "Save as Static Playlist" -msgstr "" +#, fuzzy +#~ msgid "Timer: " +#~ msgstr "Teitl:" -#: src/skins/ui_playlist.c:779 -msgid "Use Relative Path" -msgstr "" +#, fuzzy +#~ msgid "Alarm Settings" +#~ msgstr "Gosodiadau Cymysgu" -#: src/skins/ui_playlist.c:802 -msgid "Load Playlist" -msgstr "" +#, fuzzy +#~ msgid "Time" +#~ msgstr "Teitl" -#: src/skins/ui_playlist.c:815 -msgid "Save Playlist" -msgstr "" +#, fuzzy +#~ msgid "hours" +#~ msgstr "Chorus" -#: src/skins/ui_playlist.c:1146 -msgid "Audacious Playlist Editor" -msgstr "" +#, fuzzy +#~ msgid "Quiet after:" +#~ msgstr "Didradd:" -#: src/skins/ui_playlist.c:1206 -#, c-format -msgid "%s (%d of %d)" -msgstr "" +#, fuzzy +#~ msgid "Sunday" +#~ msgstr "Trac Sain" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "31 Hz" -msgstr "" +#, fuzzy +#~ msgid "Monday" +#~ msgstr "Mono" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "63 Hz" -msgstr "" +#, fuzzy +#~ msgid "Fading" +#~ msgstr "cynnydd" -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "125 Hz" -msgstr "" +#, fuzzy +#~ msgid "Volume" +#~ msgstr "Sain:(%)" -#: src/skins/ui_skinned_equalizer_slider.c:436 #, fuzzy -msgid "250 Hz" -msgstr "22000 Hz" +#~ msgid "%" +#~ msgstr "%d" -#: src/skins/ui_skinned_equalizer_slider.c:436 #, fuzzy -msgid "500 Hz" -msgstr "11000 Hz" +#~ msgid "Final" +#~ msgstr "Enw ffeil" -#: src/skins/ui_skinned_equalizer_slider.c:436 #, fuzzy -msgid "1 kHz" -msgstr "11000 Hz" +#~ msgid "enable" +#~ msgstr "Cyffredinol" -#: src/skins/ui_skinned_equalizer_slider.c:436 #, fuzzy -msgid "2 kHz" -msgstr "22000 Hz" +#~ msgid "Use reminder" +#~ msgstr "User Defined" -#: src/skins/ui_skinned_equalizer_slider.c:437 #, fuzzy -msgid "4 kHz" -msgstr "44100 Hz" +#~ msgid "Thankyou" +#~ msgstr "Tango" -#: src/skins/ui_skinned_equalizer_slider.c:437 #, fuzzy -msgid "8 kHz" -msgstr "44100 Hz" +#~ msgid "_Connect" +#~ msgstr "Lleoliad:" -#: src/skins/ui_skinned_equalizer_slider.c:437 #, fuzzy -msgid "16 kHz" -msgstr "44100 Hz" +#~ msgid "Class" +#~ msgstr "Clasurôl" -#: src/skins/ui_skinselector.c:179 -msgid "Archived Winamp 2.x skin" -msgstr "" +#, fuzzy +#~ msgid "Address:" +#~ msgstr "Dyfeisiau" -#: src/skins/ui_skinselector.c:184 -msgid "Unarchived Winamp 2.x skin" -msgstr "" +#, fuzzy +#~ msgid "Rescan" +#~ msgstr "Cyfongl" -#: src/skins/util.c:834 -#, fuzzy, c-format -msgid "Could not create directory (%s): %s\n" -msgstr "" -"Methu gwirio'r cyfeiradur %s\n" -"Gwall: %s" +#, fuzzy +#~ msgid "Playback->Play" +#~ msgstr "Chwarae" -#: src/sndfile/plugin.c:531 #, fuzzy -msgid "About sndfile plugin" -msgstr "Ategyn Sain WAV (sndfile)" +#~ msgid "Playback->Stop" +#~ msgstr "Chwarae" -#: src/sndfile/plugin.c:532 -msgid "" -"Adapted for Audacious usage by Tony Vroon \n" -"from the xmms_sndfile plugin which is:\n" -"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -"This program is free software ; you can redistribute it and/or modify \n" -"it under the terms of the GNU General Public License as published by \n" -"the Free Software Foundation ; either version 2 of the License, or \n" -"(at your option) any later version. \n" -" \n" -"This program is distributed in the hope that it will be useful, \n" -"but WITHOUT ANY WARRANTY ; without even the implied warranty of \n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n" -"See the GNU General Public License for more details. \n" -"\n" -"You should have received a copy of the GNU General Public \n" -"License along with this program ; if not, write to \n" -"the Free Software Foundation, Inc., \n" -"51 Franklin Street, Fifth Floor, \n" -"Boston, MA 02110-1301 USA" -msgstr "" -"Tarddu gan Audacious am Tony Vroon \n" -"Tarddu gan yr xmms_sndfile ategyn:\n" -"Hawlfraint (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -" Mae'r rhaglen hwn yn feddalwedd rhydd; cewch ei ailddosbarthu a/neu\n" -"ei newid o dan amodau'r Drwydded Gyhoeddus Gyffredinol GNU fel y'i\n" -"cyhoeddwyd gan y Free Software Foundation; un ai fersiwn 2 o'r\n" -"drwydded neu yn ôl eich dewis) unrhyw fersiwn arall.\n" -"\n" -"Mae'r rhaglen yn cael ei ddosbarthu yn y gobaith y byddwch yn ei gael\n" -"yn ddefnyddiol, on HEB UNRHYW WARANT; heb hyd yn oed awgrym\n" -"o warant MASNACHOL neu ADDASRWYDD AR GYFER UNRHYW\n" -"BWRPAS. Gw. y drwydded Gyhoeddus Gyffredin am ragor o wybodaeth.\n" -"\n" -"Dylech fod wedi derbyn copi o'r Drwydded gyda'r rhaglen; os nad cysylltwch\n" -"â 'r Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,\n" -" MA 02111-1307,\n" -"USA." +#, fuzzy +#~ msgid "Playback->Pause" +#~ msgstr "Chwarae" -#: src/sndstretch/sndstretch_xmms.c:175 #, fuzzy -msgid "About SndStretch" -msgstr "Ynghylch Gyrrwr OSS" +#~ msgid "Playback->Prev" +#~ msgstr "Chwarae" -#: src/sndstretch/sndstretch_xmms.c:336 #, fuzzy -msgid "Volume corr." -msgstr "Rheolwr sain" +#~ msgid "Playback->Next" +#~ msgstr "Chwarae" -#: src/sndstretch/sndstretch_xmms.c:337 -msgid "Short Overlap" -msgstr "" +#, fuzzy +#~ msgid "Playback->Eject" +#~ msgstr "Chwarae" -#: src/sndstretch/sndstretch_xmms.c:391 #, fuzzy -msgid "Speed" -msgstr "Llais" +#~ msgid "Detected" +#~ msgstr "Rhagosodedig" -#: src/sndstretch/sndstretch_xmms.c:392 #, fuzzy -msgid "Pitch" -msgstr "Llwybr:" +#~ msgid "Custom" +#~ msgstr "Ynghylch" -#: src/sndstretch/sndstretch_xmms.c:413 #, fuzzy -msgid "SndStretch - Configuration" -msgstr "Ffurfweddu'r Gyrrwr Sun" +#~ msgid "Information" +#~ msgstr "Fformat ID3:" -#: src/song_change/song_change.c:397 -msgid "Command to run when Audacious starts a new song." -msgstr "Gorchymyn cragen i'w redeg pan fo Audacious yn newid cân." +#, fuzzy +#~ msgid "Device name:" +#~ msgstr "Dyfais:" -#: src/song_change/song_change.c:398 src/song_change/song_change.c:402 -#: src/song_change/song_change.c:406 src/song_change/song_change.c:410 -msgid "Command:" -msgstr "Gorchymyn:" +#, fuzzy +#~ msgid "Device file:" +#~ msgstr "Dyfais:" -#: src/song_change/song_change.c:401 -msgid "Command to run toward the end of a song." -msgstr "" -"Gorchymyn cragen, i'w redeg pan fo Audacious wedi cyrraedd diwedd chwarae." +#, fuzzy +#~ msgid "EvDev-Plug - Configuration" +#~ msgstr "Ffurfweddiad Chwaraeydd MPEG Sain" -#: src/song_change/song_change.c:405 -msgid "Command to run when Audacious reaches the end of the playlist." -msgstr "" -"Gorchymyn cragen.i'w redeg pan fo Audacious wedi cyrraedd diwedd rhestr " -"chwarae." +#, fuzzy +#~ msgid "Active" +#~ msgstr "Acid" -#: src/song_change/song_change.c:409 -msgid "" -"Command to run when title changes for a song (i.e. network streams titles)." -msgstr "" +#~ msgid "Status" +#~ msgstr "Statws" -#: src/song_change/song_change.c:413 -msgid "" -"You can use the following format strings which\n" -"will be substituted before calling the command\n" -"(not all are useful for the end-of-playlist command).\n" -"\n" -"%F: Frequency (in hertz)\n" -"%c: Number of channels\n" -"%f: filename (full path)\n" -"%l: length (in milliseconds)\n" -"%n or %s: Song name\n" -"%r: Rate (in bits per second)\n" -"%t: Playlist position (%02d)\n" -"%p: Currently playing (1 or 0)" -msgstr "" +#, fuzzy +#~ msgid "Device Name" +#~ msgstr "Dyfais" + +#, fuzzy +#~ msgid "Device File" +#~ msgstr "Dyfais" -#: src/song_change/song_change.c:437 -msgid "" -"Parameters passed to the shell should be encapsulated in " -"quotes. Doing otherwise is a security risk." -msgstr "" -"Dylai enw ffeil a thagiau teitl cân fod o fewn dyfynodau " -"dwb (\"). Gall peidio gwneud achosi risg diogelwch." +#, fuzzy +#~ msgid "Device Address" +#~ msgstr "Dyfeisiau" -#: src/song_change/song_change.c:448 -msgid "Commands" -msgstr "Gorchymyn:" +#, fuzzy +#~ msgid "EvDev-Plug - Bindings Configuration" +#~ msgstr "Ffurfweddiad Chwaraeydd MPEG Sain" -#: src/song_change/song_change.c:484 #, fuzzy -msgid "Song Change" -msgstr "Newid Cân %s" +#~ msgid "Name: " +#~ msgstr "Hatena" -#: src/spectrum/spectrum.c:89 -msgid "Spectrum Analyzer" -msgstr "" +#, fuzzy +#~ msgid "Filename: " +#~ msgstr "Hatena" + +#~ msgid "EvDev-Plug - about" +#~ msgstr "EvDev-Plug - ynghylch" -#: src/statusicon/statusicon.c:355 #, fuzzy -msgid "About Status Icon Plugin" -msgstr "Ynghylch Ategyn ESounD" +#~ msgid "Name" +#~ msgstr "Enw:" -#: src/statusicon/statusicon.c:356 -msgid "" -"Status Icon Plugin\n" -"\n" -"Copyright 2005-2007 Giacomo Lozito \n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"This plugin provides a status icon, placed in\n" -"the system tray area of the window manager.\n" -msgstr "" +#, fuzzy +#~ msgid "Remove" +#~ msgstr "Tynnu gyrrwr" + +#~ msgid "About LIRC Audacious Plugin" +#~ msgstr "Ynghylch Audacious Ategyn LIRC" + +#~ msgid "LIRC Plugin " +#~ msgstr "Ategyn LIRC" -#: src/statusicon/statusicon.c:418 #, fuzzy -msgid "Status Icon Plugin - Preferences" -msgstr "Ynghylch Ategyn ESounD" +#~ msgid "LIRC plugin settings" +#~ msgstr "Ategyn LIRC" -#: src/statusicon/statusicon.c:428 -msgid "Right-Click Menu" -msgstr "" +#, fuzzy +#~ msgid "Connection" +#~ msgstr "Lleoliad:" -#: src/statusicon/statusicon.c:433 -msgid "Small playback menu #1" -msgstr "" +#~ msgid "%s: could not init LIRC support\n" +#~ msgstr "%s: methu â ymgychwyn LIRC ateg\n" -#: src/statusicon/statusicon.c:436 -msgid "Small playback menu #2" -msgstr "" +#~ msgid "" +#~ "%s: could not read LIRC config file\n" +#~ "%s: please read the documentation of LIRC\n" +#~ "%s: how to create a proper config file\n" +#~ msgstr "" +#~ "%s: methu â darllen LIRC ffurfweddiad ffeil\n" +#~ "%s: plesio darllen yn dogfennau am LIRC\n" +#~ "%s: pa at creu y addas ffurfweddiad ffeil\n" -#: src/statusicon/statusicon.c:452 -msgid "Mouse Scroll Action" -msgstr "" +#~ msgid "%s: unknown command \"%s\"\n" +#~ msgstr "%s: gorchymyn anhysbys \"%s\"\n" -#: src/statusicon/statusicon.c:456 -msgid "Change volume" -msgstr "" +#~ msgid "%s: disconnected from LIRC\n" +#~ msgstr "%s: datgysylltu am LIRC\n" -#: src/statusicon/statusicon.c:458 -msgid "Change playing song" -msgstr "" +#, fuzzy +#~ msgid "ModPlug Configuration" +#~ msgstr "Ffurfweddiad TiMidity" -#: src/stereo_plugin/stereo.c:40 -msgid "" -"Extra Stereo Plugin\n" -"\n" -"By Johan Levin 1999." -msgstr "" -"Extra Stereo Plugin\n" -"\n" -"Gan Johan Levin 1999." +#~ msgid "16 bit" +#~ msgstr "16 did" -#: src/stereo_plugin/stereo.c:64 -msgid "About Extra Stereo Plugin" -msgstr "Ynghylch Ategyn Extra Stereo" +#~ msgid "8 bit" +#~ msgstr "8 did" -#: src/stereo_plugin/stereo.c:100 -msgid "Configure Extra Stereo" -msgstr "Ffurfweddu Extra Stereo" +#, fuzzy +#~ msgid "96 kHz" +#~ msgstr "44100 Hz" -#: src/streambrowser/gui/streambrowser_win.c:62 #, fuzzy -msgid "Search:" -msgstr "Blwyddyn:" +#~ msgid "48 kHz" +#~ msgstr "44100 Hz" -#: src/streambrowser/gui/streambrowser_win.c:81 -#: src/streambrowser/gui/streambrowser_win.c:370 -msgid "Add Bookmark" -msgstr "" +#, fuzzy +#~ msgid "44 kHz" +#~ msgstr "44100 Hz" -#: src/streambrowser/gui/streambrowser_win.c:95 -msgid "Stream browser" -msgstr "" +#, fuzzy +#~ msgid "22 kHz" +#~ msgstr "22000 Hz" + +#~ msgid "Sampling Rate" +#~ msgstr "Graddfa Samplo" -#: src/streambrowser/gui/streambrowser_win.c:319 #, fuzzy -msgid "Stream name" -msgstr "Offerynnol" +#~ msgid "Enable" +#~ msgstr "Galluogi clicied" -#: src/streambrowser/gui/streambrowser_win.c:326 -msgid "Now playing" -msgstr "" +#, fuzzy +#~ msgid "Depth" +#~ msgstr "Duet" -#: src/streambrowser/gui/streambrowser_win.c:367 #, fuzzy -msgid "Remove Bookmark" -msgstr "Tynnu gyrrwr" +#~ msgid "Delay" +#~ msgstr "Oediad: (ms)" -#: src/streambrowser/streambrowser.c:331 #, fuzzy -msgid "About Stream Browser" -msgstr "Ynghylch Gyrrwr OSS" +#~ msgid "Reverb" +#~ msgstr "adlais" -#: src/streambrowser/streambrowser.c:332 -msgid "" -"Copyright (c) 2008, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming " -"directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" -"\n" -"This was a Google Summer of Code 2008 project." -msgstr "" +#, fuzzy +#~ msgid "Amount" +#~ msgstr "Ynghylch" -#: src/streambrowser/streambrowser.c:357 src/streambrowser/streambrowser.c:367 -msgid "Streambrowser" -msgstr "" +#, fuzzy +#~ msgid "Range" +#~ msgstr "Cyfongl" -#: src/sun/about.c:30 -msgid "About the Sun Driver" -msgstr "Ynghylch Gyrrwr Sun" +#, fuzzy +#~ msgid "MOD Info" +#~ msgstr "Gwybodaeth am y CD" -#: src/sun/about.c:31 -msgid "" -"XMMS BSD Sun Driver\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" -msgstr "" -"XMMS BSD Sun Driver\n" -"\n" -" Hawlfraint (c) 2001 CubeSoft Communications, Inc.\n" -"Cynhaliwr: .\n" +#, fuzzy +#~ msgid "Samples" +#~ msgstr "Salsa" -#: src/sun/configure.c:199 -msgid "Audio control device:" -msgstr "Dyfais rheoli sain:" +#, fuzzy +#~ msgid "Instruments" +#~ msgstr "Offerynnol" -#: src/sun/configure.c:270 -msgid "Buffer size (ms):" -msgstr "Maint y byffer (ms):" +#, fuzzy +#~ msgid "About Modplug" +#~ msgstr "Ynghylch Ategyn Echo" -#: src/sun/configure.c:348 -msgid "Volume controls device:" -msgstr "Dyfais rheoli sain:" +#, fuzzy +#~ msgid "Blue" +#~ msgstr "Y Felan" -#: src/sun/configure.c:361 -msgid "XMMS uses mixer exclusively." -msgstr " XMMS yn defnyddio'r cymysgydd yn unig" +#, fuzzy +#~ msgid "Disable 'GUI Scaling'" +#~ msgstr "Analluogi tagiau ID3V2" -#: src/sun/configure.c:536 -msgid "Sun driver configuration" -msgstr "Ffurfweddu'r Gyrrwr Sun" +#, fuzzy +#~ msgid "Enable 'GUI Scaling'" +#~ msgstr "Gallougi sain dyblusampl" -#: src/tonegen/tonegen.c:53 -msgid "About Tone Generator" -msgstr "Ynghylch Cynhyrchydd Tôn" +#, fuzzy +#~ msgid "Search:" +#~ msgstr "Blwyddyn:" -#: src/tonegen/tonegen.c:55 -msgid "" -"Sinus tone generator by Haavard Kvaalen \n" -"Modified by Daniel J. Peng \n" -"\n" -"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" -"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" -msgstr "" -"Cynhyrchwyd tôn sinus gan HÃ¥vard KvÃ¥len \n" -"Addaswyd gan Daniel J. Peng \n" -"\n" -"I'w ddefnyddio, ychwanegwch URL: tone://frequency1;frequency2;" -"frequency3;...\n" -"e.e. tôn://2000;2005 i chwarae tôn 2000Hz a thôn 2005Hz" +#, fuzzy +#~ msgid "Stream name" +#~ msgstr "Offerynnol" -#: src/tonegen/tonegen.c:105 -#, c-format -msgid "%s %.1f Hz" -msgstr "" +#, fuzzy +#~ msgid "Remove Bookmark" +#~ msgstr "Tynnu gyrrwr" -#: src/tonegen/tonegen.c:105 -msgid "Tone Generator: " -msgstr "Cynhyrchydd Tôn:" +#, fuzzy +#~ msgid "About Stream Browser" +#~ msgstr "Ynghylch Gyrrwr OSS" -#: src/vorbis/configure.c:31 -msgid "Override generic titles" -msgstr "Diystyru'r teitlau cyffredinol" +#, fuzzy +#~ msgid "minutes:seconds" +#~ msgstr "eiliad" -#: src/vorbis/configure.c:32 -msgid "Title format:" -msgstr "Fformat y teitl:" +#, fuzzy +#~ msgid "Track length:" +#~ msgstr "Cynnydd trac:" -#: src/vorbis/configure.c:36 #, fuzzy -msgid "Ogg Vorbis Tags" -msgstr "Tagiau Ogg Vorbis:" +#~ msgid "Show main menu" +#~ msgstr "Dangos ffenestr rhwydwaith" -#: src/vorbis/configure.c:68 -msgid "Ogg Vorbis Audio Plugin Configuration" -msgstr "Ffurfweddiad Ogg Vorbis" +#, fuzzy +#~ msgid "Import Playlist ..." +#~ msgstr "Modd chwarae:" -#: src/vorbis/vorbis.c:549 -msgid "About Ogg Vorbis Audio Plugin" -msgstr "Ynghylch Ategyn Ogg Vorbis" +#, fuzzy +#~ msgid "Export Playlist ..." +#~ msgstr "Modd chwarae:" -#: src/vorbis/vorbis.c:554 #, fuzzy -msgid "" -"Ogg Vorbis Plugin by the Xiph.org Foundation\n" -"\n" -"Original code by\n" -"Tony Arcieri \n" -"Contributions from\n" -"Chris Montgomery \n" -"Peter Alm \n" -"Michael Smith \n" -"Jack Moffitt \n" -"Jorn Baayen \n" -"Haavard Kvaalen \n" -"Gian-Carlo Pascutto \n" -"Eugene Zagidullin \n" -"\n" -"Visit the Xiph.org Foundation at http://www.xiph.org/\n" -msgstr "" -"Ogg Vorbis Plugin gan Xiphophorus\n" -"\n" -"Cod gwreiddiol gan\n" -"Tony Arcieri \n" -"Cyfraniadau gan\n" -"Chris Montgomery \n" -"Peter Alm \n" -"Michael Smith \n" -"Jack Moffitt \n" -"Jorn Baayen \n" -"HÃ¥vard KvÃ¥len \n" -"Gian-Carlo Pascutto \n" -"\n" -"Ewch i Xiph.org Founfation yn http://www.xiph.org/\n" +#~ msgid "By Formatted Title" +#~ msgstr "Teitl" -#: src/vtx/about.c:14 -msgid "About Vortex Player" -msgstr "" +#, fuzzy +#~ msgid "Components" +#~ msgstr "Sylw:" -#: src/vtx/about.c:15 -msgid "" -"Vortex file format player by Sashnov Alexander \n" -"Founded on original source in_vtx.dll by Roman Sherbakov \n" -"\n" -"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" -"and other AY/YM music sites.\n" -"\n" -"Audacious implementation by Pavel Vymetalek " -msgstr "" +#, fuzzy +#~ msgid "Show main player window" +#~ msgstr "Dangos ffenestr rhwydwaith" -#: src/wavpack/wavpack.c:371 -#, fuzzy, c-format -msgid "Wavpack Decoder Plugin %s" -msgstr "Ategyn Echo %s" +#, fuzzy +#~ msgid "Show playlists" +#~ msgstr "Modd chwarae:" -#: src/wavpack/wavpack.c:372 -msgid "" -"Copyright (c) 2006 William Pitcock \n" -"\n" -"Some of the plugin code was by Miles Egan\n" -"Visit the Wavpack site at http://www.wavpack.com/\n" -msgstr "" +#~ msgid "About the Sun Driver" +#~ msgstr "Ynghylch Gyrrwr Sun" + +#~ msgid "" +#~ "XMMS BSD Sun Driver\n" +#~ "\n" +#~ "Copyright (c) 2001 CubeSoft Communications, Inc.\n" +#~ "Maintainer: .\n" +#~ msgstr "" +#~ "XMMS BSD Sun Driver\n" +#~ "\n" +#~ " Hawlfraint (c) 2001 CubeSoft Communications, Inc.\n" +#~ "Cynhaliwr: .\n" + +#~ msgid "Audio control device:" +#~ msgstr "Dyfais rheoli sain:" + +#~ msgid "Buffer size (ms):" +#~ msgstr "Maint y byffer (ms):" + +#~ msgid "Volume controls device:" +#~ msgstr "Dyfais rheoli sain:" + +#~ msgid "XMMS uses mixer exclusively." +#~ msgstr " XMMS yn defnyddio'r cymysgydd yn unig" + +#~ msgid "Sun driver configuration" +#~ msgstr "Ffurfweddu'r Gyrrwr Sun" + +#, fuzzy +#~ msgid "Effect strength:" +#~ msgstr "Dwyster yr effaith:" + +#, fuzzy +#~ msgid "FLAC Audio Plugin " +#~ msgstr "Ategynnau Sain FLAC" #, fuzzy #~ msgid "600HZ" @@ -5602,10 +4678,6 @@ #~ msgstr "Gwasanaethwr" #, fuzzy -#~ msgid "Save List" -#~ msgstr "Rave" - -#, fuzzy #~ msgid "About RoarAudio Plugin" #~ msgstr "Ategynnau Sain FLAC" @@ -5766,10 +4838,6 @@ #~ msgstr "Ynghylch" #, fuzzy -#~ msgid "Output plugin" -#~ msgstr "Ategyn Allbwn OSS" - -#, fuzzy #~ msgid "Throttle Output" #~ msgstr "Ynghylch Ategyn Allwyn Null" @@ -5866,10 +4934,6 @@ #~ msgstr "Rhagosodedig (%s)" #, fuzzy -#~ msgid "_Rename" -#~ msgstr "Enw ffeil" - -#, fuzzy #~ msgid "About Icecast-Plugin" #~ msgstr "Ynghylch Ategyn Echo" @@ -6038,21 +5102,9 @@ #~ msgid "Title:" #~ msgstr "Teitl:" -#~ msgid "Artist:" -#~ msgstr "Artist:" - -#~ msgid "Album:" -#~ msgstr "Albwm:" - #~ msgid "Comment:" #~ msgstr "Sylw:" -#~ msgid "Year:" -#~ msgstr "Blwyddyn:" - -#~ msgid "Track number:" -#~ msgstr "Rhif y Trac:" - #~ msgid "Genre:" #~ msgstr "Math:" @@ -6235,10 +5287,6 @@ #~ msgstr "defnyddio Cynnydd/Brig Albwm" #, fuzzy -#~ msgid "Track:" -#~ msgstr "Cynnydd trac:" - -#, fuzzy #~ msgid "Streamversion %d" #~ msgstr "Llifo" @@ -6852,12 +5900,6 @@ #~ msgid " Ogg Vorbis Info " #~ msgstr "Gwybodaeth am Ogg Vorbis" -#~ msgid "Bit rate:" -#~ msgstr "Didradd:" - -#~ msgid "Length:" -#~ msgstr "Hyd:" - #~ msgid "File size:" #~ msgstr "Maint ffeil:" diff -Nru audacious-plugins-2.4.4/po/de.po audacious-plugins-3.2/po/de.po --- audacious-plugins-2.4.4/po/de.po 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/de.po 2012-01-20 19:48:30.000000000 +0000 @@ -1,18 +1,19 @@ msgid "" msgstr "" "Project-Id-Version: de\n" -"Report-Msgid-Bugs-To: http://jira.atheme.org/\n" -"POT-Creation-Date: 2010-08-03 17:55-0400\n" -"PO-Revision-Date: 2010-08-04 14:51+0100\n" +"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2012-01-07 23:37+0100\n" +"PO-Revision-Date: 2012-01-08 00:12+0100\n" "Last-Translator: Thomas Lange\n" -"Language-Team: german\n" -"Language: \n" +"Language-Team: German\n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: German\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/aac/libmp4.c:291 +#: src/aac/libmp4.c:256 #, c-format msgid "" "Using libfaad2-%s for decoding.\n" @@ -23,448 +24,176 @@ "FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com\n" "Copyright (c) 2005-2006 Audacious team" -#: src/aac/libmp4.c:296 +#: src/aac/libmp4.c:261 msgid "About MP4 AAC decoder plugin" msgstr "Ãœber MP4-AAC-Player-Plugin" -#: src/adplug/adplug-xmms.cc:153 -msgid "About " -msgstr "Ãœber" +#: src/alarm/alarm.c:312 +msgid "About Alarm" +msgstr "Ãœber Alarm" -#: src/adplug/adplug-xmms.cc:157 +#: src/alarm/alarm.c:313 msgid "" +"A plugin that can be used to start playing at a certain time.\n" "\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"This plugin is released under the terms and conditions of the GNU LGPL.\n" -"See http://www.gnu.org/licenses/lgpl.html for details.\n" -"\n" -"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et " -"al.\n" -"Linked AdPlug library version: " -msgstr "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"Dieses Plugin wurde veröffentlicht unter den Bedingungen und Auflagen der " -"GNU LGPL.\n" -"http://www.gnu.org/licenses/lgpl.html für Details.\n" -"\n" -"Dieses Plugin benützt die AdPlug-Bibliothek; diese ist Copyright (C) Simon " -"Peter, et al.\n" -"Gelinkte AdPlug-Bibliotheks-Version: " - -#: src/adplug/adplug-xmms.cc:234 -msgid "AdPlug :: Configuration" -msgstr "AdPlug :: Konfiguration" - -#: src/adplug/adplug-xmms.cc:243 src/adplug/adplug-xmms.cc:504 -#: src/cdaudio-ng/configure.c:258 src/crystalizer/crystalizer.c:127 -#: src/echo_plugin/gui.c:122 src/jack/configure.c:146 src/null/null.c:109 -#: src/stereo_plugin/stereo.c:123 src/sun/configure.c:557 -msgid "Ok" -msgstr "OK" - -#: src/adplug/adplug-xmms.cc:253 src/alarm/interface.c:1398 -#: src/cdaudio-ng/configure.c:263 src/crystalizer/crystalizer.c:136 -#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 -#: src/modplug/gui/interface.cxx:715 src/null/null.c:110 -#: src/stereo_plugin/stereo.c:132 src/sun/configure.c:565 -msgid "Cancel" -msgstr "Abbrechen" - -#: src/adplug/adplug-xmms.cc:269 src/console/configure.c:154 -#: src/modplug/gui/interface.cxx:629 src/modplug/gui/interface.cxx:888 -msgid "General" -msgstr "Allgemein" - -#: src/adplug/adplug-xmms.cc:281 -msgid "Sound quality" -msgstr "Sound-Qualität" - -#: src/adplug/adplug-xmms.cc:286 src/modplug/gui/interface.cxx:188 -msgid "Resolution" -msgstr "Auflösung" - -#: src/adplug/adplug-xmms.cc:288 -msgid "8bit" -msgstr "8 Bit" - -#: src/adplug/adplug-xmms.cc:293 -msgid "16bit" -msgstr "16 Bit" - -#: src/adplug/adplug-xmms.cc:301 src/modplug/gui/interface.cxx:219 -msgid "Channels" -msgstr "Kanäle" - -#: src/adplug/adplug-xmms.cc:303 src/filewriter/mp3.c:934 -#: src/mpg123/mpg123.c:174 src/sid/xs_interface.c:301 -msgid "Mono" -msgstr "Mono" - -#: src/adplug/adplug-xmms.cc:308 src/filewriter/mp3.c:929 -#: src/modplug/gui/interface.cxx:205 src/mpg123/mpg123.c:174 -#: src/sid/xs_interface.c:308 -msgid "Stereo" -msgstr "Stereo" - -#: src/adplug/adplug-xmms.cc:312 -msgid "" -"Setting stereo is not recommended, unless you need to. This won't add any " -"stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!" -msgstr "" -"Vom Gebrauch von Stereo wird abgeraten, da es dem Klang keine Stereo-Effekte " -"hinzufügt - OPL2 ist nur Mono - aber mehr Rechenleistung wird benötigt!" - -#: src/adplug/adplug-xmms.cc:320 -msgid "Frequency" -msgstr "Frequenz" - -#: src/adplug/adplug-xmms.cc:356 src/adplug/adplug-xmms.cc:560 -#: src/console/configure.c:156 src/gtkui/ui_manager.c:64 -#: src/skins/ui_manager.c:165 -msgid "Playback" -msgstr "Wiedergabe" - -#: src/adplug/adplug-xmms.cc:360 -msgid "Detect songend" -msgstr "Liedende ermitteln" - -#: src/adplug/adplug-xmms.cc:364 -msgid "" -"If enabled, XMMS will detect a song's ending, stop it and advance in the " -"playlist. If disabled, XMMS won't take notice of a song's ending and loop it " -"all over again and again." -msgstr "" -"Falls aktiviert, wird XMMS das Ende eines Titels erkennen, ihn stoppen und " -"in der Wiedergabeliste fortfahren. Falls deaktiviert, erkennt XMMS dies " -"nicht und spielt einfach weiter." - -#: src/adplug/adplug-xmms.cc:375 -msgid "Formats" -msgstr "Formate" - -#: src/adplug/adplug-xmms.cc:382 -msgid "Format selection" -msgstr "Format-Auswahl" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Format" -msgstr "Format" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Extension" -msgstr "Erweiterung" - -#: src/adplug/adplug-xmms.cc:425 -msgid "" -"Selected file types will be recognized and played back by this plugin. " -"Deselected types will be ignored to make room for other plugins to play " -"these files." -msgstr "" -"Ausgewählte Dateitypen werden von diesem Plugin erkannt und abgespielt. " -"Deaktivierte Typen werden ignoriert, dass andere Plugins diese Dateien " -"abspielen können." - -#: src/adplug/adplug-xmms.cc:511 -msgid "AdPlug :: File Info" -msgstr "AdPlug :: Dateiinformation" - -#: src/adplug/adplug-xmms.cc:533 src/amidi-plug/i_configure-fluidsynth.c:348 -msgid "Filename" -msgstr "Dateiname" - -#: src/adplug/adplug-xmms.cc:537 src/skins/ui_playlist.c:390 -msgid "Title: " -msgstr "Titel: " - -#: src/adplug/adplug-xmms.cc:538 -msgid "Author: " -msgstr "Autor: " - -#: src/adplug/adplug-xmms.cc:539 -msgid "File Type: " -msgstr "Dateityp: " - -#: src/adplug/adplug-xmms.cc:540 -msgid "Subsongs: " -msgstr "Untertitel" - -#: src/adplug/adplug-xmms.cc:541 -msgid "Instruments: " -msgstr "Instrumente: " - -#: src/adplug/adplug-xmms.cc:546 -msgid "Orders: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:547 -msgid "Patterns: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:551 -msgid "Song" -msgstr "Titel" - -#: src/adplug/adplug-xmms.cc:577 -msgid "Instrument name" -msgstr "Instrumentenname" - -#: src/adplug/adplug-xmms.cc:619 -msgid "Song message" -msgstr "Titel-Meldung" - -#: src/adplug/adplug-xmms.cc:641 -msgid "Subsong selection" -msgstr "Untertitel-Auswahl" - -#: src/adplug/adplug-xmms.cc:707 -msgid "Order: " -msgstr "Reihenfolge: " - -#: src/adplug/adplug-xmms.cc:708 -msgid "Pattern: " -msgstr "Pattern: " - -#: src/adplug/adplug-xmms.cc:710 -msgid "Row: " -msgstr "Row: " - -#: src/adplug/adplug-xmms.cc:711 -msgid "Speed: " -msgstr "Geschwindigkeit: " - -#: src/adplug/adplug-xmms.cc:712 -msgid "Timer: " -msgstr "Timer: " - -#: src/adplug/adplug-xmms.cc:713 src/console/configure.c:234 -#: src/sid/xs_interface.c:354 -msgid "Hz" -msgstr "Hz" - -#: src/alarm/interface.c:34 -msgid "About XMMS Alarm" -msgstr "Ãœber XMMS-Alarm" - -#: src/alarm/interface.c:47 -msgid "XMMS Alarm" -msgstr "XMMS-Alarm" - -#: src/alarm/interface.c:56 -msgid "" -"An XMMS plugin which can be used\n" -"to start playing at a certain time.\n" -"\n" -"Send all complaints to:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" +"Originally written by Adam Feakin and Daniel Stodden." msgstr "" -"Ein XMMS-Plugin, das verwendet werden kann,\n" -"um zu einem bestimmten Zeitpunkt die\n" +"Ein Plugin, das genutzt werden kann, um zu einer bestimmten Zeit die " "Wiedergabe zu starten.\n" "\n" -"Alle Beschwerden senden an:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" - -#: src/alarm/interface.c:71 src/bluetooth/scan_gui.c:149 src/lirc/about.c:115 -#: src/modplug/gui/interface.cxx:972 src/sid/xs_about.c:214 -#: src/sid/xs_interface.c:1825 -msgid "Close" -msgstr "Schließen" +"Ursprünglich geschrieben von Adam Feakin und Daniel Stodden." -#: src/alarm/interface.c:101 +#: src/alarm/interface.c:33 msgid "Alarm" msgstr "Alarm" -#: src/alarm/interface.c:109 +#: src/alarm/interface.c:40 msgid "This is your wakeup call." msgstr "Dies ist dein Aufwach-Signal." -#: src/alarm/interface.c:124 src/alarm/interface.c:1389 -#: src/modplug/gui/interface.cxx:703 src/sid/xs_config.c:322 +#: src/alarm/interface.c:55 src/alarm/interface.c:1213 msgid "OK" msgstr "OK" -#: src/alarm/interface.c:152 -msgid "Select Playlist" -msgstr "Wiedergabeliste wählen" - -#: src/alarm/interface.c:196 -msgid "Sorry" -msgstr "Entschuldigung" - -#: src/alarm/interface.c:204 -msgid "Warning" -msgstr "Warnung" - -#: src/alarm/interface.c:213 -msgid "" -"For safety reasons the \"quiet\" time must be at least 65 seconds longer " -"than the fading time, it must also be more than 10 seconds. This basically " -"means that there is a bug in the code and until I find a way of really " -"fixing it this message will appear :)\n" -"\n" -"Your fading settings have NOT been saved\n" -"\n" -"--\n" -"Adam" -msgstr "" - -#: src/alarm/interface.c:229 -msgid "Oh Well" -msgstr "Jo mei" - -#: src/alarm/interface.c:388 +#: src/alarm/interface.c:214 msgid "Alarm Settings" msgstr "Alarm-Einstellungen" -#: src/alarm/interface.c:404 src/alarm/interface.c:576 -#: src/alarm/interface.c:948 +#: src/alarm/interface.c:229 src/alarm/interface.c:401 +#: src/alarm/interface.c:773 msgid "Time" msgstr "Zeit" -#: src/alarm/interface.c:445 +#: src/alarm/interface.c:270 msgid "hours" msgstr "Stunden" -#: src/alarm/interface.c:506 +#: src/alarm/interface.c:331 msgid "h" msgstr "Uhr" -#: src/alarm/interface.c:536 +#: src/alarm/interface.c:361 msgid "minutes" msgstr "Minuten" -#: src/alarm/interface.c:554 +#: src/alarm/interface.c:379 msgid "Quiet after:" msgstr "Still nach:" -#: src/alarm/interface.c:564 +#: src/alarm/interface.c:389 msgid "Alarm at (default):" msgstr "Alarm um (standardmäßig):" -#: src/alarm/interface.c:584 +#: src/alarm/interface.c:409 msgid "Choose the days for the alarm to come on" msgstr "Tage wählen, an denen der Alarm ausgelöst werden soll" -#: src/alarm/interface.c:612 src/alarm/interface.c:660 -#: src/alarm/interface.c:708 src/alarm/interface.c:756 -#: src/alarm/interface.c:804 src/alarm/interface.c:852 -#: src/alarm/interface.c:900 src/OSS/configure.c:166 -#: src/skins/ui_manager.c:439 src/skins/ui_manager.c:460 +#: src/alarm/interface.c:437 src/alarm/interface.c:485 +#: src/alarm/interface.c:533 src/alarm/interface.c:581 +#: src/alarm/interface.c:629 src/alarm/interface.c:677 +#: src/alarm/interface.c:725 src/bs2b/plugin.c:198 src/OSS/configure.c:153 +#: src/skins/ui_equalizer.c:1104 src/skins/ui_manager.c:447 +#: src/skins/ui_manager.c:468 msgid "Default" msgstr "Standard" -#: src/alarm/interface.c:938 +#: src/alarm/interface.c:763 msgid "Day" msgstr "Tag" -#: src/alarm/interface.c:958 +#: src/alarm/interface.c:783 msgid "Tuesday" msgstr "Dienstag" -#: src/alarm/interface.c:969 +#: src/alarm/interface.c:794 msgid "Wednesday" msgstr "Mittwoch" -#: src/alarm/interface.c:980 +#: src/alarm/interface.c:805 msgid "Thursday" msgstr "Donnerstag" -#: src/alarm/interface.c:991 +#: src/alarm/interface.c:816 msgid "Friday" msgstr "Freitag" -#: src/alarm/interface.c:1002 +#: src/alarm/interface.c:827 msgid "Saturday" msgstr "Samstag" -#: src/alarm/interface.c:1013 +#: src/alarm/interface.c:838 msgid "Sunday" msgstr "Sonntag" -#: src/alarm/interface.c:1023 +#: src/alarm/interface.c:848 msgid "Monday" msgstr "Montag" -#: src/alarm/interface.c:1034 +#: src/alarm/interface.c:859 msgid "Days" msgstr "Tage" -#: src/alarm/interface.c:1050 +#: src/alarm/interface.c:875 msgid "Fading" msgstr "Ãœbergang" -#: src/alarm/interface.c:1087 src/sid/xs_interface.c:921 -#: src/sid/xs_interface.c:975 src/sid/xs_interface.c:1155 +#: src/alarm/interface.c:912 msgid "seconds" msgstr "Sekunden" -#: src/alarm/interface.c:1095 src/alarm/interface.c:1211 -#: src/modplug/gui/interface.cxx:550 +#: src/alarm/interface.c:920 src/alarm/interface.c:1035 msgid "Volume" msgstr "Lautstärke" -#: src/alarm/interface.c:1121 +#: src/alarm/interface.c:946 msgid "Current" msgstr "Momentan" -#: src/alarm/interface.c:1128 -msgid "reset to current output volume" -msgstr "Zur momentanen Lautstärke zurücksetzen" - -#: src/alarm/interface.c:1130 +#: src/alarm/interface.c:954 msgid "Start at" msgstr "Beginnen bei" -#: src/alarm/interface.c:1158 src/alarm/interface.c:1202 +#: src/alarm/interface.c:982 src/alarm/interface.c:1026 msgid "%" msgstr "%" -#: src/alarm/interface.c:1174 +#: src/alarm/interface.c:998 msgid "Final" msgstr "Schluss" -#: src/alarm/interface.c:1227 +#: src/alarm/interface.c:1051 msgid "Additional Command" msgstr "Zusätzlicher Befehl" -#: src/alarm/interface.c:1253 +#: src/alarm/interface.c:1077 msgid "enable" msgstr "aktivieren" -#: src/alarm/interface.c:1261 +#: src/alarm/interface.c:1085 msgid "Playlist (optional)" msgstr "Wiedergabeliste (optional)" -#: src/alarm/interface.c:1287 +#: src/alarm/interface.c:1111 msgid "Browse..." msgstr "Suchen..." -#: src/alarm/interface.c:1295 src/alarm/interface.c:1460 +#: src/alarm/interface.c:1119 src/alarm/interface.c:1283 msgid "Reminder" msgstr "Erinnern" -#: src/alarm/interface.c:1312 +#: src/alarm/interface.c:1136 msgid "Use reminder" -msgstr "Erinnerung benützen" +msgstr "Erinnerung benutzen" -#: src/alarm/interface.c:1328 src/sndstretch/sndstretch_xmms.c:394 +#: src/alarm/interface.c:1152 src/sndstretch/sndstretch_xmms.c:358 msgid "Options" msgstr "Optionen" -#: src/alarm/interface.c:1336 +#: src/alarm/interface.c:1160 msgid "What do these options mean?" msgstr "Was bedeuten diese Einstellungen?" -#: src/alarm/interface.c:1364 +#: src/alarm/interface.c:1188 msgid "" "\n" "Time\n" @@ -567,24 +296,29 @@ " Erinnerung:\n" " Zeige eine Erinnerung an, wenn der Alarm ausgelöst wird.\n" -#: src/alarm/interface.c:1366 src/gtkui/ui_manager.c:165 -#: src/skins/ui_manager.c:371 +#: src/alarm/interface.c:1190 src/skins/ui_manager.c:382 msgid "Help" msgstr "Hilfe" -#: src/alarm/interface.c:1468 +#: src/alarm/interface.c:1222 src/cdaudio-ng/configure.c:249 +#: src/crystalizer/crystalizer.c:130 src/echo_plugin/gui.c:125 +#: src/jack/configure.c:148 src/null/null.c:108 src/stereo_plugin/stereo.c:125 +msgid "Cancel" +msgstr "Abbrechen" + +#: src/alarm/interface.c:1290 msgid "Your reminder for today is.." msgstr "Die Erinnerung für heute lautet.." -#: src/alarm/interface.c:1493 +#: src/alarm/interface.c:1315 msgid "Thankyou" msgstr "Danke" -#: src/alsa/config.c:209 +#: src/alsa/config.c:210 msgid "Default PCM device" msgstr "Standard-PCM-Device (%s)" -#: src/alsa/config.c:234 +#: src/alsa/config.c:235 msgid "Default mixer device" msgstr "Standard-Mixer-Device (%s)" @@ -596,7 +330,7 @@ msgid "PCM device:" msgstr "PCM-Gerät:" -#: src/alsa/config.c:447 src/OSS/configure.c:256 src/sun/configure.c:218 +#: src/alsa/config.c:447 src/OSS/configure.c:237 msgid "Mixer device:" msgstr "Mixer-Gerät:" @@ -608,19 +342,21 @@ msgid "Work around drain hangup" msgstr "Workaround Drain-Hangup" -#: src/alsa/plugin.c:61 +#: src/alsa/plugin.c:59 msgid "About ALSA Output Plugin" msgstr "Ãœber ALSA Output Plugin" -#: src/alsa/plugin.c:83 +#: src/alsa/plugin.c:81 msgid "ALSA error" msgstr "ALSA Fehler" -#: src/amidi-plug/amidi-plug.c:323 +#: src/amidi-plug/amidi-plug.c:326 msgid "" "You have not selected any sequencer ports for MIDI playback. You can do so " "in the MIDI plugin preferences." msgstr "" +"Sie haben keinen einzigen Sequenz-Port für die MIDI-Wiedergabe angegeben. " +"Dies kann in den MIDI-Plugin-Einstellungen getan werden." #: src/amidi-plug/backend-alsa/b-alsa.c:35 msgid "ALSA Backend " @@ -637,12 +373,20 @@ "hardware synth will be directly played.\n" "Backend written by Giacomo Lozito." msgstr "" +"Dieses Backend sendet MIDI Events an eine Gruppe von benutzerdefinierten " +"ALSA Sequenzer-Ports. Das ALSA Sequenzer-Interface ist sehr vielseitig, es " +"kann Ports sowohl für Hardware-Sequenzer (wie z.B. emu10k1) als auch für " +"Software-Sequenzer und externe Geräte bereitstellen.\n" +"Dieses Backend erzeugt kein Audiomaterial, MIDI Events werden direkt von " +"Geräten/Programmen verarbeitet. Zur Hardware gesendete MIDI Events werden " +"also z.B. direkt abgespielt.\n" +"Backend geschrieben von Giacomo Lozito." -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:41 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 msgid "FluidSynth Backend " msgstr "FluidSynth-Backend " -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:43 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 msgid "" "This backend produces audio by sending MIDI events to FluidSynth, a real-" "time software synthesizer based on the SoundFont2 specification (www." @@ -651,70 +395,50 @@ "by chosen ouput plugin.\n" "Backend written by Giacomo Lozito." msgstr "" +"Diesed Backend erzeugt Audiomaterial durch Senden von MIDI Events an " +"FluidSynth, ein Echtzeit-Software-Synthesizer basierend auf der SoundFont2 " +"Spezifikation (www.fluidsynth.org).\n" +"Erzeugtes Audiomaterial kann via Effektplugins beeinflusst werden und wird " +"vom ausgewähltem Ausgabeplugin weiterverarbeitet.\n" +"Backend geschrieben von Giacomo Lozito." -#: src/amidi-plug/i_configure-alsa.c:221 +#: src/amidi-plug/i_configure-alsa.c:228 msgid "ALSA BACKEND CONFIGURATION" msgstr "ALSA-Backend-Konfiguration" -#: src/amidi-plug/i_configure-alsa.c:326 +#: src/amidi-plug/i_configure-alsa.c:331 msgid "Port" msgstr "Port" -#: src/amidi-plug/i_configure-alsa.c:328 +#: src/amidi-plug/i_configure-alsa.c:333 msgid "Client name" msgstr "Client-Name" -#: src/amidi-plug/i_configure-alsa.c:330 +#: src/amidi-plug/i_configure-alsa.c:335 msgid "Port name" msgstr "Portname" -#: src/amidi-plug/i_configure-alsa.c:341 +#: src/amidi-plug/i_configure-alsa.c:346 msgid "ALSA output ports" msgstr "ALSA-Ausgabe-Ports" -#: src/amidi-plug/i_configure-alsa.c:394 +#: src/amidi-plug/i_configure-alsa.c:399 msgid "Soundcard: " msgstr "Soundkarte: " -#: src/amidi-plug/i_configure-alsa.c:396 +#: src/amidi-plug/i_configure-alsa.c:401 msgid "Mixer control: " msgstr "Mixersteuerung: " -#: src/amidi-plug/i_configure-alsa.c:408 +#: src/amidi-plug/i_configure-alsa.c:413 msgid "Mixer settings" msgstr "Mixer-Einstellungen" -#: src/amidi-plug/i_configure-alsa.c:421 -msgid "" -"* Select ALSA output ports *\n" -"MIDI events will be sent to the ports selected here. In example, if your " -"audio card provides a hardware synth and you want to play MIDI with it, " -"you'll probably want to select the wavetable synthesizer ports." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:426 -msgid "" -"* Select ALSA mixer card *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volumeslider will " -"manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:433 -msgid "" -"* Select ALSA mixer control *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volume slider " -"will manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:444 +#: src/amidi-plug/i_configure-alsa.c:429 msgid "ALSA Backend not loaded or not available" msgstr "ALSA-Backend nicht geladen oder nicht verfügbar" -#: src/amidi-plug/i_configure-alsa.c:463 +#: src/amidi-plug/i_configure-alsa.c:448 msgid "" "ALSA\n" "backend" @@ -722,113 +446,51 @@ "ALSA-\n" "Backend" -#: src/amidi-plug/i_configure-ap.c:56 +#: src/amidi-plug/i_configure-ap.c:59 msgid "AMIDI-Plug - backend information" msgstr "AMIDI-Plug - Backend-Information" -#: src/amidi-plug/i_configure-ap.c:194 +#: src/amidi-plug/i_configure-ap.c:196 msgid "AMIDI-PLUG PREFERENCES" msgstr "AMIDI-Plug-Einstellungen" -#: src/amidi-plug/i_configure-ap.c:221 +#: src/amidi-plug/i_configure-ap.c:223 msgid "Backend selection" msgstr "Backend-Auswahl" -#: src/amidi-plug/i_configure-ap.c:225 +#: src/amidi-plug/i_configure-ap.c:227 msgid "Available backends" -msgstr "Verfügbare backends" +msgstr "Verfügbare Backends" -#: src/amidi-plug/i_configure-ap.c:255 +#: src/amidi-plug/i_configure-ap.c:257 msgid "Playback settings" msgstr "Wiedergabeeinstellungen" -#: src/amidi-plug/i_configure-ap.c:260 +#: src/amidi-plug/i_configure-ap.c:262 msgid "Transpose: " msgstr "Transponieren: " -#: src/amidi-plug/i_configure-ap.c:269 +#: src/amidi-plug/i_configure-ap.c:271 msgid "Drum shift: " -msgstr "" +msgstr "Drum-Shift: " -#: src/amidi-plug/i_configure-ap.c:287 +#: src/amidi-plug/i_configure-ap.c:289 msgid "Advanced settings" msgstr "Erweiterte Einstellungen" -#: src/amidi-plug/i_configure-ap.c:291 +#: src/amidi-plug/i_configure-ap.c:293 msgid "pre-calculate length of MIDI files in playlist" -msgstr "Länge von MIDI-Dateien in der Wiedergabeliste ausrechnen" +msgstr "Länge von MIDI-Dateien in der Wiedergabeliste berechnen" -#: src/amidi-plug/i_configure-ap.c:296 +#: src/amidi-plug/i_configure-ap.c:298 msgid "extract comments from MIDI file (if available)" msgstr "Kommentare aus MIDI-Datei extrahieren (falls verfügbar)" -#: src/amidi-plug/i_configure-ap.c:301 +#: src/amidi-plug/i_configure-ap.c:303 msgid "extract lyrics from MIDI file (if available)" msgstr "Liedtexte aus MIDI-Dateien extrahieren (falls verfügbar)" -#: src/amidi-plug/i_configure-ap.c:320 -msgid "" -"* Backend selection *\n" -"AMIDI-Plug works with backends, in a modular fashion; here you should select " -"your backend; that is, the way MIDI events are going to be handled and " -"played.\n" -"If you have a hardware synthesizer on your audio card, and ALSA supports it, " -"you'll want to use the ALSA backend. It can also be used with anything that " -"provides an interface to the ALSA sequencer, including software synths or " -"external devices.\n" -"If you want to rely on a software synthesizer and/or want to pipe audio into " -"effect and output plugins of the player you'll want to use the good " -"FluidSynth backend.\n" -"Press the info button to read specific information about each backend." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:331 -msgid "" -"* Transpose function *\n" -"This option allows you to play the midi file transposed in a different key, " -"by shifting of the desired number of semitones all its notes (excepting " -"those on midi channel 10, reserved for percussions). Especially useful if " -"you wish to sing or play along with another instrument." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:337 -msgid "" -"* Drumshift function *\n" -"This option allows you to shift notes on midi channel 10 (the standard " -"percussions channel) of the desired number of semitones. This results in " -"different drumset and percussions being used during midi playback, so if you " -"wish to enhance (or reduce, or alter) percussion sounds, try to play with " -"this value." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:344 -msgid "" -"* Pre-calculate MIDI length *\n" -"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as " -"soon as the player requests it, instead of doing that only when the MIDI " -"file is being played. In example, MIDI length will be calculated straight " -"after adding MIDI files in a playlist. Disable this option if you want " -"faster playlist loading (when a lot of MIDI files are added), enable it to " -"display more information in the playlist straight after loading." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:353 -msgid "" -"* Extract comments from MIDI files *\n" -"Some MIDI files contain text comments (author, copyright, instrument notes, " -"etc.). If this option is enabled, AMIDI-Plug will extract and display " -"comments (if available) in the file information dialog." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:358 -msgid "" -"* Extract lyrics from MIDI files *\n" -"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug " -"will extract and display song lyrics (if available) in the file information " -"dialog." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:375 +#: src/amidi-plug/i_configure-ap.c:333 msgid "" "AMIDI\n" "Plug" @@ -836,196 +498,119 @@ "AMIDI-\n" "Plug" -#: src/amidi-plug/i_configure.c:73 +#: src/amidi-plug/i_configure.c:76 msgid "AMIDI-Plug - select file" msgstr "AMIDI-Plug - Datei auswählen" -#: src/amidi-plug/i_configure.c:126 +#: src/amidi-plug/i_configure.c:129 msgid "AMIDI-Plug - configuration" msgstr "AMIDI-Plug - Konfiguration" -#: src/amidi-plug/i_configure-fluidsynth.c:52 +#: src/amidi-plug/i_configure-fluidsynth.c:55 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - SoundFont-Datei wählen" -#: src/amidi-plug/i_configure-fluidsynth.c:268 +#: src/amidi-plug/i_configure-fluidsynth.c:270 msgid "FLUIDSYNTH BACKEND CONFIGURATION" msgstr "Fluidsynth-Backend-Konfiguration" -#: src/amidi-plug/i_configure-fluidsynth.c:316 +#: src/amidi-plug/i_configure-fluidsynth.c:313 msgid "SoundFont settings" msgstr "SoundFont-Einstellungen" -#: src/amidi-plug/i_configure-fluidsynth.c:352 +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Dateiname" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 msgid "Size (bytes)" -msgstr "Größe (Byte)" +msgstr "Größe (Bytes)" -#: src/amidi-plug/i_configure-fluidsynth.c:401 +#: src/amidi-plug/i_configure-fluidsynth.c:398 msgid "Load SF on player start" msgstr "SF beim Player-Start laden" -#: src/amidi-plug/i_configure-fluidsynth.c:405 +#: src/amidi-plug/i_configure-fluidsynth.c:402 msgid "Load SF on first midifile play" msgstr "SF beim Abspielen der ersten MIDI-Datei laden" -#: src/amidi-plug/i_configure-fluidsynth.c:420 +#: src/amidi-plug/i_configure-fluidsynth.c:417 msgid "Synthesizer settings" msgstr "Synthesizer-Einstellungen" -#: src/amidi-plug/i_configure-fluidsynth.c:429 +#: src/amidi-plug/i_configure-fluidsynth.c:426 msgid "gain" msgstr "Verstärkung" -#: src/amidi-plug/i_configure-fluidsynth.c:435 -#: src/amidi-plug/i_configure-fluidsynth.c:463 -#: src/amidi-plug/i_configure-fluidsynth.c:491 -#: src/amidi-plug/i_configure-fluidsynth.c:522 +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 msgid "use default" msgstr "Standard benutzen" -#: src/amidi-plug/i_configure-fluidsynth.c:438 -#: src/amidi-plug/i_configure-fluidsynth.c:466 +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 msgid "value:" msgstr "Wert:" -#: src/amidi-plug/i_configure-fluidsynth.c:457 +#: src/amidi-plug/i_configure-fluidsynth.c:454 msgid "poliphony" msgstr "Polyphonie" -#: src/amidi-plug/i_configure-fluidsynth.c:485 +#: src/amidi-plug/i_configure-fluidsynth.c:482 msgid "reverb" msgstr "Hall" -#: src/amidi-plug/i_configure-fluidsynth.c:494 -#: src/amidi-plug/i_configure-fluidsynth.c:525 +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 msgid "yes" msgstr "Ja" -#: src/amidi-plug/i_configure-fluidsynth.c:496 -#: src/amidi-plug/i_configure-fluidsynth.c:527 +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 msgid "no" msgstr "Nein" -#: src/amidi-plug/i_configure-fluidsynth.c:516 +#: src/amidi-plug/i_configure-fluidsynth.c:513 msgid "chorus" msgstr "Refrain" -#: src/amidi-plug/i_configure-fluidsynth.c:547 +#: src/amidi-plug/i_configure-fluidsynth.c:544 msgid "sample rate" msgstr "Abtastfrequenz" -#: src/amidi-plug/i_configure-fluidsynth.c:553 +#: src/amidi-plug/i_configure-fluidsynth.c:550 msgid "22050 Hz " msgstr "22050 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:556 +#: src/amidi-plug/i_configure-fluidsynth.c:553 msgid "44100 Hz " msgstr "44100 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:559 +#: src/amidi-plug/i_configure-fluidsynth.c:556 msgid "96000 Hz " msgstr "96000 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:562 +#: src/amidi-plug/i_configure-fluidsynth.c:559 msgid "custom " msgstr "individuell" -#: src/amidi-plug/i_configure-fluidsynth.c:571 +#: src/amidi-plug/i_configure-fluidsynth.c:568 msgid "Hz " msgstr "Hz " #: src/amidi-plug/i_configure-fluidsynth.c:621 -msgid "" -"* Select SoundFont files *\n" -"In order to play MIDI with FluidSynth, you need to specify at least one " -"valid SoundFont file here (use absolute paths). The loading order is from " -"the top (first) to the bottom (last)." -msgstr "" -"* SoundFont-Dateien auswählen *\n" -"Um MIDI-Dateien mit FluidSynth abzuspielen, muss hier mindestens eine " -"gültige SoundFont-Datei angegeben werden (absolute Pfade verwenden). Die " -"Lade-Reihenfolge ist von der Spitze (erstes) bis zum The loading order is " -"from the top (first) to the bottom (last)." - -#: src/amidi-plug/i_configure-fluidsynth.c:626 -msgid "" -"* Load SoundFont on player start *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:634 -msgid "" -"* Load SoundFont on first midifile play *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:642 -msgid "" -"* Synthesizer gain *\n" -"From FluidSynth docs: the gain is applied to the final or master output of " -"the synthesizer; it is set to a low value by default to avoid the saturation " -"of the output when random MIDI files are played." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:647 -msgid "" -"* Synthesizer polyphony *\n" -"From FluidSynth docs: the polyphony defines how many voices can be played in " -"parallel; the number of voices is not necessarily equivalent to the number " -"of notes played simultaneously; indeed, when a note is struck on a specific " -"MIDI channel, the preset on that channel may create several voices, for " -"example, one for the left audio channel and one for the right audio " -"channels; the number of voices activated depends on the number of instrument " -"zones that fall in the correspond to the velocity and key of the played note." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:657 -#: src/amidi-plug/i_configure-fluidsynth.c:663 -msgid "" -"* Synthesizer reverb *\n" -"From FluidSynth docs: when set to \"yes\" the reverb effects module is " -"activated; note that when the reverb module is active, the amount of signal " -"sent to the reverb module depends on the \"reverb send\" generator defined " -"in the SoundFont." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:669 -#: src/amidi-plug/i_configure-fluidsynth.c:675 -msgid "" -"* Synthesizer chorus *\n" -"From FluidSynth docs: when set to \"yes\" the chorus effects module is " -"activated; note that when the chorus module is active, the amount of signal " -"sent to the chorus module depends on the \"chorus send\" generator defined " -"in the SoundFont." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:681 -#: src/amidi-plug/i_configure-fluidsynth.c:685 -#: src/amidi-plug/i_configure-fluidsynth.c:689 -#: src/amidi-plug/i_configure-fluidsynth.c:693 -msgid "" -"* Synthesizer samplerate *\n" -"The sample rate of the audio generated by the synthesizer. You can also " -"specify a custom value in the interval 22050Hz-96000Hz." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:701 msgid "FluidSynth Backend not loaded or not available" msgstr "FluidSynth-Backend nicht geladen oder nicht verfügbar" -#: src/amidi-plug/i_configure-fluidsynth.c:720 +#: src/amidi-plug/i_configure-fluidsynth.c:640 msgid "" "FluidSynth\n" "backend" msgstr "" +"FluidSynth-\n" +"Backend" #: src/amidi-plug/i_configure-timidity.c:39 msgid "TIMIDITY BACKEND CONFIGURATION" @@ -1040,15 +625,16 @@ "TiMidity\n" "backend" msgstr "" +"TiMidity-\n" +"Backend" -#: src/amidi-plug/i_fileinfo.c:169 src/bluetooth/gui.c:271 -#: src/sid/xs_interface.c:1769 +#: src/amidi-plug/i_fileinfo.c:169 msgid "Name:" msgstr "Name:" #: src/amidi-plug/i_fileinfo.c:193 msgid " MIDI Info " -msgstr "" +msgstr " MIDI Info " #: src/amidi-plug/i_fileinfo.c:205 msgid "Format:" @@ -1056,7 +642,7 @@ #: src/amidi-plug/i_fileinfo.c:208 msgid "Length (msec):" -msgstr "Länge (Ms):" +msgstr "Länge (ms):" #: src/amidi-plug/i_fileinfo.c:211 msgid "Num of Tracks:" @@ -1072,15 +658,15 @@ #: src/amidi-plug/i_fileinfo.c:223 msgid "BPM (wavg):" -msgstr "" +msgstr "BPM (Wavg):" #: src/amidi-plug/i_fileinfo.c:226 msgid "Time Div:" -msgstr "" +msgstr "Zeitmultiplex:" #: src/amidi-plug/i_fileinfo.c:237 msgid " MIDI Comments and Lyrics " -msgstr "" +msgstr " MIDI Kommentare und Liedtexte " #: src/amidi-plug/i_fileinfo.c:288 msgid "* no comments available in this MIDI file *" @@ -1130,6 +716,27 @@ "for the good help with alpha testing\n" "\n" msgstr "" +"\n" +"Modularer MIDI Musikspieler\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"geschrieben von Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"\n" +"Besonderen Dank an ...\n" +"\n" +"Clemens Ladisch und Jaroslav Kysela\n" +"für ihre coolen Programme aplaymidi und amixer; Diese\n" +"waren neben den alsa-lib Dokus sehr hilfreich, um mehr\n" +"über die ALSA API zu lernen\n" +"\n" +"Alfredo Spadafina\n" +"für das schöne Midi-Keyboard-Logo\n" +"\n" +"Tony Vroon\n" +"für die gute Hilfe bei Alphatests\n" +"\n" #: src/aosd/aosd_style.c:75 msgid "Rectangle" @@ -1147,19 +754,19 @@ msgid "None" msgstr "Kein" -#: src/aosd/aosd_trigger.c:77 +#: src/aosd/aosd_trigger.c:78 msgid "Playback Start" msgstr "Wiedergabebeginn" -#: src/aosd/aosd_trigger.c:78 +#: src/aosd/aosd_trigger.c:79 msgid "Triggers OSD when a playlist entry is played." -msgstr "Löst OSD beim Abspielen eines Wiedergabelisteneintrags aus" +msgstr "Löst OSD beim Abspielen eines Wiedergabelisteneintrags aus." -#: src/aosd/aosd_trigger.c:82 +#: src/aosd/aosd_trigger.c:83 msgid "Title Change" msgstr "Titeländerung" -#: src/aosd/aosd_trigger.c:83 +#: src/aosd/aosd_trigger.c:84 msgid "" "Triggers OSD when, during playback, the song title changes but the filename " "is the same. This is mostly useful to display title changes in internet " @@ -1169,219 +776,217 @@ "der Dateiname gleich bleibt. Das ist hauptsächlich nützlich, um " "Titeländerungen bei Internetstreams anzuzeigen." -#: src/aosd/aosd_trigger.c:89 +#: src/aosd/aosd_trigger.c:90 msgid "Volume Change" msgstr "Lautstärkeänderung" -#: src/aosd/aosd_trigger.c:90 +#: src/aosd/aosd_trigger.c:91 msgid "Triggers OSD when volume is changed." -msgstr "Löst OSD bei Lautstärkeänderung aus" +msgstr "Löst OSD bei Lautstärkeänderung aus." -#: src/aosd/aosd_trigger.c:94 +#: src/aosd/aosd_trigger.c:95 msgid "Pause On" msgstr "Pause An" -#: src/aosd/aosd_trigger.c:95 +#: src/aosd/aosd_trigger.c:96 msgid "Triggers OSD when playback is paused." -msgstr "Löst OSD beim Pausieren der Wiedergabe aus" +msgstr "Löst OSD beim Pausieren der Wiedergabe aus." -#: src/aosd/aosd_trigger.c:99 +#: src/aosd/aosd_trigger.c:100 msgid "Pause Off" msgstr "Pause Aus" -#: src/aosd/aosd_trigger.c:100 +#: src/aosd/aosd_trigger.c:101 msgid "Triggers OSD when playback is unpaused." -msgstr "Löst OSD beim Fortsetzen der Wiedergabe aus" +msgstr "Löst OSD beim Fortsetzen der Wiedergabe aus." -#: src/aosd/aosd_ui.c:168 +#: src/aosd/aosd_ui.c:179 msgid "Placement" msgstr "Platzierung" -#: src/aosd/aosd_ui.c:202 +#: src/aosd/aosd_ui.c:218 msgid "Relative X offset:" -msgstr "Relative X-Verschiebung" +msgstr "Relative X-Verschiebung:" -#: src/aosd/aosd_ui.c:211 +#: src/aosd/aosd_ui.c:227 msgid "Relative Y offset:" -msgstr "Relative Y-Verschiebung" +msgstr "Relative Y-Verschiebung:" -#: src/aosd/aosd_ui.c:220 +#: src/aosd/aosd_ui.c:236 msgid "Max OSD width:" msgstr "Maximale OSD-Breite:" -#: src/aosd/aosd_ui.c:233 +#: src/aosd/aosd_ui.c:249 msgid "Multi-Monitor options" msgstr "Mehr-Bildschirm-Optionen" -#: src/aosd/aosd_ui.c:237 +#: src/aosd/aosd_ui.c:253 msgid "Display OSD using:" msgstr "OSD anzeigen auf:" -#: src/aosd/aosd_ui.c:239 +#: src/aosd/aosd_ui.c:264 msgid "all monitors" msgstr "allen Bildschirmen" -#: src/aosd/aosd_ui.c:242 +#: src/aosd/aosd_ui.c:267 #, c-format msgid "monitor %i" msgstr "Bildschirm %i" -#: src/aosd/aosd_ui.c:295 +#: src/aosd/aosd_ui.c:322 msgid "Timing (ms)" msgstr "Zeitablauf (ms)" -#: src/aosd/aosd_ui.c:300 +#: src/aosd/aosd_ui.c:327 msgid "Display:" msgstr "Anzeige:" -#: src/aosd/aosd_ui.c:305 +#: src/aosd/aosd_ui.c:332 msgid "Fade in:" msgstr "Einblenden:" -#: src/aosd/aosd_ui.c:310 +#: src/aosd/aosd_ui.c:337 msgid "Fade out:" msgstr "Ausblenden:" -#: src/aosd/aosd_ui.c:391 +#: src/aosd/aosd_ui.c:418 msgid "Fonts" msgstr "Schriftarten" -#: src/aosd/aosd_ui.c:399 +#: src/aosd/aosd_ui.c:426 #, c-format msgid "Font %i:" msgstr "Schriftart %i:" -#: src/aosd/aosd_ui.c:416 +#: src/aosd/aosd_ui.c:443 msgid "Shadow" msgstr "Schatten" -#: src/aosd/aosd_ui.c:451 +#: src/aosd/aosd_ui.c:478 msgid "Internationalization" msgstr "Internationalisierung" -#: src/aosd/aosd_ui.c:457 +#: src/aosd/aosd_ui.c:484 msgid "Disable UTF-8 conversion of text (in aosd)" msgstr "UTF-8-Konversion von Text deaktivieren (in Aosd)" -#: src/aosd/aosd_ui.c:475 +#: src/aosd/aosd_ui.c:502 msgid "Select Skin File" msgstr "Skin-Datei auswählen" -#: src/aosd/aosd_ui.c:586 +#: src/aosd/aosd_ui.c:613 msgid "Render Style" msgstr "Render-Stil" -#: src/aosd/aosd_ui.c:602 +#: src/aosd/aosd_ui.c:629 msgid "Colors" msgstr "Farben" -#: src/aosd/aosd_ui.c:615 +#: src/aosd/aosd_ui.c:642 #, c-format msgid "Color %i:" msgstr "Farbe %i:" -#: src/aosd/aosd_ui.c:635 +#: src/aosd/aosd_ui.c:662 msgid "Custom Skin" msgstr "Eigener Skin" -#: src/aosd/aosd_ui.c:641 +#: src/aosd/aosd_ui.c:668 msgid "Skin file:" msgstr "Skin-Datei:" -#: src/aosd/aosd_ui.c:644 src/sid/xs_interface.c:1044 -#: src/sid/xs_interface.c:1236 src/sid/xs_interface.c:1292 +#: src/aosd/aosd_ui.c:671 msgid "Browse" msgstr "Suchen" -#: src/aosd/aosd_ui.c:746 +#: src/aosd/aosd_ui.c:773 msgid "Enable trigger" msgstr "Auslöser aktivieren" -#: src/aosd/aosd_ui.c:773 +#: src/aosd/aosd_ui.c:800 msgid "Event" msgstr "Ereignis" -#: src/aosd/aosd_ui.c:801 +#: src/aosd/aosd_ui.c:828 msgid "Composite manager detected" msgstr "Composite-Manager erkannt" -#: src/aosd/aosd_ui.c:808 +#: src/aosd/aosd_ui.c:835 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " "manager otherwise the OSD won't work properly" msgstr "" "Composite-Manager nicht erkannt;\n" -"sofern ein solcher nicht doch aktiv ist, bitte einen solchen aktivieren, " -"sonst wird der OSD nicht funktionieren" +"Sofern ein solcher nicht doch aktiv ist, bitte einen solchen aktivieren, " +"ansonsten wird das OSD nicht funktionieren" -#: src/aosd/aosd_ui.c:816 +#: src/aosd/aosd_ui.c:843 msgid "Composite manager not required for fake transparency" msgstr "Composite-Manager nicht benötigt für vorgetäuschte Transparenz" -#: src/aosd/aosd_ui.c:854 +#: src/aosd/aosd_ui.c:881 msgid "Transparency" msgstr "Transparenz" -#: src/aosd/aosd_ui.c:860 +#: src/aosd/aosd_ui.c:887 msgid "Fake transparency" msgstr "Pseudo-Transparenz" -#: src/aosd/aosd_ui.c:862 +#: src/aosd/aosd_ui.c:889 msgid "Real transparency (requires X Composite Ext.)" msgstr "Echte Transparenz (benötigt X-Composite-Erweiterung)" -#: src/aosd/aosd_ui.c:904 +#: src/aosd/aosd_ui.c:931 msgid "Composite extension not loaded" msgstr "Composite-Erweiterung nicht geladen" -#: src/aosd/aosd_ui.c:912 +#: src/aosd/aosd_ui.c:939 msgid "Composite extension not available" msgstr "Composite-Erweiterung nicht verfügbar" -#: src/aosd/aosd_ui.c:931 +#: src/aosd/aosd_ui.c:958 #, c-format msgid "Audacious OSD" msgstr "Audacious-OSD" -#: src/aosd/aosd_ui.c:1012 +#: src/aosd/aosd_ui.c:1039 msgid "Audacious OSD - configuration" msgstr "Audacious-OSD - Konfiguration" -#: src/aosd/aosd_ui.c:1033 +#: src/aosd/aosd_ui.c:1060 msgid "Test" msgstr "Test" -#: src/aosd/aosd_ui.c:1048 +#: src/aosd/aosd_ui.c:1075 msgid "Position" msgstr "Position" -#: src/aosd/aosd_ui.c:1053 +#: src/aosd/aosd_ui.c:1080 msgid "Animation" msgstr "Animation" -#: src/aosd/aosd_ui.c:1058 +#: src/aosd/aosd_ui.c:1085 msgid "Text" msgstr "Text" -#: src/aosd/aosd_ui.c:1063 +#: src/aosd/aosd_ui.c:1090 msgid "Decoration" msgstr "Dekoration" -#: src/aosd/aosd_ui.c:1068 +#: src/aosd/aosd_ui.c:1095 msgid "Trigger" msgstr "Auslöser" -#: src/aosd/aosd_ui.c:1073 src/cdaudio-ng/configure.c:178 -#: src/modplug/gui/interface.cxx:689 src/sid/xs_interface.c:1302 +#: src/aosd/aosd_ui.c:1100 src/cdaudio-ng/configure.c:171 msgid "Misc" msgstr "Verschiedenes" -#: src/aosd/aosd_ui.c:1110 +#: src/aosd/aosd_ui.c:1137 msgid "Audacious OSD - about" msgstr "Ãœber Audacious-OSD" -#: src/aosd/aosd_ui.c:1140 +#: src/aosd/aosd_ui.c:1167 msgid "" "\n" "Audacious OSD " @@ -1389,7 +994,7 @@ "\n" "Audacious-OSD " -#: src/aosd/aosd_ui.c:1141 +#: src/aosd/aosd_ui.c:1168 msgid "" "\n" "http://www.develia.org/projects.php?p=audacious#aosd\n" @@ -1411,138 +1016,35 @@ "http://neugierig.org/software/ghosd/\n" "\n" -#: src/bluetooth/agent.c:356 src/bluetooth/agent.c:397 -#, c-format -msgid "Pairing request for '%s'" -msgstr "" - -#: src/bluetooth/agent.c:544 -#, c-format -msgid "Authorization request for %s" -msgstr "" - -#: src/bluetooth/agent.c:728 -#, c-format -msgid "Created bonding with %s" -msgstr "" - -#: src/bluetooth/agent.c:756 -#, c-format -msgid "Removed bonding with %s" -msgstr "" - -#: src/bluetooth/agent.c:808 -msgid "Device has been switched off" -msgstr "" - -#: src/bluetooth/agent.c:811 -msgid "Device has been made non-discoverable" -msgstr "" - -#: src/bluetooth/agent.c:813 -msgid "Device has been made connectable" -msgstr "" - -#: src/bluetooth/agent.c:815 -msgid "Device has been made discoverable" -msgstr "" - -#: src/bluetooth/agent.c:817 -msgid "Device has been made limited discoverable" -msgstr "" - -#: src/bluetooth/agent.c:819 -msgid "Device has been switched into pairing mode" -msgstr "" - -#: src/bluetooth/bluetooth.c:117 -msgid "Bluetooth headset support plugin" -msgstr "" - -#: src/bluetooth/bluetooth.c:118 -msgid "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the " -"Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" -msgstr "" - -#: src/bluetooth/gui.c:148 -msgid "Producer" -msgstr "Hersteller" - -#: src/bluetooth/gui.c:221 -msgid "Available Headsets" -msgstr "Verfügbare Headsets" - -#: src/bluetooth/gui.c:224 -msgid "Current Headset" -msgstr "Derzeitiges Headset" - -#: src/bluetooth/gui.c:227 -msgid "_Refresh" -msgstr "Aktualisieren" - -#: src/bluetooth/gui.c:231 -msgid "_Connect" -msgstr "Verbinden" - -#: src/bluetooth/gui.c:237 -msgid "_Close" -msgstr "Schließen" - -#: src/bluetooth/gui.c:274 -msgid "Class" -msgstr "Klasse" - -#: src/bluetooth/gui.c:278 -msgid "Address:" -msgstr "Adresse:" - -#: src/bluetooth/scan_gui.c:69 -msgid "Bonding finish!" -msgstr "Einbinden abschließen!" - -#: src/bluetooth/scan_gui.c:76 -msgid "No devices found!" -msgstr "Keine Geräte gefunden!" - -#: src/bluetooth/scan_gui.c:119 -msgid "Scanning..." -msgstr "Suche..." - -#: src/bluetooth/scan_gui.c:122 -msgid "Pairing..." -msgstr "Zusammenführen..." - -#: src/bluetooth/scan_gui.c:138 -msgid "Rescan" -msgstr "Abtasten" - -#: src/bluetooth/scan_gui.c:142 src/gtkui/ui_manager.c:66 -#: src/gtkui/ui_manager.c:67 src/hotkey/gui.c:71 src/skins/ui_manager.c:167 -#: src/skins/ui_manager.c:168 -msgid "Play" -msgstr "Wiedergeben" - #: src/blur_scope/config.c:73 msgid "Blur Scope: Color selection" msgstr "Blur Scope: Farbauswahl" -#: src/blur_scope/config.c:83 src/jack/configure.c:111 +#: src/blur_scope/config.c:83 src/jack/configure.c:106 msgid "Options:" msgstr "Optionen:" -#: src/cdaudio-ng/cdaudio-ng.c:278 +#: src/bs2b/plugin.c:157 +msgid "Bauer stereophonic-to-binaural Preferences" +msgstr "Bauer stereophonic-to-binaural Einstellungen" + +#: src/bs2b/plugin.c:168 +msgid "Feed level:" +msgstr "Eingabepegel:" + +#: src/bs2b/plugin.c:182 +msgid "Cut frequency:" +msgstr "Grenzfrequenz:" + +#: src/bs2b/plugin.c:196 +msgid "Presets:" +msgstr "Voreinstellungen:" + +#: src/cdaudio-ng/cdaudio-ng.c:242 msgid "About Audio CD Plugin" msgstr "Ãœber AudioCD-Plugin" -#: src/cdaudio-ng/cdaudio-ng.c:279 +#: src/cdaudio-ng/cdaudio-ng.c:243 msgid "" "Copyright (c) 2007, by Calin Crisan and The Audacious " "Team.\n" @@ -1569,127 +1071,156 @@ "\n" "Copyright 2009 John Lindgren" -#: src/cdaudio-ng/configure.c:155 +#: src/cdaudio-ng/cdaudio-ng.c:552 +msgid "Audio CD" +msgstr "Audio CD" + +#: src/cdaudio-ng/cdaudio-ng.c:924 +msgid "Drive is empty." +msgstr "Laufwerk ist leer." + +#: src/cdaudio-ng/cdaudio-ng.c:926 +msgid "Unsupported disk type." +msgstr "Nicht unterstützter Disk-Typ." + +#: src/cdaudio-ng/configure.c:148 msgid "CD Audio Plugin Configuration" msgstr "CD-Audio-Plugin-Konfiguration" -#: src/cdaudio-ng/configure.c:167 +#: src/cdaudio-ng/configure.c:160 msgid "Digital audio extraction" msgstr "Digitale Audioextraktion" -#: src/cdaudio-ng/configure.c:172 +#: src/cdaudio-ng/configure.c:165 msgid "Title information" msgstr "Titelinformation" -#: src/cdaudio-ng/configure.c:190 +#: src/cdaudio-ng/configure.c:176 msgid "Disc speed:" -msgstr "Diskgeschwindigkeit" +msgstr "Diskgeschwindigkeit:" -#: src/cdaudio-ng/configure.c:198 +#: src/cdaudio-ng/configure.c:184 msgid "Use cd-text if available" msgstr "CD-Text benutzen, falls vorhanden" -#: src/cdaudio-ng/configure.c:205 +#: src/cdaudio-ng/configure.c:191 msgid "Use CDDB if available" msgstr "CDDB benutzen, falls vorhanden" -#: src/cdaudio-ng/configure.c:211 +#: src/cdaudio-ng/configure.c:197 msgid "Server: " msgstr "Server: " -#: src/cdaudio-ng/configure.c:215 +#: src/cdaudio-ng/configure.c:201 msgid "Path: " msgstr "Pfad:" -#: src/cdaudio-ng/configure.c:219 +#: src/cdaudio-ng/configure.c:205 msgid "Port: " msgstr "Port: " -#: src/cdaudio-ng/configure.c:232 +#: src/cdaudio-ng/configure.c:218 msgid "Use HTTP instead of CDDBP" msgstr "HTTP anstatt CDDBP benutzen" -#: src/cdaudio-ng/configure.c:244 +#: src/cdaudio-ng/configure.c:230 msgid "Override default device: " -msgstr "Anderes Device verwenden: " +msgstr "Anderes Gerät verwenden: " + +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:123 +#: src/echo_plugin/gui.c:118 src/jack/configure.c:141 src/null/null.c:107 +#: src/stereo_plugin/stereo.c:118 +msgid "Ok" +msgstr "OK" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Play CD" msgstr "CD wiedergeben" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Add CD" msgstr "CD hinzufügen" -#: src/compressor/plugin.c:58 +#: src/compressor/plugin.c:63 msgid "About Dynamic Range Compression Plugin" -msgstr "" +msgstr "Ãœber Dynamic Range Compression Plugin" -#: src/compressor/plugin.c:91 +#: src/compressor/plugin.c:95 msgid "Dynamic Range Compressor Preferences" -msgstr "" +msgstr "Dynamic Range Compressor Einstellungen" -#: src/compressor/plugin.c:103 -msgid "Target volume:" -msgstr "Zielvolumen:" +#: src/compressor/plugin.c:107 +msgid "Center volume:" +msgstr "Center Lautstärke:" -#: src/compressor/plugin.c:116 -msgid "Effect strength:" -msgstr "Effektstärke:" +#: src/compressor/plugin.c:120 +msgid "Dynamic range:" +msgstr "Dynamischer Bereich:" -#: src/console/configure.c:137 +#: src/console/configure.c:136 msgid "Game Console Music Decoder" msgstr "Konsolen-Musik-Dekoder" -#: src/console/configure.c:171 +#: src/console/configure.c:153 +msgid "General" +msgstr "Allgemein" + +#: src/console/configure.c:155 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "Wiedergabe" + +#: src/console/configure.c:170 msgid "Bass:" msgstr "Bass:" -#: src/console/configure.c:175 src/console/configure.c:186 -#: src/console/configure.c:207 +#: src/console/configure.c:174 src/console/configure.c:185 +#: src/console/configure.c:206 msgid "secs" msgstr "sek" -#: src/console/configure.c:182 +#: src/console/configure.c:181 msgid "Treble:" msgstr "Höhe:" -#: src/console/configure.c:203 +#: src/console/configure.c:202 msgid "Default song length:" msgstr "Standard-Liedlänge:" -#: src/console/configure.c:209 src/modplug/gui/interface.cxx:269 -#: src/sid/xs_interface.c:666 +#: src/console/configure.c:208 msgid "Resampling" msgstr "Resampling" -#: src/console/configure.c:215 +#: src/console/configure.c:214 msgid "Enable audio resampling" msgstr "Audio-Resampling aktivieren" -#: src/console/configure.c:230 +#: src/console/configure.c:229 msgid "Resampling rate:" msgstr "Resampling-Frequenz:" -#: src/console/configure.c:245 +#: src/console/configure.c:233 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:244 msgid "SPC" msgstr "SPC" -#: src/console/configure.c:246 +#: src/console/configure.c:245 msgid "Ignore length from SPC tags" msgstr "Länge von SPC-Tags ignorieren" -#: src/console/configure.c:247 +#: src/console/configure.c:246 msgid "Increase reverb" msgstr "Hall verstärken" -#: src/console/configure.c:272 +#: src/console/configure.c:271 msgid "" "The default song length, expressed in seconds, is used for songs that do not " "provide length information (i.e. looping tracks)." msgstr "" "Die standardmäßige Liedlänge (in Sekunden) wird für Lieder benutzt, die " -"keine Längeninformation beinhalten (z.B. Lieder in der Endlosschleife)." +"keine Längeninformation beinhalten (z.B. Lieder in einer Endlosschleife)." #: src/console/plugin.c:33 msgid "About the Game Console Music Decoder" @@ -1707,653 +1238,306 @@ "Implementierung für Audacious von: William Pitcock , \n" " Shay Green \n" -#: src/crossfade/plugin.c:51 +#: src/crossfade/plugin.c:60 msgid "About Crossfade" msgstr "Ãœber Crossfade Plugin" -#: src/crossfade/plugin.c:84 +#: src/crossfade/plugin.c:92 msgid "Crossfade Preferences" msgstr "Crossfade Einstellungen" -#: src/crossfade/plugin.c:95 +#: src/crossfade/plugin.c:104 msgid "Overlap (in seconds):" msgstr "Ãœberschneiden (in Sekunden):" -#: src/crossfade/plugin.c:129 src/crossfade/plugin.c:137 +#: src/crossfade/plugin.c:135 src/crossfade/plugin.c:141 msgid "Crossfade Error" msgstr "Crossfade Fehler" -#: src/crossfade/plugin.c:130 +#: src/crossfade/plugin.c:135 msgid "" "Crossfading failed because the songs had a different number of channels." msgstr "" +"Crossfaiding fehlgeschlagen, weil die Lieder eine andere Anzahl an Kanälen " +"hatten." -#: src/crossfade/plugin.c:138 +#: src/crossfade/plugin.c:143 msgid "" "Crossfading failed because the songs had different sample rates.\n" "\n" "You can use the Sample Rate Converter effect to resample the songs to the " "same rate." msgstr "" +"Crossfading fehlgeschlagen, weil die Lieder eine andere Sample-Rate hatten.\n" +"\n" +"Sie können den Sample-Rate-Converter benutzen, um die Lieder auf die selbe " +"Bitrate zu resamplen." -#: src/crystalizer/crystalizer.c:104 +#: src/crystalizer/crystalizer.c:100 msgid "Configure Crystalizer" msgstr "Crystalizer konfigurieren" -#: src/crystalizer/crystalizer.c:106 src/stereo_plugin/stereo.c:102 +#: src/crystalizer/crystalizer.c:102 src/stereo_plugin/stereo.c:97 msgid "Effect intensity:" msgstr "Effektstärke:" -#: src/crystalizer/crystalizer.c:143 src/echo_plugin/gui.c:137 -#: src/modplug/gui/interface.cxx:709 src/stereo_plugin/stereo.c:139 +#: src/crystalizer/crystalizer.c:136 src/echo_plugin/gui.c:131 +#: src/stereo_plugin/stereo.c:131 msgid "Apply" msgstr "Ãœbernehmen" -#: src/echo_plugin/gui.c:14 +#: src/echo_plugin/gui.c:15 msgid "" "Echo Plugin\n" "By Johan Levin 1999.\n" "\n" "Surround echo by Carl van Schaik 1999" msgstr "" +"Echo Plugin\n" +"Von Johan Levin 1999.\n" +"\n" +"Surround Echo von Carl van Schaik 1999" -#: src/echo_plugin/gui.c:26 +#: src/echo_plugin/gui.c:27 msgid "About Echo Plugin" msgstr "Ãœber Echo-Plugin" -#: src/echo_plugin/gui.c:69 +#: src/echo_plugin/gui.c:67 msgid "Configure Echo" msgstr "Echo-Plugin konfigurieren" -#: src/echo_plugin/gui.c:82 +#: src/echo_plugin/gui.c:83 msgid "Delay: (ms)" msgstr "Verzögerung: (ms)" -#: src/echo_plugin/gui.c:87 +#: src/echo_plugin/gui.c:88 msgid "Feedback: (%)" msgstr "Rückkopplung: (%)" -#: src/echo_plugin/gui.c:92 +#: src/echo_plugin/gui.c:93 msgid "Volume: (%)" msgstr "Lautstärke: (%)" -#: src/evdev-plug/ed.c:60 -msgid "Playback->Play" -msgstr "Wiedergabe->Abspielen" - -#: src/evdev-plug/ed.c:61 -msgid "Playback->Stop" -msgstr "Wiedergabe->Stopp" - -#: src/evdev-plug/ed.c:62 -msgid "Playback->Pause" -msgstr "Wiedergabe->Pause" - -#: src/evdev-plug/ed.c:63 -msgid "Playback->Prev" -msgstr "Wiedergabe->Zurück" - -#: src/evdev-plug/ed.c:64 -msgid "Playback->Next" -msgstr "Wiedergabe->Nächstes" - -#: src/evdev-plug/ed.c:65 -msgid "Playback->Eject" -msgstr "Wiedergabe->Auswerfen" - -#: src/evdev-plug/ed.c:67 -msgid "Playlist->Repeat" -msgstr "Wiedergabe->Wiederholen" - -#: src/evdev-plug/ed.c:68 -msgid "Playlist->Shuffle" -msgstr "Wiedergabe->Zufällige Wiedergabe" - -#: src/evdev-plug/ed.c:70 -msgid "Volume->Up_5" -msgstr "Lautstärke->Um 5 erhöhen" - -#: src/evdev-plug/ed.c:71 -msgid "Volume->Down_5" -msgstr "Lautstärke->Um 5 verringern" - -#: src/evdev-plug/ed.c:72 -msgid "Volume->Up_10" -msgstr "Lautstärke->Um 10 erhöhen" - -#: src/evdev-plug/ed.c:73 -msgid "Volume->Down_10" -msgstr "Lautstärke->Um 10 verringern" - -#: src/evdev-plug/ed.c:74 -msgid "Volume->Mute" -msgstr "Lautstärke->Lautlos" - -#: src/evdev-plug/ed.c:76 -msgid "Window->Main" -msgstr "Fenster->Hauptfenster" - -#: src/evdev-plug/ed.c:77 -msgid "Window->Playlist" -msgstr "Fenster->Wiedergabeliste" - -#: src/evdev-plug/ed.c:78 -msgid "Window->Equalizer" -msgstr "Fenster->Equalizer" - -#: src/evdev-plug/ed.c:79 -msgid "Window->JumpToFile" -msgstr "Fenster->Zu Titel springen" - -#: src/evdev-plug/ed_internals.c:94 -#, c-format -msgid "" -"event-device-plugin: unable to open device file %s , skipping this device; " -"check that the file exists and that you have read permission for it\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:103 -#, c-format -msgid "" -"event-device-plugin: unable to create a io_channel for device file %s ," -"skipping this device\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:342 -msgid "" -"event-device-plugin: unable to open /proc/bus/input/devices , automatic " -"detection of event devices won't work.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:351 -msgid "" -"event-device-plugin: unable to open a io_channel for /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:361 -msgid "" -"event-device-plugin: an error occurred while reading /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:424 -#, c-format -msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:489 src/evdev-plug/ed_internals.c:583 -#, c-format -msgid "" -"event-device-plugin: unable to load config file %s , default settings will " -"be used.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:535 -#, c-format -msgid "" -"event-device-plugin: incomplete information in config file for device \"%s" -"\" , skipping.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:604 src/evdev-plug/ed_internals.c:936 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_active value for device " -"\"%s\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:840 -#, c-format -msgid "" -"event-device-plugin: unable to access local directory %s , settings will not " -"be saved.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:890 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get filename value for device " -"\"%s\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:906 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get phys value for device \"%s" -"\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:922 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_custom value for device " -"\"%s\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:946 -#, c-format -msgid "" -"event-device-plugin: configuration, unexpected value for device \"%s\", " -"skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_ui.c:212 -msgid "Detected" -msgstr "Erkannt" - -#: src/evdev-plug/ed_ui.c:217 -msgid "Custom" -msgstr "Individuell" - -#: src/evdev-plug/ed_ui.c:223 -msgid "Not Detected" -msgstr "Nicht erkannt" - -#: src/evdev-plug/ed_ui.c:275 src/evdev-plug/ed_ui.c:411 -#: src/evdev-plug/ed_ui.c:874 -msgid "Information" -msgstr "Information" - -#: src/evdev-plug/ed_ui.c:276 -msgid "" -"Cannot open bindings window for a not-detected device.\n" -"Ensure that the device has been correctly plugged in." -msgstr "" - -#: src/evdev-plug/ed_ui.c:319 -msgid "Error" -msgstr "Fehler" - -#: src/evdev-plug/ed_ui.c:320 -msgid "" -"Unable to open selected device.\n" -"Please check read permissions on device file." -msgstr "" - -#: src/evdev-plug/ed_ui.c:341 -msgid "EvDev-Plug - Add custom device" -msgstr "EvDev-Plug - Spezielles Gerät hinzufügen" - -#: src/evdev-plug/ed_ui.c:353 -msgid "" -"EvDev-Plug tries to automatically detect and update information about\n" -"event devices available on the system.\n" -"However, if auto-detect doesn't work for your system, or you have event\n" -"devices in a non-standard location (currently they're only searched in\n" -"/dev/input/ ), you may want to add a custom device, explicitly specifying\n" -"name and device file." -msgstr "" - -#: src/evdev-plug/ed_ui.c:361 -msgid "Device name:" -msgstr "Gerätename:" - -#: src/evdev-plug/ed_ui.c:365 -msgid "Device file:" -msgstr "Gerätedatei:" - -#: src/evdev-plug/ed_ui.c:404 -msgid "(custom)" -msgstr "" - -#: src/evdev-plug/ed_ui.c:412 -msgid "" -"Please specify both name and filename.\n" -"Filename must be specified with absolute path." -msgstr "" - -#: src/evdev-plug/ed_ui.c:447 -msgid "Do you want to remove the existing configuration for selected device?\n" -msgstr "" -"Wollen Sie die existierende Konfiguration des ausgewählten Gerätes löschen?\n" - -#: src/evdev-plug/ed_ui.c:466 -msgid "Do you want to remove the selected custom device?\n" -msgstr "Wollen Sie das ausgewählte Custom-Gerät entfernen?\n" - -#: src/evdev-plug/ed_ui.c:612 -msgid "EvDev-Plug - Configuration" -msgstr "EvDev-Plug - Konfiguration" - -#: src/evdev-plug/ed_ui.c:651 -msgid "Active" -msgstr "Aktiv" - -#: src/evdev-plug/ed_ui.c:655 src/sun/configure.c:486 -msgid "Status" -msgstr "Status" - -#: src/evdev-plug/ed_ui.c:664 -msgid "Device Name" -msgstr "Gerätename" - -#: src/evdev-plug/ed_ui.c:668 -msgid "Device File" -msgstr "Gerätedatei" - -#: src/evdev-plug/ed_ui.c:672 -msgid "Device Address" -msgstr "Geräteadresse" - -#: src/evdev-plug/ed_ui.c:689 -msgid "_Bindings" -msgstr "" - -#: src/evdev-plug/ed_ui.c:838 -msgid "" -"Press a key of your device to bind it;\n" -"if no key is pressed in five seconds, this window\n" -"will close without binding changes." -msgstr "" - -#: src/evdev-plug/ed_ui.c:875 -msgid "" -"This input event has been already assigned.\n" -"\n" -"It's not possible to assign multiple actions to the same input event " -"(although it's possible to assign the same action to multiple events)." -msgstr "" - -#: src/evdev-plug/ed_ui.c:1323 -msgid "EvDev-Plug - Bindings Configuration" -msgstr "EvDev-Plug - Bindungskonfiguration" - -#: src/evdev-plug/ed_ui.c:1363 -msgid "Name: " -msgstr "Name: " - -#: src/evdev-plug/ed_ui.c:1372 -msgid "Filename: " -msgstr "Dateiname: " - -#: src/evdev-plug/ed_ui.c:1381 -msgid "Phys.Address: " -msgstr "Phys. Adresse: " - -#: src/evdev-plug/ed_ui.c:1460 -msgid "EvDev-Plug - about" -msgstr "Ãœber EvDev-Plug" - -#: src/evdev-plug/ed_ui.c:1491 -msgid "" -"\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"written by Giacomo Lozito\n" -msgstr "" - -#: src/ffaudio/ffaudio-core.c:662 +#: src/ffaudio/ffaudio-core.c:719 #, c-format msgid "" "Multi-format audio decoding plugin for Audacious based on\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" "Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" "\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" "Audacious plugin by:\n" " William Pitcock ,\n" " Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" msgstr "" +"Multi-Format Audio-Decoding-Plugin für Audacious basierend auf dem\n" +"FFmpeg Multimedia Framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious Plugin von:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" -#: src/ffaudio/ffaudio-core.c:675 +#: src/ffaudio/ffaudio-core.c:733 msgid "About FFaudio Plugin" msgstr "Ãœber FFaudio Plugin" -#: src/filewriter/filewriter.c:180 +#: src/filewriter/filewriter.c:166 msgid "About FileWriter-Plugin" msgstr "Ãœber FileWriter-Plugin" -#: src/filewriter/filewriter.c:181 -msgid "" -"FileWriter-Plugin\n" -"\n" -"This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" - -#: src/filewriter/filewriter.c:466 +#: src/filewriter/filewriter.c:461 msgid "File Writer Configuration" msgstr "FileWriter-Konfiguration" -#: src/filewriter/filewriter.c:478 +#: src/filewriter/filewriter.c:473 msgid "Output file format:" msgstr "Ausgabedatei-Format:" -#: src/filewriter/filewriter.c:496 src/ladspa/ladspa.c:1058 +#: src/filewriter/filewriter.c:491 msgid "Configure" msgstr "Konfigurieren" -#: src/filewriter/filewriter.c:511 +#: src/filewriter/filewriter.c:506 msgid "Save into original directory" msgstr "In Original-Verzeichnis speichern" -#: src/filewriter/filewriter.c:516 +#: src/filewriter/filewriter.c:511 msgid "Save into custom directory" msgstr "In anderes Verzeichnis speichern" -#: src/filewriter/filewriter.c:528 +#: src/filewriter/filewriter.c:521 msgid "Output file folder:" msgstr "Ausgabedatei-Verzeichnis:" -#: src/filewriter/filewriter.c:532 +#: src/filewriter/filewriter.c:525 msgid "Pick a folder" msgstr "Verzeichnis wählen" -#: src/filewriter/filewriter.c:551 +#: src/filewriter/filewriter.c:544 msgid "Get filename from:" msgstr "Dateiname erhalten von:" -#: src/filewriter/filewriter.c:554 +#: src/filewriter/filewriter.c:547 msgid "original file tags" msgstr "ursprünglichen Datei-Tags" -#: src/filewriter/filewriter.c:560 +#: src/filewriter/filewriter.c:553 msgid "original filename" msgstr "ursprünglichen Dateinamen" -#: src/filewriter/filewriter.c:570 +#: src/filewriter/filewriter.c:563 msgid "Don't strip file name extension" msgstr "Dateiendung nicht entfernen" -#: src/filewriter/filewriter.c:574 -msgid "" -"If enabled, the extension from the original filename will not be stripped " -"before adding the new file extension to the end." -msgstr "" -"Wenn aktiviert, wird die Erweiterung des ursprünglichen Dateinamens nicht " -"entfernt, bevor die neue Dateierweiterung am Ende angefügt wird." - -#: src/filewriter/filewriter.c:588 +#: src/filewriter/filewriter.c:578 msgid "Prepend track number to filename" msgstr "Titelnummer vor Dateinamen anhängen" -#: src/filewriter/mp3.c:710 +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:765 +msgid "Auto" +msgstr "Automatisch" + +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" +msgstr "Joint-Stereo" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Stereo" +msgstr "Stereo" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Mono" +msgstr "Mono" + +#: src/filewriter/mp3.c:706 msgid "MP3 Configuration" msgstr "MP3-Konfiguration" -#: src/filewriter/mp3.c:737 +#: src/filewriter/mp3.c:729 msgid "Algorithm Quality:" msgstr "Algorithmen-Qualität:" -#: src/filewriter/mp3.c:759 -msgid "" -"best/slowest:0;\n" -"worst/fastest:9;\n" -"recommended:2;\n" -"default:5;" -msgstr "" -"beste/langsamste:0;\n" -"schlechteste/schnellste:9;\n" -"empfohlen:2;\n" -"voreingestellt:5;" - -#: src/filewriter/mp3.c:767 +#: src/filewriter/mp3.c:754 msgid "Output Samplerate:" msgstr "Ausgabe-Abtastfrequenz:" -#: src/filewriter/mp3.c:778 src/filewriter/mp3.c:919 -msgid "Auto" -msgstr "Automatisch" - -#: src/filewriter/mp3.c:800 +#: src/filewriter/mp3.c:782 msgid "(Hz)" msgstr "(Hz)" -#: src/filewriter/mp3.c:812 +#: src/filewriter/mp3.c:789 msgid "Bitrate / Compression ratio:" msgstr "Bitrate / Kompressionsverhältnis:" -#: src/filewriter/mp3.c:838 +#: src/filewriter/mp3.c:813 msgid "Bitrate (kbps):" msgstr "Bitrate (kbps):" -#: src/filewriter/mp3.c:879 +#: src/filewriter/mp3.c:846 msgid "Compression ratio:" msgstr "Kompressionsverhältnis:" -#: src/filewriter/mp3.c:909 +#: src/filewriter/mp3.c:870 msgid "Audio Mode:" msgstr "Audio-Modus:" -#: src/filewriter/mp3.c:924 -msgid "Joint-Stereo" -msgstr "Joint-Stereo" - -#: src/filewriter/mp3.c:967 +#: src/filewriter/mp3.c:895 msgid "Misc:" msgstr "Verschiedenes:" -#: src/filewriter/mp3.c:978 +#: src/filewriter/mp3.c:906 msgid "Enforce strict ISO complience" msgstr "Strikte ISO-Erfüllung erzwingen" -#: src/filewriter/mp3.c:989 +#: src/filewriter/mp3.c:917 msgid "Error protection" msgstr "Fehlerschutz" -#: src/filewriter/mp3.c:1001 -msgid "Adds 16 bit checksum to every frame" -msgstr "16-Bit-Prüfsumme zu jedem Frame hinzufügen" - -#: src/filewriter/mp3.c:1006 src/filewriter/vorbis.c:247 -#: src/modplug/gui/interface.cxx:320 +#: src/filewriter/mp3.c:929 src/filewriter/vorbis.c:247 msgid "Quality" msgstr "Qualität" -#: src/filewriter/mp3.c:1018 +#: src/filewriter/mp3.c:939 msgid "Enable VBR/ABR" msgstr "VBR/ABR aktivieren" -#: src/filewriter/mp3.c:1030 +#: src/filewriter/mp3.c:949 msgid "Type:" msgstr "Typ:" -#: src/filewriter/mp3.c:1041 -msgid "Variable bitrate" -msgstr "Variable Bitrate" - -#: src/filewriter/mp3.c:1053 -msgid "Average bitrate" -msgstr "Durchschnittliche Bitrate" - -#: src/filewriter/mp3.c:1067 +#: src/filewriter/mp3.c:982 msgid "VBR Options:" msgstr "VBR-Optionen:" -#: src/filewriter/mp3.c:1083 +#: src/filewriter/mp3.c:998 msgid "Minimum bitrate (kbps):" msgstr "Minimale Bitrate (kbps):" -#: src/filewriter/mp3.c:1119 +#: src/filewriter/mp3.c:1025 msgid "Maximum bitrate (kbps):" msgstr "Maximale Bitrate (kbps):" -#: src/filewriter/mp3.c:1151 +#: src/filewriter/mp3.c:1048 msgid "Strictly enforce minimum bitrate" msgstr "Minimale Bitrate erzwingen" -#: src/filewriter/mp3.c:1153 -msgid "" -"For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/" -"mp3 player)" -msgstr "" -"Zur Benutzung mit Playern, die kein MP3 mit niedriger Bitrate unterstützen " -"(Apex AD600-A DVD/MP3 player)" - -#: src/filewriter/mp3.c:1166 +#: src/filewriter/mp3.c:1060 msgid "ABR Options:" msgstr "ABR-Optionen:" -#: src/filewriter/mp3.c:1176 +#: src/filewriter/mp3.c:1070 msgid "Average bitrate (kbps):" msgstr "Durchschnittliche Bitrate (kbps):" -#: src/filewriter/mp3.c:1213 +#: src/filewriter/mp3.c:1098 msgid "VBR quality level:" msgstr "VBR-Qualitätsstufe:" -#: src/filewriter/mp3.c:1228 -msgid "" -"highest:0;\n" -"lowest:9;\n" -"default:4;" -msgstr "" -"höchste:0;\n" -"niedrigste:9;\n" -"voreingestellt:4;" - -#: src/filewriter/mp3.c:1236 +#: src/filewriter/mp3.c:1117 msgid "Don't write Xing VBR header" msgstr "Xing-VBR-Header nicht schreiben" -#: src/filewriter/mp3.c:1250 +#: src/filewriter/mp3.c:1131 msgid "VBR/ABR" msgstr "VBR/ABR" -#: src/filewriter/mp3.c:1262 +#: src/filewriter/mp3.c:1141 msgid "Frame params:" msgstr "Frame-Parameter:" -#: src/filewriter/mp3.c:1274 +#: src/filewriter/mp3.c:1153 msgid "Mark as copyright" msgstr "Als Copyright kennzeichnen" -#: src/filewriter/mp3.c:1285 +#: src/filewriter/mp3.c:1164 msgid "Mark as original" msgstr "Als Original kennzeichnen" -#: src/filewriter/mp3.c:1297 +#: src/filewriter/mp3.c:1176 msgid "ID3 params:" msgstr "ID3-Parameter:" -#: src/filewriter/mp3.c:1308 +#: src/filewriter/mp3.c:1187 msgid "Force addition of version 2 tag" msgstr "Hinzufügen von Version-2-Tags erzwingen" -#: src/filewriter/mp3.c:1318 +#: src/filewriter/mp3.c:1197 msgid "Only add v1 tag" msgstr "Nur v1-Tag hinzufügen" -#: src/filewriter/mp3.c:1325 +#: src/filewriter/mp3.c:1204 msgid "Only add v2 tag" msgstr "Nur v2-Tag hinzufügen" -#: src/filewriter/mp3.c:1346 +#: src/filewriter/mp3.c:1225 msgid "Tags" msgstr "Tags" @@ -2365,11 +1549,11 @@ msgid "Quality level (0 - 10):" msgstr "Qualitätsstufe (0 - 10):" -#: src/flacng/plugin.c:457 -msgid "FLAC Audio Plugin " -msgstr "FLAC-Audio-Plugin " +#: src/flacng/plugin.c:380 +msgid "About FLAC Audio Plugin" +msgstr "Ãœber FLAC-Audio-Plugin" -#: src/flacng/plugin.c:458 +#: src/flacng/plugin.c:381 msgid "" "\n" "\n" @@ -2385,15 +1569,11 @@ "\n" "http://www.skytale.net/projects/bmp-flac2/" -#: src/flacng/plugin.c:464 -msgid "About FLAC Audio Plugin" -msgstr "Ãœber FLAC-Audio-Plugin" - -#: src/gnomeshortcuts/gnomeshortcuts.c:306 +#: src/gnomeshortcuts/gnomeshortcuts.c:303 msgid "About Gnome Shortcut Plugin" msgstr "Ãœber das Gnome-Shortcut-Plugin" -#: src/gnomeshortcuts/gnomeshortcuts.c:307 +#: src/gnomeshortcuts/gnomeshortcuts.c:304 msgid "" "Gnome Shortcut Plugin\n" "Let's you control the player with Gnome's shortcuts.\n" @@ -2407,490 +1587,463 @@ "Copyright (C) 2007-2008 Sascha Hlusiak \n" "\n" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:273 -msgid "Open Files" -msgstr "Dateien öffnen" - -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 -msgid "Add Files" -msgstr "Dateien hinzufügen" - -#: src/gntui/gntui.c:271 -msgid "Audacious2" -msgstr "Audacious2" - -#: src/gntui/gntui.c:312 -msgid "gnt interface" -msgstr "GNT Interface" - -#: src/gtkui/actions.c:257 src/skins/ui_main.c:818 -msgid "Can't jump to time when no track is being played.\n" -msgstr "Kann nicht zu Zeit springen, wenn kein Titel gespielt wird.\n" - -#: src/gtkui/actions.c:272 src/gtkui/ui_manager.c:204 -#: src/gtkui/ui_manager.c:205 src/skins/ui_main.c:833 -#: src/skins/ui_manager.c:410 src/skins/ui_manager.c:411 -msgid "Jump to Time" -msgstr "Zu Zeit springen" +#: src/gtkui/columns.c:36 +msgid "Entry number" +msgstr "Titelnummer" -#: src/gtkui/actions.c:289 src/skins/ui_main.c:854 -msgid "minutes:seconds" -msgstr "Minuten:Sekunden" +#: src/gtkui/columns.c:36 src/search-tool/search-tool.c:43 +msgid "Title" +msgstr "Titel" -#: src/gtkui/actions.c:299 src/skins/ui_main.c:864 -msgid "Track length:" -msgstr "Titellänge:" +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:42 +msgid "Artist" +msgstr "Künstler" + +#: src/gtkui/columns.c:37 +msgid "Year" +msgstr "Jahr" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:43 +msgid "Album" +msgstr "Album" -#: src/gtkui/actions.c:610 src/skins/ui_playlist.c:648 -#, c-format -msgid "Error writing playlist \"%s\": %s" -msgstr "Fehler beim Schreiben der Liste \"%s\": %s" +#: src/gtkui/columns.c:37 +msgid "Track" +msgstr "Titel" -#: src/gtkui/actions.c:625 src/skins/ui_playlist.c:670 -#, c-format -msgid "%s already exist. Continue?" -msgstr "%s existiert schon. Trotzdem fortfahren?" +#: src/gtkui/columns.c:37 +msgid "Queue position" +msgstr "Warteschlangen-Position" + +#: src/gtkui/columns.c:38 +msgid "Length" +msgstr "Länge" + +#: src/gtkui/columns.c:38 +msgid "File path" +msgstr "Dateipfad" -#: src/gtkui/actions.c:651 src/skins/ui_manager.c:214 -msgid "Export Playlist" -msgstr "Wiedergabeliste exportieren" +#: src/gtkui/columns.c:38 +msgid "File name" +msgstr "Dateiname" -#: src/gtkui/actions.c:723 src/skins/ui_manager.c:211 -msgid "Import Playlist" -msgstr "Wiedergabeliste importieren" +#: src/gtkui/columns.c:38 +msgid "Custom title" +msgstr "Benutzerdefinierter Titel" + +#: src/gtkui/columns.c:39 +msgid "Bitrate" +msgstr "Bitrate" + +#: src/gtkui/columns.c:278 +msgid "Choose Columns" +msgstr "Spalten auswählen" + +#: src/gtkui/columns.c:292 +msgid "Available:" +msgstr "Verfügbar:" + +#: src/gtkui/columns.c:326 +msgid "Chosen:" +msgstr "Ausgewählt:" + +#: src/gtkui/layout.c:122 +msgid "Dock at Left" +msgstr "Links andocken" + +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "Rechts andocken" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "Oben andocken" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "Unten andocken" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "Abdocken" + +#: src/gtkui/layout.c:123 src/ladspa/plugin.c:644 +msgid "Disable" +msgstr "Deaktivieren" + +#: src/gtkui/menus.c:131 +msgid "_Open Files ..." +msgstr "_Dateien öffnen ..." + +#: src/gtkui/menus.c:132 +msgid "Open _URL ..." +msgstr "_URL öffnen ..." + +#: src/gtkui/menus.c:133 +msgid "_Add Files ..." +msgstr "Dateien _hinzufügen ..." + +#: src/gtkui/menus.c:134 +msgid "Add U_RL ..." +msgstr "U_RL hinzufügen ..." + +#: src/gtkui/menus.c:136 +msgid "A_bout ..." +msgstr "_Info ..." + +#: src/gtkui/menus.c:137 +msgid "_Preferences ..." +msgstr "_Einstellungen ..." -#: src/gtkui/ui_gtk.c:72 -msgid "GTK Interface" -msgstr "GTK Interface" +#: src/gtkui/menus.c:138 src/skins/ui_manager.c:406 +msgid "_Quit" +msgstr "_Beenden" -#: src/gtkui/ui_gtk.c:281 src/skins/ui_main.c:388 -#, c-format -msgid "%s - Audacious" -msgstr "%s - Audacious" +#: src/gtkui/menus.c:141 +msgid "_Play" +msgstr "_Wiedergeben" -#: src/gtkui/ui_gtk.c:287 src/skins/ui_main.c:390 src/skins/ui_main.c:2166 -msgid "Audacious" -msgstr "Audacious" +#: src/gtkui/menus.c:142 +msgid "Paus_e" +msgstr "_Pause" -#: src/gtkui/ui_manager.c:35 src/gtkui/ui_manager.c:36 -#: src/skins/ui_manager.c:53 src/skins/ui_manager.c:54 -msgid "Stop after Current Song" -msgstr "Nach aktuellem Titel stoppen" +#: src/gtkui/menus.c:143 +msgid "_Stop" +msgstr "_Stopp" -#: src/gtkui/ui_manager.c:38 src/gtkui/ui_manager.c:39 -#: src/skins/ui_manager.c:59 src/skins/ui_manager.c:60 -msgid "Repeat" -msgstr "Wiederholen" +#: src/gtkui/menus.c:144 +msgid "Pre_vious" +msgstr "_Vorheriger" -#: src/gtkui/ui_manager.c:41 src/gtkui/ui_manager.c:42 -#: src/skins/ui_manager.c:62 src/skins/ui_manager.c:63 -msgid "Shuffle" -msgstr "Zufällige Wiedergabe" +#: src/gtkui/menus.c:145 +msgid "_Next" +msgstr "_Nächster" -#: src/gtkui/ui_manager.c:44 src/gtkui/ui_manager.c:45 -#: src/skins/ui_manager.c:65 src/skins/ui_manager.c:66 -msgid "No Playlist Advance" -msgstr "Wiedergabeliste nicht weiterspielen" +#: src/gtkui/menus.c:147 +msgid "_Repeat" +msgstr "Wieder_holen" -#: src/gtkui/ui_manager.c:47 -msgid "Show playlists" -msgstr "Wiedergabeliste anzeigen" - -#: src/gtkui/ui_manager.c:48 -msgid "Show/hide playlists" -msgstr "Wiedergabeliste anzeigen/verstecken" - -#: src/gtkui/ui_manager.c:50 -msgid "Show infoarea" -msgstr "Infobereich anzeigen" - -#: src/gtkui/ui_manager.c:51 -msgid "Show/hide infoarea" -msgstr "Infobereich anzeigen/verstecken" +#: src/gtkui/menus.c:148 +msgid "S_huffle" +msgstr "_Zufällige Wiedergabe" -#: src/gtkui/ui_manager.c:53 -msgid "Show main menu" -msgstr "Hauptfenster anzeigen" +#: src/gtkui/menus.c:149 +msgid "N_o Playlist Advance" +msgstr "Wiedergabeliste ni_cht weiterspielen" -#: src/gtkui/ui_manager.c:54 -msgid "Show/hide main menu" -msgstr "Hauptfenster anzeigen/verstecken" - -#: src/gtkui/ui_manager.c:56 -msgid "Show statusbar" -msgstr "Statusleiste anzeigen" - -#: src/gtkui/ui_manager.c:57 -msgid "Show/hide statusbar" -msgstr "Statusleiste anzeigen/verstecken" +#: src/gtkui/menus.c:150 +msgid "Stop _After This Song" +msgstr "N_ach Titel stoppen" -#: src/gtkui/ui_manager.c:69 src/gtkui/ui_manager.c:70 -#: src/skins/ui_manager.c:170 src/skins/ui_manager.c:171 -msgid "Pause" -msgstr "Pause" +#: src/gtkui/menus.c:152 src/gtkui/menus.c:212 +msgid "Song _Info ..." +msgstr "Titel-_Info ..." -#: src/gtkui/ui_manager.c:72 src/gtkui/ui_manager.c:73 src/hotkey/gui.c:73 -#: src/skins/ui_manager.c:173 src/skins/ui_manager.c:174 -msgid "Stop" -msgstr "Stopp" +#: src/gtkui/menus.c:153 +msgid "Jump to _Time ..." +msgstr "Zu Z_eitangabe springen ..." -#: src/gtkui/ui_manager.c:75 src/gtkui/ui_manager.c:76 -#: src/skins/ui_manager.c:176 src/skins/ui_manager.c:177 -msgid "Previous" -msgstr "Vorheriger" +#: src/gtkui/menus.c:154 +msgid "_Jump to Song ..." +msgstr "Zu _Titel sp_ringen ..." -#: src/gtkui/ui_manager.c:78 src/gtkui/ui_manager.c:79 -#: src/skins/ui_manager.c:179 src/skins/ui_manager.c:180 -msgid "Next" -msgstr "Nächster" +#: src/gtkui/menus.c:157 +msgid "By Track _Number" +msgstr "Nach Titel_nummer" -#: src/gtkui/ui_manager.c:84 src/skins/ui_manager.c:197 -msgid "Playlist" -msgstr "Wiedergabeliste" +#: src/gtkui/menus.c:158 +msgid "By _Title" +msgstr "Nach _Titel" -#: src/gtkui/ui_manager.c:86 src/gtkui/ui_manager.c:87 -#: src/skins/ui_manager.c:199 src/skins/ui_manager.c:200 -msgid "New Playlist" -msgstr "Neue Wiedergabeliste" +#: src/gtkui/menus.c:159 +msgid "By _Artist" +msgstr "Nach _Künstler" -#: src/gtkui/ui_manager.c:89 src/gtkui/ui_manager.c:90 -#: src/skins/ui_manager.c:208 src/skins/ui_manager.c:209 -msgid "Delete Playlist" -msgstr "Wiedergabeliste löschen" +#: src/gtkui/menus.c:160 +msgid "By A_lbum" +msgstr "Nach _Album" -#: src/gtkui/ui_manager.c:92 -msgid "Import Playlist ..." -msgstr "Wiedergabeliste importieren ..." +#: src/gtkui/menus.c:161 +msgid "By Release _Date" +msgstr "Nach _Erscheinungsdatum" -#: src/gtkui/ui_manager.c:93 src/skins/ui_manager.c:212 -msgid "Loads a playlist file into the selected playlist." -msgstr "Lade Wiedergabeliste in ausgewählte Wiedergabeliste" +#: src/gtkui/menus.c:162 +msgid "By _File Path" +msgstr "Nach _Dateipfad" -#: src/gtkui/ui_manager.c:95 -msgid "Export Playlist ..." -msgstr "Wiedergabeliste exportieren ..." +#: src/gtkui/menus.c:163 +msgid "By _Custom Title" +msgstr "Nach _benutzerdefiniertem Titel" -#: src/gtkui/ui_manager.c:96 src/skins/ui_manager.c:215 -msgid "Saves the selected playlist." -msgstr "Ausgewählte Wiedergabelisten speichern." +#: src/gtkui/menus.c:165 +msgid "R_everse Order" +msgstr "V_ertausche Anordnung" -#: src/gtkui/ui_manager.c:98 src/skins/ui_manager.c:217 -msgid "Save All Playlists" -msgstr "Alle Wiedergabelisten speichern" +#: src/gtkui/menus.c:166 +msgid "_Random Order" +msgstr "Zufällige Ano_rdnung" -#: src/gtkui/ui_manager.c:99 src/skins/ui_manager.c:218 -msgid "" -"Saves all the playlists that are open. Note that this is done automatically " -"when Audacious quits." -msgstr "" -"Alle geöffneten Playlisten speichern. Dies geschieht automatisch beim " -"Beenden von Audacious." +#: src/gtkui/menus.c:169 src/gtkui/menus.c:214 +msgid "_Refresh" +msgstr "_Aktualisieren" -#: src/gtkui/ui_manager.c:103 -msgid "Refresh" -msgstr "Aktualisieren" +#: src/gtkui/menus.c:170 +msgid "Remove _Unavailable Files" +msgstr "Nicht _verfügbare Dateien entfernen" -#: src/gtkui/ui_manager.c:104 src/skins/ui_manager.c:223 -msgid "Refreshes metadata associated with a playlist entry." -msgstr "Metadaten aktualisieren." +#: src/gtkui/menus.c:172 +msgid "_Sort" +msgstr "_Sortieren" -#: src/gtkui/ui_manager.c:107 -msgid "Playlist Manager" -msgstr "Wiedergabelisten-Manager" +#: src/gtkui/menus.c:174 +msgid "_New" +msgstr "_Neu" -#: src/gtkui/ui_manager.c:108 src/skins/ui_manager.c:227 -msgid "Opens the playlist manager." -msgstr "Öffne Wiedergabelisten-Manager." - -#: src/gtkui/ui_manager.c:111 -msgid "Add URL ..." -msgstr "URL hinzufügen ..." +#: src/gtkui/menus.c:175 src/gtkui/menus.c:225 +msgid "_Close" +msgstr "S_chließen" -#: src/gtkui/ui_manager.c:112 src/skins/ui_manager.c:237 -msgid "Adds a remote track to the playlist." -msgstr "Entfernter Titel hinzufügen." +#: src/gtkui/menus.c:177 +msgid "_Import ..." +msgstr "_Importieren ..." -#: src/gtkui/ui_manager.c:115 -msgid "Add Files ..." -msgstr "Dateien hinzufügen ..." +#: src/gtkui/menus.c:178 +msgid "_Export ..." +msgstr "_Exportieren ..." -#: src/gtkui/ui_manager.c:116 src/skins/ui_manager.c:241 -msgid "Adds files to the playlist." -msgstr "Fügt Dateien in Wiedergabeliste ein." +#: src/gtkui/menus.c:180 +msgid "_Playlist Manager ..." +msgstr "_Wiedergabelisten-Manager ..." -#: src/gtkui/ui_manager.c:119 src/skins/ui_manager.c:264 -msgid "Remove All" -msgstr "Alle entfernen" +#: src/gtkui/menus.c:181 +msgid "_Queue Manager ..." +msgstr "Warte_schlangen-Manager ..." -#: src/gtkui/ui_manager.c:120 src/skins/ui_manager.c:265 -msgid "Removes all entries from the playlist." -msgstr "Entfernt alle Warteschlangeneinträge." +#: src/gtkui/menus.c:184 +msgid "Volume _Up" +msgstr "Lautstärke er_höhen" -#: src/gtkui/ui_manager.c:123 src/skins/ui_manager.c:290 -msgid "Remove Unselected" -msgstr "Nicht ausgewählte entfernen" +#: src/gtkui/menus.c:185 +msgid "Volume _Down" +msgstr "Lautstärke _verringern" -#: src/gtkui/ui_manager.c:124 src/skins/ui_manager.c:291 -msgid "Remove unselected entries from the playlist." -msgstr "Entferne nicht ausgewählte Titel." +#: src/gtkui/menus.c:187 +msgid "_Equalizer" +msgstr "_Equalizer" -#: src/gtkui/ui_manager.c:127 src/skins/ui_manager.c:294 -msgid "Remove Selected" -msgstr "Auswahl entfernen" +#: src/gtkui/menus.c:189 +msgid "E_ffects" +msgstr "E_ffekte" -#: src/gtkui/ui_manager.c:128 src/skins/ui_manager.c:295 -msgid "Remove selected entries from the playlist." -msgstr "Ausgewählte Wiedergabelisteneinträge entfernen." +#: src/gtkui/menus.c:192 +msgid "_Interface" +msgstr "_Interface" -#: src/gtkui/ui_manager.c:131 -msgid "Sort" -msgstr "Sortieren" +#: src/gtkui/menus.c:193 +msgid "_Visualizations" +msgstr "_Visualisierungen" -#: src/gtkui/ui_manager.c:132 src/skins/ui_manager.c:330 -#: src/skins/ui_manager.c:360 -msgid "By Track Number" -msgstr "Nach Titelnummer" +#: src/gtkui/menus.c:195 +msgid "Show _Menu Bar" +msgstr "_Menüleiste anzeigen" -#: src/gtkui/ui_manager.c:134 src/skins/ui_manager.c:278 -#: src/skins/ui_manager.c:306 src/skins/ui_manager.c:336 -msgid "By Title" -msgstr "Nach Titel" +#: src/gtkui/menus.c:196 +msgid "Show I_nfo Bar" +msgstr "I_nfobereich anzeigen" -#: src/gtkui/ui_manager.c:136 src/skins/ui_manager.c:314 -#: src/skins/ui_manager.c:344 -msgid "By Artist" -msgstr "Nach Künstler" +#: src/gtkui/menus.c:197 +msgid "Show _Status Bar" +msgstr "_Statusleiste anzeigen" -#: src/gtkui/ui_manager.c:138 src/skins/ui_manager.c:310 -#: src/skins/ui_manager.c:340 -msgid "By Album" -msgstr "Nach Album" +#: src/gtkui/menus.c:199 +msgid "Show Column _Headers" +msgstr "Spaltenüberschriften _anzeigen" -#: src/gtkui/ui_manager.c:140 -msgid "By File Path" -msgstr "Nach Dateipfad" +#: src/gtkui/menus.c:200 +msgid "Choose _Columns ..." +msgstr "Spalten aus_wählen ..." -#: src/gtkui/ui_manager.c:142 -msgid "Reverse Order" -msgstr "Vertausche Anordnung" +#: src/gtkui/menus.c:201 +msgid "Scrol_l on Song Change" +msgstr "Mit Titelwechsel scrol_len" -#: src/gtkui/ui_manager.c:147 -msgid "Output" -msgstr "Ausgabe" +#: src/gtkui/menus.c:204 +msgid "_File" +msgstr "_Datei" -#: src/gtkui/ui_manager.c:149 src/modplug/gui/interface.cxx:572 -msgid "Effects" -msgstr "Effekte" +#: src/gtkui/menus.c:205 +msgid "_Playback" +msgstr "_Wiedergabe" -#: src/gtkui/ui_manager.c:151 -msgid "Equalizer" -msgstr "" +#: src/gtkui/menus.c:206 +msgid "P_laylist" +msgstr "W_iedergabeliste" -#: src/gtkui/ui_manager.c:156 src/skins/ui_manager.c:232 -msgid "View" -msgstr "Ansicht" +#: src/gtkui/menus.c:207 src/gtkui/menus.c:221 +msgid "_Services" +msgstr "Di_enste" -#: src/gtkui/ui_manager.c:157 src/skins/ui_manager.c:233 -msgid "Interface" -msgstr "Interface" +#: src/gtkui/menus.c:208 +msgid "_Output" +msgstr "_Ausgabe" -#: src/gtkui/ui_manager.c:164 src/skins/ui_manager.c:370 -msgid "File" -msgstr "Datei" +#: src/gtkui/menus.c:209 +msgid "_View" +msgstr "An_sicht" -#: src/gtkui/ui_manager.c:167 -msgid "Components" -msgstr "Komponenten" +#: src/gtkui/menus.c:213 +msgid "_Queue/Unqueue" +msgstr "In/Aus _Warteschlange" -#: src/gtkui/ui_manager.c:169 src/gtkui/ui_manager.c:172 -#: src/skins/ui_manager.c:375 src/skins/ui_manager.c:378 -msgid "View Track Details" -msgstr "Zeige Titeldetails" +#: src/gtkui/menus.c:216 +msgid "Cu_t" +msgstr "Aus_schneiden" -#: src/gtkui/ui_manager.c:170 src/gtkui/ui_manager.c:173 -#: src/skins/ui_manager.c:376 src/skins/ui_manager.c:379 -msgid "View track details" -msgstr "Zeige Titeldetails" +#: src/gtkui/menus.c:217 +msgid "_Copy" +msgstr "_Kopieren" -#: src/gtkui/ui_manager.c:175 src/gtkui/ui_manager.c:176 -#: src/skins/ui_manager.c:381 src/skins/ui_manager.c:382 -msgid "About Audacious" -msgstr "Ãœber Audacious" +#: src/gtkui/menus.c:218 +msgid "_Paste" +msgstr "_Einfügen" -#: src/gtkui/ui_manager.c:178 -msgid "Open Files ..." -msgstr "Dateien öffnen ..." +#: src/gtkui/menus.c:219 +msgid "Select _All" +msgstr "_Alles auswählen" -#: src/gtkui/ui_manager.c:179 src/skins/ui_manager.c:385 -msgid "Load and play a file" -msgstr "Datei laden und abspielen" +#: src/gtkui/menus.c:224 +msgid "_Rename" +msgstr "_Umbenennen" -#: src/gtkui/ui_manager.c:181 -msgid "Open URL ..." -msgstr "URL öffnen ..." +#: src/gtkui/ui_gtk.c:95 +msgid "GTK Interface" +msgstr "GTK Interface" -#: src/gtkui/ui_manager.c:182 src/skins/ui_manager.c:388 -msgid "Play media from the selected location" -msgstr "Medien aus bestimmter Adresse abspielen" +#: src/gtkui/ui_gtk.c:156 src/skins/ui_main.c:303 +#, c-format +msgid "%s - Audacious" +msgstr "%s - Audacious" -#: src/gtkui/ui_manager.c:184 src/skins/ui_manager.c:390 -msgid "Plugin services" -msgstr "Plugin-Dienste" +#: src/gtkui/ui_gtk.c:162 +msgid "Buffering ..." +msgstr "Puffern ..." -#: src/gtkui/ui_manager.c:186 src/skins/ui_manager.c:392 -msgid "Preferences" -msgstr "Einstellungen" - -#: src/gtkui/ui_manager.c:187 src/skins/ui_manager.c:393 -msgid "Open preferences window" -msgstr "Einstellungen anzeigen" - -#: src/gtkui/ui_manager.c:189 src/skins/ui_manager.c:395 -msgid "_Quit" -msgstr "Beenden" - -#: src/gtkui/ui_manager.c:190 src/skins/ui_manager.c:396 -msgid "Quit Audacious" -msgstr "Audacious beenden" - -#: src/gtkui/ui_manager.c:192 src/gtkui/ui_manager.c:193 -#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 -msgid "Set A-B" -msgstr "A-B setzen" - -#: src/gtkui/ui_manager.c:195 src/gtkui/ui_manager.c:196 -#: src/skins/ui_manager.c:401 src/skins/ui_manager.c:402 -msgid "Clear A-B" -msgstr "A-B leeren" - -#: src/gtkui/ui_manager.c:198 src/gtkui/ui_manager.c:199 -#: src/skins/ui_manager.c:404 src/skins/ui_manager.c:405 -msgid "Jump to Playlist Start" -msgstr "Zum Anfang der Liste springen" - -#: src/gtkui/ui_manager.c:201 src/gtkui/ui_manager.c:202 src/hotkey/gui.c:80 -#: src/skins/ui_manager.c:407 src/skins/ui_manager.c:408 -msgid "Jump to File" -msgstr "Zu Datei springen" - -#: src/gtkui/ui_manager.c:207 src/skins/ui_manager.c:413 -msgid "Queue Toggle" -msgstr "In/Aus Warteschlange" - -#: src/gtkui/ui_manager.c:208 src/skins/ui_manager.c:414 -msgid "Enables/disables the entry in the playlist's queue." -msgstr "Eintrag in der Wiedergabenwarteschleife aktivieren/deaktivieren." - -#: src/gtkui/ui_manager.c:211 src/skins/ui_manager.c:417 -msgid "Copy" -msgstr "Kopieren" - -#: src/gtkui/ui_manager.c:214 src/skins/ui_manager.c:419 -msgid "Cut" -msgstr "Ausschneiden" - -#: src/gtkui/ui_manager.c:217 src/skins/ui_manager.c:421 -msgid "Paste" -msgstr "Einfügen" - -#: src/gtkui/ui_manager.c:220 src/skins/ui_manager.c:254 -msgid "Select All" -msgstr "Alles auswählen" - -#: src/gtkui/ui_manager.c:221 src/skins/ui_manager.c:255 -msgid "Selects all of the playlist entries." -msgstr "Wähle alle Einträge aus." +#: src/gtkui/ui_gtk.c:165 src/skins/ui_main.c:305 src/skins/ui_main.c:1504 +msgid "Audacious" +msgstr "Audacious" -#: src/gtkui/ui_manager.c:224 src/skins/ui_manager.c:258 -msgid "Select None" -msgstr "Nichts auswählen" +#: src/gtkui/ui_gtk.c:216 src/skins/plugin.c:190 +msgid "Error" +msgstr "Fehler" -#: src/gtkui/ui_manager.c:225 src/skins/ui_manager.c:259 -msgid "Deselects all of the playlist entries." -msgstr "Alle ausgewählten Einträge abwählen." +#: src/gtkui/ui_playlist_notebook.c:97 +msgid "Close" +msgstr "Schließen" -#: src/gtkui/ui_statusbar.c:91 src/skins/ui_main.c:609 +#: src/gtkui/ui_statusbar.c:105 src/skins/ui_main.c:460 msgid "mono" msgstr "Mono" -#: src/gtkui/ui_statusbar.c:94 src/skins/ui_main.c:608 +#: src/gtkui/ui_statusbar.c:107 src/skins/ui_main.c:459 msgid "stereo" msgstr "Stereo" -#: src/gtkui/ui_statusbar.c:97 +#: src/gtkui/ui_statusbar.c:109 #, c-format -msgid "%d channels" -msgstr "%d Kanäle" +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d Kanal" +msgstr[1] "%d Kanäle" -#: src/gtkui/ui_statusbar.c:101 +#: src/gtkui/ui_statusbar.c:124 #, c-format -msgid "%s: %d kbps, %d Hz, %s" -msgstr "%s: %d Kbps, %d Hz, %s" +msgid "%d kbps" +msgstr "%d kbps" -#: src/hotkey/gui.c:70 +#: src/hotkey/gui.c:71 msgid "Previous Track" msgstr "Vorheriger Titel" -#: src/hotkey/gui.c:72 +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "Wiedergeben" + +#: src/hotkey/gui.c:73 msgid "Pause/Resume" msgstr "Pause" -#: src/hotkey/gui.c:74 +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +msgid "Stop" +msgstr "Stopp" + +#: src/hotkey/gui.c:75 msgid "Next Track" msgstr "Nächster Titel" -#: src/hotkey/gui.c:75 +#: src/hotkey/gui.c:76 msgid "Forward 5 Seconds" msgstr "5 Sek. vorspulen" -#: src/hotkey/gui.c:76 +#: src/hotkey/gui.c:77 msgid "Rewind 5 Seconds" msgstr "5 Sek. zurückspulen" -#: src/hotkey/gui.c:77 +#: src/hotkey/gui.c:78 msgid "Mute" msgstr "Stumm" -#: src/hotkey/gui.c:78 +#: src/hotkey/gui.c:79 msgid "Volume Up" msgstr "Lautstärke erhöhen" -#: src/hotkey/gui.c:79 +#: src/hotkey/gui.c:80 msgid "Volume Down" msgstr "Lautstärke verringern" -#: src/hotkey/gui.c:81 +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Jump to File" +msgstr "Zu Datei springen" + +#: src/hotkey/gui.c:82 msgid "Toggle Player Windows" msgstr "Player anzeigen/verstecken" -#: src/hotkey/gui.c:82 +#: src/hotkey/gui.c:83 msgid "Show On-Screen-Display" msgstr "On-Screen-Display anzeigen" -#: src/hotkey/gui.c:92 +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "Wiederholen ein-/ausschalten" + +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "Zufällige Wiedergabe ein-/ausschalten" + +#: src/hotkey/gui.c:95 msgid "(none)" msgstr "(keine)" -#: src/hotkey/gui.c:229 +#: src/hotkey/gui.c:232 msgid "" "It is not recommended to bind the primary mouse buttons without " "modificators.\n" "\n" "Do you want to continue?" msgstr "" -"Es ist nicht empfohlen die primären Maustasten hierfür zu benutzen.\n" +"Es wird nicht empfohlen die primären Maustasten hierfür zu benutzen.\n" "\n" "Trotzdem fortfahren?" -#: src/hotkey/gui.c:231 +#: src/hotkey/gui.c:234 msgid "Binding mouse buttons" msgstr "Maustastenkombinationen" -#: src/hotkey/gui.c:381 +#: src/hotkey/gui.c:384 msgid "Global Hotkey Plugin Configuration" msgstr "Global-Hotkey-Konfiguration" -#: src/hotkey/gui.c:397 +#: src/hotkey/gui.c:400 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2898,23 +2051,23 @@ "Bitte eine Tastenkombination innerhalb eines Textfelds drücken.\n" "Es ist auch möglich, Maustasten zu verwenden." -#: src/hotkey/gui.c:402 +#: src/hotkey/gui.c:405 msgid "Hotkeys:" msgstr "Tastaturkürzel:" -#: src/hotkey/gui.c:421 +#: src/hotkey/gui.c:424 msgid "Action:" -msgstr "Aktion: " +msgstr "Aktion:" -#: src/hotkey/gui.c:429 +#: src/hotkey/gui.c:432 msgid "Key Binding:" msgstr "Taste festlegen:" -#: src/hotkey/gui.c:660 +#: src/hotkey/gui.c:663 msgid "About Global Hotkey Plugin" msgstr "Ãœber das Global-Hotkeys-Plugin" -#: src/hotkey/gui.c:661 +#: src/hotkey/gui.c:664 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -2943,31 +2096,31 @@ "\t\t\tJeremy Tan \n" "\n" -#: src/jack/configure.c:71 +#: src/jack/configure.c:66 msgid "Connect to all available jack ports" msgstr "Zu allen verfügbaren jack-Ports verbinden" -#: src/jack/configure.c:78 +#: src/jack/configure.c:73 msgid "Connect only the output ports" msgstr "Nur zu Ausgabe-Ports verbinden" -#: src/jack/configure.c:85 +#: src/jack/configure.c:80 msgid "Connect to no ports" msgstr "Zu keinem Port verbinden" -#: src/jack/configure.c:103 +#: src/jack/configure.c:98 msgid "jack Plugin configuration" msgstr "jack-Plugin-Konfiguration" -#: src/jack/configure.c:121 +#: src/jack/configure.c:116 msgid "Connection mode:" -msgstr "Verbindungs-Modus" +msgstr "Verbindungs-Modus:" -#: src/jack/configure.c:133 +#: src/jack/configure.c:128 msgid "Enable debug printing" msgstr "Debug-Ausgabe aktivieren" -#: src/jack/jack.c:437 +#: src/jack/jack.c:435 msgid "" "XMMS jack Driver 0.17\n" "\n" @@ -2977,147 +2130,91 @@ "Audacious port by\n" "Giacomo Lozito from develia.org" msgstr "" +"XMMS jack Treiber 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" +"\n" +"Audacious Portierung durch\n" +"Giacomo Lozito von develia.org" -#: src/jack/jack.c:442 +#: src/jack/jack.c:440 msgid "About JACK Output Plugin 0.17" msgstr "Ãœber JACK Output Plugin 0.17" -#: src/ladspa/ladspa.c:824 -msgid "This LADSPA plugin has no user controls" -msgstr "Dieses LADSPA-Plugin hat keine Benutzeroberfläche." +#: src/ladspa/plugin.c:415 +msgid "About LADSPA Host" +msgstr "Ãœber LADSPA Host" -#: src/ladspa/ladspa.c:865 src/ladspa/ladspa.c:952 -msgid "Name" -msgstr "Name" - -#: src/ladspa/ladspa.c:952 -msgid "UID" -msgstr "UID" +#: src/ladspa/plugin.c:516 +#, c-format +msgid "%s Settings" +msgstr "%s Einstellungen" -#: src/ladspa/ladspa.c:1029 -msgid "Installed plugins" -msgstr "Installierte Plugins" +#: src/ladspa/plugin.c:584 +msgid "LADSPA Host Settings" +msgstr "LADSPA Einstellungen" -#: src/ladspa/ladspa.c:1037 -msgid "Running plugins" -msgstr "Aktive Plugins" +#: src/ladspa/plugin.c:593 +msgid "Module paths:" +msgstr "Modulpfade:" -#: src/ladspa/ladspa.c:1052 -msgid "Add" -msgstr "Hinzufügen" +#: src/ladspa/plugin.c:598 +msgid "" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." +msgstr "" +"Trenne mehrere Pfade mit einem Doppelpunkt.\n" +"Diese Pfade werden zusätzlich zum LADSPA_PATH durchsucht.\n" +"Nach dem Hinzufügen neuer Pfade Enter drücken, um neue Plugins zu suchen." -#: src/ladspa/ladspa.c:1055 -msgid "Remove" -msgstr "Entfernen" +#: src/ladspa/plugin.c:614 +msgid "Available plugins:" +msgstr "Verfügbare Plugins:" -#: src/ladspa/ladspa.c:1066 -msgid "LADSPA Plugin Catalog" -msgstr "LADSPA-Plugin-Liste" +#: src/ladspa/plugin.c:626 +msgid "Enable" +msgstr "Aktivieren" -#: src/lirc/about.c:63 -msgid "About LIRC Audacious Plugin" -msgstr "Ãœber LIRC-Audacious-Plugin" +#: src/ladspa/plugin.c:632 +msgid "Enabled plugins:" +msgstr "Aktive Plugins:" -#: src/lirc/about.c:90 -msgid "LIRC Plugin " -msgstr "LIRC-Plugin " +#: src/ladspa/plugin.c:647 +msgid "Settings" +msgstr "Einstellungen" -#: src/lirc/about.c:92 +#: src/lyricwiki/lyricwiki.c:267 msgid "" "\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" -"\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" +"Looking for lyrics..." msgstr "" "\n" -"Ein einfaches Plugin, das Audacious mithilfe des\n" -"LIRC-Daemons kontrollieren lässt\n" -"\n" -"Für Audacious angepasst von Tony Vroon \n" -"vom XMMS-LIRC-Plugin von:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Informationen zu LIRC sind verfügbar unter:\n" -"http://lirc.org" - -#: src/lirc/interface.c:37 -msgid "LIRC plugin settings" -msgstr "LIRC-Plugin-Einstellungen" - -#: src/lirc/interface.c:61 -msgid "Reconnect to LIRC server" -msgstr "Zu LIRC Server wiederverbinden" +"Suche nach Liedtexten..." -#: src/lirc/interface.c:68 -msgid "Timeout before reconnecting (seconds): " -msgstr "Zeitüberschreitung vor Wiederverbindung (Sekunden): " - -#: src/lirc/interface.c:75 -msgid "Reconnect" -msgstr "Wiederverbinden" - -#: src/lirc/interface.c:79 -msgid "Connection" -msgstr "Verbindung" - -#: src/lirc/lirc.c:82 -#, c-format -msgid "%s: could not init LIRC support\n" -msgstr "%s: Konnte LIRC-Unterstützung nicht initialisieren\n" - -#: src/lirc/lirc.c:90 -#, c-format +#: src/lyricwiki/lyricwiki.c:304 msgid "" -"%s: could not read LIRC config file\n" -"%s: please read the documentation of LIRC\n" -"%s: how to create a proper config file\n" -msgstr "" -"%s: Konnte LIRC Konfigurationsdatei nicht lesen\n" -"%s: Bitte in der Dokumentation von LIRC lesen\n" -"%s: wie man eine funktionierende erstellt\n" - -#: src/lirc/lirc.c:117 -#, c-format -msgid "%s: trying to reconnect...\n" -msgstr "%s: versuche wiederzuverbinden...\n" - -#: src/lirc/lirc.c:332 -#, c-format -msgid "%s: unknown command \"%s\"\n" -msgstr "%s: Ungültiger Befehl \"%s\"\n" - -#: src/lirc/lirc.c:342 -#, c-format -msgid "%s: disconnected from LIRC\n" -msgstr "%s: von LIRC Verbindung trennen\n" - -#: src/lirc/lirc.c:346 -#, c-format -msgid "%s: will try reconnect every %d seconds...\n" -msgstr "%s: versuche jede %d Sekunden wiederzuverbinden...\n" - -#: src/lyricwiki/lyricwiki.c:244 -msgid "LyricWiki" +"\n" +"Connecting to lyrics.wikia.com..." msgstr "" +"\n" +"Verbinde zu lyrics.wikia.com..." -#: src/lyricwiki/lyricwiki.c:337 +#: src/lyricwiki/lyricwiki.c:377 msgid "" "\n" "No lyrics were found." -msgstr "\nKeine Liedtexte gefunden." +msgstr "" +"\n" +"Keine Liedtexte gefunden." -#: src/metronom/metronom.c:90 +#: src/metronom/metronom.c:86 msgid "About Metronom" msgstr "Ãœber Metronom" -#: src/metronom/metronom.c:91 +#: src/metronom/metronom.c:87 msgid "" "A Tact Generator by Martin Strauss \n" "\n" @@ -3131,257 +2228,61 @@ "z.B. tact://77 zum Spielen von 77 Schlägen pro Minute\n" "oder tact://60*3/4 zum Spielen von 60 bpm im 3/4-Takt" -#: src/metronom/metronom.c:145 +#: src/metronom/metronom.c:144 #, c-format msgid "Tact generator: %d bpm" msgstr "Takt-Generator: %d bpm" -#: src/metronom/metronom.c:147 +#: src/metronom/metronom.c:146 #, c-format msgid "Tact generator: %d bpm %d/%d" msgstr "Takt-Generator: %d bpm %d/%d" -#: src/modplug/gui/interface.cxx:137 -msgid "ModPlug Configuration" -msgstr "ModPlug-Konfiguration" - -#: src/modplug/gui/interface.cxx:174 -msgid "16 bit" -msgstr "16 bit" - -#: src/modplug/gui/interface.cxx:181 -msgid "8 bit" -msgstr "8 bit" - -#: src/modplug/gui/interface.cxx:212 -msgid "Mono (downmix)" -msgstr "Mono (downmix)" - -#: src/modplug/gui/interface.cxx:241 -msgid "Nearest (fastest)" -msgstr "Am nächsten (schnellstes)" - -#: src/modplug/gui/interface.cxx:248 -msgid "Linear (fast)" -msgstr "Linear (schnell)" - -#: src/modplug/gui/interface.cxx:255 -msgid "Spline (good quality)" -msgstr "Spline (gute Qualität)" - -#: src/modplug/gui/interface.cxx:262 -msgid "8-tap Fir (extremely high quality)" -msgstr "8-tap Fir (extrem hohe Qualität)" - -#: src/modplug/gui/interface.cxx:286 -msgid "96 kHz" -msgstr "96 kHz " - -#: src/modplug/gui/interface.cxx:293 -msgid "48 kHz" -msgstr "48 kHz" - -#: src/modplug/gui/interface.cxx:300 -msgid "44 kHz" -msgstr "44 kHz" - -#: src/modplug/gui/interface.cxx:307 -msgid "22 kHz" -msgstr "22 kHz" - -#: src/modplug/gui/interface.cxx:315 -msgid "Sampling Rate" -msgstr "Abtastfrequenz" +#: src/mixer/plugin.c:64 +msgid "About Channel Mixer" +msgstr "Ãœber Channel-Mixer" + +#: src/mixer/plugin.c:93 +msgid "Channel Mixer Settings" +msgstr "Channel-Mixer-Einstellungen" + +#: src/mixer/plugin.c:102 +msgid "Output channels:" +msgstr "Ausgabe-Kanäle:" + +#: src/mixer/plugin.c:112 +msgid "Changes take effect at the next song change." +msgstr "Änderungen werden mit dem nächsten Titelwechsel wirksam" -#: src/modplug/gui/interface.cxx:349 src/modplug/gui/interface.cxx:411 -#: src/modplug/gui/interface.cxx:477 src/modplug/gui/interface.cxx:539 -msgid "Enable" -msgstr "Aktiv" - -#: src/modplug/gui/interface.cxx:378 src/modplug/gui/interface.cxx:506 -msgid "Depth" -msgstr "Tiefe" - -#: src/modplug/gui/interface.cxx:386 src/modplug/gui/interface.cxx:514 -msgid "Delay" -msgstr "Verzögerung" - -#: src/modplug/gui/interface.cxx:394 -msgid "Reverb" -msgstr "Hall" - -#: src/modplug/gui/interface.cxx:440 -msgid "Amount" -msgstr "Menge" - -#: src/modplug/gui/interface.cxx:448 -msgid "Range" -msgstr "Bereich" - -#: src/modplug/gui/interface.cxx:456 -msgid "Bass Boost" -msgstr "Bassverstärkung" - -#: src/modplug/gui/interface.cxx:522 src/mpg123/mpg123.c:174 +#: src/mpg123/mpg123.c:191 msgid "Surround" msgstr "Surround" -#: src/modplug/gui/interface.cxx:561 -msgid "" -"Note: Setting the preamp\n" -"too high may cause clipping\n" -"(annoying clicks and pops)!" -msgstr "" -"Bemerkung: Eine zu hohe Vorverstärkung kann\n" -"Clipping verursachen (störende Geräusche)!" - -#: src/modplug/gui/interface.cxx:567 -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "Preamp" -msgstr "Vorverstärkung" - -#: src/modplug/gui/interface.cxx:601 -msgid "Use Filename as Song Title" -msgstr "Dateinamen als Liedtitel verwenden" - -#: src/modplug/gui/interface.cxx:606 -msgid "Fast Playlist Info" -msgstr "Schnelle Wiedergabeliste-Information" - -#: src/modplug/gui/interface.cxx:617 -msgid "Noise Reduction" -msgstr "Geräuschreduktion" - -#: src/modplug/gui/interface.cxx:623 -msgid "Play Amiga MOD" -msgstr "Amiga MOD abspielen" - -#: src/modplug/gui/interface.cxx:646 -msgid "Don't loop" -msgstr "Nicht loopen" - -#: src/modplug/gui/interface.cxx:658 -msgid "Loop" -msgstr "Loope" - -#: src/modplug/gui/interface.cxx:671 -msgid "time(s)" -msgstr "Mal" - -#: src/modplug/gui/interface.cxx:677 -msgid "Loop forever" -msgstr "Für immer loopen" - -#: src/modplug/gui/interface.cxx:684 -msgid "Looping" -msgstr "Loopen" - -#: src/modplug/gui/interface.cxx:859 -msgid "MOD Info" -msgstr "MOD-Information" - -#: src/modplug/gui/interface.cxx:878 -msgid "" -"Filename:\n" -"Title:\n" -"Type:\n" -"Length:\n" -"Speed:\n" -"Tempo:\n" -"Samples:\n" -"Instruments:\n" -"Patterns:\n" -"Channels:" -msgstr "" -"Dateiname:\n" -"Titel:\n" -"Typ:\n" -"Länge:\n" -"Geschwindigkeit:\n" -"Tempo:\n" -"Samples:\n" -"Instrumente:\n" -"Patterns:\n" -"Kanäle:" - -#: src/modplug/gui/interface.cxx:883 -msgid "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" -msgstr "" - -#: src/modplug/gui/interface.cxx:913 -msgid "Samples" -msgstr "Samples" - -#: src/modplug/gui/interface.cxx:938 -msgid "Instruments" -msgstr "Instrumente" - -#: src/modplug/gui/interface.cxx:959 -msgid "Message" -msgstr "Meldung" - -#: src/modplug/gui/main.cxx:51 -msgid "Modplug Input Plugin for Audacious ver" -msgstr "Modplug-Input-Plugin für Audacious Version" - -#: src/modplug/gui/main.cxx:52 -#, fuzzy -msgid "" -"\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." -msgstr "" -"\n" -"Modplug sound engine geschrieben von Olivier Lapicque.\n" -"XMMS interface für Modplug von Kenton Varda.\n" -"(c)2000 Olivier Lapicque und Kenton Varda.\n" -"Updates und Betreunung von Konstanty Bialkowski.\n" -"Portiert für BMP von Theofilos Intzoglou." - -#: src/modplug/gui/main.cxx:55 -msgid "About Modplug" -msgstr "Ãœber Modplug" - -#: src/modplug/gui/support.cxx:90 src/modplug/gui/support.cxx:114 -#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 -#, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "Konnte Pixmap-Datei nicht finden: %s" - -#: src/mtp_up/mtp.c:35 -msgid "Upload selected track(s)" -msgstr "Ausgewählte Titel uploaden" - -#: src/mtp_up/mtp.c:291 +#: src/mtp_up/mtp.c:336 msgid "Upload in progress..." msgstr "Upload läuft..." -#: src/mtp_up/mtp.c:300 -msgid "MTP device handler" -msgstr "MTP Geräte-Steuerung" - -#: src/mtp_up/mtp.c:304 -msgid "Disconnect the device" -msgstr "Gerät trennen" +#: src/mtp_up/mtp.c:348 +msgid "Upload to MTP Device" +msgstr "Auf MTP Gerät hochladen" + +#: src/mtp_up/mtp.c:349 +msgid "Disconnect MTP Device" +msgstr "MTP Gerät trennen" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Stopped" +msgstr "Gestoppt" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Audacious is not playing." +msgstr "Audacious spielt gerade nichts ab." -#: src/null/null.c:63 +#: src/null/null.c:64 msgid "Null output plugin " msgstr "Null-Ausgabe-Plugin" -#: src/null/null.c:64 +#: src/null/null.c:65 msgid "" " by Christian Birchinger \n" "based on the XMMS plugin by HÃ¥vard KvÃ¥l " @@ -3389,1713 +2290,1152 @@ " von Christian Birchinger \n" "basierend auf dem XMMS-Plugin von HÃ¥vard KvÃ¥l " -#: src/null/null.c:67 +#: src/null/null.c:68 msgid "About Null Output" msgstr "Ãœber Null-Ausgabe-Plugin" -#: src/null/null.c:93 +#: src/null/null.c:89 msgid "Null output preferences" msgstr "Null-Ausgabe-Einstellungen" -#: src/null/null.c:102 +#: src/null/null.c:100 msgid "Run in real time" msgstr "In Echtzeit ablaufen lassen" -#: src/oss4/configure.c:89 +#: src/oss4/configure.c:81 msgid "1. Default device" msgstr "1. Standardgerät" -#: src/oss4/configure.c:151 +#: src/oss4/configure.c:138 msgid "OSS4 Output Plugin Preferences" msgstr "OSS4-Ausgabeplugin-Einstellungen" -#: src/oss4/configure.c:163 src/OSS/configure.c:213 src/sun/configure.c:181 +#: src/oss4/configure.c:150 src/OSS/configure.c:194 msgid "Audio device:" msgstr "Audiogerät:" -#: src/oss4/configure.c:189 src/OSS/configure.c:235 src/OSS/configure.c:276 +#: src/oss4/configure.c:178 src/OSS/configure.c:217 src/OSS/configure.c:260 msgid "Use alternate device:" msgstr "Alternatives Gerät benutzen:" -#: src/oss4/configure.c:202 +#: src/oss4/configure.c:193 msgid "Save volume between sessions" msgstr "Lautstärke speichern" -#: src/oss4/configure.c:206 +#: src/oss4/configure.c:197 msgid "Enable format conversions made by the OSS software." msgstr "Formatkonvertierung aktivieren" -#: src/oss4/plugin.c:54 +#: src/oss4/configure.c:201 +msgid "Enable exclusive mode to prevent virtual mixing." +msgstr "Exklusiv-Modus aktivieren, um virtuelles Mischen zu verhindern." + +#: src/oss4/plugin.c:51 msgid "About OSS4 Plugin" msgstr "Ãœber OSS4-Plugin" -#: src/oss4/plugin.c:55 -#, fuzzy -msgid "" -"OSS4 Output Plugin for Audacious\n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"I would like to thank people on #audacious, especially Tony Vroon and John " -"Lindgren and of course the authors of the previous OSS plugin.\n" -"\n" -"This program is free software: you can redistribute it and/or modify it " -"under the terms of the GNU General Public License as published by the Free " -"Software Foundation, either version 3 of the License, or (at your option) " -"any later version.\n" -"\n" -"This program 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 General Public License for " -"more details.\n" -"\n" -"You should have received a copy of the GNU General Public License along with " -"this program. If not, see .\n" -msgstr "" -"An Audacious angepasst von Tony Vroon \n" -"vom xmms_sndfile-Plugin:\n" -"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -"This program is free software ; you can redistribute it and/or modify \n" -"it under the terms of the GNU General Public License as published by \n" -"the Free Software Foundation ; either version 2 of the License, or \n" -"(at your option) any later version. \n" -" \n" -"This program is distributed in the hope that it will be useful, \n" -"but WITHOUT ANY WARRANTY ; without even the implied warranty of \n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n" -"See the GNU General Public License for more details. \n" -"\n" -"You should have received a copy of the GNU General Public \n" -"License along with this program ; if not, write to \n" -"the Free Software Foundation, Inc., \n" -"51 Franklin Street, Fifth Floor, \n" -"Boston, MA 02110-1301 USA" - -#: src/oss4/utils.c:204 +#: src/oss4/utils.c:211 msgid "OSS4 error" msgstr "OSS4 Fehler" -#: src/OSS/configure.c:148 +#: src/OSS/configure.c:137 #, c-format msgid "Default (%s)" msgstr "Standard (%s)" -#: src/OSS/configure.c:197 +#: src/OSS/configure.c:178 msgid "OSS Driver configuration" msgstr "OSS-Treiber-Konfiguration" -#: src/OSS/configure.c:298 src/sun/configure.c:246 +#: src/OSS/configure.c:281 msgid "Devices" msgstr "Geräte" -#: src/OSS/configure.c:300 src/sun/configure.c:257 +#: src/OSS/configure.c:283 msgid "Buffering:" msgstr "Zwischenspeichern:" -#: src/OSS/configure.c:313 src/sun/configure.c:288 +#: src/OSS/configure.c:296 msgid "Pre-buffer (percent):" -msgstr "Vorpuffer (Prozent)" +msgstr "Vorpuffer (Prozent):" -#: src/OSS/configure.c:324 src/sun/configure.c:302 +#: src/OSS/configure.c:307 msgid "Buffering" msgstr "Zwischenspeichern" -#: src/OSS/configure.c:325 +#: src/OSS/configure.c:308 msgid "Mixer Settings:" msgstr "Mixer-Einstellungen:" -#: src/OSS/configure.c:331 +#: src/OSS/configure.c:314 msgid "Volume controls Master not PCM" msgstr "Master anstatt PCM regeln" -#: src/OSS/configure.c:337 src/sun/configure.c:392 +#: src/OSS/configure.c:320 msgid "Mixer" msgstr "Mixer" -#: src/OSS/OSS.c:40 +#: src/OSS/OSS.c:41 msgid "About OSS Driver" msgstr "Ãœber OSS-Treiber" -#: src/OSS/OSS.c:41 -msgid "" -"Audacious OSS Driver\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" - -#: src/pulse_audio/pulse_audio.c:691 +#: src/pulse_audio/pulse_audio.c:669 msgid "About Audacious PulseAudio Output Plugin" msgstr "Ãœber Audacious-PulseAudio-Ausgabe-Plugin" -#: src/pulse_audio/pulse_audio.c:692 -msgid "" -"Audacious PulseAudio Output Plugin\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" - -#: src/resample/plugin.c:78 +#: src/resample/plugin.c:89 msgid "About Sample Rate Converter Plugin" msgstr "Ãœber Sample-Rate-Konverter-Plugin" -#: src/resample/plugin.c:134 +#: src/resample/plugin.c:144 msgid "Sample Rate Converter Preferences" msgstr "Sample-Rate-Konverter Einstellungen" -#: src/resample/plugin.c:146 +#: src/resample/plugin.c:156 msgid "Rate mappings:" -msgstr "" +msgstr "Rate-Mappings:" -#: src/resample/plugin.c:169 +#: src/resample/plugin.c:179 msgid "All others:" -msgstr "Alle Anderen" +msgstr "Alle anderen:" -#: src/resample/plugin.c:181 +#: src/resample/plugin.c:191 msgid "Method:" msgstr "Methode:" -#: src/scrobbler/configure.c:152 src/scrobbler/configure.c:228 +#: src/scrobbler/configure.c:123 src/scrobbler/configure.c:198 msgid "Change password" msgstr "Passwort ändern" -#: src/scrobbler/configure.c:174 +#: src/scrobbler/configure.c:144 msgid "Services" msgstr "Dienste" -#: src/scrobbler/configure.c:196 +#: src/scrobbler/configure.c:166 msgid "Username:" msgstr "Benutzername:" -#: src/scrobbler/configure.c:202 +#: src/scrobbler/configure.c:172 msgid "Password:" msgstr "Passwort:" -#: src/scrobbler/configure.c:210 +#: src/scrobbler/configure.c:180 msgid "Scrobbler URL:" msgstr "Scrobbler-URL:" -#: src/scrobbler/configure.c:242 +#: src/scrobbler/configure.c:212 msgid "Last.FM" -msgstr "" +msgstr "Last.FM" -#: src/scrobbler/configure.c:287 +#: src/scrobbler/configure.c:239 msgid "Scrobbler" -msgstr "" +msgstr "Scrobbler" -#: src/scrobbler/plugin.c:213 +#: src/scrobbler/plugin.c:194 msgid "" "Audacious AudioScrobbler Plugin\n" "\n" "Originally created by Audun Hove and Pipian \n" msgstr "" +"Audacious AudioScrobbler Plugin\n" +"\n" +"Ursprünglich geschrieben von Audun Hove und Pipian " +"\n" -#: src/scrobbler/plugin.c:215 +#: src/scrobbler/plugin.c:196 msgid "About Scrobbler Plugin" msgstr "Ãœber Scrobbler-Plugin" -#: src/sid/xs_about.c:84 -#, c-format -msgid "About %s" -msgstr "Ãœber %s" - -#: src/sid/xs_config.c:322 -msgid " Error" -msgstr " Fehler" - -#: src/sid/xs_fileinfo.c:151 -msgid "General info" -msgstr "Allgemeine Info" - -#: src/sid/xs_fileinfo.c:164 -#, c-format -msgid "Tune #%i: " -msgstr "" - -#: src/sid/xs_interface.c:234 -msgid "Audacious-SID configuration" -msgstr "Audacious-SID-Konfiguration" - -#: src/sid/xs_interface.c:270 -msgid "8-bit" -msgstr "8 Bit" - -#: src/sid/xs_interface.c:277 -msgid "16-bit" -msgstr "16 Bit" - -#: src/sid/xs_interface.c:284 -msgid "Resolution:" -msgstr "Auflösung:" - -#: src/sid/xs_interface.c:315 -msgid "Autopanning" -msgstr "" - -#: src/sid/xs_interface.c:322 -msgid "Channels:" -msgstr "Kanäle:" - -#: src/sid/xs_interface.c:366 -msgid "Samplerate:" -msgstr "Abtastfrequenz:" - -#: src/sid/xs_interface.c:383 -msgid "Use oversampling" -msgstr "Oversampling benützen" - -#: src/sid/xs_interface.c:394 -msgid "Factor:" -msgstr "Faktor:" - -#: src/sid/xs_interface.c:406 -msgid "Large factors require more CPU-power" -msgstr "Große Faktoren benötigen mehr Rechenleistung" - -#: src/sid/xs_interface.c:412 -msgid "Oversampling:" -msgstr "Oversampling:" - -#: src/sid/xs_interface.c:417 -msgid "Audio" -msgstr "Audio" +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" +msgstr "Ãœber SDL Output Plugin" -#: src/sid/xs_interface.c:445 -msgid "Force speed" -msgstr "Geschwindigkeit erzwingen" +#: src/sdlout/plugin.c:78 +msgid "SDL error" +msgstr "SDL Fehler" -#: src/sid/xs_interface.c:449 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"clock speed/frequency. Otherwise the speed is determined from played file " -"itself." -msgstr "" - -#: src/sid/xs_interface.c:451 -msgid "PAL (50 Hz)" -msgstr "PAL (50 Hz)" - -#: src/sid/xs_interface.c:455 -msgid "" -"PAL is the european TV standard, which uses 50Hz vertical refresh frequency. " -"Most of SID-tunes have been made for PAL computers." -msgstr "" -"PAL ist der europäische TV-Standard, welcher 50 Hz als Bildwiederholfrequenz " -"benutzt. Die meisten der SID-Tuner sind für den PAL-Standard gebaut." - -#: src/sid/xs_interface.c:459 -msgid "NTSC (60 Hz)" -msgstr "NTSC (60 Hz)" - -#: src/sid/xs_interface.c:463 -msgid "" -"NTSC is the TV standard with 60Hz vertical refresh rate (and other features " -"that differ from PAL). It is mainly used in United States, Japan and certain " -"other countries." -msgstr "" -"NTSC ist ein TV-Standard mit 60 Hz Bildwiederholfrequenz (und anderen " -"Abweichungen zu PAL). Er wird vor allem in den USA, Japan und einigen " -"anderen Ländern benutzt." - -#: src/sid/xs_interface.c:467 -msgid "Clock speed:" -msgstr "Taktfrequenz:" - -#: src/sid/xs_interface.c:484 -msgid "Force model" -msgstr "Modell erzwingen" - -#: src/sid/xs_interface.c:488 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"SID-chip model. Otherwise the preferred SID model is determined from the " -"file (if PSIDv2NG type) or if not available, this setting is used." -msgstr "" - -#: src/sid/xs_interface.c:490 -msgid "MOS 6581" -msgstr "MOS 6581" - -#: src/sid/xs_interface.c:494 -msgid "" -"MOS/CSG 6581 is the earlier major version of SID chip. It differs from 8580 " -"in few ways, having much fuller filter (which, due to design error, is never " -"same between two different SID-chips) and has the \"volume adjustment bug\", " -"which enables playing of digital samples." -msgstr "" - -#: src/sid/xs_interface.c:498 -msgid "MOS 8580" -msgstr "MOS 8580" - -#: src/sid/xs_interface.c:505 -msgid "SID model:" -msgstr "SID-Modell:" +#: src/search-tool/search-tool.c:42 +msgid "Genre" +msgstr "Genre" -#: src/sid/xs_interface.c:522 -msgid "SIDPlay 1 (frame-based)" -msgstr "" - -#: src/sid/xs_interface.c:526 -msgid "" -"Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most " -"cases, though." -msgstr "" -"LibSIDPlay 1.x Emulation benutzen, schneller aber ungenauer. Dennoch in " -"vielen Fällen gut." +#: src/search-tool/search-tool.c:96 src/search-tool/search-tool.c:106 +msgid "Library" +msgstr "Sammlung" -#: src/sid/xs_interface.c:530 -msgid "SIDPlay 2 (cycle-based)" -msgstr "SIDPlay 2 (zyklus-basiert)" +#: src/search-tool/search-tool.c:591 +msgid "_Create Playlist" +msgstr "Wiedergabeliste _erstellen" -#: src/sid/xs_interface.c:534 -msgid "" -"Use libSIDPlay 2.x emulation, which requires powerful CPU due to more exact " -"emulation." -msgstr "" -"libSIDPlay 2.x Emulation benutzen, welche mehr CPU-Leistung für mehr " -"Genauigkeit benötigt." +#: src/search-tool/search-tool.c:598 +msgid "_Add to Playlist" +msgstr "Zur Wiedergabeliste _hinzufügen" -#: src/sid/xs_interface.c:538 -msgid "Emulation library selection:" -msgstr "Auswahl der Emulations-Bibliothek:" - -#: src/sid/xs_interface.c:555 -msgid "Real C64 (SIDPlay 2 only)" -msgstr "Echter C64 (nur SIDPlay 2)" - -#: src/sid/xs_interface.c:562 -msgid "Bank switching" -msgstr "" - -#: src/sid/xs_interface.c:569 -msgid "Transparent ROM" -msgstr "" +#: src/search-tool/search-tool.c:641 +msgid "Search library" +msgstr "Durchsuche Sammlung" -#: src/sid/xs_interface.c:576 -msgid "PlaySID environment" -msgstr "PlaySID-Umgebung" - -#: src/sid/xs_interface.c:583 -msgid "Memory mode:" -msgstr "Speichermodus:" - -#: src/sid/xs_interface.c:588 -msgid "Emu#1" -msgstr "" - -#: src/sid/xs_interface.c:611 -msgid "Optimization mode (faster, inaccurate)" -msgstr "Optimierungs-Modus (schneller, ungenau)" - -#: src/sid/xs_interface.c:615 +#: src/search-tool/search-tool.c:645 msgid "" -"This setting can be used to enable libSIDPlay2's \"optimization mode\", " -"which in downgrades the emulation from cycle-exact to something similar to " -"frame-exact. The result is lower CPU usage, but worse accuracy." +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." msgstr "" +"Wähle einen Ordner und klicke auf \"Aktualisieren\", \n" +"um deine Musiksammlung in Audacious zu importieren." -#: src/sid/xs_interface.c:617 -msgid "reSID-emulation" -msgstr "reSID-Emulation" - -#: src/sid/xs_interface.c:621 -msgid "" -"reSID is the software SID-chip simulator based on SID reverse-engineering, " -"created by Dag Lem. It is probably the closest thing to real SID available " -"as software-only emulation." -msgstr "" - -#: src/sid/xs_interface.c:625 -msgid "HardSID" -msgstr "HardSID" - -#: src/sid/xs_interface.c:629 -msgid "" -"HardSID is a EISA/PCI card for PC-compatibles, which can be fitted with a " -"real SID-chip. Software can be used to control the HardSID and combined with " -"software emulation of rest of C64 via libSIDPlay2 HardSID can be used to " -"achieve \"near 100%\" similarity to real C64. For more information, see " -"http://www.hardsid.com/" -msgstr "" - -#: src/sid/xs_interface.c:633 -msgid "SIDPlay 2 options:" -msgstr "SIDPlay 2-Optionen:" - -#: src/sid/xs_interface.c:650 -msgid "Fast (nearest neighbour)" -msgstr "Schnell (am nächsten)" - -#: src/sid/xs_interface.c:654 -msgid "" -"Fastest and also worst sounding sampling method, simply picks nearest " -"neighbouring sample." -msgstr "" - -#: src/sid/xs_interface.c:658 -msgid "Linear interpolation" -msgstr "Lineare Interpolation" - -#: src/sid/xs_interface.c:662 -msgid "" -"Uses linear interpolation between samples, yielding higher audio quality " -"with less sampling noise." -msgstr "" - -#: src/sid/xs_interface.c:673 -msgid "Resampling (FIR)" -msgstr "Resampling (FIR)" - -#: src/sid/xs_interface.c:680 -msgid "reSID sampling options:" -msgstr "reSID-Sampling-Optionen:" - -#: src/sid/xs_interface.c:685 -msgid "Emu#2" -msgstr "" - -#: src/sid/xs_interface.c:697 -msgid "Emulate filters" -msgstr "Filter emulieren" - -#: src/sid/xs_interface.c:701 -msgid "" -"This option enables emulation of SID filter. The filter is an essential part " -"of SID's sound capacity, but accurate emulation of it may require quite much " -"CPU power. However, if filter emulation is disabled, tunes won't sound " -"authentic at all if they utilize the filter." -msgstr "" - -#: src/sid/xs_interface.c:726 -msgid "FS" -msgstr "" - -#: src/sid/xs_interface.c:743 -msgid "FM" -msgstr "" - -#: src/sid/xs_interface.c:760 -msgid "FT" -msgstr "" - -#: src/sid/xs_interface.c:771 -msgid "Reset values" -msgstr "Werte zurücksetzen" - -#: src/sid/xs_interface.c:776 -msgid "SIDPlay1" -msgstr "SIDPlay1" - -#: src/sid/xs_interface.c:817 -msgid "Export" -msgstr "Exportieren" - -#: src/sid/xs_interface.c:825 -msgid "Use" -msgstr "Nutzen" - -#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:430 -msgid "Save" -msgstr "Speichern" - -#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:429 -msgid "Import" -msgstr "Importieren" - -#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:431 -msgid "Delete" -msgstr "Löschen" - -#: src/sid/xs_interface.c:863 -msgid "Filter curve:" -msgstr "Filterkurve:" - -#: src/sid/xs_interface.c:868 -msgid "SIDPlay2" -msgstr "SIDPlay2" - -#: src/sid/xs_interface.c:874 -msgid "Filters" -msgstr "Filter" +#: src/search-tool/search-tool.c:653 +msgid "Please wait ..." +msgstr "Bitte warten ..." -#: src/sid/xs_interface.c:897 -msgid "Play at least for specified time" -msgstr "Mindestens für die angegebene Zeit spielen" - -#: src/sid/xs_interface.c:901 -msgid "" -"If enabled, the tune is played at least for the specified time, adding " -"silence to the end if necessary." -msgstr "" -"Wenn aktiviert, wird das Stück mindestens für die angegebene Zeit " -"abgespielt, wobei nötigenfalls Stille zum Ende hinzugefügt wird." - -#: src/sid/xs_interface.c:908 src/sid/xs_interface.c:962 -#: src/sid/xs_interface.c:1142 -msgid "Playtime:" -msgstr "Spielzeit:" - -#: src/sid/xs_interface.c:928 -msgid "Minimum playtime:" -msgstr "Minimale Spielzeit:" - -#: src/sid/xs_interface.c:945 -msgid "Play for specified time maximum" -msgstr "Für bestimmte Maximalzeit spielen" - -#: src/sid/xs_interface.c:949 -msgid "" -"If enabled, tune is played until specified duration is reached (aka maximum " -"playtime)." -msgstr "" -"Falls aktiviert, wird der Titel gespielt bis ein bestimmter Wert erreicht " -"wird (z.B. Maximale Spielzeit)." - -#: src/sid/xs_interface.c:951 -msgid "Only when song length is unknown" -msgstr "Nur wenn Titellänge unbekannt" - -#: src/sid/xs_interface.c:955 -msgid "" -"If enabled, the maximum playtime is applied only if song/tune length is not " -"known." -msgstr "" -"Falls aktiviert, wird die Maximale Spielzeit nur benutzt, wenn Titellänge " -"unbekannt ist." - -#: src/sid/xs_interface.c:982 -msgid "Maximum playtime:" -msgstr "Maximale Spielzeit:" - -#: src/sid/xs_interface.c:999 -msgid "Use XSIDPLAY-compatible database" -msgstr "XSIDPLAY-kompatible Datenbank benützen" - -#: src/sid/xs_interface.c:1003 -msgid "" -"This option enables using of XSIDPLAY compatible song length database. " -"(Refer to Audacious-SID documentation for more information)" -msgstr "" -"Diese Option aktiviert die Nutzung der XSIDPLAY Datenbank (siehe Audacious-" -"SID-Dokumentation für weitere Informationen)." - -#: src/sid/xs_interface.c:1010 -msgid "DB-file:" -msgstr "DB-Datei:" - -#: src/sid/xs_interface.c:1020 -msgid "Database path and filename" -msgstr "Datenbankpfad und -dateiname" - -#: src/sid/xs_interface.c:1027 -msgid "Browse for song length-database file" -msgstr "Nach Titellänge-Datei in Datenbank suchen" - -#: src/sid/xs_interface.c:1049 -msgid "Song length database:" -msgstr "Titellänge Datenbank:" - -#: src/sid/xs_interface.c:1054 -msgid "Songlength" -msgstr "Titellänge" - -#: src/sid/xs_interface.c:1072 -msgid "Override generic Tuplez format string" -msgstr "Allgemeinen Tuplez-Format-String überschreiben" - -#: src/sid/xs_interface.c:1076 -msgid "" -"By enabling this option you can specify a custom Tuplez formatting string " -"for SID-files. The SID-plugin specific Tuplez tags are described shortly " -"below." -msgstr "" -"Mit dem Aktivieren dieser Einstellung kann man einen bestimmten Tuplez-" -"Formatierungs-String für SID-Dateien festlegen. Spezifische Tags sind unten " -"kurz erklärt." - -#: src/sid/xs_interface.c:1087 -msgid "Tuplez format string for SID-files" -msgstr "Tuplez-Formatierungs-String für SID-Dateien" - -#: src/sid/xs_interface.c:1090 -msgid "" -"SID-specific Tuplez fields:\n" -"\n" -"sid-format\t\t- Specific fileformat\n" -"sid-model\t\t- 6581 or 8580\n" -"sid-speed\t\t- Timing or speed: PAL/NTSC/etc.\n" -"\n" -"Other \"special\" fields set:\n" -"\n" -"subsong-num, subsong-id" -msgstr "" - -#: src/sid/xs_interface.c:1098 -msgid "Song title format:" -msgstr "Titelformat:" - -#: src/sid/xs_interface.c:1103 -msgid "Title" -msgstr "Titel" - -#: src/sid/xs_interface.c:1125 -msgid "Add sub-tunes to playlist" -msgstr "Sub-Tune zu Wiedergabeliste hinzufügen" - -#: src/sid/xs_interface.c:1129 -msgid "" -"If enabled, sub-tunes of each file will be added to playlist. If disabled, " -"only the default sub-tune will be added." -msgstr "" -"Falls aktiviert, werden Sub-Tunes jeder Datei zur Wiedergabeliste " -"hinzugefügt. Falls deaktiiviert, werden nur die Standard-Sub-Tunes " -"hinzugefügt." - -#: src/sid/xs_interface.c:1131 -msgid "Only tunes with specified minimum duration" -msgstr "Nur mit spezifizierter Minimumdauer abstimmen" - -#: src/sid/xs_interface.c:1135 -msgid "Only add sub-tunes that have a duration of at least specified time." -msgstr "" -"Nur Sub-Tunes hinzufügen, die mindestens eine bestimmte Mindestdauer haben." - -#: src/sid/xs_interface.c:1162 -msgid "Sub-tune handling:" -msgstr "Sub-Tune Umgang:" - -#: src/sid/xs_interface.c:1179 -msgid "Use STIL database" -msgstr "STIL-Datenbank verwenden" - -#: src/sid/xs_interface.c:1183 -msgid "" -"If this option is enabled (and the database & HVSC settings below are " -"correctly set), Audacious-SID will use and display additional information " -"from STIL database when HVSC SIDs are played." -msgstr "" -"Falls Option aktiviert (und die Datenback & die HVSC Einstellungen unten " -"richtig gesetzt sind), wird Audacious-SID zusätzliche Informationen aus der " -"STIL-Datenbank bei passenden Titeln nutzen und anzeigen." - -#: src/sid/xs_interface.c:1190 -msgid "STIL file:" -msgstr "STIL-Datei:" - -#: src/sid/xs_interface.c:1206 -msgid "" -"Path and filename of STIL database file (STIL.txt), usually found from " -"HVSC's DOCUMENTS-subdirectory." -msgstr "" -"Pfad und Dateiname der STIL-Datenbank-Datei (STIL.txt), üblicherweise im " -"HVSC-DOCUMENTS-Unterverzeichnis." - -#: src/sid/xs_interface.c:1219 -msgid "Browse for STIL-database file" -msgstr "Nach STIL-Datenbank-Datei suchen" - -#: src/sid/xs_interface.c:1246 -msgid "HVSC path:" -msgstr "HVSC-Pfad:" - -#: src/sid/xs_interface.c:1262 -msgid "" -"Path to base-directory of your High Voltage SID Collection (HVSC), for " -"example /media/C64Music/" -msgstr "" -"Pfad zum Basis-Verzeichnis der High Voltage SID Collection (HVSC), zum " -"Beispiel /media/C64Music/" - -#: src/sid/xs_interface.c:1275 -msgid "Browse for HVSC path" -msgstr "Nach HVSC-Pfad suchen" - -#: src/sid/xs_interface.c:1297 -msgid "SID Tune Information List (STIL) database:" -msgstr "SID Tune Information List (STIL)-Datenbank:" - -#: src/sid/xs_interface.c:1321 -msgid "Cancel any changes" -msgstr "Alle Änderungen verwerfen" - -#: src/sid/xs_interface.c:1328 -msgid "Accept and update changes" -msgstr "Änderungen akzeptieren und aktualisieren" - -#: src/sid/xs_interface.c:1628 -msgid "Audacious-SID Fileinfo" -msgstr "Audacious-SID-Dateiinformation" - -#: src/sid/xs_interface.c:1649 -msgid "Filename:" -msgstr "Dateiname:" - -#: src/sid/xs_interface.c:1657 -msgid "Songname:" -msgstr "Titel:" - -#: src/sid/xs_interface.c:1665 -msgid "Composer:" -msgstr "Komponist:" - -#: src/sid/xs_interface.c:1673 -msgid "Copyright:" -msgstr "Copyright:" - -#: src/sid/xs_interface.c:1717 -msgid "Song Information:" -msgstr "Titel-Information:" - -#: src/sid/xs_interface.c:1752 -msgid "Author:" -msgstr "Autor:" - -#: src/sid/xs_interface.c:1786 -msgid "Duration:" -msgstr "Länge:" - -#: src/sid/xs_interface.c:1820 -msgid "Sub-tune Information:" -msgstr "Sub-Tune Information:" - -#: src/sid/xs_interface.c:1881 -msgid "Select HVSC song length database" -msgstr "HVSC-Titellängendatenbank auswählen" - -#: src/sid/xs_interface.c:1922 -msgid "Select STIL-database" -msgstr "STIL-Datenbank auswählen" - -#: src/sid/xs_interface.c:1963 -msgid "Select HVSC location prefix" -msgstr "HVSC Ort-Präfix auswählen" - -#: src/sid/xs_interface.c:2004 -msgid "Select SIDPlay2 filters file for importing" -msgstr "SIDPlay2-Filterdatei für Importieren auswählen" - -#: src/sid/xs_interface.c:2045 -msgid "Select SIDPlay2 filters file for exporting" -msgstr "SIDPlay2-Filterdatei für Exportieren auswählen" - -#: src/sid/xs_interface.c:2093 src/sid/xs_interface.c:2106 -msgid "Confirm selected action" -msgstr "Gewählte Aktion bestätigen" - -#: src/sid/xs_interface.c:2123 -msgid "Yes" -msgstr "Ja" - -#: src/sid/xs_interface.c:2129 -msgid "No" -msgstr "Nein" +#: src/search-tool/search-tool.c:675 +msgid "Choose Folder" +msgstr "Ordner auswählen" -#: src/skins/plugin.c:179 +#: src/skins/plugin.c:167 msgid "About Skinned GUI" msgstr "Ãœber Skinned GUI" -#: src/skins/plugin.c:180 +#: src/skins/plugin.c:168 msgid "" "Copyright (c) 2008, by Tomasz MoÅ„ \n" "\n" msgstr "" +"Copyright (c) 2008, von Tomasz MoÅ„ \n" +"\n" -#: src/skins/plugin.c:196 -msgid "Skinned Interface" -msgstr "Oberfläche" - -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:207 msgid "_Player:" -msgstr "Hauptfenster" +msgstr "_Hauptfenster:" -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:208 msgid "Select main player window font:" msgstr "Hauptfenster-Schrift auswählen:" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:210 msgid "_Playlist:" -msgstr "Wiedergabeliste" +msgstr "_Wiedergabeliste:" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:211 msgid "Select playlist font:" -msgstr "Playlist-Schrift auswählen" +msgstr "Playlist-Schrift auswählen:" -#: src/skins/skins_cfg.c:321 +#: src/skins/skins_cfg.c:215 msgid "_Fonts" msgstr "Schriftarten" -#: src/skins/skins_cfg.c:323 -msgid "Use Bitmap fonts if available" -msgstr "Bitmap-Schriften verwenden, falls verfügbar" - -#: src/skins/skins_cfg.c:323 -msgid "" -"Use bitmap fonts if they are available. Bitmap fonts do not support Unicode " -"strings." -msgstr "" -"Bitmap-Schriften verwenden, falls verfügbar (keine Unicode-Strings " -"Unterstützung)" - -#: src/skins/skins_cfg.c:324 -msgid "_Miscellaneous" -msgstr "Verschiedenes" - -#: src/skins/skins_cfg.c:325 -msgid "Show separators in playlist" -msgstr "Trennstriche in Wiedergabeliste anzeigen" +#: src/skins/skins_cfg.c:218 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "Benutze Bitmap-Schriftarten (nur ASCII-Unterstützung)" + +#: src/skins/skins_cfg.c:220 +msgid "Scroll song title in both directions" +msgstr "Titel in beide Richtungen scrollen" -#: src/skins/skins_cfg.c:327 -msgid "Show window manager decoration" -msgstr "Fenstermanager-Dekorationen anzeigen" - -#: src/skins/skins_cfg.c:328 -msgid "This enables the window manager to show decorations for windows." -msgstr "Dies aktiviert die Anzeige der Fenstermanager-Dekorationen." - -#: src/skins/skins_cfg.c:329 -msgid "Use two-way text scroller" -msgstr "Text hin und her scrollen" +#: src/skins/skins_cfg.c:298 +msgid "_Skin" +msgstr "_Skin" -#: src/skins/skins_cfg.c:330 -msgid "" -"If selected, the file information text in the main window will scroll back " -"and forth. If not selected, the text will only scroll in one direction." -msgstr "" -"Wenn ausgewählt, bewegt sich der Text der Dateiinformation abwechselnd von " -"Links nach Rechts. Ansonsten bewegt er sich nur in eine Richtung." +#: src/skins/skins_cfg.c:345 +msgid "Interface Preferences" +msgstr "Interface-Einstellungen" -#: src/skins/skins_cfg.c:331 -msgid "Disable inline gtk theme" -msgstr "Schalte Inline-GTK-Theme aus" +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "Vorverstärkung" -#: src/skins/skins_cfg.c:333 -msgid "Random skin on play" -msgstr "Zufälliger Skin beim Abspielen" +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" +msgstr "31 Hz" -#: src/skins/skins_cfg.c:334 -msgid "Allow loading incomplete skins" -msgstr "Erlaube Laden unvollständiger Skins" +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "63 Hz" -#: src/skins/skins_cfg.c:335 -msgid "" -"If selected, audacious won't refuse loading broken skins. Use only if your " -"favourite skin doesn't work" -msgstr "" -"Wenn aktiviert, lädt Audacious auch Skins, die nicht vollständig sind. Nur " -"wenn nötig aktivieren." +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" +msgstr "125 Hz" -#: src/skins/skins_cfg.c:401 -msgid "Color Adjustment" -msgstr "Farbkorrektur" +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" +msgstr "250 Hz" -#: src/skins/skins_cfg.c:407 -msgid "" -"Audacious allows you to alter the color balance of the skinned UI. The " -"sliders below will allow you to do this." -msgstr "" -"Farbverläufe der Benutzeroberfläche sind durch die Schieberegler unten " -"anpassbar:" +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" +msgstr "500 Hz" -#: src/skins/skins_cfg.c:417 -msgid "Blue" -msgstr "Blau" +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" +msgstr "1 kHz" -#: src/skins/skins_cfg.c:424 -msgid "Green" -msgstr "Rot" +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" +msgstr "2 kHz" -#: src/skins/skins_cfg.c:431 -msgid "Red" -msgstr "Grün" +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" +msgstr "4 kHz" -#: src/skins/skins_cfg.c:569 -msgid "_Skin" -msgstr "_Skin" +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" +msgstr "8 kHz" -#: src/skins/skins_cfg.c:574 -msgid "Color adjustment ..." -msgstr "Farbkorrektur ..." +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" +msgstr "16 kHz" -#: src/skins/ui_equalizer.c:463 +#: src/skins/ui_equalizer.c:379 msgid "Audacious Equalizer" msgstr "Audacious Equalizer" -#: src/skins/ui_equalizer.c:991 +#: src/skins/ui_equalizer.c:887 msgid "Presets" msgstr "Standard" -#: src/skins/ui_main.c:593 -msgid "kbps" -msgstr "" +#: src/skins/ui_equalizer.c:968 src/skins/ui_manager.c:442 +msgid "Load preset" +msgstr "Voreinstellungen laden" -#: src/skins/ui_main.c:601 -msgid "kHz" -msgstr "kHz" +#: src/skins/ui_equalizer.c:985 +msgid "Load auto-preset" +msgstr "Voreinstellungen automatisch laden" -#: src/skins/ui_main.c:608 -msgid "surround" -msgstr "Surround" +#: src/skins/ui_equalizer.c:1015 src/skins/ui_equalizer.c:1033 +#: src/skins/ui_equalizer.c:1049 +msgid "Load equalizer preset" +msgstr "Equalizer-Voreinstellungen laden" -#: src/skins/ui_main.c:981 -msgid "Audacious - visibility warning" -msgstr "Audacious - Visibility-Warnung" +#: src/skins/ui_equalizer.c:1068 src/skins/ui_manager.c:463 +msgid "Save preset" +msgstr "Speichere Voreinstellungen" -#: src/skins/ui_main.c:984 -msgid "Show main player window" -msgstr "Hauptfenster anzeigen" +#: src/skins/ui_equalizer.c:1084 +msgid "Save auto-preset" +msgstr "Speichere automatische Voreinstellungen" -#: src/skins/ui_main.c:985 -msgid "Ignore" -msgstr "Ignoriere" +#: src/skins/ui_equalizer.c:1114 src/skins/ui_equalizer.c:1150 +msgid "Save equalizer preset" +msgstr "Equalizer-Voreinstellungen speichern" -#: src/skins/ui_main.c:991 -msgid "" -"Audacious has been started with all of its windows hidden.\n" -"You may want to show the player window again to control Audacious; " -"otherwise, you'll have to control it remotely via audtool or enabled plugins " -"(such as the statusicon plugin)." -msgstr "" -"Audacious wurde mit allen Fenstern versteckt gestartet.\n" -"Das Hauptfenster zum Steuern von Audacious sollte aktiviert sein, ansonsten " -"muss Audacious via audtool oder aktivierten Plugins ferngesteuert werden." +#: src/skins/ui_equalizer.c:1169 src/skins/ui_manager.c:478 +msgid "Delete preset" +msgstr "Lösche Voreinstellungen" -#: src/skins/ui_main.c:997 -msgid "Always ignore, show/hide is controlled remotely" -msgstr "Immer ignorieren, anzeigen/verstecken wird ferngesteuert" +#: src/skins/ui_equalizer.c:1186 +msgid "Delete auto-preset" +msgstr "Lösche automatische Voreinstellungen" -#: src/skins/ui_main.c:1042 -msgid "Audacious - broken GTK engine usage warning" -msgstr "Audacious - Warnung: defekte GTK-Engine" +#: src/skins/ui_main.c:444 +msgid "kbps" +msgstr "kbps" -#: src/skins/ui_main.c:1050 -#, c-format -msgid "" -"Broken GTK engine in use\n" -"\n" -"Audacious has detected that you are using a broken GTK engine.\n" -"\n" -"The theme engine you are using, %s, is incompatible with some of the " -"features used by modern skins. The incompatible features have been disabled " -"for this session.\n" -"\n" -"To use these features, please consider using a different GTK theme engine." -msgstr "" +#: src/skins/ui_main.c:452 +msgid "kHz" +msgstr "kHz" -#: src/skins/ui_main.c:1061 -msgid "Do not display this warning again" -msgstr "Diese Warnung nicht mehr anzeigen" +#: src/skins/ui_main.c:459 +msgid "surround" +msgstr "Surround" -#: src/skins/ui_main.c:1269 +#: src/skins/ui_main.c:807 #, c-format -msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)" -msgstr "Suche nach: %d:%-2.2d/%d:%-2.2d (%d%%)" +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "Suche nach %d:%-2.2d / %d:%-2.2d" -#: src/skins/ui_main.c:1299 +#: src/skins/ui_main.c:828 #, c-format msgid "Volume: %d%%" -msgstr "Lautstärke: (%d%%)" +msgstr "Lautstaerke: (%d%%)" -#: src/skins/ui_main.c:1322 +#: src/skins/ui_main.c:851 #, c-format msgid "Balance: %d%% left" msgstr "Balance: %d%% links" -#: src/skins/ui_main.c:1324 +#: src/skins/ui_main.c:853 msgid "Balance: center" msgstr "Balance: Mitte" -#: src/skins/ui_main.c:1326 +#: src/skins/ui_main.c:855 #, c-format msgid "Balance: %d%% right" msgstr "Balance: %d%% rechts" -#: src/skins/ui_main.c:1618 +#: src/skins/ui_main.c:981 msgid "Options Menu" msgstr "Optionen" -#: src/skins/ui_main.c:1622 +#: src/skins/ui_main.c:985 msgid "Disable 'Always On Top'" msgstr "'Immer im Vordergrund' aus" -#: src/skins/ui_main.c:1624 +#: src/skins/ui_main.c:987 msgid "Enable 'Always On Top'" msgstr "'Immer im Vordergrund' an" -#: src/skins/ui_main.c:1627 +#: src/skins/ui_main.c:990 msgid "File Info Box" msgstr "Dateiinformationen" -#: src/skins/ui_main.c:1631 -msgid "Disable 'GUI Scaling'" -msgstr "'GUI-Skalierung' aus" - -#: src/skins/ui_main.c:1633 -msgid "Enable 'GUI Scaling'" -msgstr "'GUI-Skalierung' an" - -#: src/skins/ui_main.c:1636 +#: src/skins/ui_main.c:995 msgid "Visualization Menu" msgstr "Visualisierungs-Menü" -#: src/skins/ui_main.c:2348 +#: src/skins/ui_main.c:1653 msgid "Single mode." -msgstr "" +msgstr "Single-Modus." -#: src/skins/ui_main.c:2350 +#: src/skins/ui_main.c:1655 msgid "Playlist mode." msgstr "Wiedergabelistenmodus" -#: src/skins/ui_main.c:2374 +#: src/skins/ui_main.c:1677 msgid "Stopping after song." msgstr "Nach Titel stoppen." -#: src/skins/ui_main.c:2376 +#: src/skins/ui_main.c:1679 msgid "Not stopping after song." msgstr "Nicht nach Titel stoppen." -#: src/skins/ui_manager.c:50 src/skins/ui_manager.c:51 +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 msgid "Autoscroll Songname" msgstr "Autoscrollen des Titelnamens" -#: src/skins/ui_manager.c:56 src/skins/ui_manager.c:57 +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "Nach aktuellem Titel stoppen" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 msgid "Peaks" msgstr "Spitzen" -#: src/skins/ui_manager.c:68 src/skins/ui_manager.c:69 +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "Wiederholen" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "Zufällige Wiedergabe" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "Wiedergabeliste nicht weiterspielen" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 msgid "Show Player" msgstr "Hauptfenster anzeigen" -#: src/skins/ui_manager.c:71 src/skins/ui_manager.c:72 +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 msgid "Show Playlist Editor" msgstr "Wiedergabelisten-Editor anzeigen" -#: src/skins/ui_manager.c:74 src/skins/ui_manager.c:75 +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 msgid "Show Equalizer" msgstr "Equalizer anzeigen" -#: src/skins/ui_manager.c:77 src/skins/ui_manager.c:78 +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 msgid "Always on Top" msgstr "Immer im Vordergrund" -#: src/skins/ui_manager.c:80 src/skins/ui_manager.c:81 +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 msgid "Put on All Workspaces" msgstr "Auf allen Arbeitsflächen" -#: src/skins/ui_manager.c:83 src/skins/ui_manager.c:84 +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 msgid "Roll up Player" msgstr "Player aufrollen" -#: src/skins/ui_manager.c:86 src/skins/ui_manager.c:87 +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 msgid "Roll up Playlist Editor" msgstr "Wiedergabelisten-Editor aufrollen" -#: src/skins/ui_manager.c:89 src/skins/ui_manager.c:90 +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 msgid "Roll up Equalizer" msgstr "Equalizer aufrollen" -#: src/skins/ui_manager.c:92 src/sndstretch/sndstretch_xmms.c:393 -msgid "Scale" -msgstr "Skalierung" - -#: src/skins/ui_manager.c:93 -msgid "DoubleSize" -msgstr "Doppelte Größe" - -#: src/skins/ui_manager.c:95 src/skins/ui_manager.c:96 -msgid "Easy Move" -msgstr "Leichtes Bewegen" - -#: src/skins/ui_manager.c:104 +#: src/skins/ui_manager.c:115 msgid "Analyzer" -msgstr "" +msgstr "Analyzer" -#: src/skins/ui_manager.c:105 +#: src/skins/ui_manager.c:116 msgid "Scope" -msgstr "" +msgstr "Scope" -#: src/skins/ui_manager.c:106 +#: src/skins/ui_manager.c:117 msgid "Voiceprint" -msgstr "" +msgstr "Voiceprint" -#: src/skins/ui_manager.c:107 +#: src/skins/ui_manager.c:118 msgid "Off" msgstr "Aus" -#: src/skins/ui_manager.c:111 src/skins/ui_manager.c:128 -#: src/skins/ui_manager.c:134 +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 msgid "Normal" msgstr "Normal" -#: src/skins/ui_manager.c:112 src/skins/ui_manager.c:129 +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 msgid "Fire" msgstr "Feuer" -#: src/skins/ui_manager.c:113 +#: src/skins/ui_manager.c:124 msgid "Vertical Lines" msgstr "Vertikale Linien" -#: src/skins/ui_manager.c:117 +#: src/skins/ui_manager.c:128 msgid "Lines" msgstr "Linien" -#: src/skins/ui_manager.c:118 +#: src/skins/ui_manager.c:129 msgid "Bars" msgstr "Balken" -#: src/skins/ui_manager.c:122 +#: src/skins/ui_manager.c:133 msgid "Dot Scope" msgstr "Punkte" -#: src/skins/ui_manager.c:123 +#: src/skins/ui_manager.c:134 msgid "Line Scope" msgstr "Linien" -#: src/skins/ui_manager.c:124 +#: src/skins/ui_manager.c:135 msgid "Solid Scope" msgstr "Beständig" -#: src/skins/ui_manager.c:130 +#: src/skins/ui_manager.c:141 msgid "Ice" msgstr "Eis" -#: src/skins/ui_manager.c:135 +#: src/skins/ui_manager.c:146 msgid "Smooth" msgstr "Weich" -#: src/skins/ui_manager.c:139 src/skins/ui_manager.c:147 +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 msgid "Slowest" msgstr "Am langsamsten" -#: src/skins/ui_manager.c:140 src/skins/ui_manager.c:148 +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 msgid "Slow" msgstr "Langsam" -#: src/skins/ui_manager.c:141 src/skins/ui_manager.c:149 +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 msgid "Medium" msgstr "Normal" -#: src/skins/ui_manager.c:142 src/skins/ui_manager.c:150 +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 msgid "Fast" msgstr "Schnell" -#: src/skins/ui_manager.c:143 src/skins/ui_manager.c:151 +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 msgid "Fastest" msgstr "Am schnellsten" -#: src/skins/ui_manager.c:155 +#: src/skins/ui_manager.c:166 msgid "Time Elapsed" msgstr "Verstrichene Zeit" -#: src/skins/ui_manager.c:156 +#: src/skins/ui_manager.c:167 msgid "Time Remaining" msgstr "Verbleibende Zeit" -#: src/skins/ui_manager.c:185 +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "Pause" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "Vorheriger" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "Nächster" + +#: src/skins/ui_manager.c:196 msgid "Visualization" msgstr "Visualisierung" -#: src/skins/ui_manager.c:186 +#: src/skins/ui_manager.c:197 msgid "Visualization Mode" msgstr "Visualisierungs-Modus" -#: src/skins/ui_manager.c:187 +#: src/skins/ui_manager.c:198 msgid "Analyzer Mode" msgstr "Analyzer-Modus" -#: src/skins/ui_manager.c:188 +#: src/skins/ui_manager.c:199 msgid "Scope Mode" msgstr "Scope-Modus" -#: src/skins/ui_manager.c:189 +#: src/skins/ui_manager.c:200 msgid "Voiceprint Mode" msgstr "Voiceprint-Modus" -#: src/skins/ui_manager.c:190 +#: src/skins/ui_manager.c:201 msgid "WindowShade VU Mode" msgstr "WindowShadeVU-Modus" -#: src/skins/ui_manager.c:191 +#: src/skins/ui_manager.c:202 msgid "Analyzer Falloff" msgstr "Analyzer-Fallgeschwindigkeit" -#: src/skins/ui_manager.c:192 +#: src/skins/ui_manager.c:203 msgid "Peaks Falloff" msgstr "Spitzen-Fallgeschwindigkeit" -#: src/skins/ui_manager.c:202 src/skins/ui_manager.c:203 +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "Wiedergabeliste" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "Neue Wiedergabeliste" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 msgid "Select Next Playlist" msgstr "Nächste Wiedergabeliste wählen" -#: src/skins/ui_manager.c:205 src/skins/ui_manager.c:206 +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 msgid "Select Previous Playlist" msgstr "Vorherige Wiedergabeliste wählen" +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "Wiedergabeliste löschen" + #: src/skins/ui_manager.c:222 +msgid "Import Playlist" +msgstr "Wiedergabeliste importieren" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "Lade Wiedergabeliste in ausgewählte Wiedergabeliste." + +#: src/skins/ui_manager.c:226 +msgid "Export Playlist" +msgstr "Wiedergabeliste exportieren" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "Ausgewählte Wiedergabelisten speichern." + +#: src/skins/ui_manager.c:229 msgid "Refresh List" msgstr "Liste aktualisieren" -#: src/skins/ui_manager.c:226 -msgid "List Manager" -msgstr "Listenmanager" +#: src/skins/ui_manager.c:230 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "Metadaten aktualisieren." + +#: src/skins/ui_manager.c:233 +msgid "Playlist Manager" +msgstr "Wiedergabelisten-Manager" + +#: src/skins/ui_manager.c:234 +msgid "Queue Manager" +msgstr "Warteschlangen-Manager" + +#: src/skins/ui_manager.c:237 +msgid "View" +msgstr "Ansicht" + +#: src/skins/ui_manager.c:238 +msgid "Interface" +msgstr "Interface" + +#: src/skins/ui_manager.c:239 +msgid "Interface Preferences ..." +msgstr "Interface-Einstellungen ..." -#: src/skins/ui_manager.c:236 +#: src/skins/ui_manager.c:243 msgid "Add Internet Address..." msgstr "Internetadresse hinzufügen..." -#: src/skins/ui_manager.c:240 +#: src/skins/ui_manager.c:244 +msgid "Adds a remote track to the playlist." +msgstr "Entfernter Titel hinzufügen." + +#: src/skins/ui_manager.c:247 msgid "Add Files..." msgstr "Dateien hinzufügen..." -#: src/skins/ui_manager.c:246 +#: src/skins/ui_manager.c:248 +msgid "Adds files to the playlist." +msgstr "Fügt Dateien in Wiedergabeliste ein." + +#: src/skins/ui_manager.c:253 msgid "Search and Select" msgstr "Suchen und Auswählen" -#: src/skins/ui_manager.c:247 +#: src/skins/ui_manager.c:254 msgid "" "Searches the playlist and selects playlist entries based on specific " "criteria." -msgstr "Wiedergabeliste auf bestimmte Suchkriterien durchsuchen lassen" +msgstr "Wiedergabeliste nach bestimmte Suchkriterien durchsuchen lassen" -#: src/skins/ui_manager.c:250 +#: src/skins/ui_manager.c:257 msgid "Invert Selection" msgstr "Auswahl invertieren" -#: src/skins/ui_manager.c:251 +#: src/skins/ui_manager.c:258 msgid "Inverts the selected and unselected entries." msgstr "Invertiere alle Einträge." -#: src/skins/ui_manager.c:268 +#: src/skins/ui_manager.c:261 +msgid "Select All" +msgstr "Alle auswählen" + +#: src/skins/ui_manager.c:262 +msgid "Selects all of the playlist entries." +msgstr "Wähle alle Einträge aus." + +#: src/skins/ui_manager.c:265 +msgid "Select None" +msgstr "Keine auswählen" + +#: src/skins/ui_manager.c:266 +msgid "Deselects all of the playlist entries." +msgstr "Alle ausgewählten Einträge abwählen." + +#: src/skins/ui_manager.c:271 +msgid "Remove All" +msgstr "Alle entfernen" + +#: src/skins/ui_manager.c:272 +msgid "Removes all entries from the playlist." +msgstr "Entfernt alle Warteschlangeneinträge." + +#: src/skins/ui_manager.c:275 msgid "Clear Queue" msgstr "Warteschlange löschen" -#: src/skins/ui_manager.c:269 +#: src/skins/ui_manager.c:276 msgid "Clears the queue associated with this playlist." msgstr "Zugehörige Warteschlange der Wiedergabeliste entfernen." -#: src/skins/ui_manager.c:272 +#: src/skins/ui_manager.c:279 msgid "Remove Unavailable Files" msgstr "Nicht verfügbare Dateien entfernen" -#: src/skins/ui_manager.c:273 +#: src/skins/ui_manager.c:280 msgid "Removes unavailable files from the playlist." msgstr "Enfernt alle nicht verfügbaren Dateien aus der Liste." -#: src/skins/ui_manager.c:276 +#: src/skins/ui_manager.c:283 msgid "Remove Duplicates" msgstr "Duplikate entfernen" -#: src/skins/ui_manager.c:279 +#: src/skins/ui_manager.c:285 src/skins/ui_manager.c:317 +#: src/skins/ui_manager.c:347 +msgid "By Title" +msgstr "Nach Titel" + +#: src/skins/ui_manager.c:286 msgid "Removes duplicate entries from the playlist by title." msgstr "Duplikate nach Titel entfernen." -#: src/skins/ui_manager.c:282 src/skins/ui_manager.c:318 -#: src/skins/ui_manager.c:348 +#: src/skins/ui_manager.c:289 src/skins/ui_manager.c:329 +#: src/skins/ui_manager.c:359 msgid "By Filename" msgstr "Nach Dateinamen" -#: src/skins/ui_manager.c:283 +#: src/skins/ui_manager.c:290 msgid "Removes duplicate entries from the playlist by filename." msgstr "Duplikate nach Dateinamen entfernen." -#: src/skins/ui_manager.c:286 src/skins/ui_manager.c:322 -#: src/skins/ui_manager.c:352 +#: src/skins/ui_manager.c:293 src/skins/ui_manager.c:333 +#: src/skins/ui_manager.c:363 msgid "By Path + Filename" msgstr "Nach Pfad + Dateinamen" -#: src/skins/ui_manager.c:287 +#: src/skins/ui_manager.c:294 msgid "Removes duplicate entries from the playlist by their full path." msgstr "Duplikate nach vollem Pfad entfernen." -#: src/skins/ui_manager.c:300 +#: src/skins/ui_manager.c:297 +msgid "Remove Unselected" +msgstr "Nicht ausgewählte entfernen" + +#: src/skins/ui_manager.c:298 +msgid "Remove unselected entries from the playlist." +msgstr "Entferne nicht ausgewählte Titel." + +#: src/skins/ui_manager.c:301 +msgid "Remove Selected" +msgstr "Auswahl entfernen" + +#: src/skins/ui_manager.c:302 +msgid "Remove selected entries from the playlist." +msgstr "Ausgewählte Wiedergabelisteneinträge entfernen." + +#: src/skins/ui_manager.c:307 +msgid "Randomize List" +msgstr "Liste zufällig anordnen" + +#: src/skins/ui_manager.c:308 +msgid "Randomizes the playlist." +msgstr "Ordne Liste zufällig an." + +#: src/skins/ui_manager.c:311 msgid "Reverse List" msgstr "Liste umkehren" -#: src/skins/ui_manager.c:301 +#: src/skins/ui_manager.c:312 msgid "Reverses the playlist." msgstr "Wiedergabeliste umkehren." -#: src/skins/ui_manager.c:304 +#: src/skins/ui_manager.c:315 msgid "Sort List" msgstr "Liste sortieren" -#: src/skins/ui_manager.c:307 src/skins/ui_manager.c:337 +#: src/skins/ui_manager.c:318 src/skins/ui_manager.c:348 msgid "Sorts the list by title." -msgstr "Sortiere nach Titel." +msgstr "Sortiere Liste nach Titel." + +#: src/skins/ui_manager.c:321 src/skins/ui_manager.c:351 +msgid "By Album" +msgstr "Nach Album" -#: src/skins/ui_manager.c:311 src/skins/ui_manager.c:341 +#: src/skins/ui_manager.c:322 src/skins/ui_manager.c:352 msgid "Sorts the list by album." -msgstr "Sortiere nach Album." +msgstr "Sortiere Liste nach Album." + +#: src/skins/ui_manager.c:325 src/skins/ui_manager.c:355 +msgid "By Artist" +msgstr "Nach Künstler" -#: src/skins/ui_manager.c:315 src/skins/ui_manager.c:345 +#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 msgid "Sorts the list by artist." -msgstr "Sortiere nach Künstler." +msgstr "Sortiere Liste nach Künstler." -#: src/skins/ui_manager.c:319 src/skins/ui_manager.c:349 +#: src/skins/ui_manager.c:330 src/skins/ui_manager.c:360 msgid "Sorts the list by filename." -msgstr "Sortiere nach Dateiname." +msgstr "Sortiere Liste nach Dateiname." -#: src/skins/ui_manager.c:323 src/skins/ui_manager.c:353 +#: src/skins/ui_manager.c:334 src/skins/ui_manager.c:364 msgid "Sorts the list by full pathname." msgstr "Sortiere Liste nach Pfadnamen." -#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +#: src/skins/ui_manager.c:337 src/skins/ui_manager.c:367 msgid "By Date" msgstr "Nach Datum" -#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +#: src/skins/ui_manager.c:338 src/skins/ui_manager.c:368 msgid "Sorts the list by modification time." -msgstr "Sortiert die Liste nach Modifizierungszeitpunkt" +msgstr "Sortiere Liste nach Modifizierungszeitpunkt." + +#: src/skins/ui_manager.c:341 src/skins/ui_manager.c:371 +msgid "By Track Number" +msgstr "Nach Titelnummer" -#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +#: src/skins/ui_manager.c:342 src/skins/ui_manager.c:372 msgid "Sorts the list by track number." -msgstr "Sortiert die Liste nach Titelnummer" +msgstr "Sortiere Liste nach Titelnummer." -#: src/skins/ui_manager.c:334 +#: src/skins/ui_manager.c:345 msgid "Sort Selected" msgstr "Ausgewählte Sortieren" -#: src/skins/ui_manager.c:373 +#: src/skins/ui_manager.c:381 +msgid "File" +msgstr "Datei" + +#: src/skins/ui_manager.c:384 msgid "Plugin Services" msgstr "Plugin-Dienste" -#: src/skins/ui_manager.c:384 +#: src/skins/ui_manager.c:386 src/skins/ui_manager.c:389 +msgid "View Track Details" +msgstr "Zeige Titeldetails" + +#: src/skins/ui_manager.c:387 src/skins/ui_manager.c:390 +msgid "View track details" +msgstr "Zeige Titeldetails" + +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:393 +msgid "About Audacious" +msgstr "Ãœber Audacious" + +#: src/skins/ui_manager.c:395 msgid "Play File" msgstr "Datei abspielen" -#: src/skins/ui_manager.c:387 +#: src/skins/ui_manager.c:396 +msgid "Load and play a file" +msgstr "Datei laden und abspielen" + +#: src/skins/ui_manager.c:398 msgid "Play Location" msgstr "Internetadresse spielen" -#: src/skins/ui_manager.c:428 +#: src/skins/ui_manager.c:399 +msgid "Play media from the selected location" +msgstr "Medien von bestimmter Adresse abspielen" + +#: src/skins/ui_manager.c:401 +msgid "Plugin services" +msgstr "Plugin-Dienste" + +#: src/skins/ui_manager.c:403 +msgid "Preferences" +msgstr "Einstellungen" + +#: src/skins/ui_manager.c:404 +msgid "Open preferences window" +msgstr "Einstellungen anzeigen" + +#: src/skins/ui_manager.c:407 +msgid "Quit Audacious" +msgstr "Audacious beenden" + +#: src/skins/ui_manager.c:409 src/skins/ui_manager.c:410 +msgid "Set A-B" +msgstr "A-B setzen" + +#: src/skins/ui_manager.c:412 src/skins/ui_manager.c:413 +msgid "Clear A-B" +msgstr "A-B leeren" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Jump to Time" +msgstr "Zu Zeitangabe springen" + +#: src/skins/ui_manager.c:421 +msgid "Queue Toggle" +msgstr "In/Aus Warteschlange" + +#: src/skins/ui_manager.c:422 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "Eintrag in der Wiedergabewarteschleife aktivieren/deaktivieren." + +#: src/skins/ui_manager.c:425 +msgid "Copy" +msgstr "Kopieren" + +#: src/skins/ui_manager.c:427 +msgid "Cut" +msgstr "Ausschneiden" + +#: src/skins/ui_manager.c:429 +msgid "Paste" +msgstr "Einfügen" + +#: src/skins/ui_manager.c:436 msgid "Load" msgstr "Laden" -#: src/skins/ui_manager.c:433 src/skins/ui_manager.c:454 -#: src/skins/ui_manager.c:469 +#: src/skins/ui_manager.c:437 +msgid "Import" +msgstr "Importieren" + +#: src/skins/ui_manager.c:438 +msgid "Save" +msgstr "Speichern" + +#: src/skins/ui_manager.c:439 +msgid "Delete" +msgstr "Löschen" + +#: src/skins/ui_manager.c:441 src/skins/ui_manager.c:462 +#: src/skins/ui_manager.c:477 msgid "Preset" msgstr "Voreinstellung" -#: src/skins/ui_manager.c:434 -msgid "Load preset" -msgstr "Voreinstellungen laden" - -#: src/skins/ui_manager.c:436 src/skins/ui_manager.c:457 -#: src/skins/ui_manager.c:472 +#: src/skins/ui_manager.c:444 src/skins/ui_manager.c:465 +#: src/skins/ui_manager.c:480 msgid "Auto-load preset" msgstr "Voreinstellungen automatisch laden" -#: src/skins/ui_manager.c:437 +#: src/skins/ui_manager.c:445 msgid "Load auto-load preset" msgstr "Voreinstellungen laden" -#: src/skins/ui_manager.c:440 +#: src/skins/ui_manager.c:448 msgid "Load default preset into equalizer" msgstr "Standardwerte in Equalizer laden" -#: src/skins/ui_manager.c:442 +#: src/skins/ui_manager.c:450 msgid "Zero" msgstr "Null" -#: src/skins/ui_manager.c:443 +#: src/skins/ui_manager.c:451 msgid "Set equalizer preset levels to zero" msgstr "Equalizer Einstellungen auf Null setzen" -#: src/skins/ui_manager.c:445 +#: src/skins/ui_manager.c:453 msgid "From file" msgstr "Aus Datei" -#: src/skins/ui_manager.c:446 +#: src/skins/ui_manager.c:454 msgid "Load preset from file" msgstr "Standardwerte aus Datei laden" -#: src/skins/ui_manager.c:448 +#: src/skins/ui_manager.c:456 msgid "From WinAMP EQF file" msgstr "Aus einer WinAMP-EQF-Datei" -#: src/skins/ui_manager.c:449 +#: src/skins/ui_manager.c:457 msgid "Load preset from WinAMP EQF file" msgstr "Lade Standard aus WinAMP-EQF-Datei" -#: src/skins/ui_manager.c:451 +#: src/skins/ui_manager.c:459 msgid "WinAMP Presets" msgstr "WinAMP Standard" -#: src/skins/ui_manager.c:452 +#: src/skins/ui_manager.c:460 msgid "Import WinAMP presets" msgstr "Importiere WinAMP Standard" -#: src/skins/ui_manager.c:455 -msgid "Save preset" -msgstr "Speichere" - -#: src/skins/ui_manager.c:458 +#: src/skins/ui_manager.c:466 msgid "Save auto-load preset" msgstr "Speichere" -#: src/skins/ui_manager.c:461 +#: src/skins/ui_manager.c:469 msgid "Save default preset" msgstr "Standardwerte speichern" -#: src/skins/ui_manager.c:463 +#: src/skins/ui_manager.c:471 msgid "To file" msgstr "in Datei" -#: src/skins/ui_manager.c:464 +#: src/skins/ui_manager.c:472 msgid "Save preset to file" msgstr "Speichere in Datei" -#: src/skins/ui_manager.c:466 +#: src/skins/ui_manager.c:474 msgid "To WinAMP EQF file" msgstr "in WinAMP-EQF-Datei" -#: src/skins/ui_manager.c:467 +#: src/skins/ui_manager.c:475 msgid "Save preset to WinAMP EQF file" msgstr "Speichere in WinAMP-EQF-Datei" -#: src/skins/ui_manager.c:470 -msgid "Delete preset" -msgstr "Lösche Voreinstellungen" - -#: src/skins/ui_manager.c:473 +#: src/skins/ui_manager.c:481 msgid "Delete auto-load preset" msgstr "Lösche Voreinstellungen" -#: src/skins/ui_playlist.c:374 +#: src/skins/ui_playlist.c:248 msgid "Search entries in active playlist" msgstr "Suche Einträge in aktiver Playliste" -#: src/skins/ui_playlist.c:382 +#: src/skins/ui_playlist.c:256 msgid "" "Select entries in playlist by filling one or more fields. Fields use regular " "expressions syntax, case-insensitive. If you don't know how regular " "expressions work, simply insert a literal portion of what you're searching " "for." msgstr "" +"Wählen Sie Einträge in der Wiedergabeliste durch Ausfüllen eines oder " +"mehrerer Eingabefelder aus. Diese nutzen reguläre Ausdrücke, unterscheiden " +"Groß- und Kleinschreibung aber nicht. Falls Sie nicht wissen, wie reguläre " +"Ausdrücke funktionieren, geben Sie einfach nur einen Teilbegriff für Ihre " +"Suche ein." + +#: src/skins/ui_playlist.c:264 +msgid "Title: " +msgstr "Titel: " -#: src/skins/ui_playlist.c:397 +#: src/skins/ui_playlist.c:271 msgid "Album: " -msgstr "Album:" +msgstr "Album: " -#: src/skins/ui_playlist.c:404 +#: src/skins/ui_playlist.c:278 msgid "Artist: " -msgstr "Künstler:" +msgstr "Künstler: " -#: src/skins/ui_playlist.c:411 +#: src/skins/ui_playlist.c:285 msgid "Filename: " -msgstr "Dateiname:" +msgstr "Dateiname: " -#: src/skins/ui_playlist.c:419 +#: src/skins/ui_playlist.c:293 msgid "Clear previous selection before searching" -msgstr "Vorherige Auswahl vorm Suchen löschen" +msgstr "Vorherige Auswahl vor dem Suchen löschen" -#: src/skins/ui_playlist.c:422 +#: src/skins/ui_playlist.c:296 msgid "Automatically toggle queue for matching entries" msgstr "Automatisch zwischen passenden Einträgen wechseln" -#: src/skins/ui_playlist.c:425 +#: src/skins/ui_playlist.c:299 msgid "Create a new playlist with matching entries" msgstr "Erstelle neue Playlist mit passenden Einträgen" -#: src/skins/ui_playlist.c:772 -msgid "Save as Static Playlist" -msgstr "Als statische Wiedergabeliste speichern" - -#: src/skins/ui_playlist.c:779 -msgid "Use Relative Path" -msgstr "Relativen Pfad verwenden" - -#: src/skins/ui_playlist.c:802 -msgid "Load Playlist" -msgstr "Wiedergabenliste laden" - -#: src/skins/ui_playlist.c:815 -msgid "Save Playlist" -msgstr "Wiedergabeliste speichern" - -#: src/skins/ui_playlist.c:1146 +#: src/skins/ui_playlist.c:765 msgid "Audacious Playlist Editor" msgstr "Audacious Wiedergabelisten-Editor" -#: src/skins/ui_playlist.c:1206 +#: src/skins/ui_playlist.c:812 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d von %d)" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "31 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "63 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "125 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "250 Hz" -msgstr "250 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "500 Hz" -msgstr "500 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "1 kHz" -msgstr "1 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "2 kHz" -msgstr "2 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -msgid "4 kHz" -msgstr "4 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -msgid "8 kHz" -msgstr "8 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -msgid "16 kHz" -msgstr "16 kHz" - -#: src/skins/ui_skinselector.c:179 +#: src/skins/ui_skinselector.c:162 msgid "Archived Winamp 2.x skin" msgstr "Archivierter Winamp 2.x-Skin" -#: src/skins/ui_skinselector.c:184 +#: src/skins/ui_skinselector.c:167 msgid "Unarchived Winamp 2.x skin" msgstr "Nichtarchivierter Winamp 2.x-Skin" -#: src/skins/util.c:834 +#: src/skins/util.c:774 #, c-format msgid "Could not create directory (%s): %s\n" msgstr "Konnte Ordner nicht erstellen (%s): %s\n" -#: src/sndfile/plugin.c:531 +#: src/sndfile/plugin.c:456 msgid "About sndfile plugin" msgstr "Ãœber das Sndfile-Plugin" -#: src/sndfile/plugin.c:532 -msgid "" -"Adapted for Audacious usage by Tony Vroon \n" -"from the xmms_sndfile plugin which is:\n" -"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -"This program is free software ; you can redistribute it and/or modify \n" -"it under the terms of the GNU General Public License as published by \n" -"the Free Software Foundation ; either version 2 of the License, or \n" -"(at your option) any later version. \n" -" \n" -"This program is distributed in the hope that it will be useful, \n" -"but WITHOUT ANY WARRANTY ; without even the implied warranty of \n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n" -"See the GNU General Public License for more details. \n" -"\n" -"You should have received a copy of the GNU General Public \n" -"License along with this program ; if not, write to \n" -"the Free Software Foundation, Inc., \n" -"51 Franklin Street, Fifth Floor, \n" -"Boston, MA 02110-1301 USA" -msgstr "" -"An Audacious angepasst von Tony Vroon \n" -"vom xmms_sndfile-Plugin:\n" -"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -"This program is free software ; you can redistribute it and/or modify \n" -"it under the terms of the GNU General Public License as published by \n" -"the Free Software Foundation ; either version 2 of the License, or \n" -"(at your option) any later version. \n" -" \n" -"This program is distributed in the hope that it will be useful, \n" -"but WITHOUT ANY WARRANTY ; without even the implied warranty of \n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n" -"See the GNU General Public License for more details. \n" -"\n" -"You should have received a copy of the GNU General Public \n" -"License along with this program ; if not, write to \n" -"the Free Software Foundation, Inc., \n" -"51 Franklin Street, Fifth Floor, \n" -"Boston, MA 02110-1301 USA" - -#: src/sndstretch/sndstretch_xmms.c:175 +#: src/sndstretch/sndstretch_xmms.c:155 msgid "About SndStretch" msgstr "Ãœber SndStretch" -#: src/sndstretch/sndstretch_xmms.c:336 +#: src/sndstretch/sndstretch_xmms.c:308 msgid "Volume corr." msgstr "Lautstärkekorrektur" -#: src/sndstretch/sndstretch_xmms.c:337 +#: src/sndstretch/sndstretch_xmms.c:309 msgid "Short Overlap" msgstr "Kurzes Ãœberlappen" -#: src/sndstretch/sndstretch_xmms.c:391 +#: src/sndstretch/sndstretch_xmms.c:355 msgid "Speed" msgstr "Geschwindigkeit" -#: src/sndstretch/sndstretch_xmms.c:392 +#: src/sndstretch/sndstretch_xmms.c:356 msgid "Pitch" msgstr "Tonhöhe" -#: src/sndstretch/sndstretch_xmms.c:413 +#: src/sndstretch/sndstretch_xmms.c:357 +msgid "Scale" +msgstr "Skalierung" + +#: src/sndstretch/sndstretch_xmms.c:377 msgid "SndStretch - Configuration" msgstr "SndStretch - Konfiguration" -#: src/song_change/song_change.c:397 +#: src/song_change/song_change.c:437 msgid "Command to run when Audacious starts a new song." -msgstr "Auszuführender Befehl, wenn Audacious ein neues Lied startet" +msgstr "Auszuführender Befehl, wenn Audacious ein neues Lied startet." -#: src/song_change/song_change.c:398 src/song_change/song_change.c:402 -#: src/song_change/song_change.c:406 src/song_change/song_change.c:410 +#: src/song_change/song_change.c:439 src/song_change/song_change.c:445 +#: src/song_change/song_change.c:451 src/song_change/song_change.c:457 msgid "Command:" msgstr "Befehl:" -#: src/song_change/song_change.c:401 +#: src/song_change/song_change.c:443 msgid "Command to run toward the end of a song." -msgstr "Auszuführender Befehl am Ende eines Lieds" +msgstr "Auszuführender Befehl am Ende eines Lieds." -#: src/song_change/song_change.c:405 +#: src/song_change/song_change.c:449 msgid "Command to run when Audacious reaches the end of the playlist." -msgstr "Auszuführender Befehl am Ende der Wiedergabeliste" +msgstr "Auszuführender Befehl am Ende der Wiedergabeliste." -#: src/song_change/song_change.c:409 +#: src/song_change/song_change.c:455 msgid "" "Command to run when title changes for a song (i.e. network streams titles)." msgstr "" "Auszuführender Befehl, wenn sich der Titel eines Lieds ändert (z.B. bei " -"Netzwerk-Streams)" +"Netzwerk-Streams)." -#: src/song_change/song_change.c:413 +#: src/song_change/song_change.c:461 msgid "" "You can use the following format strings which\n" "will be substituted before calling the command\n" @@ -5108,23 +3448,29 @@ "%n or %s: Song name\n" "%r: Rate (in bits per second)\n" "%t: Playlist position (%02d)\n" -"%p: Currently playing (1 or 0)" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" msgstr "" "Verwendbar sind folgende Zeichenketten, die ersetzt\n" " werden, bevor ein Befehl aufgerufen wird.\n" "(es sind jedoch nicht alle nützlich für den Ende-der-Wiedergabeliste-" "Befehl)\n" "\n" -"%%F: Frequenz (in Hertz)\n" -"%%c: Anzahl der Kanäle\n" -"%%f: Dateiname (absoluter Pfad)\n" -"%%l: Länge (in Millisekunden)\n" -"%%n oder %%s: Titel\n" -"%%r: Bitrate (in Bits pro Sekunde)\n" -"%%t: Wiedergabelisten-Position (%%02d)\n" -"%%p: Ist die Wiedergabe momentan aktiv? (1 oder 0)" +"%F: Frequenz (in Hertz)\n" +"%c: Anzahl der Kanäle\n" +"%f: Dateiname (absoluter Pfad)\n" +"%l: Länge (in Millisekunden)\n" +"%n oder %s: Titel\n" +"%r: Bitrate (in Bits pro Sekunde)\n" +"%t: Wiedergabelisten-Position (%02d)\n" +"%p: Wiedergabe momentan aktiv? (1 oder 0)\n" +"%a: Künstler\n" +"%b: Album\n" +"%T: Titelname" -#: src/song_change/song_change.c:437 +#: src/song_change/song_change.c:488 msgid "" "Parameters passed to the shell should be encapsulated in " "quotes. Doing otherwise is a security risk." @@ -5132,24 +3478,19 @@ "Parameter sollten zwischen Anführungszeichen stehen, ohne " "besteht ein Sicherheitsrisiko." -#: src/song_change/song_change.c:448 +#: src/song_change/song_change.c:499 msgid "Commands" msgstr "Befehle" -#: src/song_change/song_change.c:484 +#: src/song_change/song_change.c:529 msgid "Song Change" msgstr "Songwechsel" -#: src/spectrum/spectrum.c:89 -msgid "Spectrum Analyzer" -msgstr "Analyzer-Spektrum" - -#: src/statusicon/statusicon.c:355 +#: src/statusicon/statusicon.c:379 msgid "About Status Icon Plugin" msgstr "Ãœber Status-Icon-Plugin" -#: src/statusicon/statusicon.c:356 -#, fuzzy +#: src/statusicon/statusicon.c:380 msgid "" "Status Icon Plugin\n" "\n" @@ -5159,41 +3500,59 @@ "This plugin provides a status icon, placed in\n" "the system tray area of the window manager.\n" msgstr "" +"Status Icon Plugin\n" "\n" -"geschrieben von Giacomo Lozito < james@develia.org >\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" "\n" -"Dieses Plugin stellt ein Status-Icon bereit, im\n" -"System-Tray des Fenstermanagers.\n" +"Dieses Plugin stellt ein Status-Icon bereit, welches\n" +"im System-Tray des Fenstermanagers angezeigt wird.\n" -#: src/statusicon/statusicon.c:418 +#: src/statusicon/statusicon.c:451 msgid "Status Icon Plugin - Preferences" msgstr "Status-Icon-Plugin - Einstellungen" -#: src/statusicon/statusicon.c:428 +#: src/statusicon/statusicon.c:461 msgid "Right-Click Menu" msgstr "Rechtsklick-Menü" -#: src/statusicon/statusicon.c:433 +#: src/statusicon/statusicon.c:466 msgid "Small playback menu #1" msgstr "Kleines Wiedergabe-Menü #1" -#: src/statusicon/statusicon.c:436 +#: src/statusicon/statusicon.c:469 msgid "Small playback menu #2" msgstr "Kleines Wiedergabe-Menü #2" -#: src/statusicon/statusicon.c:452 +#: src/statusicon/statusicon.c:485 msgid "Mouse Scroll Action" msgstr "Maus-Scroll-Aktion" -#: src/statusicon/statusicon.c:456 +#: src/statusicon/statusicon.c:489 msgid "Change volume" msgstr "Lautstärke ändern" -#: src/statusicon/statusicon.c:458 +#: src/statusicon/statusicon.c:491 msgid "Change playing song" msgstr "Aktiven Titel ändern" -#: src/stereo_plugin/stereo.c:40 +#: src/statusicon/statusicon.c:504 +msgid "Other settings" +msgstr "Andere Einstellungen" + +#: src/statusicon/statusicon.c:509 +msgid "Disable the popup window" +msgstr "PopUp-Fenster deaktivieren" + +#: src/statusicon/statusicon.c:516 +msgid "Close to the notification area (system tray)" +msgstr "In den Informationsbereich beenden (System-Tray)" + +#: src/statusicon/statusicon.c:524 +msgid "Advance in playlist when scrolling upward" +msgstr "Durch Hochscrollen in Wiedergabeliste fortschreiten" + +#: src/stereo_plugin/stereo.c:45 msgid "" "Extra Stereo Plugin\n" "\n" @@ -5207,100 +3566,15 @@ msgid "About Extra Stereo Plugin" msgstr "Ãœber das Extra Stereo Plugin" -#: src/stereo_plugin/stereo.c:100 +#: src/stereo_plugin/stereo.c:95 msgid "Configure Extra Stereo" msgstr "Extra Stereo konfigurieren" -#: src/streambrowser/gui/streambrowser_win.c:62 -msgid "Search:" -msgstr "Suchen:" - -#: src/streambrowser/gui/streambrowser_win.c:81 -#: src/streambrowser/gui/streambrowser_win.c:370 -msgid "Add Bookmark" -msgstr "Lesezeichen setzen" - -#: src/streambrowser/gui/streambrowser_win.c:95 -msgid "Stream browser" -msgstr "Streambrowser" - -#: src/streambrowser/gui/streambrowser_win.c:319 -msgid "Stream name" -msgstr "Streamname" - -#: src/streambrowser/gui/streambrowser_win.c:326 -msgid "Now playing" -msgstr "Aktueller Song" - -#: src/streambrowser/gui/streambrowser_win.c:367 -msgid "Remove Bookmark" -msgstr "Lesezeichen entfernen" - -#: src/streambrowser/streambrowser.c:331 -msgid "About Stream Browser" -msgstr "Ãœber Streambrowser" - -#: src/streambrowser/streambrowser.c:332 -msgid "" -"Copyright (c) 2008, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming " -"directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" -"\n" -"This was a Google Summer of Code 2008 project." -msgstr "" - -#: src/streambrowser/streambrowser.c:357 src/streambrowser/streambrowser.c:367 -msgid "Streambrowser" -msgstr "Streambrowser" - -#: src/sun/about.c:30 -msgid "About the Sun Driver" -msgstr "Ãœber den Sun-Treiber" - -#: src/sun/about.c:31 -msgid "" -"XMMS BSD Sun Driver\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" -msgstr "" -"XMMS BSD Sun Driver\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Betreuer: .\n" - -#: src/sun/configure.c:199 -msgid "Audio control device:" -msgstr "Audio-Kontroll-Gerät:" - -#: src/sun/configure.c:270 -msgid "Buffer size (ms):" -msgstr "Puffergröße (ms):" - -#: src/sun/configure.c:348 -msgid "Volume controls device:" -msgstr "Lautstärke-Kontroll-Gerät:" - -#: src/sun/configure.c:361 -msgid "XMMS uses mixer exclusively." -msgstr "XMMS benützt den Mixer exklusiv." - -#: src/sun/configure.c:536 -msgid "Sun driver configuration" -msgstr "Sun-Treiber-Konfiguration" - -#: src/tonegen/tonegen.c:53 +#: src/tonegen/tonegen.c:49 msgid "About Tone Generator" msgstr "Ãœber Ton-Generator" -#: src/tonegen/tonegen.c:55 +#: src/tonegen/tonegen.c:51 msgid "" "Sinus tone generator by Haavard Kvaalen \n" "Modified by Daniel J. Peng \n" @@ -5311,40 +3585,28 @@ "Sinuston-Generator von Haavard Kvaalen \n" "Verändert von Daniel J. Peng \n" "\n" -"Um ihn zu benützen, eine URL hinzufügen: tone://frequency1;frequency2;" +"Um ihn zu benutzen, eine URL hinzufügen: tone://frequency1;frequency2;" "frequency3;...\n" "z.B. tone://2000;2005 für einen Ton mit 2000Hz und einen mit 2005Hz" -#: src/tonegen/tonegen.c:105 +#: src/tonegen/tonegen.c:101 #, c-format msgid "%s %.1f Hz" msgstr "%s %.1f Hz" -#: src/tonegen/tonegen.c:105 +#: src/tonegen/tonegen.c:101 msgid "Tone Generator: " msgstr "Ton-Generator: " -#: src/vorbis/configure.c:31 -msgid "Override generic titles" -msgstr "Allgemeine Titel überschreiben" - -#: src/vorbis/configure.c:32 -msgid "Title format:" -msgstr "Titelformat:" - -#: src/vorbis/configure.c:36 -msgid "Ogg Vorbis Tags" -msgstr "Ogg-Vorbis-Tags" - -#: src/vorbis/configure.c:68 -msgid "Ogg Vorbis Audio Plugin Configuration" -msgstr "Ogg-Vorbis-Audio-Plugin-Konfiguration" +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" +msgstr "Ãœber File I/O Plugin" -#: src/vorbis/vorbis.c:549 +#: src/vorbis/vorbis.c:573 msgid "About Ogg Vorbis Audio Plugin" msgstr "Ãœber Ogg-Vorbis-Audio-Plugin" -#: src/vorbis/vorbis.c:554 +#: src/vorbis/vorbis.c:578 msgid "" "Ogg Vorbis Plugin by the Xiph.org Foundation\n" "\n" @@ -5366,7 +3628,7 @@ "\n" "Original-Code von\n" "Tony Arcieri \n" -"Contributions from\n" +"Beiträge von\n" "Chris Montgomery \n" "Peter Alm \n" "Michael Smith \n" @@ -5403,12 +3665,12 @@ "\n" "Audacious-Implementierung von Pavel Vymetalek " -#: src/wavpack/wavpack.c:371 +#: src/wavpack/wavpack.c:353 #, c-format msgid "Wavpack Decoder Plugin %s" msgstr "Wavpack-Dekoder-Plugin %s" -#: src/wavpack/wavpack.c:372 +#: src/wavpack/wavpack.c:354 msgid "" "Copyright (c) 2006 William Pitcock \n" "\n" @@ -5419,535 +3681,3 @@ "\n" "Ein Teil des Plugin-Codes war von Miles Egan\n" "Die Wavpack-Seite befindet sich auf http://www.wavpack.com/\n" - -#~ msgid "Audacious standard menu" -#~ msgstr "Audacious-Standard-Menü" - -#~ msgid "Surround echo" -#~ msgstr "Surround-Echo" - -#~ msgid "About ESounD Plugin" -#~ msgstr "Ãœber das ESounD-Plugin" - -#~ msgid "ESD Output Plugin configuration" -#~ msgstr "ESD-Ausgabe-Plugin-Konfiguration" - -#~ msgid "Host:" -#~ msgstr "Host:" - -#~ msgid "Use remote host" -#~ msgstr "Nutze Remote-Host" - -#~ msgid "Volume controls OSS mixer" -#~ msgstr "Lautstärke steuert OSS-Mixer" - -#~ msgid "Port:" -#~ msgstr "Port:" - -#~ msgid "Server" -#~ msgstr "Server" - -#~ msgid "Load List" -#~ msgstr "Lade Liste" - -#~ msgid "Save List" -#~ msgstr "Liste speichern" - -#~ msgid "About RoarAudio Plugin" -#~ msgstr "Ãœber RoarAudio Plugin" - -#~ msgid "RoarAudio Plugin - Configuration" -#~ msgstr "RoarAudio Plugin - Konfiguration" - -#~ msgid "Server Type:" -#~ msgstr "Servervariante:" - -#~ msgid "Host or Path:" -#~ msgstr "Host oder Pfad:" - -#~ msgid "Host:" -#~ msgstr "Host:" - -#~ msgid "Server & Network" -#~ msgstr "Server & Netzwerk" - -#~ msgid "Proxy Address" -#~ msgstr "Proxyadresse" - -#~ msgid "Proxy" -#~ msgstr "Proxy" - -#, fuzzy -#~ msgid "Player Name:" -#~ msgstr "Hauptfenster" - -#, fuzzy -#~ msgid "Player" -#~ msgstr "Name: " - -#, fuzzy -#~ msgid "Current Song" -#~ msgstr "Aktion: " - -#~ msgid "Meta Data" -#~ msgstr "Meta-Daten" - -#~ msgid "Randomize List" -#~ msgstr "Liste zufällig anordnen" - -#~ msgid "Randomizes the playlist." -#~ msgstr "Ordnet Liste zufällig an." - -#~ msgid "Start of playback" -#~ msgstr "Starte Wiedergabe" - -#~ msgid "Automatic songchange" -#~ msgstr "Automatischer Titelwechsel" - -#~ msgid "Manual songchange" -#~ msgstr "Manueller Titelwechsel" - -#~ msgid "Manual stop" -#~ msgstr "Manueller Stop" - -#~ msgid "End of playlist" -#~ msgstr "Ende der Wiedergabeliste" - -#~ msgid "Seeking" -#~ msgstr "Suchen" - -#~ msgid "Reopen output device" -#~ msgstr "Ausgabegerät erneut öffnen" - -#~ msgid "Flush output device" -#~ msgstr "Ausgabegerät leeren" - -#~ msgid "None (gapless/off)" -#~ msgstr "Nichts (Gapless/aus)" - -#~ msgid "Simple crossfade" -#~ msgstr "Einfaches Ãœberblenden" - -#~ msgid "Advanced crossfade" -#~ msgstr "Erweitertes Ãœberblenden" - -#~ msgid "Fadein" -#~ msgstr "Einblenden:" - -#~ msgid "Fadeout" -#~ msgstr "Ausblenden:" - -#~ msgid "Fadeout/Fadein" -#~ msgstr "Aus/Einblenden:" - -#~ msgid "About" -#~ msgstr "Ãœber" - -#~ msgid "Output plugin" -#~ msgstr "Ausgabe-Plugin" - -#~ msgid "Throttle Output" -#~ msgstr "Ausgabe drosseln" - -#~ msgid "Max block size (bytes):" -#~ msgstr "Maximale Blockgröße (Bytes):" - -#~ msgid "Plugin compatibility options" -#~ msgstr "Plugin Kompatibilitätsoptionen" - -#~ msgid "" -#~ "When modifying the Output Options or the Mixing buffer size, you need to " -#~ "stop/restart playback for the settings to take effect." -#~ msgstr "" -#~ "Nach Modifizieren der Ausgabeeinstellungen oder der Buffergröße muss die " -#~ "Wiedergabe gestoppt/neugestartet werden." - -#~ msgid "Mixing buffer size (ms):" -#~ msgstr "Puffergröße (ms):" - -#~ msgid "auto" -#~ msgstr "Automatisch" - -#~ msgid "" -#~ "Automatically calculate an optimal buffer size.\n" -#~ "Default: On" -#~ msgstr "" -#~ "Optimale Buffergröße automatisch berechnen.\n" -#~ "Standard: An" - -#~ msgid "Set parameters for:" -#~ msgstr "Setze Parameter für:" - -#~ msgid "Reopen" -#~ msgstr "Wieder öffnen" - -#~ msgid "Length (ms):" -#~ msgstr "Länge (ms):" - -#~ msgid "Start volume (%):" -#~ msgstr "Anfangslautstärke: (%)" - -#~ msgid "Fade in" -#~ msgstr "Einblenden:" - -#~ msgid "End volume (%):" -#~ msgstr "Endlautstärke: (%)" - -#~ msgid "Custom (ms):" -#~ msgstr "Benutzerdefiniert (ms):" - -#~ msgid "" -#~ "Don't overlap the two songs. The next song will start immediatelly after " -#~ "the previous has ended." -#~ msgstr "" -#~ "Titel nicht überlappen. Der nächste Titel wird sofort gestartet, nachdem " -#~ "der vorige geendet hat." - -#~ msgid " Enable" -#~ msgstr "Aktivieren" - -#~ msgid "Advanced" -#~ msgstr "Erweiterte Einstellungen" - -#~ msgid "Write debug output to " -#~ msgstr "Schreibe Debug-Ausgabe in " - -#~ msgid "Debug options" -#~ msgstr "Debug-Optionen" - -#~ msgid "Enable volume control" -#~ msgstr "Lautstärkeregelung aktivieren" - -#~ msgid "Volume control options" -#~ msgstr "Lautstärkeeinstellungen" - -#~ msgid "Don't crossfade" -#~ msgstr "Nicht überblenden" - -#~ msgid "successive tracks" -#~ msgstr "fortlaufende Titel" - -#~ msgid "same file" -#~ msgstr "selbe Datei" - -#~ msgid "Enable HTTP buffer underrun workaround" -#~ msgstr "HTTP Bufferunderrun-Workaround aktivieren" - -#~ msgid "Use Quantaudio timing comments" -#~ msgstr "Quantaudio timing comments nutzen" - -#~ msgid "Keep output opened" -#~ msgstr "Ausgabe offen lassen" - -#~ msgid "Advanced options" -#~ msgstr "Erweiterte Einstellungen" - -#~ msgid "New" -#~ msgstr "Neu" - -#~ msgid "Save Default List" -#~ msgstr "Speichere Standard Liste" - -#~ msgid "Saves the selected playlist to the default location." -#~ msgstr "Speichere ausgewählte Wiedergabeliste." - -#~ msgid "Entries" -#~ msgstr "Einträge" - -#~ msgid "_Rename" -#~ msgstr "Umbenennen" - -#~ msgid "About Icecast-Plugin" -#~ msgstr "Ãœber Icecast-Plugin" - -#~ msgid "Error setting hostname: %s\n" -#~ msgstr "Fehler beim Setzen des Hostnamens: %s\n" - -#~ msgid "Error setting protocol: %s\n" -#~ msgstr "Fehler beim Setzen des Protokolls: %s\n" - -#~ msgid "Error setting port: %s\n" -#~ msgstr "Fehler beim Setzen des Ports: %s\n" - -#~ msgid "Error setting password: %s\n" -#~ msgstr "Fehler beim Setzen des Passworts: %s\n" - -#~ msgid "Error setting mount: %s\n" -#~ msgstr "Fehler beim Setzen des Mounts: %s\n" - -#~ msgid "Error setting stream %s: %s\n" -#~ msgstr "Fehler beim Setzen des Streams %s: %s\n" - -#~ msgid "public" -#~ msgstr "öffentlich" - -#~ msgid "private" -#~ msgstr "privat" - -#~ msgid "Error setting stream name: %s\n" -#~ msgstr "Fehler beim Setzen des Streamnamens: %s\n" - -#~ msgid "Error setting stream genre: %s\n" -#~ msgstr "Fehler beim Setzen des Streamgenres: %s\n" - -#~ msgid "Error setting stream URL: %s\n" -#~ msgstr "Fehler beim Setzen des Stream-URL's: %s\n" - -#~ msgid "Error setting stream description: %s\n" -#~ msgstr "Fehler beim Setzen der Streambeschreibung: %s\n" - -#~ msgid "Error setting user: %s\n" -#~ msgstr "Fehler beim Setzen des Nutzers: %s\n" - -#~ msgid "Error connecting to server: %s\n" -#~ msgstr "Fehler bei der Serververbindung: %s\n" - -#~ msgid "Icecast Configuration" -#~ msgstr "Icecast Konfiguraion" - -#~ msgid "Output stream format:" -#~ msgstr "Ausgabe-Stream-Format" - -#~ msgid "Server address:" -#~ msgstr "Serveradresse:" - -#~ msgid "Server hostname or IP address" -#~ msgstr "Server Hostname oder IP-Adresse" - -#~ msgid "Server port number" -#~ msgstr "Server Portnummer" - -#~ msgid "Mount point:" -#~ msgstr "Einhängepunkt:" - -#~ msgid "Mount point for the stream" -#~ msgstr "Einhängepunkt für die Streams" - -#~ msgid "" -#~ "Icecast source user name for the stream; depends on your server " -#~ "settings.\n" -#~ "The default value is \"source\"" -#~ msgstr "" -#~ "Icecast source Benutzername für den Stream; abhängig von " -#~ "Servereinstellung.\n" -#~ "Der Standardwert ist \"source\"" - -#~ msgid "Icecast source user password" -#~ msgstr "Icecast source Benutzerpasswort" - -#~ msgid "Connection timeout (seconds):" -#~ msgstr "Zeitüberschreitung (Sekunden):" - -#~ msgid "" -#~ "Amount of time before plugin closes connection to server when no audio " -#~ "data available" -#~ msgstr "" -#~ "Länge der Zeit bevor das Plugin die Verbindung trennt, wenn keine " -#~ "Audiodateien verfügbar sind" - -#~ msgid "Buffer size (bytes):" -#~ msgstr "Puffergröße (Ms):" - -#~ msgid "" -#~ "Internal buffer size\n" -#~ "Try to increase this if you are experiencing audio skipping on client side" -#~ msgstr "" -#~ "Interne Buffergröße\n" -#~ "Erhöhen falls man Audio-Springen auf Client-Seite wahrnimmt." - -#~ msgid "Flush buffer if " -#~ msgstr "Puffer leeren wenn " - -#~ msgid "Determines when to flush internal buffer to prevent its overflow" -#~ msgstr "" -#~ "Entscheiden wann interner Puffer geleert wird um Overflow zu vermeiden" - -#~ msgid "percents are filled" -#~ msgstr "Prozent belegt" - -#~ msgid "Stream is public" -#~ msgstr "Stream ist öffentlich" - -#~ msgid "" -#~ "Setting this asks the server to list the stream in any directories it " -#~ "knows about" -#~ msgstr "" -#~ "Server fragen ob Stream in jedem bekannten Verzeichnis gelistet wird" - -#~ msgid "Stream name:" -#~ msgstr "Stream-Name:" - -#~ msgid "The URL of a site about this stream" -#~ msgstr "URL einer Seite dieses Streams" - -#~ msgid "Stream genre:" -#~ msgstr "Stream-Genre:" - -#~ msgid "" -#~ "The genre (or genres) of the stream. This is usually a keyword list, eg " -#~ "\"pop rock rap\"" -#~ msgstr "" -#~ "Genre des Streams. Normalerweise eine Stichwortliste, Bsp. \"Pop Rock Rap" -#~ "\"" - -#~ msgid "Stream description:" -#~ msgstr "Streambeschreibung:" - -#~ msgid "Enable fast play-length calculation" -#~ msgstr "Schnelle Spieldauer-Berechnung aktivieren" - -#~ msgid "Parse XING headers" -#~ msgstr "XING-Header parsen" - -#~ msgid "Use SJIS to write ID3 tags (not recommended)" -#~ msgstr "SJIS zum Schreiben von ID3-Tags benutzen (nicht Empfohlen)" - -#~ msgid "Metadata Settings" -#~ msgstr "Metadaten-Einstellungen:" - -#~ msgid "MPEG Audio Plugin Configuration" -#~ msgstr "MPEG-Audio-Plugin-Konfiguration" - -#~ msgid "" -#~ "Audacious MPEG Audio Plugin\n" -#~ "\n" -#~ "Compiled against libMAD version: %d.%d.%d%s\n" -#~ "\n" -#~ "Written by:\n" -#~ " William Pitcock \n" -#~ " Yoshiki Yazawa \n" -#~ "\n" -#~ "Portions derived from XMMS-MAD by:\n" -#~ " Sam Clegg\n" -#~ "\n" -#~ "ReplayGain support by:\n" -#~ " Samuel Krempp" -#~ msgstr "" -#~ "Audacious MPEG Audio Plugin\n" -#~ "\n" -#~ "Kompiliert gegen libMAD Version: %d.%d.%d%s\n" -#~ "\n" -#~ "Geschrieben von:\n" -#~ " William Pitcock \n" -#~ " Yoshiki Yazawa \n" -#~ "\n" -#~ "Teile abgeleitet von XMMS-MAD durch:\n" -#~ " Sam Clegg\n" -#~ "\n" -#~ "ReplayGain-Unterstützung von:\n" -#~ " Samuel Krempp" - -#~ msgid "About MPEG Audio Plugin" -#~ msgstr "Ãœber MPEG-Audio-Plugin" - -#~ msgid "About OSSv4 Driver" -#~ msgstr "Ãœber den OSSv4-Treiber" - -#~ msgid "VBR" -#~ msgstr "VBR" - -#~ msgid "" -#~ "Are you sure you want to close %s? If you do, any changes made since the " -#~ "playlist was exported will be lost." -#~ msgstr "" -#~ "Wirklich schließen %s? Alle seit dem letzten Export gemachten " -#~ "Einstellungen gehen verloren." - -#~ msgid "Ape2 Tag" -#~ msgstr "Ape2-Tag" - -#~ msgid "Title:" -#~ msgstr "Titel:" - -#~ msgid "Artist:" -#~ msgstr "Künstler:" - -#~ msgid "Album:" -#~ msgstr "Album:" - -#~ msgid "Comment:" -#~ msgstr "Kommentar:" - -#~ msgid "Year:" -#~ msgstr "Jahr:" - -#~ msgid "Track number:" -#~ msgstr "Titelnummer:" - -#~ msgid "Genre:" -#~ msgstr "Genre:" - -#~ msgid "Remove Tag" -#~ msgstr "Tag entfernen" - -#~ msgid "Wavpack Info:" -#~ msgstr "Wavpack-Information:" - -#~ msgid "version %d" -#~ msgstr "Version %d" - -#~ msgid "average bitrate: %6.1f kbps" -#~ msgstr "Durchschnittliche Bitrate: %6.1f kbps" - -#~ msgid "samplerate: %d Hz" -#~ msgstr "Abtastfrequenz: %d Hz" - -#~ msgid "bits per sample: %d" -#~ msgstr "Bits pro Sample: %d" - -#~ msgid "channels: %d" -#~ msgstr "Kanäle: %d" - -#~ msgid "length: %d:%.2d" -#~ msgstr "Länge: %d:%.2d" - -#~ msgid "file size: %d Bytes" -#~ msgstr "Dateigröße: %d Byte" - -#~ msgid "Title Peak: ?" -#~ msgstr "Titel-Höchstwert: ?" - -#~ msgid "Album Peak: ?" -#~ msgstr "Album-Höchstwert: ?" - -#~ msgid "Title Gain: ?" -#~ msgstr "Titel-Verstärkung: ?" - -#~ msgid "Album Gain: ?" -#~ msgstr "Album-Verstärkung: ?" - -#~ msgid "File Info - %s" -#~ msgstr "Dateiinformationen - %s" - -#~ msgid "Enable Dynamic Bitrate Display" -#~ msgstr "Dynamische-Bitraten-Anzeige aktivieren" - -#~ msgid "General Plugin Settings" -#~ msgstr "Allgemeine Plugin-Einstellungen:" - -#~ msgid "use Track Gain/Peak" -#~ msgstr "Benutze Titel Gain/Peak" - -#~ msgid "use Album Gain/Peak" -#~ msgstr "Benutze Album Gain/Peak" - -#~ msgid "Enable Clipping Prevention" -#~ msgstr "Clipping-Verhinderung aktivieren" - -#~ msgid "Enable ReplayGain" -#~ msgstr "ReplayGain aktivieren" - -#~ msgid "ReplayGain Type" -#~ msgstr "ReplayGain-Typ" - -#~ msgid "ReplayGain Settings" -#~ msgstr "ReplayGain-Einstellungen" - -#~ msgid "Plugin" -#~ msgstr "Plugin" - -#~ msgid "ReplayGain" -#~ msgstr "ReplayGain" - -#~ msgid "Wavpack Configuration" -#~ msgstr "Wavpack-Konfiguration" diff -Nru audacious-plugins-2.4.4/po/es_AR.po audacious-plugins-3.2/po/es_AR.po --- audacious-plugins-2.4.4/po/es_AR.po 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/po/es_AR.po 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,3666 @@ +# Argentinian Spanish translation for Audacious Plugins +# Copyright (C) Audacious translators +# This file is distributed under the same license as the Audacious Plugins package. +# +# Translators: +# Adrián Ramirez Escalante , 2012. +# Cosme Domínguez Díaz , 2010. +# Jorge Andrés , 2011. +# , 2011. +msgid "" +msgstr "" +"Project-Id-Version: Audacious Plugins\n" +"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2012-01-11 09:01-0500\n" +"PO-Revision-Date: 2012-01-12 11:23+0000\n" +"Last-Translator: Adrián Ramirez Escalante \n" +"Language-Team: Spanish (Argentinian)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_AR\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: src/aac/libmp4.c:256 +#, c-format +msgid "" +"Using libfaad2-%s for decoding.\n" +"FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com\n" +"Copyright (c) 2005-2006 Audacious team" +msgstr "" +"Utilizando libfaad2-%s para decodificar.\n" +"Decodificador FAAD2 AAC/HE-AAC/HE-AACv2/DRM (c) Nero AG, www.nero.com\n" +"Copyright (c) 2005-2006 El equipo de Audacious" + +#: src/aac/libmp4.c:261 +msgid "About MP4 AAC decoder plugin" +msgstr "Cargar ecualizador predefinido" + +#: src/alarm/alarm.c:312 +msgid "About Alarm" +msgstr "Acerca de la alarma" + +#: src/alarm/alarm.c:313 +msgid "" +"A plugin that can be used to start playing at a certain time.\n" +"\n" +"Originally written by Adam Feakin and Daniel Stodden." +msgstr "" +"Un complemento que se puede utilizar para empezar la reproducción a una hora concreta.\n" +"\n" +"Originalmente escrito por Adam Feakin y Daniel Stodden." + +#: src/alarm/interface.c:33 +msgid "Alarm" +msgstr "Alarma" + +#: src/alarm/interface.c:40 +msgid "This is your wakeup call." +msgstr "Esta es su llamada despertador" + +#: src/alarm/interface.c:55 src/alarm/interface.c:1213 +msgid "OK" +msgstr "Aceptar" + +#: src/alarm/interface.c:214 +msgid "Alarm Settings" +msgstr "Configuración de la alarma" + +#: src/alarm/interface.c:229 src/alarm/interface.c:401 +#: src/alarm/interface.c:773 +msgid "Time" +msgstr "Tiempo" + +#: src/alarm/interface.c:270 +msgid "hours" +msgstr "horas" + +#: src/alarm/interface.c:331 +msgid "h" +msgstr "h" + +#: src/alarm/interface.c:361 +msgid "minutes" +msgstr "minutos" + +#: src/alarm/interface.c:379 +msgid "Quiet after:" +msgstr "Silencio tras:" + +#: src/alarm/interface.c:389 +msgid "Alarm at (default):" +msgstr "Alarma a (predeterminado):" + +#: src/alarm/interface.c:409 +msgid "Choose the days for the alarm to come on" +msgstr "Seleccione los días para que salte la alarma" + +#: src/alarm/interface.c:437 src/alarm/interface.c:485 +#: src/alarm/interface.c:533 src/alarm/interface.c:581 +#: src/alarm/interface.c:629 src/alarm/interface.c:677 +#: src/alarm/interface.c:725 src/bs2b/plugin.c:198 src/OSS/configure.c:153 +#: src/skins/ui_equalizer.c:1104 src/skins/ui_manager.c:447 +#: src/skins/ui_manager.c:468 +msgid "Default" +msgstr "Predeterminado" + +#: src/alarm/interface.c:763 +msgid "Day" +msgstr "Día" + +#: src/alarm/interface.c:783 +msgid "Tuesday" +msgstr "Martes" + +#: src/alarm/interface.c:794 +msgid "Wednesday" +msgstr "Miércoles" + +#: src/alarm/interface.c:805 +msgid "Thursday" +msgstr "Jueves" + +#: src/alarm/interface.c:816 +msgid "Friday" +msgstr "Viernes" + +#: src/alarm/interface.c:827 +msgid "Saturday" +msgstr "Sábado" + +#: src/alarm/interface.c:838 +msgid "Sunday" +msgstr "Domingo" + +#: src/alarm/interface.c:848 +msgid "Monday" +msgstr "Lunes" + +#: src/alarm/interface.c:859 +msgid "Days" +msgstr "Días" + +#: src/alarm/interface.c:875 +msgid "Fading" +msgstr "Desvanecimiento" + +#: src/alarm/interface.c:912 +msgid "seconds" +msgstr "segundos" + +#: src/alarm/interface.c:920 src/alarm/interface.c:1035 +msgid "Volume" +msgstr "Volumen" + +#: src/alarm/interface.c:946 +msgid "Current" +msgstr "Actual" + +#: src/alarm/interface.c:954 +msgid "Start at" +msgstr "Iniciar a" + +#: src/alarm/interface.c:982 src/alarm/interface.c:1026 +msgid "%" +msgstr "%" + +#: src/alarm/interface.c:998 +msgid "Final" +msgstr "Final" + +#: src/alarm/interface.c:1051 +msgid "Additional Command" +msgstr "Comando adicional" + +#: src/alarm/interface.c:1077 +msgid "enable" +msgstr "activar" + +#: src/alarm/interface.c:1085 +msgid "Playlist (optional)" +msgstr "Lista de reproducción (opcional)" + +#: src/alarm/interface.c:1111 +msgid "Browse..." +msgstr "Examinar..." + +#: src/alarm/interface.c:1119 src/alarm/interface.c:1283 +msgid "Reminder" +msgstr "Recordatorio" + +#: src/alarm/interface.c:1136 +msgid "Use reminder" +msgstr "Utilizar recordatorio" + +#: src/alarm/interface.c:1152 src/sndstretch/sndstretch_xmms.c:358 +msgid "Options" +msgstr "Opciones" + +#: src/alarm/interface.c:1160 +msgid "What do these options mean?" +msgstr "¿Qué significan estas opciones?" + +#: src/alarm/interface.c:1188 +msgid "" +"\n" +"Time\n" +" Alarm at: \n" +" The time for the alarm to come on.\n" +"\n" +" Quiet After: \n" +" Stop alarm after this amount of time.\n" +" (if the wakeup dialog is not closed)\n" +"\n" +"\n" +"Days\n" +" Day:\n" +" Select the days for the alarm to activate.\n" +"\n" +" Time:\n" +" Choose the time for the alarm on each day,\n" +" or select the toggle button to use the default\n" +" time.\n" +"\n" +"\n" +"Volume\n" +" Fading: \n" +" Fade the volume up to the chosen volume \n" +" for this amount of time.\n" +"\n" +" Start at: \n" +" Start fading from this volume.\n" +"\n" +" Final: \n" +" The volume to stop fading at. If the fading\n" +" time is 0 then set volume to this and start\n" +" playing.\n" +"\n" +"\n" +"Options:\n" +" Additional Command:\n" +" Run this command at the alarm time.\n" +"\n" +" Playlist: \n" +" Load this playlist for playing songs from \n" +" (must have .m3u extension). If no playlist\n" +" is given then the songs which are currently\n" +" in the list will be used.\n" +" The URL of an mp3/ogg stream can also be\n" +" entered here, but loading of playlists from\n" +" URLs is not currently supported by xmms.\n" +"\n" +" Reminder:\n" +" Display a reminder when the alarm goes off,\n" +" type the reminder in the box and turn on the\n" +" toggle button if you want it to be shown.\n" +msgstr "" +"\n" +"Hora\n" +" Alarma a: \n" +" La hora a la que saltará la alarma.\n" +"\n" +" Silencio tras: \n" +" Detener la alarma tras esta cantidad de tiempo.\n" +" (si el diálogo de despertar no se cierra)\n" +"\n" +"\n" +"Días\n" +" Día:\n" +" Seleccione los días para que se active la alarma.\n" +"\n" +" Hora:\n" +" Elija la hora para la alarma en cada día,\n" +" o seleccione el botón para utilizar la hora\n" +" predeterminada.\n" +"\n" +"\n" +"Volumen\n" +" Desvanecimiento: \n" +" Bajar el volumen hasta el nivel elegido \n" +" durante este periodo de tiempo.\n" +"\n" +" Iniciar a: \n" +" Empezar a desvanecer desde este volumen.\n" +"\n" +" Final: \n" +" El volumen final del desvanecimiento. Si el tiempo\n" +" de desvanecimiento es 0 se establece este volumen\n" +" y empieza la reproducción.\n" +"\n" +"\n" +"Opciones:\n" +" Comando adicional:\n" +" Ejecutar este comando a la hora de la alarma.\n" +"\n" +" Lista de reproducción: \n" +" Cargar esta lista de producción para reproducir\n" +" (debe tener una extensión .m3u). Si no se introduce\n" +" introduce ninguna lista se utilizarán las canciones\n" +" en la lista actual.\n" +" También se puede introducir la URL de un flujo\n" +" mp3/ogg, pero actualmente xmms no puede cargar\n" +" listas de reproducción desde URLs.\n" +"\n" +" Recordatorio:\n" +" Mostrar un recordatorio cuando se apaga la alarma,\n" +" escriba el recordatorio en la caja y seleccione el\n" +" botón si quiere que se muestre.\n" + +#: src/alarm/interface.c:1190 src/skins/ui_manager.c:382 +msgid "Help" +msgstr "Ayuda" + +#: src/alarm/interface.c:1222 src/cdaudio-ng/configure.c:249 +#: src/crystalizer/crystalizer.c:130 src/echo_plugin/gui.c:125 +#: src/jack/configure.c:148 src/null/null.c:108 src/stereo_plugin/stereo.c:125 +msgid "Cancel" +msgstr "Cancelar" + +#: src/alarm/interface.c:1290 +msgid "Your reminder for today is.." +msgstr "Su recordatorio para hoy es..." + +#: src/alarm/interface.c:1315 +msgid "Thankyou" +msgstr "Gracias" + +#: src/alsa/config.c:210 +msgid "Default PCM device" +msgstr "Dispositivo PCM predeterminado" + +#: src/alsa/config.c:235 +msgid "Default mixer device" +msgstr "Dispositivo mezclador predeterminado" + +#: src/alsa/config.c:438 +msgid "ALSA Output Plugin Preferences" +msgstr "Preferencias de complemento de salida ALSA" + +#: src/alsa/config.c:445 +msgid "PCM device:" +msgstr "Dispositivo PCM:" + +#: src/alsa/config.c:447 src/OSS/configure.c:237 +msgid "Mixer device:" +msgstr "Dispositivo mezclador:" + +#: src/alsa/config.c:449 +msgid "Mixer element:" +msgstr "Elemento mezclador:" + +#: src/alsa/config.c:452 +msgid "Work around drain hangup" +msgstr "Evitar los cuelgues por falta de recursos" + +#: src/alsa/plugin.c:59 +msgid "About ALSA Output Plugin" +msgstr "Acerca del complemento de salida ALSA" + +#: src/alsa/plugin.c:81 +msgid "ALSA error" +msgstr "Error de ALSA" + +#: src/amidi-plug/amidi-plug.c:326 +msgid "" +"You have not selected any sequencer ports for MIDI playback. You can do so " +"in the MIDI plugin preferences." +msgstr "" +"No tiene seleccionado ningún puerto secuenciador para la reproducción MIDI." +" Puede hacerlo en la preferencias del complemento MIDI." + +#: src/amidi-plug/backend-alsa/b-alsa.c:35 +msgid "ALSA Backend " +msgstr "Motor ALSA " + +#: src/amidi-plug/backend-alsa/b-alsa.c:37 +msgid "" +"This backend sends MIDI events to a group of user-chosen ALSA sequencer ports. The ALSA sequencer interface is very versatile, it can provide ports for audio cards hardware synthesizers (i.e. emu10k1) but also for software synths, external devices, etc.\n" +"This backend does not produce audio, MIDI events are handled directly from devices/programs behind the ALSA ports; in example, MIDI events sent to the hardware synth will be directly played.\n" +"Backend written by Giacomo Lozito." +msgstr "" +"Este motor envía eventos MIDI a un grupo de puertos secuenciadores ALSA definidos. El interfaz secuenciador ALSA es muy versátil, puede proporcionar puertos para sintetizadores hardware (p. ej. emu10k1) pero también sintetizadores software, dispositivos externos, etc.\n" +"Este motor no produce sonido, los eventos MIDI son manejados directamente por los dispositivos/programas tras los puertos ALSA; por ejemplo, los eventos MIDI enviados a un sintetizador hardware serán reproducidos directamente.\n" +"Motor escrito por Giacomo Lozito." + +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 +msgid "FluidSynth Backend " +msgstr "Motor FluidSynth " + +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 +msgid "" +"This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" +"Backend written by Giacomo Lozito." +msgstr "" +"Este motor produce sonido al enviar eventos MIDI a FluidSynth, un sintetizador software en tiempo real basado en la especificación SoundFont2 (www.fluidsynth.org).\n" +"El sonido producido se puede manipular mediante complementos de efectos y es procesado por el complemento de salida elegido.\n" +"Motor escrito por Giacomo Lozito." + +#: src/amidi-plug/i_configure-alsa.c:228 +msgid "ALSA BACKEND CONFIGURATION" +msgstr "CONFIGURACIÓN DE MOTOR ALSA" + +#: src/amidi-plug/i_configure-alsa.c:331 +msgid "Port" +msgstr "Puerto" + +#: src/amidi-plug/i_configure-alsa.c:333 +msgid "Client name" +msgstr "Nombre del cliente" + +#: src/amidi-plug/i_configure-alsa.c:335 +msgid "Port name" +msgstr "Nombre del puerto" + +#: src/amidi-plug/i_configure-alsa.c:346 +msgid "ALSA output ports" +msgstr "Puertos de salida ALSA" + +#: src/amidi-plug/i_configure-alsa.c:399 +msgid "Soundcard: " +msgstr "Tarjeta de sonido: " + +#: src/amidi-plug/i_configure-alsa.c:401 +msgid "Mixer control: " +msgstr "Control mezclador: " + +#: src/amidi-plug/i_configure-alsa.c:413 +msgid "Mixer settings" +msgstr "Ajustes del mezclador" + +#: src/amidi-plug/i_configure-alsa.c:429 +msgid "ALSA Backend not loaded or not available" +msgstr "Motor ALSA no cargado o no disponible" + +#: src/amidi-plug/i_configure-alsa.c:448 +msgid "" +"ALSA\n" +"backend" +msgstr "" +"motor\n" +"ALSA" + +#: src/amidi-plug/i_configure-ap.c:59 +msgid "AMIDI-Plug - backend information" +msgstr "Complemento AMIDI - información del motor" + +#: src/amidi-plug/i_configure-ap.c:196 +msgid "AMIDI-PLUG PREFERENCES" +msgstr "PREFERENCIAS DEL COMPLEMENTO AMIDI" + +#: src/amidi-plug/i_configure-ap.c:223 +msgid "Backend selection" +msgstr "Selección de motor" + +#: src/amidi-plug/i_configure-ap.c:227 +msgid "Available backends" +msgstr "Motores disponibles" + +#: src/amidi-plug/i_configure-ap.c:257 +msgid "Playback settings" +msgstr "Ajustes de reproducción" + +#: src/amidi-plug/i_configure-ap.c:262 +msgid "Transpose: " +msgstr "Transponer: " + +#: src/amidi-plug/i_configure-ap.c:271 +msgid "Drum shift: " +msgstr "Cambio de batería: " + +#: src/amidi-plug/i_configure-ap.c:289 +msgid "Advanced settings" +msgstr "Ajustes avanzados" + +#: src/amidi-plug/i_configure-ap.c:293 +msgid "pre-calculate length of MIDI files in playlist" +msgstr "calcular la longitud de los archivos MIDI en lista de reproducción" + +#: src/amidi-plug/i_configure-ap.c:298 +msgid "extract comments from MIDI file (if available)" +msgstr "extraer comentarios desde el archivo MIDI (si está disponible)" + +#: src/amidi-plug/i_configure-ap.c:303 +msgid "extract lyrics from MIDI file (if available)" +msgstr "extraer letras desde el archivo MIDI (si está disponible)" + +#: src/amidi-plug/i_configure-ap.c:333 +msgid "" +"AMIDI\n" +"Plug" +msgstr "Complemento AMIDI" + +#: src/amidi-plug/i_configure.c:76 +msgid "AMIDI-Plug - select file" +msgstr "Complemento AMIDI - seleccione un archivo" + +#: src/amidi-plug/i_configure.c:129 +msgid "AMIDI-Plug - configuration" +msgstr "Complemento AMIDI - configuración" + +#: src/amidi-plug/i_configure-fluidsynth.c:55 +msgid "AMIDI-Plug - select SoundFont file" +msgstr "Complemento AMIDI - seleccione un archivo SoundFont" + +#: src/amidi-plug/i_configure-fluidsynth.c:270 +msgid "FLUIDSYNTH BACKEND CONFIGURATION" +msgstr "CONFIGURACIÓN DE MOTOR FLUIDSYNTH" + +#: src/amidi-plug/i_configure-fluidsynth.c:313 +msgid "SoundFont settings" +msgstr "Ajustes de SoundFont" + +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Nombre del archivo" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 +msgid "Size (bytes)" +msgstr "Tamaño (bytes)" + +#: src/amidi-plug/i_configure-fluidsynth.c:398 +msgid "Load SF on player start" +msgstr "Cargar SF cuando se inicie el reproductor" + +#: src/amidi-plug/i_configure-fluidsynth.c:402 +msgid "Load SF on first midifile play" +msgstr "Cargar SF en la primera reproducción de archivo MIDI" + +#: src/amidi-plug/i_configure-fluidsynth.c:417 +msgid "Synthesizer settings" +msgstr "Preferencias del sintetizador" + +#: src/amidi-plug/i_configure-fluidsynth.c:426 +msgid "gain" +msgstr "ganancia" + +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 +msgid "use default" +msgstr "usar predeterminado" + +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 +msgid "value:" +msgstr "valor:" + +#: src/amidi-plug/i_configure-fluidsynth.c:454 +msgid "poliphony" +msgstr "polifonía" + +#: src/amidi-plug/i_configure-fluidsynth.c:482 +msgid "reverb" +msgstr "reverberación" + +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 +msgid "yes" +msgstr "si" + +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 +msgid "no" +msgstr "no" + +#: src/amidi-plug/i_configure-fluidsynth.c:513 +msgid "chorus" +msgstr "coro" + +#: src/amidi-plug/i_configure-fluidsynth.c:544 +msgid "sample rate" +msgstr "frecuencia de muestro" + +#: src/amidi-plug/i_configure-fluidsynth.c:550 +msgid "22050 Hz " +msgstr "22050 Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:553 +msgid "44100 Hz " +msgstr "44100 Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:556 +msgid "96000 Hz " +msgstr "96000 Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:559 +msgid "custom " +msgstr "personalizado " + +#: src/amidi-plug/i_configure-fluidsynth.c:568 +msgid "Hz " +msgstr "Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:621 +msgid "FluidSynth Backend not loaded or not available" +msgstr "Motor FluidSynth no cargado o no disponible" + +#: src/amidi-plug/i_configure-fluidsynth.c:640 +msgid "" +"FluidSynth\n" +"backend" +msgstr "" +"Motor\n" +"FluidSynth" + +#: src/amidi-plug/i_configure-timidity.c:39 +msgid "TIMIDITY BACKEND CONFIGURATION" +msgstr "CONFIGURACIÓN MOTOR TIMIDITY" + +#: src/amidi-plug/i_configure-timidity.c:64 +msgid "TiMidity Backend not loaded or not available" +msgstr "Motor TiMidity no cargado o no disponible" + +#: src/amidi-plug/i_configure-timidity.c:83 +msgid "" +"TiMidity\n" +"backend" +msgstr "" +"Motor\n" +"TiMidity" + +#: src/amidi-plug/i_fileinfo.c:169 +msgid "Name:" +msgstr "Nombre:" + +#: src/amidi-plug/i_fileinfo.c:193 +msgid " MIDI Info " +msgstr " Información MIDI " + +#: src/amidi-plug/i_fileinfo.c:205 +msgid "Format:" +msgstr "Formato:" + +#: src/amidi-plug/i_fileinfo.c:208 +msgid "Length (msec):" +msgstr "Longitud (mseg):" + +#: src/amidi-plug/i_fileinfo.c:211 +msgid "Num of Tracks:" +msgstr "Número de pistas:" + +#: src/amidi-plug/i_fileinfo.c:216 +msgid "variable" +msgstr "variable" + +#: src/amidi-plug/i_fileinfo.c:217 +msgid "BPM:" +msgstr "BPM:" + +#: src/amidi-plug/i_fileinfo.c:223 +msgid "BPM (wavg):" +msgstr "BPM (wavg):" + +#: src/amidi-plug/i_fileinfo.c:226 +msgid "Time Div:" +msgstr "Div tiempo:" + +#: src/amidi-plug/i_fileinfo.c:237 +msgid " MIDI Comments and Lyrics " +msgstr " Comentarios y letras MIDI " + +#: src/amidi-plug/i_fileinfo.c:288 +msgid "* no comments available in this MIDI file *" +msgstr "* no hay comentarios disponibles en este archivo MIDI *" + +#: src/amidi-plug/i_fileinfo.c:301 +msgid "* no lyrics available in this MIDI file *" +msgstr "* no hay letras disponibles en este archivo MIDI *" + +#: src/amidi-plug/i_fileinfo.c:349 +msgid " (invalid UTF-8)" +msgstr " (UTF-8 no válido)" + +#: src/amidi-plug/i_utils.c:43 +msgid "AMIDI-Plug - about" +msgstr "Complemento AMIDI - acerca de" + +#: src/amidi-plug/i_utils.c:68 +msgid "" +"\n" +"AMIDI-Plug " +msgstr "" +"\n" +"Complemento AMIDI" + +#: src/amidi-plug/i_utils.c:69 +msgid "" +"\n" +"modular MIDI music player\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"\n" +"special thanks to...\n" +"\n" +"Clemens Ladisch and Jaroslav Kysela\n" +"for their cool programs aplaymidi and amixer; those\n" +"were really useful, along with alsa-lib docs, in order\n" +"to learn more about the ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"for the nice midi keyboard logo\n" +"\n" +"Tony Vroon\n" +"for the good help with alpha testing\n" +"\n" +msgstr "" +"\n" +"reproductor de música MIDI modular\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"escrito por Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"\n" +"agradecimientos especiales a...\n" +"\n" +"Clemens Ladisch y Jaroslav Kysela\n" +"por sus geniales programas aplaymidi and amixer; que\n" +"fueron muy útiles, junto con la documentación de alsa-lib,\n" +"para aprender más acerca de la programación ALSA.\n" +"\n" +"Alfredo Spadafina\n" +"por el bonito logo de teclado midi\n" +"\n" +"Tony Vroon\n" +"por su buena ayuda con las pruebas\n" +"\n" + +#: src/aosd/aosd_style.c:75 +msgid "Rectangle" +msgstr "Rectángulo" + +#: src/aosd/aosd_style.c:79 +msgid "Rounded Rectangle" +msgstr "Rectángulo redondeado" + +#: src/aosd/aosd_style.c:83 +msgid "Concave Rectangle" +msgstr "Rectángulo cóncavo" + +#: src/aosd/aosd_style.c:87 +msgid "None" +msgstr "Ninguno" + +#: src/aosd/aosd_trigger.c:78 +msgid "Playback Start" +msgstr "Reproducción iniciada" + +#: src/aosd/aosd_trigger.c:79 +msgid "Triggers OSD when a playlist entry is played." +msgstr "Avisa cuando se reproduce un elemento de la lista de reproducción." + +#: src/aosd/aosd_trigger.c:83 +msgid "Title Change" +msgstr "Cambio de título" + +#: src/aosd/aosd_trigger.c:84 +msgid "" +"Triggers OSD when, during playback, the song title changes but the filename " +"is the same. This is mostly useful to display title changes in internet " +"streams." +msgstr "" +"Avisa cuando, durante la reproducción, el título de la canción cambia pero " +"el nombre de archivo es el mismo. Esto es principalmente útil para mostrar " +"cambios de título en los flujos de Internet." + +#: src/aosd/aosd_trigger.c:90 +msgid "Volume Change" +msgstr "Cambio de volumen" + +#: src/aosd/aosd_trigger.c:91 +msgid "Triggers OSD when volume is changed." +msgstr "Avisa cuando se cambia el volumen." + +#: src/aosd/aosd_trigger.c:95 +msgid "Pause On" +msgstr "Inicio de pausa" + +#: src/aosd/aosd_trigger.c:96 +msgid "Triggers OSD when playback is paused." +msgstr "Avisa cuando la reproducción es pausada." + +#: src/aosd/aosd_trigger.c:100 +msgid "Pause Off" +msgstr "Fin de pausa" + +#: src/aosd/aosd_trigger.c:101 +msgid "Triggers OSD when playback is unpaused." +msgstr "Avisa cuando la reproducción se reanuda." + +#: src/aosd/aosd_ui.c:179 +msgid "Placement" +msgstr "Colocación" + +#: src/aosd/aosd_ui.c:218 +msgid "Relative X offset:" +msgstr "Desplazamiento X relativo:" + +#: src/aosd/aosd_ui.c:227 +msgid "Relative Y offset:" +msgstr "Desplazamiento Y relativo:" + +#: src/aosd/aosd_ui.c:236 +msgid "Max OSD width:" +msgstr "Ancho máximo:" + +#: src/aosd/aosd_ui.c:249 +msgid "Multi-Monitor options" +msgstr "Opciones multi-monitor" + +#: src/aosd/aosd_ui.c:253 +msgid "Display OSD using:" +msgstr "Mostrar notificaciones utilizando:" + +#: src/aosd/aosd_ui.c:264 +msgid "all monitors" +msgstr "todos los monitores" + +#: src/aosd/aosd_ui.c:267 +#, c-format +msgid "monitor %i" +msgstr "monitor %i" + +#: src/aosd/aosd_ui.c:322 +msgid "Timing (ms)" +msgstr "Temporización (ms)" + +#: src/aosd/aosd_ui.c:327 +msgid "Display:" +msgstr "Mostrar:" + +#: src/aosd/aosd_ui.c:332 +msgid "Fade in:" +msgstr "Desvanecimiento de entrada:" + +#: src/aosd/aosd_ui.c:337 +msgid "Fade out:" +msgstr "Desvanecimiento de salida:" + +#: src/aosd/aosd_ui.c:418 +msgid "Fonts" +msgstr "Tipografías" + +#: src/aosd/aosd_ui.c:426 +#, c-format +msgid "Font %i:" +msgstr "Tipografía %i:" + +#: src/aosd/aosd_ui.c:443 +msgid "Shadow" +msgstr "Sombra" + +#: src/aosd/aosd_ui.c:478 +msgid "Internationalization" +msgstr "Internacionalización" + +#: src/aosd/aosd_ui.c:484 +msgid "Disable UTF-8 conversion of text (in aosd)" +msgstr "Deshabilitar la conversión de texto UTF-8 (en notificaciones)" + +#: src/aosd/aosd_ui.c:502 +msgid "Select Skin File" +msgstr "Seleccione un archivo de temas" + +#: src/aosd/aosd_ui.c:613 +msgid "Render Style" +msgstr "Estilo de renderizado" + +#: src/aosd/aosd_ui.c:629 +msgid "Colors" +msgstr "Colores" + +#: src/aosd/aosd_ui.c:642 +#, c-format +msgid "Color %i:" +msgstr "Color %i:" + +#: src/aosd/aosd_ui.c:662 +msgid "Custom Skin" +msgstr "Tema personalizado" + +#: src/aosd/aosd_ui.c:668 +msgid "Skin file:" +msgstr "Archivo de temas:" + +#: src/aosd/aosd_ui.c:671 +msgid "Browse" +msgstr "Examinar" + +#: src/aosd/aosd_ui.c:773 +msgid "Enable trigger" +msgstr "Activar disparador" + +#: src/aosd/aosd_ui.c:800 +msgid "Event" +msgstr "Evento" + +#: src/aosd/aosd_ui.c:828 +msgid "Composite manager detected" +msgstr "Administrador de composición detectado" + +#: src/aosd/aosd_ui.c:835 +msgid "" +"Composite manager not detected;\n" +"unless you know that you have one running, please activate a composite manager otherwise the OSD won't work properly" +msgstr "" +"Administrador de composición no detectado;\n" +"a menos que sepa que tiene uno ejecutándose, por favor active un administrador de composición o las notificaciones no funcionarán correctamente" + +#: src/aosd/aosd_ui.c:843 +msgid "Composite manager not required for fake transparency" +msgstr "Administrador de composición no necesario para transparencia falsa" + +#: src/aosd/aosd_ui.c:881 +msgid "Transparency" +msgstr "Transparencia" + +#: src/aosd/aosd_ui.c:887 +msgid "Fake transparency" +msgstr "Transparencia falsa" + +#: src/aosd/aosd_ui.c:889 +msgid "Real transparency (requires X Composite Ext.)" +msgstr "Transparencia real (requiere composición 3D)" + +#: src/aosd/aosd_ui.c:931 +msgid "Composite extension not loaded" +msgstr "Extensión de composición no cargada" + +#: src/aosd/aosd_ui.c:939 +msgid "Composite extension not available" +msgstr "Extensión de composición no disponible" + +#: src/aosd/aosd_ui.c:958 +#, c-format +msgid "Audacious OSD" +msgstr "Notificaciones de Audacious" + +#: src/aosd/aosd_ui.c:1039 +msgid "Audacious OSD - configuration" +msgstr "Notificaciones de Audacious - configuración" + +#: src/aosd/aosd_ui.c:1060 +msgid "Test" +msgstr "Probar" + +#: src/aosd/aosd_ui.c:1075 +msgid "Position" +msgstr "Posición" + +#: src/aosd/aosd_ui.c:1080 +msgid "Animation" +msgstr "Animación" + +#: src/aosd/aosd_ui.c:1085 +msgid "Text" +msgstr "Texto" + +#: src/aosd/aosd_ui.c:1090 +msgid "Decoration" +msgstr "Decoración" + +#: src/aosd/aosd_ui.c:1095 +msgid "Trigger" +msgstr "Disparador" + +#: src/aosd/aosd_ui.c:1100 src/cdaudio-ng/configure.c:171 +msgid "Misc" +msgstr "Varios" + +#: src/aosd/aosd_ui.c:1137 +msgid "Audacious OSD - about" +msgstr "Notificaciones de Audacious - acerca de" + +#: src/aosd/aosd_ui.c:1167 +msgid "" +"\n" +"Audacious OSD " +msgstr "" +"\n" +"Notificaciones de Audacious" + +#: src/aosd/aosd_ui.c:1168 +msgid "" +"\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"On-Screen-Display is based on Ghosd library\n" +"written by Evan Martin\n" +"http://neugierig.org/software/ghosd/\n" +"\n" +msgstr "" +"\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"escrito por Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"Las notificaciones de Audacious se basan en la biblioteca\n" +"Ghosd escrita por Evan Martin\n" +"http://neugierig.org/software/ghosd/\n" +"\n" + +#: src/blur_scope/config.c:73 +msgid "Blur Scope: Color selection" +msgstr "Alcance de desenfoque: Selección de color" + +#: src/blur_scope/config.c:83 src/jack/configure.c:106 +msgid "Options:" +msgstr "Opciones:" + +#: src/bs2b/plugin.c:157 +msgid "Bauer stereophonic-to-binaural Preferences" +msgstr "Preferencias del filtro Bauer estereofónico a binaural" + +#: src/bs2b/plugin.c:168 +msgid "Feed level:" +msgstr "Nivel de alimentación:" + +#: src/bs2b/plugin.c:182 +msgid "Cut frequency:" +msgstr "Cortar frecuencia:" + +#: src/bs2b/plugin.c:196 +msgid "Presets:" +msgstr "Predefinidos:" + +#: src/cdaudio-ng/cdaudio-ng.c:242 +msgid "About Audio CD Plugin" +msgstr "Acerca del complemento de CD de música" + +#: src/cdaudio-ng/cdaudio-ng.c:243 +msgid "" +"Copyright (c) 2007, by Calin Crisan and The Audacious Team.\n" +"\n" +"Many thanks to libcdio developers \n" +"\tand to libcddb developers .\n" +"\n" +"Also thank you Tony Vroon for mentoring & guiding me.\n" +"\n" +"This was a Google Summer of Code 2007 project.\n" +"\n" +"Copyright 2009 John Lindgren" +msgstr "" +"Copyright (c) 2007, por Calin Crisan y el Equipo Audacious.\n" +"\n" +"Muchas gracias a los desarrolladores de libcdio \n" +"\ty de libcddb .\n" +"\n" +"También gracias a Tony Vroon su tutoría y orientación.\n" +"\n" +"Este fue un proyecto del Google Summer of Code 2007.\n" +"\n" +"Copyright 2009 John Lindgren" + +#: src/cdaudio-ng/cdaudio-ng.c:552 +msgid "Audio CD" +msgstr "CD de audio" + +#: src/cdaudio-ng/cdaudio-ng.c:924 +msgid "Drive is empty." +msgstr "La unidad está vacía." + +#: src/cdaudio-ng/cdaudio-ng.c:926 +msgid "Unsupported disk type." +msgstr "Tipo de disco no soportado." + +#: src/cdaudio-ng/configure.c:148 +msgid "CD Audio Plugin Configuration" +msgstr "Configuración de complemento de CD de audio" + +#: src/cdaudio-ng/configure.c:160 +msgid "Digital audio extraction" +msgstr "Extracción digital de sonido" + +#: src/cdaudio-ng/configure.c:165 +msgid "Title information" +msgstr "Información de título" + +#: src/cdaudio-ng/configure.c:176 +msgid "Disc speed:" +msgstr "Velocidad de Disco:" + +#: src/cdaudio-ng/configure.c:184 +msgid "Use cd-text if available" +msgstr "Usar texto en CD si está disponible" + +#: src/cdaudio-ng/configure.c:191 +msgid "Use CDDB if available" +msgstr "Usar CDDB si está disponible" + +#: src/cdaudio-ng/configure.c:197 +msgid "Server: " +msgstr "Servidor: " + +#: src/cdaudio-ng/configure.c:201 +msgid "Path: " +msgstr "Ruta: " + +#: src/cdaudio-ng/configure.c:205 +msgid "Port: " +msgstr "Puerto:" + +#: src/cdaudio-ng/configure.c:218 +msgid "Use HTTP instead of CDDBP" +msgstr "Usar HTTP en lugar de CDDBP" + +#: src/cdaudio-ng/configure.c:230 +msgid "Override default device: " +msgstr "Sobreescribir el dispositivo predeterminado: " + +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:123 +#: src/echo_plugin/gui.c:118 src/jack/configure.c:141 src/null/null.c:107 +#: src/stereo_plugin/stereo.c:118 +msgid "Ok" +msgstr "Aceptar" + +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Play CD" +msgstr "Reproducir CD" + +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Add CD" +msgstr "Agregar CD" + +#: src/compressor/plugin.c:63 +msgid "About Dynamic Range Compression Plugin" +msgstr "Acerca del complemento de compresión de rango dinámico" + +#: src/compressor/plugin.c:95 +msgid "Dynamic Range Compressor Preferences" +msgstr "Preferencias del compresor de rango dinámico" + +#: src/compressor/plugin.c:107 +msgid "Center volume:" +msgstr "Centrar volumen:" + +#: src/compressor/plugin.c:120 +msgid "Dynamic range:" +msgstr "Rango dinámico:" + +#: src/console/configure.c:136 +msgid "Game Console Music Decoder" +msgstr "Decodificador musical de videoconsola" + +#: src/console/configure.c:153 +msgid "General" +msgstr "General" + +#: src/console/configure.c:155 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "Reproducción" + +#: src/console/configure.c:170 +msgid "Bass:" +msgstr "Graves:" + +#: src/console/configure.c:174 src/console/configure.c:185 +#: src/console/configure.c:206 +msgid "secs" +msgstr "segs" + +#: src/console/configure.c:181 +msgid "Treble:" +msgstr "Agudos:" + +#: src/console/configure.c:202 +msgid "Default song length:" +msgstr "Longitud de canción predeterminada:" + +#: src/console/configure.c:208 +msgid "Resampling" +msgstr "Remuestreo" + +#: src/console/configure.c:214 +msgid "Enable audio resampling" +msgstr "Activar el remuestreo de sonido" + +#: src/console/configure.c:229 +msgid "Resampling rate:" +msgstr "Tasa de remuestreo:" + +#: src/console/configure.c:233 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:244 +msgid "SPC" +msgstr "SPC" + +#: src/console/configure.c:245 +msgid "Ignore length from SPC tags" +msgstr "Ignorar longitud de etiquetas SPC" + +#: src/console/configure.c:246 +msgid "Increase reverb" +msgstr "Aumentar la reverberación" + +#: src/console/configure.c:271 +msgid "" +"The default song length, expressed in seconds, is used for songs that do not" +" provide length information (i.e. looping tracks)." +msgstr "" +"La longitud de canción predeterminada, expresada en segundos, es usada para " +"canciones que no preveén información de longitud (es decir pistas cíclicas)." + +#: src/console/plugin.c:33 +msgid "About the Game Console Music Decoder" +msgstr "Acerca del decodificador de música de videoconsola" + +#: src/console/plugin.c:34 +msgid "" +"Console music decoder engine based on Game_Music_Emu 0.5.2.\n" +"Supported formats: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Audacious implementation by: William Pitcock , \n" +" Shay Green \n" +msgstr "" +"El motor decodificador de música de videoconsola está basado en Game_Music_Emu 0.5.2.\n" +"Formatos sopotados: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Implementación de Audacious por: William Pitcock , \n" +" Shay Green \n" + +#: src/crossfade/plugin.c:60 +msgid "About Crossfade" +msgstr "Acerca de la atenuación cruzada" + +#: src/crossfade/plugin.c:92 +msgid "Crossfade Preferences" +msgstr "Preferencias de la atenuación cruzada" + +#: src/crossfade/plugin.c:104 +msgid "Overlap (in seconds):" +msgstr "Solapamiento (en segundos):" + +#: src/crossfade/plugin.c:135 src/crossfade/plugin.c:141 +msgid "Crossfade Error" +msgstr "Error de atenuación cruzada" + +#: src/crossfade/plugin.c:135 +msgid "" +"Crossfading failed because the songs had a different number of channels." +msgstr "" +"La atenuación cruzada falló porque las canciones tienen números diferentes " +"de canales." + +#: src/crossfade/plugin.c:143 +msgid "" +"Crossfading failed because the songs had different sample rates.\n" +"\n" +"You can use the Sample Rate Converter effect to resample the songs to the same rate." +msgstr "" +"La tenuación cruzada falló porque las canciones tienen diferentes frecuencias de muestreo.\n" +"\n" +"Puede usar el efecto convertidor de frecuencia de muestro para volver a muestrear las canciones a la misma tasa." + +#: src/crystalizer/crystalizer.c:100 +msgid "Configure Crystalizer" +msgstr "Configurar el cristalizador" + +#: src/crystalizer/crystalizer.c:102 src/stereo_plugin/stereo.c:97 +msgid "Effect intensity:" +msgstr "Intensidad de efectos:" + +#: src/crystalizer/crystalizer.c:136 src/echo_plugin/gui.c:131 +#: src/stereo_plugin/stereo.c:131 +msgid "Apply" +msgstr "Aplicar" + +#: src/echo_plugin/gui.c:15 +msgid "" +"Echo Plugin\n" +"By Johan Levin 1999.\n" +"\n" +"Surround echo by Carl van Schaik 1999" +msgstr "" +"Complemento de eco\n" +"por Johan Levin 1999.\n" +"\n" +"Eco envolvente por Carl van Schaik 1999" + +#: src/echo_plugin/gui.c:27 +msgid "About Echo Plugin" +msgstr "Acerca del complemento de eco" + +#: src/echo_plugin/gui.c:67 +msgid "Configure Echo" +msgstr "Configurar eco" + +#: src/echo_plugin/gui.c:83 +msgid "Delay: (ms)" +msgstr "Retraso: (ms)" + +#: src/echo_plugin/gui.c:88 +msgid "Feedback: (%)" +msgstr "Retroalimentación: (%)" + +#: src/echo_plugin/gui.c:93 +msgid "Volume: (%)" +msgstr "Volumen: (%)" + +#: src/ffaudio/ffaudio-core.c:725 +#, c-format +msgid "" +"Multi-format audio decoding plugin for Audacious based on\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious plugin by:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" +msgstr "" +"Complemento de decodificación de sonido multi-formato para Audacious\n" +"basado en el marco multimedia FFmpeg (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, y otros.\n" +"\n" +"Complemento de Audacious por:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" + +#: src/ffaudio/ffaudio-core.c:739 +msgid "About FFaudio Plugin" +msgstr "Acerca del complemento FFaudio" + +#: src/filewriter/filewriter.c:166 +msgid "About FileWriter-Plugin" +msgstr "Acerca del complemento escritor de archivos" + +#: src/filewriter/filewriter.c:461 +msgid "File Writer Configuration" +msgstr "Configuración del escritor de archivos" + +#: src/filewriter/filewriter.c:473 +msgid "Output file format:" +msgstr "Formato del archivo de salida:" + +#: src/filewriter/filewriter.c:491 +msgid "Configure" +msgstr "Configurar" + +#: src/filewriter/filewriter.c:506 +msgid "Save into original directory" +msgstr "Guardar dentro del directorio original" + +#: src/filewriter/filewriter.c:511 +msgid "Save into custom directory" +msgstr "Guardar dentro de directorio personalizado" + +#: src/filewriter/filewriter.c:521 +msgid "Output file folder:" +msgstr "Carpeta de archivo de salida:" + +#: src/filewriter/filewriter.c:525 +msgid "Pick a folder" +msgstr "Elija una carpeta" + +#: src/filewriter/filewriter.c:544 +msgid "Get filename from:" +msgstr "Obtener nombre de archivo desde:" + +#: src/filewriter/filewriter.c:547 +msgid "original file tags" +msgstr "etiquetas del archivo original" + +#: src/filewriter/filewriter.c:553 +msgid "original filename" +msgstr "nombre del archivo original" + +#: src/filewriter/filewriter.c:563 +msgid "Don't strip file name extension" +msgstr "No quitar la extensión del archivo" + +#: src/filewriter/filewriter.c:578 +msgid "Prepend track number to filename" +msgstr "Anteponer el número de pista al nombre de archivo" + +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:765 +msgid "Auto" +msgstr "Auto" + +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" +msgstr "Estéreo conjunto" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Stereo" +msgstr "Estereo" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Mono" +msgstr "Mono" + +#: src/filewriter/mp3.c:706 +msgid "MP3 Configuration" +msgstr "Configuración MP3" + +#: src/filewriter/mp3.c:729 +msgid "Algorithm Quality:" +msgstr "Calidad del algoritmo:" + +#: src/filewriter/mp3.c:754 +msgid "Output Samplerate:" +msgstr "Frecuencia de muestreo de salida:" + +#: src/filewriter/mp3.c:782 +msgid "(Hz)" +msgstr "(Hz)" + +#: src/filewriter/mp3.c:789 +msgid "Bitrate / Compression ratio:" +msgstr "Tasa de bits / Compresión:" + +#: src/filewriter/mp3.c:813 +msgid "Bitrate (kbps):" +msgstr "Tasa de bits (kbps):" + +#: src/filewriter/mp3.c:846 +msgid "Compression ratio:" +msgstr "Compresión:" + +#: src/filewriter/mp3.c:870 +msgid "Audio Mode:" +msgstr "Modo de sonido:" + +#: src/filewriter/mp3.c:895 +msgid "Misc:" +msgstr "Varios:" + +#: src/filewriter/mp3.c:906 +msgid "Enforce strict ISO complience" +msgstr "Cumplir estrictamente la norma ISO" + +#: src/filewriter/mp3.c:917 +msgid "Error protection" +msgstr "Error de protección" + +#: src/filewriter/mp3.c:929 src/filewriter/vorbis.c:247 +msgid "Quality" +msgstr "Calidad" + +#: src/filewriter/mp3.c:939 +msgid "Enable VBR/ABR" +msgstr "Activar VBR/ABR" + +#: src/filewriter/mp3.c:949 +msgid "Type:" +msgstr "Tipo:" + +#: src/filewriter/mp3.c:982 +msgid "VBR Options:" +msgstr "Opciones VBR:" + +#: src/filewriter/mp3.c:998 +msgid "Minimum bitrate (kbps):" +msgstr "Tasa de bits mínima (kbps):" + +#: src/filewriter/mp3.c:1025 +msgid "Maximum bitrate (kbps):" +msgstr "Tasa de bits máxima (kbps):" + +#: src/filewriter/mp3.c:1048 +msgid "Strictly enforce minimum bitrate" +msgstr "Aplicar estrictamente la tasa de bits mínima" + +#: src/filewriter/mp3.c:1060 +msgid "ABR Options:" +msgstr "Opciones ABR:" + +#: src/filewriter/mp3.c:1070 +msgid "Average bitrate (kbps):" +msgstr "Tasa de bits promedio (kbps):" + +#: src/filewriter/mp3.c:1098 +msgid "VBR quality level:" +msgstr "Nivel de calidad VBR:" + +#: src/filewriter/mp3.c:1117 +msgid "Don't write Xing VBR header" +msgstr "No escribir la cabecera VBR Xing" + +#: src/filewriter/mp3.c:1131 +msgid "VBR/ABR" +msgstr "VBR/ABR" + +#: src/filewriter/mp3.c:1141 +msgid "Frame params:" +msgstr "Prametros de cuadro:" + +#: src/filewriter/mp3.c:1153 +msgid "Mark as copyright" +msgstr "Marcar como derechos de autor" + +#: src/filewriter/mp3.c:1164 +msgid "Mark as original" +msgstr "Marcar como original" + +#: src/filewriter/mp3.c:1176 +msgid "ID3 params:" +msgstr "Parametros ID3:" + +#: src/filewriter/mp3.c:1187 +msgid "Force addition of version 2 tag" +msgstr "Forzar adición de etiqueta de la versión 2" + +#: src/filewriter/mp3.c:1197 +msgid "Only add v1 tag" +msgstr "Solo agregar etiqueta v1" + +#: src/filewriter/mp3.c:1204 +msgid "Only add v2 tag" +msgstr "Solo agregar etiqueta v2" + +#: src/filewriter/mp3.c:1225 +msgid "Tags" +msgstr "Etiquetas" + +#: src/filewriter/vorbis.c:240 +msgid "Vorbis Encoder Configuration" +msgstr "Configuración de codificador Vorbis" + +#: src/filewriter/vorbis.c:260 +msgid "Quality level (0 - 10):" +msgstr "Nivel de calidad (0 - 10):" + +#: src/flacng/plugin.c:380 +msgid "About FLAC Audio Plugin" +msgstr "Acerca del complemento de sonido FLAC" + +#: src/flacng/plugin.c:381 +msgid "" +"\n" +"\n" +"Original code by\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" +msgstr "" +"\n" +"Código original por\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" + +#: src/gnomeshortcuts/gnomeshortcuts.c:303 +msgid "About Gnome Shortcut Plugin" +msgstr "Acerca del complemento de atajos Gnome" + +#: src/gnomeshortcuts/gnomeshortcuts.c:304 +msgid "" +"Gnome Shortcut Plugin\n" +"Let's you control the player with Gnome's shortcuts.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +msgstr "" +"Complemento de atajos Gnome\n" +"Le permite controlar el reproductor con atajos de Gnome.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" + +#: src/gtkui/columns.c:36 +msgid "Entry number" +msgstr "Número de entrada" + +#: src/gtkui/columns.c:36 src/search-tool/search-tool.c:43 +msgid "Title" +msgstr "Título" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:42 +msgid "Artist" +msgstr "Artista" + +#: src/gtkui/columns.c:37 +msgid "Year" +msgstr "Año" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:43 +msgid "Album" +msgstr "Album" + +#: src/gtkui/columns.c:37 +msgid "Track" +msgstr "Pista" + +#: src/gtkui/columns.c:37 +msgid "Queue position" +msgstr "Posición de la cola" + +#: src/gtkui/columns.c:38 +msgid "Length" +msgstr "Longitud" + +#: src/gtkui/columns.c:38 +msgid "File path" +msgstr "Ruta del archivo" + +#: src/gtkui/columns.c:38 +msgid "File name" +msgstr "Nombre del archivo" + +#: src/gtkui/columns.c:38 +msgid "Custom title" +msgstr "Título personalizado" + +#: src/gtkui/columns.c:39 +msgid "Bitrate" +msgstr "Tasa de bits" + +#: src/gtkui/columns.c:278 +msgid "Choose Columns" +msgstr "Seleccionar columnas" + +#: src/gtkui/columns.c:292 +msgid "Available:" +msgstr "Disponible:" + +#: src/gtkui/columns.c:326 +msgid "Chosen:" +msgstr "Seleccionado:" + +#: src/gtkui/layout.c:122 +msgid "Dock at Left" +msgstr "Acoplar a la izquierda" + +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "Acoplar a la derecha" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "Acoplar arriba" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "Acoplar abajo" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "Desacoplar" + +#: src/gtkui/layout.c:123 src/ladspa/plugin.c:644 +msgid "Disable" +msgstr "Deshabilitar" + +#: src/gtkui/menus.c:131 +msgid "_Open Files ..." +msgstr "_Abrir archivos ..." + +#: src/gtkui/menus.c:132 +msgid "Open _URL ..." +msgstr "Abrir _URL ..." + +#: src/gtkui/menus.c:133 +msgid "_Add Files ..." +msgstr "_Añadir archivos ..." + +#: src/gtkui/menus.c:134 +msgid "Add U_RL ..." +msgstr "Añadir U_RL ..." + +#: src/gtkui/menus.c:136 +msgid "A_bout ..." +msgstr "A_cerca de ..." + +#: src/gtkui/menus.c:137 +msgid "_Preferences ..." +msgstr "_Preferencias" + +#: src/gtkui/menus.c:138 src/skins/ui_manager.c:406 +msgid "_Quit" +msgstr "_Salir" + +#: src/gtkui/menus.c:141 +msgid "_Play" +msgstr "_Reproducir" + +#: src/gtkui/menus.c:142 +msgid "Paus_e" +msgstr "Pa_usar" + +#: src/gtkui/menus.c:143 +msgid "_Stop" +msgstr "_Detener" + +#: src/gtkui/menus.c:144 +msgid "Pre_vious" +msgstr "An_terior" + +#: src/gtkui/menus.c:145 +msgid "_Next" +msgstr "Si_guiente" + +#: src/gtkui/menus.c:147 +msgid "_Repeat" +msgstr "R_epetir" + +#: src/gtkui/menus.c:148 +msgid "S_huffle" +msgstr "_Orden aleatorio" + +#: src/gtkui/menus.c:149 +msgid "N_o Playlist Advance" +msgstr "No avan_zar la lista de reproducción" + +#: src/gtkui/menus.c:150 +msgid "Stop _After This Song" +msgstr "_Detener tras esta canción" + +#: src/gtkui/menus.c:152 src/gtkui/menus.c:212 +msgid "Song _Info ..." +msgstr "_Información de la canción ..." + +#: src/gtkui/menus.c:153 +msgid "Jump to _Time ..." +msgstr "_Saltar en el tiempo ..." + +#: src/gtkui/menus.c:154 +msgid "_Jump to Song ..." +msgstr "Saltar a la _canción ..." + +#: src/gtkui/menus.c:157 +msgid "By Track _Number" +msgstr "Por _número de pista" + +#: src/gtkui/menus.c:158 +msgid "By _Title" +msgstr "Por _título" + +#: src/gtkui/menus.c:159 +msgid "By _Artist" +msgstr "Por _artista" + +#: src/gtkui/menus.c:160 +msgid "By A_lbum" +msgstr "Por a_lbum" + +#: src/gtkui/menus.c:161 +msgid "By Release _Date" +msgstr "Por _fecha de estreno" + +#: src/gtkui/menus.c:162 +msgid "By _File Path" +msgstr "Por _ruta de archivo" + +#: src/gtkui/menus.c:163 +msgid "By _Custom Title" +msgstr "Por título _personalizado" + +#: src/gtkui/menus.c:165 +msgid "R_everse Order" +msgstr "Orden _inverso" + +#: src/gtkui/menus.c:166 +msgid "_Random Order" +msgstr "Orden alea_torio" + +#: src/gtkui/menus.c:169 src/gtkui/menus.c:214 +msgid "_Refresh" +msgstr "A_ctualizar" + +#: src/gtkui/menus.c:170 +msgid "Remove _Unavailable Files" +msgstr "Eliminar archivos _no disponibles" + +#: src/gtkui/menus.c:172 +msgid "_Sort" +msgstr "_Ordenar" + +#: src/gtkui/menus.c:174 +msgid "_New" +msgstr "_Nuevo" + +#: src/gtkui/menus.c:175 src/gtkui/menus.c:225 +msgid "_Close" +msgstr "_Cerrar" + +#: src/gtkui/menus.c:177 +msgid "_Import ..." +msgstr "_Importar ..." + +#: src/gtkui/menus.c:178 +msgid "_Export ..." +msgstr "_Exportar ..." + +#: src/gtkui/menus.c:180 +msgid "_Playlist Manager ..." +msgstr "_Gestor de listas de reproducción ..." + +#: src/gtkui/menus.c:181 +msgid "_Queue Manager ..." +msgstr "Gestor de _colas ..." + +#: src/gtkui/menus.c:184 +msgid "Volume _Up" +msgstr "_Subir volumen" + +#: src/gtkui/menus.c:185 +msgid "Volume _Down" +msgstr "_Bajar volumen" + +#: src/gtkui/menus.c:187 +msgid "_Equalizer" +msgstr "_Ecualizador" + +#: src/gtkui/menus.c:189 +msgid "E_ffects" +msgstr "E_fectos" + +#: src/gtkui/menus.c:192 +msgid "_Interface" +msgstr "_Interfaz" + +#: src/gtkui/menus.c:193 +msgid "_Visualizations" +msgstr "_Visualizaciones" + +#: src/gtkui/menus.c:195 +msgid "Show _Menu Bar" +msgstr "_Mostrar barra de menú" + +#: src/gtkui/menus.c:196 +msgid "Show I_nfo Bar" +msgstr "Mostrar barra de _información" + +#: src/gtkui/menus.c:197 +msgid "Show _Status Bar" +msgstr "Mostrar barra de _estado" + +#: src/gtkui/menus.c:199 +msgid "Show Column _Headers" +msgstr "Mostrar _cabeceras de columna" + +#: src/gtkui/menus.c:200 +msgid "Choose _Columns ..." +msgstr "_Seleccionar columnas ..." + +#: src/gtkui/menus.c:201 +msgid "Scrol_l on Song Change" +msgstr "A_vanzar al cambiar de canción" + +#: src/gtkui/menus.c:204 +msgid "_File" +msgstr "_Archivo" + +#: src/gtkui/menus.c:205 +msgid "_Playback" +msgstr "_Reproducción" + +#: src/gtkui/menus.c:206 +msgid "P_laylist" +msgstr "_Lista de reproducción" + +#: src/gtkui/menus.c:207 src/gtkui/menus.c:221 +msgid "_Services" +msgstr "_Servicios" + +#: src/gtkui/menus.c:208 +msgid "_Output" +msgstr "Sali_da" + +#: src/gtkui/menus.c:209 +msgid "_View" +msgstr "_Ver" + +#: src/gtkui/menus.c:213 +msgid "_Queue/Unqueue" +msgstr "_Encolar/desencolar" + +#: src/gtkui/menus.c:216 +msgid "Cu_t" +msgstr "Cor_tar" + +#: src/gtkui/menus.c:217 +msgid "_Copy" +msgstr "_Copiar" + +#: src/gtkui/menus.c:218 +msgid "_Paste" +msgstr "_Pegar" + +#: src/gtkui/menus.c:219 +msgid "Select _All" +msgstr "Seleccionar _todo" + +#: src/gtkui/menus.c:224 +msgid "_Rename" +msgstr "_Renombrar" + +#: src/gtkui/ui_gtk.c:95 +msgid "GTK Interface" +msgstr "Interfaz GTK" + +#: src/gtkui/ui_gtk.c:156 src/skins/ui_main.c:303 +#, c-format +msgid "%s - Audacious" +msgstr "%s - Audacious" + +#: src/gtkui/ui_gtk.c:162 +msgid "Buffering ..." +msgstr "Gestión de memoria intermedia ..." + +#: src/gtkui/ui_gtk.c:165 src/skins/ui_main.c:305 src/skins/ui_main.c:1504 +msgid "Audacious" +msgstr "Audacious" + +#: src/gtkui/ui_gtk.c:216 src/skins/plugin.c:190 +msgid "Error" +msgstr "Error" + +#: src/gtkui/ui_playlist_notebook.c:97 +msgid "Close" +msgstr "Cerrar" + +#: src/gtkui/ui_statusbar.c:105 src/skins/ui_main.c:460 +msgid "mono" +msgstr "mono" + +#: src/gtkui/ui_statusbar.c:107 src/skins/ui_main.c:459 +msgid "stereo" +msgstr "estéreo" + +#: src/gtkui/ui_statusbar.c:109 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d canal" +msgstr[1] "%d canales" + +#: src/gtkui/ui_statusbar.c:124 +#, c-format +msgid "%d kbps" +msgstr "%d kbps" + +#: src/hotkey/gui.c:71 +msgid "Previous Track" +msgstr "Pista anterior" + +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "Reproducir" + +#: src/hotkey/gui.c:73 +msgid "Pause/Resume" +msgstr "Pausa/continuar" + +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +msgid "Stop" +msgstr "Detener" + +#: src/hotkey/gui.c:75 +msgid "Next Track" +msgstr "Siguiente pista" + +#: src/hotkey/gui.c:76 +msgid "Forward 5 Seconds" +msgstr "Avanzar 5 segundos" + +#: src/hotkey/gui.c:77 +msgid "Rewind 5 Seconds" +msgstr "Retroceder 5 segundos" + +#: src/hotkey/gui.c:78 +msgid "Mute" +msgstr "Silenciar" + +#: src/hotkey/gui.c:79 +msgid "Volume Up" +msgstr "Subir volumen" + +#: src/hotkey/gui.c:80 +msgid "Volume Down" +msgstr "Bajar volumen" + +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Jump to File" +msgstr "Ir al archivo" + +#: src/hotkey/gui.c:82 +msgid "Toggle Player Windows" +msgstr "Cambiar ventanas del reproductor" + +#: src/hotkey/gui.c:83 +msgid "Show On-Screen-Display" +msgstr "Mostrar notificaciones" + +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "Conmutar el modo repetir" + +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "Conmutar orden aleatorio" + +#: src/hotkey/gui.c:95 +msgid "(none)" +msgstr "(ninguno)" + +#: src/hotkey/gui.c:232 +msgid "" +"It is not recommended to bind the primary mouse buttons without modificators.\n" +"\n" +"Do you want to continue?" +msgstr "" +"No se recomienda asociar los botones principales del mouse sin cambios.\n" +"\n" +"¿Quiere continuar?" + +#: src/hotkey/gui.c:234 +msgid "Binding mouse buttons" +msgstr "Asociar botones del mouse" + +#: src/hotkey/gui.c:384 +msgid "Global Hotkey Plugin Configuration" +msgstr "Configuración de atajos de teclado" + +#: src/hotkey/gui.c:400 +msgid "" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." +msgstr "" +"Pulse una combinación de teclas dentro del campo de texto.\n" +"También puede asociar botones del ratón." + +#: src/hotkey/gui.c:405 +msgid "Hotkeys:" +msgstr "Atajos de teclado:" + +#: src/hotkey/gui.c:424 +msgid "Action:" +msgstr "Acción:" + +#: src/hotkey/gui.c:432 +msgid "Key Binding:" +msgstr "Teclas asociadas:" + +#: src/hotkey/gui.c:663 +msgid "About Global Hotkey Plugin" +msgstr "Acerca del complemento de atajos de teclado" + +#: src/hotkey/gui.c:664 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributers include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä \n" +"\t\t\tBryn Davies \n" +"\t\t\tJonathan A. Davis \n" +"\t\t\tJeremy Tan \n" +"\n" +msgstr "" +"Complemento de atajos de teclado\n" +"Controla el reproductor con combinaciones de teclas o teclas multimedia.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Con la participación de:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä \n" +"\t\t\tBryn Davies \n" +"\t\t\tJonathan A. Davis \n" +"\t\t\tJeremy Tan \n" +"\n" + +#: src/jack/configure.c:66 +msgid "Connect to all available jack ports" +msgstr "Conectar a todos los puertos jack disponibles" + +#: src/jack/configure.c:73 +msgid "Connect only the output ports" +msgstr "Conectar solo los puertos de salida" + +#: src/jack/configure.c:80 +msgid "Connect to no ports" +msgstr "No conectar puertos" + +#: src/jack/configure.c:98 +msgid "jack Plugin configuration" +msgstr "Configuración del complemento jack" + +#: src/jack/configure.c:116 +msgid "Connection mode:" +msgstr "Modo de conexión:" + +#: src/jack/configure.c:128 +msgid "Enable debug printing" +msgstr "Activar mensajes de depuración" + +#: src/jack/jack.c:435 +msgid "" +"XMMS jack Driver 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" +"\n" +"Audacious port by\n" +"Giacomo Lozito from develia.org" +msgstr "" +"Complemento jack para XMMS 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" +"\n" +"Portado a Audacious por\n" +"Giacomo Lozito de develia.org" + +#: src/jack/jack.c:440 +msgid "About JACK Output Plugin 0.17" +msgstr "Acerca del complemento de salida JACK 0.17" + +#: src/ladspa/plugin.c:415 +msgid "About LADSPA Host" +msgstr "Acerca del servidor LADSPA" + +#: src/ladspa/plugin.c:516 +#, c-format +msgid "%s Settings" +msgstr "Ajustes %s" + +#: src/ladspa/plugin.c:584 +msgid "LADSPA Host Settings" +msgstr "Ajustes del servidor LADSPA" + +#: src/ladspa/plugin.c:593 +msgid "Module paths:" +msgstr "Rutas de complementos:" + +#: src/ladspa/plugin.c:598 +msgid "" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." +msgstr "" +"Separe múltiples rutas por dos puntos.\n" +"Estas rutas se utilizan además de LADSPA_PATH.\n" +"Tras añadir nuevas rutas, pulse Intro para buscar complementos nuevos." + +#: src/ladspa/plugin.c:614 +msgid "Available plugins:" +msgstr "Complementos disponibles:" + +#: src/ladspa/plugin.c:626 +msgid "Enable" +msgstr "Activar" + +#: src/ladspa/plugin.c:632 +msgid "Enabled plugins:" +msgstr "Complementos activos:" + +#: src/ladspa/plugin.c:647 +msgid "Settings" +msgstr "Ajustes" + +#: src/lyricwiki/lyricwiki.c:267 +msgid "" +"\n" +"Looking for lyrics..." +msgstr "" +"\n" +"Buscando letras ..." + +#: src/lyricwiki/lyricwiki.c:304 +msgid "" +"\n" +"Connecting to lyrics.wikia.com..." +msgstr "" +"\n" +"Conectando a lyrics.wikia.com..." + +#: src/lyricwiki/lyricwiki.c:377 +msgid "" +"\n" +"No lyrics were found." +msgstr "" +"\n" +"No se encontraron letras." + +#: src/metronom/metronom.c:86 +msgid "About Metronom" +msgstr "Acerca del metrónomo" + +#: src/metronom/metronom.c:87 +msgid "" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +msgstr "" +"Un generador de tacto por Martin Strauss \n" +"\n" +"Para utilizarlo, añada una URL: tact://pulsos*num/den\n" +"p. ej. tact://77 para reproducir 77 pulsos por minuto\n" +"o tact://60*3/4 para reproducir 60 ppm en 3/4 tactos" + +#: src/metronom/metronom.c:144 +#, c-format +msgid "Tact generator: %d bpm" +msgstr "Generador de tacto: %d ppm" + +#: src/metronom/metronom.c:146 +#, c-format +msgid "Tact generator: %d bpm %d/%d" +msgstr "Generador de tacto: %d ppm %d/%d" + +#: src/mixer/plugin.c:64 +msgid "About Channel Mixer" +msgstr "Acerca del mezclador de canales" + +#: src/mixer/plugin.c:93 +msgid "Channel Mixer Settings" +msgstr "Ajustes del mezclador de canales" + +#: src/mixer/plugin.c:102 +msgid "Output channels:" +msgstr "Canales de salida:" + +#: src/mixer/plugin.c:112 +msgid "Changes take effect at the next song change." +msgstr "Los cambios se aplicarán en el siguiente cambio de canción." + +#: src/mpg123/mpg123.c:191 +msgid "Surround" +msgstr "Envolvente" + +#: src/mtp_up/mtp.c:340 +msgid "Upload in progress..." +msgstr "Carga en progreso..." + +#: src/mtp_up/mtp.c:352 +msgid "Upload to MTP Device" +msgstr "Cargar a un dispositivo MTP" + +#: src/mtp_up/mtp.c:353 +msgid "Disconnect MTP Device" +msgstr "Desconectar dispositivo MTP" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Stopped" +msgstr "Detenido" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Audacious is not playing." +msgstr "Audacious no está reproduciendo." + +#: src/null/null.c:64 +msgid "Null output plugin " +msgstr "Complemento de salida nula " + +#: src/null/null.c:65 +msgid "" +" by Christian Birchinger \n" +"based on the XMMS plugin by HÃ¥vard KvÃ¥l " +msgstr "" +" por Christian Birchinger \n" +"basado en el complemento de XMMS por HÃ¥vard KvÃ¥l " + +#: src/null/null.c:68 +msgid "About Null Output" +msgstr "Acerca del complemento de salida nula" + +#: src/null/null.c:89 +msgid "Null output preferences" +msgstr "Preferencias de la salida nula" + +#: src/null/null.c:100 +msgid "Run in real time" +msgstr "Ejecutar en tiempo real" + +#: src/oss4/configure.c:81 +msgid "1. Default device" +msgstr "1. Dispositivo predeterminado" + +#: src/oss4/configure.c:138 +msgid "OSS4 Output Plugin Preferences" +msgstr "Preferencias del complemento de salida OSS4" + +#: src/oss4/configure.c:150 src/OSS/configure.c:194 +msgid "Audio device:" +msgstr "Dispositivo de sonido:" + +#: src/oss4/configure.c:178 src/OSS/configure.c:217 src/OSS/configure.c:260 +msgid "Use alternate device:" +msgstr "Utilizar dispositivo alternativo:" + +#: src/oss4/configure.c:193 +msgid "Save volume between sessions" +msgstr "Guardar volumen entre sesiones" + +#: src/oss4/configure.c:197 +msgid "Enable format conversions made by the OSS software." +msgstr "Activar conversiones de formato realizadas por el software OSS." + +#: src/oss4/configure.c:201 +msgid "Enable exclusive mode to prevent virtual mixing." +msgstr "Activa el modo exclusivo para evitar la mezcla virtual." + +#: src/oss4/plugin.c:51 +msgid "About OSS4 Plugin" +msgstr "Acerca del complemento OSS4" + +#: src/oss4/utils.c:211 +msgid "OSS4 error" +msgstr "Error OSS4" + +#: src/OSS/configure.c:137 +#, c-format +msgid "Default (%s)" +msgstr "Predeterminado (%s)" + +#: src/OSS/configure.c:178 +msgid "OSS Driver configuration" +msgstr "Configuración del complemento OSS" + +#: src/OSS/configure.c:281 +msgid "Devices" +msgstr "Dispositivos" + +#: src/OSS/configure.c:283 +msgid "Buffering:" +msgstr "Gestión de memoria intermedia:" + +#: src/OSS/configure.c:296 +msgid "Pre-buffer (percent):" +msgstr "Información inicial (porcentaje):" + +#: src/OSS/configure.c:307 +msgid "Buffering" +msgstr "Gestión de memoria intermedia" + +#: src/OSS/configure.c:308 +msgid "Mixer Settings:" +msgstr "Ajustes del mezclador:" + +#: src/OSS/configure.c:314 +msgid "Volume controls Master not PCM" +msgstr "El volumen controla el maestro no PCM" + +#: src/OSS/configure.c:320 +msgid "Mixer" +msgstr "Mezclador" + +#: src/OSS/OSS.c:41 +msgid "About OSS Driver" +msgstr "Acerca del complemento OSS" + +#: src/pulse_audio/pulse_audio.c:669 +msgid "About Audacious PulseAudio Output Plugin" +msgstr "Acerca del complemento de salida PulseAudio" + +#: src/resample/plugin.c:89 +msgid "About Sample Rate Converter Plugin" +msgstr "Acerca del módulo de conversión de frecuencia de muestreo" + +#: src/resample/plugin.c:144 +msgid "Sample Rate Converter Preferences" +msgstr "Preferencias del conversor de frecuencia de muestreo" + +#: src/resample/plugin.c:156 +msgid "Rate mappings:" +msgstr "Mapas de frecuencia:" + +#: src/resample/plugin.c:179 +msgid "All others:" +msgstr "Todos los demás:" + +#: src/resample/plugin.c:191 +msgid "Method:" +msgstr "Método:" + +#: src/scrobbler/configure.c:123 src/scrobbler/configure.c:198 +msgid "Change password" +msgstr "Cambiar la contraseña" + +#: src/scrobbler/configure.c:144 +msgid "Services" +msgstr "Servicios" + +#: src/scrobbler/configure.c:166 +msgid "Username:" +msgstr "Nombre de usuario:" + +#: src/scrobbler/configure.c:172 +msgid "Password:" +msgstr "Contraseña:" + +#: src/scrobbler/configure.c:180 +msgid "Scrobbler URL:" +msgstr "URL del Scrobbler:" + +#: src/scrobbler/configure.c:212 +msgid "Last.FM" +msgstr "Last.FM" + +#: src/scrobbler/configure.c:239 +msgid "Scrobbler" +msgstr "Scrobbler" + +#: src/scrobbler/plugin.c:194 +msgid "" +"Audacious AudioScrobbler Plugin\n" +"\n" +"Originally created by Audun Hove and Pipian \n" +msgstr "" +"Módulo de AudioScrobbler para Audacious\n" +"\n" +"Creado originalmente por Audun Hove y Pipian \n" + +#: src/scrobbler/plugin.c:196 +msgid "About Scrobbler Plugin" +msgstr "Acerca del complemento Scrobbler" + +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" +msgstr "Acerca del complemento de salida SDL" + +#: src/sdlout/plugin.c:78 +msgid "SDL error" +msgstr "Error SDL" + +#: src/search-tool/search-tool.c:42 +msgid "Genre" +msgstr "Género" + +#: src/search-tool/search-tool.c:96 src/search-tool/search-tool.c:106 +msgid "Library" +msgstr "Biblioteca" + +#: src/search-tool/search-tool.c:591 +msgid "_Create Playlist" +msgstr "_Crear lista de reproducción" + +#: src/search-tool/search-tool.c:598 +msgid "_Add to Playlist" +msgstr "_Añadir a la lista de reproducción" + +#: src/search-tool/search-tool.c:641 +msgid "Search library" +msgstr "Buscar biblioteca" + +#: src/search-tool/search-tool.c:645 +msgid "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." +msgstr "" +"Para importar su colección musical en Audacious, elija una carpeta y pulse " +"el botón «actualizar»." + +#: src/search-tool/search-tool.c:653 +msgid "Please wait ..." +msgstr "Espere por favor..." + +#: src/search-tool/search-tool.c:675 +msgid "Choose Folder" +msgstr "Elija una carpeta" + +#: src/skins/plugin.c:167 +msgid "About Skinned GUI" +msgstr "Acerca del interfaz con soporte de temas" + +#: src/skins/plugin.c:168 +msgid "" +"Copyright (c) 2008, by Tomasz MoÅ„ \n" +"\n" +msgstr "Copyright (c) 2008, por Tomasz MoÅ„ \n" + +#: src/skins/skins_cfg.c:207 +msgid "_Player:" +msgstr "_Reproductor:" + +#: src/skins/skins_cfg.c:208 +msgid "Select main player window font:" +msgstr "Seleccione la tipografía para la ventana principal:" + +#: src/skins/skins_cfg.c:210 +msgid "_Playlist:" +msgstr "Lista de reproducción:" + +#: src/skins/skins_cfg.c:211 +msgid "Select playlist font:" +msgstr "Seleccione la tipografía de la lista de reproducción:" + +#: src/skins/skins_cfg.c:215 +msgid "_Fonts" +msgstr "_Tipografías" + +#: src/skins/skins_cfg.c:218 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "Usar tipografías de mapa de bits (solo soporta ASCII)" + +#: src/skins/skins_cfg.c:220 +msgid "Scroll song title in both directions" +msgstr "Desplazar el título de la canción en ambas direcciones" + +#: src/skins/skins_cfg.c:298 +msgid "_Skin" +msgstr "_Tema" + +#: src/skins/skins_cfg.c:345 +msgid "Interface Preferences" +msgstr "Preferencias del interfaz" + +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "Preamplificador" + +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" +msgstr "31 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "63 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" +msgstr "125 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" +msgstr "250 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" +msgstr "500 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" +msgstr "1 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" +msgstr "2 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" +msgstr "4 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" +msgstr "8 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" +msgstr "16 kHz" + +#: src/skins/ui_equalizer.c:379 +msgid "Audacious Equalizer" +msgstr "Ecualizador de Audacious" + +#: src/skins/ui_equalizer.c:887 +msgid "Presets" +msgstr "Predefinidos" + +#: src/skins/ui_equalizer.c:968 src/skins/ui_manager.c:442 +msgid "Load preset" +msgstr "Cargar predefinido" + +#: src/skins/ui_equalizer.c:985 +msgid "Load auto-preset" +msgstr "Cargar auto-predefinido" + +#: src/skins/ui_equalizer.c:1015 src/skins/ui_equalizer.c:1033 +#: src/skins/ui_equalizer.c:1049 +msgid "Load equalizer preset" +msgstr "Cargar ecualizador predefinido" + +#: src/skins/ui_equalizer.c:1068 src/skins/ui_manager.c:463 +msgid "Save preset" +msgstr "Guardar predefinido" + +#: src/skins/ui_equalizer.c:1084 +msgid "Save auto-preset" +msgstr "Guardar auto-predefinido" + +#: src/skins/ui_equalizer.c:1114 src/skins/ui_equalizer.c:1150 +msgid "Save equalizer preset" +msgstr "Guardar ecualizador predefinido" + +#: src/skins/ui_equalizer.c:1169 src/skins/ui_manager.c:478 +msgid "Delete preset" +msgstr "Borrar predefinido" + +#: src/skins/ui_equalizer.c:1186 +msgid "Delete auto-preset" +msgstr "Borrar auto-predefinido" + +#: src/skins/ui_main.c:444 +msgid "kbps" +msgstr "kbps" + +#: src/skins/ui_main.c:452 +msgid "kHz" +msgstr "kHz" + +#: src/skins/ui_main.c:459 +msgid "surround" +msgstr "envolvente" + +#: src/skins/ui_main.c:807 +#, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "Ir a la posición %d:%-2.2d / %d:%-2.2d" + +#: src/skins/ui_main.c:828 +#, c-format +msgid "Volume: %d%%" +msgstr "Volumen: %d%%" + +#: src/skins/ui_main.c:851 +#, c-format +msgid "Balance: %d%% left" +msgstr "Balance: %d%% izquierda" + +#: src/skins/ui_main.c:853 +msgid "Balance: center" +msgstr "Balance: centrado" + +#: src/skins/ui_main.c:855 +#, c-format +msgid "Balance: %d%% right" +msgstr "Balance: %d%% derecha" + +#: src/skins/ui_main.c:981 +msgid "Options Menu" +msgstr "Menú de opciones" + +#: src/skins/ui_main.c:985 +msgid "Disable 'Always On Top'" +msgstr "Desactivar 'Siempre encima'" + +#: src/skins/ui_main.c:987 +msgid "Enable 'Always On Top'" +msgstr "Activar 'Siempre encima'" + +#: src/skins/ui_main.c:990 +msgid "File Info Box" +msgstr "Caja de información de archivo" + +#: src/skins/ui_main.c:995 +msgid "Visualization Menu" +msgstr "Menú de visualización" + +#: src/skins/ui_main.c:1653 +msgid "Single mode." +msgstr "Modo único." + +#: src/skins/ui_main.c:1655 +msgid "Playlist mode." +msgstr "Modo de lista de reproducción." + +#: src/skins/ui_main.c:1677 +msgid "Stopping after song." +msgstr "Parar después de la canción." + +#: src/skins/ui_main.c:1679 +msgid "Not stopping after song." +msgstr "No parar después de la canción." + +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 +msgid "Autoscroll Songname" +msgstr "Desplazar el nombre de la canción" + +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "Parar tras la canción actual" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 +msgid "Peaks" +msgstr "Picos" + +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "Repetir" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "Orden aleatorio" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "No avanzar la lista de reproducción" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 +msgid "Show Player" +msgstr "Mostrar reproductor" + +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 +msgid "Show Playlist Editor" +msgstr "Mostrar el editor de listas de reproducción" + +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 +msgid "Show Equalizer" +msgstr "Mostrar el ecualizador" + +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 +msgid "Always on Top" +msgstr "Siempre encima" + +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 +msgid "Put on All Workspaces" +msgstr "Poner en todos los espacios de trabajo" + +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 +msgid "Roll up Player" +msgstr "Enrollar el reproductor" + +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 +msgid "Roll up Playlist Editor" +msgstr "Enrollar el editor de listas de reproducción" + +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 +msgid "Roll up Equalizer" +msgstr "Enrollar el ecualizador" + +#: src/skins/ui_manager.c:115 +msgid "Analyzer" +msgstr "Analizador" + +#: src/skins/ui_manager.c:116 +msgid "Scope" +msgstr "Campo" + +#: src/skins/ui_manager.c:117 +msgid "Voiceprint" +msgstr "Marca de voz" + +#: src/skins/ui_manager.c:118 +msgid "Off" +msgstr "Apagado" + +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 +msgid "Normal" +msgstr "Normal" + +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 +msgid "Fire" +msgstr "Fuego" + +#: src/skins/ui_manager.c:124 +msgid "Vertical Lines" +msgstr "Líneas verticales" + +#: src/skins/ui_manager.c:128 +msgid "Lines" +msgstr "Líneas" + +#: src/skins/ui_manager.c:129 +msgid "Bars" +msgstr "Barras" + +#: src/skins/ui_manager.c:133 +msgid "Dot Scope" +msgstr "Campo de puntos" + +#: src/skins/ui_manager.c:134 +msgid "Line Scope" +msgstr "Campo de líneas" + +#: src/skins/ui_manager.c:135 +msgid "Solid Scope" +msgstr "Campo sólido" + +#: src/skins/ui_manager.c:141 +msgid "Ice" +msgstr "Hielo" + +#: src/skins/ui_manager.c:146 +msgid "Smooth" +msgstr "Suave" + +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 +msgid "Slowest" +msgstr "Muy lento" + +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 +msgid "Slow" +msgstr "Lento" + +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 +msgid "Medium" +msgstr "Medio" + +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 +msgid "Fast" +msgstr "Rápido" + +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 +msgid "Fastest" +msgstr "Muy rápido" + +#: src/skins/ui_manager.c:166 +msgid "Time Elapsed" +msgstr "Tiempo transcurrido" + +#: src/skins/ui_manager.c:167 +msgid "Time Remaining" +msgstr "Tiempo restante" + +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "Pausar" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "Anterior" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "Siguiente" + +#: src/skins/ui_manager.c:196 +msgid "Visualization" +msgstr "Visualización" + +#: src/skins/ui_manager.c:197 +msgid "Visualization Mode" +msgstr "Modo de visualización" + +#: src/skins/ui_manager.c:198 +msgid "Analyzer Mode" +msgstr "Modo analizador" + +#: src/skins/ui_manager.c:199 +msgid "Scope Mode" +msgstr "Modo de campo" + +#: src/skins/ui_manager.c:200 +msgid "Voiceprint Mode" +msgstr "Modo marca de voz" + +#: src/skins/ui_manager.c:201 +msgid "WindowShade VU Mode" +msgstr "Modo WindowShade VU" + +#: src/skins/ui_manager.c:202 +msgid "Analyzer Falloff" +msgstr "Caída del analizador" + +#: src/skins/ui_manager.c:203 +msgid "Peaks Falloff" +msgstr "Caída de los picos" + +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "Lista de reproducción" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "Nueva lista de reproducción" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 +msgid "Select Next Playlist" +msgstr "Lista de reproducción siguiente" + +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 +msgid "Select Previous Playlist" +msgstr "Lista de reproducción anterior" + +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "Eliminar la lista de reproducción" + +#: src/skins/ui_manager.c:222 +msgid "Import Playlist" +msgstr "Importar lista de reproducción" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "Carga un archivo de listas en la lista de reproducción seleccionada." + +#: src/skins/ui_manager.c:226 +msgid "Export Playlist" +msgstr "Exportar lista de reproducción" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "Guarda la lista de reproducción seleccionada." + +#: src/skins/ui_manager.c:229 +msgid "Refresh List" +msgstr "Actualizar lista" + +#: src/skins/ui_manager.c:230 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "" +"Actualiza los metadatos asociados con una entrada de la lista de " +"reproducción." + +#: src/skins/ui_manager.c:233 +msgid "Playlist Manager" +msgstr "Gestor de listas de reproducción" + +#: src/skins/ui_manager.c:234 +msgid "Queue Manager" +msgstr "Gestor de colas" + +#: src/skins/ui_manager.c:237 +msgid "View" +msgstr "Ver" + +#: src/skins/ui_manager.c:238 +msgid "Interface" +msgstr "Interfaz" + +#: src/skins/ui_manager.c:239 +msgid "Interface Preferences ..." +msgstr "Preferencias del interfaz ..." + +#: src/skins/ui_manager.c:243 +msgid "Add Internet Address..." +msgstr "Añadir dirección de Internet..." + +#: src/skins/ui_manager.c:244 +msgid "Adds a remote track to the playlist." +msgstr "Añade una pista remota a la lista de reproducción." + +#: src/skins/ui_manager.c:247 +msgid "Add Files..." +msgstr "Añadir archivos..." + +#: src/skins/ui_manager.c:248 +msgid "Adds files to the playlist." +msgstr "Añadir archivos a la lista de reproducción." + +#: src/skins/ui_manager.c:253 +msgid "Search and Select" +msgstr "Buscar y seleccionar" + +#: src/skins/ui_manager.c:254 +msgid "" +"Searches the playlist and selects playlist entries based on specific " +"criteria." +msgstr "" +"Busca en la lista de reproducción y selecciona las entradas que cumplen un " +"criterio específico." + +#: src/skins/ui_manager.c:257 +msgid "Invert Selection" +msgstr "Invertir la selección" + +#: src/skins/ui_manager.c:258 +msgid "Inverts the selected and unselected entries." +msgstr "Invierte las entradas seleccionadas y no seleccionadas." + +#: src/skins/ui_manager.c:261 +msgid "Select All" +msgstr "Seleccionar todo" + +#: src/skins/ui_manager.c:262 +msgid "Selects all of the playlist entries." +msgstr "Selecciona todos los elementos de la lista de reproducción." + +#: src/skins/ui_manager.c:265 +msgid "Select None" +msgstr "No seleccionar nada" + +#: src/skins/ui_manager.c:266 +msgid "Deselects all of the playlist entries." +msgstr "Quita la selección de todos los elementos de la lista." + +#: src/skins/ui_manager.c:271 +msgid "Remove All" +msgstr "Eliminar todo" + +#: src/skins/ui_manager.c:272 +msgid "Removes all entries from the playlist." +msgstr "Elimina todas las entradas de la lista de reproducción." + +#: src/skins/ui_manager.c:275 +msgid "Clear Queue" +msgstr "Limpiar la cola" + +#: src/skins/ui_manager.c:276 +msgid "Clears the queue associated with this playlist." +msgstr "Limpia la cola asociada con esta lista de reproducción." + +#: src/skins/ui_manager.c:279 +msgid "Remove Unavailable Files" +msgstr "Eliminar los archivos no disponibles" + +#: src/skins/ui_manager.c:280 +msgid "Removes unavailable files from the playlist." +msgstr "Elimina los archivos no disponibles de la lista de reproducción." + +#: src/skins/ui_manager.c:283 +msgid "Remove Duplicates" +msgstr "Eliminar duplicados" + +#: src/skins/ui_manager.c:285 src/skins/ui_manager.c:317 +#: src/skins/ui_manager.c:347 +msgid "By Title" +msgstr "Por título" + +#: src/skins/ui_manager.c:286 +msgid "Removes duplicate entries from the playlist by title." +msgstr "Elimina las entradas duplicadas de la lista por título." + +#: src/skins/ui_manager.c:289 src/skins/ui_manager.c:329 +#: src/skins/ui_manager.c:359 +msgid "By Filename" +msgstr "Por nombre de archivo" + +#: src/skins/ui_manager.c:290 +msgid "Removes duplicate entries from the playlist by filename." +msgstr "" +"Elimina las entradas duplicadas de la lista de reproducción por nombre de " +"archivo." + +#: src/skins/ui_manager.c:293 src/skins/ui_manager.c:333 +#: src/skins/ui_manager.c:363 +msgid "By Path + Filename" +msgstr "Por ruta y nombre de archivo" + +#: src/skins/ui_manager.c:294 +msgid "Removes duplicate entries from the playlist by their full path." +msgstr "" +"Elimina las entradas duplicadas de la lista de reproducción por su ruta " +"completa." + +#: src/skins/ui_manager.c:297 +msgid "Remove Unselected" +msgstr "Eliminar los no seleccionados" + +#: src/skins/ui_manager.c:298 +msgid "Remove unselected entries from the playlist." +msgstr "Elimina las entradas no seleccionadas de la lista de reproducción." + +#: src/skins/ui_manager.c:301 +msgid "Remove Selected" +msgstr "Eliminar los seleccionados" + +#: src/skins/ui_manager.c:302 +msgid "Remove selected entries from the playlist." +msgstr "Elimina las entradas seleccionadas de la lista de reproducción." + +#: src/skins/ui_manager.c:307 +msgid "Randomize List" +msgstr "Ordenar aleatoriamente" + +#: src/skins/ui_manager.c:308 +msgid "Randomizes the playlist." +msgstr "Ordena la lista de reproducción de forma aleatoria." + +#: src/skins/ui_manager.c:311 +msgid "Reverse List" +msgstr "Invertir la lista" + +#: src/skins/ui_manager.c:312 +msgid "Reverses the playlist." +msgstr "Invierte la lista de reproducción." + +#: src/skins/ui_manager.c:315 +msgid "Sort List" +msgstr "Ordenar lista" + +#: src/skins/ui_manager.c:318 src/skins/ui_manager.c:348 +msgid "Sorts the list by title." +msgstr "Ordena la lista por título." + +#: src/skins/ui_manager.c:321 src/skins/ui_manager.c:351 +msgid "By Album" +msgstr "Por álbum" + +#: src/skins/ui_manager.c:322 src/skins/ui_manager.c:352 +msgid "Sorts the list by album." +msgstr "Ordena la lista por álbum." + +#: src/skins/ui_manager.c:325 src/skins/ui_manager.c:355 +msgid "By Artist" +msgstr "Por artista" + +#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +msgid "Sorts the list by artist." +msgstr "Ordena la lista por artista." + +#: src/skins/ui_manager.c:330 src/skins/ui_manager.c:360 +msgid "Sorts the list by filename." +msgstr "Ordena la lista por nombre de archivo." + +#: src/skins/ui_manager.c:334 src/skins/ui_manager.c:364 +msgid "Sorts the list by full pathname." +msgstr "Ordena la lista por ruta de archivo completa." + +#: src/skins/ui_manager.c:337 src/skins/ui_manager.c:367 +msgid "By Date" +msgstr "Por fecha" + +#: src/skins/ui_manager.c:338 src/skins/ui_manager.c:368 +msgid "Sorts the list by modification time." +msgstr "Ordena la lista por fecha de modificación." + +#: src/skins/ui_manager.c:341 src/skins/ui_manager.c:371 +msgid "By Track Number" +msgstr "Por número de pista" + +#: src/skins/ui_manager.c:342 src/skins/ui_manager.c:372 +msgid "Sorts the list by track number." +msgstr "Ordena la lista por número de pista." + +#: src/skins/ui_manager.c:345 +msgid "Sort Selected" +msgstr "Ordenar los seleccionados" + +#: src/skins/ui_manager.c:381 +msgid "File" +msgstr "Archivo" + +#: src/skins/ui_manager.c:384 +msgid "Plugin Services" +msgstr "Servicios de complementos" + +#: src/skins/ui_manager.c:386 src/skins/ui_manager.c:389 +msgid "View Track Details" +msgstr "Ver detalles de la pista" + +#: src/skins/ui_manager.c:387 src/skins/ui_manager.c:390 +msgid "View track details" +msgstr "Ver detalles de la pista" + +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:393 +msgid "About Audacious" +msgstr "Acerca de Audacious" + +#: src/skins/ui_manager.c:395 +msgid "Play File" +msgstr "Reproducir archivo" + +#: src/skins/ui_manager.c:396 +msgid "Load and play a file" +msgstr "Carga y reproduce un archivo." + +#: src/skins/ui_manager.c:398 +msgid "Play Location" +msgstr "Reproducir localización" + +#: src/skins/ui_manager.c:399 +msgid "Play media from the selected location" +msgstr "Reproduce los medios desde la localización seleccionada." + +#: src/skins/ui_manager.c:401 +msgid "Plugin services" +msgstr "Servicios de complementos" + +#: src/skins/ui_manager.c:403 +msgid "Preferences" +msgstr "Preferencias" + +#: src/skins/ui_manager.c:404 +msgid "Open preferences window" +msgstr "Abrir la ventana de preferencias" + +#: src/skins/ui_manager.c:407 +msgid "Quit Audacious" +msgstr "Salir de Audacious" + +#: src/skins/ui_manager.c:409 src/skins/ui_manager.c:410 +msgid "Set A-B" +msgstr "Poner A-B" + +#: src/skins/ui_manager.c:412 src/skins/ui_manager.c:413 +msgid "Clear A-B" +msgstr "Quitar A-B" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Jump to Time" +msgstr "Saltar en el tiempo" + +#: src/skins/ui_manager.c:421 +msgid "Queue Toggle" +msgstr "Conmutar cola" + +#: src/skins/ui_manager.c:422 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "Activa/desactiva las entradas en la lista de reproducción." + +#: src/skins/ui_manager.c:425 +msgid "Copy" +msgstr "Copiar" + +#: src/skins/ui_manager.c:427 +msgid "Cut" +msgstr "Cortar" + +#: src/skins/ui_manager.c:429 +msgid "Paste" +msgstr "Pegar" + +#: src/skins/ui_manager.c:436 +msgid "Load" +msgstr "Cargar" + +#: src/skins/ui_manager.c:437 +msgid "Import" +msgstr "Importar" + +#: src/skins/ui_manager.c:438 +msgid "Save" +msgstr "Guardar" + +#: src/skins/ui_manager.c:439 +msgid "Delete" +msgstr "Borrar" + +#: src/skins/ui_manager.c:441 src/skins/ui_manager.c:462 +#: src/skins/ui_manager.c:477 +msgid "Preset" +msgstr "Predefinido" + +#: src/skins/ui_manager.c:444 src/skins/ui_manager.c:465 +#: src/skins/ui_manager.c:480 +msgid "Auto-load preset" +msgstr "Auto-cargar predefinido" + +#: src/skins/ui_manager.c:445 +msgid "Load auto-load preset" +msgstr "Cargar auto-cargar predefinido" + +#: src/skins/ui_manager.c:448 +msgid "Load default preset into equalizer" +msgstr "Cargar el predefinido predeterminado en el ecualizador" + +#: src/skins/ui_manager.c:450 +msgid "Zero" +msgstr "Cero" + +#: src/skins/ui_manager.c:451 +msgid "Set equalizer preset levels to zero" +msgstr "Pone los niveles predefinidos del ecualizador a cero" + +#: src/skins/ui_manager.c:453 +msgid "From file" +msgstr "Desde archivo" + +#: src/skins/ui_manager.c:454 +msgid "Load preset from file" +msgstr "Cargar el predefinido desde un archivo" + +#: src/skins/ui_manager.c:456 +msgid "From WinAMP EQF file" +msgstr "Desde archivo" + +#: src/skins/ui_manager.c:457 +msgid "Load preset from WinAMP EQF file" +msgstr "Carga el predefinido desde un archivo EQF de WinAMP" + +#: src/skins/ui_manager.c:459 +msgid "WinAMP Presets" +msgstr "Predefinidos de WinAMP" + +#: src/skins/ui_manager.c:460 +msgid "Import WinAMP presets" +msgstr "Importar los predefindos de WinAMP" + +#: src/skins/ui_manager.c:466 +msgid "Save auto-load preset" +msgstr "Guardar auto-cargar predefinido" + +#: src/skins/ui_manager.c:469 +msgid "Save default preset" +msgstr "Guardar predefinido predeterminado" + +#: src/skins/ui_manager.c:471 +msgid "To file" +msgstr "A un archivo" + +#: src/skins/ui_manager.c:472 +msgid "Save preset to file" +msgstr "Guarda el predefinido en un archivo" + +#: src/skins/ui_manager.c:474 +msgid "To WinAMP EQF file" +msgstr "A un archivo EQF de WinAMP" + +#: src/skins/ui_manager.c:475 +msgid "Save preset to WinAMP EQF file" +msgstr "Guarda el predefinido en un archivo EQF de WinAMP" + +#: src/skins/ui_manager.c:481 +msgid "Delete auto-load preset" +msgstr "Borrar auto-cargar predefinido" + +#: src/skins/ui_playlist.c:248 +msgid "Search entries in active playlist" +msgstr "Buscar entradas en la lista de reproducción activa" + +#: src/skins/ui_playlist.c:256 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular" +" expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Seleccione entradas en la lista de reproducción indicando uno o más campos. " +"Los campos utilizan sintaxis de expresiones regulares, sin distinguir " +"mayúsculas de minúsculas. Si no sabe como funcionan las expresiones " +"regulares, tan solo escriba la parte del literal que quiere buscar." + +#: src/skins/ui_playlist.c:264 +msgid "Title: " +msgstr "Título: " + +#: src/skins/ui_playlist.c:271 +msgid "Album: " +msgstr "Ãlbum: " + +#: src/skins/ui_playlist.c:278 +msgid "Artist: " +msgstr "Artista: " + +#: src/skins/ui_playlist.c:285 +msgid "Filename: " +msgstr "Nombre del archivo: " + +#: src/skins/ui_playlist.c:293 +msgid "Clear previous selection before searching" +msgstr "Limpiar la selección previa antes de buscar" + +#: src/skins/ui_playlist.c:296 +msgid "Automatically toggle queue for matching entries" +msgstr "Conmutar automáticamente la cola para las entradas coincidentes" + +#: src/skins/ui_playlist.c:299 +msgid "Create a new playlist with matching entries" +msgstr "Crear una nueva lista de reproducción con las entradas coincidentes" + +#: src/skins/ui_playlist.c:765 +msgid "Audacious Playlist Editor" +msgstr "Editor de listas de reproducción de Audacious" + +#: src/skins/ui_playlist.c:812 +#, c-format +msgid "%s (%d of %d)" +msgstr "%s (%d de %d)" + +#: src/skins/ui_skinselector.c:162 +msgid "Archived Winamp 2.x skin" +msgstr "Tema para Winamp 2.x archivado" + +#: src/skins/ui_skinselector.c:167 +msgid "Unarchived Winamp 2.x skin" +msgstr "Tema para Winamp 2.x no archivado" + +#: src/skins/util.c:774 +#, c-format +msgid "Could not create directory (%s): %s\n" +msgstr "No se pudo crear el directorio (%s): %s\n" + +#: src/sndfile/plugin.c:456 +msgid "About sndfile plugin" +msgstr "Acerca del complemento de archivos de sonido" + +#: src/sndstretch/sndstretch_xmms.c:155 +msgid "About SndStretch" +msgstr "Acerca del extensor de sonido" + +#: src/sndstretch/sndstretch_xmms.c:308 +msgid "Volume corr." +msgstr "Corr. volumen" + +#: src/sndstretch/sndstretch_xmms.c:309 +msgid "Short Overlap" +msgstr "Solapamiento corto" + +#: src/sndstretch/sndstretch_xmms.c:355 +msgid "Speed" +msgstr "Velocidad" + +#: src/sndstretch/sndstretch_xmms.c:356 +msgid "Pitch" +msgstr "Tono" + +#: src/sndstretch/sndstretch_xmms.c:357 +msgid "Scale" +msgstr "Escala" + +#: src/sndstretch/sndstretch_xmms.c:377 +msgid "SndStretch - Configuration" +msgstr "Extensor de sonido - Configuración" + +#: src/song_change/song_change.c:437 +msgid "Command to run when Audacious starts a new song." +msgstr "Comando a ejecutar cuando Audacious reproduce una canción nueva." + +#: src/song_change/song_change.c:439 src/song_change/song_change.c:445 +#: src/song_change/song_change.c:451 src/song_change/song_change.c:457 +msgid "Command:" +msgstr "Comando:" + +#: src/song_change/song_change.c:443 +msgid "Command to run toward the end of a song." +msgstr "Comando para ejecutar al final de una canción." + +#: src/song_change/song_change.c:449 +msgid "Command to run when Audacious reaches the end of the playlist." +msgstr "" +"Comando para ejecutar cuando Audacious llega al final de una lista de " +"reproducción." + +#: src/song_change/song_change.c:455 +msgid "" +"Command to run when title changes for a song (i.e. network streams titles)." +msgstr "" +"Comando para ejecutar cuando el título cambia para una canción (es decir, " +"títulos de flujos en red)" + +#: src/song_change/song_change.c:461 +msgid "" +"You can use the following format strings which\n" +"will be substituted before calling the command\n" +"(not all are useful for the end-of-playlist command).\n" +"\n" +"%F: Frequency (in hertz)\n" +"%c: Number of channels\n" +"%f: filename (full path)\n" +"%l: length (in milliseconds)\n" +"%n or %s: Song name\n" +"%r: Rate (in bits per second)\n" +"%t: Playlist position (%02d)\n" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" +msgstr "" +"Puede utilizar los siguientes formatos de cadena que\n" +"se reemplazarán antes de ejecutar el comando (no\n" +"todos son útiles para el final del comando de fin de lista).\n" +"\n" +"%F: Frecuencia (en hercios)\n" +"%c: Número de canales\n" +"%f: Nombre de archivo (ruta completa)\n" +"%l: Longitud (en milisegundos)\n" +"%n o %s: Nombre de la canción\n" +"%r: Tasa (en bits por segundo)\n" +"%t: Posición de la lista de reproducción (%02d)\n" +"%p: Reproduciendo actualmente (1 o 0)\n" +"%a: Artista\n" +"%b: Ãlbum\n" +"%T: Título de la pista" + +#: src/song_change/song_change.c:488 +msgid "" +"Parameters passed to the shell should be encapsulated in " +"quotes. Doing otherwise is a security risk." +msgstr "" +"Los parámetros enviados a la consola se deberían " +"encapsular con comillas. De otra forma existe un riesgo de seguridad." + +#: src/song_change/song_change.c:499 +msgid "Commands" +msgstr "Comandos" + +#: src/song_change/song_change.c:529 +msgid "Song Change" +msgstr "Cambio de canción" + +#: src/statusicon/statusicon.c:379 +msgid "About Status Icon Plugin" +msgstr "Acerca del complemento de icono de estado" + +#: src/statusicon/statusicon.c:380 +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager.\n" +msgstr "" +"Complemento de icono de estado\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"Este complemento proporciona un icono de estado, situado\n" +"en la bandeja de sistema del gestor de ventanas.\n" + +#: src/statusicon/statusicon.c:451 +msgid "Status Icon Plugin - Preferences" +msgstr "Complemento de icono de estado - Preferencias" + +#: src/statusicon/statusicon.c:461 +msgid "Right-Click Menu" +msgstr "Menú con click derecho" + +#: src/statusicon/statusicon.c:466 +msgid "Small playback menu #1" +msgstr "Menú pequeño de reproducción #1" + +#: src/statusicon/statusicon.c:469 +msgid "Small playback menu #2" +msgstr "Menú pequeño de reproducción #2" + +#: src/statusicon/statusicon.c:485 +msgid "Mouse Scroll Action" +msgstr "Acción de la rueda del ratón" + +#: src/statusicon/statusicon.c:489 +msgid "Change volume" +msgstr "Cambiar el volumen" + +#: src/statusicon/statusicon.c:491 +msgid "Change playing song" +msgstr "Cambiar la canción en reproducción" + +#: src/statusicon/statusicon.c:504 +msgid "Other settings" +msgstr "Otros ajustes" + +#: src/statusicon/statusicon.c:509 +msgid "Disable the popup window" +msgstr "Desactivar la ventana emergente" + +#: src/statusicon/statusicon.c:516 +msgid "Close to the notification area (system tray)" +msgstr "Cerrar al área de notificación (bandeja de sistema)" + +#: src/statusicon/statusicon.c:524 +msgid "Advance in playlist when scrolling upward" +msgstr "Avanzar en la lista de reproducción al desplazar arriba" + +#: src/stereo_plugin/stereo.c:45 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin 1999." +msgstr "" +"Complemento de estéreo extra\n" +"\n" +"Por Johan Levin 1999." + +#: src/stereo_plugin/stereo.c:64 +msgid "About Extra Stereo Plugin" +msgstr "Acerca del complemento de estéreo extra" + +#: src/stereo_plugin/stereo.c:95 +msgid "Configure Extra Stereo" +msgstr "Configurar estéreo extra" + +#: src/tonegen/tonegen.c:49 +msgid "About Tone Generator" +msgstr "Acerca del generador de tonos" + +#: src/tonegen/tonegen.c:51 +msgid "" +"Sinus tone generator by Haavard Kvaalen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" +msgstr "" +"Generador de tonos por Haavard Kvaalen \n" +"Modificado por Daniel J. Peng \n" +"\n" +"Para utilizarlo, añada una URL: tone://frequencia1;frequencia2;frequencia3;...\n" +"p. ej. tone://2000;2005 para reproducir un tono de 2000Hz y otro de 2005Hz" + +#: src/tonegen/tonegen.c:101 +#, c-format +msgid "%s %.1f Hz" +msgstr "%s %.1f Hz" + +#: src/tonegen/tonegen.c:101 +msgid "Tone Generator: " +msgstr "Generador de tonos: " + +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" +msgstr "Acerca del complemento de archivos de E/S" + +#: src/vorbis/vorbis.c:573 +msgid "About Ogg Vorbis Audio Plugin" +msgstr "Acerca del complemento de sonido Ogg Vorbis" + +#: src/vorbis/vorbis.c:578 +msgid "" +"Ogg Vorbis Plugin by the Xiph.org Foundation\n" +"\n" +"Original code by\n" +"Tony Arcieri \n" +"Contributions from\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visit the Xiph.org Foundation at http://www.xiph.org/\n" +msgstr "" +"Complemento Ogg Vorbis por la fundación Xiph.org\n" +"\n" +"Código original de\n" +"Tony Arcieri \n" +"Contribuciones de\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visite la fundación Xiph.org en http://www.xiph.org/\n" + +#: src/vtx/about.c:14 +msgid "About Vortex Player" +msgstr "Acerca del reproductor Vortex" + +#: src/vtx/about.c:15 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"\n" +"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" +"and other AY/YM music sites.\n" +"\n" +"Audacious implementation by Pavel Vymetalek " +msgstr "" +"Reproductor de archivos con formato Vortex por Sashnov Alexander \n" +"Basado en el código original in_vtx.dll de Roman Sherbakov \n" +"\n" +"Se puede encontrar música en formato vtx en http://vtx.microfor.ru/music.htm\n" +"y otros portales de música AY/YM.\n" +"\n" +"Implementación de Audacious por Pavel Vymetalek " + +#: src/wavpack/wavpack.c:353 +#, c-format +msgid "Wavpack Decoder Plugin %s" +msgstr "Complemento decodificador Wavpack %s" + +#: src/wavpack/wavpack.c:354 +msgid "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan\n" +"Visit the Wavpack site at http://www.wavpack.com/\n" +msgstr "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Parte del código del complemento es de Miles Egan\n" +"Visite el portal de Wavpack en http://www.wavpack.com/\n" + + diff -Nru audacious-plugins-2.4.4/po/es_MX.po audacious-plugins-3.2/po/es_MX.po --- audacious-plugins-2.4.4/po/es_MX.po 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/po/es_MX.po 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,3673 @@ +# Spanish (Mexican) translation for Audacious Plugins +# Copyright (C) Audacious translators +# This file is distributed under the same license as the Audacious Plugins package. +# +# Translators: +# Jorge A. García Sosa , 2012. +msgid "" +msgstr "" +"Project-Id-Version: Audacious Plugins\n" +"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2012-01-11 09:01-0500\n" +"PO-Revision-Date: 2012-01-12 01:23+0000\n" +"Last-Translator: Jorge A. García Sosa \n" +"Language-Team: Spanish (Mexican)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_MX\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: src/aac/libmp4.c:256 +#, c-format +msgid "" +"Using libfaad2-%s for decoding.\n" +"FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com\n" +"Copyright (c) 2005-2006 Audacious team" +msgstr "" +"Usando libfaad2-%s para decodificar.\n" +"FAAD2 AAC/HE-AAC/HE-AACv2/DRM descoficador (c) Nero AG, www.nero.com\n" +"Copyright (c) 2005-2006 Audacious team" + +#: src/aac/libmp4.c:261 +msgid "About MP4 AAC decoder plugin" +msgstr "Acerca del plugin descodificador MP4 AAC" + +#: src/alarm/alarm.c:312 +msgid "About Alarm" +msgstr "Acerca de Alarm" + +#: src/alarm/alarm.c:313 +msgid "" +"A plugin that can be used to start playing at a certain time.\n" +"\n" +"Originally written by Adam Feakin and Daniel Stodden." +msgstr "" +"Un plugin que puede ser usado para comenzar a reproducir a una hora dada.\n" +"Originalmente escrito por Adam Feakin y Daniel Stodden." + +#: src/alarm/interface.c:33 +msgid "Alarm" +msgstr "Alarma" + +#: src/alarm/interface.c:40 +msgid "This is your wakeup call." +msgstr "Esta es tu llamada despertador." + +#: src/alarm/interface.c:55 src/alarm/interface.c:1213 +msgid "OK" +msgstr "OK" + +#: src/alarm/interface.c:214 +msgid "Alarm Settings" +msgstr "Ajustes de Alarma" + +#: src/alarm/interface.c:229 src/alarm/interface.c:401 +#: src/alarm/interface.c:773 +msgid "Time" +msgstr "Tiempo" + +#: src/alarm/interface.c:270 +msgid "hours" +msgstr "horas" + +#: src/alarm/interface.c:331 +msgid "h" +msgstr "h" + +#: src/alarm/interface.c:361 +msgid "minutes" +msgstr "minutos" + +#: src/alarm/interface.c:379 +msgid "Quiet after:" +msgstr "Silencio después de:" + +#: src/alarm/interface.c:389 +msgid "Alarm at (default):" +msgstr "Alarma a las (predeterminado):" + +#: src/alarm/interface.c:409 +msgid "Choose the days for the alarm to come on" +msgstr "Escoge los días para suene la alarma" + +#: src/alarm/interface.c:437 src/alarm/interface.c:485 +#: src/alarm/interface.c:533 src/alarm/interface.c:581 +#: src/alarm/interface.c:629 src/alarm/interface.c:677 +#: src/alarm/interface.c:725 src/bs2b/plugin.c:198 src/OSS/configure.c:153 +#: src/skins/ui_equalizer.c:1104 src/skins/ui_manager.c:447 +#: src/skins/ui_manager.c:468 +msgid "Default" +msgstr "Predeterminado" + +#: src/alarm/interface.c:763 +msgid "Day" +msgstr "Día" + +#: src/alarm/interface.c:783 +msgid "Tuesday" +msgstr "Martes" + +#: src/alarm/interface.c:794 +msgid "Wednesday" +msgstr "Miércoles" + +#: src/alarm/interface.c:805 +msgid "Thursday" +msgstr "Jueves" + +#: src/alarm/interface.c:816 +msgid "Friday" +msgstr "Viernes" + +#: src/alarm/interface.c:827 +msgid "Saturday" +msgstr "Sábado" + +#: src/alarm/interface.c:838 +msgid "Sunday" +msgstr "Domingo" + +#: src/alarm/interface.c:848 +msgid "Monday" +msgstr "Lunes" + +#: src/alarm/interface.c:859 +msgid "Days" +msgstr "Días" + +#: src/alarm/interface.c:875 +msgid "Fading" +msgstr "Disminución" + +#: src/alarm/interface.c:912 +msgid "seconds" +msgstr "segundos" + +#: src/alarm/interface.c:920 src/alarm/interface.c:1035 +msgid "Volume" +msgstr "Volumen" + +#: src/alarm/interface.c:946 +msgid "Current" +msgstr "Actual" + +#: src/alarm/interface.c:954 +msgid "Start at" +msgstr "Comenzar a" + +#: src/alarm/interface.c:982 src/alarm/interface.c:1026 +msgid "%" +msgstr "%" + +#: src/alarm/interface.c:998 +msgid "Final" +msgstr "Finalizar a" + +#: src/alarm/interface.c:1051 +msgid "Additional Command" +msgstr "Comando Adicional" + +#: src/alarm/interface.c:1077 +msgid "enable" +msgstr "Habilitar" + +#: src/alarm/interface.c:1085 +msgid "Playlist (optional)" +msgstr "Lista de Reproducción (opcional)" + +#: src/alarm/interface.c:1111 +msgid "Browse..." +msgstr "Examinar" + +#: src/alarm/interface.c:1119 src/alarm/interface.c:1283 +msgid "Reminder" +msgstr "Recodatorio" + +#: src/alarm/interface.c:1136 +msgid "Use reminder" +msgstr "Usar recordatorio" + +#: src/alarm/interface.c:1152 src/sndstretch/sndstretch_xmms.c:358 +msgid "Options" +msgstr "Opciones" + +#: src/alarm/interface.c:1160 +msgid "What do these options mean?" +msgstr "¿Qué significan estás opciones?" + +#: src/alarm/interface.c:1188 +msgid "" +"\n" +"Time\n" +" Alarm at: \n" +" The time for the alarm to come on.\n" +"\n" +" Quiet After: \n" +" Stop alarm after this amount of time.\n" +" (if the wakeup dialog is not closed)\n" +"\n" +"\n" +"Days\n" +" Day:\n" +" Select the days for the alarm to activate.\n" +"\n" +" Time:\n" +" Choose the time for the alarm on each day,\n" +" or select the toggle button to use the default\n" +" time.\n" +"\n" +"\n" +"Volume\n" +" Fading: \n" +" Fade the volume up to the chosen volume \n" +" for this amount of time.\n" +"\n" +" Start at: \n" +" Start fading from this volume.\n" +"\n" +" Final: \n" +" The volume to stop fading at. If the fading\n" +" time is 0 then set volume to this and start\n" +" playing.\n" +"\n" +"\n" +"Options:\n" +" Additional Command:\n" +" Run this command at the alarm time.\n" +"\n" +" Playlist: \n" +" Load this playlist for playing songs from \n" +" (must have .m3u extension). If no playlist\n" +" is given then the songs which are currently\n" +" in the list will be used.\n" +" The URL of an mp3/ogg stream can also be\n" +" entered here, but loading of playlists from\n" +" URLs is not currently supported by xmms.\n" +"\n" +" Reminder:\n" +" Display a reminder when the alarm goes off,\n" +" type the reminder in the box and turn on the\n" +" toggle button if you want it to be shown.\n" +msgstr "" +"\n" +"Tiempo\n" +" Alarma a las: \n" +" La hora a la que sonará la alarma.\n" +"\n" +" Detener Después de: \n" +" Detener la alarma después de esta cantidad de tiempo.\n" +" (si el diálogo deif the wakeup dialog is not closed)\n" +"\n" +"\n" +"Días\n" +" Día:\n" +" Selecciona los días que la alarma se activará.\n" +"\n" +" Hora:\n" +" Escoge la hora para la alarma de cada día,\n" +" o selecciona Predeterminada para utilizar la hora\n" +" predeterminada.\n" +"\n" +"\n" +"Volumen\n" +" Disminución: \n" +" Disminuye el volumen al volumen seleccionado \n" +" para esta cantidad de tiempo.\n" +"\n" +" Comenzar a: \n" +" Comienza la disminución a este volumen.\n" +"\n" +" Finalizar: \n" +" El volumen a la que se detendrá la disminución. Si la hora de\n" +" disminución es 0 entonces el volumen se ajustara a esto y comenzará \n" +" reproducir.\n" +"\n" +"\n" +"Opciones:\n" +" Comando Adicional:\n" +" Ejecuta este comando a la hora de la alarma.\n" +"\n" +" Lista de Reproducción: \n" +" Carga esta lista de reproducción para reproducir sus pistas \n" +" (debe tener la extensión .m3u). Si no es dada una\n" +" lista de repoducción entonces serán reproducidas las de la actual\n" +" lista de reproducción.\n" +" También puede ser introducido aquí el URL de un stream de mp3/ogg,\n" +" pero cargar listas de repoducción desde URLs\n" +" no es soportado actualmente por xmms.\n" +"\n" +" Recordatorio:\n" +" Muestra un recordatorio cuando la alarma se apague,\n" +" escribe el recordatorio en la caja y selecciona la type the reminder in the box and turn on the\n" +" opción Habilitar Recordatorio si quieres que sea mostrado.\n" + +#: src/alarm/interface.c:1190 src/skins/ui_manager.c:382 +msgid "Help" +msgstr "Ayuda" + +#: src/alarm/interface.c:1222 src/cdaudio-ng/configure.c:249 +#: src/crystalizer/crystalizer.c:130 src/echo_plugin/gui.c:125 +#: src/jack/configure.c:148 src/null/null.c:108 src/stereo_plugin/stereo.c:125 +msgid "Cancel" +msgstr "Cancelar" + +#: src/alarm/interface.c:1290 +msgid "Your reminder for today is.." +msgstr "Tu recordatorio para hoy es.." + +#: src/alarm/interface.c:1315 +msgid "Thankyou" +msgstr "Gracias" + +#: src/alsa/config.c:210 +msgid "Default PCM device" +msgstr "Dispositivo PCM determinado" + +#: src/alsa/config.c:235 +msgid "Default mixer device" +msgstr "Dispositivo mezclador predeterminado" + +#: src/alsa/config.c:438 +msgid "ALSA Output Plugin Preferences" +msgstr "Preferencias del plugin de salida ALSA" + +#: src/alsa/config.c:445 +msgid "PCM device:" +msgstr "Dispositivo PCM" + +#: src/alsa/config.c:447 src/OSS/configure.c:237 +msgid "Mixer device:" +msgstr "Dispositivo mezclador" + +#: src/alsa/config.c:449 +msgid "Mixer element:" +msgstr "Elemento mezclador:" + +#: src/alsa/config.c:452 +msgid "Work around drain hangup" +msgstr "Evitar colapsos por falta de recursos" + +#: src/alsa/plugin.c:59 +msgid "About ALSA Output Plugin" +msgstr "Acerca del plugin de salida ALSA" + +#: src/alsa/plugin.c:81 +msgid "ALSA error" +msgstr "Error ALSA" + +#: src/amidi-plug/amidi-plug.c:326 +msgid "" +"You have not selected any sequencer ports for MIDI playback. You can do so " +"in the MIDI plugin preferences." +msgstr "" +"No has seleccionado ningún puerto secuenciador para reproducción MIDI. " +"Puedes hacerlo en las preferencias del plugin MIDI." + +#: src/amidi-plug/backend-alsa/b-alsa.c:35 +msgid "ALSA Backend " +msgstr "Motor ALSA" + +#: src/amidi-plug/backend-alsa/b-alsa.c:37 +msgid "" +"This backend sends MIDI events to a group of user-chosen ALSA sequencer ports. The ALSA sequencer interface is very versatile, it can provide ports for audio cards hardware synthesizers (i.e. emu10k1) but also for software synths, external devices, etc.\n" +"This backend does not produce audio, MIDI events are handled directly from devices/programs behind the ALSA ports; in example, MIDI events sent to the hardware synth will be directly played.\n" +"Backend written by Giacomo Lozito." +msgstr "" +"Este motor envía eventos MIDI a un grupo de puertos secuenciadores ALSA escogidos por el usuario. La interfaz del secuenciador ALSA es muy versátil, puede proveer puertos para sintetizadores por hardware de tarjetas de audio (por ejemplo, emu10k1) pero tambien para sintetizadores por software, dispositivos externos, etc.\n" +"Este motor no produce audio, los eventos MIDI son manejados durectamente desde los dispositivos o programas detrás de los puertos ALSA; por ejemplo, los eventos MIDI enviados al sintetizador por hardware serán reproducidos directamente.\n" +"Motor escrito por Giacomo Lozito." + +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 +msgid "FluidSynth Backend " +msgstr "Motor FluidSynth " + +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 +msgid "" +"This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" +"Backend written by Giacomo Lozito." +msgstr "" +"Este motor produce audio enviando los eventos MIDI a Fluidsynth, un sintetizador de software en tiempo real basado en la especificación SoundFont2 (www.fluidsynth.org).\n" +"El audio producido puede ser manipulado a través de los plugins de efectos del reproductor y es procesado por el plugin de salida seleccionado.\n" +"Motor escrito por Giacomo Lozito." + +#: src/amidi-plug/i_configure-alsa.c:228 +msgid "ALSA BACKEND CONFIGURATION" +msgstr "CONFIGURACIÓN DEL MOTOR ALSA" + +#: src/amidi-plug/i_configure-alsa.c:331 +msgid "Port" +msgstr "Puerto" + +#: src/amidi-plug/i_configure-alsa.c:333 +msgid "Client name" +msgstr "Nombre del Cliente" + +#: src/amidi-plug/i_configure-alsa.c:335 +msgid "Port name" +msgstr "Nombre del Puerto" + +#: src/amidi-plug/i_configure-alsa.c:346 +msgid "ALSA output ports" +msgstr "Puertos de salida ALSA" + +#: src/amidi-plug/i_configure-alsa.c:399 +msgid "Soundcard: " +msgstr "Tarjeta de sonido:" + +#: src/amidi-plug/i_configure-alsa.c:401 +msgid "Mixer control: " +msgstr "Control de Mezcla" + +#: src/amidi-plug/i_configure-alsa.c:413 +msgid "Mixer settings" +msgstr "Ajustes del mezclador" + +#: src/amidi-plug/i_configure-alsa.c:429 +msgid "ALSA Backend not loaded or not available" +msgstr "El Motor ALSA no está cargado o no está disponible" + +#: src/amidi-plug/i_configure-alsa.c:448 +msgid "" +"ALSA\n" +"backend" +msgstr "" +"Motor\n" +"ALSA" + +#: src/amidi-plug/i_configure-ap.c:59 +msgid "AMIDI-Plug - backend information" +msgstr "AMIDI-Plug - información del motor" + +#: src/amidi-plug/i_configure-ap.c:196 +msgid "AMIDI-PLUG PREFERENCES" +msgstr "PREFERENCIAS AMIDI-PLUG" + +#: src/amidi-plug/i_configure-ap.c:223 +msgid "Backend selection" +msgstr "Selección del motor" + +#: src/amidi-plug/i_configure-ap.c:227 +msgid "Available backends" +msgstr "Motores disponibles" + +#: src/amidi-plug/i_configure-ap.c:257 +msgid "Playback settings" +msgstr "Ajustes de reproducción" + +#: src/amidi-plug/i_configure-ap.c:262 +msgid "Transpose: " +msgstr "Transponer: " + +#: src/amidi-plug/i_configure-ap.c:271 +msgid "Drum shift: " +msgstr "Cambio de bateria: " + +#: src/amidi-plug/i_configure-ap.c:289 +msgid "Advanced settings" +msgstr "Ajustes avanzados" + +#: src/amidi-plug/i_configure-ap.c:293 +msgid "pre-calculate length of MIDI files in playlist" +msgstr "pre-calcular duración de archivos MIDI en la lista de reproducción" + +#: src/amidi-plug/i_configure-ap.c:298 +msgid "extract comments from MIDI file (if available)" +msgstr "extraer comentarios del archivo MIDI (si están disponibles)" + +#: src/amidi-plug/i_configure-ap.c:303 +msgid "extract lyrics from MIDI file (if available)" +msgstr "extraer letras de canciones del archivo MIDI (si están disponibles)" + +#: src/amidi-plug/i_configure-ap.c:333 +msgid "" +"AMIDI\n" +"Plug" +msgstr "" +"AMIDI\n" +"Plug" + +#: src/amidi-plug/i_configure.c:76 +msgid "AMIDI-Plug - select file" +msgstr "AMIDI-Plug - seleccionar archivo" + +#: src/amidi-plug/i_configure.c:129 +msgid "AMIDI-Plug - configuration" +msgstr "AMIDI-Plug - configuración" + +#: src/amidi-plug/i_configure-fluidsynth.c:55 +msgid "AMIDI-Plug - select SoundFont file" +msgstr "AMIDI-Plug - seleccionar archivo SoundFont" + +#: src/amidi-plug/i_configure-fluidsynth.c:270 +msgid "FLUIDSYNTH BACKEND CONFIGURATION" +msgstr "CONFIGURACIÓN DEL MOTOR FLUIDSYNTH " + +#: src/amidi-plug/i_configure-fluidsynth.c:313 +msgid "SoundFont settings" +msgstr "Ajustes de SoundFont" + +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Nombre del archivo" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 +msgid "Size (bytes)" +msgstr "Tamaño (bytes)" + +#: src/amidi-plug/i_configure-fluidsynth.c:398 +msgid "Load SF on player start" +msgstr "Cargar SF al iniciar el reproductor" + +#: src/amidi-plug/i_configure-fluidsynth.c:402 +msgid "Load SF on first midifile play" +msgstr "Cargar SF al reproducir el primer archivo MIDI" + +#: src/amidi-plug/i_configure-fluidsynth.c:417 +msgid "Synthesizer settings" +msgstr "Ajustes del sintetizador" + +#: src/amidi-plug/i_configure-fluidsynth.c:426 +msgid "gain" +msgstr "ganancia" + +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 +msgid "use default" +msgstr "Utilizar predeterminado" + +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 +msgid "value:" +msgstr "valor:" + +#: src/amidi-plug/i_configure-fluidsynth.c:454 +msgid "poliphony" +msgstr "polifonía" + +#: src/amidi-plug/i_configure-fluidsynth.c:482 +msgid "reverb" +msgstr "reverberación" + +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 +msgid "yes" +msgstr "sí" + +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 +msgid "no" +msgstr "no" + +#: src/amidi-plug/i_configure-fluidsynth.c:513 +msgid "chorus" +msgstr "coro" + +#: src/amidi-plug/i_configure-fluidsynth.c:544 +msgid "sample rate" +msgstr "frecuencia de muestreo" + +#: src/amidi-plug/i_configure-fluidsynth.c:550 +msgid "22050 Hz " +msgstr "22050 hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:553 +msgid "44100 Hz " +msgstr "44100 Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:556 +msgid "96000 Hz " +msgstr "96000 Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:559 +msgid "custom " +msgstr "personalizada" + +#: src/amidi-plug/i_configure-fluidsynth.c:568 +msgid "Hz " +msgstr "Hz" + +#: src/amidi-plug/i_configure-fluidsynth.c:621 +msgid "FluidSynth Backend not loaded or not available" +msgstr "Motor FluidSynth no cargado o no está disponible" + +#: src/amidi-plug/i_configure-fluidsynth.c:640 +msgid "" +"FluidSynth\n" +"backend" +msgstr "" +"Motor\n" +"FluidSynth" + +#: src/amidi-plug/i_configure-timidity.c:39 +msgid "TIMIDITY BACKEND CONFIGURATION" +msgstr "CONFIGURACIÓN DEL MOTOR TIMIDITY" + +#: src/amidi-plug/i_configure-timidity.c:64 +msgid "TiMidity Backend not loaded or not available" +msgstr "Motor TiMidity no cargado o no está disponible" + +#: src/amidi-plug/i_configure-timidity.c:83 +msgid "" +"TiMidity\n" +"backend" +msgstr "" +"Motor\n" +"TiMidity" + +#: src/amidi-plug/i_fileinfo.c:169 +msgid "Name:" +msgstr "Nombre:" + +#: src/amidi-plug/i_fileinfo.c:193 +msgid " MIDI Info " +msgstr " Información MIDI " + +#: src/amidi-plug/i_fileinfo.c:205 +msgid "Format:" +msgstr "Formato:" + +#: src/amidi-plug/i_fileinfo.c:208 +msgid "Length (msec):" +msgstr "Duración (ms):" + +#: src/amidi-plug/i_fileinfo.c:211 +msgid "Num of Tracks:" +msgstr "Núm de Pistas" + +#: src/amidi-plug/i_fileinfo.c:216 +msgid "variable" +msgstr "variable" + +#: src/amidi-plug/i_fileinfo.c:217 +msgid "BPM:" +msgstr "BPM" + +#: src/amidi-plug/i_fileinfo.c:223 +msgid "BPM (wavg):" +msgstr "BPM (wavg)" + +#: src/amidi-plug/i_fileinfo.c:226 +msgid "Time Div:" +msgstr "Div tiempo" + +#: src/amidi-plug/i_fileinfo.c:237 +msgid " MIDI Comments and Lyrics " +msgstr " Comentarios y Letras de canción MIDI " + +#: src/amidi-plug/i_fileinfo.c:288 +msgid "* no comments available in this MIDI file *" +msgstr "* no hay comentarios disponibles en este archivo MIDI *" + +#: src/amidi-plug/i_fileinfo.c:301 +msgid "* no lyrics available in this MIDI file *" +msgstr "* no hay letras de canción disponibles en este archivo MIDI *" + +#: src/amidi-plug/i_fileinfo.c:349 +msgid " (invalid UTF-8)" +msgstr " (UTF-8 inválido)" + +#: src/amidi-plug/i_utils.c:43 +msgid "AMIDI-Plug - about" +msgstr "AMIDI-Plug - acerca de" + +#: src/amidi-plug/i_utils.c:68 +msgid "" +"\n" +"AMIDI-Plug " +msgstr "" +"\n" +"AMIDI-Plug " + +#: src/amidi-plug/i_utils.c:69 +msgid "" +"\n" +"modular MIDI music player\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"\n" +"special thanks to...\n" +"\n" +"Clemens Ladisch and Jaroslav Kysela\n" +"for their cool programs aplaymidi and amixer; those\n" +"were really useful, along with alsa-lib docs, in order\n" +"to learn more about the ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"for the nice midi keyboard logo\n" +"\n" +"Tony Vroon\n" +"for the good help with alpha testing\n" +"\n" +msgstr "" +"\n" +"reproductor musical modular MIDI\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"escrito por Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"\n" +"agradecimientos especiales a...\n" +"\n" +"Clemens Ladisch y Jaroslav Kysela\n" +"por sus chingones programas aplaymidi y amixer; estos\n" +"fueron realmente útiles, junto con la documentación alsa-lib docs, para\n" +"aprender más sobre la API ALSA\n" +"\n" +"Alfredo Spadafina\n" +"por el lindo logotipo de teclado midi\n" +"\n" +"Tony Vroon\n" +"por la buena ayuda con las pruebas alfa\n" +"\n" + +#: src/aosd/aosd_style.c:75 +msgid "Rectangle" +msgstr "Rectángulo" + +#: src/aosd/aosd_style.c:79 +msgid "Rounded Rectangle" +msgstr "Rectágulo Redondeado" + +#: src/aosd/aosd_style.c:83 +msgid "Concave Rectangle" +msgstr "Rectángulo Cóncavo" + +#: src/aosd/aosd_style.c:87 +msgid "None" +msgstr "Ninguno" + +#: src/aosd/aosd_trigger.c:78 +msgid "Playback Start" +msgstr "Iniciar Reproducción" + +#: src/aosd/aosd_trigger.c:79 +msgid "Triggers OSD when a playlist entry is played." +msgstr "" +"Muestra el Notificación en Pantalla cuando se reproduce un elemento de la " +"lista de reproducción" + +#: src/aosd/aosd_trigger.c:83 +msgid "Title Change" +msgstr "Cambio de Título" + +#: src/aosd/aosd_trigger.c:84 +msgid "" +"Triggers OSD when, during playback, the song title changes but the filename " +"is the same. This is mostly useful to display title changes in internet " +"streams." +msgstr "" +"Muestra el Notificación en Pantalla cuando, en la reproducción, el título de" +" la pista cambia pero el nombre del archivo es el mismo. Esto es muy útil " +"para mostrar cambios de título en streams de internet." + +#: src/aosd/aosd_trigger.c:90 +msgid "Volume Change" +msgstr "Cambiar Volumen" + +#: src/aosd/aosd_trigger.c:91 +msgid "Triggers OSD when volume is changed." +msgstr "Muestra Notificación en Pantalla cuando cambia el volumen." + +#: src/aosd/aosd_trigger.c:95 +msgid "Pause On" +msgstr "Pausa Encendida" + +#: src/aosd/aosd_trigger.c:96 +msgid "Triggers OSD when playback is paused." +msgstr "Muestra Notificación en Pantalla cuando la reproducción está pausada." + +#: src/aosd/aosd_trigger.c:100 +msgid "Pause Off" +msgstr "Pausa Apagada" + +#: src/aosd/aosd_trigger.c:101 +msgid "Triggers OSD when playback is unpaused." +msgstr "Muestra Notificación en Pantalla cuando la pausa termina." + +#: src/aosd/aosd_ui.c:179 +msgid "Placement" +msgstr "Colocación" + +#: src/aosd/aosd_ui.c:218 +msgid "Relative X offset:" +msgstr "Compensación relativa en X:" + +#: src/aosd/aosd_ui.c:227 +msgid "Relative Y offset:" +msgstr "Compensación relativa en Y:" + +#: src/aosd/aosd_ui.c:236 +msgid "Max OSD width:" +msgstr "Ancho máximo de OSD" + +#: src/aosd/aosd_ui.c:249 +msgid "Multi-Monitor options" +msgstr "Opciones de varios monitores" + +#: src/aosd/aosd_ui.c:253 +msgid "Display OSD using:" +msgstr "Mostrar OSD utilizando:" + +#: src/aosd/aosd_ui.c:264 +msgid "all monitors" +msgstr "Todos los monitores" + +#: src/aosd/aosd_ui.c:267 +#, c-format +msgid "monitor %i" +msgstr "monitor %i" + +#: src/aosd/aosd_ui.c:322 +msgid "Timing (ms)" +msgstr "Tiempo (ms)" + +#: src/aosd/aosd_ui.c:327 +msgid "Display:" +msgstr "Mostrar:" + +#: src/aosd/aosd_ui.c:332 +msgid "Fade in:" +msgstr "Desvanecimiento al aparecer" + +#: src/aosd/aosd_ui.c:337 +msgid "Fade out:" +msgstr "Desvanecimiento al desaparecer" + +#: src/aosd/aosd_ui.c:418 +msgid "Fonts" +msgstr "Fuentes" + +#: src/aosd/aosd_ui.c:426 +#, c-format +msgid "Font %i:" +msgstr "Fuente %i:" + +#: src/aosd/aosd_ui.c:443 +msgid "Shadow" +msgstr "Sombra" + +#: src/aosd/aosd_ui.c:478 +msgid "Internationalization" +msgstr "Internacionalización" + +#: src/aosd/aosd_ui.c:484 +msgid "Disable UTF-8 conversion of text (in aosd)" +msgstr "Deshabilitar conversión de texto UTF-8 (en Avisos en Pantalla)" + +#: src/aosd/aosd_ui.c:502 +msgid "Select Skin File" +msgstr "Seleccionar archivo de Skin" + +#: src/aosd/aosd_ui.c:613 +msgid "Render Style" +msgstr "Estilo de Renderización" + +#: src/aosd/aosd_ui.c:629 +msgid "Colors" +msgstr "Colores" + +#: src/aosd/aosd_ui.c:642 +#, c-format +msgid "Color %i:" +msgstr "Color %i" + +#: src/aosd/aosd_ui.c:662 +msgid "Custom Skin" +msgstr "Skin personalizada" + +#: src/aosd/aosd_ui.c:668 +msgid "Skin file:" +msgstr "Archivo de Skin:" + +#: src/aosd/aosd_ui.c:671 +msgid "Browse" +msgstr "Examinar" + +#: src/aosd/aosd_ui.c:773 +msgid "Enable trigger" +msgstr "Activar Aviso" + +#: src/aosd/aosd_ui.c:800 +msgid "Event" +msgstr "Evento" + +#: src/aosd/aosd_ui.c:828 +msgid "Composite manager detected" +msgstr "Administrador de composición detectado" + +#: src/aosd/aosd_ui.c:835 +msgid "" +"Composite manager not detected;\n" +"unless you know that you have one running, please activate a composite manager otherwise the OSD won't work properly" +msgstr "" +"Administrador de composición no detectado;\n" +"a menos que sepas que tienes uno ejecutándose, por favor activa un administrador de composición, de otra forma las Notificaciones en Pantalla no funcionarán apropiadamente" + +#: src/aosd/aosd_ui.c:843 +msgid "Composite manager not required for fake transparency" +msgstr "Administrador de composición no requerido para transparencia falsa" + +#: src/aosd/aosd_ui.c:881 +msgid "Transparency" +msgstr "Transparencia" + +#: src/aosd/aosd_ui.c:887 +msgid "Fake transparency" +msgstr "Transparencia falsa" + +#: src/aosd/aosd_ui.c:889 +msgid "Real transparency (requires X Composite Ext.)" +msgstr "Transparencia real (requiere X Composite Ext.)" + +#: src/aosd/aosd_ui.c:931 +msgid "Composite extension not loaded" +msgstr "Extensión de composición no cargada" + +#: src/aosd/aosd_ui.c:939 +msgid "Composite extension not available" +msgstr "Extensión de composición no disponible" + +#: src/aosd/aosd_ui.c:958 +#, c-format +msgid "Audacious OSD" +msgstr "Audacious OSD" + +#: src/aosd/aosd_ui.c:1039 +msgid "Audacious OSD - configuration" +msgstr "Audacious OSD - configuración" + +#: src/aosd/aosd_ui.c:1060 +msgid "Test" +msgstr "Probar" + +#: src/aosd/aosd_ui.c:1075 +msgid "Position" +msgstr "Posición" + +#: src/aosd/aosd_ui.c:1080 +msgid "Animation" +msgstr "Animación" + +#: src/aosd/aosd_ui.c:1085 +msgid "Text" +msgstr "Texto" + +#: src/aosd/aosd_ui.c:1090 +msgid "Decoration" +msgstr "Decoración" + +#: src/aosd/aosd_ui.c:1095 +msgid "Trigger" +msgstr "Avisos" + +#: src/aosd/aosd_ui.c:1100 src/cdaudio-ng/configure.c:171 +msgid "Misc" +msgstr "Misc." + +#: src/aosd/aosd_ui.c:1137 +msgid "Audacious OSD - about" +msgstr "Audacious OSD - acerca" + +#: src/aosd/aosd_ui.c:1167 +msgid "" +"\n" +"Audacious OSD " +msgstr "" +"\n" +"Audacious OSD " + +#: src/aosd/aosd_ui.c:1168 +msgid "" +"\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"On-Screen-Display is based on Ghosd library\n" +"written by Evan Martin\n" +"http://neugierig.org/software/ghosd/\n" +"\n" +msgstr "" +"\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"excrito por Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"On-Screen-Display (Notificaciones en Pantalla) está basado en la librería Ghosd\n" +"escrita por Evan Martin\n" +"http://neugierig.org/software/ghosd/\n" +"\n" + +#: src/blur_scope/config.c:73 +msgid "Blur Scope: Color selection" +msgstr "Osciloscopio borroso: Selección de color" + +#: src/blur_scope/config.c:83 src/jack/configure.c:106 +msgid "Options:" +msgstr "Opciones" + +#: src/bs2b/plugin.c:157 +msgid "Bauer stereophonic-to-binaural Preferences" +msgstr "Preferencias Bauer stereophonic-to-binaural" + +#: src/bs2b/plugin.c:168 +msgid "Feed level:" +msgstr "Nivel de alimentación" + +#: src/bs2b/plugin.c:182 +msgid "Cut frequency:" +msgstr "Frecuencia de corte" + +#: src/bs2b/plugin.c:196 +msgid "Presets:" +msgstr "Predefinidos" + +#: src/cdaudio-ng/cdaudio-ng.c:242 +msgid "About Audio CD Plugin" +msgstr "Acerca del plugin Audio CD" + +#: src/cdaudio-ng/cdaudio-ng.c:243 +msgid "" +"Copyright (c) 2007, by Calin Crisan and The Audacious Team.\n" +"\n" +"Many thanks to libcdio developers \n" +"\tand to libcddb developers .\n" +"\n" +"Also thank you Tony Vroon for mentoring & guiding me.\n" +"\n" +"This was a Google Summer of Code 2007 project.\n" +"\n" +"Copyright 2009 John Lindgren" +msgstr "" +"Copyright (c) 2007, por Calin Crisan y el Audacious Team.\n" +"\n" +"Muchas gracias a los desarroladores de libcdio \n" +"\ty a los desarolladores de libcddb .\n" +"\n" +"Gracias también a Tony Vroon por ser mi mentor y guiarme.\n" +"\n" +"Este fue un proyecto de Google Summer of Code 2007.\n" +"\n" +"Copyright 2009 John Lindgren" + +#: src/cdaudio-ng/cdaudio-ng.c:552 +msgid "Audio CD" +msgstr "CD de Audio" + +#: src/cdaudio-ng/cdaudio-ng.c:924 +msgid "Drive is empty." +msgstr "La unidad de disco está vacía" + +#: src/cdaudio-ng/cdaudio-ng.c:926 +msgid "Unsupported disk type." +msgstr "Tipo de disco no soportado" + +#: src/cdaudio-ng/configure.c:148 +msgid "CD Audio Plugin Configuration" +msgstr "Configuración del plugin CD Audio" + +#: src/cdaudio-ng/configure.c:160 +msgid "Digital audio extraction" +msgstr "Extración de audio digital" + +#: src/cdaudio-ng/configure.c:165 +msgid "Title information" +msgstr "Información de título" + +#: src/cdaudio-ng/configure.c:176 +msgid "Disc speed:" +msgstr "Velocidad del disco:" + +#: src/cdaudio-ng/configure.c:184 +msgid "Use cd-text if available" +msgstr "Utilizar cd-text si está disponible" + +#: src/cdaudio-ng/configure.c:191 +msgid "Use CDDB if available" +msgstr "Utilizar CDDB si está disponible" + +#: src/cdaudio-ng/configure.c:197 +msgid "Server: " +msgstr "Servidor: " + +#: src/cdaudio-ng/configure.c:201 +msgid "Path: " +msgstr "Ruta" + +#: src/cdaudio-ng/configure.c:205 +msgid "Port: " +msgstr "Puerto: " + +#: src/cdaudio-ng/configure.c:218 +msgid "Use HTTP instead of CDDBP" +msgstr "Utilizar HTTP en vez de CDDBP" + +#: src/cdaudio-ng/configure.c:230 +msgid "Override default device: " +msgstr "Anular dispositivo determinado: " + +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:123 +#: src/echo_plugin/gui.c:118 src/jack/configure.c:141 src/null/null.c:107 +#: src/stereo_plugin/stereo.c:118 +msgid "Ok" +msgstr "Ok" + +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Play CD" +msgstr "Reproducir CD" + +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Add CD" +msgstr "Agregar CD" + +#: src/compressor/plugin.c:63 +msgid "About Dynamic Range Compression Plugin" +msgstr "Acerca del plugin Dynamic Range Compression" + +#: src/compressor/plugin.c:95 +msgid "Dynamic Range Compressor Preferences" +msgstr "Preferencias del Compresor de Rango Dinámico " + +#: src/compressor/plugin.c:107 +msgid "Center volume:" +msgstr "Centrar volumen" + +#: src/compressor/plugin.c:120 +msgid "Dynamic range:" +msgstr "Rango dinámico" + +#: src/console/configure.c:136 +msgid "Game Console Music Decoder" +msgstr "Descodificador de Música de Consolas de Juego" + +#: src/console/configure.c:153 +msgid "General" +msgstr "General" + +#: src/console/configure.c:155 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "Reproducción" + +#: src/console/configure.c:170 +msgid "Bass:" +msgstr "Bajos: " + +#: src/console/configure.c:174 src/console/configure.c:185 +#: src/console/configure.c:206 +msgid "secs" +msgstr "segundos" + +#: src/console/configure.c:181 +msgid "Treble:" +msgstr "Agudos" + +#: src/console/configure.c:202 +msgid "Default song length:" +msgstr "Duración de pista predeterminada:" + +#: src/console/configure.c:208 +msgid "Resampling" +msgstr "Resampling" + +#: src/console/configure.c:214 +msgid "Enable audio resampling" +msgstr "Habilitar resampling de audio" + +#: src/console/configure.c:229 +msgid "Resampling rate:" +msgstr "Frecuencia de resampling:" + +#: src/console/configure.c:233 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:244 +msgid "SPC" +msgstr "SPC" + +#: src/console/configure.c:245 +msgid "Ignore length from SPC tags" +msgstr "Ignorar duración proveniente de las etiquetas SPC" + +#: src/console/configure.c:246 +msgid "Increase reverb" +msgstr "Aumentar reverberación" + +#: src/console/configure.c:271 +msgid "" +"The default song length, expressed in seconds, is used for songs that do not" +" provide length information (i.e. looping tracks)." +msgstr "" +"La duración predeterminada de la pista, expresada en segundos, es usada para" +" pistas que no proveen información de su duracióngth (por ejemplo: pistas de" +" repetición)." + +#: src/console/plugin.c:33 +msgid "About the Game Console Music Decoder" +msgstr "Acerca del Descodificador de Música de Consolas de Juego" + +#: src/console/plugin.c:34 +msgid "" +"Console music decoder engine based on Game_Music_Emu 0.5.2.\n" +"Supported formats: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Audacious implementation by: William Pitcock , \n" +" Shay Green \n" +msgstr "" +"Motor del descofificador de música de consola basado en Game_Music_Emu 0.5.2.\n" +"Formatos soportados: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Implementación en Audacious por: William Pitcock , \n" +" Shay Green \n" + +#: src/crossfade/plugin.c:60 +msgid "About Crossfade" +msgstr "Acerca de Crossfade" + +#: src/crossfade/plugin.c:92 +msgid "Crossfade Preferences" +msgstr "Preferencias de Crossfade" + +#: src/crossfade/plugin.c:104 +msgid "Overlap (in seconds):" +msgstr "Encimar (en segundos)" + +#: src/crossfade/plugin.c:135 src/crossfade/plugin.c:141 +msgid "Crossfade Error" +msgstr "Error de atenuación cruzada" + +#: src/crossfade/plugin.c:135 +msgid "" +"Crossfading failed because the songs had a different number of channels." +msgstr "" +"La atenuación cruzada falló porque las pistas tenían diferente número de " +"canales." + +#: src/crossfade/plugin.c:143 +msgid "" +"Crossfading failed because the songs had different sample rates.\n" +"\n" +"You can use the Sample Rate Converter effect to resample the songs to the same rate." +msgstr "" +"La atenución cruzada falló porque las pistas tenían frecuencias de muestreo.\n" +"\n" +"Puedes usar el efecto Convertidor de Frecuencias de Muestreo para re-muestrear las pistas a la misma frecuencia." + +#: src/crystalizer/crystalizer.c:100 +msgid "Configure Crystalizer" +msgstr "Configurar Cristalizador" + +#: src/crystalizer/crystalizer.c:102 src/stereo_plugin/stereo.c:97 +msgid "Effect intensity:" +msgstr "Intensidad del efecto" + +#: src/crystalizer/crystalizer.c:136 src/echo_plugin/gui.c:131 +#: src/stereo_plugin/stereo.c:131 +msgid "Apply" +msgstr "Aplicar" + +#: src/echo_plugin/gui.c:15 +msgid "" +"Echo Plugin\n" +"By Johan Levin 1999.\n" +"\n" +"Surround echo by Carl van Schaik 1999" +msgstr "" +"Plugin Echo\n" +"por Johan Levin, 1999.\n" +"\n" +"Eco envolvente por Carl van Schaik, 1999" + +#: src/echo_plugin/gui.c:27 +msgid "About Echo Plugin" +msgstr "Acerca del Plugin Echo" + +#: src/echo_plugin/gui.c:67 +msgid "Configure Echo" +msgstr "Configurar Eco" + +#: src/echo_plugin/gui.c:83 +msgid "Delay: (ms)" +msgstr "Retraso: (ms)" + +#: src/echo_plugin/gui.c:88 +msgid "Feedback: (%)" +msgstr "Feedback: (%)" + +#: src/echo_plugin/gui.c:93 +msgid "Volume: (%)" +msgstr "Volumen: (%)" + +#: src/ffaudio/ffaudio-core.c:725 +#, c-format +msgid "" +"Multi-format audio decoding plugin for Audacious based on\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious plugin by:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" +msgstr "" +"Plugin de descodificación de audio Multi-formato para Audacious basado en\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Plugin para Audacious por:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" + +#: src/ffaudio/ffaudio-core.c:739 +msgid "About FFaudio Plugin" +msgstr "Acerca del Plugin FFaudio" + +#: src/filewriter/filewriter.c:166 +msgid "About FileWriter-Plugin" +msgstr "Acerca del FileWriter-Plugin" + +#: src/filewriter/filewriter.c:461 +msgid "File Writer Configuration" +msgstr "Configuración del Escritor de Archivos" + +#: src/filewriter/filewriter.c:473 +msgid "Output file format:" +msgstr "Formato del archivo de salida" + +#: src/filewriter/filewriter.c:491 +msgid "Configure" +msgstr "Configurar" + +#: src/filewriter/filewriter.c:506 +msgid "Save into original directory" +msgstr "Guardar en el directorio original" + +#: src/filewriter/filewriter.c:511 +msgid "Save into custom directory" +msgstr "Guardar en un directorio personalizado" + +#: src/filewriter/filewriter.c:521 +msgid "Output file folder:" +msgstr "Carpeta del archivo de salida" + +#: src/filewriter/filewriter.c:525 +msgid "Pick a folder" +msgstr "Escoge una carpeta" + +#: src/filewriter/filewriter.c:544 +msgid "Get filename from:" +msgstr "Obtener el nombre del archivo desde:" + +#: src/filewriter/filewriter.c:547 +msgid "original file tags" +msgstr "Etiquetas del archivo original" + +#: src/filewriter/filewriter.c:553 +msgid "original filename" +msgstr "Nombre del archivo original" + +#: src/filewriter/filewriter.c:563 +msgid "Don't strip file name extension" +msgstr "No quitar la extensión del archivo" + +#: src/filewriter/filewriter.c:578 +msgid "Prepend track number to filename" +msgstr "Colocar primero el número de pista en el nombre del archivo" + +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:765 +msgid "Auto" +msgstr "Auto" + +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" +msgstr "Estéreo Unido" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Stereo" +msgstr "Estéreo" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Mono" +msgstr "Monoaural" + +#: src/filewriter/mp3.c:706 +msgid "MP3 Configuration" +msgstr "Configuración MP3" + +#: src/filewriter/mp3.c:729 +msgid "Algorithm Quality:" +msgstr "Calidad del algoritmo" + +#: src/filewriter/mp3.c:754 +msgid "Output Samplerate:" +msgstr "Frecuencia de muestrei de salida" + +#: src/filewriter/mp3.c:782 +msgid "(Hz)" +msgstr "(Hz)" + +#: src/filewriter/mp3.c:789 +msgid "Bitrate / Compression ratio:" +msgstr "Relación de Tasa de bits / Compresión:" + +#: src/filewriter/mp3.c:813 +msgid "Bitrate (kbps):" +msgstr "Tasa de bits (kbps):" + +#: src/filewriter/mp3.c:846 +msgid "Compression ratio:" +msgstr "Tasa de Compresión" + +#: src/filewriter/mp3.c:870 +msgid "Audio Mode:" +msgstr "Modo de audio" + +#: src/filewriter/mp3.c:895 +msgid "Misc:" +msgstr "Misc." + +#: src/filewriter/mp3.c:906 +msgid "Enforce strict ISO complience" +msgstr "Forzar conformidad ISO estricta" + +#: src/filewriter/mp3.c:917 +msgid "Error protection" +msgstr "Error de protección" + +#: src/filewriter/mp3.c:929 src/filewriter/vorbis.c:247 +msgid "Quality" +msgstr "Calidad" + +#: src/filewriter/mp3.c:939 +msgid "Enable VBR/ABR" +msgstr "Habilitar VBR/ABR" + +#: src/filewriter/mp3.c:949 +msgid "Type:" +msgstr "Tipo:" + +#: src/filewriter/mp3.c:982 +msgid "VBR Options:" +msgstr "Opciones VBR:" + +#: src/filewriter/mp3.c:998 +msgid "Minimum bitrate (kbps):" +msgstr "Tasa de bits mínima (kbps):" + +#: src/filewriter/mp3.c:1025 +msgid "Maximum bitrate (kbps):" +msgstr "Tasa de bits máxima (kbps):" + +#: src/filewriter/mp3.c:1048 +msgid "Strictly enforce minimum bitrate" +msgstr "Forzar estríctamente tasa de bits mínima" + +#: src/filewriter/mp3.c:1060 +msgid "ABR Options:" +msgstr "Opciones ABR:" + +#: src/filewriter/mp3.c:1070 +msgid "Average bitrate (kbps):" +msgstr "Tasa de bits promedio (kbps):" + +#: src/filewriter/mp3.c:1098 +msgid "VBR quality level:" +msgstr "Nivel de calidad VBR:" + +#: src/filewriter/mp3.c:1117 +msgid "Don't write Xing VBR header" +msgstr "No escribir encabezado VBR Xing" + +#: src/filewriter/mp3.c:1131 +msgid "VBR/ABR" +msgstr "VBR/ABR" + +#: src/filewriter/mp3.c:1141 +msgid "Frame params:" +msgstr "Parámetros de cuadro:" + +#: src/filewriter/mp3.c:1153 +msgid "Mark as copyright" +msgstr "Marcar como copyright" + +#: src/filewriter/mp3.c:1164 +msgid "Mark as original" +msgstr "Marcar como original" + +#: src/filewriter/mp3.c:1176 +msgid "ID3 params:" +msgstr "Parámetros ID3:" + +#: src/filewriter/mp3.c:1187 +msgid "Force addition of version 2 tag" +msgstr "Forzar adición de etiquetas versión 2" + +#: src/filewriter/mp3.c:1197 +msgid "Only add v1 tag" +msgstr "Sólo agrega etiqueta v1" + +#: src/filewriter/mp3.c:1204 +msgid "Only add v2 tag" +msgstr "Sólo agrega etiqueta v2" + +#: src/filewriter/mp3.c:1225 +msgid "Tags" +msgstr "Etiquetas" + +#: src/filewriter/vorbis.c:240 +msgid "Vorbis Encoder Configuration" +msgstr "Configuración del codificador Vorbis" + +#: src/filewriter/vorbis.c:260 +msgid "Quality level (0 - 10):" +msgstr "Nivel de calidad (0-10):" + +#: src/flacng/plugin.c:380 +msgid "About FLAC Audio Plugin" +msgstr "Acerca del plugin de audio FLAC" + +#: src/flacng/plugin.c:381 +msgid "" +"\n" +"\n" +"Original code by\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" +msgstr "" +"\n" +"\n" +"Código original por\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" + +#: src/gnomeshortcuts/gnomeshortcuts.c:303 +msgid "About Gnome Shortcut Plugin" +msgstr "Acerca del plugin Atajos Gnome" + +#: src/gnomeshortcuts/gnomeshortcuts.c:304 +msgid "" +"Gnome Shortcut Plugin\n" +"Let's you control the player with Gnome's shortcuts.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +msgstr "" +"Plugin Gnome Shortcut \n" +"Te permite controlar el reproductor con los atajos de Gnome.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" + +#: src/gtkui/columns.c:36 +msgid "Entry number" +msgstr "Número de entrada" + +#: src/gtkui/columns.c:36 src/search-tool/search-tool.c:43 +msgid "Title" +msgstr "Título" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:42 +msgid "Artist" +msgstr "Artista" + +#: src/gtkui/columns.c:37 +msgid "Year" +msgstr "Año" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:43 +msgid "Album" +msgstr "Ãlbum" + +#: src/gtkui/columns.c:37 +msgid "Track" +msgstr "Pista" + +#: src/gtkui/columns.c:37 +msgid "Queue position" +msgstr "Posición en cola" + +#: src/gtkui/columns.c:38 +msgid "Length" +msgstr "Duración" + +#: src/gtkui/columns.c:38 +msgid "File path" +msgstr "Ruta del archivo" + +#: src/gtkui/columns.c:38 +msgid "File name" +msgstr "Nombre del archivo" + +#: src/gtkui/columns.c:38 +msgid "Custom title" +msgstr "Título personalizado" + +#: src/gtkui/columns.c:39 +msgid "Bitrate" +msgstr "Tasa de bits" + +#: src/gtkui/columns.c:278 +msgid "Choose Columns" +msgstr "Seleccionar Columnas" + +#: src/gtkui/columns.c:292 +msgid "Available:" +msgstr "Disponibles:" + +#: src/gtkui/columns.c:326 +msgid "Chosen:" +msgstr "Seleccionadas" + +#: src/gtkui/layout.c:122 +msgid "Dock at Left" +msgstr "Dock a la izquierda" + +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "Dock a la derecha" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "Dock arriba" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "Dock abajo" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "Desacoplar" + +#: src/gtkui/layout.c:123 src/ladspa/plugin.c:644 +msgid "Disable" +msgstr "Dehabilitar" + +#: src/gtkui/menus.c:131 +msgid "_Open Files ..." +msgstr "_Abrir archivos..." + +#: src/gtkui/menus.c:132 +msgid "Open _URL ..." +msgstr "Abrir _URL..." + +#: src/gtkui/menus.c:133 +msgid "_Add Files ..." +msgstr "A_gregar archivos..." + +#: src/gtkui/menus.c:134 +msgid "Add U_RL ..." +msgstr "Agregar U_RL..." + +#: src/gtkui/menus.c:136 +msgid "A_bout ..." +msgstr "A_cerca..." + +#: src/gtkui/menus.c:137 +msgid "_Preferences ..." +msgstr "_Preferencias" + +#: src/gtkui/menus.c:138 src/skins/ui_manager.c:406 +msgid "_Quit" +msgstr "_Salir" + +#: src/gtkui/menus.c:141 +msgid "_Play" +msgstr "_Reproducir" + +#: src/gtkui/menus.c:142 +msgid "Paus_e" +msgstr "Pa_usa" + +#: src/gtkui/menus.c:143 +msgid "_Stop" +msgstr "_Detener" + +#: src/gtkui/menus.c:144 +msgid "Pre_vious" +msgstr "_Anterior" + +#: src/gtkui/menus.c:145 +msgid "_Next" +msgstr "Siguie_nte" + +#: src/gtkui/menus.c:147 +msgid "_Repeat" +msgstr "Repe_tir" + +#: src/gtkui/menus.c:148 +msgid "S_huffle" +msgstr "A_leatorio" + +#: src/gtkui/menus.c:149 +msgid "N_o Playlist Advance" +msgstr "_No avanzar Lista de Reprod." + +#: src/gtkui/menus.c:150 +msgid "Stop _After This Song" +msgstr "Detener de_spués de esta pista" + +#: src/gtkui/menus.c:152 src/gtkui/menus.c:212 +msgid "Song _Info ..." +msgstr "_Información de pista..." + +#: src/gtkui/menus.c:153 +msgid "Jump to _Time ..." +msgstr "Saltar al _tiempo" + +#: src/gtkui/menus.c:154 +msgid "_Jump to Song ..." +msgstr "Saltar a la _pista" + +#: src/gtkui/menus.c:157 +msgid "By Track _Number" +msgstr "Por _Núm de pista" + +#: src/gtkui/menus.c:158 +msgid "By _Title" +msgstr "Por _Título" + +#: src/gtkui/menus.c:159 +msgid "By _Artist" +msgstr "Por_Artista" + +#: src/gtkui/menus.c:160 +msgid "By A_lbum" +msgstr "Por Ã_lbum" + +#: src/gtkui/menus.c:161 +msgid "By Release _Date" +msgstr "Por _Fecha de Lanzamiento" + +#: src/gtkui/menus.c:162 +msgid "By _File Path" +msgstr "Por _Ruta del Archivo" + +#: src/gtkui/menus.c:163 +msgid "By _Custom Title" +msgstr "Por Título _Personalizado" + +#: src/gtkui/menus.c:165 +msgid "R_everse Order" +msgstr "_Invertir Orden" + +#: src/gtkui/menus.c:166 +msgid "_Random Order" +msgstr "O_rden Aleatorio" + +#: src/gtkui/menus.c:169 src/gtkui/menus.c:214 +msgid "_Refresh" +msgstr "A_ctualizar" + +#: src/gtkui/menus.c:170 +msgid "Remove _Unavailable Files" +msgstr "Remover Archivos No _Disponibles" + +#: src/gtkui/menus.c:172 +msgid "_Sort" +msgstr "_Ordenar" + +#: src/gtkui/menus.c:174 +msgid "_New" +msgstr "_Nuevo" + +#: src/gtkui/menus.c:175 src/gtkui/menus.c:225 +msgid "_Close" +msgstr "_Cerrar" + +#: src/gtkui/menus.c:177 +msgid "_Import ..." +msgstr "_Importar..." + +#: src/gtkui/menus.c:178 +msgid "_Export ..." +msgstr "_Exportar..." + +#: src/gtkui/menus.c:180 +msgid "_Playlist Manager ..." +msgstr "Aministrador de _Listas de Reprod..." + +#: src/gtkui/menus.c:181 +msgid "_Queue Manager ..." +msgstr "Administrador de _Colas" + +#: src/gtkui/menus.c:184 +msgid "Volume _Up" +msgstr "_Aumentar Volumen" + +#: src/gtkui/menus.c:185 +msgid "Volume _Down" +msgstr "_Disminuir Volumen" + +#: src/gtkui/menus.c:187 +msgid "_Equalizer" +msgstr "_Ecualizador" + +#: src/gtkui/menus.c:189 +msgid "E_ffects" +msgstr "E_fectos" + +#: src/gtkui/menus.c:192 +msgid "_Interface" +msgstr "_Interfaz" + +#: src/gtkui/menus.c:193 +msgid "_Visualizations" +msgstr "_Visualizaciones" + +#: src/gtkui/menus.c:195 +msgid "Show _Menu Bar" +msgstr "Mostrar Barra de _Menú" + +#: src/gtkui/menus.c:196 +msgid "Show I_nfo Bar" +msgstr "Mostrar Barra de I_nformación" + +#: src/gtkui/menus.c:197 +msgid "Show _Status Bar" +msgstr "Mostrar Barra de E_stado" + +#: src/gtkui/menus.c:199 +msgid "Show Column _Headers" +msgstr "Mostrar Encabezados de _Columna" + +#: src/gtkui/menus.c:200 +msgid "Choose _Columns ..." +msgstr "Seleccionar _Columnas..." + +#: src/gtkui/menus.c:201 +msgid "Scrol_l on Song Change" +msgstr "Avanzar a_l Cambiar Pista" + +#: src/gtkui/menus.c:204 +msgid "_File" +msgstr "_Archivo" + +#: src/gtkui/menus.c:205 +msgid "_Playback" +msgstr "_Reproducción" + +#: src/gtkui/menus.c:206 +msgid "P_laylist" +msgstr "_Lista de Reproducción" + +#: src/gtkui/menus.c:207 src/gtkui/menus.c:221 +msgid "_Services" +msgstr "_Servicios" + +#: src/gtkui/menus.c:208 +msgid "_Output" +msgstr "_Salida" + +#: src/gtkui/menus.c:209 +msgid "_View" +msgstr "_Ver" + +#: src/gtkui/menus.c:213 +msgid "_Queue/Unqueue" +msgstr "_Formar/Desformar" + +#: src/gtkui/menus.c:216 +msgid "Cu_t" +msgstr "Cor_tar" + +#: src/gtkui/menus.c:217 +msgid "_Copy" +msgstr "_Copiar" + +#: src/gtkui/menus.c:218 +msgid "_Paste" +msgstr "_Pegar" + +#: src/gtkui/menus.c:219 +msgid "Select _All" +msgstr "Seleccion_ar todo" + +#: src/gtkui/menus.c:224 +msgid "_Rename" +msgstr "_Renombrar" + +#: src/gtkui/ui_gtk.c:95 +msgid "GTK Interface" +msgstr "Interfaz GTK" + +#: src/gtkui/ui_gtk.c:156 src/skins/ui_main.c:303 +#, c-format +msgid "%s - Audacious" +msgstr "%s - Audacious" + +#: src/gtkui/ui_gtk.c:162 +msgid "Buffering ..." +msgstr "Almacenando en buffer..." + +#: src/gtkui/ui_gtk.c:165 src/skins/ui_main.c:305 src/skins/ui_main.c:1504 +msgid "Audacious" +msgstr "Audacious" + +#: src/gtkui/ui_gtk.c:216 src/skins/plugin.c:190 +msgid "Error" +msgstr "Error" + +#: src/gtkui/ui_playlist_notebook.c:97 +msgid "Close" +msgstr "Cerrar" + +#: src/gtkui/ui_statusbar.c:105 src/skins/ui_main.c:460 +msgid "mono" +msgstr "monoaural" + +#: src/gtkui/ui_statusbar.c:107 src/skins/ui_main.c:459 +msgid "stereo" +msgstr "estéreo" + +#: src/gtkui/ui_statusbar.c:109 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d canal" +msgstr[1] "%d canales" + +#: src/gtkui/ui_statusbar.c:124 +#, c-format +msgid "%d kbps" +msgstr "%d kbps" + +#: src/hotkey/gui.c:71 +msgid "Previous Track" +msgstr "Pista Anterior" + +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "Reproducir" + +#: src/hotkey/gui.c:73 +msgid "Pause/Resume" +msgstr "Pausa/Continuar" + +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +msgid "Stop" +msgstr "Detener" + +#: src/hotkey/gui.c:75 +msgid "Next Track" +msgstr "Siguiente Pista" + +#: src/hotkey/gui.c:76 +msgid "Forward 5 Seconds" +msgstr "Avanzar 5 Segundos" + +#: src/hotkey/gui.c:77 +msgid "Rewind 5 Seconds" +msgstr "Regresar 5 Segundos" + +#: src/hotkey/gui.c:78 +msgid "Mute" +msgstr "Silenciar" + +#: src/hotkey/gui.c:79 +msgid "Volume Up" +msgstr "Aumentar Volumen" + +#: src/hotkey/gui.c:80 +msgid "Volume Down" +msgstr "Disminuir Volumen" + +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Jump to File" +msgstr "Saltar al Archivo" + +#: src/hotkey/gui.c:82 +msgid "Toggle Player Windows" +msgstr "Cambiar Ventanas del Reproductor" + +#: src/hotkey/gui.c:83 +msgid "Show On-Screen-Display" +msgstr "Mostrar Notificaciones en Pantalla" + +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "Cambiar Repetir" + +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "Cambiar Aleatorio" + +#: src/hotkey/gui.c:95 +msgid "(none)" +msgstr "(ninguno)" + +#: src/hotkey/gui.c:232 +msgid "" +"It is not recommended to bind the primary mouse buttons without modificators.\n" +"\n" +"Do you want to continue?" +msgstr "" +"No se recomienda asociar los botones primarios del ratón sin modificadores.\n" +"\n" +"¿Quieres continuar?" + +#: src/hotkey/gui.c:234 +msgid "Binding mouse buttons" +msgstr "Asociat botones del ratón" + +#: src/hotkey/gui.c:384 +msgid "Global Hotkey Plugin Configuration" +msgstr "Configuración del Plugin Global Hotkey" + +#: src/hotkey/gui.c:400 +msgid "" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." +msgstr "" +"Presiona una combinación de teclas dentro de un campo de texto.\n" +"También puedes asociar butones del ratón." + +#: src/hotkey/gui.c:405 +msgid "Hotkeys:" +msgstr "Atajos del teclado" + +#: src/hotkey/gui.c:424 +msgid "Action:" +msgstr "Acción:" + +#: src/hotkey/gui.c:432 +msgid "Key Binding:" +msgstr "Asociación de Teclas" + +#: src/hotkey/gui.c:663 +msgid "About Global Hotkey Plugin" +msgstr "Acerca del Plugin Global Hotkey" + +#: src/hotkey/gui.c:664 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributers include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä \n" +"\t\t\tBryn Davies \n" +"\t\t\tJonathan A. Davis \n" +"\t\t\tJeremy Tan \n" +"\n" +msgstr "" +"Plugin Global Hotkey\n" +"Controla el reproductor con combinaciones de teclas o teclas multimedia.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Los que contribuyeron incluyen a:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä \n" +"\t\t\tBryn Davies \n" +"\t\t\tJonathan A. Davis \n" +"\t\t\tJeremy Tan \n" +"\n" + +#: src/jack/configure.c:66 +msgid "Connect to all available jack ports" +msgstr "Conectar a todos los puertos jack disponibles" + +#: src/jack/configure.c:73 +msgid "Connect only the output ports" +msgstr "Conectar únicamente a los puertos de salida" + +#: src/jack/configure.c:80 +msgid "Connect to no ports" +msgstr "No conectar puertos" + +#: src/jack/configure.c:98 +msgid "jack Plugin configuration" +msgstr "Configuración del plugin jack" + +#: src/jack/configure.c:116 +msgid "Connection mode:" +msgstr "Modo de conexión:" + +#: src/jack/configure.c:128 +msgid "Enable debug printing" +msgstr "Habilitar impresión de mensajes de depuración" + +#: src/jack/jack.c:435 +msgid "" +"XMMS jack Driver 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" +"\n" +"Audacious port by\n" +"Giacomo Lozito from develia.org" +msgstr "" +"Controlador jack XMMS 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" +"\n" +"Puerto Audacious por\n" +"Giacomo Lozito desde develia.org" + +#: src/jack/jack.c:440 +msgid "About JACK Output Plugin 0.17" +msgstr "Acerca del Plugin de Salida JACK 0.17" + +#: src/ladspa/plugin.c:415 +msgid "About LADSPA Host" +msgstr "Acerca del Host LADSPA" + +#: src/ladspa/plugin.c:516 +#, c-format +msgid "%s Settings" +msgstr "Ajustes %s" + +#: src/ladspa/plugin.c:584 +msgid "LADSPA Host Settings" +msgstr "Ajustes del Host LADSPA" + +#: src/ladspa/plugin.c:593 +msgid "Module paths:" +msgstr "Rutas de Módulos:" + +#: src/ladspa/plugin.c:598 +msgid "" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." +msgstr "" +"Separar rutas múltiples con dos puntos (:).\n" +"Esas rutas se utilizan además del LADSPA_PATH.\n" +"Después de agregar nuevas rutas, presiona Intro para buscar plugins nuevos." + +#: src/ladspa/plugin.c:614 +msgid "Available plugins:" +msgstr "Plugins disponibles:" + +#: src/ladspa/plugin.c:626 +msgid "Enable" +msgstr "Habilitar" + +#: src/ladspa/plugin.c:632 +msgid "Enabled plugins:" +msgstr "Habilitar plugins" + +#: src/ladspa/plugin.c:647 +msgid "Settings" +msgstr "Ajustes" + +#: src/lyricwiki/lyricwiki.c:267 +msgid "" +"\n" +"Looking for lyrics..." +msgstr "" +"\n" +"Buscándo letras..." + +#: src/lyricwiki/lyricwiki.c:304 +msgid "" +"\n" +"Connecting to lyrics.wikia.com..." +msgstr "" +"\n" +"Conectándose a lyrics.wikia.com..." + +#: src/lyricwiki/lyricwiki.c:377 +msgid "" +"\n" +"No lyrics were found." +msgstr "" +"\n" +"No se encontraron letras." + +#: src/metronom/metronom.c:86 +msgid "About Metronom" +msgstr "Acerca de Metronom" + +#: src/metronom/metronom.c:87 +msgid "" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +msgstr "" +"Un Generador Tact por Martin Strauss \n" +"\n" +"Para usarlo, agrega una URL: tact://beats*num/den\n" +"por ejemplo, tact://77 para reproducir a 77 golpes por minuto\n" +"o tact://60*3/4 para reproducir 60 bpm en tacts 3/4" + +#: src/metronom/metronom.c:144 +#, c-format +msgid "Tact generator: %d bpm" +msgstr "Generador de tact: %d bpm" + +#: src/metronom/metronom.c:146 +#, c-format +msgid "Tact generator: %d bpm %d/%d" +msgstr "Generador de tact: %d bpm %d/%d" + +#: src/mixer/plugin.c:64 +msgid "About Channel Mixer" +msgstr "Acerca de Channel Mixer" + +#: src/mixer/plugin.c:93 +msgid "Channel Mixer Settings" +msgstr "Ajustes de Mezclador de Canales" + +#: src/mixer/plugin.c:102 +msgid "Output channels:" +msgstr "Canales de salida:" + +#: src/mixer/plugin.c:112 +msgid "Changes take effect at the next song change." +msgstr "Los cambios tendrán efecto en el siguiente cambio de pista." + +#: src/mpg123/mpg123.c:191 +msgid "Surround" +msgstr "Envolvente" + +#: src/mtp_up/mtp.c:340 +msgid "Upload in progress..." +msgstr "Carga en progreso..." + +#: src/mtp_up/mtp.c:352 +msgid "Upload to MTP Device" +msgstr "Cargar en un dispositivo MTP" + +#: src/mtp_up/mtp.c:353 +msgid "Disconnect MTP Device" +msgstr "Desconectar dispositivo MTP" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Stopped" +msgstr "Detenido" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Audacious is not playing." +msgstr "Audacious no está reproduciendo." + +#: src/null/null.c:64 +msgid "Null output plugin " +msgstr "Plugin Null output" + +#: src/null/null.c:65 +msgid "" +" by Christian Birchinger \n" +"based on the XMMS plugin by HÃ¥vard KvÃ¥l " +msgstr "" +" por Christian Birchinger \n" +"basado en el plugin para XMMS plugin de HÃ¥vard KvÃ¥l " + +#: src/null/null.c:68 +msgid "About Null Output" +msgstr "Acerca Null Output" + +#: src/null/null.c:89 +msgid "Null output preferences" +msgstr "Preferencias de Null output" + +#: src/null/null.c:100 +msgid "Run in real time" +msgstr "Ejecutar en tiempo real" + +#: src/oss4/configure.c:81 +msgid "1. Default device" +msgstr "1. Dispositivo predeterminado" + +#: src/oss4/configure.c:138 +msgid "OSS4 Output Plugin Preferences" +msgstr "Preferencias del Plugin de Salisa OSS4" + +#: src/oss4/configure.c:150 src/OSS/configure.c:194 +msgid "Audio device:" +msgstr "Dispositivo de audio:" + +#: src/oss4/configure.c:178 src/OSS/configure.c:217 src/OSS/configure.c:260 +msgid "Use alternate device:" +msgstr "Usar dispositivo alterno:" + +#: src/oss4/configure.c:193 +msgid "Save volume between sessions" +msgstr "Guardar volumen entre sesiones" + +#: src/oss4/configure.c:197 +msgid "Enable format conversions made by the OSS software." +msgstr "Habilitar las conversiones de formato hechas por el software OSS." + +#: src/oss4/configure.c:201 +msgid "Enable exclusive mode to prevent virtual mixing." +msgstr "Habilitar modo exclusivo para prevenir mezclado virtual" + +#: src/oss4/plugin.c:51 +msgid "About OSS4 Plugin" +msgstr "Acerca del Plugin OSS4" + +#: src/oss4/utils.c:211 +msgid "OSS4 error" +msgstr "Error OSS4" + +#: src/OSS/configure.c:137 +#, c-format +msgid "Default (%s)" +msgstr "Predeterminado (%s)" + +#: src/OSS/configure.c:178 +msgid "OSS Driver configuration" +msgstr "Configuración del Controlador OSS" + +#: src/OSS/configure.c:281 +msgid "Devices" +msgstr "Dispositivos" + +#: src/OSS/configure.c:283 +msgid "Buffering:" +msgstr "Buffering:" + +#: src/OSS/configure.c:296 +msgid "Pre-buffer (percent):" +msgstr "Pre-buffer (percent):" + +#: src/OSS/configure.c:307 +msgid "Buffering" +msgstr "Buffering" + +#: src/OSS/configure.c:308 +msgid "Mixer Settings:" +msgstr "Configuraciones del mezclador:" + +#: src/OSS/configure.c:314 +msgid "Volume controls Master not PCM" +msgstr "Volumen controla al Maestro, no al PCM" + +#: src/OSS/configure.c:320 +msgid "Mixer" +msgstr "Mezclador" + +#: src/OSS/OSS.c:41 +msgid "About OSS Driver" +msgstr "Acerca del Controlador OSS" + +#: src/pulse_audio/pulse_audio.c:669 +msgid "About Audacious PulseAudio Output Plugin" +msgstr "Acerca del plugin Audacious PulseAudio Output" + +#: src/resample/plugin.c:89 +msgid "About Sample Rate Converter Plugin" +msgstr "Acerca del plugin Sample Rate Converter" + +#: src/resample/plugin.c:144 +msgid "Sample Rate Converter Preferences" +msgstr "Preferencias del Convertidor de Frecuencia de Muestreo" + +#: src/resample/plugin.c:156 +msgid "Rate mappings:" +msgstr "Mapas de Frecuencias:" + +#: src/resample/plugin.c:179 +msgid "All others:" +msgstr "Todos los demás:" + +#: src/resample/plugin.c:191 +msgid "Method:" +msgstr "Método:" + +#: src/scrobbler/configure.c:123 src/scrobbler/configure.c:198 +msgid "Change password" +msgstr "Cambiar contraseña" + +#: src/scrobbler/configure.c:144 +msgid "Services" +msgstr "Services" + +#: src/scrobbler/configure.c:166 +msgid "Username:" +msgstr "Nombre de usuario:" + +#: src/scrobbler/configure.c:172 +msgid "Password:" +msgstr "Contraseña:" + +#: src/scrobbler/configure.c:180 +msgid "Scrobbler URL:" +msgstr "URL de Scrobler:" + +#: src/scrobbler/configure.c:212 +msgid "Last.FM" +msgstr "Last.FM" + +#: src/scrobbler/configure.c:239 +msgid "Scrobbler" +msgstr "Scrobbler" + +#: src/scrobbler/plugin.c:194 +msgid "" +"Audacious AudioScrobbler Plugin\n" +"\n" +"Originally created by Audun Hove and Pipian \n" +msgstr "" +"Plugin AudioScrobbler para Audacious\n" +"\n" +"Originalmente creado por Audun Hove y Pipian \n" + +#: src/scrobbler/plugin.c:196 +msgid "About Scrobbler Plugin" +msgstr "Acerca del plugin Scrobbler" + +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" +msgstr "Acerca del plugin de salida SDL" + +#: src/sdlout/plugin.c:78 +msgid "SDL error" +msgstr "Error SDL" + +#: src/search-tool/search-tool.c:42 +msgid "Genre" +msgstr "Género" + +#: src/search-tool/search-tool.c:96 src/search-tool/search-tool.c:106 +msgid "Library" +msgstr "Librería" + +#: src/search-tool/search-tool.c:591 +msgid "_Create Playlist" +msgstr "_Crear Lista de Reproducción" + +#: src/search-tool/search-tool.c:598 +msgid "_Add to Playlist" +msgstr "_Agregar a la Lista de Reproducción" + +#: src/search-tool/search-tool.c:641 +msgid "Search library" +msgstr "Buscar librería" + +#: src/search-tool/search-tool.c:645 +msgid "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." +msgstr "" +"Para importar tu librería de música en Audacious, selecciona una carpeta y " +"luego haz clic en el ícono \"actualizar\"." + +#: src/search-tool/search-tool.c:653 +msgid "Please wait ..." +msgstr "Por favor espere..." + +#: src/search-tool/search-tool.c:675 +msgid "Choose Folder" +msgstr "Seleccione Carpeta" + +#: src/skins/plugin.c:167 +msgid "About Skinned GUI" +msgstr "Acerca Skinned GUI" + +#: src/skins/plugin.c:168 +msgid "" +"Copyright (c) 2008, by Tomasz MoÅ„ \n" +"\n" +msgstr "" +"Copyright (c) 2008, por Tomasz MoÅ„ \n" +"\n" + +#: src/skins/skins_cfg.c:207 +msgid "_Player:" +msgstr "Re_productor" + +#: src/skins/skins_cfg.c:208 +msgid "Select main player window font:" +msgstr "Selecciona la fuente de la ventana principal del reproductor:" + +#: src/skins/skins_cfg.c:210 +msgid "_Playlist:" +msgstr "_Lista de Reproducción:" + +#: src/skins/skins_cfg.c:211 +msgid "Select playlist font:" +msgstr "Selecciona la fuenta de la lista de reproducción:" + +#: src/skins/skins_cfg.c:215 +msgid "_Fonts" +msgstr "_Fuentes" + +#: src/skins/skins_cfg.c:218 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "Usar fuentes de mapa de bits (únicamente soporta ASCII)" + +#: src/skins/skins_cfg.c:220 +msgid "Scroll song title in both directions" +msgstr "Desplaza el título de la pista en ambas direcciones" + +#: src/skins/skins_cfg.c:298 +msgid "_Skin" +msgstr "_Skin" + +#: src/skins/skins_cfg.c:345 +msgid "Interface Preferences" +msgstr "Preferencias de Interfaz" + +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "Preamplificación" + +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" +msgstr "31 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "63 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" +msgstr "125 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" +msgstr "250 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" +msgstr "500 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" +msgstr "1 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" +msgstr "2 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" +msgstr "4 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" +msgstr "8 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" +msgstr "16 kHz" + +#: src/skins/ui_equalizer.c:379 +msgid "Audacious Equalizer" +msgstr "Ecualizador de Audacious" + +#: src/skins/ui_equalizer.c:887 +msgid "Presets" +msgstr "Presets" + +#: src/skins/ui_equalizer.c:968 src/skins/ui_manager.c:442 +msgid "Load preset" +msgstr "Cargar preset" + +#: src/skins/ui_equalizer.c:985 +msgid "Load auto-preset" +msgstr "Cargar auto-preset" + +#: src/skins/ui_equalizer.c:1015 src/skins/ui_equalizer.c:1033 +#: src/skins/ui_equalizer.c:1049 +msgid "Load equalizer preset" +msgstr "Cargar preset del ecualizador" + +#: src/skins/ui_equalizer.c:1068 src/skins/ui_manager.c:463 +msgid "Save preset" +msgstr "Guardar preset" + +#: src/skins/ui_equalizer.c:1084 +msgid "Save auto-preset" +msgstr "Guardar auto-preset" + +#: src/skins/ui_equalizer.c:1114 src/skins/ui_equalizer.c:1150 +msgid "Save equalizer preset" +msgstr "Guardar preset del ecualizador" + +#: src/skins/ui_equalizer.c:1169 src/skins/ui_manager.c:478 +msgid "Delete preset" +msgstr "Borrar preset" + +#: src/skins/ui_equalizer.c:1186 +msgid "Delete auto-preset" +msgstr "Borrar auto-preset" + +#: src/skins/ui_main.c:444 +msgid "kbps" +msgstr "kbps" + +#: src/skins/ui_main.c:452 +msgid "kHz" +msgstr "kHz" + +#: src/skins/ui_main.c:459 +msgid "surround" +msgstr "envolvente" + +#: src/skins/ui_main.c:807 +#, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "Saltar a %d:%-2.2d / %d:%-2.2d" + +#: src/skins/ui_main.c:828 +#, c-format +msgid "Volume: %d%%" +msgstr "Volumen: %d%%" + +#: src/skins/ui_main.c:851 +#, c-format +msgid "Balance: %d%% left" +msgstr "Balance: %d%% izquierda" + +#: src/skins/ui_main.c:853 +msgid "Balance: center" +msgstr "Balance: central" + +#: src/skins/ui_main.c:855 +#, c-format +msgid "Balance: %d%% right" +msgstr "Balance: %d%% derecha" + +#: src/skins/ui_main.c:981 +msgid "Options Menu" +msgstr "Menú de Opciones" + +#: src/skins/ui_main.c:985 +msgid "Disable 'Always On Top'" +msgstr "Deshabilitar 'Siempre Encima'" + +#: src/skins/ui_main.c:987 +msgid "Enable 'Always On Top'" +msgstr "Habilitar 'Siempre Encima'" + +#: src/skins/ui_main.c:990 +msgid "File Info Box" +msgstr "Caja de Información del Archivo" + +#: src/skins/ui_main.c:995 +msgid "Visualization Menu" +msgstr "Menú de Visualización" + +#: src/skins/ui_main.c:1653 +msgid "Single mode." +msgstr "Modo sencillo." + +#: src/skins/ui_main.c:1655 +msgid "Playlist mode." +msgstr "Modo Lista de Reproducción." + +#: src/skins/ui_main.c:1677 +msgid "Stopping after song." +msgstr "Detener después de la pista." + +#: src/skins/ui_main.c:1679 +msgid "Not stopping after song." +msgstr "No detener después de la pista" + +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 +msgid "Autoscroll Songname" +msgstr "Desplazamiento automático del Título" + +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "Detener después de la pista actual" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 +msgid "Peaks" +msgstr "Picos" + +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "Repetir" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "Aleatorio" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "No avanzar Lista de Reproducción" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 +msgid "Show Player" +msgstr "Mostrar Reproductor" + +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 +msgid "Show Playlist Editor" +msgstr "Mostrar Editor de Listas de Reproducción" + +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 +msgid "Show Equalizer" +msgstr "Mostrar Ecualizador" + +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 +msgid "Always on Top" +msgstr "Siempre Encima" + +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 +msgid "Put on All Workspaces" +msgstr "Colocar en TODOS los Espacios de Trabajo" + +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 +msgid "Roll up Player" +msgstr "Enrollar Reproductor" + +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 +msgid "Roll up Playlist Editor" +msgstr "Enrollar Editor de Listas de Resproducción" + +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 +msgid "Roll up Equalizer" +msgstr "Enrollar Ecualizador" + +#: src/skins/ui_manager.c:115 +msgid "Analyzer" +msgstr "Analizador de Espectro" + +#: src/skins/ui_manager.c:116 +msgid "Scope" +msgstr "Osciloscopio" + +#: src/skins/ui_manager.c:117 +msgid "Voiceprint" +msgstr "Espectrograma" + +#: src/skins/ui_manager.c:118 +msgid "Off" +msgstr "Apagado" + +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 +msgid "Normal" +msgstr "Normal" + +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 +msgid "Fire" +msgstr "Fuego" + +#: src/skins/ui_manager.c:124 +msgid "Vertical Lines" +msgstr "Líneas verticales" + +#: src/skins/ui_manager.c:128 +msgid "Lines" +msgstr "Líneas" + +#: src/skins/ui_manager.c:129 +msgid "Bars" +msgstr "Barras" + +#: src/skins/ui_manager.c:133 +msgid "Dot Scope" +msgstr "Osciloscopio de Puntos" + +#: src/skins/ui_manager.c:134 +msgid "Line Scope" +msgstr "Osciloscopio de Líneas" + +#: src/skins/ui_manager.c:135 +msgid "Solid Scope" +msgstr "Osciloscopio Sólido" + +#: src/skins/ui_manager.c:141 +msgid "Ice" +msgstr "Hielo" + +#: src/skins/ui_manager.c:146 +msgid "Smooth" +msgstr "Suave" + +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 +msgid "Slowest" +msgstr "Muy lento" + +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 +msgid "Slow" +msgstr "Lento" + +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 +msgid "Medium" +msgstr "Medio" + +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 +msgid "Fast" +msgstr "Rápido" + +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 +msgid "Fastest" +msgstr "Muy rápido" + +#: src/skins/ui_manager.c:166 +msgid "Time Elapsed" +msgstr "Tiempo Transcurrido" + +#: src/skins/ui_manager.c:167 +msgid "Time Remaining" +msgstr "Tiempo Faltante" + +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "Pausa" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "Anterior" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "Siguiente" + +#: src/skins/ui_manager.c:196 +msgid "Visualization" +msgstr "visualización" + +#: src/skins/ui_manager.c:197 +msgid "Visualization Mode" +msgstr "Modo de Visualización" + +#: src/skins/ui_manager.c:198 +msgid "Analyzer Mode" +msgstr "Analizador de Espectro" + +#: src/skins/ui_manager.c:199 +msgid "Scope Mode" +msgstr "Osciloscopio " + +#: src/skins/ui_manager.c:200 +msgid "Voiceprint Mode" +msgstr "Espectrograma" + +#: src/skins/ui_manager.c:201 +msgid "WindowShade VU Mode" +msgstr "VU WindowShade" + +#: src/skins/ui_manager.c:202 +msgid "Analyzer Falloff" +msgstr "Caída del analizador" + +#: src/skins/ui_manager.c:203 +msgid "Peaks Falloff" +msgstr "Caida del pico" + +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "Lista de Reproducción" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "Nueva Lista de Reproducción" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 +msgid "Select Next Playlist" +msgstr "Siguiente Lista de Reproducción" + +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 +msgid "Select Previous Playlist" +msgstr "Anterior Lista de Reproducción" + +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "Borrar Lista de Reproducción" + +#: src/skins/ui_manager.c:222 +msgid "Import Playlist" +msgstr "Importar Lista de Reproducción" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "" +"Carga una lista de reproducción dentro de la lista de reproducción " +"seleccionada" + +#: src/skins/ui_manager.c:226 +msgid "Export Playlist" +msgstr "Exportar Lista de Reproducción" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "Guardar la Lista de Reproducción seleccionada" + +#: src/skins/ui_manager.c:229 +msgid "Refresh List" +msgstr "Actualizar Lista" + +#: src/skins/ui_manager.c:230 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "" +"Actualiza metadatos asociados con una entrada de Lista de Reproducción" + +#: src/skins/ui_manager.c:233 +msgid "Playlist Manager" +msgstr "Administrador de Listas de Reproducción" + +#: src/skins/ui_manager.c:234 +msgid "Queue Manager" +msgstr "Aministrador de Colas" + +#: src/skins/ui_manager.c:237 +msgid "View" +msgstr "Ver" + +#: src/skins/ui_manager.c:238 +msgid "Interface" +msgstr "Interfaz" + +#: src/skins/ui_manager.c:239 +msgid "Interface Preferences ..." +msgstr "Preferencias de Interfaz..." + +#: src/skins/ui_manager.c:243 +msgid "Add Internet Address..." +msgstr "Agregar Dirección de Internet..." + +#: src/skins/ui_manager.c:244 +msgid "Adds a remote track to the playlist." +msgstr "Agrega una pista remota a la Lista de Reproducción" + +#: src/skins/ui_manager.c:247 +msgid "Add Files..." +msgstr "Agregar Archivos..." + +#: src/skins/ui_manager.c:248 +msgid "Adds files to the playlist." +msgstr "Agregar archivos a la Lista de Reproducción" + +#: src/skins/ui_manager.c:253 +msgid "Search and Select" +msgstr "Buscar y Seleccionar" + +#: src/skins/ui_manager.c:254 +msgid "" +"Searches the playlist and selects playlist entries based on specific " +"criteria." +msgstr "" +"Busca la lista de reproducción y selecciona las entradas basado en criterios" +" específicos." + +#: src/skins/ui_manager.c:257 +msgid "Invert Selection" +msgstr "Invertir Selección" + +#: src/skins/ui_manager.c:258 +msgid "Inverts the selected and unselected entries." +msgstr "Invierte las entradas seleccionadas y no seleccionadas." + +#: src/skins/ui_manager.c:261 +msgid "Select All" +msgstr "Selecciona Todo" + +#: src/skins/ui_manager.c:262 +msgid "Selects all of the playlist entries." +msgstr "Selecciona todas las entradas de la Lista de Reproducción." + +#: src/skins/ui_manager.c:265 +msgid "Select None" +msgstr "Selecciona ninguno" + +#: src/skins/ui_manager.c:266 +msgid "Deselects all of the playlist entries." +msgstr "Quita la selección de todas las entradas de la lista de reproducción." + +#: src/skins/ui_manager.c:271 +msgid "Remove All" +msgstr "Quitar Todo" + +#: src/skins/ui_manager.c:272 +msgid "Removes all entries from the playlist." +msgstr "Quita todas las entradas de la lista de reproducción." + +#: src/skins/ui_manager.c:275 +msgid "Clear Queue" +msgstr "Limpiar Cola de reproducción" + +#: src/skins/ui_manager.c:276 +msgid "Clears the queue associated with this playlist." +msgstr "Limpia la cola asociada con esta lista de reproducción." + +#: src/skins/ui_manager.c:279 +msgid "Remove Unavailable Files" +msgstr "Remueve los Archivos No Disponibles" + +#: src/skins/ui_manager.c:280 +msgid "Removes unavailable files from the playlist." +msgstr "Remueve los archivos no disponibles de la lista de reproducción." + +#: src/skins/ui_manager.c:283 +msgid "Remove Duplicates" +msgstr "Remover Duplicados" + +#: src/skins/ui_manager.c:285 src/skins/ui_manager.c:317 +#: src/skins/ui_manager.c:347 +msgid "By Title" +msgstr "Por Título" + +#: src/skins/ui_manager.c:286 +msgid "Removes duplicate entries from the playlist by title." +msgstr "" +"Remueve las entradas duplicadas de la lista de reproducción por título." + +#: src/skins/ui_manager.c:289 src/skins/ui_manager.c:329 +#: src/skins/ui_manager.c:359 +msgid "By Filename" +msgstr "Por Nombre de Archivo" + +#: src/skins/ui_manager.c:290 +msgid "Removes duplicate entries from the playlist by filename." +msgstr "" +"Remueve las entradas duplicadas de la lista de reproducción por nombre de " +"archivo." + +#: src/skins/ui_manager.c:293 src/skins/ui_manager.c:333 +#: src/skins/ui_manager.c:363 +msgid "By Path + Filename" +msgstr "Por Ruta + Nombre de archivo" + +#: src/skins/ui_manager.c:294 +msgid "Removes duplicate entries from the playlist by their full path." +msgstr "" +"Remueve las entradas duplicadas de la lista de reproducción por su ruta " +"completa." + +#: src/skins/ui_manager.c:297 +msgid "Remove Unselected" +msgstr "Remover No Seleccionados" + +#: src/skins/ui_manager.c:298 +msgid "Remove unselected entries from the playlist." +msgstr "Remueve las entradas no seleccionadas de la lista de reproducción." + +#: src/skins/ui_manager.c:301 +msgid "Remove Selected" +msgstr "Remover Seleccionados" + +#: src/skins/ui_manager.c:302 +msgid "Remove selected entries from the playlist." +msgstr "Remueve las entradas seleccionadas de la lista de reproducción." + +#: src/skins/ui_manager.c:307 +msgid "Randomize List" +msgstr "Aleatorizar Lista" + +#: src/skins/ui_manager.c:308 +msgid "Randomizes the playlist." +msgstr "Aleatoriza la lista de reproducción." + +#: src/skins/ui_manager.c:311 +msgid "Reverse List" +msgstr "Invertir Lista" + +#: src/skins/ui_manager.c:312 +msgid "Reverses the playlist." +msgstr "Invierte el orden de la lista de reproducción." + +#: src/skins/ui_manager.c:315 +msgid "Sort List" +msgstr "Ordenar Lista" + +#: src/skins/ui_manager.c:318 src/skins/ui_manager.c:348 +msgid "Sorts the list by title." +msgstr "Ordena la lista de reproducción por título." + +#: src/skins/ui_manager.c:321 src/skins/ui_manager.c:351 +msgid "By Album" +msgstr "Por Ãlbum" + +#: src/skins/ui_manager.c:322 src/skins/ui_manager.c:352 +msgid "Sorts the list by album." +msgstr "Ordena la lista de reproducción por álbum." + +#: src/skins/ui_manager.c:325 src/skins/ui_manager.c:355 +msgid "By Artist" +msgstr "Por Artista" + +#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +msgid "Sorts the list by artist." +msgstr "Ordena la lista de reproducción por Artista." + +#: src/skins/ui_manager.c:330 src/skins/ui_manager.c:360 +msgid "Sorts the list by filename." +msgstr "Ordena la lista de reproducción por nombre de archivo." + +#: src/skins/ui_manager.c:334 src/skins/ui_manager.c:364 +msgid "Sorts the list by full pathname." +msgstr "Ordena la lista de reproducción por ruta completa." + +#: src/skins/ui_manager.c:337 src/skins/ui_manager.c:367 +msgid "By Date" +msgstr "Por Fecha" + +#: src/skins/ui_manager.c:338 src/skins/ui_manager.c:368 +msgid "Sorts the list by modification time." +msgstr "Ordena la lista de reproducción por hora de modificación." + +#: src/skins/ui_manager.c:341 src/skins/ui_manager.c:371 +msgid "By Track Number" +msgstr "Por Número de Pista" + +#: src/skins/ui_manager.c:342 src/skins/ui_manager.c:372 +msgid "Sorts the list by track number." +msgstr "Ordena la lista de reproducción por número de pista." + +#: src/skins/ui_manager.c:345 +msgid "Sort Selected" +msgstr "Ordenar Seleccionado" + +#: src/skins/ui_manager.c:381 +msgid "File" +msgstr "Archivo" + +#: src/skins/ui_manager.c:384 +msgid "Plugin Services" +msgstr "Servicios de Plugin" + +#: src/skins/ui_manager.c:386 src/skins/ui_manager.c:389 +msgid "View Track Details" +msgstr "Ver Detaller de la Pista" + +#: src/skins/ui_manager.c:387 src/skins/ui_manager.c:390 +msgid "View track details" +msgstr "Ver detalles de la pista" + +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:393 +msgid "About Audacious" +msgstr "Acerca de Audacious" + +#: src/skins/ui_manager.c:395 +msgid "Play File" +msgstr "Reproducir Archivo" + +#: src/skins/ui_manager.c:396 +msgid "Load and play a file" +msgstr "Cargar y reproducir un archivo" + +#: src/skins/ui_manager.c:398 +msgid "Play Location" +msgstr "Reproducir Dirección" + +#: src/skins/ui_manager.c:399 +msgid "Play media from the selected location" +msgstr "Reproducir medios desde la dirección seleccionada" + +#: src/skins/ui_manager.c:401 +msgid "Plugin services" +msgstr "Servicios de plugin" + +#: src/skins/ui_manager.c:403 +msgid "Preferences" +msgstr "Preferencias" + +#: src/skins/ui_manager.c:404 +msgid "Open preferences window" +msgstr "Abrir ventana de preferencias" + +#: src/skins/ui_manager.c:407 +msgid "Quit Audacious" +msgstr "Salir de Audacious" + +#: src/skins/ui_manager.c:409 src/skins/ui_manager.c:410 +msgid "Set A-B" +msgstr "Ajusta A-b" + +#: src/skins/ui_manager.c:412 src/skins/ui_manager.c:413 +msgid "Clear A-B" +msgstr "Limpiar A-B" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Jump to Time" +msgstr "Saltar al tiempo" + +#: src/skins/ui_manager.c:421 +msgid "Queue Toggle" +msgstr "Cambiar Cola" + +#: src/skins/ui_manager.c:422 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "" +"Habilita/deshabilita la entrada en la cola de la lista de reproducción." + +#: src/skins/ui_manager.c:425 +msgid "Copy" +msgstr "Copiar" + +#: src/skins/ui_manager.c:427 +msgid "Cut" +msgstr "Cortar" + +#: src/skins/ui_manager.c:429 +msgid "Paste" +msgstr "Pegar" + +#: src/skins/ui_manager.c:436 +msgid "Load" +msgstr "Cargar" + +#: src/skins/ui_manager.c:437 +msgid "Import" +msgstr "Importar" + +#: src/skins/ui_manager.c:438 +msgid "Save" +msgstr "Guardar" + +#: src/skins/ui_manager.c:439 +msgid "Delete" +msgstr "Borrar" + +#: src/skins/ui_manager.c:441 src/skins/ui_manager.c:462 +#: src/skins/ui_manager.c:477 +msgid "Preset" +msgstr "Preset" + +#: src/skins/ui_manager.c:444 src/skins/ui_manager.c:465 +#: src/skins/ui_manager.c:480 +msgid "Auto-load preset" +msgstr "Auto cargar preset" + +#: src/skins/ui_manager.c:445 +msgid "Load auto-load preset" +msgstr "Cargar preset auto-load" + +#: src/skins/ui_manager.c:448 +msgid "Load default preset into equalizer" +msgstr "Cargar preset determinado en el ecualizador" + +#: src/skins/ui_manager.c:450 +msgid "Zero" +msgstr "Cero" + +#: src/skins/ui_manager.c:451 +msgid "Set equalizer preset levels to zero" +msgstr "Ajustar niveles preset del ecualizador a cero" + +#: src/skins/ui_manager.c:453 +msgid "From file" +msgstr "Desde archivo" + +#: src/skins/ui_manager.c:454 +msgid "Load preset from file" +msgstr "Cargar preset desde un archivo" + +#: src/skins/ui_manager.c:456 +msgid "From WinAMP EQF file" +msgstr "Desde archivo WinAMP EQF" + +#: src/skins/ui_manager.c:457 +msgid "Load preset from WinAMP EQF file" +msgstr "Cargar preset desde archivo WinAMP EQF" + +#: src/skins/ui_manager.c:459 +msgid "WinAMP Presets" +msgstr "Presets WinAMP" + +#: src/skins/ui_manager.c:460 +msgid "Import WinAMP presets" +msgstr "Importar presets WinAMP" + +#: src/skins/ui_manager.c:466 +msgid "Save auto-load preset" +msgstr "Guardar preset auto-load" + +#: src/skins/ui_manager.c:469 +msgid "Save default preset" +msgstr "guardar preset predeterminado" + +#: src/skins/ui_manager.c:471 +msgid "To file" +msgstr "En archivo" + +#: src/skins/ui_manager.c:472 +msgid "Save preset to file" +msgstr "Guardar preset en archivo" + +#: src/skins/ui_manager.c:474 +msgid "To WinAMP EQF file" +msgstr "En archivo WinAMP EQF" + +#: src/skins/ui_manager.c:475 +msgid "Save preset to WinAMP EQF file" +msgstr "Guardar present en archivo WinAMP EQF" + +#: src/skins/ui_manager.c:481 +msgid "Delete auto-load preset" +msgstr "Borrar preset auto-load" + +#: src/skins/ui_playlist.c:248 +msgid "Search entries in active playlist" +msgstr "Buscar entradas en la lista de reproducción activa" + +#: src/skins/ui_playlist.c:256 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular" +" expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Selecciona entradas en la lista de reproducción llenando uno o más campos. " +"Los campos usan la sintaxis de expresiones regulares, mayúsculas o " +"minísculas indiscriminadas. Si no sabes como trabajan las expresiones " +"regulares, simplemente inserta una porción literal de lo que buscas." + +#: src/skins/ui_playlist.c:264 +msgid "Title: " +msgstr "Título: " + +#: src/skins/ui_playlist.c:271 +msgid "Album: " +msgstr "Ãlbum: " + +#: src/skins/ui_playlist.c:278 +msgid "Artist: " +msgstr "Artista: " + +#: src/skins/ui_playlist.c:285 +msgid "Filename: " +msgstr "Nombre de Archivo: " + +#: src/skins/ui_playlist.c:293 +msgid "Clear previous selection before searching" +msgstr "Limpiar selección previa antes de buscar" + +#: src/skins/ui_playlist.c:296 +msgid "Automatically toggle queue for matching entries" +msgstr "Cambiar automáticamente la cola para las entradas coincidentes" + +#: src/skins/ui_playlist.c:299 +msgid "Create a new playlist with matching entries" +msgstr "Crear una nueva lista de reproducción con las entradas coincidentes" + +#: src/skins/ui_playlist.c:765 +msgid "Audacious Playlist Editor" +msgstr "Editor de Listas de Reproducción de Audacious" + +#: src/skins/ui_playlist.c:812 +#, c-format +msgid "%s (%d of %d)" +msgstr "%s (%d de %d)" + +#: src/skins/ui_skinselector.c:162 +msgid "Archived Winamp 2.x skin" +msgstr "Skin de Winamp 2.x comprimida" + +#: src/skins/ui_skinselector.c:167 +msgid "Unarchived Winamp 2.x skin" +msgstr "Skin de winamp 2.x sin comprimir" + +#: src/skins/util.c:774 +#, c-format +msgid "Could not create directory (%s): %s\n" +msgstr "No se puede crear el directorio (%s): %s\n" + +#: src/sndfile/plugin.c:456 +msgid "About sndfile plugin" +msgstr "Acerca del plugin sndfile" + +#: src/sndstretch/sndstretch_xmms.c:155 +msgid "About SndStretch" +msgstr "Acerca de SndStretch" + +#: src/sndstretch/sndstretch_xmms.c:308 +msgid "Volume corr." +msgstr "Corr. volumen" + +#: src/sndstretch/sndstretch_xmms.c:309 +msgid "Short Overlap" +msgstr "Encimado corto" + +#: src/sndstretch/sndstretch_xmms.c:355 +msgid "Speed" +msgstr "Velocidad" + +#: src/sndstretch/sndstretch_xmms.c:356 +msgid "Pitch" +msgstr "Tono" + +#: src/sndstretch/sndstretch_xmms.c:357 +msgid "Scale" +msgstr "Escala" + +#: src/sndstretch/sndstretch_xmms.c:377 +msgid "SndStretch - Configuration" +msgstr "SndStretch - Configuración" + +#: src/song_change/song_change.c:437 +msgid "Command to run when Audacious starts a new song." +msgstr "Comando para ejecutar cuando Audacious comience una nueva pista." + +#: src/song_change/song_change.c:439 src/song_change/song_change.c:445 +#: src/song_change/song_change.c:451 src/song_change/song_change.c:457 +msgid "Command:" +msgstr "Comando:" + +#: src/song_change/song_change.c:443 +msgid "Command to run toward the end of a song." +msgstr "Comando para ejecutar al final de una pista." + +#: src/song_change/song_change.c:449 +msgid "Command to run when Audacious reaches the end of the playlist." +msgstr "" +"Comando para ejecutar cuando Audacious alcance el final de una lista de " +"reproducción." + +#: src/song_change/song_change.c:455 +msgid "" +"Command to run when title changes for a song (i.e. network streams titles)." +msgstr "" +"Comando para ejecutar cuando el título de una pista cambie (por ejemplo, " +"títulos de flujos de red)." + +#: src/song_change/song_change.c:461 +msgid "" +"You can use the following format strings which\n" +"will be substituted before calling the command\n" +"(not all are useful for the end-of-playlist command).\n" +"\n" +"%F: Frequency (in hertz)\n" +"%c: Number of channels\n" +"%f: filename (full path)\n" +"%l: length (in milliseconds)\n" +"%n or %s: Song name\n" +"%r: Rate (in bits per second)\n" +"%t: Playlist position (%02d)\n" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" +msgstr "" +"Puedes usar las siguientes cadena de formato las cuales\n" +"serán sustituidas antes de llamar al comando\n" +"(no todas son útiles para el comando al finalizar la lista de reproducción).\n" +"\n" +"%F: Frecuencia (en hertz)\n" +"%c: Número de canales\n" +"%f: nombre del archivo (ruta completa)\n" +"%l: duración (en milisegundos)\n" +"%n ó %s: Nombre de la Pista\n" +"%r: Tasa (en bits por segundo)\n" +"%t: Posición en la Lista de Reproducción (%02d)\n" +"%p: Reproduciendo actualmente (1 ó 0)\n" +"%a: Artista\n" +"%b: Ãlbum\n" +"%T: Título de la Pista" + +#: src/song_change/song_change.c:488 +msgid "" +"Parameters passed to the shell should be encapsulated in " +"quotes. Doing otherwise is a security risk." +msgstr "" +"Parámetros enviados al shell deberán ser encapsulados en " +"apóstrofes. Hacer otra cosa es un riesgo de seguridad." + +#: src/song_change/song_change.c:499 +msgid "Commands" +msgstr "Comandos" + +#: src/song_change/song_change.c:529 +msgid "Song Change" +msgstr "Cambiar Pista" + +#: src/statusicon/statusicon.c:379 +msgid "About Status Icon Plugin" +msgstr "Acerca del plugin de Icono de Estado" + +#: src/statusicon/statusicon.c:380 +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager.\n" +msgstr "" +"Plugin Status Icon\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"Este plugin provee un ícono de estado colocado en\n" +"el área de la bandeja del sistema del administrador de ventanas.\n" + +#: src/statusicon/statusicon.c:451 +msgid "Status Icon Plugin - Preferences" +msgstr "Status Icon Plugin - Preferencias" + +#: src/statusicon/statusicon.c:461 +msgid "Right-Click Menu" +msgstr "Menú con Clic Derecho" + +#: src/statusicon/statusicon.c:466 +msgid "Small playback menu #1" +msgstr "Menú pequeño de reproducción #1" + +#: src/statusicon/statusicon.c:469 +msgid "Small playback menu #2" +msgstr "Menú pequeño de reproducción #2" + +#: src/statusicon/statusicon.c:485 +msgid "Mouse Scroll Action" +msgstr "Acción con la Rueda del Ratón" + +#: src/statusicon/statusicon.c:489 +msgid "Change volume" +msgstr "Cambiar volumen" + +#: src/statusicon/statusicon.c:491 +msgid "Change playing song" +msgstr "Cambiar pista en reproducción" + +#: src/statusicon/statusicon.c:504 +msgid "Other settings" +msgstr "Otros ajustes" + +#: src/statusicon/statusicon.c:509 +msgid "Disable the popup window" +msgstr "Deshabilitar la ventana emergente" + +#: src/statusicon/statusicon.c:516 +msgid "Close to the notification area (system tray)" +msgstr "Cerrar al área de notificación (bandeja del sistema)" + +#: src/statusicon/statusicon.c:524 +msgid "Advance in playlist when scrolling upward" +msgstr "Avanzar en la lista de reproducción cuando se desplace hacía arriba" + +#: src/stereo_plugin/stereo.c:45 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin 1999." +msgstr "" +"plugin Extra Stereo\n" +"\n" +"Por Johan Levin, 1999." + +#: src/stereo_plugin/stereo.c:64 +msgid "About Extra Stereo Plugin" +msgstr "Acerca del plugin Extra Stereo" + +#: src/stereo_plugin/stereo.c:95 +msgid "Configure Extra Stereo" +msgstr "Configurar Extra Stereo" + +#: src/tonegen/tonegen.c:49 +msgid "About Tone Generator" +msgstr "Acerca de Tone Generator" + +#: src/tonegen/tonegen.c:51 +msgid "" +"Sinus tone generator by Haavard Kvaalen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" +msgstr "" +"Generador de tonos sinusoidales por Haavard Kvaalen \n" +"Modificado por Daniel J. Peng \n" +"\n" +"Para usarlo, agrega una URL: tone://frecuencia1;frecuencia2;frecuencia3;...\n" +"por ejemplo, tone://2000;2005 para reproducir un tono de 2000Hz y un tono de 2005Hz" + +#: src/tonegen/tonegen.c:101 +#, c-format +msgid "%s %.1f Hz" +msgstr "%s %.1f Hz" + +#: src/tonegen/tonegen.c:101 +msgid "Tone Generator: " +msgstr "Generador de tonos: " + +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" +msgstr "Acerca del plugin File I/O" + +#: src/vorbis/vorbis.c:573 +msgid "About Ogg Vorbis Audio Plugin" +msgstr "Acerca del plugin Ogg Vorbis Audio" + +#: src/vorbis/vorbis.c:578 +msgid "" +"Ogg Vorbis Plugin by the Xiph.org Foundation\n" +"\n" +"Original code by\n" +"Tony Arcieri \n" +"Contributions from\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visit the Xiph.org Foundation at http://www.xiph.org/\n" +msgstr "" +"Plugin Ogg Vorbis por la Fundación Xiph.org\n" +"\n" +"Código original por\n" +"Tony Arcieri \n" +"Contributiones de\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visita la Fundación Xiph.org Foundation en http://www.xiph.org/\n" + +#: src/vtx/about.c:14 +msgid "About Vortex Player" +msgstr "Acerca del Reproducción Vortex" + +#: src/vtx/about.c:15 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"\n" +"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" +"and other AY/YM music sites.\n" +"\n" +"Audacious implementation by Pavel Vymetalek " +msgstr "" +"Reproductor de archivos en formato Vortex por Sashnov Alexander \n" +"Fundamentado en el código fuente original in_vtx.dll por Roman Sherbakov \n" +"\n" +"La música en formato vtx puede ser encontrada en http://vtx.microfor.ru/music.htm\n" +"y otros sitios de música AY/YM.\n" +"\n" +"Implementación en Audacious por Pavel Vymetalek " + +#: src/wavpack/wavpack.c:353 +#, c-format +msgid "Wavpack Decoder Plugin %s" +msgstr "Plugin Descodificador Wavpack %s" + +#: src/wavpack/wavpack.c:354 +msgid "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan\n" +"Visit the Wavpack site at http://www.wavpack.com/\n" +msgstr "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Algo del código del plugin code fue por Miles Egan\n" +"Visita el sitio Wavpack en http://www.wavpack.com/\n" + + diff -Nru audacious-plugins-2.4.4/po/es.po audacious-plugins-3.2/po/es.po --- audacious-plugins-2.4.4/po/es.po 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/es.po 2012-01-20 19:48:30.000000000 +0000 @@ -1,467 +1,206 @@ -# translation of es.po to -# Spanish translation for Audacious -# This file is distributed under the same license as the Audacious package. -# Cosme Domínguez Díaz , 2010 +# Spanish translation for Audacious Plugins +# Copyright (C) Audacious translators +# This file is distributed under the same license as the Audacious Plugins package. # +# Translators: +# Adrián Ramirez Escalante , 2012. +# Cosme Domínguez Díaz , 2010. +# Jorge Andrés , 2011. +# , 2011. msgid "" msgstr "" -"Project-Id-Version: Audacious\n" -"Report-Msgid-Bugs-To: http://jira.atheme.org/\n" -"POT-Creation-Date: 2010-08-03 17:55-0400\n" -"PO-Revision-Date: \n" -"Last-Translator: Cosme Domínguez Díaz \n" -"Language-Team: \n" -"Language: \n" +"Project-Id-Version: Audacious Plugins\n" +"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2012-01-11 09:01-0500\n" +"PO-Revision-Date: 2012-01-12 04:29+0000\n" +"Last-Translator: Adrián Ramirez Escalante \n" +"Language-Team: Spanish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Spanish\n" -"X-Poedit-Country: SPAIN\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: src/aac/libmp4.c:291 +#: src/aac/libmp4.c:256 #, c-format msgid "" "Using libfaad2-%s for decoding.\n" "FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com\n" "Copyright (c) 2005-2006 Audacious team" msgstr "" -"Usando libfaad2-%s para decodificar.\n" -"FAAD2 AAC/HE-AAC/HE-AACv2/DRM decodificador (c) Nero AG, www.nero.com\n" -"Copyright (c) 2005-2006 Audacious team" +"Utilizando libfaad2-%s para decodificar.\n" +"Decodificador FAAD2 AAC/HE-AAC/HE-AACv2/DRM (c) Nero AG, www.nero.com\n" +"Copyright (c) 2005-2006 El equipo de Audacious" -#: src/aac/libmp4.c:296 +#: src/aac/libmp4.c:261 msgid "About MP4 AAC decoder plugin" -msgstr "Acerca del plugin decodificador MP4 AAC" - -#: src/adplug/adplug-xmms.cc:153 -msgid "About " -msgstr "Acerca de" - -#: src/adplug/adplug-xmms.cc:157 -msgid "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"This plugin is released under the terms and conditions of the GNU LGPL.\n" -"See http://www.gnu.org/licenses/lgpl.html for details.\n" -"\n" -"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et " -"al.\n" -"Linked AdPlug library version: " -msgstr "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"Este plugin está publicado bajo los términos y condiciones de la GNU LGPL.\n" -"Ver http://www.gnu.org/licenses/lgpl.html para más información.\n" -"\n" -"Este plugin usa la librería AdPlug, la cual es copyright (C) Simon Peter, et " -"al.\n" -"Linked AdPlug library version: " - -#: src/adplug/adplug-xmms.cc:234 -msgid "AdPlug :: Configuration" -msgstr "AdPlug :: Configuración" - -#: src/adplug/adplug-xmms.cc:243 src/adplug/adplug-xmms.cc:504 -#: src/cdaudio-ng/configure.c:258 src/crystalizer/crystalizer.c:127 -#: src/echo_plugin/gui.c:122 src/jack/configure.c:146 src/null/null.c:109 -#: src/stereo_plugin/stereo.c:123 src/sun/configure.c:557 -msgid "Ok" -msgstr "Ok" - -#: src/adplug/adplug-xmms.cc:253 src/alarm/interface.c:1398 -#: src/cdaudio-ng/configure.c:263 src/crystalizer/crystalizer.c:136 -#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 -#: src/modplug/gui/interface.cxx:715 src/null/null.c:110 -#: src/stereo_plugin/stereo.c:132 src/sun/configure.c:565 -msgid "Cancel" -msgstr "Cancelar" - -#: src/adplug/adplug-xmms.cc:269 src/console/configure.c:154 -#: src/modplug/gui/interface.cxx:629 src/modplug/gui/interface.cxx:888 -msgid "General" -msgstr "General" - -#: src/adplug/adplug-xmms.cc:281 -msgid "Sound quality" -msgstr "Calidad de sonido" - -#: src/adplug/adplug-xmms.cc:286 src/modplug/gui/interface.cxx:188 -msgid "Resolution" -msgstr "Resolución" - -#: src/adplug/adplug-xmms.cc:288 -msgid "8bit" -msgstr "8bit" - -#: src/adplug/adplug-xmms.cc:293 -msgid "16bit" -msgstr "16bit" - -#: src/adplug/adplug-xmms.cc:301 src/modplug/gui/interface.cxx:219 -msgid "Channels" -msgstr "Canales" - -#: src/adplug/adplug-xmms.cc:303 src/filewriter/mp3.c:934 -#: src/mpg123/mpg123.c:174 src/sid/xs_interface.c:301 -msgid "Mono" -msgstr "Mono" - -#: src/adplug/adplug-xmms.cc:308 src/filewriter/mp3.c:929 -#: src/modplug/gui/interface.cxx:205 src/mpg123/mpg123.c:174 -#: src/sid/xs_interface.c:308 -msgid "Stereo" -msgstr "Estereo" - -#: src/adplug/adplug-xmms.cc:312 -msgid "" -"Setting stereo is not recommended, unless you need to. This won't add any " -"stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!" -msgstr "No se recomienda usar el estéreo a menos que lo necesites." - -#: src/adplug/adplug-xmms.cc:320 -msgid "Frequency" -msgstr "Frecuencia" - -#: src/adplug/adplug-xmms.cc:356 src/adplug/adplug-xmms.cc:560 -#: src/console/configure.c:156 src/gtkui/ui_manager.c:64 -#: src/skins/ui_manager.c:165 -msgid "Playback" -msgstr "Reproducción" - -#: src/adplug/adplug-xmms.cc:360 -msgid "Detect songend" -msgstr "" - -#: src/adplug/adplug-xmms.cc:364 -msgid "" -"If enabled, XMMS will detect a song's ending, stop it and advance in the " -"playlist. If disabled, XMMS won't take notice of a song's ending and loop it " -"all over again and again." -msgstr "" - -#: src/adplug/adplug-xmms.cc:375 -msgid "Formats" -msgstr "Formatos" - -#: src/adplug/adplug-xmms.cc:382 -msgid "Format selection" -msgstr "Selección de formatos" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Format" -msgstr "Formato" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Extension" -msgstr "Extensión" - -#: src/adplug/adplug-xmms.cc:425 -msgid "" -"Selected file types will be recognized and played back by this plugin. " -"Deselected types will be ignored to make room for other plugins to play " -"these files." -msgstr "" - -#: src/adplug/adplug-xmms.cc:511 -msgid "AdPlug :: File Info" -msgstr "AdPlug :: Información del archivo" - -#: src/adplug/adplug-xmms.cc:533 src/amidi-plug/i_configure-fluidsynth.c:348 -msgid "Filename" -msgstr "Nombre de archivo" - -#: src/adplug/adplug-xmms.cc:537 src/skins/ui_playlist.c:390 -msgid "Title: " -msgstr "Título: " - -#: src/adplug/adplug-xmms.cc:538 -msgid "Author: " -msgstr "Autor:" - -#: src/adplug/adplug-xmms.cc:539 -msgid "File Type: " -msgstr "Tipo de archivo: " - -#: src/adplug/adplug-xmms.cc:540 -msgid "Subsongs: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:541 -msgid "Instruments: " -msgstr "Instrumentos: " - -#: src/adplug/adplug-xmms.cc:546 -msgid "Orders: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:547 -msgid "Patterns: " -msgstr "Patrones: " - -#: src/adplug/adplug-xmms.cc:551 -msgid "Song" -msgstr "Canción" - -#: src/adplug/adplug-xmms.cc:577 -msgid "Instrument name" -msgstr "Nombre del instrumento" - -#: src/adplug/adplug-xmms.cc:619 -msgid "Song message" -msgstr "" - -#: src/adplug/adplug-xmms.cc:641 -msgid "Subsong selection" -msgstr "" - -#: src/adplug/adplug-xmms.cc:707 -msgid "Order: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:708 -msgid "Pattern: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:710 -msgid "Row: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:711 -msgid "Speed: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:712 -msgid "Timer: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:713 src/console/configure.c:234 -#: src/sid/xs_interface.c:354 -msgid "Hz" -msgstr "Hz" +msgstr "Cargar ecualizador predefinido" -#: src/alarm/interface.c:34 -msgid "About XMMS Alarm" -msgstr "Acerca de Alarma XMMS" +#: src/alarm/alarm.c:312 +msgid "About Alarm" +msgstr "Acerca de la alarma" -#: src/alarm/interface.c:47 -msgid "XMMS Alarm" -msgstr "Alarma XMMS" - -#: src/alarm/interface.c:56 +#: src/alarm/alarm.c:313 msgid "" -"An XMMS plugin which can be used\n" -"to start playing at a certain time.\n" -"\n" -"Send all complaints to:\n" -"Adam Feakin \n" -"Daniel Stodden \n" +"A plugin that can be used to start playing at a certain time.\n" "\n" -"http://www.snika.uklinux.net/xmms-alarm/" +"Originally written by Adam Feakin and Daniel Stodden." msgstr "" -"An XMMS plugin which can be used\n" -"to start playing at a certain time.\n" +"Un complemento que se puede utilizar para empezar la reproducción a una hora concreta.\n" "\n" -"Send all complaints to:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" - -#: src/alarm/interface.c:71 src/bluetooth/scan_gui.c:149 src/lirc/about.c:115 -#: src/modplug/gui/interface.cxx:972 src/sid/xs_about.c:214 -#: src/sid/xs_interface.c:1825 -msgid "Close" -msgstr "Cerrar" +"Originalmente escrito por Adam Feakin y Daniel Stodden." -#: src/alarm/interface.c:101 +#: src/alarm/interface.c:33 msgid "Alarm" msgstr "Alarma" -#: src/alarm/interface.c:109 +#: src/alarm/interface.c:40 msgid "This is your wakeup call." -msgstr "" +msgstr "Esta es su llamada para despertar." -#: src/alarm/interface.c:124 src/alarm/interface.c:1389 -#: src/modplug/gui/interface.cxx:703 src/sid/xs_config.c:322 +#: src/alarm/interface.c:55 src/alarm/interface.c:1213 msgid "OK" -msgstr "OK" - -#: src/alarm/interface.c:152 -msgid "Select Playlist" -msgstr "" - -#: src/alarm/interface.c:196 -msgid "Sorry" -msgstr "Lo siento" - -#: src/alarm/interface.c:204 -msgid "Warning" -msgstr "Advertencia" - -#: src/alarm/interface.c:213 -msgid "" -"For safety reasons the \"quiet\" time must be at least 65 seconds longer " -"than the fading time, it must also be more than 10 seconds. This basically " -"means that there is a bug in the code and until I find a way of really " -"fixing it this message will appear :)\n" -"\n" -"Your fading settings have NOT been saved\n" -"\n" -"--\n" -"Adam" -msgstr "" +msgstr "Aceptar" -#: src/alarm/interface.c:229 -msgid "Oh Well" -msgstr "" - -#: src/alarm/interface.c:388 +#: src/alarm/interface.c:214 msgid "Alarm Settings" -msgstr "Opciones de la alarma" +msgstr "Ajustes de alarma" -#: src/alarm/interface.c:404 src/alarm/interface.c:576 -#: src/alarm/interface.c:948 +#: src/alarm/interface.c:229 src/alarm/interface.c:401 +#: src/alarm/interface.c:773 msgid "Time" -msgstr "" +msgstr "Tiempo" -#: src/alarm/interface.c:445 +#: src/alarm/interface.c:270 msgid "hours" msgstr "horas" -#: src/alarm/interface.c:506 +#: src/alarm/interface.c:331 msgid "h" msgstr "h" -#: src/alarm/interface.c:536 +#: src/alarm/interface.c:361 msgid "minutes" msgstr "minutos" -#: src/alarm/interface.c:554 +#: src/alarm/interface.c:379 msgid "Quiet after:" -msgstr "" +msgstr "Silencio tras:" -#: src/alarm/interface.c:564 +#: src/alarm/interface.c:389 msgid "Alarm at (default):" -msgstr "" +msgstr "Alarma a (predeterminado):" -#: src/alarm/interface.c:584 +#: src/alarm/interface.c:409 msgid "Choose the days for the alarm to come on" -msgstr "" +msgstr "Seleccione los días para que salte la alarma" -#: src/alarm/interface.c:612 src/alarm/interface.c:660 -#: src/alarm/interface.c:708 src/alarm/interface.c:756 -#: src/alarm/interface.c:804 src/alarm/interface.c:852 -#: src/alarm/interface.c:900 src/OSS/configure.c:166 -#: src/skins/ui_manager.c:439 src/skins/ui_manager.c:460 +#: src/alarm/interface.c:437 src/alarm/interface.c:485 +#: src/alarm/interface.c:533 src/alarm/interface.c:581 +#: src/alarm/interface.c:629 src/alarm/interface.c:677 +#: src/alarm/interface.c:725 src/bs2b/plugin.c:198 src/OSS/configure.c:153 +#: src/skins/ui_equalizer.c:1104 src/skins/ui_manager.c:447 +#: src/skins/ui_manager.c:468 msgid "Default" -msgstr "" +msgstr "Predeterminado" -#: src/alarm/interface.c:938 +#: src/alarm/interface.c:763 msgid "Day" msgstr "Día" -#: src/alarm/interface.c:958 +#: src/alarm/interface.c:783 msgid "Tuesday" msgstr "Martes" -#: src/alarm/interface.c:969 +#: src/alarm/interface.c:794 msgid "Wednesday" msgstr "Miércoles" -#: src/alarm/interface.c:980 +#: src/alarm/interface.c:805 msgid "Thursday" msgstr "Jueves" -#: src/alarm/interface.c:991 +#: src/alarm/interface.c:816 msgid "Friday" msgstr "Viernes" -#: src/alarm/interface.c:1002 +#: src/alarm/interface.c:827 msgid "Saturday" msgstr "Sábado" -#: src/alarm/interface.c:1013 +#: src/alarm/interface.c:838 msgid "Sunday" msgstr "Domingo" -#: src/alarm/interface.c:1023 +#: src/alarm/interface.c:848 msgid "Monday" msgstr "Lunes" -#: src/alarm/interface.c:1034 +#: src/alarm/interface.c:859 msgid "Days" msgstr "Días" -#: src/alarm/interface.c:1050 +#: src/alarm/interface.c:875 msgid "Fading" -msgstr "" +msgstr "Desvanecimiento" -#: src/alarm/interface.c:1087 src/sid/xs_interface.c:921 -#: src/sid/xs_interface.c:975 src/sid/xs_interface.c:1155 +#: src/alarm/interface.c:912 msgid "seconds" -msgstr "" +msgstr "segundos" -#: src/alarm/interface.c:1095 src/alarm/interface.c:1211 -#: src/modplug/gui/interface.cxx:550 +#: src/alarm/interface.c:920 src/alarm/interface.c:1035 msgid "Volume" msgstr "Volumen" -#: src/alarm/interface.c:1121 +#: src/alarm/interface.c:946 msgid "Current" msgstr "Actual" -#: src/alarm/interface.c:1128 -msgid "reset to current output volume" -msgstr "" - -#: src/alarm/interface.c:1130 +#: src/alarm/interface.c:954 msgid "Start at" -msgstr "" +msgstr "Iniciar a" -#: src/alarm/interface.c:1158 src/alarm/interface.c:1202 +#: src/alarm/interface.c:982 src/alarm/interface.c:1026 msgid "%" msgstr "%" -#: src/alarm/interface.c:1174 +#: src/alarm/interface.c:998 msgid "Final" msgstr "Final" -#: src/alarm/interface.c:1227 +#: src/alarm/interface.c:1051 msgid "Additional Command" -msgstr "" +msgstr "Comando adicional" -#: src/alarm/interface.c:1253 +#: src/alarm/interface.c:1077 msgid "enable" -msgstr "habilitar" +msgstr "activar" -#: src/alarm/interface.c:1261 +#: src/alarm/interface.c:1085 msgid "Playlist (optional)" -msgstr "" +msgstr "Lista de reproducción (opcional)" -#: src/alarm/interface.c:1287 +#: src/alarm/interface.c:1111 msgid "Browse..." msgstr "Examinar..." -#: src/alarm/interface.c:1295 src/alarm/interface.c:1460 +#: src/alarm/interface.c:1119 src/alarm/interface.c:1283 msgid "Reminder" -msgstr "" +msgstr "Recordatorio" -#: src/alarm/interface.c:1312 +#: src/alarm/interface.c:1136 msgid "Use reminder" -msgstr "" +msgstr "Utilizar recordatorio" -#: src/alarm/interface.c:1328 src/sndstretch/sndstretch_xmms.c:394 +#: src/alarm/interface.c:1152 src/sndstretch/sndstretch_xmms.c:358 msgid "Options" msgstr "Opciones" -#: src/alarm/interface.c:1336 +#: src/alarm/interface.c:1160 msgid "What do these options mean?" -msgstr "" +msgstr "¿Qué significan estas opciones?" -#: src/alarm/interface.c:1364 +#: src/alarm/interface.c:1188 msgid "" "\n" "Time\n" @@ -515,480 +254,379 @@ " type the reminder in the box and turn on the\n" " toggle button if you want it to be shown.\n" msgstr "" +"\n" +"Hora\n" +" Alarma a: \n" +" La hora a la que saltará la alarma.\n" +"\n" +" Silencio tras: \n" +" Detener la alarma tras esta cantidad de tiempo.\n" +" (si el diálogo de despertar no se cierra)\n" +"\n" +"\n" +"Días\n" +" Día:\n" +" Seleccione los días para que se active la alarma.\n" +"\n" +" Hora:\n" +" Elija la hora para la alarma en cada día,\n" +" o seleccione el botón para utilizar la hora\n" +" predeterminada.\n" +"\n" +"\n" +"Volumen\n" +" Desvanecimiento: \n" +" Bajar el volumen hasta el nivel elegido \n" +" durante este periodo de tiempo.\n" +"\n" +" Iniciar a: \n" +" Empezar a desvanecer desde este volumen.\n" +"\n" +" Final: \n" +" El volumen final del desvanecimiento. Si el tiempo\n" +" de desvanecimiento es 0 se establece este volumen\n" +" y empieza la reproducción.\n" +"\n" +"\n" +"Opciones:\n" +" Comando adicional:\n" +" Ejecutar este comando a la hora de la alarma.\n" +"\n" +" Lista de reproducción: \n" +" Cargar esta lista de producción para reproducir\n" +" (debe tener una extensión .m3u). Si no se introduce\n" +" introduce ninguna lista se utilizarán las canciones\n" +" en la lista actual.\n" +" También se puede introducir la URL de un flujo\n" +" mp3/ogg, pero actualmente xmms no puede cargar\n" +" listas de reproducción desde URLs.\n" +"\n" +" Recordatorio:\n" +" Mostrar un recordatorio cuando se apaga la alarma,\n" +" escriba el recordatorio en la caja y seleccione el\n" +" botón si quiere que se muestre.\n" -#: src/alarm/interface.c:1366 src/gtkui/ui_manager.c:165 -#: src/skins/ui_manager.c:371 +#: src/alarm/interface.c:1190 src/skins/ui_manager.c:382 msgid "Help" msgstr "Ayuda" -#: src/alarm/interface.c:1468 +#: src/alarm/interface.c:1222 src/cdaudio-ng/configure.c:249 +#: src/crystalizer/crystalizer.c:130 src/echo_plugin/gui.c:125 +#: src/jack/configure.c:148 src/null/null.c:108 src/stereo_plugin/stereo.c:125 +msgid "Cancel" +msgstr "Cancelar" + +#: src/alarm/interface.c:1290 msgid "Your reminder for today is.." -msgstr "" +msgstr "Su recordatorio para hoy es..." -#: src/alarm/interface.c:1493 +#: src/alarm/interface.c:1315 msgid "Thankyou" -msgstr "" +msgstr "Gracias" -#: src/alsa/config.c:209 +#: src/alsa/config.c:210 msgid "Default PCM device" -msgstr "" +msgstr "Dispositivo PCM predeterminado" -#: src/alsa/config.c:234 +#: src/alsa/config.c:235 msgid "Default mixer device" -msgstr "" +msgstr "Dispositivo mezclador predeterminado" #: src/alsa/config.c:438 msgid "ALSA Output Plugin Preferences" -msgstr "" +msgstr "Preferencias de complemento de salida ALSA" #: src/alsa/config.c:445 msgid "PCM device:" -msgstr "" +msgstr "Dispositivo PCM:" -#: src/alsa/config.c:447 src/OSS/configure.c:256 src/sun/configure.c:218 +#: src/alsa/config.c:447 src/OSS/configure.c:237 msgid "Mixer device:" -msgstr "" +msgstr "Dispositivo mezclador:" #: src/alsa/config.c:449 msgid "Mixer element:" -msgstr "" +msgstr "Elemento mezclador:" #: src/alsa/config.c:452 msgid "Work around drain hangup" -msgstr "" +msgstr "Evitar los cuelgues por falta de recursos" -#: src/alsa/plugin.c:61 +#: src/alsa/plugin.c:59 msgid "About ALSA Output Plugin" -msgstr "" +msgstr "Acerca del complemento de salida ALSA" -#: src/alsa/plugin.c:83 +#: src/alsa/plugin.c:81 msgid "ALSA error" -msgstr "" +msgstr "Error de ALSA" -#: src/amidi-plug/amidi-plug.c:323 +#: src/amidi-plug/amidi-plug.c:326 msgid "" "You have not selected any sequencer ports for MIDI playback. You can do so " "in the MIDI plugin preferences." msgstr "" +"No tiene seleccionado ningún puerto secuenciador para la reproducción MIDI." +" Puede hacerlo en la preferencias del complemento MIDI." #: src/amidi-plug/backend-alsa/b-alsa.c:35 msgid "ALSA Backend " -msgstr "" +msgstr "Motor ALSA " #: src/amidi-plug/backend-alsa/b-alsa.c:37 msgid "" -"This backend sends MIDI events to a group of user-chosen ALSA sequencer " -"ports. The ALSA sequencer interface is very versatile, it can provide ports " -"for audio cards hardware synthesizers (i.e. emu10k1) but also for software " -"synths, external devices, etc.\n" -"This backend does not produce audio, MIDI events are handled directly from " -"devices/programs behind the ALSA ports; in example, MIDI events sent to the " -"hardware synth will be directly played.\n" +"This backend sends MIDI events to a group of user-chosen ALSA sequencer ports. The ALSA sequencer interface is very versatile, it can provide ports for audio cards hardware synthesizers (i.e. emu10k1) but also for software synths, external devices, etc.\n" +"This backend does not produce audio, MIDI events are handled directly from devices/programs behind the ALSA ports; in example, MIDI events sent to the hardware synth will be directly played.\n" "Backend written by Giacomo Lozito." msgstr "" +"Este motor envía eventos MIDI a un grupo de puertos secuenciadores ALSA definidos. El interfaz secuenciador ALSA es muy versátil, puede proporcionar puertos para sintetizadores hardware (p. ej. emu10k1) pero también sintetizadores software, dispositivos externos, etc.\n" +"Este motor no produce sonido, los eventos MIDI son manejados directamente por los dispositivos/programas tras los puertos ALSA; por ejemplo, los eventos MIDI enviados a un sintetizador hardware serán reproducidos directamente.\n" +"Motor escrito por Giacomo Lozito." -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:41 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 msgid "FluidSynth Backend " -msgstr "" +msgstr "Motor FluidSynth " -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:43 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 msgid "" -"This backend produces audio by sending MIDI events to FluidSynth, a real-" -"time software synthesizer based on the SoundFont2 specification (www." -"fluidsynth.org).\n" -"Produced audio can be manipulated via player effect plugins and is processed " -"by chosen ouput plugin.\n" +"This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" "Backend written by Giacomo Lozito." msgstr "" +"Este motor produce sonido al enviar eventos MIDI a FluidSynth, un sintetizador software en tiempo real basado en la especificación SoundFont2 (www.fluidsynth.org).\n" +"El sonido producido se puede manipular mediante complementos de efectos y es procesado por el complemento de salida elegido.\n" +"Motor escrito por Giacomo Lozito." -#: src/amidi-plug/i_configure-alsa.c:221 +#: src/amidi-plug/i_configure-alsa.c:228 msgid "ALSA BACKEND CONFIGURATION" -msgstr "" +msgstr "CONFIGURACIÓN DE MOTOR ALSA" -#: src/amidi-plug/i_configure-alsa.c:326 +#: src/amidi-plug/i_configure-alsa.c:331 msgid "Port" -msgstr "" +msgstr "Puerto" -#: src/amidi-plug/i_configure-alsa.c:328 +#: src/amidi-plug/i_configure-alsa.c:333 msgid "Client name" -msgstr "" +msgstr "Nombre del cliente" -#: src/amidi-plug/i_configure-alsa.c:330 +#: src/amidi-plug/i_configure-alsa.c:335 msgid "Port name" -msgstr "" +msgstr "Nombre del puerto" -#: src/amidi-plug/i_configure-alsa.c:341 +#: src/amidi-plug/i_configure-alsa.c:346 msgid "ALSA output ports" -msgstr "" +msgstr "Puertos de salida ALSA" -#: src/amidi-plug/i_configure-alsa.c:394 +#: src/amidi-plug/i_configure-alsa.c:399 msgid "Soundcard: " -msgstr "" +msgstr "Tarjeta de sonido: " -#: src/amidi-plug/i_configure-alsa.c:396 +#: src/amidi-plug/i_configure-alsa.c:401 msgid "Mixer control: " -msgstr "" +msgstr "Control mezclador: " -#: src/amidi-plug/i_configure-alsa.c:408 +#: src/amidi-plug/i_configure-alsa.c:413 msgid "Mixer settings" -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:421 -msgid "" -"* Select ALSA output ports *\n" -"MIDI events will be sent to the ports selected here. In example, if your " -"audio card provides a hardware synth and you want to play MIDI with it, " -"you'll probably want to select the wavetable synthesizer ports." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:426 -msgid "" -"* Select ALSA mixer card *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volumeslider will " -"manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:433 -msgid "" -"* Select ALSA mixer control *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volume slider " -"will manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" +msgstr "Ajustes del mezclador" -#: src/amidi-plug/i_configure-alsa.c:444 +#: src/amidi-plug/i_configure-alsa.c:429 msgid "ALSA Backend not loaded or not available" -msgstr "" +msgstr "Motor ALSA no cargado o no disponible" -#: src/amidi-plug/i_configure-alsa.c:463 +#: src/amidi-plug/i_configure-alsa.c:448 msgid "" "ALSA\n" "backend" msgstr "" +"motor\n" +"ALSA" -#: src/amidi-plug/i_configure-ap.c:56 +#: src/amidi-plug/i_configure-ap.c:59 msgid "AMIDI-Plug - backend information" -msgstr "" +msgstr "Complemento AMIDI - información del motor" -#: src/amidi-plug/i_configure-ap.c:194 +#: src/amidi-plug/i_configure-ap.c:196 msgid "AMIDI-PLUG PREFERENCES" -msgstr "" +msgstr "PREFERENCIAS DEL COMPLEMENTO AMIDI" -#: src/amidi-plug/i_configure-ap.c:221 +#: src/amidi-plug/i_configure-ap.c:223 msgid "Backend selection" -msgstr "" +msgstr "Selección de motor" -#: src/amidi-plug/i_configure-ap.c:225 +#: src/amidi-plug/i_configure-ap.c:227 msgid "Available backends" -msgstr "" +msgstr "Motores disponibles" -#: src/amidi-plug/i_configure-ap.c:255 +#: src/amidi-plug/i_configure-ap.c:257 msgid "Playback settings" -msgstr "" +msgstr "Ajustes de reproducción" -#: src/amidi-plug/i_configure-ap.c:260 +#: src/amidi-plug/i_configure-ap.c:262 msgid "Transpose: " -msgstr "" +msgstr "Transponer: " -#: src/amidi-plug/i_configure-ap.c:269 +#: src/amidi-plug/i_configure-ap.c:271 msgid "Drum shift: " -msgstr "" +msgstr "Cambio de batería: " -#: src/amidi-plug/i_configure-ap.c:287 +#: src/amidi-plug/i_configure-ap.c:289 msgid "Advanced settings" -msgstr "" +msgstr "Ajustes avanzados" -#: src/amidi-plug/i_configure-ap.c:291 +#: src/amidi-plug/i_configure-ap.c:293 msgid "pre-calculate length of MIDI files in playlist" -msgstr "" +msgstr "calcular la longitud de los archivos MIDI en lista de reproducción" -#: src/amidi-plug/i_configure-ap.c:296 +#: src/amidi-plug/i_configure-ap.c:298 msgid "extract comments from MIDI file (if available)" -msgstr "" +msgstr "extraer comentarios desde el archivo MIDI (si está disponible)" -#: src/amidi-plug/i_configure-ap.c:301 +#: src/amidi-plug/i_configure-ap.c:303 msgid "extract lyrics from MIDI file (if available)" -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:320 -msgid "" -"* Backend selection *\n" -"AMIDI-Plug works with backends, in a modular fashion; here you should select " -"your backend; that is, the way MIDI events are going to be handled and " -"played.\n" -"If you have a hardware synthesizer on your audio card, and ALSA supports it, " -"you'll want to use the ALSA backend. It can also be used with anything that " -"provides an interface to the ALSA sequencer, including software synths or " -"external devices.\n" -"If you want to rely on a software synthesizer and/or want to pipe audio into " -"effect and output plugins of the player you'll want to use the good " -"FluidSynth backend.\n" -"Press the info button to read specific information about each backend." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:331 -msgid "" -"* Transpose function *\n" -"This option allows you to play the midi file transposed in a different key, " -"by shifting of the desired number of semitones all its notes (excepting " -"those on midi channel 10, reserved for percussions). Especially useful if " -"you wish to sing or play along with another instrument." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:337 -msgid "" -"* Drumshift function *\n" -"This option allows you to shift notes on midi channel 10 (the standard " -"percussions channel) of the desired number of semitones. This results in " -"different drumset and percussions being used during midi playback, so if you " -"wish to enhance (or reduce, or alter) percussion sounds, try to play with " -"this value." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:344 -msgid "" -"* Pre-calculate MIDI length *\n" -"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as " -"soon as the player requests it, instead of doing that only when the MIDI " -"file is being played. In example, MIDI length will be calculated straight " -"after adding MIDI files in a playlist. Disable this option if you want " -"faster playlist loading (when a lot of MIDI files are added), enable it to " -"display more information in the playlist straight after loading." -msgstr "" +msgstr "extraer letras desde el archivo MIDI (si está disponible)" -#: src/amidi-plug/i_configure-ap.c:353 -msgid "" -"* Extract comments from MIDI files *\n" -"Some MIDI files contain text comments (author, copyright, instrument notes, " -"etc.). If this option is enabled, AMIDI-Plug will extract and display " -"comments (if available) in the file information dialog." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:358 -msgid "" -"* Extract lyrics from MIDI files *\n" -"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug " -"will extract and display song lyrics (if available) in the file information " -"dialog." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:375 +#: src/amidi-plug/i_configure-ap.c:333 msgid "" "AMIDI\n" "Plug" -msgstr "" +msgstr "Complemento AMIDI" -#: src/amidi-plug/i_configure.c:73 +#: src/amidi-plug/i_configure.c:76 msgid "AMIDI-Plug - select file" -msgstr "" +msgstr "Complemento AMIDI - seleccione un archivo" -#: src/amidi-plug/i_configure.c:126 +#: src/amidi-plug/i_configure.c:129 msgid "AMIDI-Plug - configuration" -msgstr "" +msgstr "Complemento AMIDI - configuración" -#: src/amidi-plug/i_configure-fluidsynth.c:52 +#: src/amidi-plug/i_configure-fluidsynth.c:55 msgid "AMIDI-Plug - select SoundFont file" -msgstr "" +msgstr "Complemento AMIDI - seleccione un archivo SoundFont" -#: src/amidi-plug/i_configure-fluidsynth.c:268 +#: src/amidi-plug/i_configure-fluidsynth.c:270 msgid "FLUIDSYNTH BACKEND CONFIGURATION" -msgstr "" +msgstr "CONFIGURACIÓN DE MOTOR FLUIDSYNTH" -#: src/amidi-plug/i_configure-fluidsynth.c:316 +#: src/amidi-plug/i_configure-fluidsynth.c:313 msgid "SoundFont settings" -msgstr "" +msgstr "Ajustes de SoundFont" -#: src/amidi-plug/i_configure-fluidsynth.c:352 +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Nombre del archivo" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 msgid "Size (bytes)" msgstr "Tamaño (bytes)" -#: src/amidi-plug/i_configure-fluidsynth.c:401 +#: src/amidi-plug/i_configure-fluidsynth.c:398 msgid "Load SF on player start" -msgstr "" +msgstr "Cargar SF cuando se inicie el reproductor" -#: src/amidi-plug/i_configure-fluidsynth.c:405 +#: src/amidi-plug/i_configure-fluidsynth.c:402 msgid "Load SF on first midifile play" -msgstr "" +msgstr "Cargar SF en la primera reproducción de archivo MIDI" -#: src/amidi-plug/i_configure-fluidsynth.c:420 +#: src/amidi-plug/i_configure-fluidsynth.c:417 msgid "Synthesizer settings" -msgstr "" +msgstr "Preferencias del sintetizador" -#: src/amidi-plug/i_configure-fluidsynth.c:429 +#: src/amidi-plug/i_configure-fluidsynth.c:426 msgid "gain" -msgstr "" +msgstr "ganancia" -#: src/amidi-plug/i_configure-fluidsynth.c:435 -#: src/amidi-plug/i_configure-fluidsynth.c:463 -#: src/amidi-plug/i_configure-fluidsynth.c:491 -#: src/amidi-plug/i_configure-fluidsynth.c:522 +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 msgid "use default" -msgstr "" +msgstr "usar predeterminado" -#: src/amidi-plug/i_configure-fluidsynth.c:438 -#: src/amidi-plug/i_configure-fluidsynth.c:466 +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 msgid "value:" -msgstr "" +msgstr "valor:" -#: src/amidi-plug/i_configure-fluidsynth.c:457 +#: src/amidi-plug/i_configure-fluidsynth.c:454 msgid "poliphony" -msgstr "" +msgstr "polifonía" -#: src/amidi-plug/i_configure-fluidsynth.c:485 +#: src/amidi-plug/i_configure-fluidsynth.c:482 msgid "reverb" -msgstr "" +msgstr "reverberación" -#: src/amidi-plug/i_configure-fluidsynth.c:494 -#: src/amidi-plug/i_configure-fluidsynth.c:525 +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 msgid "yes" msgstr "si" -#: src/amidi-plug/i_configure-fluidsynth.c:496 -#: src/amidi-plug/i_configure-fluidsynth.c:527 +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 msgid "no" msgstr "no" -#: src/amidi-plug/i_configure-fluidsynth.c:516 +#: src/amidi-plug/i_configure-fluidsynth.c:513 msgid "chorus" -msgstr "" +msgstr "coro" -#: src/amidi-plug/i_configure-fluidsynth.c:547 +#: src/amidi-plug/i_configure-fluidsynth.c:544 msgid "sample rate" -msgstr "" +msgstr "frecuencia de muestro" -#: src/amidi-plug/i_configure-fluidsynth.c:553 +#: src/amidi-plug/i_configure-fluidsynth.c:550 msgid "22050 Hz " msgstr "22050 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:556 +#: src/amidi-plug/i_configure-fluidsynth.c:553 msgid "44100 Hz " msgstr "44100 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:559 +#: src/amidi-plug/i_configure-fluidsynth.c:556 msgid "96000 Hz " msgstr "96000 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:562 +#: src/amidi-plug/i_configure-fluidsynth.c:559 msgid "custom " -msgstr "" +msgstr "personalizado " -#: src/amidi-plug/i_configure-fluidsynth.c:571 +#: src/amidi-plug/i_configure-fluidsynth.c:568 msgid "Hz " msgstr "Hz " #: src/amidi-plug/i_configure-fluidsynth.c:621 -msgid "" -"* Select SoundFont files *\n" -"In order to play MIDI with FluidSynth, you need to specify at least one " -"valid SoundFont file here (use absolute paths). The loading order is from " -"the top (first) to the bottom (last)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:626 -msgid "" -"* Load SoundFont on player start *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:634 -msgid "" -"* Load SoundFont on first midifile play *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:642 -msgid "" -"* Synthesizer gain *\n" -"From FluidSynth docs: the gain is applied to the final or master output of " -"the synthesizer; it is set to a low value by default to avoid the saturation " -"of the output when random MIDI files are played." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:647 -msgid "" -"* Synthesizer polyphony *\n" -"From FluidSynth docs: the polyphony defines how many voices can be played in " -"parallel; the number of voices is not necessarily equivalent to the number " -"of notes played simultaneously; indeed, when a note is struck on a specific " -"MIDI channel, the preset on that channel may create several voices, for " -"example, one for the left audio channel and one for the right audio " -"channels; the number of voices activated depends on the number of instrument " -"zones that fall in the correspond to the velocity and key of the played note." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:657 -#: src/amidi-plug/i_configure-fluidsynth.c:663 -msgid "" -"* Synthesizer reverb *\n" -"From FluidSynth docs: when set to \"yes\" the reverb effects module is " -"activated; note that when the reverb module is active, the amount of signal " -"sent to the reverb module depends on the \"reverb send\" generator defined " -"in the SoundFont." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:669 -#: src/amidi-plug/i_configure-fluidsynth.c:675 -msgid "" -"* Synthesizer chorus *\n" -"From FluidSynth docs: when set to \"yes\" the chorus effects module is " -"activated; note that when the chorus module is active, the amount of signal " -"sent to the chorus module depends on the \"chorus send\" generator defined " -"in the SoundFont." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:681 -#: src/amidi-plug/i_configure-fluidsynth.c:685 -#: src/amidi-plug/i_configure-fluidsynth.c:689 -#: src/amidi-plug/i_configure-fluidsynth.c:693 -msgid "" -"* Synthesizer samplerate *\n" -"The sample rate of the audio generated by the synthesizer. You can also " -"specify a custom value in the interval 22050Hz-96000Hz." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:701 msgid "FluidSynth Backend not loaded or not available" -msgstr "" +msgstr "Motor FluidSynth no cargado o no disponible" -#: src/amidi-plug/i_configure-fluidsynth.c:720 +#: src/amidi-plug/i_configure-fluidsynth.c:640 msgid "" "FluidSynth\n" "backend" msgstr "" +"Motor\n" +"FluidSynth" #: src/amidi-plug/i_configure-timidity.c:39 msgid "TIMIDITY BACKEND CONFIGURATION" -msgstr "" +msgstr "CONFIGURACIÓN MOTOR TIMIDITY" #: src/amidi-plug/i_configure-timidity.c:64 msgid "TiMidity Backend not loaded or not available" -msgstr "" +msgstr "Motor TiMidity no cargado o no disponible" #: src/amidi-plug/i_configure-timidity.c:83 msgid "" "TiMidity\n" "backend" msgstr "" +"Motor\n" +"TiMidity" -#: src/amidi-plug/i_fileinfo.c:169 src/bluetooth/gui.c:271 -#: src/sid/xs_interface.c:1769 +#: src/amidi-plug/i_fileinfo.c:169 msgid "Name:" msgstr "Nombre:" #: src/amidi-plug/i_fileinfo.c:193 msgid " MIDI Info " -msgstr "" +msgstr " Información MIDI " #: src/amidi-plug/i_fileinfo.c:205 msgid "Format:" @@ -996,15 +634,15 @@ #: src/amidi-plug/i_fileinfo.c:208 msgid "Length (msec):" -msgstr "" +msgstr "Longitud (mseg):" #: src/amidi-plug/i_fileinfo.c:211 msgid "Num of Tracks:" -msgstr "" +msgstr "Número de pistas:" #: src/amidi-plug/i_fileinfo.c:216 msgid "variable" -msgstr "" +msgstr "variable" #: src/amidi-plug/i_fileinfo.c:217 msgid "BPM:" @@ -1016,33 +654,35 @@ #: src/amidi-plug/i_fileinfo.c:226 msgid "Time Div:" -msgstr "" +msgstr "Div tiempo:" #: src/amidi-plug/i_fileinfo.c:237 msgid " MIDI Comments and Lyrics " -msgstr "" +msgstr " Comentarios y letras MIDI " #: src/amidi-plug/i_fileinfo.c:288 msgid "* no comments available in this MIDI file *" -msgstr "" +msgstr "* no hay comentarios disponibles en este archivo MIDI *" #: src/amidi-plug/i_fileinfo.c:301 msgid "* no lyrics available in this MIDI file *" -msgstr "" +msgstr "* no hay letras disponibles en este archivo MIDI *" #: src/amidi-plug/i_fileinfo.c:349 msgid " (invalid UTF-8)" -msgstr "" +msgstr " (UTF-8 no válido)" #: src/amidi-plug/i_utils.c:43 msgid "AMIDI-Plug - about" -msgstr "" +msgstr "Complemento AMIDI - acerca de" #: src/amidi-plug/i_utils.c:68 msgid "" "\n" "AMIDI-Plug " msgstr "" +"\n" +"Complemento AMIDI" #: src/amidi-plug/i_utils.c:69 msgid "" @@ -1069,280 +709,282 @@ "\n" msgstr "" "\n" -"modular MIDI music player\n" +"reproductor de música MIDI modular\n" "http://www.develia.org/projects.php?p=amidiplug\n" "\n" -"written by Giacomo Lozito\n" +"escrito por Giacomo Lozito\n" "< james@develia.org >\n" "\n" "\n" -"special thanks to...\n" +"agradecimientos especiales a...\n" "\n" -"Clemens Ladisch and Jaroslav Kysela\n" -"for their cool programs aplaymidi and amixer; those\n" -"were really useful, along with alsa-lib docs, in order\n" -"to learn more about the ALSA API\n" +"Clemens Ladisch y Jaroslav Kysela\n" +"por sus geniales programas aplaymidi and amixer; que\n" +"fueron muy útiles, junto con la documentación de alsa-lib,\n" +"para aprender más acerca de la programación ALSA.\n" "\n" "Alfredo Spadafina\n" -"for the nice midi keyboard logo\n" +"por el bonito logo de teclado midi\n" "\n" "Tony Vroon\n" -"for the good help with alpha testing\n" +"por su buena ayuda con las pruebas\n" "\n" #: src/aosd/aosd_style.c:75 msgid "Rectangle" -msgstr "" +msgstr "Rectángulo" #: src/aosd/aosd_style.c:79 msgid "Rounded Rectangle" -msgstr "" +msgstr "Rectángulo redondeado" #: src/aosd/aosd_style.c:83 msgid "Concave Rectangle" -msgstr "" +msgstr "Rectángulo cóncavo" #: src/aosd/aosd_style.c:87 msgid "None" -msgstr "" +msgstr "Ninguno" -#: src/aosd/aosd_trigger.c:77 +#: src/aosd/aosd_trigger.c:78 msgid "Playback Start" -msgstr "" +msgstr "Reproducción iniciada" -#: src/aosd/aosd_trigger.c:78 +#: src/aosd/aosd_trigger.c:79 msgid "Triggers OSD when a playlist entry is played." -msgstr "" +msgstr "Avisa cuando se reproduce un elemento de la lista de reproducción." -#: src/aosd/aosd_trigger.c:82 +#: src/aosd/aosd_trigger.c:83 msgid "Title Change" -msgstr "" +msgstr "Cambio de título" -#: src/aosd/aosd_trigger.c:83 +#: src/aosd/aosd_trigger.c:84 msgid "" "Triggers OSD when, during playback, the song title changes but the filename " "is the same. This is mostly useful to display title changes in internet " "streams." msgstr "" +"Avisa cuando, durante la reproducción, el título de la canción cambia pero " +"el nombre de archivo es el mismo. Esto es principalmente útil para mostrar " +"cambios de título en los flujos de Internet." -#: src/aosd/aosd_trigger.c:89 +#: src/aosd/aosd_trigger.c:90 msgid "Volume Change" -msgstr "" +msgstr "Cambio de volumen" -#: src/aosd/aosd_trigger.c:90 +#: src/aosd/aosd_trigger.c:91 msgid "Triggers OSD when volume is changed." -msgstr "" +msgstr "Avisa cuando se cambia el volumen." -#: src/aosd/aosd_trigger.c:94 +#: src/aosd/aosd_trigger.c:95 msgid "Pause On" -msgstr "" +msgstr "Inicio de pausa" -#: src/aosd/aosd_trigger.c:95 +#: src/aosd/aosd_trigger.c:96 msgid "Triggers OSD when playback is paused." -msgstr "" +msgstr "Avisa cuando la reproducción es pausada." -#: src/aosd/aosd_trigger.c:99 +#: src/aosd/aosd_trigger.c:100 msgid "Pause Off" -msgstr "" +msgstr "Fin de pausa" -#: src/aosd/aosd_trigger.c:100 +#: src/aosd/aosd_trigger.c:101 msgid "Triggers OSD when playback is unpaused." -msgstr "" +msgstr "Avisa cuando la reproducción se reanuda." -#: src/aosd/aosd_ui.c:168 +#: src/aosd/aosd_ui.c:179 msgid "Placement" -msgstr "" +msgstr "Colocación" -#: src/aosd/aosd_ui.c:202 +#: src/aosd/aosd_ui.c:218 msgid "Relative X offset:" -msgstr "" +msgstr "Desplazamiento X relativo:" -#: src/aosd/aosd_ui.c:211 +#: src/aosd/aosd_ui.c:227 msgid "Relative Y offset:" -msgstr "" +msgstr "Desplazamiento Y relativo:" -#: src/aosd/aosd_ui.c:220 +#: src/aosd/aosd_ui.c:236 msgid "Max OSD width:" -msgstr "" +msgstr "Ancho máximo:" -#: src/aosd/aosd_ui.c:233 +#: src/aosd/aosd_ui.c:249 msgid "Multi-Monitor options" -msgstr "" +msgstr "Opciones multi-monitor" -#: src/aosd/aosd_ui.c:237 +#: src/aosd/aosd_ui.c:253 msgid "Display OSD using:" -msgstr "" +msgstr "Mostrar notificaciones utilizando:" -#: src/aosd/aosd_ui.c:239 +#: src/aosd/aosd_ui.c:264 msgid "all monitors" -msgstr "" +msgstr "todos los monitores" -#: src/aosd/aosd_ui.c:242 +#: src/aosd/aosd_ui.c:267 #, c-format msgid "monitor %i" -msgstr "" +msgstr "monitor %i" -#: src/aosd/aosd_ui.c:295 +#: src/aosd/aosd_ui.c:322 msgid "Timing (ms)" -msgstr "" +msgstr "Temporización (ms)" -#: src/aosd/aosd_ui.c:300 +#: src/aosd/aosd_ui.c:327 msgid "Display:" -msgstr "" +msgstr "Mostrar:" -#: src/aosd/aosd_ui.c:305 +#: src/aosd/aosd_ui.c:332 msgid "Fade in:" -msgstr "" +msgstr "Desvanecimiento de entrada:" -#: src/aosd/aosd_ui.c:310 +#: src/aosd/aosd_ui.c:337 msgid "Fade out:" -msgstr "" +msgstr "Desvanecimiento de salida:" -#: src/aosd/aosd_ui.c:391 +#: src/aosd/aosd_ui.c:418 msgid "Fonts" -msgstr "Fuentes" +msgstr "Tipografías" -#: src/aosd/aosd_ui.c:399 +#: src/aosd/aosd_ui.c:426 #, c-format msgid "Font %i:" -msgstr "Fuente %i:" +msgstr "Tipografía %i:" -#: src/aosd/aosd_ui.c:416 +#: src/aosd/aosd_ui.c:443 msgid "Shadow" -msgstr "" +msgstr "Sombra" -#: src/aosd/aosd_ui.c:451 +#: src/aosd/aosd_ui.c:478 msgid "Internationalization" msgstr "Internacionalización" -#: src/aosd/aosd_ui.c:457 +#: src/aosd/aosd_ui.c:484 msgid "Disable UTF-8 conversion of text (in aosd)" -msgstr "" +msgstr "Deshabilitar la conversión de texto UTF-8 (en notificaciones)" -#: src/aosd/aosd_ui.c:475 +#: src/aosd/aosd_ui.c:502 msgid "Select Skin File" -msgstr "" +msgstr "Seleccione un archivo de temas" -#: src/aosd/aosd_ui.c:586 +#: src/aosd/aosd_ui.c:613 msgid "Render Style" -msgstr "" +msgstr "Estilo de renderizado" -#: src/aosd/aosd_ui.c:602 +#: src/aosd/aosd_ui.c:629 msgid "Colors" msgstr "Colores" -#: src/aosd/aosd_ui.c:615 +#: src/aosd/aosd_ui.c:642 #, c-format msgid "Color %i:" msgstr "Color %i:" -#: src/aosd/aosd_ui.c:635 +#: src/aosd/aosd_ui.c:662 msgid "Custom Skin" -msgstr "" +msgstr "Tema personalizado" -#: src/aosd/aosd_ui.c:641 +#: src/aosd/aosd_ui.c:668 msgid "Skin file:" -msgstr "" +msgstr "Archivo de temas:" -#: src/aosd/aosd_ui.c:644 src/sid/xs_interface.c:1044 -#: src/sid/xs_interface.c:1236 src/sid/xs_interface.c:1292 +#: src/aosd/aosd_ui.c:671 msgid "Browse" -msgstr "" +msgstr "Examinar" -#: src/aosd/aosd_ui.c:746 +#: src/aosd/aosd_ui.c:773 msgid "Enable trigger" -msgstr "" +msgstr "Activar disparador" -#: src/aosd/aosd_ui.c:773 +#: src/aosd/aosd_ui.c:800 msgid "Event" -msgstr "" +msgstr "Evento" -#: src/aosd/aosd_ui.c:801 +#: src/aosd/aosd_ui.c:828 msgid "Composite manager detected" -msgstr "" +msgstr "Administrador de composición detectado" -#: src/aosd/aosd_ui.c:808 +#: src/aosd/aosd_ui.c:835 msgid "" "Composite manager not detected;\n" -"unless you know that you have one running, please activate a composite " -"manager otherwise the OSD won't work properly" +"unless you know that you have one running, please activate a composite manager otherwise the OSD won't work properly" msgstr "" +"Administrador de composición no detectado;\n" +"a menos que sepa que tiene uno ejecutándose, por favor active un administrador de composición o las notificaciones no funcionarán correctamente" -#: src/aosd/aosd_ui.c:816 +#: src/aosd/aosd_ui.c:843 msgid "Composite manager not required for fake transparency" -msgstr "" +msgstr "Administrador de composición no necesario para transparencia falsa" -#: src/aosd/aosd_ui.c:854 +#: src/aosd/aosd_ui.c:881 msgid "Transparency" -msgstr "" +msgstr "Transparencia" -#: src/aosd/aosd_ui.c:860 +#: src/aosd/aosd_ui.c:887 msgid "Fake transparency" -msgstr "" +msgstr "Transparencia falsa" -#: src/aosd/aosd_ui.c:862 +#: src/aosd/aosd_ui.c:889 msgid "Real transparency (requires X Composite Ext.)" -msgstr "" +msgstr "Transparencia real (requiere composición 3D)" -#: src/aosd/aosd_ui.c:904 +#: src/aosd/aosd_ui.c:931 msgid "Composite extension not loaded" -msgstr "" +msgstr "Extensión de composición no cargada" -#: src/aosd/aosd_ui.c:912 +#: src/aosd/aosd_ui.c:939 msgid "Composite extension not available" -msgstr "" +msgstr "Extensión de composición no disponible" -#: src/aosd/aosd_ui.c:931 +#: src/aosd/aosd_ui.c:958 #, c-format msgid "Audacious OSD" -msgstr "" +msgstr "Notificaciones de Audacious" -#: src/aosd/aosd_ui.c:1012 +#: src/aosd/aosd_ui.c:1039 msgid "Audacious OSD - configuration" -msgstr "Audacious OSD - configuración" +msgstr "Notificaciones de Audacious - configuración" -#: src/aosd/aosd_ui.c:1033 +#: src/aosd/aosd_ui.c:1060 msgid "Test" -msgstr "" +msgstr "Probar" -#: src/aosd/aosd_ui.c:1048 +#: src/aosd/aosd_ui.c:1075 msgid "Position" -msgstr "" +msgstr "Posición" -#: src/aosd/aosd_ui.c:1053 +#: src/aosd/aosd_ui.c:1080 msgid "Animation" -msgstr "" +msgstr "Animación" -#: src/aosd/aosd_ui.c:1058 +#: src/aosd/aosd_ui.c:1085 msgid "Text" -msgstr "" +msgstr "Texto" -#: src/aosd/aosd_ui.c:1063 +#: src/aosd/aosd_ui.c:1090 msgid "Decoration" -msgstr "" +msgstr "Decoración" -#: src/aosd/aosd_ui.c:1068 +#: src/aosd/aosd_ui.c:1095 msgid "Trigger" -msgstr "" +msgstr "Disparador" -#: src/aosd/aosd_ui.c:1073 src/cdaudio-ng/configure.c:178 -#: src/modplug/gui/interface.cxx:689 src/sid/xs_interface.c:1302 +#: src/aosd/aosd_ui.c:1100 src/cdaudio-ng/configure.c:171 msgid "Misc" -msgstr "Misc" +msgstr "Varios" -#: src/aosd/aosd_ui.c:1110 +#: src/aosd/aosd_ui.c:1137 msgid "Audacious OSD - about" -msgstr "Audacious OSD - acerca de" +msgstr "Notificaciones de Audacious - acerca de" -#: src/aosd/aosd_ui.c:1140 +#: src/aosd/aosd_ui.c:1167 msgid "" "\n" "Audacious OSD " msgstr "" "\n" -"Audacious OSD " +"Notificaciones de Audacious" -#: src/aosd/aosd_ui.c:1141 +#: src/aosd/aosd_ui.c:1168 msgid "" "\n" "http://www.develia.org/projects.php?p=audacious#aosd\n" @@ -1359,155 +1001,42 @@ "escrito por Giacomo Lozito\n" "< james@develia.org >\n" "\n" -"On-Screen-Display is based on Ghosd library\n" -"escrito por Evan Martin\n" +"Las notificaciones de Audacious se basan en la biblioteca\n" +"Ghosd escrita por Evan Martin\n" "http://neugierig.org/software/ghosd/\n" "\n" -#: src/bluetooth/agent.c:356 src/bluetooth/agent.c:397 -#, c-format -msgid "Pairing request for '%s'" -msgstr "" - -#: src/bluetooth/agent.c:544 -#, c-format -msgid "Authorization request for %s" -msgstr "" - -#: src/bluetooth/agent.c:728 -#, c-format -msgid "Created bonding with %s" -msgstr "" - -#: src/bluetooth/agent.c:756 -#, c-format -msgid "Removed bonding with %s" -msgstr "" - -#: src/bluetooth/agent.c:808 -msgid "Device has been switched off" -msgstr "" - -#: src/bluetooth/agent.c:811 -msgid "Device has been made non-discoverable" -msgstr "" - -#: src/bluetooth/agent.c:813 -msgid "Device has been made connectable" -msgstr "" - -#: src/bluetooth/agent.c:815 -msgid "Device has been made discoverable" -msgstr "" - -#: src/bluetooth/agent.c:817 -msgid "Device has been made limited discoverable" -msgstr "" - -#: src/bluetooth/agent.c:819 -msgid "Device has been switched into pairing mode" -msgstr "" - -#: src/bluetooth/bluetooth.c:117 -msgid "Bluetooth headset support plugin" -msgstr "" - -#: src/bluetooth/bluetooth.c:118 -msgid "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the " -"Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" -msgstr "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the " -"Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" - -#: src/bluetooth/gui.c:148 -msgid "Producer" -msgstr "" - -#: src/bluetooth/gui.c:221 -msgid "Available Headsets" -msgstr "" - -#: src/bluetooth/gui.c:224 -msgid "Current Headset" -msgstr "" - -#: src/bluetooth/gui.c:227 -msgid "_Refresh" -msgstr "" - -#: src/bluetooth/gui.c:231 -msgid "_Connect" -msgstr "" - -#: src/bluetooth/gui.c:237 -msgid "_Close" -msgstr "" - -#: src/bluetooth/gui.c:274 -msgid "Class" -msgstr "" - -#: src/bluetooth/gui.c:278 -msgid "Address:" -msgstr "" - -#: src/bluetooth/scan_gui.c:69 -msgid "Bonding finish!" -msgstr "" - -#: src/bluetooth/scan_gui.c:76 -msgid "No devices found!" -msgstr "" - -#: src/bluetooth/scan_gui.c:119 -msgid "Scanning..." -msgstr "" - -#: src/bluetooth/scan_gui.c:122 -msgid "Pairing..." -msgstr "" - -#: src/bluetooth/scan_gui.c:138 -msgid "Rescan" -msgstr "" - -#: src/bluetooth/scan_gui.c:142 src/gtkui/ui_manager.c:66 -#: src/gtkui/ui_manager.c:67 src/hotkey/gui.c:71 src/skins/ui_manager.c:167 -#: src/skins/ui_manager.c:168 -msgid "Play" -msgstr "Reproducir" - #: src/blur_scope/config.c:73 msgid "Blur Scope: Color selection" -msgstr "" +msgstr "Alcance de desenfoque: Selección de color" -#: src/blur_scope/config.c:83 src/jack/configure.c:111 +#: src/blur_scope/config.c:83 src/jack/configure.c:106 msgid "Options:" msgstr "Opciones:" -#: src/cdaudio-ng/cdaudio-ng.c:278 +#: src/bs2b/plugin.c:157 +msgid "Bauer stereophonic-to-binaural Preferences" +msgstr "Preferencias del filtro Bauer estereofónico a binaural" + +#: src/bs2b/plugin.c:168 +msgid "Feed level:" +msgstr "Nivel de alimentación:" + +#: src/bs2b/plugin.c:182 +msgid "Cut frequency:" +msgstr "Cortar frecuencia:" + +#: src/bs2b/plugin.c:196 +msgid "Presets:" +msgstr "Predefinidos:" + +#: src/cdaudio-ng/cdaudio-ng.c:242 msgid "About Audio CD Plugin" -msgstr "" +msgstr "Acerca del complemento de CD de música" -#: src/cdaudio-ng/cdaudio-ng.c:279 +#: src/cdaudio-ng/cdaudio-ng.c:243 msgid "" -"Copyright (c) 2007, by Calin Crisan and The Audacious " -"Team.\n" +"Copyright (c) 2007, by Calin Crisan and The Audacious Team.\n" "\n" "Many thanks to libcdio developers \n" "\tand to libcddb developers .\n" @@ -1518,142 +1047,171 @@ "\n" "Copyright 2009 John Lindgren" msgstr "" -"Copyright (c) 2007, por Calin Crisan y el Equipo " -"Audacious.\n" +"Copyright (c) 2007, por Calin Crisan y el Equipo Audacious.\n" "\n" -"Muchas gracias a los desarrolladores de libcdio \n" +"Muchas gracias a los desarrolladores de libcdio \n" "\ty de libcddb .\n" "\n" -"También gracias a Tony Vroon su tutoría & orientación.\n" +"También gracias a Tony Vroon su tutoría y orientación.\n" "\n" "Este fue un proyecto del Google Summer of Code 2007.\n" "\n" "Copyright 2009 John Lindgren" -#: src/cdaudio-ng/configure.c:155 +#: src/cdaudio-ng/cdaudio-ng.c:552 +msgid "Audio CD" +msgstr "CD de música" + +#: src/cdaudio-ng/cdaudio-ng.c:924 +msgid "Drive is empty." +msgstr "La unidad está vacía." + +#: src/cdaudio-ng/cdaudio-ng.c:926 +msgid "Unsupported disk type." +msgstr "Tipo de disco no soportado." + +#: src/cdaudio-ng/configure.c:148 msgid "CD Audio Plugin Configuration" -msgstr "" +msgstr "Configuración de complemento de CD de música" -#: src/cdaudio-ng/configure.c:167 +#: src/cdaudio-ng/configure.c:160 msgid "Digital audio extraction" -msgstr "" +msgstr "Extracción digital de sonido" -#: src/cdaudio-ng/configure.c:172 +#: src/cdaudio-ng/configure.c:165 msgid "Title information" -msgstr "" +msgstr "Información de título" -#: src/cdaudio-ng/configure.c:190 +#: src/cdaudio-ng/configure.c:176 msgid "Disc speed:" -msgstr "" +msgstr "Velocidad de Disco:" -#: src/cdaudio-ng/configure.c:198 +#: src/cdaudio-ng/configure.c:184 msgid "Use cd-text if available" -msgstr "" +msgstr "Usar texto en CD si está disponible" -#: src/cdaudio-ng/configure.c:205 +#: src/cdaudio-ng/configure.c:191 msgid "Use CDDB if available" -msgstr "" +msgstr "Usar CDDB si está disponible" -#: src/cdaudio-ng/configure.c:211 +#: src/cdaudio-ng/configure.c:197 msgid "Server: " -msgstr "" +msgstr "Servidor: " -#: src/cdaudio-ng/configure.c:215 +#: src/cdaudio-ng/configure.c:201 msgid "Path: " -msgstr "" +msgstr "Ruta: " -#: src/cdaudio-ng/configure.c:219 +#: src/cdaudio-ng/configure.c:205 msgid "Port: " -msgstr "" +msgstr "Puerto:" -#: src/cdaudio-ng/configure.c:232 +#: src/cdaudio-ng/configure.c:218 msgid "Use HTTP instead of CDDBP" -msgstr "" +msgstr "Usar HTTP en lugar de CDDBP" -#: src/cdaudio-ng/configure.c:244 +#: src/cdaudio-ng/configure.c:230 msgid "Override default device: " -msgstr "" +msgstr "Sobreescribir el dispositivo predeterminado: " + +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:123 +#: src/echo_plugin/gui.c:118 src/jack/configure.c:141 src/null/null.c:107 +#: src/stereo_plugin/stereo.c:118 +msgid "Ok" +msgstr "Aceptar" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Play CD" msgstr "Reproducir CD" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Add CD" msgstr "Añadir CD" -#: src/compressor/plugin.c:58 +#: src/compressor/plugin.c:63 msgid "About Dynamic Range Compression Plugin" -msgstr "" +msgstr "Acerca del complemento de compresión de rango dinámico" -#: src/compressor/plugin.c:91 +#: src/compressor/plugin.c:95 msgid "Dynamic Range Compressor Preferences" -msgstr "" +msgstr "Preferencias del compresor de rango dinámico" -#: src/compressor/plugin.c:103 -msgid "Target volume:" -msgstr "" +#: src/compressor/plugin.c:107 +msgid "Center volume:" +msgstr "Centrar volumen:" -#: src/compressor/plugin.c:116 -msgid "Effect strength:" -msgstr "" +#: src/compressor/plugin.c:120 +msgid "Dynamic range:" +msgstr "Rango dinámico:" -#: src/console/configure.c:137 +#: src/console/configure.c:136 msgid "Game Console Music Decoder" -msgstr "" +msgstr "Decodificador musical de videoconsola" + +#: src/console/configure.c:153 +msgid "General" +msgstr "General" + +#: src/console/configure.c:155 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "Reproducción" -#: src/console/configure.c:171 +#: src/console/configure.c:170 msgid "Bass:" -msgstr "" +msgstr "Graves:" -#: src/console/configure.c:175 src/console/configure.c:186 -#: src/console/configure.c:207 +#: src/console/configure.c:174 src/console/configure.c:185 +#: src/console/configure.c:206 msgid "secs" -msgstr "" +msgstr "segs" -#: src/console/configure.c:182 +#: src/console/configure.c:181 msgid "Treble:" -msgstr "" +msgstr "Agudos:" -#: src/console/configure.c:203 +#: src/console/configure.c:202 msgid "Default song length:" -msgstr "" +msgstr "Longitud de canción predeterminada:" -#: src/console/configure.c:209 src/modplug/gui/interface.cxx:269 -#: src/sid/xs_interface.c:666 +#: src/console/configure.c:208 msgid "Resampling" -msgstr "" +msgstr "Remuestreo" -#: src/console/configure.c:215 +#: src/console/configure.c:214 msgid "Enable audio resampling" -msgstr "" +msgstr "Activar el remuestreo de sonido" -#: src/console/configure.c:230 +#: src/console/configure.c:229 msgid "Resampling rate:" -msgstr "" +msgstr "Tasa de remuestreo:" -#: src/console/configure.c:245 +#: src/console/configure.c:233 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:244 msgid "SPC" msgstr "SPC" -#: src/console/configure.c:246 +#: src/console/configure.c:245 msgid "Ignore length from SPC tags" -msgstr "" +msgstr "Ignorar longitud de etiquetas SPC" -#: src/console/configure.c:247 +#: src/console/configure.c:246 msgid "Increase reverb" -msgstr "" +msgstr "Aumentar la reverberación" -#: src/console/configure.c:272 +#: src/console/configure.c:271 msgid "" -"The default song length, expressed in seconds, is used for songs that do not " -"provide length information (i.e. looping tracks)." +"The default song length, expressed in seconds, is used for songs that do not" +" provide length information (i.e. looping tracks)." msgstr "" +"La longitud de canción predeterminada, expresada en segundos, es usada para " +"canciones que no preveén información de longitud (es decir pistas cíclicas)." #: src/console/plugin.c:33 msgid "About the Game Console Music Decoder" -msgstr "" +msgstr "Acerca del decodificador de música de videoconsola" #: src/console/plugin.c:34 msgid "" @@ -1662,3439 +1220,2208 @@ "Audacious implementation by: William Pitcock , \n" " Shay Green \n" msgstr "" -"Console music decoder engine based on Game_Music_Emu 0.5.2.\n" -"Supported formats: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" -"Audacious implementation by: William Pitcock , \n" +"El motor decodificador de música de videoconsola está basado en Game_Music_Emu 0.5.2.\n" +"Formatos sopotados: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Implementación de Audacious por: William Pitcock , \n" " Shay Green \n" -#: src/crossfade/plugin.c:51 +#: src/crossfade/plugin.c:60 msgid "About Crossfade" -msgstr "" +msgstr "Acerca de la atenuación cruzada" -#: src/crossfade/plugin.c:84 +#: src/crossfade/plugin.c:92 msgid "Crossfade Preferences" -msgstr "" +msgstr "Preferencias de la atenuación cruzada" -#: src/crossfade/plugin.c:95 +#: src/crossfade/plugin.c:104 msgid "Overlap (in seconds):" -msgstr "" +msgstr "Solapamiento (en segundos):" -#: src/crossfade/plugin.c:129 src/crossfade/plugin.c:137 +#: src/crossfade/plugin.c:135 src/crossfade/plugin.c:141 msgid "Crossfade Error" -msgstr "" +msgstr "Error de atenuación cruzada" -#: src/crossfade/plugin.c:130 +#: src/crossfade/plugin.c:135 msgid "" "Crossfading failed because the songs had a different number of channels." msgstr "" +"La atenuación cruzada falló porque las canciones tienen números diferentes " +"de canales." -#: src/crossfade/plugin.c:138 +#: src/crossfade/plugin.c:143 msgid "" "Crossfading failed because the songs had different sample rates.\n" "\n" -"You can use the Sample Rate Converter effect to resample the songs to the " -"same rate." +"You can use the Sample Rate Converter effect to resample the songs to the same rate." msgstr "" +"La tenuación cruzada falló porque las canciones tienen diferentes frecuencias de muestreo.\n" +"\n" +"Puede usar el efecto convertidor de frecuencia de muestro para volver a muestrear las canciones a la misma tasa." -#: src/crystalizer/crystalizer.c:104 +#: src/crystalizer/crystalizer.c:100 msgid "Configure Crystalizer" -msgstr "" +msgstr "Configurar el cristalizador" -#: src/crystalizer/crystalizer.c:106 src/stereo_plugin/stereo.c:102 +#: src/crystalizer/crystalizer.c:102 src/stereo_plugin/stereo.c:97 msgid "Effect intensity:" -msgstr "" +msgstr "Intensidad de efectos:" -#: src/crystalizer/crystalizer.c:143 src/echo_plugin/gui.c:137 -#: src/modplug/gui/interface.cxx:709 src/stereo_plugin/stereo.c:139 +#: src/crystalizer/crystalizer.c:136 src/echo_plugin/gui.c:131 +#: src/stereo_plugin/stereo.c:131 msgid "Apply" msgstr "Aplicar" -#: src/echo_plugin/gui.c:14 +#: src/echo_plugin/gui.c:15 msgid "" "Echo Plugin\n" "By Johan Levin 1999.\n" "\n" "Surround echo by Carl van Schaik 1999" msgstr "" -"Echo Plugin\n" -"By Johan Levin 1999.\n" +"Complemento de eco\n" +"por Johan Levin 1999.\n" "\n" -"Surround echo by Carl van Schaik 1999" +"Eco envolvente por Carl van Schaik 1999" -#: src/echo_plugin/gui.c:26 +#: src/echo_plugin/gui.c:27 msgid "About Echo Plugin" -msgstr "" +msgstr "Acerca del complemento de eco" -#: src/echo_plugin/gui.c:69 +#: src/echo_plugin/gui.c:67 msgid "Configure Echo" -msgstr "" +msgstr "Configurar eco" -#: src/echo_plugin/gui.c:82 +#: src/echo_plugin/gui.c:83 msgid "Delay: (ms)" -msgstr "" +msgstr "Retraso: (ms)" -#: src/echo_plugin/gui.c:87 +#: src/echo_plugin/gui.c:88 msgid "Feedback: (%)" -msgstr "" +msgstr "Retroalimentación: (%)" -#: src/echo_plugin/gui.c:92 +#: src/echo_plugin/gui.c:93 msgid "Volume: (%)" -msgstr "" +msgstr "Volumen: (%)" -#: src/evdev-plug/ed.c:60 -msgid "Playback->Play" -msgstr "" +#: src/ffaudio/ffaudio-core.c:725 +#, c-format +msgid "" +"Multi-format audio decoding plugin for Audacious based on\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious plugin by:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" +msgstr "" +"Complemento de decodificación de sonido multi-formato para Audacious\n" +"basado en el marco multimedia FFmpeg (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, y otros.\n" +"\n" +"Complemento de Audacious por:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" -#: src/evdev-plug/ed.c:61 -msgid "Playback->Stop" -msgstr "" +#: src/ffaudio/ffaudio-core.c:739 +msgid "About FFaudio Plugin" +msgstr "Acerca del complemento FFaudio" -#: src/evdev-plug/ed.c:62 -msgid "Playback->Pause" -msgstr "" +#: src/filewriter/filewriter.c:166 +msgid "About FileWriter-Plugin" +msgstr "Acerca del complemento escritor de archivos" -#: src/evdev-plug/ed.c:63 -msgid "Playback->Prev" -msgstr "" +#: src/filewriter/filewriter.c:461 +msgid "File Writer Configuration" +msgstr "Configuración del escritor de archivos" -#: src/evdev-plug/ed.c:64 -msgid "Playback->Next" -msgstr "" +#: src/filewriter/filewriter.c:473 +msgid "Output file format:" +msgstr "Formato del archivo de salida:" -#: src/evdev-plug/ed.c:65 -msgid "Playback->Eject" -msgstr "" +#: src/filewriter/filewriter.c:491 +msgid "Configure" +msgstr "Configurar" -#: src/evdev-plug/ed.c:67 -msgid "Playlist->Repeat" -msgstr "" +#: src/filewriter/filewriter.c:506 +msgid "Save into original directory" +msgstr "Guardar dentro del directorio original" -#: src/evdev-plug/ed.c:68 -msgid "Playlist->Shuffle" -msgstr "" +#: src/filewriter/filewriter.c:511 +msgid "Save into custom directory" +msgstr "Guardar dentro de directorio personalizado" -#: src/evdev-plug/ed.c:70 -msgid "Volume->Up_5" -msgstr "" +#: src/filewriter/filewriter.c:521 +msgid "Output file folder:" +msgstr "Carpeta de archivo de salida:" -#: src/evdev-plug/ed.c:71 -msgid "Volume->Down_5" -msgstr "" +#: src/filewriter/filewriter.c:525 +msgid "Pick a folder" +msgstr "Elija una carpeta" -#: src/evdev-plug/ed.c:72 -msgid "Volume->Up_10" -msgstr "" +#: src/filewriter/filewriter.c:544 +msgid "Get filename from:" +msgstr "Obtener nombre de archivo desde:" -#: src/evdev-plug/ed.c:73 -msgid "Volume->Down_10" -msgstr "" +#: src/filewriter/filewriter.c:547 +msgid "original file tags" +msgstr "etiquetas del archivo original" -#: src/evdev-plug/ed.c:74 -msgid "Volume->Mute" -msgstr "" +#: src/filewriter/filewriter.c:553 +msgid "original filename" +msgstr "nombre del archivo original" -#: src/evdev-plug/ed.c:76 -msgid "Window->Main" -msgstr "" +#: src/filewriter/filewriter.c:563 +msgid "Don't strip file name extension" +msgstr "No quitar la extensión del archivo" -#: src/evdev-plug/ed.c:77 -msgid "Window->Playlist" -msgstr "" +#: src/filewriter/filewriter.c:578 +msgid "Prepend track number to filename" +msgstr "Anteponer el número de pista al nombre de archivo" -#: src/evdev-plug/ed.c:78 -msgid "Window->Equalizer" -msgstr "" +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:765 +msgid "Auto" +msgstr "Auto" -#: src/evdev-plug/ed.c:79 -msgid "Window->JumpToFile" -msgstr "" +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" +msgstr "Estéreo conjunto" -#: src/evdev-plug/ed_internals.c:94 -#, c-format -msgid "" -"event-device-plugin: unable to open device file %s , skipping this device; " -"check that the file exists and that you have read permission for it\n" -msgstr "" +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Stereo" +msgstr "Estereo" -#: src/evdev-plug/ed_internals.c:103 -#, c-format -msgid "" -"event-device-plugin: unable to create a io_channel for device file %s ," -"skipping this device\n" -msgstr "" +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Mono" +msgstr "Mono" -#: src/evdev-plug/ed_internals.c:342 -msgid "" -"event-device-plugin: unable to open /proc/bus/input/devices , automatic " -"detection of event devices won't work.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:351 -msgid "" -"event-device-plugin: unable to open a io_channel for /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" +#: src/filewriter/mp3.c:706 +msgid "MP3 Configuration" +msgstr "Configuración MP3" -#: src/evdev-plug/ed_internals.c:361 -msgid "" -"event-device-plugin: an error occurred while reading /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" +#: src/filewriter/mp3.c:729 +msgid "Algorithm Quality:" +msgstr "Calidad del algoritmo:" -#: src/evdev-plug/ed_internals.c:424 -#, c-format -msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" -msgstr "" +#: src/filewriter/mp3.c:754 +msgid "Output Samplerate:" +msgstr "Frecuencia de muestreo de salida:" -#: src/evdev-plug/ed_internals.c:489 src/evdev-plug/ed_internals.c:583 -#, c-format -msgid "" -"event-device-plugin: unable to load config file %s , default settings will " -"be used.\n" -msgstr "" +#: src/filewriter/mp3.c:782 +msgid "(Hz)" +msgstr "(Hz)" -#: src/evdev-plug/ed_internals.c:535 -#, c-format -msgid "" -"event-device-plugin: incomplete information in config file for device \"%s" -"\" , skipping.\n" -msgstr "" +#: src/filewriter/mp3.c:789 +msgid "Bitrate / Compression ratio:" +msgstr "Tasa de bits / Compresión:" -#: src/evdev-plug/ed_internals.c:604 src/evdev-plug/ed_internals.c:936 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_active value for device " -"\"%s\", skipping it.\n" -msgstr "" +#: src/filewriter/mp3.c:813 +msgid "Bitrate (kbps):" +msgstr "Tasa de bits (kbps):" -#: src/evdev-plug/ed_internals.c:840 -#, c-format -msgid "" -"event-device-plugin: unable to access local directory %s , settings will not " -"be saved.\n" -msgstr "" +#: src/filewriter/mp3.c:846 +msgid "Compression ratio:" +msgstr "Compresión:" -#: src/evdev-plug/ed_internals.c:890 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get filename value for device " -"\"%s\", skipping it.\n" -msgstr "" +#: src/filewriter/mp3.c:870 +msgid "Audio Mode:" +msgstr "Modo de sonido:" -#: src/evdev-plug/ed_internals.c:906 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get phys value for device \"%s" -"\", skipping it.\n" -msgstr "" +#: src/filewriter/mp3.c:895 +msgid "Misc:" +msgstr "Varios:" -#: src/evdev-plug/ed_internals.c:922 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_custom value for device " -"\"%s\", skipping it.\n" -msgstr "" +#: src/filewriter/mp3.c:906 +msgid "Enforce strict ISO complience" +msgstr "Cumplir estrictamente la norma ISO" -#: src/evdev-plug/ed_internals.c:946 -#, c-format -msgid "" -"event-device-plugin: configuration, unexpected value for device \"%s\", " -"skipping it.\n" -msgstr "" +#: src/filewriter/mp3.c:917 +msgid "Error protection" +msgstr "Error de protección" -#: src/evdev-plug/ed_ui.c:212 -msgid "Detected" -msgstr "" +#: src/filewriter/mp3.c:929 src/filewriter/vorbis.c:247 +msgid "Quality" +msgstr "Calidad" -#: src/evdev-plug/ed_ui.c:217 -msgid "Custom" -msgstr "" +#: src/filewriter/mp3.c:939 +msgid "Enable VBR/ABR" +msgstr "Activar VBR/ABR" -#: src/evdev-plug/ed_ui.c:223 -msgid "Not Detected" -msgstr "" +#: src/filewriter/mp3.c:949 +msgid "Type:" +msgstr "Tipo:" -#: src/evdev-plug/ed_ui.c:275 src/evdev-plug/ed_ui.c:411 -#: src/evdev-plug/ed_ui.c:874 -msgid "Information" -msgstr "" +#: src/filewriter/mp3.c:982 +msgid "VBR Options:" +msgstr "Opciones VBR:" -#: src/evdev-plug/ed_ui.c:276 -msgid "" -"Cannot open bindings window for a not-detected device.\n" -"Ensure that the device has been correctly plugged in." -msgstr "" +#: src/filewriter/mp3.c:998 +msgid "Minimum bitrate (kbps):" +msgstr "Tasa de bits mínima (kbps):" -#: src/evdev-plug/ed_ui.c:319 -msgid "Error" -msgstr "" +#: src/filewriter/mp3.c:1025 +msgid "Maximum bitrate (kbps):" +msgstr "Tasa de bits máxima (kbps):" -#: src/evdev-plug/ed_ui.c:320 -msgid "" -"Unable to open selected device.\n" -"Please check read permissions on device file." -msgstr "" +#: src/filewriter/mp3.c:1048 +msgid "Strictly enforce minimum bitrate" +msgstr "Aplicar estrictamente la tasa de bits mínima" -#: src/evdev-plug/ed_ui.c:341 -msgid "EvDev-Plug - Add custom device" -msgstr "" +#: src/filewriter/mp3.c:1060 +msgid "ABR Options:" +msgstr "Opciones ABR:" -#: src/evdev-plug/ed_ui.c:353 -msgid "" -"EvDev-Plug tries to automatically detect and update information about\n" -"event devices available on the system.\n" -"However, if auto-detect doesn't work for your system, or you have event\n" -"devices in a non-standard location (currently they're only searched in\n" -"/dev/input/ ), you may want to add a custom device, explicitly specifying\n" -"name and device file." -msgstr "" +#: src/filewriter/mp3.c:1070 +msgid "Average bitrate (kbps):" +msgstr "Tasa de bits promedio (kbps):" -#: src/evdev-plug/ed_ui.c:361 -msgid "Device name:" -msgstr "" +#: src/filewriter/mp3.c:1098 +msgid "VBR quality level:" +msgstr "Nivel de calidad VBR:" -#: src/evdev-plug/ed_ui.c:365 -msgid "Device file:" -msgstr "" +#: src/filewriter/mp3.c:1117 +msgid "Don't write Xing VBR header" +msgstr "No escribir la cabecera VBR Xing" -#: src/evdev-plug/ed_ui.c:404 -msgid "(custom)" -msgstr "" +#: src/filewriter/mp3.c:1131 +msgid "VBR/ABR" +msgstr "VBR/ABR" -#: src/evdev-plug/ed_ui.c:412 -msgid "" -"Please specify both name and filename.\n" -"Filename must be specified with absolute path." -msgstr "" +#: src/filewriter/mp3.c:1141 +msgid "Frame params:" +msgstr "Prametros de cuadro:" -#: src/evdev-plug/ed_ui.c:447 -msgid "Do you want to remove the existing configuration for selected device?\n" -msgstr "" +#: src/filewriter/mp3.c:1153 +msgid "Mark as copyright" +msgstr "Marcar como derechos de autor" -#: src/evdev-plug/ed_ui.c:466 -msgid "Do you want to remove the selected custom device?\n" -msgstr "" +#: src/filewriter/mp3.c:1164 +msgid "Mark as original" +msgstr "Marcar como original" -#: src/evdev-plug/ed_ui.c:612 -msgid "EvDev-Plug - Configuration" -msgstr "" +#: src/filewriter/mp3.c:1176 +msgid "ID3 params:" +msgstr "Parametros ID3:" -#: src/evdev-plug/ed_ui.c:651 -msgid "Active" -msgstr "" +#: src/filewriter/mp3.c:1187 +msgid "Force addition of version 2 tag" +msgstr "Forzar adición de etiqueta de la versión 2" -#: src/evdev-plug/ed_ui.c:655 src/sun/configure.c:486 -msgid "Status" -msgstr "" +#: src/filewriter/mp3.c:1197 +msgid "Only add v1 tag" +msgstr "Solo agregar etiqueta v1" -#: src/evdev-plug/ed_ui.c:664 -msgid "Device Name" -msgstr "" +#: src/filewriter/mp3.c:1204 +msgid "Only add v2 tag" +msgstr "Solo agregar etiqueta v2" -#: src/evdev-plug/ed_ui.c:668 -msgid "Device File" -msgstr "" +#: src/filewriter/mp3.c:1225 +msgid "Tags" +msgstr "Etiquetas" -#: src/evdev-plug/ed_ui.c:672 -msgid "Device Address" -msgstr "" +#: src/filewriter/vorbis.c:240 +msgid "Vorbis Encoder Configuration" +msgstr "Configuración de codificador Vorbis" -#: src/evdev-plug/ed_ui.c:689 -msgid "_Bindings" -msgstr "" +#: src/filewriter/vorbis.c:260 +msgid "Quality level (0 - 10):" +msgstr "Nivel de calidad (0 - 10):" -#: src/evdev-plug/ed_ui.c:838 -msgid "" -"Press a key of your device to bind it;\n" -"if no key is pressed in five seconds, this window\n" -"will close without binding changes." -msgstr "" +#: src/flacng/plugin.c:380 +msgid "About FLAC Audio Plugin" +msgstr "Acerca del complemento de sonido FLAC" -#: src/evdev-plug/ed_ui.c:875 +#: src/flacng/plugin.c:381 msgid "" -"This input event has been already assigned.\n" "\n" -"It's not possible to assign multiple actions to the same input event " -"(although it's possible to assign the same action to multiple events)." -msgstr "" - -#: src/evdev-plug/ed_ui.c:1323 -msgid "EvDev-Plug - Bindings Configuration" -msgstr "" - -#: src/evdev-plug/ed_ui.c:1363 -msgid "Name: " -msgstr "" - -#: src/evdev-plug/ed_ui.c:1372 -msgid "Filename: " -msgstr "" - -#: src/evdev-plug/ed_ui.c:1381 -msgid "Phys.Address: " -msgstr "" - -#: src/evdev-plug/ed_ui.c:1460 -msgid "EvDev-Plug - about" -msgstr "" - -#: src/evdev-plug/ed_ui.c:1491 -msgid "" "\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" +"Original code by\n" +"Ralf Ertzinger \n" "\n" -"written by Giacomo Lozito\n" +"http://www.skytale.net/projects/bmp-flac2/" msgstr "" "\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" +"Código original por\n" +"Ralf Ertzinger \n" "\n" -"written by Giacomo Lozito\n" +"http://www.skytale.net/projects/bmp-flac2/" + +#: src/gnomeshortcuts/gnomeshortcuts.c:303 +msgid "About Gnome Shortcut Plugin" +msgstr "Acerca del complemento de atajos Gnome" -#: src/ffaudio/ffaudio-core.c:662 -#, fuzzy, c-format +#: src/gnomeshortcuts/gnomeshortcuts.c:304 msgid "" -"Multi-format audio decoding plugin for Audacious based on\n" -"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" -"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"Gnome Shortcut Plugin\n" +"Let's you control the player with Gnome's shortcuts.\n" "\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" "\n" -"Audacious plugin by:\n" -" William Pitcock ,\n" -" Matti Hämäläinen \n" msgstr "" -"Multi-format audio decoding plugin for Audacious based on\n" -"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" -"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"Complemento de atajos Gnome\n" +"Le permite controlar el reproductor con atajos de Gnome.\n" "\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" -"Supported formats: %s\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" "\n" -"Audacious plugin by:\n" -" William Pitcock ,\n" -" Matti Hämäläinen \n" -#: src/ffaudio/ffaudio-core.c:675 -msgid "About FFaudio Plugin" -msgstr "" +#: src/gtkui/columns.c:36 +msgid "Entry number" +msgstr "Número de entrada" -#: src/filewriter/filewriter.c:180 -msgid "About FileWriter-Plugin" -msgstr "" +#: src/gtkui/columns.c:36 src/search-tool/search-tool.c:43 +msgid "Title" +msgstr "Título" -#: src/filewriter/filewriter.c:181 -msgid "" -"FileWriter-Plugin\n" -"\n" -"This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" -"FileWriter-Plugin\n" -"\n" -"This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:42 +msgid "Artist" +msgstr "Artista" -#: src/filewriter/filewriter.c:466 -msgid "File Writer Configuration" -msgstr "" +#: src/gtkui/columns.c:37 +msgid "Year" +msgstr "Año" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:43 +msgid "Album" +msgstr "Album" + +#: src/gtkui/columns.c:37 +msgid "Track" +msgstr "Pista" + +#: src/gtkui/columns.c:37 +msgid "Queue position" +msgstr "Posición de la cola" + +#: src/gtkui/columns.c:38 +msgid "Length" +msgstr "Longitud" + +#: src/gtkui/columns.c:38 +msgid "File path" +msgstr "Ruta del archivo" -#: src/filewriter/filewriter.c:478 -msgid "Output file format:" -msgstr "" +#: src/gtkui/columns.c:38 +msgid "File name" +msgstr "Nombre del archivo" -#: src/filewriter/filewriter.c:496 src/ladspa/ladspa.c:1058 -msgid "Configure" -msgstr "Configurar" +#: src/gtkui/columns.c:38 +msgid "Custom title" +msgstr "Título personalizado" + +#: src/gtkui/columns.c:39 +msgid "Bitrate" +msgstr "Tasa de bits" + +#: src/gtkui/columns.c:278 +msgid "Choose Columns" +msgstr "Seleccionar columnas" + +#: src/gtkui/columns.c:292 +msgid "Available:" +msgstr "Disponible:" + +#: src/gtkui/columns.c:326 +msgid "Chosen:" +msgstr "Seleccionado:" + +#: src/gtkui/layout.c:122 +msgid "Dock at Left" +msgstr "Acoplar a la izquierda" + +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "Acoplar a la derecha" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "Acoplar arriba" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "Acoplar abajo" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "Desacoplar" + +#: src/gtkui/layout.c:123 src/ladspa/plugin.c:644 +msgid "Disable" +msgstr "Deshabilitar" + +#: src/gtkui/menus.c:131 +msgid "_Open Files ..." +msgstr "_Abrir archivos ..." + +#: src/gtkui/menus.c:132 +msgid "Open _URL ..." +msgstr "Abrir _URL ..." + +#: src/gtkui/menus.c:133 +msgid "_Add Files ..." +msgstr "_Añadir archivos ..." + +#: src/gtkui/menus.c:134 +msgid "Add U_RL ..." +msgstr "Añadir U_RL ..." + +#: src/gtkui/menus.c:136 +msgid "A_bout ..." +msgstr "A_cerca de ..." + +#: src/gtkui/menus.c:137 +msgid "_Preferences ..." +msgstr "_Preferencias" -#: src/filewriter/filewriter.c:511 -msgid "Save into original directory" -msgstr "" +#: src/gtkui/menus.c:138 src/skins/ui_manager.c:406 +msgid "_Quit" +msgstr "_Salir" -#: src/filewriter/filewriter.c:516 -msgid "Save into custom directory" -msgstr "" +#: src/gtkui/menus.c:141 +msgid "_Play" +msgstr "_Reproducir" -#: src/filewriter/filewriter.c:528 -msgid "Output file folder:" -msgstr "" +#: src/gtkui/menus.c:142 +msgid "Paus_e" +msgstr "Pa_usar" -#: src/filewriter/filewriter.c:532 -msgid "Pick a folder" -msgstr "" +#: src/gtkui/menus.c:143 +msgid "_Stop" +msgstr "_Detener" -#: src/filewriter/filewriter.c:551 -msgid "Get filename from:" -msgstr "" +#: src/gtkui/menus.c:144 +msgid "Pre_vious" +msgstr "An_terior" -#: src/filewriter/filewriter.c:554 -msgid "original file tags" -msgstr "" +#: src/gtkui/menus.c:145 +msgid "_Next" +msgstr "Si_guiente" -#: src/filewriter/filewriter.c:560 -msgid "original filename" -msgstr "" +#: src/gtkui/menus.c:147 +msgid "_Repeat" +msgstr "R_epetir" -#: src/filewriter/filewriter.c:570 -msgid "Don't strip file name extension" -msgstr "" +#: src/gtkui/menus.c:148 +msgid "S_huffle" +msgstr "_Orden aleatorio" -#: src/filewriter/filewriter.c:574 -msgid "" -"If enabled, the extension from the original filename will not be stripped " -"before adding the new file extension to the end." -msgstr "" +#: src/gtkui/menus.c:149 +msgid "N_o Playlist Advance" +msgstr "No avan_zar la lista de reproducción" -#: src/filewriter/filewriter.c:588 -msgid "Prepend track number to filename" -msgstr "" +#: src/gtkui/menus.c:150 +msgid "Stop _After This Song" +msgstr "_Detener tras esta canción" -#: src/filewriter/mp3.c:710 -msgid "MP3 Configuration" -msgstr "" +#: src/gtkui/menus.c:152 src/gtkui/menus.c:212 +msgid "Song _Info ..." +msgstr "_Información de la canción ..." -#: src/filewriter/mp3.c:737 -msgid "Algorithm Quality:" -msgstr "" +#: src/gtkui/menus.c:153 +msgid "Jump to _Time ..." +msgstr "_Saltar en el tiempo ..." -#: src/filewriter/mp3.c:759 -msgid "" -"best/slowest:0;\n" -"worst/fastest:9;\n" -"recommended:2;\n" -"default:5;" -msgstr "" +#: src/gtkui/menus.c:154 +msgid "_Jump to Song ..." +msgstr "Saltar a la _canción ..." -#: src/filewriter/mp3.c:767 -msgid "Output Samplerate:" -msgstr "" +#: src/gtkui/menus.c:157 +msgid "By Track _Number" +msgstr "Por _número de pista" -#: src/filewriter/mp3.c:778 src/filewriter/mp3.c:919 -msgid "Auto" -msgstr "Auto" +#: src/gtkui/menus.c:158 +msgid "By _Title" +msgstr "Por _título" -#: src/filewriter/mp3.c:800 -msgid "(Hz)" -msgstr "(Hz)" +#: src/gtkui/menus.c:159 +msgid "By _Artist" +msgstr "Por _artista" -#: src/filewriter/mp3.c:812 -msgid "Bitrate / Compression ratio:" -msgstr "" +#: src/gtkui/menus.c:160 +msgid "By A_lbum" +msgstr "Por a_lbum" -#: src/filewriter/mp3.c:838 -msgid "Bitrate (kbps):" -msgstr "" +#: src/gtkui/menus.c:161 +msgid "By Release _Date" +msgstr "Por _fecha de estreno" -#: src/filewriter/mp3.c:879 -msgid "Compression ratio:" -msgstr "" +#: src/gtkui/menus.c:162 +msgid "By _File Path" +msgstr "Por _ruta de archivo" -#: src/filewriter/mp3.c:909 -msgid "Audio Mode:" -msgstr "" +#: src/gtkui/menus.c:163 +msgid "By _Custom Title" +msgstr "Por título _personalizado" -#: src/filewriter/mp3.c:924 -msgid "Joint-Stereo" -msgstr "" +#: src/gtkui/menus.c:165 +msgid "R_everse Order" +msgstr "Orden _inverso" -#: src/filewriter/mp3.c:967 -msgid "Misc:" -msgstr "" +#: src/gtkui/menus.c:166 +msgid "_Random Order" +msgstr "Orden alea_torio" -#: src/filewriter/mp3.c:978 -msgid "Enforce strict ISO complience" -msgstr "" +#: src/gtkui/menus.c:169 src/gtkui/menus.c:214 +msgid "_Refresh" +msgstr "A_ctualizar" -#: src/filewriter/mp3.c:989 -msgid "Error protection" -msgstr "" +#: src/gtkui/menus.c:170 +msgid "Remove _Unavailable Files" +msgstr "Eliminar archivos _no disponibles" -#: src/filewriter/mp3.c:1001 -msgid "Adds 16 bit checksum to every frame" -msgstr "" +#: src/gtkui/menus.c:172 +msgid "_Sort" +msgstr "_Ordenar" -#: src/filewriter/mp3.c:1006 src/filewriter/vorbis.c:247 -#: src/modplug/gui/interface.cxx:320 -msgid "Quality" -msgstr "" +#: src/gtkui/menus.c:174 +msgid "_New" +msgstr "_Nuevo" -#: src/filewriter/mp3.c:1018 -msgid "Enable VBR/ABR" -msgstr "" +#: src/gtkui/menus.c:175 src/gtkui/menus.c:225 +msgid "_Close" +msgstr "_Cerrar" -#: src/filewriter/mp3.c:1030 -msgid "Type:" -msgstr "" +#: src/gtkui/menus.c:177 +msgid "_Import ..." +msgstr "_Importar ..." -#: src/filewriter/mp3.c:1041 -msgid "Variable bitrate" -msgstr "" +#: src/gtkui/menus.c:178 +msgid "_Export ..." +msgstr "_Exportar ..." -#: src/filewriter/mp3.c:1053 -msgid "Average bitrate" -msgstr "" +#: src/gtkui/menus.c:180 +msgid "_Playlist Manager ..." +msgstr "_Gestor de listas de reproducción ..." -#: src/filewriter/mp3.c:1067 -msgid "VBR Options:" -msgstr "" +#: src/gtkui/menus.c:181 +msgid "_Queue Manager ..." +msgstr "Gestor de _colas ..." -#: src/filewriter/mp3.c:1083 -msgid "Minimum bitrate (kbps):" -msgstr "" +#: src/gtkui/menus.c:184 +msgid "Volume _Up" +msgstr "_Subir volumen" -#: src/filewriter/mp3.c:1119 -msgid "Maximum bitrate (kbps):" -msgstr "" +#: src/gtkui/menus.c:185 +msgid "Volume _Down" +msgstr "_Bajar volumen" -#: src/filewriter/mp3.c:1151 -msgid "Strictly enforce minimum bitrate" -msgstr "" +#: src/gtkui/menus.c:187 +msgid "_Equalizer" +msgstr "_Ecualizador" -#: src/filewriter/mp3.c:1153 -msgid "" -"For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/" -"mp3 player)" -msgstr "" +#: src/gtkui/menus.c:189 +msgid "E_ffects" +msgstr "E_fectos" -#: src/filewriter/mp3.c:1166 -msgid "ABR Options:" -msgstr "" +#: src/gtkui/menus.c:192 +msgid "_Interface" +msgstr "_Interfaz" -#: src/filewriter/mp3.c:1176 -msgid "Average bitrate (kbps):" -msgstr "" +#: src/gtkui/menus.c:193 +msgid "_Visualizations" +msgstr "_Visualizaciones" -#: src/filewriter/mp3.c:1213 -msgid "VBR quality level:" -msgstr "" +#: src/gtkui/menus.c:195 +msgid "Show _Menu Bar" +msgstr "_Mostrar barra de menú" -#: src/filewriter/mp3.c:1228 -msgid "" -"highest:0;\n" -"lowest:9;\n" -"default:4;" -msgstr "" +#: src/gtkui/menus.c:196 +msgid "Show I_nfo Bar" +msgstr "Mostrar barra de _información" -#: src/filewriter/mp3.c:1236 -msgid "Don't write Xing VBR header" -msgstr "" +#: src/gtkui/menus.c:197 +msgid "Show _Status Bar" +msgstr "Mostrar barra de _estado" -#: src/filewriter/mp3.c:1250 -msgid "VBR/ABR" -msgstr "VBR/ABR" +#: src/gtkui/menus.c:199 +msgid "Show Column _Headers" +msgstr "Mostrar _cabeceras de columna" -#: src/filewriter/mp3.c:1262 -msgid "Frame params:" -msgstr "" +#: src/gtkui/menus.c:200 +msgid "Choose _Columns ..." +msgstr "_Seleccionar columnas ..." -#: src/filewriter/mp3.c:1274 -msgid "Mark as copyright" -msgstr "" +#: src/gtkui/menus.c:201 +msgid "Scrol_l on Song Change" +msgstr "A_vanzar al cambiar de canción" -#: src/filewriter/mp3.c:1285 -msgid "Mark as original" -msgstr "" +#: src/gtkui/menus.c:204 +msgid "_File" +msgstr "_Archivo" -#: src/filewriter/mp3.c:1297 -msgid "ID3 params:" -msgstr "" +#: src/gtkui/menus.c:205 +msgid "_Playback" +msgstr "_Reproducción" -#: src/filewriter/mp3.c:1308 -msgid "Force addition of version 2 tag" -msgstr "" +#: src/gtkui/menus.c:206 +msgid "P_laylist" +msgstr "_Lista de reproducción" -#: src/filewriter/mp3.c:1318 -msgid "Only add v1 tag" -msgstr "" +#: src/gtkui/menus.c:207 src/gtkui/menus.c:221 +msgid "_Services" +msgstr "_Servicios" -#: src/filewriter/mp3.c:1325 -msgid "Only add v2 tag" -msgstr "" +#: src/gtkui/menus.c:208 +msgid "_Output" +msgstr "Sali_da" -#: src/filewriter/mp3.c:1346 -msgid "Tags" -msgstr "" +#: src/gtkui/menus.c:209 +msgid "_View" +msgstr "_Ver" -#: src/filewriter/vorbis.c:240 -msgid "Vorbis Encoder Configuration" -msgstr "" - -#: src/filewriter/vorbis.c:260 -msgid "Quality level (0 - 10):" -msgstr "" - -#: src/flacng/plugin.c:457 -msgid "FLAC Audio Plugin " -msgstr "" - -#: src/flacng/plugin.c:458 -msgid "" -"\n" -"\n" -"Original code by\n" -"Ralf Ertzinger \n" -"\n" -"http://www.skytale.net/projects/bmp-flac2/" -msgstr "" -"\n" -"\n" -"Original code by\n" -"Ralf Ertzinger \n" -"\n" -"http://www.skytale.net/projects/bmp-flac2/" - -#: src/flacng/plugin.c:464 -msgid "About FLAC Audio Plugin" -msgstr "" - -#: src/gnomeshortcuts/gnomeshortcuts.c:306 -msgid "About Gnome Shortcut Plugin" -msgstr "" - -#: src/gnomeshortcuts/gnomeshortcuts.c:307 -msgid "" -"Gnome Shortcut Plugin\n" -"Let's you control the player with Gnome's shortcuts.\n" -"\n" -"Copyright (C) 2007-2008 Sascha Hlusiak \n" -"\n" -msgstr "" -"Gnome Shortcut Plugin\n" -"Let's you control the player with Gnome's shortcuts.\n" -"\n" -"Copyright (C) 2007-2008 Sascha Hlusiak \n" -"\n" - -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:273 -msgid "Open Files" -msgstr "" - -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 -msgid "Add Files" -msgstr "" - -#: src/gntui/gntui.c:271 -msgid "Audacious2" -msgstr "Audacious2" +#: src/gtkui/menus.c:213 +msgid "_Queue/Unqueue" +msgstr "_Encolar/desencolar" -#: src/gntui/gntui.c:312 -msgid "gnt interface" -msgstr "" - -#: src/gtkui/actions.c:257 src/skins/ui_main.c:818 -msgid "Can't jump to time when no track is being played.\n" -msgstr "" - -#: src/gtkui/actions.c:272 src/gtkui/ui_manager.c:204 -#: src/gtkui/ui_manager.c:205 src/skins/ui_main.c:833 -#: src/skins/ui_manager.c:410 src/skins/ui_manager.c:411 -msgid "Jump to Time" -msgstr "" - -#: src/gtkui/actions.c:289 src/skins/ui_main.c:854 -msgid "minutes:seconds" -msgstr "" +#: src/gtkui/menus.c:216 +msgid "Cu_t" +msgstr "Cor_tar" -#: src/gtkui/actions.c:299 src/skins/ui_main.c:864 -msgid "Track length:" -msgstr "" - -#: src/gtkui/actions.c:610 src/skins/ui_playlist.c:648 -#, c-format -msgid "Error writing playlist \"%s\": %s" -msgstr "" +#: src/gtkui/menus.c:217 +msgid "_Copy" +msgstr "_Copiar" -#: src/gtkui/actions.c:625 src/skins/ui_playlist.c:670 -#, c-format -msgid "%s already exist. Continue?" -msgstr "%s ya existe. ¿Desea continuar?" +#: src/gtkui/menus.c:218 +msgid "_Paste" +msgstr "_Pegar" -#: src/gtkui/actions.c:651 src/skins/ui_manager.c:214 -msgid "Export Playlist" -msgstr "" +#: src/gtkui/menus.c:219 +msgid "Select _All" +msgstr "Seleccionar _todo" -#: src/gtkui/actions.c:723 src/skins/ui_manager.c:211 -msgid "Import Playlist" -msgstr "" +#: src/gtkui/menus.c:224 +msgid "_Rename" +msgstr "_Renombrar" -#: src/gtkui/ui_gtk.c:72 +#: src/gtkui/ui_gtk.c:95 msgid "GTK Interface" -msgstr "" +msgstr "Interfaz GTK" -#: src/gtkui/ui_gtk.c:281 src/skins/ui_main.c:388 +#: src/gtkui/ui_gtk.c:156 src/skins/ui_main.c:303 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.c:287 src/skins/ui_main.c:390 src/skins/ui_main.c:2166 -msgid "Audacious" -msgstr "Audacious" - -#: src/gtkui/ui_manager.c:35 src/gtkui/ui_manager.c:36 -#: src/skins/ui_manager.c:53 src/skins/ui_manager.c:54 -msgid "Stop after Current Song" -msgstr "" - -#: src/gtkui/ui_manager.c:38 src/gtkui/ui_manager.c:39 -#: src/skins/ui_manager.c:59 src/skins/ui_manager.c:60 -msgid "Repeat" -msgstr "" - -#: src/gtkui/ui_manager.c:41 src/gtkui/ui_manager.c:42 -#: src/skins/ui_manager.c:62 src/skins/ui_manager.c:63 -msgid "Shuffle" -msgstr "" - -#: src/gtkui/ui_manager.c:44 src/gtkui/ui_manager.c:45 -#: src/skins/ui_manager.c:65 src/skins/ui_manager.c:66 -msgid "No Playlist Advance" -msgstr "" - -#: src/gtkui/ui_manager.c:47 -msgid "Show playlists" -msgstr "" - -#: src/gtkui/ui_manager.c:48 -msgid "Show/hide playlists" -msgstr "" - -#: src/gtkui/ui_manager.c:50 -msgid "Show infoarea" -msgstr "" - -#: src/gtkui/ui_manager.c:51 -msgid "Show/hide infoarea" -msgstr "" - -#: src/gtkui/ui_manager.c:53 -msgid "Show main menu" -msgstr "" - -#: src/gtkui/ui_manager.c:54 -msgid "Show/hide main menu" -msgstr "" - -#: src/gtkui/ui_manager.c:56 -msgid "Show statusbar" -msgstr "" - -#: src/gtkui/ui_manager.c:57 -msgid "Show/hide statusbar" -msgstr "" - -#: src/gtkui/ui_manager.c:69 src/gtkui/ui_manager.c:70 -#: src/skins/ui_manager.c:170 src/skins/ui_manager.c:171 -msgid "Pause" -msgstr "Pausar" - -#: src/gtkui/ui_manager.c:72 src/gtkui/ui_manager.c:73 src/hotkey/gui.c:73 -#: src/skins/ui_manager.c:173 src/skins/ui_manager.c:174 -msgid "Stop" -msgstr "Detener" - -#: src/gtkui/ui_manager.c:75 src/gtkui/ui_manager.c:76 -#: src/skins/ui_manager.c:176 src/skins/ui_manager.c:177 -msgid "Previous" -msgstr "Anterior" - -#: src/gtkui/ui_manager.c:78 src/gtkui/ui_manager.c:79 -#: src/skins/ui_manager.c:179 src/skins/ui_manager.c:180 -msgid "Next" -msgstr "Siguiente" - -#: src/gtkui/ui_manager.c:84 src/skins/ui_manager.c:197 -msgid "Playlist" -msgstr "Lista de reproducción" - -#: src/gtkui/ui_manager.c:86 src/gtkui/ui_manager.c:87 -#: src/skins/ui_manager.c:199 src/skins/ui_manager.c:200 -msgid "New Playlist" -msgstr "Nueva lista de reproducción" - -#: src/gtkui/ui_manager.c:89 src/gtkui/ui_manager.c:90 -#: src/skins/ui_manager.c:208 src/skins/ui_manager.c:209 -msgid "Delete Playlist" -msgstr "Eliminar lista de reproducción" - -#: src/gtkui/ui_manager.c:92 -#, fuzzy -msgid "Import Playlist ..." -msgstr "Cargar lista de reproducción" - -#: src/gtkui/ui_manager.c:93 src/skins/ui_manager.c:212 -msgid "Loads a playlist file into the selected playlist." -msgstr "Cargar lista de reproducción en la lista seleccionada" - -#: src/gtkui/ui_manager.c:95 -#, fuzzy -msgid "Export Playlist ..." -msgstr "Cargar lista de reproducción" - -#: src/gtkui/ui_manager.c:96 src/skins/ui_manager.c:215 -msgid "Saves the selected playlist." -msgstr "Guardar la lista de reproducción seleccionada" - -#: src/gtkui/ui_manager.c:98 src/skins/ui_manager.c:217 -msgid "Save All Playlists" -msgstr "Guardar todas las listas de reproducción" - -#: src/gtkui/ui_manager.c:99 src/skins/ui_manager.c:218 -msgid "" -"Saves all the playlists that are open. Note that this is done automatically " -"when Audacious quits." -msgstr "" - -#: src/gtkui/ui_manager.c:103 -msgid "Refresh" -msgstr "" - -#: src/gtkui/ui_manager.c:104 src/skins/ui_manager.c:223 -msgid "Refreshes metadata associated with a playlist entry." -msgstr "" - -#: src/gtkui/ui_manager.c:107 -#, fuzzy -msgid "Playlist Manager" -msgstr "Lista de reproducción" - -#: src/gtkui/ui_manager.c:108 src/skins/ui_manager.c:227 -msgid "Opens the playlist manager." -msgstr "" - -#: src/gtkui/ui_manager.c:111 -msgid "Add URL ..." -msgstr "" - -#: src/gtkui/ui_manager.c:112 src/skins/ui_manager.c:237 -msgid "Adds a remote track to the playlist." -msgstr "" - -#: src/gtkui/ui_manager.c:115 -msgid "Add Files ..." -msgstr "" - -#: src/gtkui/ui_manager.c:116 src/skins/ui_manager.c:241 -msgid "Adds files to the playlist." -msgstr "" - -#: src/gtkui/ui_manager.c:119 src/skins/ui_manager.c:264 -msgid "Remove All" -msgstr "" - -#: src/gtkui/ui_manager.c:120 src/skins/ui_manager.c:265 -msgid "Removes all entries from the playlist." -msgstr "" - -#: src/gtkui/ui_manager.c:123 src/skins/ui_manager.c:290 -msgid "Remove Unselected" -msgstr "" - -#: src/gtkui/ui_manager.c:124 src/skins/ui_manager.c:291 -msgid "Remove unselected entries from the playlist." -msgstr "" - -#: src/gtkui/ui_manager.c:127 src/skins/ui_manager.c:294 -msgid "Remove Selected" -msgstr "" - -#: src/gtkui/ui_manager.c:128 src/skins/ui_manager.c:295 -msgid "Remove selected entries from the playlist." -msgstr "" - -#: src/gtkui/ui_manager.c:131 -#, fuzzy -msgid "Sort" -msgstr "Lo siento" - -#: src/gtkui/ui_manager.c:132 src/skins/ui_manager.c:330 -#: src/skins/ui_manager.c:360 -msgid "By Track Number" -msgstr "" - -#: src/gtkui/ui_manager.c:134 src/skins/ui_manager.c:278 -#: src/skins/ui_manager.c:306 src/skins/ui_manager.c:336 -msgid "By Title" -msgstr "Por título" - -#: src/gtkui/ui_manager.c:136 src/skins/ui_manager.c:314 -#: src/skins/ui_manager.c:344 -msgid "By Artist" -msgstr "Por artista" - -#: src/gtkui/ui_manager.c:138 src/skins/ui_manager.c:310 -#: src/skins/ui_manager.c:340 -msgid "By Album" -msgstr "Por álbum" - -#: src/gtkui/ui_manager.c:140 -#, fuzzy -msgid "By File Path" -msgstr "Por nombre de archivo" - -#: src/gtkui/ui_manager.c:142 -msgid "Reverse Order" -msgstr "" - -#: src/gtkui/ui_manager.c:147 -msgid "Output" -msgstr "" - -#: src/gtkui/ui_manager.c:149 src/modplug/gui/interface.cxx:572 -msgid "Effects" -msgstr "" - -#: src/gtkui/ui_manager.c:151 -msgid "Equalizer" -msgstr "" - -#: src/gtkui/ui_manager.c:156 src/skins/ui_manager.c:232 -msgid "View" -msgstr "Ver" - -#: src/gtkui/ui_manager.c:157 src/skins/ui_manager.c:233 -msgid "Interface" -msgstr "" - -#: src/gtkui/ui_manager.c:164 src/skins/ui_manager.c:370 -msgid "File" -msgstr "Archivo" - -#: src/gtkui/ui_manager.c:167 -msgid "Components" -msgstr "" - -#: src/gtkui/ui_manager.c:169 src/gtkui/ui_manager.c:172 -#: src/skins/ui_manager.c:375 src/skins/ui_manager.c:378 -msgid "View Track Details" -msgstr "" - -#: src/gtkui/ui_manager.c:170 src/gtkui/ui_manager.c:173 -#: src/skins/ui_manager.c:376 src/skins/ui_manager.c:379 -msgid "View track details" -msgstr "" - -#: src/gtkui/ui_manager.c:175 src/gtkui/ui_manager.c:176 -#: src/skins/ui_manager.c:381 src/skins/ui_manager.c:382 -msgid "About Audacious" -msgstr "Acerca de Audacious" - -#: src/gtkui/ui_manager.c:178 -msgid "Open Files ..." -msgstr "" - -#: src/gtkui/ui_manager.c:179 src/skins/ui_manager.c:385 -msgid "Load and play a file" -msgstr "" - -#: src/gtkui/ui_manager.c:181 -msgid "Open URL ..." -msgstr "" - -#: src/gtkui/ui_manager.c:182 src/skins/ui_manager.c:388 -msgid "Play media from the selected location" -msgstr "" - -#: src/gtkui/ui_manager.c:184 src/skins/ui_manager.c:390 -msgid "Plugin services" -msgstr "Servicios de plugins" - -#: src/gtkui/ui_manager.c:186 src/skins/ui_manager.c:392 -msgid "Preferences" -msgstr "Preferencias" - -#: src/gtkui/ui_manager.c:187 src/skins/ui_manager.c:393 -msgid "Open preferences window" -msgstr "" - -#: src/gtkui/ui_manager.c:189 src/skins/ui_manager.c:395 -msgid "_Quit" -msgstr "Salir" - -#: src/gtkui/ui_manager.c:190 src/skins/ui_manager.c:396 -msgid "Quit Audacious" -msgstr "Cerrar Audacious" - -#: src/gtkui/ui_manager.c:192 src/gtkui/ui_manager.c:193 -#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 -msgid "Set A-B" -msgstr "" - -#: src/gtkui/ui_manager.c:195 src/gtkui/ui_manager.c:196 -#: src/skins/ui_manager.c:401 src/skins/ui_manager.c:402 -msgid "Clear A-B" -msgstr "" - -#: src/gtkui/ui_manager.c:198 src/gtkui/ui_manager.c:199 -#: src/skins/ui_manager.c:404 src/skins/ui_manager.c:405 -msgid "Jump to Playlist Start" -msgstr "" - -#: src/gtkui/ui_manager.c:201 src/gtkui/ui_manager.c:202 src/hotkey/gui.c:80 -#: src/skins/ui_manager.c:407 src/skins/ui_manager.c:408 -msgid "Jump to File" -msgstr "" - -#: src/gtkui/ui_manager.c:207 src/skins/ui_manager.c:413 -msgid "Queue Toggle" -msgstr "" - -#: src/gtkui/ui_manager.c:208 src/skins/ui_manager.c:414 -msgid "Enables/disables the entry in the playlist's queue." -msgstr "" - -#: src/gtkui/ui_manager.c:211 src/skins/ui_manager.c:417 -msgid "Copy" -msgstr "Copiar" - -#: src/gtkui/ui_manager.c:214 src/skins/ui_manager.c:419 -msgid "Cut" -msgstr "Cortar" - -#: src/gtkui/ui_manager.c:217 src/skins/ui_manager.c:421 -msgid "Paste" -msgstr "Pegar" - -#: src/gtkui/ui_manager.c:220 src/skins/ui_manager.c:254 -msgid "Select All" -msgstr "Seleccionar todo" - -#: src/gtkui/ui_manager.c:221 src/skins/ui_manager.c:255 -msgid "Selects all of the playlist entries." -msgstr "" - -#: src/gtkui/ui_manager.c:224 src/skins/ui_manager.c:258 -msgid "Select None" -msgstr "" - -#: src/gtkui/ui_manager.c:225 src/skins/ui_manager.c:259 -msgid "Deselects all of the playlist entries." -msgstr "" - -#: src/gtkui/ui_statusbar.c:91 src/skins/ui_main.c:609 -msgid "mono" -msgstr "mono" - -#: src/gtkui/ui_statusbar.c:94 src/skins/ui_main.c:608 -msgid "stereo" -msgstr "estéreo" - -#: src/gtkui/ui_statusbar.c:97 -#, fuzzy, c-format -msgid "%d channels" -msgstr "Canales" - -#: src/gtkui/ui_statusbar.c:101 -#, c-format -msgid "%s: %d kbps, %d Hz, %s" -msgstr "" - -#: src/hotkey/gui.c:70 -msgid "Previous Track" -msgstr "" - -#: src/hotkey/gui.c:72 -msgid "Pause/Resume" -msgstr "" - -#: src/hotkey/gui.c:74 -msgid "Next Track" -msgstr "" - -#: src/hotkey/gui.c:75 -msgid "Forward 5 Seconds" -msgstr "" - -#: src/hotkey/gui.c:76 -msgid "Rewind 5 Seconds" -msgstr "" - -#: src/hotkey/gui.c:77 -msgid "Mute" -msgstr "" - -#: src/hotkey/gui.c:78 -msgid "Volume Up" -msgstr "" - -#: src/hotkey/gui.c:79 -msgid "Volume Down" -msgstr "" - -#: src/hotkey/gui.c:81 -msgid "Toggle Player Windows" -msgstr "" - -#: src/hotkey/gui.c:82 -msgid "Show On-Screen-Display" -msgstr "" - -#: src/hotkey/gui.c:92 -msgid "(none)" -msgstr "" - -#: src/hotkey/gui.c:229 -msgid "" -"It is not recommended to bind the primary mouse buttons without " -"modificators.\n" -"\n" -"Do you want to continue?" -msgstr "" - -#: src/hotkey/gui.c:231 -msgid "Binding mouse buttons" -msgstr "" - -#: src/hotkey/gui.c:381 -msgid "Global Hotkey Plugin Configuration" -msgstr "" - -#: src/hotkey/gui.c:397 -msgid "" -"Press a key combination inside a text field.\n" -"You can also bind mouse buttons." -msgstr "" - -#: src/hotkey/gui.c:402 -msgid "Hotkeys:" -msgstr "" - -#: src/hotkey/gui.c:421 -msgid "Action:" -msgstr "" - -#: src/hotkey/gui.c:429 -msgid "Key Binding:" -msgstr "" - -#: src/hotkey/gui.c:660 -msgid "About Global Hotkey Plugin" -msgstr "" - -#: src/hotkey/gui.c:661 -msgid "" -"Global Hotkey Plugin\n" -"Control the player with global key combinations or multimedia keys.\n" -"\n" -"Copyright (C) 2007-2008 Sascha Hlusiak \n" -"\n" -"Contributers include:\n" -"Copyright (C) 2006-2007 Vladimir Paskov \n" -"Copyright (C) 2000-2002 Ville Syrjälä \n" -"\t\t\tBryn Davies \n" -"\t\t\tJonathan A. Davis \n" -"\t\t\tJeremy Tan \n" -"\n" -msgstr "" -"Global Hotkey Plugin\n" -"Control the player with global key combinations or multimedia keys.\n" -"\n" -"Copyright (C) 2007-2008 Sascha Hlusiak \n" -"\n" -"Contributers include:\n" -"Copyright (C) 2006-2007 Vladimir Paskov \n" -"Copyright (C) 2000-2002 Ville Syrjälä \n" -"\t\t\tBryn Davies \n" -"\t\t\tJonathan A. Davis \n" -"\t\t\tJeremy Tan \n" -"\n" - -#: src/jack/configure.c:71 -msgid "Connect to all available jack ports" -msgstr "" - -#: src/jack/configure.c:78 -msgid "Connect only the output ports" -msgstr "" - -#: src/jack/configure.c:85 -msgid "Connect to no ports" -msgstr "" - -#: src/jack/configure.c:103 -msgid "jack Plugin configuration" -msgstr "" - -#: src/jack/configure.c:121 -msgid "Connection mode:" -msgstr "" - -#: src/jack/configure.c:133 -msgid "Enable debug printing" -msgstr "" - -#: src/jack/jack.c:437 -msgid "" -"XMMS jack Driver 0.17\n" -"\n" -"xmms-jack.sf.net\n" -"Chris Morgan\n" -"\n" -"Audacious port by\n" -"Giacomo Lozito from develia.org" -msgstr "" -"XMMS jack Driver 0.17\n" -"\n" -"xmms-jack.sf.net\n" -"Chris Morgan\n" -"\n" -"Audacious port by\n" -"Giacomo Lozito from develia.org" - -#: src/jack/jack.c:442 -msgid "About JACK Output Plugin 0.17" -msgstr "" - -#: src/ladspa/ladspa.c:824 -msgid "This LADSPA plugin has no user controls" -msgstr "" - -#: src/ladspa/ladspa.c:865 src/ladspa/ladspa.c:952 -msgid "Name" -msgstr "" - -#: src/ladspa/ladspa.c:952 -msgid "UID" -msgstr "" - -#: src/ladspa/ladspa.c:1029 -msgid "Installed plugins" -msgstr "" - -#: src/ladspa/ladspa.c:1037 -msgid "Running plugins" -msgstr "" - -#: src/ladspa/ladspa.c:1052 -msgid "Add" -msgstr "" - -#: src/ladspa/ladspa.c:1055 -msgid "Remove" -msgstr "" - -#: src/ladspa/ladspa.c:1066 -msgid "LADSPA Plugin Catalog" -msgstr "" - -#: src/lirc/about.c:63 -msgid "About LIRC Audacious Plugin" -msgstr "" - -#: src/lirc/about.c:90 -msgid "LIRC Plugin " -msgstr "" - -#: src/lirc/about.c:92 -msgid "" -"\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" -"\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" -msgstr "" -"\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" -"\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" - -#: src/lirc/interface.c:37 -msgid "LIRC plugin settings" -msgstr "" - -#: src/lirc/interface.c:61 -msgid "Reconnect to LIRC server" -msgstr "" - -#: src/lirc/interface.c:68 -msgid "Timeout before reconnecting (seconds): " -msgstr "" - -#: src/lirc/interface.c:75 -msgid "Reconnect" -msgstr "" - -#: src/lirc/interface.c:79 -msgid "Connection" -msgstr "" - -#: src/lirc/lirc.c:82 -#, c-format -msgid "%s: could not init LIRC support\n" -msgstr "" - -#: src/lirc/lirc.c:90 -#, c-format -msgid "" -"%s: could not read LIRC config file\n" -"%s: please read the documentation of LIRC\n" -"%s: how to create a proper config file\n" -msgstr "" - -#: src/lirc/lirc.c:117 -#, c-format -msgid "%s: trying to reconnect...\n" -msgstr "" - -#: src/lirc/lirc.c:332 -#, c-format -msgid "%s: unknown command \"%s\"\n" -msgstr "" - -#: src/lirc/lirc.c:342 -#, c-format -msgid "%s: disconnected from LIRC\n" -msgstr "" - -#: src/lirc/lirc.c:346 -#, c-format -msgid "%s: will try reconnect every %d seconds...\n" -msgstr "" - -#: src/lyricwiki/lyricwiki.c:244 -msgid "LyricWiki" -msgstr "" - -#: src/lyricwiki/lyricwiki.c:337 -msgid "" -"\n" -"No lyrics were found." -msgstr "" - -#: src/metronom/metronom.c:90 -msgid "About Metronom" -msgstr "" - -#: src/metronom/metronom.c:91 -msgid "" -"A Tact Generator by Martin Strauss \n" -"\n" -"To use it, add a URL: tact://beats*num/den\n" -"e.g. tact://77 to play 77 beats per minute\n" -"or tact://60*3/4 to play 60 bpm in 3/4 tacts" -msgstr "" -"A Tact Generator by Martin Strauss \n" -"\n" -"To use it, add a URL: tact://beats*num/den\n" -"e.g. tact://77 to play 77 beats per minute\n" -"or tact://60*3/4 to play 60 bpm in 3/4 tacts" - -#: src/metronom/metronom.c:145 -#, c-format -msgid "Tact generator: %d bpm" -msgstr "" - -#: src/metronom/metronom.c:147 -#, c-format -msgid "Tact generator: %d bpm %d/%d" -msgstr "" - -#: src/modplug/gui/interface.cxx:137 -msgid "ModPlug Configuration" -msgstr "" - -#: src/modplug/gui/interface.cxx:174 -msgid "16 bit" -msgstr "16 bit" - -#: src/modplug/gui/interface.cxx:181 -msgid "8 bit" -msgstr "8 bit" - -#: src/modplug/gui/interface.cxx:212 -msgid "Mono (downmix)" -msgstr "" - -#: src/modplug/gui/interface.cxx:241 -msgid "Nearest (fastest)" -msgstr "" - -#: src/modplug/gui/interface.cxx:248 -msgid "Linear (fast)" -msgstr "" - -#: src/modplug/gui/interface.cxx:255 -msgid "Spline (good quality)" -msgstr "" - -#: src/modplug/gui/interface.cxx:262 -msgid "8-tap Fir (extremely high quality)" -msgstr "" - -#: src/modplug/gui/interface.cxx:286 -msgid "96 kHz" -msgstr "96 kHz" - -#: src/modplug/gui/interface.cxx:293 -msgid "48 kHz" -msgstr "48 kHz" - -#: src/modplug/gui/interface.cxx:300 -msgid "44 kHz" -msgstr "44 kHz" - -#: src/modplug/gui/interface.cxx:307 -msgid "22 kHz" -msgstr "22 kHz" - -#: src/modplug/gui/interface.cxx:315 -msgid "Sampling Rate" -msgstr "" - -#: src/modplug/gui/interface.cxx:349 src/modplug/gui/interface.cxx:411 -#: src/modplug/gui/interface.cxx:477 src/modplug/gui/interface.cxx:539 -msgid "Enable" -msgstr "" - -#: src/modplug/gui/interface.cxx:378 src/modplug/gui/interface.cxx:506 -msgid "Depth" -msgstr "" - -#: src/modplug/gui/interface.cxx:386 src/modplug/gui/interface.cxx:514 -msgid "Delay" -msgstr "" - -#: src/modplug/gui/interface.cxx:394 -msgid "Reverb" -msgstr "" - -#: src/modplug/gui/interface.cxx:440 -msgid "Amount" -msgstr "" - -#: src/modplug/gui/interface.cxx:448 -msgid "Range" -msgstr "" - -#: src/modplug/gui/interface.cxx:456 -msgid "Bass Boost" -msgstr "" - -#: src/modplug/gui/interface.cxx:522 src/mpg123/mpg123.c:174 -msgid "Surround" -msgstr "" - -#: src/modplug/gui/interface.cxx:561 -msgid "" -"Note: Setting the preamp\n" -"too high may cause clipping\n" -"(annoying clicks and pops)!" -msgstr "" - -#: src/modplug/gui/interface.cxx:567 -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "Preamp" -msgstr "" - -#: src/modplug/gui/interface.cxx:601 -msgid "Use Filename as Song Title" -msgstr "" - -#: src/modplug/gui/interface.cxx:606 -msgid "Fast Playlist Info" -msgstr "" - -#: src/modplug/gui/interface.cxx:617 -msgid "Noise Reduction" -msgstr "" - -#: src/modplug/gui/interface.cxx:623 -msgid "Play Amiga MOD" -msgstr "" - -#: src/modplug/gui/interface.cxx:646 -msgid "Don't loop" -msgstr "" - -#: src/modplug/gui/interface.cxx:658 -msgid "Loop" -msgstr "" - -#: src/modplug/gui/interface.cxx:671 -msgid "time(s)" -msgstr "" - -#: src/modplug/gui/interface.cxx:677 -msgid "Loop forever" -msgstr "" - -#: src/modplug/gui/interface.cxx:684 -msgid "Looping" -msgstr "" - -#: src/modplug/gui/interface.cxx:859 -msgid "MOD Info" -msgstr "" - -#: src/modplug/gui/interface.cxx:878 -msgid "" -"Filename:\n" -"Title:\n" -"Type:\n" -"Length:\n" -"Speed:\n" -"Tempo:\n" -"Samples:\n" -"Instruments:\n" -"Patterns:\n" -"Channels:" -msgstr "" - -#: src/modplug/gui/interface.cxx:883 -msgid "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" -msgstr "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" - -#: src/modplug/gui/interface.cxx:913 -msgid "Samples" -msgstr "" - -#: src/modplug/gui/interface.cxx:938 -msgid "Instruments" -msgstr "" - -#: src/modplug/gui/interface.cxx:959 -msgid "Message" -msgstr "" - -#: src/modplug/gui/main.cxx:51 -msgid "Modplug Input Plugin for Audacious ver" -msgstr "" - -#: src/modplug/gui/main.cxx:52 -msgid "" -"\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." -msgstr "" -"\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." - -#: src/modplug/gui/main.cxx:55 -msgid "About Modplug" -msgstr "" - -#: src/modplug/gui/support.cxx:90 src/modplug/gui/support.cxx:114 -#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 -#, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "" - -#: src/mtp_up/mtp.c:35 -msgid "Upload selected track(s)" -msgstr "" - -#: src/mtp_up/mtp.c:291 -msgid "Upload in progress..." -msgstr "" - -#: src/mtp_up/mtp.c:300 -msgid "MTP device handler" -msgstr "" - -#: src/mtp_up/mtp.c:304 -msgid "Disconnect the device" -msgstr "" - -#: src/null/null.c:63 -msgid "Null output plugin " -msgstr "" - -#: src/null/null.c:64 -msgid "" -" by Christian Birchinger \n" -"based on the XMMS plugin by HÃ¥vard KvÃ¥l " -msgstr "" -" by Christian Birchinger \n" -"based on the XMMS plugin by HÃ¥vard KvÃ¥l " - -#: src/null/null.c:67 -msgid "About Null Output" -msgstr "" - -#: src/null/null.c:93 -msgid "Null output preferences" -msgstr "" - -#: src/null/null.c:102 -msgid "Run in real time" -msgstr "" - -#: src/oss4/configure.c:89 -msgid "1. Default device" -msgstr "" - -#: src/oss4/configure.c:151 -msgid "OSS4 Output Plugin Preferences" -msgstr "" - -#: src/oss4/configure.c:163 src/OSS/configure.c:213 src/sun/configure.c:181 -msgid "Audio device:" -msgstr "" - -#: src/oss4/configure.c:189 src/OSS/configure.c:235 src/OSS/configure.c:276 -msgid "Use alternate device:" -msgstr "" - -#: src/oss4/configure.c:202 -msgid "Save volume between sessions" -msgstr "" - -#: src/oss4/configure.c:206 -msgid "Enable format conversions made by the OSS software." -msgstr "" - -#: src/oss4/plugin.c:54 -msgid "About OSS4 Plugin" -msgstr "" - -#: src/oss4/plugin.c:55 -msgid "" -"OSS4 Output Plugin for Audacious\n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"I would like to thank people on #audacious, especially Tony Vroon and John " -"Lindgren and of course the authors of the previous OSS plugin.\n" -"\n" -"This program is free software: you can redistribute it and/or modify it " -"under the terms of the GNU General Public License as published by the Free " -"Software Foundation, either version 3 of the License, or (at your option) " -"any later version.\n" -"\n" -"This program 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 General Public License for " -"more details.\n" -"\n" -"You should have received a copy of the GNU General Public License along with " -"this program. If not, see .\n" -msgstr "" -"OSS4 Output Plugin for Audacious\n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"I would like to thank people on #audacious, especially Tony Vroon and John " -"Lindgren and of course the authors of the previous OSS plugin.\n" -"\n" -"This program is free software: you can redistribute it and/or modify it " -"under the terms of the GNU General Public License as published by the Free " -"Software Foundation, either version 3 of the License, or (at your option) " -"any later version.\n" -"\n" -"This program 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 General Public License for " -"more details.\n" -"\n" -"You should have received a copy of the GNU General Public License along with " -"this program. If not, see .\n" - -#: src/oss4/utils.c:204 -msgid "OSS4 error" -msgstr "" - -#: src/OSS/configure.c:148 -#, c-format -msgid "Default (%s)" -msgstr "" - -#: src/OSS/configure.c:197 -msgid "OSS Driver configuration" -msgstr "" - -#: src/OSS/configure.c:298 src/sun/configure.c:246 -msgid "Devices" -msgstr "" - -#: src/OSS/configure.c:300 src/sun/configure.c:257 -msgid "Buffering:" -msgstr "" - -#: src/OSS/configure.c:313 src/sun/configure.c:288 -msgid "Pre-buffer (percent):" -msgstr "" - -#: src/OSS/configure.c:324 src/sun/configure.c:302 -msgid "Buffering" -msgstr "" - -#: src/OSS/configure.c:325 -msgid "Mixer Settings:" -msgstr "" - -#: src/OSS/configure.c:331 -msgid "Volume controls Master not PCM" -msgstr "" - -#: src/OSS/configure.c:337 src/sun/configure.c:392 -msgid "Mixer" -msgstr "" - -#: src/OSS/OSS.c:40 -msgid "About OSS Driver" -msgstr "" - -#: src/OSS/OSS.c:41 -msgid "" -"Audacious OSS Driver\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" -"Audacious OSS Driver\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." - -#: src/pulse_audio/pulse_audio.c:691 -msgid "About Audacious PulseAudio Output Plugin" -msgstr "" - -#: src/pulse_audio/pulse_audio.c:692 -msgid "" -"Audacious PulseAudio Output Plugin\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" -"Audacious PulseAudio Output Plugin\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." - -#: src/resample/plugin.c:78 -msgid "About Sample Rate Converter Plugin" -msgstr "" - -#: src/resample/plugin.c:134 -msgid "Sample Rate Converter Preferences" -msgstr "" - -#: src/resample/plugin.c:146 -msgid "Rate mappings:" -msgstr "" - -#: src/resample/plugin.c:169 -msgid "All others:" -msgstr "" - -#: src/resample/plugin.c:181 -msgid "Method:" -msgstr "" - -#: src/scrobbler/configure.c:152 src/scrobbler/configure.c:228 -msgid "Change password" -msgstr "" - -#: src/scrobbler/configure.c:174 -msgid "Services" -msgstr "Servicios" - -#: src/scrobbler/configure.c:196 -msgid "Username:" -msgstr "Nombre de usuario:" - -#: src/scrobbler/configure.c:202 -msgid "Password:" -msgstr "Contraseña:" - -#: src/scrobbler/configure.c:210 -msgid "Scrobbler URL:" -msgstr "" - -#: src/scrobbler/configure.c:242 -msgid "Last.FM" -msgstr "" - -#: src/scrobbler/configure.c:287 -msgid "Scrobbler" -msgstr "" - -#: src/scrobbler/plugin.c:213 -msgid "" -"Audacious AudioScrobbler Plugin\n" -"\n" -"Originally created by Audun Hove and Pipian \n" -msgstr "" -"Audacious AudioScrobbler Plugin\n" -"\n" -"Originally created by Audun Hove and Pipian \n" - -#: src/scrobbler/plugin.c:215 -msgid "About Scrobbler Plugin" -msgstr "" - -#: src/sid/xs_about.c:84 -#, c-format -msgid "About %s" -msgstr "Acerca de %s" - -#: src/sid/xs_config.c:322 -msgid " Error" -msgstr "" - -#: src/sid/xs_fileinfo.c:151 -msgid "General info" -msgstr "" - -#: src/sid/xs_fileinfo.c:164 -#, c-format -msgid "Tune #%i: " -msgstr "" - -#: src/sid/xs_interface.c:234 -msgid "Audacious-SID configuration" -msgstr "" - -#: src/sid/xs_interface.c:270 -msgid "8-bit" -msgstr "8-bit" - -#: src/sid/xs_interface.c:277 -msgid "16-bit" -msgstr "16-bit" - -#: src/sid/xs_interface.c:284 -msgid "Resolution:" -msgstr "" - -#: src/sid/xs_interface.c:315 -msgid "Autopanning" -msgstr "" - -#: src/sid/xs_interface.c:322 -msgid "Channels:" -msgstr "" - -#: src/sid/xs_interface.c:366 -msgid "Samplerate:" -msgstr "" - -#: src/sid/xs_interface.c:383 -msgid "Use oversampling" -msgstr "" +#: src/gtkui/ui_gtk.c:162 +msgid "Buffering ..." +msgstr "Gestión de memoria intermedia ..." -#: src/sid/xs_interface.c:394 -msgid "Factor:" -msgstr "" +#: src/gtkui/ui_gtk.c:165 src/skins/ui_main.c:305 src/skins/ui_main.c:1504 +msgid "Audacious" +msgstr "Audacious" -#: src/sid/xs_interface.c:406 -msgid "Large factors require more CPU-power" -msgstr "" +#: src/gtkui/ui_gtk.c:216 src/skins/plugin.c:190 +msgid "Error" +msgstr "Error" -#: src/sid/xs_interface.c:412 -msgid "Oversampling:" -msgstr "" +#: src/gtkui/ui_playlist_notebook.c:97 +msgid "Close" +msgstr "Cerrar" -#: src/sid/xs_interface.c:417 -msgid "Audio" -msgstr "Audio" +#: src/gtkui/ui_statusbar.c:105 src/skins/ui_main.c:460 +msgid "mono" +msgstr "mono" -#: src/sid/xs_interface.c:445 -msgid "Force speed" -msgstr "" +#: src/gtkui/ui_statusbar.c:107 src/skins/ui_main.c:459 +msgid "stereo" +msgstr "estéreo" -#: src/sid/xs_interface.c:449 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"clock speed/frequency. Otherwise the speed is determined from played file " -"itself." -msgstr "" +#: src/gtkui/ui_statusbar.c:109 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d canal" +msgstr[1] "%d canales" -#: src/sid/xs_interface.c:451 -msgid "PAL (50 Hz)" -msgstr "PAL (50 Hz)" +#: src/gtkui/ui_statusbar.c:124 +#, c-format +msgid "%d kbps" +msgstr "%d kbps" -#: src/sid/xs_interface.c:455 -msgid "" -"PAL is the european TV standard, which uses 50Hz vertical refresh frequency. " -"Most of SID-tunes have been made for PAL computers." -msgstr "" +#: src/hotkey/gui.c:71 +msgid "Previous Track" +msgstr "Pista anterior" -#: src/sid/xs_interface.c:459 -msgid "NTSC (60 Hz)" -msgstr "NTSC (60 Hz)" +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "Reproducir" -#: src/sid/xs_interface.c:463 -msgid "" -"NTSC is the TV standard with 60Hz vertical refresh rate (and other features " -"that differ from PAL). It is mainly used in United States, Japan and certain " -"other countries." -msgstr "" +#: src/hotkey/gui.c:73 +msgid "Pause/Resume" +msgstr "Pausa/continuar" -#: src/sid/xs_interface.c:467 -msgid "Clock speed:" -msgstr "" +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +msgid "Stop" +msgstr "Detener" -#: src/sid/xs_interface.c:484 -msgid "Force model" -msgstr "" +#: src/hotkey/gui.c:75 +msgid "Next Track" +msgstr "Siguiente pista" -#: src/sid/xs_interface.c:488 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"SID-chip model. Otherwise the preferred SID model is determined from the " -"file (if PSIDv2NG type) or if not available, this setting is used." -msgstr "" +#: src/hotkey/gui.c:76 +msgid "Forward 5 Seconds" +msgstr "Avanzar 5 segundos" -#: src/sid/xs_interface.c:490 -msgid "MOS 6581" -msgstr "MOS 6581" +#: src/hotkey/gui.c:77 +msgid "Rewind 5 Seconds" +msgstr "Retroceder 5 segundos" -#: src/sid/xs_interface.c:494 -msgid "" -"MOS/CSG 6581 is the earlier major version of SID chip. It differs from 8580 " -"in few ways, having much fuller filter (which, due to design error, is never " -"same between two different SID-chips) and has the \"volume adjustment bug\", " -"which enables playing of digital samples." -msgstr "" +#: src/hotkey/gui.c:78 +msgid "Mute" +msgstr "Silenciar" -#: src/sid/xs_interface.c:498 -msgid "MOS 8580" -msgstr "MOS 8580" +#: src/hotkey/gui.c:79 +msgid "Volume Up" +msgstr "Subir volumen" -#: src/sid/xs_interface.c:505 -msgid "SID model:" -msgstr "" +#: src/hotkey/gui.c:80 +msgid "Volume Down" +msgstr "Bajar volumen" -#: src/sid/xs_interface.c:522 -msgid "SIDPlay 1 (frame-based)" -msgstr "" +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Jump to File" +msgstr "Ir al archivo" -#: src/sid/xs_interface.c:526 -msgid "" -"Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most " -"cases, though." -msgstr "" +#: src/hotkey/gui.c:82 +msgid "Toggle Player Windows" +msgstr "Cambiar ventanas del reproductor" -#: src/sid/xs_interface.c:530 -msgid "SIDPlay 2 (cycle-based)" -msgstr "" +#: src/hotkey/gui.c:83 +msgid "Show On-Screen-Display" +msgstr "Mostrar notificaciones" -#: src/sid/xs_interface.c:534 -msgid "" -"Use libSIDPlay 2.x emulation, which requires powerful CPU due to more exact " -"emulation." -msgstr "" +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "Conmutar el modo repetir" -#: src/sid/xs_interface.c:538 -msgid "Emulation library selection:" -msgstr "" +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "Conmutar orden aleatorio" -#: src/sid/xs_interface.c:555 -msgid "Real C64 (SIDPlay 2 only)" -msgstr "" +#: src/hotkey/gui.c:95 +msgid "(none)" +msgstr "(ninguno)" -#: src/sid/xs_interface.c:562 -msgid "Bank switching" +#: src/hotkey/gui.c:232 +msgid "" +"It is not recommended to bind the primary mouse buttons without modificators.\n" +"\n" +"Do you want to continue?" msgstr "" +"No se recomienda asociar los botones principales del ratón sin modificadores.\n" +"\n" +"¿Quiere continuar?" -#: src/sid/xs_interface.c:569 -msgid "Transparent ROM" -msgstr "" +#: src/hotkey/gui.c:234 +msgid "Binding mouse buttons" +msgstr "Asociar botones del ratón" -#: src/sid/xs_interface.c:576 -msgid "PlaySID environment" -msgstr "" +#: src/hotkey/gui.c:384 +msgid "Global Hotkey Plugin Configuration" +msgstr "Configuración de atajos de teclado" -#: src/sid/xs_interface.c:583 -msgid "Memory mode:" +#: src/hotkey/gui.c:400 +msgid "" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." msgstr "" +"Pulse una combinación de teclas dentro del campo de texto.\n" +"También puede asociar botones del ratón." -#: src/sid/xs_interface.c:588 -msgid "Emu#1" -msgstr "" +#: src/hotkey/gui.c:405 +msgid "Hotkeys:" +msgstr "Atajos de teclado:" -#: src/sid/xs_interface.c:611 -msgid "Optimization mode (faster, inaccurate)" -msgstr "" +#: src/hotkey/gui.c:424 +msgid "Action:" +msgstr "Acción:" -#: src/sid/xs_interface.c:615 -msgid "" -"This setting can be used to enable libSIDPlay2's \"optimization mode\", " -"which in downgrades the emulation from cycle-exact to something similar to " -"frame-exact. The result is lower CPU usage, but worse accuracy." -msgstr "" +#: src/hotkey/gui.c:432 +msgid "Key Binding:" +msgstr "Teclas asociadas:" -#: src/sid/xs_interface.c:617 -msgid "reSID-emulation" -msgstr "" +#: src/hotkey/gui.c:663 +msgid "About Global Hotkey Plugin" +msgstr "Acerca del complemento de atajos de teclado" -#: src/sid/xs_interface.c:621 +#: src/hotkey/gui.c:664 msgid "" -"reSID is the software SID-chip simulator based on SID reverse-engineering, " -"created by Dag Lem. It is probably the closest thing to real SID available " -"as software-only emulation." +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributers include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä \n" +"\t\t\tBryn Davies \n" +"\t\t\tJonathan A. Davis \n" +"\t\t\tJeremy Tan \n" +"\n" msgstr "" +"Complemento de atajos de teclado\n" +"Controla el reproductor con combinaciones de teclas o teclas multimedia.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Con la participación de:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä \n" +"\t\t\tBryn Davies \n" +"\t\t\tJonathan A. Davis \n" +"\t\t\tJeremy Tan \n" +"\n" -#: src/sid/xs_interface.c:625 -msgid "HardSID" -msgstr "" +#: src/jack/configure.c:66 +msgid "Connect to all available jack ports" +msgstr "Conectar a todos los puertos jack disponibles" -#: src/sid/xs_interface.c:629 -msgid "" -"HardSID is a EISA/PCI card for PC-compatibles, which can be fitted with a " -"real SID-chip. Software can be used to control the HardSID and combined with " -"software emulation of rest of C64 via libSIDPlay2 HardSID can be used to " -"achieve \"near 100%\" similarity to real C64. For more information, see " -"http://www.hardsid.com/" -msgstr "" +#: src/jack/configure.c:73 +msgid "Connect only the output ports" +msgstr "Conectar solo los puertos de salida" -#: src/sid/xs_interface.c:633 -msgid "SIDPlay 2 options:" -msgstr "" +#: src/jack/configure.c:80 +msgid "Connect to no ports" +msgstr "No conectar puertos" -#: src/sid/xs_interface.c:650 -msgid "Fast (nearest neighbour)" -msgstr "" +#: src/jack/configure.c:98 +msgid "jack Plugin configuration" +msgstr "Configuración del complemento jack" -#: src/sid/xs_interface.c:654 -msgid "" -"Fastest and also worst sounding sampling method, simply picks nearest " -"neighbouring sample." -msgstr "" +#: src/jack/configure.c:116 +msgid "Connection mode:" +msgstr "Modo de conexión:" -#: src/sid/xs_interface.c:658 -msgid "Linear interpolation" -msgstr "" +#: src/jack/configure.c:128 +msgid "Enable debug printing" +msgstr "Activar mensajes de depuración" -#: src/sid/xs_interface.c:662 +#: src/jack/jack.c:435 msgid "" -"Uses linear interpolation between samples, yielding higher audio quality " -"with less sampling noise." +"XMMS jack Driver 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" +"\n" +"Audacious port by\n" +"Giacomo Lozito from develia.org" msgstr "" +"Complemento jack para XMMS 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" +"\n" +"Portado a Audacious por\n" +"Giacomo Lozito de develia.org" -#: src/sid/xs_interface.c:673 -msgid "Resampling (FIR)" -msgstr "" +#: src/jack/jack.c:440 +msgid "About JACK Output Plugin 0.17" +msgstr "Acerca del complemento de salida JACK 0.17" -#: src/sid/xs_interface.c:680 -msgid "reSID sampling options:" -msgstr "" +#: src/ladspa/plugin.c:415 +msgid "About LADSPA Host" +msgstr "Acerca del servidor LADSPA" -#: src/sid/xs_interface.c:685 -msgid "Emu#2" -msgstr "" +#: src/ladspa/plugin.c:516 +#, c-format +msgid "%s Settings" +msgstr "Ajustes %s" -#: src/sid/xs_interface.c:697 -msgid "Emulate filters" -msgstr "" +#: src/ladspa/plugin.c:584 +msgid "LADSPA Host Settings" +msgstr "Ajustes del servidor LADSPA" + +#: src/ladspa/plugin.c:593 +msgid "Module paths:" +msgstr "Rutas de complementos:" -#: src/sid/xs_interface.c:701 +#: src/ladspa/plugin.c:598 msgid "" -"This option enables emulation of SID filter. The filter is an essential part " -"of SID's sound capacity, but accurate emulation of it may require quite much " -"CPU power. However, if filter emulation is disabled, tunes won't sound " -"authentic at all if they utilize the filter." +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." msgstr "" +"Separe múltiples rutas por dos puntos.\n" +"Estas rutas se utilizan además de LADSPA_PATH.\n" +"Tras añadir nuevas rutas, pulse Intro para buscar complementos nuevos." -#: src/sid/xs_interface.c:726 -msgid "FS" -msgstr "FS" +#: src/ladspa/plugin.c:614 +msgid "Available plugins:" +msgstr "Complementos disponibles:" -#: src/sid/xs_interface.c:743 -msgid "FM" -msgstr "FM" - -#: src/sid/xs_interface.c:760 -msgid "FT" -msgstr "FT" +#: src/ladspa/plugin.c:626 +msgid "Enable" +msgstr "Activar" -#: src/sid/xs_interface.c:771 -msgid "Reset values" -msgstr "" +#: src/ladspa/plugin.c:632 +msgid "Enabled plugins:" +msgstr "Complementos activos:" -#: src/sid/xs_interface.c:776 -msgid "SIDPlay1" -msgstr "" +#: src/ladspa/plugin.c:647 +msgid "Settings" +msgstr "Ajustes" -#: src/sid/xs_interface.c:817 -msgid "Export" +#: src/lyricwiki/lyricwiki.c:267 +msgid "" +"\n" +"Looking for lyrics..." msgstr "" +"\n" +"Buscando letras ..." -#: src/sid/xs_interface.c:825 -msgid "Use" +#: src/lyricwiki/lyricwiki.c:304 +msgid "" +"\n" +"Connecting to lyrics.wikia.com..." msgstr "" +"\n" +"Conectando a lyrics.wikia.com..." -#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:430 -msgid "Save" +#: src/lyricwiki/lyricwiki.c:377 +msgid "" +"\n" +"No lyrics were found." msgstr "" +"\n" +"No se encontraron letras." -#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:429 -msgid "Import" -msgstr "" +#: src/metronom/metronom.c:86 +msgid "About Metronom" +msgstr "Acerca del metrónomo" -#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:431 -msgid "Delete" +#: src/metronom/metronom.c:87 +msgid "" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" msgstr "" +"Un generador de tacto por Martin Strauss \n" +"\n" +"Para utilizarlo, añada una URL: tact://pulsos*num/den\n" +"p. ej. tact://77 para reproducir 77 pulsos por minuto\n" +"o tact://60*3/4 para reproducir 60 ppm en 3/4 tactos" -#: src/sid/xs_interface.c:863 -msgid "Filter curve:" -msgstr "" +#: src/metronom/metronom.c:144 +#, c-format +msgid "Tact generator: %d bpm" +msgstr "Generador de tacto: %d ppm" -#: src/sid/xs_interface.c:868 -msgid "SIDPlay2" -msgstr "" +#: src/metronom/metronom.c:146 +#, c-format +msgid "Tact generator: %d bpm %d/%d" +msgstr "Generador de tacto: %d ppm %d/%d" -#: src/sid/xs_interface.c:874 -msgid "Filters" -msgstr "" +#: src/mixer/plugin.c:64 +msgid "About Channel Mixer" +msgstr "Acerca del mezclador de canales" -#: src/sid/xs_interface.c:897 -msgid "Play at least for specified time" -msgstr "" +#: src/mixer/plugin.c:93 +msgid "Channel Mixer Settings" +msgstr "Ajustes del mezclador de canales" -#: src/sid/xs_interface.c:901 -msgid "" -"If enabled, the tune is played at least for the specified time, adding " -"silence to the end if necessary." -msgstr "" +#: src/mixer/plugin.c:102 +msgid "Output channels:" +msgstr "Canales de salida:" -#: src/sid/xs_interface.c:908 src/sid/xs_interface.c:962 -#: src/sid/xs_interface.c:1142 -msgid "Playtime:" -msgstr "" +#: src/mixer/plugin.c:112 +msgid "Changes take effect at the next song change." +msgstr "Los cambios se aplicarán en el siguiente cambio de canción." -#: src/sid/xs_interface.c:928 -msgid "Minimum playtime:" -msgstr "" +#: src/mpg123/mpg123.c:191 +msgid "Surround" +msgstr "Envolvente" -#: src/sid/xs_interface.c:945 -msgid "Play for specified time maximum" -msgstr "" +#: src/mtp_up/mtp.c:340 +msgid "Upload in progress..." +msgstr "Carga en progreso..." -#: src/sid/xs_interface.c:949 -msgid "" -"If enabled, tune is played until specified duration is reached (aka maximum " -"playtime)." -msgstr "" +#: src/mtp_up/mtp.c:352 +msgid "Upload to MTP Device" +msgstr "Cargar a un dispositivo MTP" + +#: src/mtp_up/mtp.c:353 +msgid "Disconnect MTP Device" +msgstr "Desconectar dispositivo MTP" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Stopped" +msgstr "Detenido" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Audacious is not playing." +msgstr "Audacious no está reproduciendo." -#: src/sid/xs_interface.c:951 -msgid "Only when song length is unknown" -msgstr "" +#: src/null/null.c:64 +msgid "Null output plugin " +msgstr "Complemento de salida nula " -#: src/sid/xs_interface.c:955 +#: src/null/null.c:65 msgid "" -"If enabled, the maximum playtime is applied only if song/tune length is not " -"known." +" by Christian Birchinger \n" +"based on the XMMS plugin by HÃ¥vard KvÃ¥l " msgstr "" +" por Christian Birchinger \n" +"basado en el complemento de XMMS por HÃ¥vard KvÃ¥l " -#: src/sid/xs_interface.c:982 -msgid "Maximum playtime:" -msgstr "" +#: src/null/null.c:68 +msgid "About Null Output" +msgstr "Acerca del complemento de salida nula" -#: src/sid/xs_interface.c:999 -msgid "Use XSIDPLAY-compatible database" -msgstr "" +#: src/null/null.c:89 +msgid "Null output preferences" +msgstr "Preferencias de la salida nula" -#: src/sid/xs_interface.c:1003 -msgid "" -"This option enables using of XSIDPLAY compatible song length database. " -"(Refer to Audacious-SID documentation for more information)" -msgstr "" +#: src/null/null.c:100 +msgid "Run in real time" +msgstr "Ejecutar en tiempo real" -#: src/sid/xs_interface.c:1010 -msgid "DB-file:" -msgstr "" +#: src/oss4/configure.c:81 +msgid "1. Default device" +msgstr "1. Dispositivo predeterminado" -#: src/sid/xs_interface.c:1020 -msgid "Database path and filename" -msgstr "" +#: src/oss4/configure.c:138 +msgid "OSS4 Output Plugin Preferences" +msgstr "Preferencias del complemento de salida OSS4" -#: src/sid/xs_interface.c:1027 -msgid "Browse for song length-database file" -msgstr "" +#: src/oss4/configure.c:150 src/OSS/configure.c:194 +msgid "Audio device:" +msgstr "Dispositivo de sonido:" -#: src/sid/xs_interface.c:1049 -msgid "Song length database:" -msgstr "" +#: src/oss4/configure.c:178 src/OSS/configure.c:217 src/OSS/configure.c:260 +msgid "Use alternate device:" +msgstr "Utilizar dispositivo alternativo:" -#: src/sid/xs_interface.c:1054 -msgid "Songlength" -msgstr "" +#: src/oss4/configure.c:193 +msgid "Save volume between sessions" +msgstr "Guardar volumen entre sesiones" -#: src/sid/xs_interface.c:1072 -msgid "Override generic Tuplez format string" -msgstr "" +#: src/oss4/configure.c:197 +msgid "Enable format conversions made by the OSS software." +msgstr "Activar conversiones de formato realizadas por el software OSS." -#: src/sid/xs_interface.c:1076 -msgid "" -"By enabling this option you can specify a custom Tuplez formatting string " -"for SID-files. The SID-plugin specific Tuplez tags are described shortly " -"below." -msgstr "" +#: src/oss4/configure.c:201 +msgid "Enable exclusive mode to prevent virtual mixing." +msgstr "Activa el modo exclusivo para evitar la mezcla virtual." -#: src/sid/xs_interface.c:1087 -msgid "Tuplez format string for SID-files" -msgstr "" +#: src/oss4/plugin.c:51 +msgid "About OSS4 Plugin" +msgstr "Acerca del complemento OSS4" -#: src/sid/xs_interface.c:1090 -msgid "" -"SID-specific Tuplez fields:\n" -"\n" -"sid-format\t\t- Specific fileformat\n" -"sid-model\t\t- 6581 or 8580\n" -"sid-speed\t\t- Timing or speed: PAL/NTSC/etc.\n" -"\n" -"Other \"special\" fields set:\n" -"\n" -"subsong-num, subsong-id" -msgstr "" +#: src/oss4/utils.c:211 +msgid "OSS4 error" +msgstr "Error OSS4" -#: src/sid/xs_interface.c:1098 -msgid "Song title format:" -msgstr "" +#: src/OSS/configure.c:137 +#, c-format +msgid "Default (%s)" +msgstr "Predeterminado (%s)" -#: src/sid/xs_interface.c:1103 -msgid "Title" -msgstr "" +#: src/OSS/configure.c:178 +msgid "OSS Driver configuration" +msgstr "Configuración del complemento OSS" -#: src/sid/xs_interface.c:1125 -msgid "Add sub-tunes to playlist" -msgstr "" +#: src/OSS/configure.c:281 +msgid "Devices" +msgstr "Dispositivos" -#: src/sid/xs_interface.c:1129 -msgid "" -"If enabled, sub-tunes of each file will be added to playlist. If disabled, " -"only the default sub-tune will be added." -msgstr "" +#: src/OSS/configure.c:283 +msgid "Buffering:" +msgstr "Gestión de memoria intermedia:" -#: src/sid/xs_interface.c:1131 -msgid "Only tunes with specified minimum duration" -msgstr "" +#: src/OSS/configure.c:296 +msgid "Pre-buffer (percent):" +msgstr "Información inicial (porcentaje):" -#: src/sid/xs_interface.c:1135 -msgid "Only add sub-tunes that have a duration of at least specified time." -msgstr "" +#: src/OSS/configure.c:307 +msgid "Buffering" +msgstr "Gestión de memoria intermedia" -#: src/sid/xs_interface.c:1162 -msgid "Sub-tune handling:" -msgstr "" +#: src/OSS/configure.c:308 +msgid "Mixer Settings:" +msgstr "Ajustes del mezclador:" -#: src/sid/xs_interface.c:1179 -msgid "Use STIL database" -msgstr "" +#: src/OSS/configure.c:314 +msgid "Volume controls Master not PCM" +msgstr "El volumen controla el maestro no PCM" -#: src/sid/xs_interface.c:1183 -msgid "" -"If this option is enabled (and the database & HVSC settings below are " -"correctly set), Audacious-SID will use and display additional information " -"from STIL database when HVSC SIDs are played." -msgstr "" +#: src/OSS/configure.c:320 +msgid "Mixer" +msgstr "Mezclador" -#: src/sid/xs_interface.c:1190 -msgid "STIL file:" -msgstr "" +#: src/OSS/OSS.c:41 +msgid "About OSS Driver" +msgstr "Acerca del complemento OSS" -#: src/sid/xs_interface.c:1206 -msgid "" -"Path and filename of STIL database file (STIL.txt), usually found from " -"HVSC's DOCUMENTS-subdirectory." -msgstr "" +#: src/pulse_audio/pulse_audio.c:669 +msgid "About Audacious PulseAudio Output Plugin" +msgstr "Acerca del complemento de salida PulseAudio" -#: src/sid/xs_interface.c:1219 -msgid "Browse for STIL-database file" -msgstr "" +#: src/resample/plugin.c:89 +msgid "About Sample Rate Converter Plugin" +msgstr "Acerca del módulo de conversión de frecuencia de muestreo" -#: src/sid/xs_interface.c:1246 -msgid "HVSC path:" -msgstr "" +#: src/resample/plugin.c:144 +msgid "Sample Rate Converter Preferences" +msgstr "Preferencias del conversor de frecuencia de muestreo" -#: src/sid/xs_interface.c:1262 -msgid "" -"Path to base-directory of your High Voltage SID Collection (HVSC), for " -"example /media/C64Music/" -msgstr "" +#: src/resample/plugin.c:156 +msgid "Rate mappings:" +msgstr "Mapas de frecuencia:" -#: src/sid/xs_interface.c:1275 -msgid "Browse for HVSC path" -msgstr "" +#: src/resample/plugin.c:179 +msgid "All others:" +msgstr "Todos los demás:" -#: src/sid/xs_interface.c:1297 -msgid "SID Tune Information List (STIL) database:" -msgstr "" +#: src/resample/plugin.c:191 +msgid "Method:" +msgstr "Método:" -#: src/sid/xs_interface.c:1321 -msgid "Cancel any changes" -msgstr "" +#: src/scrobbler/configure.c:123 src/scrobbler/configure.c:198 +msgid "Change password" +msgstr "Cambiar la contraseña" -#: src/sid/xs_interface.c:1328 -msgid "Accept and update changes" -msgstr "" +#: src/scrobbler/configure.c:144 +msgid "Services" +msgstr "Servicios" -#: src/sid/xs_interface.c:1628 -msgid "Audacious-SID Fileinfo" -msgstr "" +#: src/scrobbler/configure.c:166 +msgid "Username:" +msgstr "Nombre de usuario:" -#: src/sid/xs_interface.c:1649 -msgid "Filename:" -msgstr "" +#: src/scrobbler/configure.c:172 +msgid "Password:" +msgstr "Contraseña:" -#: src/sid/xs_interface.c:1657 -msgid "Songname:" -msgstr "" +#: src/scrobbler/configure.c:180 +msgid "Scrobbler URL:" +msgstr "URL del Scrobbler:" -#: src/sid/xs_interface.c:1665 -msgid "Composer:" -msgstr "" +#: src/scrobbler/configure.c:212 +msgid "Last.FM" +msgstr "Last.FM" -#: src/sid/xs_interface.c:1673 -msgid "Copyright:" -msgstr "" +#: src/scrobbler/configure.c:239 +msgid "Scrobbler" +msgstr "Scrobbler" -#: src/sid/xs_interface.c:1717 -msgid "Song Information:" +#: src/scrobbler/plugin.c:194 +msgid "" +"Audacious AudioScrobbler Plugin\n" +"\n" +"Originally created by Audun Hove and Pipian \n" msgstr "" +"Módulo de AudioScrobbler para Audacious\n" +"\n" +"Creado originalmente por Audun Hove y Pipian \n" -#: src/sid/xs_interface.c:1752 -msgid "Author:" -msgstr "" +#: src/scrobbler/plugin.c:196 +msgid "About Scrobbler Plugin" +msgstr "Acerca del complemento Scrobbler" -#: src/sid/xs_interface.c:1786 -msgid "Duration:" -msgstr "" +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" +msgstr "Acerca del complemento de salida SDL" -#: src/sid/xs_interface.c:1820 -msgid "Sub-tune Information:" -msgstr "" +#: src/sdlout/plugin.c:78 +msgid "SDL error" +msgstr "Error SDL" -#: src/sid/xs_interface.c:1881 -msgid "Select HVSC song length database" -msgstr "" +#: src/search-tool/search-tool.c:42 +msgid "Genre" +msgstr "Género" -#: src/sid/xs_interface.c:1922 -msgid "Select STIL-database" -msgstr "" +#: src/search-tool/search-tool.c:96 src/search-tool/search-tool.c:106 +msgid "Library" +msgstr "Biblioteca" -#: src/sid/xs_interface.c:1963 -msgid "Select HVSC location prefix" -msgstr "" +#: src/search-tool/search-tool.c:591 +msgid "_Create Playlist" +msgstr "_Crear lista de reproducción" -#: src/sid/xs_interface.c:2004 -msgid "Select SIDPlay2 filters file for importing" -msgstr "" +#: src/search-tool/search-tool.c:598 +msgid "_Add to Playlist" +msgstr "_Añadir a la lista de reproducción" -#: src/sid/xs_interface.c:2045 -msgid "Select SIDPlay2 filters file for exporting" -msgstr "" +#: src/search-tool/search-tool.c:641 +msgid "Search library" +msgstr "Buscar biblioteca" -#: src/sid/xs_interface.c:2093 src/sid/xs_interface.c:2106 -msgid "Confirm selected action" +#: src/search-tool/search-tool.c:645 +msgid "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." msgstr "" +"Para importar su biblioteca musical en Audacious, seleccione una carpeta y " +"pulse el botón «actualizar»." -#: src/sid/xs_interface.c:2123 -msgid "Yes" -msgstr "Si" +#: src/search-tool/search-tool.c:653 +msgid "Please wait ..." +msgstr "Espere por favor..." -#: src/sid/xs_interface.c:2129 -msgid "No" -msgstr "No" +#: src/search-tool/search-tool.c:675 +msgid "Choose Folder" +msgstr "Seleccione un directorio" -#: src/skins/plugin.c:179 +#: src/skins/plugin.c:167 msgid "About Skinned GUI" -msgstr "" +msgstr "Acerca del interfaz con soporte de temas" -#: src/skins/plugin.c:180 +#: src/skins/plugin.c:168 msgid "" "Copyright (c) 2008, by Tomasz MoÅ„ \n" "\n" -msgstr "" -"Copyright (c) 2008, por Tomasz MoÅ„ \n" -"\n" - -#: src/skins/plugin.c:196 -msgid "Skinned Interface" -msgstr "" +msgstr "Copyright (c) 2008, por Tomasz MoÅ„ \n" -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:207 msgid "_Player:" -msgstr "" +msgstr "_Reproductor:" -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:208 msgid "Select main player window font:" -msgstr "" +msgstr "Seleccione la tipografía para la ventana principal:" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:210 msgid "_Playlist:" msgstr "Lista de reproducción:" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:211 msgid "Select playlist font:" -msgstr "" +msgstr "Seleccione la tipografía de la lista de reproducción:" -#: src/skins/skins_cfg.c:321 +#: src/skins/skins_cfg.c:215 msgid "_Fonts" -msgstr "" +msgstr "_Tipografías" -#: src/skins/skins_cfg.c:323 -msgid "Use Bitmap fonts if available" -msgstr "" +#: src/skins/skins_cfg.c:218 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "Usar tipografías de mapa de bits (solo soporta ASCII)" -#: src/skins/skins_cfg.c:323 -msgid "" -"Use bitmap fonts if they are available. Bitmap fonts do not support Unicode " -"strings." -msgstr "" +#: src/skins/skins_cfg.c:220 +msgid "Scroll song title in both directions" +msgstr "Desplazar el título de la canción en ambas direcciones" -#: src/skins/skins_cfg.c:324 -msgid "_Miscellaneous" -msgstr "" +#: src/skins/skins_cfg.c:298 +msgid "_Skin" +msgstr "_Tema" -#: src/skins/skins_cfg.c:325 -msgid "Show separators in playlist" -msgstr "" +#: src/skins/skins_cfg.c:345 +msgid "Interface Preferences" +msgstr "Preferencias del interfaz" -#: src/skins/skins_cfg.c:327 -msgid "Show window manager decoration" -msgstr "" +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "Preamplificador" -#: src/skins/skins_cfg.c:328 -msgid "This enables the window manager to show decorations for windows." -msgstr "" +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" +msgstr "31 Hz" -#: src/skins/skins_cfg.c:329 -msgid "Use two-way text scroller" -msgstr "" +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "63 Hz" -#: src/skins/skins_cfg.c:330 -msgid "" -"If selected, the file information text in the main window will scroll back " -"and forth. If not selected, the text will only scroll in one direction." -msgstr "" +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" +msgstr "125 Hz" -#: src/skins/skins_cfg.c:331 -msgid "Disable inline gtk theme" -msgstr "" +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" +msgstr "250 Hz" -#: src/skins/skins_cfg.c:333 -msgid "Random skin on play" -msgstr "" +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" +msgstr "500 Hz" -#: src/skins/skins_cfg.c:334 -msgid "Allow loading incomplete skins" -msgstr "" +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" +msgstr "1 kHz" -#: src/skins/skins_cfg.c:335 -msgid "" -"If selected, audacious won't refuse loading broken skins. Use only if your " -"favourite skin doesn't work" -msgstr "" +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" +msgstr "2 kHz" -#: src/skins/skins_cfg.c:401 -msgid "Color Adjustment" -msgstr "Ajuste de color" +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" +msgstr "4 kHz" -#: src/skins/skins_cfg.c:407 -msgid "" -"Audacious allows you to alter the color balance of the skinned UI. The " -"sliders below will allow you to do this." -msgstr "" -"Audacious te permite alterar el balance de color de la interfaz del " -"programa. Las barras inferiores te permiten hacer esto." +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" +msgstr "8 kHz" -#: src/skins/skins_cfg.c:417 -msgid "Blue" -msgstr "Azul" +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" +msgstr "16 kHz" -#: src/skins/skins_cfg.c:424 -msgid "Green" -msgstr "Verde" +#: src/skins/ui_equalizer.c:379 +msgid "Audacious Equalizer" +msgstr "Ecualizador de Audacious" -#: src/skins/skins_cfg.c:431 -msgid "Red" -msgstr "Rojo" +#: src/skins/ui_equalizer.c:887 +msgid "Presets" +msgstr "Predefinidos" -#: src/skins/skins_cfg.c:569 -msgid "_Skin" -msgstr "Piel" +#: src/skins/ui_equalizer.c:968 src/skins/ui_manager.c:442 +msgid "Load preset" +msgstr "Cargar predefinido" -#: src/skins/skins_cfg.c:574 -#, fuzzy -msgid "Color adjustment ..." -msgstr "Ajuste de color" +#: src/skins/ui_equalizer.c:985 +msgid "Load auto-preset" +msgstr "Cargar auto-predefinido" + +#: src/skins/ui_equalizer.c:1015 src/skins/ui_equalizer.c:1033 +#: src/skins/ui_equalizer.c:1049 +msgid "Load equalizer preset" +msgstr "Cargar ecualizador predefinido" -#: src/skins/ui_equalizer.c:463 -msgid "Audacious Equalizer" -msgstr "Ecualizador audacious" +#: src/skins/ui_equalizer.c:1068 src/skins/ui_manager.c:463 +msgid "Save preset" +msgstr "Guardar predefinido" -#: src/skins/ui_equalizer.c:991 -msgid "Presets" -msgstr "" +#: src/skins/ui_equalizer.c:1084 +msgid "Save auto-preset" +msgstr "Guardar auto-predefinido" + +#: src/skins/ui_equalizer.c:1114 src/skins/ui_equalizer.c:1150 +msgid "Save equalizer preset" +msgstr "Guardar ecualizador predefinido" + +#: src/skins/ui_equalizer.c:1169 src/skins/ui_manager.c:478 +msgid "Delete preset" +msgstr "Borrar predefinido" -#: src/skins/ui_main.c:593 +#: src/skins/ui_equalizer.c:1186 +msgid "Delete auto-preset" +msgstr "Borrar auto-predefinido" + +#: src/skins/ui_main.c:444 msgid "kbps" msgstr "kbps" -#: src/skins/ui_main.c:601 +#: src/skins/ui_main.c:452 msgid "kHz" msgstr "kHz" -#: src/skins/ui_main.c:608 +#: src/skins/ui_main.c:459 msgid "surround" -msgstr "surround" - -#: src/skins/ui_main.c:981 -msgid "Audacious - visibility warning" -msgstr "Audacious - advertencia de visualización" - -#: src/skins/ui_main.c:984 -msgid "Show main player window" -msgstr "Mostrar ventana principal del reproductor" - -#: src/skins/ui_main.c:985 -msgid "Ignore" -msgstr "Ignorar" - -#: src/skins/ui_main.c:991 -msgid "" -"Audacious has been started with all of its windows hidden.\n" -"You may want to show the player window again to control Audacious; " -"otherwise, you'll have to control it remotely via audtool or enabled plugins " -"(such as the statusicon plugin)." -msgstr "" -"Audacious se ha ejecutado con todas sus ventanas ocultas.\n" -"Quizás quieras mostrar la ventana del reproductor otra vez para controlar " -"audacious; de otra forma, tendrás el control remoto via audtool o con " -"algunos plugins (como el plugin statusicon)." - -#: src/skins/ui_main.c:997 -msgid "Always ignore, show/hide is controlled remotely" -msgstr "Ignorar siempre" - -#: src/skins/ui_main.c:1042 -msgid "Audacious - broken GTK engine usage warning" -msgstr "Audacious - advertencia de uso de un motor GTK roto" +msgstr "envolvente" -#: src/skins/ui_main.c:1050 +#: src/skins/ui_main.c:807 #, c-format -msgid "" -"Broken GTK engine in use\n" -"\n" -"Audacious has detected that you are using a broken GTK engine.\n" -"\n" -"The theme engine you are using, %s, is incompatible with some of the " -"features used by modern skins. The incompatible features have been disabled " -"for this session.\n" -"\n" -"To use these features, please consider using a different GTK theme engine." -msgstr "" -"Motor GTK roto en uso\n" -"\n" -"Audacious ha detectado que estas usando un motor GTK roto.\n" -"\n" -"El motor de temas que estas usando, %s, es incompatible con algunas " -"características presentes en pieles modernas. Las características " -"incompatibles han sido deshabilitadas para esta sesión.\n" -"\n" -"Para usar estas características, por favor considera utilizar otro motor de " -"temas GTK diferente." +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "Ir a la posición %d:%-2.2d / %d:%-2.2d" -#: src/skins/ui_main.c:1061 -msgid "Do not display this warning again" -msgstr "No mostrar esta advertencia otra vez" - -#: src/skins/ui_main.c:1269 -#, c-format -msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)" -msgstr "" - -#: src/skins/ui_main.c:1299 +#: src/skins/ui_main.c:828 #, c-format msgid "Volume: %d%%" msgstr "Volumen: %d%%" -#: src/skins/ui_main.c:1322 +#: src/skins/ui_main.c:851 #, c-format msgid "Balance: %d%% left" -msgstr "" +msgstr "Balance: %d%% izquierda" -#: src/skins/ui_main.c:1324 +#: src/skins/ui_main.c:853 msgid "Balance: center" -msgstr "" +msgstr "Balance: centrado" -#: src/skins/ui_main.c:1326 +#: src/skins/ui_main.c:855 #, c-format msgid "Balance: %d%% right" -msgstr "" +msgstr "Balance: %d%% derecha" -#: src/skins/ui_main.c:1618 +#: src/skins/ui_main.c:981 msgid "Options Menu" msgstr "Menú de opciones" -#: src/skins/ui_main.c:1622 +#: src/skins/ui_main.c:985 msgid "Disable 'Always On Top'" -msgstr "Deshabilitar 'Siempre encima'" +msgstr "Desactivar 'Siempre encima'" -#: src/skins/ui_main.c:1624 +#: src/skins/ui_main.c:987 msgid "Enable 'Always On Top'" -msgstr "Habilitar 'Siempre encima'" +msgstr "Activar 'Siempre encima'" -#: src/skins/ui_main.c:1627 +#: src/skins/ui_main.c:990 msgid "File Info Box" -msgstr "" +msgstr "Caja de información de archivo" -#: src/skins/ui_main.c:1631 -msgid "Disable 'GUI Scaling'" -msgstr "Deshabilitar 'Escalado de la interfaz'" - -#: src/skins/ui_main.c:1633 -msgid "Enable 'GUI Scaling'" -msgstr "Habilitar 'Escalado de la interfaz'" - -#: src/skins/ui_main.c:1636 +#: src/skins/ui_main.c:995 msgid "Visualization Menu" msgstr "Menú de visualización" -#: src/skins/ui_main.c:2348 +#: src/skins/ui_main.c:1653 msgid "Single mode." -msgstr "" +msgstr "Modo único." -#: src/skins/ui_main.c:2350 +#: src/skins/ui_main.c:1655 msgid "Playlist mode." msgstr "Modo de lista de reproducción." -#: src/skins/ui_main.c:2374 +#: src/skins/ui_main.c:1677 msgid "Stopping after song." -msgstr "Parar después de la canción" +msgstr "Parar después de la canción." -#: src/skins/ui_main.c:2376 +#: src/skins/ui_main.c:1679 msgid "Not stopping after song." -msgstr "No parar después de la canción" +msgstr "No parar después de la canción." -#: src/skins/ui_manager.c:50 src/skins/ui_manager.c:51 +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 msgid "Autoscroll Songname" -msgstr "" +msgstr "Desplazar el nombre de la canción" + +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "Parar tras la canción actual" -#: src/skins/ui_manager.c:56 src/skins/ui_manager.c:57 +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 msgid "Peaks" -msgstr "" +msgstr "Picos" -#: src/skins/ui_manager.c:68 src/skins/ui_manager.c:69 +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "Repetir" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "Orden aleatorio" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "No avanzar la lista de reproducción" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 msgid "Show Player" -msgstr "" +msgstr "Mostrar reproductor" -#: src/skins/ui_manager.c:71 src/skins/ui_manager.c:72 +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 msgid "Show Playlist Editor" -msgstr "" +msgstr "Mostrar el editor de listas de reproducción" -#: src/skins/ui_manager.c:74 src/skins/ui_manager.c:75 +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 msgid "Show Equalizer" -msgstr "" +msgstr "Mostrar el ecualizador" -#: src/skins/ui_manager.c:77 src/skins/ui_manager.c:78 +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 msgid "Always on Top" msgstr "Siempre encima" -#: src/skins/ui_manager.c:80 src/skins/ui_manager.c:81 +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 msgid "Put on All Workspaces" -msgstr "" +msgstr "Poner en todos los espacios de trabajo" -#: src/skins/ui_manager.c:83 src/skins/ui_manager.c:84 +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 msgid "Roll up Player" -msgstr "" +msgstr "Enrollar el reproductor" -#: src/skins/ui_manager.c:86 src/skins/ui_manager.c:87 +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 msgid "Roll up Playlist Editor" -msgstr "" +msgstr "Enrollar el editor de listas de reproducción" -#: src/skins/ui_manager.c:89 src/skins/ui_manager.c:90 +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 msgid "Roll up Equalizer" -msgstr "" - -#: src/skins/ui_manager.c:92 src/sndstretch/sndstretch_xmms.c:393 -msgid "Scale" -msgstr "" +msgstr "Enrollar el ecualizador" -#: src/skins/ui_manager.c:93 -msgid "DoubleSize" -msgstr "" - -#: src/skins/ui_manager.c:95 src/skins/ui_manager.c:96 -msgid "Easy Move" -msgstr "" - -#: src/skins/ui_manager.c:104 +#: src/skins/ui_manager.c:115 msgid "Analyzer" -msgstr "" +msgstr "Analizador" -#: src/skins/ui_manager.c:105 +#: src/skins/ui_manager.c:116 msgid "Scope" -msgstr "" +msgstr "Campo" -#: src/skins/ui_manager.c:106 +#: src/skins/ui_manager.c:117 msgid "Voiceprint" -msgstr "" +msgstr "Marca de voz" -#: src/skins/ui_manager.c:107 +#: src/skins/ui_manager.c:118 msgid "Off" -msgstr "Off" +msgstr "Apagado" -#: src/skins/ui_manager.c:111 src/skins/ui_manager.c:128 -#: src/skins/ui_manager.c:134 +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 msgid "Normal" -msgstr "" +msgstr "Normal" -#: src/skins/ui_manager.c:112 src/skins/ui_manager.c:129 +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 msgid "Fire" -msgstr "" +msgstr "Fuego" -#: src/skins/ui_manager.c:113 +#: src/skins/ui_manager.c:124 msgid "Vertical Lines" -msgstr "" +msgstr "Líneas verticales" -#: src/skins/ui_manager.c:117 +#: src/skins/ui_manager.c:128 msgid "Lines" -msgstr "" +msgstr "Líneas" -#: src/skins/ui_manager.c:118 +#: src/skins/ui_manager.c:129 msgid "Bars" -msgstr "" +msgstr "Barras" -#: src/skins/ui_manager.c:122 +#: src/skins/ui_manager.c:133 msgid "Dot Scope" -msgstr "" +msgstr "Campo de puntos" -#: src/skins/ui_manager.c:123 +#: src/skins/ui_manager.c:134 msgid "Line Scope" -msgstr "" +msgstr "Campo de líneas" -#: src/skins/ui_manager.c:124 +#: src/skins/ui_manager.c:135 msgid "Solid Scope" -msgstr "" +msgstr "Campo sólido" -#: src/skins/ui_manager.c:130 +#: src/skins/ui_manager.c:141 msgid "Ice" -msgstr "" +msgstr "Hielo" -#: src/skins/ui_manager.c:135 +#: src/skins/ui_manager.c:146 msgid "Smooth" -msgstr "" +msgstr "Suave" -#: src/skins/ui_manager.c:139 src/skins/ui_manager.c:147 +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 msgid "Slowest" msgstr "Muy lento" -#: src/skins/ui_manager.c:140 src/skins/ui_manager.c:148 +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 msgid "Slow" msgstr "Lento" -#: src/skins/ui_manager.c:141 src/skins/ui_manager.c:149 +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 msgid "Medium" msgstr "Medio" -#: src/skins/ui_manager.c:142 src/skins/ui_manager.c:150 +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 msgid "Fast" msgstr "Rápido" -#: src/skins/ui_manager.c:143 src/skins/ui_manager.c:151 +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 msgid "Fastest" msgstr "Muy rápido" -#: src/skins/ui_manager.c:155 +#: src/skins/ui_manager.c:166 msgid "Time Elapsed" -msgstr "" +msgstr "Tiempo transcurrido" -#: src/skins/ui_manager.c:156 +#: src/skins/ui_manager.c:167 msgid "Time Remaining" -msgstr "" +msgstr "Tiempo restante" + +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "Pausar" -#: src/skins/ui_manager.c:185 +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "Anterior" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "Siguiente" + +#: src/skins/ui_manager.c:196 msgid "Visualization" msgstr "Visualización" -#: src/skins/ui_manager.c:186 +#: src/skins/ui_manager.c:197 msgid "Visualization Mode" -msgstr "" +msgstr "Modo de visualización" -#: src/skins/ui_manager.c:187 +#: src/skins/ui_manager.c:198 msgid "Analyzer Mode" -msgstr "" +msgstr "Modo analizador" -#: src/skins/ui_manager.c:188 +#: src/skins/ui_manager.c:199 msgid "Scope Mode" -msgstr "" +msgstr "Modo de campo" -#: src/skins/ui_manager.c:189 +#: src/skins/ui_manager.c:200 msgid "Voiceprint Mode" -msgstr "" +msgstr "Modo marca de voz" -#: src/skins/ui_manager.c:190 +#: src/skins/ui_manager.c:201 msgid "WindowShade VU Mode" -msgstr "" +msgstr "Modo WindowShade VU" -#: src/skins/ui_manager.c:191 +#: src/skins/ui_manager.c:202 msgid "Analyzer Falloff" -msgstr "" +msgstr "Caída del analizador" -#: src/skins/ui_manager.c:192 +#: src/skins/ui_manager.c:203 msgid "Peaks Falloff" -msgstr "" +msgstr "Caída de los picos" + +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "Lista de reproducción" -#: src/skins/ui_manager.c:202 src/skins/ui_manager.c:203 +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "Nueva lista de reproducción" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 msgid "Select Next Playlist" -msgstr "" +msgstr "Lista de reproducción siguiente" -#: src/skins/ui_manager.c:205 src/skins/ui_manager.c:206 +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 msgid "Select Previous Playlist" -msgstr "" +msgstr "Lista de reproducción anterior" + +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "Eliminar la lista de reproducción" #: src/skins/ui_manager.c:222 -msgid "Refresh List" -msgstr "" +msgid "Import Playlist" +msgstr "Importar lista de reproducción" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "Carga un archivo de listas en la lista de reproducción seleccionada." #: src/skins/ui_manager.c:226 -msgid "List Manager" +msgid "Export Playlist" +msgstr "Exportar lista de reproducción" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "Guarda la lista de reproducción seleccionada." + +#: src/skins/ui_manager.c:229 +msgid "Refresh List" +msgstr "Actualizar lista" + +#: src/skins/ui_manager.c:230 +msgid "Refreshes metadata associated with a playlist entry." msgstr "" +"Actualiza los metadatos asociados con una entrada de la lista de " +"reproducción." + +#: src/skins/ui_manager.c:233 +msgid "Playlist Manager" +msgstr "Gestor de listas de reproducción" + +#: src/skins/ui_manager.c:234 +msgid "Queue Manager" +msgstr "Gestor de colas" + +#: src/skins/ui_manager.c:237 +msgid "View" +msgstr "Ver" + +#: src/skins/ui_manager.c:238 +msgid "Interface" +msgstr "Interfaz" + +#: src/skins/ui_manager.c:239 +msgid "Interface Preferences ..." +msgstr "Preferencias del interfaz ..." -#: src/skins/ui_manager.c:236 +#: src/skins/ui_manager.c:243 msgid "Add Internet Address..." -msgstr "" +msgstr "Añadir dirección de Internet..." + +#: src/skins/ui_manager.c:244 +msgid "Adds a remote track to the playlist." +msgstr "Añade una pista remota a la lista de reproducción." -#: src/skins/ui_manager.c:240 +#: src/skins/ui_manager.c:247 msgid "Add Files..." -msgstr "" +msgstr "Añadir archivos..." + +#: src/skins/ui_manager.c:248 +msgid "Adds files to the playlist." +msgstr "Añadir archivos a la lista de reproducción." -#: src/skins/ui_manager.c:246 +#: src/skins/ui_manager.c:253 msgid "Search and Select" -msgstr "" +msgstr "Buscar y seleccionar" -#: src/skins/ui_manager.c:247 +#: src/skins/ui_manager.c:254 msgid "" "Searches the playlist and selects playlist entries based on specific " "criteria." msgstr "" +"Busca en la lista de reproducción y selecciona las entradas que cumplen un " +"criterio específico." -#: src/skins/ui_manager.c:250 +#: src/skins/ui_manager.c:257 msgid "Invert Selection" -msgstr "" +msgstr "Invertir la selección" -#: src/skins/ui_manager.c:251 +#: src/skins/ui_manager.c:258 msgid "Inverts the selected and unselected entries." -msgstr "" +msgstr "Invierte las entradas seleccionadas y no seleccionadas." + +#: src/skins/ui_manager.c:261 +msgid "Select All" +msgstr "Seleccionar todo" + +#: src/skins/ui_manager.c:262 +msgid "Selects all of the playlist entries." +msgstr "Selecciona todos los elementos de la lista de reproducción." + +#: src/skins/ui_manager.c:265 +msgid "Select None" +msgstr "No seleccionar nada" + +#: src/skins/ui_manager.c:266 +msgid "Deselects all of the playlist entries." +msgstr "Quita la selección de todos los elementos de la lista." -#: src/skins/ui_manager.c:268 +#: src/skins/ui_manager.c:271 +msgid "Remove All" +msgstr "Eliminar todo" + +#: src/skins/ui_manager.c:272 +msgid "Removes all entries from the playlist." +msgstr "Elimina todas las entradas de la lista de reproducción." + +#: src/skins/ui_manager.c:275 msgid "Clear Queue" -msgstr "Limpiar lista" +msgstr "Limpiar la cola" -#: src/skins/ui_manager.c:269 +#: src/skins/ui_manager.c:276 msgid "Clears the queue associated with this playlist." -msgstr "Limpiar la lista asociada con esta lista de reproducción" +msgstr "Limpia la cola asociada con esta lista de reproducción." -#: src/skins/ui_manager.c:272 +#: src/skins/ui_manager.c:279 msgid "Remove Unavailable Files" -msgstr "Eliminar archivos no disponibles" +msgstr "Eliminar los archivos no disponibles" -#: src/skins/ui_manager.c:273 +#: src/skins/ui_manager.c:280 msgid "Removes unavailable files from the playlist." -msgstr "Eliminar archivos no disponibles de la lista de reproducción" +msgstr "Elimina los archivos no disponibles de la lista de reproducción." -#: src/skins/ui_manager.c:276 +#: src/skins/ui_manager.c:283 msgid "Remove Duplicates" msgstr "Eliminar duplicados" -#: src/skins/ui_manager.c:279 +#: src/skins/ui_manager.c:285 src/skins/ui_manager.c:317 +#: src/skins/ui_manager.c:347 +msgid "By Title" +msgstr "Por título" + +#: src/skins/ui_manager.c:286 msgid "Removes duplicate entries from the playlist by title." -msgstr "" +msgstr "Elimina las entradas duplicadas de la lista por título." -#: src/skins/ui_manager.c:282 src/skins/ui_manager.c:318 -#: src/skins/ui_manager.c:348 +#: src/skins/ui_manager.c:289 src/skins/ui_manager.c:329 +#: src/skins/ui_manager.c:359 msgid "By Filename" msgstr "Por nombre de archivo" -#: src/skins/ui_manager.c:283 +#: src/skins/ui_manager.c:290 msgid "Removes duplicate entries from the playlist by filename." msgstr "" +"Elimina las entradas duplicadas de la lista de reproducción por nombre de " +"archivo." -#: src/skins/ui_manager.c:286 src/skins/ui_manager.c:322 -#: src/skins/ui_manager.c:352 +#: src/skins/ui_manager.c:293 src/skins/ui_manager.c:333 +#: src/skins/ui_manager.c:363 msgid "By Path + Filename" msgstr "Por ruta y nombre de archivo" -#: src/skins/ui_manager.c:287 +#: src/skins/ui_manager.c:294 msgid "Removes duplicate entries from the playlist by their full path." msgstr "" +"Elimina las entradas duplicadas de la lista de reproducción por su ruta " +"completa." -#: src/skins/ui_manager.c:300 -msgid "Reverse List" -msgstr "" +#: src/skins/ui_manager.c:297 +msgid "Remove Unselected" +msgstr "Eliminar los no seleccionados" + +#: src/skins/ui_manager.c:298 +msgid "Remove unselected entries from the playlist." +msgstr "Elimina las entradas no seleccionadas de la lista de reproducción." #: src/skins/ui_manager.c:301 +msgid "Remove Selected" +msgstr "Eliminar los seleccionados" + +#: src/skins/ui_manager.c:302 +msgid "Remove selected entries from the playlist." +msgstr "Elimina las entradas seleccionadas de la lista de reproducción." + +#: src/skins/ui_manager.c:307 +msgid "Randomize List" +msgstr "Ordenar aleatoriamente" + +#: src/skins/ui_manager.c:308 +msgid "Randomizes the playlist." +msgstr "Ordena la lista de reproducción de forma aleatoria." + +#: src/skins/ui_manager.c:311 +msgid "Reverse List" +msgstr "Invertir la lista" + +#: src/skins/ui_manager.c:312 msgid "Reverses the playlist." -msgstr "" +msgstr "Invierte la lista de reproducción." -#: src/skins/ui_manager.c:304 +#: src/skins/ui_manager.c:315 msgid "Sort List" msgstr "Ordenar lista" -#: src/skins/ui_manager.c:307 src/skins/ui_manager.c:337 +#: src/skins/ui_manager.c:318 src/skins/ui_manager.c:348 msgid "Sorts the list by title." -msgstr "" +msgstr "Ordena la lista por título." + +#: src/skins/ui_manager.c:321 src/skins/ui_manager.c:351 +msgid "By Album" +msgstr "Por álbum" -#: src/skins/ui_manager.c:311 src/skins/ui_manager.c:341 +#: src/skins/ui_manager.c:322 src/skins/ui_manager.c:352 msgid "Sorts the list by album." -msgstr "" +msgstr "Ordena la lista por álbum." + +#: src/skins/ui_manager.c:325 src/skins/ui_manager.c:355 +msgid "By Artist" +msgstr "Por artista" -#: src/skins/ui_manager.c:315 src/skins/ui_manager.c:345 +#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 msgid "Sorts the list by artist." -msgstr "" +msgstr "Ordena la lista por artista." -#: src/skins/ui_manager.c:319 src/skins/ui_manager.c:349 +#: src/skins/ui_manager.c:330 src/skins/ui_manager.c:360 msgid "Sorts the list by filename." -msgstr "" +msgstr "Ordena la lista por nombre de archivo." -#: src/skins/ui_manager.c:323 src/skins/ui_manager.c:353 +#: src/skins/ui_manager.c:334 src/skins/ui_manager.c:364 msgid "Sorts the list by full pathname." -msgstr "" +msgstr "Ordena la lista por ruta de archivo completa." -#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +#: src/skins/ui_manager.c:337 src/skins/ui_manager.c:367 msgid "By Date" msgstr "Por fecha" -#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +#: src/skins/ui_manager.c:338 src/skins/ui_manager.c:368 msgid "Sorts the list by modification time." -msgstr "" +msgstr "Ordena la lista por fecha de modificación." -#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +#: src/skins/ui_manager.c:341 src/skins/ui_manager.c:371 +msgid "By Track Number" +msgstr "Por número de pista" + +#: src/skins/ui_manager.c:342 src/skins/ui_manager.c:372 msgid "Sorts the list by track number." -msgstr "" +msgstr "Ordena la lista por número de pista." -#: src/skins/ui_manager.c:334 +#: src/skins/ui_manager.c:345 msgid "Sort Selected" -msgstr "" +msgstr "Ordenar los seleccionados" -#: src/skins/ui_manager.c:373 -msgid "Plugin Services" -msgstr "" +#: src/skins/ui_manager.c:381 +msgid "File" +msgstr "Archivo" #: src/skins/ui_manager.c:384 +msgid "Plugin Services" +msgstr "Servicios de complementos" + +#: src/skins/ui_manager.c:386 src/skins/ui_manager.c:389 +msgid "View Track Details" +msgstr "Ver detalles de la pista" + +#: src/skins/ui_manager.c:387 src/skins/ui_manager.c:390 +msgid "View track details" +msgstr "Ver detalles de la pista" + +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:393 +msgid "About Audacious" +msgstr "Acerca de Audacious" + +#: src/skins/ui_manager.c:395 msgid "Play File" msgstr "Reproducir archivo" -#: src/skins/ui_manager.c:387 +#: src/skins/ui_manager.c:396 +msgid "Load and play a file" +msgstr "Carga y reproduce un archivo." + +#: src/skins/ui_manager.c:398 msgid "Play Location" -msgstr "Reproducir lugar" +msgstr "Reproducir localización" + +#: src/skins/ui_manager.c:399 +msgid "Play media from the selected location" +msgstr "Reproduce los medios desde la localización seleccionada." + +#: src/skins/ui_manager.c:401 +msgid "Plugin services" +msgstr "Servicios de complementos" + +#: src/skins/ui_manager.c:403 +msgid "Preferences" +msgstr "Preferencias" + +#: src/skins/ui_manager.c:404 +msgid "Open preferences window" +msgstr "Abrir la ventana de preferencias" -#: src/skins/ui_manager.c:428 +#: src/skins/ui_manager.c:407 +msgid "Quit Audacious" +msgstr "Salir de Audacious" + +#: src/skins/ui_manager.c:409 src/skins/ui_manager.c:410 +msgid "Set A-B" +msgstr "Poner A-B" + +#: src/skins/ui_manager.c:412 src/skins/ui_manager.c:413 +msgid "Clear A-B" +msgstr "Quitar A-B" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Jump to Time" +msgstr "Saltar en el tiempo" + +#: src/skins/ui_manager.c:421 +msgid "Queue Toggle" +msgstr "Conmutar cola" + +#: src/skins/ui_manager.c:422 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "Activa/desactiva las entradas en la lista de reproducción." + +#: src/skins/ui_manager.c:425 +msgid "Copy" +msgstr "Copiar" + +#: src/skins/ui_manager.c:427 +msgid "Cut" +msgstr "Cortar" + +#: src/skins/ui_manager.c:429 +msgid "Paste" +msgstr "Pegar" + +#: src/skins/ui_manager.c:436 msgid "Load" -msgstr "" +msgstr "Cargar" -#: src/skins/ui_manager.c:433 src/skins/ui_manager.c:454 -#: src/skins/ui_manager.c:469 -msgid "Preset" -msgstr "" +#: src/skins/ui_manager.c:437 +msgid "Import" +msgstr "Importar" -#: src/skins/ui_manager.c:434 -msgid "Load preset" -msgstr "" +#: src/skins/ui_manager.c:438 +msgid "Save" +msgstr "Guardar" -#: src/skins/ui_manager.c:436 src/skins/ui_manager.c:457 -#: src/skins/ui_manager.c:472 +#: src/skins/ui_manager.c:439 +msgid "Delete" +msgstr "Borrar" + +#: src/skins/ui_manager.c:441 src/skins/ui_manager.c:462 +#: src/skins/ui_manager.c:477 +msgid "Preset" +msgstr "Predefinido" + +#: src/skins/ui_manager.c:444 src/skins/ui_manager.c:465 +#: src/skins/ui_manager.c:480 msgid "Auto-load preset" -msgstr "" +msgstr "Auto-cargar predefinido" -#: src/skins/ui_manager.c:437 +#: src/skins/ui_manager.c:445 msgid "Load auto-load preset" -msgstr "" +msgstr "Cargar auto-cargar predefinido" -#: src/skins/ui_manager.c:440 +#: src/skins/ui_manager.c:448 msgid "Load default preset into equalizer" -msgstr "" +msgstr "Cargar el predefinido predeterminado en el ecualizador" -#: src/skins/ui_manager.c:442 +#: src/skins/ui_manager.c:450 msgid "Zero" -msgstr "" +msgstr "Cero" -#: src/skins/ui_manager.c:443 +#: src/skins/ui_manager.c:451 msgid "Set equalizer preset levels to zero" -msgstr "" +msgstr "Pone los niveles predefinidos del ecualizador a cero" -#: src/skins/ui_manager.c:445 +#: src/skins/ui_manager.c:453 msgid "From file" -msgstr "" +msgstr "Desde archivo" -#: src/skins/ui_manager.c:446 +#: src/skins/ui_manager.c:454 msgid "Load preset from file" -msgstr "" +msgstr "Cargar el predefinido desde un archivo" -#: src/skins/ui_manager.c:448 +#: src/skins/ui_manager.c:456 msgid "From WinAMP EQF file" -msgstr "" +msgstr "Desde archivo" -#: src/skins/ui_manager.c:449 +#: src/skins/ui_manager.c:457 msgid "Load preset from WinAMP EQF file" -msgstr "" +msgstr "Carga el predefinido desde un archivo EQF de WinAMP" -#: src/skins/ui_manager.c:451 +#: src/skins/ui_manager.c:459 msgid "WinAMP Presets" -msgstr "" +msgstr "Predefinidos de WinAMP" -#: src/skins/ui_manager.c:452 +#: src/skins/ui_manager.c:460 msgid "Import WinAMP presets" -msgstr "" - -#: src/skins/ui_manager.c:455 -msgid "Save preset" -msgstr "" +msgstr "Importar los predefindos de WinAMP" -#: src/skins/ui_manager.c:458 +#: src/skins/ui_manager.c:466 msgid "Save auto-load preset" -msgstr "" +msgstr "Guardar auto-cargar predefinido" -#: src/skins/ui_manager.c:461 +#: src/skins/ui_manager.c:469 msgid "Save default preset" -msgstr "" +msgstr "Guardar predefinido predeterminado" -#: src/skins/ui_manager.c:463 +#: src/skins/ui_manager.c:471 msgid "To file" -msgstr "" +msgstr "A un archivo" -#: src/skins/ui_manager.c:464 +#: src/skins/ui_manager.c:472 msgid "Save preset to file" -msgstr "" +msgstr "Guarda el predefinido en un archivo" -#: src/skins/ui_manager.c:466 +#: src/skins/ui_manager.c:474 msgid "To WinAMP EQF file" -msgstr "" +msgstr "A un archivo EQF de WinAMP" -#: src/skins/ui_manager.c:467 +#: src/skins/ui_manager.c:475 msgid "Save preset to WinAMP EQF file" -msgstr "" - -#: src/skins/ui_manager.c:470 -msgid "Delete preset" -msgstr "" +msgstr "Guarda el predefinido en un archivo EQF de WinAMP" -#: src/skins/ui_manager.c:473 +#: src/skins/ui_manager.c:481 msgid "Delete auto-load preset" -msgstr "" +msgstr "Borrar auto-cargar predefinido" -#: src/skins/ui_playlist.c:374 +#: src/skins/ui_playlist.c:248 msgid "Search entries in active playlist" -msgstr "" +msgstr "Buscar entradas en la lista de reproducción activa" -#: src/skins/ui_playlist.c:382 +#: src/skins/ui_playlist.c:256 msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " +"Select entries in playlist by filling one or more fields. Fields use regular" +" expressions syntax, case-insensitive. If you don't know how regular " "expressions work, simply insert a literal portion of what you're searching " "for." msgstr "" +"Seleccione entradas en la lista de reproducción indicando uno o más campos. " +"Los campos utilizan sintaxis de expresiones regulares, sin distinguir " +"mayúsculas de minúsculas. Si no sabe como funcionan las expresiones " +"regulares, tan solo escriba la parte del literal que quiere buscar." + +#: src/skins/ui_playlist.c:264 +msgid "Title: " +msgstr "Título: " -#: src/skins/ui_playlist.c:397 +#: src/skins/ui_playlist.c:271 msgid "Album: " -msgstr "" +msgstr "Ãlbum: " -#: src/skins/ui_playlist.c:404 +#: src/skins/ui_playlist.c:278 msgid "Artist: " -msgstr "Artista" +msgstr "Artista: " -#: src/skins/ui_playlist.c:411 +#: src/skins/ui_playlist.c:285 msgid "Filename: " -msgstr "Nombre del archivo" +msgstr "Nombre del archivo: " -#: src/skins/ui_playlist.c:419 +#: src/skins/ui_playlist.c:293 msgid "Clear previous selection before searching" -msgstr "" +msgstr "Limpiar la selección previa antes de buscar" -#: src/skins/ui_playlist.c:422 +#: src/skins/ui_playlist.c:296 msgid "Automatically toggle queue for matching entries" -msgstr "" +msgstr "Conmutar automáticamente la cola para las entradas coincidentes" -#: src/skins/ui_playlist.c:425 +#: src/skins/ui_playlist.c:299 msgid "Create a new playlist with matching entries" -msgstr "" +msgstr "Crear una nueva lista de reproducción con las entradas coincidentes" -#: src/skins/ui_playlist.c:772 -msgid "Save as Static Playlist" -msgstr "" - -#: src/skins/ui_playlist.c:779 -msgid "Use Relative Path" -msgstr "" - -#: src/skins/ui_playlist.c:802 -msgid "Load Playlist" -msgstr "Cargar lista de reproducción" - -#: src/skins/ui_playlist.c:815 -msgid "Save Playlist" -msgstr "Guardar lista de reproducción" - -#: src/skins/ui_playlist.c:1146 +#: src/skins/ui_playlist.c:765 msgid "Audacious Playlist Editor" -msgstr "" +msgstr "Editor de listas de reproducción de Audacious" -#: src/skins/ui_playlist.c:1206 +#: src/skins/ui_playlist.c:812 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d de %d)" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "31 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "63 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "125 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "250 Hz" -msgstr "22050 Hz " - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "500 Hz" -msgstr "44100 Hz " - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "1 kHz" -msgstr "96 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "2 kHz" -msgstr "22 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "4 kHz" -msgstr "44 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "8 kHz" -msgstr "48 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "16 kHz" -msgstr "96 kHz" - -#: src/skins/ui_skinselector.c:179 +#: src/skins/ui_skinselector.c:162 msgid "Archived Winamp 2.x skin" -msgstr "" +msgstr "Tema para Winamp 2.x archivado" -#: src/skins/ui_skinselector.c:184 +#: src/skins/ui_skinselector.c:167 msgid "Unarchived Winamp 2.x skin" -msgstr "" +msgstr "Tema para Winamp 2.x no archivado" -#: src/skins/util.c:834 +#: src/skins/util.c:774 #, c-format msgid "Could not create directory (%s): %s\n" -msgstr "" +msgstr "No se pudo crear el directorio (%s): %s\n" -#: src/sndfile/plugin.c:531 +#: src/sndfile/plugin.c:456 msgid "About sndfile plugin" -msgstr "" +msgstr "Acerca del complemento de archivos de sonido" -#: src/sndfile/plugin.c:532 -msgid "" -"Adapted for Audacious usage by Tony Vroon \n" -"from the xmms_sndfile plugin which is:\n" -"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -"This program is free software ; you can redistribute it and/or modify \n" -"it under the terms of the GNU General Public License as published by \n" -"the Free Software Foundation ; either version 2 of the License, or \n" -"(at your option) any later version. \n" -" \n" -"This program is distributed in the hope that it will be useful, \n" -"but WITHOUT ANY WARRANTY ; without even the implied warranty of \n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n" -"See the GNU General Public License for more details. \n" -"\n" -"You should have received a copy of the GNU General Public \n" -"License along with this program ; if not, write to \n" -"the Free Software Foundation, Inc., \n" -"51 Franklin Street, Fifth Floor, \n" -"Boston, MA 02110-1301 USA" -msgstr "" -"Adapted for Audacious usage by Tony Vroon \n" -"from the xmms_sndfile plugin which is:\n" -"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -"This program is free software ; you can redistribute it and/or modify \n" -"it under the terms of the GNU General Public License as published by \n" -"the Free Software Foundation ; either version 2 of the License, or \n" -"(at your option) any later version. \n" -" \n" -"This program is distributed in the hope that it will be useful, \n" -"but WITHOUT ANY WARRANTY ; without even the implied warranty of \n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n" -"See the GNU General Public License for more details. \n" -"\n" -"You should have received a copy of the GNU General Public \n" -"License along with this program ; if not, write to \n" -"the Free Software Foundation, Inc., \n" -"51 Franklin Street, Fifth Floor, \n" -"Boston, MA 02110-1301 USA" - -#: src/sndstretch/sndstretch_xmms.c:175 +#: src/sndstretch/sndstretch_xmms.c:155 msgid "About SndStretch" -msgstr "" +msgstr "Acerca del extensor de sonido" -#: src/sndstretch/sndstretch_xmms.c:336 +#: src/sndstretch/sndstretch_xmms.c:308 msgid "Volume corr." -msgstr "" +msgstr "Corr. volumen" -#: src/sndstretch/sndstretch_xmms.c:337 +#: src/sndstretch/sndstretch_xmms.c:309 msgid "Short Overlap" -msgstr "" +msgstr "Solapamiento corto" -#: src/sndstretch/sndstretch_xmms.c:391 +#: src/sndstretch/sndstretch_xmms.c:355 msgid "Speed" -msgstr "" +msgstr "Velocidad" -#: src/sndstretch/sndstretch_xmms.c:392 +#: src/sndstretch/sndstretch_xmms.c:356 msgid "Pitch" -msgstr "" +msgstr "Tono" + +#: src/sndstretch/sndstretch_xmms.c:357 +msgid "Scale" +msgstr "Escala" -#: src/sndstretch/sndstretch_xmms.c:413 +#: src/sndstretch/sndstretch_xmms.c:377 msgid "SndStretch - Configuration" -msgstr "" +msgstr "Extensor de sonido - Configuración" -#: src/song_change/song_change.c:397 +#: src/song_change/song_change.c:437 msgid "Command to run when Audacious starts a new song." -msgstr "" +msgstr "Comando a ejecutar cuando Audacious reproduce una canción nueva." -#: src/song_change/song_change.c:398 src/song_change/song_change.c:402 -#: src/song_change/song_change.c:406 src/song_change/song_change.c:410 +#: src/song_change/song_change.c:439 src/song_change/song_change.c:445 +#: src/song_change/song_change.c:451 src/song_change/song_change.c:457 msgid "Command:" -msgstr "" +msgstr "Comando:" -#: src/song_change/song_change.c:401 +#: src/song_change/song_change.c:443 msgid "Command to run toward the end of a song." -msgstr "" +msgstr "Comando para ejecutar al final de una canción." -#: src/song_change/song_change.c:405 +#: src/song_change/song_change.c:449 msgid "Command to run when Audacious reaches the end of the playlist." msgstr "" +"Comando para ejecutar cuando Audacious llega al final de una lista de " +"reproducción." -#: src/song_change/song_change.c:409 +#: src/song_change/song_change.c:455 msgid "" "Command to run when title changes for a song (i.e. network streams titles)." msgstr "" +"Comando para ejecutar cuando el título cambia para una canción (es decir, " +"títulos de flujos en red)" -#: src/song_change/song_change.c:413 +#: src/song_change/song_change.c:461 msgid "" "You can use the following format strings which\n" "will be substituted before calling the command\n" @@ -5107,32 +3434,48 @@ "%n or %s: Song name\n" "%r: Rate (in bits per second)\n" "%t: Playlist position (%02d)\n" -"%p: Currently playing (1 or 0)" -msgstr "" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" +msgstr "" +"Puede utilizar los siguientes formatos de cadena que\n" +"se reemplazarán antes de ejecutar el comando (no\n" +"todos son útiles para el final del comando de fin de lista).\n" +"\n" +"%F: Frecuencia (en hercios)\n" +"%c: Número de canales\n" +"%f: Nombre de archivo (ruta completa)\n" +"%l: Longitud (en milisegundos)\n" +"%n o %s: Nombre de la canción\n" +"%r: Tasa (en bits por segundo)\n" +"%t: Posición de la lista de reproducción (%02d)\n" +"%p: Reproduciendo actualmente (1 o 0)\n" +"%a: Artista\n" +"%b: Ãlbum\n" +"%T: Título de la pista" -#: src/song_change/song_change.c:437 +#: src/song_change/song_change.c:488 msgid "" "Parameters passed to the shell should be encapsulated in " "quotes. Doing otherwise is a security risk." msgstr "" +"Los parámetros enviados a la consola se deberían " +"encapsular con comillas. De otra forma existe un riesgo de seguridad." -#: src/song_change/song_change.c:448 +#: src/song_change/song_change.c:499 msgid "Commands" -msgstr "" +msgstr "Comandos" -#: src/song_change/song_change.c:484 +#: src/song_change/song_change.c:529 msgid "Song Change" -msgstr "" - -#: src/spectrum/spectrum.c:89 -msgid "Spectrum Analyzer" -msgstr "" +msgstr "Cambio de canción" -#: src/statusicon/statusicon.c:355 +#: src/statusicon/statusicon.c:379 msgid "About Status Icon Plugin" -msgstr "Acerca del plugin Status Icon" +msgstr "Acerca del complemento de icono de estado" -#: src/statusicon/statusicon.c:356 +#: src/statusicon/statusicon.c:380 msgid "" "Status Icon Plugin\n" "\n" @@ -5142,162 +3485,81 @@ "This plugin provides a status icon, placed in\n" "the system tray area of the window manager.\n" msgstr "" -"Status Icon Plugin\n" +"Complemento de icono de estado\n" "\n" "Copyright 2005-2007 Giacomo Lozito \n" "Copyright 2010 MichaÅ‚ Lipski \n" "\n" -"This plugin provides a status icon, placed in\n" -"the system tray area of the window manager.\n" +"Este complemento proporciona un icono de estado, situado\n" +"en la bandeja de sistema del gestor de ventanas.\n" -#: src/statusicon/statusicon.c:418 +#: src/statusicon/statusicon.c:451 msgid "Status Icon Plugin - Preferences" -msgstr "Plugin Status Icon - Preferencias" +msgstr "Complemento de icono de estado - Preferencias" -#: src/statusicon/statusicon.c:428 +#: src/statusicon/statusicon.c:461 msgid "Right-Click Menu" -msgstr "" +msgstr "Menú con click derecho" -#: src/statusicon/statusicon.c:433 +#: src/statusicon/statusicon.c:466 msgid "Small playback menu #1" msgstr "Menú pequeño de reproducción #1" -#: src/statusicon/statusicon.c:436 +#: src/statusicon/statusicon.c:469 msgid "Small playback menu #2" msgstr "Menú pequeño de reproducción #2" -#: src/statusicon/statusicon.c:452 +#: src/statusicon/statusicon.c:485 msgid "Mouse Scroll Action" -msgstr "" +msgstr "Acción de la rueda del ratón" -#: src/statusicon/statusicon.c:456 +#: src/statusicon/statusicon.c:489 msgid "Change volume" -msgstr "" +msgstr "Cambiar el volumen" -#: src/statusicon/statusicon.c:458 +#: src/statusicon/statusicon.c:491 msgid "Change playing song" -msgstr "" +msgstr "Cambiar la canción en reproducción" + +#: src/statusicon/statusicon.c:504 +msgid "Other settings" +msgstr "Otros ajustes" -#: src/stereo_plugin/stereo.c:40 +#: src/statusicon/statusicon.c:509 +msgid "Disable the popup window" +msgstr "Desactivar la ventana emergente" + +#: src/statusicon/statusicon.c:516 +msgid "Close to the notification area (system tray)" +msgstr "Cerrar al área de notificación (bandeja de sistema)" + +#: src/statusicon/statusicon.c:524 +msgid "Advance in playlist when scrolling upward" +msgstr "Avanzar en la lista de reproducción al desplazar arriba" + +#: src/stereo_plugin/stereo.c:45 msgid "" "Extra Stereo Plugin\n" "\n" "By Johan Levin 1999." msgstr "" -"Extra Stereo Plugin\n" +"Complemento de estéreo extra\n" "\n" -"By Johan Levin 1999." +"Por Johan Levin 1999." #: src/stereo_plugin/stereo.c:64 msgid "About Extra Stereo Plugin" -msgstr "" +msgstr "Acerca del complemento de estéreo extra" -#: src/stereo_plugin/stereo.c:100 +#: src/stereo_plugin/stereo.c:95 msgid "Configure Extra Stereo" -msgstr "" - -#: src/streambrowser/gui/streambrowser_win.c:62 -msgid "Search:" -msgstr "" - -#: src/streambrowser/gui/streambrowser_win.c:81 -#: src/streambrowser/gui/streambrowser_win.c:370 -msgid "Add Bookmark" -msgstr "" - -#: src/streambrowser/gui/streambrowser_win.c:95 -msgid "Stream browser" -msgstr "" - -#: src/streambrowser/gui/streambrowser_win.c:319 -msgid "Stream name" -msgstr "" - -#: src/streambrowser/gui/streambrowser_win.c:326 -msgid "Now playing" -msgstr "" - -#: src/streambrowser/gui/streambrowser_win.c:367 -msgid "Remove Bookmark" -msgstr "" - -#: src/streambrowser/streambrowser.c:331 -msgid "About Stream Browser" -msgstr "" - -#: src/streambrowser/streambrowser.c:332 -msgid "" -"Copyright (c) 2008, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming " -"directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" -"\n" -"This was a Google Summer of Code 2008 project." -msgstr "" -"Copyright (c) 2008, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming " -"directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" -"\n" -"This was a Google Summer of Code 2008 project." - -#: src/streambrowser/streambrowser.c:357 src/streambrowser/streambrowser.c:367 -msgid "Streambrowser" -msgstr "" - -#: src/sun/about.c:30 -msgid "About the Sun Driver" -msgstr "" - -#: src/sun/about.c:31 -msgid "" -"XMMS BSD Sun Driver\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" -msgstr "" -"XMMS BSD Sun Driver\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" - -#: src/sun/configure.c:199 -msgid "Audio control device:" -msgstr "" - -#: src/sun/configure.c:270 -msgid "Buffer size (ms):" -msgstr "" - -#: src/sun/configure.c:348 -msgid "Volume controls device:" -msgstr "" - -#: src/sun/configure.c:361 -msgid "XMMS uses mixer exclusively." -msgstr "" - -#: src/sun/configure.c:536 -msgid "Sun driver configuration" -msgstr "" +msgstr "Configurar estéreo extra" -#: src/tonegen/tonegen.c:53 +#: src/tonegen/tonegen.c:49 msgid "About Tone Generator" -msgstr "" +msgstr "Acerca del generador de tonos" -#: src/tonegen/tonegen.c:55 +#: src/tonegen/tonegen.c:51 msgid "" "Sinus tone generator by Haavard Kvaalen \n" "Modified by Daniel J. Peng \n" @@ -5305,42 +3567,30 @@ "To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" "e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" msgstr "" -"Sinus tone generator by Haavard Kvaalen \n" -"Modified by Daniel J. Peng \n" +"Generador de tonos por Haavard Kvaalen \n" +"Modificado por Daniel J. Peng \n" "\n" -"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" -"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" +"Para utilizarlo, añada una URL: tone://frequencia1;frequencia2;frequencia3;...\n" +"p. ej. tone://2000;2005 para reproducir un tono de 2000Hz y otro de 2005Hz" -#: src/tonegen/tonegen.c:105 +#: src/tonegen/tonegen.c:101 #, c-format msgid "%s %.1f Hz" msgstr "%s %.1f Hz" -#: src/tonegen/tonegen.c:105 +#: src/tonegen/tonegen.c:101 msgid "Tone Generator: " -msgstr "" - -#: src/vorbis/configure.c:31 -msgid "Override generic titles" -msgstr "" - -#: src/vorbis/configure.c:32 -msgid "Title format:" -msgstr "Formato del título:" +msgstr "Generador de tonos: " -#: src/vorbis/configure.c:36 -msgid "Ogg Vorbis Tags" -msgstr "Ogg Vorbis Tags" +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" +msgstr "Acerca del complemento de archivos de E/S" -#: src/vorbis/configure.c:68 -msgid "Ogg Vorbis Audio Plugin Configuration" -msgstr "Configuración del plugin de audio Ogg Vorbis" - -#: src/vorbis/vorbis.c:549 +#: src/vorbis/vorbis.c:573 msgid "About Ogg Vorbis Audio Plugin" -msgstr "Acerca del plugin de audio Ogg Vorbis" +msgstr "Acerca del complemento de sonido Ogg Vorbis" -#: src/vorbis/vorbis.c:554 +#: src/vorbis/vorbis.c:578 msgid "" "Ogg Vorbis Plugin by the Xiph.org Foundation\n" "\n" @@ -5358,11 +3608,11 @@ "\n" "Visit the Xiph.org Foundation at http://www.xiph.org/\n" msgstr "" -"Ogg Vorbis Plugin by the Xiph.org Foundation\n" +"Complemento Ogg Vorbis por la fundación Xiph.org\n" "\n" -"Original code by\n" +"Código original de\n" "Tony Arcieri \n" -"Contributions from\n" +"Contribuciones de\n" "Chris Montgomery \n" "Peter Alm \n" "Michael Smith \n" @@ -5372,7 +3622,7 @@ "Gian-Carlo Pascutto \n" "Eugene Zagidullin \n" "\n" -"Visit the Xiph.org Foundation at http://www.xiph.org/\n" +"Visite la fundación Xiph.org en http://www.xiph.org/\n" #: src/vtx/about.c:14 msgid "About Vortex Player" @@ -5381,72 +3631,36 @@ #: src/vtx/about.c:15 msgid "" "Vortex file format player by Sashnov Alexander \n" -"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" "\n" "Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" "and other AY/YM music sites.\n" "\n" "Audacious implementation by Pavel Vymetalek " msgstr "" -"Vortex file format player by Sashnov Alexander \n" -"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"Reproductor de archivos con formato Vortex por Sashnov Alexander \n" +"Basado en el código original in_vtx.dll de Roman Sherbakov \n" "\n" -"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" -"and other AY/YM music sites.\n" +"Se puede encontrar música en formato vtx en http://vtx.microfor.ru/music.htm\n" +"y otros portales de música AY/YM.\n" "\n" -"Audacious implementation by Pavel Vymetalek " +"Implementación de Audacious por Pavel Vymetalek " -#: src/wavpack/wavpack.c:371 +#: src/wavpack/wavpack.c:353 #, c-format msgid "Wavpack Decoder Plugin %s" -msgstr "Plugin decodificador Wavpack %s" +msgstr "Complemento decodificador Wavpack %s" -#: src/wavpack/wavpack.c:372 +#: src/wavpack/wavpack.c:354 msgid "" "Copyright (c) 2006 William Pitcock \n" "\n" "Some of the plugin code was by Miles Egan\n" "Visit the Wavpack site at http://www.wavpack.com/\n" msgstr "" -"Copyright (c) 2006 William Pitcock \n" +"Copyright (c) 2006 William Pitcock \n" "\n" -"Some of the plugin code was by Miles Egan\n" -"Visit the Wavpack site at http://www.wavpack.com/\n" - -#~ msgid "PREAMP" -#~ msgstr "PREAMP" - -#~ msgid "60HZ" -#~ msgstr "60HZ" - -#~ msgid "170HZ" -#~ msgstr "170HZ" - -#~ msgid "310HZ" -#~ msgstr "310HZ" - -#~ msgid "600HZ" -#~ msgstr "600HZ" - -#~ msgid "1KHZ" -#~ msgstr "1KHZ" - -#~ msgid "3KHZ" -#~ msgstr "3KHZ" - -#~ msgid "6KHZ" -#~ msgstr "6KHZ" - -#~ msgid "12KHZ" -#~ msgstr "12KHZ" - -#~ msgid "14KHZ" -#~ msgstr "14KHZ" +"Parte del código del complemento es de Miles Egan\n" +"Visite el portal de Wavpack en http://www.wavpack.com/\n" -#~ msgid "16KHZ" -#~ msgstr "16KHZ" -#~ msgid "Audacious standard menu" -#~ msgstr "Menú estándar Audacious" diff -Nru audacious-plugins-2.4.4/po/et.po audacious-plugins-3.2/po/et.po --- audacious-plugins-2.4.4/po/et.po 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/et.po 2012-01-20 19:48:30.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: audacious-plugins 1.4.2\n" "Report-Msgid-Bugs-To: http://jira.atheme.org/\n" -"POT-Creation-Date: 2010-08-03 17:55-0400\n" +"POT-Creation-Date: 2011-07-17 18:49-0400\n" "PO-Revision-Date: 2007-12-30 17:49+0200\n" "Last-Translator: Ivar Smolin \n" "Language-Team: Estonian \n" @@ -17,7 +17,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/aac/libmp4.c:291 +#: src/aac/libmp4.c:256 #, c-format msgid "" "Using libfaad2-%s for decoding.\n" @@ -25,541 +25,55 @@ "Copyright (c) 2005-2006 Audacious team" msgstr "" -#: src/aac/libmp4.c:296 +#: src/aac/libmp4.c:261 #, fuzzy msgid "About MP4 AAC decoder plugin" msgstr "MP4 AAC esituspluginast lähemalt" -#: src/adplug/adplug-xmms.cc:153 -msgid "About " -msgstr "" - -#: src/adplug/adplug-xmms.cc:157 -msgid "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"This plugin is released under the terms and conditions of the GNU LGPL.\n" -"See http://www.gnu.org/licenses/lgpl.html for details.\n" -"\n" -"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et " -"al.\n" -"Linked AdPlug library version: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:234 -msgid "AdPlug :: Configuration" -msgstr "AdPlug'i sätted" - -#: src/adplug/adplug-xmms.cc:243 src/adplug/adplug-xmms.cc:504 -#: src/cdaudio-ng/configure.c:258 src/crystalizer/crystalizer.c:127 -#: src/echo_plugin/gui.c:122 src/jack/configure.c:146 src/null/null.c:109 -#: src/stereo_plugin/stereo.c:123 src/sun/configure.c:557 -msgid "Ok" -msgstr "Olgu" - -#: src/adplug/adplug-xmms.cc:253 src/alarm/interface.c:1398 -#: src/cdaudio-ng/configure.c:263 src/crystalizer/crystalizer.c:136 -#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 -#: src/modplug/gui/interface.cxx:715 src/null/null.c:110 -#: src/stereo_plugin/stereo.c:132 src/sun/configure.c:565 -msgid "Cancel" -msgstr "Loobu" - -#: src/adplug/adplug-xmms.cc:269 src/console/configure.c:154 -#: src/modplug/gui/interface.cxx:629 src/modplug/gui/interface.cxx:888 -msgid "General" -msgstr "Ãœldine" - -#: src/adplug/adplug-xmms.cc:281 -msgid "Sound quality" -msgstr "Helikvaliteet" - -#: src/adplug/adplug-xmms.cc:286 src/modplug/gui/interface.cxx:188 -msgid "Resolution" -msgstr "" - -#: src/adplug/adplug-xmms.cc:288 -msgid "8bit" -msgstr "8-bitine" - -#: src/adplug/adplug-xmms.cc:293 -msgid "16bit" -msgstr "16-bitine" - -#: src/adplug/adplug-xmms.cc:301 src/modplug/gui/interface.cxx:219 -msgid "Channels" -msgstr "Kanaleid" - -#: src/adplug/adplug-xmms.cc:303 src/filewriter/mp3.c:934 -#: src/mpg123/mpg123.c:174 src/sid/xs_interface.c:301 -msgid "Mono" -msgstr "Mono" - -#: src/adplug/adplug-xmms.cc:308 src/filewriter/mp3.c:929 -#: src/modplug/gui/interface.cxx:205 src/mpg123/mpg123.c:174 -#: src/sid/xs_interface.c:308 -msgid "Stereo" -msgstr "Stereo" - -#: src/adplug/adplug-xmms.cc:312 -msgid "" -"Setting stereo is not recommended, unless you need to. This won't add any " -"stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!" -msgstr "" - -#: src/adplug/adplug-xmms.cc:320 -msgid "Frequency" -msgstr "Sagedus" - -#: src/adplug/adplug-xmms.cc:356 src/adplug/adplug-xmms.cc:560 -#: src/console/configure.c:156 src/gtkui/ui_manager.c:64 -#: src/skins/ui_manager.c:165 -msgid "Playback" -msgstr "Esitamine" - -#: src/adplug/adplug-xmms.cc:360 -msgid "Detect songend" -msgstr "Loo lõpp tuvastatakse" - -#: src/adplug/adplug-xmms.cc:364 -msgid "" -"If enabled, XMMS will detect a song's ending, stop it and advance in the " -"playlist. If disabled, XMMS won't take notice of a song's ending and loop it " -"all over again and again." -msgstr "" - -#: src/adplug/adplug-xmms.cc:375 -msgid "Formats" -msgstr "Vormingud" - -#: src/adplug/adplug-xmms.cc:382 -msgid "Format selection" -msgstr "Vormingute valimine" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Format" -msgstr "Vorming" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Extension" -msgstr "Laiend" - -#: src/adplug/adplug-xmms.cc:425 -msgid "" -"Selected file types will be recognized and played back by this plugin. " -"Deselected types will be ignored to make room for other plugins to play " -"these files." -msgstr "" - -#: src/adplug/adplug-xmms.cc:511 -msgid "AdPlug :: File Info" -msgstr "" - -#: src/adplug/adplug-xmms.cc:533 src/amidi-plug/i_configure-fluidsynth.c:348 -msgid "Filename" -msgstr "Failinimi" - -#: src/adplug/adplug-xmms.cc:537 src/skins/ui_playlist.c:390 -msgid "Title: " -msgstr "Pealkiri: " - -#: src/adplug/adplug-xmms.cc:538 -msgid "Author: " -msgstr "Autor: " - -#: src/adplug/adplug-xmms.cc:539 -msgid "File Type: " -msgstr "Faili tüüp: " - -#: src/adplug/adplug-xmms.cc:540 -msgid "Subsongs: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:541 -msgid "Instruments: " -msgstr "Instrumendid: " - -#: src/adplug/adplug-xmms.cc:546 -msgid "Orders: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:547 -msgid "Patterns: " -msgstr "Mustrid: " - -#: src/adplug/adplug-xmms.cc:551 -msgid "Song" -msgstr "" - -#: src/adplug/adplug-xmms.cc:577 -msgid "Instrument name" -msgstr "Instrumendi nimi" - -#: src/adplug/adplug-xmms.cc:619 -msgid "Song message" -msgstr "Loo sõnum" - -#: src/adplug/adplug-xmms.cc:641 -msgid "Subsong selection" -msgstr "" - -#: src/adplug/adplug-xmms.cc:707 -msgid "Order: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:708 -msgid "Pattern: " -msgstr "Muster: " - -#: src/adplug/adplug-xmms.cc:710 -msgid "Row: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:711 -msgid "Speed: " -msgstr "Kiirus: " - -#: src/adplug/adplug-xmms.cc:712 -msgid "Timer: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:713 src/console/configure.c:234 -#: src/sid/xs_interface.c:354 -msgid "Hz" -msgstr "Hz" - -#: src/alarm/interface.c:34 -msgid "About XMMS Alarm" -msgstr "XMMS-alarmist lähemalt" - -#: src/alarm/interface.c:47 -msgid "XMMS Alarm" -msgstr "XMMS-alarm" - -#: src/alarm/interface.c:56 -msgid "" -"An XMMS plugin which can be used\n" -"to start playing at a certain time.\n" -"\n" -"Send all complaints to:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" -msgstr "" -"XMMS-plugin, mida saab kasutada esitamise\n" -"alustamiseks kindlaksmääratud ajal.\n" -"\n" -"Kaebused paluks saata aadressidele:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" - -#: src/alarm/interface.c:71 src/bluetooth/scan_gui.c:149 src/lirc/about.c:115 -#: src/modplug/gui/interface.cxx:972 src/sid/xs_about.c:214 -#: src/sid/xs_interface.c:1825 -msgid "Close" -msgstr "Sulge" - -#: src/alarm/interface.c:101 -msgid "Alarm" -msgstr "Alarm" - -#: src/alarm/interface.c:109 -msgid "This is your wakeup call." -msgstr "See on sinu äratus." - -#: src/alarm/interface.c:124 src/alarm/interface.c:1389 -#: src/modplug/gui/interface.cxx:703 src/sid/xs_config.c:322 -msgid "OK" -msgstr "Olgu" - -#: src/alarm/interface.c:152 -msgid "Select Playlist" -msgstr "Esitusnimekirja valimine" - -#: src/alarm/interface.c:196 -msgid "Sorry" -msgstr "Vabandust" - -#: src/alarm/interface.c:204 -msgid "Warning" -msgstr "Hoiatus" - -#: src/alarm/interface.c:213 -msgid "" -"For safety reasons the \"quiet\" time must be at least 65 seconds longer " -"than the fading time, it must also be more than 10 seconds. This basically " -"means that there is a bug in the code and until I find a way of really " -"fixing it this message will appear :)\n" -"\n" -"Your fading settings have NOT been saved\n" -"\n" -"--\n" -"Adam" -msgstr "" - -#: src/alarm/interface.c:229 -msgid "Oh Well" -msgstr "" - -#: src/alarm/interface.c:388 -msgid "Alarm Settings" -msgstr "Alarmi sätted" - -#: src/alarm/interface.c:404 src/alarm/interface.c:576 -#: src/alarm/interface.c:948 -msgid "Time" -msgstr "Aeg" - -#: src/alarm/interface.c:445 -msgid "hours" -msgstr "tundi" - -#: src/alarm/interface.c:506 -msgid "h" -msgstr "t" - -#: src/alarm/interface.c:536 -msgid "minutes" -msgstr "minutit" - -#: src/alarm/interface.c:554 -msgid "Quiet after:" -msgstr "Vait pärast:" - -#: src/alarm/interface.c:564 -msgid "Alarm at (default):" -msgstr "Alarmi aeg (vaikimisi):" - -#: src/alarm/interface.c:584 -msgid "Choose the days for the alarm to come on" -msgstr "Alarmi töölehakkamise päevade valimine" - -#: src/alarm/interface.c:612 src/alarm/interface.c:660 -#: src/alarm/interface.c:708 src/alarm/interface.c:756 -#: src/alarm/interface.c:804 src/alarm/interface.c:852 -#: src/alarm/interface.c:900 src/OSS/configure.c:166 -#: src/skins/ui_manager.c:439 src/skins/ui_manager.c:460 -msgid "Default" -msgstr "Vaikimisi" - -#: src/alarm/interface.c:938 -msgid "Day" -msgstr "Päev" - -#: src/alarm/interface.c:958 -msgid "Tuesday" -msgstr "Teisipäeval" - -#: src/alarm/interface.c:969 -msgid "Wednesday" -msgstr "Kolmapäeval" - -#: src/alarm/interface.c:980 -msgid "Thursday" -msgstr "Neljapäeval" - -#: src/alarm/interface.c:991 -msgid "Friday" -msgstr "Reedel" - -#: src/alarm/interface.c:1002 -msgid "Saturday" -msgstr "Laupäeval" - -#: src/alarm/interface.c:1013 -msgid "Sunday" -msgstr "Pühapäeval" - -#: src/alarm/interface.c:1023 -msgid "Monday" -msgstr "Esmaspäeval" - -#: src/alarm/interface.c:1034 -msgid "Days" -msgstr "Päevad" - -#: src/alarm/interface.c:1050 -msgid "Fading" -msgstr "Kahanemine" - -#: src/alarm/interface.c:1087 src/sid/xs_interface.c:921 -#: src/sid/xs_interface.c:975 src/sid/xs_interface.c:1155 -msgid "seconds" -msgstr "sekundit" - -#: src/alarm/interface.c:1095 src/alarm/interface.c:1211 -#: src/modplug/gui/interface.cxx:550 -msgid "Volume" -msgstr "Valjus" - -#: src/alarm/interface.c:1121 -msgid "Current" -msgstr "Praegune" - -#: src/alarm/interface.c:1128 -msgid "reset to current output volume" -msgstr "" - -#: src/alarm/interface.c:1130 -msgid "Start at" -msgstr "Alguses" - -#: src/alarm/interface.c:1158 src/alarm/interface.c:1202 -msgid "%" -msgstr "%" - -#: src/alarm/interface.c:1174 -msgid "Final" -msgstr "Lõpus" - -#: src/alarm/interface.c:1227 -msgid "Additional Command" -msgstr "Täiendav käsk" - -#: src/alarm/interface.c:1253 -msgid "enable" -msgstr "lubatud" - -#: src/alarm/interface.c:1261 -msgid "Playlist (optional)" -msgstr "Esitusnimekiri (valikuline)" - -#: src/alarm/interface.c:1287 -msgid "Browse..." -msgstr "Sirvi..." - -#: src/alarm/interface.c:1295 src/alarm/interface.c:1460 -msgid "Reminder" -msgstr "Meeldetuletaja" - -#: src/alarm/interface.c:1312 -msgid "Use reminder" -msgstr "Meeldetuletaja on kasutusel" - -#: src/alarm/interface.c:1328 src/sndstretch/sndstretch_xmms.c:394 -msgid "Options" -msgstr "Valikud" - -#: src/alarm/interface.c:1336 -msgid "What do these options mean?" -msgstr "Mida need valikud tähendavad?" - -#: src/alarm/interface.c:1364 -msgid "" -"\n" -"Time\n" -" Alarm at: \n" -" The time for the alarm to come on.\n" -"\n" -" Quiet After: \n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading: \n" -" Fade the volume up to the chosen volume \n" -" for this amount of time.\n" -"\n" -" Start at: \n" -" Start fading from this volume.\n" -"\n" -" Final: \n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist: \n" -" Load this playlist for playing songs from \n" -" (must have .m3u extension). If no playlist\n" -" is given then the songs which are currently\n" -" in the list will be used.\n" -" The URL of an mp3/ogg stream can also be\n" -" entered here, but loading of playlists from\n" -" URLs is not currently supported by xmms.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off,\n" -" type the reminder in the box and turn on the\n" -" toggle button if you want it to be shown.\n" -msgstr "" - -#: src/alarm/interface.c:1366 src/gtkui/ui_manager.c:165 -#: src/skins/ui_manager.c:371 -msgid "Help" -msgstr "Abi" - -#: src/alarm/interface.c:1468 -msgid "Your reminder for today is.." -msgstr "" - -#: src/alarm/interface.c:1493 -msgid "Thankyou" -msgstr "" - -#: src/alsa/config.c:209 +#: src/alsa/config.c:210 #, fuzzy msgid "Default PCM device" msgstr "Vaikimisi PCM-seade (%s)" -#: src/alsa/config.c:234 +#: src/alsa/config.c:235 #, fuzzy msgid "Default mixer device" msgstr "Vaikimisi PCM-seade (%s)" -#: src/alsa/config.c:438 +#: src/alsa/config.c:447 #, fuzzy msgid "ALSA Output Plugin Preferences" msgstr "Olekuikooni plugina eelistused" -#: src/alsa/config.c:445 +#: src/alsa/config.c:454 #, fuzzy msgid "PCM device:" msgstr "Miksimisseade:" -#: src/alsa/config.c:447 src/OSS/configure.c:256 src/sun/configure.c:218 +#: src/alsa/config.c:456 src/OSS/configure.c:246 msgid "Mixer device:" msgstr "Miksimisseade:" -#: src/alsa/config.c:449 +#: src/alsa/config.c:458 #, fuzzy msgid "Mixer element:" msgstr "Miksimisseade:" -#: src/alsa/config.c:452 +#: src/alsa/config.c:461 msgid "Work around drain hangup" msgstr "" -#: src/alsa/plugin.c:61 +#: src/alsa/plugin.c:59 #, fuzzy msgid "About ALSA Output Plugin" msgstr "JACK väljundplugina versioonist 0.17 lähemalt" -#: src/alsa/plugin.c:83 +#: src/alsa/plugin.c:81 #, fuzzy msgid "ALSA error" msgstr "Viga!" -#: src/amidi-plug/amidi-plug.c:323 +#: src/amidi-plug/amidi-plug.c:335 msgid "" "You have not selected any sequencer ports for MIDI playback. You can do so " "in the MIDI plugin preferences." @@ -581,11 +95,11 @@ "Backend written by Giacomo Lozito." msgstr "" -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:41 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 msgid "FluidSynth Backend " msgstr "" -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:43 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 msgid "" "This backend produces audio by sending MIDI events to FluidSynth, a real-" "time software synthesizer based on the SoundFont2 specification (www." @@ -595,367 +109,205 @@ "Backend written by Giacomo Lozito." msgstr "" -#: src/amidi-plug/i_configure-alsa.c:221 +#: src/amidi-plug/i_configure-alsa.c:228 msgid "ALSA BACKEND CONFIGURATION" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:326 +#: src/amidi-plug/i_configure-alsa.c:331 msgid "Port" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:328 +#: src/amidi-plug/i_configure-alsa.c:333 msgid "Client name" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:330 +#: src/amidi-plug/i_configure-alsa.c:335 msgid "Port name" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:341 +#: src/amidi-plug/i_configure-alsa.c:346 msgid "ALSA output ports" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:394 +#: src/amidi-plug/i_configure-alsa.c:399 msgid "Soundcard: " msgstr "Helikaart: " -#: src/amidi-plug/i_configure-alsa.c:396 +#: src/amidi-plug/i_configure-alsa.c:401 msgid "Mixer control: " msgstr "Mikseri juhtimine: " -#: src/amidi-plug/i_configure-alsa.c:408 +#: src/amidi-plug/i_configure-alsa.c:413 msgid "Mixer settings" msgstr "Mikseri sätted" -#: src/amidi-plug/i_configure-alsa.c:421 -msgid "" -"* Select ALSA output ports *\n" -"MIDI events will be sent to the ports selected here. In example, if your " -"audio card provides a hardware synth and you want to play MIDI with it, " -"you'll probably want to select the wavetable synthesizer ports." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:426 -msgid "" -"* Select ALSA mixer card *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volumeslider will " -"manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:433 -msgid "" -"* Select ALSA mixer control *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volume slider " -"will manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:444 +#: src/amidi-plug/i_configure-alsa.c:429 msgid "ALSA Backend not loaded or not available" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:463 +#: src/amidi-plug/i_configure-alsa.c:448 msgid "" "ALSA\n" "backend" msgstr "" -#: src/amidi-plug/i_configure-ap.c:56 +#: src/amidi-plug/i_configure-ap.c:59 msgid "AMIDI-Plug - backend information" msgstr "" -#: src/amidi-plug/i_configure-ap.c:194 +#: src/amidi-plug/i_configure-ap.c:196 msgid "AMIDI-PLUG PREFERENCES" msgstr "" -#: src/amidi-plug/i_configure-ap.c:221 +#: src/amidi-plug/i_configure-ap.c:223 msgid "Backend selection" msgstr "" -#: src/amidi-plug/i_configure-ap.c:225 +#: src/amidi-plug/i_configure-ap.c:227 msgid "Available backends" msgstr "" -#: src/amidi-plug/i_configure-ap.c:255 +#: src/amidi-plug/i_configure-ap.c:257 msgid "Playback settings" msgstr "Esituse sätted" -#: src/amidi-plug/i_configure-ap.c:260 +#: src/amidi-plug/i_configure-ap.c:262 msgid "Transpose: " msgstr "" -#: src/amidi-plug/i_configure-ap.c:269 +#: src/amidi-plug/i_configure-ap.c:271 msgid "Drum shift: " msgstr "" -#: src/amidi-plug/i_configure-ap.c:287 +#: src/amidi-plug/i_configure-ap.c:289 msgid "Advanced settings" msgstr "Laiendatud sätted" -#: src/amidi-plug/i_configure-ap.c:291 +#: src/amidi-plug/i_configure-ap.c:293 msgid "pre-calculate length of MIDI files in playlist" msgstr "" -#: src/amidi-plug/i_configure-ap.c:296 +#: src/amidi-plug/i_configure-ap.c:298 msgid "extract comments from MIDI file (if available)" msgstr "" -#: src/amidi-plug/i_configure-ap.c:301 +#: src/amidi-plug/i_configure-ap.c:303 msgid "extract lyrics from MIDI file (if available)" msgstr "" -#: src/amidi-plug/i_configure-ap.c:320 -msgid "" -"* Backend selection *\n" -"AMIDI-Plug works with backends, in a modular fashion; here you should select " -"your backend; that is, the way MIDI events are going to be handled and " -"played.\n" -"If you have a hardware synthesizer on your audio card, and ALSA supports it, " -"you'll want to use the ALSA backend. It can also be used with anything that " -"provides an interface to the ALSA sequencer, including software synths or " -"external devices.\n" -"If you want to rely on a software synthesizer and/or want to pipe audio into " -"effect and output plugins of the player you'll want to use the good " -"FluidSynth backend.\n" -"Press the info button to read specific information about each backend." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:331 -msgid "" -"* Transpose function *\n" -"This option allows you to play the midi file transposed in a different key, " -"by shifting of the desired number of semitones all its notes (excepting " -"those on midi channel 10, reserved for percussions). Especially useful if " -"you wish to sing or play along with another instrument." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:337 -msgid "" -"* Drumshift function *\n" -"This option allows you to shift notes on midi channel 10 (the standard " -"percussions channel) of the desired number of semitones. This results in " -"different drumset and percussions being used during midi playback, so if you " -"wish to enhance (or reduce, or alter) percussion sounds, try to play with " -"this value." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:344 -msgid "" -"* Pre-calculate MIDI length *\n" -"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as " -"soon as the player requests it, instead of doing that only when the MIDI " -"file is being played. In example, MIDI length will be calculated straight " -"after adding MIDI files in a playlist. Disable this option if you want " -"faster playlist loading (when a lot of MIDI files are added), enable it to " -"display more information in the playlist straight after loading." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:353 -msgid "" -"* Extract comments from MIDI files *\n" -"Some MIDI files contain text comments (author, copyright, instrument notes, " -"etc.). If this option is enabled, AMIDI-Plug will extract and display " -"comments (if available) in the file information dialog." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:358 -msgid "" -"* Extract lyrics from MIDI files *\n" -"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug " -"will extract and display song lyrics (if available) in the file information " -"dialog." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:375 +#: src/amidi-plug/i_configure-ap.c:333 msgid "" "AMIDI\n" "Plug" msgstr "" -#: src/amidi-plug/i_configure.c:73 +#: src/amidi-plug/i_configure.c:76 msgid "AMIDI-Plug - select file" msgstr "" -#: src/amidi-plug/i_configure.c:126 +#: src/amidi-plug/i_configure.c:129 msgid "AMIDI-Plug - configuration" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:52 +#: src/amidi-plug/i_configure-fluidsynth.c:55 msgid "AMIDI-Plug - select SoundFont file" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:268 +#: src/amidi-plug/i_configure-fluidsynth.c:270 msgid "FLUIDSYNTH BACKEND CONFIGURATION" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:316 +#: src/amidi-plug/i_configure-fluidsynth.c:313 msgid "SoundFont settings" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:352 +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Failinimi" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 msgid "Size (bytes)" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:401 +#: src/amidi-plug/i_configure-fluidsynth.c:398 msgid "Load SF on player start" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:405 +#: src/amidi-plug/i_configure-fluidsynth.c:402 msgid "Load SF on first midifile play" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:420 +#: src/amidi-plug/i_configure-fluidsynth.c:417 msgid "Synthesizer settings" msgstr "Süntesaatori sätted" -#: src/amidi-plug/i_configure-fluidsynth.c:429 +#: src/amidi-plug/i_configure-fluidsynth.c:426 msgid "gain" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:435 -#: src/amidi-plug/i_configure-fluidsynth.c:463 -#: src/amidi-plug/i_configure-fluidsynth.c:491 -#: src/amidi-plug/i_configure-fluidsynth.c:522 +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 msgid "use default" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:438 -#: src/amidi-plug/i_configure-fluidsynth.c:466 +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 msgid "value:" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:457 +#: src/amidi-plug/i_configure-fluidsynth.c:454 msgid "poliphony" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:485 +#: src/amidi-plug/i_configure-fluidsynth.c:482 msgid "reverb" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:494 -#: src/amidi-plug/i_configure-fluidsynth.c:525 +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 msgid "yes" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:496 -#: src/amidi-plug/i_configure-fluidsynth.c:527 +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 msgid "no" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:516 +#: src/amidi-plug/i_configure-fluidsynth.c:513 msgid "chorus" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:547 +#: src/amidi-plug/i_configure-fluidsynth.c:544 msgid "sample rate" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:553 +#: src/amidi-plug/i_configure-fluidsynth.c:550 msgid "22050 Hz " msgstr "22050 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:556 +#: src/amidi-plug/i_configure-fluidsynth.c:553 msgid "44100 Hz " msgstr "44100 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:559 +#: src/amidi-plug/i_configure-fluidsynth.c:556 msgid "96000 Hz " msgstr "96000 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:562 +#: src/amidi-plug/i_configure-fluidsynth.c:559 msgid "custom " msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:571 +#: src/amidi-plug/i_configure-fluidsynth.c:568 msgid "Hz " msgstr "Hz " #: src/amidi-plug/i_configure-fluidsynth.c:621 -msgid "" -"* Select SoundFont files *\n" -"In order to play MIDI with FluidSynth, you need to specify at least one " -"valid SoundFont file here (use absolute paths). The loading order is from " -"the top (first) to the bottom (last)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:626 -msgid "" -"* Load SoundFont on player start *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:634 -msgid "" -"* Load SoundFont on first midifile play *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:642 -msgid "" -"* Synthesizer gain *\n" -"From FluidSynth docs: the gain is applied to the final or master output of " -"the synthesizer; it is set to a low value by default to avoid the saturation " -"of the output when random MIDI files are played." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:647 -msgid "" -"* Synthesizer polyphony *\n" -"From FluidSynth docs: the polyphony defines how many voices can be played in " -"parallel; the number of voices is not necessarily equivalent to the number " -"of notes played simultaneously; indeed, when a note is struck on a specific " -"MIDI channel, the preset on that channel may create several voices, for " -"example, one for the left audio channel and one for the right audio " -"channels; the number of voices activated depends on the number of instrument " -"zones that fall in the correspond to the velocity and key of the played note." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:657 -#: src/amidi-plug/i_configure-fluidsynth.c:663 -msgid "" -"* Synthesizer reverb *\n" -"From FluidSynth docs: when set to \"yes\" the reverb effects module is " -"activated; note that when the reverb module is active, the amount of signal " -"sent to the reverb module depends on the \"reverb send\" generator defined " -"in the SoundFont." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:669 -#: src/amidi-plug/i_configure-fluidsynth.c:675 -msgid "" -"* Synthesizer chorus *\n" -"From FluidSynth docs: when set to \"yes\" the chorus effects module is " -"activated; note that when the chorus module is active, the amount of signal " -"sent to the chorus module depends on the \"chorus send\" generator defined " -"in the SoundFont." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:681 -#: src/amidi-plug/i_configure-fluidsynth.c:685 -#: src/amidi-plug/i_configure-fluidsynth.c:689 -#: src/amidi-plug/i_configure-fluidsynth.c:693 -msgid "" -"* Synthesizer samplerate *\n" -"The sample rate of the audio generated by the synthesizer. You can also " -"specify a custom value in the interval 22050Hz-96000Hz." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:701 msgid "FluidSynth Backend not loaded or not available" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:720 +#: src/amidi-plug/i_configure-fluidsynth.c:640 msgid "" "FluidSynth\n" "backend" @@ -977,8 +329,7 @@ "TiMidity\n" "taustaprogramm" -#: src/amidi-plug/i_fileinfo.c:169 src/bluetooth/gui.c:271 -#: src/sid/xs_interface.c:1769 +#: src/amidi-plug/i_fileinfo.c:169 src/sid/xs_interface.c:1769 msgid "Name:" msgstr "Nimi:" @@ -1124,198 +475,198 @@ msgid "Triggers OSD when playback is unpaused." msgstr "" -#: src/aosd/aosd_ui.c:168 +#: src/aosd/aosd_ui.c:180 msgid "Placement" msgstr "Paigutamine" -#: src/aosd/aosd_ui.c:202 +#: src/aosd/aosd_ui.c:219 msgid "Relative X offset:" msgstr "Suhteline X-nihe:" -#: src/aosd/aosd_ui.c:211 +#: src/aosd/aosd_ui.c:228 msgid "Relative Y offset:" msgstr "Suhteline Y-nihe:" -#: src/aosd/aosd_ui.c:220 +#: src/aosd/aosd_ui.c:237 msgid "Max OSD width:" msgstr "Suurim OSD laius:" -#: src/aosd/aosd_ui.c:233 +#: src/aosd/aosd_ui.c:250 msgid "Multi-Monitor options" msgstr "Mitme monitori valikud" -#: src/aosd/aosd_ui.c:237 +#: src/aosd/aosd_ui.c:254 msgid "Display OSD using:" msgstr "OSD-d kuvatakse:" -#: src/aosd/aosd_ui.c:239 +#: src/aosd/aosd_ui.c:265 msgid "all monitors" msgstr "kõigil monitoridel" -#: src/aosd/aosd_ui.c:242 +#: src/aosd/aosd_ui.c:268 #, c-format msgid "monitor %i" msgstr "%i. monitoril" -#: src/aosd/aosd_ui.c:295 +#: src/aosd/aosd_ui.c:323 msgid "Timing (ms)" msgstr "Ajastus (millisekundites)" -#: src/aosd/aosd_ui.c:300 +#: src/aosd/aosd_ui.c:328 msgid "Display:" msgstr "Kuvamine:" -#: src/aosd/aosd_ui.c:305 +#: src/aosd/aosd_ui.c:333 msgid "Fade in:" msgstr "Sujuv näitamine:" -#: src/aosd/aosd_ui.c:310 +#: src/aosd/aosd_ui.c:338 msgid "Fade out:" msgstr "Sujuv peitmine:" -#: src/aosd/aosd_ui.c:391 +#: src/aosd/aosd_ui.c:419 msgid "Fonts" msgstr "Kirjatüübid" -#: src/aosd/aosd_ui.c:399 +#: src/aosd/aosd_ui.c:427 #, c-format msgid "Font %i:" msgstr "Kirjatüüp %i:" -#: src/aosd/aosd_ui.c:416 +#: src/aosd/aosd_ui.c:444 msgid "Shadow" msgstr "Vari" -#: src/aosd/aosd_ui.c:451 +#: src/aosd/aosd_ui.c:479 msgid "Internationalization" msgstr "" -#: src/aosd/aosd_ui.c:457 +#: src/aosd/aosd_ui.c:485 msgid "Disable UTF-8 conversion of text (in aosd)" msgstr "" -#: src/aosd/aosd_ui.c:475 +#: src/aosd/aosd_ui.c:503 msgid "Select Skin File" msgstr "" -#: src/aosd/aosd_ui.c:586 +#: src/aosd/aosd_ui.c:614 msgid "Render Style" msgstr "Renderdamise laad" -#: src/aosd/aosd_ui.c:602 +#: src/aosd/aosd_ui.c:630 msgid "Colors" msgstr "Värvused" -#: src/aosd/aosd_ui.c:615 +#: src/aosd/aosd_ui.c:643 #, c-format msgid "Color %i:" msgstr "Värvus %i:" -#: src/aosd/aosd_ui.c:635 +#: src/aosd/aosd_ui.c:663 msgid "Custom Skin" msgstr "" -#: src/aosd/aosd_ui.c:641 +#: src/aosd/aosd_ui.c:669 msgid "Skin file:" msgstr "" -#: src/aosd/aosd_ui.c:644 src/sid/xs_interface.c:1044 +#: src/aosd/aosd_ui.c:672 src/sid/xs_interface.c:1044 #: src/sid/xs_interface.c:1236 src/sid/xs_interface.c:1292 msgid "Browse" msgstr "" -#: src/aosd/aosd_ui.c:746 +#: src/aosd/aosd_ui.c:774 msgid "Enable trigger" msgstr "Päästik on lubatud" -#: src/aosd/aosd_ui.c:773 +#: src/aosd/aosd_ui.c:801 msgid "Event" msgstr "Sündmus" -#: src/aosd/aosd_ui.c:801 +#: src/aosd/aosd_ui.c:829 msgid "Composite manager detected" msgstr "" -#: src/aosd/aosd_ui.c:808 +#: src/aosd/aosd_ui.c:836 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " "manager otherwise the OSD won't work properly" msgstr "" -#: src/aosd/aosd_ui.c:816 +#: src/aosd/aosd_ui.c:844 msgid "Composite manager not required for fake transparency" msgstr "" -#: src/aosd/aosd_ui.c:854 +#: src/aosd/aosd_ui.c:882 msgid "Transparency" msgstr "Läbipaistvus" -#: src/aosd/aosd_ui.c:860 +#: src/aosd/aosd_ui.c:888 msgid "Fake transparency" msgstr "Võltsitud läbipaistvus" -#: src/aosd/aosd_ui.c:862 +#: src/aosd/aosd_ui.c:890 msgid "Real transparency (requires X Composite Ext.)" msgstr "Tegelik läbipaistvus (vajab X Composite laiendust)" -#: src/aosd/aosd_ui.c:904 +#: src/aosd/aosd_ui.c:932 msgid "Composite extension not loaded" msgstr "" -#: src/aosd/aosd_ui.c:912 +#: src/aosd/aosd_ui.c:940 msgid "Composite extension not available" msgstr "" -#: src/aosd/aosd_ui.c:931 +#: src/aosd/aosd_ui.c:959 #, c-format msgid "Audacious OSD" msgstr "" -#: src/aosd/aosd_ui.c:1012 +#: src/aosd/aosd_ui.c:1040 msgid "Audacious OSD - configuration" msgstr "" -#: src/aosd/aosd_ui.c:1033 +#: src/aosd/aosd_ui.c:1061 msgid "Test" msgstr "Proovi" -#: src/aosd/aosd_ui.c:1048 +#: src/aosd/aosd_ui.c:1076 msgid "Position" msgstr "Asukoht" -#: src/aosd/aosd_ui.c:1053 +#: src/aosd/aosd_ui.c:1081 msgid "Animation" msgstr "Animatsioon" -#: src/aosd/aosd_ui.c:1058 +#: src/aosd/aosd_ui.c:1086 msgid "Text" msgstr "Tekst" -#: src/aosd/aosd_ui.c:1063 +#: src/aosd/aosd_ui.c:1091 msgid "Decoration" msgstr "Kaunistused" -#: src/aosd/aosd_ui.c:1068 +#: src/aosd/aosd_ui.c:1096 msgid "Trigger" msgstr "Päästikud" -#: src/aosd/aosd_ui.c:1073 src/cdaudio-ng/configure.c:178 -#: src/modplug/gui/interface.cxx:689 src/sid/xs_interface.c:1302 +#: src/aosd/aosd_ui.c:1101 src/cdaudio-ng/configure.c:171 +#: src/sid/xs_interface.c:1302 msgid "Misc" msgstr "Muu" -#: src/aosd/aosd_ui.c:1110 +#: src/aosd/aosd_ui.c:1138 msgid "Audacious OSD - about" msgstr "" -#: src/aosd/aosd_ui.c:1140 +#: src/aosd/aosd_ui.c:1168 msgid "" "\n" "Audacious OSD " msgstr "" -#: src/aosd/aosd_ui.c:1141 +#: src/aosd/aosd_ui.c:1169 msgid "" "\n" "http://www.develia.org/projects.php?p=audacious#aosd\n" @@ -1328,145 +679,20 @@ "\n" msgstr "" -#: src/bluetooth/agent.c:356 src/bluetooth/agent.c:397 -#, c-format -msgid "Pairing request for '%s'" +#: src/blur_scope/config.c:73 +msgid "Blur Scope: Color selection" msgstr "" -#: src/bluetooth/agent.c:544 -#, c-format -msgid "Authorization request for %s" -msgstr "" +#: src/blur_scope/config.c:83 src/jack/configure.c:111 +msgid "Options:" +msgstr "Valikud:" -#: src/bluetooth/agent.c:728 -#, c-format -msgid "Created bonding with %s" -msgstr "" +#: src/cdaudio-ng/cdaudio-ng.c:264 +#, fuzzy +msgid "About Audio CD Plugin" +msgstr "FLAC audiopluginast lähemalt" -#: src/bluetooth/agent.c:756 -#, c-format -msgid "Removed bonding with %s" -msgstr "" - -#: src/bluetooth/agent.c:808 -msgid "Device has been switched off" -msgstr "" - -#: src/bluetooth/agent.c:811 -msgid "Device has been made non-discoverable" -msgstr "" - -#: src/bluetooth/agent.c:813 -msgid "Device has been made connectable" -msgstr "" - -#: src/bluetooth/agent.c:815 -msgid "Device has been made discoverable" -msgstr "" - -#: src/bluetooth/agent.c:817 -msgid "Device has been made limited discoverable" -msgstr "" - -#: src/bluetooth/agent.c:819 -msgid "Device has been switched into pairing mode" -msgstr "" - -#: src/bluetooth/bluetooth.c:117 -msgid "Bluetooth headset support plugin" -msgstr "" - -#: src/bluetooth/bluetooth.c:118 -msgid "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the " -"Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" -msgstr "" - -#: src/bluetooth/gui.c:148 -msgid "Producer" -msgstr "" - -#: src/bluetooth/gui.c:221 -msgid "Available Headsets" -msgstr "" - -#: src/bluetooth/gui.c:224 -#, fuzzy -msgid "Current Headset" -msgstr "Praegune" - -#: src/bluetooth/gui.c:227 -msgid "_Refresh" -msgstr "" - -#: src/bluetooth/gui.c:231 -#, fuzzy -msgid "_Connect" -msgstr "Asukoht:" - -#: src/bluetooth/gui.c:237 -#, fuzzy -msgid "_Close" -msgstr "Sulge" - -#: src/bluetooth/gui.c:274 -#, fuzzy -msgid "Class" -msgstr "Sulge" - -#: src/bluetooth/gui.c:278 -#, fuzzy -msgid "Address:" -msgstr "Seadme aadress" - -#: src/bluetooth/scan_gui.c:69 -msgid "Bonding finish!" -msgstr "" - -#: src/bluetooth/scan_gui.c:76 -msgid "No devices found!" -msgstr "" - -#: src/bluetooth/scan_gui.c:119 -msgid "Scanning..." -msgstr "" - -#: src/bluetooth/scan_gui.c:122 -msgid "Pairing..." -msgstr "" - -#: src/bluetooth/scan_gui.c:138 -msgid "Rescan" -msgstr "" - -#: src/bluetooth/scan_gui.c:142 src/gtkui/ui_manager.c:66 -#: src/gtkui/ui_manager.c:67 src/hotkey/gui.c:71 src/skins/ui_manager.c:167 -#: src/skins/ui_manager.c:168 -#, fuzzy -msgid "Play" -msgstr "Esitamine" - -#: src/blur_scope/config.c:73 -msgid "Blur Scope: Color selection" -msgstr "" - -#: src/blur_scope/config.c:83 src/jack/configure.c:111 -msgid "Options:" -msgstr "Valikud:" - -#: src/cdaudio-ng/cdaudio-ng.c:278 -#, fuzzy -msgid "About Audio CD Plugin" -msgstr "FLAC audiopluginast lähemalt" - -#: src/cdaudio-ng/cdaudio-ng.c:279 +#: src/cdaudio-ng/cdaudio-ng.c:265 #, fuzzy msgid "" "Copyright (c) 2007, by Calin Crisan and The Audacious " @@ -1491,127 +717,161 @@ "\n" "See projekt loodi Google Summer of Code 2007 raames." -#: src/cdaudio-ng/configure.c:155 +#: src/cdaudio-ng/cdaudio-ng.c:558 +msgid "Audio CD" +msgstr "" + +#: src/cdaudio-ng/cdaudio-ng.c:913 +msgid "Drive is empty." +msgstr "" + +#: src/cdaudio-ng/cdaudio-ng.c:915 +msgid "Unsupported disk type." +msgstr "" + +#: src/cdaudio-ng/configure.c:148 msgid "CD Audio Plugin Configuration" msgstr "Audioplaatide plugina sätted" -#: src/cdaudio-ng/configure.c:167 +#: src/cdaudio-ng/configure.c:160 msgid "Digital audio extraction" msgstr "Digitaalne audiolugemine" -#: src/cdaudio-ng/configure.c:172 +#: src/cdaudio-ng/configure.c:165 msgid "Title information" msgstr "Pealkirja andmed" -#: src/cdaudio-ng/configure.c:190 +#: src/cdaudio-ng/configure.c:176 msgid "Disc speed:" msgstr "" -#: src/cdaudio-ng/configure.c:198 +#: src/cdaudio-ng/configure.c:184 msgid "Use cd-text if available" msgstr "Võimaluse korral kasutatakse cd-teksti" -#: src/cdaudio-ng/configure.c:205 +#: src/cdaudio-ng/configure.c:191 msgid "Use CDDB if available" msgstr "Võimaluse korral kasutatakse CDDB-d" -#: src/cdaudio-ng/configure.c:211 +#: src/cdaudio-ng/configure.c:197 msgid "Server: " msgstr "Server: " -#: src/cdaudio-ng/configure.c:215 +#: src/cdaudio-ng/configure.c:201 #, fuzzy msgid "Path: " msgstr "Muster: " -#: src/cdaudio-ng/configure.c:219 +#: src/cdaudio-ng/configure.c:205 msgid "Port: " msgstr "Port: " -#: src/cdaudio-ng/configure.c:232 +#: src/cdaudio-ng/configure.c:218 msgid "Use HTTP instead of CDDBP" msgstr "" -#: src/cdaudio-ng/configure.c:244 +#: src/cdaudio-ng/configure.c:230 msgid "Override default device: " msgstr "Vaikimisi seadme asemel kasutatakse: " -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:131 +#: src/echo_plugin/gui.c:123 src/jack/configure.c:146 src/null/null.c:112 +#: src/stereo_plugin/stereo.c:125 +msgid "Ok" +msgstr "Olgu" + +#: src/cdaudio-ng/configure.c:249 src/crystalizer/crystalizer.c:138 +#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 src/null/null.c:113 +#: src/stereo_plugin/stereo.c:132 +msgid "Cancel" +msgstr "Loobu" + +#: src/cd-menu-items/cd-menu-items.c:34 #, fuzzy msgid "Play CD" msgstr "Esitamine" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Add CD" msgstr "Lisa CD" -#: src/compressor/plugin.c:58 +#: src/compressor/plugin.c:67 #, fuzzy msgid "About Dynamic Range Compression Plugin" msgstr "Ekstra stereo pluginast lähemalt" -#: src/compressor/plugin.c:91 +#: src/compressor/plugin.c:99 msgid "Dynamic Range Compressor Preferences" msgstr "" -#: src/compressor/plugin.c:103 +#: src/compressor/plugin.c:111 #, fuzzy -msgid "Target volume:" +msgid "Center volume:" msgstr "Muudetakse valjust" -#: src/compressor/plugin.c:116 -#, fuzzy -msgid "Effect strength:" -msgstr "Efektid" +#: src/compressor/plugin.c:124 +msgid "Dynamic range:" +msgstr "" -#: src/console/configure.c:137 +#: src/console/configure.c:138 #, fuzzy msgid "Game Console Music Decoder" msgstr "Console Music Decoder pluginast lähemalt" -#: src/console/configure.c:171 +#: src/console/configure.c:155 +msgid "General" +msgstr "Ãœldine" + +#: src/console/configure.c:157 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "Esitamine" + +#: src/console/configure.c:172 msgid "Bass:" msgstr "" -#: src/console/configure.c:175 src/console/configure.c:186 -#: src/console/configure.c:207 +#: src/console/configure.c:176 src/console/configure.c:187 +#: src/console/configure.c:208 msgid "secs" msgstr "" -#: src/console/configure.c:182 +#: src/console/configure.c:183 msgid "Treble:" msgstr "" -#: src/console/configure.c:203 +#: src/console/configure.c:204 msgid "Default song length:" msgstr "" -#: src/console/configure.c:209 src/modplug/gui/interface.cxx:269 -#: src/sid/xs_interface.c:666 +#: src/console/configure.c:210 src/sid/xs_interface.c:666 msgid "Resampling" msgstr "" -#: src/console/configure.c:215 +#: src/console/configure.c:216 msgid "Enable audio resampling" msgstr "" -#: src/console/configure.c:230 +#: src/console/configure.c:231 msgid "Resampling rate:" msgstr "" -#: src/console/configure.c:245 +#: src/console/configure.c:235 src/sid/xs_interface.c:354 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:246 msgid "SPC" msgstr "" -#: src/console/configure.c:246 +#: src/console/configure.c:247 msgid "Ignore length from SPC tags" msgstr "" -#: src/console/configure.c:247 +#: src/console/configure.c:248 msgid "Increase reverb" msgstr "" -#: src/console/configure.c:272 +#: src/console/configure.c:273 msgid "" "The default song length, expressed in seconds, is used for songs that do not " "provide length information (i.e. looping tracks)." @@ -1630,30 +890,30 @@ " Shay Green \n" msgstr "" -#: src/crossfade/plugin.c:51 +#: src/crossfade/plugin.c:65 #, fuzzy msgid "About Crossfade" msgstr "Kajapluginast lähemalt" -#: src/crossfade/plugin.c:84 +#: src/crossfade/plugin.c:97 msgid "Crossfade Preferences" msgstr "" -#: src/crossfade/plugin.c:95 +#: src/crossfade/plugin.c:109 msgid "Overlap (in seconds):" msgstr "" -#: src/crossfade/plugin.c:129 src/crossfade/plugin.c:137 +#: src/crossfade/plugin.c:140 src/crossfade/plugin.c:146 #, fuzzy msgid "Crossfade Error" msgstr "ModPlug'i sätted" -#: src/crossfade/plugin.c:130 +#: src/crossfade/plugin.c:140 msgid "" "Crossfading failed because the songs had a different number of channels." msgstr "" -#: src/crossfade/plugin.c:138 +#: src/crossfade/plugin.c:148 msgid "" "Crossfading failed because the songs had different sample rates.\n" "\n" @@ -1661,21 +921,25 @@ "same rate." msgstr "" -#: src/crystalizer/crystalizer.c:104 +#: src/crystalizer/crystalizer.c:108 #, fuzzy msgid "Configure Crystalizer" msgstr "Seadista..." -#: src/crystalizer/crystalizer.c:106 src/stereo_plugin/stereo.c:102 +#: src/crystalizer/crystalizer.c:110 src/stereo_plugin/stereo.c:104 msgid "Effect intensity:" msgstr "" -#: src/crystalizer/crystalizer.c:143 src/echo_plugin/gui.c:137 -#: src/modplug/gui/interface.cxx:709 src/stereo_plugin/stereo.c:139 +#: src/crystalizer/crystalizer.c:144 src/echo_plugin/gui.c:136 +#: src/stereo_plugin/stereo.c:138 msgid "Apply" msgstr "Rakenda" -#: src/echo_plugin/gui.c:14 +#: src/daemon/daemon.c:58 +msgid "Daemon Interface (like old headless mode)" +msgstr "" + +#: src/echo_plugin/gui.c:15 msgid "" "Echo Plugin\n" "By Johan Levin 1999.\n" @@ -1687,358 +951,52 @@ "\n" "Surround-kaja autor: Carl van Schaik 1999" -#: src/echo_plugin/gui.c:26 +#: src/echo_plugin/gui.c:27 msgid "About Echo Plugin" msgstr "Kajapluginast lähemalt" -#: src/echo_plugin/gui.c:69 +#: src/echo_plugin/gui.c:72 msgid "Configure Echo" msgstr "Kaja seadistamine" -#: src/echo_plugin/gui.c:82 +#: src/echo_plugin/gui.c:88 msgid "Delay: (ms)" msgstr "Viivitus (ms)" -#: src/echo_plugin/gui.c:87 +#: src/echo_plugin/gui.c:93 msgid "Feedback: (%)" msgstr "" -#: src/echo_plugin/gui.c:92 +#: src/echo_plugin/gui.c:98 msgid "Volume: (%)" msgstr "Valjus: (%)" -#: src/evdev-plug/ed.c:60 -msgid "Playback->Play" -msgstr "" - -#: src/evdev-plug/ed.c:61 -msgid "Playback->Stop" -msgstr "" - -#: src/evdev-plug/ed.c:62 -msgid "Playback->Pause" -msgstr "" - -#: src/evdev-plug/ed.c:63 -msgid "Playback->Prev" -msgstr "" - -#: src/evdev-plug/ed.c:64 -msgid "Playback->Next" -msgstr "" - -#: src/evdev-plug/ed.c:65 -msgid "Playback->Eject" -msgstr "" - -#: src/evdev-plug/ed.c:67 -msgid "Playlist->Repeat" -msgstr "" - -#: src/evdev-plug/ed.c:68 -msgid "Playlist->Shuffle" -msgstr "" - -#: src/evdev-plug/ed.c:70 -msgid "Volume->Up_5" -msgstr "" - -#: src/evdev-plug/ed.c:71 -msgid "Volume->Down_5" -msgstr "" - -#: src/evdev-plug/ed.c:72 -msgid "Volume->Up_10" -msgstr "" - -#: src/evdev-plug/ed.c:73 -msgid "Volume->Down_10" -msgstr "" - -#: src/evdev-plug/ed.c:74 -msgid "Volume->Mute" -msgstr "" - -#: src/evdev-plug/ed.c:76 -msgid "Window->Main" -msgstr "" - -#: src/evdev-plug/ed.c:77 -msgid "Window->Playlist" -msgstr "" - -#: src/evdev-plug/ed.c:78 -msgid "Window->Equalizer" -msgstr "" - -#: src/evdev-plug/ed.c:79 -msgid "Window->JumpToFile" -msgstr "" - -#: src/evdev-plug/ed_internals.c:94 -#, c-format -msgid "" -"event-device-plugin: unable to open device file %s , skipping this device; " -"check that the file exists and that you have read permission for it\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:103 -#, c-format -msgid "" -"event-device-plugin: unable to create a io_channel for device file %s ," -"skipping this device\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:342 -msgid "" -"event-device-plugin: unable to open /proc/bus/input/devices , automatic " -"detection of event devices won't work.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:351 -msgid "" -"event-device-plugin: unable to open a io_channel for /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:361 -msgid "" -"event-device-plugin: an error occurred while reading /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:424 -#, c-format -msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:489 src/evdev-plug/ed_internals.c:583 -#, c-format -msgid "" -"event-device-plugin: unable to load config file %s , default settings will " -"be used.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:535 -#, c-format -msgid "" -"event-device-plugin: incomplete information in config file for device \"%s" -"\" , skipping.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:604 src/evdev-plug/ed_internals.c:936 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_active value for device " -"\"%s\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:840 -#, c-format -msgid "" -"event-device-plugin: unable to access local directory %s , settings will not " -"be saved.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:890 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get filename value for device " -"\"%s\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:906 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get phys value for device \"%s" -"\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:922 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_custom value for device " -"\"%s\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:946 -#, c-format -msgid "" -"event-device-plugin: configuration, unexpected value for device \"%s\", " -"skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_ui.c:212 -#, fuzzy -msgid "Detected" -msgstr "Loo lõpp tuvastatakse" - -#: src/evdev-plug/ed_ui.c:217 -msgid "Custom" -msgstr "" - -#: src/evdev-plug/ed_ui.c:223 -#, fuzzy -msgid "Not Detected" -msgstr "Vormingute valimine" - -#: src/evdev-plug/ed_ui.c:275 src/evdev-plug/ed_ui.c:411 -#: src/evdev-plug/ed_ui.c:874 -msgid "Information" -msgstr "" - -#: src/evdev-plug/ed_ui.c:276 -msgid "" -"Cannot open bindings window for a not-detected device.\n" -"Ensure that the device has been correctly plugged in." -msgstr "" - -#: src/evdev-plug/ed_ui.c:319 -msgid "Error" -msgstr "" - -#: src/evdev-plug/ed_ui.c:320 -msgid "" -"Unable to open selected device.\n" -"Please check read permissions on device file." -msgstr "" - -#: src/evdev-plug/ed_ui.c:341 -msgid "EvDev-Plug - Add custom device" -msgstr "" - -#: src/evdev-plug/ed_ui.c:353 -msgid "" -"EvDev-Plug tries to automatically detect and update information about\n" -"event devices available on the system.\n" -"However, if auto-detect doesn't work for your system, or you have event\n" -"devices in a non-standard location (currently they're only searched in\n" -"/dev/input/ ), you may want to add a custom device, explicitly specifying\n" -"name and device file." -msgstr "" - -#: src/evdev-plug/ed_ui.c:361 -msgid "Device name:" -msgstr "Seadne nimi:" - -#: src/evdev-plug/ed_ui.c:365 -msgid "Device file:" -msgstr "Seadmefail:" - -#: src/evdev-plug/ed_ui.c:404 -msgid "(custom)" -msgstr "" - -#: src/evdev-plug/ed_ui.c:412 -msgid "" -"Please specify both name and filename.\n" -"Filename must be specified with absolute path." -msgstr "" - -#: src/evdev-plug/ed_ui.c:447 -msgid "Do you want to remove the existing configuration for selected device?\n" -msgstr "" - -#: src/evdev-plug/ed_ui.c:466 -msgid "Do you want to remove the selected custom device?\n" -msgstr "" - -#: src/evdev-plug/ed_ui.c:612 -msgid "EvDev-Plug - Configuration" -msgstr "" - -#: src/evdev-plug/ed_ui.c:651 -msgid "Active" -msgstr "Aktiivne" - -#: src/evdev-plug/ed_ui.c:655 src/sun/configure.c:486 -msgid "Status" -msgstr "Olek" - -#: src/evdev-plug/ed_ui.c:664 -msgid "Device Name" -msgstr "Seadme nimi" - -#: src/evdev-plug/ed_ui.c:668 -msgid "Device File" -msgstr "Seadmefail" - -#: src/evdev-plug/ed_ui.c:672 -msgid "Device Address" -msgstr "Seadme aadress" - -#: src/evdev-plug/ed_ui.c:689 -msgid "_Bindings" -msgstr "" - -#: src/evdev-plug/ed_ui.c:838 -msgid "" -"Press a key of your device to bind it;\n" -"if no key is pressed in five seconds, this window\n" -"will close without binding changes." -msgstr "" - -#: src/evdev-plug/ed_ui.c:875 -msgid "" -"This input event has been already assigned.\n" -"\n" -"It's not possible to assign multiple actions to the same input event " -"(although it's possible to assign the same action to multiple events)." -msgstr "" - -#: src/evdev-plug/ed_ui.c:1323 -msgid "EvDev-Plug - Bindings Configuration" -msgstr "" - -#: src/evdev-plug/ed_ui.c:1363 -msgid "Name: " -msgstr "Nimi: " - -#: src/evdev-plug/ed_ui.c:1372 -msgid "Filename: " -msgstr "Failinimi: " - -#: src/evdev-plug/ed_ui.c:1381 -msgid "Phys.Address: " -msgstr "" - -#: src/evdev-plug/ed_ui.c:1460 -msgid "EvDev-Plug - about" -msgstr "" - -#: src/evdev-plug/ed_ui.c:1491 -msgid "" -"\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"written by Giacomo Lozito\n" -msgstr "" - -#: src/ffaudio/ffaudio-core.c:662 +#: src/ffaudio/ffaudio-core.c:763 #, c-format msgid "" "Multi-format audio decoding plugin for Audacious based on\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" "Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" "\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" "Audacious plugin by:\n" " William Pitcock ,\n" " Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" msgstr "" -#: src/ffaudio/ffaudio-core.c:675 +#: src/ffaudio/ffaudio-core.c:777 #, fuzzy msgid "About FFaudio Plugin" msgstr "FLAC audiopluginast lähemalt" -#: src/filewriter/filewriter.c:180 +#: src/filewriter/filewriter.c:155 msgid "About FileWriter-Plugin" msgstr "FailiKirjutaja pluginast lähemalt" -#: src/filewriter/filewriter.c:181 +#: src/filewriter/filewriter.c:156 #, fuzzy msgid "" "FileWriter-Plugin\n" @@ -2074,243 +1032,208 @@ "programmiga; kui ei, siis võtke ühendust Free Software Foundation'iga,\n" "51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." -#: src/filewriter/filewriter.c:466 +#: src/filewriter/filewriter.c:450 msgid "File Writer Configuration" msgstr "Failikirjutaja sätted" -#: src/filewriter/filewriter.c:478 +#: src/filewriter/filewriter.c:462 msgid "Output file format:" msgstr "Väljundfaili vorming:" -#: src/filewriter/filewriter.c:496 src/ladspa/ladspa.c:1058 +#: src/filewriter/filewriter.c:480 msgid "Configure" msgstr "Seadista..." -#: src/filewriter/filewriter.c:511 +#: src/filewriter/filewriter.c:495 msgid "Save into original directory" msgstr "Salvestatakse algkataloogi" -#: src/filewriter/filewriter.c:516 +#: src/filewriter/filewriter.c:500 msgid "Save into custom directory" msgstr "Salvestatakse kohandatud kataloogi" -#: src/filewriter/filewriter.c:528 +#: src/filewriter/filewriter.c:510 msgid "Output file folder:" msgstr "Väljundkataloog:" -#: src/filewriter/filewriter.c:532 +#: src/filewriter/filewriter.c:514 msgid "Pick a folder" msgstr "Kataloogi valimine" -#: src/filewriter/filewriter.c:551 +#: src/filewriter/filewriter.c:533 msgid "Get filename from:" msgstr "Failinimi tuletatakse lähtefaili:" -#: src/filewriter/filewriter.c:554 +#: src/filewriter/filewriter.c:536 msgid "original file tags" msgstr "siltidest" -#: src/filewriter/filewriter.c:560 +#: src/filewriter/filewriter.c:542 msgid "original filename" msgstr "nimest" -#: src/filewriter/filewriter.c:570 +#: src/filewriter/filewriter.c:552 msgid "Don't strip file name extension" msgstr "Algse faili laiendit maha ei lõigata" -#: src/filewriter/filewriter.c:574 -msgid "" -"If enabled, the extension from the original filename will not be stripped " -"before adding the new file extension to the end." -msgstr "" - -#: src/filewriter/filewriter.c:588 +#: src/filewriter/filewriter.c:567 msgid "Prepend track number to filename" msgstr "" -#: src/filewriter/mp3.c:710 +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:783 +msgid "Auto" +msgstr "" + +#: src/filewriter/mp3.c:38 +#, fuzzy +msgid "Joint Stereo" +msgstr "Stereo" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 src/sid/xs_interface.c:308 +msgid "Stereo" +msgstr "Stereo" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 src/sid/xs_interface.c:301 +msgid "Mono" +msgstr "Mono" + +#: src/filewriter/mp3.c:724 msgid "MP3 Configuration" msgstr "MP3 sätted" -#: src/filewriter/mp3.c:737 +#: src/filewriter/mp3.c:747 msgid "Algorithm Quality:" msgstr "Algoritmi kvaliteet:" -#: src/filewriter/mp3.c:759 -msgid "" -"best/slowest:0;\n" -"worst/fastest:9;\n" -"recommended:2;\n" -"default:5;" -msgstr "" -"parim/aeglaseim:0;\n" -"halvim/kiireim:9;\n" -"soovitatav:2;\n" -"vaikimisi:5;" - -#: src/filewriter/mp3.c:767 +#: src/filewriter/mp3.c:772 msgid "Output Samplerate:" msgstr "" -#: src/filewriter/mp3.c:778 src/filewriter/mp3.c:919 -msgid "Auto" -msgstr "" - #: src/filewriter/mp3.c:800 msgid "(Hz)" msgstr "(Hz)" -#: src/filewriter/mp3.c:812 +#: src/filewriter/mp3.c:807 msgid "Bitrate / Compression ratio:" msgstr "Bitikiirus / pakkimistihedus:" -#: src/filewriter/mp3.c:838 +#: src/filewriter/mp3.c:831 msgid "Bitrate (kbps):" msgstr "Bitikiirus (kbps):" -#: src/filewriter/mp3.c:879 +#: src/filewriter/mp3.c:864 msgid "Compression ratio:" msgstr "" -#: src/filewriter/mp3.c:909 +#: src/filewriter/mp3.c:888 msgid "Audio Mode:" msgstr "" -#: src/filewriter/mp3.c:924 -msgid "Joint-Stereo" -msgstr "" - -#: src/filewriter/mp3.c:967 +#: src/filewriter/mp3.c:913 msgid "Misc:" msgstr "" -#: src/filewriter/mp3.c:978 +#: src/filewriter/mp3.c:924 msgid "Enforce strict ISO complience" msgstr "" -#: src/filewriter/mp3.c:989 +#: src/filewriter/mp3.c:935 msgid "Error protection" msgstr "" -#: src/filewriter/mp3.c:1001 -msgid "Adds 16 bit checksum to every frame" -msgstr "" - -#: src/filewriter/mp3.c:1006 src/filewriter/vorbis.c:247 -#: src/modplug/gui/interface.cxx:320 +#: src/filewriter/mp3.c:947 src/filewriter/vorbis.c:245 msgid "Quality" msgstr "Kvaliteet" -#: src/filewriter/mp3.c:1018 +#: src/filewriter/mp3.c:957 msgid "Enable VBR/ABR" msgstr "" -#: src/filewriter/mp3.c:1030 +#: src/filewriter/mp3.c:967 msgid "Type:" msgstr "Liik:" -#: src/filewriter/mp3.c:1041 -msgid "Variable bitrate" -msgstr "Muutuv bitikiirus" - -#: src/filewriter/mp3.c:1053 -msgid "Average bitrate" -msgstr "Keskmine bitikiirus" - -#: src/filewriter/mp3.c:1067 +#: src/filewriter/mp3.c:1000 msgid "VBR Options:" msgstr "" -#: src/filewriter/mp3.c:1083 +#: src/filewriter/mp3.c:1016 msgid "Minimum bitrate (kbps):" msgstr "Vähim bitikiirus (kbps):" -#: src/filewriter/mp3.c:1119 +#: src/filewriter/mp3.c:1043 msgid "Maximum bitrate (kbps):" msgstr "Suurim bitikiirus (kbps):" -#: src/filewriter/mp3.c:1151 +#: src/filewriter/mp3.c:1066 msgid "Strictly enforce minimum bitrate" msgstr "" -#: src/filewriter/mp3.c:1153 -msgid "" -"For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/" -"mp3 player)" -msgstr "" - -#: src/filewriter/mp3.c:1166 +#: src/filewriter/mp3.c:1078 msgid "ABR Options:" msgstr "" -#: src/filewriter/mp3.c:1176 +#: src/filewriter/mp3.c:1088 msgid "Average bitrate (kbps):" msgstr "Keskmine bitikiirus (kbps):" -#: src/filewriter/mp3.c:1213 +#: src/filewriter/mp3.c:1116 msgid "VBR quality level:" msgstr "" -#: src/filewriter/mp3.c:1228 -msgid "" -"highest:0;\n" -"lowest:9;\n" -"default:4;" -msgstr "" - -#: src/filewriter/mp3.c:1236 +#: src/filewriter/mp3.c:1135 msgid "Don't write Xing VBR header" msgstr "" -#: src/filewriter/mp3.c:1250 +#: src/filewriter/mp3.c:1149 msgid "VBR/ABR" msgstr "" -#: src/filewriter/mp3.c:1262 +#: src/filewriter/mp3.c:1159 msgid "Frame params:" msgstr "" -#: src/filewriter/mp3.c:1274 +#: src/filewriter/mp3.c:1171 msgid "Mark as copyright" msgstr "" -#: src/filewriter/mp3.c:1285 +#: src/filewriter/mp3.c:1182 msgid "Mark as original" msgstr "" -#: src/filewriter/mp3.c:1297 +#: src/filewriter/mp3.c:1194 msgid "ID3 params:" msgstr "" -#: src/filewriter/mp3.c:1308 +#: src/filewriter/mp3.c:1205 msgid "Force addition of version 2 tag" msgstr "" -#: src/filewriter/mp3.c:1318 +#: src/filewriter/mp3.c:1215 msgid "Only add v1 tag" msgstr "" -#: src/filewriter/mp3.c:1325 +#: src/filewriter/mp3.c:1222 msgid "Only add v2 tag" msgstr "" -#: src/filewriter/mp3.c:1346 +#: src/filewriter/mp3.c:1243 msgid "Tags" msgstr "" -#: src/filewriter/vorbis.c:240 +#: src/filewriter/vorbis.c:238 msgid "Vorbis Encoder Configuration" msgstr "Vorbis-kodeerija sätted" -#: src/filewriter/vorbis.c:260 +#: src/filewriter/vorbis.c:258 msgid "Quality level (0 - 10):" msgstr "Kvaliteedi tase (0-10):" -#: src/flacng/plugin.c:457 -msgid "FLAC Audio Plugin " -msgstr "FLAC audioplugin " +#: src/flacng/plugin.c:379 +msgid "About FLAC Audio Plugin" +msgstr "FLAC audiopluginast lähemalt" -#: src/flacng/plugin.c:458 +#: src/flacng/plugin.c:380 msgid "" "\n" "\n" @@ -2326,15 +1249,11 @@ "\n" "http://www.skytale.net/projects/bmp-flac2/" -#: src/flacng/plugin.c:464 -msgid "About FLAC Audio Plugin" -msgstr "FLAC audiopluginast lähemalt" - -#: src/gnomeshortcuts/gnomeshortcuts.c:306 +#: src/gnomeshortcuts/gnomeshortcuts.c:303 msgid "About Gnome Shortcut Plugin" msgstr "Gnome kiirklahvide pluginast lähemalt" -#: src/gnomeshortcuts/gnomeshortcuts.c:307 +#: src/gnomeshortcuts/gnomeshortcuts.c:304 #, fuzzy msgid "" "Gnome Shortcut Plugin\n" @@ -2349,511 +1268,492 @@ "Autoriõigused (C) 2007 Sascha Hlusiak \n" "\n" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:273 +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 msgid "Open Files" msgstr "" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:271 #, fuzzy msgid "Add Files" msgstr "Failinimi" -#: src/gntui/gntui.c:271 +#: src/gntui/gntui.c:270 #, fuzzy msgid "Audacious2" msgstr "%s - Audacious" -#: src/gntui/gntui.c:312 +#: src/gntui/gntui.c:311 msgid "gnt interface" msgstr "" -#: src/gtkui/actions.c:257 src/skins/ui_main.c:818 -msgid "Can't jump to time when no track is being played.\n" -msgstr "" +#: src/gtkui/columns.c:36 +#, fuzzy +msgid "Entry number" +msgstr "Loo number:" -#: src/gtkui/actions.c:272 src/gtkui/ui_manager.c:204 -#: src/gtkui/ui_manager.c:205 src/skins/ui_main.c:833 -#: src/skins/ui_manager.c:410 src/skins/ui_manager.c:411 -msgid "Jump to Time" -msgstr "" +#: src/gtkui/columns.c:36 src/sid/xs_interface.c:1103 +msgid "Title" +msgstr "Pealkiri" -#: src/gtkui/actions.c:289 src/skins/ui_main.c:854 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "minutes:seconds" -msgstr "minutit" +msgid "Artist" +msgstr "Esitaja:" -#: src/gtkui/actions.c:299 src/skins/ui_main.c:864 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "Track length:" -msgstr "Loo number:" +msgid "Year" +msgstr "Aasta:" -#: src/gtkui/actions.c:610 src/skins/ui_playlist.c:648 -#, c-format -msgid "Error writing playlist \"%s\": %s" -msgstr "" +#: src/gtkui/columns.c:37 +#, fuzzy +msgid "Album" +msgstr "Album:" -#: src/gtkui/actions.c:625 src/skins/ui_playlist.c:670 -#, c-format -msgid "%s already exist. Continue?" +#: src/gtkui/columns.c:37 +msgid "Track" msgstr "" -#: src/gtkui/actions.c:651 src/skins/ui_manager.c:214 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "Export Playlist" -msgstr "Esitusnimekirja andmed kiiresti" +msgid "Queue position" +msgstr "Asukoht" -#: src/gtkui/actions.c:723 src/skins/ui_manager.c:211 +#: src/gtkui/columns.c:38 #, fuzzy -msgid "Import Playlist" -msgstr "Esitusnimekirja andmed kiiresti" - -#: src/gtkui/ui_gtk.c:72 -msgid "GTK Interface" -msgstr "" +msgid "Length" +msgstr "Kestus:" -#: src/gtkui/ui_gtk.c:281 src/skins/ui_main.c:388 -#, c-format -msgid "%s - Audacious" -msgstr "%s - Audacious" +#: src/gtkui/columns.c:38 +#, fuzzy +msgid "File path" +msgstr "Failinimi" -#: src/gtkui/ui_gtk.c:287 src/skins/ui_main.c:390 src/skins/ui_main.c:2166 +#: src/gtkui/columns.c:38 #, fuzzy -msgid "Audacious" -msgstr "%s - Audacious" +msgid "File name" +msgstr "Failinimi" -#: src/gtkui/ui_manager.c:35 src/gtkui/ui_manager.c:36 -#: src/skins/ui_manager.c:53 src/skins/ui_manager.c:54 -msgid "Stop after Current Song" +#: src/gtkui/columns.c:38 +msgid "Custom title" msgstr "" -#: src/gtkui/ui_manager.c:38 src/gtkui/ui_manager.c:39 -#: src/skins/ui_manager.c:59 src/skins/ui_manager.c:60 -msgid "Repeat" -msgstr "" +#: src/gtkui/columns.c:39 +#, fuzzy +msgid "Bitrate" +msgstr "Bitikiirus:" -#: src/gtkui/ui_manager.c:41 src/gtkui/ui_manager.c:42 -#: src/skins/ui_manager.c:62 src/skins/ui_manager.c:63 -msgid "Shuffle" +#: src/gtkui/columns.c:286 +msgid "Choose Columns" msgstr "" -#: src/gtkui/ui_manager.c:44 src/gtkui/ui_manager.c:45 -#: src/skins/ui_manager.c:65 src/skins/ui_manager.c:66 -msgid "No Playlist Advance" +#: src/gtkui/columns.c:300 +msgid "Available:" msgstr "" -#: src/gtkui/ui_manager.c:47 -#, fuzzy -msgid "Show playlists" -msgstr "Esitusnimekirja valimine" - -#: src/gtkui/ui_manager.c:48 -#, fuzzy -msgid "Show/hide playlists" -msgstr "Esitusnimekirja valimine" - -#: src/gtkui/ui_manager.c:50 -msgid "Show infoarea" +#: src/gtkui/columns.c:334 +msgid "Chosen:" msgstr "" -#: src/gtkui/ui_manager.c:51 -msgid "Show/hide infoarea" +#: src/gtkui/layout.c:122 +msgid "Dock at Left" msgstr "" -#: src/gtkui/ui_manager.c:53 -msgid "Show main menu" +#: src/gtkui/layout.c:122 +msgid "Dock at Right" msgstr "" -#: src/gtkui/ui_manager.c:54 -msgid "Show/hide main menu" +#: src/gtkui/layout.c:123 +msgid "Dock at Top" msgstr "" -#: src/gtkui/ui_manager.c:56 -#, fuzzy -msgid "Show statusbar" -msgstr "Olek" +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "" -#: src/gtkui/ui_manager.c:57 -#, fuzzy -msgid "Show/hide statusbar" -msgstr "Esitusnimekirja valimine" +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "" -#: src/gtkui/ui_manager.c:69 src/gtkui/ui_manager.c:70 -#: src/skins/ui_manager.c:170 src/skins/ui_manager.c:171 +#: src/gtkui/layout.c:123 #, fuzzy -msgid "Pause" -msgstr "Pausimine" +msgid "Disable" +msgstr "lubatud" -#: src/gtkui/ui_manager.c:72 src/gtkui/ui_manager.c:73 src/hotkey/gui.c:73 -#: src/skins/ui_manager.c:173 src/skins/ui_manager.c:174 +#: src/gtkui/menus.c:132 #, fuzzy -msgid "Stop" -msgstr "Stereo" +msgid "_Open Files ..." +msgstr "Failinimi" -#: src/gtkui/ui_manager.c:75 src/gtkui/ui_manager.c:76 -#: src/skins/ui_manager.c:176 src/skins/ui_manager.c:177 -msgid "Previous" +#: src/gtkui/menus.c:133 +msgid "Open _URL ..." msgstr "" -#: src/gtkui/ui_manager.c:78 src/gtkui/ui_manager.c:79 -#: src/skins/ui_manager.c:179 src/skins/ui_manager.c:180 +#: src/gtkui/menus.c:134 #, fuzzy -msgid "Next" -msgstr "Tekst" - -#: src/gtkui/ui_manager.c:84 src/skins/ui_manager.c:197 -#, fuzzy -msgid "Playlist" -msgstr "Esitusnimekirja valimine" - -#: src/gtkui/ui_manager.c:86 src/gtkui/ui_manager.c:87 -#: src/skins/ui_manager.c:199 src/skins/ui_manager.c:200 -#, fuzzy -msgid "New Playlist" -msgstr "Esitusnimekirja valimine" +msgid "_Add File ..." +msgstr "Failinimi" -#: src/gtkui/ui_manager.c:89 src/gtkui/ui_manager.c:90 -#: src/skins/ui_manager.c:208 src/skins/ui_manager.c:209 +#: src/gtkui/menus.c:135 #, fuzzy -msgid "Delete Playlist" -msgstr "Esitusnimekirja valimine" +msgid "Add U_RL ..." +msgstr "Failinimi" -#: src/gtkui/ui_manager.c:92 +#: src/gtkui/menus.c:137 #, fuzzy -msgid "Import Playlist ..." -msgstr "Esitusnimekirja andmed kiiresti" +msgid "A_bout ..." +msgstr "\"%s\" pluginast lähemalt" -#: src/gtkui/ui_manager.c:93 src/skins/ui_manager.c:212 -msgid "Loads a playlist file into the selected playlist." +#: src/gtkui/menus.c:138 +msgid "_Preferences ..." msgstr "" -#: src/gtkui/ui_manager.c:95 +#: src/gtkui/menus.c:139 src/skins/ui_manager.c:412 #, fuzzy -msgid "Export Playlist ..." -msgstr "Esitusnimekirja andmed kiiresti" +msgid "_Quit" +msgstr "Kvaliteet" -#: src/gtkui/ui_manager.c:96 src/skins/ui_manager.c:215 +#: src/gtkui/menus.c:142 #, fuzzy -msgid "Saves the selected playlist." -msgstr "Esitusnimekirja valimine" +msgid "_Play" +msgstr "Esitamine" -#: src/gtkui/ui_manager.c:98 src/skins/ui_manager.c:217 +#: src/gtkui/menus.c:143 #, fuzzy -msgid "Save All Playlists" -msgstr "Esitusnimekirja valimine" - -#: src/gtkui/ui_manager.c:99 src/skins/ui_manager.c:218 -msgid "" -"Saves all the playlists that are open. Note that this is done automatically " -"when Audacious quits." -msgstr "" - -#: src/gtkui/ui_manager.c:103 -msgid "Refresh" -msgstr "" - -#: src/gtkui/ui_manager.c:104 src/skins/ui_manager.c:223 -msgid "Refreshes metadata associated with a playlist entry." -msgstr "" +msgid "Paus_e" +msgstr "Pausimine" -#: src/gtkui/ui_manager.c:107 +#: src/gtkui/menus.c:144 #, fuzzy -msgid "Playlist Manager" -msgstr "Esitusnimekirja valimine" +msgid "_Stop" +msgstr "Stereo" -#: src/gtkui/ui_manager.c:108 src/skins/ui_manager.c:227 -msgid "Opens the playlist manager." +#: src/gtkui/menus.c:145 +msgid "Pre_vious" msgstr "" -#: src/gtkui/ui_manager.c:111 -msgid "Add URL ..." -msgstr "" +#: src/gtkui/menus.c:146 +#, fuzzy +msgid "_Next" +msgstr "Tekst" -#: src/gtkui/ui_manager.c:112 src/skins/ui_manager.c:237 -msgid "Adds a remote track to the playlist." +#: src/gtkui/menus.c:148 +msgid "_Repeat" msgstr "" -#: src/gtkui/ui_manager.c:115 -#, fuzzy -msgid "Add Files ..." -msgstr "Failinimi" - -#: src/gtkui/ui_manager.c:116 src/skins/ui_manager.c:241 -msgid "Adds files to the playlist." +#: src/gtkui/menus.c:149 +msgid "S_huffle" msgstr "" -#: src/gtkui/ui_manager.c:119 src/skins/ui_manager.c:264 +#: src/gtkui/menus.c:150 #, fuzzy -msgid "Remove All" -msgstr "Eemalda" - -#: src/gtkui/ui_manager.c:120 src/skins/ui_manager.c:265 -msgid "Removes all entries from the playlist." -msgstr "" +msgid "N_o Playlist Advance" +msgstr "Esitusnimekirja valimine" -#: src/gtkui/ui_manager.c:123 src/skins/ui_manager.c:290 -msgid "Remove Unselected" +#: src/gtkui/menus.c:151 +msgid "Stop _After This Song" msgstr "" -#: src/gtkui/ui_manager.c:124 src/skins/ui_manager.c:291 -msgid "Remove unselected entries from the playlist." +#: src/gtkui/menus.c:153 src/gtkui/menus.c:210 +msgid "Song _Info ..." msgstr "" -#: src/gtkui/ui_manager.c:127 src/skins/ui_manager.c:294 -msgid "Remove Selected" +#: src/gtkui/menus.c:154 +msgid "Jump to _Time ..." msgstr "" -#: src/gtkui/ui_manager.c:128 src/skins/ui_manager.c:295 -msgid "Remove selected entries from the playlist." +#: src/gtkui/menus.c:155 +msgid "_Jump to Song ..." msgstr "" -#: src/gtkui/ui_manager.c:131 +#: src/gtkui/menus.c:158 #, fuzzy -msgid "Sort" -msgstr "Vabandust" - -#: src/gtkui/ui_manager.c:132 src/skins/ui_manager.c:330 -#: src/skins/ui_manager.c:360 -#, fuzzy -msgid "By Track Number" +msgid "By Track _Number" msgstr "Loo number:" -#: src/gtkui/ui_manager.c:134 src/skins/ui_manager.c:278 -#: src/skins/ui_manager.c:306 src/skins/ui_manager.c:336 +#: src/gtkui/menus.c:159 #, fuzzy -msgid "By Title" +msgid "By _Title" msgstr "Pealkiri" -#: src/gtkui/ui_manager.c:136 src/skins/ui_manager.c:314 -#: src/skins/ui_manager.c:344 +#: src/gtkui/menus.c:160 #, fuzzy -msgid "By Artist" +msgid "By _Artist" msgstr "Esitaja:" -#: src/gtkui/ui_manager.c:138 src/skins/ui_manager.c:310 -#: src/skins/ui_manager.c:340 +#: src/gtkui/menus.c:161 #, fuzzy -msgid "By Album" +msgid "By A_lbum" msgstr "Album:" -#: src/gtkui/ui_manager.c:140 +#: src/gtkui/menus.c:162 #, fuzzy -msgid "By File Path" +msgid "By Release _Date" +msgstr "Kuupäev:" + +#: src/gtkui/menus.c:163 +#, fuzzy +msgid "By _File Path" msgstr "Failinimi" -#: src/gtkui/ui_manager.c:142 -msgid "Reverse Order" -msgstr "" +#: src/gtkui/menus.c:164 +#, fuzzy +msgid "By _Custom Title" +msgstr "Pealkiri" -#: src/gtkui/ui_manager.c:147 -msgid "Output" +#: src/gtkui/menus.c:166 +msgid "R_everse Order" msgstr "" -#: src/gtkui/ui_manager.c:149 src/modplug/gui/interface.cxx:572 -msgid "Effects" -msgstr "Efektid" - -#: src/gtkui/ui_manager.c:151 -msgid "Equalizer" +#: src/gtkui/menus.c:167 +msgid "_Random Order" msgstr "" -#: src/gtkui/ui_manager.c:156 src/skins/ui_manager.c:232 -msgid "View" +#: src/gtkui/menus.c:170 src/gtkui/menus.c:212 +msgid "_Refresh" msgstr "" -#: src/gtkui/ui_manager.c:157 src/skins/ui_manager.c:233 -msgid "Interface" +#: src/gtkui/menus.c:172 +#, fuzzy +msgid "_Sort" +msgstr "Vabandust" + +#: src/gtkui/menus.c:174 +msgid "_New" msgstr "" -#: src/gtkui/ui_manager.c:164 src/skins/ui_manager.c:370 +#: src/gtkui/menus.c:175 #, fuzzy -msgid "File" -msgstr "Failinimi" +msgid "_Close" +msgstr "Sulge" -#: src/gtkui/ui_manager.c:167 +#: src/gtkui/menus.c:177 #, fuzzy -msgid "Components" -msgstr "Kommentaar:" +msgid "_Import ..." +msgstr "Esitusnimekirja andmed kiiresti" -#: src/gtkui/ui_manager.c:169 src/gtkui/ui_manager.c:172 -#: src/skins/ui_manager.c:375 src/skins/ui_manager.c:378 -msgid "View Track Details" -msgstr "" +#: src/gtkui/menus.c:178 +#, fuzzy +msgid "_Export ..." +msgstr "Esitusnimekirja andmed kiiresti" -#: src/gtkui/ui_manager.c:170 src/gtkui/ui_manager.c:173 -#: src/skins/ui_manager.c:376 src/skins/ui_manager.c:379 -msgid "View track details" -msgstr "" +#: src/gtkui/menus.c:180 +#, fuzzy +msgid "_Playlist Manager ..." +msgstr "Esitusnimekirja valimine" -#: src/gtkui/ui_manager.c:175 src/gtkui/ui_manager.c:176 -#: src/skins/ui_manager.c:381 src/skins/ui_manager.c:382 +#: src/gtkui/menus.c:183 #, fuzzy -msgid "About Audacious" -msgstr "Audacious'e LIRC pluginast lähemalt" +msgid "Volume _Up" +msgstr "Valjus" -#: src/gtkui/ui_manager.c:178 -msgid "Open Files ..." -msgstr "" +#: src/gtkui/menus.c:184 +#, fuzzy +msgid "Volume _Down" +msgstr "Valjus" -#: src/gtkui/ui_manager.c:179 src/skins/ui_manager.c:385 -msgid "Load and play a file" +#: src/gtkui/menus.c:186 +msgid "_Equalizer" msgstr "" -#: src/gtkui/ui_manager.c:181 -msgid "Open URL ..." +#: src/gtkui/menus.c:188 +#, fuzzy +msgid "E_ffects" +msgstr "Efektid" + +#: src/gtkui/menus.c:191 +msgid "_Interface" msgstr "" -#: src/gtkui/ui_manager.c:182 src/skins/ui_manager.c:388 -msgid "Play media from the selected location" +#: src/gtkui/menus.c:193 +msgid "Show _Menu Bar" msgstr "" -#: src/gtkui/ui_manager.c:184 src/skins/ui_manager.c:390 -msgid "Plugin services" +#: src/gtkui/menus.c:194 +msgid "Show I_nfo Bar" msgstr "" -#: src/gtkui/ui_manager.c:186 src/skins/ui_manager.c:392 -msgid "Preferences" +#: src/gtkui/menus.c:195 +#, fuzzy +msgid "Show _Status Bar" +msgstr "Olek" + +#: src/gtkui/menus.c:197 +msgid "Show Column _Headers" msgstr "" -#: src/gtkui/ui_manager.c:187 src/skins/ui_manager.c:393 -msgid "Open preferences window" +#: src/gtkui/menus.c:198 +msgid "Choose _Columns ..." msgstr "" -#: src/gtkui/ui_manager.c:189 src/skins/ui_manager.c:395 +#: src/gtkui/menus.c:199 #, fuzzy -msgid "_Quit" -msgstr "Kvaliteet" +msgid "Scrol_l on Song Change" +msgstr "Loo sõnum" -#: src/gtkui/ui_manager.c:190 src/skins/ui_manager.c:396 +#: src/gtkui/menus.c:202 #, fuzzy -msgid "Quit Audacious" -msgstr "%s - Audacious" +msgid "_File" +msgstr "Failinimi" -#: src/gtkui/ui_manager.c:192 src/gtkui/ui_manager.c:193 -#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 -msgid "Set A-B" -msgstr "" +#: src/gtkui/menus.c:203 +#, fuzzy +msgid "_Playback" +msgstr "Esitamine" -#: src/gtkui/ui_manager.c:195 src/gtkui/ui_manager.c:196 -#: src/skins/ui_manager.c:401 src/skins/ui_manager.c:402 -msgid "Clear A-B" -msgstr "" +#: src/gtkui/menus.c:204 +#, fuzzy +msgid "P_laylist" +msgstr "Esitusnimekirja valimine" -#: src/gtkui/ui_manager.c:198 src/gtkui/ui_manager.c:199 -#: src/skins/ui_manager.c:404 src/skins/ui_manager.c:405 -msgid "Jump to Playlist Start" -msgstr "" +#: src/gtkui/menus.c:205 src/gtkui/menus.c:219 +#, fuzzy +msgid "_Services" +msgstr "Seadmed" -#: src/gtkui/ui_manager.c:201 src/gtkui/ui_manager.c:202 src/hotkey/gui.c:80 -#: src/skins/ui_manager.c:407 src/skins/ui_manager.c:408 -msgid "Jump to File" +#: src/gtkui/menus.c:206 +msgid "_Output" msgstr "" -#: src/gtkui/ui_manager.c:207 src/skins/ui_manager.c:413 -msgid "Queue Toggle" +#: src/gtkui/menus.c:207 +msgid "_View" msgstr "" -#: src/gtkui/ui_manager.c:208 src/skins/ui_manager.c:414 -msgid "Enables/disables the entry in the playlist's queue." +#: src/gtkui/menus.c:211 +msgid "_Queue/Unqueue" msgstr "" -#: src/gtkui/ui_manager.c:211 src/skins/ui_manager.c:417 -msgid "Copy" +#: src/gtkui/menus.c:214 +msgid "Cu_t" msgstr "" -#: src/gtkui/ui_manager.c:214 src/skins/ui_manager.c:419 -#, fuzzy -msgid "Cut" -msgstr "Praegune" +#: src/gtkui/menus.c:215 +msgid "_Copy" +msgstr "" -#: src/gtkui/ui_manager.c:217 src/skins/ui_manager.c:421 -msgid "Paste" +#: src/gtkui/menus.c:216 +msgid "_Paste" msgstr "" -#: src/gtkui/ui_manager.c:220 src/skins/ui_manager.c:254 +#: src/gtkui/menus.c:217 #, fuzzy -msgid "Select All" +msgid "Select _All" msgstr "Esitusnimekirja valimine" -#: src/gtkui/ui_manager.c:221 src/skins/ui_manager.c:255 -msgid "Selects all of the playlist entries." +#: src/gtkui/menus.c:222 +#, fuzzy +msgid "_Rename" +msgstr "Failinimi" + +#: src/gtkui/ui_gtk.c:75 +msgid "GTK Interface" msgstr "" -#: src/gtkui/ui_manager.c:224 src/skins/ui_manager.c:258 +#: src/gtkui/ui_gtk.c:132 src/skins/ui_main.c:303 +#, c-format +msgid "%s - Audacious" +msgstr "%s - Audacious" + +#: src/gtkui/ui_gtk.c:138 src/skins/ui_main.c:305 src/skins/ui_main.c:1498 #, fuzzy -msgid "Select None" -msgstr "Loo lõpp tuvastatakse" +msgid "Audacious" +msgstr "%s - Audacious" -#: src/gtkui/ui_manager.c:225 src/skins/ui_manager.c:259 -msgid "Deselects all of the playlist entries." +#: src/gtkui/ui_gtk.c:177 src/skins/plugin.c:185 +msgid "Error" msgstr "" -#: src/gtkui/ui_statusbar.c:91 src/skins/ui_main.c:609 +#: src/gtkui/ui_statusbar.c:102 src/skins/ui_main.c:460 #, fuzzy msgid "mono" msgstr "Mono" -#: src/gtkui/ui_statusbar.c:94 src/skins/ui_main.c:608 +#: src/gtkui/ui_statusbar.c:104 src/skins/ui_main.c:459 #, fuzzy msgid "stereo" msgstr "Stereo" -#: src/gtkui/ui_statusbar.c:97 +#: src/gtkui/ui_statusbar.c:106 #, fuzzy, c-format -msgid "%d channels" -msgstr "Kanaleid" +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "Kanaleid" +msgstr[1] "Kanaleid" -#: src/gtkui/ui_statusbar.c:101 +#: src/gtkui/ui_statusbar.c:121 #, c-format -msgid "%s: %d kbps, %d Hz, %s" +msgid "%d kbps" msgstr "" -#: src/hotkey/gui.c:70 +#: src/hotkey/gui.c:71 msgid "Previous Track" msgstr "" -#: src/hotkey/gui.c:72 +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +#, fuzzy +msgid "Play" +msgstr "Esitamine" + +#: src/hotkey/gui.c:73 msgid "Pause/Resume" msgstr "" -#: src/hotkey/gui.c:74 +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +#, fuzzy +msgid "Stop" +msgstr "Stereo" + +#: src/hotkey/gui.c:75 msgid "Next Track" msgstr "" -#: src/hotkey/gui.c:75 +#: src/hotkey/gui.c:76 msgid "Forward 5 Seconds" msgstr "" -#: src/hotkey/gui.c:76 +#: src/hotkey/gui.c:77 msgid "Rewind 5 Seconds" msgstr "" -#: src/hotkey/gui.c:77 +#: src/hotkey/gui.c:78 msgid "Mute" msgstr "" -#: src/hotkey/gui.c:78 +#: src/hotkey/gui.c:79 #, fuzzy msgid "Volume Up" msgstr "Valjus" -#: src/hotkey/gui.c:79 +#: src/hotkey/gui.c:80 #, fuzzy msgid "Volume Down" msgstr "Valjus" -#: src/hotkey/gui.c:81 -msgid "Toggle Player Windows" +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:424 src/skins/ui_manager.c:425 +msgid "Jump to File" msgstr "" #: src/hotkey/gui.c:82 +msgid "Toggle Player Windows" +msgstr "" + +#: src/hotkey/gui.c:83 msgid "Show On-Screen-Display" msgstr "" -#: src/hotkey/gui.c:92 +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "" + +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "" + +#: src/hotkey/gui.c:95 msgid "(none)" msgstr "" -#: src/hotkey/gui.c:229 +#: src/hotkey/gui.c:232 msgid "" "It is not recommended to bind the primary mouse buttons without " "modificators.\n" @@ -2861,39 +1761,39 @@ "Do you want to continue?" msgstr "" -#: src/hotkey/gui.c:231 +#: src/hotkey/gui.c:234 msgid "Binding mouse buttons" msgstr "" -#: src/hotkey/gui.c:381 +#: src/hotkey/gui.c:384 msgid "Global Hotkey Plugin Configuration" msgstr "" -#: src/hotkey/gui.c:397 +#: src/hotkey/gui.c:400 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." msgstr "" -#: src/hotkey/gui.c:402 +#: src/hotkey/gui.c:405 #, fuzzy msgid "Hotkeys:" msgstr "Host:" -#: src/hotkey/gui.c:421 +#: src/hotkey/gui.c:424 #, fuzzy msgid "Action:" msgstr "Failinimi: " -#: src/hotkey/gui.c:429 +#: src/hotkey/gui.c:432 msgid "Key Binding:" msgstr "" -#: src/hotkey/gui.c:660 +#: src/hotkey/gui.c:663 msgid "About Global Hotkey Plugin" msgstr "" -#: src/hotkey/gui.c:661 +#: src/hotkey/gui.c:664 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -2933,428 +1833,107 @@ msgid "Enable debug printing" msgstr "" -#: src/jack/jack.c:437 +#: src/jack/jack.c:438 msgid "" "XMMS jack Driver 0.17\n" "\n" "xmms-jack.sf.net\n" -"Chris Morgan\n" -"\n" -"Audacious port by\n" -"Giacomo Lozito from develia.org" -msgstr "" - -#: src/jack/jack.c:442 -msgid "About JACK Output Plugin 0.17" -msgstr "JACK väljundplugina versioonist 0.17 lähemalt" - -#: src/ladspa/ladspa.c:824 -msgid "This LADSPA plugin has no user controls" -msgstr "" - -#: src/ladspa/ladspa.c:865 src/ladspa/ladspa.c:952 -msgid "Name" -msgstr "Nimi" - -#: src/ladspa/ladspa.c:952 -msgid "UID" -msgstr "UID" - -#: src/ladspa/ladspa.c:1029 -msgid "Installed plugins" -msgstr "Paigaldatud pluginad" - -#: src/ladspa/ladspa.c:1037 -msgid "Running plugins" -msgstr "Töötavad pluginad" - -#: src/ladspa/ladspa.c:1052 -msgid "Add" -msgstr "Lisa" - -#: src/ladspa/ladspa.c:1055 -msgid "Remove" -msgstr "Eemalda" - -#: src/ladspa/ladspa.c:1066 -msgid "LADSPA Plugin Catalog" -msgstr "LADSPA pluginate kataloog" - -#: src/lirc/about.c:63 -msgid "About LIRC Audacious Plugin" -msgstr "Audacious'e LIRC pluginast lähemalt" - -#: src/lirc/about.c:90 -msgid "LIRC Plugin " -msgstr "" - -#: src/lirc/about.c:92 -msgid "" -"\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" -"\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" -msgstr "" - -#: src/lirc/interface.c:37 -msgid "LIRC plugin settings" -msgstr "" - -#: src/lirc/interface.c:61 -msgid "Reconnect to LIRC server" -msgstr "" - -#: src/lirc/interface.c:68 -msgid "Timeout before reconnecting (seconds): " -msgstr "" - -#: src/lirc/interface.c:75 -msgid "Reconnect" -msgstr "" - -#: src/lirc/interface.c:79 -#, fuzzy -msgid "Connection" -msgstr "Asukoht:" - -#: src/lirc/lirc.c:82 -#, c-format -msgid "%s: could not init LIRC support\n" -msgstr "" - -#: src/lirc/lirc.c:90 -#, c-format -msgid "" -"%s: could not read LIRC config file\n" -"%s: please read the documentation of LIRC\n" -"%s: how to create a proper config file\n" -msgstr "" - -#: src/lirc/lirc.c:117 -#, c-format -msgid "%s: trying to reconnect...\n" -msgstr "" - -#: src/lirc/lirc.c:332 -#, c-format -msgid "%s: unknown command \"%s\"\n" -msgstr "" - -#: src/lirc/lirc.c:342 -#, c-format -msgid "%s: disconnected from LIRC\n" -msgstr "" - -#: src/lirc/lirc.c:346 -#, c-format -msgid "%s: will try reconnect every %d seconds...\n" -msgstr "" - -#: src/lyricwiki/lyricwiki.c:244 -msgid "LyricWiki" -msgstr "" - -#: src/lyricwiki/lyricwiki.c:337 -msgid "" -"\n" -"No lyrics were found." -msgstr "" - -#: src/metronom/metronom.c:90 -msgid "About Metronom" -msgstr "Metronoomist lähemalt" - -#: src/metronom/metronom.c:91 -msgid "" -"A Tact Generator by Martin Strauss \n" -"\n" -"To use it, add a URL: tact://beats*num/den\n" -"e.g. tact://77 to play 77 beats per minute\n" -"or tact://60*3/4 to play 60 bpm in 3/4 tacts" -msgstr "" - -#: src/metronom/metronom.c:145 -#, c-format -msgid "Tact generator: %d bpm" -msgstr "Taktigeneraator: %d bpm" - -#: src/metronom/metronom.c:147 -#, c-format -msgid "Tact generator: %d bpm %d/%d" -msgstr "Taktigeneraator: %d bpm %d/%d" - -#: src/modplug/gui/interface.cxx:137 -msgid "ModPlug Configuration" -msgstr "ModPlug'i sätted" - -#: src/modplug/gui/interface.cxx:174 -msgid "16 bit" -msgstr "16-bitine" - -#: src/modplug/gui/interface.cxx:181 -msgid "8 bit" -msgstr "8-bitine" - -#: src/modplug/gui/interface.cxx:212 -msgid "Mono (downmix)" -msgstr "" - -#: src/modplug/gui/interface.cxx:241 -msgid "Nearest (fastest)" -msgstr "" - -#: src/modplug/gui/interface.cxx:248 -msgid "Linear (fast)" -msgstr "" - -#: src/modplug/gui/interface.cxx:255 -msgid "Spline (good quality)" -msgstr "" - -#: src/modplug/gui/interface.cxx:262 -msgid "8-tap Fir (extremely high quality)" -msgstr "" - -#: src/modplug/gui/interface.cxx:286 -#, fuzzy -msgid "96 kHz" -msgstr "44 kHz" - -#: src/modplug/gui/interface.cxx:293 -#, fuzzy -msgid "48 kHz" -msgstr "44 kHz" - -#: src/modplug/gui/interface.cxx:300 -msgid "44 kHz" -msgstr "44 kHz" - -#: src/modplug/gui/interface.cxx:307 -msgid "22 kHz" -msgstr "22 kHz" - -#: src/modplug/gui/interface.cxx:315 -msgid "Sampling Rate" -msgstr "Diskreetimissagedus" - -#: src/modplug/gui/interface.cxx:349 src/modplug/gui/interface.cxx:411 -#: src/modplug/gui/interface.cxx:477 src/modplug/gui/interface.cxx:539 -msgid "Enable" -msgstr "Lubatud" - -#: src/modplug/gui/interface.cxx:378 src/modplug/gui/interface.cxx:506 -msgid "Depth" -msgstr "Sügavus" - -#: src/modplug/gui/interface.cxx:386 src/modplug/gui/interface.cxx:514 -msgid "Delay" -msgstr "Viivitus" - -#: src/modplug/gui/interface.cxx:394 -msgid "Reverb" -msgstr "" - -#: src/modplug/gui/interface.cxx:440 -msgid "Amount" -msgstr "" - -#: src/modplug/gui/interface.cxx:448 -msgid "Range" +"Chris Morgan\n" +"\n" +"Audacious port by\n" +"Giacomo Lozito from develia.org" msgstr "" -#: src/modplug/gui/interface.cxx:456 -msgid "Bass Boost" -msgstr "" +#: src/jack/jack.c:443 +msgid "About JACK Output Plugin 0.17" +msgstr "JACK väljundplugina versioonist 0.17 lähemalt" -#: src/modplug/gui/interface.cxx:522 src/mpg123/mpg123.c:174 -msgid "Surround" +#: src/lyricwiki/lyricwiki.c:226 +msgid "" +"\n" +"Looking for lyrics..." msgstr "" -#: src/modplug/gui/interface.cxx:561 +#: src/lyricwiki/lyricwiki.c:249 msgid "" -"Note: Setting the preamp\n" -"too high may cause clipping\n" -"(annoying clicks and pops)!" +"\n" +"Connecting to lyrics.wikia.com..." msgstr "" -#: src/modplug/gui/interface.cxx:567 -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "Preamp" +#: src/lyricwiki/lyricwiki.c:337 +msgid "" +"\n" +"No lyrics were found." msgstr "" -#: src/modplug/gui/interface.cxx:601 -msgid "Use Filename as Song Title" -msgstr "Failinime kasutatakse pealkirjaks" - -#: src/modplug/gui/interface.cxx:606 -msgid "Fast Playlist Info" -msgstr "Esitusnimekirja andmed kiiresti" - -#: src/modplug/gui/interface.cxx:617 -msgid "Noise Reduction" -msgstr "Müra vähendatakse" - -#: src/modplug/gui/interface.cxx:623 -msgid "Play Amiga MOD" -msgstr "Esitatakse Amiga MOD-e" +#: src/metronom/metronom.c:85 +msgid "About Metronom" +msgstr "Metronoomist lähemalt" -#: src/modplug/gui/interface.cxx:646 -msgid "Don't loop" -msgstr "Ei korrata" +#: src/metronom/metronom.c:86 +msgid "" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +msgstr "" -#: src/modplug/gui/interface.cxx:658 -msgid "Loop" -msgstr "Korratakse" - -#: src/modplug/gui/interface.cxx:671 -msgid "time(s)" -msgstr "kord(a)" - -#: src/modplug/gui/interface.cxx:677 -msgid "Loop forever" -msgstr "Korratakse igavesti" - -#: src/modplug/gui/interface.cxx:684 -msgid "Looping" -msgstr "Kordamine" - -#: src/modplug/gui/interface.cxx:859 -msgid "MOD Info" -msgstr "MOD-i andmed" - -#: src/modplug/gui/interface.cxx:878 -msgid "" -"Filename:\n" -"Title:\n" -"Type:\n" -"Length:\n" -"Speed:\n" -"Tempo:\n" -"Samples:\n" -"Instruments:\n" -"Patterns:\n" -"Channels:" -msgstr "" -"Failinimi:\n" -"Pealkiri:\n" -"Liik:\n" -"Kestus:\n" -"Kiirus:\n" -"Tempo:\n" -"Sämpleid:\n" -"Instrumente:\n" -"Mustreid:\n" -"Kanaleid:" - -#: src/modplug/gui/interface.cxx:883 -msgid "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" -msgstr "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" - -#: src/modplug/gui/interface.cxx:913 -msgid "Samples" -msgstr "Sämplid" - -#: src/modplug/gui/interface.cxx:938 -msgid "Instruments" -msgstr "Instrumendid" - -#: src/modplug/gui/interface.cxx:959 -msgid "Message" -msgstr "Sõnum" - -#: src/modplug/gui/main.cxx:51 -msgid "Modplug Input Plugin for Audacious ver" -msgstr "" - -#: src/modplug/gui/main.cxx:52 -#, fuzzy -msgid "" -"\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." -msgstr "" -"\n" -"Modplug helimootor, autor: Olivier Lapicque.\n" -"Modplug'i XMMS-liidese autor: Kenton Varda.\n" -"Autoriõigused (c) 2000 Olivier Lapicque ja Kenton Varda.\n" -"Uuendused ja hooldus: Konstanty Bialkowski.\n" -"BMP jaoks portinud Theofilos Intzoglou." - -#: src/modplug/gui/main.cxx:55 -msgid "About Modplug" -msgstr "Modplug'ist lähemalt" +#: src/metronom/metronom.c:143 +#, c-format +msgid "Tact generator: %d bpm" +msgstr "Taktigeneraator: %d bpm" -#: src/modplug/gui/support.cxx:90 src/modplug/gui/support.cxx:114 -#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 +#: src/metronom/metronom.c:145 #, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "" +msgid "Tact generator: %d bpm %d/%d" +msgstr "Taktigeneraator: %d bpm %d/%d" -#: src/mtp_up/mtp.c:35 -msgid "Upload selected track(s)" +#: src/mpg123/mpg123.c:183 +msgid "Surround" msgstr "" -#: src/mtp_up/mtp.c:291 +#: src/mtp_up/mtp.c:298 msgid "Upload in progress..." msgstr "" -#: src/mtp_up/mtp.c:300 -msgid "MTP device handler" +#: src/mtp_up/mtp.c:310 +msgid "Upload to MTP Device" msgstr "" -#: src/mtp_up/mtp.c:304 -msgid "Disconnect the device" +#: src/mtp_up/mtp.c:311 +msgid "Disconnect MTP Device" msgstr "" -#: src/null/null.c:63 +#: src/notify/libnotify-aosd_event.c:47 +#, fuzzy +msgid "Stopped" +msgstr "Stereo" + +#: src/notify/libnotify-aosd_event.c:47 +#, fuzzy +msgid "Audacious is not playing." +msgstr "Esitusnimekirja andmed kiiresti" + +#: src/null/null.c:64 msgid "Null output plugin " msgstr "" -#: src/null/null.c:64 +#: src/null/null.c:65 msgid "" " by Christian Birchinger \n" "based on the XMMS plugin by HÃ¥vard KvÃ¥l " msgstr "" -#: src/null/null.c:67 +#: src/null/null.c:68 msgid "About Null Output" msgstr "Nullväljundist lähemalt" -#: src/null/null.c:93 +#: src/null/null.c:94 msgid "Null output preferences" msgstr "Nullväljundi eelistused" -#: src/null/null.c:102 +#: src/null/null.c:105 msgid "Run in real time" msgstr "" @@ -3368,11 +1947,11 @@ msgid "OSS4 Output Plugin Preferences" msgstr "Olekuikooni plugina eelistused" -#: src/oss4/configure.c:163 src/OSS/configure.c:213 src/sun/configure.c:181 +#: src/oss4/configure.c:163 src/OSS/configure.c:203 msgid "Audio device:" msgstr "Audioseade:" -#: src/oss4/configure.c:189 src/OSS/configure.c:235 src/OSS/configure.c:276 +#: src/oss4/configure.c:189 src/OSS/configure.c:226 src/OSS/configure.c:269 msgid "Use alternate device:" msgstr "Kasutatakse alternatiivseadet:" @@ -3384,12 +1963,12 @@ msgid "Enable format conversions made by the OSS software." msgstr "" -#: src/oss4/plugin.c:54 +#: src/oss4/plugin.c:51 #, fuzzy msgid "About OSS4 Plugin" msgstr "ESounD'i pluginast lähemalt" -#: src/oss4/plugin.c:55 +#: src/oss4/plugin.c:52 #, fuzzy msgid "" "OSS4 Output Plugin for Audacious\n" @@ -3432,40 +2011,45 @@ msgid "OSS4 error" msgstr "Viga!" -#: src/OSS/configure.c:148 +#: src/OSS/configure.c:146 #, c-format msgid "Default (%s)" msgstr "Vaikimisi (%s)" -#: src/OSS/configure.c:197 +#: src/OSS/configure.c:162 src/skins/ui_manager.c:456 +#: src/skins/ui_manager.c:477 +msgid "Default" +msgstr "Vaikimisi" + +#: src/OSS/configure.c:187 msgid "OSS Driver configuration" msgstr "OSS draiveri sätted" -#: src/OSS/configure.c:298 src/sun/configure.c:246 +#: src/OSS/configure.c:290 msgid "Devices" msgstr "Seadmed" -#: src/OSS/configure.c:300 src/sun/configure.c:257 +#: src/OSS/configure.c:292 msgid "Buffering:" msgstr "Puhverdamine:" -#: src/OSS/configure.c:313 src/sun/configure.c:288 +#: src/OSS/configure.c:305 msgid "Pre-buffer (percent):" msgstr "Eelpuhver (protsentides):" -#: src/OSS/configure.c:324 src/sun/configure.c:302 +#: src/OSS/configure.c:316 msgid "Buffering" msgstr "Puhverdamine" -#: src/OSS/configure.c:325 +#: src/OSS/configure.c:317 msgid "Mixer Settings:" msgstr "Mikseri sätted" -#: src/OSS/configure.c:331 +#: src/OSS/configure.c:323 msgid "Volume controls Master not PCM" msgstr "" -#: src/OSS/configure.c:337 src/sun/configure.c:392 +#: src/OSS/configure.c:329 msgid "Mixer" msgstr "Mikser" @@ -3508,11 +2092,11 @@ "programmiga; kui ei, siis võtke ühendust Free Software Foundation'iga,\n" "51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." -#: src/pulse_audio/pulse_audio.c:691 +#: src/pulse_audio/pulse_audio.c:687 msgid "About Audacious PulseAudio Output Plugin" msgstr "Audacious'e PulseAudio väljundpluginast lähemalt" -#: src/pulse_audio/pulse_audio.c:692 +#: src/pulse_audio/pulse_audio.c:688 msgid "" "Audacious PulseAudio Output Plugin\n" "\n" @@ -3547,53 +2131,53 @@ "programmiga; kui ei, siis võtke ühendust Free Software Foundation'iga,\n" "51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA." -#: src/resample/plugin.c:78 +#: src/resample/plugin.c:91 #, fuzzy msgid "About Sample Rate Converter Plugin" msgstr "Olekuikooni pluginast lähemalt" -#: src/resample/plugin.c:134 +#: src/resample/plugin.c:146 msgid "Sample Rate Converter Preferences" msgstr "" -#: src/resample/plugin.c:146 +#: src/resample/plugin.c:158 msgid "Rate mappings:" msgstr "" -#: src/resample/plugin.c:169 +#: src/resample/plugin.c:181 msgid "All others:" msgstr "" -#: src/resample/plugin.c:181 +#: src/resample/plugin.c:193 msgid "Method:" msgstr "" -#: src/scrobbler/configure.c:152 src/scrobbler/configure.c:228 +#: src/scrobbler/configure.c:128 src/scrobbler/configure.c:204 #, fuzzy msgid "Change password" msgstr "Vahetatakse esitatavat lugu" -#: src/scrobbler/configure.c:174 +#: src/scrobbler/configure.c:150 msgid "Services" msgstr "Teenused" -#: src/scrobbler/configure.c:196 +#: src/scrobbler/configure.c:172 msgid "Username:" msgstr "Kasutajanimi:" -#: src/scrobbler/configure.c:202 +#: src/scrobbler/configure.c:178 msgid "Password:" msgstr "Parool:" -#: src/scrobbler/configure.c:210 +#: src/scrobbler/configure.c:186 msgid "Scrobbler URL:" msgstr "" -#: src/scrobbler/configure.c:242 +#: src/scrobbler/configure.c:218 msgid "Last.FM" msgstr "Last.FM" -#: src/scrobbler/configure.c:287 +#: src/scrobbler/configure.c:262 msgid "Scrobbler" msgstr "" @@ -3609,16 +2193,34 @@ msgid "About Scrobbler Plugin" msgstr "" +#: src/sdlout/plugin.c:58 +#, fuzzy +msgid "About SDL Output Plugin" +msgstr "JACK väljundplugina versioonist 0.17 lähemalt" + +#: src/sdlout/plugin.c:78 +#, fuzzy +msgid "SDL error" +msgstr "Viga!" + #: src/sid/xs_about.c:84 #, c-format msgid "About %s" msgstr "\"%s\" pluginast lähemalt" -#: src/sid/xs_config.c:322 +#: src/sid/xs_about.c:214 src/sid/xs_interface.c:1825 +msgid "Close" +msgstr "Sulge" + +#: src/sid/xs_config.c:326 #, fuzzy msgid " Error" msgstr "Viga!" +#: src/sid/xs_config.c:326 +msgid "OK" +msgstr "Olgu" + #: src/sid/xs_fileinfo.c:151 msgid "General info" msgstr "Ãœldandmed" @@ -3628,6 +2230,11 @@ msgid "Tune #%i: " msgstr "" +#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 +#, c-format +msgid "Couldn't find pixmap file: %s" +msgstr "" + #: src/sid/xs_interface.c:234 msgid "Audacious-SID configuration" msgstr "" @@ -3902,15 +2509,15 @@ msgid "Use" msgstr "" -#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:430 +#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:447 msgid "Save" msgstr "" -#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:429 +#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:446 msgid "Import" msgstr "" -#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:431 +#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:448 msgid "Delete" msgstr "" @@ -3941,6 +2548,11 @@ msgid "Playtime:" msgstr "" +#: src/sid/xs_interface.c:921 src/sid/xs_interface.c:975 +#: src/sid/xs_interface.c:1155 +msgid "seconds" +msgstr "sekundit" + #: src/sid/xs_interface.c:928 msgid "Minimum playtime:" msgstr "" @@ -4031,10 +2643,6 @@ msgid "Song title format:" msgstr "" -#: src/sid/xs_interface.c:1103 -msgid "Title" -msgstr "Pealkiri" - #: src/sid/xs_interface.c:1125 msgid "Add sub-tunes to playlist" msgstr "" @@ -4176,704 +2784,874 @@ msgid "No" msgstr "" -#: src/skins/plugin.c:179 +#: src/skins/plugin.c:167 msgid "About Skinned GUI" msgstr "" -#: src/skins/plugin.c:180 +#: src/skins/plugin.c:168 msgid "" "Copyright (c) 2008, by Tomasz MoÅ„ \n" "\n" msgstr "" -#: src/skins/plugin.c:196 -msgid "Skinned Interface" -msgstr "" - -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:254 #, fuzzy msgid "_Player:" msgstr "Esitamine" -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:254 msgid "Select main player window font:" msgstr "" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:255 #, fuzzy msgid "_Playlist:" msgstr "Esitusnimekirja valimine" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:255 #, fuzzy msgid "Select playlist font:" msgstr "Esitusnimekirja valimine" -#: src/skins/skins_cfg.c:321 +#: src/skins/skins_cfg.c:259 #, fuzzy msgid "_Fonts" msgstr "Failinimi: " -#: src/skins/skins_cfg.c:323 -#, fuzzy -msgid "Use Bitmap fonts if available" -msgstr "Võimaluse korral kasutatakse CDDB-d" - -#: src/skins/skins_cfg.c:323 -msgid "" -"Use bitmap fonts if they are available. Bitmap fonts do not support Unicode " -"strings." -msgstr "" - -#: src/skins/skins_cfg.c:324 -#, fuzzy -msgid "_Miscellaneous" -msgstr "Teenused" - -#: src/skins/skins_cfg.c:325 -msgid "Show separators in playlist" +#: src/skins/skins_cfg.c:261 +msgid "Use bitmap fonts (supports ASCII only)" msgstr "" -#: src/skins/skins_cfg.c:327 -msgid "Show window manager decoration" +#: src/skins/skins_cfg.c:263 +msgid "Scroll song title in both directions" msgstr "" -#: src/skins/skins_cfg.c:328 -msgid "This enables the window manager to show decorations for windows." -msgstr "" - -#: src/skins/skins_cfg.c:329 -msgid "Use two-way text scroller" -msgstr "" +#: src/skins/skins_cfg.c:346 +#, fuzzy +msgid "_Skin" +msgstr "Failinimi: " -#: src/skins/skins_cfg.c:330 -msgid "" -"If selected, the file information text in the main window will scroll back " -"and forth. If not selected, the text will only scroll in one direction." +#: src/skins/skins_cfg.c:393 +msgid "Interface Preferences" msgstr "" -#: src/skins/skins_cfg.c:331 -msgid "Disable inline gtk theme" +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" msgstr "" -#: src/skins/skins_cfg.c:333 -msgid "Random skin on play" +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" msgstr "" -#: src/skins/skins_cfg.c:334 -msgid "Allow loading incomplete skins" +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" msgstr "" -#: src/skins/skins_cfg.c:335 -msgid "" -"If selected, audacious won't refuse loading broken skins. Use only if your " -"favourite skin doesn't work" +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" msgstr "" -#: src/skins/skins_cfg.c:401 -msgid "Color Adjustment" -msgstr "" +#: src/skins/ui_equalizer.c:335 +#, fuzzy +msgid "250 Hz" +msgstr "22050 Hz " -#: src/skins/skins_cfg.c:407 -msgid "" -"Audacious allows you to alter the color balance of the skinned UI. The " -"sliders below will allow you to do this." -msgstr "" +#: src/skins/ui_equalizer.c:335 +#, fuzzy +msgid "500 Hz" +msgstr "11000 Hz" -#: src/skins/skins_cfg.c:417 +#: src/skins/ui_equalizer.c:335 #, fuzzy -msgid "Blue" -msgstr "Valjus" +msgid "1 kHz" +msgstr "11 kHz" -#: src/skins/skins_cfg.c:424 -msgid "Green" -msgstr "" +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "2 kHz" +msgstr "22 kHz" -#: src/skins/skins_cfg.c:431 -msgid "Red" -msgstr "" +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "4 kHz" +msgstr "44 kHz" -#: src/skins/skins_cfg.c:569 +#: src/skins/ui_equalizer.c:336 #, fuzzy -msgid "_Skin" -msgstr "Failinimi: " +msgid "8 kHz" +msgstr "44 kHz" -#: src/skins/skins_cfg.c:574 -msgid "Color adjustment ..." -msgstr "" +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "16 kHz" +msgstr "44 kHz" -#: src/skins/ui_equalizer.c:463 +#: src/skins/ui_equalizer.c:378 msgid "Audacious Equalizer" msgstr "" -#: src/skins/ui_equalizer.c:991 +#: src/skins/ui_equalizer.c:884 msgid "Presets" msgstr "" -#: src/skins/ui_main.c:593 +#: src/skins/ui_main.c:444 msgid "kbps" msgstr "" -#: src/skins/ui_main.c:601 +#: src/skins/ui_main.c:452 #, fuzzy msgid "kHz" msgstr "Hz" -#: src/skins/ui_main.c:608 +#: src/skins/ui_main.c:459 #, fuzzy msgid "surround" msgstr "Surround-kaja" -#: src/skins/ui_main.c:981 -msgid "Audacious - visibility warning" -msgstr "" - -#: src/skins/ui_main.c:984 -msgid "Show main player window" -msgstr "" - -#: src/skins/ui_main.c:985 -msgid "Ignore" -msgstr "" - -#: src/skins/ui_main.c:991 -msgid "" -"Audacious has been started with all of its windows hidden.\n" -"You may want to show the player window again to control Audacious; " -"otherwise, you'll have to control it remotely via audtool or enabled plugins " -"(such as the statusicon plugin)." -msgstr "" - -#: src/skins/ui_main.c:997 -msgid "Always ignore, show/hide is controlled remotely" -msgstr "" - -#: src/skins/ui_main.c:1042 -msgid "Audacious - broken GTK engine usage warning" -msgstr "" - -#: src/skins/ui_main.c:1050 -#, c-format -msgid "" -"Broken GTK engine in use\n" -"\n" -"Audacious has detected that you are using a broken GTK engine.\n" -"\n" -"The theme engine you are using, %s, is incompatible with some of the " -"features used by modern skins. The incompatible features have been disabled " -"for this session.\n" -"\n" -"To use these features, please consider using a different GTK theme engine." -msgstr "" - -#: src/skins/ui_main.c:1061 -msgid "Do not display this warning again" -msgstr "" - -#: src/skins/ui_main.c:1269 +#: src/skins/ui_main.c:807 #, c-format -msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)" +msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "" -#: src/skins/ui_main.c:1299 +#: src/skins/ui_main.c:828 #, fuzzy, c-format msgid "Volume: %d%%" msgstr "Valjus: (%)" -#: src/skins/ui_main.c:1322 +#: src/skins/ui_main.c:851 #, c-format msgid "Balance: %d%% left" msgstr "" -#: src/skins/ui_main.c:1324 +#: src/skins/ui_main.c:853 msgid "Balance: center" msgstr "" -#: src/skins/ui_main.c:1326 +#: src/skins/ui_main.c:855 #, c-format msgid "Balance: %d%% right" msgstr "" -#: src/skins/ui_main.c:1618 +#: src/skins/ui_main.c:981 #, fuzzy msgid "Options Menu" msgstr "Valikud" -#: src/skins/ui_main.c:1622 +#: src/skins/ui_main.c:985 msgid "Disable 'Always On Top'" msgstr "" -#: src/skins/ui_main.c:1624 +#: src/skins/ui_main.c:987 msgid "Enable 'Always On Top'" msgstr "" -#: src/skins/ui_main.c:1627 +#: src/skins/ui_main.c:990 #, fuzzy msgid "File Info Box" msgstr "Faili andmed" -#: src/skins/ui_main.c:1631 -msgid "Disable 'GUI Scaling'" -msgstr "" - -#: src/skins/ui_main.c:1633 -msgid "Enable 'GUI Scaling'" -msgstr "" - -#: src/skins/ui_main.c:1636 +#: src/skins/ui_main.c:995 msgid "Visualization Menu" msgstr "" -#: src/skins/ui_main.c:2348 +#: src/skins/ui_main.c:1645 msgid "Single mode." msgstr "" -#: src/skins/ui_main.c:2350 +#: src/skins/ui_main.c:1647 #, fuzzy msgid "Playlist mode." msgstr "Esitusnimekirja valimine" -#: src/skins/ui_main.c:2374 +#: src/skins/ui_main.c:1669 msgid "Stopping after song." msgstr "" -#: src/skins/ui_main.c:2376 +#: src/skins/ui_main.c:1671 msgid "Not stopping after song." msgstr "" -#: src/skins/ui_manager.c:50 src/skins/ui_manager.c:51 +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 msgid "Autoscroll Songname" msgstr "" -#: src/skins/ui_manager.c:56 src/skins/ui_manager.c:57 +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 msgid "Peaks" msgstr "" -#: src/skins/ui_manager.c:68 src/skins/ui_manager.c:69 +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 msgid "Show Player" msgstr "" -#: src/skins/ui_manager.c:71 src/skins/ui_manager.c:72 +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 msgid "Show Playlist Editor" msgstr "" -#: src/skins/ui_manager.c:74 src/skins/ui_manager.c:75 +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 msgid "Show Equalizer" msgstr "" -#: src/skins/ui_manager.c:77 src/skins/ui_manager.c:78 +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 msgid "Always on Top" msgstr "" -#: src/skins/ui_manager.c:80 src/skins/ui_manager.c:81 +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 msgid "Put on All Workspaces" msgstr "" -#: src/skins/ui_manager.c:83 src/skins/ui_manager.c:84 +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 msgid "Roll up Player" msgstr "" -#: src/skins/ui_manager.c:86 src/skins/ui_manager.c:87 +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 msgid "Roll up Playlist Editor" msgstr "" -#: src/skins/ui_manager.c:89 src/skins/ui_manager.c:90 +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 msgid "Roll up Equalizer" msgstr "" -#: src/skins/ui_manager.c:92 src/sndstretch/sndstretch_xmms.c:393 -msgid "Scale" -msgstr "" - -#: src/skins/ui_manager.c:93 -msgid "DoubleSize" -msgstr "" - -#: src/skins/ui_manager.c:95 src/skins/ui_manager.c:96 -msgid "Easy Move" -msgstr "" - -#: src/skins/ui_manager.c:104 +#: src/skins/ui_manager.c:115 msgid "Analyzer" msgstr "" -#: src/skins/ui_manager.c:105 +#: src/skins/ui_manager.c:116 #, fuzzy msgid "Scope" msgstr "Stereo" -#: src/skins/ui_manager.c:106 +#: src/skins/ui_manager.c:117 msgid "Voiceprint" msgstr "" -#: src/skins/ui_manager.c:107 +#: src/skins/ui_manager.c:118 msgid "Off" msgstr "" -#: src/skins/ui_manager.c:111 src/skins/ui_manager.c:128 -#: src/skins/ui_manager.c:134 +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 #, fuzzy msgid "Normal" msgstr "Vorming" -#: src/skins/ui_manager.c:112 src/skins/ui_manager.c:129 +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 msgid "Fire" msgstr "" -#: src/skins/ui_manager.c:113 +#: src/skins/ui_manager.c:124 msgid "Vertical Lines" msgstr "" -#: src/skins/ui_manager.c:117 +#: src/skins/ui_manager.c:128 #, fuzzy msgid "Lines" msgstr "minutit" -#: src/skins/ui_manager.c:118 +#: src/skins/ui_manager.c:129 msgid "Bars" msgstr "" -#: src/skins/ui_manager.c:122 +#: src/skins/ui_manager.c:133 #, fuzzy msgid "Dot Scope" msgstr "Ei korrata" -#: src/skins/ui_manager.c:123 +#: src/skins/ui_manager.c:134 msgid "Line Scope" msgstr "" -#: src/skins/ui_manager.c:124 +#: src/skins/ui_manager.c:135 msgid "Solid Scope" msgstr "" -#: src/skins/ui_manager.c:130 +#: src/skins/ui_manager.c:141 msgid "Ice" msgstr "" -#: src/skins/ui_manager.c:135 +#: src/skins/ui_manager.c:146 msgid "Smooth" msgstr "" -#: src/skins/ui_manager.c:139 src/skins/ui_manager.c:147 +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 msgid "Slowest" msgstr "" -#: src/skins/ui_manager.c:140 src/skins/ui_manager.c:148 +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 #, fuzzy msgid "Slow" msgstr "Vari" -#: src/skins/ui_manager.c:141 src/skins/ui_manager.c:149 +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 msgid "Medium" msgstr "" -#: src/skins/ui_manager.c:142 src/skins/ui_manager.c:150 +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 #, fuzzy msgid "Fast" msgstr "Vorming" -#: src/skins/ui_manager.c:143 src/skins/ui_manager.c:151 +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 msgid "Fastest" msgstr "" -#: src/skins/ui_manager.c:155 +#: src/skins/ui_manager.c:166 msgid "Time Elapsed" msgstr "" -#: src/skins/ui_manager.c:156 +#: src/skins/ui_manager.c:167 msgid "Time Remaining" msgstr "" -#: src/skins/ui_manager.c:185 +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +#, fuzzy +msgid "Pause" +msgstr "Pausimine" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +#, fuzzy +msgid "Next" +msgstr "Tekst" + +#: src/skins/ui_manager.c:196 msgid "Visualization" msgstr "" -#: src/skins/ui_manager.c:186 +#: src/skins/ui_manager.c:197 msgid "Visualization Mode" msgstr "" -#: src/skins/ui_manager.c:187 +#: src/skins/ui_manager.c:198 msgid "Analyzer Mode" msgstr "" -#: src/skins/ui_manager.c:188 +#: src/skins/ui_manager.c:199 msgid "Scope Mode" msgstr "" -#: src/skins/ui_manager.c:189 +#: src/skins/ui_manager.c:200 msgid "Voiceprint Mode" msgstr "" -#: src/skins/ui_manager.c:190 +#: src/skins/ui_manager.c:201 msgid "WindowShade VU Mode" msgstr "" -#: src/skins/ui_manager.c:191 +#: src/skins/ui_manager.c:202 msgid "Analyzer Falloff" msgstr "" -#: src/skins/ui_manager.c:192 +#: src/skins/ui_manager.c:203 msgid "Peaks Falloff" msgstr "" -#: src/skins/ui_manager.c:202 src/skins/ui_manager.c:203 -#, fuzzy -msgid "Select Next Playlist" -msgstr "Esitusnimekirja valimine" - -#: src/skins/ui_manager.c:205 src/skins/ui_manager.c:206 -#, fuzzy -msgid "Select Previous Playlist" -msgstr "Esitusnimekirja valimine" +#: src/skins/ui_manager.c:208 +#, fuzzy +msgid "Playlist" +msgstr "Esitusnimekirja valimine" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +#, fuzzy +msgid "New Playlist" +msgstr "Esitusnimekirja valimine" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 +#, fuzzy +msgid "Select Next Playlist" +msgstr "Esitusnimekirja valimine" + +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 +#, fuzzy +msgid "Select Previous Playlist" +msgstr "Esitusnimekirja valimine" + +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +#, fuzzy +msgid "Delete Playlist" +msgstr "Esitusnimekirja valimine" + +#: src/skins/ui_manager.c:222 +#, fuzzy +msgid "Import Playlist" +msgstr "Esitusnimekirja andmed kiiresti" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "" + +#: src/skins/ui_manager.c:226 +#, fuzzy +msgid "Export Playlist" +msgstr "Esitusnimekirja andmed kiiresti" + +#: src/skins/ui_manager.c:227 +#, fuzzy +msgid "Saves the selected playlist." +msgstr "Esitusnimekirja valimine" + +#: src/skins/ui_manager.c:229 +#, fuzzy +msgid "Save All Playlists" +msgstr "Esitusnimekirja valimine" + +#: src/skins/ui_manager.c:230 +msgid "" +"Saves all the playlists that are open. Note that this is done automatically " +"when Audacious quits." +msgstr "" + +#: src/skins/ui_manager.c:234 +msgid "Refresh List" +msgstr "" + +#: src/skins/ui_manager.c:235 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "" + +#: src/skins/ui_manager.c:238 +msgid "List Manager" +msgstr "" + +#: src/skins/ui_manager.c:239 +msgid "Opens the playlist manager." +msgstr "" + +#: src/skins/ui_manager.c:243 +msgid "View" +msgstr "" -#: src/skins/ui_manager.c:222 -msgid "Refresh List" +#: src/skins/ui_manager.c:244 +msgid "Interface" msgstr "" -#: src/skins/ui_manager.c:226 -msgid "List Manager" +#: src/skins/ui_manager.c:245 +msgid "Interface Preferences ..." msgstr "" -#: src/skins/ui_manager.c:236 +#: src/skins/ui_manager.c:249 msgid "Add Internet Address..." msgstr "" -#: src/skins/ui_manager.c:240 +#: src/skins/ui_manager.c:250 +msgid "Adds a remote track to the playlist." +msgstr "" + +#: src/skins/ui_manager.c:253 msgid "Add Files..." msgstr "" -#: src/skins/ui_manager.c:246 +#: src/skins/ui_manager.c:254 +msgid "Adds files to the playlist." +msgstr "" + +#: src/skins/ui_manager.c:259 msgid "Search and Select" msgstr "" -#: src/skins/ui_manager.c:247 +#: src/skins/ui_manager.c:260 msgid "" "Searches the playlist and selects playlist entries based on specific " "criteria." msgstr "" -#: src/skins/ui_manager.c:250 +#: src/skins/ui_manager.c:263 #, fuzzy msgid "Invert Selection" msgstr "Vormingute valimine" -#: src/skins/ui_manager.c:251 +#: src/skins/ui_manager.c:264 msgid "Inverts the selected and unselected entries." msgstr "" +#: src/skins/ui_manager.c:267 +#, fuzzy +msgid "Select All" +msgstr "Esitusnimekirja valimine" + #: src/skins/ui_manager.c:268 +msgid "Selects all of the playlist entries." +msgstr "" + +#: src/skins/ui_manager.c:271 +#, fuzzy +msgid "Select None" +msgstr "Loo lõpp tuvastatakse" + +#: src/skins/ui_manager.c:272 +msgid "Deselects all of the playlist entries." +msgstr "" + +#: src/skins/ui_manager.c:277 +#, fuzzy +msgid "Remove All" +msgstr "Eemalda" + +#: src/skins/ui_manager.c:278 +msgid "Removes all entries from the playlist." +msgstr "" + +#: src/skins/ui_manager.c:281 msgid "Clear Queue" msgstr "" -#: src/skins/ui_manager.c:269 +#: src/skins/ui_manager.c:282 msgid "Clears the queue associated with this playlist." msgstr "" -#: src/skins/ui_manager.c:272 +#: src/skins/ui_manager.c:285 msgid "Remove Unavailable Files" msgstr "" -#: src/skins/ui_manager.c:273 +#: src/skins/ui_manager.c:286 msgid "Removes unavailable files from the playlist." msgstr "" -#: src/skins/ui_manager.c:276 +#: src/skins/ui_manager.c:289 msgid "Remove Duplicates" msgstr "" -#: src/skins/ui_manager.c:279 +#: src/skins/ui_manager.c:291 src/skins/ui_manager.c:323 +#: src/skins/ui_manager.c:353 +#, fuzzy +msgid "By Title" +msgstr "Pealkiri" + +#: src/skins/ui_manager.c:292 msgid "Removes duplicate entries from the playlist by title." msgstr "" -#: src/skins/ui_manager.c:282 src/skins/ui_manager.c:318 -#: src/skins/ui_manager.c:348 +#: src/skins/ui_manager.c:295 src/skins/ui_manager.c:335 +#: src/skins/ui_manager.c:365 #, fuzzy msgid "By Filename" msgstr "Failinimi" -#: src/skins/ui_manager.c:283 +#: src/skins/ui_manager.c:296 msgid "Removes duplicate entries from the playlist by filename." msgstr "" -#: src/skins/ui_manager.c:286 src/skins/ui_manager.c:322 -#: src/skins/ui_manager.c:352 +#: src/skins/ui_manager.c:299 src/skins/ui_manager.c:339 +#: src/skins/ui_manager.c:369 #, fuzzy msgid "By Path + Filename" msgstr "Failinimi" -#: src/skins/ui_manager.c:287 +#: src/skins/ui_manager.c:300 msgid "Removes duplicate entries from the playlist by their full path." msgstr "" -#: src/skins/ui_manager.c:300 +#: src/skins/ui_manager.c:303 +msgid "Remove Unselected" +msgstr "" + +#: src/skins/ui_manager.c:304 +msgid "Remove unselected entries from the playlist." +msgstr "" + +#: src/skins/ui_manager.c:307 +msgid "Remove Selected" +msgstr "" + +#: src/skins/ui_manager.c:308 +msgid "Remove selected entries from the playlist." +msgstr "" + +#: src/skins/ui_manager.c:313 +msgid "Randomize List" +msgstr "" + +#: src/skins/ui_manager.c:314 +#, fuzzy +msgid "Randomizes the playlist." +msgstr "Esitusnimekirja valimine" + +#: src/skins/ui_manager.c:317 msgid "Reverse List" msgstr "" -#: src/skins/ui_manager.c:301 +#: src/skins/ui_manager.c:318 msgid "Reverses the playlist." msgstr "" -#: src/skins/ui_manager.c:304 +#: src/skins/ui_manager.c:321 #, fuzzy msgid "Sort List" msgstr "Esitaja:" -#: src/skins/ui_manager.c:307 src/skins/ui_manager.c:337 +#: src/skins/ui_manager.c:324 src/skins/ui_manager.c:354 msgid "Sorts the list by title." msgstr "" -#: src/skins/ui_manager.c:311 src/skins/ui_manager.c:341 +#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +#, fuzzy +msgid "By Album" +msgstr "Album:" + +#: src/skins/ui_manager.c:328 src/skins/ui_manager.c:358 msgid "Sorts the list by album." msgstr "" -#: src/skins/ui_manager.c:315 src/skins/ui_manager.c:345 +#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +#, fuzzy +msgid "By Artist" +msgstr "Esitaja:" + +#: src/skins/ui_manager.c:332 src/skins/ui_manager.c:362 msgid "Sorts the list by artist." msgstr "" -#: src/skins/ui_manager.c:319 src/skins/ui_manager.c:349 +#: src/skins/ui_manager.c:336 src/skins/ui_manager.c:366 msgid "Sorts the list by filename." msgstr "" -#: src/skins/ui_manager.c:323 src/skins/ui_manager.c:353 +#: src/skins/ui_manager.c:340 src/skins/ui_manager.c:370 msgid "Sorts the list by full pathname." msgstr "" -#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +#: src/skins/ui_manager.c:343 src/skins/ui_manager.c:373 #, fuzzy msgid "By Date" msgstr "Kuupäev:" -#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +#: src/skins/ui_manager.c:344 src/skins/ui_manager.c:374 msgid "Sorts the list by modification time." msgstr "" -#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +#: src/skins/ui_manager.c:347 src/skins/ui_manager.c:377 +#, fuzzy +msgid "By Track Number" +msgstr "Loo number:" + +#: src/skins/ui_manager.c:348 src/skins/ui_manager.c:378 msgid "Sorts the list by track number." msgstr "" -#: src/skins/ui_manager.c:334 +#: src/skins/ui_manager.c:351 #, fuzzy msgid "Sort Selected" msgstr "Vormingute valimine" -#: src/skins/ui_manager.c:373 +#: src/skins/ui_manager.c:387 +#, fuzzy +msgid "File" +msgstr "Failinimi" + +#: src/skins/ui_manager.c:388 +msgid "Help" +msgstr "Abi" + +#: src/skins/ui_manager.c:390 msgid "Plugin Services" msgstr "" -#: src/skins/ui_manager.c:384 +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:395 +msgid "View Track Details" +msgstr "" + +#: src/skins/ui_manager.c:393 src/skins/ui_manager.c:396 +msgid "View track details" +msgstr "" + +#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 +#, fuzzy +msgid "About Audacious" +msgstr "Audacious'e LIRC pluginast lähemalt" + +#: src/skins/ui_manager.c:401 #, fuzzy msgid "Play File" msgstr "Esitamine" -#: src/skins/ui_manager.c:387 +#: src/skins/ui_manager.c:402 +msgid "Load and play a file" +msgstr "" + +#: src/skins/ui_manager.c:404 #, fuzzy msgid "Play Location" msgstr "Esitusnimekiri (valikuline)" -#: src/skins/ui_manager.c:428 +#: src/skins/ui_manager.c:405 +msgid "Play media from the selected location" +msgstr "" + +#: src/skins/ui_manager.c:407 +msgid "Plugin services" +msgstr "" + +#: src/skins/ui_manager.c:409 +msgid "Preferences" +msgstr "" + +#: src/skins/ui_manager.c:410 +msgid "Open preferences window" +msgstr "" + +#: src/skins/ui_manager.c:413 +#, fuzzy +msgid "Quit Audacious" +msgstr "%s - Audacious" + +#: src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Set A-B" +msgstr "" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Clear A-B" +msgstr "" + +#: src/skins/ui_manager.c:421 src/skins/ui_manager.c:422 +msgid "Jump to Playlist Start" +msgstr "" + +#: src/skins/ui_manager.c:427 src/skins/ui_manager.c:428 +msgid "Jump to Time" +msgstr "" + +#: src/skins/ui_manager.c:430 +msgid "Queue Toggle" +msgstr "" + +#: src/skins/ui_manager.c:431 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "" + +#: src/skins/ui_manager.c:434 +msgid "Copy" +msgstr "" + +#: src/skins/ui_manager.c:436 +#, fuzzy +msgid "Cut" +msgstr "Praegune" + +#: src/skins/ui_manager.c:438 +msgid "Paste" +msgstr "" + +#: src/skins/ui_manager.c:445 msgid "Load" msgstr "" -#: src/skins/ui_manager.c:433 src/skins/ui_manager.c:454 -#: src/skins/ui_manager.c:469 +#: src/skins/ui_manager.c:450 src/skins/ui_manager.c:471 +#: src/skins/ui_manager.c:486 #, fuzzy msgid "Preset" msgstr "Proovi" -#: src/skins/ui_manager.c:434 +#: src/skins/ui_manager.c:451 msgid "Load preset" msgstr "" -#: src/skins/ui_manager.c:436 src/skins/ui_manager.c:457 -#: src/skins/ui_manager.c:472 +#: src/skins/ui_manager.c:453 src/skins/ui_manager.c:474 +#: src/skins/ui_manager.c:489 msgid "Auto-load preset" msgstr "" -#: src/skins/ui_manager.c:437 +#: src/skins/ui_manager.c:454 msgid "Load auto-load preset" msgstr "" -#: src/skins/ui_manager.c:440 +#: src/skins/ui_manager.c:457 #, fuzzy msgid "Load default preset into equalizer" msgstr "Laadi vaikeväärtused" -#: src/skins/ui_manager.c:442 +#: src/skins/ui_manager.c:459 #, fuzzy msgid "Zero" msgstr "Stereo" -#: src/skins/ui_manager.c:443 +#: src/skins/ui_manager.c:460 msgid "Set equalizer preset levels to zero" msgstr "" -#: src/skins/ui_manager.c:445 +#: src/skins/ui_manager.c:462 msgid "From file" msgstr "" -#: src/skins/ui_manager.c:446 +#: src/skins/ui_manager.c:463 msgid "Load preset from file" msgstr "" -#: src/skins/ui_manager.c:448 +#: src/skins/ui_manager.c:465 msgid "From WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:449 +#: src/skins/ui_manager.c:466 msgid "Load preset from WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:451 +#: src/skins/ui_manager.c:468 msgid "WinAMP Presets" msgstr "" -#: src/skins/ui_manager.c:452 +#: src/skins/ui_manager.c:469 msgid "Import WinAMP presets" msgstr "" -#: src/skins/ui_manager.c:455 +#: src/skins/ui_manager.c:472 msgid "Save preset" msgstr "" -#: src/skins/ui_manager.c:458 +#: src/skins/ui_manager.c:475 msgid "Save auto-load preset" msgstr "" -#: src/skins/ui_manager.c:461 +#: src/skins/ui_manager.c:478 #, fuzzy msgid "Save default preset" msgstr "Laadi vaikeväärtused" -#: src/skins/ui_manager.c:463 +#: src/skins/ui_manager.c:480 #, fuzzy msgid "To file" msgstr "Pealkiri" -#: src/skins/ui_manager.c:464 +#: src/skins/ui_manager.c:481 msgid "Save preset to file" msgstr "" -#: src/skins/ui_manager.c:466 +#: src/skins/ui_manager.c:483 msgid "To WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:467 +#: src/skins/ui_manager.c:484 msgid "Save preset to WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:470 +#: src/skins/ui_manager.c:487 msgid "Delete preset" msgstr "" -#: src/skins/ui_manager.c:473 +#: src/skins/ui_manager.c:490 msgid "Delete auto-load preset" msgstr "" -#: src/skins/ui_playlist.c:374 +#: src/skins/ui_playlist.c:244 msgid "Search entries in active playlist" msgstr "" -#: src/skins/ui_playlist.c:382 +#: src/skins/ui_playlist.c:252 msgid "" "Select entries in playlist by filling one or more fields. Fields use regular " "expressions syntax, case-insensitive. If you don't know how regular " @@ -4881,128 +3659,66 @@ "for." msgstr "" -#: src/skins/ui_playlist.c:397 +#: src/skins/ui_playlist.c:260 +msgid "Title: " +msgstr "Pealkiri: " + +#: src/skins/ui_playlist.c:267 #, fuzzy msgid "Album: " msgstr "Album:" -#: src/skins/ui_playlist.c:404 +#: src/skins/ui_playlist.c:274 #, fuzzy msgid "Artist: " msgstr "Esitaja:" -#: src/skins/ui_playlist.c:411 +#: src/skins/ui_playlist.c:281 #, fuzzy msgid "Filename: " msgstr "Failinimi:" -#: src/skins/ui_playlist.c:419 +#: src/skins/ui_playlist.c:289 msgid "Clear previous selection before searching" msgstr "" -#: src/skins/ui_playlist.c:422 +#: src/skins/ui_playlist.c:292 msgid "Automatically toggle queue for matching entries" msgstr "" -#: src/skins/ui_playlist.c:425 +#: src/skins/ui_playlist.c:295 msgid "Create a new playlist with matching entries" msgstr "" -#: src/skins/ui_playlist.c:772 -#, fuzzy -msgid "Save as Static Playlist" -msgstr "Esitusnimekirja valimine" - -#: src/skins/ui_playlist.c:779 -msgid "Use Relative Path" -msgstr "" - -#: src/skins/ui_playlist.c:802 -#, fuzzy -msgid "Load Playlist" -msgstr "Esitusnimekirja andmed kiiresti" - -#: src/skins/ui_playlist.c:815 -#, fuzzy -msgid "Save Playlist" -msgstr "Esitusnimekirja valimine" - -#: src/skins/ui_playlist.c:1146 +#: src/skins/ui_playlist.c:762 #, fuzzy msgid "Audacious Playlist Editor" msgstr "Esitusnimekirja andmed kiiresti" -#: src/skins/ui_playlist.c:1206 +#: src/skins/ui_playlist.c:809 #, c-format msgid "%s (%d of %d)" msgstr "" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "31 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "63 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "125 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "250 Hz" -msgstr "22050 Hz " - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "500 Hz" -msgstr "11000 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "1 kHz" -msgstr "11 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "2 kHz" -msgstr "22 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "4 kHz" -msgstr "44 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "8 kHz" -msgstr "44 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "16 kHz" -msgstr "44 kHz" - -#: src/skins/ui_skinselector.c:179 +#: src/skins/ui_skinselector.c:162 msgid "Archived Winamp 2.x skin" msgstr "" -#: src/skins/ui_skinselector.c:184 +#: src/skins/ui_skinselector.c:167 msgid "Unarchived Winamp 2.x skin" msgstr "" -#: src/skins/util.c:834 +#: src/skins/util.c:773 #, c-format msgid "Could not create directory (%s): %s\n" msgstr "" -#: src/sndfile/plugin.c:531 +#: src/sndfile/plugin.c:438 #, fuzzy msgid "About sndfile plugin" msgstr "ESounD'i pluginast lähemalt" -#: src/sndfile/plugin.c:532 +#: src/sndfile/plugin.c:439 msgid "" "Adapted for Audacious usage by Tony Vroon \n" "from the xmms_sndfile plugin which is:\n" @@ -5025,53 +3741,61 @@ "Boston, MA 02110-1301 USA" msgstr "" -#: src/sndstretch/sndstretch_xmms.c:175 +#: src/sndstretch/sndstretch_xmms.c:155 msgid "About SndStretch" msgstr "" -#: src/sndstretch/sndstretch_xmms.c:336 +#: src/sndstretch/sndstretch_xmms.c:313 msgid "Volume corr." msgstr "" -#: src/sndstretch/sndstretch_xmms.c:337 +#: src/sndstretch/sndstretch_xmms.c:314 msgid "Short Overlap" msgstr "" -#: src/sndstretch/sndstretch_xmms.c:391 +#: src/sndstretch/sndstretch_xmms.c:360 msgid "Speed" msgstr "Kiirus" -#: src/sndstretch/sndstretch_xmms.c:392 +#: src/sndstretch/sndstretch_xmms.c:361 msgid "Pitch" msgstr "" -#: src/sndstretch/sndstretch_xmms.c:413 +#: src/sndstretch/sndstretch_xmms.c:362 +msgid "Scale" +msgstr "" + +#: src/sndstretch/sndstretch_xmms.c:363 +msgid "Options" +msgstr "Valikud" + +#: src/sndstretch/sndstretch_xmms.c:382 msgid "SndStretch - Configuration" msgstr "" -#: src/song_change/song_change.c:397 +#: src/song_change/song_change.c:464 msgid "Command to run when Audacious starts a new song." msgstr "" -#: src/song_change/song_change.c:398 src/song_change/song_change.c:402 -#: src/song_change/song_change.c:406 src/song_change/song_change.c:410 +#: src/song_change/song_change.c:465 src/song_change/song_change.c:469 +#: src/song_change/song_change.c:473 src/song_change/song_change.c:477 msgid "Command:" msgstr "" -#: src/song_change/song_change.c:401 +#: src/song_change/song_change.c:468 msgid "Command to run toward the end of a song." msgstr "" -#: src/song_change/song_change.c:405 +#: src/song_change/song_change.c:472 msgid "Command to run when Audacious reaches the end of the playlist." msgstr "" -#: src/song_change/song_change.c:409 +#: src/song_change/song_change.c:476 msgid "" "Command to run when title changes for a song (i.e. network streams titles)." msgstr "" -#: src/song_change/song_change.c:413 +#: src/song_change/song_change.c:480 msgid "" "You can use the following format strings which\n" "will be substituted before calling the command\n" @@ -5084,33 +3808,32 @@ "%n or %s: Song name\n" "%r: Rate (in bits per second)\n" "%t: Playlist position (%02d)\n" -"%p: Currently playing (1 or 0)" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" msgstr "" -#: src/song_change/song_change.c:437 +#: src/song_change/song_change.c:507 msgid "" "Parameters passed to the shell should be encapsulated in " "quotes. Doing otherwise is a security risk." msgstr "" -#: src/song_change/song_change.c:448 +#: src/song_change/song_change.c:518 msgid "Commands" msgstr "" -#: src/song_change/song_change.c:484 +#: src/song_change/song_change.c:555 #, fuzzy msgid "Song Change" msgstr "Loo sõnum" -#: src/spectrum/spectrum.c:89 -msgid "Spectrum Analyzer" -msgstr "" - -#: src/statusicon/statusicon.c:355 +#: src/statusicon/statusicon.c:378 msgid "About Status Icon Plugin" msgstr "Olekuikooni pluginast lähemalt" -#: src/statusicon/statusicon.c:356 +#: src/statusicon/statusicon.c:379 msgid "" "Status Icon Plugin\n" "\n" @@ -5121,149 +3844,67 @@ "the system tray area of the window manager.\n" msgstr "" -#: src/statusicon/statusicon.c:418 +#: src/statusicon/statusicon.c:447 msgid "Status Icon Plugin - Preferences" msgstr "Olekuikooni plugina eelistused" -#: src/statusicon/statusicon.c:428 +#: src/statusicon/statusicon.c:457 msgid "Right-Click Menu" msgstr "Paremklõpsu menüü" -#: src/statusicon/statusicon.c:433 +#: src/statusicon/statusicon.c:462 msgid "Small playback menu #1" msgstr "Väike esitusmenüü nr. 1" -#: src/statusicon/statusicon.c:436 +#: src/statusicon/statusicon.c:465 msgid "Small playback menu #2" msgstr "Väike esitusmenüü nr. 2" -#: src/statusicon/statusicon.c:452 +#: src/statusicon/statusicon.c:481 msgid "Mouse Scroll Action" msgstr "Hiire kerimisel" -#: src/statusicon/statusicon.c:456 +#: src/statusicon/statusicon.c:485 msgid "Change volume" -msgstr "Muudetakse valjust" - -#: src/statusicon/statusicon.c:458 -msgid "Change playing song" -msgstr "Vahetatakse esitatavat lugu" - -#: src/stereo_plugin/stereo.c:40 -msgid "" -"Extra Stereo Plugin\n" -"\n" -"By Johan Levin 1999." -msgstr "" - -#: src/stereo_plugin/stereo.c:64 -msgid "About Extra Stereo Plugin" -msgstr "Ekstra stereo pluginast lähemalt" - -#: src/stereo_plugin/stereo.c:100 -msgid "Configure Extra Stereo" -msgstr "" - -#: src/streambrowser/gui/streambrowser_win.c:62 -#, fuzzy -msgid "Search:" -msgstr "Aasta:" - -#: src/streambrowser/gui/streambrowser_win.c:81 -#: src/streambrowser/gui/streambrowser_win.c:370 -msgid "Add Bookmark" -msgstr "" - -#: src/streambrowser/gui/streambrowser_win.c:95 -msgid "Stream browser" -msgstr "" - -#: src/streambrowser/gui/streambrowser_win.c:319 -#, fuzzy -msgid "Stream name" -msgstr "Instrumendi nimi" - -#: src/streambrowser/gui/streambrowser_win.c:326 -#, fuzzy -msgid "Now playing" -msgstr "Esitusnimekirja valimine" - -#: src/streambrowser/gui/streambrowser_win.c:367 -msgid "Remove Bookmark" -msgstr "" +msgstr "Muudetakse valjust" -#: src/streambrowser/streambrowser.c:331 -#, fuzzy -msgid "About Stream Browser" -msgstr "OSS draiverist lähemalt" +#: src/statusicon/statusicon.c:487 +msgid "Change playing song" +msgstr "Vahetatakse esitatavat lugu" -#: src/streambrowser/streambrowser.c:332 +#: src/statusicon/statusicon.c:500 #, fuzzy -msgid "" -"Copyright (c) 2008, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming " -"directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" -"\n" -"This was a Google Summer of Code 2008 project." -msgstr "" -"Autoriõigused (c) 2007, Calin Crisan ja Audacious'e " -"meeskond.\n" -"\n" -"Palju tänu libcdio arendajatele \n" -"\tja libcddb arendajatele .\n" -"\n" -"Samuti tänan Tony Vroon'i minu juhendamise eest.\n" -"\n" -"See projekt loodi Google Summer of Code 2007 raames." +msgid "Other settings" +msgstr "Mikseri sätted" -#: src/streambrowser/streambrowser.c:357 src/streambrowser/streambrowser.c:367 -msgid "Streambrowser" +#: src/statusicon/statusicon.c:505 +msgid "Disable the popup window" msgstr "" -#: src/sun/about.c:30 -msgid "About the Sun Driver" +#: src/statusicon/statusicon.c:512 +msgid "Close to the notification area (system tray)" msgstr "" -#: src/sun/about.c:31 +#: src/stereo_plugin/stereo.c:41 msgid "" -"XMMS BSD Sun Driver\n" +"Extra Stereo Plugin\n" "\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" -msgstr "" - -#: src/sun/configure.c:199 -msgid "Audio control device:" -msgstr "" - -#: src/sun/configure.c:270 -msgid "Buffer size (ms):" -msgstr "Puhvri suurus (ms):" - -#: src/sun/configure.c:348 -msgid "Volume controls device:" +"By Johan Levin 1999." msgstr "" -#: src/sun/configure.c:361 -msgid "XMMS uses mixer exclusively." -msgstr "" +#: src/stereo_plugin/stereo.c:65 +msgid "About Extra Stereo Plugin" +msgstr "Ekstra stereo pluginast lähemalt" -#: src/sun/configure.c:536 -msgid "Sun driver configuration" +#: src/stereo_plugin/stereo.c:102 +msgid "Configure Extra Stereo" msgstr "" -#: src/tonegen/tonegen.c:53 +#: src/tonegen/tonegen.c:48 msgid "About Tone Generator" msgstr "Toonigeneraatorist lähemalt" -#: src/tonegen/tonegen.c:55 +#: src/tonegen/tonegen.c:50 msgid "" "Sinus tone generator by Haavard Kvaalen \n" "Modified by Daniel J. Peng \n" @@ -5272,15 +3913,20 @@ "e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" msgstr "" -#: src/tonegen/tonegen.c:105 +#: src/tonegen/tonegen.c:100 #, c-format msgid "%s %.1f Hz" msgstr "" -#: src/tonegen/tonegen.c:105 +#: src/tonegen/tonegen.c:100 msgid "Tone Generator: " msgstr "" +#: src/unix-io/gtk.c:34 +#, fuzzy +msgid "About File I/O Plugin" +msgstr "ESounD'i pluginast lähemalt" + #: src/vorbis/configure.c:31 msgid "Override generic titles" msgstr "Kasutatakse oma pealkirjavormingut" @@ -5294,15 +3940,15 @@ msgid "Ogg Vorbis Tags" msgstr "Ogg Vorbis sildid:" -#: src/vorbis/configure.c:68 +#: src/vorbis/configure.c:69 msgid "Ogg Vorbis Audio Plugin Configuration" msgstr "Ogg Vorbis audioplugina sätted" -#: src/vorbis/vorbis.c:549 +#: src/vorbis/vorbis.c:581 msgid "About Ogg Vorbis Audio Plugin" msgstr "Ogg Vorbis audiopluginast lähemalt" -#: src/vorbis/vorbis.c:554 +#: src/vorbis/vorbis.c:586 #, fuzzy msgid "" "Ogg Vorbis Plugin by the Xiph.org Foundation\n" @@ -5352,12 +3998,12 @@ "Audacious implementation by Pavel Vymetalek " msgstr "" -#: src/wavpack/wavpack.c:371 +#: src/wavpack/wavpack.c:353 #, c-format msgid "Wavpack Decoder Plugin %s" msgstr "" -#: src/wavpack/wavpack.c:372 +#: src/wavpack/wavpack.c:354 msgid "" "Copyright (c) 2006 William Pitcock \n" "\n" @@ -5365,6 +4011,546 @@ "Visit the Wavpack site at http://www.wavpack.com/\n" msgstr "" +#, fuzzy +#~ msgid "Use Bitmap fonts if available" +#~ msgstr "Võimaluse korral kasutatakse CDDB-d" + +#, fuzzy +#~ msgid "_Miscellaneous" +#~ msgstr "Teenused" + +#~ msgid "AdPlug :: Configuration" +#~ msgstr "AdPlug'i sätted" + +#~ msgid "Sound quality" +#~ msgstr "Helikvaliteet" + +#~ msgid "8bit" +#~ msgstr "8-bitine" + +#~ msgid "16bit" +#~ msgstr "16-bitine" + +#~ msgid "Channels" +#~ msgstr "Kanaleid" + +#~ msgid "Frequency" +#~ msgstr "Sagedus" + +#~ msgid "Detect songend" +#~ msgstr "Loo lõpp tuvastatakse" + +#~ msgid "Formats" +#~ msgstr "Vormingud" + +#~ msgid "Format selection" +#~ msgstr "Vormingute valimine" + +#~ msgid "Format" +#~ msgstr "Vorming" + +#~ msgid "Extension" +#~ msgstr "Laiend" + +#~ msgid "Author: " +#~ msgstr "Autor: " + +#~ msgid "File Type: " +#~ msgstr "Faili tüüp: " + +#~ msgid "Instruments: " +#~ msgstr "Instrumendid: " + +#~ msgid "Patterns: " +#~ msgstr "Mustrid: " + +#~ msgid "Instrument name" +#~ msgstr "Instrumendi nimi" + +#~ msgid "Song message" +#~ msgstr "Loo sõnum" + +#~ msgid "Pattern: " +#~ msgstr "Muster: " + +#~ msgid "Speed: " +#~ msgstr "Kiirus: " + +#~ msgid "About XMMS Alarm" +#~ msgstr "XMMS-alarmist lähemalt" + +#~ msgid "XMMS Alarm" +#~ msgstr "XMMS-alarm" + +#~ msgid "" +#~ "An XMMS plugin which can be used\n" +#~ "to start playing at a certain time.\n" +#~ "\n" +#~ "Send all complaints to:\n" +#~ "Adam Feakin \n" +#~ "Daniel Stodden \n" +#~ "\n" +#~ "http://www.snika.uklinux.net/xmms-alarm/" +#~ msgstr "" +#~ "XMMS-plugin, mida saab kasutada esitamise\n" +#~ "alustamiseks kindlaksmääratud ajal.\n" +#~ "\n" +#~ "Kaebused paluks saata aadressidele:\n" +#~ "Adam Feakin \n" +#~ "Daniel Stodden \n" +#~ "\n" +#~ "http://www.snika.uklinux.net/xmms-alarm/" + +#~ msgid "Alarm" +#~ msgstr "Alarm" + +#~ msgid "This is your wakeup call." +#~ msgstr "See on sinu äratus." + +#~ msgid "Select Playlist" +#~ msgstr "Esitusnimekirja valimine" + +#~ msgid "Sorry" +#~ msgstr "Vabandust" + +#~ msgid "Warning" +#~ msgstr "Hoiatus" + +#~ msgid "Alarm Settings" +#~ msgstr "Alarmi sätted" + +#~ msgid "Time" +#~ msgstr "Aeg" + +#~ msgid "hours" +#~ msgstr "tundi" + +#~ msgid "h" +#~ msgstr "t" + +#~ msgid "minutes" +#~ msgstr "minutit" + +#~ msgid "Quiet after:" +#~ msgstr "Vait pärast:" + +#~ msgid "Alarm at (default):" +#~ msgstr "Alarmi aeg (vaikimisi):" + +#~ msgid "Choose the days for the alarm to come on" +#~ msgstr "Alarmi töölehakkamise päevade valimine" + +#~ msgid "Day" +#~ msgstr "Päev" + +#~ msgid "Tuesday" +#~ msgstr "Teisipäeval" + +#~ msgid "Wednesday" +#~ msgstr "Kolmapäeval" + +#~ msgid "Thursday" +#~ msgstr "Neljapäeval" + +#~ msgid "Friday" +#~ msgstr "Reedel" + +#~ msgid "Saturday" +#~ msgstr "Laupäeval" + +#~ msgid "Sunday" +#~ msgstr "Pühapäeval" + +#~ msgid "Monday" +#~ msgstr "Esmaspäeval" + +#~ msgid "Days" +#~ msgstr "Päevad" + +#~ msgid "Fading" +#~ msgstr "Kahanemine" + +#~ msgid "Volume" +#~ msgstr "Valjus" + +#~ msgid "Current" +#~ msgstr "Praegune" + +#~ msgid "Start at" +#~ msgstr "Alguses" + +#~ msgid "%" +#~ msgstr "%" + +#~ msgid "Final" +#~ msgstr "Lõpus" + +#~ msgid "Additional Command" +#~ msgstr "Täiendav käsk" + +#~ msgid "enable" +#~ msgstr "lubatud" + +#~ msgid "Playlist (optional)" +#~ msgstr "Esitusnimekiri (valikuline)" + +#~ msgid "Browse..." +#~ msgstr "Sirvi..." + +#~ msgid "Reminder" +#~ msgstr "Meeldetuletaja" + +#~ msgid "Use reminder" +#~ msgstr "Meeldetuletaja on kasutusel" + +#~ msgid "What do these options mean?" +#~ msgstr "Mida need valikud tähendavad?" + +#, fuzzy +#~ msgid "Current Headset" +#~ msgstr "Praegune" + +#, fuzzy +#~ msgid "_Connect" +#~ msgstr "Asukoht:" + +#, fuzzy +#~ msgid "Class" +#~ msgstr "Sulge" + +#, fuzzy +#~ msgid "Address:" +#~ msgstr "Seadme aadress" + +#, fuzzy +#~ msgid "Detected" +#~ msgstr "Loo lõpp tuvastatakse" + +#, fuzzy +#~ msgid "Not Detected" +#~ msgstr "Vormingute valimine" + +#~ msgid "Device name:" +#~ msgstr "Seadne nimi:" + +#~ msgid "Device file:" +#~ msgstr "Seadmefail:" + +#~ msgid "Active" +#~ msgstr "Aktiivne" + +#~ msgid "Status" +#~ msgstr "Olek" + +#~ msgid "Device Name" +#~ msgstr "Seadme nimi" + +#~ msgid "Device File" +#~ msgstr "Seadmefail" + +#~ msgid "Device Address" +#~ msgstr "Seadme aadress" + +#~ msgid "Name: " +#~ msgstr "Nimi: " + +#~ msgid "Filename: " +#~ msgstr "Failinimi: " + +#~ msgid "Name" +#~ msgstr "Nimi" + +#~ msgid "UID" +#~ msgstr "UID" + +#~ msgid "Installed plugins" +#~ msgstr "Paigaldatud pluginad" + +#~ msgid "Running plugins" +#~ msgstr "Töötavad pluginad" + +#~ msgid "Add" +#~ msgstr "Lisa" + +#~ msgid "Remove" +#~ msgstr "Eemalda" + +#~ msgid "LADSPA Plugin Catalog" +#~ msgstr "LADSPA pluginate kataloog" + +#~ msgid "About LIRC Audacious Plugin" +#~ msgstr "Audacious'e LIRC pluginast lähemalt" + +#, fuzzy +#~ msgid "Connection" +#~ msgstr "Asukoht:" + +#~ msgid "ModPlug Configuration" +#~ msgstr "ModPlug'i sätted" + +#~ msgid "16 bit" +#~ msgstr "16-bitine" + +#~ msgid "8 bit" +#~ msgstr "8-bitine" + +#, fuzzy +#~ msgid "96 kHz" +#~ msgstr "44 kHz" + +#, fuzzy +#~ msgid "48 kHz" +#~ msgstr "44 kHz" + +#~ msgid "44 kHz" +#~ msgstr "44 kHz" + +#~ msgid "22 kHz" +#~ msgstr "22 kHz" + +#~ msgid "Sampling Rate" +#~ msgstr "Diskreetimissagedus" + +#~ msgid "Enable" +#~ msgstr "Lubatud" + +#~ msgid "Depth" +#~ msgstr "Sügavus" + +#~ msgid "Delay" +#~ msgstr "Viivitus" + +#~ msgid "Effects" +#~ msgstr "Efektid" + +#~ msgid "Use Filename as Song Title" +#~ msgstr "Failinime kasutatakse pealkirjaks" + +#~ msgid "Fast Playlist Info" +#~ msgstr "Esitusnimekirja andmed kiiresti" + +#~ msgid "Noise Reduction" +#~ msgstr "Müra vähendatakse" + +#~ msgid "Play Amiga MOD" +#~ msgstr "Esitatakse Amiga MOD-e" + +#~ msgid "Don't loop" +#~ msgstr "Ei korrata" + +#~ msgid "Loop" +#~ msgstr "Korratakse" + +#~ msgid "time(s)" +#~ msgstr "kord(a)" + +#~ msgid "Loop forever" +#~ msgstr "Korratakse igavesti" + +#~ msgid "Looping" +#~ msgstr "Kordamine" + +#~ msgid "MOD Info" +#~ msgstr "MOD-i andmed" + +#~ msgid "" +#~ "Filename:\n" +#~ "Title:\n" +#~ "Type:\n" +#~ "Length:\n" +#~ "Speed:\n" +#~ "Tempo:\n" +#~ "Samples:\n" +#~ "Instruments:\n" +#~ "Patterns:\n" +#~ "Channels:" +#~ msgstr "" +#~ "Failinimi:\n" +#~ "Pealkiri:\n" +#~ "Liik:\n" +#~ "Kestus:\n" +#~ "Kiirus:\n" +#~ "Tempo:\n" +#~ "Sämpleid:\n" +#~ "Instrumente:\n" +#~ "Mustreid:\n" +#~ "Kanaleid:" + +#~ msgid "" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---" +#~ msgstr "" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---" + +#~ msgid "Samples" +#~ msgstr "Sämplid" + +#~ msgid "Instruments" +#~ msgstr "Instrumendid" + +#~ msgid "Message" +#~ msgstr "Sõnum" + +#, fuzzy +#~ msgid "" +#~ "\n" +#~ "Modplug sound engine written by Olivier Lapicque.\n" +#~ "XMMS interface for Modplug by Kenton Varda.\n" +#~ "(c)2000 Olivier Lapicque and Kenton Varda.\n" +#~ "Updates and maintenance by Konstanty Bialkowski.\n" +#~ "Ported to BMP by Theofilos Intzoglou." +#~ msgstr "" +#~ "\n" +#~ "Modplug helimootor, autor: Olivier Lapicque.\n" +#~ "Modplug'i XMMS-liidese autor: Kenton Varda.\n" +#~ "Autoriõigused (c) 2000 Olivier Lapicque ja Kenton Varda.\n" +#~ "Uuendused ja hooldus: Konstanty Bialkowski.\n" +#~ "BMP jaoks portinud Theofilos Intzoglou." + +#~ msgid "About Modplug" +#~ msgstr "Modplug'ist lähemalt" + +#, fuzzy +#~ msgid "Blue" +#~ msgstr "Valjus" + +#, fuzzy +#~ msgid "Search:" +#~ msgstr "Aasta:" + +#, fuzzy +#~ msgid "Stream name" +#~ msgstr "Instrumendi nimi" + +#, fuzzy +#~ msgid "Now playing" +#~ msgstr "Esitusnimekirja valimine" + +#, fuzzy +#~ msgid "About Stream Browser" +#~ msgstr "OSS draiverist lähemalt" + +#, fuzzy +#~ msgid "" +#~ "Copyright (c) 2008, by Calin Crisan and The Audacious " +#~ "Team.\n" +#~ "\n" +#~ "This is a simple stream browser that includes the most popular streaming " +#~ "directories.\n" +#~ "Many thanks to the Streamtuner developers ,\n" +#~ "\tand of course to the whole Audacious community.\n" +#~ "\n" +#~ "Also thank you Tony Vroon for mentoring & guiding me, again.\n" +#~ "\n" +#~ "This was a Google Summer of Code 2008 project." +#~ msgstr "" +#~ "Autoriõigused (c) 2007, Calin Crisan ja Audacious'e " +#~ "meeskond.\n" +#~ "\n" +#~ "Palju tänu libcdio arendajatele \n" +#~ "\tja libcddb arendajatele .\n" +#~ "\n" +#~ "Samuti tänan Tony Vroon'i minu juhendamise eest.\n" +#~ "\n" +#~ "See projekt loodi Google Summer of Code 2007 raames." + +#, fuzzy +#~ msgid "minutes:seconds" +#~ msgstr "minutit" + +#, fuzzy +#~ msgid "Track length:" +#~ msgstr "Loo number:" + +#, fuzzy +#~ msgid "Show/hide statusbar" +#~ msgstr "Esitusnimekirja valimine" + +#, fuzzy +#~ msgid "Refresh Selected" +#~ msgstr "Vormingute valimine" + +#, fuzzy +#~ msgid "Edit the playlist title." +#~ msgstr "Esitusnimekirja valimine" + +#, fuzzy +#~ msgid "By Formatted Title" +#~ msgstr "Pealkiri" + +#, fuzzy +#~ msgid "Components" +#~ msgstr "Kommentaar:" + +#, fuzzy +#~ msgid "Save as Static Playlist" +#~ msgstr "Esitusnimekirja valimine" + +#, fuzzy +#~ msgid "Load Playlist" +#~ msgstr "Esitusnimekirja andmed kiiresti" + +#, fuzzy +#~ msgid "Save Playlist" +#~ msgstr "Esitusnimekirja valimine" + +#~ msgid "" +#~ "best/slowest:0;\n" +#~ "worst/fastest:9;\n" +#~ "recommended:2;\n" +#~ "default:5;" +#~ msgstr "" +#~ "parim/aeglaseim:0;\n" +#~ "halvim/kiireim:9;\n" +#~ "soovitatav:2;\n" +#~ "vaikimisi:5;" + +#~ msgid "Variable bitrate" +#~ msgstr "Muutuv bitikiirus" + +#~ msgid "Average bitrate" +#~ msgstr "Keskmine bitikiirus" + +#, fuzzy +#~ msgid "Show playlists" +#~ msgstr "Esitusnimekirja valimine" + +#, fuzzy +#~ msgid "Show/hide playlists" +#~ msgstr "Esitusnimekirja valimine" + +#~ msgid "Buffer size (ms):" +#~ msgstr "Puhvri suurus (ms):" + +#, fuzzy +#~ msgid "Target volume:" +#~ msgstr "Muudetakse valjust" + +#, fuzzy +#~ msgid "Effect strength:" +#~ msgstr "Efektid" + +#~ msgid "FLAC Audio Plugin " +#~ msgstr "FLAC audioplugin " + #~ msgid "Audacious standard menu" #~ msgstr "Audacious'e standardmenüü" @@ -5649,10 +4835,6 @@ #~ msgstr "Vaikimisi (%s)" #, fuzzy -#~ msgid "_Rename" -#~ msgstr "Failinimi" - -#, fuzzy #~ msgid "About Icecast-Plugin" #~ msgstr "Kajapluginast lähemalt" @@ -5836,21 +5018,9 @@ #~ msgid "Title:" #~ msgstr "Pealkiri:" -#~ msgid "Artist:" -#~ msgstr "Esitaja:" - -#~ msgid "Album:" -#~ msgstr "Album:" - #~ msgid "Comment:" #~ msgstr "Kommentaar:" -#~ msgid "Year:" -#~ msgstr "Aasta:" - -#~ msgid "Track number:" -#~ msgstr "Loo number:" - #~ msgid "Genre:" #~ msgstr "Žanr:" @@ -6027,12 +5197,6 @@ #~ msgid "Version:" #~ msgstr "Versioon:" -#~ msgid "Bit rate:" -#~ msgstr "Bitikiirus:" - -#~ msgid "Length:" -#~ msgstr "Kestus:" - #~ msgid "File size:" #~ msgstr "Faili suurus:" diff -Nru audacious-plugins-2.4.4/po/eu.po audacious-plugins-3.2/po/eu.po --- audacious-plugins-2.4.4/po/eu.po 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/eu.po 2012-01-20 19:48:30.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: audacious-plugins_eu\n" "Report-Msgid-Bugs-To: http://jira.atheme.org/\n" -"POT-Creation-Date: 2010-08-03 17:55-0400\n" +"POT-Creation-Date: 2011-07-17 18:49-0400\n" "PO-Revision-Date: 2009-04-23 18:56+0200\n" "Last-Translator: Iñaki Larrañaga Murgoitio \n" "Language-Team: Basque \n" @@ -18,7 +18,7 @@ "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/aac/libmp4.c:291 +#: src/aac/libmp4.c:256 #, fuzzy, c-format msgid "" "Using libfaad2-%s for decoding.\n" @@ -29,620 +29,54 @@ "FAAD2 AAC/HE-AAC/HE-AACv2/DRM (c) Nero AG, www.nero.com\n" "Copyright-a (c) 2005-2006 Audacious taldea" -#: src/aac/libmp4.c:296 +#: src/aac/libmp4.c:261 #, fuzzy msgid "About MP4 AAC decoder plugin" msgstr "MP4 AAC erreproduzitzailearen pluginari buruz" -#: src/adplug/adplug-xmms.cc:153 -msgid "About " -msgstr "Honi buruz: " - -#: src/adplug/adplug-xmms.cc:157 -msgid "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"This plugin is released under the terms and conditions of the GNU LGPL.\n" -"See http://www.gnu.org/licenses/lgpl.html for details.\n" -"\n" -"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et " -"al.\n" -"Linked AdPlug library version: " -msgstr "" -"\n" -"Copyright-a (C) 2002, 2003 Simon Peter \n" -"\n" -"Plugin hau GNU GPL lizentziako terminoen eta baldintzen pean kaleratua.\n" -"Xehetasunetarako ikusi honako web orrialdea:\n" -"http://www.gnu.org/licenses/lgpl.html\n" -"\n" -"Plugin honek AdPlug liburutegia erabiltzen du. AdPlug-en copyright-a (C) " -"Simon Peter, eta al.\n" -"Estekatutako AdPlug liburutegiaren bertsioa: " - -#: src/adplug/adplug-xmms.cc:234 -msgid "AdPlug :: Configuration" -msgstr "AdPlug :: Konfigurazioa" - -#: src/adplug/adplug-xmms.cc:243 src/adplug/adplug-xmms.cc:504 -#: src/cdaudio-ng/configure.c:258 src/crystalizer/crystalizer.c:127 -#: src/echo_plugin/gui.c:122 src/jack/configure.c:146 src/null/null.c:109 -#: src/stereo_plugin/stereo.c:123 src/sun/configure.c:557 -msgid "Ok" -msgstr "Ados" - -#: src/adplug/adplug-xmms.cc:253 src/alarm/interface.c:1398 -#: src/cdaudio-ng/configure.c:263 src/crystalizer/crystalizer.c:136 -#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 -#: src/modplug/gui/interface.cxx:715 src/null/null.c:110 -#: src/stereo_plugin/stereo.c:132 src/sun/configure.c:565 -msgid "Cancel" -msgstr "Utzi" - -#: src/adplug/adplug-xmms.cc:269 src/console/configure.c:154 -#: src/modplug/gui/interface.cxx:629 src/modplug/gui/interface.cxx:888 -msgid "General" -msgstr "Orokorra" - -#: src/adplug/adplug-xmms.cc:281 -msgid "Sound quality" -msgstr "Soinuaren kalitatea" - -#: src/adplug/adplug-xmms.cc:286 src/modplug/gui/interface.cxx:188 -msgid "Resolution" -msgstr "Bereizmena" - -#: src/adplug/adplug-xmms.cc:288 -msgid "8bit" -msgstr "8 bit" - -#: src/adplug/adplug-xmms.cc:293 -msgid "16bit" -msgstr "16 bit" - -#: src/adplug/adplug-xmms.cc:301 src/modplug/gui/interface.cxx:219 -msgid "Channels" -msgstr "Kanalak" - -#: src/adplug/adplug-xmms.cc:303 src/filewriter/mp3.c:934 -#: src/mpg123/mpg123.c:174 src/sid/xs_interface.c:301 -msgid "Mono" -msgstr "Monoa" - -#: src/adplug/adplug-xmms.cc:308 src/filewriter/mp3.c:929 -#: src/modplug/gui/interface.cxx:205 src/mpg123/mpg123.c:174 -#: src/sid/xs_interface.c:308 -msgid "Stereo" -msgstr "Estereoa" - -#: src/adplug/adplug-xmms.cc:312 -msgid "" -"Setting stereo is not recommended, unless you need to. This won't add any " -"stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!" -msgstr "" -"Estereoa ezartzea ez da gomendagarria, ez baduzu behar bederen. Honek ez dio " -"inolako estereo efekturik gehituko soinuari (OPL2 monoa da soilik) eta " -"PUZaren errendimendu gehiago beharko du." - -#: src/adplug/adplug-xmms.cc:320 -msgid "Frequency" -msgstr "Maiztasuna" - -#: src/adplug/adplug-xmms.cc:356 src/adplug/adplug-xmms.cc:560 -#: src/console/configure.c:156 src/gtkui/ui_manager.c:64 -#: src/skins/ui_manager.c:165 -msgid "Playback" -msgstr "Erreprodukzioa" - -#: src/adplug/adplug-xmms.cc:360 -msgid "Detect songend" -msgstr "Detektatu abestiaren amaiera" - -#: src/adplug/adplug-xmms.cc:364 -msgid "" -"If enabled, XMMS will detect a song's ending, stop it and advance in the " -"playlist. If disabled, XMMS won't take notice of a song's ending and loop it " -"all over again and again." -msgstr "" -"Gaitzen bada XMMS-ek abestiaren amaiera detektatuko du, gelditu eta " -"erreprodukzio-zerrendan aurrera egingo du. Desgaitzen bada, XMMS ez da " -"ohartuko abesti baten amaierarekin eta behin eta berriz begiztatuko du." - -#: src/adplug/adplug-xmms.cc:375 -msgid "Formats" -msgstr "Formatuak" - -#: src/adplug/adplug-xmms.cc:382 -msgid "Format selection" -msgstr "Formatuaren hautapena" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Format" -msgstr "Formatua" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Extension" -msgstr "Luzapena" - -#: src/adplug/adplug-xmms.cc:425 -msgid "" -"Selected file types will be recognized and played back by this plugin. " -"Deselected types will be ignored to make room for other plugins to play " -"these files." -msgstr "" -"Hautatutako fitxategi motak ezagutuko dira eta plugin honek erreproduzituko " -"ditu. Desautatutako motei ezikusi egingo zaie, beste plugin batzuei lekua " -"egiteko fitxategi hauek erreproduzitzeko." - -#: src/adplug/adplug-xmms.cc:511 -msgid "AdPlug :: File Info" -msgstr "AdPlug :: Fitxategiaren informazioa" - -#: src/adplug/adplug-xmms.cc:533 src/amidi-plug/i_configure-fluidsynth.c:348 -msgid "Filename" -msgstr "Fitxategi-Izena" - -#: src/adplug/adplug-xmms.cc:537 src/skins/ui_playlist.c:390 -msgid "Title: " -msgstr "Izenburua: " - -#: src/adplug/adplug-xmms.cc:538 -msgid "Author: " -msgstr "Egilea: " - -#: src/adplug/adplug-xmms.cc:539 -msgid "File Type: " -msgstr "Fitxategi mota: " - -#: src/adplug/adplug-xmms.cc:540 -msgid "Subsongs: " -msgstr "Azpiabestiak: " - -#: src/adplug/adplug-xmms.cc:541 -msgid "Instruments: " -msgstr "Instrumentuak: " - -#: src/adplug/adplug-xmms.cc:546 -msgid "Orders: " -msgstr "Ordenak: " - -#: src/adplug/adplug-xmms.cc:547 -msgid "Patterns: " -msgstr "Ereduak: " - -#: src/adplug/adplug-xmms.cc:551 -msgid "Song" -msgstr "Abestia" - -#: src/adplug/adplug-xmms.cc:577 -msgid "Instrument name" -msgstr "Instrumentuaren izena" - -#: src/adplug/adplug-xmms.cc:619 -msgid "Song message" -msgstr "Abestiaren mezua" - -#: src/adplug/adplug-xmms.cc:641 -msgid "Subsong selection" -msgstr "Azpiabestiaren hautapena" - -#: src/adplug/adplug-xmms.cc:707 -msgid "Order: " -msgstr "Ordena: " - -#: src/adplug/adplug-xmms.cc:708 -msgid "Pattern: " -msgstr "Eredua: " - -#: src/adplug/adplug-xmms.cc:710 -msgid "Row: " -msgstr "Errenkada: " - -#: src/adplug/adplug-xmms.cc:711 -msgid "Speed: " -msgstr "Abiadura: " - -#: src/adplug/adplug-xmms.cc:712 -msgid "Timer: " -msgstr "Tenporizadorea: " - -#: src/adplug/adplug-xmms.cc:713 src/console/configure.c:234 -#: src/sid/xs_interface.c:354 -msgid "Hz" -msgstr "Hz" - -#: src/alarm/interface.c:34 -msgid "About XMMS Alarm" -msgstr "XMMS alarmari buruz" - -#: src/alarm/interface.c:47 -msgid "XMMS Alarm" -msgstr "XMMS alarma" - -#: src/alarm/interface.c:56 -msgid "" -"An XMMS plugin which can be used\n" -"to start playing at a certain time.\n" -"\n" -"Send all complaints to:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" -msgstr "" -"XMMSren plugin bat denbora zehatz batean\n" -"erreproduzitzen hasteko.\n" -"\n" -"Bidali kexuak hona:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" - -#: src/alarm/interface.c:71 src/bluetooth/scan_gui.c:149 src/lirc/about.c:115 -#: src/modplug/gui/interface.cxx:972 src/sid/xs_about.c:214 -#: src/sid/xs_interface.c:1825 -msgid "Close" -msgstr "Itxi" - -#: src/alarm/interface.c:101 -msgid "Alarm" -msgstr "Alarma" - -#: src/alarm/interface.c:109 -msgid "This is your wakeup call." -msgstr "Hau zu esnatzeko deia da." - -#: src/alarm/interface.c:124 src/alarm/interface.c:1389 -#: src/modplug/gui/interface.cxx:703 src/sid/xs_config.c:322 -msgid "OK" -msgstr "Ados" - -#: src/alarm/interface.c:152 -msgid "Select Playlist" -msgstr "Hautatu erreprodukzio-zerrenda" - -#: src/alarm/interface.c:196 -msgid "Sorry" -msgstr "Barkatu" - -#: src/alarm/interface.c:204 -msgid "Warning" -msgstr "Abisua" - -#: src/alarm/interface.c:213 -msgid "" -"For safety reasons the \"quiet\" time must be at least 65 seconds longer " -"than the fading time, it must also be more than 10 seconds. This basically " -"means that there is a bug in the code and until I find a way of really " -"fixing it this message will appear :)\n" -"\n" -"Your fading settings have NOT been saved\n" -"\n" -"--\n" -"Adam" -msgstr "" -"Segurtasuneko arrazoiak direla medio, \"quiet\" (isilik) denbora iraungitze-" -"denbora (10 segundo baino gehiagokoa izan behar duelarik) baino gutxienez 65 " -"segundo luzeagoa izan behar du. Honek kodean akats bat dagoela adierazi nahi " -"du, eta hau konpondu arte mezu hau agertuko dela :)\n" -"\n" -"Iraungitzearen ezarpenak EZ dira gorde\n" -"\n" -"--\n" -"Adam" - -#: src/alarm/interface.c:229 -msgid "Oh Well" -msgstr "Ongi" - -#: src/alarm/interface.c:388 -msgid "Alarm Settings" -msgstr "Alarmaren ezarpenak" - -#: src/alarm/interface.c:404 src/alarm/interface.c:576 -#: src/alarm/interface.c:948 -msgid "Time" -msgstr "Ordua" - -#: src/alarm/interface.c:445 -msgid "hours" -msgstr "ordu" - -#: src/alarm/interface.c:506 -msgid "h" -msgstr "o" - -#: src/alarm/interface.c:536 -msgid "minutes" -msgstr "minutu" - -#: src/alarm/interface.c:554 -msgid "Quiet after:" -msgstr "Isildu honen ondoren:" - -#: src/alarm/interface.c:564 -msgid "Alarm at (default):" -msgstr "Alarma (lehenetsia):" - -#: src/alarm/interface.c:584 -msgid "Choose the days for the alarm to come on" -msgstr "Aukeratu zein egunetan alarma aktibatuko den" - -#: src/alarm/interface.c:612 src/alarm/interface.c:660 -#: src/alarm/interface.c:708 src/alarm/interface.c:756 -#: src/alarm/interface.c:804 src/alarm/interface.c:852 -#: src/alarm/interface.c:900 src/OSS/configure.c:166 -#: src/skins/ui_manager.c:439 src/skins/ui_manager.c:460 -msgid "Default" -msgstr "Lehenetsia" - -#: src/alarm/interface.c:938 -msgid "Day" -msgstr "Eguna" - -#: src/alarm/interface.c:958 -msgid "Tuesday" -msgstr "Asteartea" - -#: src/alarm/interface.c:969 -msgid "Wednesday" -msgstr "Asteazkena" - -#: src/alarm/interface.c:980 -msgid "Thursday" -msgstr "Osteguna" - -#: src/alarm/interface.c:991 -msgid "Friday" -msgstr "Ostirala" - -#: src/alarm/interface.c:1002 -msgid "Saturday" -msgstr "Larunbata" - -#: src/alarm/interface.c:1013 -msgid "Sunday" -msgstr "Igandea" - -#: src/alarm/interface.c:1023 -msgid "Monday" -msgstr "Astelehena" - -#: src/alarm/interface.c:1034 -msgid "Days" -msgstr "Egunak" - -#: src/alarm/interface.c:1050 -msgid "Fading" -msgstr "Iraungitzea" - -#: src/alarm/interface.c:1087 src/sid/xs_interface.c:921 -#: src/sid/xs_interface.c:975 src/sid/xs_interface.c:1155 -msgid "seconds" -msgstr "segundo" - -#: src/alarm/interface.c:1095 src/alarm/interface.c:1211 -#: src/modplug/gui/interface.cxx:550 -msgid "Volume" -msgstr "Bolumena" - -#: src/alarm/interface.c:1121 -msgid "Current" -msgstr "Unekoa" - -#: src/alarm/interface.c:1128 -msgid "reset to current output volume" -msgstr "berrezarri uneko irteera bolumenera" - -#: src/alarm/interface.c:1130 -msgid "Start at" -msgstr "Hasiera:" - -#: src/alarm/interface.c:1158 src/alarm/interface.c:1202 -msgid "%" -msgstr "%" - -#: src/alarm/interface.c:1174 -msgid "Final" -msgstr "Amaiera" - -#: src/alarm/interface.c:1227 -msgid "Additional Command" -msgstr "Komando gehigarria" - -#: src/alarm/interface.c:1253 -msgid "enable" -msgstr "gaitu" - -#: src/alarm/interface.c:1261 -msgid "Playlist (optional)" -msgstr "Erreprodukzio-zerrenda (aukerakoa)" - -#: src/alarm/interface.c:1287 -msgid "Browse..." -msgstr "Arakatu..." - -#: src/alarm/interface.c:1295 src/alarm/interface.c:1460 -msgid "Reminder" -msgstr "Oroigarria" - -#: src/alarm/interface.c:1312 -msgid "Use reminder" -msgstr "Erabili oroigarria" - -#: src/alarm/interface.c:1328 src/sndstretch/sndstretch_xmms.c:394 -msgid "Options" -msgstr "Aukerak" - -#: src/alarm/interface.c:1336 -msgid "What do these options mean?" -msgstr "Zer esanahi dute aukera hauek?" - -#: src/alarm/interface.c:1364 -msgid "" -"\n" -"Time\n" -" Alarm at: \n" -" The time for the alarm to come on.\n" -"\n" -" Quiet After: \n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading: \n" -" Fade the volume up to the chosen volume \n" -" for this amount of time.\n" -"\n" -" Start at: \n" -" Start fading from this volume.\n" -"\n" -" Final: \n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist: \n" -" Load this playlist for playing songs from \n" -" (must have .m3u extension). If no playlist\n" -" is given then the songs which are currently\n" -" in the list will be used.\n" -" The URL of an mp3/ogg stream can also be\n" -" entered here, but loading of playlists from\n" -" URLs is not currently supported by xmms.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off,\n" -" type the reminder in the box and turn on the\n" -" toggle button if you want it to be shown.\n" -msgstr "" -"\n" -"Ordua\n" -" Alarma: \n" -"\n" -" Ordua alarma aktibatzeko\n" -"\n" -" Isildu honen ondoren: \n" -" Gelditu alarma denbora kopuruaren ostean.\n" -" (iratzartzeko elkarrizketa-koadroa ez bada ixten)\n" -"\n" -"\n" -"Egunak\n" -" Eguna:\n" -" Hautatu egunak alarma aktibatzeko.\n" -"\n" -" Ordua:\n" -" Aukeratu egun bakoitzeko alarmaren ordua,\n" -" (edo hautatu txandakatzeko botoia denbora\n" -" lehenetsia erabiltzeko).\n" -"\n" -"\n" -"Bolumena\n" -" Iraungitzea: \n" -" Iraungitu bolumena gorantz aukeratutako bolumenerarte\n" -" denbora kopuru honentzako.\n" -"\n" -" Hasiera: \n" -" Hasi iraungitzea bolumen honetatik\n" -"\n" -" Amaiera: \n" -" Amaierako bolumenean iraungitzea gelditzeko. Iraungitzearen\n" -" denbora 0 bada, bolumena honekin ezartzen du eta\n" -" erreproduzitzen hasten da.\n" -"\n" -"\n" -"Aukerak:\n" -" Komando gehigarriak:\n" -" Exekutatu komando hau alarmaren orduan.\n" -"\n" -" Erreprodukzio-zerrenda: \n" -" Kargatu erreprodukzio-zerrenda hau bertatik\n" -" abestiak erreproduzitzeko (.m3u luzapena\n" -" eduki behar du). Ez bada erreprodukzio-zerrendarik\n" -" ematen, uneko zerrendan dauden abestiak\n" -" erabiliko dira.\n" -" Hemen mp3/ogg korrontearen URLa sar daitekeen\n" -" arren, oraingoz xmms-ek ez du URLrik onartzen.\n" -"\n" -" Oroigarria: \n" -" Oroigarri bat bistaratzen du alarma itzaltzean,\n" -" idatzi oroigarria kutxan eta piztu txandakatzeko\n" -" botoia oroigarri hori bistaratzea nahi baduzu.\n" - -#: src/alarm/interface.c:1366 src/gtkui/ui_manager.c:165 -#: src/skins/ui_manager.c:371 -msgid "Help" -msgstr "Laguntza" - -#: src/alarm/interface.c:1468 -msgid "Your reminder for today is.." -msgstr "Gaurko zure oroigarria: " - -#: src/alarm/interface.c:1493 -msgid "Thankyou" -msgstr "Eskerrik asko" - -#: src/alsa/config.c:209 +#: src/alsa/config.c:210 #, fuzzy msgid "Default PCM device" msgstr "PCM gailu lehenetsia (%s)" -#: src/alsa/config.c:234 +#: src/alsa/config.c:235 #, fuzzy msgid "Default mixer device" msgstr "PCM gailu lehenetsia (%s)" -#: src/alsa/config.c:438 +#: src/alsa/config.c:447 #, fuzzy msgid "ALSA Output Plugin Preferences" msgstr "Egoeraren ikonoa plugina - Hobespenak" -#: src/alsa/config.c:445 +#: src/alsa/config.c:454 #, fuzzy msgid "PCM device:" msgstr "Nahastailearen gailua:" -#: src/alsa/config.c:447 src/OSS/configure.c:256 src/sun/configure.c:218 +#: src/alsa/config.c:456 src/OSS/configure.c:246 msgid "Mixer device:" msgstr "Nahastailearen gailua:" -#: src/alsa/config.c:449 +#: src/alsa/config.c:458 #, fuzzy msgid "Mixer element:" msgstr "Nahastailearen gailua:" -#: src/alsa/config.c:452 +#: src/alsa/config.c:461 msgid "Work around drain hangup" msgstr "" -#: src/alsa/plugin.c:61 +#: src/alsa/plugin.c:59 #, fuzzy msgid "About ALSA Output Plugin" msgstr "JACK irteerako plugina 0.17 buruz" -#: src/alsa/plugin.c:83 +#: src/alsa/plugin.c:81 msgid "ALSA error" msgstr "" -#: src/amidi-plug/amidi-plug.c:323 +#: src/amidi-plug/amidi-plug.c:335 msgid "" "You have not selected any sequencer ports for MIDI playback. You can do so " "in the MIDI plugin preferences." @@ -673,11 +107,11 @@ "sintetizadorera bidalitako MIDI gertaerak zuenean erreproduzi daitezke.\n" "Motorra Giacomo Lozito-k garatu zuen." -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:41 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 msgid "FluidSynth Backend " msgstr "FluidSynth motorra " -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:43 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 msgid "" "This backend produces audio by sending MIDI events to FluidSynth, a real-" "time software synthesizer based on the SoundFont2 specification (www." @@ -693,86 +127,43 @@ "aukeratutako irteerako pluginarekin erreproduzitu.\n" "Motorra Giacomo Lozito-k garatu zuen." -#: src/amidi-plug/i_configure-alsa.c:221 +#: src/amidi-plug/i_configure-alsa.c:228 msgid "ALSA BACKEND CONFIGURATION" msgstr "ALSA motorraren konfigurazioa" -#: src/amidi-plug/i_configure-alsa.c:326 +#: src/amidi-plug/i_configure-alsa.c:331 msgid "Port" msgstr "Ataka" -#: src/amidi-plug/i_configure-alsa.c:328 +#: src/amidi-plug/i_configure-alsa.c:333 msgid "Client name" msgstr "Bezeroaren izena" -#: src/amidi-plug/i_configure-alsa.c:330 +#: src/amidi-plug/i_configure-alsa.c:335 msgid "Port name" msgstr "Atakaren izena" -#: src/amidi-plug/i_configure-alsa.c:341 +#: src/amidi-plug/i_configure-alsa.c:346 msgid "ALSA output ports" msgstr "ALSAren irteeraren atakak" -#: src/amidi-plug/i_configure-alsa.c:394 +#: src/amidi-plug/i_configure-alsa.c:399 msgid "Soundcard: " msgstr "Soinu-txartela: " -#: src/amidi-plug/i_configure-alsa.c:396 +#: src/amidi-plug/i_configure-alsa.c:401 msgid "Mixer control: " msgstr "Nahastaile-kontrola: " -#: src/amidi-plug/i_configure-alsa.c:408 +#: src/amidi-plug/i_configure-alsa.c:413 msgid "Mixer settings" msgstr "Nahastailearen ezarpenak" -#: src/amidi-plug/i_configure-alsa.c:421 -msgid "" -"* Select ALSA output ports *\n" -"MIDI events will be sent to the ports selected here. In example, if your " -"audio card provides a hardware synth and you want to play MIDI with it, " -"you'll probably want to select the wavetable synthesizer ports." -msgstr "" -"* Hautatu ALSAren irteerako atakak *\n" -"MIDI gertaerak hemen hautatutako ataketara bidaliko dira. Adibidez, soinu-" -"txartelak hardware-sintetizadorea badu, eta horrekin MIDIa erreproduzitzea " -"nahi baduzu, baliteke zuk uhin-taulako sintetizadorearen atakak hautatu nahi " -"izatea." - -#: src/amidi-plug/i_configure-alsa.c:426 -msgid "" -"* Select ALSA mixer card *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volumeslider will " -"manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" -"* Hautatu ALSAren nahastailearen txartela *\n" -"ALSA motorrak ALSA bidez ateratzen da, erreproduzitzaileak ez du efekturik " -"ezta irteerako pluginik erabiltzen. Erreprodukzioan, erreproduzitzailearen " -"bolumenaren graduatzaileak zuk hemen hautatutako nahastailearen kontrola " -"kudea dezake. Uhin-taulako sintetizadorearen atakak erabiltzen badituzu, " -"baliteke zuk hemen sintetizadorearen kontrola hautatu nahi izatea." - -#: src/amidi-plug/i_configure-alsa.c:433 -msgid "" -"* Select ALSA mixer control *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volume slider " -"will manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" -"* Hautatu ALSAren nahastailearen kontrola *\n" -"ALSA motorrak ALSA bidez ateratzen da, erreproduzitzaileak ez du efekturik " -"ezta irteerako pluginik erabiltzen. Erreprodukzioan, erreproduzitzailearen " -"bolumenaren graduatzaileak zuk hemen hautatutako nahastailearen kontrola " -"kudea dezake. Uhin-taulako sintetizadorearen atakak erabiltzen badituzu, " -"baliteke zuk hemen sintetizadorearen kontrola hautatu nahi izatea." - -#: src/amidi-plug/i_configure-alsa.c:444 +#: src/amidi-plug/i_configure-alsa.c:429 msgid "ALSA Backend not loaded or not available" msgstr "ALSA motorra ez da kargatu edo ez dago erabilgarri" -#: src/amidi-plug/i_configure-alsa.c:463 +#: src/amidi-plug/i_configure-alsa.c:448 msgid "" "ALSA\n" "backend" @@ -780,156 +171,51 @@ "ALSA\n" "motorra" -#: src/amidi-plug/i_configure-ap.c:56 +#: src/amidi-plug/i_configure-ap.c:59 msgid "AMIDI-Plug - backend information" msgstr "AMIDI-Plug - motorraren informazioa" -#: src/amidi-plug/i_configure-ap.c:194 +#: src/amidi-plug/i_configure-ap.c:196 msgid "AMIDI-PLUG PREFERENCES" msgstr "AMIDI-PLUG Hobespenak" -#: src/amidi-plug/i_configure-ap.c:221 +#: src/amidi-plug/i_configure-ap.c:223 msgid "Backend selection" msgstr "Motorraren hautapena" -#: src/amidi-plug/i_configure-ap.c:225 +#: src/amidi-plug/i_configure-ap.c:227 msgid "Available backends" msgstr "Motor erabilgarriak" -#: src/amidi-plug/i_configure-ap.c:255 +#: src/amidi-plug/i_configure-ap.c:257 msgid "Playback settings" msgstr "Erreprodukzioaren ezarpenak" -#: src/amidi-plug/i_configure-ap.c:260 +#: src/amidi-plug/i_configure-ap.c:262 msgid "Transpose: " msgstr "Irauli: " -#: src/amidi-plug/i_configure-ap.c:269 +#: src/amidi-plug/i_configure-ap.c:271 msgid "Drum shift: " msgstr "Perkusio-desplazamendua:" -#: src/amidi-plug/i_configure-ap.c:287 +#: src/amidi-plug/i_configure-ap.c:289 msgid "Advanced settings" msgstr "Ezarpen aurreratuak" -#: src/amidi-plug/i_configure-ap.c:291 +#: src/amidi-plug/i_configure-ap.c:293 msgid "pre-calculate length of MIDI files in playlist" msgstr "aurre-kalkulatu erreprodukzio-zerrendako MIDI fitxategien luzera" -#: src/amidi-plug/i_configure-ap.c:296 +#: src/amidi-plug/i_configure-ap.c:298 msgid "extract comments from MIDI file (if available)" msgstr "erauzi MIDI fitxategiko iruzkinak (egonez gero)" -#: src/amidi-plug/i_configure-ap.c:301 +#: src/amidi-plug/i_configure-ap.c:303 msgid "extract lyrics from MIDI file (if available)" msgstr "erauzi MIDI fitxategiko letrak (egonez gero)" -#: src/amidi-plug/i_configure-ap.c:320 -msgid "" -"* Backend selection *\n" -"AMIDI-Plug works with backends, in a modular fashion; here you should select " -"your backend; that is, the way MIDI events are going to be handled and " -"played.\n" -"If you have a hardware synthesizer on your audio card, and ALSA supports it, " -"you'll want to use the ALSA backend. It can also be used with anything that " -"provides an interface to the ALSA sequencer, including software synths or " -"external devices.\n" -"If you want to rely on a software synthesizer and/or want to pipe audio into " -"effect and output plugins of the player you'll want to use the good " -"FluidSynth backend.\n" -"Press the info button to read specific information about each backend." -msgstr "" -"* Motorraren hautapena *\n" -"AMIDI-Plug motorrekin lan egiten du , era modular batean. Hemen motorra " -"hauta dezakezu: hau da, MIDI gertaerak nola kudeatu eta erreproduzituko " -"diren modua.\n" -"Hardware-sintetizadore bat badu audio-txartelak, eta ALSAk onartzen badu, " -"ALSA motorra erabiltzea nahi izan dezakezu. ALSA sekuentziadorearen " -"interfaze bat eskaintzen duen edozerrekin ere erabil daiteke, software-" -"sintetizadorea edo kanpoko gailuak barne.\n" -"Software-sintetizadorean oinarritzea nahi baduzu, edo eta audioa " -"erreproduzitzailearen efektuetara eta irteerako pluginak kanalizatzea nahi " -"baduzu, FluidSynth motor ona erabiltzea nahi izan dezakezu.\n" -"Sakatu Informazioa botoia motor bakoitzari buruzko informazio zehatza " -"irakurtzeko." - -#: src/amidi-plug/i_configure-ap.c:331 -#, fuzzy -msgid "" -"* Transpose function *\n" -"This option allows you to play the midi file transposed in a different key, " -"by shifting of the desired number of semitones all its notes (excepting " -"those on midi channel 10, reserved for percussions). Especially useful if " -"you wish to sing or play along with another instrument." -msgstr "" -"* Irauli funtzioa *\n" -"Aukera honek MIDI fitxategia beste tekla desberdin batean iraulita " -"erreproduzitzea baimentzen dizu, bere nota guztien nahi duzun semintonu " -"kopurua desplazatuz (MIDIko 10. kanalekoak izan ezik, perkusioentzako " -"gordeta baitago). Bereziki erabilgarria da beste instrumentu batekin abestea " -"edo erreproduzitzea nahi baduzu." - -#: src/amidi-plug/i_configure-ap.c:337 -msgid "" -"* Drumshift function *\n" -"This option allows you to shift notes on midi channel 10 (the standard " -"percussions channel) of the desired number of semitones. This results in " -"different drumset and percussions being used during midi playback, so if you " -"wish to enhance (or reduce, or alter) percussion sounds, try to play with " -"this value." -msgstr "" -"* Perkusio-desplazamendua funtzioa *\n" -"Aukera honek MIDIko 10. kanaleko notak nahi duzun semitonu kopurua " -"desplazatzea uzten dizu. MIDI erreproduzitzean erabiltzen den bestelako " -"perkusio multzo desberdin bat dakaer, eta honela perkusioen soinuak hobetu " -"(edo gutxiagotu edo eraldatu) nahi badituzu, saiatu balio honekin " -"erreproduzitzen." - -#: src/amidi-plug/i_configure-ap.c:344 -msgid "" -"* Pre-calculate MIDI length *\n" -"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as " -"soon as the player requests it, instead of doing that only when the MIDI " -"file is being played. In example, MIDI length will be calculated straight " -"after adding MIDI files in a playlist. Disable this option if you want " -"faster playlist loading (when a lot of MIDI files are added), enable it to " -"display more information in the playlist straight after loading." -msgstr "" -"* Aurre-kalkulatu MIDI luzera *\n" -"Aukera hau gaituta egonez gero, 'AMIDI-Plug'-ek MIDI fitxategiaren luzera " -"kalkula dezake erreproduzaileak eskatu bezain laster, MIDI fitxategia " -"erreproduzitzen ari den bitartean egin ordez. Adibidez, MIDI fitxategiak " -"erreprodukzio-zerrendari gehitu bezain laster kalkula daiteke MIDIaren " -"luzera. Desgaitu aukera hau erreprodukzio-zerrenda azkarrago kargatzea nahi " -"naduzu (MIDI fitxategi asko gehitzen direnean), gaitu ezazu kargatu bezain " -"laster erreprodukzio-zerrendan informazio gehiago bistaratzeko." - -#: src/amidi-plug/i_configure-ap.c:353 -msgid "" -"* Extract comments from MIDI files *\n" -"Some MIDI files contain text comments (author, copyright, instrument notes, " -"etc.). If this option is enabled, AMIDI-Plug will extract and display " -"comments (if available) in the file information dialog." -msgstr "" -"* Erauzi iruzkinak MIDI fitxategietatik *\n" -"MIDI fitxategi batzuk testu iruzkinak dituzte (egilea, copyright-a, " -"instrumentuen oharrak, e.a.). Aukera hau gaitzen bada, AMIDI-Plug-ek " -"iruzkinak (egonez gero) erauzi eta bistaratuko ditu fitxategiaren " -"informazioaren elkarrizketa-koadroan." - -#: src/amidi-plug/i_configure-ap.c:358 -msgid "" -"* Extract lyrics from MIDI files *\n" -"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug " -"will extract and display song lyrics (if available) in the file information " -"dialog." -msgstr "" -"* Erauzi letrak MIDI fitxategietatik *\n" -"MIDI fitxategi batzuk abestien letrak dituzte. Aukera hau gaitzen bada, " -"AMIDI-Plug-ek iruzkinak (egonez gero) erauzi eta bistaratuko ditu " -"fitxategiaren informazioaren elkarrizketa-koadroan." - -#: src/amidi-plug/i_configure-ap.c:375 +#: src/amidi-plug/i_configure-ap.c:333 msgid "" "AMIDI\n" "Plug" @@ -937,235 +223,113 @@ "AMIDI\n" "Plug" -#: src/amidi-plug/i_configure.c:73 +#: src/amidi-plug/i_configure.c:76 msgid "AMIDI-Plug - select file" msgstr "AMIDI-Plug - hautatu fitxategia" -#: src/amidi-plug/i_configure.c:126 +#: src/amidi-plug/i_configure.c:129 msgid "AMIDI-Plug - configuration" msgstr "AMIDI-Plug - konfigurazioa" -#: src/amidi-plug/i_configure-fluidsynth.c:52 +#: src/amidi-plug/i_configure-fluidsynth.c:55 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - hautatu SoundFont fitxategia" -#: src/amidi-plug/i_configure-fluidsynth.c:268 +#: src/amidi-plug/i_configure-fluidsynth.c:270 msgid "FLUIDSYNTH BACKEND CONFIGURATION" msgstr "FluidSynth motorraren konfigurazioa" -#: src/amidi-plug/i_configure-fluidsynth.c:316 +#: src/amidi-plug/i_configure-fluidsynth.c:313 msgid "SoundFont settings" msgstr "SoundFont ezarpenak" -#: src/amidi-plug/i_configure-fluidsynth.c:352 +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Fitxategi-Izena" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 msgid "Size (bytes)" msgstr "Tamaina (byte)" -#: src/amidi-plug/i_configure-fluidsynth.c:401 +#: src/amidi-plug/i_configure-fluidsynth.c:398 msgid "Load SF on player start" msgstr "Kargatu SF erreproduzitzailea abiatzean" -#: src/amidi-plug/i_configure-fluidsynth.c:405 +#: src/amidi-plug/i_configure-fluidsynth.c:402 msgid "Load SF on first midifile play" msgstr "Kargatu SF MIDI fitxategia lehenbizi erreproduzitzean" -#: src/amidi-plug/i_configure-fluidsynth.c:420 +#: src/amidi-plug/i_configure-fluidsynth.c:417 msgid "Synthesizer settings" msgstr "Sintetizadorearen ezarpenak" -#: src/amidi-plug/i_configure-fluidsynth.c:429 +#: src/amidi-plug/i_configure-fluidsynth.c:426 msgid "gain" msgstr "irabazia" -#: src/amidi-plug/i_configure-fluidsynth.c:435 -#: src/amidi-plug/i_configure-fluidsynth.c:463 -#: src/amidi-plug/i_configure-fluidsynth.c:491 -#: src/amidi-plug/i_configure-fluidsynth.c:522 +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 msgid "use default" msgstr "erabili lehenetsia" -#: src/amidi-plug/i_configure-fluidsynth.c:438 -#: src/amidi-plug/i_configure-fluidsynth.c:466 +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 msgid "value:" msgstr "balioa:" -#: src/amidi-plug/i_configure-fluidsynth.c:457 +#: src/amidi-plug/i_configure-fluidsynth.c:454 msgid "poliphony" msgstr "polifonia" -#: src/amidi-plug/i_configure-fluidsynth.c:485 +#: src/amidi-plug/i_configure-fluidsynth.c:482 msgid "reverb" msgstr "reverb" -#: src/amidi-plug/i_configure-fluidsynth.c:494 -#: src/amidi-plug/i_configure-fluidsynth.c:525 +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 msgid "yes" msgstr "bai" -#: src/amidi-plug/i_configure-fluidsynth.c:496 -#: src/amidi-plug/i_configure-fluidsynth.c:527 +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 msgid "no" msgstr "ez" -#: src/amidi-plug/i_configure-fluidsynth.c:516 +#: src/amidi-plug/i_configure-fluidsynth.c:513 msgid "chorus" msgstr "chorus" -#: src/amidi-plug/i_configure-fluidsynth.c:547 +#: src/amidi-plug/i_configure-fluidsynth.c:544 msgid "sample rate" msgstr "lagin-tasa" -#: src/amidi-plug/i_configure-fluidsynth.c:553 +#: src/amidi-plug/i_configure-fluidsynth.c:550 msgid "22050 Hz " msgstr "22050 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:556 +#: src/amidi-plug/i_configure-fluidsynth.c:553 msgid "44100 Hz " msgstr "44100 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:559 +#: src/amidi-plug/i_configure-fluidsynth.c:556 msgid "96000 Hz " msgstr "96000 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:562 +#: src/amidi-plug/i_configure-fluidsynth.c:559 msgid "custom " msgstr "pertsonalizatua " -#: src/amidi-plug/i_configure-fluidsynth.c:571 +#: src/amidi-plug/i_configure-fluidsynth.c:568 msgid "Hz " msgstr "Hz " #: src/amidi-plug/i_configure-fluidsynth.c:621 -msgid "" -"* Select SoundFont files *\n" -"In order to play MIDI with FluidSynth, you need to specify at least one " -"valid SoundFont file here (use absolute paths). The loading order is from " -"the top (first) to the bottom (last)." -msgstr "" -"* Hautatu SoundFont fitxategiak *\n" -"MIDIa FluidSynth-ekin erreproduzitzeko, gutxienez SoundFont fitxategi bat " -"zehaztu behar duzu hemen (erabili bide-izen absolutua). Kargatzeko ordena " -"goitik (aurrenekoa) behera (azkena) da." - -#: src/amidi-plug/i_configure-fluidsynth.c:626 -msgid "" -"* Load SoundFont on player start *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" -"* Kargatu SoundFont erreproduzitzailea abiaraztean *\n" -"Sistemaren abiaduraren arabera, FluidSynth-en SoundFont kargatzeak segundo " -"gutxi batzuk beharko ditu. Aldi bateko zeregina da hau (soundfont kargatuta " -"jarraituko du hura aldatu arte, edo motorra memoritik kendu arte) " -"erreproduzitzailea abiaraztean edo aurreneko MIDI fitxategia erreproduzitu " -"aurretik egin daitekeena (azkenengoa aukera soilik egokiagoa da ez baduzu " -"erreproduzitzailerik erabiltzen MIDI fitxategiak entzuteko)." - -#: src/amidi-plug/i_configure-fluidsynth.c:634 -msgid "" -"* Load SoundFont on first midifile play *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" -"* Kargatu SoundFont aurreneko MIDI fitxategia erreproduzitzean *\n" -"Sistemaren abiaduraren arabera, FluidSynth-en SoundFont kargatzeak segundo " -"gutxi batzuk beharko ditu. Aldi bateko zeregina da hau (soundfont kargatuta " -"jarraituko du hura aldatu arte, edo motorra memoritik kendu arte) " -"erreproduzitzailea abiaraztean edo aurreneko MIDI fitxategia erreproduzitu " -"aurretik egin daitekeena (azkenengoa aukera soilik egokiagoa da ez baduzu " -"erreproduzitzailerik erabiltzen MIDI fitxategiak entzuteko)." - -#: src/amidi-plug/i_configure-fluidsynth.c:642 -msgid "" -"* Synthesizer gain *\n" -"From FluidSynth docs: the gain is applied to the final or master output of " -"the synthesizer; it is set to a low value by default to avoid the saturation " -"of the output when random MIDI files are played." -msgstr "" -"* Sintetizadorearen irabazia *\n" -"FluidSynth-en dokumentaziotik: sintetizadorearen amaierako irteerari edo " -"irteera maisuari aplikatzen zaio irabazia; balio baxu batekin ezartzen da " -"lehenetsi gisa irteeraren saturazioa saihesteko ausazko MIDI fitxategiak " -"erreproduzitzen direnean." - -#: src/amidi-plug/i_configure-fluidsynth.c:647 -msgid "" -"* Synthesizer polyphony *\n" -"From FluidSynth docs: the polyphony defines how many voices can be played in " -"parallel; the number of voices is not necessarily equivalent to the number " -"of notes played simultaneously; indeed, when a note is struck on a specific " -"MIDI channel, the preset on that channel may create several voices, for " -"example, one for the left audio channel and one for the right audio " -"channels; the number of voices activated depends on the number of instrument " -"zones that fall in the correspond to the velocity and key of the played note." -msgstr "" -"* Sintetizadorearen polifonia *\n" -"FluidSynth-en dokumentaziotik: zenbat ahots paraleloki erreproduzi " -"daitezkeen definitzen du polifoniak; ahots kopuruak ez dauka aldi berean " -"erreproduzitutako noten kopuruarekin zer ikusirik derrigorrez; nota bat " -"jotzen denean MIDI kanalean, kanal horretako aurrezarpenak hainbat ahots " -"sortuko ditu, adibidez, bat ezkerreko audioaren kanalarentzako eta beste bat " -"eskuinekoarentzako; aktibatutako ahots kopurua instrumentuen zona " -"(erreproduzitutako notan eta abiaduran erortzen dena) kopuruaren mende dago." - -#: src/amidi-plug/i_configure-fluidsynth.c:657 -#: src/amidi-plug/i_configure-fluidsynth.c:663 -msgid "" -"* Synthesizer reverb *\n" -"From FluidSynth docs: when set to \"yes\" the reverb effects module is " -"activated; note that when the reverb module is active, the amount of signal " -"sent to the reverb module depends on the \"reverb send\" generator defined " -"in the SoundFont." -msgstr "" -"* Sintetizadorearen reverb-a *\n" -"FluidSynth-en dokumentaziotik: \"bai\" ezartzean reverb efektuen moduloa " -"aktibatzen da. Jakin ezazu reverb moduloa aktibo dagoenean, reverb moduloari " -"bidaltzen zaizkion seinale kopurua SoundFont-en definitutako \"reverb bidali" -"\" sortzailean mende dago." - -#: src/amidi-plug/i_configure-fluidsynth.c:669 -#: src/amidi-plug/i_configure-fluidsynth.c:675 -msgid "" -"* Synthesizer chorus *\n" -"From FluidSynth docs: when set to \"yes\" the chorus effects module is " -"activated; note that when the chorus module is active, the amount of signal " -"sent to the chorus module depends on the \"chorus send\" generator defined " -"in the SoundFont." -msgstr "" -"* Sintetizadorearen chorus-a *\n" -"FluidSynth-en dokumentaziotik: \"bai\" bezala ezarritakoan chorus-en " -"efektuen moduloa aktibatzen da. Jakin ezazu chorus moduloa aktibatuta " -"dagoenean, chorus moduloari bidalitako seinu kopurua SoundFont-en " -"definitutako \"chorus bidali\" sortzailean mende dago." - -#: src/amidi-plug/i_configure-fluidsynth.c:681 -#: src/amidi-plug/i_configure-fluidsynth.c:685 -#: src/amidi-plug/i_configure-fluidsynth.c:689 -#: src/amidi-plug/i_configure-fluidsynth.c:693 -#, fuzzy -msgid "" -"* Synthesizer samplerate *\n" -"The sample rate of the audio generated by the synthesizer. You can also " -"specify a custom value in the interval 22050Hz-96000Hz." -msgstr "" -"* Sintetizadorearen lagin-tasa *\n" -"Sintetizadoreak sortutako audioaren lagin-tasa. Balio pertsonalizatua ere " -"zehaz dezakezu 22050Hz-96000Hz barrutian.\n" -"OHARRA: buffer lehenetsiaren parametroak 44100Hz balioarekin ezarrita dago. " -"Lagin-tasa aldatzean bufferraren parametroa egokitu behar da soinuaren " -"kalitate ona lortzeko." - -#: src/amidi-plug/i_configure-fluidsynth.c:701 msgid "FluidSynth Backend not loaded or not available" msgstr "FluidSynth motorra ez da kargatu edo ez dago erabilgarri" -#: src/amidi-plug/i_configure-fluidsynth.c:720 +#: src/amidi-plug/i_configure-fluidsynth.c:640 msgid "" "FluidSynth\n" "backend" @@ -1189,8 +353,7 @@ "TiMidity\n" "motorra" -#: src/amidi-plug/i_fileinfo.c:169 src/bluetooth/gui.c:271 -#: src/sid/xs_interface.c:1769 +#: src/amidi-plug/i_fileinfo.c:169 src/sid/xs_interface.c:1769 msgid "Name:" msgstr "Izena:" @@ -1363,119 +526,119 @@ msgid "Triggers OSD when playback is unpaused." msgstr "OSDa abiarazten du erreprodukzioa jarraitzean." -#: src/aosd/aosd_ui.c:168 +#: src/aosd/aosd_ui.c:180 msgid "Placement" msgstr "Kokalekua" -#: src/aosd/aosd_ui.c:202 +#: src/aosd/aosd_ui.c:219 msgid "Relative X offset:" msgstr "X desplazamendu erlatiboa:" -#: src/aosd/aosd_ui.c:211 +#: src/aosd/aosd_ui.c:228 msgid "Relative Y offset:" msgstr "Y desplazamendu erlatiboa:" -#: src/aosd/aosd_ui.c:220 +#: src/aosd/aosd_ui.c:237 msgid "Max OSD width:" msgstr "OSDaren gehi. zabalera:" -#: src/aosd/aosd_ui.c:233 +#: src/aosd/aosd_ui.c:250 msgid "Multi-Monitor options" msgstr "Pantaila anitzen aukerak" -#: src/aosd/aosd_ui.c:237 +#: src/aosd/aosd_ui.c:254 msgid "Display OSD using:" msgstr "Bistaratu OSDa hau erabiliz:" -#: src/aosd/aosd_ui.c:239 +#: src/aosd/aosd_ui.c:265 msgid "all monitors" msgstr "pantaila guztiak" -#: src/aosd/aosd_ui.c:242 +#: src/aosd/aosd_ui.c:268 #, c-format msgid "monitor %i" msgstr "%i. pantaila" -#: src/aosd/aosd_ui.c:295 +#: src/aosd/aosd_ui.c:323 msgid "Timing (ms)" msgstr "Tenporizadorea (ms)" -#: src/aosd/aosd_ui.c:300 +#: src/aosd/aosd_ui.c:328 msgid "Display:" msgstr "Bistaratu:" -#: src/aosd/aosd_ui.c:305 +#: src/aosd/aosd_ui.c:333 msgid "Fade in:" msgstr "Pixkanaka agertu:" -#: src/aosd/aosd_ui.c:310 +#: src/aosd/aosd_ui.c:338 msgid "Fade out:" msgstr "Iraungitu:" -#: src/aosd/aosd_ui.c:391 +#: src/aosd/aosd_ui.c:419 msgid "Fonts" msgstr "Letra-tipoak" -#: src/aosd/aosd_ui.c:399 +#: src/aosd/aosd_ui.c:427 #, c-format msgid "Font %i:" msgstr "%i letra-tipoa:" -#: src/aosd/aosd_ui.c:416 +#: src/aosd/aosd_ui.c:444 msgid "Shadow" msgstr "Itzala" -#: src/aosd/aosd_ui.c:451 +#: src/aosd/aosd_ui.c:479 msgid "Internationalization" msgstr "Nazioartekotzea" -#: src/aosd/aosd_ui.c:457 +#: src/aosd/aosd_ui.c:485 msgid "Disable UTF-8 conversion of text (in aosd)" msgstr "Desgaitu testuaren UTF-8 bihurketa (aosd-en)" -#: src/aosd/aosd_ui.c:475 +#: src/aosd/aosd_ui.c:503 msgid "Select Skin File" msgstr "Hautatu azalaren fitxategia" -#: src/aosd/aosd_ui.c:586 +#: src/aosd/aosd_ui.c:614 msgid "Render Style" msgstr "Errendatze estiloa" -#: src/aosd/aosd_ui.c:602 +#: src/aosd/aosd_ui.c:630 msgid "Colors" msgstr "Koloreak" -#: src/aosd/aosd_ui.c:615 +#: src/aosd/aosd_ui.c:643 #, c-format msgid "Color %i:" msgstr "%i kolorea:" -#: src/aosd/aosd_ui.c:635 +#: src/aosd/aosd_ui.c:663 msgid "Custom Skin" msgstr "Azal pertsonalizatua" -#: src/aosd/aosd_ui.c:641 +#: src/aosd/aosd_ui.c:669 msgid "Skin file:" msgstr "Azalaren fitxategia:" -#: src/aosd/aosd_ui.c:644 src/sid/xs_interface.c:1044 +#: src/aosd/aosd_ui.c:672 src/sid/xs_interface.c:1044 #: src/sid/xs_interface.c:1236 src/sid/xs_interface.c:1292 msgid "Browse" msgstr "Arakatu" -#: src/aosd/aosd_ui.c:746 +#: src/aosd/aosd_ui.c:774 msgid "Enable trigger" msgstr "Gaitu abiarazlea" -#: src/aosd/aosd_ui.c:773 +#: src/aosd/aosd_ui.c:801 msgid "Event" msgstr "Gertaera" -#: src/aosd/aosd_ui.c:801 +#: src/aosd/aosd_ui.c:829 msgid "Composite manager detected" msgstr "Kudeatzaile konposatua detektatuta" -#: src/aosd/aosd_ui.c:808 +#: src/aosd/aosd_ui.c:836 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -1485,73 +648,73 @@ "Bat exekutatzen dagoela jakin ezean, aktibatu konposaketako kudeatzalea " "bestela OSDak ez du ongi funtzionatuko" -#: src/aosd/aosd_ui.c:816 +#: src/aosd/aosd_ui.c:844 msgid "Composite manager not required for fake transparency" msgstr "Gardentasun faltsua egiteko ez da konposaketako kudeaketak behar" -#: src/aosd/aosd_ui.c:854 +#: src/aosd/aosd_ui.c:882 msgid "Transparency" msgstr "Gardentasuna" -#: src/aosd/aosd_ui.c:860 +#: src/aosd/aosd_ui.c:888 msgid "Fake transparency" msgstr "Gardentasun faltsua" -#: src/aosd/aosd_ui.c:862 +#: src/aosd/aosd_ui.c:890 msgid "Real transparency (requires X Composite Ext.)" msgstr "Egitako gardentasuna (Xen konposaketa hed. behar da)" -#: src/aosd/aosd_ui.c:904 +#: src/aosd/aosd_ui.c:932 msgid "Composite extension not loaded" msgstr "Konposaketako hedapena ez da kargatu" -#: src/aosd/aosd_ui.c:912 +#: src/aosd/aosd_ui.c:940 msgid "Composite extension not available" msgstr "Konposaketako hedapena ez dago erabilgarri" -#: src/aosd/aosd_ui.c:931 +#: src/aosd/aosd_ui.c:959 #, c-format msgid "Audacious OSD" msgstr "Audacious OSDa" -#: src/aosd/aosd_ui.c:1012 +#: src/aosd/aosd_ui.c:1040 msgid "Audacious OSD - configuration" msgstr "Audacious OSDa - konfigurazioa" -#: src/aosd/aosd_ui.c:1033 +#: src/aosd/aosd_ui.c:1061 msgid "Test" msgstr "Proba" -#: src/aosd/aosd_ui.c:1048 +#: src/aosd/aosd_ui.c:1076 msgid "Position" msgstr "Posizioa" -#: src/aosd/aosd_ui.c:1053 +#: src/aosd/aosd_ui.c:1081 msgid "Animation" msgstr "Animazioa" -#: src/aosd/aosd_ui.c:1058 +#: src/aosd/aosd_ui.c:1086 msgid "Text" msgstr "Testua" -#: src/aosd/aosd_ui.c:1063 +#: src/aosd/aosd_ui.c:1091 msgid "Decoration" msgstr "Dekorazioa" -#: src/aosd/aosd_ui.c:1068 +#: src/aosd/aosd_ui.c:1096 msgid "Trigger" msgstr "Abiarazlea" -#: src/aosd/aosd_ui.c:1073 src/cdaudio-ng/configure.c:178 -#: src/modplug/gui/interface.cxx:689 src/sid/xs_interface.c:1302 +#: src/aosd/aosd_ui.c:1101 src/cdaudio-ng/configure.c:171 +#: src/sid/xs_interface.c:1302 msgid "Misc" msgstr "Hainbat" -#: src/aosd/aosd_ui.c:1110 +#: src/aosd/aosd_ui.c:1138 msgid "Audacious OSD - about" msgstr "Audacious OSDa - honi buruz" -#: src/aosd/aosd_ui.c:1140 +#: src/aosd/aosd_ui.c:1168 msgid "" "\n" "Audacious OSD " @@ -1559,7 +722,7 @@ "\n" "Audacious OSDa " -#: src/aosd/aosd_ui.c:1141 +#: src/aosd/aosd_ui.c:1169 msgid "" "\n" "http://www.develia.org/projects.php?p=audacious#aosd\n" @@ -1581,132 +744,6 @@ "http://neugierig.org/software/ghosd/\n" "\n" -#: src/bluetooth/agent.c:356 src/bluetooth/agent.c:397 -#, c-format -msgid "Pairing request for '%s'" -msgstr "" - -#: src/bluetooth/agent.c:544 -#, c-format -msgid "Authorization request for %s" -msgstr "" - -#: src/bluetooth/agent.c:728 -#, c-format -msgid "Created bonding with %s" -msgstr "" - -#: src/bluetooth/agent.c:756 -#, c-format -msgid "Removed bonding with %s" -msgstr "" - -#: src/bluetooth/agent.c:808 -msgid "Device has been switched off" -msgstr "" - -#: src/bluetooth/agent.c:811 -msgid "Device has been made non-discoverable" -msgstr "" - -#: src/bluetooth/agent.c:813 -msgid "Device has been made connectable" -msgstr "" - -#: src/bluetooth/agent.c:815 -msgid "Device has been made discoverable" -msgstr "" - -#: src/bluetooth/agent.c:817 -msgid "Device has been made limited discoverable" -msgstr "" - -#: src/bluetooth/agent.c:819 -msgid "Device has been switched into pairing mode" -msgstr "" - -#: src/bluetooth/bluetooth.c:117 -msgid "Bluetooth headset support plugin" -msgstr "" - -#: src/bluetooth/bluetooth.c:118 -msgid "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the " -"Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" -msgstr "" - -#: src/bluetooth/gui.c:148 -msgid "Producer" -msgstr "" - -#: src/bluetooth/gui.c:221 -#, fuzzy -msgid "Available Headsets" -msgstr "Motor erabilgarriak" - -#: src/bluetooth/gui.c:224 -#, fuzzy -msgid "Current Headset" -msgstr "Unekoa" - -#: src/bluetooth/gui.c:227 -#, fuzzy -msgid "_Refresh" -msgstr "Freskatu tasa" - -#: src/bluetooth/gui.c:231 -#, fuzzy -msgid "_Connect" -msgstr "Konexioa" - -#: src/bluetooth/gui.c:237 -#, fuzzy -msgid "_Close" -msgstr "Itxi" - -#: src/bluetooth/gui.c:274 -msgid "Class" -msgstr "" - -#: src/bluetooth/gui.c:278 -#, fuzzy -msgid "Address:" -msgstr "Gailuaren helbidea" - -#: src/bluetooth/scan_gui.c:69 -msgid "Bonding finish!" -msgstr "" - -#: src/bluetooth/scan_gui.c:76 -msgid "No devices found!" -msgstr "" - -#: src/bluetooth/scan_gui.c:119 -msgid "Scanning..." -msgstr "" - -#: src/bluetooth/scan_gui.c:122 -msgid "Pairing..." -msgstr "" - -#: src/bluetooth/scan_gui.c:138 -#, fuzzy -msgid "Rescan" -msgstr "Berreskaneatu CDa" - -#: src/bluetooth/scan_gui.c:142 src/gtkui/ui_manager.c:66 -#: src/gtkui/ui_manager.c:67 src/hotkey/gui.c:71 src/skins/ui_manager.c:167 -#: src/skins/ui_manager.c:168 -msgid "Play" -msgstr "Erreproduzitu" - #: src/blur_scope/config.c:73 msgid "Blur Scope: Color selection" msgstr "Lausotu esparrua: kolore hautapena" @@ -1715,12 +752,12 @@ msgid "Options:" msgstr "Aukerak:" -#: src/cdaudio-ng/cdaudio-ng.c:278 +#: src/cdaudio-ng/cdaudio-ng.c:264 #, fuzzy msgid "About Audio CD Plugin" msgstr "FLAC audioaren pluginari buruz" -#: src/cdaudio-ng/cdaudio-ng.c:279 +#: src/cdaudio-ng/cdaudio-ng.c:265 #, fuzzy msgid "" "Copyright (c) 2007, by Calin Crisan and The Audacious " @@ -1746,128 +783,163 @@ "\n" "Google Summer of Code 2007 proiektu bat izan da." -#: src/cdaudio-ng/configure.c:155 +#: src/cdaudio-ng/cdaudio-ng.c:558 +#, fuzzy +msgid "Audio CD" +msgstr "Audioa" + +#: src/cdaudio-ng/cdaudio-ng.c:913 +msgid "Drive is empty." +msgstr "" + +#: src/cdaudio-ng/cdaudio-ng.c:915 +msgid "Unsupported disk type." +msgstr "" + +#: src/cdaudio-ng/configure.c:148 msgid "CD Audio Plugin Configuration" msgstr "CD Audioaren pluginaren konfigurazioa" -#: src/cdaudio-ng/configure.c:167 +#: src/cdaudio-ng/configure.c:160 msgid "Digital audio extraction" msgstr "Audio digitalaren erauzketa" -#: src/cdaudio-ng/configure.c:172 +#: src/cdaudio-ng/configure.c:165 msgid "Title information" msgstr "Tituluaren informazioa" -#: src/cdaudio-ng/configure.c:190 +#: src/cdaudio-ng/configure.c:176 #, fuzzy msgid "Disc speed:" msgstr "Erlojuaren abiadura:" -#: src/cdaudio-ng/configure.c:198 +#: src/cdaudio-ng/configure.c:184 msgid "Use cd-text if available" msgstr "Erabili cd-testua erabilgarri badago" -#: src/cdaudio-ng/configure.c:205 +#: src/cdaudio-ng/configure.c:191 msgid "Use CDDB if available" msgstr "Erabili CDDB erabilgarri badago" -#: src/cdaudio-ng/configure.c:211 +#: src/cdaudio-ng/configure.c:197 msgid "Server: " msgstr "Zerbitzaria: " -#: src/cdaudio-ng/configure.c:215 +#: src/cdaudio-ng/configure.c:201 msgid "Path: " msgstr "Bide-izena: " -#: src/cdaudio-ng/configure.c:219 +#: src/cdaudio-ng/configure.c:205 msgid "Port: " msgstr "Ataka: " -#: src/cdaudio-ng/configure.c:232 +#: src/cdaudio-ng/configure.c:218 msgid "Use HTTP instead of CDDBP" msgstr "HTTP erabili CDDBP ordez" -#: src/cdaudio-ng/configure.c:244 +#: src/cdaudio-ng/configure.c:230 msgid "Override default device: " msgstr "Gainidatzi gailu lehenetsia: " -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:131 +#: src/echo_plugin/gui.c:123 src/jack/configure.c:146 src/null/null.c:112 +#: src/stereo_plugin/stereo.c:125 +msgid "Ok" +msgstr "Ados" + +#: src/cdaudio-ng/configure.c:249 src/crystalizer/crystalizer.c:138 +#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 src/null/null.c:113 +#: src/stereo_plugin/stereo.c:132 +msgid "Cancel" +msgstr "Utzi" + +#: src/cd-menu-items/cd-menu-items.c:34 #, fuzzy msgid "Play CD" msgstr "Erreproduzitu" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Add CD" msgstr "Gehitu CDa" -#: src/compressor/plugin.c:58 +#: src/compressor/plugin.c:67 #, fuzzy msgid "About Dynamic Range Compression Plugin" msgstr "Estra Estereo plugina" -#: src/compressor/plugin.c:91 +#: src/compressor/plugin.c:99 #, fuzzy msgid "Dynamic Range Compressor Preferences" msgstr "AudioKonpresioa hobespenak" -#: src/compressor/plugin.c:103 +#: src/compressor/plugin.c:111 #, fuzzy -msgid "Target volume:" +msgid "Center volume:" msgstr "Aldatu bolumena" -#: src/compressor/plugin.c:116 -#, fuzzy -msgid "Effect strength:" -msgstr "Efektuaren intentsitatea:" +#: src/compressor/plugin.c:124 +msgid "Dynamic range:" +msgstr "" -#: src/console/configure.c:137 +#: src/console/configure.c:138 #, fuzzy msgid "Game Console Music Decoder" msgstr "Kontsolako musika dekodetzailea" -#: src/console/configure.c:171 +#: src/console/configure.c:155 +msgid "General" +msgstr "Orokorra" + +#: src/console/configure.c:157 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "Erreprodukzioa" + +#: src/console/configure.c:172 msgid "Bass:" msgstr "Baxua:" -#: src/console/configure.c:175 src/console/configure.c:186 -#: src/console/configure.c:207 +#: src/console/configure.c:176 src/console/configure.c:187 +#: src/console/configure.c:208 msgid "secs" msgstr "seg" -#: src/console/configure.c:182 +#: src/console/configure.c:183 msgid "Treble:" msgstr "Altua:" -#: src/console/configure.c:203 +#: src/console/configure.c:204 msgid "Default song length:" msgstr "Abestiaren luzera lehenetsia:" -#: src/console/configure.c:209 src/modplug/gui/interface.cxx:269 -#: src/sid/xs_interface.c:666 +#: src/console/configure.c:210 src/sid/xs_interface.c:666 msgid "Resampling" msgstr "Birlagintzea" -#: src/console/configure.c:215 +#: src/console/configure.c:216 msgid "Enable audio resampling" msgstr "Gaitu audioa berriro lagintzea" -#: src/console/configure.c:230 +#: src/console/configure.c:231 msgid "Resampling rate:" msgstr "Birlagintze-tasa:" -#: src/console/configure.c:245 +#: src/console/configure.c:235 src/sid/xs_interface.c:354 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:246 msgid "SPC" msgstr "SPC" -#: src/console/configure.c:246 +#: src/console/configure.c:247 msgid "Ignore length from SPC tags" msgstr "Ezikusi egin SPCko etiketetako luzerari" -#: src/console/configure.c:247 +#: src/console/configure.c:248 msgid "Increase reverb" msgstr "Handiagotu reverb-a" -#: src/console/configure.c:272 +#: src/console/configure.c:273 msgid "" "The default song length, expressed in seconds, is used for songs that do not " "provide length information (i.e. looping tracks)." @@ -1894,31 +966,31 @@ "Audacious-entzako garapena: William Pitcock , \n" " Shay Green " -#: src/crossfade/plugin.c:51 +#: src/crossfade/plugin.c:65 #, fuzzy msgid "About Crossfade" msgstr "%s(r)i buruz" -#: src/crossfade/plugin.c:84 +#: src/crossfade/plugin.c:97 #, fuzzy msgid "Crossfade Preferences" msgstr "Hobespenak" -#: src/crossfade/plugin.c:95 +#: src/crossfade/plugin.c:109 msgid "Overlap (in seconds):" msgstr "" -#: src/crossfade/plugin.c:129 src/crossfade/plugin.c:137 +#: src/crossfade/plugin.c:140 src/crossfade/plugin.c:146 #, fuzzy msgid "Crossfade Error" msgstr "Scrobbler errorea" -#: src/crossfade/plugin.c:130 +#: src/crossfade/plugin.c:140 msgid "" "Crossfading failed because the songs had a different number of channels." msgstr "" -#: src/crossfade/plugin.c:138 +#: src/crossfade/plugin.c:148 msgid "" "Crossfading failed because the songs had different sample rates.\n" "\n" @@ -1926,20 +998,24 @@ "same rate." msgstr "" -#: src/crystalizer/crystalizer.c:104 +#: src/crystalizer/crystalizer.c:108 msgid "Configure Crystalizer" msgstr "Konfiguratu Crystalizer" -#: src/crystalizer/crystalizer.c:106 src/stereo_plugin/stereo.c:102 +#: src/crystalizer/crystalizer.c:110 src/stereo_plugin/stereo.c:104 msgid "Effect intensity:" msgstr "Efektuaren intentsitatea:" -#: src/crystalizer/crystalizer.c:143 src/echo_plugin/gui.c:137 -#: src/modplug/gui/interface.cxx:709 src/stereo_plugin/stereo.c:139 +#: src/crystalizer/crystalizer.c:144 src/echo_plugin/gui.c:136 +#: src/stereo_plugin/stereo.c:138 msgid "Apply" msgstr "Aplikatu" -#: src/echo_plugin/gui.c:14 +#: src/daemon/daemon.c:58 +msgid "Daemon Interface (like old headless mode)" +msgstr "" + +#: src/echo_plugin/gui.c:15 msgid "" "Echo Plugin\n" "By Johan Levin 1999.\n" @@ -1951,412 +1027,52 @@ "\n" "Surround-aren ohiartzuna Carl van Schaik 1999" -#: src/echo_plugin/gui.c:26 +#: src/echo_plugin/gui.c:27 msgid "About Echo Plugin" msgstr "Echo pluginari buruz" -#: src/echo_plugin/gui.c:69 +#: src/echo_plugin/gui.c:72 msgid "Configure Echo" msgstr "Konfiguratu Echo" -#: src/echo_plugin/gui.c:82 +#: src/echo_plugin/gui.c:88 msgid "Delay: (ms)" msgstr "Atzerapena (ms): " -#: src/echo_plugin/gui.c:87 +#: src/echo_plugin/gui.c:93 msgid "Feedback: (%)" msgstr "Berrelikadura (%): " -#: src/echo_plugin/gui.c:92 +#: src/echo_plugin/gui.c:98 msgid "Volume: (%)" msgstr "Bolumena (%):" -#: src/evdev-plug/ed.c:60 -msgid "Playback->Play" -msgstr "Erreprodukzioa->Erreproduzitu" - -#: src/evdev-plug/ed.c:61 -msgid "Playback->Stop" -msgstr "Erreprodukzioa->Gelditu" - -#: src/evdev-plug/ed.c:62 -msgid "Playback->Pause" -msgstr "Erreprodukzioa->Pausarazi" - -#: src/evdev-plug/ed.c:63 -msgid "Playback->Prev" -msgstr "Erreprodukzioa->Aurrekoa" - -#: src/evdev-plug/ed.c:64 -msgid "Playback->Next" -msgstr "Erreprodukzioa->Hurrengoa" - -#: src/evdev-plug/ed.c:65 -msgid "Playback->Eject" -msgstr "Erreprodukzioa->Egotzi" - -#: src/evdev-plug/ed.c:67 -msgid "Playlist->Repeat" -msgstr "Erreprodukzio-zerrenda->Errepikatu" - -#: src/evdev-plug/ed.c:68 -msgid "Playlist->Shuffle" -msgstr "Erreprodukzio-zerrenda->Ausaz" - -#: src/evdev-plug/ed.c:70 -msgid "Volume->Up_5" -msgstr "Bolumena->Igo _5" - -#: src/evdev-plug/ed.c:71 -msgid "Volume->Down_5" -msgstr "Bolumena->Jeitsi _5" - -#: src/evdev-plug/ed.c:72 -msgid "Volume->Up_10" -msgstr "Bolumena->Igo _10" - -#: src/evdev-plug/ed.c:73 -msgid "Volume->Down_10" -msgstr "Bolumena->Jeitsi _10" - -#: src/evdev-plug/ed.c:74 -msgid "Volume->Mute" -msgstr "Bolumena->Mututu" - -#: src/evdev-plug/ed.c:76 -msgid "Window->Main" -msgstr "Leihoa->Nagusia" - -#: src/evdev-plug/ed.c:77 -msgid "Window->Playlist" -msgstr "Leihoa->Erreprodukzio-zerrenda" - -#: src/evdev-plug/ed.c:78 -msgid "Window->Equalizer" -msgstr "Leihoa->Ekualizadorea" - -#: src/evdev-plug/ed.c:79 -msgid "Window->JumpToFile" -msgstr "Leihoa->Jauzi fitxategira" - -#: src/evdev-plug/ed_internals.c:94 -#, c-format -msgid "" -"event-device-plugin: unable to open device file %s , skipping this device; " -"check that the file exists and that you have read permission for it\n" -msgstr "" -"event-device-plugin: ezin da gailuko %s fitxategia ireki, gailu hau " -"saltatzen. Egiaztatu fitxategia existitzen dela eta hura irakurtzeko " -"baimenak dituzula.\n" - -#: src/evdev-plug/ed_internals.c:103 -#, c-format -msgid "" -"event-device-plugin: unable to create a io_channel for device file %s ," -"skipping this device\n" -msgstr "" -"event-device-plugin: ezin da io_channel sortu gailuko %s fitxategiarentzako." -"Gailua saltatzen\n" - -#: src/evdev-plug/ed_internals.c:342 -msgid "" -"event-device-plugin: unable to open /proc/bus/input/devices , automatic " -"detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: ezin da /proc/bus/input/devices ireki, gertaeren " -"gailuaren detekzio automatikoak ez du funtzionatuko.\n" - -#: src/evdev-plug/ed_internals.c:351 -msgid "" -"event-device-plugin: unable to open a io_channel for /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: ezin da io_channel ireki /proc/bus/input/devices-" -"rentzako, gertaeren gailuaren detekzio automatikoak ez du funtzionatuko.\n" - -#: src/evdev-plug/ed_internals.c:361 -msgid "" -"event-device-plugin: an error occurred while reading /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: errorea gertatu da /proc/bus/input/devices irakurtzean, " -"gertaeren gailuaren detekzio automatikoak ez du funtzionatuko.\n" - -#: src/evdev-plug/ed_internals.c:424 -#, c-format -msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" -msgstr "event-device-plugin: ez da %s aurkitu /dev/input-en, saltatzen.\n" - -#: src/evdev-plug/ed_internals.c:489 src/evdev-plug/ed_internals.c:583 -#, c-format -msgid "" -"event-device-plugin: unable to load config file %s , default settings will " -"be used.\n" -msgstr "" -"event-device-plugin: ezin da %s konfigurazio-fitxategia kargatu, ezarpen " -"lehenetsiak erabiliko dira.\n" - -#: src/evdev-plug/ed_internals.c:535 -#, c-format -msgid "" -"event-device-plugin: incomplete information in config file for device \"%s" -"\" , skipping.\n" -msgstr "" -"event-device-plugin: osatu gabeko informazioa \"%s\" gailuaren " -"konfigurazioko fitxategian, saltatzen.\n" - -#: src/evdev-plug/ed_internals.c:604 src/evdev-plug/ed_internals.c:936 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_active value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: konfigurazioa, ezin da \"%s\" gailuaren is_active " -"balioa lortu, saltatzen.\n" - -#: src/evdev-plug/ed_internals.c:840 -#, c-format -msgid "" -"event-device-plugin: unable to access local directory %s , settings will not " -"be saved.\n" -msgstr "" -"event-device-plugin: ezin da lokaleko %s direktorioa atzitu, ezarpenak ez " -"dira gordeko.\n" - -#: src/evdev-plug/ed_internals.c:890 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get filename value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: konfigurazioa, ezin da \"%s\" gailuaren fitxategi-" -"izenaren balioa, saltatzen.\n" - -#: src/evdev-plug/ed_internals.c:906 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get phys value for device \"%s" -"\", skipping it.\n" -msgstr "" -"event-device-plugin: konfigurazioa, ezin da \"%s\" gailuaren balio fisikoa a " -"lortu, saltatzen.\n" - -#: src/evdev-plug/ed_internals.c:922 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_custom value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: konfigurazioa, ezin da \"%s\" gailuaren is_custom " -"balioa lortu, saltatzen.\n" - -#: src/evdev-plug/ed_internals.c:946 -#, c-format -msgid "" -"event-device-plugin: configuration, unexpected value for device \"%s\", " -"skipping it.\n" -msgstr "" -"event-device-plugin: konfigurazioa, \"%s\" gailuaren ustekabeko balioa, " -"saltatzen.\n" - -#: src/evdev-plug/ed_ui.c:212 -#, fuzzy -msgid "Detected" -msgstr "Detektatu abestiaren amaiera" - -#: src/evdev-plug/ed_ui.c:217 -#, fuzzy -msgid "Custom" -msgstr "pertsonalizatua " - -#: src/evdev-plug/ed_ui.c:223 -#, fuzzy -msgid "Not Detected" -msgstr "Ordenatu hautatutakoak" - -#: src/evdev-plug/ed_ui.c:275 src/evdev-plug/ed_ui.c:411 -#: src/evdev-plug/ed_ui.c:874 -msgid "Information" -msgstr "Informazioa" - -#: src/evdev-plug/ed_ui.c:276 -msgid "" -"Cannot open bindings window for a not-detected device.\n" -"Ensure that the device has been correctly plugged in." -msgstr "" -"Ezin da detektatu ez den gailuaren loturen leihoa ireki.\n" -"Ziurtatu gailua ongi konektatuta dagoela." - -#: src/evdev-plug/ed_ui.c:319 -msgid "Error" -msgstr "Errorea" - -#: src/evdev-plug/ed_ui.c:320 -msgid "" -"Unable to open selected device.\n" -"Please check read permissions on device file." -msgstr "" -"Ezin da hautatutako gailua ireki.\n" -"Egiaztatu gailuko fitxategia irakurtzeko baimenak dituzula." - -#: src/evdev-plug/ed_ui.c:341 -msgid "EvDev-Plug - Add custom device" -msgstr "EvDev-Plug - Gehitu gailu pertsonalizatua" - -#: src/evdev-plug/ed_ui.c:353 -msgid "" -"EvDev-Plug tries to automatically detect and update information about\n" -"event devices available on the system.\n" -"However, if auto-detect doesn't work for your system, or you have event\n" -"devices in a non-standard location (currently they're only searched in\n" -"/dev/input/ ), you may want to add a custom device, explicitly specifying\n" -"name and device file." -msgstr "" -"Sisteman erabilgarri dauden gailuen gertaerak automatikoki \n" -"detektatu eta informazioa eguneratzen saiatzen da EvDev-Plug.\n" -"Hala ere, detekzio automatikoak ez badu funtzionatzen sisteman,\n" -"edo gertaeren gailuak leku ez estandar batean badaude (unean \n" -"/dev/input-en soilik egiten da bilaketa), gailu pertsonalizatua gehitzea\n" -"nahi izan dezakezu gailuaren izena eta fitxategia zehaztuz. " - -#: src/evdev-plug/ed_ui.c:361 -msgid "Device name:" -msgstr "Gailuaren izena:" - -#: src/evdev-plug/ed_ui.c:365 -msgid "Device file:" -msgstr "Gailuaren fitxategia:" - -#: src/evdev-plug/ed_ui.c:404 -#, fuzzy -msgid "(custom)" -msgstr "pertsonalizatua " - -#: src/evdev-plug/ed_ui.c:412 -msgid "" -"Please specify both name and filename.\n" -"Filename must be specified with absolute path." -msgstr "" -"Zehaztu bai izena bai fitxategi-izena.\n" -"Fitxategi-izenak bide-izen absolutua eduki behar du." - -#: src/evdev-plug/ed_ui.c:447 -msgid "Do you want to remove the existing configuration for selected device?\n" -msgstr "" -"Nahi duzu hautatutako gailuaren existitzen den konfigurazioa kentzea?\n" - -#: src/evdev-plug/ed_ui.c:466 -msgid "Do you want to remove the selected custom device?\n" -msgstr "Nahi duzu hautatutako gailu pertsonalizatua kentzea?\n" - -#: src/evdev-plug/ed_ui.c:612 -msgid "EvDev-Plug - Configuration" -msgstr "EvDev-Plug - Konfigurazioa" - -#: src/evdev-plug/ed_ui.c:651 -msgid "Active" -msgstr "Aktibo" - -#: src/evdev-plug/ed_ui.c:655 src/sun/configure.c:486 -msgid "Status" -msgstr "Egoera" - -#: src/evdev-plug/ed_ui.c:664 -msgid "Device Name" -msgstr "Gailuaren izena" - -#: src/evdev-plug/ed_ui.c:668 -msgid "Device File" -msgstr "Gailuaren fitxategia" - -#: src/evdev-plug/ed_ui.c:672 -msgid "Device Address" -msgstr "Gailuaren helbidea" - -#: src/evdev-plug/ed_ui.c:689 -msgid "_Bindings" -msgstr "_Loturak" - -#: src/evdev-plug/ed_ui.c:838 -msgid "" -"Press a key of your device to bind it;\n" -"if no key is pressed in five seconds, this window\n" -"will close without binding changes." -msgstr "" -"Sakatu gailuaren tekla bat lotzeko; \n" -"bost segundotan ez bada teklarik sakatzen,\n" -"leiho hau itxi egingo da loturak aldatu gabe." - -#: src/evdev-plug/ed_ui.c:875 -msgid "" -"This input event has been already assigned.\n" -"\n" -"It's not possible to assign multiple actions to the same input event " -"(although it's possible to assign the same action to multiple events)." -msgstr "" -"Sarrerako gertaera hau jadanik lotuta dago.\n" -"\n" -"Ezin da hainbat ekintza sarrerako gertaera berdinari esleitu (nahiz eta " -"ekintza berdina hainbat gertaerei esleitzea posiblea den)." - -#: src/evdev-plug/ed_ui.c:1323 -msgid "EvDev-Plug - Bindings Configuration" -msgstr "EvDev-Plug - Loturen konfigurazoa" - -#: src/evdev-plug/ed_ui.c:1363 -msgid "Name: " -msgstr "Izena: " - -#: src/evdev-plug/ed_ui.c:1372 -msgid "Filename: " -msgstr "Fitxategi-izena: " - -#: src/evdev-plug/ed_ui.c:1381 -msgid "Phys.Address: " -msgstr "Helbide fisikoa: " - -#: src/evdev-plug/ed_ui.c:1460 -msgid "EvDev-Plug - about" -msgstr "EvDev-Plug - honi buruz" - -#: src/evdev-plug/ed_ui.c:1491 -msgid "" -"\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"written by Giacomo Lozito\n" -msgstr "" -"\n" -"erreproduzitzailearen urruneko kontrola gertaera-gailuen bidez.\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"garatzailea: Giacomo Lozito\n" - -#: src/ffaudio/ffaudio-core.c:662 +#: src/ffaudio/ffaudio-core.c:763 #, c-format msgid "" "Multi-format audio decoding plugin for Audacious based on\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" "Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" "\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" "Audacious plugin by:\n" " William Pitcock ,\n" " Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" msgstr "" -#: src/ffaudio/ffaudio-core.c:675 +#: src/ffaudio/ffaudio-core.c:777 #, fuzzy msgid "About FFaudio Plugin" msgstr "FLAC audioaren pluginari buruz" -#: src/filewriter/filewriter.c:180 +#: src/filewriter/filewriter.c:155 msgid "About FileWriter-Plugin" msgstr "FileWriter-pluginari buruz" -#: src/filewriter/filewriter.c:181 +#: src/filewriter/filewriter.c:156 #, fuzzy msgid "" "FileWriter-Plugin\n" @@ -2393,250 +1109,208 @@ "02110-1301,\n" "USA." -#: src/filewriter/filewriter.c:466 +#: src/filewriter/filewriter.c:450 msgid "File Writer Configuration" msgstr "FileWriter konfigurazioa" -#: src/filewriter/filewriter.c:478 +#: src/filewriter/filewriter.c:462 msgid "Output file format:" msgstr "Irteerako fitxategi-formatua:" -#: src/filewriter/filewriter.c:496 src/ladspa/ladspa.c:1058 +#: src/filewriter/filewriter.c:480 msgid "Configure" msgstr "Konfiguratu" -#: src/filewriter/filewriter.c:511 +#: src/filewriter/filewriter.c:495 msgid "Save into original directory" msgstr "Gorde jatorrizko direktorioan" -#: src/filewriter/filewriter.c:516 +#: src/filewriter/filewriter.c:500 msgid "Save into custom directory" msgstr "Gorde direktorio pertsonalizatuan" -#: src/filewriter/filewriter.c:528 +#: src/filewriter/filewriter.c:510 msgid "Output file folder:" msgstr "Irteerako fitxategiaren karpeta:" -#: src/filewriter/filewriter.c:532 +#: src/filewriter/filewriter.c:514 msgid "Pick a folder" msgstr "Hautatu karpeta" -#: src/filewriter/filewriter.c:551 +#: src/filewriter/filewriter.c:533 msgid "Get filename from:" msgstr "Lortu fitxategi-izena hemendik:" -#: src/filewriter/filewriter.c:554 +#: src/filewriter/filewriter.c:536 msgid "original file tags" msgstr "jatorrizko fitxategi-etiketak" -#: src/filewriter/filewriter.c:560 +#: src/filewriter/filewriter.c:542 msgid "original filename" msgstr "jatorrizko fitxategi-izena" -#: src/filewriter/filewriter.c:570 +#: src/filewriter/filewriter.c:552 msgid "Don't strip file name extension" msgstr "Ez kendu fitxategi-izenaren luzapena" -#: src/filewriter/filewriter.c:574 -msgid "" -"If enabled, the extension from the original filename will not be stripped " -"before adding the new file extension to the end." -msgstr "" -"Gaituta badago, jatorrizko fitxategi-izenaren luzapena ez da kenduko " -"fitxategiaren luzapen berria amaieran gehitu aurretik." - -#: src/filewriter/filewriter.c:588 +#: src/filewriter/filewriter.c:567 msgid "Prepend track number to filename" msgstr "Jarri pistaren zenbakia fitxategi-izenaren aurretik" -#: src/filewriter/mp3.c:710 +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:783 +msgid "Auto" +msgstr "Automatikoa" + +#: src/filewriter/mp3.c:38 +#, fuzzy +msgid "Joint Stereo" +msgstr "Estereo-lotura" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 src/sid/xs_interface.c:308 +msgid "Stereo" +msgstr "Estereoa" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 src/sid/xs_interface.c:301 +msgid "Mono" +msgstr "Monoa" + +#: src/filewriter/mp3.c:724 msgid "MP3 Configuration" msgstr "MP3 konfigurazioa" -#: src/filewriter/mp3.c:737 +#: src/filewriter/mp3.c:747 msgid "Algorithm Quality:" msgstr "Algoritmoaren kalitatea:" -#: src/filewriter/mp3.c:759 -msgid "" -"best/slowest:0;\n" -"worst/fastest:9;\n" -"recommended:2;\n" -"default:5;" -msgstr "" -"onena/motelena:0;\n" -"txarrena/azkarrena:9;\n" -"gomendatua:2;\n" -"lehenetsia:5;" - -#: src/filewriter/mp3.c:767 +#: src/filewriter/mp3.c:772 msgid "Output Samplerate:" msgstr "Irteerako lagin-tasa:" -#: src/filewriter/mp3.c:778 src/filewriter/mp3.c:919 -msgid "Auto" -msgstr "Automatikoa" - #: src/filewriter/mp3.c:800 msgid "(Hz)" msgstr "(Hz)" -#: src/filewriter/mp3.c:812 +#: src/filewriter/mp3.c:807 msgid "Bitrate / Compression ratio:" msgstr "Bit-tasa / Konpresio-tasa:" -#: src/filewriter/mp3.c:838 +#: src/filewriter/mp3.c:831 msgid "Bitrate (kbps):" msgstr "Bit-tasa (kbps):" -#: src/filewriter/mp3.c:879 +#: src/filewriter/mp3.c:864 msgid "Compression ratio:" msgstr "Konpresio-tasa:" -#: src/filewriter/mp3.c:909 +#: src/filewriter/mp3.c:888 msgid "Audio Mode:" msgstr "Audio modua:" -#: src/filewriter/mp3.c:924 -msgid "Joint-Stereo" -msgstr "Estereo-lotura" - -#: src/filewriter/mp3.c:967 +#: src/filewriter/mp3.c:913 msgid "Misc:" msgstr "Hainbat:" -#: src/filewriter/mp3.c:978 +#: src/filewriter/mp3.c:924 msgid "Enforce strict ISO complience" msgstr "Derrigortu ISOa betetzen duela" -#: src/filewriter/mp3.c:989 +#: src/filewriter/mp3.c:935 msgid "Error protection" msgstr "Erroreen aurkako babesa" -#: src/filewriter/mp3.c:1001 -msgid "Adds 16 bit checksum to every frame" -msgstr "Gehitu 16 bit-eko kontrol-batura bilbe bakoitzari" - -#: src/filewriter/mp3.c:1006 src/filewriter/vorbis.c:247 -#: src/modplug/gui/interface.cxx:320 +#: src/filewriter/mp3.c:947 src/filewriter/vorbis.c:245 msgid "Quality" msgstr "Kalitatea" -#: src/filewriter/mp3.c:1018 +#: src/filewriter/mp3.c:957 msgid "Enable VBR/ABR" msgstr "Gaitu VBR/ABR" -#: src/filewriter/mp3.c:1030 +#: src/filewriter/mp3.c:967 msgid "Type:" msgstr "Mota:" -#: src/filewriter/mp3.c:1041 -msgid "Variable bitrate" -msgstr "Bit-tasa aldagarria (VBR)" - -#: src/filewriter/mp3.c:1053 -msgid "Average bitrate" -msgstr "Batez besteko bit-tasa" - -#: src/filewriter/mp3.c:1067 +#: src/filewriter/mp3.c:1000 msgid "VBR Options:" msgstr "VBR aukerak:" -#: src/filewriter/mp3.c:1083 +#: src/filewriter/mp3.c:1016 msgid "Minimum bitrate (kbps):" msgstr "Gutxieneko bit-tasa (kbps):" -#: src/filewriter/mp3.c:1119 +#: src/filewriter/mp3.c:1043 msgid "Maximum bitrate (kbps):" msgstr "Gehienezko bit-tasa (kbps):" -#: src/filewriter/mp3.c:1151 +#: src/filewriter/mp3.c:1066 msgid "Strictly enforce minimum bitrate" msgstr "Derrigortu gutxieneko bit-tasa" -#: src/filewriter/mp3.c:1153 -msgid "" -"For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/" -"mp3 player)" -msgstr "" -"MP3ren bit-tasa baxua onartzen ez duten erreproduzitzaileetan erabiltzeko " -"(Apex AD600-A DVD/ mp3 erreproduzigailua)" - -#: src/filewriter/mp3.c:1166 +#: src/filewriter/mp3.c:1078 msgid "ABR Options:" msgstr "ABR aukerak:" -#: src/filewriter/mp3.c:1176 +#: src/filewriter/mp3.c:1088 msgid "Average bitrate (kbps):" msgstr "Batez besteko bit-tasa (kbps):" -#: src/filewriter/mp3.c:1213 +#: src/filewriter/mp3.c:1116 msgid "VBR quality level:" msgstr "VBR kalitate-maila:" -#: src/filewriter/mp3.c:1228 -msgid "" -"highest:0;\n" -"lowest:9;\n" -"default:4;" -msgstr "" -"altuena:0;\n" -"baxuena:9;\n" -"lehenetsia:4;" - -#: src/filewriter/mp3.c:1236 +#: src/filewriter/mp3.c:1135 msgid "Don't write Xing VBR header" msgstr "Ez idatzi Xing VBR goiburukoa" -#: src/filewriter/mp3.c:1250 +#: src/filewriter/mp3.c:1149 msgid "VBR/ABR" msgstr "VBR/ABR" -#: src/filewriter/mp3.c:1262 +#: src/filewriter/mp3.c:1159 msgid "Frame params:" msgstr "Bilbearen parametroak:" -#: src/filewriter/mp3.c:1274 +#: src/filewriter/mp3.c:1171 msgid "Mark as copyright" msgstr "Markatu copyright gisa" -#: src/filewriter/mp3.c:1285 +#: src/filewriter/mp3.c:1182 msgid "Mark as original" msgstr "Markatu jatorrizko gisa" -#: src/filewriter/mp3.c:1297 +#: src/filewriter/mp3.c:1194 msgid "ID3 params:" msgstr "ID3 parametroak:" -#: src/filewriter/mp3.c:1308 +#: src/filewriter/mp3.c:1205 msgid "Force addition of version 2 tag" msgstr "Derrigortu v2 etiketa gehitzea" -#: src/filewriter/mp3.c:1318 +#: src/filewriter/mp3.c:1215 msgid "Only add v1 tag" msgstr "Gehitu v1 etiketa soilik" -#: src/filewriter/mp3.c:1325 +#: src/filewriter/mp3.c:1222 msgid "Only add v2 tag" msgstr "Gehitu v2 etiketa soilik" -#: src/filewriter/mp3.c:1346 +#: src/filewriter/mp3.c:1243 msgid "Tags" msgstr "Etiketak" -#: src/filewriter/vorbis.c:240 +#: src/filewriter/vorbis.c:238 msgid "Vorbis Encoder Configuration" msgstr "Vorbis kodetzailearen konfigurazioa" -#: src/filewriter/vorbis.c:260 +#: src/filewriter/vorbis.c:258 msgid "Quality level (0 - 10):" msgstr "Kalitate maila (0 - 10):" -#: src/flacng/plugin.c:457 -msgid "FLAC Audio Plugin " -msgstr "FLAC audioaren plugina" +#: src/flacng/plugin.c:379 +msgid "About FLAC Audio Plugin" +msgstr "FLAC audioaren pluginari buruz" -#: src/flacng/plugin.c:458 +#: src/flacng/plugin.c:380 msgid "" "\n" "\n" @@ -2652,15 +1326,11 @@ "\n" "http://www.skytale.net/projects/bmp-flac2/" -#: src/flacng/plugin.c:464 -msgid "About FLAC Audio Plugin" -msgstr "FLAC audioaren pluginari buruz" - -#: src/gnomeshortcuts/gnomeshortcuts.c:306 +#: src/gnomeshortcuts/gnomeshortcuts.c:303 msgid "About Gnome Shortcut Plugin" msgstr "GNOMEko lasterbideen pluginari buruz" -#: src/gnomeshortcuts/gnomeshortcuts.c:307 +#: src/gnomeshortcuts/gnomeshortcuts.c:304 msgid "" "Gnome Shortcut Plugin\n" "Let's you control the player with Gnome's shortcuts.\n" @@ -2674,498 +1344,505 @@ "Copyright-a (C) 2007-2008 Sascha Hlusiak \n" "\n" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:273 +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 msgid "Open Files" msgstr "" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:271 #, fuzzy msgid "Add Files" msgstr "Gehitu fitxategiak..." -#: src/gntui/gntui.c:271 +#: src/gntui/gntui.c:270 #, fuzzy msgid "Audacious2" msgstr "Audacious" -#: src/gntui/gntui.c:312 +#: src/gntui/gntui.c:311 msgid "gnt interface" msgstr "" -#: src/gtkui/actions.c:257 src/skins/ui_main.c:818 -msgid "Can't jump to time when no track is being played.\n" -msgstr "Ezin da denboran jauzirik egin pista ez denean erreproduzitzen ari.\n" - -#: src/gtkui/actions.c:272 src/gtkui/ui_manager.c:204 -#: src/gtkui/ui_manager.c:205 src/skins/ui_main.c:833 -#: src/skins/ui_manager.c:410 src/skins/ui_manager.c:411 -msgid "Jump to Time" -msgstr "Jauzi denborara" - -#: src/gtkui/actions.c:289 src/skins/ui_main.c:854 -msgid "minutes:seconds" -msgstr "minutu:segundo" - -#: src/gtkui/actions.c:299 src/skins/ui_main.c:864 -msgid "Track length:" -msgstr "Pistaren luzera:" +#: src/gtkui/columns.c:36 +#, fuzzy +msgid "Entry number" +msgstr "Pista zenbakia:" -#: src/gtkui/actions.c:610 src/skins/ui_playlist.c:648 -#, c-format -msgid "Error writing playlist \"%s\": %s" -msgstr "Errorea \"%s\" erreprodukzio-zerrenda idaztean: %s" +#: src/gtkui/columns.c:36 src/sid/xs_interface.c:1103 +msgid "Title" +msgstr "Titulua" -#: src/gtkui/actions.c:625 src/skins/ui_playlist.c:670 -#, c-format -msgid "%s already exist. Continue?" -msgstr "%s badago lehendik ere. Jarraitu?" +#: src/gtkui/columns.c:37 +#, fuzzy +msgid "Artist" +msgstr "Artista:" -#: src/gtkui/actions.c:651 src/skins/ui_manager.c:214 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "Export Playlist" -msgstr "Kargatu erreprodukzio-zerrenda" +msgid "Year" +msgstr "Urtea:" -#: src/gtkui/actions.c:723 src/skins/ui_manager.c:211 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "Import Playlist" -msgstr "Kargatu erreprodukzio-zerrenda" +msgid "Album" +msgstr "Albuma: " -#: src/gtkui/ui_gtk.c:72 -msgid "GTK Interface" -msgstr "" +#: src/gtkui/columns.c:37 +#, fuzzy +msgid "Track" +msgstr "Pista:" -#: src/gtkui/ui_gtk.c:281 src/skins/ui_main.c:388 -#, c-format -msgid "%s - Audacious" -msgstr "%s - Audacious" +#: src/gtkui/columns.c:37 +#, fuzzy +msgid "Queue position" +msgstr "Posizioa" -#: src/gtkui/ui_gtk.c:287 src/skins/ui_main.c:390 src/skins/ui_main.c:2166 -msgid "Audacious" -msgstr "Audacious" +#: src/gtkui/columns.c:38 +#, fuzzy +msgid "Length" +msgstr "Abestiaren luzera" -#: src/gtkui/ui_manager.c:35 src/gtkui/ui_manager.c:36 -#: src/skins/ui_manager.c:53 src/skins/ui_manager.c:54 -msgid "Stop after Current Song" -msgstr "Gelditu uneko abestiaren ondoren" +#: src/gtkui/columns.c:38 +#, fuzzy +msgid "File path" +msgstr "Fitxategi-izenaren arabera" -#: src/gtkui/ui_manager.c:38 src/gtkui/ui_manager.c:39 -#: src/skins/ui_manager.c:59 src/skins/ui_manager.c:60 -msgid "Repeat" -msgstr "Errepikatu" +#: src/gtkui/columns.c:38 +#, fuzzy +msgid "File name" +msgstr "Fitxategi-Izena" -#: src/gtkui/ui_manager.c:41 src/gtkui/ui_manager.c:42 -#: src/skins/ui_manager.c:62 src/skins/ui_manager.c:63 -msgid "Shuffle" -msgstr "Ausazkoa" +#: src/gtkui/columns.c:38 +#, fuzzy +msgid "Custom title" +msgstr "Azal pertsonalizatua" -#: src/gtkui/ui_manager.c:44 src/gtkui/ui_manager.c:45 -#: src/skins/ui_manager.c:65 src/skins/ui_manager.c:66 -msgid "No Playlist Advance" -msgstr "Erreprodukzio-zerrenda aurreraturik ez" +#: src/gtkui/columns.c:39 +#, fuzzy +msgid "Bitrate" +msgstr "Bit-tasa (kbps):" -#: src/gtkui/ui_manager.c:47 +#: src/gtkui/columns.c:286 #, fuzzy -msgid "Show playlists" -msgstr "Erakutsi erreprodukzio-zerrendaren editorea" +msgid "Choose Columns" +msgstr "Erakutsi erreproduzitzailea" -#: src/gtkui/ui_manager.c:48 +#: src/gtkui/columns.c:300 #, fuzzy -msgid "Show/hide playlists" -msgstr "Kargatu erreprodukzio-zerrenda" +msgid "Available:" +msgstr "aldagaia" -#: src/gtkui/ui_manager.c:50 -msgid "Show infoarea" +#: src/gtkui/columns.c:334 +msgid "Chosen:" msgstr "" -#: src/gtkui/ui_manager.c:51 -msgid "Show/hide infoarea" +#: src/gtkui/layout.c:122 +msgid "Dock at Left" msgstr "" -#: src/gtkui/ui_manager.c:53 -#, fuzzy -msgid "Show main menu" -msgstr "Erakutsi erreproduzitzaile nagusiaren leihoa" +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "" -#: src/gtkui/ui_manager.c:54 -msgid "Show/hide main menu" +#: src/gtkui/layout.c:123 +msgid "Undock" msgstr "" -#: src/gtkui/ui_manager.c:56 +#: src/gtkui/layout.c:123 #, fuzzy -msgid "Show statusbar" -msgstr "Egoera" +msgid "Disable" +msgstr "aldagaia" -#: src/gtkui/ui_manager.c:57 +#: src/gtkui/menus.c:132 #, fuzzy -msgid "Show/hide statusbar" -msgstr "Kargatu erreprodukzio-zerrenda" +msgid "_Open Files ..." +msgstr "Gehitu fitxategiak..." -#: src/gtkui/ui_manager.c:69 src/gtkui/ui_manager.c:70 -#: src/skins/ui_manager.c:170 src/skins/ui_manager.c:171 -msgid "Pause" +#: src/gtkui/menus.c:133 +#, fuzzy +msgid "Open _URL ..." +msgstr "Gehitu fitxategiak..." + +#: src/gtkui/menus.c:134 +#, fuzzy +msgid "_Add File ..." +msgstr "Gehitu fitxategiak..." + +#: src/gtkui/menus.c:135 +#, fuzzy +msgid "Add U_RL ..." +msgstr "Gehitu fitxategiak..." + +#: src/gtkui/menus.c:137 +#, fuzzy +msgid "A_bout ..." +msgstr "Honi buruz: " + +#: src/gtkui/menus.c:138 +#, fuzzy +msgid "_Preferences ..." +msgstr "Hobespenak" + +#: src/gtkui/menus.c:139 src/skins/ui_manager.c:412 +msgid "_Quit" +msgstr "I_rten" + +#: src/gtkui/menus.c:142 +#, fuzzy +msgid "_Play" +msgstr "Erreproduzitu" + +#: src/gtkui/menus.c:143 +#, fuzzy +msgid "Paus_e" msgstr "Pausatu" -#: src/gtkui/ui_manager.c:72 src/gtkui/ui_manager.c:73 src/hotkey/gui.c:73 -#: src/skins/ui_manager.c:173 src/skins/ui_manager.c:174 -msgid "Stop" +#: src/gtkui/menus.c:144 +#, fuzzy +msgid "_Stop" msgstr "Gelditu" -#: src/gtkui/ui_manager.c:75 src/gtkui/ui_manager.c:76 -#: src/skins/ui_manager.c:176 src/skins/ui_manager.c:177 -msgid "Previous" +#: src/gtkui/menus.c:145 +#, fuzzy +msgid "Pre_vious" msgstr "Aurrekoa" -#: src/gtkui/ui_manager.c:78 src/gtkui/ui_manager.c:79 -#: src/skins/ui_manager.c:179 src/skins/ui_manager.c:180 -msgid "Next" +#: src/gtkui/menus.c:146 +#, fuzzy +msgid "_Next" msgstr "Hurrengoa" -#: src/gtkui/ui_manager.c:84 src/skins/ui_manager.c:197 -msgid "Playlist" -msgstr "Erreprodukzio-zerrenda" +#: src/gtkui/menus.c:148 +#, fuzzy +msgid "_Repeat" +msgstr "Errepikatu" -#: src/gtkui/ui_manager.c:86 src/gtkui/ui_manager.c:87 -#: src/skins/ui_manager.c:199 src/skins/ui_manager.c:200 -msgid "New Playlist" -msgstr "Erreprodukzio-zerrenda berria" +#: src/gtkui/menus.c:149 +#, fuzzy +msgid "S_huffle" +msgstr "Ausazkoa" -#: src/gtkui/ui_manager.c:89 src/gtkui/ui_manager.c:90 -#: src/skins/ui_manager.c:208 src/skins/ui_manager.c:209 -msgid "Delete Playlist" -msgstr "Ezabatu erreprodukzio-zerrenda" +#: src/gtkui/menus.c:150 +#, fuzzy +msgid "N_o Playlist Advance" +msgstr "Erreprodukzio-zerrenda aurreraturik ez" -#: src/gtkui/ui_manager.c:92 +#: src/gtkui/menus.c:151 #, fuzzy -msgid "Import Playlist ..." -msgstr "Kargatu erreprodukzio-zerrenda" +msgid "Stop _After This Song" +msgstr "Gelditu uneko abestiaren ondoren" -#: src/gtkui/ui_manager.c:93 src/skins/ui_manager.c:212 -msgid "Loads a playlist file into the selected playlist." +#: src/gtkui/menus.c:153 src/gtkui/menus.c:210 +msgid "Song _Info ..." msgstr "" -"Erreprodukzio-zerrendaren fitxategia kargatzen du hautatutako erreprodukzio-" -"zerrendan." -#: src/gtkui/ui_manager.c:95 +#: src/gtkui/menus.c:154 #, fuzzy -msgid "Export Playlist ..." -msgstr "Kargatu erreprodukzio-zerrenda" +msgid "Jump to _Time ..." +msgstr "Jauzi denborara" -#: src/gtkui/ui_manager.c:96 src/skins/ui_manager.c:215 -msgid "Saves the selected playlist." -msgstr "Hautatutako erreprodukzio-zerrenda gordetzen du" +#: src/gtkui/menus.c:155 +msgid "_Jump to Song ..." +msgstr "" -#: src/gtkui/ui_manager.c:98 src/skins/ui_manager.c:217 +#: src/gtkui/menus.c:158 #, fuzzy -msgid "Save All Playlists" -msgstr "Gorde erreprodukzio-zerrenda" - -#: src/gtkui/ui_manager.c:99 src/skins/ui_manager.c:218 -msgid "" -"Saves all the playlists that are open. Note that this is done automatically " -"when Audacious quits." -msgstr "" +msgid "By Track _Number" +msgstr "Pista zenbakiaren arabera" -#: src/gtkui/ui_manager.c:103 +#: src/gtkui/menus.c:159 #, fuzzy -msgid "Refresh" -msgstr "Freskatu tasa" - -#: src/gtkui/ui_manager.c:104 src/skins/ui_manager.c:223 -msgid "Refreshes metadata associated with a playlist entry." -msgstr "" -"Erreprodukzio-zerrendako sarrera bati esleituta dagoen metadatuak freskatzen " -"ditu." +msgid "By _Title" +msgstr "Tituluaren arabera" -#: src/gtkui/ui_manager.c:107 +#: src/gtkui/menus.c:160 #, fuzzy -msgid "Playlist Manager" -msgstr "Zerrenda-kudeatzailea" - -#: src/gtkui/ui_manager.c:108 src/skins/ui_manager.c:227 -msgid "Opens the playlist manager." -msgstr "Erreprodukzio-zerrenden kudeatzailea irekitzen du." +msgid "By _Artist" +msgstr "Artistaren arabera" -#: src/gtkui/ui_manager.c:111 +#: src/gtkui/menus.c:161 #, fuzzy -msgid "Add URL ..." -msgstr "Gehitu fitxategiak..." - -#: src/gtkui/ui_manager.c:112 src/skins/ui_manager.c:237 -msgid "Adds a remote track to the playlist." -msgstr "Gehitu urruneko pista erreprodukzio-zerrendari." +msgid "By A_lbum" +msgstr "Albuma:" -#: src/gtkui/ui_manager.c:115 +#: src/gtkui/menus.c:162 #, fuzzy -msgid "Add Files ..." -msgstr "Gehitu fitxategiak..." - -#: src/gtkui/ui_manager.c:116 src/skins/ui_manager.c:241 -msgid "Adds files to the playlist." -msgstr "Gehitu fitxategiak erreprodukzio-zerrendari." - -#: src/gtkui/ui_manager.c:119 src/skins/ui_manager.c:264 -msgid "Remove All" -msgstr "Kendu guztiak" - -#: src/gtkui/ui_manager.c:120 src/skins/ui_manager.c:265 -msgid "Removes all entries from the playlist." -msgstr "Sarrera guztiak kentzen ditu erreprodukzio-zerrendatik" - -#: src/gtkui/ui_manager.c:123 src/skins/ui_manager.c:290 -msgid "Remove Unselected" -msgstr "Kendu desautatutakoak" - -#: src/gtkui/ui_manager.c:124 src/skins/ui_manager.c:291 -msgid "Remove unselected entries from the playlist." -msgstr "Desautatutako sarrerak kentzen ditu erreprodukzio-zerrendatik." - -#: src/gtkui/ui_manager.c:127 src/skins/ui_manager.c:294 -msgid "Remove Selected" -msgstr "Kendu hautatutakoak" - -#: src/gtkui/ui_manager.c:128 src/skins/ui_manager.c:295 -msgid "Remove selected entries from the playlist." -msgstr "Hautatutako sarrerak kentzen ditu erreprodukzio-zerrendatik." +msgid "By Release _Date" +msgstr "Dataren arabera" -#: src/gtkui/ui_manager.c:131 +#: src/gtkui/menus.c:163 #, fuzzy -msgid "Sort" -msgstr "Ataka" - -#: src/gtkui/ui_manager.c:132 src/skins/ui_manager.c:330 -#: src/skins/ui_manager.c:360 -msgid "By Track Number" -msgstr "Pista zenbakiaren arabera" +msgid "By _File Path" +msgstr "Fitxategi-izenaren arabera" -#: src/gtkui/ui_manager.c:134 src/skins/ui_manager.c:278 -#: src/skins/ui_manager.c:306 src/skins/ui_manager.c:336 -msgid "By Title" -msgstr "Tituluaren arabera" +#: src/gtkui/menus.c:164 +#, fuzzy +msgid "By _Custom Title" +msgstr "Azal pertsonalizatua" -#: src/gtkui/ui_manager.c:136 src/skins/ui_manager.c:314 -#: src/skins/ui_manager.c:344 -msgid "By Artist" -msgstr "Artistaren arabera" +#: src/gtkui/menus.c:166 +#, fuzzy +msgid "R_everse Order" +msgstr "Alderantzikatu zerrenda" -#: src/gtkui/ui_manager.c:138 src/skins/ui_manager.c:310 -#: src/skins/ui_manager.c:340 +#: src/gtkui/menus.c:167 #, fuzzy -msgid "By Album" -msgstr "Albuma:" +msgid "_Random Order" +msgstr "_Ausazkoa" -#: src/gtkui/ui_manager.c:140 +#: src/gtkui/menus.c:170 src/gtkui/menus.c:212 #, fuzzy -msgid "By File Path" -msgstr "Fitxategi-izenaren arabera" +msgid "_Refresh" +msgstr "Freskatu tasa" -#: src/gtkui/ui_manager.c:142 +#: src/gtkui/menus.c:172 #, fuzzy -msgid "Reverse Order" -msgstr "Alderantzikatu zerrenda" +msgid "_Sort" +msgstr "Ataka" -#: src/gtkui/ui_manager.c:147 -msgid "Output" +#: src/gtkui/menus.c:174 +msgid "_New" msgstr "" -#: src/gtkui/ui_manager.c:149 src/modplug/gui/interface.cxx:572 -msgid "Effects" -msgstr "Efektuak" - -#: src/gtkui/ui_manager.c:151 +#: src/gtkui/menus.c:175 #, fuzzy -msgid "Equalizer" -msgstr "Erakutsi ekualizadorea" - -#: src/gtkui/ui_manager.c:156 src/skins/ui_manager.c:232 -msgid "View" -msgstr "Ikusi" +msgid "_Close" +msgstr "Itxi" -#: src/gtkui/ui_manager.c:157 src/skins/ui_manager.c:233 -msgid "Interface" -msgstr "" +#: src/gtkui/menus.c:177 +#, fuzzy +msgid "_Import ..." +msgstr "Inportatu" -#: src/gtkui/ui_manager.c:164 src/skins/ui_manager.c:370 -msgid "File" -msgstr "Fitxategia" +#: src/gtkui/menus.c:178 +#, fuzzy +msgid "_Export ..." +msgstr "Esportatu" -#: src/gtkui/ui_manager.c:167 +#: src/gtkui/menus.c:180 #, fuzzy -msgid "Components" -msgstr "Konpositorea:" +msgid "_Playlist Manager ..." +msgstr "Zerrenda-kudeatzailea" -#: src/gtkui/ui_manager.c:169 src/gtkui/ui_manager.c:172 -#: src/skins/ui_manager.c:375 src/skins/ui_manager.c:378 -msgid "View Track Details" -msgstr "Ikusi pistaren xehetasunak" +#: src/gtkui/menus.c:183 +#, fuzzy +msgid "Volume _Up" +msgstr "Igo bolumena" -#: src/gtkui/ui_manager.c:170 src/gtkui/ui_manager.c:173 -#: src/skins/ui_manager.c:376 src/skins/ui_manager.c:379 -msgid "View track details" -msgstr "Ikusi pistaren xehetasunak" +#: src/gtkui/menus.c:184 +#, fuzzy +msgid "Volume _Down" +msgstr "Jeitsi bolumena" -#: src/gtkui/ui_manager.c:175 src/gtkui/ui_manager.c:176 -#: src/skins/ui_manager.c:381 src/skins/ui_manager.c:382 -msgid "About Audacious" -msgstr "Audacious-i buruz" +#: src/gtkui/menus.c:186 +#, fuzzy +msgid "_Equalizer" +msgstr "Erakutsi ekualizadorea" -#: src/gtkui/ui_manager.c:178 +#: src/gtkui/menus.c:188 #, fuzzy -msgid "Open Files ..." -msgstr "Gehitu fitxategiak..." +msgid "E_ffects" +msgstr "Efektuak" -#: src/gtkui/ui_manager.c:179 src/skins/ui_manager.c:385 -msgid "Load and play a file" -msgstr "Kargatu eta erreproduzitu fitxategi bat" +#: src/gtkui/menus.c:191 +msgid "_Interface" +msgstr "" -#: src/gtkui/ui_manager.c:181 -msgid "Open URL ..." +#: src/gtkui/menus.c:193 +msgid "Show _Menu Bar" msgstr "" -#: src/gtkui/ui_manager.c:182 src/skins/ui_manager.c:388 -msgid "Play media from the selected location" -msgstr "Erreproduzitu multimedia hautatutako kokalekutik" +#: src/gtkui/menus.c:194 +msgid "Show I_nfo Bar" +msgstr "" -#: src/gtkui/ui_manager.c:184 src/skins/ui_manager.c:390 -msgid "Plugin services" -msgstr "Pluginen zerbitzuak" +#: src/gtkui/menus.c:195 +#, fuzzy +msgid "Show _Status Bar" +msgstr "Egoera" -#: src/gtkui/ui_manager.c:186 src/skins/ui_manager.c:392 -msgid "Preferences" -msgstr "Hobespenak" +#: src/gtkui/menus.c:197 +#, fuzzy +msgid "Show Column _Headers" +msgstr "Erakutsi erreproduzitzailea" -#: src/gtkui/ui_manager.c:187 src/skins/ui_manager.c:393 -msgid "Open preferences window" -msgstr "Ireki hobespenen leihoa" +#: src/gtkui/menus.c:198 +#, fuzzy +msgid "Choose _Columns ..." +msgstr "Erakutsi erreproduzitzailea" -#: src/gtkui/ui_manager.c:189 src/skins/ui_manager.c:395 -msgid "_Quit" -msgstr "I_rten" +#: src/gtkui/menus.c:199 +#, fuzzy +msgid "Scrol_l on Song Change" +msgstr "Abestiaren mezua" -#: src/gtkui/ui_manager.c:190 src/skins/ui_manager.c:396 -msgid "Quit Audacious" -msgstr "Irten Audacious-etik" +#: src/gtkui/menus.c:202 +#, fuzzy +msgid "_File" +msgstr "Fitxategia" -#: src/gtkui/ui_manager.c:192 src/gtkui/ui_manager.c:193 -#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 -msgid "Set A-B" -msgstr "Ezarri A-B" +#: src/gtkui/menus.c:203 +#, fuzzy +msgid "_Playback" +msgstr "Erreprodukzioa" -#: src/gtkui/ui_manager.c:195 src/gtkui/ui_manager.c:196 -#: src/skins/ui_manager.c:401 src/skins/ui_manager.c:402 -msgid "Clear A-B" -msgstr "Garbitu A-B" +#: src/gtkui/menus.c:204 +#, fuzzy +msgid "P_laylist" +msgstr "Erreprodukzio-zerrenda" -#: src/gtkui/ui_manager.c:198 src/gtkui/ui_manager.c:199 -#: src/skins/ui_manager.c:404 src/skins/ui_manager.c:405 -msgid "Jump to Playlist Start" -msgstr "Saltatu zerrendaren hasierara" +#: src/gtkui/menus.c:205 src/gtkui/menus.c:219 +#, fuzzy +msgid "_Services" +msgstr "Gailuak" -#: src/gtkui/ui_manager.c:201 src/gtkui/ui_manager.c:202 src/hotkey/gui.c:80 -#: src/skins/ui_manager.c:407 src/skins/ui_manager.c:408 -msgid "Jump to File" -msgstr "Joan fitxategira" +#: src/gtkui/menus.c:206 +msgid "_Output" +msgstr "" -#: src/gtkui/ui_manager.c:207 src/skins/ui_manager.c:413 -msgid "Queue Toggle" -msgstr "Txandakatu ilara" +#: src/gtkui/menus.c:207 +#, fuzzy +msgid "_View" +msgstr "Ikusi" -#: src/gtkui/ui_manager.c:208 src/skins/ui_manager.c:414 -msgid "Enables/disables the entry in the playlist's queue." -msgstr "Erreprodukzio-zerrendako ilarako sarrerak gaitzen/desgaitzen ditu." +#: src/gtkui/menus.c:211 +msgid "_Queue/Unqueue" +msgstr "" -#: src/gtkui/ui_manager.c:211 src/skins/ui_manager.c:417 -msgid "Copy" +#: src/gtkui/menus.c:214 +msgid "Cu_t" msgstr "" -#: src/gtkui/ui_manager.c:214 src/skins/ui_manager.c:419 -#, fuzzy -msgid "Cut" -msgstr "Unekoa" +#: src/gtkui/menus.c:215 +msgid "_Copy" +msgstr "" -#: src/gtkui/ui_manager.c:217 src/skins/ui_manager.c:421 +#: src/gtkui/menus.c:216 #, fuzzy -msgid "Paste" +msgid "_Paste" msgstr "Azkarrena" -#: src/gtkui/ui_manager.c:220 src/skins/ui_manager.c:254 -msgid "Select All" +#: src/gtkui/menus.c:217 +#, fuzzy +msgid "Select _All" msgstr "Hautatu denak" -#: src/gtkui/ui_manager.c:221 src/skins/ui_manager.c:255 -msgid "Selects all of the playlist entries." -msgstr "Hautatu erreprodukzio-zerrendako sarrera guztiak." +#: src/gtkui/menus.c:222 +#, fuzzy +msgid "_Rename" +msgstr "Fitxategi-Izena" -#: src/gtkui/ui_manager.c:224 src/skins/ui_manager.c:258 -msgid "Select None" -msgstr "Ez hautatu ezer" +#: src/gtkui/ui_gtk.c:75 +msgid "GTK Interface" +msgstr "" -#: src/gtkui/ui_manager.c:225 src/skins/ui_manager.c:259 -msgid "Deselects all of the playlist entries." -msgstr "Erreprodukzio-zerrendako sarrera guztiak desautatzen ditu." +#: src/gtkui/ui_gtk.c:132 src/skins/ui_main.c:303 +#, c-format +msgid "%s - Audacious" +msgstr "%s - Audacious" + +#: src/gtkui/ui_gtk.c:138 src/skins/ui_main.c:305 src/skins/ui_main.c:1498 +msgid "Audacious" +msgstr "Audacious" + +#: src/gtkui/ui_gtk.c:177 src/skins/plugin.c:185 +msgid "Error" +msgstr "Errorea" -#: src/gtkui/ui_statusbar.c:91 src/skins/ui_main.c:609 +#: src/gtkui/ui_statusbar.c:102 src/skins/ui_main.c:460 msgid "mono" msgstr "monoa" -#: src/gtkui/ui_statusbar.c:94 src/skins/ui_main.c:608 +#: src/gtkui/ui_statusbar.c:104 src/skins/ui_main.c:459 msgid "stereo" msgstr "estereoa" -#: src/gtkui/ui_statusbar.c:97 +#: src/gtkui/ui_statusbar.c:106 #, fuzzy, c-format -msgid "%d channels" -msgstr "Kanalak" +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "Kanalak" +msgstr[1] "Kanalak" -#: src/gtkui/ui_statusbar.c:101 +#: src/gtkui/ui_statusbar.c:121 #, c-format -msgid "%s: %d kbps, %d Hz, %s" +msgid "%d kbps" msgstr "" -#: src/hotkey/gui.c:70 +#: src/hotkey/gui.c:71 msgid "Previous Track" msgstr "Aurreko pista" -#: src/hotkey/gui.c:72 +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "Erreproduzitu" + +#: src/hotkey/gui.c:73 msgid "Pause/Resume" msgstr "Pausatu/jarraitu" -#: src/hotkey/gui.c:74 +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +msgid "Stop" +msgstr "Gelditu" + +#: src/hotkey/gui.c:75 msgid "Next Track" msgstr "Hurrengo pista" -#: src/hotkey/gui.c:75 +#: src/hotkey/gui.c:76 msgid "Forward 5 Seconds" msgstr "Joan 5 segundo aurrera" -#: src/hotkey/gui.c:76 +#: src/hotkey/gui.c:77 msgid "Rewind 5 Seconds" msgstr "Joan 5 segundo atzera" -#: src/hotkey/gui.c:77 +#: src/hotkey/gui.c:78 msgid "Mute" msgstr "Mututu" -#: src/hotkey/gui.c:78 +#: src/hotkey/gui.c:79 msgid "Volume Up" msgstr "Igo bolumena" -#: src/hotkey/gui.c:79 +#: src/hotkey/gui.c:80 msgid "Volume Down" msgstr "Jeitsi bolumena" -#: src/hotkey/gui.c:81 +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:424 src/skins/ui_manager.c:425 +msgid "Jump to File" +msgstr "Joan fitxategira" + +#: src/hotkey/gui.c:82 msgid "Toggle Player Windows" msgstr "Txandakatu erreproduzitzailearen leihoak" -#: src/hotkey/gui.c:82 +#: src/hotkey/gui.c:83 msgid "Show On-Screen-Display" msgstr "Erakutsi pantaila gaineko mezuak (OSD)" -#: src/hotkey/gui.c:92 +#: src/hotkey/gui.c:84 +#, fuzzy +msgid "Toggle Repeat" +msgstr "Errepikatu" + +#: src/hotkey/gui.c:85 +#, fuzzy +msgid "Toggle Shuffle" +msgstr "Ausazkoa" + +#: src/hotkey/gui.c:95 msgid "(none)" msgstr "(bat ere ez)" -#: src/hotkey/gui.c:229 +#: src/hotkey/gui.c:232 msgid "" "It is not recommended to bind the primary mouse buttons without " "modificators.\n" @@ -3176,15 +1853,15 @@ "\n" "Jarraitzea nahi duzu?" -#: src/hotkey/gui.c:231 +#: src/hotkey/gui.c:234 msgid "Binding mouse buttons" msgstr "Saguaren botoiak lotzea" -#: src/hotkey/gui.c:381 +#: src/hotkey/gui.c:384 msgid "Global Hotkey Plugin Configuration" msgstr "Laster-tekla globalen pluginaren konfigurazioa" -#: src/hotkey/gui.c:397 +#: src/hotkey/gui.c:400 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -3192,23 +1869,23 @@ "Sakatu tekla konbinazioa testu-eremuaren barruan.\n" "Saguaren botoiak ere lotu ditzakezu." -#: src/hotkey/gui.c:402 +#: src/hotkey/gui.c:405 msgid "Hotkeys:" msgstr "Laster-teklak" -#: src/hotkey/gui.c:421 +#: src/hotkey/gui.c:424 msgid "Action:" msgstr "Ekintza:" -#: src/hotkey/gui.c:429 +#: src/hotkey/gui.c:432 msgid "Key Binding:" msgstr "Tekla-konbinazioa:" -#: src/hotkey/gui.c:660 +#: src/hotkey/gui.c:663 msgid "About Global Hotkey Plugin" msgstr "Laster-tekla globalen pluginari buruz" -#: src/hotkey/gui.c:661 +#: src/hotkey/gui.c:664 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3261,7 +1938,7 @@ msgid "Enable debug printing" msgstr "Gaitu arazketa mezuak" -#: src/jack/jack.c:437 +#: src/jack/jack.c:438 msgid "" "XMMS jack Driver 0.17\n" "\n" @@ -3279,134 +1956,20 @@ "Audacious-entzako moldaketa:\n" "Giacomo Lozito abildua develia.org" -#: src/jack/jack.c:442 +#: src/jack/jack.c:443 msgid "About JACK Output Plugin 0.17" msgstr "JACK irteerako plugina 0.17 buruz" -#: src/ladspa/ladspa.c:824 -msgid "This LADSPA plugin has no user controls" -msgstr "LADSPA plugin honek ez du erabiltzale-kontrolik" - -#: src/ladspa/ladspa.c:865 src/ladspa/ladspa.c:952 -msgid "Name" -msgstr "Izena" - -#: src/ladspa/ladspa.c:952 -msgid "UID" -msgstr "UIDa" - -#: src/ladspa/ladspa.c:1029 -msgid "Installed plugins" -msgstr "Instalatutako pluginak" - -#: src/ladspa/ladspa.c:1037 -msgid "Running plugins" -msgstr "Exekutatzen dauden pluginak" - -#: src/ladspa/ladspa.c:1052 -msgid "Add" -msgstr "Gehitu" - -#: src/ladspa/ladspa.c:1055 -msgid "Remove" -msgstr "Kendu" - -#: src/ladspa/ladspa.c:1066 -msgid "LADSPA Plugin Catalog" -msgstr "LADSPA pluginen katalogoa" - -#: src/lirc/about.c:63 -msgid "About LIRC Audacious Plugin" -msgstr "LIRC Audacious plugina" - -#: src/lirc/about.c:90 -msgid "LIRC Plugin " -msgstr "LIRC plugina " - -#: src/lirc/about.c:92 +#: src/lyricwiki/lyricwiki.c:226 msgid "" "\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" -"\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" -msgstr "" -"\n" -"Plugin bakun bat LIRC urruneko kontrolaren daemonarekin\n" -"Audacious kontrolatzen uzteko.\n" -"\n" -"Audacious-ek erabiltzeko moldatua: Tony Vroon \n" -"XMMS LIRC pluginetik:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"LIRC-ren informazio gehiagorako ikusi:\n" -"http://lirc.org" - -#: src/lirc/interface.c:37 -msgid "LIRC plugin settings" -msgstr "LIRC pluginaren ezarpenak" - -#: src/lirc/interface.c:61 -msgid "Reconnect to LIRC server" -msgstr "Birkonektatu LIRC zerbitzariarekin" - -#: src/lirc/interface.c:68 -msgid "Timeout before reconnecting (seconds): " -msgstr "Denbora-muga birkonektatu aurretik (seg.):" - -#: src/lirc/interface.c:75 -msgid "Reconnect" -msgstr "Birkonektatu" - -#: src/lirc/interface.c:79 -msgid "Connection" -msgstr "Konexioa" - -#: src/lirc/lirc.c:82 -#, c-format -msgid "%s: could not init LIRC support\n" -msgstr "%s: ezin izan da LIRC euskarria hasieratu\n" +"Looking for lyrics..." +msgstr "" -#: src/lirc/lirc.c:90 -#, c-format +#: src/lyricwiki/lyricwiki.c:249 msgid "" -"%s: could not read LIRC config file\n" -"%s: please read the documentation of LIRC\n" -"%s: how to create a proper config file\n" -msgstr "" -"%s: ezin izan da LIRCen konfigurazio-fitxategia irakurri\n" -"%s: irakur ezazu LIRCren dokumentazioa\n" -"%s: konfigurazio-fitxategi egokia nola sortzen den jakiteko\n" - -#: src/lirc/lirc.c:117 -#, c-format -msgid "%s: trying to reconnect...\n" -msgstr "%s: birkonektatzen saiatzen...\n" - -#: src/lirc/lirc.c:332 -#, c-format -msgid "%s: unknown command \"%s\"\n" -msgstr "%s: \"%s\" komando ezezaguna\n" - -#: src/lirc/lirc.c:342 -#, c-format -msgid "%s: disconnected from LIRC\n" -msgstr "%s: LIRCtik deskonektatuta\n" - -#: src/lirc/lirc.c:346 -#, c-format -msgid "%s: will try reconnect every %d seconds...\n" -msgstr "%s: saiatu %d segundoro birkonektatzen...\n" - -#: src/lyricwiki/lyricwiki.c:244 -msgid "LyricWiki" +"\n" +"Connecting to lyrics.wikia.com..." msgstr "" #: src/lyricwiki/lyricwiki.c:337 @@ -3415,11 +1978,11 @@ "No lyrics were found." msgstr "" -#: src/metronom/metronom.c:90 +#: src/metronom/metronom.c:85 msgid "About Metronom" msgstr "Metronom-i buruz" -#: src/metronom/metronom.c:91 +#: src/metronom/metronom.c:86 msgid "" "A Tact Generator by Martin Strauss \n" "\n" @@ -3434,285 +1997,64 @@ "adib. tact://77 77 kolpe minutuko erreproduzitzeko\n" "edo tact://60*3/4 60 bpm erreproduzitzeko 3/4 ukimenean" -#: src/metronom/metronom.c:145 +#: src/metronom/metronom.c:143 #, c-format msgid "Tact generator: %d bpm" msgstr "Ukimen sortzailea: %d bpm" -#: src/metronom/metronom.c:147 +#: src/metronom/metronom.c:145 #, c-format msgid "Tact generator: %d bpm %d/%d" msgstr "Ukimen sortzailea: %d bpm %d/%d" -#: src/modplug/gui/interface.cxx:137 -msgid "ModPlug Configuration" -msgstr "ModPlug konfigurazioa" - -#: src/modplug/gui/interface.cxx:174 -msgid "16 bit" -msgstr "16 bit" - -#: src/modplug/gui/interface.cxx:181 -msgid "8 bit" -msgstr "8 bit" - -#: src/modplug/gui/interface.cxx:212 -msgid "Mono (downmix)" -msgstr "Monoa (bildu kanalak)" +#: src/mpg123/mpg123.c:183 +msgid "Surround" +msgstr "Surround" -#: src/modplug/gui/interface.cxx:241 -msgid "Nearest (fastest)" -msgstr "Gertuena (azkarrena)" +#: src/mtp_up/mtp.c:298 +msgid "Upload in progress..." +msgstr "Igotzearen aurrerapena..." -#: src/modplug/gui/interface.cxx:248 -msgid "Linear (fast)" -msgstr "Lineala (azkarra)" +#: src/mtp_up/mtp.c:310 +msgid "Upload to MTP Device" +msgstr "" -#: src/modplug/gui/interface.cxx:255 -msgid "Spline (good quality)" -msgstr "Spline (kalitate ona)" +#: src/mtp_up/mtp.c:311 +#, fuzzy +msgid "Disconnect MTP Device" +msgstr "Deskonektatu gailua" -#: src/modplug/gui/interface.cxx:262 -msgid "8-tap Fir (extremely high quality)" -msgstr "8-tap Fir (oso kalitate altua)" +#: src/notify/libnotify-aosd_event.c:47 +#, fuzzy +msgid "Stopped" +msgstr "Gelditu" -#: src/modplug/gui/interface.cxx:286 +#: src/notify/libnotify-aosd_event.c:47 #, fuzzy -msgid "96 kHz" -msgstr "48 kHz" +msgid "Audacious is not playing." +msgstr "Audacious - ikusgaitasunaren abisua" -#: src/modplug/gui/interface.cxx:293 -msgid "48 kHz" -msgstr "48 kHz" +#: src/null/null.c:64 +msgid "Null output plugin " +msgstr "Null irteerako plugina " -#: src/modplug/gui/interface.cxx:300 -msgid "44 kHz" -msgstr "44 kHz" +#: src/null/null.c:65 +msgid "" +" by Christian Birchinger \n" +"based on the XMMS plugin by HÃ¥vard KvÃ¥l " +msgstr "" +" Christian Birchinger \n" +"XMMS-eko pluginean oinarrituta, HÃ¥vard KvÃ¥l " -#: src/modplug/gui/interface.cxx:307 -msgid "22 kHz" -msgstr "22 kHz" - -#: src/modplug/gui/interface.cxx:315 -msgid "Sampling Rate" -msgstr "Lagin-tasa" - -#: src/modplug/gui/interface.cxx:349 src/modplug/gui/interface.cxx:411 -#: src/modplug/gui/interface.cxx:477 src/modplug/gui/interface.cxx:539 -msgid "Enable" -msgstr "Gaitu" - -#: src/modplug/gui/interface.cxx:378 src/modplug/gui/interface.cxx:506 -msgid "Depth" -msgstr "Sakonera" - -#: src/modplug/gui/interface.cxx:386 src/modplug/gui/interface.cxx:514 -msgid "Delay" -msgstr "Atzerapena" - -#: src/modplug/gui/interface.cxx:394 -msgid "Reverb" -msgstr "Reverb" - -#: src/modplug/gui/interface.cxx:440 -msgid "Amount" -msgstr "Kopurua" - -#: src/modplug/gui/interface.cxx:448 -msgid "Range" -msgstr "Barrutia" - -#: src/modplug/gui/interface.cxx:456 -msgid "Bass Boost" -msgstr "Baxuen bultzada" - -#: src/modplug/gui/interface.cxx:522 src/mpg123/mpg123.c:174 -msgid "Surround" -msgstr "Surround" - -#: src/modplug/gui/interface.cxx:561 -msgid "" -"Note: Setting the preamp\n" -"too high may cause clipping\n" -"(annoying clicks and pops)!" -msgstr "" -"Oharra: aurre-anp altuegi jartzeak\n" -" mozketak sor ditzake\n" -"(klik eta pop nazkagarriekin!)" - -#: src/modplug/gui/interface.cxx:567 -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "Preamp" -msgstr "Aurre-anp" - -#: src/modplug/gui/interface.cxx:601 -msgid "Use Filename as Song Title" -msgstr "Erabili fitxategi-izena abestiaren titulu gisa" - -#: src/modplug/gui/interface.cxx:606 -msgid "Fast Playlist Info" -msgstr "Erreprodukzio-zerrendaren informazio azkarra" - -#: src/modplug/gui/interface.cxx:617 -msgid "Noise Reduction" -msgstr "Zarataren murriztapena" - -#: src/modplug/gui/interface.cxx:623 -msgid "Play Amiga MOD" -msgstr "Erreproduzitu Amiga MOD" - -#: src/modplug/gui/interface.cxx:646 -msgid "Don't loop" -msgstr "Ez begiztatu" - -#: src/modplug/gui/interface.cxx:658 -msgid "Loop" -msgstr "Begizta" - -#: src/modplug/gui/interface.cxx:671 -msgid "time(s)" -msgstr "denbora(k)" - -#: src/modplug/gui/interface.cxx:677 -msgid "Loop forever" -msgstr "Begiztatu beti" - -#: src/modplug/gui/interface.cxx:684 -msgid "Looping" -msgstr "Begiztatzen" - -#: src/modplug/gui/interface.cxx:859 -msgid "MOD Info" -msgstr "MOD informazioa" - -#: src/modplug/gui/interface.cxx:878 -msgid "" -"Filename:\n" -"Title:\n" -"Type:\n" -"Length:\n" -"Speed:\n" -"Tempo:\n" -"Samples:\n" -"Instruments:\n" -"Patterns:\n" -"Channels:" -msgstr "" -"Fitxategi-izena:\n" -"Titulua:\n" -"Mota:\n" -"Luzera:\n" -"Abiadura:\n" -"Tenpoa:\n" -"Laginak:\n" -"Instrumentuak:\n" -"Ereduak:\n" -"Kanalak:" - -#: src/modplug/gui/interface.cxx:883 -msgid "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" -msgstr "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" - -#: src/modplug/gui/interface.cxx:913 -msgid "Samples" -msgstr "Laginak" - -#: src/modplug/gui/interface.cxx:938 -msgid "Instruments" -msgstr "Instrumentuak" - -#: src/modplug/gui/interface.cxx:959 -msgid "Message" -msgstr "Mezua" - -#: src/modplug/gui/main.cxx:51 -msgid "Modplug Input Plugin for Audacious ver" -msgstr "Modplug sarrerako plugina Audacious-en bertsio honentzako: " - -#: src/modplug/gui/main.cxx:52 -#, fuzzy -msgid "" -"\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." -msgstr "" -"\n" -"Modplug soinu-motorra Olivier Lapicque-k garatua.\n" -"XMMSen interfazea Modplug-arentzako Kenton Varda-k garatua.\n" -"(c)2000 Olivier Lapicque eta Kenton Varda.\n" -"Eguneraketak eta mantetze lanak: Konstanty Bialkowski.\n" -"BMPrako moldaketak: Theofilos Intzoglou." - -#: src/modplug/gui/main.cxx:55 -msgid "About Modplug" -msgstr "Modplug-i buruz" - -#: src/modplug/gui/support.cxx:90 src/modplug/gui/support.cxx:114 -#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 -#, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "Ezin izan da pixmaparen fitxategia aurkitu: %s" - -#: src/mtp_up/mtp.c:35 -msgid "Upload selected track(s)" -msgstr "Igo hautatutako pistak" - -#: src/mtp_up/mtp.c:291 -msgid "Upload in progress..." -msgstr "Igotzearen aurrerapena..." - -#: src/mtp_up/mtp.c:300 -msgid "MTP device handler" -msgstr "MTP gailuaren kudeatzailea" - -#: src/mtp_up/mtp.c:304 -msgid "Disconnect the device" -msgstr "Deskonektatu gailua" - -#: src/null/null.c:63 -msgid "Null output plugin " -msgstr "Null irteerako plugina " - -#: src/null/null.c:64 -msgid "" -" by Christian Birchinger \n" -"based on the XMMS plugin by HÃ¥vard KvÃ¥l " -msgstr "" -" Christian Birchinger \n" -"XMMS-eko pluginean oinarrituta, HÃ¥vard KvÃ¥l " - -#: src/null/null.c:67 +#: src/null/null.c:68 msgid "About Null Output" msgstr "Null irteerari buruz" -#: src/null/null.c:93 +#: src/null/null.c:94 msgid "Null output preferences" msgstr "Null irteeraren hobespenak" -#: src/null/null.c:102 +#: src/null/null.c:105 msgid "Run in real time" msgstr "Exekutatu denbora-errealean" @@ -3726,11 +2068,11 @@ msgid "OSS4 Output Plugin Preferences" msgstr "Egoeraren ikonoa plugina - Hobespenak" -#: src/oss4/configure.c:163 src/OSS/configure.c:213 src/sun/configure.c:181 +#: src/oss4/configure.c:163 src/OSS/configure.c:203 msgid "Audio device:" msgstr "Soinu-gailua:" -#: src/oss4/configure.c:189 src/OSS/configure.c:235 src/OSS/configure.c:276 +#: src/oss4/configure.c:189 src/OSS/configure.c:226 src/OSS/configure.c:269 msgid "Use alternate device:" msgstr "Erabili bestelako gailua:" @@ -3743,12 +2085,12 @@ msgid "Enable format conversions made by the OSS software." msgstr "" -#: src/oss4/plugin.c:54 +#: src/oss4/plugin.c:51 #, fuzzy msgid "About OSS4 Plugin" msgstr "ESounD pluginari buruz" -#: src/oss4/plugin.c:55 +#: src/oss4/plugin.c:52 #, fuzzy msgid "" "OSS4 Output Plugin for Audacious\n" @@ -3791,40 +2133,45 @@ msgid "OSS4 error" msgstr "" -#: src/OSS/configure.c:148 +#: src/OSS/configure.c:146 #, c-format msgid "Default (%s)" msgstr "Lehenetsia (%s)" -#: src/OSS/configure.c:197 +#: src/OSS/configure.c:162 src/skins/ui_manager.c:456 +#: src/skins/ui_manager.c:477 +msgid "Default" +msgstr "Lehenetsia" + +#: src/OSS/configure.c:187 msgid "OSS Driver configuration" msgstr "OSS kontrolatzailearen konfigurazioa" -#: src/OSS/configure.c:298 src/sun/configure.c:246 +#: src/OSS/configure.c:290 msgid "Devices" msgstr "Gailuak" -#: src/OSS/configure.c:300 src/sun/configure.c:257 +#: src/OSS/configure.c:292 msgid "Buffering:" msgstr "Bufferreratzea:" -#: src/OSS/configure.c:313 src/sun/configure.c:288 +#: src/OSS/configure.c:305 msgid "Pre-buffer (percent):" msgstr "Aurrebufferra (ehunekoa):" -#: src/OSS/configure.c:324 src/sun/configure.c:302 +#: src/OSS/configure.c:316 msgid "Buffering" msgstr "Bufferreratzen" -#: src/OSS/configure.c:325 +#: src/OSS/configure.c:317 msgid "Mixer Settings:" msgstr "Nahastailearen ezarpenak:" -#: src/OSS/configure.c:331 +#: src/OSS/configure.c:323 msgid "Volume controls Master not PCM" msgstr "Bolumenak Nagusia kontrolatzen du, ez PCMa" -#: src/OSS/configure.c:337 src/sun/configure.c:392 +#: src/OSS/configure.c:329 msgid "Mixer" msgstr "Nahastailea" @@ -3868,11 +2215,11 @@ "Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" "Boston, MA 02110-1301, USA." -#: src/pulse_audio/pulse_audio.c:691 +#: src/pulse_audio/pulse_audio.c:687 msgid "About Audacious PulseAudio Output Plugin" msgstr "Audacious PulseAudio irteeraren plugina" -#: src/pulse_audio/pulse_audio.c:692 +#: src/pulse_audio/pulse_audio.c:688 msgid "" "Audacious PulseAudio Output Plugin\n" "\n" @@ -3908,54 +2255,54 @@ "Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" "Boston, MA 02110-1301, USA." -#: src/resample/plugin.c:78 +#: src/resample/plugin.c:91 #, fuzzy msgid "About Sample Rate Converter Plugin" msgstr "Egoeraren ikonoa pluginari buruz" -#: src/resample/plugin.c:134 +#: src/resample/plugin.c:146 msgid "Sample Rate Converter Preferences" msgstr "" -#: src/resample/plugin.c:146 +#: src/resample/plugin.c:158 msgid "Rate mappings:" msgstr "" -#: src/resample/plugin.c:169 +#: src/resample/plugin.c:181 msgid "All others:" msgstr "" -#: src/resample/plugin.c:181 +#: src/resample/plugin.c:193 msgid "Method:" msgstr "" -#: src/scrobbler/configure.c:152 src/scrobbler/configure.c:228 +#: src/scrobbler/configure.c:128 src/scrobbler/configure.c:204 #, fuzzy msgid "Change password" msgstr "Aldatu erreprodukzioaren abestia" -#: src/scrobbler/configure.c:174 +#: src/scrobbler/configure.c:150 msgid "Services" msgstr "Zerbitzuak" -#: src/scrobbler/configure.c:196 +#: src/scrobbler/configure.c:172 msgid "Username:" msgstr "Erabiltzaile-izena:" -#: src/scrobbler/configure.c:202 +#: src/scrobbler/configure.c:178 msgid "Password:" msgstr "Pasahitza:" -#: src/scrobbler/configure.c:210 +#: src/scrobbler/configure.c:186 #, fuzzy msgid "Scrobbler URL:" msgstr "Scrobbler errorea" -#: src/scrobbler/configure.c:242 +#: src/scrobbler/configure.c:218 msgid "Last.FM" msgstr "Last.FM" -#: src/scrobbler/configure.c:287 +#: src/scrobbler/configure.c:262 #, fuzzy msgid "Scrobbler" msgstr "Scrobbler errorea" @@ -3976,16 +2323,34 @@ msgid "About Scrobbler Plugin" msgstr "Scrobbler pluginari buruz" +#: src/sdlout/plugin.c:58 +#, fuzzy +msgid "About SDL Output Plugin" +msgstr "JACK irteerako plugina 0.17 buruz" + +#: src/sdlout/plugin.c:78 +#, fuzzy +msgid "SDL error" +msgstr "Errorea" + #: src/sid/xs_about.c:84 #, c-format msgid "About %s" msgstr "%s(r)i buruz" -#: src/sid/xs_config.c:322 +#: src/sid/xs_about.c:214 src/sid/xs_interface.c:1825 +msgid "Close" +msgstr "Itxi" + +#: src/sid/xs_config.c:326 #, fuzzy msgid " Error" msgstr "Errorea" +#: src/sid/xs_config.c:326 +msgid "OK" +msgstr "Ados" + #: src/sid/xs_fileinfo.c:151 msgid "General info" msgstr "Informazio orokorra" @@ -3995,6 +2360,11 @@ msgid "Tune #%i: " msgstr "%i. doinua: " +#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 +#, c-format +msgid "Couldn't find pixmap file: %s" +msgstr "Ezin izan da pixmaparen fitxategia aurkitu: %s" + #: src/sid/xs_interface.c:234 msgid "Audacious-SID configuration" msgstr "Audacious-SID konfigurazioa" @@ -4310,15 +2680,15 @@ msgid "Use" msgstr "Erabili" -#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:430 +#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:447 msgid "Save" msgstr "Gorde" -#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:429 +#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:446 msgid "Import" msgstr "Inportatu" -#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:431 +#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:448 msgid "Delete" msgstr "Ezabatu" @@ -4351,6 +2721,11 @@ msgid "Playtime:" msgstr "Erreprodukzio-denbora:" +#: src/sid/xs_interface.c:921 src/sid/xs_interface.c:975 +#: src/sid/xs_interface.c:1155 +msgid "seconds" +msgstr "segundo" + #: src/sid/xs_interface.c:928 msgid "Minimum playtime:" msgstr "Gutxieneko erreprodukzio-denbora:" @@ -4460,10 +2835,6 @@ msgid "Song title format:" msgstr "Abestiaren titulu-formatua:" -#: src/sid/xs_interface.c:1103 -msgid "Title" -msgstr "Titulua" - #: src/sid/xs_interface.c:1125 msgid "Add sub-tunes to playlist" msgstr "Gehitu azpidoinuak erreprodukzio-zerrendari" @@ -4615,11 +2986,11 @@ msgid "No" msgstr "Ez" -#: src/skins/plugin.c:179 +#: src/skins/plugin.c:167 msgid "About Skinned GUI" msgstr "Azaldun interfazeari buruz" -#: src/skins/plugin.c:180 +#: src/skins/plugin.c:168 msgid "" "Copyright (c) 2008, by Tomasz MoÅ„ \n" "\n" @@ -4627,475 +2998,466 @@ "Copyright-a (c) 2008, Tomasz MoÅ„ \n" "\n" -#: src/skins/plugin.c:196 -msgid "Skinned Interface" -msgstr "" - -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:254 msgid "_Player:" msgstr "_Erreproduzitzailea:" -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:254 msgid "Select main player window font:" msgstr "Hautatu erreproduzitzaile nagusiaren leihoko letra-tipoa:" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:255 msgid "_Playlist:" msgstr "_Erreprodukzio-zerrenda:" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:255 msgid "Select playlist font:" msgstr "Hautatu erreprodukzio-zerrendaren letra-tipoa:" -#: src/skins/skins_cfg.c:321 +#: src/skins/skins_cfg.c:259 msgid "_Fonts" msgstr "_Letra-tipoak" -#: src/skins/skins_cfg.c:323 -msgid "Use Bitmap fonts if available" -msgstr "Erabili bitmapako letra-tipoak erabilgarri badaude" - -#: src/skins/skins_cfg.c:323 -msgid "" -"Use bitmap fonts if they are available. Bitmap fonts do not support Unicode " -"strings." +#: src/skins/skins_cfg.c:261 +msgid "Use bitmap fonts (supports ASCII only)" msgstr "" -"Erabili bitmapako letra-tipoak erabilgarri egonez gero. Bitmapako letra-" -"tipoek ez dituzte Unicode kateak onartzen." - -#: src/skins/skins_cfg.c:324 -msgid "_Miscellaneous" -msgstr "_Hainbat" - -#: src/skins/skins_cfg.c:325 -msgid "Show separators in playlist" -msgstr "Erakutsi bereizleak erreprodukzio-zerrendan" - -#: src/skins/skins_cfg.c:327 -msgid "Show window manager decoration" -msgstr "Erakutsi leiho-kudeatzailearen dekorazioa" -#: src/skins/skins_cfg.c:328 -msgid "This enables the window manager to show decorations for windows." -msgstr "Leiho-kudeatzailea gaitzen du leihoen dekorazioak erakusteko." - -#: src/skins/skins_cfg.c:329 -msgid "Use two-way text scroller" -msgstr "Erabili bi bideko testu-korritzailea" - -#: src/skins/skins_cfg.c:330 -msgid "" -"If selected, the file information text in the main window will scroll back " -"and forth. If not selected, the text will only scroll in one direction." +#: src/skins/skins_cfg.c:263 +msgid "Scroll song title in both directions" msgstr "" -"Hautatzen bada, leiho nagusiko fitxategi-informazioaren testua bi " -"norabidetan korrituko da. Ez bada hautatzen, testua norabide bakar batean " -"korrituko da." -#: src/skins/skins_cfg.c:331 -msgid "Disable inline gtk theme" -msgstr "Desgaitu barneko gtk gaia" +#: src/skins/skins_cfg.c:346 +msgid "_Skin" +msgstr "_Azala" -#: src/skins/skins_cfg.c:333 +#: src/skins/skins_cfg.c:393 #, fuzzy -msgid "Random skin on play" -msgstr "Nahastu ausaz erreprodukzio-zerrenda" +msgid "Interface Preferences" +msgstr "Hobespenak" -#: src/skins/skins_cfg.c:334 -msgid "Allow loading incomplete skins" -msgstr "Baimendu azal osatugabeak kargatzea" +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "Aurre-anp" -#: src/skins/skins_cfg.c:335 -msgid "" -"If selected, audacious won't refuse loading broken skins. Use only if your " -"favourite skin doesn't work" +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" msgstr "" -"Hautatzen bada, Audacious-ek ez du ukatuko hondatutako azalak kargatzea. " -"Baldin eta zure azal gogokoenak ez badu funtzionatzen soilik." -#: src/skins/skins_cfg.c:401 -msgid "Color Adjustment" -msgstr "Kolorea doitzea" +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "" -#: src/skins/skins_cfg.c:407 -msgid "" -"Audacious allows you to alter the color balance of the skinned UI. The " -"sliders below will allow you to do this." +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" msgstr "" -"Audacious-ek azaldun interfazeko kolorearen balantzea aldatzea baimentzen " -"dizu. Azpiko graduatzaileak hori egitea utziko dizu." -#: src/skins/skins_cfg.c:417 -msgid "Blue" -msgstr "Urdina" +#: src/skins/ui_equalizer.c:335 +#, fuzzy +msgid "250 Hz" +msgstr "22050 Hz " + +#: src/skins/ui_equalizer.c:335 +#, fuzzy +msgid "500 Hz" +msgstr "11000 Hz" + +#: src/skins/ui_equalizer.c:335 +#, fuzzy +msgid "1 kHz" +msgstr "11 kHz" -#: src/skins/skins_cfg.c:424 -msgid "Green" -msgstr "Berdea" +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "2 kHz" +msgstr "22 kHz" -#: src/skins/skins_cfg.c:431 -msgid "Red" -msgstr "Gorria" +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "4 kHz" +msgstr "44 kHz" -#: src/skins/skins_cfg.c:569 -msgid "_Skin" -msgstr "_Azala" +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "8 kHz" +msgstr "48 kHz" -#: src/skins/skins_cfg.c:574 +#: src/skins/ui_equalizer.c:336 #, fuzzy -msgid "Color adjustment ..." -msgstr "Kolorea doitzea" +msgid "16 kHz" +msgstr "48 kHz" -#: src/skins/ui_equalizer.c:463 +#: src/skins/ui_equalizer.c:378 msgid "Audacious Equalizer" msgstr "Audacious-en ekualizadorea" -#: src/skins/ui_equalizer.c:991 +#: src/skins/ui_equalizer.c:884 msgid "Presets" msgstr "Aurrezarpenak" -#: src/skins/ui_main.c:593 +#: src/skins/ui_main.c:444 msgid "kbps" msgstr "" -#: src/skins/ui_main.c:601 +#: src/skins/ui_main.c:452 #, fuzzy msgid "kHz" msgstr "Hz" -#: src/skins/ui_main.c:608 +#: src/skins/ui_main.c:459 #, fuzzy msgid "surround" msgstr "Surround" -#: src/skins/ui_main.c:981 -msgid "Audacious - visibility warning" -msgstr "Audacious - ikusgaitasunaren abisua" - -#: src/skins/ui_main.c:984 -msgid "Show main player window" -msgstr "Erakutsi erreproduzitzaile nagusiaren leihoa" - -#: src/skins/ui_main.c:985 -msgid "Ignore" -msgstr "Ezikusi egin" - -#: src/skins/ui_main.c:991 -msgid "" -"Audacious has been started with all of its windows hidden.\n" -"You may want to show the player window again to control Audacious; " -"otherwise, you'll have to control it remotely via audtool or enabled plugins " -"(such as the statusicon plugin)." -msgstr "" -"Audacious bere leiho guztiak ezkutatuta dituela abiatu da.\n" -"Erreproduzitzailearen leihoa erakustea nahiko duzu Audacious kontrolatzeko; " -"bestela, audtool edo gaitutako pluginen ('egoeraren ikonoa' plugina " -"bezalakoa) bidez urrunetik kontrola dezakezu." - -#: src/skins/ui_main.c:997 -msgid "Always ignore, show/hide is controlled remotely" -msgstr "Ezikusi egin, erakutsi/ezkutatu beti kontrolatzen da urrunetik" - -#: src/skins/ui_main.c:1042 -msgid "Audacious - broken GTK engine usage warning" -msgstr "Audacious - hondatutako GTK motorraren erabileraren abisua" - -#: src/skins/ui_main.c:1050 -#, c-format -msgid "" -"Broken GTK engine in use\n" -"\n" -"Audacious has detected that you are using a broken GTK engine.\n" -"\n" -"The theme engine you are using, %s, is incompatible with some of the " -"features used by modern skins. The incompatible features have been disabled " -"for this session.\n" -"\n" -"To use these features, please consider using a different GTK theme engine." -msgstr "" -"Hondatutako GTK motorra erabiltzen\n" -"\n" -"Audacious-ek hondatutako GTK motorra erabiltzen ari zarela detektatu du.\n" -"\n" -"Erabiltzen ari zaren gai-motorra, %s, azal modernoek dituzten " -"eginbide batzuetatik bateraezina da. Bateragarriak ez diren eginbideak " -"desgaitu egn dira saio honetan.\n" -"\n" -"Eginbide hauek erabiltzeko, egokiena bestelako GTK gai-motor bat erabiltzea " -"izango duzu." - -#: src/skins/ui_main.c:1061 -msgid "Do not display this warning again" -msgstr "Ez bistaratu abisu hau berriro" - -#: src/skins/ui_main.c:1269 -#, c-format -msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)" +#: src/skins/ui_main.c:807 +#, fuzzy, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "Bilatu: %d:%-2.2d/%d:%-2.2d (%% %d)" -#: src/skins/ui_main.c:1299 +#: src/skins/ui_main.c:828 #, c-format msgid "Volume: %d%%" msgstr "Bolumena: %% %d" -#: src/skins/ui_main.c:1322 +#: src/skins/ui_main.c:851 #, c-format msgid "Balance: %d%% left" msgstr "Balantzea: %% %d ezkerrean" -#: src/skins/ui_main.c:1324 +#: src/skins/ui_main.c:853 msgid "Balance: center" msgstr "Balantzea: erdian" -#: src/skins/ui_main.c:1326 +#: src/skins/ui_main.c:855 #, c-format msgid "Balance: %d%% right" msgstr "Balantzea: %% %d eskuinean" -#: src/skins/ui_main.c:1618 +#: src/skins/ui_main.c:981 msgid "Options Menu" msgstr "Aukeren menua" -#: src/skins/ui_main.c:1622 +#: src/skins/ui_main.c:985 msgid "Disable 'Always On Top'" msgstr "Desgaitu 'Beti gainean'" -#: src/skins/ui_main.c:1624 +#: src/skins/ui_main.c:987 msgid "Enable 'Always On Top'" msgstr "Gaitu 'Beti gainean'" -#: src/skins/ui_main.c:1627 +#: src/skins/ui_main.c:990 msgid "File Info Box" msgstr "Fitxategi-informazioaren koadroa" -#: src/skins/ui_main.c:1631 -msgid "Disable 'GUI Scaling'" -msgstr "Desgaitu 'Interfazea eskalatzea'" - -#: src/skins/ui_main.c:1633 -msgid "Enable 'GUI Scaling'" -msgstr "Gaitu 'Interfazea eskalatzea'" - -#: src/skins/ui_main.c:1636 +#: src/skins/ui_main.c:995 msgid "Visualization Menu" msgstr "Bisualizazioaren menua" -#: src/skins/ui_main.c:2348 +#: src/skins/ui_main.c:1645 msgid "Single mode." msgstr "" -#: src/skins/ui_main.c:2350 +#: src/skins/ui_main.c:1647 #, fuzzy msgid "Playlist mode." msgstr "Erreprodukzio-zerrenda" -#: src/skins/ui_main.c:2374 +#: src/skins/ui_main.c:1669 #, fuzzy msgid "Stopping after song." msgstr "Gelditu uneko abestiaren ondoren" -#: src/skins/ui_main.c:2376 +#: src/skins/ui_main.c:1671 msgid "Not stopping after song." msgstr "" -#: src/skins/ui_manager.c:50 src/skins/ui_manager.c:51 +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 msgid "Autoscroll Songname" msgstr "Autokorritu abesti-izena" -#: src/skins/ui_manager.c:56 src/skins/ui_manager.c:57 +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "Gelditu uneko abestiaren ondoren" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 msgid "Peaks" msgstr "Erpinak" -#: src/skins/ui_manager.c:68 src/skins/ui_manager.c:69 +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "Errepikatu" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "Ausazkoa" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "Erreprodukzio-zerrenda aurreraturik ez" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 msgid "Show Player" msgstr "Erakutsi erreproduzitzailea" -#: src/skins/ui_manager.c:71 src/skins/ui_manager.c:72 +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 msgid "Show Playlist Editor" msgstr "Erakutsi erreprodukzio-zerrendaren editorea" -#: src/skins/ui_manager.c:74 src/skins/ui_manager.c:75 +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 msgid "Show Equalizer" msgstr "Erakutsi ekualizadorea" -#: src/skins/ui_manager.c:77 src/skins/ui_manager.c:78 +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 msgid "Always on Top" msgstr "Beti gainean" -#: src/skins/ui_manager.c:80 src/skins/ui_manager.c:81 +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 msgid "Put on All Workspaces" msgstr "Jarri laneko area guztietan" -#: src/skins/ui_manager.c:83 src/skins/ui_manager.c:84 +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 msgid "Roll up Player" msgstr "Bildu erreproduzitzailea" -#: src/skins/ui_manager.c:86 src/skins/ui_manager.c:87 +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 msgid "Roll up Playlist Editor" msgstr "Bildu erreprodukzio-zerrendaren editorea" -#: src/skins/ui_manager.c:89 src/skins/ui_manager.c:90 +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 msgid "Roll up Equalizer" msgstr "Bildu ekualizadorea" -#: src/skins/ui_manager.c:92 src/sndstretch/sndstretch_xmms.c:393 -msgid "Scale" -msgstr "Eskalatu" - -#: src/skins/ui_manager.c:93 -msgid "DoubleSize" -msgstr "Tamaina bikoitza" - -#: src/skins/ui_manager.c:95 src/skins/ui_manager.c:96 -msgid "Easy Move" -msgstr "Erraz mugitu" - -#: src/skins/ui_manager.c:104 +#: src/skins/ui_manager.c:115 msgid "Analyzer" msgstr "Analizatzailea" -#: src/skins/ui_manager.c:105 +#: src/skins/ui_manager.c:116 msgid "Scope" msgstr "Esparrua" -#: src/skins/ui_manager.c:106 +#: src/skins/ui_manager.c:117 msgid "Voiceprint" msgstr "Ahotsmarka" -#: src/skins/ui_manager.c:107 +#: src/skins/ui_manager.c:118 msgid "Off" msgstr "Itzalita" -#: src/skins/ui_manager.c:111 src/skins/ui_manager.c:128 -#: src/skins/ui_manager.c:134 +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 msgid "Normal" msgstr "Normala" -#: src/skins/ui_manager.c:112 src/skins/ui_manager.c:129 +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 msgid "Fire" msgstr "Sua" -#: src/skins/ui_manager.c:113 +#: src/skins/ui_manager.c:124 msgid "Vertical Lines" msgstr "Marra bertikalak" -#: src/skins/ui_manager.c:117 +#: src/skins/ui_manager.c:128 msgid "Lines" msgstr "Marrak" -#: src/skins/ui_manager.c:118 +#: src/skins/ui_manager.c:129 msgid "Bars" msgstr "Barrak" -#: src/skins/ui_manager.c:122 +#: src/skins/ui_manager.c:133 msgid "Dot Scope" msgstr "Puntu esparrua" -#: src/skins/ui_manager.c:123 +#: src/skins/ui_manager.c:134 msgid "Line Scope" msgstr "Marra esparrua" -#: src/skins/ui_manager.c:124 +#: src/skins/ui_manager.c:135 msgid "Solid Scope" msgstr "Esparru soila" -#: src/skins/ui_manager.c:130 +#: src/skins/ui_manager.c:141 msgid "Ice" msgstr "Izotza" -#: src/skins/ui_manager.c:135 +#: src/skins/ui_manager.c:146 msgid "Smooth" msgstr "Leuna" -#: src/skins/ui_manager.c:139 src/skins/ui_manager.c:147 +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 msgid "Slowest" msgstr "Motelena" -#: src/skins/ui_manager.c:140 src/skins/ui_manager.c:148 +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 msgid "Slow" msgstr "Motela" -#: src/skins/ui_manager.c:141 src/skins/ui_manager.c:149 +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 msgid "Medium" msgstr "Tartekoa" -#: src/skins/ui_manager.c:142 src/skins/ui_manager.c:150 +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 msgid "Fast" msgstr "Azkarra" -#: src/skins/ui_manager.c:143 src/skins/ui_manager.c:151 +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 msgid "Fastest" msgstr "Azkarrena" -#: src/skins/ui_manager.c:155 +#: src/skins/ui_manager.c:166 msgid "Time Elapsed" msgstr "Igarotako denbora" -#: src/skins/ui_manager.c:156 +#: src/skins/ui_manager.c:167 msgid "Time Remaining" msgstr "Geratzen den denbora" -#: src/skins/ui_manager.c:185 +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "Pausatu" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "Aurrekoa" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "Hurrengoa" + +#: src/skins/ui_manager.c:196 msgid "Visualization" msgstr "Bisualizazioa" -#: src/skins/ui_manager.c:186 +#: src/skins/ui_manager.c:197 msgid "Visualization Mode" msgstr "Bisualizazio modua" -#: src/skins/ui_manager.c:187 +#: src/skins/ui_manager.c:198 msgid "Analyzer Mode" msgstr "Analizatzaile modua" -#: src/skins/ui_manager.c:188 +#: src/skins/ui_manager.c:199 msgid "Scope Mode" msgstr "Esparru modua" -#: src/skins/ui_manager.c:189 +#: src/skins/ui_manager.c:200 msgid "Voiceprint Mode" msgstr "Ahotsmarkaren modua" -#: src/skins/ui_manager.c:190 +#: src/skins/ui_manager.c:201 msgid "WindowShade VU Mode" msgstr "LeihoItzaldura VU modua" -#: src/skins/ui_manager.c:191 +#: src/skins/ui_manager.c:202 msgid "Analyzer Falloff" msgstr "Analizatzailearen erortzea" -#: src/skins/ui_manager.c:192 +#: src/skins/ui_manager.c:203 msgid "Peaks Falloff" msgstr "Erpinen erortzea" -#: src/skins/ui_manager.c:202 src/skins/ui_manager.c:203 +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "Erreprodukzio-zerrenda" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "Erreprodukzio-zerrenda berria" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 msgid "Select Next Playlist" msgstr "Hautatu hurrengo erreprodukzio-zerrenda" -#: src/skins/ui_manager.c:205 src/skins/ui_manager.c:206 +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 msgid "Select Previous Playlist" msgstr "Hautatu aurreko erreprodukzio-zerrenda" +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "Ezabatu erreprodukzio-zerrenda" + #: src/skins/ui_manager.c:222 +#, fuzzy +msgid "Import Playlist" +msgstr "Kargatu erreprodukzio-zerrenda" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "" +"Erreprodukzio-zerrendaren fitxategia kargatzen du hautatutako erreprodukzio-" +"zerrendan." + +#: src/skins/ui_manager.c:226 +#, fuzzy +msgid "Export Playlist" +msgstr "Kargatu erreprodukzio-zerrenda" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "Hautatutako erreprodukzio-zerrenda gordetzen du" + +#: src/skins/ui_manager.c:229 +#, fuzzy +msgid "Save All Playlists" +msgstr "Gorde erreprodukzio-zerrenda" + +#: src/skins/ui_manager.c:230 +msgid "" +"Saves all the playlists that are open. Note that this is done automatically " +"when Audacious quits." +msgstr "" + +#: src/skins/ui_manager.c:234 msgid "Refresh List" msgstr "Freskatu zerrenda" -#: src/skins/ui_manager.c:226 +#: src/skins/ui_manager.c:235 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "" +"Erreprodukzio-zerrendako sarrera bati esleituta dagoen metadatuak freskatzen " +"ditu." + +#: src/skins/ui_manager.c:238 msgid "List Manager" msgstr "Zerrenda-kudeatzailea" -#: src/skins/ui_manager.c:236 +#: src/skins/ui_manager.c:239 +msgid "Opens the playlist manager." +msgstr "Erreprodukzio-zerrenden kudeatzailea irekitzen du." + +#: src/skins/ui_manager.c:243 +msgid "View" +msgstr "Ikusi" + +#: src/skins/ui_manager.c:244 +msgid "Interface" +msgstr "" + +#: src/skins/ui_manager.c:245 +#, fuzzy +msgid "Interface Preferences ..." +msgstr "Hobespenak" + +#: src/skins/ui_manager.c:249 msgid "Add Internet Address..." msgstr "Gehitu interneteko helbidea..." -#: src/skins/ui_manager.c:240 +#: src/skins/ui_manager.c:250 +msgid "Adds a remote track to the playlist." +msgstr "Gehitu urruneko pista erreprodukzio-zerrendari." + +#: src/skins/ui_manager.c:253 msgid "Add Files..." msgstr "Gehitu fitxategiak..." -#: src/skins/ui_manager.c:246 +#: src/skins/ui_manager.c:254 +msgid "Adds files to the playlist." +msgstr "Gehitu fitxategiak erreprodukzio-zerrendari." + +#: src/skins/ui_manager.c:259 msgid "Search and Select" msgstr "Bilatu eta hautatu" -#: src/skins/ui_manager.c:247 +#: src/skins/ui_manager.c:260 msgid "" "Searches the playlist and selects playlist entries based on specific " "criteria." @@ -5103,223 +3465,371 @@ "Erreprodukzio-zerrendan bilatzen du eta irizpide zehatz batzuetan " "oinarritutako erreprodukzio-zerrendako sarrerak hautatzen ditu." -#: src/skins/ui_manager.c:250 +#: src/skins/ui_manager.c:263 msgid "Invert Selection" msgstr "Alderantzikatu hautapena" -#: src/skins/ui_manager.c:251 +#: src/skins/ui_manager.c:264 msgid "Inverts the selected and unselected entries." msgstr "Hautatutako edo hautatu gabeko sarrerak alderantzikatzen ditu." +#: src/skins/ui_manager.c:267 +msgid "Select All" +msgstr "Hautatu denak" + #: src/skins/ui_manager.c:268 +msgid "Selects all of the playlist entries." +msgstr "Hautatu erreprodukzio-zerrendako sarrera guztiak." + +#: src/skins/ui_manager.c:271 +msgid "Select None" +msgstr "Ez hautatu ezer" + +#: src/skins/ui_manager.c:272 +msgid "Deselects all of the playlist entries." +msgstr "Erreprodukzio-zerrendako sarrera guztiak desautatzen ditu." + +#: src/skins/ui_manager.c:277 +msgid "Remove All" +msgstr "Kendu guztiak" + +#: src/skins/ui_manager.c:278 +msgid "Removes all entries from the playlist." +msgstr "Sarrera guztiak kentzen ditu erreprodukzio-zerrendatik" + +#: src/skins/ui_manager.c:281 msgid "Clear Queue" msgstr "Garbitu ilara" -#: src/skins/ui_manager.c:269 +#: src/skins/ui_manager.c:282 msgid "Clears the queue associated with this playlist." msgstr "Erreprodukzio-zerrendarekin esleitutako ilara garbitzen du." -#: src/skins/ui_manager.c:272 +#: src/skins/ui_manager.c:285 msgid "Remove Unavailable Files" msgstr "Kendu fitxategi erabilkaitzak" -#: src/skins/ui_manager.c:273 +#: src/skins/ui_manager.c:286 msgid "Removes unavailable files from the playlist." msgstr "" "Erabilgarri ez dauden fitxategiak kentzen ditu erreprodukzio-zerrendatik." -#: src/skins/ui_manager.c:276 +#: src/skins/ui_manager.c:289 msgid "Remove Duplicates" msgstr "Kendu bikoiztuak" -#: src/skins/ui_manager.c:279 +#: src/skins/ui_manager.c:291 src/skins/ui_manager.c:323 +#: src/skins/ui_manager.c:353 +msgid "By Title" +msgstr "Tituluaren arabera" + +#: src/skins/ui_manager.c:292 msgid "Removes duplicate entries from the playlist by title." msgstr "" "Tituluaren arabera bikoiztutako sarrerak kentzen ditu erreprodukzio-" "zerrendatik." -#: src/skins/ui_manager.c:282 src/skins/ui_manager.c:318 -#: src/skins/ui_manager.c:348 +#: src/skins/ui_manager.c:295 src/skins/ui_manager.c:335 +#: src/skins/ui_manager.c:365 msgid "By Filename" msgstr "Fitxategi-izenaren arabera" -#: src/skins/ui_manager.c:283 +#: src/skins/ui_manager.c:296 msgid "Removes duplicate entries from the playlist by filename." msgstr "" "Fitxategi-izenaren arabera bikoiztutako sarrerak kenten ditu erreprodukzio-" "zerrendatik." -#: src/skins/ui_manager.c:286 src/skins/ui_manager.c:322 -#: src/skins/ui_manager.c:352 +#: src/skins/ui_manager.c:299 src/skins/ui_manager.c:339 +#: src/skins/ui_manager.c:369 msgid "By Path + Filename" msgstr "Bide-izenaren arabera" -#: src/skins/ui_manager.c:287 +#: src/skins/ui_manager.c:300 msgid "Removes duplicate entries from the playlist by their full path." msgstr "" "Bide-izen osoaren arabera bikoiztutako sarrerak kentzen ditu erreprodukzio-" "zerrendatik." -#: src/skins/ui_manager.c:300 +#: src/skins/ui_manager.c:303 +msgid "Remove Unselected" +msgstr "Kendu desautatutakoak" + +#: src/skins/ui_manager.c:304 +msgid "Remove unselected entries from the playlist." +msgstr "Desautatutako sarrerak kentzen ditu erreprodukzio-zerrendatik." + +#: src/skins/ui_manager.c:307 +msgid "Remove Selected" +msgstr "Kendu hautatutakoak" + +#: src/skins/ui_manager.c:308 +msgid "Remove selected entries from the playlist." +msgstr "Hautatutako sarrerak kentzen ditu erreprodukzio-zerrendatik." + +#: src/skins/ui_manager.c:313 +msgid "Randomize List" +msgstr "Nahastu ausaz zerrenda" + +#: src/skins/ui_manager.c:314 +msgid "Randomizes the playlist." +msgstr "Nahastu ausaz erreprodukzio-zerrenda" + +#: src/skins/ui_manager.c:317 msgid "Reverse List" msgstr "Alderantzikatu zerrenda" -#: src/skins/ui_manager.c:301 +#: src/skins/ui_manager.c:318 msgid "Reverses the playlist." msgstr "Alderantzikatu erreprodukzio-zerrenda." -#: src/skins/ui_manager.c:304 +#: src/skins/ui_manager.c:321 msgid "Sort List" msgstr "Ordenatu zerrenda" -#: src/skins/ui_manager.c:307 src/skins/ui_manager.c:337 +#: src/skins/ui_manager.c:324 src/skins/ui_manager.c:354 msgid "Sorts the list by title." msgstr "Tituluaren arabera ordenatzen du zerrenda." -#: src/skins/ui_manager.c:311 src/skins/ui_manager.c:341 +#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +#, fuzzy +msgid "By Album" +msgstr "Albuma:" + +#: src/skins/ui_manager.c:328 src/skins/ui_manager.c:358 #, fuzzy msgid "Sorts the list by album." msgstr "Tituluaren arabera ordenatzen du zerrenda." -#: src/skins/ui_manager.c:315 src/skins/ui_manager.c:345 +#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +msgid "By Artist" +msgstr "Artistaren arabera" + +#: src/skins/ui_manager.c:332 src/skins/ui_manager.c:362 msgid "Sorts the list by artist." msgstr "Artistaren arabera ordenatzen du zerrenda." -#: src/skins/ui_manager.c:319 src/skins/ui_manager.c:349 +#: src/skins/ui_manager.c:336 src/skins/ui_manager.c:366 msgid "Sorts the list by filename." msgstr "Fitxategi-izenaren arabera ordenatzen du zerrenda." -#: src/skins/ui_manager.c:323 src/skins/ui_manager.c:353 +#: src/skins/ui_manager.c:340 src/skins/ui_manager.c:370 msgid "Sorts the list by full pathname." msgstr "Bide-izen osoaren arabera ordenatzen du zerrenda." -#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +#: src/skins/ui_manager.c:343 src/skins/ui_manager.c:373 msgid "By Date" msgstr "Dataren arabera" -#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +#: src/skins/ui_manager.c:344 src/skins/ui_manager.c:374 msgid "Sorts the list by modification time." msgstr "Eraldatze-dataren arabera ordenatzen du zerrenda." -#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +#: src/skins/ui_manager.c:347 src/skins/ui_manager.c:377 +msgid "By Track Number" +msgstr "Pista zenbakiaren arabera" + +#: src/skins/ui_manager.c:348 src/skins/ui_manager.c:378 msgid "Sorts the list by track number." msgstr "Pista zenbakiaren arabera ordenatzen du zerrenda." -#: src/skins/ui_manager.c:334 +#: src/skins/ui_manager.c:351 msgid "Sort Selected" msgstr "Ordenatu hautatutakoak" -#: src/skins/ui_manager.c:373 +#: src/skins/ui_manager.c:387 +msgid "File" +msgstr "Fitxategia" + +#: src/skins/ui_manager.c:388 +msgid "Help" +msgstr "Laguntza" + +#: src/skins/ui_manager.c:390 msgid "Plugin Services" msgstr "Pluginen zerbitzuak" -#: src/skins/ui_manager.c:384 +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:395 +msgid "View Track Details" +msgstr "Ikusi pistaren xehetasunak" + +#: src/skins/ui_manager.c:393 src/skins/ui_manager.c:396 +msgid "View track details" +msgstr "Ikusi pistaren xehetasunak" + +#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 +msgid "About Audacious" +msgstr "Audacious-i buruz" + +#: src/skins/ui_manager.c:401 msgid "Play File" msgstr "Erreproduzitu fitxategia" -#: src/skins/ui_manager.c:387 +#: src/skins/ui_manager.c:402 +msgid "Load and play a file" +msgstr "Kargatu eta erreproduzitu fitxategi bat" + +#: src/skins/ui_manager.c:404 msgid "Play Location" msgstr "Erreproduzitu kokalekua" -#: src/skins/ui_manager.c:428 +#: src/skins/ui_manager.c:405 +msgid "Play media from the selected location" +msgstr "Erreproduzitu multimedia hautatutako kokalekutik" + +#: src/skins/ui_manager.c:407 +msgid "Plugin services" +msgstr "Pluginen zerbitzuak" + +#: src/skins/ui_manager.c:409 +msgid "Preferences" +msgstr "Hobespenak" + +#: src/skins/ui_manager.c:410 +msgid "Open preferences window" +msgstr "Ireki hobespenen leihoa" + +#: src/skins/ui_manager.c:413 +msgid "Quit Audacious" +msgstr "Irten Audacious-etik" + +#: src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Set A-B" +msgstr "Ezarri A-B" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Clear A-B" +msgstr "Garbitu A-B" + +#: src/skins/ui_manager.c:421 src/skins/ui_manager.c:422 +msgid "Jump to Playlist Start" +msgstr "Saltatu zerrendaren hasierara" + +#: src/skins/ui_manager.c:427 src/skins/ui_manager.c:428 +msgid "Jump to Time" +msgstr "Jauzi denborara" + +#: src/skins/ui_manager.c:430 +msgid "Queue Toggle" +msgstr "Txandakatu ilara" + +#: src/skins/ui_manager.c:431 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "Erreprodukzio-zerrendako ilarako sarrerak gaitzen/desgaitzen ditu." + +#: src/skins/ui_manager.c:434 +msgid "Copy" +msgstr "" + +#: src/skins/ui_manager.c:436 +#, fuzzy +msgid "Cut" +msgstr "Unekoa" + +#: src/skins/ui_manager.c:438 +#, fuzzy +msgid "Paste" +msgstr "Azkarrena" + +#: src/skins/ui_manager.c:445 msgid "Load" msgstr "Kargatu" -#: src/skins/ui_manager.c:433 src/skins/ui_manager.c:454 -#: src/skins/ui_manager.c:469 +#: src/skins/ui_manager.c:450 src/skins/ui_manager.c:471 +#: src/skins/ui_manager.c:486 msgid "Preset" msgstr "Aurrezarpena" -#: src/skins/ui_manager.c:434 +#: src/skins/ui_manager.c:451 msgid "Load preset" msgstr "Kargatu aurrezarpena" -#: src/skins/ui_manager.c:436 src/skins/ui_manager.c:457 -#: src/skins/ui_manager.c:472 +#: src/skins/ui_manager.c:453 src/skins/ui_manager.c:474 +#: src/skins/ui_manager.c:489 msgid "Auto-load preset" msgstr "Autokargaren aurrezarpena" -#: src/skins/ui_manager.c:437 +#: src/skins/ui_manager.c:454 msgid "Load auto-load preset" msgstr "Kargatu autokargaren aurrezarpenak" -#: src/skins/ui_manager.c:440 +#: src/skins/ui_manager.c:457 msgid "Load default preset into equalizer" msgstr "Kargatu aurrezarpen lehenetsia ekualizadorean" -#: src/skins/ui_manager.c:442 +#: src/skins/ui_manager.c:459 msgid "Zero" msgstr "Zero" -#: src/skins/ui_manager.c:443 +#: src/skins/ui_manager.c:460 msgid "Set equalizer preset levels to zero" msgstr "Ezarri ekualizadorearen aurrezarpenen maila zerorekin" -#: src/skins/ui_manager.c:445 +#: src/skins/ui_manager.c:462 msgid "From file" msgstr "Fitxategitik" -#: src/skins/ui_manager.c:446 +#: src/skins/ui_manager.c:463 msgid "Load preset from file" msgstr "Kargatu aurrezarpenak fitxategitik" -#: src/skins/ui_manager.c:448 +#: src/skins/ui_manager.c:465 msgid "From WinAMP EQF file" msgstr "WinAMP EQF fitxategitik" -#: src/skins/ui_manager.c:449 +#: src/skins/ui_manager.c:466 msgid "Load preset from WinAMP EQF file" msgstr "Kargatu aurrezarpenak WinAMP EQF fitxategitik" -#: src/skins/ui_manager.c:451 +#: src/skins/ui_manager.c:468 msgid "WinAMP Presets" msgstr "WinAMP aurrezarpenak" -#: src/skins/ui_manager.c:452 +#: src/skins/ui_manager.c:469 msgid "Import WinAMP presets" msgstr "Inportatu WinAMP aurrezarpenak" -#: src/skins/ui_manager.c:455 +#: src/skins/ui_manager.c:472 msgid "Save preset" msgstr "Gorde aurrezarpenak" -#: src/skins/ui_manager.c:458 +#: src/skins/ui_manager.c:475 msgid "Save auto-load preset" msgstr "Gorde autokargaren aurrezarpenak" -#: src/skins/ui_manager.c:461 +#: src/skins/ui_manager.c:478 msgid "Save default preset" msgstr "Gorde aurrezarpen lehenetsia" -#: src/skins/ui_manager.c:463 +#: src/skins/ui_manager.c:480 msgid "To file" msgstr "Fitxategian" -#: src/skins/ui_manager.c:464 +#: src/skins/ui_manager.c:481 msgid "Save preset to file" msgstr "Gorde aurrezarpena fitxategian" -#: src/skins/ui_manager.c:466 +#: src/skins/ui_manager.c:483 msgid "To WinAMP EQF file" msgstr "WinAMP EQF fitxategian" -#: src/skins/ui_manager.c:467 +#: src/skins/ui_manager.c:484 msgid "Save preset to WinAMP EQF file" msgstr "Gorde aurrezarpena WinAMP EQF fitxategian" -#: src/skins/ui_manager.c:470 +#: src/skins/ui_manager.c:487 msgid "Delete preset" msgstr "Ezabatu aurrezarpena" -#: src/skins/ui_manager.c:473 +#: src/skins/ui_manager.c:490 msgid "Delete auto-load preset" msgstr "Ezabatu autokargaren aurrezarpenak" -#: src/skins/ui_playlist.c:374 +#: src/skins/ui_playlist.c:244 msgid "Search entries in active playlist" msgstr "Bilatu sarrerak erreprodukzio-zerrenda aktiboan" -#: src/skins/ui_playlist.c:382 +#: src/skins/ui_playlist.c:252 msgid "" "Select entries in playlist by filling one or more fields. Fields use regular " "expressions syntax, case-insensitive. If you don't know how regular " @@ -5331,120 +3841,61 @@ "minuskulak ez bereiztuz. Ez badakizu adierazpen erregularrak nola ibiltzen " "diren, sartu bilatzea nahi duzunaren zati literal bat." -#: src/skins/ui_playlist.c:397 +#: src/skins/ui_playlist.c:260 +msgid "Title: " +msgstr "Izenburua: " + +#: src/skins/ui_playlist.c:267 msgid "Album: " msgstr "Albuma: " -#: src/skins/ui_playlist.c:404 +#: src/skins/ui_playlist.c:274 msgid "Artist: " msgstr "Artista: " -#: src/skins/ui_playlist.c:411 +#: src/skins/ui_playlist.c:281 msgid "Filename: " msgstr "Fitxategi-izena: " -#: src/skins/ui_playlist.c:419 +#: src/skins/ui_playlist.c:289 msgid "Clear previous selection before searching" msgstr "Garbitu aurreko hautapena bilatu aurretik" -#: src/skins/ui_playlist.c:422 +#: src/skins/ui_playlist.c:292 msgid "Automatically toggle queue for matching entries" msgstr "Txandakatu automatikoki ilara bat datozen sarrerentzako" -#: src/skins/ui_playlist.c:425 +#: src/skins/ui_playlist.c:295 msgid "Create a new playlist with matching entries" msgstr "Sortu erreprodukzio-zerrenda berria bat datozen sarrerekin" -#: src/skins/ui_playlist.c:772 -msgid "Save as Static Playlist" -msgstr "Gorde erreprodukzio-zerrenda estatiko gisa" - -#: src/skins/ui_playlist.c:779 -msgid "Use Relative Path" -msgstr "Erabili bide-izen erlatiboa" - -#: src/skins/ui_playlist.c:802 -msgid "Load Playlist" -msgstr "Kargatu erreprodukzio-zerrenda" - -#: src/skins/ui_playlist.c:815 -msgid "Save Playlist" -msgstr "Gorde erreprodukzio-zerrenda" - -#: src/skins/ui_playlist.c:1146 +#: src/skins/ui_playlist.c:762 msgid "Audacious Playlist Editor" msgstr "Audacious erreprodukzio-zerrendaren editorea" -#: src/skins/ui_playlist.c:1206 +#: src/skins/ui_playlist.c:809 #, c-format msgid "%s (%d of %d)" msgstr "" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "31 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "63 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "125 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "250 Hz" -msgstr "22050 Hz " - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "500 Hz" -msgstr "11000 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "1 kHz" -msgstr "11 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "2 kHz" -msgstr "22 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "4 kHz" -msgstr "44 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "8 kHz" -msgstr "48 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "16 kHz" -msgstr "48 kHz" - -#: src/skins/ui_skinselector.c:179 +#: src/skins/ui_skinselector.c:162 msgid "Archived Winamp 2.x skin" msgstr "Konprimitutako Winamp 2.x azala" -#: src/skins/ui_skinselector.c:184 +#: src/skins/ui_skinselector.c:167 msgid "Unarchived Winamp 2.x skin" msgstr "Deskonprimitutako Winamp 2.x azala" -#: src/skins/util.c:834 +#: src/skins/util.c:773 #, c-format msgid "Could not create directory (%s): %s\n" msgstr "Ezin izan da direktorioa (%s) sortu: %s\n" -#: src/sndfile/plugin.c:531 +#: src/sndfile/plugin.c:438 msgid "About sndfile plugin" msgstr "sndfile pluginari buruz" -#: src/sndfile/plugin.c:532 +#: src/sndfile/plugin.c:439 msgid "" "Adapted for Audacious usage by Tony Vroon \n" "from the xmms_sndfile plugin which is:\n" @@ -5485,57 +3936,65 @@ "Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" "Boston, MA 02110-1301, USA." -#: src/sndstretch/sndstretch_xmms.c:175 +#: src/sndstretch/sndstretch_xmms.c:155 msgid "About SndStretch" msgstr "SndStretch-i buruz" -#: src/sndstretch/sndstretch_xmms.c:336 +#: src/sndstretch/sndstretch_xmms.c:313 msgid "Volume corr." msgstr "Bolumenaren korr." -#: src/sndstretch/sndstretch_xmms.c:337 +#: src/sndstretch/sndstretch_xmms.c:314 msgid "Short Overlap" msgstr "Teilakatze laburra" -#: src/sndstretch/sndstretch_xmms.c:391 +#: src/sndstretch/sndstretch_xmms.c:360 msgid "Speed" msgstr "Abiadura" -#: src/sndstretch/sndstretch_xmms.c:392 +#: src/sndstretch/sndstretch_xmms.c:361 msgid "Pitch" msgstr "Tonua" -#: src/sndstretch/sndstretch_xmms.c:413 +#: src/sndstretch/sndstretch_xmms.c:362 +msgid "Scale" +msgstr "Eskalatu" + +#: src/sndstretch/sndstretch_xmms.c:363 +msgid "Options" +msgstr "Aukerak" + +#: src/sndstretch/sndstretch_xmms.c:382 msgid "SndStretch - Configuration" msgstr "SndStretch - Konfigurazioa" -#: src/song_change/song_change.c:397 +#: src/song_change/song_change.c:464 msgid "Command to run when Audacious starts a new song." msgstr "Exekutatuko den komandoa audacious-ek abesti berria hastean." -#: src/song_change/song_change.c:398 src/song_change/song_change.c:402 -#: src/song_change/song_change.c:406 src/song_change/song_change.c:410 +#: src/song_change/song_change.c:465 src/song_change/song_change.c:469 +#: src/song_change/song_change.c:473 src/song_change/song_change.c:477 msgid "Command:" msgstr "Komandoa:" -#: src/song_change/song_change.c:401 +#: src/song_change/song_change.c:468 msgid "Command to run toward the end of a song." msgstr "Exekutatuko den komandoa abestiaren amaierantz joatean." -#: src/song_change/song_change.c:405 +#: src/song_change/song_change.c:472 msgid "Command to run when Audacious reaches the end of the playlist." msgstr "" "Exekutatuko den komandoa Audacious erreprodukzio-zerrendaren amaierara " "iristean." -#: src/song_change/song_change.c:409 +#: src/song_change/song_change.c:476 msgid "" "Command to run when title changes for a song (i.e. network streams titles)." msgstr "" "Exekutatuko den komandoa abesti baten titulua aldatzean (adib. sareko " "korronteen tituluak)." -#: src/song_change/song_change.c:413 +#: src/song_change/song_change.c:480 #, fuzzy msgid "" "You can use the following format strings which\n" @@ -5549,7 +4008,10 @@ "%n or %s: Song name\n" "%r: Rate (in bits per second)\n" "%t: Playlist position (%02d)\n" -"%p: Currently playing (1 or 0)" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" msgstr "" "Honako formatu-kateak erabil ditzakezu\n" "komandoari deitu aurretik ordeztuko direnak\n" @@ -5565,7 +4027,7 @@ "%%t: erreprodukzio-zerrendaren posizioa (%%02d)\n" "%%p: unean erreproduzitzen (1 edo 0)" -#: src/song_change/song_change.c:437 +#: src/song_change/song_change.c:507 msgid "" "Parameters passed to the shell should be encapsulated in " "quotes. Doing otherwise is a security risk." @@ -5573,312 +4035,1829 @@ "Shell-ari emandako parametroak komatxoen artean kapsulatu " "behar dira. Bestela segurtasunezko arriskua izan daiteke." -#: src/song_change/song_change.c:448 +#: src/song_change/song_change.c:518 msgid "Commands" msgstr "Komandoak" -#: src/song_change/song_change.c:484 +#: src/song_change/song_change.c:555 +#, fuzzy +msgid "Song Change" +msgstr "Abestiaren mezua" + +#: src/statusicon/statusicon.c:378 +msgid "About Status Icon Plugin" +msgstr "Egoeraren ikonoa pluginari buruz" + +#: src/statusicon/statusicon.c:379 +#, fuzzy +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager.\n" +msgstr "" +"\n" +"Garatzailea: Giacomo Lozito < james@develia.org >\n" +"\n" +"Plugin honek egoeraren ikonoa eskaintzen du,\n" +"leiho-kudeatzailearen sistemako erretiluko arean kokatua.\n" + +#: src/statusicon/statusicon.c:447 +msgid "Status Icon Plugin - Preferences" +msgstr "Egoeraren ikonoa plugina - Hobespenak" + +#: src/statusicon/statusicon.c:457 +msgid "Right-Click Menu" +msgstr "Eskuineko botoiaren menua" + +#: src/statusicon/statusicon.c:462 +msgid "Small playback menu #1" +msgstr "1. erreprodukzio-menu txikia" + +#: src/statusicon/statusicon.c:465 +msgid "Small playback menu #2" +msgstr "2. erreprodukzio-menu txikia" + +#: src/statusicon/statusicon.c:481 +msgid "Mouse Scroll Action" +msgstr "Saguaren korritze-ekintza" + +#: src/statusicon/statusicon.c:485 +msgid "Change volume" +msgstr "Aldatu bolumena" + +#: src/statusicon/statusicon.c:487 +msgid "Change playing song" +msgstr "Aldatu erreprodukzioaren abestia" + +#: src/statusicon/statusicon.c:500 +#, fuzzy +msgid "Other settings" +msgstr "Nahastailearen ezarpenak" + +#: src/statusicon/statusicon.c:505 +msgid "Disable the popup window" +msgstr "" + +#: src/statusicon/statusicon.c:512 +msgid "Close to the notification area (system tray)" +msgstr "" + +#: src/stereo_plugin/stereo.c:41 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin 1999." +msgstr "" +"Estra Estereo plugina\n" +"\n" +"Johan Levin 1999." + +#: src/stereo_plugin/stereo.c:65 +msgid "About Extra Stereo Plugin" +msgstr "Estra Estereo plugina" + +#: src/stereo_plugin/stereo.c:102 +msgid "Configure Extra Stereo" +msgstr "Konfiguratu Estra Estereo" + +#: src/tonegen/tonegen.c:48 +msgid "About Tone Generator" +msgstr "Tonu-sortzaileari buruz" + +#: src/tonegen/tonegen.c:50 +msgid "" +"Sinus tone generator by Haavard Kvaalen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" +msgstr "" +"Sinu bidezko tonu-sortzailearen garatzailea :Haavard Kvaalen \n" +"Eraldaketak: Daniel J. Peng \n" +"\n" +"Hau erabiltzeko gehitu URL bat, tone://maiztasun1;maiztasun2;maiztasun3;...\n" +"adib. tone://2000;2005 2000Hz eta 2005Hz tonuak erreproduzitzeko" + +#: src/tonegen/tonegen.c:100 +#, c-format +msgid "%s %.1f Hz" +msgstr "%s %.1f Hz" + +#: src/tonegen/tonegen.c:100 +msgid "Tone Generator: " +msgstr "Tonu-sortzailea: " + +#: src/unix-io/gtk.c:34 +#, fuzzy +msgid "About File I/O Plugin" +msgstr "ESounD pluginari buruz" + +#: src/vorbis/configure.c:31 +msgid "Override generic titles" +msgstr "Gainidatzi titulu generikoak" + +#: src/vorbis/configure.c:32 +msgid "Title format:" +msgstr "Titulu formatua:" + +#: src/vorbis/configure.c:36 +#, fuzzy +msgid "Ogg Vorbis Tags" +msgstr "Ogg Vorbis etiketak:" + +#: src/vorbis/configure.c:69 +msgid "Ogg Vorbis Audio Plugin Configuration" +msgstr "Ogg Vorbis audioaren pluginaren konfigurazioa" + +#: src/vorbis/vorbis.c:581 +msgid "About Ogg Vorbis Audio Plugin" +msgstr "Ogg Vorbis audioaren pluginari buruz" + +#: src/vorbis/vorbis.c:586 +msgid "" +"Ogg Vorbis Plugin by the Xiph.org Foundation\n" +"\n" +"Original code by\n" +"Tony Arcieri \n" +"Contributions from\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visit the Xiph.org Foundation at http://www.xiph.org/\n" +msgstr "" +"Ogg Vorbis plugina Xiph.org fundazioaren eskutik\n" +"\n" +"Jatorrizko kodea:\n" +"Tony Arcieri \n" +"Laguntzaileak:\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Bisitatu Xiph.org fundazioa honako gunean: http://www.xiph.org/\n" + +#: src/vtx/about.c:14 +msgid "About Vortex Player" +msgstr "Vortex erreproduzitzaileari buruz" + +#: src/vtx/about.c:15 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"\n" +"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" +"and other AY/YM music sites.\n" +"\n" +"Audacious implementation by Pavel Vymetalek " +msgstr "" +"Vortex fitxategi-formatuen erreproduzitzailearen garatzailea: Sashnov " +"Alexander \n" +"Jatorrizko in_vtx.dll iturburuan aurkituta: Roman Sherbakov \n" +"\n" +"vtx formatuko musika honako webgunean aurki daiteke: http://vtx.microfor.ru/" +"music.htm\n" +"eta beste AY/YM musika guneetan.\n" +"\n" +"Audacious-entzako inplementazioa: Pavel Vymetalek " + +#: src/wavpack/wavpack.c:353 +#, c-format +msgid "Wavpack Decoder Plugin %s" +msgstr "Wavpack deskodetzailearen %s plugina" + +#: src/wavpack/wavpack.c:354 +msgid "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan\n" +"Visit the Wavpack site at http://www.wavpack.com/\n" +msgstr "" +"Copyright-a (c) 2006 William Pitcock \n" +"\n" +"Pluginaren kode batzuk Miles Egan-ek garatua\n" +"Bisitatu Wavpack gunea: http://www.wavpack.com/\n" + +#~ msgid "Use Bitmap fonts if available" +#~ msgstr "Erabili bitmapako letra-tipoak erabilgarri badaude" + +#~ msgid "" +#~ "Use bitmap fonts if they are available. Bitmap fonts do not support " +#~ "Unicode strings." +#~ msgstr "" +#~ "Erabili bitmapako letra-tipoak erabilgarri egonez gero. Bitmapako letra-" +#~ "tipoek ez dituzte Unicode kateak onartzen." + +#~ msgid "_Miscellaneous" +#~ msgstr "_Hainbat" + +#~ msgid "Use two-way text scroller" +#~ msgstr "Erabili bi bideko testu-korritzailea" + +#~ msgid "About " +#~ msgstr "Honi buruz: " + +#~ msgid "" +#~ "\n" +#~ "Copyright (C) 2002, 2003 Simon Peter \n" +#~ "\n" +#~ "This plugin is released under the terms and conditions of the GNU LGPL.\n" +#~ "See http://www.gnu.org/licenses/lgpl.html for details.\n" +#~ "\n" +#~ "This plugin uses the AdPlug library, which is copyright (C) Simon Peter, " +#~ "et al.\n" +#~ "Linked AdPlug library version: " +#~ msgstr "" +#~ "\n" +#~ "Copyright-a (C) 2002, 2003 Simon Peter \n" +#~ "\n" +#~ "Plugin hau GNU GPL lizentziako terminoen eta baldintzen pean kaleratua.\n" +#~ "Xehetasunetarako ikusi honako web orrialdea:\n" +#~ "http://www.gnu.org/licenses/lgpl.html\n" +#~ "\n" +#~ "Plugin honek AdPlug liburutegia erabiltzen du. AdPlug-en copyright-a (C) " +#~ "Simon Peter, eta al.\n" +#~ "Estekatutako AdPlug liburutegiaren bertsioa: " + +#~ msgid "AdPlug :: Configuration" +#~ msgstr "AdPlug :: Konfigurazioa" + +#~ msgid "Sound quality" +#~ msgstr "Soinuaren kalitatea" + +#~ msgid "Resolution" +#~ msgstr "Bereizmena" + +#~ msgid "8bit" +#~ msgstr "8 bit" + +#~ msgid "16bit" +#~ msgstr "16 bit" + +#~ msgid "Channels" +#~ msgstr "Kanalak" + +#~ msgid "" +#~ "Setting stereo is not recommended, unless you need to. This won't add any " +#~ "stereo effects to the sound - OPL2 is just mono - but eats up more CPU " +#~ "power!" +#~ msgstr "" +#~ "Estereoa ezartzea ez da gomendagarria, ez baduzu behar bederen. Honek ez " +#~ "dio inolako estereo efekturik gehituko soinuari (OPL2 monoa da soilik) " +#~ "eta PUZaren errendimendu gehiago beharko du." + +#~ msgid "Frequency" +#~ msgstr "Maiztasuna" + +#~ msgid "Detect songend" +#~ msgstr "Detektatu abestiaren amaiera" + +#~ msgid "" +#~ "If enabled, XMMS will detect a song's ending, stop it and advance in the " +#~ "playlist. If disabled, XMMS won't take notice of a song's ending and loop " +#~ "it all over again and again." +#~ msgstr "" +#~ "Gaitzen bada XMMS-ek abestiaren amaiera detektatuko du, gelditu eta " +#~ "erreprodukzio-zerrendan aurrera egingo du. Desgaitzen bada, XMMS ez da " +#~ "ohartuko abesti baten amaierarekin eta behin eta berriz begiztatuko du." + +#~ msgid "Formats" +#~ msgstr "Formatuak" + +#~ msgid "Format selection" +#~ msgstr "Formatuaren hautapena" + +#~ msgid "Format" +#~ msgstr "Formatua" + +#~ msgid "Extension" +#~ msgstr "Luzapena" + +#~ msgid "" +#~ "Selected file types will be recognized and played back by this plugin. " +#~ "Deselected types will be ignored to make room for other plugins to play " +#~ "these files." +#~ msgstr "" +#~ "Hautatutako fitxategi motak ezagutuko dira eta plugin honek " +#~ "erreproduzituko ditu. Desautatutako motei ezikusi egingo zaie, beste " +#~ "plugin batzuei lekua egiteko fitxategi hauek erreproduzitzeko." + +#~ msgid "AdPlug :: File Info" +#~ msgstr "AdPlug :: Fitxategiaren informazioa" + +#~ msgid "Author: " +#~ msgstr "Egilea: " + +#~ msgid "File Type: " +#~ msgstr "Fitxategi mota: " + +#~ msgid "Subsongs: " +#~ msgstr "Azpiabestiak: " + +#~ msgid "Instruments: " +#~ msgstr "Instrumentuak: " + +#~ msgid "Orders: " +#~ msgstr "Ordenak: " + +#~ msgid "Patterns: " +#~ msgstr "Ereduak: " + +#~ msgid "Song" +#~ msgstr "Abestia" + +#~ msgid "Instrument name" +#~ msgstr "Instrumentuaren izena" + +#~ msgid "Song message" +#~ msgstr "Abestiaren mezua" + +#~ msgid "Subsong selection" +#~ msgstr "Azpiabestiaren hautapena" + +#~ msgid "Order: " +#~ msgstr "Ordena: " + +#~ msgid "Pattern: " +#~ msgstr "Eredua: " + +#~ msgid "Row: " +#~ msgstr "Errenkada: " + +#~ msgid "Speed: " +#~ msgstr "Abiadura: " + +#~ msgid "Timer: " +#~ msgstr "Tenporizadorea: " + +#~ msgid "About XMMS Alarm" +#~ msgstr "XMMS alarmari buruz" + +#~ msgid "XMMS Alarm" +#~ msgstr "XMMS alarma" + +#~ msgid "" +#~ "An XMMS plugin which can be used\n" +#~ "to start playing at a certain time.\n" +#~ "\n" +#~ "Send all complaints to:\n" +#~ "Adam Feakin \n" +#~ "Daniel Stodden \n" +#~ "\n" +#~ "http://www.snika.uklinux.net/xmms-alarm/" +#~ msgstr "" +#~ "XMMSren plugin bat denbora zehatz batean\n" +#~ "erreproduzitzen hasteko.\n" +#~ "\n" +#~ "Bidali kexuak hona:\n" +#~ "Adam Feakin \n" +#~ "Daniel Stodden \n" +#~ "\n" +#~ "http://www.snika.uklinux.net/xmms-alarm/" + +#~ msgid "Alarm" +#~ msgstr "Alarma" + +#~ msgid "This is your wakeup call." +#~ msgstr "Hau zu esnatzeko deia da." + +#~ msgid "Select Playlist" +#~ msgstr "Hautatu erreprodukzio-zerrenda" + +#~ msgid "Sorry" +#~ msgstr "Barkatu" + +#~ msgid "Warning" +#~ msgstr "Abisua" + +#~ msgid "" +#~ "For safety reasons the \"quiet\" time must be at least 65 seconds longer " +#~ "than the fading time, it must also be more than 10 seconds. This " +#~ "basically means that there is a bug in the code and until I find a way of " +#~ "really fixing it this message will appear :)\n" +#~ "\n" +#~ "Your fading settings have NOT been saved\n" +#~ "\n" +#~ "--\n" +#~ "Adam" +#~ msgstr "" +#~ "Segurtasuneko arrazoiak direla medio, \"quiet\" (isilik) denbora " +#~ "iraungitze-denbora (10 segundo baino gehiagokoa izan behar duelarik) " +#~ "baino gutxienez 65 segundo luzeagoa izan behar du. Honek kodean akats bat " +#~ "dagoela adierazi nahi du, eta hau konpondu arte mezu hau agertuko " +#~ "dela :)\n" +#~ "\n" +#~ "Iraungitzearen ezarpenak EZ dira gorde\n" +#~ "\n" +#~ "--\n" +#~ "Adam" + +#~ msgid "Oh Well" +#~ msgstr "Ongi" + +#~ msgid "Alarm Settings" +#~ msgstr "Alarmaren ezarpenak" + +#~ msgid "Time" +#~ msgstr "Ordua" + +#~ msgid "hours" +#~ msgstr "ordu" + +#~ msgid "h" +#~ msgstr "o" + +#~ msgid "minutes" +#~ msgstr "minutu" + +#~ msgid "Quiet after:" +#~ msgstr "Isildu honen ondoren:" + +#~ msgid "Alarm at (default):" +#~ msgstr "Alarma (lehenetsia):" + +#~ msgid "Choose the days for the alarm to come on" +#~ msgstr "Aukeratu zein egunetan alarma aktibatuko den" + +#~ msgid "Day" +#~ msgstr "Eguna" + +#~ msgid "Tuesday" +#~ msgstr "Asteartea" + +#~ msgid "Wednesday" +#~ msgstr "Asteazkena" + +#~ msgid "Thursday" +#~ msgstr "Osteguna" + +#~ msgid "Friday" +#~ msgstr "Ostirala" + +#~ msgid "Saturday" +#~ msgstr "Larunbata" + +#~ msgid "Sunday" +#~ msgstr "Igandea" + +#~ msgid "Monday" +#~ msgstr "Astelehena" + +#~ msgid "Days" +#~ msgstr "Egunak" + +#~ msgid "Fading" +#~ msgstr "Iraungitzea" + +#~ msgid "Volume" +#~ msgstr "Bolumena" + +#~ msgid "Current" +#~ msgstr "Unekoa" + +#~ msgid "reset to current output volume" +#~ msgstr "berrezarri uneko irteera bolumenera" + +#~ msgid "Start at" +#~ msgstr "Hasiera:" + +#~ msgid "%" +#~ msgstr "%" + +#~ msgid "Final" +#~ msgstr "Amaiera" + +#~ msgid "Additional Command" +#~ msgstr "Komando gehigarria" + +#~ msgid "enable" +#~ msgstr "gaitu" + +#~ msgid "Playlist (optional)" +#~ msgstr "Erreprodukzio-zerrenda (aukerakoa)" + +#~ msgid "Browse..." +#~ msgstr "Arakatu..." + +#~ msgid "Reminder" +#~ msgstr "Oroigarria" + +#~ msgid "Use reminder" +#~ msgstr "Erabili oroigarria" + +#~ msgid "What do these options mean?" +#~ msgstr "Zer esanahi dute aukera hauek?" + +#~ msgid "" +#~ "\n" +#~ "Time\n" +#~ " Alarm at: \n" +#~ " The time for the alarm to come on.\n" +#~ "\n" +#~ " Quiet After: \n" +#~ " Stop alarm after this amount of time.\n" +#~ " (if the wakeup dialog is not closed)\n" +#~ "\n" +#~ "\n" +#~ "Days\n" +#~ " Day:\n" +#~ " Select the days for the alarm to activate.\n" +#~ "\n" +#~ " Time:\n" +#~ " Choose the time for the alarm on each day,\n" +#~ " or select the toggle button to use the default\n" +#~ " time.\n" +#~ "\n" +#~ "\n" +#~ "Volume\n" +#~ " Fading: \n" +#~ " Fade the volume up to the chosen volume \n" +#~ " for this amount of time.\n" +#~ "\n" +#~ " Start at: \n" +#~ " Start fading from this volume.\n" +#~ "\n" +#~ " Final: \n" +#~ " The volume to stop fading at. If the fading\n" +#~ " time is 0 then set volume to this and start\n" +#~ " playing.\n" +#~ "\n" +#~ "\n" +#~ "Options:\n" +#~ " Additional Command:\n" +#~ " Run this command at the alarm time.\n" +#~ "\n" +#~ " Playlist: \n" +#~ " Load this playlist for playing songs from \n" +#~ " (must have .m3u extension). If no playlist\n" +#~ " is given then the songs which are currently\n" +#~ " in the list will be used.\n" +#~ " The URL of an mp3/ogg stream can also be\n" +#~ " entered here, but loading of playlists from\n" +#~ " URLs is not currently supported by xmms.\n" +#~ "\n" +#~ " Reminder:\n" +#~ " Display a reminder when the alarm goes off,\n" +#~ " type the reminder in the box and turn on the\n" +#~ " toggle button if you want it to be shown.\n" +#~ msgstr "" +#~ "\n" +#~ "Ordua\n" +#~ " Alarma: \n" +#~ "\n" +#~ " Ordua alarma aktibatzeko\n" +#~ "\n" +#~ " Isildu honen ondoren: \n" +#~ " Gelditu alarma denbora kopuruaren ostean.\n" +#~ " (iratzartzeko elkarrizketa-koadroa ez bada ixten)\n" +#~ "\n" +#~ "\n" +#~ "Egunak\n" +#~ " Eguna:\n" +#~ " Hautatu egunak alarma aktibatzeko.\n" +#~ "\n" +#~ " Ordua:\n" +#~ " Aukeratu egun bakoitzeko alarmaren ordua,\n" +#~ " (edo hautatu txandakatzeko botoia denbora\n" +#~ " lehenetsia erabiltzeko).\n" +#~ "\n" +#~ "\n" +#~ "Bolumena\n" +#~ " Iraungitzea: \n" +#~ " Iraungitu bolumena gorantz aukeratutako bolumenerarte\n" +#~ " denbora kopuru honentzako.\n" +#~ "\n" +#~ " Hasiera: \n" +#~ " Hasi iraungitzea bolumen honetatik\n" +#~ "\n" +#~ " Amaiera: \n" +#~ " Amaierako bolumenean iraungitzea gelditzeko. Iraungitzearen\n" +#~ " denbora 0 bada, bolumena honekin ezartzen du eta\n" +#~ " erreproduzitzen hasten da.\n" +#~ "\n" +#~ "\n" +#~ "Aukerak:\n" +#~ " Komando gehigarriak:\n" +#~ " Exekutatu komando hau alarmaren orduan.\n" +#~ "\n" +#~ " Erreprodukzio-zerrenda: \n" +#~ " Kargatu erreprodukzio-zerrenda hau bertatik\n" +#~ " abestiak erreproduzitzeko (.m3u luzapena\n" +#~ " eduki behar du). Ez bada erreprodukzio-zerrendarik\n" +#~ " ematen, uneko zerrendan dauden abestiak\n" +#~ " erabiliko dira.\n" +#~ " Hemen mp3/ogg korrontearen URLa sar daitekeen\n" +#~ " arren, oraingoz xmms-ek ez du URLrik onartzen.\n" +#~ "\n" +#~ " Oroigarria: \n" +#~ " Oroigarri bat bistaratzen du alarma itzaltzean,\n" +#~ " idatzi oroigarria kutxan eta piztu txandakatzeko\n" +#~ " botoia oroigarri hori bistaratzea nahi baduzu.\n" + +#~ msgid "Your reminder for today is.." +#~ msgstr "Gaurko zure oroigarria: " + +#~ msgid "Thankyou" +#~ msgstr "Eskerrik asko" + +#, fuzzy +#~ msgid "Available Headsets" +#~ msgstr "Motor erabilgarriak" + +#, fuzzy +#~ msgid "Current Headset" +#~ msgstr "Unekoa" + +#, fuzzy +#~ msgid "_Connect" +#~ msgstr "Konexioa" + +#, fuzzy +#~ msgid "Address:" +#~ msgstr "Gailuaren helbidea" + +#, fuzzy +#~ msgid "Rescan" +#~ msgstr "Berreskaneatu CDa" + +#~ msgid "Playback->Play" +#~ msgstr "Erreprodukzioa->Erreproduzitu" + +#~ msgid "Playback->Stop" +#~ msgstr "Erreprodukzioa->Gelditu" + +#~ msgid "Playback->Pause" +#~ msgstr "Erreprodukzioa->Pausarazi" + +#~ msgid "Playback->Prev" +#~ msgstr "Erreprodukzioa->Aurrekoa" + +#~ msgid "Playback->Next" +#~ msgstr "Erreprodukzioa->Hurrengoa" + +#~ msgid "Playback->Eject" +#~ msgstr "Erreprodukzioa->Egotzi" + +#~ msgid "Playlist->Repeat" +#~ msgstr "Erreprodukzio-zerrenda->Errepikatu" + +#~ msgid "Playlist->Shuffle" +#~ msgstr "Erreprodukzio-zerrenda->Ausaz" + +#~ msgid "Volume->Up_5" +#~ msgstr "Bolumena->Igo _5" + +#~ msgid "Volume->Down_5" +#~ msgstr "Bolumena->Jeitsi _5" + +#~ msgid "Volume->Up_10" +#~ msgstr "Bolumena->Igo _10" + +#~ msgid "Volume->Down_10" +#~ msgstr "Bolumena->Jeitsi _10" + +#~ msgid "Volume->Mute" +#~ msgstr "Bolumena->Mututu" + +#~ msgid "Window->Main" +#~ msgstr "Leihoa->Nagusia" + +#~ msgid "Window->Playlist" +#~ msgstr "Leihoa->Erreprodukzio-zerrenda" + +#~ msgid "Window->Equalizer" +#~ msgstr "Leihoa->Ekualizadorea" + +#~ msgid "Window->JumpToFile" +#~ msgstr "Leihoa->Jauzi fitxategira" + +#~ msgid "" +#~ "event-device-plugin: unable to open device file %s , skipping this " +#~ "device; check that the file exists and that you have read permission for " +#~ "it\n" +#~ msgstr "" +#~ "event-device-plugin: ezin da gailuko %s fitxategia ireki, gailu hau " +#~ "saltatzen. Egiaztatu fitxategia existitzen dela eta hura irakurtzeko " +#~ "baimenak dituzula.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to create a io_channel for device file %s ," +#~ "skipping this device\n" +#~ msgstr "" +#~ "event-device-plugin: ezin da io_channel sortu gailuko %s " +#~ "fitxategiarentzako.Gailua saltatzen\n" + +#~ msgid "" +#~ "event-device-plugin: unable to open /proc/bus/input/devices , automatic " +#~ "detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: ezin da /proc/bus/input/devices ireki, gertaeren " +#~ "gailuaren detekzio automatikoak ez du funtzionatuko.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to open a io_channel for /proc/bus/input/" +#~ "devices , automatic detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: ezin da io_channel ireki /proc/bus/input/devices-" +#~ "rentzako, gertaeren gailuaren detekzio automatikoak ez du funtzionatuko.\n" + +#~ msgid "" +#~ "event-device-plugin: an error occurred while reading /proc/bus/input/" +#~ "devices , automatic detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: errorea gertatu da /proc/bus/input/devices " +#~ "irakurtzean, gertaeren gailuaren detekzio automatikoak ez du " +#~ "funtzionatuko.\n" + +#~ msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" +#~ msgstr "event-device-plugin: ez da %s aurkitu /dev/input-en, saltatzen.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to load config file %s , default settings " +#~ "will be used.\n" +#~ msgstr "" +#~ "event-device-plugin: ezin da %s konfigurazio-fitxategia kargatu, ezarpen " +#~ "lehenetsiak erabiliko dira.\n" + +#~ msgid "" +#~ "event-device-plugin: incomplete information in config file for device \"%s" +#~ "\" , skipping.\n" +#~ msgstr "" +#~ "event-device-plugin: osatu gabeko informazioa \"%s\" gailuaren " +#~ "konfigurazioko fitxategian, saltatzen.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get is_active value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: konfigurazioa, ezin da \"%s\" gailuaren is_active " +#~ "balioa lortu, saltatzen.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to access local directory %s , settings will " +#~ "not be saved.\n" +#~ msgstr "" +#~ "event-device-plugin: ezin da lokaleko %s direktorioa atzitu, ezarpenak ez " +#~ "dira gordeko.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get filename value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: konfigurazioa, ezin da \"%s\" gailuaren fitxategi-" +#~ "izenaren balioa, saltatzen.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get phys value for device " +#~ "\"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: konfigurazioa, ezin da \"%s\" gailuaren balio " +#~ "fisikoa a lortu, saltatzen.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get is_custom value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: konfigurazioa, ezin da \"%s\" gailuaren is_custom " +#~ "balioa lortu, saltatzen.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unexpected value for device \"%s\", " +#~ "skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: konfigurazioa, \"%s\" gailuaren ustekabeko balioa, " +#~ "saltatzen.\n" + +#, fuzzy +#~ msgid "Detected" +#~ msgstr "Detektatu abestiaren amaiera" + +#, fuzzy +#~ msgid "Custom" +#~ msgstr "pertsonalizatua " + +#, fuzzy +#~ msgid "Not Detected" +#~ msgstr "Ordenatu hautatutakoak" + +#~ msgid "Information" +#~ msgstr "Informazioa" + +#~ msgid "" +#~ "Cannot open bindings window for a not-detected device.\n" +#~ "Ensure that the device has been correctly plugged in." +#~ msgstr "" +#~ "Ezin da detektatu ez den gailuaren loturen leihoa ireki.\n" +#~ "Ziurtatu gailua ongi konektatuta dagoela." + +#~ msgid "" +#~ "Unable to open selected device.\n" +#~ "Please check read permissions on device file." +#~ msgstr "" +#~ "Ezin da hautatutako gailua ireki.\n" +#~ "Egiaztatu gailuko fitxategia irakurtzeko baimenak dituzula." + +#~ msgid "EvDev-Plug - Add custom device" +#~ msgstr "EvDev-Plug - Gehitu gailu pertsonalizatua" + +#~ msgid "" +#~ "EvDev-Plug tries to automatically detect and update information about\n" +#~ "event devices available on the system.\n" +#~ "However, if auto-detect doesn't work for your system, or you have event\n" +#~ "devices in a non-standard location (currently they're only searched in\n" +#~ "/dev/input/ ), you may want to add a custom device, explicitly " +#~ "specifying\n" +#~ "name and device file." +#~ msgstr "" +#~ "Sisteman erabilgarri dauden gailuen gertaerak automatikoki \n" +#~ "detektatu eta informazioa eguneratzen saiatzen da EvDev-Plug.\n" +#~ "Hala ere, detekzio automatikoak ez badu funtzionatzen sisteman,\n" +#~ "edo gertaeren gailuak leku ez estandar batean badaude (unean \n" +#~ "/dev/input-en soilik egiten da bilaketa), gailu pertsonalizatua gehitzea\n" +#~ "nahi izan dezakezu gailuaren izena eta fitxategia zehaztuz. " + +#~ msgid "Device name:" +#~ msgstr "Gailuaren izena:" + +#~ msgid "Device file:" +#~ msgstr "Gailuaren fitxategia:" + +#, fuzzy +#~ msgid "(custom)" +#~ msgstr "pertsonalizatua " + +#~ msgid "" +#~ "Please specify both name and filename.\n" +#~ "Filename must be specified with absolute path." +#~ msgstr "" +#~ "Zehaztu bai izena bai fitxategi-izena.\n" +#~ "Fitxategi-izenak bide-izen absolutua eduki behar du." + +#~ msgid "" +#~ "Do you want to remove the existing configuration for selected device?\n" +#~ msgstr "" +#~ "Nahi duzu hautatutako gailuaren existitzen den konfigurazioa kentzea?\n" + +#~ msgid "Do you want to remove the selected custom device?\n" +#~ msgstr "Nahi duzu hautatutako gailu pertsonalizatua kentzea?\n" + +#~ msgid "EvDev-Plug - Configuration" +#~ msgstr "EvDev-Plug - Konfigurazioa" + +#~ msgid "Active" +#~ msgstr "Aktibo" + +#~ msgid "Status" +#~ msgstr "Egoera" + +#~ msgid "Device Name" +#~ msgstr "Gailuaren izena" + +#~ msgid "Device File" +#~ msgstr "Gailuaren fitxategia" + +#~ msgid "Device Address" +#~ msgstr "Gailuaren helbidea" + +#~ msgid "_Bindings" +#~ msgstr "_Loturak" + +#~ msgid "" +#~ "Press a key of your device to bind it;\n" +#~ "if no key is pressed in five seconds, this window\n" +#~ "will close without binding changes." +#~ msgstr "" +#~ "Sakatu gailuaren tekla bat lotzeko; \n" +#~ "bost segundotan ez bada teklarik sakatzen,\n" +#~ "leiho hau itxi egingo da loturak aldatu gabe." + +#~ msgid "" +#~ "This input event has been already assigned.\n" +#~ "\n" +#~ "It's not possible to assign multiple actions to the same input event " +#~ "(although it's possible to assign the same action to multiple events)." +#~ msgstr "" +#~ "Sarrerako gertaera hau jadanik lotuta dago.\n" +#~ "\n" +#~ "Ezin da hainbat ekintza sarrerako gertaera berdinari esleitu (nahiz eta " +#~ "ekintza berdina hainbat gertaerei esleitzea posiblea den)." + +#~ msgid "EvDev-Plug - Bindings Configuration" +#~ msgstr "EvDev-Plug - Loturen konfigurazoa" + +#~ msgid "Name: " +#~ msgstr "Izena: " + +#~ msgid "Filename: " +#~ msgstr "Fitxategi-izena: " + +#~ msgid "Phys.Address: " +#~ msgstr "Helbide fisikoa: " + +#~ msgid "EvDev-Plug - about" +#~ msgstr "EvDev-Plug - honi buruz" + +#~ msgid "" +#~ "\n" +#~ "player remote control via event devices\n" +#~ "http://www.develia.org/projects.php?p=audacious#evdevplug\n" +#~ "\n" +#~ "written by Giacomo Lozito\n" +#~ msgstr "" +#~ "\n" +#~ "erreproduzitzailearen urruneko kontrola gertaera-gailuen bidez.\n" +#~ "http://www.develia.org/projects.php?p=audacious#evdevplug\n" +#~ "\n" +#~ "garatzailea: Giacomo Lozito\n" + +#~ msgid "This LADSPA plugin has no user controls" +#~ msgstr "LADSPA plugin honek ez du erabiltzale-kontrolik" + +#~ msgid "Name" +#~ msgstr "Izena" + +#~ msgid "UID" +#~ msgstr "UIDa" + +#~ msgid "Installed plugins" +#~ msgstr "Instalatutako pluginak" + +#~ msgid "Running plugins" +#~ msgstr "Exekutatzen dauden pluginak" + +#~ msgid "Add" +#~ msgstr "Gehitu" + +#~ msgid "Remove" +#~ msgstr "Kendu" + +#~ msgid "LADSPA Plugin Catalog" +#~ msgstr "LADSPA pluginen katalogoa" + +#~ msgid "About LIRC Audacious Plugin" +#~ msgstr "LIRC Audacious plugina" + +#~ msgid "LIRC Plugin " +#~ msgstr "LIRC plugina " + +#~ msgid "" +#~ "\n" +#~ "A simple plugin that lets you control\n" +#~ "Audacious using the LIRC remote control daemon\n" +#~ "\n" +#~ "Adapted for Audacious usage by Tony Vroon \n" +#~ "from the XMMS LIRC plugin by:\n" +#~ "Carl van Schaik \n" +#~ "Christoph Bartelmus \n" +#~ "Andrew O. Shadoura \n" +#~ "You can get LIRC information at:\n" +#~ "http://lirc.org" +#~ msgstr "" +#~ "\n" +#~ "Plugin bakun bat LIRC urruneko kontrolaren daemonarekin\n" +#~ "Audacious kontrolatzen uzteko.\n" +#~ "\n" +#~ "Audacious-ek erabiltzeko moldatua: Tony Vroon \n" +#~ "XMMS LIRC pluginetik:\n" +#~ "Carl van Schaik \n" +#~ "Christoph Bartelmus \n" +#~ "Andrew O. Shadoura \n" +#~ "LIRC-ren informazio gehiagorako ikusi:\n" +#~ "http://lirc.org" + +#~ msgid "LIRC plugin settings" +#~ msgstr "LIRC pluginaren ezarpenak" + +#~ msgid "Reconnect to LIRC server" +#~ msgstr "Birkonektatu LIRC zerbitzariarekin" + +#~ msgid "Timeout before reconnecting (seconds): " +#~ msgstr "Denbora-muga birkonektatu aurretik (seg.):" + +#~ msgid "Reconnect" +#~ msgstr "Birkonektatu" + +#~ msgid "Connection" +#~ msgstr "Konexioa" + +#~ msgid "%s: could not init LIRC support\n" +#~ msgstr "%s: ezin izan da LIRC euskarria hasieratu\n" + +#~ msgid "" +#~ "%s: could not read LIRC config file\n" +#~ "%s: please read the documentation of LIRC\n" +#~ "%s: how to create a proper config file\n" +#~ msgstr "" +#~ "%s: ezin izan da LIRCen konfigurazio-fitxategia irakurri\n" +#~ "%s: irakur ezazu LIRCren dokumentazioa\n" +#~ "%s: konfigurazio-fitxategi egokia nola sortzen den jakiteko\n" + +#~ msgid "%s: trying to reconnect...\n" +#~ msgstr "%s: birkonektatzen saiatzen...\n" + +#~ msgid "%s: unknown command \"%s\"\n" +#~ msgstr "%s: \"%s\" komando ezezaguna\n" + +#~ msgid "%s: disconnected from LIRC\n" +#~ msgstr "%s: LIRCtik deskonektatuta\n" + +#~ msgid "%s: will try reconnect every %d seconds...\n" +#~ msgstr "%s: saiatu %d segundoro birkonektatzen...\n" + +#~ msgid "ModPlug Configuration" +#~ msgstr "ModPlug konfigurazioa" + +#~ msgid "16 bit" +#~ msgstr "16 bit" + +#~ msgid "8 bit" +#~ msgstr "8 bit" + +#~ msgid "Mono (downmix)" +#~ msgstr "Monoa (bildu kanalak)" + +#~ msgid "Nearest (fastest)" +#~ msgstr "Gertuena (azkarrena)" + +#~ msgid "Linear (fast)" +#~ msgstr "Lineala (azkarra)" + +#~ msgid "Spline (good quality)" +#~ msgstr "Spline (kalitate ona)" + +#~ msgid "8-tap Fir (extremely high quality)" +#~ msgstr "8-tap Fir (oso kalitate altua)" + +#, fuzzy +#~ msgid "96 kHz" +#~ msgstr "48 kHz" + +#~ msgid "48 kHz" +#~ msgstr "48 kHz" + +#~ msgid "44 kHz" +#~ msgstr "44 kHz" + +#~ msgid "22 kHz" +#~ msgstr "22 kHz" + +#~ msgid "Sampling Rate" +#~ msgstr "Lagin-tasa" + +#~ msgid "Enable" +#~ msgstr "Gaitu" + +#~ msgid "Depth" +#~ msgstr "Sakonera" + +#~ msgid "Delay" +#~ msgstr "Atzerapena" + +#~ msgid "Reverb" +#~ msgstr "Reverb" + +#~ msgid "Amount" +#~ msgstr "Kopurua" + +#~ msgid "Range" +#~ msgstr "Barrutia" + +#~ msgid "Bass Boost" +#~ msgstr "Baxuen bultzada" + +#~ msgid "" +#~ "Note: Setting the preamp\n" +#~ "too high may cause clipping\n" +#~ "(annoying clicks and pops)!" +#~ msgstr "" +#~ "Oharra: aurre-anp altuegi jartzeak\n" +#~ " mozketak sor ditzake\n" +#~ "(klik eta pop nazkagarriekin!)" + +#~ msgid "Effects" +#~ msgstr "Efektuak" + +#~ msgid "Use Filename as Song Title" +#~ msgstr "Erabili fitxategi-izena abestiaren titulu gisa" + +#~ msgid "Fast Playlist Info" +#~ msgstr "Erreprodukzio-zerrendaren informazio azkarra" + +#~ msgid "Noise Reduction" +#~ msgstr "Zarataren murriztapena" + +#~ msgid "Play Amiga MOD" +#~ msgstr "Erreproduzitu Amiga MOD" + +#~ msgid "Don't loop" +#~ msgstr "Ez begiztatu" + +#~ msgid "Loop" +#~ msgstr "Begizta" + +#~ msgid "time(s)" +#~ msgstr "denbora(k)" + +#~ msgid "Loop forever" +#~ msgstr "Begiztatu beti" + +#~ msgid "Looping" +#~ msgstr "Begiztatzen" + +#~ msgid "MOD Info" +#~ msgstr "MOD informazioa" + +#~ msgid "" +#~ "Filename:\n" +#~ "Title:\n" +#~ "Type:\n" +#~ "Length:\n" +#~ "Speed:\n" +#~ "Tempo:\n" +#~ "Samples:\n" +#~ "Instruments:\n" +#~ "Patterns:\n" +#~ "Channels:" +#~ msgstr "" +#~ "Fitxategi-izena:\n" +#~ "Titulua:\n" +#~ "Mota:\n" +#~ "Luzera:\n" +#~ "Abiadura:\n" +#~ "Tenpoa:\n" +#~ "Laginak:\n" +#~ "Instrumentuak:\n" +#~ "Ereduak:\n" +#~ "Kanalak:" + +#~ msgid "" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---" +#~ msgstr "" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---" + +#~ msgid "Samples" +#~ msgstr "Laginak" + +#~ msgid "Instruments" +#~ msgstr "Instrumentuak" + +#~ msgid "Message" +#~ msgstr "Mezua" + +#~ msgid "Modplug Input Plugin for Audacious ver" +#~ msgstr "Modplug sarrerako plugina Audacious-en bertsio honentzako: " + +#, fuzzy +#~ msgid "" +#~ "\n" +#~ "Modplug sound engine written by Olivier Lapicque.\n" +#~ "XMMS interface for Modplug by Kenton Varda.\n" +#~ "(c)2000 Olivier Lapicque and Kenton Varda.\n" +#~ "Updates and maintenance by Konstanty Bialkowski.\n" +#~ "Ported to BMP by Theofilos Intzoglou." +#~ msgstr "" +#~ "\n" +#~ "Modplug soinu-motorra Olivier Lapicque-k garatua.\n" +#~ "XMMSen interfazea Modplug-arentzako Kenton Varda-k garatua.\n" +#~ "(c)2000 Olivier Lapicque eta Kenton Varda.\n" +#~ "Eguneraketak eta mantetze lanak: Konstanty Bialkowski.\n" +#~ "BMPrako moldaketak: Theofilos Intzoglou." + +#~ msgid "About Modplug" +#~ msgstr "Modplug-i buruz" + +#~ msgid "Show separators in playlist" +#~ msgstr "Erakutsi bereizleak erreprodukzio-zerrendan" + +#~ msgid "Show window manager decoration" +#~ msgstr "Erakutsi leiho-kudeatzailearen dekorazioa" + +#~ msgid "This enables the window manager to show decorations for windows." +#~ msgstr "Leiho-kudeatzailea gaitzen du leihoen dekorazioak erakusteko." + +#~ msgid "" +#~ "If selected, the file information text in the main window will scroll " +#~ "back and forth. If not selected, the text will only scroll in one " +#~ "direction." +#~ msgstr "" +#~ "Hautatzen bada, leiho nagusiko fitxategi-informazioaren testua bi " +#~ "norabidetan korrituko da. Ez bada hautatzen, testua norabide bakar batean " +#~ "korrituko da." + +#~ msgid "Disable inline gtk theme" +#~ msgstr "Desgaitu barneko gtk gaia" + +#, fuzzy +#~ msgid "Random skin on play" +#~ msgstr "Nahastu ausaz erreprodukzio-zerrenda" + +#~ msgid "Allow loading incomplete skins" +#~ msgstr "Baimendu azal osatugabeak kargatzea" + +#~ msgid "" +#~ "If selected, audacious won't refuse loading broken skins. Use only if " +#~ "your favourite skin doesn't work" +#~ msgstr "" +#~ "Hautatzen bada, Audacious-ek ez du ukatuko hondatutako azalak kargatzea. " +#~ "Baldin eta zure azal gogokoenak ez badu funtzionatzen soilik." + +#~ msgid "Color Adjustment" +#~ msgstr "Kolorea doitzea" + +#~ msgid "" +#~ "Audacious allows you to alter the color balance of the skinned UI. The " +#~ "sliders below will allow you to do this." +#~ msgstr "" +#~ "Audacious-ek azaldun interfazeko kolorearen balantzea aldatzea baimentzen " +#~ "dizu. Azpiko graduatzaileak hori egitea utziko dizu." + +#~ msgid "Blue" +#~ msgstr "Urdina" + +#~ msgid "Green" +#~ msgstr "Berdea" + +#~ msgid "Red" +#~ msgstr "Gorria" + +#, fuzzy +#~ msgid "Color adjustment ..." +#~ msgstr "Kolorea doitzea" + +#~ msgid "Disable 'GUI Scaling'" +#~ msgstr "Desgaitu 'Interfazea eskalatzea'" + +#~ msgid "Enable 'GUI Scaling'" +#~ msgstr "Gaitu 'Interfazea eskalatzea'" + +#~ msgid "DoubleSize" +#~ msgstr "Tamaina bikoitza" + +#~ msgid "Easy Move" +#~ msgstr "Erraz mugitu" + +#~ msgid "Spectrum Analyzer" +#~ msgstr "Espektro-analizatzailea" + +#, fuzzy +#~ msgid "Stream name" +#~ msgstr "Instrumentuaren izena" + +#, fuzzy +#~ msgid "Remove Bookmark" +#~ msgstr "Kendu etiketa" + +#, fuzzy +#~ msgid "About Stream Browser" +#~ msgstr "OSS kontrolatzaileari buruz" + +#, fuzzy +#~ msgid "" +#~ "Copyright (c) 2008, by Calin Crisan and The Audacious " +#~ "Team.\n" +#~ "\n" +#~ "This is a simple stream browser that includes the most popular streaming " +#~ "directories.\n" +#~ "Many thanks to the Streamtuner developers ,\n" +#~ "\tand of course to the whole Audacious community.\n" +#~ "\n" +#~ "Also thank you Tony Vroon for mentoring & guiding me, again.\n" +#~ "\n" +#~ "This was a Google Summer of Code 2008 project." +#~ msgstr "" +#~ "Copyright-a (c) 2007, Calin Crisan eta Audacious " +#~ "taldea.\n" +#~ "\n" +#~ "Eskerrik asko libcdio-ren garatzaileei \n" +#~ "\teta libcddb-eko garatzaileei .\n" +#~ "\n" +#~ "Eskerrik asko Tony Vroon-i gainbegiratzeagatik eta ni gidatzeagatik\n" +#~ "\n" +#~ "Google Summer of Code 2007 proiektu bat izan da." + +#~ msgid "Can't jump to time when no track is being played.\n" +#~ msgstr "" +#~ "Ezin da denboran jauzirik egin pista ez denean erreproduzitzen ari.\n" + +#~ msgid "minutes:seconds" +#~ msgstr "minutu:segundo" + +#~ msgid "Track length:" +#~ msgstr "Pistaren luzera:" + +#~ msgid "Error writing playlist \"%s\": %s" +#~ msgstr "Errorea \"%s\" erreprodukzio-zerrenda idaztean: %s" + +#~ msgid "%s already exist. Continue?" +#~ msgstr "%s badago lehendik ere. Jarraitu?" + +#, fuzzy +#~ msgid "Show main menu" +#~ msgstr "Erakutsi erreproduzitzaile nagusiaren leihoa" + +#, fuzzy +#~ msgid "Show/hide statusbar" +#~ msgstr "Kargatu erreprodukzio-zerrenda" + +#, fuzzy +#~ msgid "Import Playlist ..." +#~ msgstr "Kargatu erreprodukzio-zerrenda" + +#, fuzzy +#~ msgid "Export Playlist ..." +#~ msgstr "Kargatu erreprodukzio-zerrenda" + +#, fuzzy +#~ msgid "Refresh" +#~ msgstr "Freskatu tasa" + +#, fuzzy +#~ msgid "Refresh Selected" +#~ msgstr "Kendu hautatutakoak" + +#, fuzzy +#~ msgid "Refreshes metadata associated with selected entries." +#~ msgstr "" +#~ "Erreprodukzio-zerrendako sarrera bati esleituta dagoen metadatuak " +#~ "freskatzen ditu." + +#, fuzzy +#~ msgid "Edit the playlist title." +#~ msgstr "Nahastu ausaz erreprodukzio-zerrenda" + #, fuzzy -msgid "Song Change" -msgstr "Abestiaren mezua" +#~ msgid "By Formatted Title" +#~ msgstr "Tituluaren arabera" -#: src/spectrum/spectrum.c:89 -msgid "Spectrum Analyzer" -msgstr "Espektro-analizatzailea" +#, fuzzy +#~ msgid "Components" +#~ msgstr "Konpositorea:" -#: src/statusicon/statusicon.c:355 -msgid "About Status Icon Plugin" -msgstr "Egoeraren ikonoa pluginari buruz" +#~ msgid "Upload selected track(s)" +#~ msgstr "Igo hautatutako pistak" -#: src/statusicon/statusicon.c:356 -#, fuzzy -msgid "" -"Status Icon Plugin\n" -"\n" -"Copyright 2005-2007 Giacomo Lozito \n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"This plugin provides a status icon, placed in\n" -"the system tray area of the window manager.\n" -msgstr "" -"\n" -"Garatzailea: Giacomo Lozito < james@develia.org >\n" -"\n" -"Plugin honek egoeraren ikonoa eskaintzen du,\n" -"leiho-kudeatzailearen sistemako erretiluko arean kokatua.\n" +#~ msgid "MTP device handler" +#~ msgstr "MTP gailuaren kudeatzailea" -#: src/statusicon/statusicon.c:418 -msgid "Status Icon Plugin - Preferences" -msgstr "Egoeraren ikonoa plugina - Hobespenak" +#~ msgid "Show main player window" +#~ msgstr "Erakutsi erreproduzitzaile nagusiaren leihoa" -#: src/statusicon/statusicon.c:428 -msgid "Right-Click Menu" -msgstr "Eskuineko botoiaren menua" +#~ msgid "Ignore" +#~ msgstr "Ezikusi egin" -#: src/statusicon/statusicon.c:433 -msgid "Small playback menu #1" -msgstr "1. erreprodukzio-menu txikia" +#~ msgid "" +#~ "Audacious has been started with all of its windows hidden.\n" +#~ "You may want to show the player window again to control Audacious; " +#~ "otherwise, you'll have to control it remotely via audtool or enabled " +#~ "plugins (such as the statusicon plugin)." +#~ msgstr "" +#~ "Audacious bere leiho guztiak ezkutatuta dituela abiatu da.\n" +#~ "Erreproduzitzailearen leihoa erakustea nahiko duzu Audacious " +#~ "kontrolatzeko; bestela, audtool edo gaitutako pluginen ('egoeraren " +#~ "ikonoa' plugina bezalakoa) bidez urrunetik kontrola dezakezu." -#: src/statusicon/statusicon.c:436 -msgid "Small playback menu #2" -msgstr "2. erreprodukzio-menu txikia" +#~ msgid "Always ignore, show/hide is controlled remotely" +#~ msgstr "Ezikusi egin, erakutsi/ezkutatu beti kontrolatzen da urrunetik" -#: src/statusicon/statusicon.c:452 -msgid "Mouse Scroll Action" -msgstr "Saguaren korritze-ekintza" +#~ msgid "Audacious - broken GTK engine usage warning" +#~ msgstr "Audacious - hondatutako GTK motorraren erabileraren abisua" -#: src/statusicon/statusicon.c:456 -msgid "Change volume" -msgstr "Aldatu bolumena" +#~ msgid "" +#~ "Broken GTK engine in use\n" +#~ "\n" +#~ "Audacious has detected that you are using a broken GTK engine.\n" +#~ "\n" +#~ "The theme engine you are using, %s, is incompatible with some of " +#~ "the features used by modern skins. The incompatible features have been " +#~ "disabled for this session.\n" +#~ "\n" +#~ "To use these features, please consider using a different GTK theme engine." +#~ msgstr "" +#~ "Hondatutako GTK motorra erabiltzen\n" +#~ "\n" +#~ "Audacious-ek hondatutako GTK motorra erabiltzen ari zarela detektatu du.\n" +#~ "\n" +#~ "Erabiltzen ari zaren gai-motorra, %s, azal modernoek dituzten " +#~ "eginbide batzuetatik bateraezina da. Bateragarriak ez diren eginbideak " +#~ "desgaitu egn dira saio honetan.\n" +#~ "\n" +#~ "Eginbide hauek erabiltzeko, egokiena bestelako GTK gai-motor bat " +#~ "erabiltzea izango duzu." -#: src/statusicon/statusicon.c:458 -msgid "Change playing song" -msgstr "Aldatu erreprodukzioaren abestia" +#~ msgid "Do not display this warning again" +#~ msgstr "Ez bistaratu abisu hau berriro" -#: src/stereo_plugin/stereo.c:40 -msgid "" -"Extra Stereo Plugin\n" -"\n" -"By Johan Levin 1999." -msgstr "" -"Estra Estereo plugina\n" -"\n" -"Johan Levin 1999." +#~ msgid "Save as Static Playlist" +#~ msgstr "Gorde erreprodukzio-zerrenda estatiko gisa" -#: src/stereo_plugin/stereo.c:64 -msgid "About Extra Stereo Plugin" -msgstr "Estra Estereo plugina" +#~ msgid "Use Relative Path" +#~ msgstr "Erabili bide-izen erlatiboa" -#: src/stereo_plugin/stereo.c:100 -msgid "Configure Extra Stereo" -msgstr "Konfiguratu Estra Estereo" +#~ msgid "Load Playlist" +#~ msgstr "Kargatu erreprodukzio-zerrenda" -#: src/streambrowser/gui/streambrowser_win.c:62 -msgid "Search:" -msgstr "" +#~ msgid "Save Playlist" +#~ msgstr "Gorde erreprodukzio-zerrenda" -#: src/streambrowser/gui/streambrowser_win.c:81 -#: src/streambrowser/gui/streambrowser_win.c:370 -msgid "Add Bookmark" -msgstr "" +#~ msgid "" +#~ "* Select ALSA output ports *\n" +#~ "MIDI events will be sent to the ports selected here. In example, if your " +#~ "audio card provides a hardware synth and you want to play MIDI with it, " +#~ "you'll probably want to select the wavetable synthesizer ports." +#~ msgstr "" +#~ "* Hautatu ALSAren irteerako atakak *\n" +#~ "MIDI gertaerak hemen hautatutako ataketara bidaliko dira. Adibidez, soinu-" +#~ "txartelak hardware-sintetizadorea badu, eta horrekin MIDIa " +#~ "erreproduzitzea nahi baduzu, baliteke zuk uhin-taulako sintetizadorearen " +#~ "atakak hautatu nahi izatea." -#: src/streambrowser/gui/streambrowser_win.c:95 -#, fuzzy -msgid "Stream browser" -msgstr "arakatu" +#~ msgid "" +#~ "* Select ALSA mixer card *\n" +#~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +#~ "ouput plugins from the player. During playback, the player volumeslider " +#~ "will manipulate the mixer control you select here. If you're using " +#~ "wavetable synthesizer ports, you'll probably want to select the Synth " +#~ "control here." +#~ msgstr "" +#~ "* Hautatu ALSAren nahastailearen txartela *\n" +#~ "ALSA motorrak ALSA bidez ateratzen da, erreproduzitzaileak ez du " +#~ "efekturik ezta irteerako pluginik erabiltzen. Erreprodukzioan, " +#~ "erreproduzitzailearen bolumenaren graduatzaileak zuk hemen hautatutako " +#~ "nahastailearen kontrola kudea dezake. Uhin-taulako sintetizadorearen " +#~ "atakak erabiltzen badituzu, baliteke zuk hemen sintetizadorearen kontrola " +#~ "hautatu nahi izatea." -#: src/streambrowser/gui/streambrowser_win.c:319 -#, fuzzy -msgid "Stream name" -msgstr "Instrumentuaren izena" +#~ msgid "" +#~ "* Select ALSA mixer control *\n" +#~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +#~ "ouput plugins from the player. During playback, the player volume slider " +#~ "will manipulate the mixer control you select here. If you're using " +#~ "wavetable synthesizer ports, you'll probably want to select the Synth " +#~ "control here." +#~ msgstr "" +#~ "* Hautatu ALSAren nahastailearen kontrola *\n" +#~ "ALSA motorrak ALSA bidez ateratzen da, erreproduzitzaileak ez du " +#~ "efekturik ezta irteerako pluginik erabiltzen. Erreprodukzioan, " +#~ "erreproduzitzailearen bolumenaren graduatzaileak zuk hemen hautatutako " +#~ "nahastailearen kontrola kudea dezake. Uhin-taulako sintetizadorearen " +#~ "atakak erabiltzen badituzu, baliteke zuk hemen sintetizadorearen kontrola " +#~ "hautatu nahi izatea." -#: src/streambrowser/gui/streambrowser_win.c:326 -msgid "Now playing" -msgstr "" +#~ msgid "" +#~ "* Backend selection *\n" +#~ "AMIDI-Plug works with backends, in a modular fashion; here you should " +#~ "select your backend; that is, the way MIDI events are going to be handled " +#~ "and played.\n" +#~ "If you have a hardware synthesizer on your audio card, and ALSA supports " +#~ "it, you'll want to use the ALSA backend. It can also be used with " +#~ "anything that provides an interface to the ALSA sequencer, including " +#~ "software synths or external devices.\n" +#~ "If you want to rely on a software synthesizer and/or want to pipe audio " +#~ "into effect and output plugins of the player you'll want to use the good " +#~ "FluidSynth backend.\n" +#~ "Press the info button to read specific information about each backend." +#~ msgstr "" +#~ "* Motorraren hautapena *\n" +#~ "AMIDI-Plug motorrekin lan egiten du , era modular batean. Hemen motorra " +#~ "hauta dezakezu: hau da, MIDI gertaerak nola kudeatu eta erreproduzituko " +#~ "diren modua.\n" +#~ "Hardware-sintetizadore bat badu audio-txartelak, eta ALSAk onartzen badu, " +#~ "ALSA motorra erabiltzea nahi izan dezakezu. ALSA sekuentziadorearen " +#~ "interfaze bat eskaintzen duen edozerrekin ere erabil daiteke, software-" +#~ "sintetizadorea edo kanpoko gailuak barne.\n" +#~ "Software-sintetizadorean oinarritzea nahi baduzu, edo eta audioa " +#~ "erreproduzitzailearen efektuetara eta irteerako pluginak kanalizatzea " +#~ "nahi baduzu, FluidSynth motor ona erabiltzea nahi izan dezakezu.\n" +#~ "Sakatu Informazioa botoia motor bakoitzari buruzko informazio zehatza " +#~ "irakurtzeko." -#: src/streambrowser/gui/streambrowser_win.c:367 #, fuzzy -msgid "Remove Bookmark" -msgstr "Kendu etiketa" +#~ msgid "" +#~ "* Transpose function *\n" +#~ "This option allows you to play the midi file transposed in a different " +#~ "key, by shifting of the desired number of semitones all its notes " +#~ "(excepting those on midi channel 10, reserved for percussions). " +#~ "Especially useful if you wish to sing or play along with another " +#~ "instrument." +#~ msgstr "" +#~ "* Irauli funtzioa *\n" +#~ "Aukera honek MIDI fitxategia beste tekla desberdin batean iraulita " +#~ "erreproduzitzea baimentzen dizu, bere nota guztien nahi duzun semintonu " +#~ "kopurua desplazatuz (MIDIko 10. kanalekoak izan ezik, perkusioentzako " +#~ "gordeta baitago). Bereziki erabilgarria da beste instrumentu batekin " +#~ "abestea edo erreproduzitzea nahi baduzu." -#: src/streambrowser/streambrowser.c:331 -#, fuzzy -msgid "About Stream Browser" -msgstr "OSS kontrolatzaileari buruz" +#~ msgid "" +#~ "* Drumshift function *\n" +#~ "This option allows you to shift notes on midi channel 10 (the standard " +#~ "percussions channel) of the desired number of semitones. This results in " +#~ "different drumset and percussions being used during midi playback, so if " +#~ "you wish to enhance (or reduce, or alter) percussion sounds, try to play " +#~ "with this value." +#~ msgstr "" +#~ "* Perkusio-desplazamendua funtzioa *\n" +#~ "Aukera honek MIDIko 10. kanaleko notak nahi duzun semitonu kopurua " +#~ "desplazatzea uzten dizu. MIDI erreproduzitzean erabiltzen den bestelako " +#~ "perkusio multzo desberdin bat dakaer, eta honela perkusioen soinuak " +#~ "hobetu (edo gutxiagotu edo eraldatu) nahi badituzu, saiatu balio honekin " +#~ "erreproduzitzen." -#: src/streambrowser/streambrowser.c:332 -#, fuzzy -msgid "" -"Copyright (c) 2008, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming " -"directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" -"\n" -"This was a Google Summer of Code 2008 project." -msgstr "" -"Copyright-a (c) 2007, Calin Crisan eta Audacious " -"taldea.\n" -"\n" -"Eskerrik asko libcdio-ren garatzaileei \n" -"\teta libcddb-eko garatzaileei .\n" -"\n" -"Eskerrik asko Tony Vroon-i gainbegiratzeagatik eta ni gidatzeagatik\n" -"\n" -"Google Summer of Code 2007 proiektu bat izan da." +#~ msgid "" +#~ "* Pre-calculate MIDI length *\n" +#~ "If this option is enabled, AMIDI-Plug will calculate the MIDI file length " +#~ "as soon as the player requests it, instead of doing that only when the " +#~ "MIDI file is being played. In example, MIDI length will be calculated " +#~ "straight after adding MIDI files in a playlist. Disable this option if " +#~ "you want faster playlist loading (when a lot of MIDI files are added), " +#~ "enable it to display more information in the playlist straight after " +#~ "loading." +#~ msgstr "" +#~ "* Aurre-kalkulatu MIDI luzera *\n" +#~ "Aukera hau gaituta egonez gero, 'AMIDI-Plug'-ek MIDI fitxategiaren luzera " +#~ "kalkula dezake erreproduzaileak eskatu bezain laster, MIDI fitxategia " +#~ "erreproduzitzen ari den bitartean egin ordez. Adibidez, MIDI fitxategiak " +#~ "erreprodukzio-zerrendari gehitu bezain laster kalkula daiteke MIDIaren " +#~ "luzera. Desgaitu aukera hau erreprodukzio-zerrenda azkarrago kargatzea " +#~ "nahi naduzu (MIDI fitxategi asko gehitzen direnean), gaitu ezazu kargatu " +#~ "bezain laster erreprodukzio-zerrendan informazio gehiago bistaratzeko." -#: src/streambrowser/streambrowser.c:357 src/streambrowser/streambrowser.c:367 -#, fuzzy -msgid "Streambrowser" -msgstr "arakatu" +#~ msgid "" +#~ "* Extract comments from MIDI files *\n" +#~ "Some MIDI files contain text comments (author, copyright, instrument " +#~ "notes, etc.). If this option is enabled, AMIDI-Plug will extract and " +#~ "display comments (if available) in the file information dialog." +#~ msgstr "" +#~ "* Erauzi iruzkinak MIDI fitxategietatik *\n" +#~ "MIDI fitxategi batzuk testu iruzkinak dituzte (egilea, copyright-a, " +#~ "instrumentuen oharrak, e.a.). Aukera hau gaitzen bada, AMIDI-Plug-ek " +#~ "iruzkinak (egonez gero) erauzi eta bistaratuko ditu fitxategiaren " +#~ "informazioaren elkarrizketa-koadroan." -#: src/sun/about.c:30 -msgid "About the Sun Driver" -msgstr "Sun kontrolatzaileari buruz" +#~ msgid "" +#~ "* Extract lyrics from MIDI files *\n" +#~ "Some MIDI files contain song lyrics. If this option is enabled, AMIDI-" +#~ "Plug will extract and display song lyrics (if available) in the file " +#~ "information dialog." +#~ msgstr "" +#~ "* Erauzi letrak MIDI fitxategietatik *\n" +#~ "MIDI fitxategi batzuk abestien letrak dituzte. Aukera hau gaitzen bada, " +#~ "AMIDI-Plug-ek iruzkinak (egonez gero) erauzi eta bistaratuko ditu " +#~ "fitxategiaren informazioaren elkarrizketa-koadroan." -#: src/sun/about.c:31 -msgid "" -"XMMS BSD Sun Driver\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" -msgstr "" -"XMMS BSD Sun kontrolatzailea\n" -"\n" -"Copyright-a (c) 2001 CubeSoft Communications, Inc.\n" -"Mantentzailea: .\n" +#~ msgid "" +#~ "* Select SoundFont files *\n" +#~ "In order to play MIDI with FluidSynth, you need to specify at least one " +#~ "valid SoundFont file here (use absolute paths). The loading order is from " +#~ "the top (first) to the bottom (last)." +#~ msgstr "" +#~ "* Hautatu SoundFont fitxategiak *\n" +#~ "MIDIa FluidSynth-ekin erreproduzitzeko, gutxienez SoundFont fitxategi bat " +#~ "zehaztu behar duzu hemen (erabili bide-izen absolutua). Kargatzeko ordena " +#~ "goitik (aurrenekoa) behera (azkena) da." -#: src/sun/configure.c:199 -msgid "Audio control device:" -msgstr "Audioa kontrolatzeko gailua:" +#~ msgid "" +#~ "* Load SoundFont on player start *\n" +#~ "Depending on your system speed, SoundFont loading in FluidSynth will " +#~ "require up to a few seconds. This is a one-time task (the soundfont will " +#~ "stay loaded until it is changed or the backend is unloaded) that can be " +#~ "done at player start, or before the first MIDI file is played (the latter " +#~ "is a better choice if you don't use your player to listen MIDI files " +#~ "only)." +#~ msgstr "" +#~ "* Kargatu SoundFont erreproduzitzailea abiaraztean *\n" +#~ "Sistemaren abiaduraren arabera, FluidSynth-en SoundFont kargatzeak " +#~ "segundo gutxi batzuk beharko ditu. Aldi bateko zeregina da hau (soundfont " +#~ "kargatuta jarraituko du hura aldatu arte, edo motorra memoritik kendu " +#~ "arte) erreproduzitzailea abiaraztean edo aurreneko MIDI fitxategia " +#~ "erreproduzitu aurretik egin daitekeena (azkenengoa aukera soilik " +#~ "egokiagoa da ez baduzu erreproduzitzailerik erabiltzen MIDI fitxategiak " +#~ "entzuteko)." -#: src/sun/configure.c:270 -msgid "Buffer size (ms):" -msgstr "Buffer-tamaina (ms):" +#~ msgid "" +#~ "* Load SoundFont on first midifile play *\n" +#~ "Depending on your system speed, SoundFont loading in FluidSynth will " +#~ "require up to a few seconds. This is a one-time task (the soundfont will " +#~ "stay loaded until it is changed or the backend is unloaded) that can be " +#~ "done at player start, or before the first MIDI file is played (the latter " +#~ "is a better choice if you don't use your player to listen MIDI files " +#~ "only)." +#~ msgstr "" +#~ "* Kargatu SoundFont aurreneko MIDI fitxategia erreproduzitzean *\n" +#~ "Sistemaren abiaduraren arabera, FluidSynth-en SoundFont kargatzeak " +#~ "segundo gutxi batzuk beharko ditu. Aldi bateko zeregina da hau (soundfont " +#~ "kargatuta jarraituko du hura aldatu arte, edo motorra memoritik kendu " +#~ "arte) erreproduzitzailea abiaraztean edo aurreneko MIDI fitxategia " +#~ "erreproduzitu aurretik egin daitekeena (azkenengoa aukera soilik " +#~ "egokiagoa da ez baduzu erreproduzitzailerik erabiltzen MIDI fitxategiak " +#~ "entzuteko)." -#: src/sun/configure.c:348 -msgid "Volume controls device:" -msgstr "Bolumena kontrolatzeko gailua:" +#~ msgid "" +#~ "* Synthesizer gain *\n" +#~ "From FluidSynth docs: the gain is applied to the final or master output " +#~ "of the synthesizer; it is set to a low value by default to avoid the " +#~ "saturation of the output when random MIDI files are played." +#~ msgstr "" +#~ "* Sintetizadorearen irabazia *\n" +#~ "FluidSynth-en dokumentaziotik: sintetizadorearen amaierako irteerari edo " +#~ "irteera maisuari aplikatzen zaio irabazia; balio baxu batekin ezartzen da " +#~ "lehenetsi gisa irteeraren saturazioa saihesteko ausazko MIDI fitxategiak " +#~ "erreproduzitzen direnean." -#: src/sun/configure.c:361 -msgid "XMMS uses mixer exclusively." -msgstr "XMMSek esklusiboki darabil nahastailea" +#~ msgid "" +#~ "* Synthesizer polyphony *\n" +#~ "From FluidSynth docs: the polyphony defines how many voices can be played " +#~ "in parallel; the number of voices is not necessarily equivalent to the " +#~ "number of notes played simultaneously; indeed, when a note is struck on a " +#~ "specific MIDI channel, the preset on that channel may create several " +#~ "voices, for example, one for the left audio channel and one for the right " +#~ "audio channels; the number of voices activated depends on the number of " +#~ "instrument zones that fall in the correspond to the velocity and key of " +#~ "the played note." +#~ msgstr "" +#~ "* Sintetizadorearen polifonia *\n" +#~ "FluidSynth-en dokumentaziotik: zenbat ahots paraleloki erreproduzi " +#~ "daitezkeen definitzen du polifoniak; ahots kopuruak ez dauka aldi berean " +#~ "erreproduzitutako noten kopuruarekin zer ikusirik derrigorrez; nota bat " +#~ "jotzen denean MIDI kanalean, kanal horretako aurrezarpenak hainbat ahots " +#~ "sortuko ditu, adibidez, bat ezkerreko audioaren kanalarentzako eta beste " +#~ "bat eskuinekoarentzako; aktibatutako ahots kopurua instrumentuen zona " +#~ "(erreproduzitutako notan eta abiaduran erortzen dena) kopuruaren mende " +#~ "dago." -#: src/sun/configure.c:536 -msgid "Sun driver configuration" -msgstr "Sun kontrolatzailearen konfigurazioa" +#~ msgid "" +#~ "* Synthesizer reverb *\n" +#~ "From FluidSynth docs: when set to \"yes\" the reverb effects module is " +#~ "activated; note that when the reverb module is active, the amount of " +#~ "signal sent to the reverb module depends on the \"reverb send\" generator " +#~ "defined in the SoundFont." +#~ msgstr "" +#~ "* Sintetizadorearen reverb-a *\n" +#~ "FluidSynth-en dokumentaziotik: \"bai\" ezartzean reverb efektuen moduloa " +#~ "aktibatzen da. Jakin ezazu reverb moduloa aktibo dagoenean, reverb " +#~ "moduloari bidaltzen zaizkion seinale kopurua SoundFont-en definitutako " +#~ "\"reverb bidali\" sortzailean mende dago." -#: src/tonegen/tonegen.c:53 -msgid "About Tone Generator" -msgstr "Tonu-sortzaileari buruz" +#~ msgid "" +#~ "* Synthesizer chorus *\n" +#~ "From FluidSynth docs: when set to \"yes\" the chorus effects module is " +#~ "activated; note that when the chorus module is active, the amount of " +#~ "signal sent to the chorus module depends on the \"chorus send\" generator " +#~ "defined in the SoundFont." +#~ msgstr "" +#~ "* Sintetizadorearen chorus-a *\n" +#~ "FluidSynth-en dokumentaziotik: \"bai\" bezala ezarritakoan chorus-en " +#~ "efektuen moduloa aktibatzen da. Jakin ezazu chorus moduloa aktibatuta " +#~ "dagoenean, chorus moduloari bidalitako seinu kopurua SoundFont-en " +#~ "definitutako \"chorus bidali\" sortzailean mende dago." -#: src/tonegen/tonegen.c:55 -msgid "" -"Sinus tone generator by Haavard Kvaalen \n" -"Modified by Daniel J. Peng \n" -"\n" -"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" -"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" -msgstr "" -"Sinu bidezko tonu-sortzailearen garatzailea :Haavard Kvaalen \n" -"Eraldaketak: Daniel J. Peng \n" -"\n" -"Hau erabiltzeko gehitu URL bat, tone://maiztasun1;maiztasun2;maiztasun3;...\n" -"adib. tone://2000;2005 2000Hz eta 2005Hz tonuak erreproduzitzeko" +#, fuzzy +#~ msgid "" +#~ "* Synthesizer samplerate *\n" +#~ "The sample rate of the audio generated by the synthesizer. You can also " +#~ "specify a custom value in the interval 22050Hz-96000Hz." +#~ msgstr "" +#~ "* Sintetizadorearen lagin-tasa *\n" +#~ "Sintetizadoreak sortutako audioaren lagin-tasa. Balio pertsonalizatua ere " +#~ "zehaz dezakezu 22050Hz-96000Hz barrutian.\n" +#~ "OHARRA: buffer lehenetsiaren parametroak 44100Hz balioarekin ezarrita " +#~ "dago. Lagin-tasa aldatzean bufferraren parametroa egokitu behar da " +#~ "soinuaren kalitate ona lortzeko." -#: src/tonegen/tonegen.c:105 -#, c-format -msgid "%s %.1f Hz" -msgstr "%s %.1f Hz" +#~ msgid "" +#~ "If enabled, the extension from the original filename will not be stripped " +#~ "before adding the new file extension to the end." +#~ msgstr "" +#~ "Gaituta badago, jatorrizko fitxategi-izenaren luzapena ez da kenduko " +#~ "fitxategiaren luzapen berria amaieran gehitu aurretik." -#: src/tonegen/tonegen.c:105 -msgid "Tone Generator: " -msgstr "Tonu-sortzailea: " +#~ msgid "" +#~ "best/slowest:0;\n" +#~ "worst/fastest:9;\n" +#~ "recommended:2;\n" +#~ "default:5;" +#~ msgstr "" +#~ "onena/motelena:0;\n" +#~ "txarrena/azkarrena:9;\n" +#~ "gomendatua:2;\n" +#~ "lehenetsia:5;" -#: src/vorbis/configure.c:31 -msgid "Override generic titles" -msgstr "Gainidatzi titulu generikoak" +#~ msgid "Adds 16 bit checksum to every frame" +#~ msgstr "Gehitu 16 bit-eko kontrol-batura bilbe bakoitzari" -#: src/vorbis/configure.c:32 -msgid "Title format:" -msgstr "Titulu formatua:" +#~ msgid "Variable bitrate" +#~ msgstr "Bit-tasa aldagarria (VBR)" + +#~ msgid "Average bitrate" +#~ msgstr "Batez besteko bit-tasa" + +#~ msgid "" +#~ "For use with players that do not support low bitrate mp3 (Apex AD600-A " +#~ "DVD/mp3 player)" +#~ msgstr "" +#~ "MP3ren bit-tasa baxua onartzen ez duten erreproduzitzaileetan erabiltzeko " +#~ "(Apex AD600-A DVD/ mp3 erreproduzigailua)" + +#~ msgid "" +#~ "highest:0;\n" +#~ "lowest:9;\n" +#~ "default:4;" +#~ msgstr "" +#~ "altuena:0;\n" +#~ "baxuena:9;\n" +#~ "lehenetsia:4;" -#: src/vorbis/configure.c:36 #, fuzzy -msgid "Ogg Vorbis Tags" -msgstr "Ogg Vorbis etiketak:" +#~ msgid "Show playlists" +#~ msgstr "Erakutsi erreprodukzio-zerrendaren editorea" -#: src/vorbis/configure.c:68 -msgid "Ogg Vorbis Audio Plugin Configuration" -msgstr "Ogg Vorbis audioaren pluginaren konfigurazioa" +#, fuzzy +#~ msgid "Show/hide playlists" +#~ msgstr "Kargatu erreprodukzio-zerrenda" -#: src/vorbis/vorbis.c:549 -msgid "About Ogg Vorbis Audio Plugin" -msgstr "Ogg Vorbis audioaren pluginari buruz" +#~ msgid "About the Sun Driver" +#~ msgstr "Sun kontrolatzaileari buruz" -#: src/vorbis/vorbis.c:554 -msgid "" -"Ogg Vorbis Plugin by the Xiph.org Foundation\n" -"\n" -"Original code by\n" -"Tony Arcieri \n" -"Contributions from\n" -"Chris Montgomery \n" -"Peter Alm \n" -"Michael Smith \n" -"Jack Moffitt \n" -"Jorn Baayen \n" -"Haavard Kvaalen \n" -"Gian-Carlo Pascutto \n" -"Eugene Zagidullin \n" -"\n" -"Visit the Xiph.org Foundation at http://www.xiph.org/\n" -msgstr "" -"Ogg Vorbis plugina Xiph.org fundazioaren eskutik\n" -"\n" -"Jatorrizko kodea:\n" -"Tony Arcieri \n" -"Laguntzaileak:\n" -"Chris Montgomery \n" -"Peter Alm \n" -"Michael Smith \n" -"Jack Moffitt \n" -"Jorn Baayen \n" -"Haavard Kvaalen \n" -"Gian-Carlo Pascutto \n" -"Eugene Zagidullin \n" -"\n" -"Bisitatu Xiph.org fundazioa honako gunean: http://www.xiph.org/\n" +#~ msgid "" +#~ "XMMS BSD Sun Driver\n" +#~ "\n" +#~ "Copyright (c) 2001 CubeSoft Communications, Inc.\n" +#~ "Maintainer: .\n" +#~ msgstr "" +#~ "XMMS BSD Sun kontrolatzailea\n" +#~ "\n" +#~ "Copyright-a (c) 2001 CubeSoft Communications, Inc.\n" +#~ "Mantentzailea: .\n" -#: src/vtx/about.c:14 -msgid "About Vortex Player" -msgstr "Vortex erreproduzitzaileari buruz" +#~ msgid "Audio control device:" +#~ msgstr "Audioa kontrolatzeko gailua:" -#: src/vtx/about.c:15 -msgid "" -"Vortex file format player by Sashnov Alexander \n" -"Founded on original source in_vtx.dll by Roman Sherbakov \n" -"\n" -"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" -"and other AY/YM music sites.\n" -"\n" -"Audacious implementation by Pavel Vymetalek " -msgstr "" -"Vortex fitxategi-formatuen erreproduzitzailearen garatzailea: Sashnov " -"Alexander \n" -"Jatorrizko in_vtx.dll iturburuan aurkituta: Roman Sherbakov \n" -"\n" -"vtx formatuko musika honako webgunean aurki daiteke: http://vtx.microfor.ru/" -"music.htm\n" -"eta beste AY/YM musika guneetan.\n" -"\n" -"Audacious-entzako inplementazioa: Pavel Vymetalek " +#~ msgid "Buffer size (ms):" +#~ msgstr "Buffer-tamaina (ms):" -#: src/wavpack/wavpack.c:371 -#, c-format -msgid "Wavpack Decoder Plugin %s" -msgstr "Wavpack deskodetzailearen %s plugina" +#~ msgid "Volume controls device:" +#~ msgstr "Bolumena kontrolatzeko gailua:" -#: src/wavpack/wavpack.c:372 -msgid "" -"Copyright (c) 2006 William Pitcock \n" -"\n" -"Some of the plugin code was by Miles Egan\n" -"Visit the Wavpack site at http://www.wavpack.com/\n" -msgstr "" -"Copyright-a (c) 2006 William Pitcock \n" -"\n" -"Pluginaren kode batzuk Miles Egan-ek garatua\n" -"Bisitatu Wavpack gunea: http://www.wavpack.com/\n" +#~ msgid "XMMS uses mixer exclusively." +#~ msgstr "XMMSek esklusiboki darabil nahastailea" + +#~ msgid "Sun driver configuration" +#~ msgstr "Sun kontrolatzailearen konfigurazioa" + +#, fuzzy +#~ msgid "Target volume:" +#~ msgstr "Aldatu bolumena" + +#, fuzzy +#~ msgid "Effect strength:" +#~ msgstr "Efektuaren intentsitatea:" + +#~ msgid "FLAC Audio Plugin " +#~ msgstr "FLAC audioaren plugina" + +#, fuzzy +#~ msgid "Stream browser" +#~ msgstr "arakatu" + +#, fuzzy +#~ msgid "Streambrowser" +#~ msgstr "arakatu" #~ msgid "PREAMP" #~ msgstr "Aurre-anp" @@ -6029,12 +6008,6 @@ #~ "\n" #~ "'%s' fitxategi mota ezezaguna.\n" -#~ msgid "Randomize List" -#~ msgstr "Nahastu ausaz zerrenda" - -#~ msgid "Randomizes the playlist." -#~ msgstr "Nahastu ausaz erreprodukzio-zerrenda" - #~ msgid "Using libfaad2-" #~ msgstr "libfaad2-" @@ -6595,18 +6568,9 @@ #~ msgid "Title:" #~ msgstr "Titulua:" -#~ msgid "Artist:" -#~ msgstr "Artista:" - #~ msgid "Comment:" #~ msgstr "Iruzkina:" -#~ msgid "Year:" -#~ msgstr "Urtea:" - -#~ msgid "Track:" -#~ msgstr "Pista:" - #~ msgid "Genre:" #~ msgstr "Generoa:" @@ -6697,9 +6661,6 @@ #~ "Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" #~ "Boston, MA 02110-1301, USA." -#~ msgid "_Random" -#~ msgstr "_Ausazkoa" - #~ msgid "" #~ "There has been an error that may require your attention.\n" #~ "\n" @@ -6841,9 +6802,6 @@ #~ msgid "ID3 Tag:" #~ msgstr "ID3 etiketa:" -#~ msgid "Track number:" -#~ msgstr "Pista zenbakia:" - #~ msgid "Ape2 Tag" #~ msgstr "Ape2 etiketa" diff -Nru audacious-plugins-2.4.4/po/fr.po audacious-plugins-3.2/po/fr.po --- audacious-plugins-2.4.4/po/fr.po 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/fr.po 2012-01-20 19:48:30.000000000 +0000 @@ -1,26 +1,25 @@ -# /* _\|/_ -# (o o) -# +----oOO-{_}-OOo----+ -# | | -# | audacious-plugins | -# | | -# +------------------*/ -msgid "" -msgstr "" -"Project-Id-Version: Audacious-plugins 2.4\n" -"Report-Msgid-Bugs-To: http://jira.atheme.org/\n" -"POT-Creation-Date: 2010-08-18 13:51+0100\n" -"PO-Revision-Date: 2010-08-18 13:51+0100\n" -"Last-Translator: StrassBoy \n" -"Language-Team: \n" -"Language: \n" +# French translation for Audacious Plugins +# Copyright (C) Audacious translators +# This file is distributed under the same license as the Audacious Plugins package. +# +# Translators: +# , 2011, 2012. +# Jean-Alexandre Anglès d'Auriac , 2011. +msgid "" +msgstr "" +"Project-Id-Version: Audacious Plugins\n" +"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2012-01-11 09:01-0500\n" +"PO-Revision-Date: 2012-01-16 11:14+0000\n" +"Last-Translator: Oxayotl \n" +"Language-Team: French\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: French\n" -"X-Poedit-Country: BELGIUM\n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1)\n" -#: audacious-plugins/src/aac/libmp4.c:291 +#: src/aac/libmp4.c:256 #, c-format msgid "" "Using libfaad2-%s for decoding.\n" @@ -33,238 +32,172 @@ "\n" "Droit d'utilisation 2005-2006 : Équipe de développement Audacious" -#: audacious-plugins/src/aac/libmp4.c:296 +#: src/aac/libmp4.c:261 msgid "About MP4 AAC decoder plugin" msgstr "À propos du décodeur « MP4 AAC »" -#: audacious-plugins/src/alarm/interface.c:34 -msgid "About XMMS Alarm" -msgstr "À propos du module « XMMS Alarm »" - -#: audacious-plugins/src/alarm/interface.c:47 -msgid "XMMS Alarm" -msgstr "XMMS Alarm" +#: src/alarm/alarm.c:312 +msgid "About Alarm" +msgstr "" -#: audacious-plugins/src/alarm/interface.c:56 +#: src/alarm/alarm.c:313 msgid "" -"An XMMS plugin which can be used\n" -"to start playing at a certain time.\n" +"A plugin that can be used to start playing at a certain time.\n" "\n" -"Send all complaints to:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" +"Originally written by Adam Feakin and Daniel Stodden." msgstr "" -"Ce module pour XMMS peut être utilisé pour\n" -"commencer la lecture à un moment donné.\n" -"\n" -"\n" -"Vous pouvez envoyer toutes vos remarques à :\n" -"\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" - -#: audacious-plugins/src/alarm/interface.c:71 -msgid "Close" -msgstr "Fermer" -#: audacious-plugins/src/alarm/interface.c:101 +#: src/alarm/interface.c:33 msgid "Alarm" -msgstr "Alarm" +msgstr "Alarme" -#: audacious-plugins/src/alarm/interface.c:109 +#: src/alarm/interface.c:40 msgid "This is your wakeup call." -msgstr "L'appel du réveil... ;-)" +msgstr "" -#: audacious-plugins/src/alarm/interface.c:124 -#: audacious-plugins/src/alarm/interface.c:1389 +#: src/alarm/interface.c:55 src/alarm/interface.c:1213 msgid "OK" msgstr "OK" -#: audacious-plugins/src/alarm/interface.c:152 -msgid "Select Playlist" -msgstr "Choix d'une liste de lecture" - -#: audacious-plugins/src/alarm/interface.c:196 -msgid "Sorry" -msgstr "Désolé" - -#: audacious-plugins/src/alarm/interface.c:204 -msgid "Warning" -msgstr "Avertissement" - -#: audacious-plugins/src/alarm/interface.c:213 -msgid "" -"For safety reasons the \"quiet\" time must be at least 65 seconds longer than the fading time, it must also be more than 10 seconds. This basically means that there is a bug in the code and until I find a way of really fixing it this message will appear :)\n" -"\n" -"Your fading settings have NOT been saved\n" -"\n" -"--\n" -"Adam" -msgstr "" -"Pour des raisons de sécurité, le temps de « repos » doit au moins durer 65 secondes de plus que le temps du fondu. Il doit aussi être supérieur à 10 secondes. Cela signifie simplement que le code du module comporte une erreur... Jusqu'à ce que je trouve un moyen de la corriger de manière définitive, ce message sera affiché :)\n" -"\n" -"Les préférences relatives au fondu n'ont PAS été enregistrées.\n" -"\n" -"--------\n" -"Adam" - -#: audacious-plugins/src/alarm/interface.c:229 -msgid "Oh Well" -msgstr "Bon, d'accord" - -#: audacious-plugins/src/alarm/interface.c:388 +#: src/alarm/interface.c:214 msgid "Alarm Settings" -msgstr "Préférences du module « Alarm »" +msgstr "Paramètres de l'alarme" -#: audacious-plugins/src/alarm/interface.c:404 -#: audacious-plugins/src/alarm/interface.c:576 -#: audacious-plugins/src/alarm/interface.c:948 +#: src/alarm/interface.c:229 src/alarm/interface.c:401 +#: src/alarm/interface.c:773 msgid "Time" msgstr "Heure" -#: audacious-plugins/src/alarm/interface.c:445 +#: src/alarm/interface.c:270 msgid "hours" -msgstr " heures " +msgstr "heures" -#: audacious-plugins/src/alarm/interface.c:506 +#: src/alarm/interface.c:331 msgid "h" -msgstr " minutes " +msgstr "h" -#: audacious-plugins/src/alarm/interface.c:536 +#: src/alarm/interface.c:361 msgid "minutes" -msgstr " minutes " +msgstr "minutes" -#: audacious-plugins/src/alarm/interface.c:554 +#: src/alarm/interface.c:379 msgid "Quiet after:" -msgstr "Extinction après :" +msgstr "Arrêter au bout de" -#: audacious-plugins/src/alarm/interface.c:564 +#: src/alarm/interface.c:389 msgid "Alarm at (default):" -msgstr "Heure du réveil (par défaut) :" +msgstr "Se déclencher (par défaut) à :" -#: audacious-plugins/src/alarm/interface.c:584 +#: src/alarm/interface.c:409 msgid "Choose the days for the alarm to come on" -msgstr "Jours d'activation de l'alarme" +msgstr "Choisissez les jours où l'alarme se déclenche" -#: audacious-plugins/src/alarm/interface.c:612 -#: audacious-plugins/src/alarm/interface.c:660 -#: audacious-plugins/src/alarm/interface.c:708 -#: audacious-plugins/src/alarm/interface.c:756 -#: audacious-plugins/src/alarm/interface.c:804 -#: audacious-plugins/src/alarm/interface.c:852 -#: audacious-plugins/src/alarm/interface.c:900 +#: src/alarm/interface.c:437 src/alarm/interface.c:485 +#: src/alarm/interface.c:533 src/alarm/interface.c:581 +#: src/alarm/interface.c:629 src/alarm/interface.c:677 +#: src/alarm/interface.c:725 src/bs2b/plugin.c:198 src/OSS/configure.c:153 +#: src/skins/ui_equalizer.c:1104 src/skins/ui_manager.c:447 +#: src/skins/ui_manager.c:468 msgid "Default" msgstr "Défaut" -#: audacious-plugins/src/alarm/interface.c:938 +#: src/alarm/interface.c:763 msgid "Day" msgstr "Jour" -#: audacious-plugins/src/alarm/interface.c:958 +#: src/alarm/interface.c:783 msgid "Tuesday" msgstr "Mardi" -#: audacious-plugins/src/alarm/interface.c:969 +#: src/alarm/interface.c:794 msgid "Wednesday" msgstr "Mercredi" -#: audacious-plugins/src/alarm/interface.c:980 +#: src/alarm/interface.c:805 msgid "Thursday" msgstr "Jeudi" -#: audacious-plugins/src/alarm/interface.c:991 +#: src/alarm/interface.c:816 msgid "Friday" msgstr "Vendredi" -#: audacious-plugins/src/alarm/interface.c:1002 +#: src/alarm/interface.c:827 msgid "Saturday" msgstr "Samedi" -#: audacious-plugins/src/alarm/interface.c:1013 +#: src/alarm/interface.c:838 msgid "Sunday" msgstr "Dimanche" -#: audacious-plugins/src/alarm/interface.c:1023 +#: src/alarm/interface.c:848 msgid "Monday" msgstr "Lundi" -#: audacious-plugins/src/alarm/interface.c:1034 +#: src/alarm/interface.c:859 msgid "Days" msgstr "Jours" -#: audacious-plugins/src/alarm/interface.c:1050 +#: src/alarm/interface.c:875 msgid "Fading" msgstr "Fondu" -#: audacious-plugins/src/alarm/interface.c:1087 +#: src/alarm/interface.c:912 msgid "seconds" msgstr "secondes" -#: audacious-plugins/src/alarm/interface.c:1095 -#: audacious-plugins/src/alarm/interface.c:1211 +#: src/alarm/interface.c:920 src/alarm/interface.c:1035 msgid "Volume" msgstr "Volume" -#: audacious-plugins/src/alarm/interface.c:1121 +#: src/alarm/interface.c:946 msgid "Current" msgstr "Volume actuel" -#: audacious-plugins/src/alarm/interface.c:1128 -msgid "reset to current output volume" -msgstr "Réinitialise au volume de sortie actuel." - -#: audacious-plugins/src/alarm/interface.c:1130 +#: src/alarm/interface.c:954 msgid "Start at" -msgstr "Début" +msgstr "Commencer à" -#: audacious-plugins/src/alarm/interface.c:1158 -#: audacious-plugins/src/alarm/interface.c:1202 +#: src/alarm/interface.c:982 src/alarm/interface.c:1026 msgid "%" msgstr "%" -#: audacious-plugins/src/alarm/interface.c:1174 +#: src/alarm/interface.c:998 msgid "Final" -msgstr "Fin" +msgstr "Finir à" -#: audacious-plugins/src/alarm/interface.c:1227 +#: src/alarm/interface.c:1051 msgid "Additional Command" -msgstr "Commande supplémentaire" +msgstr "Commande additionnelle" -#: audacious-plugins/src/alarm/interface.c:1253 +#: src/alarm/interface.c:1077 msgid "enable" -msgstr "Activer" +msgstr "activer" -#: audacious-plugins/src/alarm/interface.c:1261 +#: src/alarm/interface.c:1085 msgid "Playlist (optional)" -msgstr "Liste de lecture (option facultative)" +msgstr "Lire la liste de lecture suivante (optionnel)" -#: audacious-plugins/src/alarm/interface.c:1287 +#: src/alarm/interface.c:1111 msgid "Browse..." msgstr "Parcourir" -#: audacious-plugins/src/alarm/interface.c:1295 -#: audacious-plugins/src/alarm/interface.c:1460 +#: src/alarm/interface.c:1119 src/alarm/interface.c:1283 msgid "Reminder" msgstr "Pense-bête" -#: audacious-plugins/src/alarm/interface.c:1312 +#: src/alarm/interface.c:1136 msgid "Use reminder" -msgstr "Utiliser le pense-bête" +msgstr "Afficher le pense-bête suivant" -#: audacious-plugins/src/alarm/interface.c:1328 +#: src/alarm/interface.c:1152 src/sndstretch/sndstretch_xmms.c:358 msgid "Options" msgstr "Options" -#: audacious-plugins/src/alarm/interface.c:1336 +#: src/alarm/interface.c:1160 msgid "What do these options mean?" msgstr "Que signifient ces options ?" -#: audacious-plugins/src/alarm/interface.c:1364 +#: src/alarm/interface.c:1188 msgid "" "\n" "Time\n" @@ -318,253 +251,137 @@ " type the reminder in the box and turn on the\n" " toggle button if you want it to be shown.\n" msgstr "" -"\n" -"*** Alarme ***\n" -"\n" -"\n" -"Heure de l'alarme :\n" -"\n" -"heure à laquelle l'alarme sera activée.\n" -"\n" -"\n" -"Extinction :\n" -"\n" -"laps de temps après lequel l'alarme cessera\n" -"(si la fenêtre du réveil n'est pas fermée).\n" -"\n" -"\n" -"*** Jours ***\n" -"\n" -"\n" -"Jour :\n" -"\n" -"détermine le jour d'activation de l'alarme.\n" -"\n" -"\n" -"Heure :\n" -"\n" -"détermine l'heure d'activation de l'alarme\n" -"(vous pouvez spécifier une heure précise ou utiliser le bouton « Défaut »).\n" -"\n" -"\n" -"*** Volume ***\n" -"\n" -"\n" -"Fondu :\n" -"\n" -"applique un effet de fondu au volume sonore, pour le laps de temps indiqué.\n" -"\n" -"\n" -"Début :\n" -"\n" -"applique le fondu à partir du niveau sonore déterminé.\n" -"\n" -"\n" -"Fin :\n" -"\n" -"détermine le volume à partir duquel le fondu ne sera plus appliqué\n" -"(si la durée du fondu correspond à 0, le volume de fin de fondu déterminera\n" -"le niveau sonore de l'alarme).\n" -"\n" -"\n" -"*** Options ***\n" -"\n" -"\n" -"Commande supplémentaire :\n" -"\n" -"la commande spécifiée sera exécutée en même temps que l'alarme.\n" -"\n" -"\n" -"Liste de lecture :\n" -"\n" -"lit une liste de lecture particulière (l'extension doit être \".m3u\").\n" -"Si aucune liste n'est spécifiée, ce sont les titres de la liste active\n" -"du lecteur qui seront utilisés.\n" -"L'adresse d'un flux distant « mp3 » ou « ogg » peut également constituer une source.\n" -"\n" -"\n" -"Pense-bête :\n" -"\n" -"affiche un texte de rappel, lors de l'extinction de l'alarme\n" -"(écrivez le message dans le champ prévu à cet effet, puis cochez l'option d'activation).\n" -#: audacious-plugins/src/alarm/interface.c:1366 +#: src/alarm/interface.c:1190 src/skins/ui_manager.c:382 msgid "Help" msgstr "Aide" -#: audacious-plugins/src/alarm/interface.c:1398 +#: src/alarm/interface.c:1222 src/cdaudio-ng/configure.c:249 +#: src/crystalizer/crystalizer.c:130 src/echo_plugin/gui.c:125 +#: src/jack/configure.c:148 src/null/null.c:108 src/stereo_plugin/stereo.c:125 msgid "Cancel" msgstr "Annuler" -#: audacious-plugins/src/alarm/interface.c:1468 +#: src/alarm/interface.c:1290 msgid "Your reminder for today is.." -msgstr "Le pense-bête du jour est..." +msgstr "Votre pense-bête pour aujourd'hui est…" -#: audacious-plugins/src/alarm/interface.c:1493 +#: src/alarm/interface.c:1315 msgid "Thankyou" msgstr "Merci" -#: audacious-plugins/src/alsa/plugin.c:61 -msgid "About ALSA Output Plugin" -msgstr "À propos du module de sortie « ALSA »" - -#: audacious-plugins/src/alsa/plugin.c:83 -msgid "ALSA error" -msgstr "Erreur ALSA" - -#: audacious-plugins/src/alsa/config.c:209 +#: src/alsa/config.c:210 msgid "Default PCM device" msgstr "Périphérique PCM par défaut" -#: audacious-plugins/src/alsa/config.c:234 +#: src/alsa/config.c:235 msgid "Default mixer device" msgstr "Mélangeur audio par défaut" -#: audacious-plugins/src/alsa/config.c:438 +#: src/alsa/config.c:438 msgid "ALSA Output Plugin Preferences" msgstr "Préférences du module de sortie « ALSA »" -#: audacious-plugins/src/alsa/config.c:445 +#: src/alsa/config.c:445 msgid "PCM device:" msgstr "Périphérique PCM :" -#: audacious-plugins/src/alsa/config.c:447 +#: src/alsa/config.c:447 src/OSS/configure.c:237 msgid "Mixer device:" msgstr "Canal de mélange audio :" -#: audacious-plugins/src/alsa/config.c:449 +#: src/alsa/config.c:449 msgid "Mixer element:" msgstr "Mélangeur :" -#: audacious-plugins/src/alsa/config.c:452 +#: src/alsa/config.c:452 msgid "Work around drain hangup" msgstr "Contourner le problème d'interruption du flux ( « drain hang-up » )" -#: audacious-plugins/src/amidi-plug/i_utils.c:43 -msgid "AMIDI-Plug - about" -msgstr "À propos de « AMIDI-Plug »" +#: src/alsa/plugin.c:59 +msgid "About ALSA Output Plugin" +msgstr "À propos du module de sortie « ALSA »" + +#: src/alsa/plugin.c:81 +msgid "ALSA error" +msgstr "Erreur ALSA" -#: audacious-plugins/src/amidi-plug/i_utils.c:68 +#: src/amidi-plug/amidi-plug.c:326 msgid "" -"\n" -"AMIDI-Plug " +"You have not selected any sequencer ports for MIDI playback. You can do so " +"in the MIDI plugin preferences." msgstr "" -"\n" -"AMIDI-Plug " +"Vous n'avez pas choisi les ports du séquenceur pour la lecture MIDI. Vous " +"pouvez le faire dans les préférences du module MIDI." + +#: src/amidi-plug/backend-alsa/b-alsa.c:35 +msgid "ALSA Backend " +msgstr "ALSA " -#: audacious-plugins/src/amidi-plug/i_utils.c:69 +#: src/amidi-plug/backend-alsa/b-alsa.c:37 msgid "" -"\n" -"modular MIDI music player\n" -"http://www.develia.org/projects.php?p=amidiplug\n" -"\n" -"written by Giacomo Lozito\n" -"< james@develia.org >\n" -"\n" -"\n" -"special thanks to...\n" -"\n" -"Clemens Ladisch and Jaroslav Kysela\n" -"for their cool programs aplaymidi and amixer; those\n" -"were really useful, along with alsa-lib docs, in order\n" -"to learn more about the ALSA API\n" -"\n" -"Alfredo Spadafina\n" -"for the nice midi keyboard logo\n" -"\n" -"Tony Vroon\n" -"for the good help with alpha testing\n" -"\n" +"This backend sends MIDI events to a group of user-chosen ALSA sequencer ports. The ALSA sequencer interface is very versatile, it can provide ports for audio cards hardware synthesizers (i.e. emu10k1) but also for software synths, external devices, etc.\n" +"This backend does not produce audio, MIDI events are handled directly from devices/programs behind the ALSA ports; in example, MIDI events sent to the hardware synth will be directly played.\n" +"Backend written by Giacomo Lozito." msgstr "" +"Ce système envoie les événements MIDI à l'ensemble des ports du séquenceur « ALSA » que l'utilisateur a spécifié. L'interface du séquenceur « ALSA » offre des possibilités variées : elle peut fournir des ports aux synthétiseurs matériels des cartes sons (« emu10k1 », par exemple), mais aussi aux synthétiseurs logiciels, aux périphériques externes, etc.\n" +"Ce système de sortie ne produit pas de flux audio : les événements MIDI sont gérés directement par les périphériques et les applications associés aux ports « ALSA ». Par exemple, les événements MIDI envoyés au synthétiseur matériel seront directement interprétés.\n" "\n" -"\n" -"Lecteur de musique « MIDI » modulaire\n" -"\n" -"http://www.develia.org/projects.php?p=amidiplug\n" -"\n" -"Auteur : Giacomo Lozito < james@develia.org >\n" -"\n" -"\n" -"Remerciements particuliers à...\n" -"\n" -"Clemens Ladisch et Jaroslav Kysela\n" -"pour leurs excellents outils « aplaymidi » et « amixer » :\n" -"ces derniers étaient très utiles (en plus de la documentation\n" -"relative à la bibliothèque « ALSA ») pour apprendre\n" -"l'interface de programmation « ALSA ».\n" -"\n" -"Alfredo Spadafina\n" -"pour le beau logo (clavier MIDI).\n" -"\n" -"Tony Vroon\n" -"pour son aide précieuse, lors de la phase alpha.\n" -"\n" +"Auteur : Giacomo Lozito." + +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 +msgid "FluidSynth Backend " +msgstr "FluidSynth " -#: audacious-plugins/src/amidi-plug/amidi-plug.c:323 -msgid "You have not selected any sequencer ports for MIDI playback. You can do so in the MIDI plugin preferences." -msgstr "Vous n'avez pas choisi les ports du séquenceur pour la lecture MIDI. Vous pouvez le faire dans les préférences du module MIDI." +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 +msgid "" +"This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" +"Backend written by Giacomo Lozito." +msgstr "" +"Ce système de sortie produit des flux audio en envoyant les événements MIDI à « FluidSynth », un synthétiseur logiciel en temps réel conçu à partir des principes de « SoundFont2 » (www.fluidsynth.org).\n" +"Les flux générés peuvent être manipulés grâce aux modules d'effets du lecteur et sont traités par le module de sortie sélectionné.\n" +"\n" +"Auteur : Giacomo Lozito." -#: audacious-plugins/src/amidi-plug/i_configure-alsa.c:221 +#: src/amidi-plug/i_configure-alsa.c:228 msgid "ALSA BACKEND CONFIGURATION" msgstr "CONFIGURATION DU SYSTÈME DE SORTIE « ALSA »" -#: audacious-plugins/src/amidi-plug/i_configure-alsa.c:326 +#: src/amidi-plug/i_configure-alsa.c:331 msgid "Port" msgstr "Port" -#: audacious-plugins/src/amidi-plug/i_configure-alsa.c:328 +#: src/amidi-plug/i_configure-alsa.c:333 msgid "Client name" msgstr "Nom du client" -#: audacious-plugins/src/amidi-plug/i_configure-alsa.c:330 +#: src/amidi-plug/i_configure-alsa.c:335 msgid "Port name" msgstr "Nom du port" -#: audacious-plugins/src/amidi-plug/i_configure-alsa.c:341 +#: src/amidi-plug/i_configure-alsa.c:346 msgid "ALSA output ports" msgstr "Ports de sortie « ALSA »" -#: audacious-plugins/src/amidi-plug/i_configure-alsa.c:394 +#: src/amidi-plug/i_configure-alsa.c:399 msgid "Soundcard: " msgstr "Périphérique audio : " -#: audacious-plugins/src/amidi-plug/i_configure-alsa.c:396 +#: src/amidi-plug/i_configure-alsa.c:401 msgid "Mixer control: " msgstr "Canal du mélangeur audio : " -#: audacious-plugins/src/amidi-plug/i_configure-alsa.c:408 +#: src/amidi-plug/i_configure-alsa.c:413 msgid "Mixer settings" msgstr "Paramètres du mélangeur" -#: audacious-plugins/src/amidi-plug/i_configure-alsa.c:421 -msgid "" -"* Select ALSA output ports *\n" -"MIDI events will be sent to the ports selected here. In example, if your audio card provides a hardware synth and you want to play MIDI with it, you'll probably want to select the wavetable synthesizer ports." -msgstr "" -"* Choix des ports de sortie « ALSA » *\n" -"Les événements MIDI seront envoyés aux ports spécifiés ici. Par exemple, si votre carte son dispose d'un synthétiseur matériel et que vous désirez écouter les fichiers MIDI avec celui-ci, vous voudrez probabement choisir les ports du synthétiseur à tables d'ondes à utiliser." - -#: audacious-plugins/src/amidi-plug/i_configure-alsa.c:426 -msgid "" -"* Select ALSA mixer card *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and ouput plugins from the player. During playback, the player volumeslider will manipulate the mixer control you select here. If you're using wavetable synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" -"* Choix du périphérique audio « ALSA » *\n" -"Le système de sortie « ALSA » émet directement via « ALSA » : il n'utilise pas les modules d'effets du lecteur, ni les modules de sortie. Lors de la lecture, le curseur du volume du lecteur opérera sur le contrôleur du mélangeur audio que vous avez sélectionné ici. Si vous utilisez les ports d'un synthétiseur à tables d'ondes, vous voudrez probabement choisir le contrôleur du synthétiseur ici." - -#: audacious-plugins/src/amidi-plug/i_configure-alsa.c:433 -msgid "" -"* Select ALSA mixer control *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and ouput plugins from the player. During playback, the player volume slider will manipulate the mixer control you select here. If you're using wavetable synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" -"* Choix du canal du mélangeur audio « ALSA » *\n" -"Le système de sortie « ALSA » émet directement via « ALSA » : il n'utilise pas les modules d'effets du lecteur, ni les modules de sortie. Lors de la lecture, le curseur du volume du lecteur opérera sur le canal du mélangeur audio que vous avez sélectionné ici. Si vous utilisez les ports d'un synthétiseur à tables d'ondes, vous voudrez probabement choisir le canal du synthétiseur ici." - -#: audacious-plugins/src/amidi-plug/i_configure-alsa.c:444 +#: src/amidi-plug/i_configure-alsa.c:429 msgid "ALSA Backend not loaded or not available" -msgstr "Le système de sortie « ALSA » n'est pas chargé ou n'est pas disponible" +msgstr "" +"Le système de sortie « ALSA » n'est pas chargé ou n'est pas disponible" -#: audacious-plugins/src/amidi-plug/i_configure-alsa.c:463 +#: src/amidi-plug/i_configure-alsa.c:448 msgid "" "ALSA\n" "backend" @@ -572,179 +389,51 @@ "Sortie\n" "\"ALSA\"" -#: audacious-plugins/src/amidi-plug/i_fileinfo.c:169 -msgid "Name:" -msgstr "Nom :" - -#: audacious-plugins/src/amidi-plug/i_fileinfo.c:193 -msgid " MIDI Info " -msgstr " Informations sur le fichier MIDI " - -#: audacious-plugins/src/amidi-plug/i_fileinfo.c:205 -msgid "Format:" -msgstr "Format :" - -#: audacious-plugins/src/amidi-plug/i_fileinfo.c:208 -msgid "Length (msec):" -msgstr "Durée (msec) :" - -#: audacious-plugins/src/amidi-plug/i_fileinfo.c:211 -msgid "Num of Tracks:" -msgstr "Nombre de pistes :" - -#: audacious-plugins/src/amidi-plug/i_fileinfo.c:216 -msgid "variable" -msgstr "variable" - -#: audacious-plugins/src/amidi-plug/i_fileinfo.c:217 -msgid "BPM:" -msgstr "BPM :" - -#: audacious-plugins/src/amidi-plug/i_fileinfo.c:223 -msgid "BPM (wavg):" -msgstr "BPM (wavg) :" - -#: audacious-plugins/src/amidi-plug/i_fileinfo.c:226 -msgid "Time Div:" -msgstr "Division du temps :" - -#: audacious-plugins/src/amidi-plug/i_fileinfo.c:237 -msgid " MIDI Comments and Lyrics " -msgstr " Commentaires et paroles du fichier MIDI " - -#: audacious-plugins/src/amidi-plug/i_fileinfo.c:288 -msgid "* no comments available in this MIDI file *" -msgstr "* aucun commentaire n'est disponible dans ce fichier MIDI *" - -#: audacious-plugins/src/amidi-plug/i_fileinfo.c:301 -msgid "* no lyrics available in this MIDI file *" -msgstr "* aucune parole n'est disponible dans ce fichier MIDI" - -#: audacious-plugins/src/amidi-plug/i_fileinfo.c:349 -msgid " (invalid UTF-8)" -msgstr " (format UTF-8 invalide)" - -#: audacious-plugins/src/amidi-plug/i_configure-timidity.c:39 -msgid "TIMIDITY BACKEND CONFIGURATION" -msgstr "CONFIGURATION DU SYSTÈME DE SORTIE « TIMIDITY »" - -#: audacious-plugins/src/amidi-plug/i_configure-timidity.c:64 -msgid "TiMidity Backend not loaded or not available" -msgstr "Le système de sortie « TiMidity » n'est pas chargé ou n'est pas disponible" - -#: audacious-plugins/src/amidi-plug/i_configure-timidity.c:83 -msgid "" -"TiMidity\n" -"backend" -msgstr "" -"Sortie\n" -"'TiMidity'" - -#: audacious-plugins/src/amidi-plug/i_configure.c:73 -msgid "AMIDI-Plug - select file" -msgstr "'AMIDI-Plug' - choix du fichier" - -#: audacious-plugins/src/amidi-plug/i_configure.c:126 -msgid "AMIDI-Plug - configuration" -msgstr "Configuration du module « AMIDI-Plug »" - -#: audacious-plugins/src/amidi-plug/i_configure-ap.c:56 +#: src/amidi-plug/i_configure-ap.c:59 msgid "AMIDI-Plug - backend information" msgstr "Informations sur le système de sortie" -#: audacious-plugins/src/amidi-plug/i_configure-ap.c:194 +#: src/amidi-plug/i_configure-ap.c:196 msgid "AMIDI-PLUG PREFERENCES" msgstr "PRÉFÉRENCES DU MODULE « AMIDI-PLUG »" -#: audacious-plugins/src/amidi-plug/i_configure-ap.c:221 +#: src/amidi-plug/i_configure-ap.c:223 msgid "Backend selection" msgstr "Choix du système de sortie" -#: audacious-plugins/src/amidi-plug/i_configure-ap.c:225 +#: src/amidi-plug/i_configure-ap.c:227 msgid "Available backends" msgstr "Systèmes disponibles :" -#: audacious-plugins/src/amidi-plug/i_configure-ap.c:255 +#: src/amidi-plug/i_configure-ap.c:257 msgid "Playback settings" msgstr "Paramètres de lecture" -#: audacious-plugins/src/amidi-plug/i_configure-ap.c:260 +#: src/amidi-plug/i_configure-ap.c:262 msgid "Transpose: " msgstr "Transposition : " -#: audacious-plugins/src/amidi-plug/i_configure-ap.c:269 +#: src/amidi-plug/i_configure-ap.c:271 msgid "Drum shift: " msgstr "Décalage des percussions :" -#: audacious-plugins/src/amidi-plug/i_configure-ap.c:287 +#: src/amidi-plug/i_configure-ap.c:289 msgid "Advanced settings" msgstr "Paramètres avancés" -#: audacious-plugins/src/amidi-plug/i_configure-ap.c:291 +#: src/amidi-plug/i_configure-ap.c:293 msgid "pre-calculate length of MIDI files in playlist" msgstr "Précalculer la durée des fichiers MIDI dans la liste de lecture" -#: audacious-plugins/src/amidi-plug/i_configure-ap.c:296 +#: src/amidi-plug/i_configure-ap.c:298 msgid "extract comments from MIDI file (if available)" msgstr "Extraire les commentaires des fichiers MIDI (s'ils sont disponibles)" -#: audacious-plugins/src/amidi-plug/i_configure-ap.c:301 +#: src/amidi-plug/i_configure-ap.c:303 msgid "extract lyrics from MIDI file (if available)" msgstr "Extraire les paroles des fichiers MIDI (si elles sont disponibles)" -#: audacious-plugins/src/amidi-plug/i_configure-ap.c:320 -msgid "" -"* Backend selection *\n" -"AMIDI-Plug works with backends, in a modular fashion; here you should select your backend; that is, the way MIDI events are going to be handled and played.\n" -"If you have a hardware synthesizer on your audio card, and ALSA supports it, you'll want to use the ALSA backend. It can also be used with anything that provides an interface to the ALSA sequencer, including software synths or external devices.\n" -"If you want to rely on a software synthesizer and/or want to pipe audio into effect and output plugins of the player you'll want to use the good FluidSynth backend.\n" -"Press the info button to read specific information about each backend." -msgstr "" -"* Choix du système de sortie *\n" -"« AMIDI-Plug » utilise des systèmes de sortie, de manière modulaire. C'est par le système de sortie que vous aurez choisi que seront gérés et restitués les événements MIDI. Si votre périphérique audio dispose d'un synthétiseur matériel supporté par « ALSA », vous pourrez utiliser le système de sortie « ALSA ». Celui-ci peut aussi être utilisé par tout ce qui peut offrir une interface au séquenceur « ALSA » (les synthétiseurs logiciels ou les périphériques externes, notamment).\n" -" Si vous désirez dépendre d'un synthétiseur logiciel et/ou si vous voulez rediriger le flux audio vers les modules de sortie du lecteur, vous pourrez utiliser le système de sortie « FluidSynth ». N'hésitez pas à activer le bouton d'informations, afin d'obtenir des renseignements spécifiques à chaque système de sortie." - -#: audacious-plugins/src/amidi-plug/i_configure-ap.c:331 -msgid "" -"* Transpose function *\n" -"This option allows you to play the midi file transposed in a different key, by shifting of the desired number of semitones all its notes (excepting those on midi channel 10, reserved for percussions). Especially useful if you wish to sing or play along with another instrument." -msgstr "" -"* Fonction de transposition *\n" -"Cette option permet de restituer le fichier MIDI alors transposé dans une tonalité différente, en décalant du nombre désiré de demi-tons toutes les les notes du morceau (à l'exception de celles du canal MIDI 10, réservé aux percussions). Cette fonction est particulièrement utile, si vous désirez chanter ou jouer accompagné d'un autre instrument." - -#: audacious-plugins/src/amidi-plug/i_configure-ap.c:337 -msgid "" -"* Drumshift function *\n" -"This option allows you to shift notes on midi channel 10 (the standard percussions channel) of the desired number of semitones. This results in different drumset and percussions being used during midi playback, so if you wish to enhance (or reduce, or alter) percussion sounds, try to play with this value." -msgstr "" -"* Fonction de décalage des percussions *\n" -"Cette option permet de décaler toutes les notes du canal MIDI 10 (le canal standard des percussions) du nombre désiré de demi-tons. Cela se traduit par l'utilisation d'un ensemble de batteries et de percussions différent, lors de la lecture. Donc, si vous désirez améliorer (ou réduire, ou bien encore modifier) les percussions, n'hésitez pas à essayer différentes valeurs." - -#: audacious-plugins/src/amidi-plug/i_configure-ap.c:344 -msgid "" -"* Pre-calculate MIDI length *\n" -"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as soon as the player requests it, instead of doing that only when the MIDI file is being played. In example, MIDI length will be calculated straight after adding MIDI files in a playlist. Disable this option if you want faster playlist loading (when a lot of MIDI files are added), enable it to display more information in the playlist straight after loading." -msgstr "" -"* Pré-calculer la durée des fichiers MIDI *\n" -"Si cette option est activée, « AMIDI-Plug » déterminera la durée du fichier MIDI dès que le lecteur le demandera, au lieu le faire seulement lorsque le morceau est lu. Par exemple, la durée des fichiers MIDI sera calculée immédiatement après l'ajout des titres dans la liste de lecture. Désactivez cette option, si vous voulez un chargement plus rapide de la liste de lecture (lorsque de nombreux fichiers MIDI sont ajoutés) ; activez cette option pour que s'affichent plus d'informations dans la liste de lecture, directement après le chargement des fichiers." - -#: audacious-plugins/src/amidi-plug/i_configure-ap.c:353 -msgid "" -"* Extract comments from MIDI files *\n" -"Some MIDI files contain text comments (author, copyright, instrument notes, etc.). If this option is enabled, AMIDI-Plug will extract and display comments (if available) in the file information dialog." -msgstr "" -"* Extraire les commentaires des fichiers MIDI *\n" -"Certains fichiers MIDI contiennent des commentaires (auteur, droits d'utilisation, notes relatives aux instruments, etc.). Si cette option est activée, « AMIDI-Plug » extraira et affichera ces commentaires (s'ils sont disponibles) dans la fenêtre d'informations sur le fichier." - -#: audacious-plugins/src/amidi-plug/i_configure-ap.c:358 -msgid "" -"* Extract lyrics from MIDI files *\n" -"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug will extract and display song lyrics (if available) in the file information dialog." -msgstr "" -"* Extraire les paroles des fichiers MIDI *\n" -"Certains fichiers MIDI contiennent les paroles relatives au morceau joué. Si cette option est activée, « AMIDI-Plug » extraira et affichera les paroles (si elles sont disponibles) dans la fenêtre d'informations sur le fichier." - -#: audacious-plugins/src/amidi-plug/i_configure-ap.c:375 +#: src/amidi-plug/i_configure-ap.c:333 msgid "" "AMIDI\n" "Plug" @@ -752,379 +441,430 @@ "AMIDI\n" "Plug" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:52 +#: src/amidi-plug/i_configure.c:76 +msgid "AMIDI-Plug - select file" +msgstr "'AMIDI-Plug' - choix du fichier" + +#: src/amidi-plug/i_configure.c:129 +msgid "AMIDI-Plug - configuration" +msgstr "Configuration du module « AMIDI-Plug »" + +#: src/amidi-plug/i_configure-fluidsynth.c:55 msgid "AMIDI-Plug - select SoundFont file" msgstr "Choix du fichier « SoundFont »" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:268 +#: src/amidi-plug/i_configure-fluidsynth.c:270 msgid "FLUIDSYNTH BACKEND CONFIGURATION" msgstr "CONFIGURATION DU SYSTÈME DE SORTIE « FLUIDSYNTH »" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:316 +#: src/amidi-plug/i_configure-fluidsynth.c:313 msgid "SoundFont settings" msgstr "Paramètres de la banque de sons « SoundFont »" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:348 +#: src/amidi-plug/i_configure-fluidsynth.c:345 msgid "Filename" msgstr "Nom du fichier" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:352 +#: src/amidi-plug/i_configure-fluidsynth.c:349 msgid "Size (bytes)" msgstr "Taille (bytes)" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:401 +#: src/amidi-plug/i_configure-fluidsynth.c:398 msgid "Load SF on player start" msgstr "Charger la banque de sons au démarrage du lecteur" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:405 +#: src/amidi-plug/i_configure-fluidsynth.c:402 msgid "Load SF on first midifile play" msgstr "Charger la banque de sons à la lecture du premier fichier MIDI" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:420 +#: src/amidi-plug/i_configure-fluidsynth.c:417 msgid "Synthesizer settings" msgstr "Paramètres du synthétiseur" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:429 +#: src/amidi-plug/i_configure-fluidsynth.c:426 msgid "gain" msgstr "Gain" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:435 -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:463 -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:491 -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:522 +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 msgid "use default" msgstr "valeur par défaut" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:438 -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:466 +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 msgid "value:" msgstr "valeur :" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:457 +#: src/amidi-plug/i_configure-fluidsynth.c:454 msgid "poliphony" msgstr "Polyphonie" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:485 +#: src/amidi-plug/i_configure-fluidsynth.c:482 msgid "reverb" msgstr "Réverbération" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:494 -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:525 +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 msgid "yes" msgstr "Oui" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:496 -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:527 +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 msgid "no" msgstr "Non" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:516 +#: src/amidi-plug/i_configure-fluidsynth.c:513 msgid "chorus" msgstr "Effet de choeur" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:547 +#: src/amidi-plug/i_configure-fluidsynth.c:544 msgid "sample rate" msgstr "Fréquence d'échantillonnage" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:553 +#: src/amidi-plug/i_configure-fluidsynth.c:550 msgid "22050 Hz " msgstr "22050 Hz" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:556 +#: src/amidi-plug/i_configure-fluidsynth.c:553 msgid "44100 Hz " msgstr "44100 Hz" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:559 +#: src/amidi-plug/i_configure-fluidsynth.c:556 msgid "96000 Hz " msgstr "96000 Hz" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:562 +#: src/amidi-plug/i_configure-fluidsynth.c:559 msgid "custom " msgstr "Autre " -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:571 +#: src/amidi-plug/i_configure-fluidsynth.c:568 msgid "Hz " msgstr "Hz" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:621 -msgid "" -"* Select SoundFont files *\n" -"In order to play MIDI with FluidSynth, you need to specify at least one valid SoundFont file here (use absolute paths). The loading order is from the top (first) to the bottom (last)." +#: src/amidi-plug/i_configure-fluidsynth.c:621 +msgid "FluidSynth Backend not loaded or not available" msgstr "" -"* Sélectionner les fichier « SoundFont » *\n" -"Afin de pouvoir écouter des fichiers MIDI avec « FluidSynth », vous devez spécifier au moins un fichier « SoundFont » valide (veillez à utiliser des chemins absolus). Le chargement s'opère, par ordre, du haut (le premier fichier) vers le bas (le dernier fichier)." +"Le système de sortie « FluidSynth » n'est pas chargé ou n'est pas disponible" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:626 +#: src/amidi-plug/i_configure-fluidsynth.c:640 msgid "" -"* Load SoundFont on player start *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require up to a few seconds. This is a one-time task (the soundfont will stay loaded until it is changed or the backend is unloaded) that can be done at player start, or before the first MIDI file is played (the latter is a better choice if you don't use your player to listen MIDI files only)." +"FluidSynth\n" +"backend" msgstr "" -"* Charger la banque de sons au démarrage du lecteur *\n" -"En fonction de la vitesse de votre système, le chargement du fichier « SoundFont » dans « FluidSynth » peut nécessiter plusieurs secondes. Cette opération, qui ne sera exécutée qu'une fois (la banque de sons restera en mémoire, jusqu'à ce qu'elle soit modifiée ou que le système de sortie ne soit supprimé de la mémoire), peut être accomplie au démarrage du lecteur, ou avant que ne soit lu le premier fichier MIDI (la seconde proposition constitue un meilleur choix, si vous n'utilisez pas le lecteur pour écouter des fichiers MIDI uniquement)." +"Sortie\n" +"'FluidSynth'" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:634 -msgid "" -"* Load SoundFont on first midifile play *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require up to a few seconds. This is a one-time task (the soundfont will stay loaded until it is changed or the backend is unloaded) that can be done at player start, or before the first MIDI file is played (the latter is a better choice if you don't use your player to listen MIDI files only)." -msgstr "" -"* Charger la banque de sons à la lecture du premier fichier MIDI *\n" -"En fonction de la vitesse de votre système, le chargement du fichier « SoundFont » dans « FluidSynth » peut nécessiter plusieurs secondes. Cette opération, qui ne sera exécutée qu'une fois (la banque de sons restera en mémoire, jusqu'à ce qu'elle soit modifiée ou que le système de sortie ne soit supprimé de la mémoire), peut être accomplie au démarrage du lecteur, ou avant que ne soit lu le premier fichier MIDI (la seconde proposition constitue un meilleur choix, si vous n'utilisez pas le lecteur pour écouter des fichiers MIDI uniquement)." +#: src/amidi-plug/i_configure-timidity.c:39 +msgid "TIMIDITY BACKEND CONFIGURATION" +msgstr "CONFIGURATION DU SYSTÈME DE SORTIE « TIMIDITY »" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:642 -msgid "" -"* Synthesizer gain *\n" -"From FluidSynth docs: the gain is applied to the final or master output of the synthesizer; it is set to a low value by default to avoid the saturation of the output when random MIDI files are played." +#: src/amidi-plug/i_configure-timidity.c:64 +msgid "TiMidity Backend not loaded or not available" msgstr "" -"* Gain du synthétiseur *\n" -"Extrait de la documentation de « FluidSynth » (traduction) : « Le gain est appliqué à la sortie finale ou principale du synthétiseur. Par défaut, il est réglé sur une valeur basse, afin d'éviter la saturation de la sortie, lorsque des fichiers MIDI sont lus de manière aléatoire. »" +"Le système de sortie « TiMidity » n'est pas chargé ou n'est pas disponible" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:647 +#: src/amidi-plug/i_configure-timidity.c:83 msgid "" -"* Synthesizer polyphony *\n" -"From FluidSynth docs: the polyphony defines how many voices can be played in parallel; the number of voices is not necessarily equivalent to the number of notes played simultaneously; indeed, when a note is struck on a specific MIDI channel, the preset on that channel may create several voices, for example, one for the left audio channel and one for the right audio channels; the number of voices activated depends on the number of instrument zones that fall in the correspond to the velocity and key of the played note." +"TiMidity\n" +"backend" msgstr "" -"* Polyphonie du synthétiseur *\n" -"Extrait de la documentation de « FluidSynth » (traduction) : « La polyphonie définit le nombre de voix qui peuvent être jouées en parallèle. Le nombre de voix ne correspond pas nécessairement au nombre de notes jouées simultanément. En effet, lorsqu'une note est envoyée à un canal MIDI spécifique, le préréglage de ce canal peut créer plusieurs voix (par exemple, une voix pour le canal audio gauche et une autre pour le canal audio droit). Le nombre de voix activées dépend du nombre de pistes d'instruments relatives à la vélocité et à la tonalité de la note jouée. »" +"Sortie\n" +"'TiMidity'" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:657 -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:663 -msgid "" -"* Synthesizer reverb *\n" -"From FluidSynth docs: when set to \"yes\" the reverb effects module is activated; note that when the reverb module is active, the amount of signal sent to the reverb module depends on the \"reverb send\" generator defined in the SoundFont." -msgstr "" -"* Réverbération du synthétiseur *\n" -"Extrait de la documentation de « FluidSynth » (traduction) : \"Lorsque l'option « Oui » est cochée, le module d'effet de réverbération est activé. Veuillez noter que, lorsque le module de réverbération est actif, la quantité de signaux envoyés au module dépend du générateur d'« envoi de réverbération » défini dans le fichier « SoundFont ».\"" +#: src/amidi-plug/i_fileinfo.c:169 +msgid "Name:" +msgstr "Nom :" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:669 -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:675 -msgid "" -"* Synthesizer chorus *\n" -"From FluidSynth docs: when set to \"yes\" the chorus effects module is activated; note that when the chorus module is active, the amount of signal sent to the chorus module depends on the \"chorus send\" generator defined in the SoundFont." -msgstr "" -"* Effet de choeur du synthétiseur *\n" -"Extrait de la documentation de « FluidSynth » (traduction) : \"Lorsque l'option « Oui » est cochée, le module d'effet de choeur est activé. Veuillez noter que, lorsque le module d'effet de choeur est actif, la quantité de signaux envoyés au module dépend du générateur d'« envoi d'effet de choeur » défini dans le fichier « SoundFont ».\"" +#: src/amidi-plug/i_fileinfo.c:193 +msgid " MIDI Info " +msgstr " Informations sur le fichier MIDI " -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:681 -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:685 -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:689 -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:693 -msgid "" -"* Synthesizer samplerate *\n" -"The sample rate of the audio generated by the synthesizer. You can also specify a custom value in the interval 22050Hz-96000Hz." -msgstr "" -"* Fréquence d'échantillonnage du synthétiseur *\n" -"Cette option définit la fréquence d'échantillonnage du flux audio produit par le synthétiseur. Vous pouvez aussi spécifier une valeur personnalisée, située dans l'intervalle 22050 - 96000 Hz." +#: src/amidi-plug/i_fileinfo.c:205 +msgid "Format:" +msgstr "Format :" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:701 -msgid "FluidSynth Backend not loaded or not available" -msgstr "Le système de sortie « FluidSynth » n'est pas chargé ou n'est pas disponible" +#: src/amidi-plug/i_fileinfo.c:208 +msgid "Length (msec):" +msgstr "Durée (msec) :" -#: audacious-plugins/src/amidi-plug/i_configure-fluidsynth.c:720 -msgid "" -"FluidSynth\n" -"backend" -msgstr "" -"Sortie\n" -"'FluidSynth'" +#: src/amidi-plug/i_fileinfo.c:211 +msgid "Num of Tracks:" +msgstr "Nombre de pistes :" -#: audacious-plugins/src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:41 -msgid "FluidSynth Backend " -msgstr "FluidSynth " +#: src/amidi-plug/i_fileinfo.c:216 +msgid "variable" +msgstr "variable" + +#: src/amidi-plug/i_fileinfo.c:217 +msgid "BPM:" +msgstr "BPM :" + +#: src/amidi-plug/i_fileinfo.c:223 +msgid "BPM (wavg):" +msgstr "BPM (wavg) :" + +#: src/amidi-plug/i_fileinfo.c:226 +msgid "Time Div:" +msgstr "Division du temps :" -#: audacious-plugins/src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:43 +#: src/amidi-plug/i_fileinfo.c:237 +msgid " MIDI Comments and Lyrics " +msgstr " Commentaires et paroles du fichier MIDI " + +#: src/amidi-plug/i_fileinfo.c:288 +msgid "* no comments available in this MIDI file *" +msgstr "* aucun commentaire n'est disponible dans ce fichier MIDI *" + +#: src/amidi-plug/i_fileinfo.c:301 +msgid "* no lyrics available in this MIDI file *" +msgstr "* aucune parole n'est disponible dans ce fichier MIDI" + +#: src/amidi-plug/i_fileinfo.c:349 +msgid " (invalid UTF-8)" +msgstr " (format UTF-8 invalide)" + +#: src/amidi-plug/i_utils.c:43 +msgid "AMIDI-Plug - about" +msgstr "À propos de « AMIDI-Plug »" + +#: src/amidi-plug/i_utils.c:68 msgid "" -"This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" -"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" -"Backend written by Giacomo Lozito." +"\n" +"AMIDI-Plug " msgstr "" -"Ce système de sortie produit des flux audio en envoyant les événements MIDI à « FluidSynth », un synthétiseur logiciel en temps réel conçu à partir des principes de « SoundFont2 » (www.fluidsynth.org).\n" -"Les flux générés peuvent être manipulés grâce aux modules d'effets du lecteur et sont traités par le module de sortie sélectionné.\n" "\n" -"Auteur : Giacomo Lozito." - -#: audacious-plugins/src/amidi-plug/backend-alsa/b-alsa.c:35 -msgid "ALSA Backend " -msgstr "ALSA " +"AMIDI-Plug " -#: audacious-plugins/src/amidi-plug/backend-alsa/b-alsa.c:37 +#: src/amidi-plug/i_utils.c:69 msgid "" -"This backend sends MIDI events to a group of user-chosen ALSA sequencer ports. The ALSA sequencer interface is very versatile, it can provide ports for audio cards hardware synthesizers (i.e. emu10k1) but also for software synths, external devices, etc.\n" -"This backend does not produce audio, MIDI events are handled directly from devices/programs behind the ALSA ports; in example, MIDI events sent to the hardware synth will be directly played.\n" -"Backend written by Giacomo Lozito." +"\n" +"modular MIDI music player\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"\n" +"special thanks to...\n" +"\n" +"Clemens Ladisch and Jaroslav Kysela\n" +"for their cool programs aplaymidi and amixer; those\n" +"were really useful, along with alsa-lib docs, in order\n" +"to learn more about the ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"for the nice midi keyboard logo\n" +"\n" +"Tony Vroon\n" +"for the good help with alpha testing\n" +"\n" msgstr "" -"Ce système envoie les événements MIDI à l'ensemble des ports du séquenceur « ALSA » que l'utilisateur a spécifié. L'interface du séquenceur « ALSA » offre des possibilités variées : elle peut fournir des ports aux synthétiseurs matériels des cartes sons (« emu10k1 », par exemple), mais aussi aux synthétiseurs logiciels, aux périphériques externes, etc.\n" -"Ce système de sortie ne produit pas de flux audio : les événements MIDI sont gérés directement par les périphériques et les applications associés aux ports « ALSA ». Par exemple, les événements MIDI envoyés au synthétiseur matériel seront directement interprétés.\n" "\n" -"Auteur : Giacomo Lozito." +"\n" +"Lecteur de musique « MIDI » modulaire\n" +"\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"Auteur : Giacomo Lozito < james@develia.org >\n" +"\n" +"\n" +"Remerciements particuliers à...\n" +"\n" +"Clemens Ladisch et Jaroslav Kysela\n" +"pour leurs excellents outils « aplaymidi » et « amixer » :\n" +"ces derniers étaient très utiles (en plus de la documentation\n" +"relative à la bibliothèque « ALSA ») pour apprendre\n" +"l'interface de programmation « ALSA ».\n" +"\n" +"Alfredo Spadafina\n" +"pour le beau logo (clavier MIDI).\n" +"\n" +"Tony Vroon\n" +"pour son aide précieuse, lors de la phase alpha.\n" +"\n" + +#: src/aosd/aosd_style.c:75 +msgid "Rectangle" +msgstr "Rectangle" + +#: src/aosd/aosd_style.c:79 +msgid "Rounded Rectangle" +msgstr "Rectangle arrondi" + +#: src/aosd/aosd_style.c:83 +msgid "Concave Rectangle" +msgstr "Rectangle concave" + +#: src/aosd/aosd_style.c:87 +msgid "None" +msgstr "Aucun" -#: audacious-plugins/src/aosd/aosd_trigger.c:77 +#: src/aosd/aosd_trigger.c:78 msgid "Playback Start" msgstr "Début de la lecture" -#: audacious-plugins/src/aosd/aosd_trigger.c:78 +#: src/aosd/aosd_trigger.c:79 msgid "Triggers OSD when a playlist entry is played." -msgstr "Déclenche la fonction « OSD » lorsqu'une entrée de la liste de lecture est lue." +msgstr "" +"Déclenche la fonction « OSD » lorsqu'une entrée de la liste de lecture est " +"lue." -#: audacious-plugins/src/aosd/aosd_trigger.c:82 +#: src/aosd/aosd_trigger.c:83 msgid "Title Change" msgstr "Changement de titre" -#: audacious-plugins/src/aosd/aosd_trigger.c:83 -msgid "Triggers OSD when, during playback, the song title changes but the filename is the same. This is mostly useful to display title changes in internet streams." -msgstr "Déclenche la fonction « OSD » si, pendant la lecture, le titre du morceau change, alors que le nom du fichier est identique. Cette option est particulièrement utile pour afficher le changement de titre des flux Internet." +#: src/aosd/aosd_trigger.c:84 +msgid "" +"Triggers OSD when, during playback, the song title changes but the filename " +"is the same. This is mostly useful to display title changes in internet " +"streams." +msgstr "" +"Déclenche la fonction « OSD » si, pendant la lecture, le titre du morceau " +"change, alors que le nom du fichier est identique. Cette option est " +"particulièrement utile pour afficher le changement de titre des flux " +"Internet." -#: audacious-plugins/src/aosd/aosd_trigger.c:89 +#: src/aosd/aosd_trigger.c:90 msgid "Volume Change" msgstr "Changement de volume" -#: audacious-plugins/src/aosd/aosd_trigger.c:90 +#: src/aosd/aosd_trigger.c:91 msgid "Triggers OSD when volume is changed." msgstr "Déclenche la fonction « OSD » en cas de changement de volume." -#: audacious-plugins/src/aosd/aosd_trigger.c:94 +#: src/aosd/aosd_trigger.c:95 msgid "Pause On" msgstr "Mode « pause » activé" -#: audacious-plugins/src/aosd/aosd_trigger.c:95 +#: src/aosd/aosd_trigger.c:96 msgid "Triggers OSD when playback is paused." -msgstr "Déclenche la fonction « OSD » lorsque la lecture est en mode « pause »." +msgstr "" +"Déclenche la fonction « OSD » lorsque la lecture est en mode « pause »." -#: audacious-plugins/src/aosd/aosd_trigger.c:99 +#: src/aosd/aosd_trigger.c:100 msgid "Pause Off" msgstr "Mode « pause » désactivé" -#: audacious-plugins/src/aosd/aosd_trigger.c:100 +#: src/aosd/aosd_trigger.c:101 msgid "Triggers OSD when playback is unpaused." -msgstr "Déclenche la fonction « OSD » lorsque la lecture n'est plus en mode « pause »." - -#: audacious-plugins/src/aosd/aosd_style.c:75 -msgid "Rectangle" -msgstr "Rectangle" - -#: audacious-plugins/src/aosd/aosd_style.c:79 -msgid "Rounded Rectangle" -msgstr "Rectangle arrondi" - -#: audacious-plugins/src/aosd/aosd_style.c:83 -msgid "Concave Rectangle" -msgstr "Rectangle concave" - -#: audacious-plugins/src/aosd/aosd_style.c:87 -msgid "None" -msgstr "Aucun" +msgstr "" +"Déclenche la fonction « OSD » lorsque la lecture n'est plus en mode « pause " +"»." -#: audacious-plugins/src/aosd/aosd_ui.c:168 +#: src/aosd/aosd_ui.c:179 msgid "Placement" msgstr "Position" -#: audacious-plugins/src/aosd/aosd_ui.c:202 +#: src/aosd/aosd_ui.c:218 msgid "Relative X offset:" msgstr "Décalage horizontal :" -#: audacious-plugins/src/aosd/aosd_ui.c:211 +#: src/aosd/aosd_ui.c:227 msgid "Relative Y offset:" msgstr "Décalage vertical :" -#: audacious-plugins/src/aosd/aosd_ui.c:220 +#: src/aosd/aosd_ui.c:236 msgid "Max OSD width:" msgstr "Largeur maximale :" -#: audacious-plugins/src/aosd/aosd_ui.c:233 +#: src/aosd/aosd_ui.c:249 msgid "Multi-Monitor options" msgstr "Options de l'affichage multiple" -#: audacious-plugins/src/aosd/aosd_ui.c:237 +#: src/aosd/aosd_ui.c:253 msgid "Display OSD using:" msgstr "Afficher OSD sur" -#: audacious-plugins/src/aosd/aosd_ui.c:239 +#: src/aosd/aosd_ui.c:264 msgid "all monitors" msgstr "tous les moniteurs" -#: audacious-plugins/src/aosd/aosd_ui.c:242 +#: src/aosd/aosd_ui.c:267 #, c-format msgid "monitor %i" msgstr "le moniteur %i" -#: audacious-plugins/src/aosd/aosd_ui.c:295 +#: src/aosd/aosd_ui.c:322 msgid "Timing (ms)" msgstr "Durée (ms)" -#: audacious-plugins/src/aosd/aosd_ui.c:300 +#: src/aosd/aosd_ui.c:327 msgid "Display:" msgstr "Affichage :" -#: audacious-plugins/src/aosd/aosd_ui.c:305 +#: src/aosd/aosd_ui.c:332 msgid "Fade in:" msgstr "Fondu d'entrée :" -#: audacious-plugins/src/aosd/aosd_ui.c:310 +#: src/aosd/aosd_ui.c:337 msgid "Fade out:" msgstr "Fondu de sortie :" -#: audacious-plugins/src/aosd/aosd_ui.c:391 +#: src/aosd/aosd_ui.c:418 msgid "Fonts" msgstr "Polices" -#: audacious-plugins/src/aosd/aosd_ui.c:399 +#: src/aosd/aosd_ui.c:426 #, c-format msgid "Font %i:" msgstr "Police %i :" -#: audacious-plugins/src/aosd/aosd_ui.c:416 +#: src/aosd/aosd_ui.c:443 msgid "Shadow" msgstr "Ombre" -#: audacious-plugins/src/aosd/aosd_ui.c:451 +#: src/aosd/aosd_ui.c:478 msgid "Internationalization" msgstr "Internationalisation" -#: audacious-plugins/src/aosd/aosd_ui.c:457 +#: src/aosd/aosd_ui.c:484 msgid "Disable UTF-8 conversion of text (in aosd)" msgstr "Désactiver la conversion UTF-8 du texte (dans le module « aOSD »)" -#: audacious-plugins/src/aosd/aosd_ui.c:475 +#: src/aosd/aosd_ui.c:502 msgid "Select Skin File" msgstr "Choisir un fichier de thème" -#: audacious-plugins/src/aosd/aosd_ui.c:586 +#: src/aosd/aosd_ui.c:613 msgid "Render Style" msgstr "Style du rendu" -#: audacious-plugins/src/aosd/aosd_ui.c:602 +#: src/aosd/aosd_ui.c:629 msgid "Colors" msgstr "Couleurs" -#: audacious-plugins/src/aosd/aosd_ui.c:615 +#: src/aosd/aosd_ui.c:642 #, c-format msgid "Color %i:" msgstr "Couleur %i :" -#: audacious-plugins/src/aosd/aosd_ui.c:635 +#: src/aosd/aosd_ui.c:662 msgid "Custom Skin" msgstr "Thème personnalisé" -#: audacious-plugins/src/aosd/aosd_ui.c:641 +#: src/aosd/aosd_ui.c:668 msgid "Skin file:" msgstr "Fichier du thème" -#: audacious-plugins/src/aosd/aosd_ui.c:644 +#: src/aosd/aosd_ui.c:671 msgid "Browse" msgstr "Parcourir" -#: audacious-plugins/src/aosd/aosd_ui.c:746 +#: src/aosd/aosd_ui.c:773 msgid "Enable trigger" msgstr "Activer le déclencheur" -#: audacious-plugins/src/aosd/aosd_ui.c:773 +#: src/aosd/aosd_ui.c:800 msgid "Event" msgstr "Événement" -#: audacious-plugins/src/aosd/aosd_ui.c:801 +#: src/aosd/aosd_ui.c:828 msgid "Composite manager detected" msgstr "Gestionnaire composite détecté" -#: audacious-plugins/src/aosd/aosd_ui.c:808 +#: src/aosd/aosd_ui.c:835 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite manager otherwise the OSD won't work properly" @@ -1132,72 +872,72 @@ "Aucun gestionnaire composite n'a été détecté. À moins que vous ne soyez certain d'utiliser un tel gestionnaire,\n" "veuillez activer un gestionnaire composite approprié. Sinon, l'affichage « OSD » ne fonctionnera pas correctement." -#: audacious-plugins/src/aosd/aosd_ui.c:816 +#: src/aosd/aosd_ui.c:843 msgid "Composite manager not required for fake transparency" msgstr "La fausse transparence ne nécessite pas de gestionnaire composite." -#: audacious-plugins/src/aosd/aosd_ui.c:854 +#: src/aosd/aosd_ui.c:881 msgid "Transparency" msgstr "Transparence" -#: audacious-plugins/src/aosd/aosd_ui.c:860 +#: src/aosd/aosd_ui.c:887 msgid "Fake transparency" msgstr "Fausse transparence" -#: audacious-plugins/src/aosd/aosd_ui.c:862 +#: src/aosd/aosd_ui.c:889 msgid "Real transparency (requires X Composite Ext.)" msgstr "Véritable transparence (nécessite l'extension « composite » de X)" -#: audacious-plugins/src/aosd/aosd_ui.c:904 +#: src/aosd/aosd_ui.c:931 msgid "Composite extension not loaded" msgstr "L'extension « composite » n'est pas chargée" -#: audacious-plugins/src/aosd/aosd_ui.c:912 +#: src/aosd/aosd_ui.c:939 msgid "Composite extension not available" msgstr "L'extension « composite » n'est pas disponible" -#: audacious-plugins/src/aosd/aosd_ui.c:931 +#: src/aosd/aosd_ui.c:958 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: audacious-plugins/src/aosd/aosd_ui.c:1012 +#: src/aosd/aosd_ui.c:1039 msgid "Audacious OSD - configuration" msgstr "Configuration du module « Audacious OSD »" -#: audacious-plugins/src/aosd/aosd_ui.c:1033 +#: src/aosd/aosd_ui.c:1060 msgid "Test" msgstr "Essai" -#: audacious-plugins/src/aosd/aosd_ui.c:1048 +#: src/aosd/aosd_ui.c:1075 msgid "Position" msgstr "Arrangement" -#: audacious-plugins/src/aosd/aosd_ui.c:1053 +#: src/aosd/aosd_ui.c:1080 msgid "Animation" msgstr "Animation" -#: audacious-plugins/src/aosd/aosd_ui.c:1058 +#: src/aosd/aosd_ui.c:1085 msgid "Text" msgstr "Texte" -#: audacious-plugins/src/aosd/aosd_ui.c:1063 +#: src/aosd/aosd_ui.c:1090 msgid "Decoration" msgstr "Décoration" -#: audacious-plugins/src/aosd/aosd_ui.c:1068 +#: src/aosd/aosd_ui.c:1095 msgid "Trigger" msgstr "Déclenchement" -#: audacious-plugins/src/aosd/aosd_ui.c:1073 +#: src/aosd/aosd_ui.c:1100 src/cdaudio-ng/configure.c:171 msgid "Misc" msgstr "Options diverses" -#: audacious-plugins/src/aosd/aosd_ui.c:1110 +#: src/aosd/aosd_ui.c:1137 msgid "Audacious OSD - about" msgstr "À propos du module « OSD » pour Audacious" -#: audacious-plugins/src/aosd/aosd_ui.c:1140 +#: src/aosd/aosd_ui.c:1167 msgid "" "\n" "Audacious OSD " @@ -1205,7 +945,7 @@ "\n" "Module « OSD » pour Audacious " -#: audacious-plugins/src/aosd/aosd_ui.c:1141 +#: src/aosd/aosd_ui.c:1168 msgid "" "\n" "http://www.develia.org/projects.php?p=audacious#aosd\n" @@ -1227,156 +967,35 @@ "\n" "http://neugierig.org/software/ghosd/\n" -#: audacious-plugins/src/bluetooth/scan_gui.c:69 -msgid "Bonding finish!" -msgstr "Liaison terminée !" - -#: audacious-plugins/src/bluetooth/scan_gui.c:76 -msgid "No devices found!" -msgstr "Aucun accessoire détecté !" - -#: audacious-plugins/src/bluetooth/scan_gui.c:119 -msgid "Scanning..." -msgstr "Détection..." - -#: audacious-plugins/src/bluetooth/scan_gui.c:122 -msgid "Pairing..." -msgstr "Processus de connexion couplée..." - -#: audacious-plugins/src/bluetooth/scan_gui.c:138 -msgid "Rescan" -msgstr "Redétecter" - -#: audacious-plugins/src/bluetooth/scan_gui.c:142 -msgid "Play" -msgstr "Lecture" - -#: audacious-plugins/src/bluetooth/bluetooth.c:117 -msgid "Bluetooth headset support plugin" -msgstr "Module de gestion des périphériques audio « Bluetooth »" - -#: audacious-plugins/src/bluetooth/bluetooth.c:118 -msgid "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" -msgstr "" -"Module de gestion des périphériques audio « Bluetooth »\n" -"Droits d'utilisation : Paula Stanciu paula.stanciu@gmail.com (2008)\n" -"\n" -"Ce projet est issu du « GSoC 2008 ».\n" -"Remerciements cordiaux à mon conseiller Tony Vroon et à l'équipe d'Audacious.\n" -"\n" -"Afin de pouvoir utiliser le mode « AVRCP », le module d'entrée correspondant doit\n" -"être chargé dans le noyau.\n" -"\n" -"Les boutons du périphérique audio seront reconnus comme des touches multimédia\n" -"et pourront être configurés grâce au module « Global Hotkey » d'Audacious ou\n" -"aux outils que propose le gestionnaire de fenêtres de votre système.\n" - -#: audacious-plugins/src/bluetooth/agent.c:356 -#: audacious-plugins/src/bluetooth/agent.c:397 -#, c-format -msgid "Pairing request for '%s'" -msgstr "Demande de connexion couplée pour \"%s\"" - -#: audacious-plugins/src/bluetooth/agent.c:544 -#, c-format -msgid "Authorization request for %s" -msgstr "Demande d'autorisation pour \"%s\"" - -#: audacious-plugins/src/bluetooth/agent.c:728 -#, c-format -msgid "Created bonding with %s" -msgstr "Une liaison avec \"%s\" a été créée." - -#: audacious-plugins/src/bluetooth/agent.c:756 -#, c-format -msgid "Removed bonding with %s" -msgstr "La liaison avec \"%s\" a été supprimée." - -#: audacious-plugins/src/bluetooth/agent.c:808 -msgid "Device has been switched off" -msgstr "Le périphérique a été éteint." - -#: audacious-plugins/src/bluetooth/agent.c:811 -msgid "Device has been made non-discoverable" -msgstr "Le périphérique est maintenant en mode « privé »." - -#: audacious-plugins/src/bluetooth/agent.c:813 -msgid "Device has been made connectable" -msgstr "Le périphérique peut maintenant initier une connexion." - -#: audacious-plugins/src/bluetooth/agent.c:815 -msgid "Device has been made discoverable" -msgstr "Le périphérique est maintenant en mode « public »." - -#: audacious-plugins/src/bluetooth/agent.c:817 -msgid "Device has been made limited discoverable" -msgstr "Le périphérique est maintenant en mode « public limité »." - -#: audacious-plugins/src/bluetooth/agent.c:819 -msgid "Device has been switched into pairing mode" -msgstr "Le périphérique est entré en mode « connexion couplée »." - -#: audacious-plugins/src/bluetooth/gui.c:148 -msgid "Producer" -msgstr "Fabricant" - -#: audacious-plugins/src/bluetooth/gui.c:221 -msgid "Available Headsets" -msgstr "Casques/écouteurs disponibles" - -#: audacious-plugins/src/bluetooth/gui.c:224 -msgid "Current Headset" -msgstr "Casque/accessoire actuel" - -#: audacious-plugins/src/bluetooth/gui.c:227 -msgid "_Refresh" -msgstr "_Réactualiser" - -#: audacious-plugins/src/bluetooth/gui.c:231 -msgid "_Connect" -msgstr "_Connecter" - -#: audacious-plugins/src/bluetooth/gui.c:237 -msgid "_Close" -msgstr "_Fermer" - -#: audacious-plugins/src/bluetooth/gui.c:274 -msgid "Class" -msgstr "Classe" - -#: audacious-plugins/src/bluetooth/gui.c:278 -msgid "Address:" -msgstr "Adresse :" - -#: audacious-plugins/src/blur_scope/config.c:73 +#: src/blur_scope/config.c:73 msgid "Blur Scope: Color selection" msgstr "Module « Blur Scope » : sélection de la couleur" -#: audacious-plugins/src/blur_scope/config.c:83 +#: src/blur_scope/config.c:83 src/jack/configure.c:106 msgid "Options:" msgstr "Options :" -#: audacious-plugins/src/cd-menu-items/cd-menu-items.c:35 -msgid "Play CD" -msgstr "Lire les pistes du CD" +#: src/bs2b/plugin.c:157 +msgid "Bauer stereophonic-to-binaural Preferences" +msgstr "" -#: audacious-plugins/src/cd-menu-items/cd-menu-items.c:35 -msgid "Add CD" -msgstr "Ajouter les pistes du CD" +#: src/bs2b/plugin.c:168 +msgid "Feed level:" +msgstr "" + +#: src/bs2b/plugin.c:182 +msgid "Cut frequency:" +msgstr "" + +#: src/bs2b/plugin.c:196 +msgid "Presets:" +msgstr "" -#: audacious-plugins/src/cdaudio-ng/cdaudio-ng.c:278 +#: src/cdaudio-ng/cdaudio-ng.c:242 msgid "About Audio CD Plugin" msgstr "À propos du module « CD Audio »" -#: audacious-plugins/src/cdaudio-ng/cdaudio-ng.c:279 +#: src/cdaudio-ng/cdaudio-ng.c:243 msgid "" "Copyright (c) 2007, by Calin Crisan and The Audacious Team.\n" "\n" @@ -1405,176 +1024,200 @@ "\n" "Droits d'utilisation (2009) : John Lindgren" -#: audacious-plugins/src/cdaudio-ng/configure.c:155 +#: src/cdaudio-ng/cdaudio-ng.c:552 +msgid "Audio CD" +msgstr "CD audio" + +#: src/cdaudio-ng/cdaudio-ng.c:924 +msgid "Drive is empty." +msgstr "Le lecteur est vide" + +#: src/cdaudio-ng/cdaudio-ng.c:926 +msgid "Unsupported disk type." +msgstr "Type de disque non supporté" + +#: src/cdaudio-ng/configure.c:148 msgid "CD Audio Plugin Configuration" msgstr "Configuration du module « CD Audio »" -#: audacious-plugins/src/cdaudio-ng/configure.c:167 +#: src/cdaudio-ng/configure.c:160 msgid "Digital audio extraction" msgstr "Extraction audio digitale" -#: audacious-plugins/src/cdaudio-ng/configure.c:172 +#: src/cdaudio-ng/configure.c:165 msgid "Title information" msgstr "Informations sur le titre" -#: audacious-plugins/src/cdaudio-ng/configure.c:190 +#: src/cdaudio-ng/configure.c:176 msgid "Disc speed:" msgstr "Vitesse du disque :" -#: audacious-plugins/src/cdaudio-ng/configure.c:198 +#: src/cdaudio-ng/configure.c:184 msgid "Use cd-text if available" msgstr "Utiliser « CD-TEXT », si la fonction est disponible" -#: audacious-plugins/src/cdaudio-ng/configure.c:205 +#: src/cdaudio-ng/configure.c:191 msgid "Use CDDB if available" msgstr "Utiliser « CDDB », si le service est disponible" -#: audacious-plugins/src/cdaudio-ng/configure.c:211 +#: src/cdaudio-ng/configure.c:197 msgid "Server: " msgstr "Serveur : " -#: audacious-plugins/src/cdaudio-ng/configure.c:215 +#: src/cdaudio-ng/configure.c:201 msgid "Path: " msgstr "Chemin : " -#: audacious-plugins/src/cdaudio-ng/configure.c:219 +#: src/cdaudio-ng/configure.c:205 msgid "Port: " msgstr "Port : " -#: audacious-plugins/src/cdaudio-ng/configure.c:232 +#: src/cdaudio-ng/configure.c:218 msgid "Use HTTP instead of CDDBP" msgstr "Utiliser « HTTP » à la place de « CDDB »" -#: audacious-plugins/src/cdaudio-ng/configure.c:244 +#: src/cdaudio-ng/configure.c:230 msgid "Override default device: " msgstr "Remplacer le périphérique par défaut : " -#: audacious-plugins/src/cdaudio-ng/configure.c:258 +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:123 +#: src/echo_plugin/gui.c:118 src/jack/configure.c:141 src/null/null.c:107 +#: src/stereo_plugin/stereo.c:118 msgid "Ok" msgstr "OK" -#: audacious-plugins/src/compressor/plugin.c:58 +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Play CD" +msgstr "Lire les pistes du CD" + +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Add CD" +msgstr "Ajouter les pistes du CD" + +#: src/compressor/plugin.c:63 msgid "About Dynamic Range Compression Plugin" msgstr "À propos du module « Dynamic Range Compression »" -#: audacious-plugins/src/compressor/plugin.c:91 +#: src/compressor/plugin.c:95 msgid "Dynamic Range Compressor Preferences" msgstr "Préférences du module « Dynamic Range Compressor »" -#: audacious-plugins/src/compressor/plugin.c:103 -msgid "Target volume:" -msgstr "Volume cible :" - -#: audacious-plugins/src/compressor/plugin.c:116 -msgid "Effect strength:" -msgstr "Intensité de l'effet :" - -#: audacious-plugins/src/console/plugin.c:33 -msgid "About the Game Console Music Decoder" -msgstr "À propos de « Game Console Music Decoder »" +#: src/compressor/plugin.c:107 +msgid "Center volume:" +msgstr "" -#: audacious-plugins/src/console/plugin.c:34 -msgid "" -"Console music decoder engine based on Game_Music_Emu 0.5.2.\n" -"Supported formats: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" -"Audacious implementation by: William Pitcock , \n" -" Shay Green \n" +#: src/compressor/plugin.c:120 +msgid "Dynamic range:" msgstr "" -"Le moteur de « Console Music Decoder » a été conçu à partir de « Game_Music_Emu 0.5.2 ».\n" -"\n" -"Formats supportés : AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" -"\n" -"Support pour Audacious par :\n" -"\n" -"William Pitcock \n" -"Shay Green \n" -#: audacious-plugins/src/console/configure.c:137 +#: src/console/configure.c:136 msgid "Game Console Music Decoder" msgstr "Décodeur « Game Console Music »" -#: audacious-plugins/src/console/configure.c:154 +#: src/console/configure.c:153 msgid "General" msgstr "Général" -#: audacious-plugins/src/console/configure.c:156 +#: src/console/configure.c:155 src/skins/ui_manager.c:176 msgid "Playback" msgstr "Lecture" -#: audacious-plugins/src/console/configure.c:171 +#: src/console/configure.c:170 msgid "Bass:" msgstr "Basses :" -#: audacious-plugins/src/console/configure.c:175 -#: audacious-plugins/src/console/configure.c:186 -#: audacious-plugins/src/console/configure.c:207 +#: src/console/configure.c:174 src/console/configure.c:185 +#: src/console/configure.c:206 msgid "secs" msgstr "secondes" -#: audacious-plugins/src/console/configure.c:182 +#: src/console/configure.c:181 msgid "Treble:" msgstr "Aiguës :" -#: audacious-plugins/src/console/configure.c:203 +#: src/console/configure.c:202 msgid "Default song length:" msgstr "Durée par défaut :" -#: audacious-plugins/src/console/configure.c:209 +#: src/console/configure.c:208 msgid "Resampling" msgstr "Rééchantillonnage" -#: audacious-plugins/src/console/configure.c:215 +#: src/console/configure.c:214 msgid "Enable audio resampling" msgstr "Activer le rééchantillonnage" -#: audacious-plugins/src/console/configure.c:230 +#: src/console/configure.c:229 msgid "Resampling rate:" msgstr "Fréquence de rééchantillonnage" -#: audacious-plugins/src/console/configure.c:234 +#: src/console/configure.c:233 msgid "Hz" msgstr "Hz" -#: audacious-plugins/src/console/configure.c:245 +#: src/console/configure.c:244 msgid "SPC" msgstr "SPC" -#: audacious-plugins/src/console/configure.c:246 +#: src/console/configure.c:245 msgid "Ignore length from SPC tags" msgstr "Ignorer les métadonnées SPC relatives à la durée" -#: audacious-plugins/src/console/configure.c:247 +#: src/console/configure.c:246 msgid "Increase reverb" msgstr "Augmenter la réverbération" -#: audacious-plugins/src/console/configure.c:272 -msgid "The default song length, expressed in seconds, is used for songs that do not provide length information (i.e. looping tracks)." +#: src/console/configure.c:271 +msgid "" +"The default song length, expressed in seconds, is used for songs that do not" +" provide length information (i.e. looping tracks)." msgstr "" "* Durée par défaut *\n" "La durée par défaut, exprimée en secondes, est utilisée pour les morceaux qui ne disposent pas d'informations quant à leur durée (les pistes en boucle, par exemple)." -#: audacious-plugins/src/crossfade/plugin.c:51 +#: src/console/plugin.c:33 +msgid "About the Game Console Music Decoder" +msgstr "À propos de « Game Console Music Decoder »" + +#: src/console/plugin.c:34 +msgid "" +"Console music decoder engine based on Game_Music_Emu 0.5.2.\n" +"Supported formats: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Audacious implementation by: William Pitcock , \n" +" Shay Green \n" +msgstr "" +"Le moteur de « Console Music Decoder » a été conçu à partir de « Game_Music_Emu 0.5.2 ».\n" +"\n" +"Formats supportés : AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"\n" +"Support pour Audacious par :\n" +"\n" +"William Pitcock \n" +"Shay Green \n" + +#: src/crossfade/plugin.c:60 msgid "About Crossfade" msgstr "À propos du module « Crossfade »" -#: audacious-plugins/src/crossfade/plugin.c:84 +#: src/crossfade/plugin.c:92 msgid "Crossfade Preferences" msgstr "Préférences du module « Crossfade »" -#: audacious-plugins/src/crossfade/plugin.c:95 +#: src/crossfade/plugin.c:104 msgid "Overlap (in seconds):" msgstr "Chevauchement (en secondes) :" -#: audacious-plugins/src/crossfade/plugin.c:129 -#: audacious-plugins/src/crossfade/plugin.c:137 +#: src/crossfade/plugin.c:135 src/crossfade/plugin.c:141 msgid "Crossfade Error" msgstr "Erreur du module « Crossfade »" -#: audacious-plugins/src/crossfade/plugin.c:130 -msgid "Crossfading failed because the songs had a different number of channels." -msgstr "Le fondu a échoué, parce que les morceaux ont un nombre de voies différent." +#: src/crossfade/plugin.c:135 +msgid "" +"Crossfading failed because the songs had a different number of channels." +msgstr "" +"Le fondu a échoué, parce que les morceaux ont un nombre de voies différent." -#: audacious-plugins/src/crossfade/plugin.c:138 +#: src/crossfade/plugin.c:143 msgid "" "Crossfading failed because the songs had different sample rates.\n" "\n" @@ -1583,20 +1226,20 @@ "Le fondu enchaîné a échoué, parce que les morceaux ont une fréquence d'échantillonnage différente.\n" "Vous pouvez utiliser l'effet « Sample Rate Converter » pour rééchantillonner les titres à la même fréquence." -#: audacious-plugins/src/crystalizer/crystalizer.c:104 +#: src/crystalizer/crystalizer.c:100 msgid "Configure Crystalizer" msgstr "Configuration de « Crystalizer »" -#: audacious-plugins/src/crystalizer/crystalizer.c:106 +#: src/crystalizer/crystalizer.c:102 src/stereo_plugin/stereo.c:97 msgid "Effect intensity:" msgstr "Intensité de l'effet :" -#: audacious-plugins/src/crystalizer/crystalizer.c:143 -#: audacious-plugins/src/echo_plugin/gui.c:137 +#: src/crystalizer/crystalizer.c:136 src/echo_plugin/gui.c:131 +#: src/stereo_plugin/stereo.c:131 msgid "Apply" msgstr "Appliquer" -#: audacious-plugins/src/echo_plugin/gui.c:14 +#: src/echo_plugin/gui.c:15 msgid "" "Echo Plugin\n" "By Johan Levin 1999.\n" @@ -1609,659 +1252,251 @@ "\n" "« Surround echo » est écrit par Carl van Schaik (1999)" -#: audacious-plugins/src/echo_plugin/gui.c:26 +#: src/echo_plugin/gui.c:27 msgid "About Echo Plugin" msgstr "À propos du module « Écho »" -#: audacious-plugins/src/echo_plugin/gui.c:69 +#: src/echo_plugin/gui.c:67 msgid "Configure Echo" msgstr "Configuration du module « Écho »" -#: audacious-plugins/src/echo_plugin/gui.c:82 +#: src/echo_plugin/gui.c:83 msgid "Delay: (ms)" msgstr "Délai : (ms)" -#: audacious-plugins/src/echo_plugin/gui.c:87 +#: src/echo_plugin/gui.c:88 msgid "Feedback: (%)" msgstr "Retour : (%)" -#: audacious-plugins/src/echo_plugin/gui.c:92 +#: src/echo_plugin/gui.c:93 msgid "Volume: (%)" msgstr "Volume : (%)" -#: audacious-plugins/src/evdev-plug/ed_internals.c:94 +#: src/ffaudio/ffaudio-core.c:725 #, c-format -msgid "event-device-plugin: unable to open device file %s , skipping this device; check that the file exists and that you have read permission for it\n" -msgstr "Module « Event-Device » : impossible d'ouvrir le fichier de périphérique %s ; le périphérique sera ignoré...Veuillez vérifier que le fichier existe et que disposez des permissions de lecture requises.\n" +msgid "" +"Multi-format audio decoding plugin for Audacious based on\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious plugin by:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" +msgstr "" -#: audacious-plugins/src/evdev-plug/ed_internals.c:103 -#, c-format -msgid "event-device-plugin: unable to create a io_channel for device file %s ,skipping this device\n" -msgstr "Module « Event-Device » : impossible de créer un canal 'io' pour le fichier de périphérique %s ; le périphérique sera ignoré...\n" +#: src/ffaudio/ffaudio-core.c:739 +msgid "About FFaudio Plugin" +msgstr "À propos du module « FFaudio »" -#: audacious-plugins/src/evdev-plug/ed_internals.c:342 -msgid "event-device-plugin: unable to open /proc/bus/input/devices , automatic detection of event devices won't work.\n" -msgstr "Module « Event-Device » : impossible d'ouvrir \"/proc/bus/input/devices\" ; la détection automatique des périphériques échouera...\n" - -#: audacious-plugins/src/evdev-plug/ed_internals.c:351 -msgid "event-device-plugin: unable to open a io_channel for /proc/bus/input/devices , automatic detection of event devices won't work.\n" -msgstr "Module « Event-Device » : impossible de créer un canal 'io' pour \"/proc/bus/input/devices\" ; la détection automatique des périphériques échouera...\n" - -#: audacious-plugins/src/evdev-plug/ed_internals.c:361 -msgid "event-device-plugin: an error occurred while reading /proc/bus/input/devices , automatic detection of event devices won't work.\n" -msgstr "Module « Event-Device » : une erreur s'est produite lors de lecture de \"/proc/bus/input/devices\" ; la détection automatique des périphériques échouera...\n" +#: src/filewriter/filewriter.c:166 +msgid "About FileWriter-Plugin" +msgstr "À propos du module « FileWriter »" -#: audacious-plugins/src/evdev-plug/ed_internals.c:424 -#, c-format -msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" -msgstr "Module « Event-Device » : le périphérique %s n'a pas été trouvé dans \"/dev/input\" ; le périphérique sera ignoré...\n" +#: src/filewriter/filewriter.c:461 +msgid "File Writer Configuration" +msgstr "Configuration du module « File Writer »" -#: audacious-plugins/src/evdev-plug/ed_internals.c:489 -#: audacious-plugins/src/evdev-plug/ed_internals.c:583 -#, c-format -msgid "event-device-plugin: unable to load config file %s , default settings will be used.\n" -msgstr "Module « Event-Device » : impossible de charger le fichier de configuration %s ; les paramètres par défaut seront utilisés...\n" +#: src/filewriter/filewriter.c:473 +msgid "Output file format:" +msgstr "Format du fichier de sortie :" -#: audacious-plugins/src/evdev-plug/ed_internals.c:535 -#, c-format -msgid "event-device-plugin: incomplete information in config file for device \"%s\" , skipping.\n" -msgstr "Module « Event-Device » : information incomplète au sujet du périphérique \"%s\" ; le périphérique sera ignoré...\n" +#: src/filewriter/filewriter.c:491 +msgid "Configure" +msgstr "Configurer" -#: audacious-plugins/src/evdev-plug/ed_internals.c:604 -#: audacious-plugins/src/evdev-plug/ed_internals.c:936 -#, c-format -msgid "event-device-plugin: configuration, unable to get is_active value for device \"%s\", skipping it.\n" -msgstr "Configuration du module « Event-Device » : impossible d'obtenir la valeur de 'is_active' dans le fichier de configuration pour le périphérique \"%s\" ; le périphérique sera ignoré...\n" +#: src/filewriter/filewriter.c:506 +msgid "Save into original directory" +msgstr "Enregistrer dans le répertoire d'origine" -#: audacious-plugins/src/evdev-plug/ed_internals.c:840 -#, c-format -msgid "event-device-plugin: unable to access local directory %s , settings will not be saved.\n" -msgstr "Module « Event-Device » : impossible d'accéder au dossier local %s ; les paramètres ne seront pas enregistrés...\n" +#: src/filewriter/filewriter.c:511 +msgid "Save into custom directory" +msgstr "Enregistrer dans un répertoire personnel" -#: audacious-plugins/src/evdev-plug/ed_internals.c:890 -#, c-format -msgid "event-device-plugin: configuration, unable to get filename value for device \"%s\", skipping it.\n" -msgstr "Configuration du module « Event-Device » : impossible d'obtenir, dans le fichier de configuration, le nom du fichier du périphérique \"%s\" ;le périphérique sera ignoré...\n" +#: src/filewriter/filewriter.c:521 +msgid "Output file folder:" +msgstr "Dossier de destination :" -#: audacious-plugins/src/evdev-plug/ed_internals.c:906 -#, c-format -msgid "event-device-plugin: configuration, unable to get phys value for device \"%s\", skipping it.\n" -msgstr "Configuration du module « Event-Device » : impossible d'obtenir la valeur physique du périphérique \"%s\" ; opération ignorée.\n" +#: src/filewriter/filewriter.c:525 +msgid "Pick a folder" +msgstr "Choix d'un répertoire" -#: audacious-plugins/src/evdev-plug/ed_internals.c:922 -#, c-format -msgid "event-device-plugin: configuration, unable to get is_custom value for device \"%s\", skipping it.\n" -msgstr "Configuration du module « Event-Device » : impossible d'obtenir la valeur \"is_custom\" pour le périphérique \"%s\" ; opération ignorée.\n" +#: src/filewriter/filewriter.c:544 +msgid "Get filename from:" +msgstr "Déterminer le nom du fichier à partir :" -#: audacious-plugins/src/evdev-plug/ed_internals.c:946 -#, c-format -msgid "event-device-plugin: configuration, unexpected value for device \"%s\", skipping it.\n" -msgstr "Configuration du module « Event-Device » : valeur inattendue pour le périphérique \"%s\" ; opération ignorée.\n" - -#: audacious-plugins/src/evdev-plug/ed.c:60 -msgid "Playback->Play" -msgstr "Lecture -> Lire" - -#: audacious-plugins/src/evdev-plug/ed.c:61 -msgid "Playback->Stop" -msgstr "Lecture -> Arrêter" - -#: audacious-plugins/src/evdev-plug/ed.c:62 -msgid "Playback->Pause" -msgstr "Lecture -> Pause" - -#: audacious-plugins/src/evdev-plug/ed.c:63 -msgid "Playback->Prev" -msgstr "Lecture -> Précédent" - -#: audacious-plugins/src/evdev-plug/ed.c:64 -msgid "Playback->Next" -msgstr "Lecture -> Suivant" - -#: audacious-plugins/src/evdev-plug/ed.c:65 -msgid "Playback->Eject" -msgstr "Lecture -> Éjecter" - -#: audacious-plugins/src/evdev-plug/ed.c:67 -msgid "Playlist->Repeat" -msgstr "Liste de lecture -> Répéter" - -#: audacious-plugins/src/evdev-plug/ed.c:68 -msgid "Playlist->Shuffle" -msgstr "Liste de lecture -> Aléatoire" - -#: audacious-plugins/src/evdev-plug/ed.c:70 -msgid "Volume->Up_5" -msgstr "Volume -> Augmenter de 5" - -#: audacious-plugins/src/evdev-plug/ed.c:71 -msgid "Volume->Down_5" -msgstr "Volume -> Diminuer de 5" - -#: audacious-plugins/src/evdev-plug/ed.c:72 -msgid "Volume->Up_10" -msgstr "Volume -> Augmenter de 10" - -#: audacious-plugins/src/evdev-plug/ed.c:73 -msgid "Volume->Down_10" -msgstr "Volume -> Diminuer de 10" - -#: audacious-plugins/src/evdev-plug/ed.c:74 -msgid "Volume->Mute" -msgstr "Volume -> Couper" - -#: audacious-plugins/src/evdev-plug/ed.c:76 -msgid "Window->Main" -msgstr "Fenêtre -> Principale" - -#: audacious-plugins/src/evdev-plug/ed.c:77 -msgid "Window->Playlist" -msgstr "Fenêtre -> Liste de lecture" - -#: audacious-plugins/src/evdev-plug/ed.c:78 -msgid "Window->Equalizer" -msgstr "Fenêtre -> Égaliseur" - -#: audacious-plugins/src/evdev-plug/ed.c:79 -msgid "Window->JumpToFile" -msgstr "Fenêtre -> Aller au titre..." - -#: audacious-plugins/src/evdev-plug/ed_ui.c:212 -msgid "Detected" -msgstr "Détecté" - -#: audacious-plugins/src/evdev-plug/ed_ui.c:217 -msgid "Custom" -msgstr "Personnalisé" - -#: audacious-plugins/src/evdev-plug/ed_ui.c:223 -msgid "Not Detected" -msgstr "Non détécté" - -#: audacious-plugins/src/evdev-plug/ed_ui.c:275 -#: audacious-plugins/src/evdev-plug/ed_ui.c:411 -#: audacious-plugins/src/evdev-plug/ed_ui.c:874 -msgid "Information" -msgstr "Informations" - -#: audacious-plugins/src/evdev-plug/ed_ui.c:276 -msgid "" -"Cannot open bindings window for a not-detected device.\n" -"Ensure that the device has been correctly plugged in." -msgstr "" -"Il n'est pas possible d'ouvrir la fenêtre des associations pour un périphérique qui n'a pas été détecté.\n" -"Veuillez vous assurer que le périphérique a été correctement branché." - -#: audacious-plugins/src/evdev-plug/ed_ui.c:319 -msgid "Error" -msgstr "Erreur" - -#: audacious-plugins/src/evdev-plug/ed_ui.c:320 -msgid "" -"Unable to open selected device.\n" -"Please check read permissions on device file." -msgstr "" -"Impossible d'ouvrir le périphérique sélectionné.\n" -"Veuillez vérifier les permissions de lecture du fichier du périphérique." - -#: audacious-plugins/src/evdev-plug/ed_ui.c:341 -msgid "EvDev-Plug - Add custom device" -msgstr "Ajouter un périphérique personnalisé" - -#: audacious-plugins/src/evdev-plug/ed_ui.c:353 -msgid "" -"EvDev-Plug tries to automatically detect and update information about\n" -"event devices available on the system.\n" -"However, if auto-detect doesn't work for your system, or you have event\n" -"devices in a non-standard location (currently they're only searched in\n" -"/dev/input/ ), you may want to add a custom device, explicitly specifying\n" -"name and device file." -msgstr "" -"« EvDev-Plug » essaye de détecter et de mettre à jour automatiquement\n" -"les informations concernant les périphériques disponibles sur le système.\n" -"Toutefois, si la détection automatique ne fonctionne pas pour votre\n" -"système ou si les périphériques ne sont pas installés dans un emplacement\n" -"standard, vous pouvez ajouter un périphérique personnalisé, en spécifiant\n" -"de manière précise le nom et le fichier du périphérique." - -#: audacious-plugins/src/evdev-plug/ed_ui.c:361 -msgid "Device name:" -msgstr "Nom du périphérique :" - -#: audacious-plugins/src/evdev-plug/ed_ui.c:365 -msgid "Device file:" -msgstr "Fichier du périphérique :" - -#: audacious-plugins/src/evdev-plug/ed_ui.c:404 -msgid "(custom)" -msgstr "(personnalisée)" - -#: audacious-plugins/src/evdev-plug/ed_ui.c:412 -msgid "" -"Please specify both name and filename.\n" -"Filename must be specified with absolute path." -msgstr "" -"Veuillez spécifier à la fois le nom du périphérique et le nom du fichier.\n" -"\n" -"Le nom du fichier doit être déterminé par le chemin absolu." - -#: audacious-plugins/src/evdev-plug/ed_ui.c:447 -msgid "Do you want to remove the existing configuration for selected device?\n" -msgstr "Voulez-vous supprimer la configuration du périphérique sélectionné ?\n" - -#: audacious-plugins/src/evdev-plug/ed_ui.c:466 -msgid "Do you want to remove the selected custom device?\n" -msgstr "Voulez-vous supprimer le périphérique personnalisé sélectionné ?\n" - -#: audacious-plugins/src/evdev-plug/ed_ui.c:612 -msgid "EvDev-Plug - Configuration" -msgstr "Configuration du module « EvDev-Plug »" - -#: audacious-plugins/src/evdev-plug/ed_ui.c:651 -msgid "Active" -msgstr "Actif" - -#: audacious-plugins/src/evdev-plug/ed_ui.c:655 -msgid "Status" -msgstr "État" - -#: audacious-plugins/src/evdev-plug/ed_ui.c:664 -msgid "Device Name" -msgstr "Nom du périphérique" - -#: audacious-plugins/src/evdev-plug/ed_ui.c:668 -msgid "Device File" -msgstr "Fichier du périphérique" - -#: audacious-plugins/src/evdev-plug/ed_ui.c:672 -msgid "Device Address" -msgstr "Adresse du périphérique" - -#: audacious-plugins/src/evdev-plug/ed_ui.c:689 -msgid "_Bindings" -msgstr "_Associations" - -#: audacious-plugins/src/evdev-plug/ed_ui.c:838 -msgid "" -"Press a key of your device to bind it;\n" -"if no key is pressed in five seconds, this window\n" -"will close without binding changes." -msgstr "" -"Appuyez sur une touche de votre périphérique pour l'associer.\n" -"Si aucune touche n'a été pressée avant cinq secondes, cette\n" -"fenêtre sera fermée et aucun changement ne sera effectué." - -#: audacious-plugins/src/evdev-plug/ed_ui.c:875 -msgid "" -"This input event has been already assigned.\n" -"\n" -"It's not possible to assign multiple actions to the same input event (although it's possible to assign the same action to multiple events)." -msgstr "" -"Cet événement a déjà été assigné.\n" -"\n" -"Il n'est pas possible d'associer des plusieurs actions au même événement (cepndant, il est possible d'attribuer la même action à plusieurs événements)." - -#: audacious-plugins/src/evdev-plug/ed_ui.c:1323 -msgid "EvDev-Plug - Bindings Configuration" -msgstr "Configuration des associations" +#: src/filewriter/filewriter.c:547 +msgid "original file tags" +msgstr "des métadonnées du fichier d'origine" -#: audacious-plugins/src/evdev-plug/ed_ui.c:1363 -msgid "Name: " -msgstr "Nom : " +#: src/filewriter/filewriter.c:553 +msgid "original filename" +msgstr "du nom du fichier d'origine" -#: audacious-plugins/src/evdev-plug/ed_ui.c:1372 -msgid "Filename: " -msgstr "Nom du fichier : " +#: src/filewriter/filewriter.c:563 +msgid "Don't strip file name extension" +msgstr "Conserver l'extension du nom de fichier" -#: audacious-plugins/src/evdev-plug/ed_ui.c:1381 -msgid "Phys.Address: " -msgstr "Adresse physique : " +#: src/filewriter/filewriter.c:578 +msgid "Prepend track number to filename" +msgstr "Ajouter le numéro de la piste au début du nom du fichier" -#: audacious-plugins/src/evdev-plug/ed_ui.c:1460 -msgid "EvDev-Plug - about" -msgstr "À propos du module « EvDev-Plug »" +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:765 +msgid "Auto" +msgstr "Auto" -#: audacious-plugins/src/evdev-plug/ed_ui.c:1491 -msgid "" -"\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"written by Giacomo Lozito\n" +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" msgstr "" -"\n" -"\n" -"Cette extension permet de contrôler le lecteur à distance,\n" -"par l'intermédiaire des événements des périphériques.\n" -"\n" -"http://www.develia.org/projects.php?p=evdevplug\n" -"\n" -"Écrit par Giacomo Lozito < james@develia.org >\n" -"\n" -#: audacious-plugins/src/ffaudio/ffaudio-core.c:662 -#, c-format -msgid "" -"Multi-format audio decoding plugin for Audacious based on\n" -"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" -"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" -"\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" -"Audacious plugin by:\n" -" William Pitcock ,\n" -" Matti Hämäläinen \n" -msgstr "" -"Module de décodage audio multi-format pour Audacious,\n" -"conçu à partir de l'ensemble des bibliothèques multimédia du projet\n" -"« FFmpeg » (http://www.ffmpeg.org/)\n" -"Droits d'utilisation (2000-2009) : Fabrice Bellard, et al.\n" -"\n" -"Version de la bibliothèque « libavformat » de « FFmpeg » : %d.%d.%d\n" -"Version de la bibliothèque « libavcodec » de « FFmpeg » : %d.%d.%d\n" -"\n" -"Module pour Audacious écrit par :\n" -"\n" -"William Pitcock \n" -"Matti Hämäläinen \n" +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Stereo" +msgstr "Stéréo" -#: audacious-plugins/src/ffaudio/ffaudio-core.c:675 -msgid "About FFaudio Plugin" -msgstr "À propos du module « FFaudio »" +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Mono" +msgstr "Mono" -#: audacious-plugins/src/filewriter/mp3.c:710 +#: src/filewriter/mp3.c:706 msgid "MP3 Configuration" msgstr "Configuration de l'encodeur « MP3 »" -#: audacious-plugins/src/filewriter/mp3.c:737 +#: src/filewriter/mp3.c:729 msgid "Algorithm Quality:" msgstr "Qualité de l'algorithme :" -#: audacious-plugins/src/filewriter/mp3.c:759 -msgid "" -"best/slowest:0;\n" -"worst/fastest:9;\n" -"recommended:2;\n" -"default:5;" -msgstr "" -"meilleure / la plus lente : 0\n" -"pire / la plus rapide : 9\n" -"recommandée : 2\n" -"par défaut : 5" - -#: audacious-plugins/src/filewriter/mp3.c:767 +#: src/filewriter/mp3.c:754 msgid "Output Samplerate:" msgstr "Fréquence d'échantillonnage de sortie :" -#: audacious-plugins/src/filewriter/mp3.c:778 -#: audacious-plugins/src/filewriter/mp3.c:919 -msgid "Auto" -msgstr "Auto" - -#: audacious-plugins/src/filewriter/mp3.c:800 +#: src/filewriter/mp3.c:782 msgid "(Hz)" msgstr "(Hz)" -#: audacious-plugins/src/filewriter/mp3.c:812 +#: src/filewriter/mp3.c:789 msgid "Bitrate / Compression ratio:" msgstr "Débit binaire / Taux de compression :" -#: audacious-plugins/src/filewriter/mp3.c:838 +#: src/filewriter/mp3.c:813 msgid "Bitrate (kbps):" msgstr "Débit binaire (kbps)" -#: audacious-plugins/src/filewriter/mp3.c:879 +#: src/filewriter/mp3.c:846 msgid "Compression ratio:" msgstr "Taux de compression :" -#: audacious-plugins/src/filewriter/mp3.c:909 +#: src/filewriter/mp3.c:870 msgid "Audio Mode:" msgstr "Mode audio :" -#: audacious-plugins/src/filewriter/mp3.c:924 -msgid "Joint-Stereo" -msgstr "Stéréo jointe" - -#: audacious-plugins/src/filewriter/mp3.c:929 -msgid "Stereo" -msgstr "Stéréo" - -#: audacious-plugins/src/filewriter/mp3.c:934 -msgid "Mono" -msgstr "Mono" - -#: audacious-plugins/src/filewriter/mp3.c:967 +#: src/filewriter/mp3.c:895 msgid "Misc:" msgstr "Options diverses :" -#: audacious-plugins/src/filewriter/mp3.c:978 +#: src/filewriter/mp3.c:906 msgid "Enforce strict ISO complience" msgstr "Forcer le respect strict des normes ISO" -#: audacious-plugins/src/filewriter/mp3.c:989 +#: src/filewriter/mp3.c:917 msgid "Error protection" msgstr "Protection contre les erreurs" -#: audacious-plugins/src/filewriter/mp3.c:1001 -msgid "Adds 16 bit checksum to every frame" -msgstr "Ajoute à chaque trame une somme de contrôle sur 16 bits" - -#: audacious-plugins/src/filewriter/mp3.c:1006 -#: audacious-plugins/src/filewriter/vorbis.c:247 +#: src/filewriter/mp3.c:929 src/filewriter/vorbis.c:247 msgid "Quality" msgstr "Qualité" -#: audacious-plugins/src/filewriter/mp3.c:1018 +#: src/filewriter/mp3.c:939 msgid "Enable VBR/ABR" msgstr "Activer VBR/ABR" -#: audacious-plugins/src/filewriter/mp3.c:1030 +#: src/filewriter/mp3.c:949 msgid "Type:" msgstr "Type :" -#: audacious-plugins/src/filewriter/mp3.c:1041 -msgid "Variable bitrate" -msgstr "Débit binaire variable" - -#: audacious-plugins/src/filewriter/mp3.c:1053 -msgid "Average bitrate" -msgstr "Débit binaire moyen" - -#: audacious-plugins/src/filewriter/mp3.c:1067 +#: src/filewriter/mp3.c:982 msgid "VBR Options:" msgstr "Options VBR :" -#: audacious-plugins/src/filewriter/mp3.c:1083 +#: src/filewriter/mp3.c:998 msgid "Minimum bitrate (kbps):" msgstr "Débit binaire minimal (kbps) :" -#: audacious-plugins/src/filewriter/mp3.c:1119 +#: src/filewriter/mp3.c:1025 msgid "Maximum bitrate (kbps):" msgstr "Débit binaire maximal (kbps) :" -#: audacious-plugins/src/filewriter/mp3.c:1151 +#: src/filewriter/mp3.c:1048 msgid "Strictly enforce minimum bitrate" msgstr "Forcer de manière stricte le débit binaire minimal" -#: audacious-plugins/src/filewriter/mp3.c:1153 -msgid "For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/mp3 player)" -msgstr "Cette option est destinée aux lecteurs qui ne supportent pas les fichiers « mp3 » dont le débit binaire est bas (le lecteur DVD/mp3 « Apex AD600-A », notamment)." - -#: audacious-plugins/src/filewriter/mp3.c:1166 +#: src/filewriter/mp3.c:1060 msgid "ABR Options:" msgstr "Options ABR :" -#: audacious-plugins/src/filewriter/mp3.c:1176 +#: src/filewriter/mp3.c:1070 msgid "Average bitrate (kbps):" msgstr "Débit binaire moyen (kbps) :" -#: audacious-plugins/src/filewriter/mp3.c:1213 +#: src/filewriter/mp3.c:1098 msgid "VBR quality level:" msgstr "Niveau de qualité VBR :" -#: audacious-plugins/src/filewriter/mp3.c:1228 -msgid "" -"highest:0;\n" -"lowest:9;\n" -"default:4;" -msgstr "" -"Le plus élevé : 0\n" -"Le plus bas : 9\n" -"Défaut : 4" - -#: audacious-plugins/src/filewriter/mp3.c:1236 +#: src/filewriter/mp3.c:1117 msgid "Don't write Xing VBR header" msgstr "Ne pas écrire l'en-tête VBR « Xing »" -#: audacious-plugins/src/filewriter/mp3.c:1250 +#: src/filewriter/mp3.c:1131 msgid "VBR/ABR" msgstr "VBR/ABR" -#: audacious-plugins/src/filewriter/mp3.c:1262 +#: src/filewriter/mp3.c:1141 msgid "Frame params:" msgstr "Paramètres des trames :" -#: audacious-plugins/src/filewriter/mp3.c:1274 +#: src/filewriter/mp3.c:1153 msgid "Mark as copyright" msgstr "Marquer comme soumises aux droits d'utilisation" -#: audacious-plugins/src/filewriter/mp3.c:1285 +#: src/filewriter/mp3.c:1164 msgid "Mark as original" msgstr "Marquer comme originales" -#: audacious-plugins/src/filewriter/mp3.c:1297 +#: src/filewriter/mp3.c:1176 msgid "ID3 params:" msgstr "Paramètres ID3 :" -#: audacious-plugins/src/filewriter/mp3.c:1308 +#: src/filewriter/mp3.c:1187 msgid "Force addition of version 2 tag" msgstr "Forcer l'ajout de la version 2 des métadonnées" -#: audacious-plugins/src/filewriter/mp3.c:1318 +#: src/filewriter/mp3.c:1197 msgid "Only add v1 tag" msgstr "Ajouter uniquement la version 1 des métadonnées" -#: audacious-plugins/src/filewriter/mp3.c:1325 +#: src/filewriter/mp3.c:1204 msgid "Only add v2 tag" msgstr "Ajouter uniquement la version 2 des métadonnées" -#: audacious-plugins/src/filewriter/mp3.c:1346 +#: src/filewriter/mp3.c:1225 msgid "Tags" msgstr "Métadonnées" -#: audacious-plugins/src/filewriter/filewriter.c:180 -msgid "About FileWriter-Plugin" -msgstr "À propos du module « FileWriter »" - -#: audacious-plugins/src/filewriter/filewriter.c:181 -msgid "" -"FileWriter-Plugin\n" -"\n" -"This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" -"Module « FileWriter »\n" -"\n" -"Ceci est une traduction non officielle de la « GNU General Public License »\n" -"en français. Elle n'a pas été publiée par la « Free Software Foundation »,\n" -"et ne détermine pas les termes de distribution pour les logiciels qui\n" -"utilisent la « GNU GPL » -- seul le texte anglais original de la « GNU GPL »\n" -"en a le droit. Cependant, nous espérons que cette traduction aidera les\n" -"francophones à mieux comprendre la « GNU GPL ».\n" -"\n" -"Ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le\n" -"modifier selon les termes de la « Licence Publique Générale GNU » (GNU GPL),\n" -"telle que publiée par la « Free Software Foundation », soit la version 2 de\n" -"la Licence, soit (à votre convenance) toute version postérieure.\n" -"\n" -"Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE\n" -"GARANTIE, sans même la garantie implicite d'une possible VALEUR MARCHANDE\n" -"ou de l'ADÉQUATION à UN BESOIN PARTICULIER. Consultez la « Licence Publique\n" -"Générale GNU » (GNU GPL) pour plus de détails.\n" -"\n" -"Vous devriez avoir reçu une copie de la « Licence Publique Générale GNU »\n" -"(GNU GPL) avec ce programme. Dans le cas contraire, vous pouvez consulter\n" -"la Licence sur la page ou écrire à la\n" -"Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" -"MA 02110-1301, USA." - -#: audacious-plugins/src/filewriter/filewriter.c:466 -msgid "File Writer Configuration" -msgstr "Configuration du module « File Writer »" - -#: audacious-plugins/src/filewriter/filewriter.c:478 -msgid "Output file format:" -msgstr "Format du fichier de sortie :" - -#: audacious-plugins/src/filewriter/filewriter.c:496 -msgid "Configure" -msgstr "Configurer" - -#: audacious-plugins/src/filewriter/filewriter.c:511 -msgid "Save into original directory" -msgstr "Enregistrer dans le répertoire d'origine" - -#: audacious-plugins/src/filewriter/filewriter.c:516 -msgid "Save into custom directory" -msgstr "Enregistrer dans un répertoire personnel" - -#: audacious-plugins/src/filewriter/filewriter.c:528 -msgid "Output file folder:" -msgstr "Dossier de destination :" - -#: audacious-plugins/src/filewriter/filewriter.c:532 -msgid "Pick a folder" -msgstr "Choix d'un répertoire" - -#: audacious-plugins/src/filewriter/filewriter.c:551 -msgid "Get filename from:" -msgstr "Déterminer le nom du fichier à partir :" - -#: audacious-plugins/src/filewriter/filewriter.c:554 -msgid "original file tags" -msgstr "des métadonnées du fichier d'origine" - -#: audacious-plugins/src/filewriter/filewriter.c:560 -msgid "original filename" -msgstr "du nom du fichier d'origine" - -#: audacious-plugins/src/filewriter/filewriter.c:570 -msgid "Don't strip file name extension" -msgstr "Conserver l'extension du nom de fichier" - -#: audacious-plugins/src/filewriter/filewriter.c:574 -msgid "If enabled, the extension from the original filename will not be stripped before adding the new file extension to the end." -msgstr "Si cette option est activée, l'extension du nom du fichier source ne sera pas supprimée avant l'ajout de la nouvelle extension." - -#: audacious-plugins/src/filewriter/filewriter.c:588 -msgid "Prepend track number to filename" -msgstr "Ajouter le numéro de la piste au début du nom du fichier" - -#: audacious-plugins/src/filewriter/vorbis.c:240 +#: src/filewriter/vorbis.c:240 msgid "Vorbis Encoder Configuration" msgstr "Confogiration de l'encodeur « Vorbis »" -#: audacious-plugins/src/filewriter/vorbis.c:260 +#: src/filewriter/vorbis.c:260 msgid "Quality level (0 - 10):" msgstr "Niveau de qualité (0 - 10) :" -#: audacious-plugins/src/flacng/plugin.c:458 -msgid "FLAC Audio Plugin " -msgstr "Module audio « Flac » " +#: src/flacng/plugin.c:380 +msgid "About FLAC Audio Plugin" +msgstr "À propos du module « FLAC »" -#: audacious-plugins/src/flacng/plugin.c:459 +#: src/flacng/plugin.c:381 msgid "" "\n" "\n" @@ -2277,15 +1512,11 @@ "\n" "http://www.skytale.net/projects/bmp-flac2/" -#: audacious-plugins/src/flacng/plugin.c:465 -msgid "About FLAC Audio Plugin" -msgstr "À propos du module « FLAC »" - -#: audacious-plugins/src/gnomeshortcuts/gnomeshortcuts.c:306 +#: src/gnomeshortcuts/gnomeshortcuts.c:303 msgid "About Gnome Shortcut Plugin" msgstr "À propos du module « Gnome Shortcut »" -#: audacious-plugins/src/gnomeshortcuts/gnomeshortcuts.c:307 +#: src/gnomeshortcuts/gnomeshortcuts.c:304 msgid "" "Gnome Shortcut Plugin\n" "Let's you control the player with Gnome's shortcuts.\n" @@ -2301,465 +1532,444 @@ "Sascha Hlusiak \n" "\n" -#: audacious-plugins/src/gntui/gntui.c:271 -msgid "Audacious2" -msgstr "Audacious2" - -#: audacious-plugins/src/gntui/gntui.c:272 -#: audacious-plugins/src/gntui/fileselector.c:75 -msgid "Add Files" -msgstr "Ajouter des fichiers" - -#: audacious-plugins/src/gntui/gntui.c:273 -#: audacious-plugins/src/gntui/fileselector.c:75 -msgid "Open Files" -msgstr "Ouvrir des fichiers" +#: src/gtkui/columns.c:36 +msgid "Entry number" +msgstr "Place dans la liste" -#: audacious-plugins/src/gntui/gntui.c:312 -msgid "gnt interface" -msgstr "Interface gnt" - -#: audacious-plugins/src/gtkui/ui_gtk.c:76 -msgid "GTK Interface" -msgstr "Interface GTK" +#: src/gtkui/columns.c:36 src/search-tool/search-tool.c:43 +msgid "Title" +msgstr "Titre" -#: audacious-plugins/src/gtkui/ui_gtk.c:285 -#, c-format -msgid "%s - Audacious" -msgstr "%s - Audacious" +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:42 +msgid "Artist" +msgstr "Artiste" + +#: src/gtkui/columns.c:37 +msgid "Year" +msgstr "Année" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:43 +msgid "Album" +msgstr "Album" + +#: src/gtkui/columns.c:37 +msgid "Track" +msgstr "Numéro de piste" + +#: src/gtkui/columns.c:37 +msgid "Queue position" +msgstr "Position dans la queue" -#: audacious-plugins/src/gtkui/ui_gtk.c:291 -msgid "Audacious" -msgstr "Audacious" +#: src/gtkui/columns.c:38 +msgid "Length" +msgstr "Durée" -#: audacious-plugins/src/gtkui/ui_manager.c:35 -#: audacious-plugins/src/gtkui/ui_manager.c:36 -msgid "Stop after Current Song" -msgstr "Arrêter après le titre en cours de lecture" +#: src/gtkui/columns.c:38 +msgid "File path" +msgstr "Emplacement du fichier" -#: audacious-plugins/src/gtkui/ui_manager.c:38 -#: audacious-plugins/src/gtkui/ui_manager.c:39 -msgid "Repeat" -msgstr "Mode « répétition »" +#: src/gtkui/columns.c:38 +msgid "File name" +msgstr "Nom du fichier" -#: audacious-plugins/src/gtkui/ui_manager.c:41 -#: audacious-plugins/src/gtkui/ui_manager.c:42 -msgid "Shuffle" -msgstr "Mode « lecture aléatoire »" +#: src/gtkui/columns.c:38 +msgid "Custom title" +msgstr "Titre formaté" -#: audacious-plugins/src/gtkui/ui_manager.c:44 -#: audacious-plugins/src/gtkui/ui_manager.c:45 -msgid "No Playlist Advance" -msgstr "Ne pas avancer dans la liste de lecture" +#: src/gtkui/columns.c:39 +msgid "Bitrate" +msgstr "Débit binaire (kbps)" -#: audacious-plugins/src/gtkui/ui_manager.c:47 -msgid "Show playlists" -msgstr "Afficher les listes de lecture" - -#: audacious-plugins/src/gtkui/ui_manager.c:48 -msgid "Show/hide playlists" -msgstr "Afficher/cacher les listes de lecture" +#: src/gtkui/columns.c:278 +msgid "Choose Columns" +msgstr "Choisir les colonnes" + +#: src/gtkui/columns.c:292 +msgid "Available:" +msgstr "Disponibles :" + +#: src/gtkui/columns.c:326 +msgid "Chosen:" +msgstr "Sélectionnées :" + +#: src/gtkui/layout.c:122 +msgid "Dock at Left" +msgstr "Intégrer à gauche" + +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "Intégrer à droite" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "Intégrer en haut" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "Intégrer en bas" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "Séparer" + +#: src/gtkui/layout.c:123 src/ladspa/plugin.c:644 +msgid "Disable" +msgstr "Désactiver" -#: audacious-plugins/src/gtkui/ui_manager.c:50 -msgid "Show infoarea" -msgstr "Afficher l'espace informatif" +#: src/gtkui/menus.c:131 +msgid "_Open Files ..." +msgstr "Ouvrir des fichiers" -#: audacious-plugins/src/gtkui/ui_manager.c:51 -msgid "Show/hide infoarea" -msgstr "Afficher/cacher l'espace informatif" - -#: audacious-plugins/src/gtkui/ui_manager.c:53 -msgid "Show main menu" -msgstr "Afficher le menu principal" - -#: audacious-plugins/src/gtkui/ui_manager.c:54 -msgid "Show/hide main menu" -msgstr "Afficher/cacher le menu principal" +#: src/gtkui/menus.c:132 +msgid "Open _URL ..." +msgstr "Ouvrir un adresse" + +#: src/gtkui/menus.c:133 +msgid "_Add Files ..." +msgstr "_Ajouter des fichiers" + +#: src/gtkui/menus.c:134 +msgid "Add U_RL ..." +msgstr "Ajouter une adresse" + +#: src/gtkui/menus.c:136 +msgid "A_bout ..." +msgstr "À propos" + +#: src/gtkui/menus.c:137 +msgid "_Preferences ..." +msgstr "_Préférences" -#: audacious-plugins/src/gtkui/ui_manager.c:56 -msgid "Show statusbar" -msgstr "Afficher la barre d'état" +#: src/gtkui/menus.c:138 src/skins/ui_manager.c:406 +msgid "_Quit" +msgstr "_Quitter" -#: audacious-plugins/src/gtkui/ui_manager.c:57 -msgid "Show/hide statusbar" -msgstr "Afficher/cacher la barre d'état" +#: src/gtkui/menus.c:141 +msgid "_Play" +msgstr "Lecture" -#: audacious-plugins/src/gtkui/ui_manager.c:69 -#: audacious-plugins/src/gtkui/ui_manager.c:70 -msgid "Pause" +#: src/gtkui/menus.c:142 +msgid "Paus_e" msgstr "Pause" -#: audacious-plugins/src/gtkui/ui_manager.c:72 -#: audacious-plugins/src/gtkui/ui_manager.c:73 -msgid "Stop" -msgstr "Arrêt" +#: src/gtkui/menus.c:143 +msgid "_Stop" +msgstr "Stop" -#: audacious-plugins/src/gtkui/ui_manager.c:75 -#: audacious-plugins/src/gtkui/ui_manager.c:76 -msgid "Previous" +#: src/gtkui/menus.c:144 +msgid "Pre_vious" msgstr "Précédent" -#: audacious-plugins/src/gtkui/ui_manager.c:78 -#: audacious-plugins/src/gtkui/ui_manager.c:79 -msgid "Next" +#: src/gtkui/menus.c:145 +msgid "_Next" msgstr "Suivant" -#: audacious-plugins/src/gtkui/ui_manager.c:84 -msgid "Playlist" -msgstr "Liste de lecture" - -#: audacious-plugins/src/gtkui/ui_manager.c:86 -#: audacious-plugins/src/gtkui/ui_manager.c:87 -msgid "New Playlist" -msgstr "Nouvelle liste" - -#: audacious-plugins/src/gtkui/ui_manager.c:89 -#: audacious-plugins/src/gtkui/ui_manager.c:90 -msgid "Delete Playlist" -msgstr "Supprimer la liste" - -#: audacious-plugins/src/gtkui/ui_manager.c:92 -msgid "Import Playlist ..." -msgstr "Importer une liste de lecture ..." - -#: audacious-plugins/src/gtkui/ui_manager.c:93 -msgid "Loads a playlist file into the selected playlist." -msgstr "Importe une liste de lecture dans la liste active." - -#: audacious-plugins/src/gtkui/ui_manager.c:95 -msgid "Export Playlist ..." -msgstr "Exporter la liste de lecture ..." - -#: audacious-plugins/src/gtkui/ui_manager.c:96 -msgid "Saves the selected playlist." -msgstr "Enregistre la liste de lecture active." - -#: audacious-plugins/src/gtkui/ui_manager.c:98 -msgid "Save All Playlists" -msgstr "Enregistrer toutes les listes" - -#: audacious-plugins/src/gtkui/ui_manager.c:99 -msgid "Saves all the playlists that are open. Note that this is done automatically when Audacious quits." -msgstr "Enregistre toutes les listes de lecture qui sont ouvertes. Veuillez noter que cette opération est effectuée automatiquement à la fermeture d'Audacious." - -#: audacious-plugins/src/gtkui/ui_manager.c:103 -msgid "Refresh" -msgstr "Réactualiser" - -#: audacious-plugins/src/gtkui/ui_manager.c:104 -msgid "Refreshes metadata associated with a playlist entry." -msgstr "Actualise les métadonnées associées à une entrée de la liste." - -#: audacious-plugins/src/gtkui/ui_manager.c:107 -msgid "Playlist Manager" -msgstr "Gestionnaire de listes de lecture" - -#: audacious-plugins/src/gtkui/ui_manager.c:108 -msgid "Opens the playlist manager." -msgstr "Ouvre le gestionnaire de listes de lecture." - -#: audacious-plugins/src/gtkui/ui_manager.c:111 -msgid "Add URL ..." -msgstr "Ajouter l'adresse d'un flux ..." - -#: audacious-plugins/src/gtkui/ui_manager.c:112 -msgid "Adds a remote track to the playlist." -msgstr "Ajoute un flux distant à la liste de lecture." - -#: audacious-plugins/src/gtkui/ui_manager.c:115 -msgid "Add Files ..." -msgstr "Ajouter des fichiers ..." - -#: audacious-plugins/src/gtkui/ui_manager.c:116 -msgid "Adds files to the playlist." -msgstr "Ajoute des fichiers à la liste de lecture." - -#: audacious-plugins/src/gtkui/ui_manager.c:119 -msgid "Remove All" -msgstr "Effacer toutes les entrées" - -#: audacious-plugins/src/gtkui/ui_manager.c:120 -msgid "Removes all entries from the playlist." -msgstr "Efface toutes les entrées de la liste de lecture." - -#: audacious-plugins/src/gtkui/ui_manager.c:123 -msgid "Remove Unselected" -msgstr "Ne garder que la sélection" +#: src/gtkui/menus.c:147 +msgid "_Repeat" +msgstr "Mode « répétition »" -#: audacious-plugins/src/gtkui/ui_manager.c:124 -msgid "Remove unselected entries from the playlist." -msgstr "Efface les entrées non sélectionnées de la liste de lecture." +#: src/gtkui/menus.c:148 +msgid "S_huffle" +msgstr "Mode « lecture aléatoire »" -#: audacious-plugins/src/gtkui/ui_manager.c:127 -msgid "Remove Selected" -msgstr "Effacer la sélection" +#: src/gtkui/menus.c:149 +msgid "N_o Playlist Advance" +msgstr "Ne pas avancer dans la liste de lecture" -#: audacious-plugins/src/gtkui/ui_manager.c:128 -msgid "Remove selected entries from the playlist." -msgstr "Efface les entrées sélectionnées de la liste de lecture." +#: src/gtkui/menus.c:150 +msgid "Stop _After This Song" +msgstr "Arrêter après le titre en cours de lecture." -#: audacious-plugins/src/gtkui/ui_manager.c:131 -msgid "Sort" -msgstr "Trier" +#: src/gtkui/menus.c:152 src/gtkui/menus.c:212 +msgid "Song _Info ..." +msgstr "Informations sur le morceau" + +#: src/gtkui/menus.c:153 +msgid "Jump to _Time ..." +msgstr "Sauter au temps…" + +#: src/gtkui/menus.c:154 +msgid "_Jump to Song ..." +msgstr "Sauter au morceau" -#: audacious-plugins/src/gtkui/ui_manager.c:132 -msgid "By Track Number" +#: src/gtkui/menus.c:157 +msgid "By Track _Number" msgstr "Par numéro de piste" -#: audacious-plugins/src/gtkui/ui_manager.c:134 -msgid "By Title" +#: src/gtkui/menus.c:158 +msgid "By _Title" msgstr "Par titre" -#: audacious-plugins/src/gtkui/ui_manager.c:136 -msgid "By Artist" +#: src/gtkui/menus.c:159 +msgid "By _Artist" msgstr "Par artiste" -#: audacious-plugins/src/gtkui/ui_manager.c:138 -msgid "By Album" +#: src/gtkui/menus.c:160 +msgid "By A_lbum" msgstr "Par album" -#: audacious-plugins/src/gtkui/ui_manager.c:140 -msgid "By File Path" +#: src/gtkui/menus.c:161 +msgid "By Release _Date" +msgstr "Par date de parution" + +#: src/gtkui/menus.c:162 +msgid "By _File Path" msgstr "Par emplacement de fichier" -#: audacious-plugins/src/gtkui/ui_manager.c:142 -msgid "Reverse Order" +#: src/gtkui/menus.c:163 +msgid "By _Custom Title" +msgstr "Par titre formaté" + +#: src/gtkui/menus.c:165 +msgid "R_everse Order" msgstr "Inverser l'ordre" -#: audacious-plugins/src/gtkui/ui_manager.c:147 -msgid "Output" -msgstr "Sortie" +#: src/gtkui/menus.c:166 +msgid "_Random Order" +msgstr "Mélanger aléatoirement" -#: audacious-plugins/src/gtkui/ui_manager.c:149 -msgid "Effects" -msgstr "Effets audio" +#: src/gtkui/menus.c:169 src/gtkui/menus.c:214 +msgid "_Refresh" +msgstr "_Réactualiser" -#: audacious-plugins/src/gtkui/ui_manager.c:151 -msgid "Equalizer" -msgstr "Égaliseur" +#: src/gtkui/menus.c:170 +msgid "Remove _Unavailable Files" +msgstr "Retirer les fichiers inaccessibles" -#: audacious-plugins/src/gtkui/ui_manager.c:156 -msgid "View" -msgstr "Affichage" +#: src/gtkui/menus.c:172 +msgid "_Sort" +msgstr "Trier" -#: audacious-plugins/src/gtkui/ui_manager.c:157 -msgid "Interface" -msgstr "Interface" +#: src/gtkui/menus.c:174 +msgid "_New" +msgstr "_Nouvelle liste de lecture" -#: audacious-plugins/src/gtkui/ui_manager.c:164 -msgid "File" -msgstr "Fichier" +#: src/gtkui/menus.c:175 src/gtkui/menus.c:225 +msgid "_Close" +msgstr "_Fermer" -#: audacious-plugins/src/gtkui/ui_manager.c:167 -msgid "Components" -msgstr "Composants" +#: src/gtkui/menus.c:177 +msgid "_Import ..." +msgstr "_Importer" + +#: src/gtkui/menus.c:178 +msgid "_Export ..." +msgstr "_Exporter" -#: audacious-plugins/src/gtkui/ui_manager.c:169 -#: audacious-plugins/src/gtkui/ui_manager.c:172 -msgid "View Track Details" -msgstr "Afficher les détails" +#: src/gtkui/menus.c:180 +msgid "_Playlist Manager ..." +msgstr "Gestionnaire de listes de lecture" -#: audacious-plugins/src/gtkui/ui_manager.c:170 -#: audacious-plugins/src/gtkui/ui_manager.c:173 -msgid "View track details" -msgstr "Affiche les informations relatives au morceau." +#: src/gtkui/menus.c:181 +msgid "_Queue Manager ..." +msgstr "Gestionnaire de files d'attentes" -#: audacious-plugins/src/gtkui/ui_manager.c:175 -#: audacious-plugins/src/gtkui/ui_manager.c:176 -msgid "About Audacious" -msgstr "À propos d'Audacious" +#: src/gtkui/menus.c:184 +msgid "Volume _Up" +msgstr "Augmenter le volume" -#: audacious-plugins/src/gtkui/ui_manager.c:178 -msgid "Open Files ..." -msgstr "Ouvrir des fichiers ..." +#: src/gtkui/menus.c:185 +msgid "Volume _Down" +msgstr "Réduire le volume" -#: audacious-plugins/src/gtkui/ui_manager.c:179 -msgid "Load and play a file" -msgstr "Charge et lit un fichier." +#: src/gtkui/menus.c:187 +msgid "_Equalizer" +msgstr "Égaliseur" -#: audacious-plugins/src/gtkui/ui_manager.c:181 -msgid "Open URL ..." -msgstr "Ouvrir l'adresse d'un flux ..." +#: src/gtkui/menus.c:189 +msgid "E_ffects" +msgstr "E_ffets audio" + +#: src/gtkui/menus.c:192 +msgid "_Interface" +msgstr "_Interface" + +#: src/gtkui/menus.c:193 +msgid "_Visualizations" +msgstr "_Visualisations" + +#: src/gtkui/menus.c:195 +msgid "Show _Menu Bar" +msgstr "Afficher la barre de menu" -#: audacious-plugins/src/gtkui/ui_manager.c:182 -msgid "Play media from the selected location" -msgstr "Lit les média de l'emplacement sélectionné." - -#: audacious-plugins/src/gtkui/ui_manager.c:184 -msgid "Plugin services" -msgstr "Affiche le menu propre à certains modules." +#: src/gtkui/menus.c:196 +msgid "Show I_nfo Bar" +msgstr "Afficher l'espace informatif" -#: audacious-plugins/src/gtkui/ui_manager.c:186 -msgid "Preferences" -msgstr "Préférences..." +#: src/gtkui/menus.c:197 +msgid "Show _Status Bar" +msgstr "Afficher la barre d'état" -#: audacious-plugins/src/gtkui/ui_manager.c:187 -msgid "Open preferences window" -msgstr "Ouvre la fenêtre des préférences." +#: src/gtkui/menus.c:199 +msgid "Show Column _Headers" +msgstr "Afficher le titre des colonnes" + +#: src/gtkui/menus.c:200 +msgid "Choose _Columns ..." +msgstr "Choisir les colonnes aÌ€ afficher" + +#: src/gtkui/menus.c:201 +msgid "Scrol_l on Song Change" +msgstr "Afficher le morceau courant au changement de pistes" + +#: src/gtkui/menus.c:204 +msgid "_File" +msgstr "_Fichier" -#: audacious-plugins/src/gtkui/ui_manager.c:189 -msgid "_Quit" -msgstr "_Quitter" +#: src/gtkui/menus.c:205 +msgid "_Playback" +msgstr "Lecture" -#: audacious-plugins/src/gtkui/ui_manager.c:190 -msgid "Quit Audacious" -msgstr "Ferme Audacious." +#: src/gtkui/menus.c:206 +msgid "P_laylist" +msgstr "Liste de lecture" -#: audacious-plugins/src/gtkui/ui_manager.c:192 -#: audacious-plugins/src/gtkui/ui_manager.c:193 -msgid "Set A-B" -msgstr "Marquer une boucle A-B" +#: src/gtkui/menus.c:207 src/gtkui/menus.c:221 +msgid "_Services" +msgstr "Périphériques" -#: audacious-plugins/src/gtkui/ui_manager.c:195 -#: audacious-plugins/src/gtkui/ui_manager.c:196 -msgid "Clear A-B" -msgstr "Effacer la boucle A-B" +#: src/gtkui/menus.c:208 +msgid "_Output" +msgstr "Sortie" -#: audacious-plugins/src/gtkui/ui_manager.c:198 -#: audacious-plugins/src/gtkui/ui_manager.c:199 -msgid "Jump to Playlist Start" -msgstr "Aller au début de la liste" +#: src/gtkui/menus.c:209 +msgid "_View" +msgstr "Affichage" -#: audacious-plugins/src/gtkui/ui_manager.c:201 -#: audacious-plugins/src/gtkui/ui_manager.c:202 -msgid "Jump to File" -msgstr "Aller au fichier..." +#: src/gtkui/menus.c:213 +msgid "_Queue/Unqueue" +msgstr "Mettre/enlever dans la file" -#: audacious-plugins/src/gtkui/ui_manager.c:204 -#: audacious-plugins/src/gtkui/ui_manager.c:205 -#: audacious-plugins/src/gtkui/actions.c:272 -msgid "Jump to Time" -msgstr "Aller au temps..." +#: src/gtkui/menus.c:216 +msgid "Cu_t" +msgstr "Couper" -#: audacious-plugins/src/gtkui/ui_manager.c:207 -msgid "Queue Toggle" -msgstr "Mettre dans la file d'attente" +#: src/gtkui/menus.c:217 +msgid "_Copy" +msgstr "Copier" -#: audacious-plugins/src/gtkui/ui_manager.c:208 -msgid "Enables/disables the entry in the playlist's queue." -msgstr "Active/désactive l'entrée dans la file d'attente de la liste." +#: src/gtkui/menus.c:218 +msgid "_Paste" +msgstr "Coller" -#: audacious-plugins/src/gtkui/ui_manager.c:211 -msgid "Copy" -msgstr "Copier" +#: src/gtkui/menus.c:219 +msgid "Select _All" +msgstr "Sélectionner tout" + +#: src/gtkui/menus.c:224 +msgid "_Rename" +msgstr "_Renommer" -#: audacious-plugins/src/gtkui/ui_manager.c:214 -msgid "Cut" -msgstr "Couper" +#: src/gtkui/ui_gtk.c:95 +msgid "GTK Interface" +msgstr "Interface GTK" -#: audacious-plugins/src/gtkui/ui_manager.c:217 -msgid "Paste" -msgstr "Coller" +#: src/gtkui/ui_gtk.c:156 src/skins/ui_main.c:303 +#, c-format +msgid "%s - Audacious" +msgstr "%s - Audacious" -#: audacious-plugins/src/gtkui/ui_manager.c:220 -msgid "Select All" -msgstr "Tout sélectionner" +#: src/gtkui/ui_gtk.c:162 +msgid "Buffering ..." +msgstr "Remplissage du tampon" -#: audacious-plugins/src/gtkui/ui_manager.c:221 -msgid "Selects all of the playlist entries." -msgstr "Sélectionne toutes les entrées de la liste." +#: src/gtkui/ui_gtk.c:165 src/skins/ui_main.c:305 src/skins/ui_main.c:1504 +msgid "Audacious" +msgstr "Audacious" -#: audacious-plugins/src/gtkui/ui_manager.c:224 -msgid "Select None" -msgstr "Ne rien sélectionner" +#: src/gtkui/ui_gtk.c:216 src/skins/plugin.c:190 +msgid "Error" +msgstr "Erreur" -#: audacious-plugins/src/gtkui/ui_manager.c:225 -msgid "Deselects all of the playlist entries." -msgstr "Annule la sélection de toutes les entrées de la liste." +#: src/gtkui/ui_playlist_notebook.c:97 +msgid "Close" +msgstr "Fermer" -#: audacious-plugins/src/gtkui/ui_statusbar.c:91 +#: src/gtkui/ui_statusbar.c:105 src/skins/ui_main.c:460 msgid "mono" msgstr "mono" -#: audacious-plugins/src/gtkui/ui_statusbar.c:94 +#: src/gtkui/ui_statusbar.c:107 src/skins/ui_main.c:459 msgid "stereo" -msgstr "stereo" - -#: audacious-plugins/src/gtkui/ui_statusbar.c:97 -#, c-format -msgid "%d channels" -msgstr "%d voies" - -#: audacious-plugins/src/gtkui/ui_statusbar.c:101 -#, c-format -msgid "%s: %d kbps, %d Hz, %s" -msgstr "%s: %d kbps, %d Hz, %s" - -#: audacious-plugins/src/gtkui/actions.c:257 -msgid "Can't jump to time when no track is being played.\n" -msgstr "Impossible d'accéder au temps spécifié, si aucune piste n'est en cours de lecture.\n" - -#: audacious-plugins/src/gtkui/actions.c:289 -msgid "minutes:seconds" -msgstr " minutes : secondes" - -#: audacious-plugins/src/gtkui/actions.c:299 -msgid "Track length:" -msgstr "Durée du morceau :" +msgstr "stereo" -#: audacious-plugins/src/gtkui/actions.c:610 +#: src/gtkui/ui_statusbar.c:109 #, c-format -msgid "Error writing playlist \"%s\": %s" -msgstr "Erreur lors de l'écriture de la liste de lecture \"%s\": %s" +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d canal" +msgstr[1] "%d canaux" -#: audacious-plugins/src/gtkui/actions.c:625 +#: src/gtkui/ui_statusbar.c:124 #, c-format -msgid "%s already exist. Continue?" -msgstr "%s existe déjà. Faut-il continuer ?" - -#: audacious-plugins/src/gtkui/actions.c:651 -msgid "Export Playlist" -msgstr "Exporter la liste de lecture" +msgid "%d kbps" +msgstr "%d kbps" -#: audacious-plugins/src/gtkui/actions.c:723 -msgid "Import Playlist" -msgstr "Importer une liste de lecture" - -#: audacious-plugins/src/hotkey/gui.c:70 +#: src/hotkey/gui.c:71 msgid "Previous Track" msgstr "Piste précédente" -#: audacious-plugins/src/hotkey/gui.c:72 +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "Lecture" + +#: src/hotkey/gui.c:73 msgid "Pause/Resume" msgstr "Pause / Reprise" -#: audacious-plugins/src/hotkey/gui.c:74 +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +msgid "Stop" +msgstr "Arrêt" + +#: src/hotkey/gui.c:75 msgid "Next Track" msgstr "Piste suivante" -#: audacious-plugins/src/hotkey/gui.c:75 +#: src/hotkey/gui.c:76 msgid "Forward 5 Seconds" msgstr "Avancer de 5 secondes" -#: audacious-plugins/src/hotkey/gui.c:76 +#: src/hotkey/gui.c:77 msgid "Rewind 5 Seconds" msgstr "Reculer de 5 secondes" -#: audacious-plugins/src/hotkey/gui.c:77 +#: src/hotkey/gui.c:78 msgid "Mute" msgstr "Rendre le volume nul" -#: audacious-plugins/src/hotkey/gui.c:78 +#: src/hotkey/gui.c:79 msgid "Volume Up" msgstr "Augmenter le volume" -#: audacious-plugins/src/hotkey/gui.c:79 +#: src/hotkey/gui.c:80 msgid "Volume Down" msgstr "Réduire le volume" -#: audacious-plugins/src/hotkey/gui.c:81 +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Jump to File" +msgstr "Aller au fichier..." + +#: src/hotkey/gui.c:82 msgid "Toggle Player Windows" msgstr "Afficher / Cacher les fenêtres du lecteur" -#: audacious-plugins/src/hotkey/gui.c:82 +#: src/hotkey/gui.c:83 msgid "Show On-Screen-Display" msgstr "Activer l'affichage à l'écran (« OSD »)" -#: audacious-plugins/src/hotkey/gui.c:92 +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "Bascule le mode « répétition »" + +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "Bascule le mode « lecture aléatoire »" + +#: src/hotkey/gui.c:95 msgid "(none)" msgstr "(néant)" -#: audacious-plugins/src/hotkey/gui.c:229 +#: src/hotkey/gui.c:232 msgid "" "It is not recommended to bind the primary mouse buttons without modificators.\n" "\n" @@ -2771,15 +1981,15 @@ "\n" "Souhaitez-vous quand même poursuivre ?" -#: audacious-plugins/src/hotkey/gui.c:231 +#: src/hotkey/gui.c:234 msgid "Binding mouse buttons" msgstr "Association des boutons de la souris" -#: audacious-plugins/src/hotkey/gui.c:381 +#: src/hotkey/gui.c:384 msgid "Global Hotkey Plugin Configuration" msgstr "Configuration du module « Global Hotkey »" -#: audacious-plugins/src/hotkey/gui.c:397 +#: src/hotkey/gui.c:400 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -2789,23 +1999,23 @@ " Vous pouvez aussi créer des associations avec les boutons de la souris.\n" " " -#: audacious-plugins/src/hotkey/gui.c:402 +#: src/hotkey/gui.c:405 msgid "Hotkeys:" msgstr "Raccourcis clavier :" -#: audacious-plugins/src/hotkey/gui.c:421 +#: src/hotkey/gui.c:424 msgid "Action:" msgstr "Action : " -#: audacious-plugins/src/hotkey/gui.c:429 +#: src/hotkey/gui.c:432 msgid "Key Binding:" msgstr "Touche associée :" -#: audacious-plugins/src/hotkey/gui.c:660 +#: src/hotkey/gui.c:663 msgid "About Global Hotkey Plugin" msgstr "À propos du module « Global Hotkey »" -#: audacious-plugins/src/hotkey/gui.c:661 +#: src/hotkey/gui.c:664 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -2837,7 +2047,31 @@ "Jeremy Tan \n" "\n" -#: audacious-plugins/src/jack/jack.c:437 +#: src/jack/configure.c:66 +msgid "Connect to all available jack ports" +msgstr "Connexion à tous les ports « Jack » disponibles" + +#: src/jack/configure.c:73 +msgid "Connect only the output ports" +msgstr "Connexion aux ports de sortie uniquement" + +#: src/jack/configure.c:80 +msgid "Connect to no ports" +msgstr "Aucune connexion" + +#: src/jack/configure.c:98 +msgid "jack Plugin configuration" +msgstr "Configuration du module « Jack »" + +#: src/jack/configure.c:116 +msgid "Connection mode:" +msgstr "Mode de connexion :" + +#: src/jack/configure.c:128 +msgid "Enable debug printing" +msgstr "Activer le mode de débogage" + +#: src/jack/jack.c:435 msgid "" "XMMS jack Driver 0.17\n" "\n" @@ -2856,166 +2090,69 @@ "Rétroportage pour Audacious effectué par :\n" "Giacomo Lozito from develia.org" -#: audacious-plugins/src/jack/jack.c:442 +#: src/jack/jack.c:440 msgid "About JACK Output Plugin 0.17" msgstr "À propos du module « JACK » 0.17" -#: audacious-plugins/src/jack/configure.c:71 -msgid "Connect to all available jack ports" -msgstr "Connexion à tous les ports « Jack » disponibles" - -#: audacious-plugins/src/jack/configure.c:78 -msgid "Connect only the output ports" -msgstr "Connexion aux ports de sortie uniquement" - -#: audacious-plugins/src/jack/configure.c:85 -msgid "Connect to no ports" -msgstr "Aucune connexion" - -#: audacious-plugins/src/jack/configure.c:103 -msgid "jack Plugin configuration" -msgstr "Configuration du module « Jack »" - -#: audacious-plugins/src/jack/configure.c:121 -msgid "Connection mode:" -msgstr "Mode de connexion :" - -#: audacious-plugins/src/jack/configure.c:133 -msgid "Enable debug printing" -msgstr "Activer le mode de débogage" - -#: audacious-plugins/src/ladspa/ladspa.c:824 -msgid "This LADSPA plugin has no user controls" -msgstr "Cette extension « LADSPA » ne dispose pas de contrôles utilisateur" - -#: audacious-plugins/src/ladspa/ladspa.c:865 -#: audacious-plugins/src/ladspa/ladspa.c:952 -msgid "Name" -msgstr "Nom" - -#: audacious-plugins/src/ladspa/ladspa.c:952 -msgid "UID" -msgstr "UID" - -#: audacious-plugins/src/ladspa/ladspa.c:1029 -msgid "Installed plugins" -msgstr "Extensions installées" - -#: audacious-plugins/src/ladspa/ladspa.c:1037 -msgid "Running plugins" -msgstr "Extensions utilisées" - -#: audacious-plugins/src/ladspa/ladspa.c:1052 -msgid "Add" -msgstr "Ajouter" - -#: audacious-plugins/src/ladspa/ladspa.c:1055 -msgid "Remove" -msgstr "Enlever" - -#: audacious-plugins/src/ladspa/ladspa.c:1066 -msgid "LADSPA Plugin Catalog" -msgstr "Liste des extensions « LADSPA »" +#: src/ladspa/plugin.c:415 +msgid "About LADSPA Host" +msgstr "" -#: audacious-plugins/src/lirc/lirc.c:82 +#: src/ladspa/plugin.c:516 #, c-format -msgid "%s: could not init LIRC support\n" -msgstr "%s: impossible d'initialiser le support « LIRC »\n" +msgid "%s Settings" +msgstr "" -#: audacious-plugins/src/lirc/lirc.c:90 -#, c-format -msgid "" -"%s: could not read LIRC config file\n" -"%s: please read the documentation of LIRC\n" -"%s: how to create a proper config file\n" -msgstr "" -"%s: impossible de lire le fichier de configuration de « LIRC »\n" -"%s: veuillez consulter la documentation de « LIRC »\n" -"%s: relative à la création d'un fichier de configuration correct\n" +#: src/ladspa/plugin.c:584 +msgid "LADSPA Host Settings" +msgstr "" -#: audacious-plugins/src/lirc/lirc.c:117 -#, c-format -msgid "%s: trying to reconnect...\n" -msgstr "%s: tentative de reconnexion...\n" +#: src/ladspa/plugin.c:593 +msgid "Module paths:" +msgstr "Chemins de recherche des greffons :" -#: audacious-plugins/src/lirc/lirc.c:332 -#, c-format -msgid "%s: unknown command \"%s\"\n" -msgstr "%s: commande inconnue \"%s\"\n" +#: src/ladspa/plugin.c:598 +msgid "" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." +msgstr "" +"Séparez les différents chemins par deux points («:»).⎠\n" +"Les greffons seront recherchés dans ces chemins ainsi que deux de LADSPA_PATH.⎠Après avoir ajouté de nouveaux chemins, pressez Entrée pour mettre à jour les greffons disponibles." -#: audacious-plugins/src/lirc/lirc.c:342 -#, c-format -msgid "%s: disconnected from LIRC\n" -msgstr "%s: déconnecté de « LIRC »\n" +#: src/ladspa/plugin.c:614 +msgid "Available plugins:" +msgstr "Greffons disponibles :" -#: audacious-plugins/src/lirc/lirc.c:346 -#, c-format -msgid "%s: will try reconnect every %d seconds...\n" -msgstr "%s: le système va essayer de se reconnecter toutes les %d secondes...\n" +#: src/ladspa/plugin.c:626 +msgid "Enable" +msgstr "Activer" -#: audacious-plugins/src/lirc/about.c:63 -msgid "About LIRC Audacious Plugin" -msgstr "À propos du module « LIRC »" +#: src/ladspa/plugin.c:632 +msgid "Enabled plugins:" +msgstr "Greffons activés :" -#: audacious-plugins/src/lirc/about.c:90 -msgid "LIRC Plugin " -msgstr "Module « LIRC » " +#: src/ladspa/plugin.c:647 +msgid "Settings" +msgstr "" -#: audacious-plugins/src/lirc/about.c:92 +#: src/lyricwiki/lyricwiki.c:267 msgid "" "\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" -"\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" +"Looking for lyrics..." msgstr "" "\n" +"Recherche les paroles" + +#: src/lyricwiki/lyricwiki.c:304 +msgid "" "\n" -"« LIRC » est un module simple qui permet de contrôler\n" -"Audacious en utilisant le démon de contrôle distant « LIRC ».\n" -"\n" -"Le module a été adapté pour Audacious par\n" -"Tony Vroon ,\n" -"à partir du module « LIRC » pour XMMS écrit par :\n" -"\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" +"Connecting to lyrics.wikia.com..." +msgstr "" "\n" -"Vous pouvez obtenir des informations sur « LIRC » à cette adresse :\n" -"http://lirc.org" - -#: audacious-plugins/src/lirc/interface.c:37 -msgid "LIRC plugin settings" -msgstr "Paramètres du module « LIRC » " - -#: audacious-plugins/src/lirc/interface.c:61 -msgid "Reconnect to LIRC server" -msgstr "Se reconnecter au serveur « LIRC »" - -#: audacious-plugins/src/lirc/interface.c:68 -msgid "Timeout before reconnecting (seconds): " -msgstr "Délai (secondes) avant la reconnexion :" +"Se connecte à lyrics.wikia.com..." -#: audacious-plugins/src/lirc/interface.c:75 -msgid "Reconnect" -msgstr "Reconnexion" - -#: audacious-plugins/src/lirc/interface.c:79 -msgid "Connection" -msgstr "Connexion" - -#: audacious-plugins/src/lyricwiki/lyricwiki.c:244 -msgid "LyricWiki" -msgstr "LyricWiki" - -#: audacious-plugins/src/lyricwiki/lyricwiki.c:326 +#: src/lyricwiki/lyricwiki.c:377 msgid "" "\n" "No lyrics were found." @@ -3023,11 +2160,11 @@ "\n" "Les paroles n'ont pas été trouvées." -#: audacious-plugins/src/metronom/metronom.c:90 +#: src/metronom/metronom.c:86 msgid "About Metronom" msgstr "À propos du module « Métronome »" -#: audacious-plugins/src/metronom/metronom.c:91 +#: src/metronom/metronom.c:87 msgid "" "A Tact Generator by Martin Strauss \n" "\n" @@ -3046,41 +2183,62 @@ "'tact://77' produira 77 battements par minute\n" "'tact://60*3/4' produira 60 battements par minute (mesure à 3/4)" -#: audacious-plugins/src/metronom/metronom.c:145 +#: src/metronom/metronom.c:144 #, c-format msgid "Tact generator: %d bpm" msgstr "Métronome : %d bpm" -#: audacious-plugins/src/metronom/metronom.c:147 +#: src/metronom/metronom.c:146 #, c-format msgid "Tact generator: %d bpm %d/%d" msgstr "Métronome : %d bpm %d/%d" -#: audacious-plugins/src/mpg123/mpg123.c:179 +#: src/mixer/plugin.c:64 +msgid "About Channel Mixer" +msgstr "À propos du module de mélange des canaux" + +#: src/mixer/plugin.c:93 +msgid "Channel Mixer Settings" +msgstr "Préférence de mixage de canaux" + +#: src/mixer/plugin.c:102 +msgid "Output channels:" +msgstr "Canaux de sortie :" + +#: src/mixer/plugin.c:112 +msgid "Changes take effect at the next song change." +msgstr "" +"Les changements prendront effet lors du prochain changement de morceau" + +#: src/mpg123/mpg123.c:191 msgid "Surround" msgstr "Son d'ambiance" -#: audacious-plugins/src/mtp_up/mtp.c:35 -msgid "Upload selected track(s)" -msgstr "Transférer la sélection" - -#: audacious-plugins/src/mtp_up/mtp.c:292 +#: src/mtp_up/mtp.c:340 msgid "Upload in progress..." msgstr "Transfert en cours..." -#: audacious-plugins/src/mtp_up/mtp.c:301 -msgid "MTP device handler" -msgstr "Support MTP" - -#: audacious-plugins/src/mtp_up/mtp.c:305 -msgid "Disconnect the device" -msgstr "Déconnecter le périphérique" +#: src/mtp_up/mtp.c:352 +msgid "Upload to MTP Device" +msgstr "Envoyer vers le périphérique MTP" + +#: src/mtp_up/mtp.c:353 +msgid "Disconnect MTP Device" +msgstr "Déconnecter le périphérique MTP" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Stopped" +msgstr "Arreté" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Audacious is not playing." +msgstr "Audacious n'est pas en train de lire de la musique." -#: audacious-plugins/src/null/null.c:63 +#: src/null/null.c:64 msgid "Null output plugin " msgstr "Module de sortie « Null » " -#: audacious-plugins/src/null/null.c:64 +#: src/null/null.c:65 msgid "" " by Christian Birchinger \n" "based on the XMMS plugin by HÃ¥vard KvÃ¥l " @@ -3090,1474 +2248,1039 @@ "Écrit par Christian Birchinger ,\n" "à partir du module pour XMMS de HÃ¥vard KvÃ¥l " -#: audacious-plugins/src/null/null.c:67 +#: src/null/null.c:68 msgid "About Null Output" msgstr "À propos du module de sortie « Null »" -#: audacious-plugins/src/null/null.c:93 +#: src/null/null.c:89 msgid "Null output preferences" msgstr "Préférences du module de sortie « Null »" -#: audacious-plugins/src/null/null.c:102 +#: src/null/null.c:100 msgid "Run in real time" msgstr "Utiliser en temps réel" -#: audacious-plugins/src/OSS/OSS.c:40 -msgid "About OSS Driver" -msgstr "À propos du pilote « OSS »" +#: src/oss4/configure.c:81 +msgid "1. Default device" +msgstr "1. Périphérique par défaut" -#: audacious-plugins/src/OSS/OSS.c:41 -msgid "" -"Audacious OSS Driver\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" -"Pilote « OSS » pour Audacious\n" -"\n" -"Ceci est une traduction non officielle de la « GNU General Public License »\n" -"en français. Elle n'a pas été publiée par la « Free Software Foundation »,\n" -"et ne détermine pas les termes de distribution pour les logiciels qui\n" -"utilisent la « GNU GPL » -- seul le texte anglais original de la « GNU GPL »\n" -"en a le droit. Cependant, nous espérons que cette traduction aidera les\n" -"francophones à mieux comprendre la « GNU GPL ».\n" -"\n" -"Ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le\n" -"modifier selon les termes de la « Licence Publique Générale GNU » (GNU GPL),\n" -"telle que publiée par la « Free Software Foundation », soit la version 2 de\n" -"la Licence, soit (à votre convenance) toute version postérieure.\n" -"\n" -"Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE\n" -"GARANTIE, sans même la garantie implicite d'une possible VALEUR MARCHANDE\n" -"ou de l'ADÉQUATION à UN BESOIN PARTICULIER. Consultez la « Licence Publique\n" -"Générale GNU » (GNU GPL) pour plus de détails.\n" -"\n" -"Vous devriez avoir reçu une copie de la « Licence Publique Générale GNU »\n" -"(GNU GPL) avec ce programme. Dans le cas contraire, vous pouvez consulter\n" -"la Licence sur la page ou écrire à la\n" -"Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" -"MA 02110-1301, USA." +#: src/oss4/configure.c:138 +msgid "OSS4 Output Plugin Preferences" +msgstr "Préférences du module de sortie « OSS4 »" + +#: src/oss4/configure.c:150 src/OSS/configure.c:194 +msgid "Audio device:" +msgstr "Périphérique audio :" -#: audacious-plugins/src/OSS/configure.c:148 +#: src/oss4/configure.c:178 src/OSS/configure.c:217 src/OSS/configure.c:260 +msgid "Use alternate device:" +msgstr "Utiliser un autre périphérique :" + +#: src/oss4/configure.c:193 +msgid "Save volume between sessions" +msgstr "Conserver le volume, d'une session à l'autre" + +#: src/oss4/configure.c:197 +msgid "Enable format conversions made by the OSS software." +msgstr "Activer les conversions de format logicielles de « OSS »." + +#: src/oss4/configure.c:201 +msgid "Enable exclusive mode to prevent virtual mixing." +msgstr "" + +#: src/oss4/plugin.c:51 +msgid "About OSS4 Plugin" +msgstr "À propos du module « OSS4 »" + +#: src/oss4/utils.c:211 +msgid "OSS4 error" +msgstr "Erreur OSS4" + +#: src/OSS/configure.c:137 #, c-format msgid "Default (%s)" msgstr "Défaut (%s)" -#: audacious-plugins/src/OSS/configure.c:197 +#: src/OSS/configure.c:178 msgid "OSS Driver configuration" msgstr "Configuration du pilote « OSS »" -#: audacious-plugins/src/OSS/configure.c:213 -msgid "Audio device:" -msgstr "Périphérique audio :" - -#: audacious-plugins/src/OSS/configure.c:235 -#: audacious-plugins/src/OSS/configure.c:276 -msgid "Use alternate device:" -msgstr "Utiliser un autre périphérique :" - -#: audacious-plugins/src/OSS/configure.c:298 +#: src/OSS/configure.c:281 msgid "Devices" msgstr "Périphériques" -#: audacious-plugins/src/OSS/configure.c:300 +#: src/OSS/configure.c:283 msgid "Buffering:" msgstr "Tampon" -#: audacious-plugins/src/OSS/configure.c:313 +#: src/OSS/configure.c:296 msgid "Pre-buffer (percent):" msgstr "Pré-tampon (pourcents) :" -#: audacious-plugins/src/OSS/configure.c:324 +#: src/OSS/configure.c:307 msgid "Buffering" msgstr "Tampon" -#: audacious-plugins/src/OSS/configure.c:325 +#: src/OSS/configure.c:308 msgid "Mixer Settings:" msgstr "Paramètres du mélangeur :" -#: audacious-plugins/src/OSS/configure.c:331 +#: src/OSS/configure.c:314 msgid "Volume controls Master not PCM" msgstr "Contrôle du volume via le canal « maître » au lieu du canal « PCM »" -#: audacious-plugins/src/OSS/configure.c:337 +#: src/OSS/configure.c:320 msgid "Mixer" msgstr "Mélangeur audio" -#: audacious-plugins/src/oss4/utils.c:204 -msgid "OSS4 error" -msgstr "Erreur OSS4" - -#: audacious-plugins/src/oss4/plugin.c:54 -msgid "About OSS4 Plugin" -msgstr "À propos du module « OSS4 »" - -#: audacious-plugins/src/oss4/plugin.c:55 -msgid "" -"OSS4 Output Plugin for Audacious\n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"I would like to thank people on #audacious, especially Tony Vroon and John Lindgren and of course the authors of the previous OSS plugin.\n" -"\n" -"This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n" -"\n" -"This program 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 General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License along with this program. If not, see .\n" -msgstr "" -"Module de sortie « OSS4 » pour Audacious\n" -"Droits d'utilisation (2010) : MichaÅ‚ Lipski \n" -"\n" -"Je voudrais remercier les personnes de #audacious -Tony Vroon et John Lindgren en particulier- et, bien entendu, les auteurs du module « OSS » précédent.\n" -"\n" -"\n" -"Ceci est une traduction non officielle de la « GNU General Public License » en français. Elle n'a pas été publiée par la « Free Software Foundation » et ne détermine pas les termes de distribution pour les logiciels qui utilisent la « GNU GPL » -- seul le texte anglais original de la « GNU GPL » en a le droit. Cependant, nous espérons que cette traduction aidera les francophones à mieux comprendre la « GNU GPL ».\n" -"\n" -"Ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le\n" -" modifier selon les termes de la « Licence Publique Générale GNU » (GNU GPL), telle que publiée par la « Free Software Foundation », soit la version 2 de la Licence, soit (à votre convenance) toute version postérieure.\n" -"\n" -"\"Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite d'une possible VALEUR MARCHANDE ou de l'ADÉQUATION à UN BESOIN PARTICULIER. Consultez la « Licence Publique Générale GNU » (GNU GPL) pour plus de détails.\n" -"\n" -"Vous devriez avoir reçu une copie de la « Licence Publique Générale GNU » (GNU GPL) avec ce programme. Dans le cas contraire, vous pouvez consulter la Licence sur la page \n" - -#: audacious-plugins/src/oss4/configure.c:89 -msgid "1. Default device" -msgstr "1. Périphérique par défaut" - -#: audacious-plugins/src/oss4/configure.c:151 -msgid "OSS4 Output Plugin Preferences" -msgstr "Préférences du module de sortie « OSS4 »" - -#: audacious-plugins/src/oss4/configure.c:202 -msgid "Save volume between sessions" -msgstr "Conserver le volume, d'une session à l'autre" - -#: audacious-plugins/src/oss4/configure.c:206 -msgid "Enable format conversions made by the OSS software." -msgstr "Activer les conversions de format logicielles de « OSS »." +#: src/OSS/OSS.c:41 +msgid "About OSS Driver" +msgstr "À propos du pilote « OSS »" -#: audacious-plugins/src/pulse_audio/pulse_audio.c:691 +#: src/pulse_audio/pulse_audio.c:669 msgid "About Audacious PulseAudio Output Plugin" msgstr "À propos du module de sortie « PulseAudio » pour Audacious" -#: audacious-plugins/src/pulse_audio/pulse_audio.c:692 -msgid "" -"Audacious PulseAudio Output Plugin\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" -"Module de sortie « PulseAudio » pour Audacious\n" -"\n" -"Ceci est une traduction non officielle de la « GNU General Public License »\n" -"en français. Elle n'a pas été publiée par la « Free Software Foundation »,\n" -"et ne détermine pas les termes de distribution pour les logiciels qui\n" -"utilisent la « GNU GPL » -- seul le texte anglais original de la « GNU GPL »\n" -"en a le droit. Cependant, nous espérons que cette traduction aidera les\n" -"francophones à mieux comprendre la « GNU GPL ».\n" -"\n" -"Ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le\n" -"modifier selon les termes de la « Licence Publique Générale GNU » (GNU GPL),\n" -"telle que publiée par la « Free Software Foundation », soit la version 2 de\n" -"la Licence, soit (à votre convenance) toute version postérieure.\n" -"\n" -"Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE\n" -"GARANTIE, sans même la garantie implicite d'une possible VALEUR MARCHANDE\n" -"ou de l'ADÉQUATION à UN BESOIN PARTICULIER. Consultez la « Licence Publique\n" -"Générale GNU » (GNU GPL) pour plus de détails.\n" -"\n" -"Vous devriez avoir reçu une copie de la « Licence Publique Générale GNU »\n" -"(GNU GPL) avec ce programme. Dans le cas contraire, vous pouvez consulter\n" -"la Licence sur la page ou écrire à la\n" -"Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" -"MA 02110-1301, USA." - -#: audacious-plugins/src/resample/plugin.c:78 +#: src/resample/plugin.c:89 msgid "About Sample Rate Converter Plugin" msgstr "À propos du module « Sample Rate Converter »" -#: audacious-plugins/src/resample/plugin.c:134 +#: src/resample/plugin.c:144 msgid "Sample Rate Converter Preferences" msgstr "Préférence du module « Sample Rate Converter »" -#: audacious-plugins/src/resample/plugin.c:146 +#: src/resample/plugin.c:156 msgid "Rate mappings:" msgstr "Correspondances des fréquences :" -#: audacious-plugins/src/resample/plugin.c:169 +#: src/resample/plugin.c:179 msgid "All others:" msgstr "Toutes les autres :" -#: audacious-plugins/src/resample/plugin.c:181 +#: src/resample/plugin.c:191 msgid "Method:" msgstr "Méthode :" -#: audacious-plugins/src/scrobbler/plugin.c:213 -msgid "" -"Audacious AudioScrobbler Plugin\n" -"\n" -"Originally created by Audun Hove and Pipian \n" -msgstr "" -"Module « AudioScrobbler » pour Audacious\n" -"\n" -"Initialement créé par Audun Hove et Pipian \n" - -#: audacious-plugins/src/scrobbler/plugin.c:215 -msgid "About Scrobbler Plugin" -msgstr "À propos du module « Scrobbler »" - -#: audacious-plugins/src/scrobbler/configure.c:152 -#: audacious-plugins/src/scrobbler/configure.c:228 +#: src/scrobbler/configure.c:123 src/scrobbler/configure.c:198 msgid "Change password" msgstr "Modifier le mot de passe" -#: audacious-plugins/src/scrobbler/configure.c:174 +#: src/scrobbler/configure.c:144 msgid "Services" msgstr "Services" -#: audacious-plugins/src/scrobbler/configure.c:196 +#: src/scrobbler/configure.c:166 msgid "Username:" msgstr "Nom d'utilisateur :" -#: audacious-plugins/src/scrobbler/configure.c:202 +#: src/scrobbler/configure.c:172 msgid "Password:" msgstr "Mot de passe :" -#: audacious-plugins/src/scrobbler/configure.c:210 +#: src/scrobbler/configure.c:180 msgid "Scrobbler URL:" msgstr "Adresse Scrobbler :" -#: audacious-plugins/src/scrobbler/configure.c:242 +#: src/scrobbler/configure.c:212 msgid "Last.FM" msgstr "Last.FM" -#: audacious-plugins/src/scrobbler/configure.c:287 +#: src/scrobbler/configure.c:239 msgid "Scrobbler" msgstr "Scrobbler" -#: audacious-plugins/src/sid/xs_glade.c:90 -#: audacious-plugins/src/sid/xs_glade.c:114 -#, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "Impossible d'ouvrir l'image : %s" +#: src/scrobbler/plugin.c:194 +msgid "" +"Audacious AudioScrobbler Plugin\n" +"\n" +"Originally created by Audun Hove and Pipian \n" +msgstr "" +"Module « AudioScrobbler » pour Audacious\n" +"\n" +"Initialement créé par Audun Hove et Pipian \n" -#: audacious-plugins/src/sid/xs_fileinfo.c:151 -msgid "General info" -msgstr "Général" +#: src/scrobbler/plugin.c:196 +msgid "About Scrobbler Plugin" +msgstr "À propos du module « Scrobbler »" + +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" +msgstr "AÌ€ propos du module de sortie SDL" + +#: src/sdlout/plugin.c:78 +msgid "SDL error" +msgstr "Erreur SDL" + +#: src/search-tool/search-tool.c:42 +msgid "Genre" +msgstr "Genre" + +#: src/search-tool/search-tool.c:96 src/search-tool/search-tool.c:106 +msgid "Library" +msgstr "Bibliothèque" + +#: src/search-tool/search-tool.c:591 +msgid "_Create Playlist" +msgstr "_Créer une liste de lecture" + +#: src/search-tool/search-tool.c:598 +msgid "_Add to Playlist" +msgstr "_Ajouter à la liste de lecture" + +#: src/search-tool/search-tool.c:641 +msgid "Search library" +msgstr "Rechercher" + +#: src/search-tool/search-tool.c:645 +msgid "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." +msgstr "" +"Pour importer votre bibliothèque musicale dans Audacious, choisissez un " +"dossier, puis utilisez l'icône de rafraichissement." + +#: src/search-tool/search-tool.c:653 +msgid "Please wait ..." +msgstr "Veuillez patienter …" + +#: src/search-tool/search-tool.c:675 +msgid "Choose Folder" +msgstr "Choisissez un dossier" + +#: src/skins/plugin.c:167 +msgid "About Skinned GUI" +msgstr "À propos de l'interface à thème" + +#: src/skins/plugin.c:168 +msgid "" +"Copyright (c) 2008, by Tomasz MoÅ„ \n" +"\n" +msgstr "" +"Droits d'utilisation : Tomasz MoÅ„ (2008)\n" +"\n" + +#: src/skins/skins_cfg.c:207 +msgid "_Player:" +msgstr "F_enêtre principale" + +#: src/skins/skins_cfg.c:208 +msgid "Select main player window font:" +msgstr "Police de la fenêtre principale du lecteur" + +#: src/skins/skins_cfg.c:210 +msgid "_Playlist:" +msgstr "_Liste de lecture" + +#: src/skins/skins_cfg.c:211 +msgid "Select playlist font:" +msgstr "Police de la liste de lecture" + +#: src/skins/skins_cfg.c:215 +msgid "_Fonts" +msgstr "_Polices" + +#: src/skins/skins_cfg.c:218 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "Utiliser des polices bitmap (supporte seulement les caractères ASCII)" + +#: src/skins/skins_cfg.c:220 +msgid "Scroll song title in both directions" +msgstr "Faire défiler le titre dans les deux sens" + +#: src/skins/skins_cfg.c:298 +msgid "_Skin" +msgstr "_Thème" + +#: src/skins/skins_cfg.c:345 +msgid "Interface Preferences" +msgstr "Préférences de l'interface" + +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "Préamplification" + +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" +msgstr "31 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "63 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" +msgstr "125 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" +msgstr "250 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" +msgstr "500 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" +msgstr "1 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" +msgstr "2 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" +msgstr "4 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" +msgstr "8 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" +msgstr "16 kHz" + +#: src/skins/ui_equalizer.c:379 +msgid "Audacious Equalizer" +msgstr "Égaliseur d'Audacious" -#: audacious-plugins/src/sid/xs_fileinfo.c:164 -#, c-format -msgid "Tune #%i: " -msgstr "Module #%i : " +#: src/skins/ui_equalizer.c:887 +msgid "Presets" +msgstr "Préréglages" -#: audacious-plugins/src/sid/xs_config.c:322 -msgid " Error" -msgstr "Erreur" +#: src/skins/ui_equalizer.c:968 src/skins/ui_manager.c:442 +msgid "Load preset" +msgstr "Charge un préréglage général." -#: audacious-plugins/src/sid/xs_about.c:84 -#, c-format -msgid "About %s" -msgstr "À propos du module « %s »" +#: src/skins/ui_equalizer.c:985 +msgid "Load auto-preset" +msgstr "" -#: audacious-plugins/src/sid/xs_interface.c:234 -msgid "Audacious-SID configuration" -msgstr "Configuration du module « Audacious-SID »" - -#: audacious-plugins/src/sid/xs_interface.c:270 -msgid "8-bit" -msgstr "8 bits" - -#: audacious-plugins/src/sid/xs_interface.c:277 -msgid "16-bit" -msgstr "16 bits" - -#: audacious-plugins/src/sid/xs_interface.c:284 -msgid "Resolution:" -msgstr "Résolution :" - -#: audacious-plugins/src/sid/xs_interface.c:315 -msgid "Autopanning" -msgstr "Son panoramique" - -#: audacious-plugins/src/sid/xs_interface.c:322 -msgid "Channels:" -msgstr "Sortie :" - -#: audacious-plugins/src/sid/xs_interface.c:366 -msgid "Samplerate:" -msgstr "Fréquence d'échantillonnage :" - -#: audacious-plugins/src/sid/xs_interface.c:383 -msgid "Use oversampling" -msgstr "Utiliser le suréchantillonnage" - -#: audacious-plugins/src/sid/xs_interface.c:394 -msgid "Factor:" -msgstr "Facteur :" - -#: audacious-plugins/src/sid/xs_interface.c:406 -msgid "Large factors require more CPU-power" -msgstr "Les facteurs élevés nécessitent plus de ressources du processeur" - -#: audacious-plugins/src/sid/xs_interface.c:412 -msgid "Oversampling:" -msgstr "Suréchantillonnage :" - -#: audacious-plugins/src/sid/xs_interface.c:417 -msgid "Audio" -msgstr "Audio" - -#: audacious-plugins/src/sid/xs_interface.c:445 -msgid "Force speed" -msgstr "Forcer la vitesse" - -#: audacious-plugins/src/sid/xs_interface.c:449 -msgid "If enabled, this option \"forces\" the emulation engine to use the selected clock speed/frequency. Otherwise the speed is determined from played file itself." -msgstr "Activée, cette option « force » le moteur de l'émulation à utiliser la vitesse/fréquence de l'horloge sélectionnée. Dans le cas contraire, la vitesse est déterminée par le fichier lui-même." - -#: audacious-plugins/src/sid/xs_interface.c:451 -msgid "PAL (50 Hz)" -msgstr "PAL (50 Hz)" - -#: audacious-plugins/src/sid/xs_interface.c:455 -msgid "PAL is the european TV standard, which uses 50Hz vertical refresh frequency. Most of SID-tunes have been made for PAL computers." -msgstr "'PAL' est le standard télévisuel européen ; il utilise une fréquence de rafraîchissement vertical de 50 hz. La plupart des compositions « SID » ont été réalisées pour les ordinateurs « PAL »." - -#: audacious-plugins/src/sid/xs_interface.c:459 -msgid "NTSC (60 Hz)" -msgstr "NTSC (60 Hz)" - -#: audacious-plugins/src/sid/xs_interface.c:463 -msgid "NTSC is the TV standard with 60Hz vertical refresh rate (and other features that differ from PAL). It is mainly used in United States, Japan and certain other countries." -msgstr "'NTSC' est le standard télévisuel qui utilise un taux de rafraîchissement vertical de 60 Hz (et d'autres caractéristiques qui diffèrent du standard « PAL »). Il est principalement utilisé aux États-Unis, au Japon et dans d'autres pays." - -#: audacious-plugins/src/sid/xs_interface.c:467 -msgid "Clock speed:" -msgstr "Vitesse d'horloge :" - -#: audacious-plugins/src/sid/xs_interface.c:484 -msgid "Force model" -msgstr "Forcer le modèle" - -#: audacious-plugins/src/sid/xs_interface.c:488 -msgid "If enabled, this option \"forces\" the emulation engine to use the selected SID-chip model. Otherwise the preferred SID model is determined from the file (if PSIDv2NG type) or if not available, this setting is used." -msgstr "Activée, cette option « force » le moteur de l'émulation à utiliser le modèle de puce « SID » sélectionné. Dans le cas contraire, le modèle « SID » adéquat est déterminé à partir du fichier (s'il est du type « PSIDv2NG »). Si l'information concernant le modèle n'est pas disponible, c'est le réglage choisi via cette option qui sera utilisé." - -#: audacious-plugins/src/sid/xs_interface.c:490 -msgid "MOS 6581" -msgstr "MOS 6581" - -#: audacious-plugins/src/sid/xs_interface.c:494 -msgid "MOS/CSG 6581 is the earlier major version of SID chip. It differs from 8580 in few ways, having much fuller filter (which, due to design error, is never same between two different SID-chips) and has the \"volume adjustment bug\", which enables playing of digital samples." -msgstr "'MOS/CSG 6581 est la toute première version majeure de la puce « SID ». Elle diffère du modèle '8580' de plusieurs manières : elle dispose d'un filtre plus complet (qui, à cause d'une erreur de conception, n'est jamais le même, d'un modèle de puce « SID » à l'autre) et présente le « problème d'ajustement du volume » qui permet la lecture des échantillons digitaux." - -#: audacious-plugins/src/sid/xs_interface.c:498 -msgid "MOS 8580" -msgstr "MOS 8580" - -#: audacious-plugins/src/sid/xs_interface.c:505 -msgid "SID model:" -msgstr "Modèle « SID » :" - -#: audacious-plugins/src/sid/xs_interface.c:522 -msgid "SIDPlay 1 (frame-based)" -msgstr "SIDPlay 1 (synchronisation de la trame)" - -#: audacious-plugins/src/sid/xs_interface.c:526 -msgid "Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most cases, though." -msgstr "Utilise la bibliothèque « libSIDPlay 1.x ». L'émulation est plus rapide, mais moins précise (toutefois, elle offre une bonne restitution, dans la plupart des cas)." - -#: audacious-plugins/src/sid/xs_interface.c:530 -msgid "SIDPlay 2 (cycle-based)" -msgstr "SIDPlay 2 (synchronisation du cycle)" - -#: audacious-plugins/src/sid/xs_interface.c:534 -msgid "Use libSIDPlay 2.x emulation, which requires powerful CPU due to more exact emulation." -msgstr "Utilise la bibliothèque « libSIDPlay 2.x ». L'émulation nécessite un processeur puissant, mais est plus précise." - -#: audacious-plugins/src/sid/xs_interface.c:538 -msgid "Emulation library selection:" -msgstr "Choix de la bibliothèque d'émulation :" - -#: audacious-plugins/src/sid/xs_interface.c:555 -msgid "Real C64 (SIDPlay 2 only)" -msgstr "C64 réel (SIDPlay 2 uniquement)" - -#: audacious-plugins/src/sid/xs_interface.c:562 -msgid "Bank switching" -msgstr "Pagination" - -#: audacious-plugins/src/sid/xs_interface.c:569 -msgid "Transparent ROM" -msgstr "ROM transparente" - -#: audacious-plugins/src/sid/xs_interface.c:576 -msgid "PlaySID environment" -msgstr "Environnement « PlaySID »" - -#: audacious-plugins/src/sid/xs_interface.c:583 -msgid "Memory mode:" -msgstr "Gestion de la mémoire :" - -#: audacious-plugins/src/sid/xs_interface.c:588 -msgid "Emu#1" -msgstr "Émulation #1" - -#: audacious-plugins/src/sid/xs_interface.c:611 -msgid "Optimization mode (faster, inaccurate)" -msgstr "Mode « optimisation » (plus rapide, mais imprécis)" - -#: audacious-plugins/src/sid/xs_interface.c:615 -msgid "This setting can be used to enable libSIDPlay2's \"optimization mode\", which in downgrades the emulation from cycle-exact to something similar to frame-exact. The result is lower CPU usage, but worse accuracy." -msgstr "Ce réglage peut être utilisé pour activer le « mode d'optimisation » de la bibliothèque « libSIDPlay2 ». Ce mode réduit l'émulation de « synchronisation du cycle » à quelque chose équivalant à « synchronisation de la trame »." - -#: audacious-plugins/src/sid/xs_interface.c:617 -msgid "reSID-emulation" -msgstr "Émulation « reSID »" - -#: audacious-plugins/src/sid/xs_interface.c:621 -msgid "reSID is the software SID-chip simulator based on SID reverse-engineering, created by Dag Lem. It is probably the closest thing to real SID available as software-only emulation." -msgstr "« reSID » est le simulateur logiciel de puces « SID » créé par Dag Lem par ingénierie inverse. Il constitue probablement l'émulation logicielle la plus proche des véritables puces « SID »." - -#: audacious-plugins/src/sid/xs_interface.c:625 -msgid "HardSID" -msgstr "HardSID" - -#: audacious-plugins/src/sid/xs_interface.c:629 -msgid "HardSID is a EISA/PCI card for PC-compatibles, which can be fitted with a real SID-chip. Software can be used to control the HardSID and combined with software emulation of rest of C64 via libSIDPlay2 HardSID can be used to achieve \"near 100%\" similarity to real C64. For more information, see http://www.hardsid.com/" -msgstr "'HardSID' est une carte EISA/PCI destinée aux systèmes compatibles PC, dans laquelle peut être insérée une véritable puce « SID ». La carte « HardSID » peut être contrôlée par un logiciel, mais, combinée à l'émulation d'un système C64 fournie par la bibliothèque « libSIDPlay2 », elle permet d'obtenir un rendu sonore « presque » similaire à celui d'un véritable C64. Pour de plus amples informations, vous pouvez consulter le site suivant : http://www.hardsid.com/" - -#: audacious-plugins/src/sid/xs_interface.c:633 -msgid "SIDPlay 2 options:" -msgstr "Options de « SIDPlay 2 » :" - -#: audacious-plugins/src/sid/xs_interface.c:650 -msgid "Fast (nearest neighbour)" -msgstr "Rapide (méthode du « plus proche voisin »)" - -#: audacious-plugins/src/sid/xs_interface.c:654 -msgid "Fastest and also worst sounding sampling method, simply picks nearest neighbouring sample." -msgstr "La plus rapide, mais aussi la pire méthode de restitution sonore : les échantillons sont choisis selon la méthode du « plus proche voisin »." - -#: audacious-plugins/src/sid/xs_interface.c:658 -msgid "Linear interpolation" -msgstr "Interpolation linéaire" - -#: audacious-plugins/src/sid/xs_interface.c:662 -msgid "Uses linear interpolation between samples, yielding higher audio quality with less sampling noise." -msgstr "Utilise l'interpolation linéaire entre les échantillons. Le flux audio est alors de plus grande qualité et est moins affecté par le bruit. " - -#: audacious-plugins/src/sid/xs_interface.c:673 -msgid "Resampling (FIR)" -msgstr "Filtre à réponse impulsionnelle finie ('FIR')" - -#: audacious-plugins/src/sid/xs_interface.c:680 -msgid "reSID sampling options:" -msgstr "Options d'échantillonnage de « reSID » :" - -#: audacious-plugins/src/sid/xs_interface.c:685 -msgid "Emu#2" -msgstr "Émulation #2" - -#: audacious-plugins/src/sid/xs_interface.c:697 -msgid "Emulate filters" -msgstr "Émuler les filtres" - -#: audacious-plugins/src/sid/xs_interface.c:701 -msgid "This option enables emulation of SID filter. The filter is an essential part of SID's sound capacity, but accurate emulation of it may require quite much CPU power. However, if filter emulation is disabled, tunes won't sound authentic at all if they utilize the filter." -msgstr "Cette option active l'émulation des filtres « SID ». Le filtre constitue l'élément' essentiel de la qualité du son « SID », mais une émulation précise peut utiliser beaucoup de ressources du processeur. Cependant, si l'émulation est désactivée, alors qu'un module audio a été composé avec les fonctions d'un filtre, le son ne sera pas restitué de manière authentique." - -#: audacious-plugins/src/sid/xs_interface.c:726 -msgid "FS" -msgstr "FS" - -#: audacious-plugins/src/sid/xs_interface.c:743 -msgid "FM" -msgstr "FM" - -#: audacious-plugins/src/sid/xs_interface.c:760 -msgid "FT" -msgstr "FT" - -#: audacious-plugins/src/sid/xs_interface.c:771 -msgid "Reset values" -msgstr "Réinitialiser" - -#: audacious-plugins/src/sid/xs_interface.c:776 -msgid "SIDPlay1" -msgstr "SIDPlay 1" - -#: audacious-plugins/src/sid/xs_interface.c:817 -msgid "Export" -msgstr "Exporter" - -#: audacious-plugins/src/sid/xs_interface.c:825 -msgid "Use" -msgstr "Utiliser" +#: src/skins/ui_equalizer.c:1015 src/skins/ui_equalizer.c:1033 +#: src/skins/ui_equalizer.c:1049 +msgid "Load equalizer preset" +msgstr "" -#: audacious-plugins/src/sid/xs_interface.c:833 -msgid "Save" -msgstr "Enregistrer" +#: src/skins/ui_equalizer.c:1068 src/skins/ui_manager.c:463 +msgid "Save preset" +msgstr "Enregistre comme préréglage général." -#: audacious-plugins/src/sid/xs_interface.c:841 -msgid "Import" -msgstr "Importer" +#: src/skins/ui_equalizer.c:1084 +msgid "Save auto-preset" +msgstr "" -#: audacious-plugins/src/sid/xs_interface.c:849 -msgid "Delete" -msgstr "Supprimer" +#: src/skins/ui_equalizer.c:1114 src/skins/ui_equalizer.c:1150 +msgid "Save equalizer preset" +msgstr "" -#: audacious-plugins/src/sid/xs_interface.c:863 -msgid "Filter curve:" -msgstr "Courbe du filtre :" - -#: audacious-plugins/src/sid/xs_interface.c:868 -msgid "SIDPlay2" -msgstr "SIDPlay 2" - -#: audacious-plugins/src/sid/xs_interface.c:874 -msgid "Filters" -msgstr "Filtres" - -#: audacious-plugins/src/sid/xs_interface.c:897 -msgid "Play at least for specified time" -msgstr "Lire au moins pendant la durée indiquée" - -#: audacious-plugins/src/sid/xs_interface.c:901 -msgid "If enabled, the tune is played at least for the specified time, adding silence to the end if necessary." -msgstr "Si cette option est activée, le module audio sera lu au moins pendant la durée indiquée. Si cela s'avère nécessaire, un silence sera ajouté à la fin du morceau." - -#: audacious-plugins/src/sid/xs_interface.c:908 -#: audacious-plugins/src/sid/xs_interface.c:962 -#: audacious-plugins/src/sid/xs_interface.c:1142 -msgid "Playtime:" -msgstr "Durée :" - -#: audacious-plugins/src/sid/xs_interface.c:928 -msgid "Minimum playtime:" -msgstr "Durée de lecture minimale :" - -#: audacious-plugins/src/sid/xs_interface.c:945 -msgid "Play for specified time maximum" -msgstr "Lire au maximum pendant la durée indiquée" - -#: audacious-plugins/src/sid/xs_interface.c:949 -msgid "If enabled, tune is played until specified duration is reached (aka maximum playtime)." -msgstr "Si cette option est activée, le module audio sera lu jusqu'à ce que soit atteinte la durée indiquée (la durée de lecture maximale, en d'autres termes)." - -#: audacious-plugins/src/sid/xs_interface.c:951 -msgid "Only when song length is unknown" -msgstr "Uniquement si la durée du module audio est inconnue" - -#: audacious-plugins/src/sid/xs_interface.c:955 -msgid "If enabled, the maximum playtime is applied only if song/tune length is not known." -msgstr "Si cette option est activée, la durée de lecture maximale ne sera appliquée que si la durée du module audio ne peut pas être déterminée." - -#: audacious-plugins/src/sid/xs_interface.c:982 -msgid "Maximum playtime:" -msgstr "Durée de lecture maximale :" - -#: audacious-plugins/src/sid/xs_interface.c:999 -msgid "Use XSIDPLAY-compatible database" -msgstr "Utiliser une base de données compatible avec « XSIDPLAY »" - -#: audacious-plugins/src/sid/xs_interface.c:1003 -msgid "This option enables using of XSIDPLAY compatible song length database. (Refer to Audacious-SID documentation for more information)" -msgstr "Cette option active l'utilisation d'une base de données compatible avec « XSIDPLAY », relative à la durée des modules audio. Pour de plus amples informations, vous pouvez consulter la documentation de « Audacious-SID »." - -#: audacious-plugins/src/sid/xs_interface.c:1010 -msgid "DB-file:" -msgstr "Fichier :" - -#: audacious-plugins/src/sid/xs_interface.c:1020 -msgid "Database path and filename" -msgstr "Emplacement et nom du fichier de la base de données" - -#: audacious-plugins/src/sid/xs_interface.c:1027 -msgid "Browse for song length-database file" -msgstr "Permet de parcourir l'arborescence pour sélectionner le fichier de la base de données" - -#: audacious-plugins/src/sid/xs_interface.c:1049 -msgid "Song length database:" -msgstr "Base de données relative à la durée des modules audio :" +#: src/skins/ui_equalizer.c:1169 src/skins/ui_manager.c:478 +msgid "Delete preset" +msgstr "Efface un préréglage." -#: audacious-plugins/src/sid/xs_interface.c:1054 -msgid "Songlength" -msgstr "Durée" +#: src/skins/ui_equalizer.c:1186 +msgid "Delete auto-preset" +msgstr "" -#: audacious-plugins/src/sid/xs_interface.c:1072 -msgid "Override generic Tuplez format string" -msgstr "Remplacer les titres génériques" +#: src/skins/ui_main.c:444 +msgid "kbps" +msgstr "kbps" -#: audacious-plugins/src/sid/xs_interface.c:1076 -msgid "By enabling this option you can specify a custom Tuplez formatting string for SID-files. The SID-plugin specific Tuplez tags are described shortly below." -msgstr "Si vous cochez cette option, vous pourrez indiquer un format de titre personnalisé pour les fichiers « SID ». Les métadonnées propres au module d'extension « SID » sont brièvement expliquées ci-dessous." +#: src/skins/ui_main.c:452 +msgid "kHz" +msgstr "kHz" -#: audacious-plugins/src/sid/xs_interface.c:1087 -msgid "Tuplez format string for SID-files" -msgstr "Format du titre des modules audio « SID »" +#: src/skins/ui_main.c:459 +msgid "surround" +msgstr "son d'ambiance" -#: audacious-plugins/src/sid/xs_interface.c:1090 -msgid "" -"SID-specific Tuplez fields:\n" -"\n" -"sid-format\t\t- Specific fileformat\n" -"sid-model\t\t- 6581 or 8580\n" -"sid-speed\t\t- Timing or speed: PAL/NTSC/etc.\n" -"\n" -"Other \"special\" fields set:\n" -"\n" -"subsong-num, subsong-id" -msgstr "" -"Champs des métadonnées propres à « SID » :\n" -"\n" -"sid-format\t\t- Format de fichier spécifique\n" -"sid-model\t\t- 6581 ou 8580\n" -"sid-speed\t\t- Fréquence ou vitesse : « PAL » / « NTSC » / etc.\n" -"\n" -"Autres champs « spéciaux » :\n" -"\n" -"subsong-num, subsong-id" +#: src/skins/ui_main.c:807 +#, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "Aller à %d:%-2.2d/%d:%-2.2d" -#: audacious-plugins/src/sid/xs_interface.c:1098 -msgid "Song title format:" -msgstr "Format du titre :" +#: src/skins/ui_main.c:828 +#, c-format +msgid "Volume: %d%%" +msgstr "Volume : %d%%" -#: audacious-plugins/src/sid/xs_interface.c:1103 -msgid "Title" -msgstr "Titre" +#: src/skins/ui_main.c:851 +#, c-format +msgid "Balance: %d%% left" +msgstr "Balance : %d%% gauche" -#: audacious-plugins/src/sid/xs_interface.c:1125 -msgid "Add sub-tunes to playlist" -msgstr "Ajouter les sous-modules à la liste de lecture" - -#: audacious-plugins/src/sid/xs_interface.c:1129 -msgid "If enabled, sub-tunes of each file will be added to playlist. If disabled, only the default sub-tune will be added." -msgstr "Si cette option est activée, les sous-modules de chaque fichier seront ajoutés à la liste de lecture. Dans le cas contraire, seul le sous-module par défaut sera ajouté." - -#: audacious-plugins/src/sid/xs_interface.c:1131 -msgid "Only tunes with specified minimum duration" -msgstr "Uniquement les morceaux dont la durée minimale est la suivante :" - -#: audacious-plugins/src/sid/xs_interface.c:1135 -msgid "Only add sub-tunes that have a duration of at least specified time." -msgstr "Ajoute uniquement les sous-modules dont la durée est au moins égale au temps spécifié." - -#: audacious-plugins/src/sid/xs_interface.c:1162 -msgid "Sub-tune handling:" -msgstr "Gestion des sous-modules :" - -#: audacious-plugins/src/sid/xs_interface.c:1179 -msgid "Use STIL database" -msgstr "Utiliser une base de données « STIL »" - -#: audacious-plugins/src/sid/xs_interface.c:1183 -msgid "If this option is enabled (and the database & HVSC settings below are correctly set), Audacious-SID will use and display additional information from STIL database when HVSC SIDs are played." -msgstr "Si cette option est activée (et que la base de données ainsi que les paramètres « HVSC » ci-dessous sont correctement configurés), « Audacious-SID » utilisera et affichera des informations supplémentaires, à partir de la base de données « STIL », lorsque des modules audio « SID » de la collection « HVSC » seront lus." - -#: audacious-plugins/src/sid/xs_interface.c:1190 -msgid "STIL file:" -msgstr "Fichier « STIL » :" - -#: audacious-plugins/src/sid/xs_interface.c:1206 -msgid "Path and filename of STIL database file (STIL.txt), usually found from HVSC's DOCUMENTS-subdirectory." -msgstr "Emplacement et nom du fichier de la base de données « STIL » (le fichier \"STIL.txt\" est habituellement situé dans le sous-répertoire \"DOCUMENTS\" du dossier \"HVSC\")." - -#: audacious-plugins/src/sid/xs_interface.c:1219 -msgid "Browse for STIL-database file" -msgstr "Permet de parcourir l'arborescence pour sélectionner le fichier de la base de données « STIL »" - -#: audacious-plugins/src/sid/xs_interface.c:1246 -msgid "HVSC path:" -msgstr "Emplacement de « HVSC » :" - -#: audacious-plugins/src/sid/xs_interface.c:1262 -msgid "Path to base-directory of your High Voltage SID Collection (HVSC), for example /media/C64Music/" -msgstr "Emplacement du dossier de base de « High Voltage SID Collection » (HVSC) (\"/media/C64Music/\", par exemple)" - -#: audacious-plugins/src/sid/xs_interface.c:1275 -msgid "Browse for HVSC path" -msgstr "Permet de parcourir l'arborescence pour sélectionner le dossier \"HVSC\"" - -#: audacious-plugins/src/sid/xs_interface.c:1297 -msgid "SID Tune Information List (STIL) database:" -msgstr "Base de données « STIL » (SID Tune Information List) :" - -#: audacious-plugins/src/sid/xs_interface.c:1321 -msgid "Cancel any changes" -msgstr "Annule tous les changements" - -#: audacious-plugins/src/sid/xs_interface.c:1328 -msgid "Accept and update changes" -msgstr "Valide et applique les changements" - -#: audacious-plugins/src/sid/xs_interface.c:1628 -msgid "Audacious-SID Fileinfo" -msgstr "Infomations sur le fichier « Audacious-SID »" - -#: audacious-plugins/src/sid/xs_interface.c:1649 -msgid "Filename:" -msgstr "Nom du fichier :" - -#: audacious-plugins/src/sid/xs_interface.c:1657 -msgid "Songname:" -msgstr "Nom du morceau :" - -#: audacious-plugins/src/sid/xs_interface.c:1665 -msgid "Composer:" -msgstr "Compositeur :" - -#: audacious-plugins/src/sid/xs_interface.c:1673 -msgid "Copyright:" -msgstr "Droits :" - -#: audacious-plugins/src/sid/xs_interface.c:1717 -msgid "Song Information:" -msgstr "Informations sur le module :" - -#: audacious-plugins/src/sid/xs_interface.c:1752 -msgid "Author:" -msgstr "Auteur :" - -#: audacious-plugins/src/sid/xs_interface.c:1786 -msgid "Duration:" -msgstr "Durée :" - -#: audacious-plugins/src/sid/xs_interface.c:1820 -msgid "Sub-tune Information:" -msgstr "Informations sur les sous-modules :" - -#: audacious-plugins/src/sid/xs_interface.c:1881 -msgid "Select HVSC song length database" -msgstr "Choix de la base de données « HVSC »" - -#: audacious-plugins/src/sid/xs_interface.c:1922 -msgid "Select STIL-database" -msgstr "Choix de la base de données « STIL »" - -#: audacious-plugins/src/sid/xs_interface.c:1963 -msgid "Select HVSC location prefix" -msgstr "Emplacement de « HVSC »" - -#: audacious-plugins/src/sid/xs_interface.c:2004 -msgid "Select SIDPlay2 filters file for importing" -msgstr "Fichier de filtres « SIDPlay2 » à importer :" - -#: audacious-plugins/src/sid/xs_interface.c:2045 -msgid "Select SIDPlay2 filters file for exporting" -msgstr "Fichier de filtres « SIDPlay2 » à exporter :" - -#: audacious-plugins/src/sid/xs_interface.c:2093 -#: audacious-plugins/src/sid/xs_interface.c:2106 -msgid "Confirm selected action" -msgstr "Confirmer l'action choisie" +#: src/skins/ui_main.c:853 +msgid "Balance: center" +msgstr "Balance : centre" -#: audacious-plugins/src/sid/xs_interface.c:2123 -msgid "Yes" -msgstr "Oui" +#: src/skins/ui_main.c:855 +#, c-format +msgid "Balance: %d%% right" +msgstr "Balance : %d%% droite" -#: audacious-plugins/src/sid/xs_interface.c:2129 -msgid "No" -msgstr "Aucun" +#: src/skins/ui_main.c:981 +msgid "Options Menu" +msgstr "Menu des options" -#: audacious-plugins/src/skins/skins_cfg.c:316 -msgid "_Player:" -msgstr "F_enêtre principale" +#: src/skins/ui_main.c:985 +msgid "Disable 'Always On Top'" +msgstr "Annuler « Toujours au premier plan »" -#: audacious-plugins/src/skins/skins_cfg.c:316 -msgid "Select main player window font:" -msgstr "Police de la fenêtre principale du lecteur" +#: src/skins/ui_main.c:987 +msgid "Enable 'Always On Top'" +msgstr "Activer « Toujours au premier plan »" -#: audacious-plugins/src/skins/skins_cfg.c:317 -msgid "_Playlist:" -msgstr "_Liste de lecture" +#: src/skins/ui_main.c:990 +msgid "File Info Box" +msgstr "Informations sur le fichier" -#: audacious-plugins/src/skins/skins_cfg.c:317 -msgid "Select playlist font:" -msgstr "Police de la liste de lecture" +#: src/skins/ui_main.c:995 +msgid "Visualization Menu" +msgstr "Menu des effets visuels" -#: audacious-plugins/src/skins/skins_cfg.c:321 -msgid "_Fonts" -msgstr "_Polices" +#: src/skins/ui_main.c:1653 +msgid "Single mode." +msgstr "Mode « Fichier unique »." -#: audacious-plugins/src/skins/skins_cfg.c:323 -msgid "Use Bitmap fonts if available" -msgstr "Utiliser les polices matricielles (si elles sont disponibles)" - -#: audacious-plugins/src/skins/skins_cfg.c:323 -msgid "Use bitmap fonts if they are available. Bitmap fonts do not support Unicode strings." -msgstr "Cette option permet d'utiliser les polices matricielles ('bitmap'), si elles sont disponibles. Ces polices ne gèrent pas la norme « Unicode » (caractères accentués)." - -#: audacious-plugins/src/skins/skins_cfg.c:324 -msgid "_Miscellaneous" -msgstr "_Divers" - -#: audacious-plugins/src/skins/skins_cfg.c:325 -msgid "Show separators in playlist" -msgstr "Afficher les barres de séparation dans la liste de lecture" - -#: audacious-plugins/src/skins/skins_cfg.c:327 -msgid "Show window manager decoration" -msgstr "Montrer la décoration du gestionnaire de fenêtres" - -#: audacious-plugins/src/skins/skins_cfg.c:328 -msgid "This enables the window manager to show decorations for windows." -msgstr "Cette option affiche les ornements propres au gestionnaire de fenêtres du système." - -#: audacious-plugins/src/skins/skins_cfg.c:329 -msgid "Use two-way text scroller" -msgstr "Utiliser le défilement de texte bidirectionnel" - -#: audacious-plugins/src/skins/skins_cfg.c:330 -msgid "If selected, the file information text in the main window will scroll back and forth. If not selected, the text will only scroll in one direction." -msgstr "Si cette option est cochée, le texte d'information relatif au morceau écouté défilera dans la fenêtre principale, vers la gauche et vers la droite. Sinon, le texte défilera dans une seule direction." - -#: audacious-plugins/src/skins/skins_cfg.c:331 -msgid "Disable inline gtk theme" -msgstr "Ne pas appliquer aux menus le style « GTK » du thème sélectionné" - -#: audacious-plugins/src/skins/skins_cfg.c:333 -msgid "Random skin on play" -msgstr "Changer de thème de manière aléatoire, lors de la lecture" - -#: audacious-plugins/src/skins/skins_cfg.c:334 -msgid "Allow loading incomplete skins" -msgstr "Permettre le chargement des thèmes incomplets" - -#: audacious-plugins/src/skins/skins_cfg.c:335 -msgid "If selected, audacious won't refuse loading broken skins. Use only if your favourite skin doesn't work" -msgstr "Si cette option est cochée, Audacious ne refusera pas de charger les thèmes corrompus. N'utilisez cette option que si votre thème préféré ne fonctionne pas autrement." - -#: audacious-plugins/src/skins/skins_cfg.c:401 -msgid "Color Adjustment" -msgstr "Ajustement des couleurs" - -#: audacious-plugins/src/skins/skins_cfg.c:407 -msgid "Audacious allows you to alter the color balance of the skinned UI. The sliders below will allow you to do this." -msgstr "Audacious permet de modifier la balance des couleurs de l'interface, à l'aide des curseurs ci-dessous." - -#: audacious-plugins/src/skins/skins_cfg.c:417 -msgid "Blue" -msgstr "Bleu" - -#: audacious-plugins/src/skins/skins_cfg.c:424 -msgid "Green" -msgstr "Vert" - -#: audacious-plugins/src/skins/skins_cfg.c:431 -msgid "Red" -msgstr "Rouge" +#: src/skins/ui_main.c:1655 +msgid "Playlist mode." +msgstr "Mode « Liste de lecture »." -#: audacious-plugins/src/skins/skins_cfg.c:569 -msgid "_Skin" -msgstr "_Thème" +#: src/skins/ui_main.c:1677 +msgid "Stopping after song." +msgstr "Arrêter après le titre en cours de lecture." -#: audacious-plugins/src/skins/skins_cfg.c:574 -msgid "Color adjustment ..." -msgstr "Ajustement des couleurs ..." +#: src/skins/ui_main.c:1679 +msgid "Not stopping after song." +msgstr "Ne pas arrêter après le titre en cours de lecture." -#: audacious-plugins/src/skins/ui_manager.c:50 -#: audacious-plugins/src/skins/ui_manager.c:51 +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 msgid "Autoscroll Songname" msgstr "Activer le défilement du titre" -#: audacious-plugins/src/skins/ui_manager.c:56 -#: audacious-plugins/src/skins/ui_manager.c:57 +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "Arrêter après le titre en cours de lecture" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 msgid "Peaks" msgstr "Pics" -#: audacious-plugins/src/skins/ui_manager.c:68 -#: audacious-plugins/src/skins/ui_manager.c:69 +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "Mode « répétition »" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "Mode « lecture aléatoire »" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "Ne pas avancer dans la liste de lecture" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 msgid "Show Player" msgstr "Montrer le lecteur" -#: audacious-plugins/src/skins/ui_manager.c:71 -#: audacious-plugins/src/skins/ui_manager.c:72 +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 msgid "Show Playlist Editor" msgstr "Montrer la liste de lecture" -#: audacious-plugins/src/skins/ui_manager.c:74 -#: audacious-plugins/src/skins/ui_manager.c:75 +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 msgid "Show Equalizer" msgstr "Montrer l'égaliseur" -#: audacious-plugins/src/skins/ui_manager.c:77 -#: audacious-plugins/src/skins/ui_manager.c:78 +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 msgid "Always on Top" msgstr "Toujours au premier plan" -#: audacious-plugins/src/skins/ui_manager.c:80 -#: audacious-plugins/src/skins/ui_manager.c:81 +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 msgid "Put on All Workspaces" msgstr "Afficher sur tous les bureaux" -#: audacious-plugins/src/skins/ui_manager.c:83 -#: audacious-plugins/src/skins/ui_manager.c:84 +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 msgid "Roll up Player" msgstr "Enrouler le lecteur" -#: audacious-plugins/src/skins/ui_manager.c:86 -#: audacious-plugins/src/skins/ui_manager.c:87 +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 msgid "Roll up Playlist Editor" msgstr "Enrouler la liste de lecture" -#: audacious-plugins/src/skins/ui_manager.c:89 -#: audacious-plugins/src/skins/ui_manager.c:90 +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 msgid "Roll up Equalizer" msgstr "Enrouler l'égaliseur" -#: audacious-plugins/src/skins/ui_manager.c:92 -msgid "Scale" -msgstr "Échelle" - -#: audacious-plugins/src/skins/ui_manager.c:93 -msgid "DoubleSize" -msgstr "Taille double" - -#: audacious-plugins/src/skins/ui_manager.c:95 -#: audacious-plugins/src/skins/ui_manager.c:96 -msgid "Easy Move" -msgstr "Déplacement facile" - -#: audacious-plugins/src/skins/ui_manager.c:104 +#: src/skins/ui_manager.c:115 msgid "Analyzer" msgstr "Analyseur" -#: audacious-plugins/src/skins/ui_manager.c:105 +#: src/skins/ui_manager.c:116 msgid "Scope" msgstr "Oscilloscope" -#: audacious-plugins/src/skins/ui_manager.c:106 +#: src/skins/ui_manager.c:117 msgid "Voiceprint" msgstr "Spectrogramme" -#: audacious-plugins/src/skins/ui_manager.c:107 +#: src/skins/ui_manager.c:118 msgid "Off" msgstr "Arrêt" -#: audacious-plugins/src/skins/ui_manager.c:111 -#: audacious-plugins/src/skins/ui_manager.c:128 -#: audacious-plugins/src/skins/ui_manager.c:134 +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 msgid "Normal" msgstr "Normal" -#: audacious-plugins/src/skins/ui_manager.c:112 -#: audacious-plugins/src/skins/ui_manager.c:129 +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 msgid "Fire" msgstr "Feu" -#: audacious-plugins/src/skins/ui_manager.c:113 +#: src/skins/ui_manager.c:124 msgid "Vertical Lines" msgstr "Lignes verticales" -#: audacious-plugins/src/skins/ui_manager.c:117 +#: src/skins/ui_manager.c:128 msgid "Lines" msgstr "Lignes" -#: audacious-plugins/src/skins/ui_manager.c:118 +#: src/skins/ui_manager.c:129 msgid "Bars" msgstr "Barres" -#: audacious-plugins/src/skins/ui_manager.c:122 +#: src/skins/ui_manager.c:133 msgid "Dot Scope" msgstr "Points" -#: audacious-plugins/src/skins/ui_manager.c:123 +#: src/skins/ui_manager.c:134 msgid "Line Scope" msgstr "Lignes" -#: audacious-plugins/src/skins/ui_manager.c:124 +#: src/skins/ui_manager.c:135 msgid "Solid Scope" msgstr "Vagues" -#: audacious-plugins/src/skins/ui_manager.c:130 +#: src/skins/ui_manager.c:141 msgid "Ice" msgstr "Glace" -#: audacious-plugins/src/skins/ui_manager.c:135 +#: src/skins/ui_manager.c:146 msgid "Smooth" msgstr "Lissé" -#: audacious-plugins/src/skins/ui_manager.c:139 -#: audacious-plugins/src/skins/ui_manager.c:147 +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 msgid "Slowest" msgstr "Très lente" -#: audacious-plugins/src/skins/ui_manager.c:140 -#: audacious-plugins/src/skins/ui_manager.c:148 +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 msgid "Slow" msgstr "Lente" -#: audacious-plugins/src/skins/ui_manager.c:141 -#: audacious-plugins/src/skins/ui_manager.c:149 +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 msgid "Medium" msgstr "Moyenne" -#: audacious-plugins/src/skins/ui_manager.c:142 -#: audacious-plugins/src/skins/ui_manager.c:150 +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 msgid "Fast" msgstr "Rapide" -#: audacious-plugins/src/skins/ui_manager.c:143 -#: audacious-plugins/src/skins/ui_manager.c:151 +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 msgid "Fastest" msgstr "Très rapide" -#: audacious-plugins/src/skins/ui_manager.c:155 +#: src/skins/ui_manager.c:166 msgid "Time Elapsed" msgstr "Temps écoulé" -#: audacious-plugins/src/skins/ui_manager.c:156 +#: src/skins/ui_manager.c:167 msgid "Time Remaining" msgstr "Temps restant" -#: audacious-plugins/src/skins/ui_manager.c:185 +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "Pause" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "Précédent" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "Suivant" + +#: src/skins/ui_manager.c:196 msgid "Visualization" msgstr "Effets visuels" -#: audacious-plugins/src/skins/ui_manager.c:186 +#: src/skins/ui_manager.c:197 msgid "Visualization Mode" msgstr "Type d'effet visuel" -#: audacious-plugins/src/skins/ui_manager.c:187 +#: src/skins/ui_manager.c:198 msgid "Analyzer Mode" msgstr "Mode « analyseur »" -#: audacious-plugins/src/skins/ui_manager.c:188 +#: src/skins/ui_manager.c:199 msgid "Scope Mode" msgstr "Mode « oscilloscope »" -#: audacious-plugins/src/skins/ui_manager.c:189 +#: src/skins/ui_manager.c:200 msgid "Voiceprint Mode" msgstr "Mode « spectrogramme »" -#: audacious-plugins/src/skins/ui_manager.c:190 +#: src/skins/ui_manager.c:201 msgid "WindowShade VU Mode" msgstr "Mode « VU en fenêtre réduite »" -#: audacious-plugins/src/skins/ui_manager.c:191 +#: src/skins/ui_manager.c:202 msgid "Analyzer Falloff" msgstr "Retombée de l'analyseur" -#: audacious-plugins/src/skins/ui_manager.c:192 +#: src/skins/ui_manager.c:203 msgid "Peaks Falloff" msgstr "Retombée des pics" -#: audacious-plugins/src/skins/ui_manager.c:202 -#: audacious-plugins/src/skins/ui_manager.c:203 +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "Liste de lecture" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "Nouvelle liste" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 msgid "Select Next Playlist" msgstr "Liste suivante" -#: audacious-plugins/src/skins/ui_manager.c:205 -#: audacious-plugins/src/skins/ui_manager.c:206 +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 msgid "Select Previous Playlist" msgstr "Liste précédente" -#: audacious-plugins/src/skins/ui_manager.c:222 +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "Supprimer la liste" + +#: src/skins/ui_manager.c:222 +msgid "Import Playlist" +msgstr "Importer une liste de lecture" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "Importe une liste de lecture dans la liste active." + +#: src/skins/ui_manager.c:226 +msgid "Export Playlist" +msgstr "Exporter la liste de lecture" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "Enregistre la liste de lecture active." + +#: src/skins/ui_manager.c:229 msgid "Refresh List" msgstr "Actualiser la liste" -#: audacious-plugins/src/skins/ui_manager.c:226 -msgid "List Manager" -msgstr "Gestionnaire de listes" +#: src/skins/ui_manager.c:230 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "Actualise les métadonnées associées à une entrée de la liste." + +#: src/skins/ui_manager.c:233 +msgid "Playlist Manager" +msgstr "Gestionnaire de listes de lecture" + +#: src/skins/ui_manager.c:234 +msgid "Queue Manager" +msgstr "Gestionnaire de files d'attente" -#: audacious-plugins/src/skins/ui_manager.c:236 +#: src/skins/ui_manager.c:237 +msgid "View" +msgstr "Affichage" + +#: src/skins/ui_manager.c:238 +msgid "Interface" +msgstr "Interface" + +#: src/skins/ui_manager.c:239 +msgid "Interface Preferences ..." +msgstr "Préférences de l'interface" + +#: src/skins/ui_manager.c:243 msgid "Add Internet Address..." msgstr "Ajouter un flux Internet..." -#: audacious-plugins/src/skins/ui_manager.c:240 +#: src/skins/ui_manager.c:244 +msgid "Adds a remote track to the playlist." +msgstr "Ajoute un flux distant à la liste de lecture." + +#: src/skins/ui_manager.c:247 msgid "Add Files..." msgstr "Ajouter des fichiers..." -#: audacious-plugins/src/skins/ui_manager.c:246 +#: src/skins/ui_manager.c:248 +msgid "Adds files to the playlist." +msgstr "Ajoute des fichiers à la liste de lecture." + +#: src/skins/ui_manager.c:253 msgid "Search and Select" msgstr "Chercher et sélectionner" -#: audacious-plugins/src/skins/ui_manager.c:247 -msgid "Searches the playlist and selects playlist entries based on specific criteria." -msgstr "Effectue une recherche dans la liste de lecture et sélectionne des entrées en fonction de critères définis." +#: src/skins/ui_manager.c:254 +msgid "" +"Searches the playlist and selects playlist entries based on specific " +"criteria." +msgstr "" +"Effectue une recherche dans la liste de lecture et sélectionne des entrées " +"en fonction de critères définis." -#: audacious-plugins/src/skins/ui_manager.c:250 +#: src/skins/ui_manager.c:257 msgid "Invert Selection" msgstr "Inverser la sélection" -#: audacious-plugins/src/skins/ui_manager.c:251 +#: src/skins/ui_manager.c:258 msgid "Inverts the selected and unselected entries." msgstr "Inverse les entrées sélectionnées et les entrées non sélectionnées." -#: audacious-plugins/src/skins/ui_manager.c:268 +#: src/skins/ui_manager.c:261 +msgid "Select All" +msgstr "Tout sélectionner" + +#: src/skins/ui_manager.c:262 +msgid "Selects all of the playlist entries." +msgstr "Sélectionne toutes les entrées de la liste." + +#: src/skins/ui_manager.c:265 +msgid "Select None" +msgstr "Ne rien sélectionner" + +#: src/skins/ui_manager.c:266 +msgid "Deselects all of the playlist entries." +msgstr "Annule la sélection de toutes les entrées de la liste." + +#: src/skins/ui_manager.c:271 +msgid "Remove All" +msgstr "Effacer toutes les entrées" + +#: src/skins/ui_manager.c:272 +msgid "Removes all entries from the playlist." +msgstr "Efface toutes les entrées de la liste de lecture." + +#: src/skins/ui_manager.c:275 msgid "Clear Queue" msgstr "Vider la file d'attente" -#: audacious-plugins/src/skins/ui_manager.c:269 +#: src/skins/ui_manager.c:276 msgid "Clears the queue associated with this playlist." msgstr "Vide la file d'attente associée à la liste de lecture active." -#: audacious-plugins/src/skins/ui_manager.c:272 +#: src/skins/ui_manager.c:279 msgid "Remove Unavailable Files" msgstr "Effacer les fichiers inexistants" -#: audacious-plugins/src/skins/ui_manager.c:273 +#: src/skins/ui_manager.c:280 msgid "Removes unavailable files from the playlist." -msgstr "Efface de la liste de lecture les fichiers qui ne sont plus disponibles." +msgstr "" +"Efface de la liste de lecture les fichiers qui ne sont plus disponibles." -#: audacious-plugins/src/skins/ui_manager.c:276 +#: src/skins/ui_manager.c:283 msgid "Remove Duplicates" msgstr "Effacer les éléments redondants" -#: audacious-plugins/src/skins/ui_manager.c:279 +#: src/skins/ui_manager.c:285 src/skins/ui_manager.c:317 +#: src/skins/ui_manager.c:347 +msgid "By Title" +msgstr "Par titre" + +#: src/skins/ui_manager.c:286 msgid "Removes duplicate entries from the playlist by title." msgstr "Efface les entrées redondantes, en fonction de leur titre." -#: audacious-plugins/src/skins/ui_manager.c:282 -#: audacious-plugins/src/skins/ui_manager.c:318 -#: audacious-plugins/src/skins/ui_manager.c:348 +#: src/skins/ui_manager.c:289 src/skins/ui_manager.c:329 +#: src/skins/ui_manager.c:359 msgid "By Filename" msgstr "Par nom de fichier" -#: audacious-plugins/src/skins/ui_manager.c:283 +#: src/skins/ui_manager.c:290 msgid "Removes duplicate entries from the playlist by filename." msgstr "Efface les entrées redondantes, en fonction de leur nom de fichier." -#: audacious-plugins/src/skins/ui_manager.c:286 -#: audacious-plugins/src/skins/ui_manager.c:322 -#: audacious-plugins/src/skins/ui_manager.c:352 +#: src/skins/ui_manager.c:293 src/skins/ui_manager.c:333 +#: src/skins/ui_manager.c:363 msgid "By Path + Filename" msgstr "Par chemin et nom de fichier" -#: audacious-plugins/src/skins/ui_manager.c:287 +#: src/skins/ui_manager.c:294 msgid "Removes duplicate entries from the playlist by their full path." msgstr "Efface les entrées redondantes, en fonction de leur chemin complet." -#: audacious-plugins/src/skins/ui_manager.c:300 +#: src/skins/ui_manager.c:297 +msgid "Remove Unselected" +msgstr "Ne garder que la sélection" + +#: src/skins/ui_manager.c:298 +msgid "Remove unselected entries from the playlist." +msgstr "Efface les entrées non sélectionnées de la liste de lecture." + +#: src/skins/ui_manager.c:301 +msgid "Remove Selected" +msgstr "Effacer la sélection" + +#: src/skins/ui_manager.c:302 +msgid "Remove selected entries from the playlist." +msgstr "Efface les entrées sélectionnées de la liste de lecture." + +#: src/skins/ui_manager.c:307 +msgid "Randomize List" +msgstr "MeÌlanger aleÌatoirement la liste" + +#: src/skins/ui_manager.c:308 +msgid "Randomizes the playlist." +msgstr "MeÌlange aleÌatoirement la liste de lecture." + +#: src/skins/ui_manager.c:311 msgid "Reverse List" msgstr "Inverser la liste" -#: audacious-plugins/src/skins/ui_manager.c:301 +#: src/skins/ui_manager.c:312 msgid "Reverses the playlist." msgstr "Inverse l'ordre de la liste de lecture." -#: audacious-plugins/src/skins/ui_manager.c:304 +#: src/skins/ui_manager.c:315 msgid "Sort List" msgstr "Trier la liste" -#: audacious-plugins/src/skins/ui_manager.c:307 -#: audacious-plugins/src/skins/ui_manager.c:337 +#: src/skins/ui_manager.c:318 src/skins/ui_manager.c:348 msgid "Sorts the list by title." msgstr "Trie la liste, en fonction du titre des entrées." -#: audacious-plugins/src/skins/ui_manager.c:311 -#: audacious-plugins/src/skins/ui_manager.c:341 +#: src/skins/ui_manager.c:321 src/skins/ui_manager.c:351 +msgid "By Album" +msgstr "Par album" + +#: src/skins/ui_manager.c:322 src/skins/ui_manager.c:352 msgid "Sorts the list by album." msgstr "Trie la liste, en fonction du nom de l'album." -#: audacious-plugins/src/skins/ui_manager.c:315 -#: audacious-plugins/src/skins/ui_manager.c:345 +#: src/skins/ui_manager.c:325 src/skins/ui_manager.c:355 +msgid "By Artist" +msgstr "Par artiste" + +#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 msgid "Sorts the list by artist." msgstr "Trie la liste, en fonction de l'artiste." -#: audacious-plugins/src/skins/ui_manager.c:319 -#: audacious-plugins/src/skins/ui_manager.c:349 +#: src/skins/ui_manager.c:330 src/skins/ui_manager.c:360 msgid "Sorts the list by filename." msgstr "Trie la liste, en fonction du nom de fichier des entrées." -#: audacious-plugins/src/skins/ui_manager.c:323 -#: audacious-plugins/src/skins/ui_manager.c:353 +#: src/skins/ui_manager.c:334 src/skins/ui_manager.c:364 msgid "Sorts the list by full pathname." msgstr "Trie la liste, en fonction du chemin complet des entrées." -#: audacious-plugins/src/skins/ui_manager.c:326 -#: audacious-plugins/src/skins/ui_manager.c:356 +#: src/skins/ui_manager.c:337 src/skins/ui_manager.c:367 msgid "By Date" msgstr "Par date" -#: audacious-plugins/src/skins/ui_manager.c:327 -#: audacious-plugins/src/skins/ui_manager.c:357 +#: src/skins/ui_manager.c:338 src/skins/ui_manager.c:368 msgid "Sorts the list by modification time." msgstr "Trie la liste, en fonction de la date de modification des entrées." -#: audacious-plugins/src/skins/ui_manager.c:331 -#: audacious-plugins/src/skins/ui_manager.c:361 +#: src/skins/ui_manager.c:341 src/skins/ui_manager.c:371 +msgid "By Track Number" +msgstr "Par numéro de piste" + +#: src/skins/ui_manager.c:342 src/skins/ui_manager.c:372 msgid "Sorts the list by track number." msgstr "Trie la liste, en fonction du numéro des pistes." -#: audacious-plugins/src/skins/ui_manager.c:334 +#: src/skins/ui_manager.c:345 msgid "Sort Selected" msgstr "Trier la sélection" -#: audacious-plugins/src/skins/ui_manager.c:373 +#: src/skins/ui_manager.c:381 +msgid "File" +msgstr "Fichier" + +#: src/skins/ui_manager.c:384 msgid "Plugin Services" msgstr "Services des modules" -#: audacious-plugins/src/skins/ui_manager.c:384 +#: src/skins/ui_manager.c:386 src/skins/ui_manager.c:389 +msgid "View Track Details" +msgstr "Afficher les détails" + +#: src/skins/ui_manager.c:387 src/skins/ui_manager.c:390 +msgid "View track details" +msgstr "Affiche les informations relatives au morceau." + +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:393 +msgid "About Audacious" +msgstr "À propos d'Audacious" + +#: src/skins/ui_manager.c:395 msgid "Play File" msgstr "Lire un fichier..." -#: audacious-plugins/src/skins/ui_manager.c:387 +#: src/skins/ui_manager.c:396 +msgid "Load and play a file" +msgstr "Charge et lit un fichier." + +#: src/skins/ui_manager.c:398 msgid "Play Location" msgstr "Lire un emplacement..." -#: audacious-plugins/src/skins/ui_manager.c:428 -msgid "Load" -msgstr "Charger" +#: src/skins/ui_manager.c:399 +msgid "Play media from the selected location" +msgstr "Lit les média de l'emplacement sélectionné." + +#: src/skins/ui_manager.c:401 +msgid "Plugin services" +msgstr "Affiche le menu propre à certains modules." + +#: src/skins/ui_manager.c:403 +msgid "Preferences" +msgstr "Préférences..." + +#: src/skins/ui_manager.c:404 +msgid "Open preferences window" +msgstr "Ouvre la fenêtre des préférences." + +#: src/skins/ui_manager.c:407 +msgid "Quit Audacious" +msgstr "Ferme Audacious." + +#: src/skins/ui_manager.c:409 src/skins/ui_manager.c:410 +msgid "Set A-B" +msgstr "Marquer une boucle A-B" + +#: src/skins/ui_manager.c:412 src/skins/ui_manager.c:413 +msgid "Clear A-B" +msgstr "Effacer la boucle A-B" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Jump to Time" +msgstr "Aller au temps..." + +#: src/skins/ui_manager.c:421 +msgid "Queue Toggle" +msgstr "Mettre dans la file d'attente" + +#: src/skins/ui_manager.c:422 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "Active/désactive l'entrée dans la file d'attente de la liste." + +#: src/skins/ui_manager.c:425 +msgid "Copy" +msgstr "Copier" + +#: src/skins/ui_manager.c:427 +msgid "Cut" +msgstr "Couper" + +#: src/skins/ui_manager.c:429 +msgid "Paste" +msgstr "Coller" + +#: src/skins/ui_manager.c:436 +msgid "Load" +msgstr "Charger" + +#: src/skins/ui_manager.c:437 +msgid "Import" +msgstr "Importer" + +#: src/skins/ui_manager.c:438 +msgid "Save" +msgstr "Enregistrer" + +#: src/skins/ui_manager.c:439 +msgid "Delete" +msgstr "Supprimer" -#: audacious-plugins/src/skins/ui_manager.c:433 -#: audacious-plugins/src/skins/ui_manager.c:454 -#: audacious-plugins/src/skins/ui_manager.c:469 +#: src/skins/ui_manager.c:441 src/skins/ui_manager.c:462 +#: src/skins/ui_manager.c:477 msgid "Preset" msgstr "Préréglage général" -#: audacious-plugins/src/skins/ui_manager.c:434 -msgid "Load preset" -msgstr "Charge un préréglage général." - -#: audacious-plugins/src/skins/ui_manager.c:436 -#: audacious-plugins/src/skins/ui_manager.c:457 -#: audacious-plugins/src/skins/ui_manager.c:472 +#: src/skins/ui_manager.c:444 src/skins/ui_manager.c:465 +#: src/skins/ui_manager.c:480 msgid "Auto-load preset" msgstr "Préréglage spécifique" -#: audacious-plugins/src/skins/ui_manager.c:437 +#: src/skins/ui_manager.c:445 msgid "Load auto-load preset" msgstr "Charge un préréglage spécifique." -#: audacious-plugins/src/skins/ui_manager.c:440 +#: src/skins/ui_manager.c:448 msgid "Load default preset into equalizer" msgstr "Charge le préréglage par défaut dans l'égaliseur." -#: audacious-plugins/src/skins/ui_manager.c:442 +#: src/skins/ui_manager.c:450 msgid "Zero" msgstr "Remise à zéro" -#: audacious-plugins/src/skins/ui_manager.c:443 +#: src/skins/ui_manager.c:451 msgid "Set equalizer preset levels to zero" msgstr "Réinitialise les niveaux de l'égaliseur." -#: audacious-plugins/src/skins/ui_manager.c:445 +#: src/skins/ui_manager.c:453 msgid "From file" msgstr "À partir d'un fichier" -#: audacious-plugins/src/skins/ui_manager.c:446 +#: src/skins/ui_manager.c:454 msgid "Load preset from file" msgstr "Charge un préréglage à partir d'un fichier." -#: audacious-plugins/src/skins/ui_manager.c:448 +#: src/skins/ui_manager.c:456 msgid "From WinAMP EQF file" msgstr "À partir d'un fichier « EQF » de « WinAMP »" -#: audacious-plugins/src/skins/ui_manager.c:449 +#: src/skins/ui_manager.c:457 msgid "Load preset from WinAMP EQF file" msgstr "Charge un préréglage à partir d'un fichier « EQF » de « WinAMP »." -#: audacious-plugins/src/skins/ui_manager.c:451 +#: src/skins/ui_manager.c:459 msgid "WinAMP Presets" msgstr "Préréglages de « WinAMP »" -#: audacious-plugins/src/skins/ui_manager.c:452 +#: src/skins/ui_manager.c:460 msgid "Import WinAMP presets" msgstr "Importe les préréglages de « WinAMP »." -#: audacious-plugins/src/skins/ui_manager.c:455 -msgid "Save preset" -msgstr "Enregistre comme préréglage général." - -#: audacious-plugins/src/skins/ui_manager.c:458 +#: src/skins/ui_manager.c:466 msgid "Save auto-load preset" msgstr "Enregistre comme préréglage spécifique." -#: audacious-plugins/src/skins/ui_manager.c:461 +#: src/skins/ui_manager.c:469 msgid "Save default preset" msgstr "Enregistre comme préréglage par défaut." -#: audacious-plugins/src/skins/ui_manager.c:463 +#: src/skins/ui_manager.c:471 msgid "To file" msgstr "Dans un fichier" -#: audacious-plugins/src/skins/ui_manager.c:464 +#: src/skins/ui_manager.c:472 msgid "Save preset to file" msgstr "Enregistre le préréglage dans un fichier." -#: audacious-plugins/src/skins/ui_manager.c:466 +#: src/skins/ui_manager.c:474 msgid "To WinAMP EQF file" msgstr "Dans un fichier « EQF » pour « WinAMP »" -#: audacious-plugins/src/skins/ui_manager.c:467 +#: src/skins/ui_manager.c:475 msgid "Save preset to WinAMP EQF file" msgstr "Enregistre le préréglage dans un fichier « EQF » pour « WinAMP »." -#: audacious-plugins/src/skins/ui_manager.c:470 -msgid "Delete preset" -msgstr "Efface un préréglage." - -#: audacious-plugins/src/skins/ui_manager.c:473 +#: src/skins/ui_manager.c:481 msgid "Delete auto-load preset" msgstr "Efface un préréglage spécifique." -#: audacious-plugins/src/skins/ui_main.c:593 -msgid "kbps" -msgstr "kbps" - -#: audacious-plugins/src/skins/ui_main.c:601 -msgid "kHz" -msgstr "kHz" - -#: audacious-plugins/src/skins/ui_main.c:608 -msgid "surround" -msgstr "son d'ambiance" - -#: audacious-plugins/src/skins/ui_main.c:981 -msgid "Audacious - visibility warning" -msgstr "Audacious - avertissement concernant l'affichage" - -#: audacious-plugins/src/skins/ui_main.c:984 -msgid "Show main player window" -msgstr "Montrer la fenêtre principale" - -#: audacious-plugins/src/skins/ui_main.c:985 -msgid "Ignore" -msgstr "Ignorer" - -#: audacious-plugins/src/skins/ui_main.c:991 -msgid "" -"Audacious has been started with all of its windows hidden.\n" -"You may want to show the player window again to control Audacious; otherwise, you'll have to control it remotely via audtool or enabled plugins (such as the statusicon plugin)." -msgstr "" -"Audacious a démarré, mais toutes les fenêtres de l'interface sont cachées.\n" -"\n" -"Peut-être voulez-vous voir à nouveau la fenêtre principale, afin de pouvoir contrôler Audacious.\n" -"Dans le cas contraire, vous devrez utiliser les commandes distantes, par l'intermédiaire de « audtool » ou des extensions activées (le module « statusicon », par exemple).\n" -" " - -#: audacious-plugins/src/skins/ui_main.c:997 -msgid "Always ignore, show/hide is controlled remotely" -msgstr "Toujours ignorer : la fonction « montrer/cacher » est contrôlée à distance." - -#: audacious-plugins/src/skins/ui_main.c:1042 -msgid "Audacious - broken GTK engine usage warning" -msgstr "Audacious - défaillance du moteur « GTK »" - -#: audacious-plugins/src/skins/ui_main.c:1050 -#, c-format -msgid "" -"Broken GTK engine in use\n" -"\n" -"Audacious has detected that you are using a broken GTK engine.\n" -"\n" -"The theme engine you are using, %s, is incompatible with some of the features used by modern skins. The incompatible features have been disabled for this session.\n" -"\n" -"To use these features, please consider using a different GTK theme engine." -msgstr "" -"Utilisation d'un moteur « GTK » défaillant\n" -"\n" -"Audacious a détecté un moteur « GTK » défaillant.\n" -"\n" -"Le moteur de rendu de votre système (%s) est incompatible avec certaines fonctions propres aux thèmes modernes d'Audacious. Les caractéristiques concernées ont donc été désactivées pour cette session.\n" -"\n" -"Pour disposer de ces options particulières, vous devrez utilisez un autre moteur de rendu « GTK ».\n" -" " - -#: audacious-plugins/src/skins/ui_main.c:1061 -msgid "Do not display this warning again" -msgstr "Ne plus afficher cet avertissement" - -#: audacious-plugins/src/skins/ui_main.c:1269 -#, c-format -msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)" -msgstr "Position : %d:%-2.2d/%d:%-2.2d (%d%%)" - -#: audacious-plugins/src/skins/ui_main.c:1299 -#, c-format -msgid "Volume: %d%%" -msgstr "Volume : %d%%" - -#: audacious-plugins/src/skins/ui_main.c:1322 -#, c-format -msgid "Balance: %d%% left" -msgstr "Balance : %d%% gauche" - -#: audacious-plugins/src/skins/ui_main.c:1324 -msgid "Balance: center" -msgstr "Balance : centre" - -#: audacious-plugins/src/skins/ui_main.c:1326 -#, c-format -msgid "Balance: %d%% right" -msgstr "Balance : %d%% droite" - -#: audacious-plugins/src/skins/ui_main.c:1618 -msgid "Options Menu" -msgstr "Menu des options" - -#: audacious-plugins/src/skins/ui_main.c:1622 -msgid "Disable 'Always On Top'" -msgstr "Annuler « Toujours au premier plan »" - -#: audacious-plugins/src/skins/ui_main.c:1624 -msgid "Enable 'Always On Top'" -msgstr "Activer « Toujours au premier plan »" - -#: audacious-plugins/src/skins/ui_main.c:1627 -msgid "File Info Box" -msgstr "Informations sur le fichier" - -#: audacious-plugins/src/skins/ui_main.c:1631 -msgid "Disable 'GUI Scaling'" -msgstr "Annuler « Agrandissement de l'interface »" - -#: audacious-plugins/src/skins/ui_main.c:1633 -msgid "Enable 'GUI Scaling'" -msgstr "Activer « Agrandissement de l'interface »" - -#: audacious-plugins/src/skins/ui_main.c:1636 -msgid "Visualization Menu" -msgstr "Menu des effets visuels" - -#: audacious-plugins/src/skins/ui_main.c:2348 -msgid "Single mode." -msgstr "Mode « Fichier unique »." - -#: audacious-plugins/src/skins/ui_main.c:2350 -msgid "Playlist mode." -msgstr "Mode « Liste de lecture »." - -#: audacious-plugins/src/skins/ui_main.c:2374 -msgid "Stopping after song." -msgstr "Arrêter après le titre en cours de lecture." - -#: audacious-plugins/src/skins/ui_main.c:2376 -msgid "Not stopping after song." -msgstr "Ne pas arrêter après le titre en cours de lecture." - -#: audacious-plugins/src/skins/ui_playlist.c:374 +#: src/skins/ui_playlist.c:248 msgid "Search entries in active playlist" msgstr "Chercher des entrées dans la liste active" -#: audacious-plugins/src/skins/ui_playlist.c:382 -msgid "Select entries in playlist by filling one or more fields. Fields use regular expressions syntax, case-insensitive. If you don't know how regular expressions work, simply insert a literal portion of what you're searching for." +#: src/skins/ui_playlist.c:256 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular" +" expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." msgstr "" "Le choix des entrées de la liste de lecture s'effectue au moyen des champs ci-dessous.\n" "\n" @@ -4565,242 +3288,114 @@ "\n" "Si vous ne savez pas comment fonctionnent les expressions rationnelles, vous pouvez simplement indiquer une expression littérale de ce que vous cherchez." -#: audacious-plugins/src/skins/ui_playlist.c:390 +#: src/skins/ui_playlist.c:264 msgid "Title: " msgstr "Titre : " -#: audacious-plugins/src/skins/ui_playlist.c:397 +#: src/skins/ui_playlist.c:271 msgid "Album: " msgstr "Titre de l'album : " -#: audacious-plugins/src/skins/ui_playlist.c:404 +#: src/skins/ui_playlist.c:278 msgid "Artist: " msgstr "Nom de l'artiste : " -#: audacious-plugins/src/skins/ui_playlist.c:411 +#: src/skins/ui_playlist.c:285 msgid "Filename: " msgstr "Nom du fichier : " -#: audacious-plugins/src/skins/ui_playlist.c:419 +#: src/skins/ui_playlist.c:293 msgid "Clear previous selection before searching" msgstr "Effacer la sélection précédente avant d'effectuer la recherche" -#: audacious-plugins/src/skins/ui_playlist.c:422 +#: src/skins/ui_playlist.c:296 msgid "Automatically toggle queue for matching entries" msgstr "Mettre automatiquement dans la file d'attente les entrées trouvées" -#: audacious-plugins/src/skins/ui_playlist.c:425 +#: src/skins/ui_playlist.c:299 msgid "Create a new playlist with matching entries" msgstr "Créer une nouvelle liste comportant les entrées trouvées" -#: audacious-plugins/src/skins/ui_playlist.c:772 -msgid "Save as Static Playlist" -msgstr "Enregistrer comme liste statique" - -#: audacious-plugins/src/skins/ui_playlist.c:779 -msgid "Use Relative Path" -msgstr "Utiliser une arborescence relative" - -#: audacious-plugins/src/skins/ui_playlist.c:802 -msgid "Load Playlist" -msgstr "Charger une liste de lecture" - -#: audacious-plugins/src/skins/ui_playlist.c:815 -msgid "Save Playlist" -msgstr "Enregistrer la liste" - -#: audacious-plugins/src/skins/ui_playlist.c:1146 +#: src/skins/ui_playlist.c:765 msgid "Audacious Playlist Editor" msgstr "Éditeur de la liste de lecture d'Audacious" -#: audacious-plugins/src/skins/ui_playlist.c:1206 +#: src/skins/ui_playlist.c:812 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d sur %d)" -#: audacious-plugins/src/skins/ui_skinned_equalizer_slider.c:435 -msgid "Preamp" -msgstr "Préamplification" - -#: audacious-plugins/src/skins/ui_skinned_equalizer_slider.c:435 -msgid "31 Hz" -msgstr "31 Hz" - -#: audacious-plugins/src/skins/ui_skinned_equalizer_slider.c:435 -msgid "63 Hz" -msgstr "63 Hz" - -#: audacious-plugins/src/skins/ui_skinned_equalizer_slider.c:436 -msgid "125 Hz" -msgstr "125 Hz" - -#: audacious-plugins/src/skins/ui_skinned_equalizer_slider.c:436 -msgid "250 Hz" -msgstr "250 Hz" - -#: audacious-plugins/src/skins/ui_skinned_equalizer_slider.c:436 -msgid "500 Hz" -msgstr "500 Hz" - -#: audacious-plugins/src/skins/ui_skinned_equalizer_slider.c:436 -msgid "1 kHz" -msgstr "1 kHz" - -#: audacious-plugins/src/skins/ui_skinned_equalizer_slider.c:436 -msgid "2 kHz" -msgstr "2 kHz" - -#: audacious-plugins/src/skins/ui_skinned_equalizer_slider.c:437 -msgid "4 kHz" -msgstr "4 kHz" - -#: audacious-plugins/src/skins/ui_skinned_equalizer_slider.c:437 -msgid "8 kHz" -msgstr "8 kHz" - -#: audacious-plugins/src/skins/ui_skinned_equalizer_slider.c:437 -msgid "16 kHz" -msgstr "16 kHz" - -#: audacious-plugins/src/skins/util.c:834 -#, c-format -msgid "Could not create directory (%s): %s\n" -msgstr "Impossible de créer le répertoire (%s) : %s\n" - -#: audacious-plugins/src/skins/ui_skinselector.c:179 +#: src/skins/ui_skinselector.c:162 msgid "Archived Winamp 2.x skin" msgstr "Thème « Winamp 2.x » archivé" -#: audacious-plugins/src/skins/ui_skinselector.c:184 +#: src/skins/ui_skinselector.c:167 msgid "Unarchived Winamp 2.x skin" msgstr "Thème « Winamp 2.x » non archivé" -#: audacious-plugins/src/skins/plugin.c:179 -msgid "About Skinned GUI" -msgstr "À propos de l'interface à thème" - -#: audacious-plugins/src/skins/plugin.c:180 -msgid "" -"Copyright (c) 2008, by Tomasz MoÅ„ \n" -"\n" -msgstr "" -"Droits d'utilisation : Tomasz MoÅ„ (2008)\n" -"\n" - -#: audacious-plugins/src/skins/plugin.c:196 -msgid "Skinned Interface" -msgstr "Interface à thème" - -#: audacious-plugins/src/skins/ui_equalizer.c:463 -msgid "Audacious Equalizer" -msgstr "Égaliseur d'Audacious" - -#: audacious-plugins/src/skins/ui_equalizer.c:991 -msgid "Presets" -msgstr "Préréglages" +#: src/skins/util.c:774 +#, c-format +msgid "Could not create directory (%s): %s\n" +msgstr "Impossible de créer le répertoire (%s) : %s\n" -#: audacious-plugins/src/sndfile/plugin.c:531 +#: src/sndfile/plugin.c:456 msgid "About sndfile plugin" msgstr "À propos du module « sndfile »" -#: audacious-plugins/src/sndfile/plugin.c:532 -msgid "" -"Adapted for Audacious usage by Tony Vroon \n" -"from the xmms_sndfile plugin which is:\n" -"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -"This program is free software ; you can redistribute it and/or modify \n" -"it under the terms of the GNU General Public License as published by \n" -"the Free Software Foundation ; either version 2 of the License, or \n" -"(at your option) any later version. \n" -" \n" -"This program is distributed in the hope that it will be useful, \n" -"but WITHOUT ANY WARRANTY ; without even the implied warranty of \n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n" -"See the GNU General Public License for more details. \n" -"\n" -"You should have received a copy of the GNU General Public \n" -"License along with this program ; if not, write to \n" -"the Free Software Foundation, Inc., \n" -"51 Franklin Street, Fifth Floor, \n" -"Boston, MA 02110-1301 USA" -msgstr "" -"Adapté pour Audacious par Tony Vroon \n" -"à partir du module « xmms_sndfile » de Erik de Castro Lopo\n" -"(Droits d'utilisation 2000, 2002)\n" -"\n" -"\n" -"Ceci est une traduction non officielle de la « GNU General Public License »\n" -"en français. Elle n'a pas été publiée par la « Free Software Foundation »,\n" -"et ne détermine pas les termes de distribution pour les logiciels qui\n" -"utilisent la « GNU GPL » -- seul le texte anglais original de la « GNU GPL »\n" -"en a le droit. Cependant, nous espérons que cette traduction aidera les\n" -"francophones à mieux comprendre la « GNU GPL ».\n" -"\n" -"Ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le\n" -"modifier selon les termes de la « Licence Publique Générale GNU » (GNU GPL),\n" -"telle que publiée par la « Free Software Foundation », soit la version 2 de\n" -"la Licence, soit (à votre convenance) toute version postérieure.\n" -"\n" -"Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE\n" -"GARANTIE, sans même la garantie implicite d'une possible VALEUR MARCHANDE\n" -"ou de l'ADÉQUATION à UN BESOIN PARTICULIER. Consultez la « Licence Publique\n" -"Générale GNU » (GNU GPL) pour plus de détails.\n" -"\n" -"Vous devriez avoir reçu une copie de la « Licence Publique Générale GNU »\n" -"(GNU GPL) avec ce programme. Dans le cas contraire, vous pouvez consulter\n" -"la Licence sur la page ou écrire à la\n" -"Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n" -"MA 02110-1301, USA." - -#: audacious-plugins/src/sndstretch/sndstretch_xmms.c:175 +#: src/sndstretch/sndstretch_xmms.c:155 msgid "About SndStretch" msgstr "À propos de « SndStretch »" -#: audacious-plugins/src/sndstretch/sndstretch_xmms.c:336 +#: src/sndstretch/sndstretch_xmms.c:308 msgid "Volume corr." msgstr "Correction du volume" -#: audacious-plugins/src/sndstretch/sndstretch_xmms.c:337 +#: src/sndstretch/sndstretch_xmms.c:309 msgid "Short Overlap" msgstr "Chevauchement léger" -#: audacious-plugins/src/sndstretch/sndstretch_xmms.c:391 +#: src/sndstretch/sndstretch_xmms.c:355 msgid "Speed" msgstr "Vitesse" -#: audacious-plugins/src/sndstretch/sndstretch_xmms.c:392 +#: src/sndstretch/sndstretch_xmms.c:356 msgid "Pitch" msgstr "Hauteur" -#: audacious-plugins/src/sndstretch/sndstretch_xmms.c:413 +#: src/sndstretch/sndstretch_xmms.c:357 +msgid "Scale" +msgstr "Échelle" + +#: src/sndstretch/sndstretch_xmms.c:377 msgid "SndStretch - Configuration" msgstr "Configuration de « SndStretch »" -#: audacious-plugins/src/song_change/song_change.c:397 +#: src/song_change/song_change.c:437 msgid "Command to run when Audacious starts a new song." msgstr "Commande à exécuter lorsqu'un nouveau morceau commence :" -#: audacious-plugins/src/song_change/song_change.c:398 -#: audacious-plugins/src/song_change/song_change.c:402 -#: audacious-plugins/src/song_change/song_change.c:406 -#: audacious-plugins/src/song_change/song_change.c:410 +#: src/song_change/song_change.c:439 src/song_change/song_change.c:445 +#: src/song_change/song_change.c:451 src/song_change/song_change.c:457 msgid "Command:" msgstr "Commande :" -#: audacious-plugins/src/song_change/song_change.c:401 +#: src/song_change/song_change.c:443 msgid "Command to run toward the end of a song." msgstr "Commande à exécuter lorsque la lecture d'un morceau se termine :" -#: audacious-plugins/src/song_change/song_change.c:405 +#: src/song_change/song_change.c:449 msgid "Command to run when Audacious reaches the end of the playlist." -msgstr "Commande à exécuter lorsque la fin de la liste de lecture est atteinte :" +msgstr "" +"Commande à exécuter lorsque la fin de la liste de lecture est atteinte :" -#: audacious-plugins/src/song_change/song_change.c:409 -msgid "Command to run when title changes for a song (i.e. network streams titles)." -msgstr "Commande à exécuter lorsque le titre d'un morceau change (le titre d'un flux distant, par exemple) :" +#: src/song_change/song_change.c:455 +msgid "" +"Command to run when title changes for a song (i.e. network streams titles)." +msgstr "" +"Commande à exécuter lorsque le titre d'un morceau change (le titre d'un flux" +" distant, par exemple) :" -#: audacious-plugins/src/song_change/song_change.c:413 +#: src/song_change/song_change.c:461 msgid "" "You can use the following format strings which\n" "will be substituted before calling the command\n" @@ -4813,44 +3408,48 @@ "%n or %s: Song name\n" "%r: Rate (in bits per second)\n" "%t: Playlist position (%02d)\n" -"%p: Currently playing (1 or 0)" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" msgstr "" -"Vous pouvez utiliser les chaînes de la liste ci-dessous.\n" +"Vous pouvez utiliser les variables de la liste ci-dessous.\n" "\n" "Elles seront remplacées avant l'appel de la commande à exécuter (toutes ne sont pas utiles pour la fonction « fin de liste ») :\n" "\n" -"%F: Fréquence (en Hertz)\n" -"%c: Nombre de voies\n" -"%f: Nom du fichier (chemin complet)\n" -"%l: Durée (en millisecondes)\n" -"%n ou %s: Titre du morceau\n" -"%r: Taux d'encodage (en « bits » par seconde)\n" -"%t: Position dans la liste de lecture (%02d)\n" -"%p: État de la lecture (1 ou 0)" +"%F : Fréquence (en Hertz)\n" +"%c : Nombre de canaux\n" +"%f : Nom du fichier (chemin complet)\n" +"%l : Durée (en millisecondes)\n" +"%n ou %s : Nom du morceau\n" +"%r : Taux d'encodage (en « bits » par seconde)\n" +"%t : Position dans la liste de lecture (%02d)\n" +"%p : 1 si la lecture continue, 0 si elle est arrêtée\n" +"%a : Artiste du morceau\n" +"%b : Album du morceau\n" +"%T : Titre du morceau" -#: audacious-plugins/src/song_change/song_change.c:437 -msgid "Parameters passed to the shell should be encapsulated in quotes. Doing otherwise is a security risk." +#: src/song_change/song_change.c:488 +msgid "" +"Parameters passed to the shell should be encapsulated in " +"quotes. Doing otherwise is a security risk." msgstr "" "Les arguments à lancer dans la console doivent être entourés de guillemets.\n" "Une utilisation différente constitue un risque en matière de sécurité." -#: audacious-plugins/src/song_change/song_change.c:448 +#: src/song_change/song_change.c:499 msgid "Commands" msgstr "Commandes" -#: audacious-plugins/src/song_change/song_change.c:484 +#: src/song_change/song_change.c:529 msgid "Song Change" msgstr "Song Change" -#: audacious-plugins/src/spectrum/spectrum.c:89 -msgid "Spectrum Analyzer" -msgstr "Analyseur Spectral" - -#: audacious-plugins/src/statusicon/statusicon.c:355 +#: src/statusicon/statusicon.c:379 msgid "About Status Icon Plugin" msgstr "À propos du module « Status Icon »" -#: audacious-plugins/src/statusicon/statusicon.c:356 +#: src/statusicon/statusicon.c:380 msgid "" "Status Icon Plugin\n" "\n" @@ -4868,35 +3467,51 @@ "Ce module affiche une icône d'état dans l'espace\n" "de notification du gestionnaire de fenêtres.\n" -#: audacious-plugins/src/statusicon/statusicon.c:418 +#: src/statusicon/statusicon.c:451 msgid "Status Icon Plugin - Preferences" msgstr "Préférences de « Status Icon »" -#: audacious-plugins/src/statusicon/statusicon.c:428 +#: src/statusicon/statusicon.c:461 msgid "Right-Click Menu" msgstr "Menu disponible via le clic droit :" -#: audacious-plugins/src/statusicon/statusicon.c:433 +#: src/statusicon/statusicon.c:466 msgid "Small playback menu #1" msgstr "Menu de lecture compact #1" -#: audacious-plugins/src/statusicon/statusicon.c:436 +#: src/statusicon/statusicon.c:469 msgid "Small playback menu #2" msgstr "Menu de lecture compact #2" -#: audacious-plugins/src/statusicon/statusicon.c:452 +#: src/statusicon/statusicon.c:485 msgid "Mouse Scroll Action" -msgstr "Effet du défilement de la souris :" +msgstr "Effet de la molette de la souris :" -#: audacious-plugins/src/statusicon/statusicon.c:456 +#: src/statusicon/statusicon.c:489 msgid "Change volume" msgstr "Changement du volume" -#: audacious-plugins/src/statusicon/statusicon.c:458 +#: src/statusicon/statusicon.c:491 msgid "Change playing song" msgstr "Changement du titre en cours de lecture" -#: audacious-plugins/src/stereo_plugin/stereo.c:40 +#: src/statusicon/statusicon.c:504 +msgid "Other settings" +msgstr "Autres parameÌ€tres" + +#: src/statusicon/statusicon.c:509 +msgid "Disable the popup window" +msgstr "DeÌsactiver l'affichage d'information au survol" + +#: src/statusicon/statusicon.c:516 +msgid "Close to the notification area (system tray)" +msgstr "ReÌduire dans la zone de notification aÌ€ la fermeture" + +#: src/statusicon/statusicon.c:524 +msgid "Advance in playlist when scrolling upward" +msgstr "Inverser le sens du changement de piste à la molette" + +#: src/stereo_plugin/stereo.c:45 msgid "" "Extra Stereo Plugin\n" "\n" @@ -4906,116 +3521,19 @@ "\n" "Écrit par Johan Levin (1999)." -#: audacious-plugins/src/stereo_plugin/stereo.c:64 +#: src/stereo_plugin/stereo.c:64 msgid "About Extra Stereo Plugin" msgstr "À propos de « Extra Stereo »" -#: audacious-plugins/src/stereo_plugin/stereo.c:100 +#: src/stereo_plugin/stereo.c:95 msgid "Configure Extra Stereo" msgstr "Configuration de « Extra Stereo »" -#: audacious-plugins/src/streambrowser/streambrowser.c:331 -msgid "About Stream Browser" -msgstr "À propos du module « Stream Browser »" - -#: audacious-plugins/src/streambrowser/streambrowser.c:332 -msgid "" -"Copyright (c) 2008, by Calin Crisan and The Audacious Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" -"\n" -"This was a Google Summer of Code 2008 project." -msgstr "" -"Droits d'utilisation (2008) : Calin Crisan et l'Équipe d'Audacious.\n" -"\n" -"Ce module est un simple explorateur de flux qui propose les répertoires de flux en ligne\n" -"les plus connus.\n" -"\n" -"Remerciements cordiaux aux développeurs de « Streamtuner » ,\n" -"et, bien entendu, à toute la communauté d'Audacious.\n" -"\n" -"Je remercie également Tony Vroon de m'avoir conseillé et soutenu, à nouveau.\n" -"\n" -"Ce module était un projet de « Google Summer Of Code 2008 »." - -#: audacious-plugins/src/streambrowser/streambrowser.c:357 -#: audacious-plugins/src/streambrowser/streambrowser.c:367 -msgid "Streambrowser" -msgstr "Explorateur de flux" - -#: audacious-plugins/src/streambrowser/gui/streambrowser_win.c:62 -msgid "Search:" -msgstr "Recherche :" - -#: audacious-plugins/src/streambrowser/gui/streambrowser_win.c:81 -#: audacious-plugins/src/streambrowser/gui/streambrowser_win.c:370 -msgid "Add Bookmark" -msgstr "Ajouter le favori" - -#: audacious-plugins/src/streambrowser/gui/streambrowser_win.c:95 -msgid "Stream browser" -msgstr "Explorateur de flux" - -#: audacious-plugins/src/streambrowser/gui/streambrowser_win.c:319 -msgid "Stream name" -msgstr "Nom du flux" - -#: audacious-plugins/src/streambrowser/gui/streambrowser_win.c:326 -msgid "Now playing" -msgstr "En cours de diffusion" - -#: audacious-plugins/src/streambrowser/gui/streambrowser_win.c:367 -msgid "Remove Bookmark" -msgstr "Supprimer le favori" - -#: audacious-plugins/src/sun/about.c:30 -msgid "About the Sun Driver" -msgstr "À propos du pilote « Sun »" - -#: audacious-plugins/src/sun/about.c:31 -msgid "" -"XMMS BSD Sun Driver\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" -msgstr "" -"Pilote « Sun BSD » pour XMMS\n" -"\n" -"Droits d'utilisation :\n" -"(c) 2001, CubeSoft Communications, Inc.\n" -"\n" -"Responsable de la maintenance :\n" -".\n" - -#: audacious-plugins/src/sun/configure.c:199 -msgid "Audio control device:" -msgstr "Périphérique de contrôle audio :" - -#: audacious-plugins/src/sun/configure.c:270 -msgid "Buffer size (ms):" -msgstr "Taille du tampon (ms) :" - -#: audacious-plugins/src/sun/configure.c:348 -msgid "Volume controls device:" -msgstr "Périphérique de contrôle du volume :" - -#: audacious-plugins/src/sun/configure.c:361 -msgid "XMMS uses mixer exclusively." -msgstr "XMMS utilise le mélangeur audio de manière exclusive." - -#: audacious-plugins/src/sun/configure.c:536 -msgid "Sun driver configuration" -msgstr "Configuration du pilote « Sun »" - -#: audacious-plugins/src/tonegen/tonegen.c:53 +#: src/tonegen/tonegen.c:49 msgid "About Tone Generator" msgstr "À propos de « Tone Generator »" -#: audacious-plugins/src/tonegen/tonegen.c:55 +#: src/tonegen/tonegen.c:51 msgid "" "Sinus tone generator by Haavard Kvaalen \n" "Modified by Daniel J. Peng \n" @@ -5032,36 +3550,24 @@ "\n" "Par exemple, \"tone://2000;2005\" émettra un son de 2000 Hz et un son de 2005 Hz." -#: audacious-plugins/src/tonegen/tonegen.c:105 +#: src/tonegen/tonegen.c:101 #, c-format msgid "%s %.1f Hz" msgstr "%s %.1f Hz" -#: audacious-plugins/src/tonegen/tonegen.c:105 +#: src/tonegen/tonegen.c:101 msgid "Tone Generator: " msgstr "Générateur de sons : " -#: audacious-plugins/src/vorbis/configure.c:31 -msgid "Override generic titles" -msgstr "Remplacer les titres génériques" - -#: audacious-plugins/src/vorbis/configure.c:32 -msgid "Title format:" -msgstr "Format du titre :" - -#: audacious-plugins/src/vorbis/configure.c:36 -msgid "Ogg Vorbis Tags" -msgstr "Métadonnées « Ogg Vorbis »" - -#: audacious-plugins/src/vorbis/configure.c:68 -msgid "Ogg Vorbis Audio Plugin Configuration" -msgstr "Configuration du module audio « Ogg Vorbis »" +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" +msgstr "À propos du module de gestion des entrées/sorties" -#: audacious-plugins/src/vorbis/vorbis.c:549 +#: src/vorbis/vorbis.c:573 msgid "About Ogg Vorbis Audio Plugin" msgstr "À propos du module audio « Ogg Vorbis »" -#: audacious-plugins/src/vorbis/vorbis.c:554 +#: src/vorbis/vorbis.c:578 msgid "" "Ogg Vorbis Plugin by the Xiph.org Foundation\n" "\n" @@ -5098,11 +3604,11 @@ "Vous pouvez visiter « Xiph.org Foundation » à cette adresse :\n" "http://www.xiph.org/\n" -#: audacious-plugins/src/vtx/about.c:14 +#: src/vtx/about.c:14 msgid "About Vortex Player" msgstr "À propos du lecteur « Vortex »" -#: audacious-plugins/src/vtx/about.c:15 +#: src/vtx/about.c:15 msgid "" "Vortex file format player by Sashnov Alexander \n" "Founded on original source in_vtx.dll by Roman Sherbakov \n" @@ -5126,12 +3632,12 @@ "Adaptation pour Audacious :\n" "Pavel Vymetalek " -#: audacious-plugins/src/wavpack/wavpack.c:371 +#: src/wavpack/wavpack.c:353 #, c-format msgid "Wavpack Decoder Plugin %s" msgstr "Module de décodage « Wavpack » %s" -#: audacious-plugins/src/wavpack/wavpack.c:372 +#: src/wavpack/wavpack.c:354 msgid "" "Copyright (c) 2006 William Pitcock \n" "\n" @@ -5145,375 +3651,4 @@ "Vous pouvez visiter le site « Wavpack » à l'adresse suivante :\n" "http://www.wavpack.com/\n" -#: audacious-plugins/src/adplug/adplug-xmms.cc:153 -msgid "About " -msgstr "À propos du module " - -#: audacious-plugins/src/adplug/adplug-xmms.cc:157 -msgid "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"This plugin is released under the terms and conditions of the GNU LGPL.\n" -"See http://www.gnu.org/licenses/lgpl.html for details.\n" -"\n" -"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et al.\n" -"Linked AdPlug library version: " -msgstr "" -"\n" -"Droits d'utilisation : Simon Peter (2002, 2003)\n" -"\n" -"Ce module est distribué sous les termes et les conditions de la licence GNU LGPL.\n" -"Consultez la page suivante pour les détails : http://www.gnu.org/licenses/lgpl.html\n" -"\n" -"Cette extension utilise la bibliothèque « AdPlug ».\n" -"Droits d'utilisation : Simon Peter, et al.\n" -"\n" -"Version de la bibliothèque « AdPlug » liée : " - -#: audacious-plugins/src/adplug/adplug-xmms.cc:234 -msgid "AdPlug :: Configuration" -msgstr "Configuration du module « AdPlug »" - -#: audacious-plugins/src/adplug/adplug-xmms.cc:281 -msgid "Sound quality" -msgstr "Qualité du son" - -#: audacious-plugins/src/adplug/adplug-xmms.cc:286 -msgid "Resolution" -msgstr "Résolution" - -#: audacious-plugins/src/adplug/adplug-xmms.cc:288 -msgid "8bit" -msgstr "8 bits" - -#: audacious-plugins/src/adplug/adplug-xmms.cc:293 -msgid "16bit" -msgstr "16 bits" - -#: audacious-plugins/src/adplug/adplug-xmms.cc:301 -msgid "Channels" -msgstr "Sortie" - -#: audacious-plugins/src/adplug/adplug-xmms.cc:312 -msgid "Setting stereo is not recommended, unless you need to. This won't add any stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!" -msgstr "Activer le mode stéréo n'est pas recommandé, à moins que vous ne le vouliez vraiment. Cette option n'ajoutera pas d'effet stéréo au son produit (OPL2 n'utilise que le mode mono), mais nécessitera beaucoup plus de puissance CPU !" - -#: audacious-plugins/src/adplug/adplug-xmms.cc:320 -msgid "Frequency" -msgstr "Fréquence" - -#: audacious-plugins/src/adplug/adplug-xmms.cc:360 -msgid "Detect songend" -msgstr "Détecter la fin du morceau" - -#: audacious-plugins/src/adplug/adplug-xmms.cc:364 -msgid "If enabled, XMMS will detect a song's ending, stop it and advance in the playlist. If disabled, XMMS won't take notice of a song's ending and loop it all over again and again." -msgstr "Si cette option est activée, Audacious détectera la fin du morceau, interrompra la lecture, puis passera au titre suivant dans la liste de lecture. Dans le cas contraire, Audacious ne se préoccupera pas de la fin des morceaux : le titre sera lu en boucle." - -#: audacious-plugins/src/adplug/adplug-xmms.cc:375 -msgid "Formats" -msgstr "Formats" - -#: audacious-plugins/src/adplug/adplug-xmms.cc:382 -msgid "Format selection" -msgstr "Choix des formats" - -#: audacious-plugins/src/adplug/adplug-xmms.cc:385 -msgid "Format" -msgstr "Format" - -#: audacious-plugins/src/adplug/adplug-xmms.cc:385 -msgid "Extension" -msgstr "Extension" - -#: audacious-plugins/src/adplug/adplug-xmms.cc:425 -msgid "Selected file types will be recognized and played back by this plugin. Deselected types will be ignored to make room for other plugins to play these files." -msgstr "Les types de fichiers sélectionnés seront reconnus et gérés par ce module. Les autres seront ignorés, de manière à pouvoir être supportés par d'autres extensions." - -#: audacious-plugins/src/adplug/adplug-xmms.cc:511 -msgid "AdPlug :: File Info" -msgstr "Informations sur le fichier" - -#: audacious-plugins/src/adplug/adplug-xmms.cc:538 -msgid "Author: " -msgstr "Auteur : " - -#: audacious-plugins/src/adplug/adplug-xmms.cc:539 -msgid "File Type: " -msgstr "Format : " - -#: audacious-plugins/src/adplug/adplug-xmms.cc:540 -msgid "Subsongs: " -msgstr "Sous-modules : " - -#: audacious-plugins/src/adplug/adplug-xmms.cc:541 -msgid "Instruments: " -msgstr "Instruments : " - -#: audacious-plugins/src/adplug/adplug-xmms.cc:546 -msgid "Orders: " -msgstr "Partitions : " - -#: audacious-plugins/src/adplug/adplug-xmms.cc:547 -msgid "Patterns: " -msgstr "Séquences : " - -#: audacious-plugins/src/adplug/adplug-xmms.cc:551 -msgid "Song" -msgstr "Morceau" - -#: audacious-plugins/src/adplug/adplug-xmms.cc:577 -msgid "Instrument name" -msgstr "Nom de l'instrument" - -#: audacious-plugins/src/adplug/adplug-xmms.cc:619 -msgid "Song message" -msgstr "Commentaires" - -#: audacious-plugins/src/adplug/adplug-xmms.cc:641 -msgid "Subsong selection" -msgstr "Sélection du sous-module" - -#: audacious-plugins/src/adplug/adplug-xmms.cc:707 -msgid "Order: " -msgstr "Partition : " - -#: audacious-plugins/src/adplug/adplug-xmms.cc:708 -msgid "Pattern: " -msgstr "Séquence : " - -#: audacious-plugins/src/adplug/adplug-xmms.cc:710 -msgid "Row: " -msgstr "Ligne : " - -#: audacious-plugins/src/adplug/adplug-xmms.cc:711 -msgid "Speed: " -msgstr "Vitesse : " - -#: audacious-plugins/src/adplug/adplug-xmms.cc:712 -msgid "Timer: " -msgstr "Fréquence : " - -#: audacious-plugins/src/modplug/gui/main.cxx:51 -msgid "Modplug Input Plugin for Audacious ver" -msgstr "Module d'entrée « Modplug » pour Audacious, version " - -#: audacious-plugins/src/modplug/gui/main.cxx:52 -msgid "" -"\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." -msgstr "" -"\n" -"\n" -"Le moteur sonore de « Modplug » a été écrit par Olivier Lapicque.\n" -"L'interface XMMS pour « Modplug » a été conçue par Kenton Varda.\n" -"\n" -"Droits d'utilisation (2000) : Olivier Lapicque et Kenton Varda.\n" -"\n" -"Mises à jour et maintenance : Konstanty Bialkowski.\n" -"Rétroportage pour BMP : Theofilos Intzoglou." - -#: audacious-plugins/src/modplug/gui/main.cxx:55 -msgid "About Modplug" -msgstr "À propos de « Modplug »" - -#: audacious-plugins/src/modplug/gui/interface.cxx:137 -msgid "ModPlug Configuration" -msgstr "Configuration du module « ModPlug »" - -#: audacious-plugins/src/modplug/gui/interface.cxx:174 -msgid "16 bit" -msgstr "16 bits" - -#: audacious-plugins/src/modplug/gui/interface.cxx:181 -msgid "8 bit" -msgstr "8 bits" - -#: audacious-plugins/src/modplug/gui/interface.cxx:212 -msgid "Mono (downmix)" -msgstr "Mono (sous-mélange)" - -#: audacious-plugins/src/modplug/gui/interface.cxx:241 -msgid "Nearest (fastest)" -msgstr "Méthode « au plus proche » (la plus rapide)" - -#: audacious-plugins/src/modplug/gui/interface.cxx:248 -msgid "Linear (fast)" -msgstr "Interpolation linéaire (rapide)" - -#: audacious-plugins/src/modplug/gui/interface.cxx:255 -msgid "Spline (good quality)" -msgstr "Interpolation par segments ('spline') (bonne qualité)" - -#: audacious-plugins/src/modplug/gui/interface.cxx:262 -msgid "8-tap Fir (extremely high quality)" -msgstr "Filtre à réponse impulsionnelle finie ('8-tap FIR') (qualité optimale)" - -#: audacious-plugins/src/modplug/gui/interface.cxx:286 -msgid "96 kHz" -msgstr "96 kHz" - -#: audacious-plugins/src/modplug/gui/interface.cxx:293 -msgid "48 kHz" -msgstr "48 kHz" - -#: audacious-plugins/src/modplug/gui/interface.cxx:300 -msgid "44 kHz" -msgstr "44 kHz" - -#: audacious-plugins/src/modplug/gui/interface.cxx:307 -msgid "22 kHz" -msgstr "22 kHz" - -#: audacious-plugins/src/modplug/gui/interface.cxx:315 -msgid "Sampling Rate" -msgstr "Fréquence d'échantillonnage" - -#: audacious-plugins/src/modplug/gui/interface.cxx:349 -#: audacious-plugins/src/modplug/gui/interface.cxx:411 -#: audacious-plugins/src/modplug/gui/interface.cxx:477 -#: audacious-plugins/src/modplug/gui/interface.cxx:539 -msgid "Enable" -msgstr "Activer" - -#: audacious-plugins/src/modplug/gui/interface.cxx:378 -#: audacious-plugins/src/modplug/gui/interface.cxx:506 -msgid "Depth" -msgstr "Profondeur" - -#: audacious-plugins/src/modplug/gui/interface.cxx:386 -#: audacious-plugins/src/modplug/gui/interface.cxx:514 -msgid "Delay" -msgstr "Délai" - -#: audacious-plugins/src/modplug/gui/interface.cxx:394 -msgid "Reverb" -msgstr "Réverbération" - -#: audacious-plugins/src/modplug/gui/interface.cxx:440 -msgid "Amount" -msgstr "Intensité" - -#: audacious-plugins/src/modplug/gui/interface.cxx:448 -msgid "Range" -msgstr "Portée" - -#: audacious-plugins/src/modplug/gui/interface.cxx:456 -msgid "Bass Boost" -msgstr "Amplification des basses" - -#: audacious-plugins/src/modplug/gui/interface.cxx:561 -msgid "" -"Note: Setting the preamp\n" -"too high may cause clipping\n" -"(annoying clicks and pops)!" -msgstr "" -"Note : une valeur de préamplification excessive\n" -"peut produire des coupures et des distorsions\n" -"(des clics et des bruits secs assez agaçants) !" - -#: audacious-plugins/src/modplug/gui/interface.cxx:601 -msgid "Use Filename as Song Title" -msgstr "Utiliser le nom du fichier comme titre du morceau" - -#: audacious-plugins/src/modplug/gui/interface.cxx:606 -msgid "Fast Playlist Info" -msgstr "Informations rapides sur la liste de lecture" - -#: audacious-plugins/src/modplug/gui/interface.cxx:617 -msgid "Noise Reduction" -msgstr "Réduction du bruit" - -#: audacious-plugins/src/modplug/gui/interface.cxx:623 -msgid "Play Amiga MOD" -msgstr "Lire les modules musicaux Amiga" - -#: audacious-plugins/src/modplug/gui/interface.cxx:646 -msgid "Don't loop" -msgstr "Ne pas répéter" - -#: audacious-plugins/src/modplug/gui/interface.cxx:658 -msgid "Loop" -msgstr "Répéter" - -#: audacious-plugins/src/modplug/gui/interface.cxx:671 -msgid "time(s)" -msgstr "fois" - -#: audacious-plugins/src/modplug/gui/interface.cxx:677 -msgid "Loop forever" -msgstr "Répéter en boucle" - -#: audacious-plugins/src/modplug/gui/interface.cxx:684 -msgid "Looping" -msgstr "Répétition" - -#: audacious-plugins/src/modplug/gui/interface.cxx:859 -msgid "MOD Info" -msgstr "Informations sur le module" - -#: audacious-plugins/src/modplug/gui/interface.cxx:878 -msgid "" -"Filename:\n" -"Title:\n" -"Type:\n" -"Length:\n" -"Speed:\n" -"Tempo:\n" -"Samples:\n" -"Instruments:\n" -"Patterns:\n" -"Channels:" -msgstr "" -"Nom du fichier :\n" -"Titre :\n" -"Type :\n" -"Durée :\n" -"Vitesse :\n" -"Tempo :\n" -"Échantillons :\n" -"Instruments :\n" -"Séquences :\n" -"Voies :" - -#: audacious-plugins/src/modplug/gui/interface.cxx:883 -msgid "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" -msgstr "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" - -#: audacious-plugins/src/modplug/gui/interface.cxx:913 -msgid "Samples" -msgstr "Échantillons" - -#: audacious-plugins/src/modplug/gui/interface.cxx:938 -msgid "Instruments" -msgstr "Instruments" - -#: audacious-plugins/src/modplug/gui/interface.cxx:959 -msgid "Message" -msgstr "Commentaires" diff -Nru audacious-plugins-2.4.4/po/hu.po audacious-plugins-3.2/po/hu.po --- audacious-plugins-2.4.4/po/hu.po 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/hu.po 2012-01-20 19:48:30.000000000 +0000 @@ -1,24 +1,25 @@ -# Hungarian translation of audacious-plugins. -# Copyright (C) 2006 Free Software Foundation, Inc. -# This file is distributed under the same license as the audacious-plugins package. -# Peter Polonkai , 2010. +# Hungarian translation for Audacious Plugins +# Copyright (C) Audacious translators +# This file is distributed under the same license as the Audacious Plugins package. # +# Translators: +# Peter Polonkai , 2010. +# Péter Polonkai , 2011, 2012. msgid "" msgstr "" -"Project-Id-Version: audacious 2.4\n" -"Report-Msgid-Bugs-To: http://jira.atheme.org/\n" -"POT-Creation-Date: 2010-08-03 18:09-0400\n" -"PO-Revision-Date: 2010-08-23 12:00+0100\n" -"Last-Translator: Peter Polonkai \n" -"Language-Team: Nedudu Team \n" -"Language: hu\n" +"Project-Id-Version: Audacious Plugins\n" +"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2012-01-11 09:01-0500\n" +"PO-Revision-Date: 2012-01-12 06:38+0000\n" +"Last-Translator: Péter Polonkai \n" +"Language-Team: Hungarian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Hungarian\n" -"X-Poedit-Country: HUNGARY\n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: src/aac/libmp4.c:291 +#: src/aac/libmp4.c:256 #, c-format msgid "" "Using libfaad2-%s for decoding.\n" @@ -29,449 +30,172 @@ "FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com\n" "Copyright (c) 2005-2006 Audacious team" -#: src/aac/libmp4.c:296 +#: src/aac/libmp4.c:261 msgid "About MP4 AAC decoder plugin" msgstr "MP4 AAC dekóder bÅ‘vítmény névjegye" -#: src/adplug/adplug-xmms.cc:153 -msgid "About " -msgstr "Névjegy" - -#: src/adplug/adplug-xmms.cc:157 -msgid "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"This plugin is released under the terms and conditions of the GNU LGPL.\n" -"See http://www.gnu.org/licenses/lgpl.html for details.\n" -"\n" -"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et al.\n" -"Linked AdPlug library version: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:234 -msgid "AdPlug :: Configuration" -msgstr "AdPlug :: Beállítások" - -#: src/adplug/adplug-xmms.cc:243 -#: src/adplug/adplug-xmms.cc:504 -#: src/cdaudio-ng/configure.c:258 -#: src/crystalizer/crystalizer.c:127 -#: src/echo_plugin/gui.c:122 -#: src/jack/configure.c:146 -#: src/null/null.c:109 -#: src/stereo_plugin/stereo.c:123 -#: src/sun/configure.c:557 -msgid "Ok" -msgstr "Ok" - -#: src/adplug/adplug-xmms.cc:253 -#: src/alarm/interface.c:1398 -#: src/cdaudio-ng/configure.c:263 -#: src/crystalizer/crystalizer.c:136 -#: src/echo_plugin/gui.c:130 -#: src/jack/configure.c:153 -#: src/modplug/gui/interface.cxx:715 -#: src/null/null.c:110 -#: src/stereo_plugin/stereo.c:132 -#: src/sun/configure.c:565 -msgid "Cancel" -msgstr "Mégsem" - -#: src/adplug/adplug-xmms.cc:269 -#: src/console/configure.c:154 -#: src/modplug/gui/interface.cxx:629 -#: src/modplug/gui/interface.cxx:888 -msgid "General" -msgstr "Ãltalános" - -#: src/adplug/adplug-xmms.cc:281 -msgid "Sound quality" -msgstr "Hang minÅ‘ség" - -#: src/adplug/adplug-xmms.cc:286 -#: src/modplug/gui/interface.cxx:188 -msgid "Resolution" -msgstr "Felbontás" - -#: src/adplug/adplug-xmms.cc:288 -msgid "8bit" -msgstr "8bit" - -#: src/adplug/adplug-xmms.cc:293 -msgid "16bit" -msgstr "16bit" - -#: src/adplug/adplug-xmms.cc:301 -#: src/modplug/gui/interface.cxx:219 -msgid "Channels" -msgstr "Csatornák" - -#: src/adplug/adplug-xmms.cc:303 -#: src/filewriter/mp3.c:934 -#: src/mpg123/mpg123.c:174 -#: src/sid/xs_interface.c:301 -msgid "Mono" -msgstr "Monó" - -#: src/adplug/adplug-xmms.cc:308 -#: src/filewriter/mp3.c:929 -#: src/modplug/gui/interface.cxx:205 -#: src/mpg123/mpg123.c:174 -#: src/sid/xs_interface.c:308 -msgid "Stereo" -msgstr "Sztereó" - -#: src/adplug/adplug-xmms.cc:312 -msgid "Setting stereo is not recommended, unless you need to. This won't add any stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!" -msgstr "" - -#: src/adplug/adplug-xmms.cc:320 -msgid "Frequency" -msgstr "Frekvencia" - -#: src/adplug/adplug-xmms.cc:356 -#: src/adplug/adplug-xmms.cc:560 -#: src/console/configure.c:156 -#: src/gtkui/ui_manager.c:64 -#: src/skins/ui_manager.c:165 -msgid "Playback" -msgstr "Lejátszás" - -#: src/adplug/adplug-xmms.cc:360 -msgid "Detect songend" -msgstr "Dalvég érzékelése" - -#: src/adplug/adplug-xmms.cc:364 -msgid "If enabled, XMMS will detect a song's ending, stop it and advance in the playlist. If disabled, XMMS won't take notice of a song's ending and loop it all over again and again." -msgstr "" - -#: src/adplug/adplug-xmms.cc:375 -msgid "Formats" -msgstr "Formátumok" - -#: src/adplug/adplug-xmms.cc:382 -msgid "Format selection" -msgstr "Formátum választás" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Format" -msgstr "Formátum" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Extension" -msgstr "Kiterjesztés" - -#: src/adplug/adplug-xmms.cc:425 -msgid "Selected file types will be recognized and played back by this plugin. Deselected types will be ignored to make room for other plugins to play these files." -msgstr "" - -#: src/adplug/adplug-xmms.cc:511 -msgid "AdPlug :: File Info" -msgstr "AdPlug :: Fájl infomráció" - -#: src/adplug/adplug-xmms.cc:533 -#: src/amidi-plug/i_configure-fluidsynth.c:348 -msgid "Filename" -msgstr "Fájlnév" - -#: src/adplug/adplug-xmms.cc:537 -#: src/skins/ui_playlist.c:390 -msgid "Title: " -msgstr "Cím:" - -#: src/adplug/adplug-xmms.cc:538 -msgid "Author: " -msgstr "SzerzÅ‘:" - -#: src/adplug/adplug-xmms.cc:539 -msgid "File Type: " -msgstr "Fájtípus:" - -#: src/adplug/adplug-xmms.cc:540 -msgid "Subsongs: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:541 -msgid "Instruments: " -msgstr "Hangszerek:" - -#: src/adplug/adplug-xmms.cc:546 -msgid "Orders: " -msgstr "Sorrend:" - -#: src/adplug/adplug-xmms.cc:547 -msgid "Patterns: " -msgstr "Minták:" - -#: src/adplug/adplug-xmms.cc:551 -msgid "Song" -msgstr "Dal" - -#: src/adplug/adplug-xmms.cc:577 -msgid "Instrument name" -msgstr "Hangszer neve" - -#: src/adplug/adplug-xmms.cc:619 -msgid "Song message" -msgstr "Dal üzenet" - -#: src/adplug/adplug-xmms.cc:641 -msgid "Subsong selection" -msgstr "" - -#: src/adplug/adplug-xmms.cc:707 -msgid "Order: " -msgstr "Sorrend:" - -#: src/adplug/adplug-xmms.cc:708 -msgid "Pattern: " -msgstr "Minta:" - -#: src/adplug/adplug-xmms.cc:710 -msgid "Row: " -msgstr "Sor:" - -#: src/adplug/adplug-xmms.cc:711 -msgid "Speed: " -msgstr "Sebesség:" - -#: src/adplug/adplug-xmms.cc:712 -msgid "Timer: " -msgstr "IdÅ‘zítÅ‘:" +#: src/alarm/alarm.c:312 +msgid "About Alarm" +msgstr "ÉbresztÅ‘ névjegye" -#: src/adplug/adplug-xmms.cc:713 -#: src/console/configure.c:234 -#: src/sid/xs_interface.c:354 -msgid "Hz" -msgstr "Hz" - -#: src/alarm/interface.c:34 -msgid "About XMMS Alarm" -msgstr "XMMS ÉbresztÅ‘ névjegye" - -#: src/alarm/interface.c:47 -msgid "XMMS Alarm" -msgstr "XMMS ÉbresztÅ‘" - -#: src/alarm/interface.c:56 +#: src/alarm/alarm.c:313 msgid "" -"An XMMS plugin which can be used\n" -"to start playing at a certain time.\n" -"\n" -"Send all complaints to:\n" -"Adam Feakin \n" -"Daniel Stodden \n" +"A plugin that can be used to start playing at a certain time.\n" "\n" -"http://www.snika.uklinux.net/xmms-alarm/" +"Originally written by Adam Feakin and Daniel Stodden." msgstr "" -#: src/alarm/interface.c:71 -#: src/bluetooth/scan_gui.c:149 -#: src/lirc/about.c:115 -#: src/modplug/gui/interface.cxx:972 -#: src/sid/xs_about.c:214 -#: src/sid/xs_interface.c:1825 -msgid "Close" -msgstr "Bezár" - -#: src/alarm/interface.c:101 +#: src/alarm/interface.c:33 msgid "Alarm" -msgstr "ÉbresztÅ‘" +msgstr "Riasztás" -#: src/alarm/interface.c:109 +#: src/alarm/interface.c:40 msgid "This is your wakeup call." -msgstr "Ez egy ébresztÅ‘ üzenet." +msgstr "Ez egy ébresztési hívás." -#: src/alarm/interface.c:124 -#: src/alarm/interface.c:1389 -#: src/modplug/gui/interface.cxx:703 -#: src/sid/xs_config.c:322 +#: src/alarm/interface.c:55 src/alarm/interface.c:1213 msgid "OK" msgstr "OK" -#: src/alarm/interface.c:152 -msgid "Select Playlist" -msgstr "Lejátszólista választása" - -#: src/alarm/interface.c:196 -msgid "Sorry" -msgstr "Sajnálom" - -#: src/alarm/interface.c:204 -msgid "Warning" -msgstr "Figyelmeztetés" - -#: src/alarm/interface.c:213 -msgid "" -"For safety reasons the \"quiet\" time must be at least 65 seconds longer than the fading time, it must also be more than 10 seconds. This basically means that there is a bug in the code and until I find a way of really fixing it this message will appear :)\n" -"\n" -"Your fading settings have NOT been saved\n" -"\n" -"--\n" -"Adam" -msgstr "" - -#: src/alarm/interface.c:229 -msgid "Oh Well" -msgstr "Hát igen" - -#: src/alarm/interface.c:388 +#: src/alarm/interface.c:214 msgid "Alarm Settings" -msgstr "ÉbresztÅ‘ beállítások" +msgstr "Riasztási beállítások" -#: src/alarm/interface.c:404 -#: src/alarm/interface.c:576 -#: src/alarm/interface.c:948 +#: src/alarm/interface.c:229 src/alarm/interface.c:401 +#: src/alarm/interface.c:773 msgid "Time" msgstr "IdÅ‘" -#: src/alarm/interface.c:445 +#: src/alarm/interface.c:270 msgid "hours" msgstr "óra" -#: src/alarm/interface.c:506 +#: src/alarm/interface.c:331 msgid "h" -msgstr "ó" +msgstr "h" -#: src/alarm/interface.c:536 +#: src/alarm/interface.c:361 msgid "minutes" msgstr "perc" -#: src/alarm/interface.c:554 +#: src/alarm/interface.c:379 msgid "Quiet after:" -msgstr "Elnémítás ezután:" +msgstr "Csendes ezután:" -#: src/alarm/interface.c:564 +#: src/alarm/interface.c:389 msgid "Alarm at (default):" -msgstr "Ébresztés ekkor (alapértelmezett):" +msgstr "Riasztás (alapértelmezett):" -#: src/alarm/interface.c:584 +#: src/alarm/interface.c:409 msgid "Choose the days for the alarm to come on" -msgstr "Válassza ki az ébresztés napjait a listáról" +msgstr "Válassza ki a riasztás napját a következÅ‘ekbÅ‘l" -#: src/alarm/interface.c:612 -#: src/alarm/interface.c:660 -#: src/alarm/interface.c:708 -#: src/alarm/interface.c:756 -#: src/alarm/interface.c:804 -#: src/alarm/interface.c:852 -#: src/alarm/interface.c:900 -#: src/OSS/configure.c:166 -#: src/skins/ui_manager.c:439 -#: src/skins/ui_manager.c:460 +#: src/alarm/interface.c:437 src/alarm/interface.c:485 +#: src/alarm/interface.c:533 src/alarm/interface.c:581 +#: src/alarm/interface.c:629 src/alarm/interface.c:677 +#: src/alarm/interface.c:725 src/bs2b/plugin.c:198 src/OSS/configure.c:153 +#: src/skins/ui_equalizer.c:1104 src/skins/ui_manager.c:447 +#: src/skins/ui_manager.c:468 msgid "Default" msgstr "Alapértelmezett" -#: src/alarm/interface.c:938 +#: src/alarm/interface.c:763 msgid "Day" msgstr "Nap" -#: src/alarm/interface.c:958 +#: src/alarm/interface.c:783 msgid "Tuesday" msgstr "Kedd" -#: src/alarm/interface.c:969 +#: src/alarm/interface.c:794 msgid "Wednesday" msgstr "Szerda" -#: src/alarm/interface.c:980 +#: src/alarm/interface.c:805 msgid "Thursday" msgstr "Csütörtök" -#: src/alarm/interface.c:991 +#: src/alarm/interface.c:816 msgid "Friday" msgstr "Péntek" -#: src/alarm/interface.c:1002 +#: src/alarm/interface.c:827 msgid "Saturday" msgstr "Szombat" -#: src/alarm/interface.c:1013 +#: src/alarm/interface.c:838 msgid "Sunday" msgstr "Vasárnap" -#: src/alarm/interface.c:1023 +#: src/alarm/interface.c:848 msgid "Monday" msgstr "HétfÅ‘" -#: src/alarm/interface.c:1034 +#: src/alarm/interface.c:859 msgid "Days" msgstr "Napok" -#: src/alarm/interface.c:1050 +#: src/alarm/interface.c:875 msgid "Fading" -msgstr "Ãttűnés" +msgstr "Elhalványulás" -#: src/alarm/interface.c:1087 -#: src/sid/xs_interface.c:921 -#: src/sid/xs_interface.c:975 -#: src/sid/xs_interface.c:1155 +#: src/alarm/interface.c:912 msgid "seconds" msgstr "másodperc" -#: src/alarm/interface.c:1095 -#: src/alarm/interface.c:1211 -#: src/modplug/gui/interface.cxx:550 +#: src/alarm/interface.c:920 src/alarm/interface.c:1035 msgid "Volume" msgstr "HangerÅ‘" -#: src/alarm/interface.c:1121 +#: src/alarm/interface.c:946 msgid "Current" msgstr "Jelenlegi" -#: src/alarm/interface.c:1128 -msgid "reset to current output volume" -msgstr "a jelenlegi hangerÅ‘re állít" - -#: src/alarm/interface.c:1130 +#: src/alarm/interface.c:954 msgid "Start at" -msgstr "Kezdés ekkor" +msgstr "Kezdjük a" -#: src/alarm/interface.c:1158 -#: src/alarm/interface.c:1202 +#: src/alarm/interface.c:982 src/alarm/interface.c:1026 msgid "%" msgstr "%" -#: src/alarm/interface.c:1174 +#: src/alarm/interface.c:998 msgid "Final" msgstr "Vége" -#: src/alarm/interface.c:1227 +#: src/alarm/interface.c:1051 msgid "Additional Command" -msgstr "Kiegészító parancs" +msgstr "További parancs" -#: src/alarm/interface.c:1253 +#: src/alarm/interface.c:1077 msgid "enable" -msgstr "engedélyezve" +msgstr "engedélyez" -#: src/alarm/interface.c:1261 +#: src/alarm/interface.c:1085 msgid "Playlist (optional)" msgstr "Lejátszólista (opcionális)" -#: src/alarm/interface.c:1287 +#: src/alarm/interface.c:1111 msgid "Browse..." -msgstr "Keresés..." +msgstr "Tallózás…" -#: src/alarm/interface.c:1295 -#: src/alarm/interface.c:1460 +#: src/alarm/interface.c:1119 src/alarm/interface.c:1283 msgid "Reminder" msgstr "EmlékeztetÅ‘" -#: src/alarm/interface.c:1312 +#: src/alarm/interface.c:1136 msgid "Use reminder" msgstr "EmlékeztetÅ‘ használata" -#: src/alarm/interface.c:1328 -#: src/sndstretch/sndstretch_xmms.c:394 +#: src/alarm/interface.c:1152 src/sndstretch/sndstretch_xmms.c:358 msgid "Options" msgstr "Opciók" -#: src/alarm/interface.c:1336 +#: src/alarm/interface.c:1160 msgid "What do these options mean?" msgstr "Mit jelentenek ezek a lehetÅ‘ségek?" -#: src/alarm/interface.c:1364 +#: src/alarm/interface.c:1188 msgid "" "\n" "Time\n" @@ -525,76 +249,30 @@ " type the reminder in the box and turn on the\n" " toggle button if you want it to be shown.\n" msgstr "" -"\n" -"IdÅ‘\n" -" Ébresztés ekkor: \n" -" A megadott idÅ‘ben fog ébreszteni.\n" -"\n" -" Elhalkul ezután: \n" -" Megállítja az ébresztÅ‘t a megadott idÅ‘ után.\n" -" (ha a figyelmeztetÅ‘ ablak nincs bezárva)\n" -"\n" -"\n" -"Napok\n" -" Nap:\n" -" Válassza ki az ébresztés napjait.\n" -"\n" -" IdÅ‘: Válassza ki az ébresztés idejét naponta\n" -" vagy használja az alapértelmezett idÅ‘\n" -" gombot.\n" -"\n" -"\n" -"HangerÅ‘\n" -" Ãttűnés: \n" -" A hangerÅ‘ emelkedését lehet szabályozni\n" -" az ébresztéskor.\n" -"\n" -" Kezdete: \n" -" A kezdeti hangerÅ‘ beállítása.\n" -"\n" -" Vége: \n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist: \n" -" Load this playlist for playing songs from \n" -" (must have .m3u extension). If no playlist\n" -" is given then the songs which are currently\n" -" in the list will be used.\n" -" The URL of an mp3/ogg stream can also be\n" -" entered here, but loading of playlists from\n" -" URLs is not currently supported by xmms.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off,\n" -" type the reminder in the box and turn on the\n" -" toggle button if you want it to be shown.\n" -#: src/alarm/interface.c:1366 -#: src/gtkui/ui_manager.c:165 -#: src/skins/ui_manager.c:371 +#: src/alarm/interface.c:1190 src/skins/ui_manager.c:382 msgid "Help" msgstr "Súgó" -#: src/alarm/interface.c:1468 +#: src/alarm/interface.c:1222 src/cdaudio-ng/configure.c:249 +#: src/crystalizer/crystalizer.c:130 src/echo_plugin/gui.c:125 +#: src/jack/configure.c:148 src/null/null.c:108 src/stereo_plugin/stereo.c:125 +msgid "Cancel" +msgstr "Mégsem" + +#: src/alarm/interface.c:1290 msgid "Your reminder for today is.." -msgstr "" +msgstr "Mai emlékeztetÅ‘.." -#: src/alarm/interface.c:1493 +#: src/alarm/interface.c:1315 msgid "Thankyou" msgstr "Köszönöm" -#: src/alsa/config.c:209 +#: src/alsa/config.c:210 msgid "Default PCM device" msgstr "Alapértelmezett PCM eszköz" -#: src/alsa/config.c:234 +#: src/alsa/config.c:235 msgid "Default mixer device" msgstr "Alapértelmezett keverÅ‘ eszköz" @@ -606,9 +284,7 @@ msgid "PCM device:" msgstr "PCM eszköz:" -#: src/alsa/config.c:447 -#: src/OSS/configure.c:256 -#: src/sun/configure.c:218 +#: src/alsa/config.c:447 src/OSS/configure.c:237 msgid "Mixer device:" msgstr "KeverÅ‘ eszköz:" @@ -620,16 +296,18 @@ msgid "Work around drain hangup" msgstr "" -#: src/alsa/plugin.c:61 +#: src/alsa/plugin.c:59 msgid "About ALSA Output Plugin" msgstr "ALSA Kimeneti bÅ‘vítmény névjegye" -#: src/alsa/plugin.c:83 +#: src/alsa/plugin.c:81 msgid "ALSA error" msgstr "ALSA hiba" -#: src/amidi-plug/amidi-plug.c:323 -msgid "You have not selected any sequencer ports for MIDI playback. You can do so in the MIDI plugin preferences." +#: src/amidi-plug/amidi-plug.c:326 +msgid "" +"You have not selected any sequencer ports for MIDI playback. You can do so " +"in the MIDI plugin preferences." msgstr "" #: src/amidi-plug/backend-alsa/b-alsa.c:35 @@ -643,72 +321,54 @@ "Backend written by Giacomo Lozito." msgstr "" -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:41 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 msgid "FluidSynth Backend " msgstr "FludSynth háttér-szolgáltatás" -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:43 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 msgid "" "This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" "Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" "Backend written by Giacomo Lozito." msgstr "" -#: src/amidi-plug/i_configure-alsa.c:221 +#: src/amidi-plug/i_configure-alsa.c:228 msgid "ALSA BACKEND CONFIGURATION" msgstr "ALSA HÃTTÉR-SZOLGÃLTATÃS BEÃLLÃTÃSOK" -#: src/amidi-plug/i_configure-alsa.c:326 +#: src/amidi-plug/i_configure-alsa.c:331 msgid "Port" msgstr "Port" -#: src/amidi-plug/i_configure-alsa.c:328 +#: src/amidi-plug/i_configure-alsa.c:333 msgid "Client name" msgstr "Kliens neve" -#: src/amidi-plug/i_configure-alsa.c:330 +#: src/amidi-plug/i_configure-alsa.c:335 msgid "Port name" msgstr "Port neve" -#: src/amidi-plug/i_configure-alsa.c:341 +#: src/amidi-plug/i_configure-alsa.c:346 msgid "ALSA output ports" msgstr "ALSA kimeneti portok" -#: src/amidi-plug/i_configure-alsa.c:394 +#: src/amidi-plug/i_configure-alsa.c:399 msgid "Soundcard: " msgstr "Hangkártya:" -#: src/amidi-plug/i_configure-alsa.c:396 +#: src/amidi-plug/i_configure-alsa.c:401 msgid "Mixer control: " msgstr "KeverÅ‘ szabályozás:" -#: src/amidi-plug/i_configure-alsa.c:408 +#: src/amidi-plug/i_configure-alsa.c:413 msgid "Mixer settings" msgstr "KeverÅ‘ beállítások" -#: src/amidi-plug/i_configure-alsa.c:421 -msgid "" -"* Select ALSA output ports *\n" -"MIDI events will be sent to the ports selected here. In example, if your audio card provides a hardware synth and you want to play MIDI with it, you'll probably want to select the wavetable synthesizer ports." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:426 -msgid "" -"* Select ALSA mixer card *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and ouput plugins from the player. During playback, the player volumeslider will manipulate the mixer control you select here. If you're using wavetable synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:433 -msgid "" -"* Select ALSA mixer control *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and ouput plugins from the player. During playback, the player volume slider will manipulate the mixer control you select here. If you're using wavetable synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:444 +#: src/amidi-plug/i_configure-alsa.c:429 msgid "ALSA Backend not loaded or not available" msgstr "ALSA háttér-szolgáltatás nem lett betöltve vagy nem elérhetÅ‘" -#: src/amidi-plug/i_configure-alsa.c:463 +#: src/amidi-plug/i_configure-alsa.c:448 msgid "" "ALSA\n" "backend" @@ -716,251 +376,165 @@ "ALSA\n" "háttér-szolgáltatás" -#: src/amidi-plug/i_configure-ap.c:56 +#: src/amidi-plug/i_configure-ap.c:59 msgid "AMIDI-Plug - backend information" msgstr "AMIDI-Plug - backend információ" -#: src/amidi-plug/i_configure-ap.c:194 +#: src/amidi-plug/i_configure-ap.c:196 msgid "AMIDI-PLUG PREFERENCES" msgstr "AMIDI-PLUG BEÃLLÃTÃSOK" -#: src/amidi-plug/i_configure-ap.c:221 +#: src/amidi-plug/i_configure-ap.c:223 msgid "Backend selection" msgstr "Backend választás" -#: src/amidi-plug/i_configure-ap.c:225 +#: src/amidi-plug/i_configure-ap.c:227 msgid "Available backends" msgstr "ElérhetÅ‘ backendek" -#: src/amidi-plug/i_configure-ap.c:255 +#: src/amidi-plug/i_configure-ap.c:257 msgid "Playback settings" msgstr "Lejátszási beállítások" -#: src/amidi-plug/i_configure-ap.c:260 +#: src/amidi-plug/i_configure-ap.c:262 msgid "Transpose: " -msgstr "" +msgstr "Transzponálás:" -#: src/amidi-plug/i_configure-ap.c:269 +#: src/amidi-plug/i_configure-ap.c:271 msgid "Drum shift: " msgstr "" -#: src/amidi-plug/i_configure-ap.c:287 +#: src/amidi-plug/i_configure-ap.c:289 msgid "Advanced settings" msgstr "Haladó beállítások" -#: src/amidi-plug/i_configure-ap.c:291 +#: src/amidi-plug/i_configure-ap.c:293 msgid "pre-calculate length of MIDI files in playlist" -msgstr "" +msgstr "elÅ‘re kiszámítani a MIDI fájlok hosszát a lejátszólistában" -#: src/amidi-plug/i_configure-ap.c:296 +#: src/amidi-plug/i_configure-ap.c:298 msgid "extract comments from MIDI file (if available)" -msgstr "" +msgstr "extra megjegyzések a MIDI fájlból (ha van)" -#: src/amidi-plug/i_configure-ap.c:301 +#: src/amidi-plug/i_configure-ap.c:303 msgid "extract lyrics from MIDI file (if available)" -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:320 -msgid "" -"* Backend selection *\n" -"AMIDI-Plug works with backends, in a modular fashion; here you should select your backend; that is, the way MIDI events are going to be handled and played.\n" -"If you have a hardware synthesizer on your audio card, and ALSA supports it, you'll want to use the ALSA backend. It can also be used with anything that provides an interface to the ALSA sequencer, including software synths or external devices.\n" -"If you want to rely on a software synthesizer and/or want to pipe audio into effect and output plugins of the player you'll want to use the good FluidSynth backend.\n" -"Press the info button to read specific information about each backend." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:331 -msgid "" -"* Transpose function *\n" -"This option allows you to play the midi file transposed in a different key, by shifting of the desired number of semitones all its notes (excepting those on midi channel 10, reserved for percussions). Especially useful if you wish to sing or play along with another instrument." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:337 -msgid "" -"* Drumshift function *\n" -"This option allows you to shift notes on midi channel 10 (the standard percussions channel) of the desired number of semitones. This results in different drumset and percussions being used during midi playback, so if you wish to enhance (or reduce, or alter) percussion sounds, try to play with this value." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:344 -msgid "" -"* Pre-calculate MIDI length *\n" -"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as soon as the player requests it, instead of doing that only when the MIDI file is being played. In example, MIDI length will be calculated straight after adding MIDI files in a playlist. Disable this option if you want faster playlist loading (when a lot of MIDI files are added), enable it to display more information in the playlist straight after loading." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:353 -msgid "" -"* Extract comments from MIDI files *\n" -"Some MIDI files contain text comments (author, copyright, instrument notes, etc.). If this option is enabled, AMIDI-Plug will extract and display comments (if available) in the file information dialog." -msgstr "" +msgstr "dalszöveg kibontása a MIDI fájból (ha elérhetÅ‘)" -#: src/amidi-plug/i_configure-ap.c:358 -msgid "" -"* Extract lyrics from MIDI files *\n" -"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug will extract and display song lyrics (if available) in the file information dialog." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:375 +#: src/amidi-plug/i_configure-ap.c:333 msgid "" "AMIDI\n" "Plug" msgstr "" +"AMIDI\n" +"bÅ‘vítmény" -#: src/amidi-plug/i_configure.c:73 +#: src/amidi-plug/i_configure.c:76 msgid "AMIDI-Plug - select file" msgstr "AMIDI-Plug - fájl választás" -#: src/amidi-plug/i_configure.c:126 +#: src/amidi-plug/i_configure.c:129 msgid "AMIDI-Plug - configuration" msgstr "AMIDI-Plug - konfiguráció" -#: src/amidi-plug/i_configure-fluidsynth.c:52 +#: src/amidi-plug/i_configure-fluidsynth.c:55 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - SoundFont fájl választás" -#: src/amidi-plug/i_configure-fluidsynth.c:268 +#: src/amidi-plug/i_configure-fluidsynth.c:270 msgid "FLUIDSYNTH BACKEND CONFIGURATION" msgstr "FLUIDSYNTH HÃTTÉR-SZOLGÃLTATÃS KONFIGURÃCIÓ" -#: src/amidi-plug/i_configure-fluidsynth.c:316 +#: src/amidi-plug/i_configure-fluidsynth.c:313 msgid "SoundFont settings" msgstr "SoundFont beállítások" -#: src/amidi-plug/i_configure-fluidsynth.c:352 +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Fájlnév" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 msgid "Size (bytes)" msgstr "Méret (byte)" -#: src/amidi-plug/i_configure-fluidsynth.c:401 +#: src/amidi-plug/i_configure-fluidsynth.c:398 msgid "Load SF on player start" msgstr "SF betöltése a lejátszó indításakor" -#: src/amidi-plug/i_configure-fluidsynth.c:405 +#: src/amidi-plug/i_configure-fluidsynth.c:402 msgid "Load SF on first midifile play" msgstr "SF betöltése az elsÅ‘ midi fájl betöltésekor" -#: src/amidi-plug/i_configure-fluidsynth.c:420 +#: src/amidi-plug/i_configure-fluidsynth.c:417 msgid "Synthesizer settings" msgstr "Szintetizátor beállítások" -#: src/amidi-plug/i_configure-fluidsynth.c:429 +#: src/amidi-plug/i_configure-fluidsynth.c:426 msgid "gain" msgstr "erÅ‘sítés" -#: src/amidi-plug/i_configure-fluidsynth.c:435 -#: src/amidi-plug/i_configure-fluidsynth.c:463 -#: src/amidi-plug/i_configure-fluidsynth.c:491 -#: src/amidi-plug/i_configure-fluidsynth.c:522 +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 msgid "use default" msgstr "legyen alapértelmezett" -#: src/amidi-plug/i_configure-fluidsynth.c:438 -#: src/amidi-plug/i_configure-fluidsynth.c:466 +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 msgid "value:" msgstr "érték:" -#: src/amidi-plug/i_configure-fluidsynth.c:457 +#: src/amidi-plug/i_configure-fluidsynth.c:454 msgid "poliphony" msgstr "polifónikus" -#: src/amidi-plug/i_configure-fluidsynth.c:485 +#: src/amidi-plug/i_configure-fluidsynth.c:482 msgid "reverb" msgstr "visszhang" -#: src/amidi-plug/i_configure-fluidsynth.c:494 -#: src/amidi-plug/i_configure-fluidsynth.c:525 +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 msgid "yes" msgstr "igen" -#: src/amidi-plug/i_configure-fluidsynth.c:496 -#: src/amidi-plug/i_configure-fluidsynth.c:527 +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 msgid "no" msgstr "nem" -#: src/amidi-plug/i_configure-fluidsynth.c:516 +#: src/amidi-plug/i_configure-fluidsynth.c:513 msgid "chorus" msgstr "kórus" -#: src/amidi-plug/i_configure-fluidsynth.c:547 +#: src/amidi-plug/i_configure-fluidsynth.c:544 msgid "sample rate" msgstr "mintavételi frekvencia" -#: src/amidi-plug/i_configure-fluidsynth.c:553 +#: src/amidi-plug/i_configure-fluidsynth.c:550 msgid "22050 Hz " msgstr "22050 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:556 +#: src/amidi-plug/i_configure-fluidsynth.c:553 msgid "44100 Hz " msgstr "44100 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:559 +#: src/amidi-plug/i_configure-fluidsynth.c:556 msgid "96000 Hz " msgstr "96000 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:562 +#: src/amidi-plug/i_configure-fluidsynth.c:559 msgid "custom " msgstr "egyéb" -#: src/amidi-plug/i_configure-fluidsynth.c:571 +#: src/amidi-plug/i_configure-fluidsynth.c:568 msgid "Hz " msgstr "Hz" #: src/amidi-plug/i_configure-fluidsynth.c:621 -msgid "" -"* Select SoundFont files *\n" -"In order to play MIDI with FluidSynth, you need to specify at least one valid SoundFont file here (use absolute paths). The loading order is from the top (first) to the bottom (last)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:626 -msgid "" -"* Load SoundFont on player start *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require up to a few seconds. This is a one-time task (the soundfont will stay loaded until it is changed or the backend is unloaded) that can be done at player start, or before the first MIDI file is played (the latter is a better choice if you don't use your player to listen MIDI files only)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:634 -msgid "" -"* Load SoundFont on first midifile play *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require up to a few seconds. This is a one-time task (the soundfont will stay loaded until it is changed or the backend is unloaded) that can be done at player start, or before the first MIDI file is played (the latter is a better choice if you don't use your player to listen MIDI files only)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:642 -msgid "" -"* Synthesizer gain *\n" -"From FluidSynth docs: the gain is applied to the final or master output of the synthesizer; it is set to a low value by default to avoid the saturation of the output when random MIDI files are played." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:647 -msgid "" -"* Synthesizer polyphony *\n" -"From FluidSynth docs: the polyphony defines how many voices can be played in parallel; the number of voices is not necessarily equivalent to the number of notes played simultaneously; indeed, when a note is struck on a specific MIDI channel, the preset on that channel may create several voices, for example, one for the left audio channel and one for the right audio channels; the number of voices activated depends on the number of instrument zones that fall in the correspond to the velocity and key of the played note." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:657 -#: src/amidi-plug/i_configure-fluidsynth.c:663 -msgid "" -"* Synthesizer reverb *\n" -"From FluidSynth docs: when set to \"yes\" the reverb effects module is activated; note that when the reverb module is active, the amount of signal sent to the reverb module depends on the \"reverb send\" generator defined in the SoundFont." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:669 -#: src/amidi-plug/i_configure-fluidsynth.c:675 -msgid "" -"* Synthesizer chorus *\n" -"From FluidSynth docs: when set to \"yes\" the chorus effects module is activated; note that when the chorus module is active, the amount of signal sent to the chorus module depends on the \"chorus send\" generator defined in the SoundFont." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:681 -#: src/amidi-plug/i_configure-fluidsynth.c:685 -#: src/amidi-plug/i_configure-fluidsynth.c:689 -#: src/amidi-plug/i_configure-fluidsynth.c:693 -msgid "" -"* Synthesizer samplerate *\n" -"The sample rate of the audio generated by the synthesizer. You can also specify a custom value in the interval 22050Hz-96000Hz." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:701 msgid "FluidSynth Backend not loaded or not available" msgstr "FluidSynth háttér-szolgáltatás nem lett betöltve vagy nem elérhetÅ‘" -#: src/amidi-plug/i_configure-fluidsynth.c:720 +#: src/amidi-plug/i_configure-fluidsynth.c:640 msgid "" "FluidSynth\n" "backend" @@ -983,8 +557,6 @@ "backend" #: src/amidi-plug/i_fileinfo.c:169 -#: src/bluetooth/gui.c:271 -#: src/sid/xs_interface.c:1769 msgid "Name:" msgstr "Név" @@ -1089,161 +661,161 @@ msgid "None" msgstr "Nincs" -#: src/aosd/aosd_trigger.c:77 +#: src/aosd/aosd_trigger.c:78 msgid "Playback Start" msgstr "Lejátszás kezdete" -#: src/aosd/aosd_trigger.c:78 +#: src/aosd/aosd_trigger.c:79 msgid "Triggers OSD when a playlist entry is played." msgstr "OSD használata ha a lejátszólista egy eleme elindul." -#: src/aosd/aosd_trigger.c:82 +#: src/aosd/aosd_trigger.c:83 msgid "Title Change" msgstr "Cím váltás" -#: src/aosd/aosd_trigger.c:83 -msgid "Triggers OSD when, during playback, the song title changes but the filename is the same. This is mostly useful to display title changes in internet streams." +#: src/aosd/aosd_trigger.c:84 +msgid "" +"Triggers OSD when, during playback, the song title changes but the filename " +"is the same. This is mostly useful to display title changes in internet " +"streams." msgstr "" -#: src/aosd/aosd_trigger.c:89 +#: src/aosd/aosd_trigger.c:90 msgid "Volume Change" msgstr "HangerÅ‘ váltás" -#: src/aosd/aosd_trigger.c:90 +#: src/aosd/aosd_trigger.c:91 msgid "Triggers OSD when volume is changed." msgstr "OSD használata ha változik a hangerÅ‘." -#: src/aosd/aosd_trigger.c:94 +#: src/aosd/aosd_trigger.c:95 msgid "Pause On" msgstr "Szünet Be" -#: src/aosd/aosd_trigger.c:95 +#: src/aosd/aosd_trigger.c:96 msgid "Triggers OSD when playback is paused." msgstr "OSD használata ha megállítják a lejátszást." -#: src/aosd/aosd_trigger.c:99 +#: src/aosd/aosd_trigger.c:100 msgid "Pause Off" msgstr "Szünet Ki" -#: src/aosd/aosd_trigger.c:100 +#: src/aosd/aosd_trigger.c:101 msgid "Triggers OSD when playback is unpaused." msgstr "OSD használata ha elindítják a lejátszást." -#: src/aosd/aosd_ui.c:168 +#: src/aosd/aosd_ui.c:179 msgid "Placement" msgstr "Elhelyezés" -#: src/aosd/aosd_ui.c:202 +#: src/aosd/aosd_ui.c:218 msgid "Relative X offset:" msgstr "Relatív X pozíció:" -#: src/aosd/aosd_ui.c:211 +#: src/aosd/aosd_ui.c:227 msgid "Relative Y offset:" msgstr "Relatív Y pozíció:" -#: src/aosd/aosd_ui.c:220 +#: src/aosd/aosd_ui.c:236 msgid "Max OSD width:" msgstr "Max OSD szélesség:" -#: src/aosd/aosd_ui.c:233 +#: src/aosd/aosd_ui.c:249 msgid "Multi-Monitor options" msgstr "Több monitoros opciók" -#: src/aosd/aosd_ui.c:237 +#: src/aosd/aosd_ui.c:253 msgid "Display OSD using:" msgstr "OSD képernyÅ‘k használata:" -#: src/aosd/aosd_ui.c:239 +#: src/aosd/aosd_ui.c:264 msgid "all monitors" msgstr "minden monitoron" -#: src/aosd/aosd_ui.c:242 +#: src/aosd/aosd_ui.c:267 #, c-format msgid "monitor %i" msgstr "monitor %i" -#: src/aosd/aosd_ui.c:295 +#: src/aosd/aosd_ui.c:322 msgid "Timing (ms)" msgstr "IdÅ‘tartam (mp)" -#: src/aosd/aosd_ui.c:300 +#: src/aosd/aosd_ui.c:327 msgid "Display:" msgstr "KépernyÅ‘:" -#: src/aosd/aosd_ui.c:305 +#: src/aosd/aosd_ui.c:332 msgid "Fade in:" msgstr "Ãttűnés be:" -#: src/aosd/aosd_ui.c:310 +#: src/aosd/aosd_ui.c:337 msgid "Fade out:" msgstr "Ãttűnés ki:" -#: src/aosd/aosd_ui.c:391 +#: src/aosd/aosd_ui.c:418 msgid "Fonts" msgstr "Betűkészletek" -#: src/aosd/aosd_ui.c:399 +#: src/aosd/aosd_ui.c:426 #, c-format msgid "Font %i:" msgstr "Betűkészlet %i:" -#: src/aosd/aosd_ui.c:416 +#: src/aosd/aosd_ui.c:443 msgid "Shadow" msgstr "Ãrnyék" -#: src/aosd/aosd_ui.c:451 +#: src/aosd/aosd_ui.c:478 msgid "Internationalization" msgstr "Nemzetközi" -#: src/aosd/aosd_ui.c:457 +#: src/aosd/aosd_ui.c:484 msgid "Disable UTF-8 conversion of text (in aosd)" msgstr "UTF-8 karakter konverzió letiltása (aosd-ben)" -#: src/aosd/aosd_ui.c:475 +#: src/aosd/aosd_ui.c:502 msgid "Select Skin File" msgstr "Téma fájl választás" -#: src/aosd/aosd_ui.c:586 +#: src/aosd/aosd_ui.c:613 msgid "Render Style" msgstr "Renderelési stílus" -#: src/aosd/aosd_ui.c:602 +#: src/aosd/aosd_ui.c:629 msgid "Colors" msgstr "Színek" -#: src/aosd/aosd_ui.c:615 +#: src/aosd/aosd_ui.c:642 #, c-format msgid "Color %i:" msgstr "Szín %i:" -#: src/aosd/aosd_ui.c:635 +#: src/aosd/aosd_ui.c:662 msgid "Custom Skin" msgstr "Egyedi téma" -#: src/aosd/aosd_ui.c:641 +#: src/aosd/aosd_ui.c:668 msgid "Skin file:" msgstr "Téma fájl:" -#: src/aosd/aosd_ui.c:644 -#: src/sid/xs_interface.c:1044 -#: src/sid/xs_interface.c:1236 -#: src/sid/xs_interface.c:1292 +#: src/aosd/aosd_ui.c:671 msgid "Browse" msgstr "Böngészés" -#: src/aosd/aosd_ui.c:746 +#: src/aosd/aosd_ui.c:773 msgid "Enable trigger" msgstr "Esemény engedélyezése" -#: src/aosd/aosd_ui.c:773 +#: src/aosd/aosd_ui.c:800 msgid "Event" msgstr "Esemény" -#: src/aosd/aosd_ui.c:801 +#: src/aosd/aosd_ui.c:828 msgid "Composite manager detected" msgstr "Kompozit kezelÅ‘ detektálva" -#: src/aosd/aosd_ui.c:808 +#: src/aosd/aosd_ui.c:835 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite manager otherwise the OSD won't work properly" @@ -1251,75 +823,72 @@ "Kompozít kezelÅ‘ nem érzékelhetÅ‘;\n" "ha tudja, hogy van egy futó kompozít kezelÅ‘, kérjük aktiválja, egyébként az OSD nem fog megfelelÅ‘en működni" -#: src/aosd/aosd_ui.c:816 +#: src/aosd/aosd_ui.c:843 msgid "Composite manager not required for fake transparency" msgstr "Kompozít kezelÅ‘ nem szükséges a nem valódi átlátszósághoz" -#: src/aosd/aosd_ui.c:854 +#: src/aosd/aosd_ui.c:881 msgid "Transparency" msgstr "Ãtlátszóság" -#: src/aosd/aosd_ui.c:860 +#: src/aosd/aosd_ui.c:887 msgid "Fake transparency" msgstr "Nem valódi átlátszóság" -#: src/aosd/aosd_ui.c:862 +#: src/aosd/aosd_ui.c:889 msgid "Real transparency (requires X Composite Ext.)" msgstr "Valódi átlászóság (szükséges X Composite Ext.)" -#: src/aosd/aosd_ui.c:904 +#: src/aosd/aosd_ui.c:931 msgid "Composite extension not loaded" msgstr "Kompozit kiterjesztés nem tölthetÅ‘ be" -#: src/aosd/aosd_ui.c:912 +#: src/aosd/aosd_ui.c:939 msgid "Composite extension not available" msgstr "Kompozit kiterjesztés nem érhetÅ‘ el" -#: src/aosd/aosd_ui.c:931 +#: src/aosd/aosd_ui.c:958 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.c:1012 +#: src/aosd/aosd_ui.c:1039 msgid "Audacious OSD - configuration" msgstr "Audacious OSD - beállítás" -#: src/aosd/aosd_ui.c:1033 +#: src/aosd/aosd_ui.c:1060 msgid "Test" msgstr "Teszt" -#: src/aosd/aosd_ui.c:1048 +#: src/aosd/aosd_ui.c:1075 msgid "Position" msgstr "Pozíció" -#: src/aosd/aosd_ui.c:1053 +#: src/aosd/aosd_ui.c:1080 msgid "Animation" msgstr "Animáció" -#: src/aosd/aosd_ui.c:1058 +#: src/aosd/aosd_ui.c:1085 msgid "Text" msgstr "Szöveg" -#: src/aosd/aosd_ui.c:1063 +#: src/aosd/aosd_ui.c:1090 msgid "Decoration" msgstr "Dekoráció" -#: src/aosd/aosd_ui.c:1068 +#: src/aosd/aosd_ui.c:1095 msgid "Trigger" msgstr "Esemény" -#: src/aosd/aosd_ui.c:1073 -#: src/cdaudio-ng/configure.c:178 -#: src/modplug/gui/interface.cxx:689 -#: src/sid/xs_interface.c:1302 +#: src/aosd/aosd_ui.c:1100 src/cdaudio-ng/configure.c:171 msgid "Misc" msgstr "Egyéb" -#: src/aosd/aosd_ui.c:1110 +#: src/aosd/aosd_ui.c:1137 msgid "Audacious OSD - about" msgstr "Audacious OSD - névjegy" -#: src/aosd/aosd_ui.c:1140 +#: src/aosd/aosd_ui.c:1167 msgid "" "\n" "Audacious OSD " @@ -1327,7 +896,7 @@ "\n" "Audacious OSD" -#: src/aosd/aosd_ui.c:1141 +#: src/aosd/aosd_ui.c:1168 msgid "" "\n" "http://www.develia.org/projects.php?p=audacious#aosd\n" @@ -1349,142 +918,35 @@ "http://neugierig.org/software/ghosd/\n" "\n" -#: src/bluetooth/agent.c:356 -#: src/bluetooth/agent.c:397 -#, c-format -msgid "Pairing request for '%s'" -msgstr "Párosításkérés a(z) %s eszköztÅ‘l" - -#: src/bluetooth/agent.c:544 -#, c-format -msgid "Authorization request for %s" -msgstr "Engedély kérés ehhez %s" - -#: src/bluetooth/agent.c:728 -#, c-format -msgid "Created bonding with %s" -msgstr "Kötés létrehozva: %s" - -#: src/bluetooth/agent.c:756 -#, c-format -msgid "Removed bonding with %s" -msgstr "Kötés eltávolítva: %s" - -#: src/bluetooth/agent.c:808 -msgid "Device has been switched off" -msgstr "Az eszköz kikapcsolva" - -#: src/bluetooth/agent.c:811 -msgid "Device has been made non-discoverable" -msgstr "Az eszköz nem felfedezhetÅ‘" - -#: src/bluetooth/agent.c:813 -msgid "Device has been made connectable" -msgstr "Az eszköz csatlakoztatható" - -#: src/bluetooth/agent.c:815 -msgid "Device has been made discoverable" -msgstr "Az eszköz felfedezhetÅ‘" - -#: src/bluetooth/agent.c:817 -msgid "Device has been made limited discoverable" -msgstr "Az eszköz korlátozottan felfedezhetÅ‘" - -#: src/bluetooth/agent.c:819 -msgid "Device has been switched into pairing mode" -msgstr "Az eszköz párosítás módban" - -#: src/bluetooth/bluetooth.c:117 -msgid "Bluetooth headset support plugin" -msgstr "Bluetooth fejhallgató támogatás bÅ‘vítmény" - -#: src/bluetooth/bluetooth.c:118 -msgid "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" -msgstr "" - -#: src/bluetooth/gui.c:148 -msgid "Producer" -msgstr "KészítÅ‘" - -#: src/bluetooth/gui.c:221 -msgid "Available Headsets" -msgstr "ElérhetÅ‘ fejhallgatók" - -#: src/bluetooth/gui.c:224 -msgid "Current Headset" -msgstr "Aktuális fejhallgató" - -#: src/bluetooth/gui.c:227 -msgid "_Refresh" -msgstr "_Frissítés" - -#: src/bluetooth/gui.c:231 -msgid "_Connect" -msgstr "Kap_csolódás" - -#: src/bluetooth/gui.c:237 -msgid "_Close" -msgstr "_Bezár" - -#: src/bluetooth/gui.c:274 -msgid "Class" -msgstr "Osztály" - -#: src/bluetooth/gui.c:278 -msgid "Address:" -msgstr "Cím:" - -#: src/bluetooth/scan_gui.c:69 -msgid "Bonding finish!" -msgstr "Kötés sikeres!" - -#: src/bluetooth/scan_gui.c:76 -msgid "No devices found!" -msgstr "Nem találtam eszközt!" - -#: src/bluetooth/scan_gui.c:119 -msgid "Scanning..." -msgstr "Keresés..." - -#: src/bluetooth/scan_gui.c:122 -msgid "Pairing..." -msgstr "Párosítás" - -#: src/bluetooth/scan_gui.c:138 -msgid "Rescan" -msgstr "Újraolvasás" - -#: src/bluetooth/scan_gui.c:142 -#: src/gtkui/ui_manager.c:66 -#: src/gtkui/ui_manager.c:67 -#: src/hotkey/gui.c:71 -#: src/skins/ui_manager.c:167 -#: src/skins/ui_manager.c:168 -msgid "Play" -msgstr "Lejátszás" - #: src/blur_scope/config.c:73 msgid "Blur Scope: Color selection" msgstr "Blur Scope: Szín választás" -#: src/blur_scope/config.c:83 -#: src/jack/configure.c:111 +#: src/blur_scope/config.c:83 src/jack/configure.c:106 msgid "Options:" msgstr "Beállítások:" -#: src/cdaudio-ng/cdaudio-ng.c:278 +#: src/bs2b/plugin.c:157 +msgid "Bauer stereophonic-to-binaural Preferences" +msgstr "" + +#: src/bs2b/plugin.c:168 +msgid "Feed level:" +msgstr "" + +#: src/bs2b/plugin.c:182 +msgid "Cut frequency:" +msgstr "Vágási frekvencia:" + +#: src/bs2b/plugin.c:196 +msgid "Presets:" +msgstr "" + +#: src/cdaudio-ng/cdaudio-ng.c:242 msgid "About Audio CD Plugin" msgstr "Audio CD bÅ‘vítmény néjvegye" -#: src/cdaudio-ng/cdaudio-ng.c:279 +#: src/cdaudio-ng/cdaudio-ng.c:243 msgid "" "Copyright (c) 2007, by Calin Crisan and The Audacious Team.\n" "\n" @@ -1497,125 +959,164 @@ "\n" "Copyright 2009 John Lindgren" msgstr "" +"Copyright (c) 2007, írta Calin Crisan és az Audacious csapat.\n" +"\n" +"Sok-sok köszönet a libcdio fejlesztÅ‘knek \n" +"Ȏs a libcddb fejlesztÅ‘knek .\n" +"\n" +"Továbbá köszönöm Tony Vroon mentori és irányadói segítségét.\n" +"\n" +"Ez a Google Summer of Code 2007 projekt keretén belül készült.\n" +"\n" +"Copyright 2009 John Lindgren" -#: src/cdaudio-ng/configure.c:155 +#: src/cdaudio-ng/cdaudio-ng.c:552 +msgid "Audio CD" +msgstr "Audio CD" + +#: src/cdaudio-ng/cdaudio-ng.c:924 +msgid "Drive is empty." +msgstr "A meghajtó üres." + +#: src/cdaudio-ng/cdaudio-ng.c:926 +msgid "Unsupported disk type." +msgstr "Nem támogatott lemez típus." + +#: src/cdaudio-ng/configure.c:148 msgid "CD Audio Plugin Configuration" msgstr "Hang CD bÅ‘vítmény beállítások" -#: src/cdaudio-ng/configure.c:167 +#: src/cdaudio-ng/configure.c:160 msgid "Digital audio extraction" msgstr "Digitális zenelejátszás" -#: src/cdaudio-ng/configure.c:172 +#: src/cdaudio-ng/configure.c:165 msgid "Title information" msgstr "Cím információ" -#: src/cdaudio-ng/configure.c:190 +#: src/cdaudio-ng/configure.c:176 msgid "Disc speed:" msgstr "Lemez sebesség:" -#: src/cdaudio-ng/configure.c:198 +#: src/cdaudio-ng/configure.c:184 msgid "Use cd-text if available" msgstr "Használjon cd-text információt ha elérhetÅ‘" -#: src/cdaudio-ng/configure.c:205 +#: src/cdaudio-ng/configure.c:191 msgid "Use CDDB if available" msgstr "Használja a CDDB adatbázist ha elérhetÅ‘" -#: src/cdaudio-ng/configure.c:211 +#: src/cdaudio-ng/configure.c:197 msgid "Server: " msgstr "Szerver:" -#: src/cdaudio-ng/configure.c:215 +#: src/cdaudio-ng/configure.c:201 msgid "Path: " msgstr "Útvonal:" -#: src/cdaudio-ng/configure.c:219 +#: src/cdaudio-ng/configure.c:205 msgid "Port: " msgstr "Port:" -#: src/cdaudio-ng/configure.c:232 +#: src/cdaudio-ng/configure.c:218 msgid "Use HTTP instead of CDDBP" msgstr "Hasznájon HTTP helyett CDDBP protokollt" -#: src/cdaudio-ng/configure.c:244 +#: src/cdaudio-ng/configure.c:230 msgid "Override default device: " msgstr "Alapértelmezett eszköz felülírása:" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:123 +#: src/echo_plugin/gui.c:118 src/jack/configure.c:141 src/null/null.c:107 +#: src/stereo_plugin/stereo.c:118 +msgid "Ok" +msgstr "Ok" + +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Play CD" msgstr "CD lejátszása" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Add CD" msgstr "CD Hozzáadása" -#: src/compressor/plugin.c:58 +#: src/compressor/plugin.c:63 msgid "About Dynamic Range Compression Plugin" msgstr "Dinamikus tartomány kompresszió bÅ‘vítmény névjegye" -#: src/compressor/plugin.c:91 +#: src/compressor/plugin.c:95 msgid "Dynamic Range Compressor Preferences" msgstr "Dinamika tartomány kompresszió beállítások" -#: src/compressor/plugin.c:103 -msgid "Target volume:" -msgstr "Cél hangerÅ‘:" - -#: src/compressor/plugin.c:116 -msgid "Effect strength:" -msgstr "Effekt erÅ‘ssége:" +#: src/compressor/plugin.c:107 +msgid "Center volume:" +msgstr "Közép hangerÅ‘:" + +#: src/compressor/plugin.c:120 +msgid "Dynamic range:" +msgstr "Dinamikus tartomány:" -#: src/console/configure.c:137 +#: src/console/configure.c:136 msgid "Game Console Music Decoder" msgstr "Játék Konzol Zene Dekóder" -#: src/console/configure.c:171 +#: src/console/configure.c:153 +msgid "General" +msgstr "Ãltalános" + +#: src/console/configure.c:155 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "Lejátszás" + +#: src/console/configure.c:170 msgid "Bass:" msgstr "Basszus:" -#: src/console/configure.c:175 -#: src/console/configure.c:186 -#: src/console/configure.c:207 +#: src/console/configure.c:174 src/console/configure.c:185 +#: src/console/configure.c:206 msgid "secs" msgstr "mp" -#: src/console/configure.c:182 +#: src/console/configure.c:181 msgid "Treble:" msgstr "Magas:" -#: src/console/configure.c:203 +#: src/console/configure.c:202 msgid "Default song length:" msgstr "Alapértelmezett szám hossz:" -#: src/console/configure.c:209 -#: src/modplug/gui/interface.cxx:269 -#: src/sid/xs_interface.c:666 +#: src/console/configure.c:208 msgid "Resampling" msgstr "Újra mintavételezés" -#: src/console/configure.c:215 +#: src/console/configure.c:214 msgid "Enable audio resampling" msgstr "Engedélyezi az audio újra mintavételezést" -#: src/console/configure.c:230 +#: src/console/configure.c:229 msgid "Resampling rate:" msgstr "Újra mintavételezési arány:" -#: src/console/configure.c:245 +#: src/console/configure.c:233 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:244 msgid "SPC" msgstr "SPC" -#: src/console/configure.c:246 +#: src/console/configure.c:245 msgid "Ignore length from SPC tags" msgstr "" -#: src/console/configure.c:247 +#: src/console/configure.c:246 msgid "Increase reverb" msgstr "Visszhang növelése" -#: src/console/configure.c:272 -msgid "The default song length, expressed in seconds, is used for songs that do not provide length information (i.e. looping tracks)." +#: src/console/configure.c:271 +msgid "" +"The default song length, expressed in seconds, is used for songs that do not" +" provide length information (i.e. looping tracks)." msgstr "" #: src/console/plugin.c:33 @@ -1630,51 +1131,48 @@ " Shay Green \n" msgstr "" -#: src/crossfade/plugin.c:51 +#: src/crossfade/plugin.c:60 msgid "About Crossfade" msgstr "Ãtfedés névjegye" -#: src/crossfade/plugin.c:84 +#: src/crossfade/plugin.c:92 msgid "Crossfade Preferences" msgstr "Ãtfedés beállítások" -#: src/crossfade/plugin.c:95 +#: src/crossfade/plugin.c:104 msgid "Overlap (in seconds):" msgstr "Ãtfedés (másodpercben):" -#: src/crossfade/plugin.c:129 -#: src/crossfade/plugin.c:137 +#: src/crossfade/plugin.c:135 src/crossfade/plugin.c:141 msgid "Crossfade Error" msgstr "Ãtfedési hiba" -#: src/crossfade/plugin.c:130 -msgid "Crossfading failed because the songs had a different number of channels." +#: src/crossfade/plugin.c:135 +msgid "" +"Crossfading failed because the songs had a different number of channels." msgstr "" -#: src/crossfade/plugin.c:138 +#: src/crossfade/plugin.c:143 msgid "" "Crossfading failed because the songs had different sample rates.\n" "\n" "You can use the Sample Rate Converter effect to resample the songs to the same rate." msgstr "" -#: src/crystalizer/crystalizer.c:104 +#: src/crystalizer/crystalizer.c:100 msgid "Configure Crystalizer" msgstr "Crystalizer beállítása" -#: src/crystalizer/crystalizer.c:106 -#: src/stereo_plugin/stereo.c:102 +#: src/crystalizer/crystalizer.c:102 src/stereo_plugin/stereo.c:97 msgid "Effect intensity:" msgstr "Effektus intenzitása:" -#: src/crystalizer/crystalizer.c:143 -#: src/echo_plugin/gui.c:137 -#: src/modplug/gui/interface.cxx:709 -#: src/stereo_plugin/stereo.c:139 +#: src/crystalizer/crystalizer.c:136 src/echo_plugin/gui.c:131 +#: src/stereo_plugin/stereo.c:131 msgid "Apply" msgstr "Alkalmazás" -#: src/echo_plugin/gui.c:14 +#: src/echo_plugin/gui.c:15 msgid "" "Echo Plugin\n" "By Johan Levin 1999.\n" @@ -1686,570 +1184,235 @@ "\n" "Surround visszhang Carl van Schaik 1999" -#: src/echo_plugin/gui.c:26 +#: src/echo_plugin/gui.c:27 msgid "About Echo Plugin" msgstr "Visszhang bÅ‘vítmény névjegye" -#: src/echo_plugin/gui.c:69 +#: src/echo_plugin/gui.c:67 msgid "Configure Echo" msgstr "Visszhang beállítása" -#: src/echo_plugin/gui.c:82 +#: src/echo_plugin/gui.c:83 msgid "Delay: (ms)" msgstr "Késleltetés: (ms)" -#: src/echo_plugin/gui.c:87 +#: src/echo_plugin/gui.c:88 msgid "Feedback: (%)" msgstr "Visszacsatolás: (%)" -#: src/echo_plugin/gui.c:92 +#: src/echo_plugin/gui.c:93 msgid "Volume: (%)" msgstr "HangerÅ‘: (%)" -#: src/evdev-plug/ed.c:60 -msgid "Playback->Play" -msgstr "Lejátszás->Indítás" - -#: src/evdev-plug/ed.c:61 -msgid "Playback->Stop" -msgstr "Lejátszás->Megállítás" - -#: src/evdev-plug/ed.c:62 -msgid "Playback->Pause" -msgstr "Lejátszás->Szünet" - -#: src/evdev-plug/ed.c:63 -msgid "Playback->Prev" -msgstr "Lejátszás->ElÅ‘zÅ‘" - -#: src/evdev-plug/ed.c:64 -msgid "Playback->Next" -msgstr "Lejátszás->KövetkezÅ‘" - -#: src/evdev-plug/ed.c:65 -msgid "Playback->Eject" -msgstr "Lejátszás->Kiadás" - -#: src/evdev-plug/ed.c:67 -msgid "Playlist->Repeat" -msgstr "Lejátszólista->Ismétlés" - -#: src/evdev-plug/ed.c:68 -msgid "Playlist->Shuffle" -msgstr "Lejátszólista->Véletlenszerű" - -#: src/evdev-plug/ed.c:70 -msgid "Volume->Up_5" -msgstr "HangerÅ‘ ->Fel_5" - -#: src/evdev-plug/ed.c:71 -msgid "Volume->Down_5" -msgstr "HangerÅ‘->Le_5" - -#: src/evdev-plug/ed.c:72 -msgid "Volume->Up_10" -msgstr "HangerÅ‘->Fel_10" - -#: src/evdev-plug/ed.c:73 -msgid "Volume->Down_10" -msgstr "HangerÅ‘->Le_10" - -#: src/evdev-plug/ed.c:74 -msgid "Volume->Mute" -msgstr "HangerÅ‘->Némítás" - -#: src/evdev-plug/ed.c:76 -msgid "Window->Main" -msgstr "Ablak->FÅ‘ablak" - -#: src/evdev-plug/ed.c:77 -msgid "Window->Playlist" -msgstr "Ablak->Lejátszólista" - -#: src/evdev-plug/ed.c:78 -msgid "Window->Equalizer" -msgstr "Ablak->Ekvalízer" - -#: src/evdev-plug/ed.c:79 -msgid "Window->JumpToFile" -msgstr "Ablak->FájlhozUgrás" - -#: src/evdev-plug/ed_internals.c:94 -#, c-format -msgid "event-device-plugin: unable to open device file %s , skipping this device; check that the file exists and that you have read permission for it\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:103 -#, c-format -msgid "event-device-plugin: unable to create a io_channel for device file %s ,skipping this device\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:342 -msgid "event-device-plugin: unable to open /proc/bus/input/devices , automatic detection of event devices won't work.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:351 -msgid "event-device-plugin: unable to open a io_channel for /proc/bus/input/devices , automatic detection of event devices won't work.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:361 -msgid "event-device-plugin: an error occurred while reading /proc/bus/input/devices , automatic detection of event devices won't work.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:424 -#, c-format -msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:489 -#: src/evdev-plug/ed_internals.c:583 -#, c-format -msgid "event-device-plugin: unable to load config file %s , default settings will be used.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:535 -#, c-format -msgid "event-device-plugin: incomplete information in config file for device \"%s\" , skipping.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:604 -#: src/evdev-plug/ed_internals.c:936 -#, c-format -msgid "event-device-plugin: configuration, unable to get is_active value for device \"%s\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:840 -#, c-format -msgid "event-device-plugin: unable to access local directory %s , settings will not be saved.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:890 -#, c-format -msgid "event-device-plugin: configuration, unable to get filename value for device \"%s\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:906 -#, c-format -msgid "event-device-plugin: configuration, unable to get phys value for device \"%s\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:922 -#, c-format -msgid "event-device-plugin: configuration, unable to get is_custom value for device \"%s\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:946 -#, c-format -msgid "event-device-plugin: configuration, unexpected value for device \"%s\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_ui.c:212 -msgid "Detected" -msgstr "Detektálva" - -#: src/evdev-plug/ed_ui.c:217 -msgid "Custom" -msgstr "Egyéni" - -#: src/evdev-plug/ed_ui.c:223 -msgid "Not Detected" -msgstr "Nem talált" - -#: src/evdev-plug/ed_ui.c:275 -#: src/evdev-plug/ed_ui.c:411 -#: src/evdev-plug/ed_ui.c:874 -msgid "Information" -msgstr "Információ" - -#: src/evdev-plug/ed_ui.c:276 -msgid "" -"Cannot open bindings window for a not-detected device.\n" -"Ensure that the device has been correctly plugged in." -msgstr "" - -#: src/evdev-plug/ed_ui.c:319 -msgid "Error" -msgstr "Hiba" - -#: src/evdev-plug/ed_ui.c:320 -msgid "" -"Unable to open selected device.\n" -"Please check read permissions on device file." -msgstr "" - -#: src/evdev-plug/ed_ui.c:341 -msgid "EvDev-Plug - Add custom device" -msgstr "EvDev-Plug - Egyéb eszköz hozzáadása" - -#: src/evdev-plug/ed_ui.c:353 -msgid "" -"EvDev-Plug tries to automatically detect and update information about\n" -"event devices available on the system.\n" -"However, if auto-detect doesn't work for your system, or you have event\n" -"devices in a non-standard location (currently they're only searched in\n" -"/dev/input/ ), you may want to add a custom device, explicitly specifying\n" -"name and device file." -msgstr "" - -#: src/evdev-plug/ed_ui.c:361 -msgid "Device name:" -msgstr "Eszköz neve:" - -#: src/evdev-plug/ed_ui.c:365 -msgid "Device file:" -msgstr "Eszköz fájl:" - -#: src/evdev-plug/ed_ui.c:404 -msgid "(custom)" -msgstr "(egyéni)" - -#: src/evdev-plug/ed_ui.c:412 -msgid "" -"Please specify both name and filename.\n" -"Filename must be specified with absolute path." -msgstr "" - -#: src/evdev-plug/ed_ui.c:447 -msgid "Do you want to remove the existing configuration for selected device?\n" -msgstr "" - -#: src/evdev-plug/ed_ui.c:466 -msgid "Do you want to remove the selected custom device?\n" -msgstr "" - -#: src/evdev-plug/ed_ui.c:612 -msgid "EvDev-Plug - Configuration" -msgstr "EvDev-Plug - beállítások" - -#: src/evdev-plug/ed_ui.c:651 -msgid "Active" -msgstr "Aktív" - -#: src/evdev-plug/ed_ui.c:655 -#: src/sun/configure.c:486 -msgid "Status" -msgstr "Státusz" - -#: src/evdev-plug/ed_ui.c:664 -msgid "Device Name" -msgstr "Eszköz neve" - -#: src/evdev-plug/ed_ui.c:668 -msgid "Device File" -msgstr "Eszköz fájl" - -#: src/evdev-plug/ed_ui.c:672 -msgid "Device Address" -msgstr "Eszköz cím" - -#: src/evdev-plug/ed_ui.c:689 -msgid "_Bindings" -msgstr "_Kötések" - -#: src/evdev-plug/ed_ui.c:838 -msgid "" -"Press a key of your device to bind it;\n" -"if no key is pressed in five seconds, this window\n" -"will close without binding changes." -msgstr "" - -#: src/evdev-plug/ed_ui.c:875 -msgid "" -"This input event has been already assigned.\n" -"\n" -"It's not possible to assign multiple actions to the same input event (although it's possible to assign the same action to multiple events)." -msgstr "" - -#: src/evdev-plug/ed_ui.c:1323 -msgid "EvDev-Plug - Bindings Configuration" -msgstr "EvDev-Plug - Kötések konfiguráció" - -#: src/evdev-plug/ed_ui.c:1363 -msgid "Name: " -msgstr "Név:" - -#: src/evdev-plug/ed_ui.c:1372 -msgid "Filename: " -msgstr "Fájlnév:" - -#: src/evdev-plug/ed_ui.c:1381 -msgid "Phys.Address: " -msgstr "Phys.Cím: " - -#: src/evdev-plug/ed_ui.c:1460 -msgid "EvDev-Plug - about" -msgstr "EvDev-Plug - névjegy" - -#: src/evdev-plug/ed_ui.c:1491 -msgid "" -"\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"written by Giacomo Lozito\n" -msgstr "" - -#: src/ffaudio/ffaudio-core.c:662 +#: src/ffaudio/ffaudio-core.c:725 #, c-format msgid "" "Multi-format audio decoding plugin for Audacious based on\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" "Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" "\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" "Audacious plugin by:\n" " William Pitcock ,\n" " Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" msgstr "" -#: src/ffaudio/ffaudio-core.c:675 +#: src/ffaudio/ffaudio-core.c:739 msgid "About FFaudio Plugin" msgstr "FFaudio bÅ‘vítmény névjegye" -#: src/filewriter/filewriter.c:180 +#: src/filewriter/filewriter.c:166 msgid "About FileWriter-Plugin" msgstr "Fájlíró bÅ‘vítmény névjegye" -#: src/filewriter/filewriter.c:181 -msgid "" -"FileWriter-Plugin\n" -"\n" -"This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" - -#: src/filewriter/filewriter.c:466 +#: src/filewriter/filewriter.c:461 msgid "File Writer Configuration" msgstr "Fájl Ãró beállítások" -#: src/filewriter/filewriter.c:478 +#: src/filewriter/filewriter.c:473 msgid "Output file format:" msgstr "Kimeneti fájl formátum:" -#: src/filewriter/filewriter.c:496 -#: src/ladspa/ladspa.c:1058 +#: src/filewriter/filewriter.c:491 msgid "Configure" msgstr "Beállítás" -#: src/filewriter/filewriter.c:511 +#: src/filewriter/filewriter.c:506 msgid "Save into original directory" msgstr "Mentés az eredeti könyvtárba" -#: src/filewriter/filewriter.c:516 +#: src/filewriter/filewriter.c:511 msgid "Save into custom directory" msgstr "Mentés egyéb könyvtárba" -#: src/filewriter/filewriter.c:528 +#: src/filewriter/filewriter.c:521 msgid "Output file folder:" msgstr "Kimeneti fájl könyvtára:" -#: src/filewriter/filewriter.c:532 +#: src/filewriter/filewriter.c:525 msgid "Pick a folder" msgstr "Válasszon egy mappát" -#: src/filewriter/filewriter.c:551 +#: src/filewriter/filewriter.c:544 msgid "Get filename from:" msgstr "Legyen a fájlnévbÅ‘l:" -#: src/filewriter/filewriter.c:554 +#: src/filewriter/filewriter.c:547 msgid "original file tags" msgstr "eredeti fájl kiterjesztések" -#: src/filewriter/filewriter.c:560 +#: src/filewriter/filewriter.c:553 msgid "original filename" msgstr "eredeti fájlnév" -#: src/filewriter/filewriter.c:570 +#: src/filewriter/filewriter.c:563 msgid "Don't strip file name extension" msgstr "Ne vágja le a fájl kiterjesztést" -#: src/filewriter/filewriter.c:574 -msgid "If enabled, the extension from the original filename will not be stripped before adding the new file extension to the end." -msgstr "" - -#: src/filewriter/filewriter.c:588 +#: src/filewriter/filewriter.c:578 msgid "Prepend track number to filename" msgstr "" -#: src/filewriter/mp3.c:710 +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:765 +msgid "Auto" +msgstr "Automatikus" + +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" +msgstr "Joint Stereo" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Stereo" +msgstr "Sztereó" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Mono" +msgstr "Monó" + +#: src/filewriter/mp3.c:706 msgid "MP3 Configuration" msgstr "MP3 Beállítás" -#: src/filewriter/mp3.c:737 +#: src/filewriter/mp3.c:729 msgid "Algorithm Quality:" msgstr "Algoritmus minÅ‘sége:" -#: src/filewriter/mp3.c:759 -msgid "" -"best/slowest:0;\n" -"worst/fastest:9;\n" -"recommended:2;\n" -"default:5;" -msgstr "" - -#: src/filewriter/mp3.c:767 +#: src/filewriter/mp3.c:754 msgid "Output Samplerate:" msgstr "Kimenet mintavétele:" -#: src/filewriter/mp3.c:778 -#: src/filewriter/mp3.c:919 -msgid "Auto" -msgstr "Automatikus" - -#: src/filewriter/mp3.c:800 +#: src/filewriter/mp3.c:782 msgid "(Hz)" msgstr "(Hz)" -#: src/filewriter/mp3.c:812 +#: src/filewriter/mp3.c:789 msgid "Bitrate / Compression ratio:" msgstr "Bitráta / Tömörítési arány:" -#: src/filewriter/mp3.c:838 +#: src/filewriter/mp3.c:813 msgid "Bitrate (kbps):" msgstr "Bitráta (kbps):" -#: src/filewriter/mp3.c:879 +#: src/filewriter/mp3.c:846 msgid "Compression ratio:" msgstr "Tömörítési arány:" -#: src/filewriter/mp3.c:909 +#: src/filewriter/mp3.c:870 msgid "Audio Mode:" msgstr "Audio mód:" -#: src/filewriter/mp3.c:924 -msgid "Joint-Stereo" -msgstr "Joint-Stereo" - -#: src/filewriter/mp3.c:967 +#: src/filewriter/mp3.c:895 msgid "Misc:" msgstr "Egyéb:" -#: src/filewriter/mp3.c:978 +#: src/filewriter/mp3.c:906 msgid "Enforce strict ISO complience" msgstr "" -#: src/filewriter/mp3.c:989 +#: src/filewriter/mp3.c:917 msgid "Error protection" msgstr "Hiba védelem" -#: src/filewriter/mp3.c:1001 -msgid "Adds 16 bit checksum to every frame" -msgstr "" - -#: src/filewriter/mp3.c:1006 -#: src/filewriter/vorbis.c:247 -#: src/modplug/gui/interface.cxx:320 +#: src/filewriter/mp3.c:929 src/filewriter/vorbis.c:247 msgid "Quality" msgstr "MinÅ‘ség" -#: src/filewriter/mp3.c:1018 +#: src/filewriter/mp3.c:939 msgid "Enable VBR/ABR" msgstr "VBR/ABR engedélyezése" -#: src/filewriter/mp3.c:1030 +#: src/filewriter/mp3.c:949 msgid "Type:" msgstr "Típus:" -#: src/filewriter/mp3.c:1041 -msgid "Variable bitrate" -msgstr "Változó bitsebesség" - -#: src/filewriter/mp3.c:1053 -msgid "Average bitrate" -msgstr "Ãtlagos bitsebesség" - -#: src/filewriter/mp3.c:1067 +#: src/filewriter/mp3.c:982 msgid "VBR Options:" msgstr "VBR beállítások:" -#: src/filewriter/mp3.c:1083 +#: src/filewriter/mp3.c:998 msgid "Minimum bitrate (kbps):" msgstr "Minimális bitsebesség (kbps):" -#: src/filewriter/mp3.c:1119 +#: src/filewriter/mp3.c:1025 msgid "Maximum bitrate (kbps):" msgstr "Maximális bitsebesség (kbps):" -#: src/filewriter/mp3.c:1151 +#: src/filewriter/mp3.c:1048 msgid "Strictly enforce minimum bitrate" msgstr "" -#: src/filewriter/mp3.c:1153 -msgid "For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/mp3 player)" -msgstr "" - -#: src/filewriter/mp3.c:1166 +#: src/filewriter/mp3.c:1060 msgid "ABR Options:" msgstr "ABR beállítások:" -#: src/filewriter/mp3.c:1176 +#: src/filewriter/mp3.c:1070 msgid "Average bitrate (kbps):" msgstr "Ãtlagos bitráta (kbps):" -#: src/filewriter/mp3.c:1213 +#: src/filewriter/mp3.c:1098 msgid "VBR quality level:" msgstr "VBR minÅ‘ségi szint:" -#: src/filewriter/mp3.c:1228 -msgid "" -"highest:0;\n" -"lowest:9;\n" -"default:4;" -msgstr "" -"legnagyobb:0;\n" -"legkisebb:9;\n" -"alapértelmezés:4;" - -#: src/filewriter/mp3.c:1236 +#: src/filewriter/mp3.c:1117 msgid "Don't write Xing VBR header" msgstr "Ne írjon Xing VBR fejlécet" -#: src/filewriter/mp3.c:1250 +#: src/filewriter/mp3.c:1131 msgid "VBR/ABR" msgstr "VBR/ABR" -#: src/filewriter/mp3.c:1262 +#: src/filewriter/mp3.c:1141 msgid "Frame params:" msgstr "Keret paraméterek:" -#: src/filewriter/mp3.c:1274 +#: src/filewriter/mp3.c:1153 msgid "Mark as copyright" msgstr "Megjelölés jogvédettként" -#: src/filewriter/mp3.c:1285 +#: src/filewriter/mp3.c:1164 msgid "Mark as original" msgstr "Megjelölés eredetiként" -#: src/filewriter/mp3.c:1297 +#: src/filewriter/mp3.c:1176 msgid "ID3 params:" msgstr "ID3 paraméterek:" -#: src/filewriter/mp3.c:1308 +#: src/filewriter/mp3.c:1187 msgid "Force addition of version 2 tag" msgstr "Mindig adja hozzá a 2-es verzió címkéit" -#: src/filewriter/mp3.c:1318 +#: src/filewriter/mp3.c:1197 msgid "Only add v1 tag" msgstr "Csak v1 címkék hozzáadása" -#: src/filewriter/mp3.c:1325 +#: src/filewriter/mp3.c:1204 msgid "Only add v2 tag" msgstr "Csak v2 címkék hozzáadása" -#: src/filewriter/mp3.c:1346 +#: src/filewriter/mp3.c:1225 msgid "Tags" msgstr "Címkék" @@ -2261,11 +1424,11 @@ msgid "Quality level (0 - 10):" msgstr "MinÅ‘ségi szint (0-10):" -#: src/flacng/plugin.c:457 -msgid "FLAC Audio Plugin " -msgstr "FLAC audio bÅ‘vítmény" +#: src/flacng/plugin.c:380 +msgid "About FLAC Audio Plugin" +msgstr "FLAC audio bÅ‘vítmény névjegye" -#: src/flacng/plugin.c:458 +#: src/flacng/plugin.c:381 msgid "" "\n" "\n" @@ -2275,15 +1438,11 @@ "http://www.skytale.net/projects/bmp-flac2/" msgstr "" -#: src/flacng/plugin.c:464 -msgid "About FLAC Audio Plugin" -msgstr "FLAC audio bÅ‘vítmény névjegye" - -#: src/gnomeshortcuts/gnomeshortcuts.c:306 +#: src/gnomeshortcuts/gnomeshortcuts.c:303 msgid "About Gnome Shortcut Plugin" msgstr "Gnome Parancsikon bÅ‘vítmény névjegye" -#: src/gnomeshortcuts/gnomeshortcuts.c:307 +#: src/gnomeshortcuts/gnomeshortcuts.c:304 msgid "" "Gnome Shortcut Plugin\n" "Let's you control the player with Gnome's shortcuts.\n" @@ -2292,597 +1451,481 @@ "\n" msgstr "" -#: src/gntui/fileselector.c:75 -#: src/gntui/gntui.c:273 -msgid "Open Files" -msgstr "Fájlok megnyitása" - -#: src/gntui/fileselector.c:75 -#: src/gntui/gntui.c:272 -msgid "Add Files" -msgstr "Fájlok hozzáadása" - -#: src/gntui/gntui.c:271 -msgid "Audacious2" -msgstr "Audacious2" - -#: src/gntui/gntui.c:312 -msgid "gnt interface" -msgstr "gnt felület" - -#: src/gtkui/actions.c:257 -#: src/skins/ui_main.c:818 -msgid "Can't jump to time when no track is being played.\n" -msgstr "" - -#: src/gtkui/actions.c:272 -#: src/gtkui/ui_manager.c:204 -#: src/gtkui/ui_manager.c:205 -#: src/skins/ui_main.c:833 -#: src/skins/ui_manager.c:410 -#: src/skins/ui_manager.c:411 -msgid "Jump to Time" -msgstr "Ugrás a megadott idÅ‘re" +#: src/gtkui/columns.c:36 +msgid "Entry number" +msgstr "Bejegyzés száma" -#: src/gtkui/actions.c:289 -#: src/skins/ui_main.c:854 -msgid "minutes:seconds" -msgstr "perc:másodperc" - -#: src/gtkui/actions.c:299 -#: src/skins/ui_main.c:864 -msgid "Track length:" -msgstr "Szám hossza:" +#: src/gtkui/columns.c:36 src/search-tool/search-tool.c:43 +msgid "Title" +msgstr "Cím" -#: src/gtkui/actions.c:610 -#: src/skins/ui_playlist.c:648 -#, c-format -msgid "Error writing playlist \"%s\": %s" -msgstr "Hiba a lejátszólista írásakor \"%s\": %s" +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:42 +msgid "Artist" +msgstr "ElÅ‘adó" + +#: src/gtkui/columns.c:37 +msgid "Year" +msgstr "Év" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:43 +msgid "Album" +msgstr "Album" + +#: src/gtkui/columns.c:37 +msgid "Track" +msgstr "Sáv" + +#: src/gtkui/columns.c:37 +msgid "Queue position" +msgstr "Várakozási sor pozíció" + +#: src/gtkui/columns.c:38 +msgid "Length" +msgstr "Hossz" + +#: src/gtkui/columns.c:38 +msgid "File path" +msgstr "Fájl elérési útja" -#: src/gtkui/actions.c:625 -#: src/skins/ui_playlist.c:670 -#, c-format -msgid "%s already exist. Continue?" -msgstr "%s már létezik. Folytatja?" +#: src/gtkui/columns.c:38 +msgid "File name" +msgstr "Fájlnév" -#: src/gtkui/actions.c:651 -#: src/skins/ui_manager.c:214 -msgid "Export Playlist" -msgstr "Lejátszólista exportálása" +#: src/gtkui/columns.c:38 +msgid "Custom title" +msgstr "Egyéni cím" + +#: src/gtkui/columns.c:39 +msgid "Bitrate" +msgstr "Bitráta" + +#: src/gtkui/columns.c:278 +msgid "Choose Columns" +msgstr "Oszlopok választása" + +#: src/gtkui/columns.c:292 +msgid "Available:" +msgstr "ElérhetÅ‘:" + +#: src/gtkui/columns.c:326 +msgid "Chosen:" +msgstr "Választott:" + +#: src/gtkui/layout.c:122 +msgid "Dock at Left" +msgstr "Balra rögzít" + +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "Jobbra rögzít" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "Felülre rögzít" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "Alulra rögzít" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "Rögzítés feloldása" + +#: src/gtkui/layout.c:123 src/ladspa/plugin.c:644 +msgid "Disable" +msgstr "Letiltás" + +#: src/gtkui/menus.c:131 +msgid "_Open Files ..." +msgstr "Fájl_ok megnyitása ..." + +#: src/gtkui/menus.c:132 +msgid "Open _URL ..." +msgstr "_URL megnyitása ..." + +#: src/gtkui/menus.c:133 +msgid "_Add Files ..." +msgstr "Fájlok hozzá_adása ..." + +#: src/gtkui/menus.c:134 +msgid "Add U_RL ..." +msgstr "U_RL hozzáadása ..." + +#: src/gtkui/menus.c:136 +msgid "A_bout ..." +msgstr "_Névjegy ..." + +#: src/gtkui/menus.c:137 +msgid "_Preferences ..." +msgstr "_Beállítások ..." -#: src/gtkui/actions.c:723 -#: src/skins/ui_manager.c:211 -msgid "Import Playlist" -msgstr "Lejátszólista importálása" +#: src/gtkui/menus.c:138 src/skins/ui_manager.c:406 +msgid "_Quit" +msgstr "_Kilépés" -#: src/gtkui/ui_gtk.c:72 -msgid "GTK Interface" -msgstr "GTK+ felület" +#: src/gtkui/menus.c:141 +msgid "_Play" +msgstr "_Lejátszás" -#: src/gtkui/ui_gtk.c:281 -#: src/skins/ui_main.c:388 -#, c-format -msgid "%s - Audacious" -msgstr "%s - Audacious" +#: src/gtkui/menus.c:142 +msgid "Paus_e" +msgstr "_Szünet" -#: src/gtkui/ui_gtk.c:287 -#: src/skins/ui_main.c:390 -#: src/skins/ui_main.c:2166 -msgid "Audacious" -msgstr "Audacious" +#: src/gtkui/menus.c:143 +msgid "_Stop" +msgstr "_Megállítás" -#: src/gtkui/ui_manager.c:35 -#: src/gtkui/ui_manager.c:36 -#: src/skins/ui_manager.c:53 -#: src/skins/ui_manager.c:54 -msgid "Stop after Current Song" -msgstr "Leállítás az aktuális dal után" +#: src/gtkui/menus.c:144 +msgid "Pre_vious" +msgstr "ElÅ‘_zÅ‘" -#: src/gtkui/ui_manager.c:38 -#: src/gtkui/ui_manager.c:39 -#: src/skins/ui_manager.c:59 -#: src/skins/ui_manager.c:60 -msgid "Repeat" -msgstr "Ismétlés" +#: src/gtkui/menus.c:145 +msgid "_Next" +msgstr "_KövetkezÅ‘" -#: src/gtkui/ui_manager.c:41 -#: src/gtkui/ui_manager.c:42 -#: src/skins/ui_manager.c:62 -#: src/skins/ui_manager.c:63 -msgid "Shuffle" -msgstr "Véletlenszerű" +#: src/gtkui/menus.c:147 +msgid "_Repeat" +msgstr "_Ismétlés" -#: src/gtkui/ui_manager.c:44 -#: src/gtkui/ui_manager.c:45 -#: src/skins/ui_manager.c:65 -#: src/skins/ui_manager.c:66 -msgid "No Playlist Advance" -msgstr "Ne legyen léptetés a lejátszólistában" +#: src/gtkui/menus.c:148 +msgid "S_huffle" +msgstr "_Véletlenszerű" -#: src/gtkui/ui_manager.c:47 -msgid "Show playlists" -msgstr "Lejátszólisták mutatása" - -#: src/gtkui/ui_manager.c:48 -msgid "Show/hide playlists" -msgstr "Lejátszólisták megjelenítése/elrejtése" - -#: src/gtkui/ui_manager.c:50 -msgid "Show infoarea" -msgstr "Információs terület mutatása" - -#: src/gtkui/ui_manager.c:51 -msgid "Show/hide infoarea" -msgstr "Információs terület megjelenítése/elrejtése" - -#: src/gtkui/ui_manager.c:53 -msgid "Show main menu" -msgstr "FÅ‘menü megjelenítése" - -#: src/gtkui/ui_manager.c:54 -msgid "Show/hide main menu" -msgstr "FÅ‘menü megjelenítése/elrejtése" - -#: src/gtkui/ui_manager.c:56 -msgid "Show statusbar" -msgstr "Az állapotsor megjelenítése" - -#: src/gtkui/ui_manager.c:57 -msgid "Show/hide statusbar" -msgstr "Az állapotsor megjelenítése/elrejtése" - -#: src/gtkui/ui_manager.c:69 -#: src/gtkui/ui_manager.c:70 -#: src/skins/ui_manager.c:170 -#: src/skins/ui_manager.c:171 -msgid "Pause" -msgstr "Szünet" +#: src/gtkui/menus.c:149 +msgid "N_o Playlist Advance" +msgstr "" -#: src/gtkui/ui_manager.c:72 -#: src/gtkui/ui_manager.c:73 -#: src/hotkey/gui.c:73 -#: src/skins/ui_manager.c:173 -#: src/skins/ui_manager.c:174 -msgid "Stop" -msgstr "Leállít" +#: src/gtkui/menus.c:150 +msgid "Stop _After This Song" +msgstr "Megállítás _az aktuális szám után" -#: src/gtkui/ui_manager.c:75 -#: src/gtkui/ui_manager.c:76 -#: src/skins/ui_manager.c:176 -#: src/skins/ui_manager.c:177 -msgid "Previous" -msgstr "ElÅ‘zÅ‘" +#: src/gtkui/menus.c:152 src/gtkui/menus.c:212 +msgid "Song _Info ..." +msgstr "Dal _információ ..." -#: src/gtkui/ui_manager.c:78 -#: src/gtkui/ui_manager.c:79 -#: src/skins/ui_manager.c:179 -#: src/skins/ui_manager.c:180 -msgid "Next" -msgstr "KövetkezÅ‘" +#: src/gtkui/menus.c:153 +msgid "Jump to _Time ..." +msgstr "Ugrás _idÅ‘re ..." -#: src/gtkui/ui_manager.c:84 -#: src/skins/ui_manager.c:197 -msgid "Playlist" -msgstr "Lejátszólista" +#: src/gtkui/menus.c:154 +msgid "_Jump to Song ..." +msgstr "Ugrás _dalra ..." -#: src/gtkui/ui_manager.c:86 -#: src/gtkui/ui_manager.c:87 -#: src/skins/ui_manager.c:199 -#: src/skins/ui_manager.c:200 -msgid "New Playlist" -msgstr "Új lejátszólista" +#: src/gtkui/menus.c:157 +msgid "By Track _Number" +msgstr "Sáv szeri_nt" -#: src/gtkui/ui_manager.c:89 -#: src/gtkui/ui_manager.c:90 -#: src/skins/ui_manager.c:208 -#: src/skins/ui_manager.c:209 -msgid "Delete Playlist" -msgstr "Lejátszólista törlése" +#: src/gtkui/menus.c:158 +msgid "By _Title" +msgstr "Cím szerin_t" -#: src/gtkui/ui_manager.c:92 -msgid "Import Playlist ..." -msgstr "Lejátszólista importálása ..." +#: src/gtkui/menus.c:159 +msgid "By _Artist" +msgstr "ElÅ‘_adó szerint" -#: src/gtkui/ui_manager.c:93 -#: src/skins/ui_manager.c:212 -msgid "Loads a playlist file into the selected playlist." -msgstr "Lejátszólista betöltése a kiválasztott lejátszólistába." +#: src/gtkui/menus.c:160 +msgid "By A_lbum" +msgstr "A_lbum szerint" -#: src/gtkui/ui_manager.c:95 -msgid "Export Playlist ..." -msgstr "Lejátszólista exportálása ..." +#: src/gtkui/menus.c:161 +msgid "By Release _Date" +msgstr "_Dátum szerint" -#: src/gtkui/ui_manager.c:96 -#: src/skins/ui_manager.c:215 -msgid "Saves the selected playlist." -msgstr "Kiválasztott lejátszólista mentése." +#: src/gtkui/menus.c:162 +msgid "By _File Path" +msgstr "_Fájl útvonal szerint" -#: src/gtkui/ui_manager.c:98 -#: src/skins/ui_manager.c:217 -msgid "Save All Playlists" -msgstr "Minden lejátszó lista mentése" - -#: src/gtkui/ui_manager.c:99 -#: src/skins/ui_manager.c:218 -msgid "Saves all the playlists that are open. Note that this is done automatically when Audacious quits." -msgstr "Minden nyitott lejátszólista mentése. Ez automatikus megtörténik amikor az Audaciousból kilép." - -#: src/gtkui/ui_manager.c:103 -msgid "Refresh" -msgstr "Frissítés" +#: src/gtkui/menus.c:163 +msgid "By _Custom Title" +msgstr "_Egyedi cím szerint" -#: src/gtkui/ui_manager.c:104 -#: src/skins/ui_manager.c:223 -msgid "Refreshes metadata associated with a playlist entry." -msgstr "A lejátszólista elemek metaadatainak frissítése." +#: src/gtkui/menus.c:165 +msgid "R_everse Order" +msgstr "Fo_rdított sorrend" -#: src/gtkui/ui_manager.c:107 -msgid "Playlist Manager" -msgstr "Lejátszólista kezelÅ‘" +#: src/gtkui/menus.c:166 +msgid "_Random Order" +msgstr "Véletlensze_rű sorrend" -#: src/gtkui/ui_manager.c:108 -#: src/skins/ui_manager.c:227 -msgid "Opens the playlist manager." -msgstr "Lejátszólista kezelÅ‘ megnyitása." +#: src/gtkui/menus.c:169 src/gtkui/menus.c:214 +msgid "_Refresh" +msgstr "_Frissítés" -#: src/gtkui/ui_manager.c:111 -msgid "Add URL ..." -msgstr "URL hozzáadása ..." +#: src/gtkui/menus.c:170 +msgid "Remove _Unavailable Files" +msgstr "_Nem elérhetÅ‘ fájlok törlése" + +#: src/gtkui/menus.c:172 +msgid "_Sort" +msgstr "Rendezé_s" + +#: src/gtkui/menus.c:174 +msgid "_New" +msgstr "_Új" -#: src/gtkui/ui_manager.c:112 -#: src/skins/ui_manager.c:237 -msgid "Adds a remote track to the playlist." -msgstr "Távoli sávok hozzáadása a lejátszólistához." +#: src/gtkui/menus.c:175 src/gtkui/menus.c:225 +msgid "_Close" +msgstr "_Bezár" -#: src/gtkui/ui_manager.c:115 -msgid "Add Files ..." -msgstr "Fájlok hozzáadása ..." +#: src/gtkui/menus.c:177 +msgid "_Import ..." +msgstr "_Importálás ..." -#: src/gtkui/ui_manager.c:116 -#: src/skins/ui_manager.c:241 -msgid "Adds files to the playlist." -msgstr "Fájlok hozzáadása a lejátszólistához." +#: src/gtkui/menus.c:178 +msgid "_Export ..." +msgstr "_Exportálás ..." -#: src/gtkui/ui_manager.c:119 -#: src/skins/ui_manager.c:264 -msgid "Remove All" -msgstr "Összes törlése" +#: src/gtkui/menus.c:180 +msgid "_Playlist Manager ..." +msgstr "_Lejátszólista kezelÅ‘ ..." -#: src/gtkui/ui_manager.c:120 -#: src/skins/ui_manager.c:265 -msgid "Removes all entries from the playlist." -msgstr "Minden elem eltávolítása a lejátszólistáról." +#: src/gtkui/menus.c:181 +msgid "_Queue Manager ..." +msgstr "_Várakozási sor kezelÅ‘ ..." -#: src/gtkui/ui_manager.c:123 -#: src/skins/ui_manager.c:290 -msgid "Remove Unselected" -msgstr "Nem kiválasztottak törlése" +#: src/gtkui/menus.c:184 +msgid "Volume _Up" +msgstr "HangerÅ‘ _fel" -#: src/gtkui/ui_manager.c:124 -#: src/skins/ui_manager.c:291 -msgid "Remove unselected entries from the playlist." -msgstr "Minden nem kiválasztott elem törlése a lejátszólistáról." +#: src/gtkui/menus.c:185 +msgid "Volume _Down" +msgstr "HangerÅ‘ _le" -#: src/gtkui/ui_manager.c:127 -#: src/skins/ui_manager.c:294 -msgid "Remove Selected" -msgstr "Kijelölt törlése" +#: src/gtkui/menus.c:187 +msgid "_Equalizer" +msgstr "_Hangszínszabályzó" -#: src/gtkui/ui_manager.c:128 -#: src/skins/ui_manager.c:295 -msgid "Remove selected entries from the playlist." -msgstr "Kijelölt elemek törlése a lejátszólistáról" +#: src/gtkui/menus.c:189 +msgid "E_ffects" +msgstr "E_ffektusok" -#: src/gtkui/ui_manager.c:131 -msgid "Sort" -msgstr "Rendezés" - -#: src/gtkui/ui_manager.c:132 -#: src/skins/ui_manager.c:330 -#: src/skins/ui_manager.c:360 -msgid "By Track Number" -msgstr "A dal sorszáma szerint" +#: src/gtkui/menus.c:192 +msgid "_Interface" +msgstr "_Felület" -#: src/gtkui/ui_manager.c:134 -#: src/skins/ui_manager.c:278 -#: src/skins/ui_manager.c:306 -#: src/skins/ui_manager.c:336 -msgid "By Title" -msgstr "Cím szerint" +#: src/gtkui/menus.c:193 +msgid "_Visualizations" +msgstr "_Megjelenítés" -#: src/gtkui/ui_manager.c:136 -#: src/skins/ui_manager.c:314 -#: src/skins/ui_manager.c:344 -msgid "By Artist" -msgstr "ElÅ‘adó szerint" +#: src/gtkui/menus.c:195 +msgid "Show _Menu Bar" +msgstr "_Menü sor mutatása" -#: src/gtkui/ui_manager.c:138 -#: src/skins/ui_manager.c:310 -#: src/skins/ui_manager.c:340 -msgid "By Album" -msgstr "Album szerint" +#: src/gtkui/menus.c:196 +msgid "Show I_nfo Bar" +msgstr "I_nfo sor mutatása" -#: src/gtkui/ui_manager.c:140 -msgid "By File Path" -msgstr "Fájl útvonal szerint" - -#: src/gtkui/ui_manager.c:142 -msgid "Reverse Order" -msgstr "Fordított sorrend" - -#: src/gtkui/ui_manager.c:147 -msgid "Output" -msgstr "Kimenet" - -#: src/gtkui/ui_manager.c:149 -#: src/modplug/gui/interface.cxx:572 -msgid "Effects" -msgstr "Effektek" - -#: src/gtkui/ui_manager.c:151 -msgid "Equalizer" -msgstr "Hangszínszabályzó" +#: src/gtkui/menus.c:197 +msgid "Show _Status Bar" +msgstr "_Státusz sor mutatása" -#: src/gtkui/ui_manager.c:156 -#: src/skins/ui_manager.c:232 -msgid "View" -msgstr "Nézet" +#: src/gtkui/menus.c:199 +msgid "Show Column _Headers" +msgstr "O_szlop fejlécek mutatása" -#: src/gtkui/ui_manager.c:157 -#: src/skins/ui_manager.c:233 -msgid "Interface" -msgstr "Felület" +#: src/gtkui/menus.c:200 +msgid "Choose _Columns ..." +msgstr "_Válasszon oszlopokat ..." -#: src/gtkui/ui_manager.c:164 -#: src/skins/ui_manager.c:370 -msgid "File" -msgstr "Fájl" +#: src/gtkui/menus.c:201 +msgid "Scrol_l on Song Change" +msgstr "" -#: src/gtkui/ui_manager.c:167 -msgid "Components" -msgstr "Komponensek" - -#: src/gtkui/ui_manager.c:169 -#: src/gtkui/ui_manager.c:172 -#: src/skins/ui_manager.c:375 -#: src/skins/ui_manager.c:378 -msgid "View Track Details" -msgstr "Szám részleteinek megjelenítése" +#: src/gtkui/menus.c:204 +msgid "_File" +msgstr "_Fájl" -#: src/gtkui/ui_manager.c:170 -#: src/gtkui/ui_manager.c:173 -#: src/skins/ui_manager.c:376 -#: src/skins/ui_manager.c:379 -msgid "View track details" -msgstr "Szám részleteinek megjelenítése" +#: src/gtkui/menus.c:205 +msgid "_Playback" +msgstr "L_ejátszás" -#: src/gtkui/ui_manager.c:175 -#: src/gtkui/ui_manager.c:176 -#: src/skins/ui_manager.c:381 -#: src/skins/ui_manager.c:382 -msgid "About Audacious" -msgstr "Audacious névjegye" +#: src/gtkui/menus.c:206 +msgid "P_laylist" +msgstr "_Lejátszólista" -#: src/gtkui/ui_manager.c:178 -msgid "Open Files ..." -msgstr "Fájlok megnyitása ..." +#: src/gtkui/menus.c:207 src/gtkui/menus.c:221 +msgid "_Services" +msgstr "_Szervizek" -#: src/gtkui/ui_manager.c:179 -#: src/skins/ui_manager.c:385 -msgid "Load and play a file" -msgstr "Megyitja és lejátsza a fájlt" +#: src/gtkui/menus.c:208 +msgid "_Output" +msgstr "_Kimenet" -#: src/gtkui/ui_manager.c:181 -msgid "Open URL ..." -msgstr "URL megnyitása ..." +#: src/gtkui/menus.c:209 +msgid "_View" +msgstr "_Nézet" -#: src/gtkui/ui_manager.c:182 -#: src/skins/ui_manager.c:388 -msgid "Play media from the selected location" -msgstr "Média lejátszása a kiválasztott helyrÅ‘l" - -#: src/gtkui/ui_manager.c:184 -#: src/skins/ui_manager.c:390 -msgid "Plugin services" -msgstr "Szolgáltatások kezelése" - -#: src/gtkui/ui_manager.c:186 -#: src/skins/ui_manager.c:392 -msgid "Preferences" -msgstr "Beállítások" - -#: src/gtkui/ui_manager.c:187 -#: src/skins/ui_manager.c:393 -msgid "Open preferences window" -msgstr "Tulajdonságok ablak megnyitása" - -#: src/gtkui/ui_manager.c:189 -#: src/skins/ui_manager.c:395 -msgid "_Quit" -msgstr "_Kilépés" - -#: src/gtkui/ui_manager.c:190 -#: src/skins/ui_manager.c:396 -msgid "Quit Audacious" -msgstr "Kilépés az Audaciousból" - -#: src/gtkui/ui_manager.c:192 -#: src/gtkui/ui_manager.c:193 -#: src/skins/ui_manager.c:398 -#: src/skins/ui_manager.c:399 -msgid "Set A-B" -msgstr "Beállítás A-B" - -#: src/gtkui/ui_manager.c:195 -#: src/gtkui/ui_manager.c:196 -#: src/skins/ui_manager.c:401 -#: src/skins/ui_manager.c:402 -msgid "Clear A-B" -msgstr "Törlés A-B" +#: src/gtkui/menus.c:213 +msgid "_Queue/Unqueue" +msgstr "" -#: src/gtkui/ui_manager.c:198 -#: src/gtkui/ui_manager.c:199 -#: src/skins/ui_manager.c:404 -#: src/skins/ui_manager.c:405 -msgid "Jump to Playlist Start" -msgstr "Ugrás a lejátszólista kezdetére" +#: src/gtkui/menus.c:216 +msgid "Cu_t" +msgstr "_Kivágás" -#: src/gtkui/ui_manager.c:201 -#: src/gtkui/ui_manager.c:202 -#: src/hotkey/gui.c:80 -#: src/skins/ui_manager.c:407 -#: src/skins/ui_manager.c:408 -msgid "Jump to File" -msgstr "Ugrás fájlhoz" +#: src/gtkui/menus.c:217 +msgid "_Copy" +msgstr "_Másolás" -#: src/gtkui/ui_manager.c:207 -#: src/skins/ui_manager.c:413 -msgid "Queue Toggle" -msgstr "Várakozási sor váltása" +#: src/gtkui/menus.c:218 +msgid "_Paste" +msgstr "_Beillesztés" -#: src/gtkui/ui_manager.c:208 -#: src/skins/ui_manager.c:414 -msgid "Enables/disables the entry in the playlist's queue." -msgstr "Engedélyezi/letiltja az elemek lejátszólista várósorba helyezését." +#: src/gtkui/menus.c:219 +msgid "Select _All" +msgstr "Mind kivál_aszt" -#: src/gtkui/ui_manager.c:211 -#: src/skins/ui_manager.c:417 -msgid "Copy" -msgstr "Másolás" +#: src/gtkui/menus.c:224 +msgid "_Rename" +msgstr "_Ãtnevezés" -#: src/gtkui/ui_manager.c:214 -#: src/skins/ui_manager.c:419 -msgid "Cut" -msgstr "Kivágás" +#: src/gtkui/ui_gtk.c:95 +msgid "GTK Interface" +msgstr "GTK+ felület" -#: src/gtkui/ui_manager.c:217 -#: src/skins/ui_manager.c:421 -msgid "Paste" -msgstr "Beillesztés" +#: src/gtkui/ui_gtk.c:156 src/skins/ui_main.c:303 +#, c-format +msgid "%s - Audacious" +msgstr "%s - Audacious" -#: src/gtkui/ui_manager.c:220 -#: src/skins/ui_manager.c:254 -msgid "Select All" -msgstr "Mindet kijelöl" +#: src/gtkui/ui_gtk.c:162 +msgid "Buffering ..." +msgstr "Pufferelés ..." -#: src/gtkui/ui_manager.c:221 -#: src/skins/ui_manager.c:255 -msgid "Selects all of the playlist entries." -msgstr "Minden szám kiválasztása a lejátszólistán." +#: src/gtkui/ui_gtk.c:165 src/skins/ui_main.c:305 src/skins/ui_main.c:1504 +msgid "Audacious" +msgstr "Audacious" -#: src/gtkui/ui_manager.c:224 -#: src/skins/ui_manager.c:258 -msgid "Select None" -msgstr "Nincs kijelölés" +#: src/gtkui/ui_gtk.c:216 src/skins/plugin.c:190 +msgid "Error" +msgstr "Hiba" -#: src/gtkui/ui_manager.c:225 -#: src/skins/ui_manager.c:259 -msgid "Deselects all of the playlist entries." -msgstr "Minden kijelölés megszüntetése a lejátszólista elemein." +#: src/gtkui/ui_playlist_notebook.c:97 +msgid "Close" +msgstr "" -#: src/gtkui/ui_statusbar.c:91 -#: src/skins/ui_main.c:609 +#: src/gtkui/ui_statusbar.c:105 src/skins/ui_main.c:460 msgid "mono" msgstr "mono" -#: src/gtkui/ui_statusbar.c:94 -#: src/skins/ui_main.c:608 +#: src/gtkui/ui_statusbar.c:107 src/skins/ui_main.c:459 msgid "stereo" msgstr "sztereó" -#: src/gtkui/ui_statusbar.c:97 +#: src/gtkui/ui_statusbar.c:109 #, c-format -msgid "%d channels" -msgstr "%d csatorna" +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d csatorna" +msgstr[1] "%d csatorna" -#: src/gtkui/ui_statusbar.c:101 +#: src/gtkui/ui_statusbar.c:124 #, c-format -msgid "%s: %d kbps, %d Hz, %s" -msgstr "%s: %d kbps, %d Hz, %s" +msgid "%d kbps" +msgstr "%d kbps" -#: src/hotkey/gui.c:70 +#: src/hotkey/gui.c:71 msgid "Previous Track" msgstr "ElÅ‘zÅ‘ szám" -#: src/hotkey/gui.c:72 +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "Lejátszás" + +#: src/hotkey/gui.c:73 msgid "Pause/Resume" msgstr "Szünet/Folytatás" -#: src/hotkey/gui.c:74 +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +msgid "Stop" +msgstr "Leállít" + +#: src/hotkey/gui.c:75 msgid "Next Track" msgstr "KövetkezÅ‘ szám" -#: src/hotkey/gui.c:75 +#: src/hotkey/gui.c:76 msgid "Forward 5 Seconds" msgstr "Vissza 5 másodperccel" -#: src/hotkey/gui.c:76 +#: src/hotkey/gui.c:77 msgid "Rewind 5 Seconds" msgstr "ElÅ‘re 5 másodperccel" -#: src/hotkey/gui.c:77 +#: src/hotkey/gui.c:78 msgid "Mute" msgstr "Némítás" -#: src/hotkey/gui.c:78 +#: src/hotkey/gui.c:79 msgid "Volume Up" msgstr "HangerÅ‘ fel" -#: src/hotkey/gui.c:79 +#: src/hotkey/gui.c:80 msgid "Volume Down" msgstr "HangerÅ‘ le" -#: src/hotkey/gui.c:81 +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Jump to File" +msgstr "Ugrás fájlhoz" + +#: src/hotkey/gui.c:82 msgid "Toggle Player Windows" msgstr "Lejátszó ablakok váltása" -#: src/hotkey/gui.c:82 +#: src/hotkey/gui.c:83 msgid "Show On-Screen-Display" msgstr "On-Screen-Display mutatása" -#: src/hotkey/gui.c:92 +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "Ismétlés váltása" + +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "Véletlenszerű lejátszás váltása" + +#: src/hotkey/gui.c:95 msgid "(none)" msgstr "(nincs)" -#: src/hotkey/gui.c:229 +#: src/hotkey/gui.c:232 msgid "" "It is not recommended to bind the primary mouse buttons without modificators.\n" "\n" "Do you want to continue?" msgstr "" -#: src/hotkey/gui.c:231 +#: src/hotkey/gui.c:234 msgid "Binding mouse buttons" msgstr "Egér gombok hozzárendelése" -#: src/hotkey/gui.c:381 +#: src/hotkey/gui.c:384 msgid "Global Hotkey Plugin Configuration" msgstr "" -#: src/hotkey/gui.c:397 +#: src/hotkey/gui.c:400 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." msgstr "" -#: src/hotkey/gui.c:402 +#: src/hotkey/gui.c:405 msgid "Hotkeys:" msgstr "Gyorsbillentyűk:" -#: src/hotkey/gui.c:421 +#: src/hotkey/gui.c:424 msgid "Action:" msgstr "Művelet:" -#: src/hotkey/gui.c:429 +#: src/hotkey/gui.c:432 msgid "Key Binding:" msgstr "Billentyű kötések:" -#: src/hotkey/gui.c:660 +#: src/hotkey/gui.c:663 msgid "About Global Hotkey Plugin" msgstr "" -#: src/hotkey/gui.c:661 +#: src/hotkey/gui.c:664 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -2898,31 +1941,31 @@ "\n" msgstr "" -#: src/jack/configure.c:71 +#: src/jack/configure.c:66 msgid "Connect to all available jack ports" msgstr "Kapcsolódás minden eléhetÅ‘ jack porthoz" -#: src/jack/configure.c:78 +#: src/jack/configure.c:73 msgid "Connect only the output ports" msgstr "Csatlakozás csak a kiválasztott kimeneti porthoz" -#: src/jack/configure.c:85 +#: src/jack/configure.c:80 msgid "Connect to no ports" msgstr "Csatlakozás portok nélkül" -#: src/jack/configure.c:103 +#: src/jack/configure.c:98 msgid "jack Plugin configuration" msgstr "Jack bÅ‘vítmény beállítások" -#: src/jack/configure.c:121 +#: src/jack/configure.c:116 msgid "Connection mode:" msgstr "Kapcsolat módja:" -#: src/jack/configure.c:133 +#: src/jack/configure.c:128 msgid "Enable debug printing" msgstr "Hibakeresés engedélyezése" -#: src/jack/jack.c:437 +#: src/jack/jack.c:435 msgid "" "XMMS jack Driver 0.17\n" "\n" @@ -2940,124 +1983,67 @@ "Audacious bÅ‘vítményt írta:\n" "Giacomo Lozito from develia.org" -#: src/jack/jack.c:442 +#: src/jack/jack.c:440 msgid "About JACK Output Plugin 0.17" msgstr "JACK kimenet bÅ‘vítmény névjegye 0.17" -#: src/ladspa/ladspa.c:824 -msgid "This LADSPA plugin has no user controls" +#: src/ladspa/plugin.c:415 +msgid "About LADSPA Host" msgstr "" -#: src/ladspa/ladspa.c:865 -#: src/ladspa/ladspa.c:952 -msgid "Name" -msgstr "Név" - -#: src/ladspa/ladspa.c:952 -msgid "UID" -msgstr "UID" - -#: src/ladspa/ladspa.c:1029 -msgid "Installed plugins" -msgstr "Telepített bÅ‘vímények" - -#: src/ladspa/ladspa.c:1037 -msgid "Running plugins" -msgstr "Futó bÅ‘vítmények" - -#: src/ladspa/ladspa.c:1052 -msgid "Add" -msgstr "Hozzáadás" - -#: src/ladspa/ladspa.c:1055 -msgid "Remove" -msgstr "Eltávolítás" - -#: src/ladspa/ladspa.c:1066 -msgid "LADSPA Plugin Catalog" -msgstr "LADSPA bÅ‘vítmény katalógus" +#: src/ladspa/plugin.c:516 +#, c-format +msgid "%s Settings" +msgstr "%s Beállítások" -#: src/lirc/about.c:63 -msgid "About LIRC Audacious Plugin" -msgstr "LIRC audacious bÅ‘vítmény névjegye" +#: src/ladspa/plugin.c:584 +msgid "LADSPA Host Settings" +msgstr "" -#: src/lirc/about.c:90 -msgid "LIRC Plugin " -msgstr "LIRC bÅ‘vítmény" +#: src/ladspa/plugin.c:593 +msgid "Module paths:" +msgstr "" -#: src/lirc/about.c:92 +#: src/ladspa/plugin.c:598 msgid "" -"\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" -"\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." msgstr "" -#: src/lirc/interface.c:37 -msgid "LIRC plugin settings" -msgstr "LIRC bÅ‘vítmény beállítások" - -#: src/lirc/interface.c:61 -msgid "Reconnect to LIRC server" -msgstr "Újracsatlakozás a LIRC szerverhez" - -#: src/lirc/interface.c:68 -msgid "Timeout before reconnecting (seconds): " -msgstr "Újracsatlakozás a megadott idÅ‘ után (másodperc):" +#: src/ladspa/plugin.c:614 +msgid "Available plugins:" +msgstr "ElérhetÅ‘ bÅ‘vítmények:" -#: src/lirc/interface.c:75 -msgid "Reconnect" -msgstr "Újracsatlakozás" +#: src/ladspa/plugin.c:626 +msgid "Enable" +msgstr "Engedélyez" -#: src/lirc/interface.c:79 -msgid "Connection" -msgstr "Kapcsolat" +#: src/ladspa/plugin.c:632 +msgid "Enabled plugins:" +msgstr "Engedélyezett modulok:" -#: src/lirc/lirc.c:82 -#, c-format -msgid "%s: could not init LIRC support\n" -msgstr "" +#: src/ladspa/plugin.c:647 +msgid "Settings" +msgstr "Beállítások" -#: src/lirc/lirc.c:90 -#, c-format +#: src/lyricwiki/lyricwiki.c:267 msgid "" -"%s: could not read LIRC config file\n" -"%s: please read the documentation of LIRC\n" -"%s: how to create a proper config file\n" +"\n" +"Looking for lyrics..." msgstr "" +"\n" +"Dalszöveg keresése ..." -#: src/lirc/lirc.c:117 -#, c-format -msgid "%s: trying to reconnect...\n" -msgstr "%s: újrakapcsolódás megkisérlése...\n" - -#: src/lirc/lirc.c:332 -#, c-format -msgid "%s: unknown command \"%s\"\n" -msgstr "%s: ismeretlen parancs \"%s\"\n" - -#: src/lirc/lirc.c:342 -#, c-format -msgid "%s: disconnected from LIRC\n" -msgstr "%s: kapcsolat bontva a LIRC-cel\n" - -#: src/lirc/lirc.c:346 -#, c-format -msgid "%s: will try reconnect every %d seconds...\n" +#: src/lyricwiki/lyricwiki.c:304 +msgid "" +"\n" +"Connecting to lyrics.wikia.com..." msgstr "" +"\n" +"Csatlakozás a lyrics.wikia.com-hoz ..." -#: src/lyricwiki/lyricwiki.c:244 -msgid "LyricWiki" -msgstr "LyricWiki" - -#: src/lyricwiki/lyricwiki.c:337 +#: src/lyricwiki/lyricwiki.c:377 msgid "" "\n" "No lyrics were found." @@ -3065,11 +2051,11 @@ "\n" "Dalszöveg nem található." -#: src/metronom/metronom.c:90 +#: src/metronom/metronom.c:86 msgid "About Metronom" msgstr "Metronom névjegye" -#: src/metronom/metronom.c:91 +#: src/metronom/metronom.c:87 msgid "" "A Tact Generator by Martin Strauss \n" "\n" @@ -3078,1858 +2064,1205 @@ "or tact://60*3/4 to play 60 bpm in 3/4 tacts" msgstr "" -#: src/metronom/metronom.c:145 +#: src/metronom/metronom.c:144 #, c-format msgid "Tact generator: %d bpm" msgstr "Tact generátor: %d bpm" -#: src/metronom/metronom.c:147 +#: src/metronom/metronom.c:146 #, c-format msgid "Tact generator: %d bpm %d/%d" msgstr "Tact generátor: %d bpm %d/%d" -#: src/modplug/gui/interface.cxx:137 -msgid "ModPlug Configuration" -msgstr "ModPlug beállítások" - -#: src/modplug/gui/interface.cxx:174 -msgid "16 bit" -msgstr "16 bit" - -#: src/modplug/gui/interface.cxx:181 -msgid "8 bit" -msgstr "8 bit" - -#: src/modplug/gui/interface.cxx:212 -msgid "Mono (downmix)" -msgstr "" - -#: src/modplug/gui/interface.cxx:241 -msgid "Nearest (fastest)" -msgstr "" - -#: src/modplug/gui/interface.cxx:248 -msgid "Linear (fast)" -msgstr "Lineáris (gyors)" - -#: src/modplug/gui/interface.cxx:255 -msgid "Spline (good quality)" -msgstr "" - -#: src/modplug/gui/interface.cxx:262 -msgid "8-tap Fir (extremely high quality)" -msgstr "" - -#: src/modplug/gui/interface.cxx:286 -msgid "96 kHz" -msgstr "96 kHz" - -#: src/modplug/gui/interface.cxx:293 -msgid "48 kHz" -msgstr "48 kHz" +#: src/mixer/plugin.c:64 +msgid "About Channel Mixer" +msgstr "Csatorna keverÅ‘ névjegye" + +#: src/mixer/plugin.c:93 +msgid "Channel Mixer Settings" +msgstr "Csatorna keverÅ‘ beállítások" + +#: src/mixer/plugin.c:102 +msgid "Output channels:" +msgstr "Kimeneti csatornák:" + +#: src/mixer/plugin.c:112 +msgid "Changes take effect at the next song change." +msgstr "Változások a következÅ‘ dal váltáskor lépnek életbe." -#: src/modplug/gui/interface.cxx:300 -msgid "44 kHz" -msgstr "44 kHz" - -#: src/modplug/gui/interface.cxx:307 -msgid "22 kHz" -msgstr "22 kHz" - -#: src/modplug/gui/interface.cxx:315 -msgid "Sampling Rate" -msgstr "Mintavételi sebesség" - -#: src/modplug/gui/interface.cxx:349 -#: src/modplug/gui/interface.cxx:411 -#: src/modplug/gui/interface.cxx:477 -#: src/modplug/gui/interface.cxx:539 -msgid "Enable" -msgstr "Engedélyez" - -#: src/modplug/gui/interface.cxx:378 -#: src/modplug/gui/interface.cxx:506 -msgid "Depth" -msgstr "Mélység" - -#: src/modplug/gui/interface.cxx:386 -#: src/modplug/gui/interface.cxx:514 -msgid "Delay" -msgstr "Késleltetés" - -#: src/modplug/gui/interface.cxx:394 -msgid "Reverb" -msgstr "Visszhang" - -#: src/modplug/gui/interface.cxx:440 -msgid "Amount" -msgstr "Összeg" - -#: src/modplug/gui/interface.cxx:448 -msgid "Range" -msgstr "Tartomány" - -#: src/modplug/gui/interface.cxx:456 -msgid "Bass Boost" -msgstr "Basszus kiemelés" - -#: src/modplug/gui/interface.cxx:522 -#: src/mpg123/mpg123.c:174 +#: src/mpg123/mpg123.c:191 msgid "Surround" msgstr "Térhatású" -#: src/modplug/gui/interface.cxx:561 -msgid "" -"Note: Setting the preamp\n" -"too high may cause clipping\n" -"(annoying clicks and pops)!" -msgstr "" - -#: src/modplug/gui/interface.cxx:567 -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "Preamp" -msgstr "Preamp" - -#: src/modplug/gui/interface.cxx:601 -msgid "Use Filename as Song Title" -msgstr "Használja a fáljnevét a dal címének" - -#: src/modplug/gui/interface.cxx:606 -msgid "Fast Playlist Info" -msgstr "Gyors lejátszólista információ" - -#: src/modplug/gui/interface.cxx:617 -msgid "Noise Reduction" -msgstr "Zaj csökkentés" - -#: src/modplug/gui/interface.cxx:623 -msgid "Play Amiga MOD" -msgstr "Amiga MOD lejátszása" - -#: src/modplug/gui/interface.cxx:646 -msgid "Don't loop" -msgstr "Ne ismételjen" - -#: src/modplug/gui/interface.cxx:658 -msgid "Loop" -msgstr "Ismétlés" - -#: src/modplug/gui/interface.cxx:671 -msgid "time(s)" -msgstr "idÅ‘" - -#: src/modplug/gui/interface.cxx:677 -msgid "Loop forever" -msgstr "Végtelen ismétlés" - -#: src/modplug/gui/interface.cxx:684 -msgid "Looping" -msgstr "Ismétlés" - -#: src/modplug/gui/interface.cxx:859 -msgid "MOD Info" -msgstr "MOD információ" - -#: src/modplug/gui/interface.cxx:878 -msgid "" -"Filename:\n" -"Title:\n" -"Type:\n" -"Length:\n" -"Speed:\n" -"Tempo:\n" -"Samples:\n" -"Instruments:\n" -"Patterns:\n" -"Channels:" -msgstr "" -"Fájlnév:\n" -"Cím:\n" -"Típus:\n" -"Hossz:\n" -"Sebesség:\n" -"Tempo:\n" -"Minták:\n" -"Hangszerek:\n" -"Minták:\n" -"Csatornák:" - -#: src/modplug/gui/interface.cxx:883 -msgid "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" -msgstr "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" - -#: src/modplug/gui/interface.cxx:913 -msgid "Samples" -msgstr "Minták" - -#: src/modplug/gui/interface.cxx:938 -msgid "Instruments" -msgstr "Hangszerek" - -#: src/modplug/gui/interface.cxx:959 -msgid "Message" -msgstr "Ãœzenet" - -#: src/modplug/gui/main.cxx:51 -msgid "Modplug Input Plugin for Audacious ver" -msgstr "Modplug bemeneti bÅ‘vítmény az Audacioushoz verzió" - -#: src/modplug/gui/main.cxx:52 -msgid "" -"\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." -msgstr "" - -#: src/modplug/gui/main.cxx:55 -msgid "About Modplug" -msgstr "Modplug névjegye" - -#: src/modplug/gui/support.cxx:90 -#: src/modplug/gui/support.cxx:114 -#: src/sid/xs_glade.c:90 -#: src/sid/xs_glade.c:114 -#, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "Nem találom a pixmap fájlt: %s" - -#: src/mtp_up/mtp.c:35 -msgid "Upload selected track(s)" -msgstr "Kijelölt szám(ok) feltöltése" - -#: src/mtp_up/mtp.c:291 +#: src/mtp_up/mtp.c:340 msgid "Upload in progress..." msgstr "Feltöltés folyamatban..." -#: src/mtp_up/mtp.c:300 -msgid "MTP device handler" -msgstr "" - -#: src/mtp_up/mtp.c:304 -msgid "Disconnect the device" -msgstr "Eszköz leválasztása" +#: src/mtp_up/mtp.c:352 +msgid "Upload to MTP Device" +msgstr "Feltöltés az MTP Eszközre" + +#: src/mtp_up/mtp.c:353 +msgid "Disconnect MTP Device" +msgstr "MTP Eszköz leválasztása" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Stopped" +msgstr "Leállítva" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Audacious is not playing." +msgstr "Az Audacious nem játszik." -#: src/null/null.c:63 +#: src/null/null.c:64 msgid "Null output plugin " msgstr "Null kimeneti bÅ‘vítmény" -#: src/null/null.c:64 +#: src/null/null.c:65 msgid "" " by Christian Birchinger \n" "based on the XMMS plugin by HÃ¥vard KvÃ¥l " msgstr "" +" írta Christian Birchinger \n" +"XMMS plugin alapján HÃ¥vard KvÃ¥l " -#: src/null/null.c:67 +#: src/null/null.c:68 msgid "About Null Output" msgstr "Null kimeneti bÅ‘vítmény névjegye" -#: src/null/null.c:93 +#: src/null/null.c:89 msgid "Null output preferences" msgstr "Null kimenet beállítások" -#: src/null/null.c:102 +#: src/null/null.c:100 msgid "Run in real time" msgstr "Futtatás valós idÅ‘ben" -#: src/oss4/configure.c:89 +#: src/oss4/configure.c:81 msgid "1. Default device" msgstr "1. Alapértelmezett eszköz" -#: src/oss4/configure.c:151 +#: src/oss4/configure.c:138 msgid "OSS4 Output Plugin Preferences" msgstr "OSS4 Kimeneti bÅ‘vítmény beállítások" -#: src/oss4/configure.c:163 -#: src/OSS/configure.c:213 -#: src/sun/configure.c:181 +#: src/oss4/configure.c:150 src/OSS/configure.c:194 msgid "Audio device:" msgstr "Audio eszköz:" -#: src/oss4/configure.c:189 -#: src/OSS/configure.c:235 -#: src/OSS/configure.c:276 +#: src/oss4/configure.c:178 src/OSS/configure.c:217 src/OSS/configure.c:260 msgid "Use alternate device:" msgstr "Alternatív eszköz használata:" -#: src/oss4/configure.c:202 +#: src/oss4/configure.c:193 msgid "Save volume between sessions" msgstr "HangerÅ‘ mentése munkamentek között" -#: src/oss4/configure.c:206 +#: src/oss4/configure.c:197 msgid "Enable format conversions made by the OSS software." +msgstr "Formátum konverzió engedélyezése az OSS szoftverben." + +#: src/oss4/configure.c:201 +msgid "Enable exclusive mode to prevent virtual mixing." msgstr "" -#: src/oss4/plugin.c:54 +#: src/oss4/plugin.c:51 msgid "About OSS4 Plugin" msgstr "OSS4 bÅ‘vítmény névjegye" -#: src/oss4/plugin.c:55 -msgid "" -"OSS4 Output Plugin for Audacious\n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"I would like to thank people on #audacious, especially Tony Vroon and John Lindgren and of course the authors of the previous OSS plugin.\n" -"\n" -"This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n" -"\n" -"This program 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 General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License along with this program. If not, see .\n" -msgstr "" - -#: src/oss4/utils.c:204 +#: src/oss4/utils.c:211 msgid "OSS4 error" msgstr "OSS4 hiba" -#: src/OSS/configure.c:148 +#: src/OSS/configure.c:137 #, c-format msgid "Default (%s)" msgstr "Alapértelmezett (%s)" -#: src/OSS/configure.c:197 +#: src/OSS/configure.c:178 msgid "OSS Driver configuration" msgstr "OSS meghajtó beállítások" -#: src/OSS/configure.c:298 -#: src/sun/configure.c:246 +#: src/OSS/configure.c:281 msgid "Devices" msgstr "Eszközök" -#: src/OSS/configure.c:300 -#: src/sun/configure.c:257 +#: src/OSS/configure.c:283 msgid "Buffering:" msgstr "Pufferelés:" -#: src/OSS/configure.c:313 -#: src/sun/configure.c:288 +#: src/OSS/configure.c:296 msgid "Pre-buffer (percent):" msgstr "ElÅ‘-pufferelés (százalék):" -#: src/OSS/configure.c:324 -#: src/sun/configure.c:302 +#: src/OSS/configure.c:307 msgid "Buffering" msgstr "Pufferelés" -#: src/OSS/configure.c:325 +#: src/OSS/configure.c:308 msgid "Mixer Settings:" msgstr "KeverÅ‘ beállítások:" -#: src/OSS/configure.c:331 +#: src/OSS/configure.c:314 msgid "Volume controls Master not PCM" msgstr "HangerÅ‘szabályzó a FÅ‘hangerÅ‘t nem a PCM-et használja" -#: src/OSS/configure.c:337 -#: src/sun/configure.c:392 +#: src/OSS/configure.c:320 msgid "Mixer" msgstr "KeverÅ‘" -#: src/OSS/OSS.c:40 +#: src/OSS/OSS.c:41 msgid "About OSS Driver" msgstr "OSS meghajtó névjegye" -#: src/OSS/OSS.c:41 -msgid "" -"Audacious OSS Driver\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" - -#: src/pulse_audio/pulse_audio.c:691 +#: src/pulse_audio/pulse_audio.c:669 msgid "About Audacious PulseAudio Output Plugin" msgstr "Audacious PulseAudio kimeneti bÅ‘vítmény névjegye" -#: src/pulse_audio/pulse_audio.c:692 -msgid "" -"Audacious PulseAudio Output Plugin\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" - -#: src/resample/plugin.c:78 +#: src/resample/plugin.c:89 msgid "About Sample Rate Converter Plugin" -msgstr "" +msgstr "Mintavételi konverter modul névjegye" -#: src/resample/plugin.c:134 +#: src/resample/plugin.c:144 msgid "Sample Rate Converter Preferences" -msgstr "" +msgstr "Mintavételi konverter beállítások" -#: src/resample/plugin.c:146 +#: src/resample/plugin.c:156 msgid "Rate mappings:" -msgstr "" +msgstr "Ráta leképezések:" -#: src/resample/plugin.c:169 +#: src/resample/plugin.c:179 msgid "All others:" msgstr "Minden egyéb:" -#: src/resample/plugin.c:181 +#: src/resample/plugin.c:191 msgid "Method:" msgstr "Módszer: " -#: src/scrobbler/configure.c:152 -#: src/scrobbler/configure.c:228 +#: src/scrobbler/configure.c:123 src/scrobbler/configure.c:198 msgid "Change password" msgstr "Jelszó megváltoztatása" -#: src/scrobbler/configure.c:174 +#: src/scrobbler/configure.c:144 msgid "Services" msgstr "Szolgáltatások" -#: src/scrobbler/configure.c:196 +#: src/scrobbler/configure.c:166 msgid "Username:" msgstr "Felhasználónév:" -#: src/scrobbler/configure.c:202 +#: src/scrobbler/configure.c:172 msgid "Password:" msgstr "Jelszó:" -#: src/scrobbler/configure.c:210 +#: src/scrobbler/configure.c:180 msgid "Scrobbler URL:" msgstr "Scrobbler URL:" -#: src/scrobbler/configure.c:242 +#: src/scrobbler/configure.c:212 msgid "Last.FM" msgstr "Last FM" -#: src/scrobbler/configure.c:287 +#: src/scrobbler/configure.c:239 msgid "Scrobbler" msgstr "" -#: src/scrobbler/plugin.c:213 +#: src/scrobbler/plugin.c:194 msgid "" "Audacious AudioScrobbler Plugin\n" "\n" "Originally created by Audun Hove and Pipian \n" msgstr "" -#: src/scrobbler/plugin.c:215 +#: src/scrobbler/plugin.c:196 msgid "About Scrobbler Plugin" msgstr "Scrobbler bÅ‘vítmény névjegye" -#: src/sid/xs_about.c:84 -#, c-format -msgid "About %s" -msgstr "%s névjegye" +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" +msgstr "SDL Kimeneti modul névjegye" -#: src/sid/xs_config.c:322 -msgid " Error" -msgstr " Hiba" - -#: src/sid/xs_fileinfo.c:151 -msgid "General info" -msgstr "Ãltalános információ" +#: src/sdlout/plugin.c:78 +msgid "SDL error" +msgstr "SDL hiba" -#: src/sid/xs_fileinfo.c:164 -#, c-format -msgid "Tune #%i: " -msgstr "" +#: src/search-tool/search-tool.c:42 +msgid "Genre" +msgstr "Műfaj" -#: src/sid/xs_interface.c:234 -msgid "Audacious-SID configuration" -msgstr "Audacious SID beállítás" +#: src/search-tool/search-tool.c:96 src/search-tool/search-tool.c:106 +msgid "Library" +msgstr "Gyűjtemény" -#: src/sid/xs_interface.c:270 -msgid "8-bit" -msgstr "8-bit" +#: src/search-tool/search-tool.c:591 +msgid "_Create Playlist" +msgstr "_Lejátszólista létrehozása" -#: src/sid/xs_interface.c:277 -msgid "16-bit" -msgstr "16-bit" +#: src/search-tool/search-tool.c:598 +msgid "_Add to Playlist" +msgstr "Lejátszólistához hozzá_ad" -#: src/sid/xs_interface.c:284 -msgid "Resolution:" -msgstr "Felbontás:" +#: src/search-tool/search-tool.c:641 +msgid "Search library" +msgstr "Keresés a gyűjteményben" -#: src/sid/xs_interface.c:315 -msgid "Autopanning" +#: src/search-tool/search-tool.c:645 +msgid "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." msgstr "" -#: src/sid/xs_interface.c:322 -msgid "Channels:" -msgstr "Csatornák:" +#: src/search-tool/search-tool.c:653 +msgid "Please wait ..." +msgstr "Kérem várjon ..." -#: src/sid/xs_interface.c:366 -msgid "Samplerate:" -msgstr "Mintavételi arány:" +#: src/search-tool/search-tool.c:675 +msgid "Choose Folder" +msgstr "Mappa választás" -#: src/sid/xs_interface.c:383 -msgid "Use oversampling" -msgstr "Túlmintavételezés engedélyezése" - -#: src/sid/xs_interface.c:394 -msgid "Factor:" -msgstr "Szorzó:" - -#: src/sid/xs_interface.c:406 -msgid "Large factors require more CPU-power" -msgstr "" +#: src/skins/plugin.c:167 +msgid "About Skinned GUI" +msgstr "Felhasználói GUI névjegye" -#: src/sid/xs_interface.c:412 -msgid "Oversampling:" +#: src/skins/plugin.c:168 +msgid "" +"Copyright (c) 2008, by Tomasz MoÅ„ \n" +"\n" msgstr "" +"Copyright (c) 2008, by Tomasz MoÅ„ \n" +"\n" -#: src/sid/xs_interface.c:417 -msgid "Audio" -msgstr "Hang" - -#: src/sid/xs_interface.c:445 -msgid "Force speed" -msgstr "Kényszerített sebesség" - -#: src/sid/xs_interface.c:449 -msgid "If enabled, this option \"forces\" the emulation engine to use the selected clock speed/frequency. Otherwise the speed is determined from played file itself." -msgstr "" +#: src/skins/skins_cfg.c:207 +msgid "_Player:" +msgstr "_Lejátszó:" -#: src/sid/xs_interface.c:451 -msgid "PAL (50 Hz)" -msgstr "PAL (50 Hz)" +#: src/skins/skins_cfg.c:208 +msgid "Select main player window font:" +msgstr "FÅ‘ablak betűtípus kiválasztás:" -#: src/sid/xs_interface.c:455 -msgid "PAL is the european TV standard, which uses 50Hz vertical refresh frequency. Most of SID-tunes have been made for PAL computers." -msgstr "" +#: src/skins/skins_cfg.c:210 +msgid "_Playlist:" +msgstr "_Lejátszólista:" -#: src/sid/xs_interface.c:459 -msgid "NTSC (60 Hz)" -msgstr "NTSC (60 Hz)" +#: src/skins/skins_cfg.c:211 +msgid "Select playlist font:" +msgstr "Válassza ki a lejátszólista betűkészletét:" -#: src/sid/xs_interface.c:463 -msgid "NTSC is the TV standard with 60Hz vertical refresh rate (and other features that differ from PAL). It is mainly used in United States, Japan and certain other countries." -msgstr "" +#: src/skins/skins_cfg.c:215 +msgid "_Fonts" +msgstr "_Betűkészletek" -#: src/sid/xs_interface.c:467 -msgid "Clock speed:" -msgstr "Óra sebesség:" +#: src/skins/skins_cfg.c:218 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "Bitmap fontok használata (csak ASCII támogatása)" + +#: src/skins/skins_cfg.c:220 +msgid "Scroll song title in both directions" +msgstr "A dal címe mindkét irányba mozog" -#: src/sid/xs_interface.c:484 -msgid "Force model" -msgstr "Kényszerített modell" +#: src/skins/skins_cfg.c:298 +msgid "_Skin" +msgstr "_BÅ‘r" -#: src/sid/xs_interface.c:488 -msgid "If enabled, this option \"forces\" the emulation engine to use the selected SID-chip model. Otherwise the preferred SID model is determined from the file (if PSIDv2NG type) or if not available, this setting is used." -msgstr "" +#: src/skins/skins_cfg.c:345 +msgid "Interface Preferences" +msgstr "Felület beállítások" -#: src/sid/xs_interface.c:490 -msgid "MOS 6581" -msgstr "MOS 6581" +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "Preamp" -#: src/sid/xs_interface.c:494 -msgid "MOS/CSG 6581 is the earlier major version of SID chip. It differs from 8580 in few ways, having much fuller filter (which, due to design error, is never same between two different SID-chips) and has the \"volume adjustment bug\", which enables playing of digital samples." -msgstr "" +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" +msgstr "31 Hz" -#: src/sid/xs_interface.c:498 -msgid "MOS 8580" -msgstr "MOS 8580" +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "63 Hz" -#: src/sid/xs_interface.c:505 -msgid "SID model:" -msgstr "SID modell:" +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" +msgstr "125 Hz" -#: src/sid/xs_interface.c:522 -msgid "SIDPlay 1 (frame-based)" -msgstr "" +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" +msgstr "250 Hz" -#: src/sid/xs_interface.c:526 -msgid "Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most cases, though." -msgstr "" +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" +msgstr "500 Hz" -#: src/sid/xs_interface.c:530 -msgid "SIDPlay 2 (cycle-based)" -msgstr "" +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" +msgstr "1 kHz" -#: src/sid/xs_interface.c:534 -msgid "Use libSIDPlay 2.x emulation, which requires powerful CPU due to more exact emulation." -msgstr "" +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" +msgstr "2 kHz" -#: src/sid/xs_interface.c:538 -msgid "Emulation library selection:" -msgstr "Emulációs könyvtár választás:" +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" +msgstr "4 kHz" -#: src/sid/xs_interface.c:555 -msgid "Real C64 (SIDPlay 2 only)" -msgstr "Valódi C64 (csak SIDPlay 2)" +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" +msgstr "8 kHz" -#: src/sid/xs_interface.c:562 -msgid "Bank switching" -msgstr "Bank váltása" +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" +msgstr "16 kHz" -#: src/sid/xs_interface.c:569 -msgid "Transparent ROM" -msgstr "Ãtlátszó ROM" +#: src/skins/ui_equalizer.c:379 +msgid "Audacious Equalizer" +msgstr "Audacious Equalizer" -#: src/sid/xs_interface.c:576 -msgid "PlaySID environment" -msgstr "PlaySID környezet" +#: src/skins/ui_equalizer.c:887 +msgid "Presets" +msgstr "Profilok" -#: src/sid/xs_interface.c:583 -msgid "Memory mode:" -msgstr "Memória mód:" +#: src/skins/ui_equalizer.c:968 src/skins/ui_manager.c:442 +msgid "Load preset" +msgstr "ElÅ‘re beállított betöltése" -#: src/sid/xs_interface.c:588 -msgid "Emu#1" -msgstr "Emu#1" +#: src/skins/ui_equalizer.c:985 +msgid "Load auto-preset" +msgstr "" -#: src/sid/xs_interface.c:611 -msgid "Optimization mode (faster, inaccurate)" +#: src/skins/ui_equalizer.c:1015 src/skins/ui_equalizer.c:1033 +#: src/skins/ui_equalizer.c:1049 +msgid "Load equalizer preset" msgstr "" -#: src/sid/xs_interface.c:615 -msgid "This setting can be used to enable libSIDPlay2's \"optimization mode\", which in downgrades the emulation from cycle-exact to something similar to frame-exact. The result is lower CPU usage, but worse accuracy." +#: src/skins/ui_equalizer.c:1068 src/skins/ui_manager.c:463 +msgid "Save preset" msgstr "" -#: src/sid/xs_interface.c:617 -msgid "reSID-emulation" -msgstr "reSID-emuláció" +#: src/skins/ui_equalizer.c:1084 +msgid "Save auto-preset" +msgstr "" -#: src/sid/xs_interface.c:621 -msgid "reSID is the software SID-chip simulator based on SID reverse-engineering, created by Dag Lem. It is probably the closest thing to real SID available as software-only emulation." +#: src/skins/ui_equalizer.c:1114 src/skins/ui_equalizer.c:1150 +msgid "Save equalizer preset" msgstr "" -#: src/sid/xs_interface.c:625 -msgid "HardSID" -msgstr "HardSID" - -#: src/sid/xs_interface.c:629 -msgid "HardSID is a EISA/PCI card for PC-compatibles, which can be fitted with a real SID-chip. Software can be used to control the HardSID and combined with software emulation of rest of C64 via libSIDPlay2 HardSID can be used to achieve \"near 100%\" similarity to real C64. For more information, see http://www.hardsid.com/" -msgstr "" - -#: src/sid/xs_interface.c:633 -msgid "SIDPlay 2 options:" -msgstr "SIDPlay 2 beállítások:" - -#: src/sid/xs_interface.c:650 -msgid "Fast (nearest neighbour)" -msgstr "" - -#: src/sid/xs_interface.c:654 -msgid "Fastest and also worst sounding sampling method, simply picks nearest neighbouring sample." -msgstr "" - -#: src/sid/xs_interface.c:658 -msgid "Linear interpolation" -msgstr "Lineáris interpoláció" - -#: src/sid/xs_interface.c:662 -msgid "Uses linear interpolation between samples, yielding higher audio quality with less sampling noise." -msgstr "" - -#: src/sid/xs_interface.c:673 -msgid "Resampling (FIR)" -msgstr "Újramintavételezés (FIR)" - -#: src/sid/xs_interface.c:680 -msgid "reSID sampling options:" -msgstr "reSID mintavétel beállítások:" - -#: src/sid/xs_interface.c:685 -msgid "Emu#2" -msgstr "Emu#2" - -#: src/sid/xs_interface.c:697 -msgid "Emulate filters" -msgstr "SzűrÅ‘k emulálása" - -#: src/sid/xs_interface.c:701 -msgid "This option enables emulation of SID filter. The filter is an essential part of SID's sound capacity, but accurate emulation of it may require quite much CPU power. However, if filter emulation is disabled, tunes won't sound authentic at all if they utilize the filter." -msgstr "" - -#: src/sid/xs_interface.c:726 -msgid "FS" -msgstr "FS" - -#: src/sid/xs_interface.c:743 -msgid "FM" -msgstr "FM" - -#: src/sid/xs_interface.c:760 -msgid "FT" -msgstr "FT" - -#: src/sid/xs_interface.c:771 -msgid "Reset values" -msgstr "Visszaállítás az alapértelmezett értékekre" - -#: src/sid/xs_interface.c:776 -msgid "SIDPlay1" -msgstr "SIDPlay1" - -#: src/sid/xs_interface.c:817 -msgid "Export" -msgstr "Exportálás" - -#: src/sid/xs_interface.c:825 -msgid "Use" -msgstr "Használ" - -#: src/sid/xs_interface.c:833 -#: src/skins/ui_manager.c:430 -msgid "Save" -msgstr "Mentés" - -#: src/sid/xs_interface.c:841 -#: src/skins/ui_manager.c:429 -msgid "Import" -msgstr "Importálás" - -#: src/sid/xs_interface.c:849 -#: src/skins/ui_manager.c:431 -msgid "Delete" -msgstr "Törlés" - -#: src/sid/xs_interface.c:863 -msgid "Filter curve:" -msgstr "" - -#: src/sid/xs_interface.c:868 -msgid "SIDPlay2" -msgstr "SIDPlay2" - -#: src/sid/xs_interface.c:874 -msgid "Filters" -msgstr "SzűrÅ‘k" - -#: src/sid/xs_interface.c:897 -msgid "Play at least for specified time" -msgstr "" - -#: src/sid/xs_interface.c:901 -msgid "If enabled, the tune is played at least for the specified time, adding silence to the end if necessary." -msgstr "" - -#: src/sid/xs_interface.c:908 -#: src/sid/xs_interface.c:962 -#: src/sid/xs_interface.c:1142 -msgid "Playtime:" -msgstr "Lejátszási idÅ‘:" - -#: src/sid/xs_interface.c:928 -msgid "Minimum playtime:" -msgstr "Minimális lejátszási idÅ‘:" - -#: src/sid/xs_interface.c:945 -msgid "Play for specified time maximum" -msgstr "" - -#: src/sid/xs_interface.c:949 -msgid "If enabled, tune is played until specified duration is reached (aka maximum playtime)." -msgstr "" - -#: src/sid/xs_interface.c:951 -msgid "Only when song length is unknown" -msgstr "Csak akkor ha a dal hossza ismeretlen" - -#: src/sid/xs_interface.c:955 -msgid "If enabled, the maximum playtime is applied only if song/tune length is not known." -msgstr "" - -#: src/sid/xs_interface.c:982 -msgid "Maximum playtime:" -msgstr "Maximális lejátszási idÅ‘:" - -#: src/sid/xs_interface.c:999 -msgid "Use XSIDPLAY-compatible database" -msgstr "" - -#: src/sid/xs_interface.c:1003 -msgid "This option enables using of XSIDPLAY compatible song length database. (Refer to Audacious-SID documentation for more information)" -msgstr "" - -#: src/sid/xs_interface.c:1010 -msgid "DB-file:" -msgstr "DB-fájl:" - -#: src/sid/xs_interface.c:1020 -msgid "Database path and filename" -msgstr "Adatbázis útvonal és fájlnév" - -#: src/sid/xs_interface.c:1027 -msgid "Browse for song length-database file" -msgstr "" - -#: src/sid/xs_interface.c:1049 -msgid "Song length database:" -msgstr "Számhossz adatbázis:" - -#: src/sid/xs_interface.c:1054 -msgid "Songlength" -msgstr "Dalhossz" - -#: src/sid/xs_interface.c:1072 -msgid "Override generic Tuplez format string" -msgstr "" - -#: src/sid/xs_interface.c:1076 -msgid "By enabling this option you can specify a custom Tuplez formatting string for SID-files. The SID-plugin specific Tuplez tags are described shortly below." -msgstr "" - -#: src/sid/xs_interface.c:1087 -msgid "Tuplez format string for SID-files" -msgstr "" - -#: src/sid/xs_interface.c:1090 -msgid "" -"SID-specific Tuplez fields:\n" -"\n" -"sid-format\t\t- Specific fileformat\n" -"sid-model\t\t- 6581 or 8580\n" -"sid-speed\t\t- Timing or speed: PAL/NTSC/etc.\n" -"\n" -"Other \"special\" fields set:\n" -"\n" -"subsong-num, subsong-id" -msgstr "" - -#: src/sid/xs_interface.c:1098 -msgid "Song title format:" -msgstr "Szám címének formátuma:" - -#: src/sid/xs_interface.c:1103 -msgid "Title" -msgstr "Cím" - -#: src/sid/xs_interface.c:1125 -msgid "Add sub-tunes to playlist" -msgstr "" - -#: src/sid/xs_interface.c:1129 -msgid "If enabled, sub-tunes of each file will be added to playlist. If disabled, only the default sub-tune will be added." -msgstr "" - -#: src/sid/xs_interface.c:1131 -msgid "Only tunes with specified minimum duration" -msgstr "" - -#: src/sid/xs_interface.c:1135 -msgid "Only add sub-tunes that have a duration of at least specified time." -msgstr "" - -#: src/sid/xs_interface.c:1162 -msgid "Sub-tune handling:" -msgstr "" - -#: src/sid/xs_interface.c:1179 -msgid "Use STIL database" -msgstr "Használjon STIL adatbázist" - -#: src/sid/xs_interface.c:1183 -msgid "If this option is enabled (and the database & HVSC settings below are correctly set), Audacious-SID will use and display additional information from STIL database when HVSC SIDs are played." -msgstr "" - -#: src/sid/xs_interface.c:1190 -msgid "STIL file:" -msgstr "STIL fájl:" - -#: src/sid/xs_interface.c:1206 -msgid "Path and filename of STIL database file (STIL.txt), usually found from HVSC's DOCUMENTS-subdirectory." -msgstr "" - -#: src/sid/xs_interface.c:1219 -msgid "Browse for STIL-database file" -msgstr "STIL adatbázis fájl keresése" - -#: src/sid/xs_interface.c:1246 -msgid "HVSC path:" -msgstr "HVSC útvonal:" - -#: src/sid/xs_interface.c:1262 -msgid "Path to base-directory of your High Voltage SID Collection (HVSC), for example /media/C64Music/" -msgstr "" - -#: src/sid/xs_interface.c:1275 -msgid "Browse for HVSC path" -msgstr "" - -#: src/sid/xs_interface.c:1297 -msgid "SID Tune Information List (STIL) database:" -msgstr "" - -#: src/sid/xs_interface.c:1321 -msgid "Cancel any changes" -msgstr "Mindem változtatás elvetése" - -#: src/sid/xs_interface.c:1328 -msgid "Accept and update changes" -msgstr "Elfogad és frissíti a változásokat" - -#: src/sid/xs_interface.c:1628 -msgid "Audacious-SID Fileinfo" -msgstr "Audacious SID fájl információ" - -#: src/sid/xs_interface.c:1649 -msgid "Filename:" -msgstr "Fájlnév:" - -#: src/sid/xs_interface.c:1657 -msgid "Songname:" -msgstr "Zene neve:" - -#: src/sid/xs_interface.c:1665 -msgid "Composer:" -msgstr "ZeneszerzÅ‘:" - -#: src/sid/xs_interface.c:1673 -msgid "Copyright:" -msgstr "Copyright:" - -#: src/sid/xs_interface.c:1717 -msgid "Song Information:" -msgstr "Száminformációk" - -#: src/sid/xs_interface.c:1752 -msgid "Author:" -msgstr "SzerzÅ‘:" - -#: src/sid/xs_interface.c:1786 -msgid "Duration:" -msgstr "IdÅ‘tartam:" - -#: src/sid/xs_interface.c:1820 -msgid "Sub-tune Information:" -msgstr "" - -#: src/sid/xs_interface.c:1881 -msgid "Select HVSC song length database" -msgstr "" - -#: src/sid/xs_interface.c:1922 -msgid "Select STIL-database" -msgstr "STIL adatbázis kiválasztása" - -#: src/sid/xs_interface.c:1963 -msgid "Select HVSC location prefix" -msgstr "" - -#: src/sid/xs_interface.c:2004 -msgid "Select SIDPlay2 filters file for importing" -msgstr "" - -#: src/sid/xs_interface.c:2045 -msgid "Select SIDPlay2 filters file for exporting" -msgstr "" - -#: src/sid/xs_interface.c:2093 -#: src/sid/xs_interface.c:2106 -msgid "Confirm selected action" -msgstr "Kiválasztott művelet megerÅ‘sítése" - -#: src/sid/xs_interface.c:2123 -msgid "Yes" -msgstr "Igen" - -#: src/sid/xs_interface.c:2129 -msgid "No" -msgstr "Nem" - -#: src/skins/plugin.c:179 -msgid "About Skinned GUI" -msgstr "Felhasználói GUI névjegye" - -#: src/skins/plugin.c:180 -msgid "" -"Copyright (c) 2008, by Tomasz MoÅ„ \n" -"\n" -msgstr "" - -#: src/skins/plugin.c:196 -msgid "Skinned Interface" -msgstr "Felhasználói felület" - -#: src/skins/skins_cfg.c:316 -msgid "_Player:" -msgstr "_Lejátszó:" - -#: src/skins/skins_cfg.c:316 -msgid "Select main player window font:" -msgstr "FÅ‘ablak betűtípus kiválasztás:" - -#: src/skins/skins_cfg.c:317 -msgid "_Playlist:" -msgstr "_Lejátszólista:" - -#: src/skins/skins_cfg.c:317 -msgid "Select playlist font:" -msgstr "Válassza ki a lejátszólista betűkészletét:" - -#: src/skins/skins_cfg.c:321 -msgid "_Fonts" -msgstr "_Betűkészletek" - -#: src/skins/skins_cfg.c:323 -msgid "Use Bitmap fonts if available" -msgstr "Bitmap betűtípus használata ha elérhetÅ‘" - -#: src/skins/skins_cfg.c:323 -msgid "Use bitmap fonts if they are available. Bitmap fonts do not support Unicode strings." -msgstr "Bitmap betűtípus használata ha elérhetÅ‘. A Bitmap betűtípusok nem támogatják az Unicode szövegeket." - -#: src/skins/skins_cfg.c:324 -msgid "_Miscellaneous" -msgstr "_Egyebek" - -#: src/skins/skins_cfg.c:325 -msgid "Show separators in playlist" -msgstr "Elválasztók mutatása a lejátszólistában" - -#: src/skins/skins_cfg.c:327 -msgid "Show window manager decoration" -msgstr "AblakkezelÅ‘ dekoráció mutatása" - -#: src/skins/skins_cfg.c:328 -msgid "This enables the window manager to show decorations for windows." -msgstr "Engedélyezi az ablakkezelÅ‘nek hogy megjelenítse a saját dekorációt." - -#: src/skins/skins_cfg.c:329 -msgid "Use two-way text scroller" -msgstr "" - -#: src/skins/skins_cfg.c:330 -msgid "If selected, the file information text in the main window will scroll back and forth. If not selected, the text will only scroll in one direction." +#: src/skins/ui_equalizer.c:1169 src/skins/ui_manager.c:478 +msgid "Delete preset" msgstr "" -#: src/skins/skins_cfg.c:331 -msgid "Disable inline gtk theme" -msgstr "A beépített gtk téma tiltása" - -#: src/skins/skins_cfg.c:333 -msgid "Random skin on play" -msgstr "Véletlenszerű bÅ‘r lejátszáskor" - -#: src/skins/skins_cfg.c:334 -msgid "Allow loading incomplete skins" -msgstr "A nem teljesen kész bÅ‘rök betöltése mindig" - -#: src/skins/skins_cfg.c:335 -msgid "If selected, audacious won't refuse loading broken skins. Use only if your favourite skin doesn't work" -msgstr "Ha kiválasztott az audacious nem dobja el betöltéskor a sérült bÅ‘rt. Csak akkor használja ha a kedvenc bÅ‘r nem működne" - -#: src/skins/skins_cfg.c:401 -msgid "Color Adjustment" -msgstr "Szín beállítás" - -#: src/skins/skins_cfg.c:407 -msgid "Audacious allows you to alter the color balance of the skinned UI. The sliders below will allow you to do this." +#: src/skins/ui_equalizer.c:1186 +msgid "Delete auto-preset" msgstr "" -#: src/skins/skins_cfg.c:417 -msgid "Blue" -msgstr "Kék" - -#: src/skins/skins_cfg.c:424 -msgid "Green" -msgstr "Zöld" - -#: src/skins/skins_cfg.c:431 -msgid "Red" -msgstr "Vörös" - -#: src/skins/skins_cfg.c:569 -msgid "_Skin" -msgstr "_BÅ‘r" - -#: src/skins/skins_cfg.c:574 -msgid "Color adjustment ..." -msgstr "Szín beállítás ..." - -#: src/skins/ui_equalizer.c:463 -msgid "Audacious Equalizer" -msgstr "Audacious Equalizer" - -#: src/skins/ui_equalizer.c:991 -msgid "Presets" -msgstr "Profilok" - -#: src/skins/ui_main.c:593 +#: src/skins/ui_main.c:444 msgid "kbps" msgstr "kbps" -#: src/skins/ui_main.c:601 +#: src/skins/ui_main.c:452 msgid "kHz" msgstr "kHz" -#: src/skins/ui_main.c:608 +#: src/skins/ui_main.c:459 msgid "surround" msgstr "térhatású" -#: src/skins/ui_main.c:981 -msgid "Audacious - visibility warning" -msgstr "Audacious - láthatósági figyelmeztetés" - -#: src/skins/ui_main.c:984 -msgid "Show main player window" -msgstr "Lejátszó fÅ‘ablakának mutatása" - -#: src/skins/ui_main.c:985 -msgid "Ignore" -msgstr "MellÅ‘zés" - -#: src/skins/ui_main.c:991 -msgid "" -"Audacious has been started with all of its windows hidden.\n" -"You may want to show the player window again to control Audacious; otherwise, you'll have to control it remotely via audtool or enabled plugins (such as the statusicon plugin)." -msgstr "" - -#: src/skins/ui_main.c:997 -msgid "Always ignore, show/hide is controlled remotely" -msgstr "" - -#: src/skins/ui_main.c:1042 -msgid "Audacious - broken GTK engine usage warning" -msgstr "Audacious - hibás GTK téma megjelenítÅ‘ használat figyelmeztetés" - -#: src/skins/ui_main.c:1050 -#, c-format -msgid "" -"Broken GTK engine in use\n" -"\n" -"Audacious has detected that you are using a broken GTK engine.\n" -"\n" -"The theme engine you are using, %s, is incompatible with some of the features used by modern skins. The incompatible features have been disabled for this session.\n" -"\n" -"To use these features, please consider using a different GTK theme engine." -msgstr "" - -#: src/skins/ui_main.c:1061 -msgid "Do not display this warning again" -msgstr "Ne mutassa ezt a figyelmeztetést ismét" - -#: src/skins/ui_main.c:1269 +#: src/skins/ui_main.c:807 #, c-format -msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)" -msgstr "Pozicionálás: %d:%-2.2d/%d:%-2.2d (%d%%)" +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "Tekerés %d:%-2.2d / %d:%-2.2d" -#: src/skins/ui_main.c:1299 +#: src/skins/ui_main.c:828 #, c-format msgid "Volume: %d%%" msgstr "HangerÅ‘: %d%%" -#: src/skins/ui_main.c:1322 +#: src/skins/ui_main.c:851 #, c-format msgid "Balance: %d%% left" msgstr "Balansz: %d%% bal" -#: src/skins/ui_main.c:1324 +#: src/skins/ui_main.c:853 msgid "Balance: center" msgstr "Balansz: közép" -#: src/skins/ui_main.c:1326 +#: src/skins/ui_main.c:855 #, c-format msgid "Balance: %d%% right" msgstr "Balansz: %d%% jobb" -#: src/skins/ui_main.c:1618 +#: src/skins/ui_main.c:981 msgid "Options Menu" msgstr "Beállítások menü" -#: src/skins/ui_main.c:1622 +#: src/skins/ui_main.c:985 msgid "Disable 'Always On Top'" msgstr "Tiltja a 'Mindig felül' opciót" -#: src/skins/ui_main.c:1624 +#: src/skins/ui_main.c:987 msgid "Enable 'Always On Top'" msgstr "Engedélyezi a 'Mindig felül' opciót" -#: src/skins/ui_main.c:1627 +#: src/skins/ui_main.c:990 msgid "File Info Box" msgstr "Fájl Információs doboz" -#: src/skins/ui_main.c:1631 -msgid "Disable 'GUI Scaling'" -msgstr "'GUI méretezés' tiltása" - -#: src/skins/ui_main.c:1633 -msgid "Enable 'GUI Scaling'" -msgstr "'GUI méretezés' engedélyezése" - -#: src/skins/ui_main.c:1636 +#: src/skins/ui_main.c:995 msgid "Visualization Menu" msgstr "Megjelenítési menü" -#: src/skins/ui_main.c:2348 +#: src/skins/ui_main.c:1653 msgid "Single mode." msgstr "Egyszerű mód." -#: src/skins/ui_main.c:2350 +#: src/skins/ui_main.c:1655 msgid "Playlist mode." msgstr "Lejátszólista mód." -#: src/skins/ui_main.c:2374 +#: src/skins/ui_main.c:1677 msgid "Stopping after song." msgstr "Leállítás az aktuális dal után." -#: src/skins/ui_main.c:2376 +#: src/skins/ui_main.c:1679 msgid "Not stopping after song." msgstr "Nincs leállítás az aktuális dal után." -#: src/skins/ui_manager.c:50 -#: src/skins/ui_manager.c:51 +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 msgid "Autoscroll Songname" msgstr "Szám nevének automatikus görgetése" -#: src/skins/ui_manager.c:56 -#: src/skins/ui_manager.c:57 +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "Leállítás az aktuális dal után" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 msgid "Peaks" msgstr "Csúcsérték" -#: src/skins/ui_manager.c:68 -#: src/skins/ui_manager.c:69 +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "Ismétlés" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "Véletlenszerű" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "Ne legyen léptetés a lejátszólistában" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 msgid "Show Player" msgstr "Lejátszó mutatása" -#: src/skins/ui_manager.c:71 -#: src/skins/ui_manager.c:72 +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 msgid "Show Playlist Editor" msgstr "Lejátszólista szerkesztÅ‘ mutatása" -#: src/skins/ui_manager.c:74 -#: src/skins/ui_manager.c:75 +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 msgid "Show Equalizer" msgstr "Hangszínszabályzó mutatása" -#: src/skins/ui_manager.c:77 -#: src/skins/ui_manager.c:78 +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 msgid "Always on Top" msgstr "Mindig felül" -#: src/skins/ui_manager.c:80 -#: src/skins/ui_manager.c:81 +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 msgid "Put on All Workspaces" msgstr "Minden munkaterületre elhelyez" -#: src/skins/ui_manager.c:83 -#: src/skins/ui_manager.c:84 +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 msgid "Roll up Player" msgstr "Lejátszó felgördítése" -#: src/skins/ui_manager.c:86 -#: src/skins/ui_manager.c:87 +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 msgid "Roll up Playlist Editor" msgstr "Lejátszólista szerkesztÅ‘ felgördítése" -#: src/skins/ui_manager.c:89 -#: src/skins/ui_manager.c:90 +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 msgid "Roll up Equalizer" msgstr "Hangszínszabályzó felgördítése" -#: src/skins/ui_manager.c:92 -#: src/sndstretch/sndstretch_xmms.c:393 -msgid "Scale" -msgstr "Skála" - -#: src/skins/ui_manager.c:93 -msgid "DoubleSize" -msgstr "KétszeresMéret" - -#: src/skins/ui_manager.c:95 -#: src/skins/ui_manager.c:96 -msgid "Easy Move" -msgstr "Könnyű mozgatás" - -#: src/skins/ui_manager.c:104 +#: src/skins/ui_manager.c:115 msgid "Analyzer" msgstr "Analizátor" -#: src/skins/ui_manager.c:105 +#: src/skins/ui_manager.c:116 msgid "Scope" -msgstr "" +msgstr "Szkóp" -#: src/skins/ui_manager.c:106 +#: src/skins/ui_manager.c:117 msgid "Voiceprint" -msgstr "" +msgstr "Voiceprint" -#: src/skins/ui_manager.c:107 +#: src/skins/ui_manager.c:118 msgid "Off" msgstr "Kikapcsolva" -#: src/skins/ui_manager.c:111 -#: src/skins/ui_manager.c:128 -#: src/skins/ui_manager.c:134 +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 msgid "Normal" msgstr "Szokásos" -#: src/skins/ui_manager.c:112 -#: src/skins/ui_manager.c:129 +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 msgid "Fire" msgstr "Tűz" -#: src/skins/ui_manager.c:113 +#: src/skins/ui_manager.c:124 msgid "Vertical Lines" msgstr "FüggÅ‘leges vonalak" -#: src/skins/ui_manager.c:117 +#: src/skins/ui_manager.c:128 msgid "Lines" msgstr "Vonalak" -#: src/skins/ui_manager.c:118 +#: src/skins/ui_manager.c:129 msgid "Bars" msgstr "Csíkok" -#: src/skins/ui_manager.c:122 +#: src/skins/ui_manager.c:133 msgid "Dot Scope" -msgstr "" +msgstr "Pont szkóp" -#: src/skins/ui_manager.c:123 +#: src/skins/ui_manager.c:134 msgid "Line Scope" -msgstr "" +msgstr "Vonal szkóp" -#: src/skins/ui_manager.c:124 +#: src/skins/ui_manager.c:135 msgid "Solid Scope" -msgstr "" +msgstr "Szolid szkóp" -#: src/skins/ui_manager.c:130 +#: src/skins/ui_manager.c:141 msgid "Ice" msgstr "Jég" -#: src/skins/ui_manager.c:135 +#: src/skins/ui_manager.c:146 msgid "Smooth" msgstr "Sima" -#: src/skins/ui_manager.c:139 -#: src/skins/ui_manager.c:147 +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 msgid "Slowest" msgstr "Lasabb" -#: src/skins/ui_manager.c:140 -#: src/skins/ui_manager.c:148 +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 msgid "Slow" msgstr "Lassú" -#: src/skins/ui_manager.c:141 -#: src/skins/ui_manager.c:149 +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 msgid "Medium" msgstr "Közepes" -#: src/skins/ui_manager.c:142 -#: src/skins/ui_manager.c:150 +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 msgid "Fast" msgstr "Gyors" -#: src/skins/ui_manager.c:143 -#: src/skins/ui_manager.c:151 +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 msgid "Fastest" msgstr "Leggyorsabb" -#: src/skins/ui_manager.c:155 +#: src/skins/ui_manager.c:166 msgid "Time Elapsed" msgstr "Eltelt idÅ‘" -#: src/skins/ui_manager.c:156 +#: src/skins/ui_manager.c:167 msgid "Time Remaining" msgstr "HátralévÅ‘ idÅ‘" -#: src/skins/ui_manager.c:185 +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "Szünet" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "ElÅ‘zÅ‘" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "KövetkezÅ‘" + +#: src/skins/ui_manager.c:196 msgid "Visualization" msgstr "Megjelenítés" -#: src/skins/ui_manager.c:186 +#: src/skins/ui_manager.c:197 msgid "Visualization Mode" msgstr "Megjelenítési mód" -#: src/skins/ui_manager.c:187 +#: src/skins/ui_manager.c:198 msgid "Analyzer Mode" msgstr "Analizátor mód" -#: src/skins/ui_manager.c:188 +#: src/skins/ui_manager.c:199 msgid "Scope Mode" -msgstr "" +msgstr "Szkóp mód" -#: src/skins/ui_manager.c:189 +#: src/skins/ui_manager.c:200 msgid "Voiceprint Mode" -msgstr "" +msgstr "Voiceprint Mód" -#: src/skins/ui_manager.c:190 +#: src/skins/ui_manager.c:201 msgid "WindowShade VU Mode" msgstr "" -#: src/skins/ui_manager.c:191 +#: src/skins/ui_manager.c:202 msgid "Analyzer Falloff" msgstr "Analizátor kikapcsolása" -#: src/skins/ui_manager.c:192 +#: src/skins/ui_manager.c:203 msgid "Peaks Falloff" msgstr "Csúcsérték ki" -#: src/skins/ui_manager.c:202 -#: src/skins/ui_manager.c:203 +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "Lejátszólista" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "Új lejátszólista" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 msgid "Select Next Playlist" msgstr "A következÅ‘ lejátszólista kijelölése" -#: src/skins/ui_manager.c:205 -#: src/skins/ui_manager.c:206 +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 msgid "Select Previous Playlist" msgstr "Az elÅ‘zÅ‘ lejátszólista kijelölése" +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "Lejátszólista törlése" + #: src/skins/ui_manager.c:222 +msgid "Import Playlist" +msgstr "Lejátszólista importálása" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "Lejátszólista betöltése a kiválasztott lejátszólistába." + +#: src/skins/ui_manager.c:226 +msgid "Export Playlist" +msgstr "Lejátszólista exportálása" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "Kiválasztott lejátszólista mentése." + +#: src/skins/ui_manager.c:229 msgid "Refresh List" msgstr "Lista frissítése" -#: src/skins/ui_manager.c:226 -msgid "List Manager" -msgstr "List kezelÅ‘" +#: src/skins/ui_manager.c:230 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "A lejátszólista elemek metaadatainak frissítése." -#: src/skins/ui_manager.c:236 +#: src/skins/ui_manager.c:233 +msgid "Playlist Manager" +msgstr "Lejátszólista kezelÅ‘" + +#: src/skins/ui_manager.c:234 +msgid "Queue Manager" +msgstr "Várakozási sor kezelÅ‘" + +#: src/skins/ui_manager.c:237 +msgid "View" +msgstr "Nézet" + +#: src/skins/ui_manager.c:238 +msgid "Interface" +msgstr "Felület" + +#: src/skins/ui_manager.c:239 +msgid "Interface Preferences ..." +msgstr "Felület beállítások ..." + +#: src/skins/ui_manager.c:243 msgid "Add Internet Address..." msgstr "Internetes cím hozzáadása ..." -#: src/skins/ui_manager.c:240 +#: src/skins/ui_manager.c:244 +msgid "Adds a remote track to the playlist." +msgstr "Távoli sávok hozzáadása a lejátszólistához." + +#: src/skins/ui_manager.c:247 msgid "Add Files..." msgstr "Fájlok hozzáadása ..." -#: src/skins/ui_manager.c:246 +#: src/skins/ui_manager.c:248 +msgid "Adds files to the playlist." +msgstr "Fájlok hozzáadása a lejátszólistához." + +#: src/skins/ui_manager.c:253 msgid "Search and Select" msgstr "Keresés és választ" -#: src/skins/ui_manager.c:247 -msgid "Searches the playlist and selects playlist entries based on specific criteria." +#: src/skins/ui_manager.c:254 +msgid "" +"Searches the playlist and selects playlist entries based on specific " +"criteria." msgstr "" +"Keres a lejátszási listán és kiválasztja azokat a lista bejegyzéseket amik " +"megfelelnek a meghatározott kritériumoknak." + +#: src/skins/ui_manager.c:257 +msgid "Invert Selection" +msgstr "Kijelölés megfordítása" + +#: src/skins/ui_manager.c:258 +msgid "Inverts the selected and unselected entries." +msgstr "Megfordítja a kiválasztásokat." + +#: src/skins/ui_manager.c:261 +msgid "Select All" +msgstr "Mindet kijelöl" + +#: src/skins/ui_manager.c:262 +msgid "Selects all of the playlist entries." +msgstr "Minden szám kiválasztása a lejátszólistán." + +#: src/skins/ui_manager.c:265 +msgid "Select None" +msgstr "Nincs kijelölés" + +#: src/skins/ui_manager.c:266 +msgid "Deselects all of the playlist entries." +msgstr "Minden kijelölés megszüntetése a lejátszólista elemein." -#: src/skins/ui_manager.c:250 -msgid "Invert Selection" -msgstr "Kijelölés megfordítása" +#: src/skins/ui_manager.c:271 +msgid "Remove All" +msgstr "Összes törlése" -#: src/skins/ui_manager.c:251 -msgid "Inverts the selected and unselected entries." -msgstr "" +#: src/skins/ui_manager.c:272 +msgid "Removes all entries from the playlist." +msgstr "Minden elem eltávolítása a lejátszólistáról." -#: src/skins/ui_manager.c:268 +#: src/skins/ui_manager.c:275 msgid "Clear Queue" msgstr "Várólista törlése" -#: src/skins/ui_manager.c:269 +#: src/skins/ui_manager.c:276 msgid "Clears the queue associated with this playlist." -msgstr "" +msgstr "Törli a várakozási sorral kapcsolatos listát." -#: src/skins/ui_manager.c:272 +#: src/skins/ui_manager.c:279 msgid "Remove Unavailable Files" msgstr "Elérhetetlen fájlok törlése" -#: src/skins/ui_manager.c:273 +#: src/skins/ui_manager.c:280 msgid "Removes unavailable files from the playlist." msgstr "Törölje az elérhetetlen fájlokat a lejátszólistáról." -#: src/skins/ui_manager.c:276 +#: src/skins/ui_manager.c:283 msgid "Remove Duplicates" msgstr "KettÅ‘zöttek eltávolítása" -#: src/skins/ui_manager.c:279 +#: src/skins/ui_manager.c:285 src/skins/ui_manager.c:317 +#: src/skins/ui_manager.c:347 +msgid "By Title" +msgstr "Cím szerint" + +#: src/skins/ui_manager.c:286 msgid "Removes duplicate entries from the playlist by title." msgstr "A többszörösen felvett elemek törlése a lejátszólistáról cím alapján." -#: src/skins/ui_manager.c:282 -#: src/skins/ui_manager.c:318 -#: src/skins/ui_manager.c:348 +#: src/skins/ui_manager.c:289 src/skins/ui_manager.c:329 +#: src/skins/ui_manager.c:359 msgid "By Filename" msgstr "Fájlnév szerint" -#: src/skins/ui_manager.c:283 +#: src/skins/ui_manager.c:290 msgid "Removes duplicate entries from the playlist by filename." -msgstr "A többszörösen felvett elemekt törlése a lejátszólistáról fájlnév alapján." +msgstr "" +"A többszörösen felvett elemekt törlése a lejátszólistáról fájlnév alapján." -#: src/skins/ui_manager.c:286 -#: src/skins/ui_manager.c:322 -#: src/skins/ui_manager.c:352 +#: src/skins/ui_manager.c:293 src/skins/ui_manager.c:333 +#: src/skins/ui_manager.c:363 msgid "By Path + Filename" msgstr "Útvonal + fájlnév szerint" -#: src/skins/ui_manager.c:287 +#: src/skins/ui_manager.c:294 msgid "Removes duplicate entries from the playlist by their full path." -msgstr "A többszörösen felvett elemekt törlése a lejátszólistáról teljes elérési út alapján." +msgstr "" +"A többszörösen felvett elemekt törlése a lejátszólistáról teljes elérési út " +"alapján." + +#: src/skins/ui_manager.c:297 +msgid "Remove Unselected" +msgstr "Nem kiválasztottak törlése" + +#: src/skins/ui_manager.c:298 +msgid "Remove unselected entries from the playlist." +msgstr "Minden nem kiválasztott elem törlése a lejátszólistáról." + +#: src/skins/ui_manager.c:301 +msgid "Remove Selected" +msgstr "Kijelölt törlése" + +#: src/skins/ui_manager.c:302 +msgid "Remove selected entries from the playlist." +msgstr "Kijelölt elemek törlése a lejátszólistáról" + +#: src/skins/ui_manager.c:307 +msgid "Randomize List" +msgstr "Véletlenszerű lista" + +#: src/skins/ui_manager.c:308 +msgid "Randomizes the playlist." +msgstr "Lejátszólista véletlenszerű keverése." -#: src/skins/ui_manager.c:300 +#: src/skins/ui_manager.c:311 msgid "Reverse List" msgstr "Fordított lista" -#: src/skins/ui_manager.c:301 +#: src/skins/ui_manager.c:312 msgid "Reverses the playlist." msgstr "Megfordítja a lejátszólistát." -#: src/skins/ui_manager.c:304 +#: src/skins/ui_manager.c:315 msgid "Sort List" msgstr "Lista rendezése" -#: src/skins/ui_manager.c:307 -#: src/skins/ui_manager.c:337 +#: src/skins/ui_manager.c:318 src/skins/ui_manager.c:348 msgid "Sorts the list by title." msgstr "Lista rendezése cím alapján." -#: src/skins/ui_manager.c:311 -#: src/skins/ui_manager.c:341 +#: src/skins/ui_manager.c:321 src/skins/ui_manager.c:351 +msgid "By Album" +msgstr "Album szerint" + +#: src/skins/ui_manager.c:322 src/skins/ui_manager.c:352 msgid "Sorts the list by album." msgstr "Lista rendezése album szerint." -#: src/skins/ui_manager.c:315 -#: src/skins/ui_manager.c:345 +#: src/skins/ui_manager.c:325 src/skins/ui_manager.c:355 +msgid "By Artist" +msgstr "ElÅ‘adó szerint" + +#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 msgid "Sorts the list by artist." msgstr "Lista rendezése elÅ‘adók szerint." -#: src/skins/ui_manager.c:319 -#: src/skins/ui_manager.c:349 +#: src/skins/ui_manager.c:330 src/skins/ui_manager.c:360 msgid "Sorts the list by filename." msgstr "A lista rendezése fájlok neve szerint." -#: src/skins/ui_manager.c:323 -#: src/skins/ui_manager.c:353 +#: src/skins/ui_manager.c:334 src/skins/ui_manager.c:364 msgid "Sorts the list by full pathname." msgstr "Lista rendezése teljes útvonal alapján." -#: src/skins/ui_manager.c:326 -#: src/skins/ui_manager.c:356 +#: src/skins/ui_manager.c:337 src/skins/ui_manager.c:367 msgid "By Date" msgstr "Dátum alapján" -#: src/skins/ui_manager.c:327 -#: src/skins/ui_manager.c:357 +#: src/skins/ui_manager.c:338 src/skins/ui_manager.c:368 msgid "Sorts the list by modification time." msgstr "A lista rendezése a módosítás ideje szerint" -#: src/skins/ui_manager.c:331 -#: src/skins/ui_manager.c:361 +#: src/skins/ui_manager.c:341 src/skins/ui_manager.c:371 +msgid "By Track Number" +msgstr "A dal sorszáma szerint" + +#: src/skins/ui_manager.c:342 src/skins/ui_manager.c:372 msgid "Sorts the list by track number." msgstr "Lista rendezése a szám sorszáma alapján." -#: src/skins/ui_manager.c:334 +#: src/skins/ui_manager.c:345 msgid "Sort Selected" msgstr "Kijelöltek rendezése" -#: src/skins/ui_manager.c:373 +#: src/skins/ui_manager.c:381 +msgid "File" +msgstr "Fájl" + +#: src/skins/ui_manager.c:384 msgid "Plugin Services" msgstr "BÅ‘vítmények karbantartása" -#: src/skins/ui_manager.c:384 +#: src/skins/ui_manager.c:386 src/skins/ui_manager.c:389 +msgid "View Track Details" +msgstr "Szám részleteinek megjelenítése" + +#: src/skins/ui_manager.c:387 src/skins/ui_manager.c:390 +msgid "View track details" +msgstr "Szám részleteinek megjelenítése" + +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:393 +msgid "About Audacious" +msgstr "Audacious névjegye" + +#: src/skins/ui_manager.c:395 msgid "Play File" msgstr "Fájl lejátszáa" -#: src/skins/ui_manager.c:387 +#: src/skins/ui_manager.c:396 +msgid "Load and play a file" +msgstr "Megyitja és lejátsza a fájlt" + +#: src/skins/ui_manager.c:398 msgid "Play Location" msgstr "Hely lejátszása" -#: src/skins/ui_manager.c:428 +#: src/skins/ui_manager.c:399 +msgid "Play media from the selected location" +msgstr "Média lejátszása a kiválasztott helyrÅ‘l" + +#: src/skins/ui_manager.c:401 +msgid "Plugin services" +msgstr "Szolgáltatások kezelése" + +#: src/skins/ui_manager.c:403 +msgid "Preferences" +msgstr "Beállítások" + +#: src/skins/ui_manager.c:404 +msgid "Open preferences window" +msgstr "Tulajdonságok ablak megnyitása" + +#: src/skins/ui_manager.c:407 +msgid "Quit Audacious" +msgstr "Kilépés az Audaciousból" + +#: src/skins/ui_manager.c:409 src/skins/ui_manager.c:410 +msgid "Set A-B" +msgstr "Beállítás A-B" + +#: src/skins/ui_manager.c:412 src/skins/ui_manager.c:413 +msgid "Clear A-B" +msgstr "Törlés A-B" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Jump to Time" +msgstr "Ugrás a megadott idÅ‘re" + +#: src/skins/ui_manager.c:421 +msgid "Queue Toggle" +msgstr "Várakozási sor váltása" + +#: src/skins/ui_manager.c:422 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "Engedélyezi/letiltja az elemek lejátszólista várósorba helyezését." + +#: src/skins/ui_manager.c:425 +msgid "Copy" +msgstr "Másolás" + +#: src/skins/ui_manager.c:427 +msgid "Cut" +msgstr "Kivágás" + +#: src/skins/ui_manager.c:429 +msgid "Paste" +msgstr "Beillesztés" + +#: src/skins/ui_manager.c:436 msgid "Load" msgstr "Betöltés" -#: src/skins/ui_manager.c:433 -#: src/skins/ui_manager.c:454 -#: src/skins/ui_manager.c:469 +#: src/skins/ui_manager.c:437 +msgid "Import" +msgstr "Importálás" + +#: src/skins/ui_manager.c:438 +msgid "Save" +msgstr "Mentés" + +#: src/skins/ui_manager.c:439 +msgid "Delete" +msgstr "Törlés" + +#: src/skins/ui_manager.c:441 src/skins/ui_manager.c:462 +#: src/skins/ui_manager.c:477 msgid "Preset" msgstr "ElÅ‘re beállított" -#: src/skins/ui_manager.c:434 -msgid "Load preset" -msgstr "ElÅ‘re beállított betöltése" - -#: src/skins/ui_manager.c:436 -#: src/skins/ui_manager.c:457 -#: src/skins/ui_manager.c:472 +#: src/skins/ui_manager.c:444 src/skins/ui_manager.c:465 +#: src/skins/ui_manager.c:480 msgid "Auto-load preset" msgstr "ElÅ‘re beállított automatikus betöltése" -#: src/skins/ui_manager.c:437 +#: src/skins/ui_manager.c:445 msgid "Load auto-load preset" msgstr "" -#: src/skins/ui_manager.c:440 +#: src/skins/ui_manager.c:448 msgid "Load default preset into equalizer" msgstr "" -#: src/skins/ui_manager.c:442 +#: src/skins/ui_manager.c:450 msgid "Zero" msgstr "Nulla" -#: src/skins/ui_manager.c:443 +#: src/skins/ui_manager.c:451 msgid "Set equalizer preset levels to zero" msgstr "Legyen minden hangszínszabályozó értéke nulla" -#: src/skins/ui_manager.c:445 +#: src/skins/ui_manager.c:453 msgid "From file" msgstr "Fájlból" -#: src/skins/ui_manager.c:446 +#: src/skins/ui_manager.c:454 msgid "Load preset from file" msgstr "" -#: src/skins/ui_manager.c:448 +#: src/skins/ui_manager.c:456 msgid "From WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:449 +#: src/skins/ui_manager.c:457 msgid "Load preset from WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:451 +#: src/skins/ui_manager.c:459 msgid "WinAMP Presets" msgstr "" -#: src/skins/ui_manager.c:452 +#: src/skins/ui_manager.c:460 msgid "Import WinAMP presets" msgstr "" -#: src/skins/ui_manager.c:455 -msgid "Save preset" -msgstr "" - -#: src/skins/ui_manager.c:458 +#: src/skins/ui_manager.c:466 msgid "Save auto-load preset" msgstr "" -#: src/skins/ui_manager.c:461 +#: src/skins/ui_manager.c:469 msgid "Save default preset" msgstr "" -#: src/skins/ui_manager.c:463 +#: src/skins/ui_manager.c:471 msgid "To file" msgstr "Fájlba" -#: src/skins/ui_manager.c:464 +#: src/skins/ui_manager.c:472 msgid "Save preset to file" msgstr "" -#: src/skins/ui_manager.c:466 +#: src/skins/ui_manager.c:474 msgid "To WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:467 +#: src/skins/ui_manager.c:475 msgid "Save preset to WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:470 -msgid "Delete preset" -msgstr "" - -#: src/skins/ui_manager.c:473 +#: src/skins/ui_manager.c:481 msgid "Delete auto-load preset" msgstr "" -#: src/skins/ui_playlist.c:374 +#: src/skins/ui_playlist.c:248 msgid "Search entries in active playlist" msgstr "Elemek keresése az aktív lejátszólistában" -#: src/skins/ui_playlist.c:382 -msgid "Select entries in playlist by filling one or more fields. Fields use regular expressions syntax, case-insensitive. If you don't know how regular expressions work, simply insert a literal portion of what you're searching for." +#: src/skins/ui_playlist.c:256 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular" +" expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." msgstr "" -#: src/skins/ui_playlist.c:397 +#: src/skins/ui_playlist.c:264 +msgid "Title: " +msgstr "Cím:" + +#: src/skins/ui_playlist.c:271 msgid "Album: " msgstr "Album:" -#: src/skins/ui_playlist.c:404 +#: src/skins/ui_playlist.c:278 msgid "Artist: " msgstr "ElÅ‘adó:" -#: src/skins/ui_playlist.c:411 +#: src/skins/ui_playlist.c:285 msgid "Filename: " msgstr "Fájlnév:" -#: src/skins/ui_playlist.c:419 +#: src/skins/ui_playlist.c:293 msgid "Clear previous selection before searching" msgstr "Az elÅ‘zÅ‘ kiválasztások törlése keresés elÅ‘tt" -#: src/skins/ui_playlist.c:422 +#: src/skins/ui_playlist.c:296 msgid "Automatically toggle queue for matching entries" msgstr "Automatikusan várólistára kerülnek a talált elemek" -#: src/skins/ui_playlist.c:425 +#: src/skins/ui_playlist.c:299 msgid "Create a new playlist with matching entries" msgstr "Hozzon létre új lejátszólistát az egyezÅ‘ elemekbÅ‘l" -#: src/skins/ui_playlist.c:772 -msgid "Save as Static Playlist" -msgstr "Mentés statikus lejátszólistaként" - -#: src/skins/ui_playlist.c:779 -msgid "Use Relative Path" -msgstr "Relatív útvonal használata" - -#: src/skins/ui_playlist.c:802 -msgid "Load Playlist" -msgstr "Lejátszólista betöltése" - -#: src/skins/ui_playlist.c:815 -msgid "Save Playlist" -msgstr "Lejátszólista mentése" - -#: src/skins/ui_playlist.c:1146 +#: src/skins/ui_playlist.c:765 msgid "Audacious Playlist Editor" msgstr "Audacious lejátszólista szerkesztÅ‘" -#: src/skins/ui_playlist.c:1206 +#: src/skins/ui_playlist.c:812 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d / %d)" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "31 Hz" -msgstr "31 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "63 Hz" -msgstr "63 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "125 Hz" -msgstr "125 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "250 Hz" -msgstr "250 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "500 Hz" -msgstr "500 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "1 kHz" -msgstr "1 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "2 kHz" -msgstr "2 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -msgid "4 kHz" -msgstr "4 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -msgid "8 kHz" -msgstr "8 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -msgid "16 kHz" -msgstr "16 kHz" - -#: src/skins/ui_skinselector.c:179 +#: src/skins/ui_skinselector.c:162 msgid "Archived Winamp 2.x skin" msgstr "Régi Winamp 2.x bÅ‘r" -#: src/skins/ui_skinselector.c:184 +#: src/skins/ui_skinselector.c:167 msgid "Unarchived Winamp 2.x skin" msgstr "Nem régi Winamp 2.x bÅ‘r" -#: src/skins/util.c:834 +#: src/skins/util.c:774 #, c-format msgid "Could not create directory (%s): %s\n" msgstr "Nem lehet létrehozni a könyvtárat (%s): %s\n" -#: src/sndfile/plugin.c:531 +#: src/sndfile/plugin.c:456 msgid "About sndfile plugin" msgstr "sndfile bÅ‘vítmény névjegye" -#: src/sndfile/plugin.c:532 -msgid "" -"Adapted for Audacious usage by Tony Vroon \n" -"from the xmms_sndfile plugin which is:\n" -"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -"This program is free software ; you can redistribute it and/or modify \n" -"it under the terms of the GNU General Public License as published by \n" -"the Free Software Foundation ; either version 2 of the License, or \n" -"(at your option) any later version. \n" -" \n" -"This program is distributed in the hope that it will be useful, \n" -"but WITHOUT ANY WARRANTY ; without even the implied warranty of \n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n" -"See the GNU General Public License for more details. \n" -"\n" -"You should have received a copy of the GNU General Public \n" -"License along with this program ; if not, write to \n" -"the Free Software Foundation, Inc., \n" -"51 Franklin Street, Fifth Floor, \n" -"Boston, MA 02110-1301 USA" -msgstr "" - -#: src/sndstretch/sndstretch_xmms.c:175 +#: src/sndstretch/sndstretch_xmms.c:155 msgid "About SndStretch" msgstr "SndStretch névjegye" -#: src/sndstretch/sndstretch_xmms.c:336 +#: src/sndstretch/sndstretch_xmms.c:308 msgid "Volume corr." msgstr "HangerÅ‘ korrekció" -#: src/sndstretch/sndstretch_xmms.c:337 +#: src/sndstretch/sndstretch_xmms.c:309 msgid "Short Overlap" msgstr "Rövid átfedés" -#: src/sndstretch/sndstretch_xmms.c:391 +#: src/sndstretch/sndstretch_xmms.c:355 msgid "Speed" msgstr "Sebesség" -#: src/sndstretch/sndstretch_xmms.c:392 +#: src/sndstretch/sndstretch_xmms.c:356 msgid "Pitch" msgstr "Hangmagasság" -#: src/sndstretch/sndstretch_xmms.c:413 +#: src/sndstretch/sndstretch_xmms.c:357 +msgid "Scale" +msgstr "Skála" + +#: src/sndstretch/sndstretch_xmms.c:377 msgid "SndStretch - Configuration" msgstr "SndStretch - beállítások" -#: src/song_change/song_change.c:397 +#: src/song_change/song_change.c:437 msgid "Command to run when Audacious starts a new song." msgstr "Parancs futtatása ha az Audacious elindít egy új számot." -#: src/song_change/song_change.c:398 -#: src/song_change/song_change.c:402 -#: src/song_change/song_change.c:406 -#: src/song_change/song_change.c:410 +#: src/song_change/song_change.c:439 src/song_change/song_change.c:445 +#: src/song_change/song_change.c:451 src/song_change/song_change.c:457 msgid "Command:" msgstr "Parancs:" -#: src/song_change/song_change.c:401 +#: src/song_change/song_change.c:443 msgid "Command to run toward the end of a song." -msgstr "" +msgstr "Parancs futtatása a dal végén." -#: src/song_change/song_change.c:405 +#: src/song_change/song_change.c:449 msgid "Command to run when Audacious reaches the end of the playlist." -msgstr "" +msgstr "Parancs futtatása amikor Audacious elér a lejátszási lista végéhez." -#: src/song_change/song_change.c:409 -msgid "Command to run when title changes for a song (i.e. network streams titles)." -msgstr "" +#: src/song_change/song_change.c:455 +msgid "" +"Command to run when title changes for a song (i.e. network streams titles)." +msgstr "Parancs futtatása ha a dal cím változik (pl. hálózati stream-címek)." -#: src/song_change/song_change.c:413 +#: src/song_change/song_change.c:461 msgid "" "You can use the following format strings which\n" "will be substituted before calling the command\n" @@ -4942,30 +3275,31 @@ "%n or %s: Song name\n" "%r: Rate (in bits per second)\n" "%t: Playlist position (%02d)\n" -"%p: Currently playing (1 or 0)" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" msgstr "" -#: src/song_change/song_change.c:437 -msgid "Parameters passed to the shell should be encapsulated in quotes. Doing otherwise is a security risk." +#: src/song_change/song_change.c:488 +msgid "" +"Parameters passed to the shell should be encapsulated in " +"quotes. Doing otherwise is a security risk." msgstr "" -#: src/song_change/song_change.c:448 +#: src/song_change/song_change.c:499 msgid "Commands" msgstr "Parancsok" -#: src/song_change/song_change.c:484 +#: src/song_change/song_change.c:529 msgid "Song Change" msgstr "Szám váltás" -#: src/spectrum/spectrum.c:89 -msgid "Spectrum Analyzer" -msgstr "Spektrum ábrázolása" - -#: src/statusicon/statusicon.c:355 +#: src/statusicon/statusicon.c:379 msgid "About Status Icon Plugin" msgstr "Státusz ikon bÅ‘vítmény névjegye" -#: src/statusicon/statusicon.c:356 +#: src/statusicon/statusicon.c:380 msgid "" "Status Icon Plugin\n" "\n" @@ -4983,35 +3317,51 @@ "Ez a bÅ‘vítmény státusz ikont helyez el az\n" "ablakkezelÅ‘ rendszer tálca területén.\n" -#: src/statusicon/statusicon.c:418 +#: src/statusicon/statusicon.c:451 msgid "Status Icon Plugin - Preferences" msgstr "Státusz ikon bÅ‘vítmény - beállítások" -#: src/statusicon/statusicon.c:428 +#: src/statusicon/statusicon.c:461 msgid "Right-Click Menu" msgstr "Jobb-Egér menű" -#: src/statusicon/statusicon.c:433 +#: src/statusicon/statusicon.c:466 msgid "Small playback menu #1" msgstr "Kicsi lejátszó menü #1" -#: src/statusicon/statusicon.c:436 +#: src/statusicon/statusicon.c:469 msgid "Small playback menu #2" msgstr "Kicsi lejátszó menü #2" -#: src/statusicon/statusicon.c:452 +#: src/statusicon/statusicon.c:485 msgid "Mouse Scroll Action" msgstr "EgérgörgÅ‘ működés" -#: src/statusicon/statusicon.c:456 +#: src/statusicon/statusicon.c:489 msgid "Change volume" msgstr "HangerÅ‘ váltás" -#: src/statusicon/statusicon.c:458 +#: src/statusicon/statusicon.c:491 msgid "Change playing song" msgstr "Váltja a lejátszott dalt" -#: src/stereo_plugin/stereo.c:40 +#: src/statusicon/statusicon.c:504 +msgid "Other settings" +msgstr "Egyéb beállítások" + +#: src/statusicon/statusicon.c:509 +msgid "Disable the popup window" +msgstr "Felugró ablakok tiltása" + +#: src/statusicon/statusicon.c:516 +msgid "Close to the notification area (system tray)" +msgstr "Bezáráskor az értesítési területen marad (a tálcán)" + +#: src/statusicon/statusicon.c:524 +msgid "Advance in playlist when scrolling upward" +msgstr "" + +#: src/stereo_plugin/stereo.c:45 msgid "" "Extra Stereo Plugin\n" "\n" @@ -5025,94 +3375,15 @@ msgid "About Extra Stereo Plugin" msgstr "Extra sztereó bÅ‘vítmény névjegye" -#: src/stereo_plugin/stereo.c:100 +#: src/stereo_plugin/stereo.c:95 msgid "Configure Extra Stereo" msgstr "Extra sztereó beállítások" -#: src/streambrowser/gui/streambrowser_win.c:62 -msgid "Search:" -msgstr "Keresés:" - -#: src/streambrowser/gui/streambrowser_win.c:81 -#: src/streambrowser/gui/streambrowser_win.c:370 -msgid "Add Bookmark" -msgstr "KönyvjelzÅ‘ hozzáadása" - -#: src/streambrowser/gui/streambrowser_win.c:95 -msgid "Stream browser" -msgstr "Folyam böngészÅ‘" - -#: src/streambrowser/gui/streambrowser_win.c:319 -msgid "Stream name" -msgstr "Folyam neve" - -#: src/streambrowser/gui/streambrowser_win.c:326 -msgid "Now playing" -msgstr "Éppen szól" - -#: src/streambrowser/gui/streambrowser_win.c:367 -msgid "Remove Bookmark" -msgstr "KönyvjelzÅ‘ eltávolítása" - -#: src/streambrowser/streambrowser.c:331 -msgid "About Stream Browser" -msgstr "Folyam böngészÅ‘ névjegye" - -#: src/streambrowser/streambrowser.c:332 -msgid "" -"Copyright (c) 2008, by Calin Crisan and The Audacious Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" -"\n" -"This was a Google Summer of Code 2008 project." -msgstr "" - -#: src/streambrowser/streambrowser.c:357 -#: src/streambrowser/streambrowser.c:367 -msgid "Streambrowser" -msgstr "Folyam böngészÅ‘" - -#: src/sun/about.c:30 -msgid "About the Sun Driver" -msgstr "Sun meghajtó névjegye" - -#: src/sun/about.c:31 -msgid "" -"XMMS BSD Sun Driver\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" -msgstr "" - -#: src/sun/configure.c:199 -msgid "Audio control device:" -msgstr "Hang szabályzó eszköz:" - -#: src/sun/configure.c:270 -msgid "Buffer size (ms):" -msgstr "Puffer méter (ms):" - -#: src/sun/configure.c:348 -msgid "Volume controls device:" -msgstr "HangerÅ‘szabályzó eszköz:" - -#: src/sun/configure.c:361 -msgid "XMMS uses mixer exclusively." -msgstr "XMMS kizárólagosan használja a keverÅ‘t." - -#: src/sun/configure.c:536 -msgid "Sun driver configuration" -msgstr "Sun meghajtó beállítások" - -#: src/tonegen/tonegen.c:53 +#: src/tonegen/tonegen.c:49 msgid "About Tone Generator" msgstr "Hang generátor névjegye" -#: src/tonegen/tonegen.c:55 +#: src/tonegen/tonegen.c:51 msgid "" "Sinus tone generator by Haavard Kvaalen \n" "Modified by Daniel J. Peng \n" @@ -5121,36 +3392,24 @@ "e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" msgstr "" -#: src/tonegen/tonegen.c:105 +#: src/tonegen/tonegen.c:101 #, c-format msgid "%s %.1f Hz" msgstr "%s %.1f Hz" -#: src/tonegen/tonegen.c:105 +#: src/tonegen/tonegen.c:101 msgid "Tone Generator: " msgstr "Hang generátor:" -#: src/vorbis/configure.c:31 -msgid "Override generic titles" -msgstr "általános címek felülírása" - -#: src/vorbis/configure.c:32 -msgid "Title format:" -msgstr "Cím formátum:" - -#: src/vorbis/configure.c:36 -msgid "Ogg Vorbis Tags" -msgstr "Ogg Vorbis címkék" - -#: src/vorbis/configure.c:68 -msgid "Ogg Vorbis Audio Plugin Configuration" -msgstr "Ogg Vorbis Audio bÅ‘vítmény beállítások" +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" +msgstr "" -#: src/vorbis/vorbis.c:549 +#: src/vorbis/vorbis.c:573 msgid "About Ogg Vorbis Audio Plugin" msgstr "Ogg Vorbis Audio bÅ‘vítmény névjegye" -#: src/vorbis/vorbis.c:554 +#: src/vorbis/vorbis.c:578 msgid "" "Ogg Vorbis Plugin by the Xiph.org Foundation\n" "\n" @@ -5184,12 +3443,12 @@ "Audacious implementation by Pavel Vymetalek " msgstr "" -#: src/wavpack/wavpack.c:371 +#: src/wavpack/wavpack.c:353 #, c-format msgid "Wavpack Decoder Plugin %s" msgstr "Wavpack dekóder bÅ‘vítmény %s" -#: src/wavpack/wavpack.c:372 +#: src/wavpack/wavpack.c:354 msgid "" "Copyright (c) 2006 William Pitcock \n" "\n" @@ -5201,38 +3460,4 @@ "Egyéb plugin kódokat írta Miles Egan\n" "Nézze meg a Wavpack honlapját: http://www.wavpack.com/\n" -#~ msgid "PREAMP" -#~ msgstr "PREAMP" - -#~ msgid "60HZ" -#~ msgstr "60HZ" - -#~ msgid "170HZ" -#~ msgstr "170HZ" - -#~ msgid "310HZ" -#~ msgstr "310HZ" - -#~ msgid "600HZ" -#~ msgstr "600HZ" - -#~ msgid "1KHZ" -#~ msgstr "1KHZ" - -#~ msgid "3KHZ" -#~ msgstr "3KHZ" - -#~ msgid "6KHZ" -#~ msgstr "6KHZ" - -#~ msgid "12KHZ" -#~ msgstr "12KHZ" - -#~ msgid "14KHZ" -#~ msgstr "14KHZ" - -#~ msgid "16KHZ" -#~ msgstr "16KHZ" -#~ msgid "Audacious standard menu" -#~ msgstr "Audacious általános menü" diff -Nru audacious-plugins-2.4.4/po/it.po audacious-plugins-3.2/po/it.po --- audacious-plugins-2.4.4/po/it.po 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/po/it.po 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,3663 @@ +# Italian translation for Audacious Plugins +# Copyright (C) Audacious translators +# This file is distributed under the same license as the Audacious Plugins package. +# +# Translators: +# Jacopo Lorenzetti , 2011, 2012. +msgid "" +msgstr "" +"Project-Id-Version: Audacious Plugins\n" +"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2012-01-11 09:01-0500\n" +"PO-Revision-Date: 2012-01-11 18:56+0000\n" +"Last-Translator: Jacopo Lorenzetti \n" +"Language-Team: Italian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: src/aac/libmp4.c:256 +#, c-format +msgid "" +"Using libfaad2-%s for decoding.\n" +"FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com\n" +"Copyright (c) 2005-2006 Audacious team" +msgstr "" +"Per la decodifica è utilizzato libfaad2-%s.\n" +"FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com\n" +"Copyright (c) 2005-2006 Audacious team" + +#: src/aac/libmp4.c:261 +msgid "About MP4 AAC decoder plugin" +msgstr "Informazioni sul plugin di decodifica AAC MP4" + +#: src/alarm/alarm.c:312 +msgid "About Alarm" +msgstr "Informazioni su Sveglia" + +#: src/alarm/alarm.c:313 +msgid "" +"A plugin that can be used to start playing at a certain time.\n" +"\n" +"Originally written by Adam Feakin and Daniel Stodden." +msgstr "" +"Un plugin che può essere utilizzato per avviare la riproduzione a un'orario prestabilito.\n" +"\n" +"Originariamente scritto da Adam Feakin e Daniel Stodden." + +#: src/alarm/interface.c:33 +msgid "Alarm" +msgstr "Sveglia" + +#: src/alarm/interface.c:40 +msgid "This is your wakeup call." +msgstr "Questa è la tua sveglia." + +#: src/alarm/interface.c:55 src/alarm/interface.c:1213 +msgid "OK" +msgstr "OK" + +#: src/alarm/interface.c:214 +msgid "Alarm Settings" +msgstr "Impostazioni sveglia" + +#: src/alarm/interface.c:229 src/alarm/interface.c:401 +#: src/alarm/interface.c:773 +msgid "Time" +msgstr "Ora" + +#: src/alarm/interface.c:270 +msgid "hours" +msgstr "ore" + +#: src/alarm/interface.c:331 +msgid "h" +msgstr "h" + +#: src/alarm/interface.c:361 +msgid "minutes" +msgstr "minuti" + +#: src/alarm/interface.c:379 +msgid "Quiet after:" +msgstr "Ferma dopo:" + +#: src/alarm/interface.c:389 +msgid "Alarm at (default):" +msgstr "Sveglia alle (predefinita):" + +#: src/alarm/interface.c:409 +msgid "Choose the days for the alarm to come on" +msgstr "Scegliere i giorni in cui attivare la sveglia" + +#: src/alarm/interface.c:437 src/alarm/interface.c:485 +#: src/alarm/interface.c:533 src/alarm/interface.c:581 +#: src/alarm/interface.c:629 src/alarm/interface.c:677 +#: src/alarm/interface.c:725 src/bs2b/plugin.c:198 src/OSS/configure.c:153 +#: src/skins/ui_equalizer.c:1104 src/skins/ui_manager.c:447 +#: src/skins/ui_manager.c:468 +msgid "Default" +msgstr "Predefinita" + +#: src/alarm/interface.c:763 +msgid "Day" +msgstr "Giorno" + +#: src/alarm/interface.c:783 +msgid "Tuesday" +msgstr "Martedì" + +#: src/alarm/interface.c:794 +msgid "Wednesday" +msgstr "Mercoledì" + +#: src/alarm/interface.c:805 +msgid "Thursday" +msgstr "Giovedì" + +#: src/alarm/interface.c:816 +msgid "Friday" +msgstr "Venerdì" + +#: src/alarm/interface.c:827 +msgid "Saturday" +msgstr "Sabato" + +#: src/alarm/interface.c:838 +msgid "Sunday" +msgstr "Domenica" + +#: src/alarm/interface.c:848 +msgid "Monday" +msgstr "Lunedì" + +#: src/alarm/interface.c:859 +msgid "Days" +msgstr "Giorni" + +#: src/alarm/interface.c:875 +msgid "Fading" +msgstr "Dissolvenza" + +#: src/alarm/interface.c:912 +msgid "seconds" +msgstr "secondi" + +#: src/alarm/interface.c:920 src/alarm/interface.c:1035 +msgid "Volume" +msgstr "Volume" + +#: src/alarm/interface.c:946 +msgid "Current" +msgstr "Attuale" + +#: src/alarm/interface.c:954 +msgid "Start at" +msgstr "Inizia a" + +#: src/alarm/interface.c:982 src/alarm/interface.c:1026 +msgid "%" +msgstr "%" + +#: src/alarm/interface.c:998 +msgid "Final" +msgstr "Finale" + +#: src/alarm/interface.c:1051 +msgid "Additional Command" +msgstr "Comando aggiuntivo" + +#: src/alarm/interface.c:1077 +msgid "enable" +msgstr "abilita" + +#: src/alarm/interface.c:1085 +msgid "Playlist (optional)" +msgstr "Playlist (opzionale)" + +#: src/alarm/interface.c:1111 +msgid "Browse..." +msgstr "Sfoglia…" + +#: src/alarm/interface.c:1119 src/alarm/interface.c:1283 +msgid "Reminder" +msgstr "Promemoria" + +#: src/alarm/interface.c:1136 +msgid "Use reminder" +msgstr "Usa promemoria" + +#: src/alarm/interface.c:1152 src/sndstretch/sndstretch_xmms.c:358 +msgid "Options" +msgstr "Opzioni" + +#: src/alarm/interface.c:1160 +msgid "What do these options mean?" +msgstr "Cosa significano queste opzioni?" + +#: src/alarm/interface.c:1188 +msgid "" +"\n" +"Time\n" +" Alarm at: \n" +" The time for the alarm to come on.\n" +"\n" +" Quiet After: \n" +" Stop alarm after this amount of time.\n" +" (if the wakeup dialog is not closed)\n" +"\n" +"\n" +"Days\n" +" Day:\n" +" Select the days for the alarm to activate.\n" +"\n" +" Time:\n" +" Choose the time for the alarm on each day,\n" +" or select the toggle button to use the default\n" +" time.\n" +"\n" +"\n" +"Volume\n" +" Fading: \n" +" Fade the volume up to the chosen volume \n" +" for this amount of time.\n" +"\n" +" Start at: \n" +" Start fading from this volume.\n" +"\n" +" Final: \n" +" The volume to stop fading at. If the fading\n" +" time is 0 then set volume to this and start\n" +" playing.\n" +"\n" +"\n" +"Options:\n" +" Additional Command:\n" +" Run this command at the alarm time.\n" +"\n" +" Playlist: \n" +" Load this playlist for playing songs from \n" +" (must have .m3u extension). If no playlist\n" +" is given then the songs which are currently\n" +" in the list will be used.\n" +" The URL of an mp3/ogg stream can also be\n" +" entered here, but loading of playlists from\n" +" URLs is not currently supported by xmms.\n" +"\n" +" Reminder:\n" +" Display a reminder when the alarm goes off,\n" +" type the reminder in the box and turn on the\n" +" toggle button if you want it to be shown.\n" +msgstr "" +"\n" +"Ora\n" +" Sveglia alle: \n" +" L'ora in cui si attiva la sveglia.\n" +"\n" +" Ferma dopo: \n" +" Ferma la sveglia dopo l'intervallo di tempo\n" +" specificato.\n" +" (se la finestra della sveglia non viene chiusa)\n" +"\n" +"\n" +"Giorni\n" +" Giorno:\n" +" Seleziona i giorni in cui attivare la sveglia.\n" +"\n" +" Ora:\n" +" Scegli l'ora della sveglia per ogni giorno,\n" +" o seleziona la checkbox per utilizzare l'ora\n" +" predefinita.\n" +"\n" +"\n" +"Volume\n" +" Dissolvenza: \n" +" Alza gradualmente il volume fino al valore\n" +" scelto per il tempo selezionato.\n" +"\n" +" Inizia a: \n" +" Inizia la dissolvenza a partire dal volume\n" +" selezionato.\n" +"\n" +" Finale: \n" +" Il volume a cui smettere la dissolvenza. Se\n" +" il tempo della dissolvenza è 0 allora imposta\n" +" il volume a questo valore e avvia la\n" +" riproduzione.\n" +"\n" +"\n" +"Opzioni:\n" +" Comando aggiuntivo:\n" +" All'ora della sveglia esegui il comando\n" +" specificato.\n" +"\n" +" Playlist: \n" +" Carica questa playlist e riproduci i brani da qui\n" +" (deve avere estensione .m3u). Se non viene\n" +" selezionata alcuna playlist saranno usati i\n" +" brani che sono attualmente nella lista.\n" +" Può anche essere inserito l'URL di uno stream\n" +" mp3/ogg, ma il caricamento delle playlist da\n" +" URL al momento non è supportato da xmms.\n" +"\n" +" Promemoria:\n" +" visualizza un promemoria quando si spegne\n" +" la sveglia, se vuoi che venga mostrato digita il\n" +" promemoria nella casella e attiva la checkbox.\n" + +#: src/alarm/interface.c:1190 src/skins/ui_manager.c:382 +msgid "Help" +msgstr "Aiuto" + +#: src/alarm/interface.c:1222 src/cdaudio-ng/configure.c:249 +#: src/crystalizer/crystalizer.c:130 src/echo_plugin/gui.c:125 +#: src/jack/configure.c:148 src/null/null.c:108 src/stereo_plugin/stereo.c:125 +msgid "Cancel" +msgstr "Annulla" + +#: src/alarm/interface.c:1290 +msgid "Your reminder for today is.." +msgstr "Il tuo promemoria di oggi è…" + +#: src/alarm/interface.c:1315 +msgid "Thankyou" +msgstr "Grazie" + +#: src/alsa/config.c:210 +msgid "Default PCM device" +msgstr "Dispositivo PCM predefinito" + +#: src/alsa/config.c:235 +msgid "Default mixer device" +msgstr "Dispositivo mixer predefinito" + +#: src/alsa/config.c:438 +msgid "ALSA Output Plugin Preferences" +msgstr "Preferenze del plugin di uscita ALSA" + +#: src/alsa/config.c:445 +msgid "PCM device:" +msgstr "Dispositivo PCM:" + +#: src/alsa/config.c:447 src/OSS/configure.c:237 +msgid "Mixer device:" +msgstr "Dispositivo mixer:" + +#: src/alsa/config.c:449 +msgid "Mixer element:" +msgstr "Elemento mixer:" + +#: src/alsa/config.c:452 +msgid "Work around drain hangup" +msgstr "Aggira interruzione per esaurimento risorse" + +#: src/alsa/plugin.c:59 +msgid "About ALSA Output Plugin" +msgstr "Informazioni sul plugin di uscita ALSA" + +#: src/alsa/plugin.c:81 +msgid "ALSA error" +msgstr "Errore ALSA" + +#: src/amidi-plug/amidi-plug.c:326 +msgid "" +"You have not selected any sequencer ports for MIDI playback. You can do so " +"in the MIDI plugin preferences." +msgstr "" +"Non hai selezionato alcuna porta del sequencer per la riproduzione MIDI. " +"Puoi farlo nelle preferenze del plugin MIDI." + +#: src/amidi-plug/backend-alsa/b-alsa.c:35 +msgid "ALSA Backend " +msgstr "Backend ALSA " + +#: src/amidi-plug/backend-alsa/b-alsa.c:37 +msgid "" +"This backend sends MIDI events to a group of user-chosen ALSA sequencer ports. The ALSA sequencer interface is very versatile, it can provide ports for audio cards hardware synthesizers (i.e. emu10k1) but also for software synths, external devices, etc.\n" +"This backend does not produce audio, MIDI events are handled directly from devices/programs behind the ALSA ports; in example, MIDI events sent to the hardware synth will be directly played.\n" +"Backend written by Giacomo Lozito." +msgstr "" +"Questo backend invia eventi MIDI a un gruppo di porte del sequencer ALSA scelte dall'utente. L'interfaccia del sequencer ALSA è molto versatile, può fornire porte per sintetizzatori hardware delle schede audio (emu10k1) ma anche per sintetizzatori software, dispositivi esterni, ecc.\n" +"Questo backend non produce audio, gli eventi MIDI sono gestiti direttamente dai dispositivi/programmi dietro le porte ALSA; ad esempio, gli eventi MIDI inviati al sintetizzatore hardware saranno riprodotti direttamente.\n" +"Backend scritto da Giacomo Lozito." + +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 +msgid "FluidSynth Backend " +msgstr "Backend FluidSynth " + +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 +msgid "" +"This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" +"Backend written by Giacomo Lozito." +msgstr "" +"Questo backend produce audio inviando eventi MIDI a FluidSynth, un sintetizzatore software in tempo reale basato sulla specifica SoundFont2 (www.fluidsynth.org).\n" +"L'audio prodotto può essere manipolato tramite i plugin di effetto del lettore ed è elaborato dai plugin di uscita selezionati.\n" +"Backend scritto da Giacomo Lozito." + +#: src/amidi-plug/i_configure-alsa.c:228 +msgid "ALSA BACKEND CONFIGURATION" +msgstr "CONFIGURAZIONE DEL BACKEND ALSA" + +#: src/amidi-plug/i_configure-alsa.c:331 +msgid "Port" +msgstr "Porta" + +#: src/amidi-plug/i_configure-alsa.c:333 +msgid "Client name" +msgstr "Nome del client" + +#: src/amidi-plug/i_configure-alsa.c:335 +msgid "Port name" +msgstr "Nome della porta" + +#: src/amidi-plug/i_configure-alsa.c:346 +msgid "ALSA output ports" +msgstr "Porte di uscita ALSA" + +#: src/amidi-plug/i_configure-alsa.c:399 +msgid "Soundcard: " +msgstr "Scheda audio: " + +#: src/amidi-plug/i_configure-alsa.c:401 +msgid "Mixer control: " +msgstr "Controllo mixer: " + +#: src/amidi-plug/i_configure-alsa.c:413 +msgid "Mixer settings" +msgstr "Impostazioni mixer" + +#: src/amidi-plug/i_configure-alsa.c:429 +msgid "ALSA Backend not loaded or not available" +msgstr "Backend ALSA non caricato o non disponibile" + +#: src/amidi-plug/i_configure-alsa.c:448 +msgid "" +"ALSA\n" +"backend" +msgstr "Backend ALSA" + +#: src/amidi-plug/i_configure-ap.c:59 +msgid "AMIDI-Plug - backend information" +msgstr "AMIDI-Plug - informazioni backend" + +#: src/amidi-plug/i_configure-ap.c:196 +msgid "AMIDI-PLUG PREFERENCES" +msgstr "PREFERENZE AMIDI-PLUG" + +#: src/amidi-plug/i_configure-ap.c:223 +msgid "Backend selection" +msgstr "Selezione backend" + +#: src/amidi-plug/i_configure-ap.c:227 +msgid "Available backends" +msgstr "Backend disponibili" + +#: src/amidi-plug/i_configure-ap.c:257 +msgid "Playback settings" +msgstr "Impostazioni di riproduzione" + +#: src/amidi-plug/i_configure-ap.c:262 +msgid "Transpose: " +msgstr "Trasponi: " + +#: src/amidi-plug/i_configure-ap.c:271 +msgid "Drum shift: " +msgstr "Spostamento percussioni: " + +#: src/amidi-plug/i_configure-ap.c:289 +msgid "Advanced settings" +msgstr "Impostazioni avanzate" + +#: src/amidi-plug/i_configure-ap.c:293 +msgid "pre-calculate length of MIDI files in playlist" +msgstr "precalcola durata dei file MIDI nella playlist" + +#: src/amidi-plug/i_configure-ap.c:298 +msgid "extract comments from MIDI file (if available)" +msgstr "estrai commenti dal file MIDI (se disponibili)" + +#: src/amidi-plug/i_configure-ap.c:303 +msgid "extract lyrics from MIDI file (if available)" +msgstr "estrai testi dal file MIDI (se disponibili)" + +#: src/amidi-plug/i_configure-ap.c:333 +msgid "" +"AMIDI\n" +"Plug" +msgstr "" +"AMIDI\n" +"Plug" + +#: src/amidi-plug/i_configure.c:76 +msgid "AMIDI-Plug - select file" +msgstr "AMIDI-Plug - seleziona file" + +#: src/amidi-plug/i_configure.c:129 +msgid "AMIDI-Plug - configuration" +msgstr "AMIDI-Plug - configurazione" + +#: src/amidi-plug/i_configure-fluidsynth.c:55 +msgid "AMIDI-Plug - select SoundFont file" +msgstr "AMIDI-Plug - seleziona file SoundFont" + +#: src/amidi-plug/i_configure-fluidsynth.c:270 +msgid "FLUIDSYNTH BACKEND CONFIGURATION" +msgstr "CONFIGURAZIONE DEL BACKEND FLUIDSYNTH" + +#: src/amidi-plug/i_configure-fluidsynth.c:313 +msgid "SoundFont settings" +msgstr "Impostazioni SoundFont" + +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Nome del file" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 +msgid "Size (bytes)" +msgstr "Dimensioni (byte)" + +#: src/amidi-plug/i_configure-fluidsynth.c:398 +msgid "Load SF on player start" +msgstr "Carica SF all'avvio del lettore" + +#: src/amidi-plug/i_configure-fluidsynth.c:402 +msgid "Load SF on first midifile play" +msgstr "Carica SF alla prima riproduzione di file midi" + +#: src/amidi-plug/i_configure-fluidsynth.c:417 +msgid "Synthesizer settings" +msgstr "Impostazioni sintetizzatore" + +#: src/amidi-plug/i_configure-fluidsynth.c:426 +msgid "gain" +msgstr "guadagno" + +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 +msgid "use default" +msgstr "usa predefinito" + +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 +msgid "value:" +msgstr "valore:" + +#: src/amidi-plug/i_configure-fluidsynth.c:454 +msgid "poliphony" +msgstr "polifonia" + +#: src/amidi-plug/i_configure-fluidsynth.c:482 +msgid "reverb" +msgstr "riverbero" + +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 +msgid "yes" +msgstr "sì" + +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 +msgid "no" +msgstr "no" + +#: src/amidi-plug/i_configure-fluidsynth.c:513 +msgid "chorus" +msgstr "chorus" + +#: src/amidi-plug/i_configure-fluidsynth.c:544 +msgid "sample rate" +msgstr "frequenza di campionamento" + +#: src/amidi-plug/i_configure-fluidsynth.c:550 +msgid "22050 Hz " +msgstr "22050 Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:553 +msgid "44100 Hz " +msgstr "44100 Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:556 +msgid "96000 Hz " +msgstr "96000 Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:559 +msgid "custom " +msgstr "personalizzata " + +#: src/amidi-plug/i_configure-fluidsynth.c:568 +msgid "Hz " +msgstr "Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:621 +msgid "FluidSynth Backend not loaded or not available" +msgstr "Backend FluidSynth non caricato o non disponibile" + +#: src/amidi-plug/i_configure-fluidsynth.c:640 +msgid "" +"FluidSynth\n" +"backend" +msgstr "Backend FluidSynth" + +#: src/amidi-plug/i_configure-timidity.c:39 +msgid "TIMIDITY BACKEND CONFIGURATION" +msgstr "CONFIGURAZIONE DEL BACKEND TIMIDITY" + +#: src/amidi-plug/i_configure-timidity.c:64 +msgid "TiMidity Backend not loaded or not available" +msgstr "Backend TiMidity non caricato o non disponibile" + +#: src/amidi-plug/i_configure-timidity.c:83 +msgid "" +"TiMidity\n" +"backend" +msgstr "Backend TiMidity" + +#: src/amidi-plug/i_fileinfo.c:169 +msgid "Name:" +msgstr "Nome:" + +#: src/amidi-plug/i_fileinfo.c:193 +msgid " MIDI Info " +msgstr " Informazioni MIDI " + +#: src/amidi-plug/i_fileinfo.c:205 +msgid "Format:" +msgstr "Formato:" + +#: src/amidi-plug/i_fileinfo.c:208 +msgid "Length (msec):" +msgstr "Durata (msec):" + +#: src/amidi-plug/i_fileinfo.c:211 +msgid "Num of Tracks:" +msgstr "Num di tracce:" + +#: src/amidi-plug/i_fileinfo.c:216 +msgid "variable" +msgstr "variabile" + +#: src/amidi-plug/i_fileinfo.c:217 +msgid "BPM:" +msgstr "BPM:" + +#: src/amidi-plug/i_fileinfo.c:223 +msgid "BPM (wavg):" +msgstr "BPM (wavg):" + +#: src/amidi-plug/i_fileinfo.c:226 +msgid "Time Div:" +msgstr "Suddivisione temporale:" + +#: src/amidi-plug/i_fileinfo.c:237 +msgid " MIDI Comments and Lyrics " +msgstr " Commenti e testi MIDI " + +#: src/amidi-plug/i_fileinfo.c:288 +msgid "* no comments available in this MIDI file *" +msgstr "* nessun commento disponibile in questo file MIDI *" + +#: src/amidi-plug/i_fileinfo.c:301 +msgid "* no lyrics available in this MIDI file *" +msgstr "* nessun testo disponibile in questo file MIDI *" + +#: src/amidi-plug/i_fileinfo.c:349 +msgid " (invalid UTF-8)" +msgstr " (UTF-8 non valido)" + +#: src/amidi-plug/i_utils.c:43 +msgid "AMIDI-Plug - about" +msgstr "AMIDI-Plug - informazioni su" + +#: src/amidi-plug/i_utils.c:68 +msgid "" +"\n" +"AMIDI-Plug " +msgstr "" +"\n" +"AMIDI-Plug " + +#: src/amidi-plug/i_utils.c:69 +msgid "" +"\n" +"modular MIDI music player\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"\n" +"special thanks to...\n" +"\n" +"Clemens Ladisch and Jaroslav Kysela\n" +"for their cool programs aplaymidi and amixer; those\n" +"were really useful, along with alsa-lib docs, in order\n" +"to learn more about the ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"for the nice midi keyboard logo\n" +"\n" +"Tony Vroon\n" +"for the good help with alpha testing\n" +"\n" +msgstr "" +"\n" +"lettore musicale MIDI modulare\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"scritto da Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"\n" +"un ringraziamento speciale a…\n" +"\n" +"Clemens Ladisch e Jaroslav Kysela\n" +"per i loro favolosi programmi aplaymidi e amixer; sono\n" +"stati davvero utili, insieme alla documentazione di alsa-lib,\n" +"per saperne di più sulle API di ALSA\n" +"\n" +"Alfredo Spadafina\n" +"per il bel logo della tastiera midi\n" +"\n" +"Tony Vroon\n" +"per il valido aiuto con il collaudo alpha\n" +"\n" + +#: src/aosd/aosd_style.c:75 +msgid "Rectangle" +msgstr "Rettangolo" + +#: src/aosd/aosd_style.c:79 +msgid "Rounded Rectangle" +msgstr "Rettangolo arrotondato" + +#: src/aosd/aosd_style.c:83 +msgid "Concave Rectangle" +msgstr "Rettangolo concavo" + +#: src/aosd/aosd_style.c:87 +msgid "None" +msgstr "Nessuno" + +#: src/aosd/aosd_trigger.c:78 +msgid "Playback Start" +msgstr "Avvio della riproduzione" + +#: src/aosd/aosd_trigger.c:79 +msgid "Triggers OSD when a playlist entry is played." +msgstr "Visualizza l'OSD quando viene riprodotto un elemento della playlist." + +#: src/aosd/aosd_trigger.c:83 +msgid "Title Change" +msgstr "Cambio titolo" + +#: src/aosd/aosd_trigger.c:84 +msgid "" +"Triggers OSD when, during playback, the song title changes but the filename " +"is the same. This is mostly useful to display title changes in internet " +"streams." +msgstr "" +"Visualizza l'OSD quando, durante la riproduzione, il titolo del brano cambia" +" ma il nome del file è lo stesso. È utile principalmente per visualizzare i " +"cambi di titolo negli stream su internet." + +#: src/aosd/aosd_trigger.c:90 +msgid "Volume Change" +msgstr "Cambio volume" + +#: src/aosd/aosd_trigger.c:91 +msgid "Triggers OSD when volume is changed." +msgstr "Visualizza l'OSD quando viene cambiato il volume." + +#: src/aosd/aosd_trigger.c:95 +msgid "Pause On" +msgstr "Attivazione pausa" + +#: src/aosd/aosd_trigger.c:96 +msgid "Triggers OSD when playback is paused." +msgstr "Visualizza l'OSD quando viene interrotta la riproduzione." + +#: src/aosd/aosd_trigger.c:100 +msgid "Pause Off" +msgstr "Disattivazione pausa" + +#: src/aosd/aosd_trigger.c:101 +msgid "Triggers OSD when playback is unpaused." +msgstr "Visualizza l'OSD quando viene ripresa la riproduzione." + +#: src/aosd/aosd_ui.c:179 +msgid "Placement" +msgstr "Posizionamento" + +#: src/aosd/aosd_ui.c:218 +msgid "Relative X offset:" +msgstr "Offset X relativo:" + +#: src/aosd/aosd_ui.c:227 +msgid "Relative Y offset:" +msgstr "Offset Y relativo:" + +#: src/aosd/aosd_ui.c:236 +msgid "Max OSD width:" +msgstr "Larghezza massima OSD:" + +#: src/aosd/aosd_ui.c:249 +msgid "Multi-Monitor options" +msgstr "Opzioni multi-monitor" + +#: src/aosd/aosd_ui.c:253 +msgid "Display OSD using:" +msgstr "Visualizza OSD su:" + +#: src/aosd/aosd_ui.c:264 +msgid "all monitors" +msgstr "tutti i monitor" + +#: src/aosd/aosd_ui.c:267 +#, c-format +msgid "monitor %i" +msgstr "monitor %i" + +#: src/aosd/aosd_ui.c:322 +msgid "Timing (ms)" +msgstr "Temporizzazione (ms)" + +#: src/aosd/aosd_ui.c:327 +msgid "Display:" +msgstr "Visualizza:" + +#: src/aosd/aosd_ui.c:332 +msgid "Fade in:" +msgstr "Dissolvi in ingresso:" + +#: src/aosd/aosd_ui.c:337 +msgid "Fade out:" +msgstr "Dissolvi in uscita:" + +#: src/aosd/aosd_ui.c:418 +msgid "Fonts" +msgstr "Caratteri" + +#: src/aosd/aosd_ui.c:426 +#, c-format +msgid "Font %i:" +msgstr "Carattere %i:" + +#: src/aosd/aosd_ui.c:443 +msgid "Shadow" +msgstr "Ombra" + +#: src/aosd/aosd_ui.c:478 +msgid "Internationalization" +msgstr "Internazionalizzazione" + +#: src/aosd/aosd_ui.c:484 +msgid "Disable UTF-8 conversion of text (in aosd)" +msgstr "Disabilita conversione UTF-8 del testo (in aosd)" + +#: src/aosd/aosd_ui.c:502 +msgid "Select Skin File" +msgstr "Seleziona file della skin" + +#: src/aosd/aosd_ui.c:613 +msgid "Render Style" +msgstr "Stile di resa grafica" + +#: src/aosd/aosd_ui.c:629 +msgid "Colors" +msgstr "Colori" + +#: src/aosd/aosd_ui.c:642 +#, c-format +msgid "Color %i:" +msgstr "Colore %i:" + +#: src/aosd/aosd_ui.c:662 +msgid "Custom Skin" +msgstr "Skin personalizzata" + +#: src/aosd/aosd_ui.c:668 +msgid "Skin file:" +msgstr "File della skin:" + +#: src/aosd/aosd_ui.c:671 +msgid "Browse" +msgstr "Sfoglia" + +#: src/aosd/aosd_ui.c:773 +msgid "Enable trigger" +msgstr "Abilita visualizzazione in seguito all'evento" + +#: src/aosd/aosd_ui.c:800 +msgid "Event" +msgstr "Evento" + +#: src/aosd/aosd_ui.c:828 +msgid "Composite manager detected" +msgstr "Rilevato compositing manager" + +#: src/aosd/aosd_ui.c:835 +msgid "" +"Composite manager not detected;\n" +"unless you know that you have one running, please activate a composite manager otherwise the OSD won't work properly" +msgstr "" +"Compositing manager non rilevato;\n" +"a meno che tu non sappia di averne uno in esecuzione, per favore attiva un compositing manager altrimenti l'OSD non funzionerà correttamente" + +#: src/aosd/aosd_ui.c:843 +msgid "Composite manager not required for fake transparency" +msgstr "Compositing manager non richiesto per la falsa trasparenza" + +#: src/aosd/aosd_ui.c:881 +msgid "Transparency" +msgstr "Trasparenza" + +#: src/aosd/aosd_ui.c:887 +msgid "Fake transparency" +msgstr "Falsa trasparenza" + +#: src/aosd/aosd_ui.c:889 +msgid "Real transparency (requires X Composite Ext.)" +msgstr "Trasparenza reale (richiede est. Composite di X)" + +#: src/aosd/aosd_ui.c:931 +msgid "Composite extension not loaded" +msgstr "Estensione Composite non caricata" + +#: src/aosd/aosd_ui.c:939 +msgid "Composite extension not available" +msgstr "Estensione Composite non disponibile" + +#: src/aosd/aosd_ui.c:958 +#, c-format +msgid "Audacious OSD" +msgstr "Audacious OSD" + +#: src/aosd/aosd_ui.c:1039 +msgid "Audacious OSD - configuration" +msgstr "Audacious OSD - configurazione" + +#: src/aosd/aosd_ui.c:1060 +msgid "Test" +msgstr "Prova" + +#: src/aosd/aosd_ui.c:1075 +msgid "Position" +msgstr "Posizione" + +#: src/aosd/aosd_ui.c:1080 +msgid "Animation" +msgstr "Animazione" + +#: src/aosd/aosd_ui.c:1085 +msgid "Text" +msgstr "Testo" + +#: src/aosd/aosd_ui.c:1090 +msgid "Decoration" +msgstr "Decorazione" + +#: src/aosd/aosd_ui.c:1095 +msgid "Trigger" +msgstr "Eventi" + +#: src/aosd/aosd_ui.c:1100 src/cdaudio-ng/configure.c:171 +msgid "Misc" +msgstr "Varie" + +#: src/aosd/aosd_ui.c:1137 +msgid "Audacious OSD - about" +msgstr "Audacious OSD - informazioni su" + +#: src/aosd/aosd_ui.c:1167 +msgid "" +"\n" +"Audacious OSD " +msgstr "" +"\n" +"Audacious OSD " + +#: src/aosd/aosd_ui.c:1168 +msgid "" +"\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"On-Screen-Display is based on Ghosd library\n" +"written by Evan Martin\n" +"http://neugierig.org/software/ghosd/\n" +"\n" +msgstr "" +"\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"scritto da Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"On-Screen-Display è basato sulla libreria Ghosd\n" +"scritta da Evan Martin\n" +"http://neugierig.org/software/ghosd/\n" +"\n" + +#: src/blur_scope/config.c:73 +msgid "Blur Scope: Color selection" +msgstr "Blur Scope: Selezione colore" + +#: src/blur_scope/config.c:83 src/jack/configure.c:106 +msgid "Options:" +msgstr "Opzioni:" + +#: src/bs2b/plugin.c:157 +msgid "Bauer stereophonic-to-binaural Preferences" +msgstr "Preferenze Stereofonico-a-binaurale Bauer" + +#: src/bs2b/plugin.c:168 +msgid "Feed level:" +msgstr "Livello di alimentazione:" + +#: src/bs2b/plugin.c:182 +msgid "Cut frequency:" +msgstr "Frequenza di taglio:" + +#: src/bs2b/plugin.c:196 +msgid "Presets:" +msgstr "Preimpostazioni:" + +#: src/cdaudio-ng/cdaudio-ng.c:242 +msgid "About Audio CD Plugin" +msgstr "Informazioni sul plugin CD Audio" + +#: src/cdaudio-ng/cdaudio-ng.c:243 +msgid "" +"Copyright (c) 2007, by Calin Crisan and The Audacious Team.\n" +"\n" +"Many thanks to libcdio developers \n" +"\tand to libcddb developers .\n" +"\n" +"Also thank you Tony Vroon for mentoring & guiding me.\n" +"\n" +"This was a Google Summer of Code 2007 project.\n" +"\n" +"Copyright 2009 John Lindgren" +msgstr "" +"Copyright (c) 2007, di Calin Crisan e del team Audacious.\n" +"\n" +"Molte grazie agli sviluppatori di libcdio \n" +"»e agli sviluppatori di libcddb .\n" +"\n" +"Grazie anche a Tony Vroon per avermi guidato e consigliato.\n" +"\n" +"Questo è stato un progetto Google Summer of Code 2007.\n" +"\n" +"Copyright 2009 John Lindgren" + +#: src/cdaudio-ng/cdaudio-ng.c:552 +msgid "Audio CD" +msgstr "CD Audio" + +#: src/cdaudio-ng/cdaudio-ng.c:924 +msgid "Drive is empty." +msgstr "Il drive è vuoto." + +#: src/cdaudio-ng/cdaudio-ng.c:926 +msgid "Unsupported disk type." +msgstr "Tipo di disco non supportato." + +#: src/cdaudio-ng/configure.c:148 +msgid "CD Audio Plugin Configuration" +msgstr "Configurazione del plugin Audio CD" + +#: src/cdaudio-ng/configure.c:160 +msgid "Digital audio extraction" +msgstr "Estrazione audio digitale" + +#: src/cdaudio-ng/configure.c:165 +msgid "Title information" +msgstr "Informazioni titoli" + +#: src/cdaudio-ng/configure.c:176 +msgid "Disc speed:" +msgstr "Velocità disco:" + +#: src/cdaudio-ng/configure.c:184 +msgid "Use cd-text if available" +msgstr "Usa cd-text se disponibile" + +#: src/cdaudio-ng/configure.c:191 +msgid "Use CDDB if available" +msgstr "Usa CDDB se disponibile" + +#: src/cdaudio-ng/configure.c:197 +msgid "Server: " +msgstr "Server: " + +#: src/cdaudio-ng/configure.c:201 +msgid "Path: " +msgstr "Percorso: " + +#: src/cdaudio-ng/configure.c:205 +msgid "Port: " +msgstr "Porta: " + +#: src/cdaudio-ng/configure.c:218 +msgid "Use HTTP instead of CDDBP" +msgstr "Usa HTTP invece di CDDBP" + +#: src/cdaudio-ng/configure.c:230 +msgid "Override default device: " +msgstr "Ignora dispositivo predefinito: " + +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:123 +#: src/echo_plugin/gui.c:118 src/jack/configure.c:141 src/null/null.c:107 +#: src/stereo_plugin/stereo.c:118 +msgid "Ok" +msgstr "Ok" + +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Play CD" +msgstr "Riproduci CD" + +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Add CD" +msgstr "Aggiungi CD" + +#: src/compressor/plugin.c:63 +msgid "About Dynamic Range Compression Plugin" +msgstr "Informazioni sul plugin Compressione gamma dinamica" + +#: src/compressor/plugin.c:95 +msgid "Dynamic Range Compressor Preferences" +msgstr "Preferenze Compressore gamma dinamica" + +#: src/compressor/plugin.c:107 +msgid "Center volume:" +msgstr "Volume centrale:" + +#: src/compressor/plugin.c:120 +msgid "Dynamic range:" +msgstr "Gamma dinamica:" + +#: src/console/configure.c:136 +msgid "Game Console Music Decoder" +msgstr "Decodificatore musica console giochi" + +#: src/console/configure.c:153 +msgid "General" +msgstr "Generale" + +#: src/console/configure.c:155 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "Riproduzione" + +#: src/console/configure.c:170 +msgid "Bass:" +msgstr "Bassi:" + +#: src/console/configure.c:174 src/console/configure.c:185 +#: src/console/configure.c:206 +msgid "secs" +msgstr "sec" + +#: src/console/configure.c:181 +msgid "Treble:" +msgstr "Alti:" + +#: src/console/configure.c:202 +msgid "Default song length:" +msgstr "Durata brano predefinita:" + +#: src/console/configure.c:208 +msgid "Resampling" +msgstr "Ricampionamento" + +#: src/console/configure.c:214 +msgid "Enable audio resampling" +msgstr "Abilita ricampionamento audio" + +#: src/console/configure.c:229 +msgid "Resampling rate:" +msgstr "Frequenza di ricampionamento:" + +#: src/console/configure.c:233 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:244 +msgid "SPC" +msgstr "SPC" + +#: src/console/configure.c:245 +msgid "Ignore length from SPC tags" +msgstr "Ignora durata specificata nei tag SPC" + +#: src/console/configure.c:246 +msgid "Increase reverb" +msgstr "Aumenta riverbero" + +#: src/console/configure.c:271 +msgid "" +"The default song length, expressed in seconds, is used for songs that do not" +" provide length information (i.e. looping tracks)." +msgstr "" +"La durata brano predefinita, espressa in secondi, è utilizzata per i brani " +"che non forniscono informazioni sulla durata (tracce che si ripetono " +"ciclicamente)" + +#: src/console/plugin.c:33 +msgid "About the Game Console Music Decoder" +msgstr "Informazioni sul Decodificatore musica console giochi" + +#: src/console/plugin.c:34 +msgid "" +"Console music decoder engine based on Game_Music_Emu 0.5.2.\n" +"Supported formats: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Audacious implementation by: William Pitcock , \n" +" Shay Green \n" +msgstr "" +"Motore del decodificatore musica console basato su Game_Music_Emu 0.5.2.\n" +"Formati supportati: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Implementazione Audacious di: William Pitcock , \n" +" Shay Green \n" + +#: src/crossfade/plugin.c:60 +msgid "About Crossfade" +msgstr "Informazioni su Dissolvenza incrociata" + +#: src/crossfade/plugin.c:92 +msgid "Crossfade Preferences" +msgstr "Preferenze Dissolvenza incrociata" + +#: src/crossfade/plugin.c:104 +msgid "Overlap (in seconds):" +msgstr "Sovrapposizione (in secondi):" + +#: src/crossfade/plugin.c:135 src/crossfade/plugin.c:141 +msgid "Crossfade Error" +msgstr "Errore Dissolvenza incrociata" + +#: src/crossfade/plugin.c:135 +msgid "" +"Crossfading failed because the songs had a different number of channels." +msgstr "" +"La dissolvenza incrociata è fallita poiché i brani avevano un numero di " +"canali differente." + +#: src/crossfade/plugin.c:143 +msgid "" +"Crossfading failed because the songs had different sample rates.\n" +"\n" +"You can use the Sample Rate Converter effect to resample the songs to the same rate." +msgstr "" +"La dissolvenza incrociata è fallita poiché i brani avevano una differente frequenza di campionamento.\n" +"\n" +"Puoi usare l'effetto Convertitore frequenza di campionamento per ricampionare i brani alla stessa frequenza." + +#: src/crystalizer/crystalizer.c:100 +msgid "Configure Crystalizer" +msgstr "Configura Crystalizer" + +#: src/crystalizer/crystalizer.c:102 src/stereo_plugin/stereo.c:97 +msgid "Effect intensity:" +msgstr "Intensità dell'effetto:" + +#: src/crystalizer/crystalizer.c:136 src/echo_plugin/gui.c:131 +#: src/stereo_plugin/stereo.c:131 +msgid "Apply" +msgstr "Applica" + +#: src/echo_plugin/gui.c:15 +msgid "" +"Echo Plugin\n" +"By Johan Levin 1999.\n" +"\n" +"Surround echo by Carl van Schaik 1999" +msgstr "" +"Plugin Eco\n" +"Di Johan Levin 1999.\n" +"\n" +"Eco surround di Carl van Schaik 1999" + +#: src/echo_plugin/gui.c:27 +msgid "About Echo Plugin" +msgstr "Informazioni sul plugin Eco" + +#: src/echo_plugin/gui.c:67 +msgid "Configure Echo" +msgstr "Configura Eco" + +#: src/echo_plugin/gui.c:83 +msgid "Delay: (ms)" +msgstr "Ritardo: (ms)" + +#: src/echo_plugin/gui.c:88 +msgid "Feedback: (%)" +msgstr "Ritorno: (%)" + +#: src/echo_plugin/gui.c:93 +msgid "Volume: (%)" +msgstr "Volume: (%)" + +#: src/ffaudio/ffaudio-core.c:725 +#, c-format +msgid "" +"Multi-format audio decoding plugin for Audacious based on\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious plugin by:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" +msgstr "" +"Plugin di decodifica audio multi-formato per Audacious basato\n" +"sul framework multimediale FFmpeg (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Plugin per Audacious di:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" + +#: src/ffaudio/ffaudio-core.c:739 +msgid "About FFaudio Plugin" +msgstr "Informazioni sul plugin FFaudio" + +#: src/filewriter/filewriter.c:166 +msgid "About FileWriter-Plugin" +msgstr "Informazioni sul plugin FileWriter" + +#: src/filewriter/filewriter.c:461 +msgid "File Writer Configuration" +msgstr "Configurazione File writer" + +#: src/filewriter/filewriter.c:473 +msgid "Output file format:" +msgstr "Formato del file in uscita:" + +#: src/filewriter/filewriter.c:491 +msgid "Configure" +msgstr "Configura" + +#: src/filewriter/filewriter.c:506 +msgid "Save into original directory" +msgstr "Salva nella directory originale" + +#: src/filewriter/filewriter.c:511 +msgid "Save into custom directory" +msgstr "Salva in directory personalizzata" + +#: src/filewriter/filewriter.c:521 +msgid "Output file folder:" +msgstr "Cartella del file in uscita:" + +#: src/filewriter/filewriter.c:525 +msgid "Pick a folder" +msgstr "Seleziona una cartella" + +#: src/filewriter/filewriter.c:544 +msgid "Get filename from:" +msgstr "Ottieni nome file da:" + +#: src/filewriter/filewriter.c:547 +msgid "original file tags" +msgstr "tag del file originale" + +#: src/filewriter/filewriter.c:553 +msgid "original filename" +msgstr "nome del file originale" + +#: src/filewriter/filewriter.c:563 +msgid "Don't strip file name extension" +msgstr "Non togliere estensione dal nome del file" + +#: src/filewriter/filewriter.c:578 +msgid "Prepend track number to filename" +msgstr "Anteponi numero di traccia al nome del file" + +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:765 +msgid "Auto" +msgstr "Auto" + +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" +msgstr "Joint stereo" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Stereo" +msgstr "Stereo" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Mono" +msgstr "Mono" + +#: src/filewriter/mp3.c:706 +msgid "MP3 Configuration" +msgstr "Configurazione MP3" + +#: src/filewriter/mp3.c:729 +msgid "Algorithm Quality:" +msgstr "Qualità dell'algoritmo:" + +#: src/filewriter/mp3.c:754 +msgid "Output Samplerate:" +msgstr "Frequenza di campionamento in uscita:" + +#: src/filewriter/mp3.c:782 +msgid "(Hz)" +msgstr "(Hz)" + +#: src/filewriter/mp3.c:789 +msgid "Bitrate / Compression ratio:" +msgstr "Bitrate / fattore di compressione:" + +#: src/filewriter/mp3.c:813 +msgid "Bitrate (kbps):" +msgstr "Bitrate (kbps):" + +#: src/filewriter/mp3.c:846 +msgid "Compression ratio:" +msgstr "Fattore di compressione:" + +#: src/filewriter/mp3.c:870 +msgid "Audio Mode:" +msgstr "Modalità audio:" + +#: src/filewriter/mp3.c:895 +msgid "Misc:" +msgstr "Varie:" + +#: src/filewriter/mp3.c:906 +msgid "Enforce strict ISO complience" +msgstr "Rispetta rigorosamente conformità ISO" + +#: src/filewriter/mp3.c:917 +msgid "Error protection" +msgstr "Protezione dagli errori" + +#: src/filewriter/mp3.c:929 src/filewriter/vorbis.c:247 +msgid "Quality" +msgstr "Qualità" + +#: src/filewriter/mp3.c:939 +msgid "Enable VBR/ABR" +msgstr "Abilita VBR/ABR" + +#: src/filewriter/mp3.c:949 +msgid "Type:" +msgstr "Tipo:" + +#: src/filewriter/mp3.c:982 +msgid "VBR Options:" +msgstr "Opzioni VBR:" + +#: src/filewriter/mp3.c:998 +msgid "Minimum bitrate (kbps):" +msgstr "Bitrate minima (kbps):" + +#: src/filewriter/mp3.c:1025 +msgid "Maximum bitrate (kbps):" +msgstr "Bitrate massima (kbps):" + +#: src/filewriter/mp3.c:1048 +msgid "Strictly enforce minimum bitrate" +msgstr "Rispetta rigorosamente bitrate minima" + +#: src/filewriter/mp3.c:1060 +msgid "ABR Options:" +msgstr "Opzioni ABR:" + +#: src/filewriter/mp3.c:1070 +msgid "Average bitrate (kbps):" +msgstr "Bitrate media (kbps):" + +#: src/filewriter/mp3.c:1098 +msgid "VBR quality level:" +msgstr "Livello di qualità VBR:" + +#: src/filewriter/mp3.c:1117 +msgid "Don't write Xing VBR header" +msgstr "Non scrivere intestazione VBR Xing" + +#: src/filewriter/mp3.c:1131 +msgid "VBR/ABR" +msgstr "VBR/ABR" + +#: src/filewriter/mp3.c:1141 +msgid "Frame params:" +msgstr "Parametri frame:" + +#: src/filewriter/mp3.c:1153 +msgid "Mark as copyright" +msgstr "Contrassegna come coperto da copyright" + +#: src/filewriter/mp3.c:1164 +msgid "Mark as original" +msgstr "Contrassegna come originale" + +#: src/filewriter/mp3.c:1176 +msgid "ID3 params:" +msgstr "Parametri ID3:" + +#: src/filewriter/mp3.c:1187 +msgid "Force addition of version 2 tag" +msgstr "Forza aggiunta del tag versione 2" + +#: src/filewriter/mp3.c:1197 +msgid "Only add v1 tag" +msgstr "Aggiungi solo tag v1" + +#: src/filewriter/mp3.c:1204 +msgid "Only add v2 tag" +msgstr "Aggiungi solo tag v2" + +#: src/filewriter/mp3.c:1225 +msgid "Tags" +msgstr "Tag" + +#: src/filewriter/vorbis.c:240 +msgid "Vorbis Encoder Configuration" +msgstr "Configurazione del codificatore Vorbis" + +#: src/filewriter/vorbis.c:260 +msgid "Quality level (0 - 10):" +msgstr "Livello di qualità (0 - 10):" + +#: src/flacng/plugin.c:380 +msgid "About FLAC Audio Plugin" +msgstr "Informazioni sul plugin Audio FLAC" + +#: src/flacng/plugin.c:381 +msgid "" +"\n" +"\n" +"Original code by\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" +msgstr "" +"\n" +"\n" +"Codice originale di\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" + +#: src/gnomeshortcuts/gnomeshortcuts.c:303 +msgid "About Gnome Shortcut Plugin" +msgstr "Informazioni sul plugin Scorciatoie Gnome" + +#: src/gnomeshortcuts/gnomeshortcuts.c:304 +msgid "" +"Gnome Shortcut Plugin\n" +"Let's you control the player with Gnome's shortcuts.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +msgstr "" +"Plugin Scorciatoie Gnome\n" +"Consente di controllare il lettore con i tasti di scelta rapida di Gnome.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" + +#: src/gtkui/columns.c:36 +msgid "Entry number" +msgstr "Numero elemento" + +#: src/gtkui/columns.c:36 src/search-tool/search-tool.c:43 +msgid "Title" +msgstr "Titolo" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:42 +msgid "Artist" +msgstr "Artista" + +#: src/gtkui/columns.c:37 +msgid "Year" +msgstr "Anno" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:43 +msgid "Album" +msgstr "Album" + +#: src/gtkui/columns.c:37 +msgid "Track" +msgstr "Traccia" + +#: src/gtkui/columns.c:37 +msgid "Queue position" +msgstr "Posizione nella coda" + +#: src/gtkui/columns.c:38 +msgid "Length" +msgstr "Durata" + +#: src/gtkui/columns.c:38 +msgid "File path" +msgstr "Percorso del file" + +#: src/gtkui/columns.c:38 +msgid "File name" +msgstr "Nome del file" + +#: src/gtkui/columns.c:38 +msgid "Custom title" +msgstr "Titolo personalizzato" + +#: src/gtkui/columns.c:39 +msgid "Bitrate" +msgstr "Bitrate" + +#: src/gtkui/columns.c:278 +msgid "Choose Columns" +msgstr "Scegli colonne" + +#: src/gtkui/columns.c:292 +msgid "Available:" +msgstr "Disponibili:" + +#: src/gtkui/columns.c:326 +msgid "Chosen:" +msgstr "Selezionate:" + +#: src/gtkui/layout.c:122 +msgid "Dock at Left" +msgstr "Aggancia a sinistra" + +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "Aggancia a destra" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "Aggancia in alto" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "Aggancia in basso" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "Sgancia" + +#: src/gtkui/layout.c:123 src/ladspa/plugin.c:644 +msgid "Disable" +msgstr "Disabilita" + +#: src/gtkui/menus.c:131 +msgid "_Open Files ..." +msgstr "_Apri file…" + +#: src/gtkui/menus.c:132 +msgid "Open _URL ..." +msgstr "Apri _URL…" + +#: src/gtkui/menus.c:133 +msgid "_Add Files ..." +msgstr "A_ggiungi file…" + +#: src/gtkui/menus.c:134 +msgid "Add U_RL ..." +msgstr "Aggiungi U_RL…" + +#: src/gtkui/menus.c:136 +msgid "A_bout ..." +msgstr "I_nformazioni su…" + +#: src/gtkui/menus.c:137 +msgid "_Preferences ..." +msgstr "_Preferenze…" + +#: src/gtkui/menus.c:138 src/skins/ui_manager.c:406 +msgid "_Quit" +msgstr "_Esci" + +#: src/gtkui/menus.c:141 +msgid "_Play" +msgstr "_Riproduci" + +#: src/gtkui/menus.c:142 +msgid "Paus_e" +msgstr "Interro_mpi" + +#: src/gtkui/menus.c:143 +msgid "_Stop" +msgstr "_Ferma" + +#: src/gtkui/menus.c:144 +msgid "Pre_vious" +msgstr "Pre_cedente" + +#: src/gtkui/menus.c:145 +msgid "_Next" +msgstr "_Successiva" + +#: src/gtkui/menus.c:147 +msgid "_Repeat" +msgstr "Ripe_ti" + +#: src/gtkui/menus.c:148 +msgid "S_huffle" +msgstr "C_asuale" + +#: src/gtkui/menus.c:149 +msgid "N_o Playlist Advance" +msgstr "N_on avanzare nella playlist" + +#: src/gtkui/menus.c:150 +msgid "Stop _After This Song" +msgstr "Ferma _dopo questo brano" + +#: src/gtkui/menus.c:152 src/gtkui/menus.c:212 +msgid "Song _Info ..." +msgstr "Informazioni sul _brano…" + +#: src/gtkui/menus.c:153 +msgid "Jump to _Time ..." +msgstr "Salta alla _posizione…" + +#: src/gtkui/menus.c:154 +msgid "_Jump to Song ..." +msgstr "Sa_lta al brano…" + +#: src/gtkui/menus.c:157 +msgid "By Track _Number" +msgstr "Per _numero di traccia" + +#: src/gtkui/menus.c:158 +msgid "By _Title" +msgstr "Per _titolo" + +#: src/gtkui/menus.c:159 +msgid "By _Artist" +msgstr "Per _artista" + +#: src/gtkui/menus.c:160 +msgid "By A_lbum" +msgstr "Per a_lbum" + +#: src/gtkui/menus.c:161 +msgid "By Release _Date" +msgstr "Per _data di pubblicazione" + +#: src/gtkui/menus.c:162 +msgid "By _File Path" +msgstr "Per percorso del _file" + +#: src/gtkui/menus.c:163 +msgid "By _Custom Title" +msgstr "Per titolo _personalizzato" + +#: src/gtkui/menus.c:165 +msgid "R_everse Order" +msgstr "Ordine in_verso" + +#: src/gtkui/menus.c:166 +msgid "_Random Order" +msgstr "Ordine _casuale" + +#: src/gtkui/menus.c:169 src/gtkui/menus.c:214 +msgid "_Refresh" +msgstr "A_ggiorna" + +#: src/gtkui/menus.c:170 +msgid "Remove _Unavailable Files" +msgstr "Ri_muovi file non disponibili" + +#: src/gtkui/menus.c:172 +msgid "_Sort" +msgstr "_Ordina" + +#: src/gtkui/menus.c:174 +msgid "_New" +msgstr "_Nuova" + +#: src/gtkui/menus.c:175 src/gtkui/menus.c:225 +msgid "_Close" +msgstr "_Chiudi" + +#: src/gtkui/menus.c:177 +msgid "_Import ..." +msgstr "_Importa…" + +#: src/gtkui/menus.c:178 +msgid "_Export ..." +msgstr "_Esporta…" + +#: src/gtkui/menus.c:180 +msgid "_Playlist Manager ..." +msgstr "Gestione _playlist…" + +#: src/gtkui/menus.c:181 +msgid "_Queue Manager ..." +msgstr "Gestione co_da…" + +#: src/gtkui/menus.c:184 +msgid "Volume _Up" +msgstr "_Alza volume" + +#: src/gtkui/menus.c:185 +msgid "Volume _Down" +msgstr "A_bbassa volume" + +#: src/gtkui/menus.c:187 +msgid "_Equalizer" +msgstr "_Equalizzatore" + +#: src/gtkui/menus.c:189 +msgid "E_ffects" +msgstr "E_ffetti" + +#: src/gtkui/menus.c:192 +msgid "_Interface" +msgstr "_Interfaccia" + +#: src/gtkui/menus.c:193 +msgid "_Visualizations" +msgstr "_Visualizzazioni" + +#: src/gtkui/menus.c:195 +msgid "Show _Menu Bar" +msgstr "Mostra barra dei _menu" + +#: src/gtkui/menus.c:196 +msgid "Show I_nfo Bar" +msgstr "Mostra barra i_nformazioni" + +#: src/gtkui/menus.c:197 +msgid "Show _Status Bar" +msgstr "Mostra barra di _stato" + +#: src/gtkui/menus.c:199 +msgid "Show Column _Headers" +msgstr "Mostra in_testazioni di colonna" + +#: src/gtkui/menus.c:200 +msgid "Choose _Columns ..." +msgstr "Scegli _colonne…" + +#: src/gtkui/menus.c:201 +msgid "Scrol_l on Song Change" +msgstr "Sco_rri al cambiare del brano" + +#: src/gtkui/menus.c:204 +msgid "_File" +msgstr "_File" + +#: src/gtkui/menus.c:205 +msgid "_Playback" +msgstr "_Riproduzione" + +#: src/gtkui/menus.c:206 +msgid "P_laylist" +msgstr "_Playlist" + +#: src/gtkui/menus.c:207 src/gtkui/menus.c:221 +msgid "_Services" +msgstr "_Servizi" + +#: src/gtkui/menus.c:208 +msgid "_Output" +msgstr "_Uscita" + +#: src/gtkui/menus.c:209 +msgid "_View" +msgstr "_Visualizza" + +#: src/gtkui/menus.c:213 +msgid "_Queue/Unqueue" +msgstr "Inserisci/rimuovi dalla _coda" + +#: src/gtkui/menus.c:216 +msgid "Cu_t" +msgstr "T_aglia" + +#: src/gtkui/menus.c:217 +msgid "_Copy" +msgstr "C_opia" + +#: src/gtkui/menus.c:218 +msgid "_Paste" +msgstr "_Incolla" + +#: src/gtkui/menus.c:219 +msgid "Select _All" +msgstr "Seleziona _tutti" + +#: src/gtkui/menus.c:224 +msgid "_Rename" +msgstr "_Rinomina" + +#: src/gtkui/ui_gtk.c:95 +msgid "GTK Interface" +msgstr "Interfaccia GTK" + +#: src/gtkui/ui_gtk.c:156 src/skins/ui_main.c:303 +#, c-format +msgid "%s - Audacious" +msgstr "%s - Audacious" + +#: src/gtkui/ui_gtk.c:162 +msgid "Buffering ..." +msgstr "Buffering…" + +#: src/gtkui/ui_gtk.c:165 src/skins/ui_main.c:305 src/skins/ui_main.c:1504 +msgid "Audacious" +msgstr "Audacious" + +#: src/gtkui/ui_gtk.c:216 src/skins/plugin.c:190 +msgid "Error" +msgstr "Errore" + +#: src/gtkui/ui_playlist_notebook.c:97 +msgid "Close" +msgstr "Chiudi" + +#: src/gtkui/ui_statusbar.c:105 src/skins/ui_main.c:460 +msgid "mono" +msgstr "mono" + +#: src/gtkui/ui_statusbar.c:107 src/skins/ui_main.c:459 +msgid "stereo" +msgstr "stereo" + +#: src/gtkui/ui_statusbar.c:109 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d canale" +msgstr[1] "%d canali" + +#: src/gtkui/ui_statusbar.c:124 +#, c-format +msgid "%d kbps" +msgstr "%d kbps" + +#: src/hotkey/gui.c:71 +msgid "Previous Track" +msgstr "Traccia precedente" + +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "Riproduci" + +#: src/hotkey/gui.c:73 +msgid "Pause/Resume" +msgstr "Interrompi/riprendi" + +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +msgid "Stop" +msgstr "Ferma" + +#: src/hotkey/gui.c:75 +msgid "Next Track" +msgstr "Traccia successiva" + +#: src/hotkey/gui.c:76 +msgid "Forward 5 Seconds" +msgstr "Avanza di 5 secondi" + +#: src/hotkey/gui.c:77 +msgid "Rewind 5 Seconds" +msgstr "Riavvolgi di 5 secondi" + +#: src/hotkey/gui.c:78 +msgid "Mute" +msgstr "Silenzia" + +#: src/hotkey/gui.c:79 +msgid "Volume Up" +msgstr "Alza volume" + +#: src/hotkey/gui.c:80 +msgid "Volume Down" +msgstr "Abbassa volume" + +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Jump to File" +msgstr "Salta al file" + +#: src/hotkey/gui.c:82 +msgid "Toggle Player Windows" +msgstr "Mostra/nascondi finestre del lettore" + +#: src/hotkey/gui.c:83 +msgid "Show On-Screen-Display" +msgstr "Mostra On-screen-display" + +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "Attiva/disattiva ripetizione" + +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "Attiva/disattiva riproduzione casuale" + +#: src/hotkey/gui.c:95 +msgid "(none)" +msgstr "(nessuno)" + +#: src/hotkey/gui.c:232 +msgid "" +"It is not recommended to bind the primary mouse buttons without modificators.\n" +"\n" +"Do you want to continue?" +msgstr "" +"Non è consigliabile associare i pulsanti primari del mouse senza modificatori.\n" +"\n" +"Vuoi continuare?" + +#: src/hotkey/gui.c:234 +msgid "Binding mouse buttons" +msgstr "Associazione pulsanti del mouse" + +#: src/hotkey/gui.c:384 +msgid "Global Hotkey Plugin Configuration" +msgstr "Configurazione plugin Tasti di scelta rapida globali" + +#: src/hotkey/gui.c:400 +msgid "" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." +msgstr "" +"Premi una combinazione di tasti all'interno di un campo di testo.\n" +"Puoi anche associare i pulsanti del mouse." + +#: src/hotkey/gui.c:405 +msgid "Hotkeys:" +msgstr "Tasti di scelta rapida:" + +#: src/hotkey/gui.c:424 +msgid "Action:" +msgstr "Azione:" + +#: src/hotkey/gui.c:432 +msgid "Key Binding:" +msgstr "Tasto associato:" + +#: src/hotkey/gui.c:663 +msgid "About Global Hotkey Plugin" +msgstr "Informazioni sul plugin Tasti di scelta rapida globali" + +#: src/hotkey/gui.c:664 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributers include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä \n" +"\t\t\tBryn Davies \n" +"\t\t\tJonathan A. Davis \n" +"\t\t\tJeremy Tan \n" +"\n" +msgstr "" +"Plugin Tasti di scelta rapida globali\n" +"Controlla il lettore con combinazioni di tasti o tasti multimediali globali.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Hanno collaborato, tra gli altri:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä \n" +"»»»Bryn Davies \n" +"»»»Jonathan A. Davis \n" +"»»»Jeremy Tan \n" +"\n" + +#: src/jack/configure.c:66 +msgid "Connect to all available jack ports" +msgstr "Connetti a tutte le porte jack disponibili" + +#: src/jack/configure.c:73 +msgid "Connect only the output ports" +msgstr "Connetti solo le porte di uscita" + +#: src/jack/configure.c:80 +msgid "Connect to no ports" +msgstr "Non connettere a nessuna porta" + +#: src/jack/configure.c:98 +msgid "jack Plugin configuration" +msgstr "Configurazione del plugin jack" + +#: src/jack/configure.c:116 +msgid "Connection mode:" +msgstr "Modalità di connessione:" + +#: src/jack/configure.c:128 +msgid "Enable debug printing" +msgstr "Abilita messaggi di debug" + +#: src/jack/jack.c:435 +msgid "" +"XMMS jack Driver 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" +"\n" +"Audacious port by\n" +"Giacomo Lozito from develia.org" +msgstr "" +"Driver jack per XMMS 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" +"\n" +"Port per Audacious di\n" +"Giacomo Lozito from develia.org" + +#: src/jack/jack.c:440 +msgid "About JACK Output Plugin 0.17" +msgstr "Informazioni sul plugin di uscita JACK 0.17" + +#: src/ladspa/plugin.c:415 +msgid "About LADSPA Host" +msgstr "Informazioni su Host LADSPA" + +#: src/ladspa/plugin.c:516 +#, c-format +msgid "%s Settings" +msgstr "Impostazioni %s" + +#: src/ladspa/plugin.c:584 +msgid "LADSPA Host Settings" +msgstr "Impostazioni Host LADSPA" + +#: src/ladspa/plugin.c:593 +msgid "Module paths:" +msgstr "Percorsi dei moduli:" + +#: src/ladspa/plugin.c:598 +msgid "" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." +msgstr "" +"Separa più percorsi con i due punti.\n" +"La ricerca viene effettuata in questi percorsi in aggiunta a LADSPA_PATH.\n" +"Dopo aver aggiunto nuovi percorsi, premi Invio per ricercare nuovi plugin." + +#: src/ladspa/plugin.c:614 +msgid "Available plugins:" +msgstr "Plugin disponibili:" + +#: src/ladspa/plugin.c:626 +msgid "Enable" +msgstr "Abilita" + +#: src/ladspa/plugin.c:632 +msgid "Enabled plugins:" +msgstr "Plugin abilitati:" + +#: src/ladspa/plugin.c:647 +msgid "Settings" +msgstr "Impostazioni" + +#: src/lyricwiki/lyricwiki.c:267 +msgid "" +"\n" +"Looking for lyrics..." +msgstr "" +"\n" +"Ricerca testi in corso…" + +#: src/lyricwiki/lyricwiki.c:304 +msgid "" +"\n" +"Connecting to lyrics.wikia.com..." +msgstr "" +"\n" +"Connessione a lyrics.wikia.com in corso…" + +#: src/lyricwiki/lyricwiki.c:377 +msgid "" +"\n" +"No lyrics were found." +msgstr "" +"\n" +"Non sono stati trovati testi." + +#: src/metronom/metronom.c:86 +msgid "About Metronom" +msgstr "Informazioni su Metronomo" + +#: src/metronom/metronom.c:87 +msgid "" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +msgstr "" +"Un metronomo di Martin Strauss \n" +"\n" +"Per utilizzarlo, aggiungi un URL: tact://battiti*num/den\n" +"p.es. tact://77 per suonare 77 battiti per minuto\n" +"oppure tact://60*3/4 per suonare 60 bpm in misure da 3/4" + +#: src/metronom/metronom.c:144 +#, c-format +msgid "Tact generator: %d bpm" +msgstr "Metronomo: %d bpm" + +#: src/metronom/metronom.c:146 +#, c-format +msgid "Tact generator: %d bpm %d/%d" +msgstr "Metronomo: %d bpm %d/%d" + +#: src/mixer/plugin.c:64 +msgid "About Channel Mixer" +msgstr "Informazioni su Mixer canali" + +#: src/mixer/plugin.c:93 +msgid "Channel Mixer Settings" +msgstr "Impostazioni Mixer canali" + +#: src/mixer/plugin.c:102 +msgid "Output channels:" +msgstr "Canali in uscita:" + +#: src/mixer/plugin.c:112 +msgid "Changes take effect at the next song change." +msgstr "I cambiamenti avranno effetto al prossimo cambio di brano." + +#: src/mpg123/mpg123.c:191 +msgid "Surround" +msgstr "Surround" + +#: src/mtp_up/mtp.c:340 +msgid "Upload in progress..." +msgstr "Caricamento in corso…" + +#: src/mtp_up/mtp.c:352 +msgid "Upload to MTP Device" +msgstr "Carica su dispositivo MTP" + +#: src/mtp_up/mtp.c:353 +msgid "Disconnect MTP Device" +msgstr "Disconnetti dispositivo MTP" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Stopped" +msgstr "Fermato" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Audacious is not playing." +msgstr "Audacious non sta riproducendo." + +#: src/null/null.c:64 +msgid "Null output plugin " +msgstr "Plugin di uscita Null " + +#: src/null/null.c:65 +msgid "" +" by Christian Birchinger \n" +"based on the XMMS plugin by HÃ¥vard KvÃ¥l " +msgstr "" +" di Christian Birchinger \n" +"basato sul plugin per XMMS di HÃ¥vard KvÃ¥l " + +#: src/null/null.c:68 +msgid "About Null Output" +msgstr "Informazioni su Uscita Null" + +#: src/null/null.c:89 +msgid "Null output preferences" +msgstr "Preferenze di uscita Null" + +#: src/null/null.c:100 +msgid "Run in real time" +msgstr "Esegui in tempo reale" + +#: src/oss4/configure.c:81 +msgid "1. Default device" +msgstr "1. Dispositivo predefinito" + +#: src/oss4/configure.c:138 +msgid "OSS4 Output Plugin Preferences" +msgstr "Preferenze del plugin di uscita OSS4" + +#: src/oss4/configure.c:150 src/OSS/configure.c:194 +msgid "Audio device:" +msgstr "Dispositivo audio:" + +#: src/oss4/configure.c:178 src/OSS/configure.c:217 src/OSS/configure.c:260 +msgid "Use alternate device:" +msgstr "Usa dispositivo alternativo:" + +#: src/oss4/configure.c:193 +msgid "Save volume between sessions" +msgstr "Salva il volume tra una sessione e l'altra" + +#: src/oss4/configure.c:197 +msgid "Enable format conversions made by the OSS software." +msgstr "Abilita conversioni di formato effettuate dal software OSS." + +#: src/oss4/configure.c:201 +msgid "Enable exclusive mode to prevent virtual mixing." +msgstr "Abilita la modalità esclusiva per prevenire il missaggio virtuale." + +#: src/oss4/plugin.c:51 +msgid "About OSS4 Plugin" +msgstr "Informazioni sul plugin OSS4" + +#: src/oss4/utils.c:211 +msgid "OSS4 error" +msgstr "Errore OSS4" + +#: src/OSS/configure.c:137 +#, c-format +msgid "Default (%s)" +msgstr "Predefinito (%s)" + +#: src/OSS/configure.c:178 +msgid "OSS Driver configuration" +msgstr "Configurazione del driver OSS" + +#: src/OSS/configure.c:281 +msgid "Devices" +msgstr "Dispositivi" + +#: src/OSS/configure.c:283 +msgid "Buffering:" +msgstr "Buffering:" + +#: src/OSS/configure.c:296 +msgid "Pre-buffer (percent):" +msgstr "Pre-buffer (percento):" + +#: src/OSS/configure.c:307 +msgid "Buffering" +msgstr "Buffering" + +#: src/OSS/configure.c:308 +msgid "Mixer Settings:" +msgstr "Impostazioni mixer:" + +#: src/OSS/configure.c:314 +msgid "Volume controls Master not PCM" +msgstr "Volume controlla il Master anziché il PCM" + +#: src/OSS/configure.c:320 +msgid "Mixer" +msgstr "Mixer" + +#: src/OSS/OSS.c:41 +msgid "About OSS Driver" +msgstr "Informazioni sul driver OSS" + +#: src/pulse_audio/pulse_audio.c:669 +msgid "About Audacious PulseAudio Output Plugin" +msgstr "Informazioni sul plugin di uscita PulseAudio per Audacious" + +#: src/resample/plugin.c:89 +msgid "About Sample Rate Converter Plugin" +msgstr "Informazioni sul plugin Convertitore frequenza di campionamento" + +#: src/resample/plugin.c:144 +msgid "Sample Rate Converter Preferences" +msgstr "Preferenze Convertitore frequenza di campionamento" + +#: src/resample/plugin.c:156 +msgid "Rate mappings:" +msgstr "Mappatura frequenze:" + +#: src/resample/plugin.c:179 +msgid "All others:" +msgstr "Tutte le altre:" + +#: src/resample/plugin.c:191 +msgid "Method:" +msgstr "Metodo:" + +#: src/scrobbler/configure.c:123 src/scrobbler/configure.c:198 +msgid "Change password" +msgstr "Cambia password" + +#: src/scrobbler/configure.c:144 +msgid "Services" +msgstr "Servizi" + +#: src/scrobbler/configure.c:166 +msgid "Username:" +msgstr "Nome utente:" + +#: src/scrobbler/configure.c:172 +msgid "Password:" +msgstr "Password:" + +#: src/scrobbler/configure.c:180 +msgid "Scrobbler URL:" +msgstr "URL Scrobbler:" + +#: src/scrobbler/configure.c:212 +msgid "Last.FM" +msgstr "Last.FM" + +#: src/scrobbler/configure.c:239 +msgid "Scrobbler" +msgstr "Scrobbler" + +#: src/scrobbler/plugin.c:194 +msgid "" +"Audacious AudioScrobbler Plugin\n" +"\n" +"Originally created by Audun Hove and Pipian \n" +msgstr "" +"Plugin AudioScrobbler per Audacious\n" +"\n" +"Originariamente creato da Audun Hove e Pipian \n" + +#: src/scrobbler/plugin.c:196 +msgid "About Scrobbler Plugin" +msgstr "Informazioni sul plugin Scrobbler" + +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" +msgstr "Informazioni sul plugin di uscita SDL" + +#: src/sdlout/plugin.c:78 +msgid "SDL error" +msgstr "Errore SDL" + +#: src/search-tool/search-tool.c:42 +msgid "Genre" +msgstr "Genere" + +#: src/search-tool/search-tool.c:96 src/search-tool/search-tool.c:106 +msgid "Library" +msgstr "Libreria" + +#: src/search-tool/search-tool.c:591 +msgid "_Create Playlist" +msgstr "_Crea playlist" + +#: src/search-tool/search-tool.c:598 +msgid "_Add to Playlist" +msgstr "_Aggiungi alla playlist" + +#: src/search-tool/search-tool.c:641 +msgid "Search library" +msgstr "Cerca nella libreria" + +#: src/search-tool/search-tool.c:645 +msgid "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." +msgstr "" +"Per importare la tua musica in Audacious, scegli una cartella e clicca " +"sull'icona \"aggiorna\"." + +#: src/search-tool/search-tool.c:653 +msgid "Please wait ..." +msgstr "Attendi per favore…" + +#: src/search-tool/search-tool.c:675 +msgid "Choose Folder" +msgstr "Scegli una cartella" + +#: src/skins/plugin.c:167 +msgid "About Skinned GUI" +msgstr "Informazioni GUI con skin" + +#: src/skins/plugin.c:168 +msgid "" +"Copyright (c) 2008, by Tomasz MoÅ„ \n" +"\n" +msgstr "" +"Copyright (c) 2008, di Tomasz MoÅ„ \n" +"\n" + +#: src/skins/skins_cfg.c:207 +msgid "_Player:" +msgstr "_Lettore:" + +#: src/skins/skins_cfg.c:208 +msgid "Select main player window font:" +msgstr "Seleziona il carattere della finestra principale del lettore:" + +#: src/skins/skins_cfg.c:210 +msgid "_Playlist:" +msgstr "_Playlist:" + +#: src/skins/skins_cfg.c:211 +msgid "Select playlist font:" +msgstr "Seleziona il carattere della playlist:" + +#: src/skins/skins_cfg.c:215 +msgid "_Fonts" +msgstr "_Caratteri" + +#: src/skins/skins_cfg.c:218 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "Usa caratteri bitmap (supporta solo ASCII)" + +#: src/skins/skins_cfg.c:220 +msgid "Scroll song title in both directions" +msgstr "Scorri titolo brano in entrambe le direzioni" + +#: src/skins/skins_cfg.c:298 +msgid "_Skin" +msgstr "_Skin" + +#: src/skins/skins_cfg.c:345 +msgid "Interface Preferences" +msgstr "Preferenze interfaccia" + +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "Preamplificazione" + +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" +msgstr "31 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "63 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" +msgstr "125 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" +msgstr "250 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" +msgstr "500 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" +msgstr "1 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" +msgstr "2 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" +msgstr "4 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" +msgstr "8 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" +msgstr "16 kHz" + +#: src/skins/ui_equalizer.c:379 +msgid "Audacious Equalizer" +msgstr "Equalizzatore di Audacious" + +#: src/skins/ui_equalizer.c:887 +msgid "Presets" +msgstr "Preimpostazioni" + +#: src/skins/ui_equalizer.c:968 src/skins/ui_manager.c:442 +msgid "Load preset" +msgstr "Carica preimpostazione" + +#: src/skins/ui_equalizer.c:985 +msgid "Load auto-preset" +msgstr "Carica preimpostazione a caricamento automatico" + +#: src/skins/ui_equalizer.c:1015 src/skins/ui_equalizer.c:1033 +#: src/skins/ui_equalizer.c:1049 +msgid "Load equalizer preset" +msgstr "Carica preimpostazione equalizzatore" + +#: src/skins/ui_equalizer.c:1068 src/skins/ui_manager.c:463 +msgid "Save preset" +msgstr "Salva preimpostazione" + +#: src/skins/ui_equalizer.c:1084 +msgid "Save auto-preset" +msgstr "Salva preimpostazione a caricamento automatico" + +#: src/skins/ui_equalizer.c:1114 src/skins/ui_equalizer.c:1150 +msgid "Save equalizer preset" +msgstr "Salva preimpostazione equalizzatore" + +#: src/skins/ui_equalizer.c:1169 src/skins/ui_manager.c:478 +msgid "Delete preset" +msgstr "Elimina preimpostazione" + +#: src/skins/ui_equalizer.c:1186 +msgid "Delete auto-preset" +msgstr "Elimina preimpostazione a caricamento automatico" + +#: src/skins/ui_main.c:444 +msgid "kbps" +msgstr "kbps" + +#: src/skins/ui_main.c:452 +msgid "kHz" +msgstr "kHz" + +#: src/skins/ui_main.c:459 +msgid "surround" +msgstr "surround" + +#: src/skins/ui_main.c:807 +#, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "Vai a %d:%-2.2d / %d:%-2.2d" + +#: src/skins/ui_main.c:828 +#, c-format +msgid "Volume: %d%%" +msgstr "Volume: %d%%" + +#: src/skins/ui_main.c:851 +#, c-format +msgid "Balance: %d%% left" +msgstr "Bilanciamento: sinistra %d%%" + +#: src/skins/ui_main.c:853 +msgid "Balance: center" +msgstr "Bilanciamento: centro" + +#: src/skins/ui_main.c:855 +#, c-format +msgid "Balance: %d%% right" +msgstr "Bilanciamento: destra %d%%" + +#: src/skins/ui_main.c:981 +msgid "Options Menu" +msgstr "Menu opzioni" + +#: src/skins/ui_main.c:985 +msgid "Disable 'Always On Top'" +msgstr "Disabilita 'Sempre in primo piano'" + +#: src/skins/ui_main.c:987 +msgid "Enable 'Always On Top'" +msgstr "Abilita 'Sempre in primo piano'" + +#: src/skins/ui_main.c:990 +msgid "File Info Box" +msgstr "Finestra informazioni file" + +#: src/skins/ui_main.c:995 +msgid "Visualization Menu" +msgstr "Menu visualizzazione" + +#: src/skins/ui_main.c:1653 +msgid "Single mode." +msgstr "Modalità singolo." + +#: src/skins/ui_main.c:1655 +msgid "Playlist mode." +msgstr "Modalità playlist." + +#: src/skins/ui_main.c:1677 +msgid "Stopping after song." +msgstr "La riproduzione si fermerà alla fine del brano." + +#: src/skins/ui_main.c:1679 +msgid "Not stopping after song." +msgstr "La riproduzione non si fermerà alla fine del brano." + +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 +msgid "Autoscroll Songname" +msgstr "Scorri automaticamente nome del brano" + +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "Ferma riproduzione alla fine del brano corrente" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 +msgid "Peaks" +msgstr "Picchi" + +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "Ripeti" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "Casuale" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "Non avanzare nella playlist" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 +msgid "Show Player" +msgstr "Mostra lettore" + +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 +msgid "Show Playlist Editor" +msgstr "Mostra editor della playlist" + +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 +msgid "Show Equalizer" +msgstr "Mostra equalizzatore" + +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 +msgid "Always on Top" +msgstr "Sempre in primo piano" + +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 +msgid "Put on All Workspaces" +msgstr "Visualizza su tutti gli spazi di lavoro" + +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 +msgid "Roll up Player" +msgstr "Riavvolgi lettore" + +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 +msgid "Roll up Playlist Editor" +msgstr "Riavvolgi editor della playlist" + +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 +msgid "Roll up Equalizer" +msgstr "Riavvolgi equalizzatore" + +#: src/skins/ui_manager.c:115 +msgid "Analyzer" +msgstr "Analizzatore" + +#: src/skins/ui_manager.c:116 +msgid "Scope" +msgstr "Oscilloscopio" + +#: src/skins/ui_manager.c:117 +msgid "Voiceprint" +msgstr "Spettrogramma" + +#: src/skins/ui_manager.c:118 +msgid "Off" +msgstr "Spento" + +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 +msgid "Normal" +msgstr "Normale" + +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 +msgid "Fire" +msgstr "Fuoco" + +#: src/skins/ui_manager.c:124 +msgid "Vertical Lines" +msgstr "Linee verticali" + +#: src/skins/ui_manager.c:128 +msgid "Lines" +msgstr "Linee" + +#: src/skins/ui_manager.c:129 +msgid "Bars" +msgstr "Barre" + +#: src/skins/ui_manager.c:133 +msgid "Dot Scope" +msgstr "Oscilloscopio a punti" + +#: src/skins/ui_manager.c:134 +msgid "Line Scope" +msgstr "Oscilloscopio a linee" + +#: src/skins/ui_manager.c:135 +msgid "Solid Scope" +msgstr "Oscilloscopio pieno" + +#: src/skins/ui_manager.c:141 +msgid "Ice" +msgstr "Ghiaccio" + +#: src/skins/ui_manager.c:146 +msgid "Smooth" +msgstr "Morbida" + +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 +msgid "Slowest" +msgstr "Molto lenta" + +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 +msgid "Slow" +msgstr "Lenta" + +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 +msgid "Medium" +msgstr "Media" + +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 +msgid "Fast" +msgstr "Veloce" + +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 +msgid "Fastest" +msgstr "Molto veloce" + +#: src/skins/ui_manager.c:166 +msgid "Time Elapsed" +msgstr "Tempo trascorso" + +#: src/skins/ui_manager.c:167 +msgid "Time Remaining" +msgstr "Tempo rimanente" + +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "Interrompi" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "Precedente" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "Successivo" + +#: src/skins/ui_manager.c:196 +msgid "Visualization" +msgstr "Visualizzazione" + +#: src/skins/ui_manager.c:197 +msgid "Visualization Mode" +msgstr "Modalità di visualizzazione" + +#: src/skins/ui_manager.c:198 +msgid "Analyzer Mode" +msgstr "Modalità analizzatore" + +#: src/skins/ui_manager.c:199 +msgid "Scope Mode" +msgstr "Modalità oscilloscopio" + +#: src/skins/ui_manager.c:200 +msgid "Voiceprint Mode" +msgstr "Modalità spettrogramma" + +#: src/skins/ui_manager.c:201 +msgid "WindowShade VU Mode" +msgstr "Modalità WindowShade VU" + +#: src/skins/ui_manager.c:202 +msgid "Analyzer Falloff" +msgstr "Caduta analizzatore" + +#: src/skins/ui_manager.c:203 +msgid "Peaks Falloff" +msgstr "Caduta picchi" + +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "Playlist" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "Nuova playlist" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 +msgid "Select Next Playlist" +msgstr "Seleziona playlist successiva" + +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 +msgid "Select Previous Playlist" +msgstr "Seleziona playlist precedente" + +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "Elimina playlist" + +#: src/skins/ui_manager.c:222 +msgid "Import Playlist" +msgstr "Importa playlist" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "Carica un file della playlist all'interno della playlist selezionata." + +#: src/skins/ui_manager.c:226 +msgid "Export Playlist" +msgstr "Esporta playlist" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "Salva la playlist selezionata." + +#: src/skins/ui_manager.c:229 +msgid "Refresh List" +msgstr "Aggiorna lista" + +#: src/skins/ui_manager.c:230 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "Aggiorna i metadati associati ad un elemento della playlist." + +#: src/skins/ui_manager.c:233 +msgid "Playlist Manager" +msgstr "Gestione playlist" + +#: src/skins/ui_manager.c:234 +msgid "Queue Manager" +msgstr "Gestione coda" + +#: src/skins/ui_manager.c:237 +msgid "View" +msgstr "Visualizza" + +#: src/skins/ui_manager.c:238 +msgid "Interface" +msgstr "Interfaccia" + +#: src/skins/ui_manager.c:239 +msgid "Interface Preferences ..." +msgstr "Preferenze dell'interfaccia…" + +#: src/skins/ui_manager.c:243 +msgid "Add Internet Address..." +msgstr "Aggiungi indirizzo internet…" + +#: src/skins/ui_manager.c:244 +msgid "Adds a remote track to the playlist." +msgstr "Aggiunge una traccia remota alla playlist." + +#: src/skins/ui_manager.c:247 +msgid "Add Files..." +msgstr "Aggiungi file…" + +#: src/skins/ui_manager.c:248 +msgid "Adds files to the playlist." +msgstr "Aggiunge file alla playlist." + +#: src/skins/ui_manager.c:253 +msgid "Search and Select" +msgstr "Cerca e seleziona" + +#: src/skins/ui_manager.c:254 +msgid "" +"Searches the playlist and selects playlist entries based on specific " +"criteria." +msgstr "" +"Cerca nella playlist e seleziona gli elementi della playlist in base a un " +"criterio specifico." + +#: src/skins/ui_manager.c:257 +msgid "Invert Selection" +msgstr "Inverti selezione" + +#: src/skins/ui_manager.c:258 +msgid "Inverts the selected and unselected entries." +msgstr "Inverte le voci selezionate e non selezionate." + +#: src/skins/ui_manager.c:261 +msgid "Select All" +msgstr "Seleziona tutti" + +#: src/skins/ui_manager.c:262 +msgid "Selects all of the playlist entries." +msgstr "Seleziona tutti gli elementi della playlist." + +#: src/skins/ui_manager.c:265 +msgid "Select None" +msgstr "Deseleziona tutti" + +#: src/skins/ui_manager.c:266 +msgid "Deselects all of the playlist entries." +msgstr "Deseleziona tutti gli elementi della playlist." + +#: src/skins/ui_manager.c:271 +msgid "Remove All" +msgstr "Rimuovi tutti" + +#: src/skins/ui_manager.c:272 +msgid "Removes all entries from the playlist." +msgstr "Rimuove dalla playlist tutti gli elementi." + +#: src/skins/ui_manager.c:275 +msgid "Clear Queue" +msgstr "Cancella coda" + +#: src/skins/ui_manager.c:276 +msgid "Clears the queue associated with this playlist." +msgstr "Cancella la coda associata con questa playlist." + +#: src/skins/ui_manager.c:279 +msgid "Remove Unavailable Files" +msgstr "Rimuovi i file non disponibili" + +#: src/skins/ui_manager.c:280 +msgid "Removes unavailable files from the playlist." +msgstr "Rimuove dalla playlist i file non disponibili." + +#: src/skins/ui_manager.c:283 +msgid "Remove Duplicates" +msgstr "Rimuovi i duplicati" + +#: src/skins/ui_manager.c:285 src/skins/ui_manager.c:317 +#: src/skins/ui_manager.c:347 +msgid "By Title" +msgstr "Per titolo" + +#: src/skins/ui_manager.c:286 +msgid "Removes duplicate entries from the playlist by title." +msgstr "Rimuove dalla playlist le voci duplicate in base al titolo." + +#: src/skins/ui_manager.c:289 src/skins/ui_manager.c:329 +#: src/skins/ui_manager.c:359 +msgid "By Filename" +msgstr "Per nome del file" + +#: src/skins/ui_manager.c:290 +msgid "Removes duplicate entries from the playlist by filename." +msgstr "Rimuove dalla playlist le voci duplicate in base al nome del file." + +#: src/skins/ui_manager.c:293 src/skins/ui_manager.c:333 +#: src/skins/ui_manager.c:363 +msgid "By Path + Filename" +msgstr "Per percorso + nome del file" + +#: src/skins/ui_manager.c:294 +msgid "Removes duplicate entries from the playlist by their full path." +msgstr "" +"Rimuove dalla playlist le voci duplicate in base al loro percorso completo." + +#: src/skins/ui_manager.c:297 +msgid "Remove Unselected" +msgstr "Rimuovi deselezionati" + +#: src/skins/ui_manager.c:298 +msgid "Remove unselected entries from the playlist." +msgstr "Rimuove dalla playlist gli elementi deselezionati." + +#: src/skins/ui_manager.c:301 +msgid "Remove Selected" +msgstr "Rimuovi selezionati" + +#: src/skins/ui_manager.c:302 +msgid "Remove selected entries from the playlist." +msgstr "Rimuove dalla playlist gli elementi selezionati." + +#: src/skins/ui_manager.c:307 +msgid "Randomize List" +msgstr "Riordina casualmente la lista" + +#: src/skins/ui_manager.c:308 +msgid "Randomizes the playlist." +msgstr "Riordina casualmente la playlist." + +#: src/skins/ui_manager.c:311 +msgid "Reverse List" +msgstr "Inverti lista" + +#: src/skins/ui_manager.c:312 +msgid "Reverses the playlist." +msgstr "Inverte la playlist." + +#: src/skins/ui_manager.c:315 +msgid "Sort List" +msgstr "Ordina lista" + +#: src/skins/ui_manager.c:318 src/skins/ui_manager.c:348 +msgid "Sorts the list by title." +msgstr "Ordina la lista per titolo." + +#: src/skins/ui_manager.c:321 src/skins/ui_manager.c:351 +msgid "By Album" +msgstr "Per album" + +#: src/skins/ui_manager.c:322 src/skins/ui_manager.c:352 +msgid "Sorts the list by album." +msgstr "Ordina la lista per album." + +#: src/skins/ui_manager.c:325 src/skins/ui_manager.c:355 +msgid "By Artist" +msgstr "Per artista" + +#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +msgid "Sorts the list by artist." +msgstr "Ordina la lista per artista." + +#: src/skins/ui_manager.c:330 src/skins/ui_manager.c:360 +msgid "Sorts the list by filename." +msgstr "Ordina la lista per nome del file." + +#: src/skins/ui_manager.c:334 src/skins/ui_manager.c:364 +msgid "Sorts the list by full pathname." +msgstr "Ordina la lista in base al percorso completo." + +#: src/skins/ui_manager.c:337 src/skins/ui_manager.c:367 +msgid "By Date" +msgstr "Per data" + +#: src/skins/ui_manager.c:338 src/skins/ui_manager.c:368 +msgid "Sorts the list by modification time." +msgstr "Ordina la lista per data di modifica." + +#: src/skins/ui_manager.c:341 src/skins/ui_manager.c:371 +msgid "By Track Number" +msgstr "Per numero di traccia" + +#: src/skins/ui_manager.c:342 src/skins/ui_manager.c:372 +msgid "Sorts the list by track number." +msgstr "Ordina la lista per numero di traccia." + +#: src/skins/ui_manager.c:345 +msgid "Sort Selected" +msgstr "Ordina selezionati" + +#: src/skins/ui_manager.c:381 +msgid "File" +msgstr "File" + +#: src/skins/ui_manager.c:384 +msgid "Plugin Services" +msgstr "Servizi plugin" + +#: src/skins/ui_manager.c:386 src/skins/ui_manager.c:389 +msgid "View Track Details" +msgstr "Visualizza dettagli traccia" + +#: src/skins/ui_manager.c:387 src/skins/ui_manager.c:390 +msgid "View track details" +msgstr "Visualizza i dettagli della traccia" + +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:393 +msgid "About Audacious" +msgstr "Informazioni su Audacious" + +#: src/skins/ui_manager.c:395 +msgid "Play File" +msgstr "Riproduci file" + +#: src/skins/ui_manager.c:396 +msgid "Load and play a file" +msgstr "Carica e riproduce un file" + +#: src/skins/ui_manager.c:398 +msgid "Play Location" +msgstr "Riproduci posizione" + +#: src/skins/ui_manager.c:399 +msgid "Play media from the selected location" +msgstr "Riproduce contenuti dalla posizione selezionata" + +#: src/skins/ui_manager.c:401 +msgid "Plugin services" +msgstr "Servizi dei plugin" + +#: src/skins/ui_manager.c:403 +msgid "Preferences" +msgstr "Preferenze" + +#: src/skins/ui_manager.c:404 +msgid "Open preferences window" +msgstr "Apre la finestra delle preferenze" + +#: src/skins/ui_manager.c:407 +msgid "Quit Audacious" +msgstr "Esci da Audacious" + +#: src/skins/ui_manager.c:409 src/skins/ui_manager.c:410 +msgid "Set A-B" +msgstr "Imposta A-B" + +#: src/skins/ui_manager.c:412 src/skins/ui_manager.c:413 +msgid "Clear A-B" +msgstr "Cancella A-B" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Jump to Time" +msgstr "Salta alla posizione" + +#: src/skins/ui_manager.c:421 +msgid "Queue Toggle" +msgstr "Attivazione/disattivazione coda" + +#: src/skins/ui_manager.c:422 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "Attiva/disattiva l'elemento nella coda della playlist." + +#: src/skins/ui_manager.c:425 +msgid "Copy" +msgstr "Copia" + +#: src/skins/ui_manager.c:427 +msgid "Cut" +msgstr "Taglia" + +#: src/skins/ui_manager.c:429 +msgid "Paste" +msgstr "Incolla" + +#: src/skins/ui_manager.c:436 +msgid "Load" +msgstr "Carica" + +#: src/skins/ui_manager.c:437 +msgid "Import" +msgstr "Importa" + +#: src/skins/ui_manager.c:438 +msgid "Save" +msgstr "Salva" + +#: src/skins/ui_manager.c:439 +msgid "Delete" +msgstr "Elimina" + +#: src/skins/ui_manager.c:441 src/skins/ui_manager.c:462 +#: src/skins/ui_manager.c:477 +msgid "Preset" +msgstr "Preimpostazione" + +#: src/skins/ui_manager.c:444 src/skins/ui_manager.c:465 +#: src/skins/ui_manager.c:480 +msgid "Auto-load preset" +msgstr "Preimpostazione a caricamento automatico" + +#: src/skins/ui_manager.c:445 +msgid "Load auto-load preset" +msgstr "Carica preimpostazione a caricamento automatico" + +#: src/skins/ui_manager.c:448 +msgid "Load default preset into equalizer" +msgstr "Carica preimpostazione predefinita all'interno dell'equalizzatore" + +#: src/skins/ui_manager.c:450 +msgid "Zero" +msgstr "Azzera" + +#: src/skins/ui_manager.c:451 +msgid "Set equalizer preset levels to zero" +msgstr "Imposta livelli della preimpostazione dell'equalizzatore a zero" + +#: src/skins/ui_manager.c:453 +msgid "From file" +msgstr "Da file" + +#: src/skins/ui_manager.c:454 +msgid "Load preset from file" +msgstr "Carica preimpostazione da file" + +#: src/skins/ui_manager.c:456 +msgid "From WinAMP EQF file" +msgstr "Da un file EQF di WinAMP" + +#: src/skins/ui_manager.c:457 +msgid "Load preset from WinAMP EQF file" +msgstr "Carica preimpostazione da un file EQF di WinAMP" + +#: src/skins/ui_manager.c:459 +msgid "WinAMP Presets" +msgstr "Preimpostazioni di WinAMP" + +#: src/skins/ui_manager.c:460 +msgid "Import WinAMP presets" +msgstr "Imposta preimpostazioni di WinAMP" + +#: src/skins/ui_manager.c:466 +msgid "Save auto-load preset" +msgstr "Salva preimpostazione a caricamento automatico" + +#: src/skins/ui_manager.c:469 +msgid "Save default preset" +msgstr "Salva preimpostazione predefinita" + +#: src/skins/ui_manager.c:471 +msgid "To file" +msgstr "Su file" + +#: src/skins/ui_manager.c:472 +msgid "Save preset to file" +msgstr "Salva preimpostazione su file" + +#: src/skins/ui_manager.c:474 +msgid "To WinAMP EQF file" +msgstr "Su file EQF di WinAMP" + +#: src/skins/ui_manager.c:475 +msgid "Save preset to WinAMP EQF file" +msgstr "Salva preset su un file EQF di WinAMP" + +#: src/skins/ui_manager.c:481 +msgid "Delete auto-load preset" +msgstr "Elimina preimpostazione a caricamento automatico" + +#: src/skins/ui_playlist.c:248 +msgid "Search entries in active playlist" +msgstr "Cerca elementi nella playlist attiva" + +#: src/skins/ui_playlist.c:256 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular" +" expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Seleziona gli elementi nella playlist compilando uno o più campi. I campi " +"utilizzano la sintassi delle espressioni regolari, senza distinzione tra " +"maiuscole e minuscole. Se non sai come funzionano le espressioni regolari, " +"inserisci semplicemente una porzione letterale di quello che stai cercando." + +#: src/skins/ui_playlist.c:264 +msgid "Title: " +msgstr "Titolo: " + +#: src/skins/ui_playlist.c:271 +msgid "Album: " +msgstr "Album: " + +#: src/skins/ui_playlist.c:278 +msgid "Artist: " +msgstr "Artista: " + +#: src/skins/ui_playlist.c:285 +msgid "Filename: " +msgstr "Nome del file: " + +#: src/skins/ui_playlist.c:293 +msgid "Clear previous selection before searching" +msgstr "Cancella la selezione precedente prima di effettuare la ricerca" + +#: src/skins/ui_playlist.c:296 +msgid "Automatically toggle queue for matching entries" +msgstr "Inserisci automaticamente in coda gli elementi trovati" + +#: src/skins/ui_playlist.c:299 +msgid "Create a new playlist with matching entries" +msgstr "Crea una nuova playlist con gli elementi trovati" + +#: src/skins/ui_playlist.c:765 +msgid "Audacious Playlist Editor" +msgstr "Editor della playlist di Audacious" + +#: src/skins/ui_playlist.c:812 +#, c-format +msgid "%s (%d of %d)" +msgstr "%s (%d di %d)" + +#: src/skins/ui_skinselector.c:162 +msgid "Archived Winamp 2.x skin" +msgstr "Skin Winamp 2.x archiviata" + +#: src/skins/ui_skinselector.c:167 +msgid "Unarchived Winamp 2.x skin" +msgstr "Skin Winamp 2.x non archiviata" + +#: src/skins/util.c:774 +#, c-format +msgid "Could not create directory (%s): %s\n" +msgstr "Impossibile creare la directory (%s): %s\n" + +#: src/sndfile/plugin.c:456 +msgid "About sndfile plugin" +msgstr "Informazioni sul plugin sndfile" + +#: src/sndstretch/sndstretch_xmms.c:155 +msgid "About SndStretch" +msgstr "Informazioni su SndStretch" + +#: src/sndstretch/sndstretch_xmms.c:308 +msgid "Volume corr." +msgstr "Corr. volume" + +#: src/sndstretch/sndstretch_xmms.c:309 +msgid "Short Overlap" +msgstr "Breve sovrapposizione" + +#: src/sndstretch/sndstretch_xmms.c:355 +msgid "Speed" +msgstr "Velocità" + +#: src/sndstretch/sndstretch_xmms.c:356 +msgid "Pitch" +msgstr "Tono" + +#: src/sndstretch/sndstretch_xmms.c:357 +msgid "Scale" +msgstr "Scala" + +#: src/sndstretch/sndstretch_xmms.c:377 +msgid "SndStretch - Configuration" +msgstr "SndStretch - Configurazione" + +#: src/song_change/song_change.c:437 +msgid "Command to run when Audacious starts a new song." +msgstr "Comando da eseguire quando Audacious inizia un nuovo brano." + +#: src/song_change/song_change.c:439 src/song_change/song_change.c:445 +#: src/song_change/song_change.c:451 src/song_change/song_change.c:457 +msgid "Command:" +msgstr "Comando:" + +#: src/song_change/song_change.c:443 +msgid "Command to run toward the end of a song." +msgstr "Comando da eseguire alla fine del brano." + +#: src/song_change/song_change.c:449 +msgid "Command to run when Audacious reaches the end of the playlist." +msgstr "" +"Comando da eseguire quando Audacious raggiunge la fine della playlist." + +#: src/song_change/song_change.c:455 +msgid "" +"Command to run when title changes for a song (i.e. network streams titles)." +msgstr "" +"Comando da eseguire quando cambia il titolo del brano (titoli degli stream " +"di rete)." + +#: src/song_change/song_change.c:461 +msgid "" +"You can use the following format strings which\n" +"will be substituted before calling the command\n" +"(not all are useful for the end-of-playlist command).\n" +"\n" +"%F: Frequency (in hertz)\n" +"%c: Number of channels\n" +"%f: filename (full path)\n" +"%l: length (in milliseconds)\n" +"%n or %s: Song name\n" +"%r: Rate (in bits per second)\n" +"%t: Playlist position (%02d)\n" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" +msgstr "" +"Puoi usare le seguenti stringhe di formattazione\n" +"le quali saranno sostituite prima di richiamare il\n" +"comando (non tutte sono utili per il comando a\n" +"fine playlist).\n" +"\n" +"%F: Frequenza (in hertz)\n" +"%c: Numero di canali\n" +"%f: nome del file (percorso completo)\n" +"%l: durata (in millisecondi)\n" +"%n o %s: Nome del brano\n" +"%r: Frequenza (in bit per secondo)\n" +"%t: Posizione nella playlist (%02d)\n" +"%p: Attualmente in riproduzione (1 oppure 0)\n" +"%a: Artista\n" +"%b: Album\n" +"%T: Titolo della traccia" + +#: src/song_change/song_change.c:488 +msgid "" +"Parameters passed to the shell should be encapsulated in " +"quotes. Doing otherwise is a security risk." +msgstr "" +"I parametri passati alla shell dovrebbero essere " +"racchiusi tra virgolette. Fare diversamente costituisce un rischio per la " +"sicurezza." + +#: src/song_change/song_change.c:499 +msgid "Commands" +msgstr "Comandi" + +#: src/song_change/song_change.c:529 +msgid "Song Change" +msgstr "Cambio brano" + +#: src/statusicon/statusicon.c:379 +msgid "About Status Icon Plugin" +msgstr "Informazioni sul plugin Icona di stato" + +#: src/statusicon/statusicon.c:380 +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager.\n" +msgstr "" +"Plugin Icona di stato\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"Questo plugin fornisce un'icona di stato, posta nell'area\n" +"del system tray del window manager.\n" + +#: src/statusicon/statusicon.c:451 +msgid "Status Icon Plugin - Preferences" +msgstr "Plugin Icona di stato - Preferenze" + +#: src/statusicon/statusicon.c:461 +msgid "Right-Click Menu" +msgstr "Menu click-destro" + +#: src/statusicon/statusicon.c:466 +msgid "Small playback menu #1" +msgstr "Piccolo menu di riproduzione #1" + +#: src/statusicon/statusicon.c:469 +msgid "Small playback menu #2" +msgstr "Piccolo menu di riproduzione #2" + +#: src/statusicon/statusicon.c:485 +msgid "Mouse Scroll Action" +msgstr "Azione scorrimento mouse" + +#: src/statusicon/statusicon.c:489 +msgid "Change volume" +msgstr "Cambia volume" + +#: src/statusicon/statusicon.c:491 +msgid "Change playing song" +msgstr "Cambia brano in riproduzione" + +#: src/statusicon/statusicon.c:504 +msgid "Other settings" +msgstr "Altre impostazioni" + +#: src/statusicon/statusicon.c:509 +msgid "Disable the popup window" +msgstr "Disabilita la finestra popup" + +#: src/statusicon/statusicon.c:516 +msgid "Close to the notification area (system tray)" +msgstr "Chiudi nell'area di notifica (system tray)" + +#: src/statusicon/statusicon.c:524 +msgid "Advance in playlist when scrolling upward" +msgstr "Avanza nella playlist quando si scorre verso l'alto" + +#: src/stereo_plugin/stereo.c:45 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin 1999." +msgstr "" +"Plugin Stereo extra\n" +"\n" +"Di Johan Levin 1999." + +#: src/stereo_plugin/stereo.c:64 +msgid "About Extra Stereo Plugin" +msgstr "Informazioni sul plugin Stereo extra" + +#: src/stereo_plugin/stereo.c:95 +msgid "Configure Extra Stereo" +msgstr "Configura Stereo extra" + +#: src/tonegen/tonegen.c:49 +msgid "About Tone Generator" +msgstr "Informazioni su Generatore toni" + +#: src/tonegen/tonegen.c:51 +msgid "" +"Sinus tone generator by Haavard Kvaalen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" +msgstr "" +"Generatore di toni sinusoidali di Haavard Kvaalen \n" +"Modificato da Daniel J. Peng \n" +"\n" +"Per utilizzarlo, aggiungi un URL: tone://frequenza1;frequenza2;frequenza3;…\n" +"p.es. tone://2000;2005 per riprodurre un tono a 2000Hz e un tono a 2005Hz" + +#: src/tonegen/tonegen.c:101 +#, c-format +msgid "%s %.1f Hz" +msgstr "%s %.1f Hz" + +#: src/tonegen/tonegen.c:101 +msgid "Tone Generator: " +msgstr "Generatore di toni: " + +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" +msgstr "Informazioni sul plugin I/O su file" + +#: src/vorbis/vorbis.c:573 +msgid "About Ogg Vorbis Audio Plugin" +msgstr "Informazioni sul plugin Audio Ogg Vorbis" + +#: src/vorbis/vorbis.c:578 +msgid "" +"Ogg Vorbis Plugin by the Xiph.org Foundation\n" +"\n" +"Original code by\n" +"Tony Arcieri \n" +"Contributions from\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visit the Xiph.org Foundation at http://www.xiph.org/\n" +msgstr "" +"Plugin Ogg Vorbis della Xiph.org Foundation\n" +"\n" +"Codice originale di\n" +"Tony Arcieri \n" +"Contributi di\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visita la Xiph.org Foundation su http://www.xiph.org/\n" + +#: src/vtx/about.c:14 +msgid "About Vortex Player" +msgstr "Informazioni su Lettore Vortex" + +#: src/vtx/about.c:15 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"\n" +"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" +"and other AY/YM music sites.\n" +"\n" +"Audacious implementation by Pavel Vymetalek " +msgstr "" +"Lettore per il formato di file Vortex di Sashnov Alexander \n" +"Fondato sul sorgente originale in_vtx.dll da Roman Sherbakov \n" +"\n" +"Musica in formato vtx si può trovare su http://vtx.microfor.ru/music.htm\n" +"e su altri siti musicali AY/YM.\n" +"\n" +"Implementazione per Audacious di Pavel Vymetalek " + +#: src/wavpack/wavpack.c:353 +#, c-format +msgid "Wavpack Decoder Plugin %s" +msgstr "Plugin di decodifica Wavpack %s" + +#: src/wavpack/wavpack.c:354 +msgid "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan\n" +"Visit the Wavpack site at http://www.wavpack.com/\n" +msgstr "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Parte del codice del plugin era di Miles Egan\n" +"Visita il sito Wavpack su http://www.wavpack.com/\n" + + diff -Nru audacious-plugins-2.4.4/po/ja.po audacious-plugins-3.2/po/ja.po --- audacious-plugins-2.4.4/po/ja.po 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/ja.po 2012-01-20 19:48:30.000000000 +0000 @@ -13,7 +13,7 @@ msgstr "" "Project-Id-Version: audacious-plugins HEAD\n" "Report-Msgid-Bugs-To: http://jira.atheme.org/\n" -"POT-Creation-Date: 2010-08-03 17:55-0400\n" +"POT-Creation-Date: 2011-07-17 18:49-0400\n" "PO-Revision-Date: 2008-07-08 13:10+0900\n" "Last-Translator: dai \n" "Language-Team: Japanese \n" @@ -22,7 +22,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/aac/libmp4.c:291 +#: src/aac/libmp4.c:256 #, fuzzy, c-format msgid "" "Using libfaad2-%s for decoding.\n" @@ -33,616 +33,55 @@ "FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com\n" "Copyright (c) 2005-2006 Audacious team" -#: src/aac/libmp4.c:296 +#: src/aac/libmp4.c:261 #, fuzzy msgid "About MP4 AAC decoder plugin" msgstr "MP4 AAC プレイヤプラグインã«ã¤ã„ã¦" -#: src/adplug/adplug-xmms.cc:153 -msgid "About " -msgstr "プラグインã«ã¤ã„ã¦" - -#: src/adplug/adplug-xmms.cc:157 -msgid "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"This plugin is released under the terms and conditions of the GNU LGPL.\n" -"See http://www.gnu.org/licenses/lgpl.html for details.\n" -"\n" -"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et " -"al.\n" -"Linked AdPlug library version: " -msgstr "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"ã“ã®ãƒ—ラグイン㯠GNU LGPL ã®æ¡é …ã¨æ¡ä»¶ã®ã‚‚ã¨ã«é…布ã•ã‚Œã¦ã„ã‚‹.\n" -"詳細㯠http://www.gnu.org/licenses/lgpl.html を見よ.\n" -"\n" -"ã“ã®ãƒ—ラグインã¯, copyright (C) Simon Peter ãŠã‚ˆã³ãã®ä»–ã«ã‚ˆã‚‹AdPlug ライブラ" -"リを用ã„ã¦ã„ã‚‹.\n" -"リンクã—ã¦ã„ã‚‹ AdPlug ライブラリã®ãƒ´ã‚¡ãƒ¼ã‚¸ãƒ§ãƒ³: " - -#: src/adplug/adplug-xmms.cc:234 -msgid "AdPlug :: Configuration" -msgstr "AdPlug :: 設定" - -#: src/adplug/adplug-xmms.cc:243 src/adplug/adplug-xmms.cc:504 -#: src/cdaudio-ng/configure.c:258 src/crystalizer/crystalizer.c:127 -#: src/echo_plugin/gui.c:122 src/jack/configure.c:146 src/null/null.c:109 -#: src/stereo_plugin/stereo.c:123 src/sun/configure.c:557 -msgid "Ok" -msgstr "OK" - -#: src/adplug/adplug-xmms.cc:253 src/alarm/interface.c:1398 -#: src/cdaudio-ng/configure.c:263 src/crystalizer/crystalizer.c:136 -#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 -#: src/modplug/gui/interface.cxx:715 src/null/null.c:110 -#: src/stereo_plugin/stereo.c:132 src/sun/configure.c:565 -msgid "Cancel" -msgstr "キャンセル" - -#: src/adplug/adplug-xmms.cc:269 src/console/configure.c:154 -#: src/modplug/gui/interface.cxx:629 src/modplug/gui/interface.cxx:888 -msgid "General" -msgstr "一般" - -#: src/adplug/adplug-xmms.cc:281 -msgid "Sound quality" -msgstr "音質" - -#: src/adplug/adplug-xmms.cc:286 src/modplug/gui/interface.cxx:188 -msgid "Resolution" -msgstr "解åƒåº¦" - -#: src/adplug/adplug-xmms.cc:288 -msgid "8bit" -msgstr " 8ビット" - -#: src/adplug/adplug-xmms.cc:293 -msgid "16bit" -msgstr "16ビット" - -#: src/adplug/adplug-xmms.cc:301 src/modplug/gui/interface.cxx:219 -msgid "Channels" -msgstr "ãƒãƒ£ãƒ³ãƒãƒ«æ•°" - -#: src/adplug/adplug-xmms.cc:303 src/filewriter/mp3.c:934 -#: src/mpg123/mpg123.c:174 src/sid/xs_interface.c:301 -msgid "Mono" -msgstr "モノラル" - -#: src/adplug/adplug-xmms.cc:308 src/filewriter/mp3.c:929 -#: src/modplug/gui/interface.cxx:205 src/mpg123/mpg123.c:174 -#: src/sid/xs_interface.c:308 -msgid "Stereo" -msgstr "ステレオ" - -#: src/adplug/adplug-xmms.cc:312 -msgid "" -"Setting stereo is not recommended, unless you need to. This won't add any " -"stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!" -msgstr "" -"å¿…è¦ã§ãªã„ãªã‚‰ã°, ステレオ設定ã¯æŽ¨å¥¨ã—ã¾ã›ã‚“. OPL2 ã¯å˜ã«ãƒ¢ãƒŽãƒ©ãƒ«ãªã®ã§, サウ" -"ンドã«ã‚¹ãƒ†ãƒ¬ã‚ªã‚¨ãƒ•ã‚§ã‚¯ãƒˆã¯ã‹ã‹ã‚Šã¾ã›ã‚“ãŒ, より CPU パワーを消費ã—ã¾ã™!" - -#: src/adplug/adplug-xmms.cc:320 -msgid "Frequency" -msgstr "周波数" - -#: src/adplug/adplug-xmms.cc:356 src/adplug/adplug-xmms.cc:560 -#: src/console/configure.c:156 src/gtkui/ui_manager.c:64 -#: src/skins/ui_manager.c:165 -msgid "Playback" -msgstr "æ¼”å¥" - -#: src/adplug/adplug-xmms.cc:360 -msgid "Detect songend" -msgstr "曲ã®çµ‚ã‚りを検出ã™ã‚‹" - -#: src/adplug/adplug-xmms.cc:364 -msgid "" -"If enabled, XMMS will detect a song's ending, stop it and advance in the " -"playlist. If disabled, XMMS won't take notice of a song's ending and loop it " -"all over again and again." -msgstr "" -"有効ãªã‚‰ã°, XMMS ã¯æ›²ã®çµ‚ã‚りを検出ã—, 曲をåœæ­¢ã—ã¦ãƒ—レイリストを進ã¿ã¾ã™. ç„¡" -"効ãªã‚‰ã°, XMMS ã¯æ›²ã®çµ‚ã‚りを通知ã›ãšã«, 曲全体を何度も繰り返ã—ã¾ã™. " - -#: src/adplug/adplug-xmms.cc:375 -msgid "Formats" -msgstr "フォーマット" - -#: src/adplug/adplug-xmms.cc:382 -msgid "Format selection" -msgstr "フォーマットé¸æŠž" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Format" -msgstr "フォーマット" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Extension" -msgstr "æ‹¡å¼µå­" - -#: src/adplug/adplug-xmms.cc:425 -msgid "" -"Selected file types will be recognized and played back by this plugin. " -"Deselected types will be ignored to make room for other plugins to play " -"these files." -msgstr "" -"é¸æŠžã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚¿ã‚¤ãƒ—ãŒèªè­˜ã•ã‚Œ, ã“ã®ãƒ—ラグインã«ã‚ˆã£ã¦å†ç”Ÿã•ã‚Œã¾ã™. é¸æŠž" -"ã•ã‚Œã¦ã„ãªã„タイプã¯, ã“ã®ãƒ—ラグインã‹ã‚‰ã¯ç„¡è¦–ã•ã‚Œ, ä»–ã®ãƒ—ラグインã«ã‚ˆã£ã¦å†" -"生ã•ã‚Œã¾ã™. " - -#: src/adplug/adplug-xmms.cc:511 -msgid "AdPlug :: File Info" -msgstr "AdPlug :: ファイル情報" - -#: src/adplug/adplug-xmms.cc:533 src/amidi-plug/i_configure-fluidsynth.c:348 -msgid "Filename" -msgstr "ファイルå" - -#: src/adplug/adplug-xmms.cc:537 src/skins/ui_playlist.c:390 -msgid "Title: " -msgstr "タイトル: " - -#: src/adplug/adplug-xmms.cc:538 -msgid "Author: " -msgstr "作者: " - -#: src/adplug/adplug-xmms.cc:539 -msgid "File Type: " -msgstr "ファイルタイプ: " - -#: src/adplug/adplug-xmms.cc:540 -msgid "Subsongs: " -msgstr "サブソング: " - -#: src/adplug/adplug-xmms.cc:541 -msgid "Instruments: " -msgstr "楽器: " - -#: src/adplug/adplug-xmms.cc:546 -msgid "Orders: " -msgstr "é †åº: " - -#: src/adplug/adplug-xmms.cc:547 -msgid "Patterns: " -msgstr "パターン: " - -#: src/adplug/adplug-xmms.cc:551 -msgid "Song" -msgstr "曲" - -#: src/adplug/adplug-xmms.cc:577 -msgid "Instrument name" -msgstr "楽器å" - -#: src/adplug/adplug-xmms.cc:619 -msgid "Song message" -msgstr "曲メッセージ" - -#: src/adplug/adplug-xmms.cc:641 -msgid "Subsong selection" -msgstr "サブソングé¸æŠž" - -#: src/adplug/adplug-xmms.cc:707 -msgid "Order: " -msgstr "é †åº: " - -#: src/adplug/adplug-xmms.cc:708 -msgid "Pattern: " -msgstr "パターン: " - -#: src/adplug/adplug-xmms.cc:710 -msgid "Row: " -msgstr "列: " - -#: src/adplug/adplug-xmms.cc:711 -msgid "Speed: " -msgstr "æ—©ã•: " - -#: src/adplug/adplug-xmms.cc:712 -msgid "Timer: " -msgstr "タイマー: " - -#: src/adplug/adplug-xmms.cc:713 src/console/configure.c:234 -#: src/sid/xs_interface.c:354 -msgid "Hz" -msgstr "Hz" - -#: src/alarm/interface.c:34 -msgid "About XMMS Alarm" -msgstr "XMMS アラームã«ã¤ã„ã¦" - -#: src/alarm/interface.c:47 -msgid "XMMS Alarm" -msgstr "XMMS アラーム" - -#: src/alarm/interface.c:56 -msgid "" -"An XMMS plugin which can be used\n" -"to start playing at a certain time.\n" -"\n" -"Send all complaints to:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" -msgstr "" -"特定ã®æ™‚é–“ã«æ¼”å¥ã‚’開始ã™ã‚‹ã®ã«\n" -"用ã„られる XMMS プラグイン.\n" -"\n" -"å•é¡ŒãŒã‚ã‚Šã¾ã—ãŸã‚‰ã™ã¹ã¦ä»¥ä¸‹ã¸é€ã£ã¦ãã ã•ã„:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" - -#: src/alarm/interface.c:71 src/bluetooth/scan_gui.c:149 src/lirc/about.c:115 -#: src/modplug/gui/interface.cxx:972 src/sid/xs_about.c:214 -#: src/sid/xs_interface.c:1825 -msgid "Close" -msgstr "é–‰ã˜ã‚‹" - -#: src/alarm/interface.c:101 -msgid "Alarm" -msgstr "アラーム" - -#: src/alarm/interface.c:109 -msgid "This is your wakeup call." -msgstr "目覚ã¾ã—ã§ã™." - -#: src/alarm/interface.c:124 src/alarm/interface.c:1389 -#: src/modplug/gui/interface.cxx:703 src/sid/xs_config.c:322 -msgid "OK" -msgstr "OK" - -#: src/alarm/interface.c:152 -msgid "Select Playlist" -msgstr "プレイリストã®é¸æŠž" - -#: src/alarm/interface.c:196 -msgid "Sorry" -msgstr "ã”ã‚ã‚“ãªã•ã„" - -#: src/alarm/interface.c:204 -msgid "Warning" -msgstr "警告" - -#: src/alarm/interface.c:213 -msgid "" -"For safety reasons the \"quiet\" time must be at least 65 seconds longer " -"than the fading time, it must also be more than 10 seconds. This basically " -"means that there is a bug in the code and until I find a way of really " -"fixing it this message will appear :)\n" -"\n" -"Your fading settings have NOT been saved\n" -"\n" -"--\n" -"Adam" -msgstr "" -"安全ã®ãŸã‚ã«, \"é™ã‹ã«ãªã‚‹\"時間ã¯å°‘ãªãã¨ã‚‚ 65 秒ã‚ã‚Š, 10 秒以上ãªã‘ã‚Œã°ãªã‚‰" -"ãªã„フェーディング時間より長ããªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“. ã“ã‚Œã¯åŸºæœ¬çš„ã«ã‚³ãƒ¼ãƒ‰ã®ãƒã‚°" -"ã§ã‚ã‚Š, 真ã®ä¿®æ­£æ–¹æ³•ãŒè¦‹ã¤ã‹ã‚‹ã¾ã§ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯è¡¨ç¤ºã•ã‚Œã‚‹ã§ã—ょㆠ:)\n" -"\n" -"フェーディング設定ã¯ä¿å­˜ã•ã‚Œã¾ã›ã‚“\n" -"\n" -"--\n" -"Adam" - -#: src/alarm/interface.c:229 -msgid "Oh Well" -msgstr "ã‚ã‹ã‚Šã¾ã—ãŸ" - -#: src/alarm/interface.c:388 -msgid "Alarm Settings" -msgstr "アラーム設定" - -#: src/alarm/interface.c:404 src/alarm/interface.c:576 -#: src/alarm/interface.c:948 -msgid "Time" -msgstr "時間" - -#: src/alarm/interface.c:445 -msgid "hours" -msgstr "時" - -#: src/alarm/interface.c:506 -msgid "h" -msgstr "時" - -#: src/alarm/interface.c:536 -msgid "minutes" -msgstr "分" - -#: src/alarm/interface.c:554 -msgid "Quiet after:" -msgstr "é™ã‹ã«ãªã‚‹ã¾ã§:" - -#: src/alarm/interface.c:564 -msgid "Alarm at (default):" -msgstr "アラーム(デフォルト):" - -#: src/alarm/interface.c:584 -msgid "Choose the days for the alarm to come on" -msgstr "アラームを鳴らã™æ›œæ—¥ã®é¸æŠž" - -#: src/alarm/interface.c:612 src/alarm/interface.c:660 -#: src/alarm/interface.c:708 src/alarm/interface.c:756 -#: src/alarm/interface.c:804 src/alarm/interface.c:852 -#: src/alarm/interface.c:900 src/OSS/configure.c:166 -#: src/skins/ui_manager.c:439 src/skins/ui_manager.c:460 -msgid "Default" -msgstr "デフォルト" - -#: src/alarm/interface.c:938 -msgid "Day" -msgstr "曜日" - -#: src/alarm/interface.c:958 -msgid "Tuesday" -msgstr "ç«" - -#: src/alarm/interface.c:969 -msgid "Wednesday" -msgstr "æ°´" - -#: src/alarm/interface.c:980 -msgid "Thursday" -msgstr "木" - -#: src/alarm/interface.c:991 -msgid "Friday" -msgstr "金" - -#: src/alarm/interface.c:1002 -msgid "Saturday" -msgstr "土" - -#: src/alarm/interface.c:1013 -msgid "Sunday" -msgstr "æ—¥" - -#: src/alarm/interface.c:1023 -msgid "Monday" -msgstr "月" - -#: src/alarm/interface.c:1034 -msgid "Days" -msgstr "曜日" - -#: src/alarm/interface.c:1050 -msgid "Fading" -msgstr "フェーディング" - -#: src/alarm/interface.c:1087 src/sid/xs_interface.c:921 -#: src/sid/xs_interface.c:975 src/sid/xs_interface.c:1155 -msgid "seconds" -msgstr "秒" - -#: src/alarm/interface.c:1095 src/alarm/interface.c:1211 -#: src/modplug/gui/interface.cxx:550 -msgid "Volume" -msgstr "音é‡" - -#: src/alarm/interface.c:1121 -msgid "Current" -msgstr "ç¾åœ¨ã®å€¤" - -#: src/alarm/interface.c:1128 -msgid "reset to current output volume" -msgstr "ç¾åœ¨ã®å‡ºåŠ›éŸ³é‡ã«ãƒªã‚»ãƒƒãƒˆ" - -#: src/alarm/interface.c:1130 -msgid "Start at" -msgstr "開始" - -#: src/alarm/interface.c:1158 src/alarm/interface.c:1202 -msgid "%" -msgstr "%" - -#: src/alarm/interface.c:1174 -msgid "Final" -msgstr "最終" - -#: src/alarm/interface.c:1227 -msgid "Additional Command" -msgstr "追加コマンド" - -#: src/alarm/interface.c:1253 -msgid "enable" -msgstr "有効" - -#: src/alarm/interface.c:1261 -msgid "Playlist (optional)" -msgstr "プレイリスト (オプショナル)" - -#: src/alarm/interface.c:1287 -msgid "Browse..." -msgstr "å‚ç…§..." - -#: src/alarm/interface.c:1295 src/alarm/interface.c:1460 -msgid "Reminder" -msgstr "リマインダ" - -#: src/alarm/interface.c:1312 -msgid "Use reminder" -msgstr "リマインダを使ã†" - -#: src/alarm/interface.c:1328 src/sndstretch/sndstretch_xmms.c:394 -msgid "Options" -msgstr "オプション" - -#: src/alarm/interface.c:1336 -msgid "What do these options mean?" -msgstr "オプションã®æ„味" - -#: src/alarm/interface.c:1364 -msgid "" -"\n" -"Time\n" -" Alarm at: \n" -" The time for the alarm to come on.\n" -"\n" -" Quiet After: \n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading: \n" -" Fade the volume up to the chosen volume \n" -" for this amount of time.\n" -"\n" -" Start at: \n" -" Start fading from this volume.\n" -"\n" -" Final: \n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist: \n" -" Load this playlist for playing songs from \n" -" (must have .m3u extension). If no playlist\n" -" is given then the songs which are currently\n" -" in the list will be used.\n" -" The URL of an mp3/ogg stream can also be\n" -" entered here, but loading of playlists from\n" -" URLs is not currently supported by xmms.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off,\n" -" type the reminder in the box and turn on the\n" -" toggle button if you want it to be shown.\n" -msgstr "" -"\n" -"時間\n" -" アラーム: \n" -" アラームを鳴らã™æ™‚é–“ã§ã™.\n" -"\n" -" é™ã‹ã«ãªã‚‹ã¾ã§: \n" -" 指定ã®æ™‚é–“ãŒçµŒéŽã—ãŸã‚‰ã‚¢ãƒ©ãƒ¼ãƒ ã‚’åœæ­¢ã—ã¾ã™.\n" -" (目覚ã—ダイアログãŒé–‰ã˜ã‚‰ã‚Œã¦ã„ãªã‘ã‚Œã°)\n" -"\n" -"\n" -"曜日\n" -" 曜日:\n" -" アラームを有効ã«ã™ã‚‹æ›œæ—¥ã‚’é¸æŠžã—ã¾ã™.\n" -"\n" -" 時間:\n" -" å„曜日ã®ã‚¢ãƒ©ãƒ¼ãƒ ã®æ™‚é–“ã‚’é¸æŠžã—ã¾ã™.\n" -" ã‚ã‚‹ã„ã¯ãƒˆã‚°ãƒ«ãƒœã‚¿ãƒ³ã§ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®æ™‚é–“ã‚’\n" -" 使ã†ã‹é¸æŠžã—ã¾ã™.\n" -"\n" -"\n" -"音é‡\n" -" フェーディング: \n" -" 指定ã®æ™‚é–“ã‚’ã‹ã‘ã¦, 指定ã®éŸ³é‡ã¾ã§\n" -" å¾ã€…ã«éŸ³é‡ã‚’上ã’ã¦ã„ãã¾ã™.\n" -"\n" -" 開始: \n" -" ã“ã®éŸ³é‡ã‹ã‚‰ãƒ•ã‚§ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’開始ã—ã¾ã™.\n" -"\n" -" 最終: \n" -" ã“ã®éŸ³é‡ã§ãƒ•ã‚§ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’終ãˆã¾ã™.\n" -" ã‚‚ã—フェーディング時間㌠0 ãªã‚‰ã°,\n" -" ã“ã®éŸ³é‡ã§æ¼”å¥ãŒé–‹å§‹ã•ã‚Œã¾ã™.\n" -"\n" -"\n" -"オプション:\n" -" 追加コマンド:\n" -" アラームã®æ™‚é–“ã«æŒ‡å®šã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¾ã™.\n" -"\n" -" プレイリスト: \n" -" 曲を演å¥ã™ã‚‹ãŸã‚ã®ãƒ—レイリストを読ã¿è¾¼ã¿ã¾ã™\n" -" (.m3u æ‹¡å¼µå­ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“). \n" -" プレイリストãŒæŒ‡å®šã•ã‚Œãªã‘ã‚Œã°, \n" -" ç¾åœ¨ã®ãƒªã‚¹ãƒˆã®æ›²ãŒç”¨ã„られã¾ã™.\n" -" mp3 ã‹ ogg ストリーム㮠URL も指定ã§ãã¾ã™ãŒ,\n" -" URL ã‹ã‚‰ã®ãƒ—レイリスト読ã¿è¾¼ã¿ã¯\n" -" ç¾åœ¨ã® xmms ã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“.\n" -"\n" -" リマインダ:\n" -" アラームをåœæ­¢ã™ã‚‹éš›ã«ãƒªãƒžã‚¤ãƒ³ãƒ€ã‚’表示ã—ã¾ã™.\n" -" ã“れを利用ã™ã‚‹ã«ã¯ãƒœãƒƒã‚¯ã‚¹å†…ã«ãƒªãƒžã‚¤ãƒ³ãƒ€ã‚’書ã\n" -" トグルボタンを有効ã«ã—ã¾ã™.\n" - -#: src/alarm/interface.c:1366 src/gtkui/ui_manager.c:165 -#: src/skins/ui_manager.c:371 -msgid "Help" -msgstr "ヘルプ" - -#: src/alarm/interface.c:1468 -msgid "Your reminder for today is.." -msgstr "今日ã®ãƒªãƒžã‚¤ãƒ³ãƒ€ã¯.." - -#: src/alarm/interface.c:1493 -msgid "Thankyou" -msgstr "ã‚ã‚ŠãŒã¨ã†" - -#: src/alsa/config.c:209 +#: src/alsa/config.c:210 #, fuzzy msgid "Default PCM device" msgstr "デフォルト PCM デãƒã‚¤ã‚¹ (%s)" -#: src/alsa/config.c:234 +#: src/alsa/config.c:235 #, fuzzy msgid "Default mixer device" msgstr "デフォルト PCM デãƒã‚¤ã‚¹ (%s)" -#: src/alsa/config.c:438 +#: src/alsa/config.c:447 #, fuzzy msgid "ALSA Output Plugin Preferences" msgstr "ステータスアイコンプラグイン - 設定" -#: src/alsa/config.c:445 +#: src/alsa/config.c:454 #, fuzzy msgid "PCM device:" msgstr "ミキサデãƒã‚¤ã‚¹:" -#: src/alsa/config.c:447 src/OSS/configure.c:256 src/sun/configure.c:218 +#: src/alsa/config.c:456 src/OSS/configure.c:246 msgid "Mixer device:" msgstr "ミキサデãƒã‚¤ã‚¹:" -#: src/alsa/config.c:449 +#: src/alsa/config.c:458 #, fuzzy msgid "Mixer element:" msgstr "ミキサデãƒã‚¤ã‚¹:" -#: src/alsa/config.c:452 +#: src/alsa/config.c:461 msgid "Work around drain hangup" msgstr "" -#: src/alsa/plugin.c:61 +#: src/alsa/plugin.c:59 #, fuzzy msgid "About ALSA Output Plugin" msgstr "JACK 出力プラグイン 0.17 ã«ã¤ã„ã¦" -#: src/alsa/plugin.c:83 +#: src/alsa/plugin.c:81 #, fuzzy msgid "ALSA error" msgstr "エラー" -#: src/amidi-plug/amidi-plug.c:323 +#: src/amidi-plug/amidi-plug.c:335 msgid "" "You have not selected any sequencer ports for MIDI playback. You can do so " "in the MIDI plugin preferences." @@ -672,11 +111,11 @@ "㟠MIDI イベントã¯ç›´æŽ¥æ¼”å¥ã•ã‚Œã‚‹ã§ã—ょã†.\n" "ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã¯ Giacomo Lozito ã«ã‚ˆã£ã¦æ›¸ã‹ã‚Œã¾ã—ãŸ." -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:41 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 msgid "FluidSynth Backend " msgstr "FluidSynth ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ " -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:43 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 msgid "" "This backend produces audio by sending MIDI events to FluidSynth, a real-" "time software synthesizer based on the SoundFont2 specification (www." @@ -692,83 +131,43 @@ "ã‚ŒãŸå‡ºåŠ›ãƒ—ラグインã«ã‚ˆã£ã¦å‡¦ç†ã•ã‚Œã¾ã™.\n" "ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã¯ Giacomo Lozito ã«ã‚ˆã£ã¦æ›¸ã‹ã‚Œã¾ã—ãŸ." -#: src/amidi-plug/i_configure-alsa.c:221 +#: src/amidi-plug/i_configure-alsa.c:228 msgid "ALSA BACKEND CONFIGURATION" msgstr "ALSA ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰è¨­å®š" -#: src/amidi-plug/i_configure-alsa.c:326 +#: src/amidi-plug/i_configure-alsa.c:331 msgid "Port" msgstr "ãƒãƒ¼ãƒˆ" -#: src/amidi-plug/i_configure-alsa.c:328 +#: src/amidi-plug/i_configure-alsa.c:333 msgid "Client name" msgstr "クライアントå" -#: src/amidi-plug/i_configure-alsa.c:330 +#: src/amidi-plug/i_configure-alsa.c:335 msgid "Port name" msgstr "ãƒãƒ¼ãƒˆå" -#: src/amidi-plug/i_configure-alsa.c:341 +#: src/amidi-plug/i_configure-alsa.c:346 msgid "ALSA output ports" msgstr "ALSA 出力ãƒãƒ¼ãƒˆ" -#: src/amidi-plug/i_configure-alsa.c:394 +#: src/amidi-plug/i_configure-alsa.c:399 msgid "Soundcard: " msgstr "サウンドカード: " -#: src/amidi-plug/i_configure-alsa.c:396 +#: src/amidi-plug/i_configure-alsa.c:401 msgid "Mixer control: " msgstr "ミキサコントロール:" -#: src/amidi-plug/i_configure-alsa.c:408 +#: src/amidi-plug/i_configure-alsa.c:413 msgid "Mixer settings" msgstr "ミキサ設定" -#: src/amidi-plug/i_configure-alsa.c:421 -msgid "" -"* Select ALSA output ports *\n" -"MIDI events will be sent to the ports selected here. In example, if your " -"audio card provides a hardware synth and you want to play MIDI with it, " -"you'll probably want to select the wavetable synthesizer ports." -msgstr "" -"* ALSA 出力ãƒãƒ¼ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„ *\n" -"MIDI イベントã¯ã“ã“ã§é¸æŠžã•ã‚ŒãŸãƒãƒ¼ãƒˆã«é€ã‚‰ã‚Œã¾ã™. 例ãˆã°, ã‚ãªãŸã®ã‚ªãƒ¼ãƒ‡ã‚£ã‚ª" -"カードãŒãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã‚·ãƒ³ã‚»ã‚’æä¾›ã—, ãれ㧠MIDI ã‚’æ¼”å¥ã—ãŸã„ãªã‚‰ã°, ウェーブ" -"テーブルシンセサイザーãƒãƒ¼ãƒˆã‚’é¸ã¶ã¨ã‚ˆã„ã§ã—ょã†." - -#: src/amidi-plug/i_configure-alsa.c:426 -msgid "" -"* Select ALSA mixer card *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volumeslider will " -"manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" -"* ALSA ミキサカードをé¸æŠžã—ã¦ãã ã•ã„ *\n" -"ALSA ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã¯ ALSA を直接通ã—ã¦å‡ºåŠ›ã—ã¾ã™ã®ã§, プレイヤã®ã‚¨ãƒ•ã‚§ã‚¯ãƒˆã‚„出" -"力プラグインã¯ä½¿ç”¨ã—ã¾ã›ã‚“. å†ç”Ÿä¸­, プレイヤã®ãƒœãƒªãƒ¥ãƒ¼ãƒ ã‚¹ãƒ©ã‚¤ãƒ€ã¯ã“ã“ã§é¸æŠž" -"ã—ãŸãƒŸã‚­ã‚µã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã‚’æ“作ã—ã¾ã™. ウェーブテーブルシンセサイザーãƒãƒ¼ãƒˆã‚’" -"使ã£ã¦ã„ã‚‹ãªã‚‰ã°, ã“ã“ã§ã‚·ãƒ³ã‚»ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã‚’é¸ã¶ã¨ã‚ˆã„ã§ã—ょã†." - -#: src/amidi-plug/i_configure-alsa.c:433 -msgid "" -"* Select ALSA mixer control *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volume slider " -"will manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" -"* ALSA ミキサコントロールをé¸æŠžã—ã¦ãã ã•ã„ *\n" -"ALSA ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã¯ ALSA を直接通ã—ã¦å‡ºåŠ›ã—ã¾ã™ã®ã§, プレイヤã®ã‚¨ãƒ•ã‚§ã‚¯ãƒˆã‚„出" -"力プラグインã¯ä½¿ç”¨ã—ã¾ã›ã‚“. å†ç”Ÿä¸­, プレイヤã®ãƒœãƒªãƒ¥ãƒ¼ãƒ ã‚¹ãƒ©ã‚¤ãƒ€ã¯ã“ã“ã§é¸æŠž" -"ã—ãŸãƒŸã‚­ã‚µã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã‚’æ“作ã—ã¾ã™. ウェーブテーブルシンセサイザーãƒãƒ¼ãƒˆã‚’" -"使ã£ã¦ã„ã‚‹ãªã‚‰ã°, ã“ã“ã§ã‚·ãƒ³ã‚»ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã‚’é¸ã¶ã¨ã‚ˆã„ã§ã—ょã†." - -#: src/amidi-plug/i_configure-alsa.c:444 +#: src/amidi-plug/i_configure-alsa.c:429 msgid "ALSA Backend not loaded or not available" msgstr "ALSA ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ãŒèª­ã¿è¾¼ã¾ã‚Œã¦ã„ãªã„ã‹æœ‰åŠ¹ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: src/amidi-plug/i_configure-alsa.c:463 +#: src/amidi-plug/i_configure-alsa.c:448 msgid "" "ALSA\n" "backend" @@ -776,149 +175,51 @@ "ALSA\n" "ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰" -#: src/amidi-plug/i_configure-ap.c:56 +#: src/amidi-plug/i_configure-ap.c:59 msgid "AMIDI-Plug - backend information" msgstr "AMIDI-Plug - ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰æƒ…å ±" -#: src/amidi-plug/i_configure-ap.c:194 +#: src/amidi-plug/i_configure-ap.c:196 msgid "AMIDI-PLUG PREFERENCES" msgstr "AMIDI-PLUG 設定" -#: src/amidi-plug/i_configure-ap.c:221 +#: src/amidi-plug/i_configure-ap.c:223 msgid "Backend selection" msgstr "ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰é¸æŠž" -#: src/amidi-plug/i_configure-ap.c:225 +#: src/amidi-plug/i_configure-ap.c:227 msgid "Available backends" msgstr "有効ãªãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰" -#: src/amidi-plug/i_configure-ap.c:255 +#: src/amidi-plug/i_configure-ap.c:257 msgid "Playback settings" msgstr "æ¼”å¥è¨­å®š" -#: src/amidi-plug/i_configure-ap.c:260 +#: src/amidi-plug/i_configure-ap.c:262 msgid "Transpose: " msgstr "トランスãƒãƒ¼ã‚º: " -#: src/amidi-plug/i_configure-ap.c:269 +#: src/amidi-plug/i_configure-ap.c:271 msgid "Drum shift: " msgstr "ドラムシフト: " -#: src/amidi-plug/i_configure-ap.c:287 +#: src/amidi-plug/i_configure-ap.c:289 msgid "Advanced settings" msgstr "高度ãªè¨­å®š" -#: src/amidi-plug/i_configure-ap.c:291 +#: src/amidi-plug/i_configure-ap.c:293 msgid "pre-calculate length of MIDI files in playlist" msgstr "プレイリスト㮠MIDI ファイルã®é•·ã•ã‚’å‰ã‚‚ã£ã¦è¨ˆç®—ã™ã‚‹" -#: src/amidi-plug/i_configure-ap.c:296 +#: src/amidi-plug/i_configure-ap.c:298 msgid "extract comments from MIDI file (if available)" msgstr "MIDI ファイルã‹ã‚‰ã‚³ãƒ¡ãƒ³ãƒˆã‚’抽出ã™ã‚‹ (å¯èƒ½ãªã‚‰ã°)" -#: src/amidi-plug/i_configure-ap.c:301 +#: src/amidi-plug/i_configure-ap.c:303 msgid "extract lyrics from MIDI file (if available)" msgstr "MIDI ファイルã‹ã‚‰æ­Œè©žã‚’抽出ã™ã‚‹ (å¯èƒ½ãªã‚‰ã°)" -#: src/amidi-plug/i_configure-ap.c:320 -msgid "" -"* Backend selection *\n" -"AMIDI-Plug works with backends, in a modular fashion; here you should select " -"your backend; that is, the way MIDI events are going to be handled and " -"played.\n" -"If you have a hardware synthesizer on your audio card, and ALSA supports it, " -"you'll want to use the ALSA backend. It can also be used with anything that " -"provides an interface to the ALSA sequencer, including software synths or " -"external devices.\n" -"If you want to rely on a software synthesizer and/or want to pipe audio into " -"effect and output plugins of the player you'll want to use the good " -"FluidSynth backend.\n" -"Press the info button to read specific information about each backend." -msgstr "" -"* ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã‚’é¸æŠžã—ã¦ãã ã•ã„ *\n" -"AMIDI-Plug ã¯ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«å½¢å¼ã®ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã¨å‹•ä½œã—ã¾ã™. ã“ã“ã§ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã‚’é¸" -"択ã—ã¦ãã ã•ã„. ãã‚Œã«ã‚ˆã£ã¦, MIDI イベントã¯å–り扱ã‚ã‚Œ, æ¼”å¥ã•ã‚Œã¾ã™.\n" -"ã‚ãªãŸã®ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚«ãƒ¼ãƒ‰ã«ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã‚·ãƒ³ã‚»ã‚µã‚¤ã‚¶ãƒ¼ãŒã¤ã„ã¦ã„ã¦, ALSA ãŒãã‚Œ" -"をサãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹ãªã‚‰ã°, ALSA ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã‚’使ã†ã¨ã‚ˆã„ã§ã—ょã†.ã“ã‚Œã¯ã‚½ãƒ•ãƒˆ" -"ウェアシンセや外部デãƒã‚¤ã‚¹ã‚’å«ã‚€, ALSA シーケンサã¸ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã‚’æä¾›ã™" -"ã‚‹ã‚らゆるもã®ã‚’用ã„ã‚‹ã“ã¨ãŒã§ãã¾ã™.\n" -"ソフトウェアシンセサイザーを当ã¦ã«ã—ãŸã„, ãŠã‚ˆã³ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚’プレイヤã®ã‚¨ãƒ•ã‚§" -"クトや出力プラグインã«é€šã—ãŸã„ãªã‚‰ã°, 有用㪠FluidSynth ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã‚’用ã„ã‚‹" -"ã¨ã‚ˆã„ã§ã—ょã†.\n" -"ãã‚Œãžã‚Œã®ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã®ç‰¹å®šã®æƒ…報を読むã«ã¯æƒ…報ボタンを押ã—ã¦ãã ã•ã„." - -#: src/amidi-plug/i_configure-ap.c:331 -#, fuzzy -msgid "" -"* Transpose function *\n" -"This option allows you to play the midi file transposed in a different key, " -"by shifting of the desired number of semitones all its notes (excepting " -"those on midi channel 10, reserved for percussions). Especially useful if " -"you wish to sing or play along with another instrument." -msgstr "" -"* トランスãƒãƒ¼ã‚ºæ©Ÿèƒ½ *\n" -"ã“ã®ã‚ªãƒ—ション㯠MIDI ファイルを, å…¨ã¦ã®éŸ³(パーカッションã®ãŸã‚ã«äºˆç´„ã•ã‚ŒãŸ " -"MIDI ãƒãƒ£ãƒ³ãƒãƒ« 10 を除ã)ã®åŠéŸ³ã‚’è¦æ±‚ã•ã‚ŒãŸæ•°ã§å¤‰åŒ–ã•ã›ãŸç•°ãªã‚‹ã‚­ãƒ¼ã§, トラ" -"ンスãƒãƒ¼ã‚ºã—ã¦æ¼”å¥ã§ãるよã†ã«ã—ã¾ã™.ä»–ã®æ¥½å™¨ã‚’加ãˆã¦æ¼”å¥ã•ã›ãŸã„ãªã‚‰ã°éžå¸¸ã«" -"有用ã§ã™." - -#: src/amidi-plug/i_configure-ap.c:337 -msgid "" -"* Drumshift function *\n" -"This option allows you to shift notes on midi channel 10 (the standard " -"percussions channel) of the desired number of semitones. This results in " -"different drumset and percussions being used during midi playback, so if you " -"wish to enhance (or reduce, or alter) percussion sounds, try to play with " -"this value." -msgstr "" -"* ドラムシフト機能 *\n" -"ã“ã®ã‚ªãƒ—ションã¯, MIDI ãƒãƒ£ãƒ³ãƒãƒ« 10 (標準ã®ãƒ‘ーカッションãƒãƒ£ãƒ³ãƒãƒ«) ã®åŠéŸ³" -"ã‚’è¦æ±‚ã•ã‚ŒãŸæ•°ã§å¤‰åŒ–ã•ã›ã‚‹ã‚ˆã†ã«ã—ã¾ã™. MIDI ã®æ¼”å¥ä¸­ã«ç•°ãªã‚‹ãƒ‰ãƒ©ãƒ ã‚»ãƒƒãƒˆã¨" -"パーカッションãŒç”¨ã„られるã“ã¨ã«ã‚ˆã‚Š, ã“ã®å€¤ã‚’用ã„ã¦æ¼”å¥ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Š, パー" -"カッションã®éŸ³ã‚’高ã‚ã‚‹ (ã¾ãŸã¯å¼±ã‚ã‚‹, ã¾ãŸã¯å¤‰ãˆã‚‹) ã“ã¨ãŒã§ãã¾ã™." - -#: src/amidi-plug/i_configure-ap.c:344 -msgid "" -"* Pre-calculate MIDI length *\n" -"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as " -"soon as the player requests it, instead of doing that only when the MIDI " -"file is being played. In example, MIDI length will be calculated straight " -"after adding MIDI files in a playlist. Disable this option if you want " -"faster playlist loading (when a lot of MIDI files are added), enable it to " -"display more information in the playlist straight after loading." -msgstr "" -"* MIDI é•·ã‚’å‰ã‚‚ã£ã¦è¨ˆç®— *\n" -"ã“ã®ã‚ªãƒ—ションãŒæœ‰åŠ¹ãªã‚‰ã°, AMIDI-Plug 㯠MIDI ファイルã®é•·ã•ã‚’, MIDI ファイ" -"ルãŒæ¼”å¥ã•ã‚Œã‚ˆã†ã¨ã—ãŸã¨ãã ã‘ã§ã¯ãªã, プレイヤãŒè¦æ±‚ã—ãŸã¨ãã™ãã«è¨ˆç®—ã—ã¾" -"ã™. 例ãˆã°, MIDI ファイルãŒãƒ—レイリスト中ã«è¿½åŠ ã•ã‚ŒãŸç›´å¾Œã« MIDI 長を計算ã—ã¾" -"ã™. (多ãã® MIDI ファイルãŒè¿½åŠ ã•ã‚Œã¦ã„ã‚‹ã¨ã) プレイリストã®èª­ã¿è¾¼ã¿ã‚’æ—©ãã—" -"ãŸã„ãªã‚‰ã°, ã“ã®ã‚ªãƒ—ションを無効ã«ã—ã¾ã™.プレイリストを読ã¿è¾¼ã‚“ã ç›´å¾Œã«ã‚ˆã‚Šå¤š" -"ãã®æƒ…報を表示ã•ã›ãŸã„ãªã‚‰ã°, 有効ã«ã—ã¾ã™. " - -#: src/amidi-plug/i_configure-ap.c:353 -msgid "" -"* Extract comments from MIDI files *\n" -"Some MIDI files contain text comments (author, copyright, instrument notes, " -"etc.). If this option is enabled, AMIDI-Plug will extract and display " -"comments (if available) in the file information dialog." -msgstr "" -"* MIDI ファイルã‹ã‚‰ã‚³ãƒ¡ãƒ³ãƒˆã‚’抽出 *\n" -"MIDI ファイルã¯ãƒ†ã‚­ã‚¹ãƒˆã‚³ãƒ¡ãƒ³ãƒˆ(作者, 著作権情報, 楽譜ãªã©)ã‚’å«ã‚“ã§ã„ã‚‹ã“ã¨ãŒ" -"ã‚ã‚Šã¾ã™. ã“ã®ã‚ªãƒ—ションãŒæœ‰åŠ¹ãªã‚‰ã°, AMIDI-Plug ã¯ã‚³ãƒ¡ãƒ³ãƒˆã‚’抽出ã—, ファイル" -"情報ダイアログ内ã«è¡¨ç¤ºã—ã¾ã™ (å¯èƒ½ãªã‚‰ã°)." - -#: src/amidi-plug/i_configure-ap.c:358 -msgid "" -"* Extract lyrics from MIDI files *\n" -"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug " -"will extract and display song lyrics (if available) in the file information " -"dialog." -msgstr "" -"* MIDI ファイルã‹ã‚‰æ­Œè©žã‚’抽出 *\n" -"MIDI ファイルã¯æ­Œè©žã‚’å«ã‚“ã§ã„ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™. ã“ã®ã‚ªãƒ—ションãŒæœ‰åŠ¹ãªã‚‰ã°, " -"AMIDI-Plug ã¯æ­Œè©žã‚’抽出ã—, ファイル情報ダイアログ内ã«è¡¨ç¤ºã—ã¾ã™ (å¯èƒ½ãªã‚‰ã°)." - -#: src/amidi-plug/i_configure-ap.c:375 +#: src/amidi-plug/i_configure-ap.c:333 msgid "" "AMIDI\n" "Plug" @@ -926,231 +227,113 @@ "AMIDI\n" "Plug" -#: src/amidi-plug/i_configure.c:73 +#: src/amidi-plug/i_configure.c:76 msgid "AMIDI-Plug - select file" msgstr "AMIDI-Plug - ファイルé¸æŠž" -#: src/amidi-plug/i_configure.c:126 +#: src/amidi-plug/i_configure.c:129 msgid "AMIDI-Plug - configuration" msgstr "AMIDI-Plug - 設定" -#: src/amidi-plug/i_configure-fluidsynth.c:52 +#: src/amidi-plug/i_configure-fluidsynth.c:55 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - サウンドフォント ファイルã®é¸æŠž" -#: src/amidi-plug/i_configure-fluidsynth.c:268 +#: src/amidi-plug/i_configure-fluidsynth.c:270 msgid "FLUIDSYNTH BACKEND CONFIGURATION" msgstr "FLUIDSYNTH ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰è¨­å®š" -#: src/amidi-plug/i_configure-fluidsynth.c:316 +#: src/amidi-plug/i_configure-fluidsynth.c:313 msgid "SoundFont settings" msgstr "サウンドフォント設定" -#: src/amidi-plug/i_configure-fluidsynth.c:352 +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "ファイルå" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 msgid "Size (bytes)" msgstr "サイズ (ãƒã‚¤ãƒˆ)" -#: src/amidi-plug/i_configure-fluidsynth.c:401 +#: src/amidi-plug/i_configure-fluidsynth.c:398 msgid "Load SF on player start" msgstr "プレイヤ起動時㫠SF を読ã¿è¾¼ã‚€" -#: src/amidi-plug/i_configure-fluidsynth.c:405 +#: src/amidi-plug/i_configure-fluidsynth.c:402 msgid "Load SF on first midifile play" msgstr "MIDI ファイルã®æœ€åˆã®æ¼”å¥æ™‚ã« SF を読ã¿è¾¼ã‚€" -#: src/amidi-plug/i_configure-fluidsynth.c:420 +#: src/amidi-plug/i_configure-fluidsynth.c:417 msgid "Synthesizer settings" msgstr "シンセサイザ設定" -#: src/amidi-plug/i_configure-fluidsynth.c:429 +#: src/amidi-plug/i_configure-fluidsynth.c:426 msgid "gain" msgstr "ゲイン" -#: src/amidi-plug/i_configure-fluidsynth.c:435 -#: src/amidi-plug/i_configure-fluidsynth.c:463 -#: src/amidi-plug/i_configure-fluidsynth.c:491 -#: src/amidi-plug/i_configure-fluidsynth.c:522 +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 msgid "use default" msgstr "デフォルトを使用" -#: src/amidi-plug/i_configure-fluidsynth.c:438 -#: src/amidi-plug/i_configure-fluidsynth.c:466 +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 msgid "value:" msgstr "値:" -#: src/amidi-plug/i_configure-fluidsynth.c:457 +#: src/amidi-plug/i_configure-fluidsynth.c:454 msgid "poliphony" msgstr "ãƒãƒªãƒ•ã‚©ãƒ‹ãƒ¼" -#: src/amidi-plug/i_configure-fluidsynth.c:485 +#: src/amidi-plug/i_configure-fluidsynth.c:482 msgid "reverb" msgstr "リãƒãƒ¼ãƒ–" -#: src/amidi-plug/i_configure-fluidsynth.c:494 -#: src/amidi-plug/i_configure-fluidsynth.c:525 +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 msgid "yes" msgstr "ã¯ã„" -#: src/amidi-plug/i_configure-fluidsynth.c:496 -#: src/amidi-plug/i_configure-fluidsynth.c:527 +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 msgid "no" msgstr "ã„ã„ãˆ" -#: src/amidi-plug/i_configure-fluidsynth.c:516 +#: src/amidi-plug/i_configure-fluidsynth.c:513 msgid "chorus" msgstr "コーラス" -#: src/amidi-plug/i_configure-fluidsynth.c:547 +#: src/amidi-plug/i_configure-fluidsynth.c:544 msgid "sample rate" msgstr "サンプリングレート" -#: src/amidi-plug/i_configure-fluidsynth.c:553 +#: src/amidi-plug/i_configure-fluidsynth.c:550 msgid "22050 Hz " msgstr "22000 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:556 +#: src/amidi-plug/i_configure-fluidsynth.c:553 msgid "44100 Hz " msgstr "44100 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:559 +#: src/amidi-plug/i_configure-fluidsynth.c:556 msgid "96000 Hz " msgstr "96000 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:562 +#: src/amidi-plug/i_configure-fluidsynth.c:559 msgid "custom " msgstr "カスタム " -#: src/amidi-plug/i_configure-fluidsynth.c:571 +#: src/amidi-plug/i_configure-fluidsynth.c:568 msgid "Hz " msgstr "Hz " #: src/amidi-plug/i_configure-fluidsynth.c:621 -msgid "" -"* Select SoundFont files *\n" -"In order to play MIDI with FluidSynth, you need to specify at least one " -"valid SoundFont file here (use absolute paths). The loading order is from " -"the top (first) to the bottom (last)." -msgstr "" -"* サウンドフォント ファイルã®é¸æŠž *\n" -"FluidSynth 㧠MIDI ã‚’æ¼”å¥ã™ã‚‹ã«ã¯, ã“ã“ã§å°‘ãªãã¨ã‚‚1ã¤ã®æœ‰åŠ¹ãªã‚µã‚¦ãƒ³ãƒ‰ãƒ•ã‚©ãƒ³" -"ト ファイルを絶対パスã§æŒ‡å®šã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™. 読ã¿è¾¼ã¿é †åºã¯ä¸Š(å…ˆ)ã‹ã‚‰ä¸‹(後)" -"ã«ãªã‚Šã¾ã™." - -#: src/amidi-plug/i_configure-fluidsynth.c:626 -msgid "" -"* Load SoundFont on player start *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" -"* サウンドフォントをプレイヤ起動時ã«èª­ã¿è¾¼ã‚€ *\n" -"システムã®é€Ÿã•ã«ã‚ˆã‚Šã¾ã™ãŒ, FluidSynth ã§ã®ã‚µã‚¦ãƒ³ãƒ‰ãƒ•ã‚©ãƒ³ãƒˆã®èª­ã¿è¾¼ã¿ã«ã¯æ•°åˆ†" -"ã‹ã‹ã‚Šã¾ã™. ã“ã‚Œã¯ãƒ—レイヤã®èµ·å‹•æ™‚ã‹, 最åˆã® MIDI ファイルãŒæ¼”å¥ã•ã‚Œã‚‹å‰ã«ä¸€" -"度ã ã‘è¡Œã‚ã‚Œã¾ã™. MIDI ファイルをè´ãã“ã¨ã ã‘ã«ãƒ—レイヤを使ã†ã®ã§ãªã‘ã‚Œã°, 後" -"者をé¸æŠžã™ã‚‹ã®ãŒã‚ˆã„ã§ã—ょã†. (サウンドフォントã¯, ãã‚ŒãŒå¤‰æ›´ã•ãˆã‚‹ã‹ãƒãƒƒã‚¯ã‚¨" -"ンドãŒå–り外ã•ã‚Œã‚‹ã¾ã§, 読ã¿è¾¼ã¾ã‚ŒãŸã¾ã¾ã§ã™). " - -#: src/amidi-plug/i_configure-fluidsynth.c:634 -msgid "" -"* Load SoundFont on first midifile play *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" -"* サウンドフォントを最åˆã® MIDI ファイル演å¥æ™‚ã«èª­ã¿è¾¼ã‚€ *\n" -"システムã®é€Ÿã•ã«ã‚ˆã‚Šã¾ã™ãŒ, FluidSynth ã§ã®ã‚µã‚¦ãƒ³ãƒ‰ãƒ•ã‚©ãƒ³ãƒˆã®èª­ã¿è¾¼ã¿ã«ã¯æ•°åˆ†" -"ã‹ã‹ã‚Šã¾ã™. ã“ã‚Œã¯ãƒ—レイヤã®èµ·å‹•æ™‚ã‹, 最åˆã® MIDI ファイルãŒæ¼”å¥ã•ã‚Œã‚‹å‰ã«ä¸€" -"度ã ã‘è¡Œã‚ã‚Œã¾ã™. MIDI ファイルをè´ãã“ã¨ã ã‘ã«ãƒ—レイヤを使ã†ã®ã§ãªã‘ã‚Œã°, 後" -"者をé¸æŠžã™ã‚‹ã®ãŒã‚ˆã„ã§ã—ょã†. (サウンドフォントã¯, ãã‚ŒãŒå¤‰æ›´ã•ãˆã‚‹ã‹ãƒãƒƒã‚¯ã‚¨" -"ンドãŒå–り外ã•ã‚Œã‚‹ã¾ã§, 読ã¿è¾¼ã¾ã‚ŒãŸã¾ã¾ã§ã™). " - -#: src/amidi-plug/i_configure-fluidsynth.c:642 -msgid "" -"* Synthesizer gain *\n" -"From FluidSynth docs: the gain is applied to the final or master output of " -"the synthesizer; it is set to a low value by default to avoid the saturation " -"of the output when random MIDI files are played." -msgstr "" -"* シンセサイザーゲイン *\n" -"FluidSynth ã®æ–‡æ›¸ã‚ˆã‚Š: ゲインã¯ã‚·ãƒ³ã‚»ã‚µã‚¤ã‚¶ãƒ¼ã®æœ€å¾Œã‹ãƒžã‚¹ã‚¿å‡ºåŠ›ã«é©ç”¨ã•ã‚Œã¾" -"ã™. ランダム㪠MIDI ファイルãŒæ¼”å¥ã•ã‚Œã‚‹ã¨ãã«, 出力ã®é£½å’Œã‚’é¿ã‘ã‚‹ãŸã‚, デ" -"フォルトã§ã¯ä½Žã„値ã«è¨­å®šã•ã‚Œã¦ã„ã¾ã™. " - -#: src/amidi-plug/i_configure-fluidsynth.c:647 -msgid "" -"* Synthesizer polyphony *\n" -"From FluidSynth docs: the polyphony defines how many voices can be played in " -"parallel; the number of voices is not necessarily equivalent to the number " -"of notes played simultaneously; indeed, when a note is struck on a specific " -"MIDI channel, the preset on that channel may create several voices, for " -"example, one for the left audio channel and one for the right audio " -"channels; the number of voices activated depends on the number of instrument " -"zones that fall in the correspond to the velocity and key of the played note." -msgstr "" -"* シンセサイザーãƒãƒªãƒ•ã‚©ãƒ‹ãƒ¼ *\n" -"FluidSynth ã®æ–‡æ›¸ã‚ˆã‚Š: ãƒãƒªãƒ•ã‚©ãƒ‹ãƒ¼ã¯ã©ã‚Œã ã‘ã®éŸ³å£°ãŒä¸¦è¡Œã«æ¼”å¥ã•ã‚Œã‚‹ã‹ã‚’定義" -"ã—ã¾ã™. 音声ã®æ•°ã¯, åŒæ™‚ã«æ¼”å¥ã•ã‚Œã‚‹éŸ³ã®æ•°ã¨åŒã˜ã§ã‚ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“. 実際" -"ã¯, ã‚る音ãŒç‰¹å®šã® MIDI ãƒãƒ£ãƒ³ãƒãƒ«ã§é³´ã‚‰ã•ã‚ŒãŸã¨ã, ãã®ãƒãƒ£ãƒ³ãƒãƒ«ã®ãƒ—リセッ" -"トã¯, 例ãˆã°, 一ã¤ã¯å·¦ã®ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªãƒãƒ£ãƒ³ãƒãƒ«ã«, 一ã¤ã¯å³ã®ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªãƒãƒ£ãƒ³ãƒ" -"ルã«, ã„ãã¤ã‹ã®éŸ³å£°ã‚’生æˆã—ã¾ã™. 生æˆã•ã‚ŒãŸéŸ³å£°ã®æ•°ã¯, æ¼”å¥ã•ã‚ŒãŸéŸ³ã®é«˜ã•ã¨" -"キーã«å¯¾å¿œã—ã¦ã„る楽器ã®æ•°ã«ä¾å­˜ã—ã¾ã™. " - -#: src/amidi-plug/i_configure-fluidsynth.c:657 -#: src/amidi-plug/i_configure-fluidsynth.c:663 -msgid "" -"* Synthesizer reverb *\n" -"From FluidSynth docs: when set to \"yes\" the reverb effects module is " -"activated; note that when the reverb module is active, the amount of signal " -"sent to the reverb module depends on the \"reverb send\" generator defined " -"in the SoundFont." -msgstr "" -"* シンセサイザーリãƒãƒ¼ãƒ– *\n" -"FluidSynth ã®æ–‡æ›¸ã‚ˆã‚Š: \"ã¯ã„\" ã«è¨­å®šã™ã‚‹ã¨ãƒªãƒãƒ¼ãƒ–エフェクトモジュールãŒæœ‰" -"効ã«ãªã‚Šã¾ã™. リãƒãƒ¼ãƒ–モジュールãŒæœ‰åŠ¹ãªã¨ãã¯, 多数ã®ã‚·ã‚°ãƒŠãƒ«ãŒã‚µã‚¦ãƒ³ãƒ‰ãƒ•ã‚©" -"ントã§å®šç¾©ã•ã‚ŒãŸ \"リãƒãƒ¼ãƒ– センド\" ジェãƒãƒ¬ãƒ¼ã‚¿ã«ä¾å­˜ã—ã¦ã„るリãƒãƒ¼ãƒ–モ" -"ジュールã«é€ã‚‰ã‚Œã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„. " - -#: src/amidi-plug/i_configure-fluidsynth.c:669 -#: src/amidi-plug/i_configure-fluidsynth.c:675 -msgid "" -"* Synthesizer chorus *\n" -"From FluidSynth docs: when set to \"yes\" the chorus effects module is " -"activated; note that when the chorus module is active, the amount of signal " -"sent to the chorus module depends on the \"chorus send\" generator defined " -"in the SoundFont." -msgstr "" -"* シンセサイザーコーラス *\n" -"FluidSynth ã®æ–‡æ›¸ã‚ˆã‚Š: \"ã¯ã„\" ã«è¨­å®šã™ã‚‹ã¨ã‚³ãƒ¼ãƒ©ã‚¹ã‚¨ãƒ•ã‚§ã‚¯ãƒˆãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ãŒæœ‰" -"効ã«ãªã‚Šã¾ã™. コーラスモジュールãŒæœ‰åŠ¹ãªã¨ãã¯, 多数ã®ã‚·ã‚°ãƒŠãƒ«ãŒã‚µã‚¦ãƒ³ãƒ‰ãƒ•ã‚©" -"ントã§å®šç¾©ã•ã‚ŒãŸ \"コーラス センド\" ジェãƒãƒ¬ãƒ¼ã‚¿ã«ä¾å­˜ã—ã¦ã„るコーラスモ" -"ジュールã«é€ã‚‰ã‚Œã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„. " - -#: src/amidi-plug/i_configure-fluidsynth.c:681 -#: src/amidi-plug/i_configure-fluidsynth.c:685 -#: src/amidi-plug/i_configure-fluidsynth.c:689 -#: src/amidi-plug/i_configure-fluidsynth.c:693 -#, fuzzy -msgid "" -"* Synthesizer samplerate *\n" -"The sample rate of the audio generated by the synthesizer. You can also " -"specify a custom value in the interval 22050Hz-96000Hz." -msgstr "" -"* シンセサイザーサンプリングレート *\n" -"シンセサイザーã§ç”Ÿæˆã•ã‚ŒãŸã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã®ã‚µãƒ³ãƒ—リングレートã§ã™. " -"22050Hz-96000Hz ã®é–“ã§ã‚«ã‚¹ã‚¿ãƒ å€¤ã‚’指定ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™.\n" -"注æ„: デフォルトã®ãƒãƒƒãƒ•ã‚¡ãƒ‘ラメータ㯠44100Hz ã«è¨­å®šã•ã‚Œã¦ã„ã¾ã™. サンプリン" -"グレートを変更ã—ãŸã‚‰, よã„音質を得るãŸã‚ã«, ãƒãƒƒãƒ•ã‚¡ãƒ‘ラメータã®ãƒãƒ¥ãƒ¼ãƒ‹ãƒ³ã‚°" -"ãŒå¿…è¦ã«ãªã‚Šã¾ã™. " - -#: src/amidi-plug/i_configure-fluidsynth.c:701 msgid "FluidSynth Backend not loaded or not available" msgstr "FluidSynth ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ãŒèª­ã¿è¾¼ã¾ã‚Œã¦ã„ãªã„ã‹æœ‰åŠ¹ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: src/amidi-plug/i_configure-fluidsynth.c:720 +#: src/amidi-plug/i_configure-fluidsynth.c:640 msgid "" "FluidSynth\n" "backend" @@ -1174,8 +357,7 @@ "TiMidity\n" "ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰" -#: src/amidi-plug/i_fileinfo.c:169 src/bluetooth/gui.c:271 -#: src/sid/xs_interface.c:1769 +#: src/amidi-plug/i_fileinfo.c:169 src/sid/xs_interface.c:1769 msgid "Name:" msgstr "åå‰:" @@ -1347,119 +529,119 @@ msgid "Triggers OSD when playback is unpaused." msgstr "æ¼”å¥ãŒå†é–‹ã•ã‚ŒãŸã‚‰ OSD ãŒå‹•ä½œã—ã¾ã™." -#: src/aosd/aosd_ui.c:168 +#: src/aosd/aosd_ui.c:180 msgid "Placement" msgstr "ä½ç½®" -#: src/aosd/aosd_ui.c:202 +#: src/aosd/aosd_ui.c:219 msgid "Relative X offset:" msgstr "相対 X オフセット:" -#: src/aosd/aosd_ui.c:211 +#: src/aosd/aosd_ui.c:228 msgid "Relative Y offset:" msgstr "相対 Y オフセット:" -#: src/aosd/aosd_ui.c:220 +#: src/aosd/aosd_ui.c:237 msgid "Max OSD width:" msgstr "最大 OSD å¹…:" -#: src/aosd/aosd_ui.c:233 +#: src/aosd/aosd_ui.c:250 msgid "Multi-Monitor options" msgstr "マルãƒãƒ¢ãƒ‹ã‚¿ オプション" -#: src/aosd/aosd_ui.c:237 +#: src/aosd/aosd_ui.c:254 msgid "Display OSD using:" msgstr "OSD を表示ã™ã‚‹ãƒ¢ãƒ‹ã‚¿:" -#: src/aosd/aosd_ui.c:239 +#: src/aosd/aosd_ui.c:265 msgid "all monitors" msgstr "å…¨ã¦ã®ãƒ¢ãƒ‹ã‚¿" -#: src/aosd/aosd_ui.c:242 +#: src/aosd/aosd_ui.c:268 #, c-format msgid "monitor %i" msgstr "モニタ %i" -#: src/aosd/aosd_ui.c:295 +#: src/aosd/aosd_ui.c:323 msgid "Timing (ms)" msgstr "タイミング (ミリ秒)" -#: src/aosd/aosd_ui.c:300 +#: src/aosd/aosd_ui.c:328 msgid "Display:" msgstr "表示:" -#: src/aosd/aosd_ui.c:305 +#: src/aosd/aosd_ui.c:333 msgid "Fade in:" msgstr "フェードイン:" -#: src/aosd/aosd_ui.c:310 +#: src/aosd/aosd_ui.c:338 msgid "Fade out:" msgstr "フェードアウト:" -#: src/aosd/aosd_ui.c:391 +#: src/aosd/aosd_ui.c:419 msgid "Fonts" msgstr "フォント" -#: src/aosd/aosd_ui.c:399 +#: src/aosd/aosd_ui.c:427 #, c-format msgid "Font %i:" msgstr "フォント %i:" -#: src/aosd/aosd_ui.c:416 +#: src/aosd/aosd_ui.c:444 msgid "Shadow" msgstr "å½±" -#: src/aosd/aosd_ui.c:451 +#: src/aosd/aosd_ui.c:479 msgid "Internationalization" msgstr "国際化" -#: src/aosd/aosd_ui.c:457 +#: src/aosd/aosd_ui.c:485 msgid "Disable UTF-8 conversion of text (in aosd)" msgstr "aosd ã§ã¯ãƒ†ã‚­ã‚¹ãƒˆã® UTF-8 変æ›ã‚’無効ã«ã™ã‚‹" -#: src/aosd/aosd_ui.c:475 +#: src/aosd/aosd_ui.c:503 msgid "Select Skin File" msgstr "スキンファイルé¸æŠž" -#: src/aosd/aosd_ui.c:586 +#: src/aosd/aosd_ui.c:614 msgid "Render Style" msgstr "æ画形å¼" -#: src/aosd/aosd_ui.c:602 +#: src/aosd/aosd_ui.c:630 msgid "Colors" msgstr "色" -#: src/aosd/aosd_ui.c:615 +#: src/aosd/aosd_ui.c:643 #, c-format msgid "Color %i:" msgstr "色 %i:" -#: src/aosd/aosd_ui.c:635 +#: src/aosd/aosd_ui.c:663 msgid "Custom Skin" msgstr "カスタムスキン" -#: src/aosd/aosd_ui.c:641 +#: src/aosd/aosd_ui.c:669 msgid "Skin file:" msgstr "スキンファイル:" -#: src/aosd/aosd_ui.c:644 src/sid/xs_interface.c:1044 +#: src/aosd/aosd_ui.c:672 src/sid/xs_interface.c:1044 #: src/sid/xs_interface.c:1236 src/sid/xs_interface.c:1292 msgid "Browse" msgstr "å‚ç…§" -#: src/aosd/aosd_ui.c:746 +#: src/aosd/aosd_ui.c:774 msgid "Enable trigger" msgstr "トリガー有効" -#: src/aosd/aosd_ui.c:773 +#: src/aosd/aosd_ui.c:801 msgid "Event" msgstr "イベント" -#: src/aosd/aosd_ui.c:801 +#: src/aosd/aosd_ui.c:829 msgid "Composite manager detected" msgstr "Composite マãƒãƒ¼ã‚¸ãƒ£ãŒæ¤œå‡ºã•ã‚Œã¾ã—ãŸ" -#: src/aosd/aosd_ui.c:808 +#: src/aosd/aosd_ui.c:836 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -1469,73 +651,73 @@ "動作ã•ã›ã¦ã„ã‚‹ã‹ã‚ã‹ã‚‰ãªã‘ã‚Œã°, Composite マãƒãƒ¼ã‚¸ãƒ£ã‚’有効ã«ã—ã¦ãã ã•ã„. ã" "ã†ã—ãªã‘れ㰠OSD ã¯æ­£å¸¸ã«å‹•ä½œã—ãªã„ã§ã—ょã†." -#: src/aosd/aosd_ui.c:816 +#: src/aosd/aosd_ui.c:844 msgid "Composite manager not required for fake transparency" msgstr "Composite マãƒãƒ¼ã‚¸ãƒ£ã¯å½ã®é€æ˜ŽåŒ–ã«ã¯å¿…è¦ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: src/aosd/aosd_ui.c:854 +#: src/aosd/aosd_ui.c:882 msgid "Transparency" msgstr "é€æ˜ŽåŒ–" -#: src/aosd/aosd_ui.c:860 +#: src/aosd/aosd_ui.c:888 msgid "Fake transparency" msgstr "å½ã®é€æ˜ŽåŒ–" -#: src/aosd/aosd_ui.c:862 +#: src/aosd/aosd_ui.c:890 msgid "Real transparency (requires X Composite Ext.)" msgstr "真ã®é€æ˜ŽåŒ– (X Composite æ‹¡å¼µãŒå¿…è¦)" -#: src/aosd/aosd_ui.c:904 +#: src/aosd/aosd_ui.c:932 msgid "Composite extension not loaded" msgstr "Composite æ‹¡å¼µãŒèª­ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã›ã‚“" -#: src/aosd/aosd_ui.c:912 +#: src/aosd/aosd_ui.c:940 msgid "Composite extension not available" msgstr "Composite æ‹¡å¼µãŒæœ‰åŠ¹ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: src/aosd/aosd_ui.c:931 +#: src/aosd/aosd_ui.c:959 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.c:1012 +#: src/aosd/aosd_ui.c:1040 msgid "Audacious OSD - configuration" msgstr "Audacious OSD - 設定" -#: src/aosd/aosd_ui.c:1033 +#: src/aosd/aosd_ui.c:1061 msgid "Test" msgstr "テスト" -#: src/aosd/aosd_ui.c:1048 +#: src/aosd/aosd_ui.c:1076 msgid "Position" msgstr "ä½ç½®" -#: src/aosd/aosd_ui.c:1053 +#: src/aosd/aosd_ui.c:1081 msgid "Animation" msgstr "アニメーション" -#: src/aosd/aosd_ui.c:1058 +#: src/aosd/aosd_ui.c:1086 msgid "Text" msgstr "文字" -#: src/aosd/aosd_ui.c:1063 +#: src/aosd/aosd_ui.c:1091 msgid "Decoration" msgstr "装飾" -#: src/aosd/aosd_ui.c:1068 +#: src/aosd/aosd_ui.c:1096 msgid "Trigger" msgstr "トリガー" -#: src/aosd/aosd_ui.c:1073 src/cdaudio-ng/configure.c:178 -#: src/modplug/gui/interface.cxx:689 src/sid/xs_interface.c:1302 +#: src/aosd/aosd_ui.c:1101 src/cdaudio-ng/configure.c:171 +#: src/sid/xs_interface.c:1302 msgid "Misc" msgstr "ãã®ä»–" -#: src/aosd/aosd_ui.c:1110 +#: src/aosd/aosd_ui.c:1138 msgid "Audacious OSD - about" msgstr "Audacious OSD ã«ã¤ã„ã¦" -#: src/aosd/aosd_ui.c:1140 +#: src/aosd/aosd_ui.c:1168 msgid "" "\n" "Audacious OSD " @@ -1543,7 +725,7 @@ "\n" "Audacious OSD " -#: src/aosd/aosd_ui.c:1141 +#: src/aosd/aosd_ui.c:1169 msgid "" "\n" "http://www.develia.org/projects.php?p=audacious#aosd\n" @@ -1565,133 +747,6 @@ "http://neugierig.org/software/ghosd/\n" "\n" -#: src/bluetooth/agent.c:356 src/bluetooth/agent.c:397 -#, c-format -msgid "Pairing request for '%s'" -msgstr "" - -#: src/bluetooth/agent.c:544 -#, c-format -msgid "Authorization request for %s" -msgstr "" - -#: src/bluetooth/agent.c:728 -#, c-format -msgid "Created bonding with %s" -msgstr "" - -#: src/bluetooth/agent.c:756 -#, c-format -msgid "Removed bonding with %s" -msgstr "" - -#: src/bluetooth/agent.c:808 -msgid "Device has been switched off" -msgstr "" - -#: src/bluetooth/agent.c:811 -msgid "Device has been made non-discoverable" -msgstr "" - -#: src/bluetooth/agent.c:813 -msgid "Device has been made connectable" -msgstr "" - -#: src/bluetooth/agent.c:815 -msgid "Device has been made discoverable" -msgstr "" - -#: src/bluetooth/agent.c:817 -msgid "Device has been made limited discoverable" -msgstr "" - -#: src/bluetooth/agent.c:819 -msgid "Device has been switched into pairing mode" -msgstr "" - -#: src/bluetooth/bluetooth.c:117 -msgid "Bluetooth headset support plugin" -msgstr "" - -#: src/bluetooth/bluetooth.c:118 -msgid "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the " -"Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" -msgstr "" - -#: src/bluetooth/gui.c:148 -msgid "Producer" -msgstr "" - -#: src/bluetooth/gui.c:221 -#, fuzzy -msgid "Available Headsets" -msgstr "有効ãªãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰" - -#: src/bluetooth/gui.c:224 -#, fuzzy -msgid "Current Headset" -msgstr "ç¾åœ¨ã®å€¤" - -#: src/bluetooth/gui.c:227 -#, fuzzy -msgid "_Refresh" -msgstr "リフレッシュレート" - -#: src/bluetooth/gui.c:231 -#, fuzzy -msgid "_Connect" -msgstr "接続" - -#: src/bluetooth/gui.c:237 -#, fuzzy -msgid "_Close" -msgstr "é–‰ã˜ã‚‹" - -#: src/bluetooth/gui.c:274 -#, fuzzy -msgid "Class" -msgstr "é–‰ã˜ã‚‹" - -#: src/bluetooth/gui.c:278 -#, fuzzy -msgid "Address:" -msgstr "デãƒã‚¤ã‚¹ã‚¢ãƒ‰ãƒ¬ã‚¹" - -#: src/bluetooth/scan_gui.c:69 -msgid "Bonding finish!" -msgstr "" - -#: src/bluetooth/scan_gui.c:76 -msgid "No devices found!" -msgstr "" - -#: src/bluetooth/scan_gui.c:119 -msgid "Scanning..." -msgstr "" - -#: src/bluetooth/scan_gui.c:122 -msgid "Pairing..." -msgstr "" - -#: src/bluetooth/scan_gui.c:138 -#, fuzzy -msgid "Rescan" -msgstr "CD ã‚’å†ã‚¹ã‚­ãƒ£ãƒ³" - -#: src/bluetooth/scan_gui.c:142 src/gtkui/ui_manager.c:66 -#: src/gtkui/ui_manager.c:67 src/hotkey/gui.c:71 src/skins/ui_manager.c:167 -#: src/skins/ui_manager.c:168 -msgid "Play" -msgstr "æ¼”å¥" - #: src/blur_scope/config.c:73 msgid "Blur Scope: Color selection" msgstr "ブラースコープ: 色ã®é¸æŠž" @@ -1700,12 +755,12 @@ msgid "Options:" msgstr "オプション:" -#: src/cdaudio-ng/cdaudio-ng.c:278 +#: src/cdaudio-ng/cdaudio-ng.c:264 #, fuzzy msgid "About Audio CD Plugin" msgstr "FLAC オーディオプラグインã«ã¤ã„ã¦" -#: src/cdaudio-ng/cdaudio-ng.c:279 +#: src/cdaudio-ng/cdaudio-ng.c:265 #, fuzzy msgid "" "Copyright (c) 2007, by Calin Crisan and The Audacious " @@ -1730,128 +785,163 @@ "\n" "ã“れ㯠Google Summer of Code 2007 ã®ãƒ—ロジェクトã§ã—ãŸ." -#: src/cdaudio-ng/configure.c:155 +#: src/cdaudio-ng/cdaudio-ng.c:558 +#, fuzzy +msgid "Audio CD" +msgstr "オーディオ" + +#: src/cdaudio-ng/cdaudio-ng.c:913 +msgid "Drive is empty." +msgstr "" + +#: src/cdaudio-ng/cdaudio-ng.c:915 +msgid "Unsupported disk type." +msgstr "" + +#: src/cdaudio-ng/configure.c:148 msgid "CD Audio Plugin Configuration" msgstr "CD オーディオプラグインã®è¨­å®š" -#: src/cdaudio-ng/configure.c:167 +#: src/cdaudio-ng/configure.c:160 msgid "Digital audio extraction" msgstr "ディジタルオーディオ抽出" -#: src/cdaudio-ng/configure.c:172 +#: src/cdaudio-ng/configure.c:165 msgid "Title information" msgstr "タイトル情報" -#: src/cdaudio-ng/configure.c:190 +#: src/cdaudio-ng/configure.c:176 #, fuzzy msgid "Disc speed:" msgstr "クロック速度:" -#: src/cdaudio-ng/configure.c:198 +#: src/cdaudio-ng/configure.c:184 msgid "Use cd-text if available" msgstr "有効ãªã‚‰ã° cd-text を使ã†" -#: src/cdaudio-ng/configure.c:205 +#: src/cdaudio-ng/configure.c:191 msgid "Use CDDB if available" msgstr "有効ãªã‚‰ã° CDDB を使ã†" -#: src/cdaudio-ng/configure.c:211 +#: src/cdaudio-ng/configure.c:197 msgid "Server: " msgstr "サーãƒ: " -#: src/cdaudio-ng/configure.c:215 +#: src/cdaudio-ng/configure.c:201 msgid "Path: " msgstr "パス: " -#: src/cdaudio-ng/configure.c:219 +#: src/cdaudio-ng/configure.c:205 msgid "Port: " msgstr "ãƒãƒ¼ãƒˆç•ªå·: " -#: src/cdaudio-ng/configure.c:232 +#: src/cdaudio-ng/configure.c:218 msgid "Use HTTP instead of CDDBP" msgstr "CDDBP ã®ä»£ã‚ã‚Šã« HTTP を使ã†" -#: src/cdaudio-ng/configure.c:244 +#: src/cdaudio-ng/configure.c:230 msgid "Override default device: " msgstr "デフォルトデãƒã‚¤ã‚¹ã‚’上書ãã™ã‚‹: " -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:131 +#: src/echo_plugin/gui.c:123 src/jack/configure.c:146 src/null/null.c:112 +#: src/stereo_plugin/stereo.c:125 +msgid "Ok" +msgstr "OK" + +#: src/cdaudio-ng/configure.c:249 src/crystalizer/crystalizer.c:138 +#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 src/null/null.c:113 +#: src/stereo_plugin/stereo.c:132 +msgid "Cancel" +msgstr "キャンセル" + +#: src/cd-menu-items/cd-menu-items.c:34 #, fuzzy msgid "Play CD" msgstr "æ¼”å¥" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Add CD" msgstr "CD を追加" -#: src/compressor/plugin.c:58 +#: src/compressor/plugin.c:67 #, fuzzy msgid "About Dynamic Range Compression Plugin" msgstr "エクストラステレオプラグインã«ã¤ã„ã¦" -#: src/compressor/plugin.c:91 +#: src/compressor/plugin.c:99 #, fuzzy msgid "Dynamic Range Compressor Preferences" msgstr "オーディオ圧縮 設定" -#: src/compressor/plugin.c:103 +#: src/compressor/plugin.c:111 #, fuzzy -msgid "Target volume:" +msgid "Center volume:" msgstr "音é‡ã®å¤‰æ›´" -#: src/compressor/plugin.c:116 -#, fuzzy -msgid "Effect strength:" -msgstr "エフェクトã®å¼·ã•:" - -#: src/console/configure.c:137 +#: src/compressor/plugin.c:124 +msgid "Dynamic range:" +msgstr "" + +#: src/console/configure.c:138 #, fuzzy msgid "Game Console Music Decoder" msgstr "コンソールミュージックデコーダ" -#: src/console/configure.c:171 +#: src/console/configure.c:155 +msgid "General" +msgstr "一般" + +#: src/console/configure.c:157 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "æ¼”å¥" + +#: src/console/configure.c:172 msgid "Bass:" msgstr "ベース:" -#: src/console/configure.c:175 src/console/configure.c:186 -#: src/console/configure.c:207 +#: src/console/configure.c:176 src/console/configure.c:187 +#: src/console/configure.c:208 msgid "secs" msgstr "秒" -#: src/console/configure.c:182 +#: src/console/configure.c:183 msgid "Treble:" msgstr "トリãƒãƒ«:" -#: src/console/configure.c:203 +#: src/console/configure.c:204 msgid "Default song length:" msgstr "デフォルトã®æ›²ã®é•·ã•:" -#: src/console/configure.c:209 src/modplug/gui/interface.cxx:269 -#: src/sid/xs_interface.c:666 +#: src/console/configure.c:210 src/sid/xs_interface.c:666 msgid "Resampling" msgstr "リサンプリング" -#: src/console/configure.c:215 +#: src/console/configure.c:216 msgid "Enable audio resampling" msgstr "オーディオリサンプリングを有効ã«ã™ã‚‹" -#: src/console/configure.c:230 +#: src/console/configure.c:231 msgid "Resampling rate:" msgstr "リサンプリングレート:" -#: src/console/configure.c:245 +#: src/console/configure.c:235 src/sid/xs_interface.c:354 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:246 msgid "SPC" msgstr "SPC" -#: src/console/configure.c:246 +#: src/console/configure.c:247 msgid "Ignore length from SPC tags" msgstr "SPC ã‚¿ã‚°ã‹ã‚‰ã®é•·ã•ã‚’無視ã™ã‚‹" -#: src/console/configure.c:247 +#: src/console/configure.c:248 msgid "Increase reverb" msgstr "リãƒãƒ¼ãƒ–を増やã™" -#: src/console/configure.c:272 +#: src/console/configure.c:273 msgid "" "The default song length, expressed in seconds, is used for songs that do not " "provide length information (i.e. looping tracks)." @@ -1879,31 +969,31 @@ "Audacious ã®å®Ÿè£…㯠William Pitcock ã¨\n" "Shay Green ã«ã‚ˆã‚Šã¾ã™." -#: src/crossfade/plugin.c:51 +#: src/crossfade/plugin.c:65 #, fuzzy msgid "About Crossfade" msgstr "Scrobbler プラグインã«ã¤ã„ã¦" -#: src/crossfade/plugin.c:84 +#: src/crossfade/plugin.c:97 #, fuzzy msgid "Crossfade Preferences" msgstr "設定" -#: src/crossfade/plugin.c:95 +#: src/crossfade/plugin.c:109 msgid "Overlap (in seconds):" msgstr "" -#: src/crossfade/plugin.c:129 src/crossfade/plugin.c:137 +#: src/crossfade/plugin.c:140 src/crossfade/plugin.c:146 #, fuzzy msgid "Crossfade Error" msgstr "ModPlug 設定" -#: src/crossfade/plugin.c:130 +#: src/crossfade/plugin.c:140 msgid "" "Crossfading failed because the songs had a different number of channels." msgstr "" -#: src/crossfade/plugin.c:138 +#: src/crossfade/plugin.c:148 msgid "" "Crossfading failed because the songs had different sample rates.\n" "\n" @@ -1911,20 +1001,24 @@ "same rate." msgstr "" -#: src/crystalizer/crystalizer.c:104 +#: src/crystalizer/crystalizer.c:108 msgid "Configure Crystalizer" msgstr "Crystalizer ã®è¨­å®š" -#: src/crystalizer/crystalizer.c:106 src/stereo_plugin/stereo.c:102 +#: src/crystalizer/crystalizer.c:110 src/stereo_plugin/stereo.c:104 msgid "Effect intensity:" msgstr "エフェクトã®å¼·ã•:" -#: src/crystalizer/crystalizer.c:143 src/echo_plugin/gui.c:137 -#: src/modplug/gui/interface.cxx:709 src/stereo_plugin/stereo.c:139 +#: src/crystalizer/crystalizer.c:144 src/echo_plugin/gui.c:136 +#: src/stereo_plugin/stereo.c:138 msgid "Apply" msgstr "é©ç”¨" -#: src/echo_plugin/gui.c:14 +#: src/daemon/daemon.c:58 +msgid "Daemon Interface (like old headless mode)" +msgstr "" + +#: src/echo_plugin/gui.c:15 msgid "" "Echo Plugin\n" "By Johan Levin 1999.\n" @@ -1936,413 +1030,52 @@ "\n" "サラウンドエコー㯠1999 å¹´ Carl van Schaik ã«ã‚ˆã‚‹" -#: src/echo_plugin/gui.c:26 +#: src/echo_plugin/gui.c:27 msgid "About Echo Plugin" msgstr "エコー プラグインã«ã¤ã„ã¦" -#: src/echo_plugin/gui.c:69 +#: src/echo_plugin/gui.c:72 msgid "Configure Echo" msgstr "エコー設定" -#: src/echo_plugin/gui.c:82 +#: src/echo_plugin/gui.c:88 msgid "Delay: (ms)" msgstr "é…延: (ミリ秒)" -#: src/echo_plugin/gui.c:87 +#: src/echo_plugin/gui.c:93 msgid "Feedback: (%)" msgstr "フィードãƒãƒƒã‚¯: (%)" -#: src/echo_plugin/gui.c:92 +#: src/echo_plugin/gui.c:98 msgid "Volume: (%)" msgstr "音é‡: (%)" -#: src/evdev-plug/ed.c:60 -msgid "Playback->Play" -msgstr "æ¼”å¥->開始" - -#: src/evdev-plug/ed.c:61 -msgid "Playback->Stop" -msgstr "æ¼”å¥->åœæ­¢" - -#: src/evdev-plug/ed.c:62 -msgid "Playback->Pause" -msgstr "æ¼”å¥->一時åœæ­¢" - -#: src/evdev-plug/ed.c:63 -msgid "Playback->Prev" -msgstr "æ¼”å¥->å‰ã®æ›²" - -#: src/evdev-plug/ed.c:64 -msgid "Playback->Next" -msgstr "æ¼”å¥->次ã®æ›²" - -#: src/evdev-plug/ed.c:65 -msgid "Playback->Eject" -msgstr "æ¼”å¥->イジェクト" - -#: src/evdev-plug/ed.c:67 -msgid "Playlist->Repeat" -msgstr "æ¼”å¥->リピート" - -#: src/evdev-plug/ed.c:68 -msgid "Playlist->Shuffle" -msgstr "æ¼”å¥->シャッフル" - -#: src/evdev-plug/ed.c:70 -msgid "Volume->Up_5" -msgstr "音é‡->5上ã’ã‚‹" - -#: src/evdev-plug/ed.c:71 -msgid "Volume->Down_5" -msgstr "音é‡->5下ã’ã‚‹" - -#: src/evdev-plug/ed.c:72 -msgid "Volume->Up_10" -msgstr "音é‡->10上ã’ã‚‹" - -#: src/evdev-plug/ed.c:73 -msgid "Volume->Down_10" -msgstr "音é‡->10下ã’ã‚‹" - -#: src/evdev-plug/ed.c:74 -msgid "Volume->Mute" -msgstr "音é‡->ミュート" - -#: src/evdev-plug/ed.c:76 -msgid "Window->Main" -msgstr "ウィンドウ->メイン" - -#: src/evdev-plug/ed.c:77 -msgid "Window->Playlist" -msgstr "ウィンドウ->プレイリスト" - -#: src/evdev-plug/ed.c:78 -msgid "Window->Equalizer" -msgstr "ウィンドウ->イコライザー" - -#: src/evdev-plug/ed.c:79 -msgid "Window->JumpToFile" -msgstr "ウィンドウ->ファイルã¸ã‚¸ãƒ£ãƒ³ãƒ—" - -#: src/evdev-plug/ed_internals.c:94 -#, c-format -msgid "" -"event-device-plugin: unable to open device file %s , skipping this device; " -"check that the file exists and that you have read permission for it\n" -msgstr "" -"event-device-plugin: デãƒã‚¤ã‚¹ãƒ•ã‚¡ã‚¤ãƒ« %s ã‚’é–‹ã‘ã¾ã›ã‚“, ã“ã®ãƒ‡ãƒã‚¤ã‚¹ã‚’スキップ" -"ã—ã¾ã™; ファイルãŒå­˜åœ¨ã™ã‚‹ã“ã¨ã¨èª­ã¿è¾¼ã¿ãƒ‘ーミッションãŒã‚ã‚‹ã‹ç¢ºèªã—ã¦ãã ã•" -"ã„\n" - -#: src/evdev-plug/ed_internals.c:103 -#, c-format -msgid "" -"event-device-plugin: unable to create a io_channel for device file %s ," -"skipping this device\n" -msgstr "" -"event-device-plugin: デãƒã‚¤ã‚¹ãƒ•ã‚¡ã‚¤ãƒ« %s ã® io_channel を作æˆã§ãã¾ã›ã‚“,ã“ã®" -"デãƒã‚¤ã‚¹ã‚’スキップã—ã¾ã™\n" - -#: src/evdev-plug/ed_internals.c:342 -msgid "" -"event-device-plugin: unable to open /proc/bus/input/devices , automatic " -"detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: /proc/bus/input/devices ã‚’é–‹ã‘ã¾ã›ã‚“, イベントデãƒã‚¤ã‚¹ã®" -"自動検出ã¯å‹•ä½œã—ã¾ã›ã‚“.\n" - -#: src/evdev-plug/ed_internals.c:351 -msgid "" -"event-device-plugin: unable to open a io_channel for /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: /proc/bus/input/ デãƒã‚¤ã‚¹ã® io_channel ã‚’é–‹ã‘ã¾ã›ã‚“, イ" -"ベントデãƒã‚¤ã‚¹ã®è‡ªå‹•æ¤œå‡ºã¯å‹•ä½œã—ã¾ã›ã‚“.\n" - -#: src/evdev-plug/ed_internals.c:361 -msgid "" -"event-device-plugin: an error occurred while reading /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: /proc/bus/input/ デãƒã‚¤ã‚¹ã®èª­ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾" -"ã—ãŸ, イベントデãƒã‚¤ã‚¹ã®è‡ªå‹•æ¤œå‡ºã¯å‹•ä½œã—ã¾ã›ã‚“.\n" - -#: src/evdev-plug/ed_internals.c:424 -#, c-format -msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" -msgstr "" -"event-device-plugin: デãƒã‚¤ã‚¹ %s ㌠/dev/input ã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“, スキップã—ã¾" -"ã™.\n" - -#: src/evdev-plug/ed_internals.c:489 src/evdev-plug/ed_internals.c:583 -#, c-format -msgid "" -"event-device-plugin: unable to load config file %s , default settings will " -"be used.\n" -msgstr "" -"event-device-plugin: コンフィグファイル %s ãŒèª­ã¿è¾¼ã‚ã¾ã›ã‚“, デフォルト設定ãŒ" -"用ã„られã¾ã™.\n" - -#: src/evdev-plug/ed_internals.c:535 -#, c-format -msgid "" -"event-device-plugin: incomplete information in config file for device \"%s" -"\" , skipping.\n" -msgstr "" -"event-device-plugin: デãƒã‚¤ã‚¹ \"%s\" ã®ã‚³ãƒ³ãƒ•ã‚£ã‚°ãƒ•ã‚¡ã‚¤ãƒ«ã®æƒ…å ±ãŒä¸å®Œå…¨ã§ã™, " -"スキップã—ã¾ã™.\n" - -#: src/evdev-plug/ed_internals.c:604 src/evdev-plug/ed_internals.c:936 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_active value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: 設定: デãƒã‚¤ã‚¹ \"%s\" ã® is_active 値ãŒå–å¾—ã§ãã¾ã›ã‚“, " -"スキップã—ã¾ã™.\n" - -#: src/evdev-plug/ed_internals.c:840 -#, c-format -msgid "" -"event-device-plugin: unable to access local directory %s , settings will not " -"be saved.\n" -msgstr "" -"event-device-plugin: ローカルディレクトリ %s ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“, 設定ã¯ä¿å­˜" -"ã•ã‚Œã¾ã›ã‚“.\n" - -#: src/evdev-plug/ed_internals.c:890 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get filename value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: 設定: デãƒã‚¤ã‚¹ \"%s\" ã®ãƒ•ã‚¡ã‚¤ãƒ«åãŒå–å¾—ã§ãã¾ã›ã‚“, ス" -"キップã—ã¾ã™.\n" - -#: src/evdev-plug/ed_internals.c:906 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get phys value for device \"%s" -"\", skipping it.\n" -msgstr "" -"event-device-plugin: 設定: デãƒã‚¤ã‚¹ \"%s\" ã® phys 値ãŒå–å¾—ã§ãã¾ã›ã‚“, スキッ" -"プã—ã¾ã™.\n" - -#: src/evdev-plug/ed_internals.c:922 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_custom value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: 設定: デãƒã‚¤ã‚¹ \"%s\" ã® is_custom 値ãŒå–å¾—ã§ãã¾ã›ã‚“, " -"スキップã—ã¾ã™.\n" - -#: src/evdev-plug/ed_internals.c:946 -#, c-format -msgid "" -"event-device-plugin: configuration, unexpected value for device \"%s\", " -"skipping it.\n" -msgstr "" -"event-device-plugin: 設定: デãƒã‚¤ã‚¹ \"%s\" ã®äºˆæœŸã›ã¬å€¤ã§ã™, スキップã—ã¾" -"ã™.\n" - -#: src/evdev-plug/ed_ui.c:212 -#, fuzzy -msgid "Detected" -msgstr "曲ã®çµ‚ã‚りを検出ã™ã‚‹" - -#: src/evdev-plug/ed_ui.c:217 -#, fuzzy -msgid "Custom" -msgstr "カスタム " - -#: src/evdev-plug/ed_ui.c:223 -#, fuzzy -msgid "Not Detected" -msgstr "é¸æŠžç¯„囲ã®ã‚½ãƒ¼ãƒˆ" - -#: src/evdev-plug/ed_ui.c:275 src/evdev-plug/ed_ui.c:411 -#: src/evdev-plug/ed_ui.c:874 -msgid "Information" -msgstr "情報" - -#: src/evdev-plug/ed_ui.c:276 -msgid "" -"Cannot open bindings window for a not-detected device.\n" -"Ensure that the device has been correctly plugged in." -msgstr "" -"デãƒã‚¤ã‚¹ãŒæ¤œå‡ºã•ã‚Œã¦ã„ãªã„ãŸã‚, ãƒã‚¤ãƒ³ãƒ‡ã‚£ãƒ³ã‚°ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ãŒé–‹ã‘ã¾ã›ã‚“.\n" -"デãƒã‚¤ã‚¹ãŒæ­£ã—ã接続ã•ã‚Œã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„." - -#: src/evdev-plug/ed_ui.c:319 -msgid "Error" -msgstr "エラー" - -#: src/evdev-plug/ed_ui.c:320 -msgid "" -"Unable to open selected device.\n" -"Please check read permissions on device file." -msgstr "" -"é¸æŠžã•ã‚ŒãŸãƒ‡ãƒã‚¤ã‚¹ãŒé–‹ã‘ã¾ã›ã‚“.\n" -"デãƒã‚¤ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã®èª­ã¿è¾¼ã¿ãƒ‘ーミッションを確èªã—ã¦ãã ã•ã„." - -#: src/evdev-plug/ed_ui.c:341 -msgid "EvDev-Plug - Add custom device" -msgstr "EvDev-Plug - カスタムデãƒã‚¤ã‚¹ã®è¿½åŠ " - -#: src/evdev-plug/ed_ui.c:353 -msgid "" -"EvDev-Plug tries to automatically detect and update information about\n" -"event devices available on the system.\n" -"However, if auto-detect doesn't work for your system, or you have event\n" -"devices in a non-standard location (currently they're only searched in\n" -"/dev/input/ ), you may want to add a custom device, explicitly specifying\n" -"name and device file." -msgstr "" -"EvDev-Plug ã¯, システムã§æœ‰åŠ¹ãªã‚¤ãƒ™ãƒ³ãƒˆãƒ‡ãƒã‚¤ã‚¹ã®æƒ…報を自動的ã«æ¤œå‡ºã—ã¦æ›´æ–°ã—" -"よã†ã¨ã—ã¾ã™.\n" -"ã—ã‹ã—, システムã§è‡ªå‹•æ¤œå‡ºãŒå‹•ä½œã—ãªã„, ã‚ã‚‹ã„ã¯ã‚¤ãƒ™ãƒ³ãƒˆãƒ‡ãƒã‚¤ã‚¹ãŒéžæ¨™æº–ãªä½" -"ç½®ã«ã‚ã‚‹å ´åˆ(ç¾çŠ¶ /dev/input/ ã®ã¿ã‚’検索ã—ã¾ã™), \n" -"åå‰ã¨ãƒ‡ãƒã‚¤ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’明確ã«æŒ‡å®šã—ã¦ã‚«ã‚¹ã‚¿ãƒ ãƒ‡ãƒã‚¤ã‚¹ã¨ã—ã¦è¿½åŠ ã—ã¦ãã ã•ã„." - -#: src/evdev-plug/ed_ui.c:361 -msgid "Device name:" -msgstr "デãƒã‚¤ã‚¹å:" - -#: src/evdev-plug/ed_ui.c:365 -msgid "Device file:" -msgstr "デãƒã‚¤ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«:" - -#: src/evdev-plug/ed_ui.c:404 -#, fuzzy -msgid "(custom)" -msgstr "カスタム " - -#: src/evdev-plug/ed_ui.c:412 -msgid "" -"Please specify both name and filename.\n" -"Filename must be specified with absolute path." -msgstr "" -"åå‰ã¨ãƒ•ã‚¡ã‚¤ãƒ«åã®ä¸¡æ–¹ã‚’指定ã—ã¦ãã ã•ã„.\n" -"ファイルåã¯çµ¶å¯¾ãƒ‘スã§æŒ‡å®šã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“." - -#: src/evdev-plug/ed_ui.c:447 -msgid "Do you want to remove the existing configuration for selected device?\n" -msgstr "é¸æŠžã—ãŸãƒ‡ãƒã‚¤ã‚¹ã‚’ç¾åœ¨ã®è¨­å®šã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹?\n" - -#: src/evdev-plug/ed_ui.c:466 -msgid "Do you want to remove the selected custom device?\n" -msgstr "é¸æŠžã—ãŸã‚«ã‚¹ã‚¿ãƒ ãƒ‡ãƒã‚¤ã‚¹ã‚’削除ã—ã¾ã™ã‹?\n" - -#: src/evdev-plug/ed_ui.c:612 -msgid "EvDev-Plug - Configuration" -msgstr "EvDev-Plug - 設定" - -#: src/evdev-plug/ed_ui.c:651 -msgid "Active" -msgstr "アクティブ" - -#: src/evdev-plug/ed_ui.c:655 src/sun/configure.c:486 -msgid "Status" -msgstr "状態" - -#: src/evdev-plug/ed_ui.c:664 -msgid "Device Name" -msgstr "デãƒã‚¤ã‚¹å" - -#: src/evdev-plug/ed_ui.c:668 -msgid "Device File" -msgstr "デãƒã‚¤ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«" - -#: src/evdev-plug/ed_ui.c:672 -msgid "Device Address" -msgstr "デãƒã‚¤ã‚¹ã‚¢ãƒ‰ãƒ¬ã‚¹" - -#: src/evdev-plug/ed_ui.c:689 -msgid "_Bindings" -msgstr "ãƒã‚¤ãƒ³ãƒ‡ã‚£ãƒ³ã‚°(_B)" - -#: src/evdev-plug/ed_ui.c:838 -msgid "" -"Press a key of your device to bind it;\n" -"if no key is pressed in five seconds, this window\n" -"will close without binding changes." -msgstr "" -"ãƒã‚¤ãƒ³ãƒ‰ã™ã‚‹ãƒ‡ãƒã‚¤ã‚¹ã®ã‚­ãƒ¼ã‚’押ã—ã¦ãã ã•ã„.\n" -"5秒以内ã«ã‚­ãƒ¼ãŒæŠ¼ã•ã‚Œãªã‘ã‚Œã°, \n" -"ãƒã‚¤ãƒ³ãƒ‡ã‚£ãƒ³ã‚°ã‚’変更ã›ãšã«ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‰ã˜ã¾ã™. " - -#: src/evdev-plug/ed_ui.c:875 -msgid "" -"This input event has been already assigned.\n" -"\n" -"It's not possible to assign multiple actions to the same input event " -"(although it's possible to assign the same action to multiple events)." -msgstr "" -"ã“ã®å…¥åŠ›ã‚¤ãƒ™ãƒ³ãƒˆã¯æ—¢ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™.\n" -"\n" -"åŒã˜å…¥åŠ›ã‚¤ãƒ™ãƒ³ãƒˆã«è¤‡æ•°ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’割り当ã¦ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“. (ã—ã‹ã—, 複数" -"ã®ã‚¤ãƒ™ãƒ³ãƒˆã«åŒã˜ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’割り当ã¦ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã™)" - -#: src/evdev-plug/ed_ui.c:1323 -msgid "EvDev-Plug - Bindings Configuration" -msgstr "EvDev-Plug - ãƒã‚¤ãƒ³ãƒ‡ã‚£ãƒ³ã‚°è¨­å®š" - -#: src/evdev-plug/ed_ui.c:1363 -msgid "Name: " -msgstr "åå‰: " - -#: src/evdev-plug/ed_ui.c:1372 -msgid "Filename: " -msgstr "ファイルå: " - -#: src/evdev-plug/ed_ui.c:1381 -msgid "Phys.Address: " -msgstr "Phys.アドレス: " - -#: src/evdev-plug/ed_ui.c:1460 -msgid "EvDev-Plug - about" -msgstr "EvDev-Plug ã«ã¤ã„ã¦" - -#: src/evdev-plug/ed_ui.c:1491 -msgid "" -"\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"written by Giacomo Lozito\n" -msgstr "" -"\n" -"イベントデãƒã‚¤ã‚¹ã«ã‚ˆã£ã¦ãƒ—レイヤをé éš”æ“作\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"Giacomo Lozito ã«ã‚ˆã£ã¦æ›¸ã‹ã‚ŒãŸ.\n" -"\n" - -#: src/ffaudio/ffaudio-core.c:662 +#: src/ffaudio/ffaudio-core.c:763 #, c-format msgid "" "Multi-format audio decoding plugin for Audacious based on\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" "Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" "\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" "Audacious plugin by:\n" " William Pitcock ,\n" " Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" msgstr "" -#: src/ffaudio/ffaudio-core.c:675 +#: src/ffaudio/ffaudio-core.c:777 #, fuzzy msgid "About FFaudio Plugin" msgstr "FLAC オーディオプラグインã«ã¤ã„ã¦" -#: src/filewriter/filewriter.c:180 +#: src/filewriter/filewriter.c:155 msgid "About FileWriter-Plugin" msgstr "ファイルライタ・プラグインã«ã¤ã„ã¦" -#: src/filewriter/filewriter.c:181 +#: src/filewriter/filewriter.c:156 #, fuzzy msgid "" "FileWriter-Plugin\n" @@ -2379,250 +1112,208 @@ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" "USA.ã¸æ‰‹ç´™ã‚’書ã„ã¦ä¸‹ã•ã„." -#: src/filewriter/filewriter.c:466 +#: src/filewriter/filewriter.c:450 msgid "File Writer Configuration" msgstr "ファイルライタã®è¨­å®š" -#: src/filewriter/filewriter.c:478 +#: src/filewriter/filewriter.c:462 msgid "Output file format:" msgstr "出力ファイルフォーマット:" -#: src/filewriter/filewriter.c:496 src/ladspa/ladspa.c:1058 +#: src/filewriter/filewriter.c:480 msgid "Configure" msgstr "設定" -#: src/filewriter/filewriter.c:511 +#: src/filewriter/filewriter.c:495 msgid "Save into original directory" msgstr "å…ƒã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ä¿å­˜ã™ã‚‹" -#: src/filewriter/filewriter.c:516 +#: src/filewriter/filewriter.c:500 msgid "Save into custom directory" msgstr "指定ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ä¿å­˜ã™ã‚‹" -#: src/filewriter/filewriter.c:528 +#: src/filewriter/filewriter.c:510 msgid "Output file folder:" msgstr "ファイル出力先ディレクトリ:" -#: src/filewriter/filewriter.c:532 +#: src/filewriter/filewriter.c:514 msgid "Pick a folder" msgstr "ディレクトリã®é¸æŠž" -#: src/filewriter/filewriter.c:551 +#: src/filewriter/filewriter.c:533 msgid "Get filename from:" msgstr "ファイルåã®å–å¾—å…ƒ:" -#: src/filewriter/filewriter.c:554 +#: src/filewriter/filewriter.c:536 msgid "original file tags" msgstr "å…ƒã®ãƒ•ã‚¡ã‚¤ãƒ«ã®ã‚¿ã‚°" -#: src/filewriter/filewriter.c:560 +#: src/filewriter/filewriter.c:542 msgid "original filename" msgstr "å…ƒã®ãƒ•ã‚¡ã‚¤ãƒ«å" -#: src/filewriter/filewriter.c:570 +#: src/filewriter/filewriter.c:552 msgid "Don't strip file name extension" msgstr "ファイルåã‹ã‚‰æ‹¡å¼µå­ã‚’å–り除ã‹ãªã„" -#: src/filewriter/filewriter.c:574 -msgid "" -"If enabled, the extension from the original filename will not be stripped " -"before adding the new file extension to the end." -msgstr "" -"ã“れを有効ã«ã™ã‚‹ã¨, æ–°ã—ã„ファイル拡張å­ã‚’末尾ã«ã¤ã‘るより先ã«, å…ƒã®ãƒ•ã‚¡ã‚¤ãƒ«" -"åã®æ‹¡å¼µå­ã¯å–り除ã‹ã‚Œã¾ã›ã‚“." - -#: src/filewriter/filewriter.c:588 +#: src/filewriter/filewriter.c:567 msgid "Prepend track number to filename" msgstr "ファイルåã®å…ˆé ­ã«ãƒˆãƒ©ãƒƒã‚¯ç•ªå·ã‚’付加ã™ã‚‹" -#: src/filewriter/mp3.c:710 +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:783 +msgid "Auto" +msgstr "自動" + +#: src/filewriter/mp3.c:38 +#, fuzzy +msgid "Joint Stereo" +msgstr "ジョイントステレオ" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 src/sid/xs_interface.c:308 +msgid "Stereo" +msgstr "ステレオ" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 src/sid/xs_interface.c:301 +msgid "Mono" +msgstr "モノラル" + +#: src/filewriter/mp3.c:724 msgid "MP3 Configuration" msgstr "MP3 設定" -#: src/filewriter/mp3.c:737 +#: src/filewriter/mp3.c:747 msgid "Algorithm Quality:" msgstr "アルゴリズムå“質:" -#: src/filewriter/mp3.c:759 -msgid "" -"best/slowest:0;\n" -"worst/fastest:9;\n" -"recommended:2;\n" -"default:5;" -msgstr "" -"最高å“質/最低速:0;\n" -"最低å“質/最高速:9;\n" -"推奨:2;\n" -"デフォルト:5;" - -#: src/filewriter/mp3.c:767 +#: src/filewriter/mp3.c:772 msgid "Output Samplerate:" msgstr "出力サンプリングレート:" -#: src/filewriter/mp3.c:778 src/filewriter/mp3.c:919 -msgid "Auto" -msgstr "自動" - #: src/filewriter/mp3.c:800 msgid "(Hz)" msgstr "(Hz)" -#: src/filewriter/mp3.c:812 +#: src/filewriter/mp3.c:807 msgid "Bitrate / Compression ratio:" msgstr "ビットレート / 圧縮率:" -#: src/filewriter/mp3.c:838 +#: src/filewriter/mp3.c:831 msgid "Bitrate (kbps):" msgstr "ビットレート (kbps):" -#: src/filewriter/mp3.c:879 +#: src/filewriter/mp3.c:864 msgid "Compression ratio:" msgstr "圧縮率:" -#: src/filewriter/mp3.c:909 +#: src/filewriter/mp3.c:888 msgid "Audio Mode:" msgstr "オーディオ モード:" -#: src/filewriter/mp3.c:924 -msgid "Joint-Stereo" -msgstr "ジョイントステレオ" - -#: src/filewriter/mp3.c:967 +#: src/filewriter/mp3.c:913 msgid "Misc:" msgstr "ãã®ä»–:" -#: src/filewriter/mp3.c:978 +#: src/filewriter/mp3.c:924 msgid "Enforce strict ISO complience" msgstr "厳格㪠ISO éµå®ˆã‚’強制ã™ã‚‹" -#: src/filewriter/mp3.c:989 +#: src/filewriter/mp3.c:935 msgid "Error protection" msgstr "エラーä¿è­·" -#: src/filewriter/mp3.c:1001 -msgid "Adds 16 bit checksum to every frame" -msgstr "ã™ã¹ã¦ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã« 16 ビットãƒã‚§ãƒƒã‚¯ã‚µãƒ ã‚’付加ã™ã‚‹" - -#: src/filewriter/mp3.c:1006 src/filewriter/vorbis.c:247 -#: src/modplug/gui/interface.cxx:320 +#: src/filewriter/mp3.c:947 src/filewriter/vorbis.c:245 msgid "Quality" msgstr "音質" -#: src/filewriter/mp3.c:1018 +#: src/filewriter/mp3.c:957 msgid "Enable VBR/ABR" msgstr "VBR/ABR を有効ã«ã™ã‚‹" -#: src/filewriter/mp3.c:1030 +#: src/filewriter/mp3.c:967 msgid "Type:" msgstr "タイプ:" -#: src/filewriter/mp3.c:1041 -msgid "Variable bitrate" -msgstr "å¯å¤‰ãƒ“ットレート" - -#: src/filewriter/mp3.c:1053 -msgid "Average bitrate" -msgstr "å¹³å‡ãƒ“ットレート" - -#: src/filewriter/mp3.c:1067 +#: src/filewriter/mp3.c:1000 msgid "VBR Options:" msgstr "VBR オプション:" -#: src/filewriter/mp3.c:1083 +#: src/filewriter/mp3.c:1016 msgid "Minimum bitrate (kbps):" msgstr "最å°ãƒ“ットレート (kbps):" -#: src/filewriter/mp3.c:1119 +#: src/filewriter/mp3.c:1043 msgid "Maximum bitrate (kbps):" msgstr "最大ビットレート (kbps):" -#: src/filewriter/mp3.c:1151 +#: src/filewriter/mp3.c:1066 msgid "Strictly enforce minimum bitrate" msgstr "最å°ãƒ“ットレートを厳格ã«å¼·åˆ¶ã™ã‚‹" -#: src/filewriter/mp3.c:1153 -msgid "" -"For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/" -"mp3 player)" -msgstr "" -"低ã„ビットレート㮠mp3 をサãƒãƒ¼ãƒˆã—ãªã„プレイヤ (Apex AD600-A DVD/mp3 player)" -"ã®ãŸã‚ã«ä½¿ã„ã¾ã™" - -#: src/filewriter/mp3.c:1166 +#: src/filewriter/mp3.c:1078 msgid "ABR Options:" msgstr "ABR オプション:" -#: src/filewriter/mp3.c:1176 +#: src/filewriter/mp3.c:1088 msgid "Average bitrate (kbps):" msgstr "å¹³å‡ãƒ“ットレート (kbps):" -#: src/filewriter/mp3.c:1213 +#: src/filewriter/mp3.c:1116 msgid "VBR quality level:" msgstr "VBR å“質レベル:" -#: src/filewriter/mp3.c:1228 -msgid "" -"highest:0;\n" -"lowest:9;\n" -"default:4;" -msgstr "" -"最高:0;\n" -"最低:9;\n" -"デフォルト:4;" - -#: src/filewriter/mp3.c:1236 +#: src/filewriter/mp3.c:1135 msgid "Don't write Xing VBR header" msgstr "Xing VBR ヘッダを書ãè¾¼ã¾ãªã„" -#: src/filewriter/mp3.c:1250 +#: src/filewriter/mp3.c:1149 msgid "VBR/ABR" msgstr "VBR/ABR" -#: src/filewriter/mp3.c:1262 +#: src/filewriter/mp3.c:1159 msgid "Frame params:" msgstr "フレーム パラメータ:" -#: src/filewriter/mp3.c:1274 +#: src/filewriter/mp3.c:1171 msgid "Mark as copyright" msgstr "著作権物ã¨ã—ã¦ãƒžãƒ¼ã‚¯" -#: src/filewriter/mp3.c:1285 +#: src/filewriter/mp3.c:1182 msgid "Mark as original" msgstr "オリジナルã¨ã—ã¦ãƒžãƒ¼ã‚¯" -#: src/filewriter/mp3.c:1297 +#: src/filewriter/mp3.c:1194 msgid "ID3 params:" msgstr "ID3 パラメータ:" -#: src/filewriter/mp3.c:1308 +#: src/filewriter/mp3.c:1205 msgid "Force addition of version 2 tag" msgstr "ヴァージョン 2 ã‚¿ã‚°ã®ä»˜åŠ ã‚’強制ã™ã‚‹" -#: src/filewriter/mp3.c:1318 +#: src/filewriter/mp3.c:1215 msgid "Only add v1 tag" msgstr "v1 ã‚¿ã‚°ã®ã¿ä»˜åŠ ã™ã‚‹" -#: src/filewriter/mp3.c:1325 +#: src/filewriter/mp3.c:1222 msgid "Only add v2 tag" msgstr "v2 ã‚¿ã‚°ã®ã¿ä»˜åŠ ã™ã‚‹" -#: src/filewriter/mp3.c:1346 +#: src/filewriter/mp3.c:1243 msgid "Tags" msgstr "ã‚¿ã‚°" -#: src/filewriter/vorbis.c:240 +#: src/filewriter/vorbis.c:238 msgid "Vorbis Encoder Configuration" msgstr "Vorbis エンコーダ設定" -#: src/filewriter/vorbis.c:260 +#: src/filewriter/vorbis.c:258 msgid "Quality level (0 - 10):" msgstr "å“質レベル (0 - 10):" -#: src/flacng/plugin.c:457 -msgid "FLAC Audio Plugin " -msgstr "FLAC オーディオ プラグイン" +#: src/flacng/plugin.c:379 +msgid "About FLAC Audio Plugin" +msgstr "FLAC オーディオプラグインã«ã¤ã„ã¦" -#: src/flacng/plugin.c:458 +#: src/flacng/plugin.c:380 msgid "" "\n" "\n" @@ -2638,15 +1329,11 @@ "\n" "http://www.skytale.net/projects/bmp-flac2/" -#: src/flacng/plugin.c:464 -msgid "About FLAC Audio Plugin" -msgstr "FLAC オーディオプラグインã«ã¤ã„ã¦" - -#: src/gnomeshortcuts/gnomeshortcuts.c:306 +#: src/gnomeshortcuts/gnomeshortcuts.c:303 msgid "About Gnome Shortcut Plugin" msgstr "Gnome ショートカットプラグインã«ã¤ã„ã¦" -#: src/gnomeshortcuts/gnomeshortcuts.c:307 +#: src/gnomeshortcuts/gnomeshortcuts.c:304 msgid "" "Gnome Shortcut Plugin\n" "Let's you control the player with Gnome's shortcuts.\n" @@ -2660,494 +1347,506 @@ "Copyright (C) 2007-2008 Sascha Hlusiak \n" "\n" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:273 +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 msgid "Open Files" msgstr "" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:271 #, fuzzy msgid "Add Files" msgstr "ファイルã®è¿½åŠ ..." -#: src/gntui/gntui.c:271 +#: src/gntui/gntui.c:270 #, fuzzy msgid "Audacious2" msgstr "Audacious" -#: src/gntui/gntui.c:312 +#: src/gntui/gntui.c:311 msgid "gnt interface" msgstr "" -#: src/gtkui/actions.c:257 src/skins/ui_main.c:818 -msgid "Can't jump to time when no track is being played.\n" -msgstr "å†ç”Ÿã•ã‚Œã‚‹ãƒˆãƒ©ãƒƒã‚¯ãŒãªã„時間ã¸ã¯ç§»å‹•ã§ãã¾ã›ã‚“.\n" - -#: src/gtkui/actions.c:272 src/gtkui/ui_manager.c:204 -#: src/gtkui/ui_manager.c:205 src/skins/ui_main.c:833 -#: src/skins/ui_manager.c:410 src/skins/ui_manager.c:411 -msgid "Jump to Time" -msgstr "指定ã—ãŸæ™‚é–“ã¸ç§»å‹•" - -#: src/gtkui/actions.c:289 src/skins/ui_main.c:854 -msgid "minutes:seconds" -msgstr "分:秒" - -#: src/gtkui/actions.c:299 src/skins/ui_main.c:864 -msgid "Track length:" -msgstr "トラックã®åˆè¨ˆæ™‚é–“:" +#: src/gtkui/columns.c:36 +#, fuzzy +msgid "Entry number" +msgstr "トラック番å·:" -#: src/gtkui/actions.c:610 src/skins/ui_playlist.c:648 -#, c-format -msgid "Error writing playlist \"%s\": %s" -msgstr "プレイリスト \"%s\" を書ã込む際ã«ã‚¨ãƒ©ãƒ¼: %s" +#: src/gtkui/columns.c:36 src/sid/xs_interface.c:1103 +msgid "Title" +msgstr "タイトル" -#: src/gtkui/actions.c:625 src/skins/ui_playlist.c:670 -#, c-format -msgid "%s already exist. Continue?" -msgstr "%s ã¯æ—¢ã«å­˜åœ¨ã—ã¦ã„ã¾ã™. 続行ã—ã¾ã™ã‹ï¼Ÿ" +#: src/gtkui/columns.c:37 +#, fuzzy +msgid "Artist" +msgstr "アーティスト:" -#: src/gtkui/actions.c:651 src/skins/ui_manager.c:214 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "Export Playlist" -msgstr "プレイリストã®èª­ã¿è¾¼ã¿" +msgid "Year" +msgstr "å¹´:" -#: src/gtkui/actions.c:723 src/skins/ui_manager.c:211 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "Import Playlist" -msgstr "プレイリストã®èª­ã¿è¾¼ã¿" +msgid "Album" +msgstr "アルãƒãƒ å:" -#: src/gtkui/ui_gtk.c:72 -msgid "GTK Interface" -msgstr "" +#: src/gtkui/columns.c:37 +#, fuzzy +msgid "Track" +msgstr "トラック:" -#: src/gtkui/ui_gtk.c:281 src/skins/ui_main.c:388 -#, c-format -msgid "%s - Audacious" -msgstr "%s - Audacious" +#: src/gtkui/columns.c:37 +#, fuzzy +msgid "Queue position" +msgstr "ä½ç½®" -#: src/gtkui/ui_gtk.c:287 src/skins/ui_main.c:390 src/skins/ui_main.c:2166 -msgid "Audacious" -msgstr "Audacious" +#: src/gtkui/columns.c:38 +#, fuzzy +msgid "Length" +msgstr "é•·ã• (ミリ秒):" -#: src/gtkui/ui_manager.c:35 src/gtkui/ui_manager.c:36 -#: src/skins/ui_manager.c:53 src/skins/ui_manager.c:54 -msgid "Stop after Current Song" -msgstr "ç¾åœ¨ã®æ›²ã®å¾Œã«åœæ­¢ã™ã‚‹" +#: src/gtkui/columns.c:38 +#, fuzzy +msgid "File path" +msgstr "ファイルå" -#: src/gtkui/ui_manager.c:38 src/gtkui/ui_manager.c:39 -#: src/skins/ui_manager.c:59 src/skins/ui_manager.c:60 -msgid "Repeat" -msgstr "リピート" +#: src/gtkui/columns.c:38 +#, fuzzy +msgid "File name" +msgstr "ファイルå" -#: src/gtkui/ui_manager.c:41 src/gtkui/ui_manager.c:42 -#: src/skins/ui_manager.c:62 src/skins/ui_manager.c:63 -msgid "Shuffle" -msgstr "シャッフル" +#: src/gtkui/columns.c:38 +#, fuzzy +msgid "Custom title" +msgstr "カスタムスキン" -#: src/gtkui/ui_manager.c:44 src/gtkui/ui_manager.c:45 -#: src/skins/ui_manager.c:65 src/skins/ui_manager.c:66 -msgid "No Playlist Advance" -msgstr "次ã®æ›²ã«é€²ã¾ãªã„" +#: src/gtkui/columns.c:39 +#, fuzzy +msgid "Bitrate" +msgstr "ビットレート (kbps):" -#: src/gtkui/ui_manager.c:47 +#: src/gtkui/columns.c:286 #, fuzzy -msgid "Show playlists" -msgstr "プレイリストエディタを表示ã™ã‚‹" +msgid "Choose Columns" +msgstr "プレイヤを表示ã™ã‚‹" -#: src/gtkui/ui_manager.c:48 +#: src/gtkui/columns.c:300 #, fuzzy -msgid "Show/hide playlists" -msgstr "プレイリストã®ä¿å­˜" +msgid "Available:" +msgstr "å¯å¤‰" -#: src/gtkui/ui_manager.c:50 -msgid "Show infoarea" +#: src/gtkui/columns.c:334 +msgid "Chosen:" msgstr "" -#: src/gtkui/ui_manager.c:51 -msgid "Show/hide infoarea" +#: src/gtkui/layout.c:122 +msgid "Dock at Left" msgstr "" -#: src/gtkui/ui_manager.c:53 -#, fuzzy -msgid "Show main menu" -msgstr "メインウィンドウを表示ã™ã‚‹" +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "" -#: src/gtkui/ui_manager.c:54 -msgid "Show/hide main menu" +#: src/gtkui/layout.c:123 +msgid "Undock" msgstr "" -#: src/gtkui/ui_manager.c:56 +#: src/gtkui/layout.c:123 #, fuzzy -msgid "Show statusbar" -msgstr "状態" +msgid "Disable" +msgstr "å¯å¤‰" -#: src/gtkui/ui_manager.c:57 +#: src/gtkui/menus.c:132 #, fuzzy -msgid "Show/hide statusbar" -msgstr "プレイリストã®ä¿å­˜" +msgid "_Open Files ..." +msgstr "ファイルã®è¿½åŠ ..." -#: src/gtkui/ui_manager.c:69 src/gtkui/ui_manager.c:70 -#: src/skins/ui_manager.c:170 src/skins/ui_manager.c:171 -msgid "Pause" -msgstr "一時åœæ­¢" +#: src/gtkui/menus.c:133 +#, fuzzy +msgid "Open _URL ..." +msgstr "ファイルã®è¿½åŠ ..." -#: src/gtkui/ui_manager.c:72 src/gtkui/ui_manager.c:73 src/hotkey/gui.c:73 -#: src/skins/ui_manager.c:173 src/skins/ui_manager.c:174 -msgid "Stop" -msgstr "åœæ­¢" +#: src/gtkui/menus.c:134 +#, fuzzy +msgid "_Add File ..." +msgstr "ファイルã®è¿½åŠ ..." -#: src/gtkui/ui_manager.c:75 src/gtkui/ui_manager.c:76 -#: src/skins/ui_manager.c:176 src/skins/ui_manager.c:177 -msgid "Previous" -msgstr "å‰ã®æ›²" +#: src/gtkui/menus.c:135 +#, fuzzy +msgid "Add U_RL ..." +msgstr "ファイルã®è¿½åŠ ..." -#: src/gtkui/ui_manager.c:78 src/gtkui/ui_manager.c:79 -#: src/skins/ui_manager.c:179 src/skins/ui_manager.c:180 -msgid "Next" -msgstr "次ã®æ›²" +#: src/gtkui/menus.c:137 +#, fuzzy +msgid "A_bout ..." +msgstr "プラグインã«ã¤ã„ã¦" -#: src/gtkui/ui_manager.c:84 src/skins/ui_manager.c:197 -msgid "Playlist" -msgstr "プレイリスト" +#: src/gtkui/menus.c:138 +#, fuzzy +msgid "_Preferences ..." +msgstr "設定" -#: src/gtkui/ui_manager.c:86 src/gtkui/ui_manager.c:87 -#: src/skins/ui_manager.c:199 src/skins/ui_manager.c:200 -msgid "New Playlist" -msgstr "æ–°ã—ã„プレイリスト" - -#: src/gtkui/ui_manager.c:89 src/gtkui/ui_manager.c:90 -#: src/skins/ui_manager.c:208 src/skins/ui_manager.c:209 -msgid "Delete Playlist" -msgstr "プレイリストã®å‰Šé™¤" +#: src/gtkui/menus.c:139 src/skins/ui_manager.c:412 +msgid "_Quit" +msgstr "終了(_Q)" -#: src/gtkui/ui_manager.c:92 +#: src/gtkui/menus.c:142 #, fuzzy -msgid "Import Playlist ..." -msgstr "プレイリストã®èª­ã¿è¾¼ã¿" - -#: src/gtkui/ui_manager.c:93 src/skins/ui_manager.c:212 -msgid "Loads a playlist file into the selected playlist." -msgstr "é¸æŠžã—ãŸãƒ—レイリストã«ãƒ—レイリストファイルを読ã¿è¾¼ã¿ã¾ã™." +msgid "_Play" +msgstr "æ¼”å¥" -#: src/gtkui/ui_manager.c:95 +#: src/gtkui/menus.c:143 #, fuzzy -msgid "Export Playlist ..." -msgstr "プレイリストã®èª­ã¿è¾¼ã¿" - -#: src/gtkui/ui_manager.c:96 src/skins/ui_manager.c:215 -msgid "Saves the selected playlist." -msgstr "é¸æŠžã—ãŸãƒ—レイリストをä¿å­˜ã—ã¾ã™." +msgid "Paus_e" +msgstr "一時åœæ­¢" -#: src/gtkui/ui_manager.c:98 src/skins/ui_manager.c:217 +#: src/gtkui/menus.c:144 #, fuzzy -msgid "Save All Playlists" -msgstr "プレイリストã®ä¿å­˜" - -#: src/gtkui/ui_manager.c:99 src/skins/ui_manager.c:218 -msgid "" -"Saves all the playlists that are open. Note that this is done automatically " -"when Audacious quits." -msgstr "" +msgid "_Stop" +msgstr "åœæ­¢" -#: src/gtkui/ui_manager.c:103 +#: src/gtkui/menus.c:145 #, fuzzy -msgid "Refresh" -msgstr "リフレッシュレート" - -#: src/gtkui/ui_manager.c:104 src/skins/ui_manager.c:223 -msgid "Refreshes metadata associated with a playlist entry." -msgstr "プレイリストã®ã‚¨ãƒ³ãƒˆãƒªã«é–¢é€£ä»˜ã‘られãŸãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’æ›´æ–°ã—ã¾ã™." +msgid "Pre_vious" +msgstr "å‰ã®æ›²" -#: src/gtkui/ui_manager.c:107 +#: src/gtkui/menus.c:146 #, fuzzy -msgid "Playlist Manager" -msgstr "プレイリストマãƒãƒ¼ã‚¸ãƒ£" - -#: src/gtkui/ui_manager.c:108 src/skins/ui_manager.c:227 -msgid "Opens the playlist manager." -msgstr "プレイリストマãƒãƒ¼ã‚¸ãƒ£ã‚’é–‹ãã¾ã™." +msgid "_Next" +msgstr "次ã®æ›²" -#: src/gtkui/ui_manager.c:111 +#: src/gtkui/menus.c:148 #, fuzzy -msgid "Add URL ..." -msgstr "ファイルã®è¿½åŠ ..." - -#: src/gtkui/ui_manager.c:112 src/skins/ui_manager.c:237 -msgid "Adds a remote track to the playlist." -msgstr "リモートトラックをプレイリストã«è¿½åŠ ã—ã¾ã™." +msgid "_Repeat" +msgstr "リピート" -#: src/gtkui/ui_manager.c:115 +#: src/gtkui/menus.c:149 #, fuzzy -msgid "Add Files ..." -msgstr "ファイルã®è¿½åŠ ..." - -#: src/gtkui/ui_manager.c:116 src/skins/ui_manager.c:241 -msgid "Adds files to the playlist." -msgstr "ファイルをプレイリストã«è¿½åŠ ã—ã¾ã™." - -#: src/gtkui/ui_manager.c:119 src/skins/ui_manager.c:264 -msgid "Remove All" -msgstr "å…¨ã¦å‰Šé™¤" +msgid "S_huffle" +msgstr "シャッフル" -#: src/gtkui/ui_manager.c:120 src/skins/ui_manager.c:265 -msgid "Removes all entries from the playlist." -msgstr "å…¨ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã‚’プレイリストã‹ã‚‰å‰Šé™¤ã—ã¾ã™." +#: src/gtkui/menus.c:150 +#, fuzzy +msgid "N_o Playlist Advance" +msgstr "次ã®æ›²ã«é€²ã¾ãªã„" -#: src/gtkui/ui_manager.c:123 src/skins/ui_manager.c:290 -msgid "Remove Unselected" -msgstr "é¸æŠžã—ã¦ã„ãªã„エントリã®å‰Šé™¤" +#: src/gtkui/menus.c:151 +#, fuzzy +msgid "Stop _After This Song" +msgstr "ç¾åœ¨ã®æ›²ã®å¾Œã«åœæ­¢ã™ã‚‹" -#: src/gtkui/ui_manager.c:124 src/skins/ui_manager.c:291 -msgid "Remove unselected entries from the playlist." -msgstr "é¸æŠžã—ã¦ã„ãªã„エントリをプレイリストã‹ã‚‰å‰Šé™¤ã—ã¾ã™." +#: src/gtkui/menus.c:153 src/gtkui/menus.c:210 +msgid "Song _Info ..." +msgstr "" -#: src/gtkui/ui_manager.c:127 src/skins/ui_manager.c:294 -msgid "Remove Selected" -msgstr "é¸æŠžã—ãŸã‚¨ãƒ³ãƒˆãƒªã®å‰Šé™¤" +#: src/gtkui/menus.c:154 +#, fuzzy +msgid "Jump to _Time ..." +msgstr "指定ã—ãŸæ™‚é–“ã¸ç§»å‹•" -#: src/gtkui/ui_manager.c:128 src/skins/ui_manager.c:295 -msgid "Remove selected entries from the playlist." -msgstr "é¸æŠžã—ãŸã‚¨ãƒ³ãƒˆãƒªã‚’プレイリストã‹ã‚‰å‰Šé™¤ã—ã¾ã™." +#: src/gtkui/menus.c:155 +msgid "_Jump to Song ..." +msgstr "" -#: src/gtkui/ui_manager.c:131 +#: src/gtkui/menus.c:158 #, fuzzy -msgid "Sort" -msgstr "ãƒãƒ¼ãƒˆ" - -#: src/gtkui/ui_manager.c:132 src/skins/ui_manager.c:330 -#: src/skins/ui_manager.c:360 -msgid "By Track Number" +msgid "By Track _Number" msgstr "トラック番å·" -#: src/gtkui/ui_manager.c:134 src/skins/ui_manager.c:278 -#: src/skins/ui_manager.c:306 src/skins/ui_manager.c:336 -msgid "By Title" +#: src/gtkui/menus.c:159 +#, fuzzy +msgid "By _Title" msgstr "タイトル" -#: src/gtkui/ui_manager.c:136 src/skins/ui_manager.c:314 -#: src/skins/ui_manager.c:344 -msgid "By Artist" +#: src/gtkui/menus.c:160 +#, fuzzy +msgid "By _Artist" msgstr "アーティスト" -#: src/gtkui/ui_manager.c:138 src/skins/ui_manager.c:310 -#: src/skins/ui_manager.c:340 +#: src/gtkui/menus.c:161 #, fuzzy -msgid "By Album" +msgid "By A_lbum" msgstr "アルãƒãƒ å:" -#: src/gtkui/ui_manager.c:140 +#: src/gtkui/menus.c:162 +#, fuzzy +msgid "By Release _Date" +msgstr "日付" + +#: src/gtkui/menus.c:163 #, fuzzy -msgid "By File Path" +msgid "By _File Path" msgstr "ファイルå" -#: src/gtkui/ui_manager.c:142 +#: src/gtkui/menus.c:164 #, fuzzy -msgid "Reverse Order" -msgstr "プレイリストを逆順ã«ã™ã‚‹" +msgid "By _Custom Title" +msgstr "カスタムスキン" -#: src/gtkui/ui_manager.c:147 -msgid "Output" -msgstr "" +#: src/gtkui/menus.c:166 +#, fuzzy +msgid "R_everse Order" +msgstr "プレイリストを逆順ã«ã™ã‚‹" -#: src/gtkui/ui_manager.c:149 src/modplug/gui/interface.cxx:572 -msgid "Effects" -msgstr "エフェクト" +#: src/gtkui/menus.c:167 +#, fuzzy +msgid "_Random Order" +msgstr "ランダム(R_)" -#: src/gtkui/ui_manager.c:151 +#: src/gtkui/menus.c:170 src/gtkui/menus.c:212 #, fuzzy -msgid "Equalizer" -msgstr "イコライザを表示ã™ã‚‹" +msgid "_Refresh" +msgstr "リフレッシュレート" -#: src/gtkui/ui_manager.c:156 src/skins/ui_manager.c:232 -msgid "View" -msgstr "表示" +#: src/gtkui/menus.c:172 +#, fuzzy +msgid "_Sort" +msgstr "ãƒãƒ¼ãƒˆ" -#: src/gtkui/ui_manager.c:157 src/skins/ui_manager.c:233 -msgid "Interface" +#: src/gtkui/menus.c:174 +msgid "_New" msgstr "" -#: src/gtkui/ui_manager.c:164 src/skins/ui_manager.c:370 -msgid "File" -msgstr "ファイル" +#: src/gtkui/menus.c:175 +#, fuzzy +msgid "_Close" +msgstr "é–‰ã˜ã‚‹" -#: src/gtkui/ui_manager.c:167 +#: src/gtkui/menus.c:177 #, fuzzy -msgid "Components" -msgstr "コメント:" +msgid "_Import ..." +msgstr "インãƒãƒ¼ãƒˆ" -#: src/gtkui/ui_manager.c:169 src/gtkui/ui_manager.c:172 -#: src/skins/ui_manager.c:375 src/skins/ui_manager.c:378 -msgid "View Track Details" -msgstr "トラックã®è©³ç´°" +#: src/gtkui/menus.c:178 +#, fuzzy +msgid "_Export ..." +msgstr "エクスãƒãƒ¼ãƒˆ" -#: src/gtkui/ui_manager.c:170 src/gtkui/ui_manager.c:173 -#: src/skins/ui_manager.c:376 src/skins/ui_manager.c:379 -msgid "View track details" -msgstr "トラックã®è©³ç´°" +#: src/gtkui/menus.c:180 +#, fuzzy +msgid "_Playlist Manager ..." +msgstr "プレイリストマãƒãƒ¼ã‚¸ãƒ£" -#: src/gtkui/ui_manager.c:175 src/gtkui/ui_manager.c:176 -#: src/skins/ui_manager.c:381 src/skins/ui_manager.c:382 -msgid "About Audacious" -msgstr "Audacious ã«ã¤ã„ã¦" +#: src/gtkui/menus.c:183 +#, fuzzy +msgid "Volume _Up" +msgstr "音é‡ã‚’上ã’ã‚‹" -#: src/gtkui/ui_manager.c:178 +#: src/gtkui/menus.c:184 #, fuzzy -msgid "Open Files ..." -msgstr "ファイルã®è¿½åŠ ..." +msgid "Volume _Down" +msgstr "音é‡ã‚’下ã’ã‚‹" -#: src/gtkui/ui_manager.c:179 src/skins/ui_manager.c:385 -msgid "Load and play a file" -msgstr "ファイルを読ã¿è¾¼ã‚“ã§æ¼”å¥" +#: src/gtkui/menus.c:186 +#, fuzzy +msgid "_Equalizer" +msgstr "イコライザを表示ã™ã‚‹" + +#: src/gtkui/menus.c:188 +#, fuzzy +msgid "E_ffects" +msgstr "エフェクト" -#: src/gtkui/ui_manager.c:181 -msgid "Open URL ..." +#: src/gtkui/menus.c:191 +msgid "_Interface" msgstr "" -#: src/gtkui/ui_manager.c:182 src/skins/ui_manager.c:388 -msgid "Play media from the selected location" -msgstr "é¸æŠžã—ãŸå ´æ‰€ã‹ã‚‰ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’æ¼”å¥" +#: src/gtkui/menus.c:193 +msgid "Show _Menu Bar" +msgstr "" -#: src/gtkui/ui_manager.c:184 src/skins/ui_manager.c:390 -msgid "Plugin services" -msgstr "プラグインサービス" +#: src/gtkui/menus.c:194 +msgid "Show I_nfo Bar" +msgstr "" -#: src/gtkui/ui_manager.c:186 src/skins/ui_manager.c:392 -msgid "Preferences" -msgstr "設定" +#: src/gtkui/menus.c:195 +#, fuzzy +msgid "Show _Status Bar" +msgstr "状態" -#: src/gtkui/ui_manager.c:187 src/skins/ui_manager.c:393 -msgid "Open preferences window" -msgstr "設定ウィンドウを開ã" +#: src/gtkui/menus.c:197 +#, fuzzy +msgid "Show Column _Headers" +msgstr "プレイヤを表示ã™ã‚‹" -#: src/gtkui/ui_manager.c:189 src/skins/ui_manager.c:395 -msgid "_Quit" -msgstr "終了(_Q)" +#: src/gtkui/menus.c:198 +#, fuzzy +msgid "Choose _Columns ..." +msgstr "プレイヤを表示ã™ã‚‹" -#: src/gtkui/ui_manager.c:190 src/skins/ui_manager.c:396 -msgid "Quit Audacious" -msgstr "Audacious を終了ã™ã‚‹" +#: src/gtkui/menus.c:199 +#, fuzzy +msgid "Scrol_l on Song Change" +msgstr "曲メッセージ" -#: src/gtkui/ui_manager.c:192 src/gtkui/ui_manager.c:193 -#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 -msgid "Set A-B" -msgstr "A-B をセット" +#: src/gtkui/menus.c:202 +#, fuzzy +msgid "_File" +msgstr "ファイル" -#: src/gtkui/ui_manager.c:195 src/gtkui/ui_manager.c:196 -#: src/skins/ui_manager.c:401 src/skins/ui_manager.c:402 -msgid "Clear A-B" -msgstr "A-B をクリア" +#: src/gtkui/menus.c:203 +#, fuzzy +msgid "_Playback" +msgstr "æ¼”å¥" -#: src/gtkui/ui_manager.c:198 src/gtkui/ui_manager.c:199 -#: src/skins/ui_manager.c:404 src/skins/ui_manager.c:405 -msgid "Jump to Playlist Start" -msgstr "最åˆã®æ›²ã¸ç§»å‹•" +#: src/gtkui/menus.c:204 +#, fuzzy +msgid "P_laylist" +msgstr "プレイリスト" -#: src/gtkui/ui_manager.c:201 src/gtkui/ui_manager.c:202 src/hotkey/gui.c:80 -#: src/skins/ui_manager.c:407 src/skins/ui_manager.c:408 -msgid "Jump to File" -msgstr "指定ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã¸ç§»å‹•" +#: src/gtkui/menus.c:205 src/gtkui/menus.c:219 +#, fuzzy +msgid "_Services" +msgstr "デãƒã‚¤ã‚¹" -#: src/gtkui/ui_manager.c:207 src/skins/ui_manager.c:413 -msgid "Queue Toggle" -msgstr "キューを切り替ãˆã‚‹" +#: src/gtkui/menus.c:206 +#, fuzzy +msgid "_Output" +msgstr "出力プラグインエラー\n" -#: src/gtkui/ui_manager.c:208 src/skins/ui_manager.c:414 -msgid "Enables/disables the entry in the playlist's queue." -msgstr "プレイリストã®ã‚­ãƒ¥ãƒ¼ã«å…¥ã£ã¦ã„るエントリã®æœ‰åŠ¹/無効を切り替ãˆã¾ã™." +#: src/gtkui/menus.c:207 +#, fuzzy +msgid "_View" +msgstr "表示" -#: src/gtkui/ui_manager.c:211 src/skins/ui_manager.c:417 -msgid "Copy" +#: src/gtkui/menus.c:211 +msgid "_Queue/Unqueue" msgstr "" -#: src/gtkui/ui_manager.c:214 src/skins/ui_manager.c:419 -#, fuzzy -msgid "Cut" -msgstr "カスタム " +#: src/gtkui/menus.c:214 +msgid "Cu_t" +msgstr "" + +#: src/gtkui/menus.c:215 +msgid "_Copy" +msgstr "" -#: src/gtkui/ui_manager.c:217 src/skins/ui_manager.c:421 +#: src/gtkui/menus.c:216 #, fuzzy -msgid "Paste" +msgid "_Paste" msgstr "最も早ã„" -#: src/gtkui/ui_manager.c:220 src/skins/ui_manager.c:254 -msgid "Select All" +#: src/gtkui/menus.c:217 +#, fuzzy +msgid "Select _All" msgstr "å…¨ã¦é¸æŠž" -#: src/gtkui/ui_manager.c:221 src/skins/ui_manager.c:255 -msgid "Selects all of the playlist entries." -msgstr "プレイリストã®å…¨ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã‚’é¸æŠžã—ã¾ã™." +#: src/gtkui/menus.c:222 +#, fuzzy +msgid "_Rename" +msgstr "ファイルå" -#: src/gtkui/ui_manager.c:224 src/skins/ui_manager.c:258 -msgid "Select None" -msgstr "未é¸æŠžã«ã™ã‚‹" +#: src/gtkui/ui_gtk.c:75 +msgid "GTK Interface" +msgstr "" -#: src/gtkui/ui_manager.c:225 src/skins/ui_manager.c:259 -msgid "Deselects all of the playlist entries." -msgstr "プレイリストã®å…¨ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã‚’未é¸æŠžã«ã—ã¾ã™." +#: src/gtkui/ui_gtk.c:132 src/skins/ui_main.c:303 +#, c-format +msgid "%s - Audacious" +msgstr "%s - Audacious" + +#: src/gtkui/ui_gtk.c:138 src/skins/ui_main.c:305 src/skins/ui_main.c:1498 +msgid "Audacious" +msgstr "Audacious" + +#: src/gtkui/ui_gtk.c:177 src/skins/plugin.c:185 +msgid "Error" +msgstr "エラー" -#: src/gtkui/ui_statusbar.c:91 src/skins/ui_main.c:609 +#: src/gtkui/ui_statusbar.c:102 src/skins/ui_main.c:460 msgid "mono" msgstr "モノラル" -#: src/gtkui/ui_statusbar.c:94 src/skins/ui_main.c:608 +#: src/gtkui/ui_statusbar.c:104 src/skins/ui_main.c:459 msgid "stereo" msgstr "ステレオ" -#: src/gtkui/ui_statusbar.c:97 +#: src/gtkui/ui_statusbar.c:106 #, fuzzy, c-format -msgid "%d channels" -msgstr "ãƒãƒ£ãƒ³ãƒãƒ«æ•°" +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "ãƒãƒ£ãƒ³ãƒãƒ«æ•°" +msgstr[1] "ãƒãƒ£ãƒ³ãƒãƒ«æ•°" -#: src/gtkui/ui_statusbar.c:101 +#: src/gtkui/ui_statusbar.c:121 #, c-format -msgid "%s: %d kbps, %d Hz, %s" +msgid "%d kbps" msgstr "" -#: src/hotkey/gui.c:70 +#: src/hotkey/gui.c:71 msgid "Previous Track" msgstr "å‰ã®ãƒˆãƒ©ãƒƒã‚¯" -#: src/hotkey/gui.c:72 +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "æ¼”å¥" + +#: src/hotkey/gui.c:73 msgid "Pause/Resume" msgstr "一時åœæ­¢/å†é–‹" -#: src/hotkey/gui.c:74 +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +msgid "Stop" +msgstr "åœæ­¢" + +#: src/hotkey/gui.c:75 msgid "Next Track" msgstr "次ã®ãƒˆãƒ©ãƒƒã‚¯" -#: src/hotkey/gui.c:75 +#: src/hotkey/gui.c:76 msgid "Forward 5 Seconds" msgstr "5秒進ã‚ã‚‹" -#: src/hotkey/gui.c:76 +#: src/hotkey/gui.c:77 msgid "Rewind 5 Seconds" msgstr "5秒戻ã™" -#: src/hotkey/gui.c:77 +#: src/hotkey/gui.c:78 msgid "Mute" msgstr "無音" -#: src/hotkey/gui.c:78 +#: src/hotkey/gui.c:79 msgid "Volume Up" msgstr "音é‡ã‚’上ã’ã‚‹" -#: src/hotkey/gui.c:79 +#: src/hotkey/gui.c:80 msgid "Volume Down" msgstr "音é‡ã‚’下ã’ã‚‹" -#: src/hotkey/gui.c:81 +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:424 src/skins/ui_manager.c:425 +msgid "Jump to File" +msgstr "指定ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã¸ç§»å‹•" + +#: src/hotkey/gui.c:82 msgid "Toggle Player Windows" msgstr "プレイヤウィンドウを切り替ãˆã‚‹" -#: src/hotkey/gui.c:82 +#: src/hotkey/gui.c:83 msgid "Show On-Screen-Display" msgstr "On-Screen-Display を表示ã™ã‚‹" -#: src/hotkey/gui.c:92 +#: src/hotkey/gui.c:84 +#, fuzzy +msgid "Toggle Repeat" +msgstr "リピート" + +#: src/hotkey/gui.c:85 +#, fuzzy +msgid "Toggle Shuffle" +msgstr "シャッフル" + +#: src/hotkey/gui.c:95 msgid "(none)" msgstr "(ãªã—)" -#: src/hotkey/gui.c:229 +#: src/hotkey/gui.c:232 msgid "" "It is not recommended to bind the primary mouse buttons without " "modificators.\n" @@ -3158,15 +1857,15 @@ "\n" "続ã‘ã¾ã™ã‹?" -#: src/hotkey/gui.c:231 +#: src/hotkey/gui.c:234 msgid "Binding mouse buttons" msgstr "マウスボタン割り当ã¦" -#: src/hotkey/gui.c:381 +#: src/hotkey/gui.c:384 msgid "Global Hotkey Plugin Configuration" msgstr "グローãƒãƒ«ãƒ›ãƒƒãƒˆã‚­ãƒ¼ãƒ—ラグイン設定" -#: src/hotkey/gui.c:397 +#: src/hotkey/gui.c:400 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -3174,23 +1873,23 @@ "テキストフィールド内ã§ã‚­ãƒ¼ã‚³ãƒ³ãƒ“ãƒãƒ¼ã‚·ãƒ§ãƒ³ã‚’押ã—ã¦ãã ã•ã„.\n" "マウスボタンを組ã¿åˆã‚ã›ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™." -#: src/hotkey/gui.c:402 +#: src/hotkey/gui.c:405 msgid "Hotkeys:" msgstr "ホットキー:" -#: src/hotkey/gui.c:421 +#: src/hotkey/gui.c:424 msgid "Action:" msgstr "動作:" -#: src/hotkey/gui.c:429 +#: src/hotkey/gui.c:432 msgid "Key Binding:" msgstr "キーãƒã‚¤ãƒ³ãƒ‰:" -#: src/hotkey/gui.c:660 +#: src/hotkey/gui.c:663 msgid "About Global Hotkey Plugin" msgstr "グローãƒãƒ«ãƒ›ãƒƒãƒˆã‚­ãƒ¼ãƒ—ラグインã«ã¤ã„ã¦" -#: src/hotkey/gui.c:661 +#: src/hotkey/gui.c:664 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3242,7 +1941,7 @@ msgid "Enable debug printing" msgstr "デãƒã‚°å‡ºåŠ›ã‚’有効ã«ã™ã‚‹" -#: src/jack/jack.c:437 +#: src/jack/jack.c:438 msgid "" "XMMS jack Driver 0.17\n" "\n" @@ -3260,134 +1959,20 @@ "develia.org ã® Giacomo Lozito ã«ã‚ˆã‚‹\n" "Audacious ãƒãƒ¼ãƒˆ" -#: src/jack/jack.c:442 +#: src/jack/jack.c:443 msgid "About JACK Output Plugin 0.17" msgstr "JACK 出力プラグイン 0.17 ã«ã¤ã„ã¦" -#: src/ladspa/ladspa.c:824 -msgid "This LADSPA plugin has no user controls" -msgstr "LADSPA プラグインã«ãƒ¦ãƒ¼ã‚¶ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã¯ã‚ã‚Šã¾ã›ã‚“" - -#: src/ladspa/ladspa.c:865 src/ladspa/ladspa.c:952 -msgid "Name" -msgstr "åå‰" - -#: src/ladspa/ladspa.c:952 -msgid "UID" -msgstr "UID" - -#: src/ladspa/ladspa.c:1029 -msgid "Installed plugins" -msgstr "インストール済プラグイン" - -#: src/ladspa/ladspa.c:1037 -msgid "Running plugins" -msgstr "動作中ã®ãƒ—ラグイン" - -#: src/ladspa/ladspa.c:1052 -msgid "Add" -msgstr "追加" - -#: src/ladspa/ladspa.c:1055 -msgid "Remove" -msgstr "削除" - -#: src/ladspa/ladspa.c:1066 -msgid "LADSPA Plugin Catalog" -msgstr "LADSPA プラグイン カタログ" - -#: src/lirc/about.c:63 -msgid "About LIRC Audacious Plugin" -msgstr "LIRC Audacious プラグインã«ã¤ã„ã¦" - -#: src/lirc/about.c:90 -msgid "LIRC Plugin " -msgstr "LIRC プラグイン" - -#: src/lirc/about.c:92 +#: src/lyricwiki/lyricwiki.c:226 msgid "" "\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" -"\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" -msgstr "" -"\n" -"LIRC リモートコントロールデーモンを用ã„ã¦\n" -"Audacious をコントロールã™ã‚‹ã‚·ãƒ³ãƒ—ルãªãƒ—ラグイン\n" -"\n" -"Tony Vroon ã«ã‚ˆã‚‹ Audacious ã¸ã®é©ç”¨\n" -"å…ƒã¨ãªã£ãŸ XMMS LIRC プラグインã¯\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura ã«ã‚ˆã‚‹.\n" -"LIRC ã®æƒ…å ±ã¯ä»¥ä¸‹ã§å¾—られる.\n" -"http://lirc.org" - -#: src/lirc/interface.c:37 -msgid "LIRC plugin settings" -msgstr "LIRC プラグイン設定" - -#: src/lirc/interface.c:61 -msgid "Reconnect to LIRC server" -msgstr "LIRC サーãƒã«å†æŽ¥ç¶š" - -#: src/lirc/interface.c:68 -msgid "Timeout before reconnecting (seconds): " -msgstr "å†æŽ¥ç¶šã¾ã§ã®ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆ(秒): " - -#: src/lirc/interface.c:75 -msgid "Reconnect" -msgstr "å†æŽ¥ç¶š" - -#: src/lirc/interface.c:79 -msgid "Connection" -msgstr "接続" - -#: src/lirc/lirc.c:82 -#, c-format -msgid "%s: could not init LIRC support\n" -msgstr "%s: LIRC サãƒãƒ¼ãƒˆã‚’åˆæœŸåŒ–ã§ãã¾ã›ã‚“ã§ã—ãŸ\n" +"Looking for lyrics..." +msgstr "" -#: src/lirc/lirc.c:90 -#, c-format +#: src/lyricwiki/lyricwiki.c:249 msgid "" -"%s: could not read LIRC config file\n" -"%s: please read the documentation of LIRC\n" -"%s: how to create a proper config file\n" -msgstr "" -"%s: LIRC 設定ファイルを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ\n" -"%s: æ­£ã—ã„設定ファイルã®ä½œã‚Šæ–¹ã‚’知るã«ã¯\n" -"%s: LIRC ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’読んã§ãã ã•ã„\n" - -#: src/lirc/lirc.c:117 -#, c-format -msgid "%s: trying to reconnect...\n" -msgstr "%s: å†æŽ¥ç¶šã‚’試行中...\n" - -#: src/lirc/lirc.c:332 -#, c-format -msgid "%s: unknown command \"%s\"\n" -msgstr "%s: ä¸æ˜Žãªã‚³ãƒžãƒ³ãƒ‰ \"%s\"\n" - -#: src/lirc/lirc.c:342 -#, c-format -msgid "%s: disconnected from LIRC\n" -msgstr "%s: LIRC ã‹ã‚‰åˆ‡æ–­ã•ã‚Œã¾ã—ãŸ\n" - -#: src/lirc/lirc.c:346 -#, c-format -msgid "%s: will try reconnect every %d seconds...\n" -msgstr "%s: %d 秒ã”ã¨ã«å†æŽ¥ç¶šã‚’試ã¿ã¾ã™...\n" - -#: src/lyricwiki/lyricwiki.c:244 -msgid "LyricWiki" +"\n" +"Connecting to lyrics.wikia.com..." msgstr "" #: src/lyricwiki/lyricwiki.c:337 @@ -3396,11 +1981,11 @@ "No lyrics were found." msgstr "" -#: src/metronom/metronom.c:90 +#: src/metronom/metronom.c:85 msgid "About Metronom" msgstr "Metronom ã«ã¤ã„ã¦" -#: src/metronom/metronom.c:91 +#: src/metronom/metronom.c:86 msgid "" "A Tact Generator by Martin Strauss \n" "\n" @@ -3414,269 +1999,48 @@ "例: tact://77 - 毎分 77 æ‹ã‚’æ¼”å¥\n" " tact://60*3/4 - 60 bpm ã‚’ 3/4 æ‹å­ã§æ¼”å¥" -#: src/metronom/metronom.c:145 +#: src/metronom/metronom.c:143 #, c-format msgid "Tact generator: %d bpm" msgstr "タクトジェãƒãƒ¬ãƒ¼ã‚¿: %d bpm" -#: src/metronom/metronom.c:147 +#: src/metronom/metronom.c:145 #, c-format msgid "Tact generator: %d bpm %d/%d" msgstr "タクトジェãƒãƒ¬ãƒ¼ã‚¿: %d bpm %d/%d" -#: src/modplug/gui/interface.cxx:137 -msgid "ModPlug Configuration" -msgstr "ModPlug 設定" +#: src/mpg123/mpg123.c:183 +msgid "Surround" +msgstr "サラウンド" -#: src/modplug/gui/interface.cxx:174 -msgid "16 bit" -msgstr "16ビット" +#: src/mtp_up/mtp.c:298 +msgid "Upload in progress..." +msgstr "アップロード進行中..." -#: src/modplug/gui/interface.cxx:181 -msgid "8 bit" -msgstr " 8ビット" +#: src/mtp_up/mtp.c:310 +msgid "Upload to MTP Device" +msgstr "" -#: src/modplug/gui/interface.cxx:212 -msgid "Mono (downmix)" -msgstr "モノラル (ダウンミックス)" +#: src/mtp_up/mtp.c:311 +#, fuzzy +msgid "Disconnect MTP Device" +msgstr "デãƒã‚¤ã‚¹ã‚’切断" -#: src/modplug/gui/interface.cxx:241 -msgid "Nearest (fastest)" -msgstr "最短 (最速)" +#: src/notify/libnotify-aosd_event.c:47 +#, fuzzy +msgid "Stopped" +msgstr "åœæ­¢" -#: src/modplug/gui/interface.cxx:248 -msgid "Linear (fast)" -msgstr "ç·šå½¢ (高速)" - -#: src/modplug/gui/interface.cxx:255 -msgid "Spline (good quality)" -msgstr "スプライン (良å“質)" - -#: src/modplug/gui/interface.cxx:262 -msgid "8-tap Fir (extremely high quality)" -msgstr "8 タップ Fir (éžå¸¸ã«é«˜å“質)" - -#: src/modplug/gui/interface.cxx:286 -#, fuzzy -msgid "96 kHz" -msgstr "48 kHz" - -#: src/modplug/gui/interface.cxx:293 -msgid "48 kHz" -msgstr "48 kHz" - -#: src/modplug/gui/interface.cxx:300 -msgid "44 kHz" -msgstr "44 kHz" - -#: src/modplug/gui/interface.cxx:307 -msgid "22 kHz" -msgstr "22 kHz" - -#: src/modplug/gui/interface.cxx:315 -msgid "Sampling Rate" -msgstr "サンプリングレート" - -#: src/modplug/gui/interface.cxx:349 src/modplug/gui/interface.cxx:411 -#: src/modplug/gui/interface.cxx:477 src/modplug/gui/interface.cxx:539 -msgid "Enable" -msgstr "有効" - -#: src/modplug/gui/interface.cxx:378 src/modplug/gui/interface.cxx:506 -msgid "Depth" -msgstr "æ·±ã•" - -#: src/modplug/gui/interface.cxx:386 src/modplug/gui/interface.cxx:514 -msgid "Delay" -msgstr "é…延" - -#: src/modplug/gui/interface.cxx:394 -msgid "Reverb" -msgstr "リãƒãƒ¼ãƒ–" - -#: src/modplug/gui/interface.cxx:440 -msgid "Amount" -msgstr "é‡" - -#: src/modplug/gui/interface.cxx:448 -msgid "Range" -msgstr "範囲" - -#: src/modplug/gui/interface.cxx:456 -msgid "Bass Boost" -msgstr "ベース増加" - -#: src/modplug/gui/interface.cxx:522 src/mpg123/mpg123.c:174 -msgid "Surround" -msgstr "サラウンド" - -#: src/modplug/gui/interface.cxx:561 -msgid "" -"Note: Setting the preamp\n" -"too high may cause clipping\n" -"(annoying clicks and pops)!" -msgstr "" -"注æ„: プリアンプã®è¨­å®šãŒé«˜ã™ãŽã‚‹ã¨\n" -"クリッピング(ã†ã‚‹ã•ã„ã‚«ãƒã‚«ãƒéŸ³ã‚„\n" -"ブツブツ音)ã®åŽŸå› ã«ãªã‚Šã¾ã™!" - -#: src/modplug/gui/interface.cxx:567 -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "Preamp" -msgstr "プリアンプ" - -#: src/modplug/gui/interface.cxx:601 -msgid "Use Filename as Song Title" -msgstr "ファイルåを曲åã¨ã—ã¦ä½¿ã†" - -#: src/modplug/gui/interface.cxx:606 -msgid "Fast Playlist Info" -msgstr "高速ãªãƒ—レイリスト情報" - -#: src/modplug/gui/interface.cxx:617 -msgid "Noise Reduction" -msgstr "ノイズリダクション" - -#: src/modplug/gui/interface.cxx:623 -msgid "Play Amiga MOD" -msgstr "Amiga MOD ã‚’æ¼”å¥ã™ã‚‹" - -#: src/modplug/gui/interface.cxx:646 -msgid "Don't loop" -msgstr "ループã—ãªã„" - -#: src/modplug/gui/interface.cxx:658 -msgid "Loop" -msgstr "ループ回数" - -#: src/modplug/gui/interface.cxx:671 -msgid "time(s)" -msgstr "回" - -#: src/modplug/gui/interface.cxx:677 -msgid "Loop forever" -msgstr "æ°¸é ã«ãƒ«ãƒ¼ãƒ—" - -#: src/modplug/gui/interface.cxx:684 -msgid "Looping" -msgstr "ループ" - -#: src/modplug/gui/interface.cxx:859 -msgid "MOD Info" -msgstr "MOD 情報" - -#: src/modplug/gui/interface.cxx:878 -msgid "" -"Filename:\n" -"Title:\n" -"Type:\n" -"Length:\n" -"Speed:\n" -"Tempo:\n" -"Samples:\n" -"Instruments:\n" -"Patterns:\n" -"Channels:" -msgstr "" -"ファイルå:\n" -"曲å:\n" -"タイプ:\n" -"é•·ã•:\n" -"速ã•:\n" -"テンãƒ:\n" -"サンプリングレート:\n" -"楽器:\n" -"パターン:\n" -"ãƒãƒ£ãƒ³ãƒãƒ«:" - -#: src/modplug/gui/interface.cxx:883 -msgid "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" -msgstr "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" - -#: src/modplug/gui/interface.cxx:913 -msgid "Samples" -msgstr "サンプリングレート" - -#: src/modplug/gui/interface.cxx:938 -msgid "Instruments" -msgstr "楽器" - -#: src/modplug/gui/interface.cxx:959 -msgid "Message" -msgstr "メッセージ" - -#: src/modplug/gui/main.cxx:51 -msgid "Modplug Input Plugin for Audacious ver" -msgstr "Modplug 入力プラグイン for Audacious ver" - -#: src/modplug/gui/main.cxx:52 +#: src/notify/libnotify-aosd_event.c:47 #, fuzzy -msgid "" -"\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." -msgstr "" -"\n" -"Modplug サウンドエンジン㯠Olivier Lapicque ã«ã‚ˆã£ã¦æ›¸ã‹ã‚ŒãŸ.\n" -"Modplug XMMS インタフェイス㯠Kenton Vard ã«ã‚ˆã‚‹.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"æ›´æ–°ã¨ãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹ã¯ Konstanty Bialkowski ã«ã‚ˆã‚‹.\n" -"BMP ã¸ã®ãƒãƒ¼ãƒˆã¯ Theofilos Intzoglou ã«ã‚ˆã‚‹." - -#: src/modplug/gui/main.cxx:55 -msgid "About Modplug" -msgstr "Modplug ã«ã¤ã„ã¦" - -#: src/modplug/gui/support.cxx:90 src/modplug/gui/support.cxx:114 -#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 -#, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "pixmap ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ: %s" - -#: src/mtp_up/mtp.c:35 -msgid "Upload selected track(s)" -msgstr "é¸æŠžã•ã‚ŒãŸãƒˆãƒ©ãƒƒã‚¯ã‚’アップロード" - -#: src/mtp_up/mtp.c:291 -msgid "Upload in progress..." -msgstr "アップロード進行中..." - -#: src/mtp_up/mtp.c:300 -msgid "MTP device handler" -msgstr "MTP デãƒã‚¤ã‚¹ãƒãƒ³ãƒ‰ãƒ©" - -#: src/mtp_up/mtp.c:304 -msgid "Disconnect the device" -msgstr "デãƒã‚¤ã‚¹ã‚’切断" +msgid "Audacious is not playing." +msgstr "Audacious - å¯è¦–警告" -#: src/null/null.c:63 +#: src/null/null.c:64 msgid "Null output plugin " msgstr "ヌル出力プラグイン " -#: src/null/null.c:64 +#: src/null/null.c:65 msgid "" " by Christian Birchinger \n" "based on the XMMS plugin by HÃ¥vard KvÃ¥l " @@ -3684,15 +2048,15 @@ " HÃ¥vard KvÃ¥l ã® XMMS プラグインをベースã¨ã—ãŸ\n" " Christian Birchinger ã«ã‚ˆã‚‹ãƒãƒ¼ãƒˆ" -#: src/null/null.c:67 +#: src/null/null.c:68 msgid "About Null Output" msgstr "ヌル出力プラグインã«ã¤ã„ã¦" -#: src/null/null.c:93 +#: src/null/null.c:94 msgid "Null output preferences" msgstr "ヌル出力設定" -#: src/null/null.c:102 +#: src/null/null.c:105 msgid "Run in real time" msgstr "実時間ã§å®Ÿè¡Œã™ã‚‹" @@ -3706,11 +2070,11 @@ msgid "OSS4 Output Plugin Preferences" msgstr "ステータスアイコンプラグイン - 設定" -#: src/oss4/configure.c:163 src/OSS/configure.c:213 src/sun/configure.c:181 +#: src/oss4/configure.c:163 src/OSS/configure.c:203 msgid "Audio device:" msgstr "オーディオデãƒã‚¤ã‚¹:" -#: src/oss4/configure.c:189 src/OSS/configure.c:235 src/OSS/configure.c:276 +#: src/oss4/configure.c:189 src/OSS/configure.c:226 src/OSS/configure.c:269 msgid "Use alternate device:" msgstr "代替デãƒã‚¤ã‚¹ã‚’使用ã™ã‚‹:" @@ -3723,12 +2087,12 @@ msgid "Enable format conversions made by the OSS software." msgstr "" -#: src/oss4/plugin.c:54 +#: src/oss4/plugin.c:51 #, fuzzy msgid "About OSS4 Plugin" msgstr "ESounD プラグインã«ã¤ã„ã¦" -#: src/oss4/plugin.c:55 +#: src/oss4/plugin.c:52 #, fuzzy msgid "" "OSS4 Output Plugin for Audacious\n" @@ -3772,40 +2136,45 @@ msgid "OSS4 error" msgstr "エラー" -#: src/OSS/configure.c:148 +#: src/OSS/configure.c:146 #, c-format msgid "Default (%s)" msgstr "デフォルト (%s)" -#: src/OSS/configure.c:197 +#: src/OSS/configure.c:162 src/skins/ui_manager.c:456 +#: src/skins/ui_manager.c:477 +msgid "Default" +msgstr "デフォルト" + +#: src/OSS/configure.c:187 msgid "OSS Driver configuration" msgstr "OSS ドライãƒã®è¨­å®š" -#: src/OSS/configure.c:298 src/sun/configure.c:246 +#: src/OSS/configure.c:290 msgid "Devices" msgstr "デãƒã‚¤ã‚¹" -#: src/OSS/configure.c:300 src/sun/configure.c:257 +#: src/OSS/configure.c:292 msgid "Buffering:" msgstr "ãƒãƒƒãƒ•ã‚¡ãƒªãƒ³ã‚°:" -#: src/OSS/configure.c:313 src/sun/configure.c:288 +#: src/OSS/configure.c:305 msgid "Pre-buffer (percent):" msgstr "事å‰ã«ãƒãƒƒãƒ•ã‚¡ãƒªãƒ³ã‚°ã™ã‚‹å‰²åˆ (ï¼…):" -#: src/OSS/configure.c:324 src/sun/configure.c:302 +#: src/OSS/configure.c:316 msgid "Buffering" msgstr "ãƒãƒƒãƒ•ã‚¡ãƒªãƒ³ã‚°" -#: src/OSS/configure.c:325 +#: src/OSS/configure.c:317 msgid "Mixer Settings:" msgstr "ミキサã®è¨­å®š:" -#: src/OSS/configure.c:331 +#: src/OSS/configure.c:323 msgid "Volume controls Master not PCM" msgstr "音é‡ã®èª¿æ•´ã¯ PCM ã§ã¯ãªãマスタを使用ã™ã‚‹" -#: src/OSS/configure.c:337 src/sun/configure.c:392 +#: src/OSS/configure.c:329 msgid "Mixer" msgstr "ミキサ" @@ -3849,11 +2218,11 @@ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" "USA. ã¸æ‰‹ç´™ã‚’書ã„ã¦ä¸‹ã•ã„." -#: src/pulse_audio/pulse_audio.c:691 +#: src/pulse_audio/pulse_audio.c:687 msgid "About Audacious PulseAudio Output Plugin" msgstr "Audacious PulseAudio 出力プラグインã«ã¤ã„ã¦" -#: src/pulse_audio/pulse_audio.c:692 +#: src/pulse_audio/pulse_audio.c:688 msgid "" "Audacious PulseAudio Output Plugin\n" "\n" @@ -3889,54 +2258,54 @@ "Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,\n" "USA. ã¾ã§è«‹æ±‚ã—ã¦ä¸‹ã•ã„." -#: src/resample/plugin.c:78 +#: src/resample/plugin.c:91 #, fuzzy msgid "About Sample Rate Converter Plugin" msgstr "ステータスアイコン プラグインã«ã¤ã„ã¦" -#: src/resample/plugin.c:134 +#: src/resample/plugin.c:146 msgid "Sample Rate Converter Preferences" msgstr "" -#: src/resample/plugin.c:146 +#: src/resample/plugin.c:158 msgid "Rate mappings:" msgstr "" -#: src/resample/plugin.c:169 +#: src/resample/plugin.c:181 msgid "All others:" msgstr "" -#: src/resample/plugin.c:181 +#: src/resample/plugin.c:193 msgid "Method:" msgstr "" -#: src/scrobbler/configure.c:152 src/scrobbler/configure.c:228 +#: src/scrobbler/configure.c:128 src/scrobbler/configure.c:204 #, fuzzy msgid "Change password" msgstr "æ¼”å¥æ›²ã®å¤‰æ›´" -#: src/scrobbler/configure.c:174 +#: src/scrobbler/configure.c:150 msgid "Services" msgstr "サービス" -#: src/scrobbler/configure.c:196 +#: src/scrobbler/configure.c:172 msgid "Username:" msgstr "ユーザå:" -#: src/scrobbler/configure.c:202 +#: src/scrobbler/configure.c:178 msgid "Password:" msgstr "パスワード:" -#: src/scrobbler/configure.c:210 +#: src/scrobbler/configure.c:186 #, fuzzy msgid "Scrobbler URL:" msgstr "Scrobbler エラー" -#: src/scrobbler/configure.c:242 +#: src/scrobbler/configure.c:218 msgid "Last.FM" msgstr "Last.FM" -#: src/scrobbler/configure.c:287 +#: src/scrobbler/configure.c:262 #, fuzzy msgid "Scrobbler" msgstr "Scrobbler エラー" @@ -3957,16 +2326,34 @@ msgid "About Scrobbler Plugin" msgstr "Scrobbler プラグインã«ã¤ã„ã¦" +#: src/sdlout/plugin.c:58 +#, fuzzy +msgid "About SDL Output Plugin" +msgstr "JACK 出力プラグイン 0.17 ã«ã¤ã„ã¦" + +#: src/sdlout/plugin.c:78 +#, fuzzy +msgid "SDL error" +msgstr "エラー" + #: src/sid/xs_about.c:84 #, c-format msgid "About %s" msgstr "%s ã«ã¤ã„ã¦" -#: src/sid/xs_config.c:322 +#: src/sid/xs_about.c:214 src/sid/xs_interface.c:1825 +msgid "Close" +msgstr "é–‰ã˜ã‚‹" + +#: src/sid/xs_config.c:326 #, fuzzy msgid " Error" msgstr "エラー" +#: src/sid/xs_config.c:326 +msgid "OK" +msgstr "OK" + #: src/sid/xs_fileinfo.c:151 msgid "General info" msgstr "一般情報" @@ -3976,6 +2363,11 @@ msgid "Tune #%i: " msgstr "ãƒãƒ¥ãƒ¼ãƒ³ #%i:" +#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 +#, c-format +msgid "Couldn't find pixmap file: %s" +msgstr "pixmap ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ: %s" + #: src/sid/xs_interface.c:234 msgid "Audacious-SID configuration" msgstr "Audacious-SID 設定" @@ -4285,15 +2677,15 @@ msgid "Use" msgstr "使用" -#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:430 +#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:447 msgid "Save" msgstr "ä¿å­˜" -#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:429 +#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:446 msgid "Import" msgstr "インãƒãƒ¼ãƒˆ" -#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:431 +#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:448 msgid "Delete" msgstr "削除" @@ -4326,6 +2718,11 @@ msgid "Playtime:" msgstr "æ¼”å¥æ™‚é–“:" +#: src/sid/xs_interface.c:921 src/sid/xs_interface.c:975 +#: src/sid/xs_interface.c:1155 +msgid "seconds" +msgstr "秒" + #: src/sid/xs_interface.c:928 msgid "Minimum playtime:" msgstr "最å°æ¼”å¥æ™‚é–“:" @@ -4432,10 +2829,6 @@ msgid "Song title format:" msgstr "曲ã®ã‚¿ã‚¤ãƒˆãƒ«ã®æ›¸å¼:" -#: src/sid/xs_interface.c:1103 -msgid "Title" -msgstr "タイトル" - #: src/sid/xs_interface.c:1125 msgid "Add sub-tunes to playlist" msgstr "サブãƒãƒ¥ãƒ¼ãƒ³ã‚’プレイリストã«è¿½åŠ " @@ -4586,11 +2979,11 @@ msgid "No" msgstr "ã„ã„ãˆ" -#: src/skins/plugin.c:179 +#: src/skins/plugin.c:167 msgid "About Skinned GUI" msgstr "スキン GUI ã«ã¤ã„ã¦" -#: src/skins/plugin.c:180 +#: src/skins/plugin.c:168 msgid "" "Copyright (c) 2008, by Tomasz MoÅ„ \n" "\n" @@ -4598,686 +2991,825 @@ "Copyright (c) 2008, by Tomasz MoÅ„ \n" "\n" -#: src/skins/plugin.c:196 -msgid "Skinned Interface" -msgstr "" - -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:254 msgid "_Player:" msgstr "プレイヤ(_P):" -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:254 msgid "Select main player window font:" msgstr "メインウィンドウã§ä½¿ç”¨ã™ã‚‹ãƒ•ã‚©ãƒ³ãƒˆã®é¸æŠž" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:255 msgid "_Playlist:" msgstr "プレイリスト(_P):" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:255 msgid "Select playlist font:" msgstr "プレイリストã§ä½¿ç”¨ã™ã‚‹ãƒ•ã‚©ãƒ³ãƒˆã®é¸æŠž" -#: src/skins/skins_cfg.c:321 +#: src/skins/skins_cfg.c:259 msgid "_Fonts" msgstr "フォント(_F)" -#: src/skins/skins_cfg.c:323 -msgid "Use Bitmap fonts if available" -msgstr "å¯èƒ½ãªã‚‰ã°ãƒ“ットマップフォントを使用" - -#: src/skins/skins_cfg.c:323 -msgid "" -"Use bitmap fonts if they are available. Bitmap fonts do not support Unicode " -"strings." +#: src/skins/skins_cfg.c:261 +msgid "Use bitmap fonts (supports ASCII only)" msgstr "" -"å¯èƒ½ãªã‚‰ã°ãƒ“ットマップフォントを使用ã—ã¾ã™. ビットマップフォント㯠Unicode æ–‡" -"字列をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“." -#: src/skins/skins_cfg.c:324 -msgid "_Miscellaneous" -msgstr "ãã®ä»–(_M)" - -#: src/skins/skins_cfg.c:325 -msgid "Show separators in playlist" -msgstr "プレイリストã®åŒºåˆ‡ã‚Šç·šã‚’表示ã™ã‚‹" +#: src/skins/skins_cfg.c:263 +msgid "Scroll song title in both directions" +msgstr "" -#: src/skins/skins_cfg.c:327 -msgid "Show window manager decoration" -msgstr "ウィンドウマãƒãƒ¼ã‚¸ãƒ£è£…飾を表示ã™ã‚‹" +#: src/skins/skins_cfg.c:346 +msgid "_Skin" +msgstr "スキン(_S)" -#: src/skins/skins_cfg.c:328 -msgid "This enables the window manager to show decorations for windows." -msgstr "ウィンドウマãƒãƒ¼ã‚¸ãƒ£ã«ã‚ˆã‚‹ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦è£…飾を有効ã«ã—ã¾ã™." +#: src/skins/skins_cfg.c:393 +#, fuzzy +msgid "Interface Preferences" +msgstr "設定" -#: src/skins/skins_cfg.c:329 -msgid "Use two-way text scroller" -msgstr "åŒæ–¹å‘テキストスクロールを使ã†" +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "プリアンプ" -#: src/skins/skins_cfg.c:330 -msgid "" -"If selected, the file information text in the main window will scroll back " -"and forth. If not selected, the text will only scroll in one direction." +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" msgstr "" -"ã“れを使ã†ã¨ï¼Œãƒ¡ã‚¤ãƒ³ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®ãƒ•ã‚¡ã‚¤ãƒ«æƒ…報テキストãŒå‰å¾Œã«ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ã—ã¾" -"ã™ï¼Žãã†ã§ãªã‘ã‚Œã°ï¼Œãƒ†ã‚­ã‚¹ãƒˆã¯ä¸€æ–¹å‘ã®ã¿ã«ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ã—ã¾ã™ï¼Ž" -#: src/skins/skins_cfg.c:331 -msgid "Disable inline gtk theme" -msgstr "インライン GTK テーマを無効ã«ã™ã‚‹" - -#: src/skins/skins_cfg.c:333 -#, fuzzy -msgid "Random skin on play" -msgstr "プレイリストã®é †åºã‚’ランダムã«ã—ã¾ã™." - -#: src/skins/skins_cfg.c:334 -msgid "Allow loading incomplete skins" -msgstr "ä¸å®Œå…¨ãªã‚¹ã‚­ãƒ³ã®èª­ã¿è¾¼ã¿ã‚’許å¯ã™ã‚‹" +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "" -#: src/skins/skins_cfg.c:335 -msgid "" -"If selected, audacious won't refuse loading broken skins. Use only if your " -"favourite skin doesn't work" +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" msgstr "" -"ã“れを使ã†ã¨ï¼Œaudacious ã¯å£Šã‚ŒãŸã‚¹ã‚­ãƒ³ã®èª­ã¿è¾¼ã¿ã‚’拒絶ã—ã¾ã›ã‚“.ãŠæ°—ã«å…¥ã‚Šã®" -"スキンãŒå‹•ã‹ãªã„ã¨ãã ã‘使用ã—ã¦ãã ã•ã„." -#: src/skins/skins_cfg.c:401 -msgid "Color Adjustment" -msgstr "色補正" +#: src/skins/ui_equalizer.c:335 +#, fuzzy +msgid "250 Hz" +msgstr "22000 Hz " -#: src/skins/skins_cfg.c:407 -msgid "" -"Audacious allows you to alter the color balance of the skinned UI. The " -"sliders below will allow you to do this." -msgstr "以下ã®ã‚¹ãƒ©ã‚¤ãƒ€ã‚’用ã„ã¦ã‚¹ã‚­ãƒ³ UI ã®è‰²åˆã„ã®å¤‰æ›´ãŒã§ãã¾ã™." +#: src/skins/ui_equalizer.c:335 +#, fuzzy +msgid "500 Hz" +msgstr "11000 Hz" -#: src/skins/skins_cfg.c:417 -msgid "Blue" -msgstr "é’" +#: src/skins/ui_equalizer.c:335 +#, fuzzy +msgid "1 kHz" +msgstr "11 kHz" -#: src/skins/skins_cfg.c:424 -msgid "Green" -msgstr "ç·‘" +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "2 kHz" +msgstr "22 kHz" -#: src/skins/skins_cfg.c:431 -msgid "Red" -msgstr "赤" +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "4 kHz" +msgstr "44 kHz" -#: src/skins/skins_cfg.c:569 -msgid "_Skin" -msgstr "スキン(_S)" +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "8 kHz" +msgstr "48 kHz" -#: src/skins/skins_cfg.c:574 +#: src/skins/ui_equalizer.c:336 #, fuzzy -msgid "Color adjustment ..." -msgstr "色補正" +msgid "16 kHz" +msgstr "48 kHz" -#: src/skins/ui_equalizer.c:463 +#: src/skins/ui_equalizer.c:378 msgid "Audacious Equalizer" msgstr "Audacious イコライザ" -#: src/skins/ui_equalizer.c:991 +#: src/skins/ui_equalizer.c:884 msgid "Presets" msgstr "プリセット" -#: src/skins/ui_main.c:593 +#: src/skins/ui_main.c:444 msgid "kbps" msgstr "" -#: src/skins/ui_main.c:601 +#: src/skins/ui_main.c:452 #, fuzzy msgid "kHz" msgstr "Hz" -#: src/skins/ui_main.c:608 +#: src/skins/ui_main.c:459 #, fuzzy msgid "surround" msgstr "サラウンド" -#: src/skins/ui_main.c:981 -msgid "Audacious - visibility warning" -msgstr "Audacious - å¯è¦–警告" - -#: src/skins/ui_main.c:984 -msgid "Show main player window" -msgstr "メインウィンドウを表示ã™ã‚‹" - -#: src/skins/ui_main.c:985 -msgid "Ignore" -msgstr "無視" - -#: src/skins/ui_main.c:991 -msgid "" -"Audacious has been started with all of its windows hidden.\n" -"You may want to show the player window again to control Audacious; " -"otherwise, you'll have to control it remotely via audtool or enabled plugins " -"(such as the statusicon plugin)." -msgstr "" -"Audacious ã¯ã™ã¹ã¦ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ãŒéš ã•ã‚ŒãŸçŠ¶æ…‹ã§é–‹å§‹ã•ã‚Œã¾ã—ãŸï¼Ž\n" -"å†åº¦ãƒ—レイヤウィンドウを表示ã™ã‚‹ã‹ï¼Œãã®ã¾ã¾ Audacious ã‚’æ“作ã™ã‚‹ãŸã‚ã«ã¯ï¼Œ" -"audtool を用ã„ã‚‹ã‹ statusicon ã®ã‚ˆã†ãªãƒ—ラグインを有効ã«ã™ã‚‹ã“ã¨ã§é éš”æ“作ã—" -"ã¦ãã ã•ã„." - -#: src/skins/ui_main.c:997 -msgid "Always ignore, show/hide is controlled remotely" -msgstr "常ã«ç„¡è¦–ã—,表示ã™ã‚‹/éš ã™ ã¯é éš”æ“作ã™ã‚‹" - -#: src/skins/ui_main.c:1042 -msgid "Audacious - broken GTK engine usage warning" -msgstr "Audacious - 壊れ㟠GTK エンジンã®ä½¿ç”¨è­¦å‘Š" - -#: src/skins/ui_main.c:1050 -#, c-format -msgid "" -"Broken GTK engine in use\n" -"\n" -"Audacious has detected that you are using a broken GTK engine.\n" -"\n" -"The theme engine you are using, %s, is incompatible with some of the " -"features used by modern skins. The incompatible features have been disabled " -"for this session.\n" -"\n" -"To use these features, please consider using a different GTK theme engine." -msgstr "" -"壊れ㟠GTK エンジンãŒä½¿ã‚ã‚Œã¦ã„ã¾ã™\n" -"\n" -"Audacious 㯠GTK エンジンãŒä½¿ã‚ã‚Œã¦ã„ã‚‹ã“ã¨ã‚’検出ã—ã¾ã—ãŸ.\n" -"\n" -"テーマエンジン %s ã¯æœ€è¿‘ã®ã‚¹ã‚­ãƒ³ã§ç”¨ã„られã¦ã„る特徴ã¨éžäº’æ›ã§ã™.éžäº’" -"æ›ãªç‰¹å¾´ã¯ã“ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã§ã¯ç„¡åŠ¹ã«ã•ã‚Œã¾ã—ãŸ.\n" -"\n" -"ã“れらã®ç‰¹å¾´ã‚’用ã„ã‚‹ã«ã¯, ä»–ã® GTK テーマエンジンを使ã†ã“ã¨ã‚’考慮ã—ã¦ãã ã•" -"ã„." - -#: src/skins/ui_main.c:1061 -msgid "Do not display this warning again" -msgstr "次回ã‹ã‚‰ã“ã®è­¦å‘Šã‚’表示ã—ãªã„" - -#: src/skins/ui_main.c:1269 -#, c-format -msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)" +#: src/skins/ui_main.c:807 +#, fuzzy, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "移動先: %d:%-2.2d/%d:%-2.2d (%d%%)" -#: src/skins/ui_main.c:1299 +#: src/skins/ui_main.c:828 #, c-format msgid "Volume: %d%%" msgstr "音é‡: %d%%" -#: src/skins/ui_main.c:1322 +#: src/skins/ui_main.c:851 #, c-format msgid "Balance: %d%% left" msgstr "ãƒãƒ©ãƒ³ã‚¹: %d%% å·¦" -#: src/skins/ui_main.c:1324 +#: src/skins/ui_main.c:853 msgid "Balance: center" msgstr "ãƒãƒ©ãƒ³ã‚¹: 中央" -#: src/skins/ui_main.c:1326 +#: src/skins/ui_main.c:855 #, c-format msgid "Balance: %d%% right" msgstr "ãƒãƒ©ãƒ³ã‚¹: %d%% å³" -#: src/skins/ui_main.c:1618 +#: src/skins/ui_main.c:981 msgid "Options Menu" msgstr "オプションメニュー" -#: src/skins/ui_main.c:1622 +#: src/skins/ui_main.c:985 msgid "Disable 'Always On Top'" msgstr "「常ã«æœ€å‰é¢ã«é…ç½®ã€ç„¡åŠ¹" -#: src/skins/ui_main.c:1624 +#: src/skins/ui_main.c:987 msgid "Enable 'Always On Top'" msgstr "「常ã«æœ€å‰é¢ã«é…ç½®ã€æœ‰åŠ¹" -#: src/skins/ui_main.c:1627 +#: src/skins/ui_main.c:990 msgid "File Info Box" msgstr "ファイル情報ボックス" -#: src/skins/ui_main.c:1631 -msgid "Disable 'GUI Scaling'" -msgstr "「GUI スケーリングã€ç„¡åŠ¹" - -#: src/skins/ui_main.c:1633 -msgid "Enable 'GUI Scaling'" -msgstr "「GUI スケーリングã€æœ‰åŠ¹" - -#: src/skins/ui_main.c:1636 +#: src/skins/ui_main.c:995 msgid "Visualization Menu" msgstr "視覚化メニュー" -#: src/skins/ui_main.c:2348 +#: src/skins/ui_main.c:1645 msgid "Single mode." msgstr "" -#: src/skins/ui_main.c:2350 +#: src/skins/ui_main.c:1647 #, fuzzy msgid "Playlist mode." msgstr "プレイリスト" -#: src/skins/ui_main.c:2374 +#: src/skins/ui_main.c:1669 #, fuzzy msgid "Stopping after song." msgstr "ç¾åœ¨ã®æ›²ã®å¾Œã«åœæ­¢ã™ã‚‹" -#: src/skins/ui_main.c:2376 +#: src/skins/ui_main.c:1671 msgid "Not stopping after song." msgstr "" -#: src/skins/ui_manager.c:50 src/skins/ui_manager.c:51 +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 msgid "Autoscroll Songname" msgstr "曲åã®è‡ªå‹•ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«" -#: src/skins/ui_manager.c:56 src/skins/ui_manager.c:57 +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "ç¾åœ¨ã®æ›²ã®å¾Œã«åœæ­¢ã™ã‚‹" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 msgid "Peaks" msgstr "ピーク" -#: src/skins/ui_manager.c:68 src/skins/ui_manager.c:69 +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "リピート" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "シャッフル" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "次ã®æ›²ã«é€²ã¾ãªã„" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 msgid "Show Player" msgstr "プレイヤを表示ã™ã‚‹" -#: src/skins/ui_manager.c:71 src/skins/ui_manager.c:72 +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 msgid "Show Playlist Editor" msgstr "プレイリストエディタを表示ã™ã‚‹" -#: src/skins/ui_manager.c:74 src/skins/ui_manager.c:75 +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 msgid "Show Equalizer" msgstr "イコライザを表示ã™ã‚‹" -#: src/skins/ui_manager.c:77 src/skins/ui_manager.c:78 +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 msgid "Always on Top" msgstr "常ã«æœ€å‰é¢ã«é…ç½®ã™ã‚‹" -#: src/skins/ui_manager.c:80 src/skins/ui_manager.c:81 +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 msgid "Put on All Workspaces" msgstr "全ワークスペースã«é…ç½®ã™ã‚‹" -#: src/skins/ui_manager.c:83 src/skins/ui_manager.c:84 +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 msgid "Roll up Player" msgstr "プレイヤを巻ã上ã’ã‚‹" -#: src/skins/ui_manager.c:86 src/skins/ui_manager.c:87 +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 msgid "Roll up Playlist Editor" msgstr "プレイリストエディタを巻ã上ã’ã‚‹" -#: src/skins/ui_manager.c:89 src/skins/ui_manager.c:90 +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 msgid "Roll up Equalizer" msgstr "イコライザを巻ã上ã’ã‚‹" -#: src/skins/ui_manager.c:92 src/sndstretch/sndstretch_xmms.c:393 -msgid "Scale" -msgstr "スケール" - -#: src/skins/ui_manager.c:93 -msgid "DoubleSize" -msgstr "ダブルサイズ" - -#: src/skins/ui_manager.c:95 src/skins/ui_manager.c:96 -msgid "Easy Move" -msgstr "ç°¡å˜ç§»å‹•" - -#: src/skins/ui_manager.c:104 +#: src/skins/ui_manager.c:115 msgid "Analyzer" msgstr "アナライザ" -#: src/skins/ui_manager.c:105 +#: src/skins/ui_manager.c:116 msgid "Scope" msgstr "スコープ" -#: src/skins/ui_manager.c:106 +#: src/skins/ui_manager.c:117 msgid "Voiceprint" msgstr "声紋" -#: src/skins/ui_manager.c:107 +#: src/skins/ui_manager.c:118 msgid "Off" msgstr "オフ" -#: src/skins/ui_manager.c:111 src/skins/ui_manager.c:128 -#: src/skins/ui_manager.c:134 +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 msgid "Normal" msgstr "標準" -#: src/skins/ui_manager.c:112 src/skins/ui_manager.c:129 +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 msgid "Fire" msgstr "ファイア" -#: src/skins/ui_manager.c:113 +#: src/skins/ui_manager.c:124 msgid "Vertical Lines" msgstr "垂直ライン" -#: src/skins/ui_manager.c:117 +#: src/skins/ui_manager.c:128 msgid "Lines" msgstr "ライン" -#: src/skins/ui_manager.c:118 +#: src/skins/ui_manager.c:129 msgid "Bars" msgstr "ãƒãƒ¼" -#: src/skins/ui_manager.c:122 +#: src/skins/ui_manager.c:133 msgid "Dot Scope" msgstr "ドット" -#: src/skins/ui_manager.c:123 +#: src/skins/ui_manager.c:134 msgid "Line Scope" msgstr "ライン" -#: src/skins/ui_manager.c:124 +#: src/skins/ui_manager.c:135 msgid "Solid Scope" msgstr "ソリッド" -#: src/skins/ui_manager.c:130 +#: src/skins/ui_manager.c:141 msgid "Ice" msgstr "アイス" -#: src/skins/ui_manager.c:135 +#: src/skins/ui_manager.c:146 msgid "Smooth" msgstr "スムーズ" -#: src/skins/ui_manager.c:139 src/skins/ui_manager.c:147 +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 msgid "Slowest" msgstr "最もé…ã„" -#: src/skins/ui_manager.c:140 src/skins/ui_manager.c:148 +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 msgid "Slow" msgstr "é…ã„" -#: src/skins/ui_manager.c:141 src/skins/ui_manager.c:149 +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 msgid "Medium" msgstr "中" -#: src/skins/ui_manager.c:142 src/skins/ui_manager.c:150 +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 msgid "Fast" msgstr "æ—©ã„" -#: src/skins/ui_manager.c:143 src/skins/ui_manager.c:151 +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 msgid "Fastest" msgstr "最も早ã„" -#: src/skins/ui_manager.c:155 +#: src/skins/ui_manager.c:166 msgid "Time Elapsed" msgstr "経éŽæ™‚間を表示ã™ã‚‹" -#: src/skins/ui_manager.c:156 +#: src/skins/ui_manager.c:167 msgid "Time Remaining" msgstr "残り時間を表示ã™ã‚‹" -#: src/skins/ui_manager.c:185 +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "一時åœæ­¢" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "å‰ã®æ›²" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "次ã®æ›²" + +#: src/skins/ui_manager.c:196 msgid "Visualization" msgstr "視覚化" -#: src/skins/ui_manager.c:186 +#: src/skins/ui_manager.c:197 msgid "Visualization Mode" msgstr "視覚化モード" -#: src/skins/ui_manager.c:187 +#: src/skins/ui_manager.c:198 msgid "Analyzer Mode" msgstr "アナライザモード" -#: src/skins/ui_manager.c:188 +#: src/skins/ui_manager.c:199 msgid "Scope Mode" msgstr "スコープモード" -#: src/skins/ui_manager.c:189 +#: src/skins/ui_manager.c:200 msgid "Voiceprint Mode" msgstr "声紋モード" -#: src/skins/ui_manager.c:190 +#: src/skins/ui_manager.c:201 msgid "WindowShade VU Mode" msgstr "WindowShade VU モード" -#: src/skins/ui_manager.c:191 +#: src/skins/ui_manager.c:202 msgid "Analyzer Falloff" msgstr "アナライザ フォールオフ" -#: src/skins/ui_manager.c:192 +#: src/skins/ui_manager.c:203 msgid "Peaks Falloff" msgstr "ピーク フォールオフ" -#: src/skins/ui_manager.c:202 src/skins/ui_manager.c:203 +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "プレイリスト" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "æ–°ã—ã„プレイリスト" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 msgid "Select Next Playlist" msgstr "次ã®ãƒ—レイリストをé¸æŠž" -#: src/skins/ui_manager.c:205 src/skins/ui_manager.c:206 +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 msgid "Select Previous Playlist" msgstr "å‰ã®ãƒ—レイリストをé¸æŠž" +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "プレイリストã®å‰Šé™¤" + #: src/skins/ui_manager.c:222 +#, fuzzy +msgid "Import Playlist" +msgstr "プレイリストã®èª­ã¿è¾¼ã¿" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "é¸æŠžã—ãŸãƒ—レイリストã«ãƒ—レイリストファイルを読ã¿è¾¼ã¿ã¾ã™." + +#: src/skins/ui_manager.c:226 +#, fuzzy +msgid "Export Playlist" +msgstr "プレイリストã®èª­ã¿è¾¼ã¿" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "é¸æŠžã—ãŸãƒ—レイリストをä¿å­˜ã—ã¾ã™." + +#: src/skins/ui_manager.c:229 +#, fuzzy +msgid "Save All Playlists" +msgstr "プレイリストã®ä¿å­˜" + +#: src/skins/ui_manager.c:230 +msgid "" +"Saves all the playlists that are open. Note that this is done automatically " +"when Audacious quits." +msgstr "" + +#: src/skins/ui_manager.c:234 msgid "Refresh List" msgstr "プレイリストã®æ›´æ–°" -#: src/skins/ui_manager.c:226 +#: src/skins/ui_manager.c:235 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "プレイリストã®ã‚¨ãƒ³ãƒˆãƒªã«é–¢é€£ä»˜ã‘られãŸãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’æ›´æ–°ã—ã¾ã™." + +#: src/skins/ui_manager.c:238 msgid "List Manager" msgstr "プレイリストマãƒãƒ¼ã‚¸ãƒ£" -#: src/skins/ui_manager.c:236 +#: src/skins/ui_manager.c:239 +msgid "Opens the playlist manager." +msgstr "プレイリストマãƒãƒ¼ã‚¸ãƒ£ã‚’é–‹ãã¾ã™." + +#: src/skins/ui_manager.c:243 +msgid "View" +msgstr "表示" + +#: src/skins/ui_manager.c:244 +msgid "Interface" +msgstr "" + +#: src/skins/ui_manager.c:245 +#, fuzzy +msgid "Interface Preferences ..." +msgstr "設定" + +#: src/skins/ui_manager.c:249 msgid "Add Internet Address..." msgstr "インターãƒãƒƒãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹ã®è¿½åŠ ..." -#: src/skins/ui_manager.c:240 +#: src/skins/ui_manager.c:250 +msgid "Adds a remote track to the playlist." +msgstr "リモートトラックをプレイリストã«è¿½åŠ ã—ã¾ã™." + +#: src/skins/ui_manager.c:253 msgid "Add Files..." msgstr "ファイルã®è¿½åŠ ..." -#: src/skins/ui_manager.c:246 +#: src/skins/ui_manager.c:254 +msgid "Adds files to the playlist." +msgstr "ファイルをプレイリストã«è¿½åŠ ã—ã¾ã™." + +#: src/skins/ui_manager.c:259 msgid "Search and Select" msgstr "検索ã¨é¸æŠž" -#: src/skins/ui_manager.c:247 +#: src/skins/ui_manager.c:260 msgid "" "Searches the playlist and selects playlist entries based on specific " "criteria." msgstr "プレイリストを検索ã—, 特定ã®åˆ¤å®šåŸºæº–ã«åŸºã„ã¦é¸æŠžã—ã¾ã™." -#: src/skins/ui_manager.c:250 +#: src/skins/ui_manager.c:263 msgid "Invert Selection" msgstr "é¸æŠžç¯„囲ã®å転" -#: src/skins/ui_manager.c:251 +#: src/skins/ui_manager.c:264 msgid "Inverts the selected and unselected entries." msgstr "エントリã®é¸æŠžã¨æœªé¸æŠžã‚’å転ã—ã¾ã™." +#: src/skins/ui_manager.c:267 +msgid "Select All" +msgstr "å…¨ã¦é¸æŠž" + #: src/skins/ui_manager.c:268 -msgid "Clear Queue" -msgstr "キューã®ã‚¯ãƒªã‚¢" +msgid "Selects all of the playlist entries." +msgstr "プレイリストã®å…¨ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã‚’é¸æŠžã—ã¾ã™." -#: src/skins/ui_manager.c:269 -msgid "Clears the queue associated with this playlist." -msgstr "プレイリストã«é–¢é€£ä»˜ã‘られãŸã‚­ãƒ¥ãƒ¼ã‚’クリアã—ã¾ã™." +#: src/skins/ui_manager.c:271 +msgid "Select None" +msgstr "未é¸æŠžã«ã™ã‚‹" #: src/skins/ui_manager.c:272 -msgid "Remove Unavailable Files" -msgstr "利用ä¸å¯ãƒ•ã‚¡ã‚¤ãƒ«ã®å‰Šé™¤" +msgid "Deselects all of the playlist entries." +msgstr "プレイリストã®å…¨ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã‚’未é¸æŠžã«ã—ã¾ã™." + +#: src/skins/ui_manager.c:277 +msgid "Remove All" +msgstr "å…¨ã¦å‰Šé™¤" + +#: src/skins/ui_manager.c:278 +msgid "Removes all entries from the playlist." +msgstr "å…¨ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã‚’プレイリストã‹ã‚‰å‰Šé™¤ã—ã¾ã™." + +#: src/skins/ui_manager.c:281 +msgid "Clear Queue" +msgstr "キューã®ã‚¯ãƒªã‚¢" + +#: src/skins/ui_manager.c:282 +msgid "Clears the queue associated with this playlist." +msgstr "プレイリストã«é–¢é€£ä»˜ã‘られãŸã‚­ãƒ¥ãƒ¼ã‚’クリアã—ã¾ã™." + +#: src/skins/ui_manager.c:285 +msgid "Remove Unavailable Files" +msgstr "利用ä¸å¯ãƒ•ã‚¡ã‚¤ãƒ«ã®å‰Šé™¤" -#: src/skins/ui_manager.c:273 +#: src/skins/ui_manager.c:286 msgid "Removes unavailable files from the playlist." msgstr "利用ä¸å¯ãƒ•ã‚¡ã‚¤ãƒ«ã‚’プレイリストã‹ã‚‰å‰Šé™¤ã—ã¾ã™." -#: src/skins/ui_manager.c:276 +#: src/skins/ui_manager.c:289 msgid "Remove Duplicates" msgstr "é‡è¤‡ã‚¨ãƒ³ãƒˆãƒªã®å‰Šé™¤" -#: src/skins/ui_manager.c:279 +#: src/skins/ui_manager.c:291 src/skins/ui_manager.c:323 +#: src/skins/ui_manager.c:353 +msgid "By Title" +msgstr "タイトル" + +#: src/skins/ui_manager.c:292 msgid "Removes duplicate entries from the playlist by title." msgstr "é‡è¤‡ã™ã‚‹ã‚¿ã‚¤ãƒˆãƒ«ã®ã‚¨ãƒ³ãƒˆãƒªã‚’プレイリストã‹ã‚‰å‰Šé™¤ã—ã¾ã™." -#: src/skins/ui_manager.c:282 src/skins/ui_manager.c:318 -#: src/skins/ui_manager.c:348 +#: src/skins/ui_manager.c:295 src/skins/ui_manager.c:335 +#: src/skins/ui_manager.c:365 msgid "By Filename" msgstr "ファイルå" -#: src/skins/ui_manager.c:283 +#: src/skins/ui_manager.c:296 msgid "Removes duplicate entries from the playlist by filename." msgstr "é‡è¤‡ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«åã®ã‚¨ãƒ³ãƒˆãƒªã‚’プレイリストã‹ã‚‰å‰Šé™¤ã—ã¾ã™." -#: src/skins/ui_manager.c:286 src/skins/ui_manager.c:322 -#: src/skins/ui_manager.c:352 +#: src/skins/ui_manager.c:299 src/skins/ui_manager.c:339 +#: src/skins/ui_manager.c:369 msgid "By Path + Filename" msgstr "パスåã¨ãƒ•ã‚¡ã‚¤ãƒ«å" -#: src/skins/ui_manager.c:287 +#: src/skins/ui_manager.c:300 msgid "Removes duplicate entries from the playlist by their full path." msgstr "é‡è¤‡ã™ã‚‹ãƒ‘スåã¨ãƒ•ã‚¡ã‚¤ãƒ«åã®ã‚¨ãƒ³ãƒˆãƒªã‚’プレイリストã‹ã‚‰å‰Šé™¤ã—ã¾ã™." -#: src/skins/ui_manager.c:300 +#: src/skins/ui_manager.c:303 +msgid "Remove Unselected" +msgstr "é¸æŠžã—ã¦ã„ãªã„エントリã®å‰Šé™¤" + +#: src/skins/ui_manager.c:304 +msgid "Remove unselected entries from the playlist." +msgstr "é¸æŠžã—ã¦ã„ãªã„エントリをプレイリストã‹ã‚‰å‰Šé™¤ã—ã¾ã™." + +#: src/skins/ui_manager.c:307 +msgid "Remove Selected" +msgstr "é¸æŠžã—ãŸã‚¨ãƒ³ãƒˆãƒªã®å‰Šé™¤" + +#: src/skins/ui_manager.c:308 +msgid "Remove selected entries from the playlist." +msgstr "é¸æŠžã—ãŸã‚¨ãƒ³ãƒˆãƒªã‚’プレイリストã‹ã‚‰å‰Šé™¤ã—ã¾ã™." + +#: src/skins/ui_manager.c:313 +msgid "Randomize List" +msgstr "プレイリストをランダムã«ã™ã‚‹" + +#: src/skins/ui_manager.c:314 +msgid "Randomizes the playlist." +msgstr "プレイリストã®é †åºã‚’ランダムã«ã—ã¾ã™." + +#: src/skins/ui_manager.c:317 msgid "Reverse List" msgstr "プレイリストを逆順ã«ã™ã‚‹" -#: src/skins/ui_manager.c:301 +#: src/skins/ui_manager.c:318 msgid "Reverses the playlist." msgstr "プレイリストã®é †åºã‚’逆順ã«ã—ã¾ã™." -#: src/skins/ui_manager.c:304 +#: src/skins/ui_manager.c:321 msgid "Sort List" msgstr "プレイリストã®ã‚½ãƒ¼ãƒˆ" -#: src/skins/ui_manager.c:307 src/skins/ui_manager.c:337 +#: src/skins/ui_manager.c:324 src/skins/ui_manager.c:354 msgid "Sorts the list by title." msgstr "タイトル順ã§ãƒ—レイリストをソートã—ã¾ã™." -#: src/skins/ui_manager.c:311 src/skins/ui_manager.c:341 +#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +#, fuzzy +msgid "By Album" +msgstr "アルãƒãƒ å:" + +#: src/skins/ui_manager.c:328 src/skins/ui_manager.c:358 #, fuzzy msgid "Sorts the list by album." msgstr "タイトル順ã§ãƒ—レイリストをソートã—ã¾ã™." -#: src/skins/ui_manager.c:315 src/skins/ui_manager.c:345 +#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +msgid "By Artist" +msgstr "アーティスト" + +#: src/skins/ui_manager.c:332 src/skins/ui_manager.c:362 msgid "Sorts the list by artist." msgstr "アーティスト順ã§ãƒ—レイリストをソートã—ã¾ã™." -#: src/skins/ui_manager.c:319 src/skins/ui_manager.c:349 +#: src/skins/ui_manager.c:336 src/skins/ui_manager.c:366 msgid "Sorts the list by filename." msgstr "ファイルåé †ã§ãƒ—レイリストをソートã—ã¾ã™." -#: src/skins/ui_manager.c:323 src/skins/ui_manager.c:353 +#: src/skins/ui_manager.c:340 src/skins/ui_manager.c:370 msgid "Sorts the list by full pathname." msgstr "ファイルã®ãƒ‘スåã§ãƒ—レイリストをソートã—ã¾ã™." -#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +#: src/skins/ui_manager.c:343 src/skins/ui_manager.c:373 msgid "By Date" msgstr "日付" -#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +#: src/skins/ui_manager.c:344 src/skins/ui_manager.c:374 msgid "Sorts the list by modification time." msgstr "変更時間ã§ãƒ—レイリストをソートã—ã¾ã™." -#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +#: src/skins/ui_manager.c:347 src/skins/ui_manager.c:377 +msgid "By Track Number" +msgstr "トラック番å·" + +#: src/skins/ui_manager.c:348 src/skins/ui_manager.c:378 msgid "Sorts the list by track number." msgstr "トラック番å·é †ã§ãƒ—レイリストをソートã—ã¾ã™." -#: src/skins/ui_manager.c:334 +#: src/skins/ui_manager.c:351 msgid "Sort Selected" msgstr "é¸æŠžç¯„囲ã®ã‚½ãƒ¼ãƒˆ" -#: src/skins/ui_manager.c:373 +#: src/skins/ui_manager.c:387 +msgid "File" +msgstr "ファイル" + +#: src/skins/ui_manager.c:388 +msgid "Help" +msgstr "ヘルプ" + +#: src/skins/ui_manager.c:390 msgid "Plugin Services" msgstr "プラグインサービス" -#: src/skins/ui_manager.c:384 +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:395 +msgid "View Track Details" +msgstr "トラックã®è©³ç´°" + +#: src/skins/ui_manager.c:393 src/skins/ui_manager.c:396 +msgid "View track details" +msgstr "トラックã®è©³ç´°" + +#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 +msgid "About Audacious" +msgstr "Audacious ã«ã¤ã„ã¦" + +#: src/skins/ui_manager.c:401 msgid "Play File" msgstr "ファイルを演å¥" -#: src/skins/ui_manager.c:387 +#: src/skins/ui_manager.c:402 +msgid "Load and play a file" +msgstr "ファイルを読ã¿è¾¼ã‚“ã§æ¼”å¥" + +#: src/skins/ui_manager.c:404 msgid "Play Location" msgstr "場所を演å¥" -#: src/skins/ui_manager.c:428 +#: src/skins/ui_manager.c:405 +msgid "Play media from the selected location" +msgstr "é¸æŠžã—ãŸå ´æ‰€ã‹ã‚‰ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’æ¼”å¥" + +#: src/skins/ui_manager.c:407 +msgid "Plugin services" +msgstr "プラグインサービス" + +#: src/skins/ui_manager.c:409 +msgid "Preferences" +msgstr "設定" + +#: src/skins/ui_manager.c:410 +msgid "Open preferences window" +msgstr "設定ウィンドウを開ã" + +#: src/skins/ui_manager.c:413 +msgid "Quit Audacious" +msgstr "Audacious を終了ã™ã‚‹" + +#: src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Set A-B" +msgstr "A-B をセット" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Clear A-B" +msgstr "A-B をクリア" + +#: src/skins/ui_manager.c:421 src/skins/ui_manager.c:422 +msgid "Jump to Playlist Start" +msgstr "最åˆã®æ›²ã¸ç§»å‹•" + +#: src/skins/ui_manager.c:427 src/skins/ui_manager.c:428 +msgid "Jump to Time" +msgstr "指定ã—ãŸæ™‚é–“ã¸ç§»å‹•" + +#: src/skins/ui_manager.c:430 +msgid "Queue Toggle" +msgstr "キューを切り替ãˆã‚‹" + +#: src/skins/ui_manager.c:431 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "プレイリストã®ã‚­ãƒ¥ãƒ¼ã«å…¥ã£ã¦ã„るエントリã®æœ‰åŠ¹/無効を切り替ãˆã¾ã™." + +#: src/skins/ui_manager.c:434 +msgid "Copy" +msgstr "" + +#: src/skins/ui_manager.c:436 +#, fuzzy +msgid "Cut" +msgstr "カスタム " + +#: src/skins/ui_manager.c:438 +#, fuzzy +msgid "Paste" +msgstr "最も早ã„" + +#: src/skins/ui_manager.c:445 msgid "Load" msgstr "読ã¿è¾¼ã¿" -#: src/skins/ui_manager.c:433 src/skins/ui_manager.c:454 -#: src/skins/ui_manager.c:469 +#: src/skins/ui_manager.c:450 src/skins/ui_manager.c:471 +#: src/skins/ui_manager.c:486 msgid "Preset" msgstr "プリセット" -#: src/skins/ui_manager.c:434 +#: src/skins/ui_manager.c:451 msgid "Load preset" msgstr "プリセットã®èª­ã¿è¾¼ã¿" -#: src/skins/ui_manager.c:436 src/skins/ui_manager.c:457 -#: src/skins/ui_manager.c:472 +#: src/skins/ui_manager.c:453 src/skins/ui_manager.c:474 +#: src/skins/ui_manager.c:489 msgid "Auto-load preset" msgstr "自動読ã¿è¾¼ã¿ã®ãƒ—リセット" -#: src/skins/ui_manager.c:437 +#: src/skins/ui_manager.c:454 msgid "Load auto-load preset" msgstr "自動読ã¿è¾¼ã¿ã®ãƒ—リセット" -#: src/skins/ui_manager.c:440 +#: src/skins/ui_manager.c:457 msgid "Load default preset into equalizer" msgstr "イコライザã«ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒ—リセットを読ã¿è¾¼ã‚€" -#: src/skins/ui_manager.c:442 +#: src/skins/ui_manager.c:459 msgid "Zero" msgstr "ゼロ" -#: src/skins/ui_manager.c:443 +#: src/skins/ui_manager.c:460 msgid "Set equalizer preset levels to zero" msgstr "イコライザプリセットレベルをゼロã«ã‚»ãƒƒãƒˆ" -#: src/skins/ui_manager.c:445 +#: src/skins/ui_manager.c:462 msgid "From file" msgstr "ファイル" -#: src/skins/ui_manager.c:446 +#: src/skins/ui_manager.c:463 msgid "Load preset from file" msgstr "ファイルã‹ã‚‰ãƒ—リセットを読ã¿è¾¼ã¿" -#: src/skins/ui_manager.c:448 +#: src/skins/ui_manager.c:465 msgid "From WinAMP EQF file" msgstr "WinAMP EQF ファイル" -#: src/skins/ui_manager.c:449 +#: src/skins/ui_manager.c:466 msgid "Load preset from WinAMP EQF file" msgstr "WinAMP EQF ファイルã‹ã‚‰ãƒ—リセットを読ã¿è¾¼ã¿" -#: src/skins/ui_manager.c:451 +#: src/skins/ui_manager.c:468 msgid "WinAMP Presets" msgstr "WinAMP プリセット" -#: src/skins/ui_manager.c:452 +#: src/skins/ui_manager.c:469 msgid "Import WinAMP presets" msgstr "WinAMP プリセット" -#: src/skins/ui_manager.c:455 +#: src/skins/ui_manager.c:472 msgid "Save preset" msgstr "プリセットã®ä¿å­˜" -#: src/skins/ui_manager.c:458 +#: src/skins/ui_manager.c:475 msgid "Save auto-load preset" msgstr "自動読ã¿è¾¼ã¿ã®ãƒ—リセットã®ä¿å­˜" -#: src/skins/ui_manager.c:461 +#: src/skins/ui_manager.c:478 msgid "Save default preset" msgstr "デフォルトプリセットã®ä¿å­˜" -#: src/skins/ui_manager.c:463 +#: src/skins/ui_manager.c:480 msgid "To file" msgstr "ファイル" -#: src/skins/ui_manager.c:464 +#: src/skins/ui_manager.c:481 msgid "Save preset to file" msgstr "プリセットをファイルã¸ä¿å­˜" -#: src/skins/ui_manager.c:466 +#: src/skins/ui_manager.c:483 msgid "To WinAMP EQF file" msgstr "WinAMP EQF ファイル" -#: src/skins/ui_manager.c:467 +#: src/skins/ui_manager.c:484 msgid "Save preset to WinAMP EQF file" msgstr "プリセットを WinAMP EQF ファイルã¸ä¿å­˜" -#: src/skins/ui_manager.c:470 +#: src/skins/ui_manager.c:487 msgid "Delete preset" msgstr "プリセットã®å‰Šé™¤" -#: src/skins/ui_manager.c:473 +#: src/skins/ui_manager.c:490 msgid "Delete auto-load preset" msgstr "自動読ã¿è¾¼ã¿ã®ãƒ—リセットã®å‰Šé™¤" -#: src/skins/ui_playlist.c:374 +#: src/skins/ui_playlist.c:244 msgid "Search entries in active playlist" msgstr "有効ã«ãªã£ã¦ã„るプレイリストã®ã‚¨ãƒ³ãƒˆãƒªã‚’検索" -#: src/skins/ui_playlist.c:382 +#: src/skins/ui_playlist.c:252 msgid "" "Select entries in playlist by filling one or more fields. Fields use regular " "expressions syntax, case-insensitive. If you don't know how regular " @@ -5288,120 +3820,61 @@ "æ­£è¦è¡¨ç¾ãŒä½¿ãˆ, 大文字ã¨å°æ–‡å­—を区別ã—ã¾ã›ã‚“. æ­£è¦è¡¨ç¾ãŒã©ã®ã‚ˆã†ã«å‹•ä½œã™ã‚‹ã‹" "ã‚ã‹ã‚‰ãªã„å ´åˆã¯, å˜ç´”ã«æ¤œç´¢ã—よã†ã¨ã—ã¦ã„ã‚‹ã‚‚ã®ã®æ–‡å­—を入力ã—ã¾ã™." -#: src/skins/ui_playlist.c:397 +#: src/skins/ui_playlist.c:260 +msgid "Title: " +msgstr "タイトル: " + +#: src/skins/ui_playlist.c:267 msgid "Album: " msgstr "アルãƒãƒ å: " -#: src/skins/ui_playlist.c:404 +#: src/skins/ui_playlist.c:274 msgid "Artist: " msgstr "アーティスト: " -#: src/skins/ui_playlist.c:411 +#: src/skins/ui_playlist.c:281 msgid "Filename: " msgstr "ファイルå: " -#: src/skins/ui_playlist.c:419 +#: src/skins/ui_playlist.c:289 msgid "Clear previous selection before searching" msgstr "検索å‰ã«ä»¥å‰ã®é¸æŠžã‚’クリア" -#: src/skins/ui_playlist.c:422 +#: src/skins/ui_playlist.c:292 msgid "Automatically toggle queue for matching entries" msgstr "マッãƒã—ãŸã‚¨ãƒ³ãƒˆãƒªã®ã‚­ãƒ¥ãƒ¼ã‚’自動的ã«ãƒˆã‚°ãƒ«" -#: src/skins/ui_playlist.c:425 +#: src/skins/ui_playlist.c:295 msgid "Create a new playlist with matching entries" msgstr "マッãƒã—ãŸã‚¨ãƒ³ãƒˆãƒªã§æ–°ã—ã„プレイリストを作æˆ" -#: src/skins/ui_playlist.c:772 -msgid "Save as Static Playlist" -msgstr "スタティックプレイリストã¨ã—ã¦ä¿å­˜" - -#: src/skins/ui_playlist.c:779 -msgid "Use Relative Path" -msgstr "相対パスを使ã†" - -#: src/skins/ui_playlist.c:802 -msgid "Load Playlist" -msgstr "プレイリストã®èª­ã¿è¾¼ã¿" - -#: src/skins/ui_playlist.c:815 -msgid "Save Playlist" -msgstr "プレイリストã®ä¿å­˜" - -#: src/skins/ui_playlist.c:1146 +#: src/skins/ui_playlist.c:762 msgid "Audacious Playlist Editor" msgstr "Audacious プレイリストエディタ" -#: src/skins/ui_playlist.c:1206 +#: src/skins/ui_playlist.c:809 #, c-format msgid "%s (%d of %d)" msgstr "" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "31 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "63 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "125 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "250 Hz" -msgstr "22000 Hz " - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "500 Hz" -msgstr "11000 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "1 kHz" -msgstr "11 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "2 kHz" -msgstr "22 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "4 kHz" -msgstr "44 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "8 kHz" -msgstr "48 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "16 kHz" -msgstr "48 kHz" - -#: src/skins/ui_skinselector.c:179 +#: src/skins/ui_skinselector.c:162 msgid "Archived Winamp 2.x skin" msgstr "Archived Winamp 2.x スキン" -#: src/skins/ui_skinselector.c:184 +#: src/skins/ui_skinselector.c:167 msgid "Unarchived Winamp 2.x skin" msgstr "Unarchived Winamp 2.x スキン" -#: src/skins/util.c:834 +#: src/skins/util.c:773 #, c-format msgid "Could not create directory (%s): %s\n" msgstr "ディレクトリ (%s) を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: src/sndfile/plugin.c:531 +#: src/sndfile/plugin.c:438 msgid "About sndfile plugin" msgstr "sndfile プラグインã«ã¤ã„ã¦" -#: src/sndfile/plugin.c:532 +#: src/sndfile/plugin.c:439 msgid "" "Adapted for Audacious usage by Tony Vroon \n" "from the xmms_sndfile plugin which is:\n" @@ -5443,55 +3916,63 @@ "51 Franklin Street, Fifth Floor, \n" "Boston, MA 02110-1301 USA ã¸æ‰‹ç´™ã‚’書ã„ã¦ä¸‹ã•ã„." -#: src/sndstretch/sndstretch_xmms.c:175 +#: src/sndstretch/sndstretch_xmms.c:155 msgid "About SndStretch" msgstr "SndStretch ã«ã¤ã„ã¦" -#: src/sndstretch/sndstretch_xmms.c:336 +#: src/sndstretch/sndstretch_xmms.c:313 msgid "Volume corr." msgstr "音é‡è£œæ­£" -#: src/sndstretch/sndstretch_xmms.c:337 +#: src/sndstretch/sndstretch_xmms.c:314 msgid "Short Overlap" msgstr "一部é‡ã­åˆã‚ã›" -#: src/sndstretch/sndstretch_xmms.c:391 +#: src/sndstretch/sndstretch_xmms.c:360 msgid "Speed" msgstr "スピード" -#: src/sndstretch/sndstretch_xmms.c:392 +#: src/sndstretch/sndstretch_xmms.c:361 msgid "Pitch" msgstr "ピッãƒ" -#: src/sndstretch/sndstretch_xmms.c:413 +#: src/sndstretch/sndstretch_xmms.c:362 +msgid "Scale" +msgstr "スケール" + +#: src/sndstretch/sndstretch_xmms.c:363 +msgid "Options" +msgstr "オプション" + +#: src/sndstretch/sndstretch_xmms.c:382 msgid "SndStretch - Configuration" msgstr "SndStretch - 設定" -#: src/song_change/song_change.c:397 +#: src/song_change/song_change.c:464 msgid "Command to run when Audacious starts a new song." msgstr "Audacious ãŒæ–°ã—ã„曲を開始ã—ãŸã¨ãã«å®Ÿè¡Œã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰" -#: src/song_change/song_change.c:398 src/song_change/song_change.c:402 -#: src/song_change/song_change.c:406 src/song_change/song_change.c:410 +#: src/song_change/song_change.c:465 src/song_change/song_change.c:469 +#: src/song_change/song_change.c:473 src/song_change/song_change.c:477 msgid "Command:" msgstr "コマンド:" -#: src/song_change/song_change.c:401 +#: src/song_change/song_change.c:468 msgid "Command to run toward the end of a song." msgstr "曲ã®çµ‚ã‚ã‚Šã§å®Ÿè¡Œã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰." -#: src/song_change/song_change.c:405 +#: src/song_change/song_change.c:472 msgid "Command to run when Audacious reaches the end of the playlist." msgstr "Audacious ãŒãƒ—レイリストã®æœ€å¾Œã«åˆ°é”ã—ãŸã¨ãã«å®Ÿè¡Œã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰." -#: src/song_change/song_change.c:409 +#: src/song_change/song_change.c:476 msgid "" "Command to run when title changes for a song (i.e. network streams titles)." msgstr "" "例ãˆã°ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¹ãƒˆãƒªãƒ¼ãƒ ã®ã‚¿ã‚¤ãƒˆãƒ«ãªã©, 曲ã®ã‚¿ã‚¤ãƒˆãƒ«ãŒå¤‰ã‚ã£ãŸã¨ãã«å®Ÿè¡Œ" "ã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰." -#: src/song_change/song_change.c:413 +#: src/song_change/song_change.c:480 #, fuzzy msgid "" "You can use the following format strings which\n" @@ -5505,7 +3986,10 @@ "%n or %s: Song name\n" "%r: Rate (in bits per second)\n" "%t: Playlist position (%02d)\n" -"%p: Currently playing (1 or 0)" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" msgstr "" "コマンドを呼ã³å‡ºã™å‰ã«ç½®æ›ã•ã‚Œã‚‹ä»¥ä¸‹ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆæ–‡å­—列を利用ã§ãã¾ã™(プレイ" "リストã®æœ€å¾Œã®ã‚³ãƒžãƒ³ãƒ‰ã«ã¯ã™ã¹ã¦ãŒæœ‰åŠ¹ã§ã¯ã‚ã‚Šã›ã‚“).\n" @@ -5519,7 +4003,7 @@ "%%t: プレイリストã®ä½ç½® (%%02d)\n" "%%p: ç¾åœ¨æ¼”å¥ä¸­ã‹ (1 or 0)" -#: src/song_change/song_change.c:437 +#: src/song_change/song_change.c:507 msgid "" "Parameters passed to the shell should be encapsulated in " "quotes. Doing otherwise is a security risk." @@ -5527,310 +4011,1811 @@ "シェルã«æ¸¡ã•ã‚Œã‚‹ãƒ‘ラメータã¯ã‚¯ã‚©ãƒ¼ãƒˆã§ããられるã¹ãã§ã™." "ã•ã‚‚ãªã„ã¨ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ä¸Šã®å±é™ºãŒã‚ã‚Šã¾ã™." -#: src/song_change/song_change.c:448 +#: src/song_change/song_change.c:518 msgid "Commands" msgstr "コマンド" -#: src/song_change/song_change.c:484 +#: src/song_change/song_change.c:555 #, fuzzy msgid "Song Change" msgstr "曲メッセージ" -#: src/spectrum/spectrum.c:89 -msgid "Spectrum Analyzer" -msgstr "スペクトラムアナライザ" +#: src/statusicon/statusicon.c:378 +msgid "About Status Icon Plugin" +msgstr "ステータスアイコン プラグインã«ã¤ã„ã¦" + +#: src/statusicon/statusicon.c:379 +#, fuzzy +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager.\n" +msgstr "" +"\n" +"Giacomo Lozito < james@develia.org > ã«ã‚ˆã£ã¦æ›¸ã‹ã‚ŒãŸ\n" +"\n" +"ã“ã®ãƒ—ラグインã¯, ウィンドウマãƒãƒ¼ã‚¸ãƒ£ã®\n" +"システムトレイエリアã«ç½®ã‹ã‚Œã‚‹ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚¢ã‚¤ã‚³ãƒ³ã‚’æä¾›ã—ã¾ã™.\n" + +#: src/statusicon/statusicon.c:447 +msgid "Status Icon Plugin - Preferences" +msgstr "ステータスアイコンプラグイン - 設定" + +#: src/statusicon/statusicon.c:457 +msgid "Right-Click Menu" +msgstr "å³ã‚¯ãƒªãƒƒã‚¯ãƒ¡ãƒ‹ãƒ¥ãƒ¼" + +#: src/statusicon/statusicon.c:462 +msgid "Small playback menu #1" +msgstr "å°åž‹å†ç”Ÿãƒ¡ãƒ‹ãƒ¥ãƒ¼ #1" + +#: src/statusicon/statusicon.c:465 +msgid "Small playback menu #2" +msgstr "å°åž‹å†ç”Ÿãƒ¡ãƒ‹ãƒ¥ãƒ¼ #2" + +#: src/statusicon/statusicon.c:481 +msgid "Mouse Scroll Action" +msgstr "マウススクロールã®å‹•ä½œ" + +#: src/statusicon/statusicon.c:485 +msgid "Change volume" +msgstr "音é‡ã®å¤‰æ›´" + +#: src/statusicon/statusicon.c:487 +msgid "Change playing song" +msgstr "æ¼”å¥æ›²ã®å¤‰æ›´" + +#: src/statusicon/statusicon.c:500 +#, fuzzy +msgid "Other settings" +msgstr "ミキサ設定" + +#: src/statusicon/statusicon.c:505 +msgid "Disable the popup window" +msgstr "" + +#: src/statusicon/statusicon.c:512 +msgid "Close to the notification area (system tray)" +msgstr "" + +#: src/stereo_plugin/stereo.c:41 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin 1999." +msgstr "" +"エクストラステレオプラグイン\n" +"\n" +"1999. Johan Levin ã«ã‚ˆã‚‹" + +#: src/stereo_plugin/stereo.c:65 +msgid "About Extra Stereo Plugin" +msgstr "エクストラステレオプラグインã«ã¤ã„ã¦" + +#: src/stereo_plugin/stereo.c:102 +msgid "Configure Extra Stereo" +msgstr "エクストラステレオã®è¨­å®š" + +#: src/tonegen/tonegen.c:48 +msgid "About Tone Generator" +msgstr "トーンジェãƒãƒ¬ãƒ¼ã‚¿ã«ã¤ã„ã¦" + +#: src/tonegen/tonegen.c:50 +msgid "" +"Sinus tone generator by Haavard Kvaalen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" +msgstr "" +"Haavard Kvaalen ã«ã‚ˆã‚‹ã‚µã‚¤ãƒ³ãƒˆãƒ¼ãƒ³ã‚¸ã‚§ãƒãƒ¼ãƒ¬ãƒ¼ã‚¿\n" +"Daniel J. Peng ã«ã‚ˆã‚‹ä¿®æ­£\n" +"\n" +"URLã« tone://frequency1;frequency2;frequency3;... ã¨è¿½åŠ ã—ã¦ä½¿ç”¨ã—ã¾ã™\n" +"例 tone://2000;2005 㯠2000Hz トーン㨠2005Hz トーンを演å¥ã—ã¾ã™" + +#: src/tonegen/tonegen.c:100 +#, c-format +msgid "%s %.1f Hz" +msgstr "%s %.1f Hz" + +#: src/tonegen/tonegen.c:100 +msgid "Tone Generator: " +msgstr "トーンジェãƒãƒ¬ãƒ¼ã‚¿: " + +#: src/unix-io/gtk.c:34 +#, fuzzy +msgid "About File I/O Plugin" +msgstr "ESounD プラグインã«ã¤ã„ã¦" + +#: src/vorbis/configure.c:31 +msgid "Override generic titles" +msgstr "オリジナルã®ã‚¿ã‚¤ãƒˆãƒ«ã‚’上書ãã™ã‚‹" + +#: src/vorbis/configure.c:32 +msgid "Title format:" +msgstr "タイトルã®æ›¸å¼:" + +#: src/vorbis/configure.c:36 +#, fuzzy +msgid "Ogg Vorbis Tags" +msgstr "Ogg Vorbis ã‚¿ã‚°:" + +#: src/vorbis/configure.c:69 +msgid "Ogg Vorbis Audio Plugin Configuration" +msgstr "Ogg Vorbis オーディオプラグインã®è¨­å®š" + +#: src/vorbis/vorbis.c:581 +msgid "About Ogg Vorbis Audio Plugin" +msgstr "Ogg Vorbis オーディオ プラグインã«ã¤ã„ã¦" + +#: src/vorbis/vorbis.c:586 +msgid "" +"Ogg Vorbis Plugin by the Xiph.org Foundation\n" +"\n" +"Original code by\n" +"Tony Arcieri \n" +"Contributions from\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visit the Xiph.org Foundation at http://www.xiph.org/\n" +msgstr "" +"Xiph.org Foundation ã«ã‚ˆã‚‹ Ogg Vorbis プラグイン\n" +"\n" +"オリジナルã®ã‚³ãƒ¼ãƒ‰:\n" +"Tony Arcieri \n" +"貢献者:\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Xiph.org Foundation ã‚‚ã”覧下ã•ã„.\n" + +#: src/vtx/about.c:14 +msgid "About Vortex Player" +msgstr "Vortex プレイヤã«ã¤ã„ã¦" + +#: src/vtx/about.c:15 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"\n" +"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" +"and other AY/YM music sites.\n" +"\n" +"Audacious implementation by Pavel Vymetalek " +msgstr "" +"Sashnov Alexander ã«ã‚ˆã‚‹ Vortex ファイルフォーマットプレイ" +"ヤ\n" +"Roman Sherbakov ã® in_vtx.dll をオリジナルソースã¨ã™ã‚‹\n" +"\n" +"vtx フォーマットã®éŸ³æ¥½ã¯ http://vtx.microfor.ru/music.htm ã‚„\n" +"ä»–ã® AY/YM 音楽サイトã§è¦‹ã¤ã‘られã¾ã™.\n" +"\n" +"Audacious 実装㯠Pavel Vymetalek ã«ã‚ˆã‚‹" + +#: src/wavpack/wavpack.c:353 +#, c-format +msgid "Wavpack Decoder Plugin %s" +msgstr "Wavpack デコーダプラグイン %s" + +#: src/wavpack/wavpack.c:354 +msgid "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan\n" +"Visit the Wavpack site at http://www.wavpack.com/\n" +msgstr "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"プラグインコードã®ä¸€éƒ¨ã¯ Miles Egan ã«ã‚ˆã‚‹\n" +"Wavpack ã®ã‚µã‚¤ãƒˆ http://www.wavpack.com/ ã‚’ã”覧ãã ã•ã„\n" + +#~ msgid "Use Bitmap fonts if available" +#~ msgstr "å¯èƒ½ãªã‚‰ã°ãƒ“ットマップフォントを使用" + +#~ msgid "" +#~ "Use bitmap fonts if they are available. Bitmap fonts do not support " +#~ "Unicode strings." +#~ msgstr "" +#~ "å¯èƒ½ãªã‚‰ã°ãƒ“ットマップフォントを使用ã—ã¾ã™. ビットマップフォント㯠" +#~ "Unicode 文字列をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“." + +#~ msgid "_Miscellaneous" +#~ msgstr "ãã®ä»–(_M)" + +#~ msgid "Use two-way text scroller" +#~ msgstr "åŒæ–¹å‘テキストスクロールを使ã†" + +#~ msgid "About " +#~ msgstr "プラグインã«ã¤ã„ã¦" + +#~ msgid "" +#~ "\n" +#~ "Copyright (C) 2002, 2003 Simon Peter \n" +#~ "\n" +#~ "This plugin is released under the terms and conditions of the GNU LGPL.\n" +#~ "See http://www.gnu.org/licenses/lgpl.html for details.\n" +#~ "\n" +#~ "This plugin uses the AdPlug library, which is copyright (C) Simon Peter, " +#~ "et al.\n" +#~ "Linked AdPlug library version: " +#~ msgstr "" +#~ "\n" +#~ "Copyright (C) 2002, 2003 Simon Peter \n" +#~ "\n" +#~ "ã“ã®ãƒ—ラグイン㯠GNU LGPL ã®æ¡é …ã¨æ¡ä»¶ã®ã‚‚ã¨ã«é…布ã•ã‚Œã¦ã„ã‚‹.\n" +#~ "詳細㯠http://www.gnu.org/licenses/lgpl.html を見よ.\n" +#~ "\n" +#~ "ã“ã®ãƒ—ラグインã¯, copyright (C) Simon Peter ãŠã‚ˆã³ãã®ä»–ã«ã‚ˆã‚‹AdPlug ライ" +#~ "ブラリを用ã„ã¦ã„ã‚‹.\n" +#~ "リンクã—ã¦ã„ã‚‹ AdPlug ライブラリã®ãƒ´ã‚¡ãƒ¼ã‚¸ãƒ§ãƒ³: " + +#~ msgid "AdPlug :: Configuration" +#~ msgstr "AdPlug :: 設定" + +#~ msgid "Sound quality" +#~ msgstr "音質" + +#~ msgid "Resolution" +#~ msgstr "解åƒåº¦" + +#~ msgid "8bit" +#~ msgstr " 8ビット" + +#~ msgid "16bit" +#~ msgstr "16ビット" + +#~ msgid "Channels" +#~ msgstr "ãƒãƒ£ãƒ³ãƒãƒ«æ•°" + +#~ msgid "" +#~ "Setting stereo is not recommended, unless you need to. This won't add any " +#~ "stereo effects to the sound - OPL2 is just mono - but eats up more CPU " +#~ "power!" +#~ msgstr "" +#~ "å¿…è¦ã§ãªã„ãªã‚‰ã°, ステレオ設定ã¯æŽ¨å¥¨ã—ã¾ã›ã‚“. OPL2 ã¯å˜ã«ãƒ¢ãƒŽãƒ©ãƒ«ãªã®ã§, " +#~ "サウンドã«ã‚¹ãƒ†ãƒ¬ã‚ªã‚¨ãƒ•ã‚§ã‚¯ãƒˆã¯ã‹ã‹ã‚Šã¾ã›ã‚“ãŒ, より CPU パワーを消費ã—ã¾ã™!" + +#~ msgid "Frequency" +#~ msgstr "周波数" + +#~ msgid "Detect songend" +#~ msgstr "曲ã®çµ‚ã‚りを検出ã™ã‚‹" + +#~ msgid "" +#~ "If enabled, XMMS will detect a song's ending, stop it and advance in the " +#~ "playlist. If disabled, XMMS won't take notice of a song's ending and loop " +#~ "it all over again and again." +#~ msgstr "" +#~ "有効ãªã‚‰ã°, XMMS ã¯æ›²ã®çµ‚ã‚りを検出ã—, 曲をåœæ­¢ã—ã¦ãƒ—レイリストを進ã¿ã¾" +#~ "ã™. 無効ãªã‚‰ã°, XMMS ã¯æ›²ã®çµ‚ã‚りを通知ã›ãšã«, 曲全体を何度も繰り返ã—ã¾" +#~ "ã™. " + +#~ msgid "Formats" +#~ msgstr "フォーマット" + +#~ msgid "Format selection" +#~ msgstr "フォーマットé¸æŠž" + +#~ msgid "Format" +#~ msgstr "フォーマット" + +#~ msgid "Extension" +#~ msgstr "æ‹¡å¼µå­" + +#~ msgid "" +#~ "Selected file types will be recognized and played back by this plugin. " +#~ "Deselected types will be ignored to make room for other plugins to play " +#~ "these files." +#~ msgstr "" +#~ "é¸æŠžã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚¿ã‚¤ãƒ—ãŒèªè­˜ã•ã‚Œ, ã“ã®ãƒ—ラグインã«ã‚ˆã£ã¦å†ç”Ÿã•ã‚Œã¾ã™. é¸" +#~ "択ã•ã‚Œã¦ã„ãªã„タイプã¯, ã“ã®ãƒ—ラグインã‹ã‚‰ã¯ç„¡è¦–ã•ã‚Œ, ä»–ã®ãƒ—ラグインã«ã‚ˆã£" +#~ "ã¦å†ç”Ÿã•ã‚Œã¾ã™. " + +#~ msgid "AdPlug :: File Info" +#~ msgstr "AdPlug :: ファイル情報" + +#~ msgid "Author: " +#~ msgstr "作者: " + +#~ msgid "File Type: " +#~ msgstr "ファイルタイプ: " + +#~ msgid "Subsongs: " +#~ msgstr "サブソング: " + +#~ msgid "Instruments: " +#~ msgstr "楽器: " + +#~ msgid "Orders: " +#~ msgstr "é †åº: " + +#~ msgid "Patterns: " +#~ msgstr "パターン: " + +#~ msgid "Song" +#~ msgstr "曲" + +#~ msgid "Instrument name" +#~ msgstr "楽器å" + +#~ msgid "Song message" +#~ msgstr "曲メッセージ" + +#~ msgid "Subsong selection" +#~ msgstr "サブソングé¸æŠž" + +#~ msgid "Order: " +#~ msgstr "é †åº: " + +#~ msgid "Pattern: " +#~ msgstr "パターン: " + +#~ msgid "Row: " +#~ msgstr "列: " + +#~ msgid "Speed: " +#~ msgstr "æ—©ã•: " + +#~ msgid "Timer: " +#~ msgstr "タイマー: " + +#~ msgid "About XMMS Alarm" +#~ msgstr "XMMS アラームã«ã¤ã„ã¦" + +#~ msgid "XMMS Alarm" +#~ msgstr "XMMS アラーム" + +#~ msgid "" +#~ "An XMMS plugin which can be used\n" +#~ "to start playing at a certain time.\n" +#~ "\n" +#~ "Send all complaints to:\n" +#~ "Adam Feakin \n" +#~ "Daniel Stodden \n" +#~ "\n" +#~ "http://www.snika.uklinux.net/xmms-alarm/" +#~ msgstr "" +#~ "特定ã®æ™‚é–“ã«æ¼”å¥ã‚’開始ã™ã‚‹ã®ã«\n" +#~ "用ã„られる XMMS プラグイン.\n" +#~ "\n" +#~ "å•é¡ŒãŒã‚ã‚Šã¾ã—ãŸã‚‰ã™ã¹ã¦ä»¥ä¸‹ã¸é€ã£ã¦ãã ã•ã„:\n" +#~ "Adam Feakin \n" +#~ "Daniel Stodden \n" +#~ "\n" +#~ "http://www.snika.uklinux.net/xmms-alarm/" + +#~ msgid "Alarm" +#~ msgstr "アラーム" + +#~ msgid "This is your wakeup call." +#~ msgstr "目覚ã¾ã—ã§ã™." + +#~ msgid "Select Playlist" +#~ msgstr "プレイリストã®é¸æŠž" + +#~ msgid "Sorry" +#~ msgstr "ã”ã‚ã‚“ãªã•ã„" + +#~ msgid "Warning" +#~ msgstr "警告" + +#~ msgid "" +#~ "For safety reasons the \"quiet\" time must be at least 65 seconds longer " +#~ "than the fading time, it must also be more than 10 seconds. This " +#~ "basically means that there is a bug in the code and until I find a way of " +#~ "really fixing it this message will appear :)\n" +#~ "\n" +#~ "Your fading settings have NOT been saved\n" +#~ "\n" +#~ "--\n" +#~ "Adam" +#~ msgstr "" +#~ "安全ã®ãŸã‚ã«, \"é™ã‹ã«ãªã‚‹\"時間ã¯å°‘ãªãã¨ã‚‚ 65 秒ã‚ã‚Š, 10 秒以上ãªã‘ã‚Œã°" +#~ "ãªã‚‰ãªã„フェーディング時間より長ããªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“. ã“ã‚Œã¯åŸºæœ¬çš„ã«ã‚³ãƒ¼ãƒ‰" +#~ "ã®ãƒã‚°ã§ã‚ã‚Š, 真ã®ä¿®æ­£æ–¹æ³•ãŒè¦‹ã¤ã‹ã‚‹ã¾ã§ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯è¡¨ç¤ºã•ã‚Œã‚‹ã§ã—ょ" +#~ "ㆠ:)\n" +#~ "\n" +#~ "フェーディング設定ã¯ä¿å­˜ã•ã‚Œã¾ã›ã‚“\n" +#~ "\n" +#~ "--\n" +#~ "Adam" + +#~ msgid "Oh Well" +#~ msgstr "ã‚ã‹ã‚Šã¾ã—ãŸ" + +#~ msgid "Alarm Settings" +#~ msgstr "アラーム設定" + +#~ msgid "Time" +#~ msgstr "時間" + +#~ msgid "hours" +#~ msgstr "時" + +#~ msgid "h" +#~ msgstr "時" + +#~ msgid "minutes" +#~ msgstr "分" + +#~ msgid "Quiet after:" +#~ msgstr "é™ã‹ã«ãªã‚‹ã¾ã§:" + +#~ msgid "Alarm at (default):" +#~ msgstr "アラーム(デフォルト):" + +#~ msgid "Choose the days for the alarm to come on" +#~ msgstr "アラームを鳴らã™æ›œæ—¥ã®é¸æŠž" + +#~ msgid "Day" +#~ msgstr "曜日" + +#~ msgid "Tuesday" +#~ msgstr "ç«" + +#~ msgid "Wednesday" +#~ msgstr "æ°´" + +#~ msgid "Thursday" +#~ msgstr "木" + +#~ msgid "Friday" +#~ msgstr "金" + +#~ msgid "Saturday" +#~ msgstr "土" + +#~ msgid "Sunday" +#~ msgstr "æ—¥" + +#~ msgid "Monday" +#~ msgstr "月" + +#~ msgid "Days" +#~ msgstr "曜日" + +#~ msgid "Fading" +#~ msgstr "フェーディング" + +#~ msgid "Volume" +#~ msgstr "音é‡" + +#~ msgid "Current" +#~ msgstr "ç¾åœ¨ã®å€¤" + +#~ msgid "reset to current output volume" +#~ msgstr "ç¾åœ¨ã®å‡ºåŠ›éŸ³é‡ã«ãƒªã‚»ãƒƒãƒˆ" + +#~ msgid "Start at" +#~ msgstr "開始" + +#~ msgid "%" +#~ msgstr "%" + +#~ msgid "Final" +#~ msgstr "最終" + +#~ msgid "Additional Command" +#~ msgstr "追加コマンド" + +#~ msgid "enable" +#~ msgstr "有効" + +#~ msgid "Playlist (optional)" +#~ msgstr "プレイリスト (オプショナル)" + +#~ msgid "Browse..." +#~ msgstr "å‚ç…§..." + +#~ msgid "Reminder" +#~ msgstr "リマインダ" + +#~ msgid "Use reminder" +#~ msgstr "リマインダを使ã†" + +#~ msgid "What do these options mean?" +#~ msgstr "オプションã®æ„味" + +#~ msgid "" +#~ "\n" +#~ "Time\n" +#~ " Alarm at: \n" +#~ " The time for the alarm to come on.\n" +#~ "\n" +#~ " Quiet After: \n" +#~ " Stop alarm after this amount of time.\n" +#~ " (if the wakeup dialog is not closed)\n" +#~ "\n" +#~ "\n" +#~ "Days\n" +#~ " Day:\n" +#~ " Select the days for the alarm to activate.\n" +#~ "\n" +#~ " Time:\n" +#~ " Choose the time for the alarm on each day,\n" +#~ " or select the toggle button to use the default\n" +#~ " time.\n" +#~ "\n" +#~ "\n" +#~ "Volume\n" +#~ " Fading: \n" +#~ " Fade the volume up to the chosen volume \n" +#~ " for this amount of time.\n" +#~ "\n" +#~ " Start at: \n" +#~ " Start fading from this volume.\n" +#~ "\n" +#~ " Final: \n" +#~ " The volume to stop fading at. If the fading\n" +#~ " time is 0 then set volume to this and start\n" +#~ " playing.\n" +#~ "\n" +#~ "\n" +#~ "Options:\n" +#~ " Additional Command:\n" +#~ " Run this command at the alarm time.\n" +#~ "\n" +#~ " Playlist: \n" +#~ " Load this playlist for playing songs from \n" +#~ " (must have .m3u extension). If no playlist\n" +#~ " is given then the songs which are currently\n" +#~ " in the list will be used.\n" +#~ " The URL of an mp3/ogg stream can also be\n" +#~ " entered here, but loading of playlists from\n" +#~ " URLs is not currently supported by xmms.\n" +#~ "\n" +#~ " Reminder:\n" +#~ " Display a reminder when the alarm goes off,\n" +#~ " type the reminder in the box and turn on the\n" +#~ " toggle button if you want it to be shown.\n" +#~ msgstr "" +#~ "\n" +#~ "時間\n" +#~ " アラーム: \n" +#~ " アラームを鳴らã™æ™‚é–“ã§ã™.\n" +#~ "\n" +#~ " é™ã‹ã«ãªã‚‹ã¾ã§: \n" +#~ " 指定ã®æ™‚é–“ãŒçµŒéŽã—ãŸã‚‰ã‚¢ãƒ©ãƒ¼ãƒ ã‚’åœæ­¢ã—ã¾ã™.\n" +#~ " (目覚ã—ダイアログãŒé–‰ã˜ã‚‰ã‚Œã¦ã„ãªã‘ã‚Œã°)\n" +#~ "\n" +#~ "\n" +#~ "曜日\n" +#~ " 曜日:\n" +#~ " アラームを有効ã«ã™ã‚‹æ›œæ—¥ã‚’é¸æŠžã—ã¾ã™.\n" +#~ "\n" +#~ " 時間:\n" +#~ " å„曜日ã®ã‚¢ãƒ©ãƒ¼ãƒ ã®æ™‚é–“ã‚’é¸æŠžã—ã¾ã™.\n" +#~ " ã‚ã‚‹ã„ã¯ãƒˆã‚°ãƒ«ãƒœã‚¿ãƒ³ã§ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®æ™‚é–“ã‚’\n" +#~ " 使ã†ã‹é¸æŠžã—ã¾ã™.\n" +#~ "\n" +#~ "\n" +#~ "音é‡\n" +#~ " フェーディング: \n" +#~ " 指定ã®æ™‚é–“ã‚’ã‹ã‘ã¦, 指定ã®éŸ³é‡ã¾ã§\n" +#~ " å¾ã€…ã«éŸ³é‡ã‚’上ã’ã¦ã„ãã¾ã™.\n" +#~ "\n" +#~ " 開始: \n" +#~ " ã“ã®éŸ³é‡ã‹ã‚‰ãƒ•ã‚§ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’開始ã—ã¾ã™.\n" +#~ "\n" +#~ " 最終: \n" +#~ " ã“ã®éŸ³é‡ã§ãƒ•ã‚§ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’終ãˆã¾ã™.\n" +#~ " ã‚‚ã—フェーディング時間㌠0 ãªã‚‰ã°,\n" +#~ " ã“ã®éŸ³é‡ã§æ¼”å¥ãŒé–‹å§‹ã•ã‚Œã¾ã™.\n" +#~ "\n" +#~ "\n" +#~ "オプション:\n" +#~ " 追加コマンド:\n" +#~ " アラームã®æ™‚é–“ã«æŒ‡å®šã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¾ã™.\n" +#~ "\n" +#~ " プレイリスト: \n" +#~ " 曲を演å¥ã™ã‚‹ãŸã‚ã®ãƒ—レイリストを読ã¿è¾¼ã¿ã¾ã™\n" +#~ " (.m3u æ‹¡å¼µå­ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“). \n" +#~ " プレイリストãŒæŒ‡å®šã•ã‚Œãªã‘ã‚Œã°, \n" +#~ " ç¾åœ¨ã®ãƒªã‚¹ãƒˆã®æ›²ãŒç”¨ã„られã¾ã™.\n" +#~ " mp3 ã‹ ogg ストリーム㮠URL も指定ã§ãã¾ã™ãŒ,\n" +#~ " URL ã‹ã‚‰ã®ãƒ—レイリスト読ã¿è¾¼ã¿ã¯\n" +#~ " ç¾åœ¨ã® xmms ã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“.\n" +#~ "\n" +#~ " リマインダ:\n" +#~ " アラームをåœæ­¢ã™ã‚‹éš›ã«ãƒªãƒžã‚¤ãƒ³ãƒ€ã‚’表示ã—ã¾ã™.\n" +#~ " ã“れを利用ã™ã‚‹ã«ã¯ãƒœãƒƒã‚¯ã‚¹å†…ã«ãƒªãƒžã‚¤ãƒ³ãƒ€ã‚’書ã\n" +#~ " トグルボタンを有効ã«ã—ã¾ã™.\n" + +#~ msgid "Your reminder for today is.." +#~ msgstr "今日ã®ãƒªãƒžã‚¤ãƒ³ãƒ€ã¯.." + +#~ msgid "Thankyou" +#~ msgstr "ã‚ã‚ŠãŒã¨ã†" + +#, fuzzy +#~ msgid "Available Headsets" +#~ msgstr "有効ãªãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰" + +#, fuzzy +#~ msgid "Current Headset" +#~ msgstr "ç¾åœ¨ã®å€¤" + +#, fuzzy +#~ msgid "_Connect" +#~ msgstr "接続" + +#, fuzzy +#~ msgid "Class" +#~ msgstr "é–‰ã˜ã‚‹" + +#, fuzzy +#~ msgid "Address:" +#~ msgstr "デãƒã‚¤ã‚¹ã‚¢ãƒ‰ãƒ¬ã‚¹" + +#, fuzzy +#~ msgid "Rescan" +#~ msgstr "CD ã‚’å†ã‚¹ã‚­ãƒ£ãƒ³" + +#~ msgid "Playback->Play" +#~ msgstr "æ¼”å¥->開始" + +#~ msgid "Playback->Stop" +#~ msgstr "æ¼”å¥->åœæ­¢" + +#~ msgid "Playback->Pause" +#~ msgstr "æ¼”å¥->一時åœæ­¢" + +#~ msgid "Playback->Prev" +#~ msgstr "æ¼”å¥->å‰ã®æ›²" + +#~ msgid "Playback->Next" +#~ msgstr "æ¼”å¥->次ã®æ›²" + +#~ msgid "Playback->Eject" +#~ msgstr "æ¼”å¥->イジェクト" + +#~ msgid "Playlist->Repeat" +#~ msgstr "æ¼”å¥->リピート" + +#~ msgid "Playlist->Shuffle" +#~ msgstr "æ¼”å¥->シャッフル" + +#~ msgid "Volume->Up_5" +#~ msgstr "音é‡->5上ã’ã‚‹" + +#~ msgid "Volume->Down_5" +#~ msgstr "音é‡->5下ã’ã‚‹" + +#~ msgid "Volume->Up_10" +#~ msgstr "音é‡->10上ã’ã‚‹" + +#~ msgid "Volume->Down_10" +#~ msgstr "音é‡->10下ã’ã‚‹" + +#~ msgid "Volume->Mute" +#~ msgstr "音é‡->ミュート" + +#~ msgid "Window->Main" +#~ msgstr "ウィンドウ->メイン" + +#~ msgid "Window->Playlist" +#~ msgstr "ウィンドウ->プレイリスト" + +#~ msgid "Window->Equalizer" +#~ msgstr "ウィンドウ->イコライザー" + +#~ msgid "Window->JumpToFile" +#~ msgstr "ウィンドウ->ファイルã¸ã‚¸ãƒ£ãƒ³ãƒ—" + +#~ msgid "" +#~ "event-device-plugin: unable to open device file %s , skipping this " +#~ "device; check that the file exists and that you have read permission for " +#~ "it\n" +#~ msgstr "" +#~ "event-device-plugin: デãƒã‚¤ã‚¹ãƒ•ã‚¡ã‚¤ãƒ« %s ã‚’é–‹ã‘ã¾ã›ã‚“, ã“ã®ãƒ‡ãƒã‚¤ã‚¹ã‚’ス" +#~ "キップã—ã¾ã™; ファイルãŒå­˜åœ¨ã™ã‚‹ã“ã¨ã¨èª­ã¿è¾¼ã¿ãƒ‘ーミッションãŒã‚ã‚‹ã‹ç¢ºèªã—" +#~ "ã¦ãã ã•ã„\n" + +#~ msgid "" +#~ "event-device-plugin: unable to create a io_channel for device file %s ," +#~ "skipping this device\n" +#~ msgstr "" +#~ "event-device-plugin: デãƒã‚¤ã‚¹ãƒ•ã‚¡ã‚¤ãƒ« %s ã® io_channel を作æˆã§ãã¾ã›ã‚“,ã“" +#~ "ã®ãƒ‡ãƒã‚¤ã‚¹ã‚’スキップã—ã¾ã™\n" + +#~ msgid "" +#~ "event-device-plugin: unable to open /proc/bus/input/devices , automatic " +#~ "detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: /proc/bus/input/devices ã‚’é–‹ã‘ã¾ã›ã‚“, イベントデãƒã‚¤" +#~ "スã®è‡ªå‹•æ¤œå‡ºã¯å‹•ä½œã—ã¾ã›ã‚“.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to open a io_channel for /proc/bus/input/" +#~ "devices , automatic detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: /proc/bus/input/ デãƒã‚¤ã‚¹ã® io_channel ã‚’é–‹ã‘ã¾ã›ã‚“, " +#~ "イベントデãƒã‚¤ã‚¹ã®è‡ªå‹•æ¤œå‡ºã¯å‹•ä½œã—ã¾ã›ã‚“.\n" + +#~ msgid "" +#~ "event-device-plugin: an error occurred while reading /proc/bus/input/" +#~ "devices , automatic detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: /proc/bus/input/ デãƒã‚¤ã‚¹ã®èª­ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—" +#~ "ã¾ã—ãŸ, イベントデãƒã‚¤ã‚¹ã®è‡ªå‹•æ¤œå‡ºã¯å‹•ä½œã—ã¾ã›ã‚“.\n" + +#~ msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" +#~ msgstr "" +#~ "event-device-plugin: デãƒã‚¤ã‚¹ %s ㌠/dev/input ã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“, スキップ" +#~ "ã—ã¾ã™.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to load config file %s , default settings " +#~ "will be used.\n" +#~ msgstr "" +#~ "event-device-plugin: コンフィグファイル %s ãŒèª­ã¿è¾¼ã‚ã¾ã›ã‚“, デフォルト設" +#~ "定ãŒç”¨ã„られã¾ã™.\n" + +#~ msgid "" +#~ "event-device-plugin: incomplete information in config file for device \"%s" +#~ "\" , skipping.\n" +#~ msgstr "" +#~ "event-device-plugin: デãƒã‚¤ã‚¹ \"%s\" ã®ã‚³ãƒ³ãƒ•ã‚£ã‚°ãƒ•ã‚¡ã‚¤ãƒ«ã®æƒ…å ±ãŒä¸å®Œå…¨ã§" +#~ "ã™, スキップã—ã¾ã™.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get is_active value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: 設定: デãƒã‚¤ã‚¹ \"%s\" ã® is_active 値ãŒå–å¾—ã§ãã¾ã›" +#~ "ã‚“, スキップã—ã¾ã™.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to access local directory %s , settings will " +#~ "not be saved.\n" +#~ msgstr "" +#~ "event-device-plugin: ローカルディレクトリ %s ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“, 設定ã¯" +#~ "ä¿å­˜ã•ã‚Œã¾ã›ã‚“.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get filename value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: 設定: デãƒã‚¤ã‚¹ \"%s\" ã®ãƒ•ã‚¡ã‚¤ãƒ«åãŒå–å¾—ã§ãã¾ã›ã‚“, " +#~ "スキップã—ã¾ã™.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get phys value for device " +#~ "\"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: 設定: デãƒã‚¤ã‚¹ \"%s\" ã® phys 値ãŒå–å¾—ã§ãã¾ã›ã‚“, ス" +#~ "キップã—ã¾ã™.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get is_custom value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: 設定: デãƒã‚¤ã‚¹ \"%s\" ã® is_custom 値ãŒå–å¾—ã§ãã¾ã›" +#~ "ã‚“, スキップã—ã¾ã™.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unexpected value for device \"%s\", " +#~ "skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: 設定: デãƒã‚¤ã‚¹ \"%s\" ã®äºˆæœŸã›ã¬å€¤ã§ã™, スキップã—ã¾" +#~ "ã™.\n" + +#, fuzzy +#~ msgid "Detected" +#~ msgstr "曲ã®çµ‚ã‚りを検出ã™ã‚‹" + +#, fuzzy +#~ msgid "Custom" +#~ msgstr "カスタム " + +#, fuzzy +#~ msgid "Not Detected" +#~ msgstr "é¸æŠžç¯„囲ã®ã‚½ãƒ¼ãƒˆ" + +#~ msgid "Information" +#~ msgstr "情報" + +#~ msgid "" +#~ "Cannot open bindings window for a not-detected device.\n" +#~ "Ensure that the device has been correctly plugged in." +#~ msgstr "" +#~ "デãƒã‚¤ã‚¹ãŒæ¤œå‡ºã•ã‚Œã¦ã„ãªã„ãŸã‚, ãƒã‚¤ãƒ³ãƒ‡ã‚£ãƒ³ã‚°ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ãŒé–‹ã‘ã¾ã›ã‚“.\n" +#~ "デãƒã‚¤ã‚¹ãŒæ­£ã—ã接続ã•ã‚Œã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„." + +#~ msgid "" +#~ "Unable to open selected device.\n" +#~ "Please check read permissions on device file." +#~ msgstr "" +#~ "é¸æŠžã•ã‚ŒãŸãƒ‡ãƒã‚¤ã‚¹ãŒé–‹ã‘ã¾ã›ã‚“.\n" +#~ "デãƒã‚¤ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã®èª­ã¿è¾¼ã¿ãƒ‘ーミッションを確èªã—ã¦ãã ã•ã„." + +#~ msgid "EvDev-Plug - Add custom device" +#~ msgstr "EvDev-Plug - カスタムデãƒã‚¤ã‚¹ã®è¿½åŠ " + +#~ msgid "" +#~ "EvDev-Plug tries to automatically detect and update information about\n" +#~ "event devices available on the system.\n" +#~ "However, if auto-detect doesn't work for your system, or you have event\n" +#~ "devices in a non-standard location (currently they're only searched in\n" +#~ "/dev/input/ ), you may want to add a custom device, explicitly " +#~ "specifying\n" +#~ "name and device file." +#~ msgstr "" +#~ "EvDev-Plug ã¯, システムã§æœ‰åŠ¹ãªã‚¤ãƒ™ãƒ³ãƒˆãƒ‡ãƒã‚¤ã‚¹ã®æƒ…報を自動的ã«æ¤œå‡ºã—ã¦æ›´" +#~ "æ–°ã—よã†ã¨ã—ã¾ã™.\n" +#~ "ã—ã‹ã—, システムã§è‡ªå‹•æ¤œå‡ºãŒå‹•ä½œã—ãªã„, ã‚ã‚‹ã„ã¯ã‚¤ãƒ™ãƒ³ãƒˆãƒ‡ãƒã‚¤ã‚¹ãŒéžæ¨™æº–ãª" +#~ "ä½ç½®ã«ã‚ã‚‹å ´åˆ(ç¾çŠ¶ /dev/input/ ã®ã¿ã‚’検索ã—ã¾ã™), \n" +#~ "åå‰ã¨ãƒ‡ãƒã‚¤ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’明確ã«æŒ‡å®šã—ã¦ã‚«ã‚¹ã‚¿ãƒ ãƒ‡ãƒã‚¤ã‚¹ã¨ã—ã¦è¿½åŠ ã—ã¦ãã ã•" +#~ "ã„." + +#~ msgid "Device name:" +#~ msgstr "デãƒã‚¤ã‚¹å:" + +#~ msgid "Device file:" +#~ msgstr "デãƒã‚¤ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«:" + +#, fuzzy +#~ msgid "(custom)" +#~ msgstr "カスタム " + +#~ msgid "" +#~ "Please specify both name and filename.\n" +#~ "Filename must be specified with absolute path." +#~ msgstr "" +#~ "åå‰ã¨ãƒ•ã‚¡ã‚¤ãƒ«åã®ä¸¡æ–¹ã‚’指定ã—ã¦ãã ã•ã„.\n" +#~ "ファイルåã¯çµ¶å¯¾ãƒ‘スã§æŒ‡å®šã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“." + +#~ msgid "" +#~ "Do you want to remove the existing configuration for selected device?\n" +#~ msgstr "é¸æŠžã—ãŸãƒ‡ãƒã‚¤ã‚¹ã‚’ç¾åœ¨ã®è¨­å®šã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹?\n" + +#~ msgid "Do you want to remove the selected custom device?\n" +#~ msgstr "é¸æŠžã—ãŸã‚«ã‚¹ã‚¿ãƒ ãƒ‡ãƒã‚¤ã‚¹ã‚’削除ã—ã¾ã™ã‹?\n" + +#~ msgid "EvDev-Plug - Configuration" +#~ msgstr "EvDev-Plug - 設定" + +#~ msgid "Active" +#~ msgstr "アクティブ" + +#~ msgid "Status" +#~ msgstr "状態" + +#~ msgid "Device Name" +#~ msgstr "デãƒã‚¤ã‚¹å" + +#~ msgid "Device File" +#~ msgstr "デãƒã‚¤ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«" + +#~ msgid "Device Address" +#~ msgstr "デãƒã‚¤ã‚¹ã‚¢ãƒ‰ãƒ¬ã‚¹" + +#~ msgid "_Bindings" +#~ msgstr "ãƒã‚¤ãƒ³ãƒ‡ã‚£ãƒ³ã‚°(_B)" + +#~ msgid "" +#~ "Press a key of your device to bind it;\n" +#~ "if no key is pressed in five seconds, this window\n" +#~ "will close without binding changes." +#~ msgstr "" +#~ "ãƒã‚¤ãƒ³ãƒ‰ã™ã‚‹ãƒ‡ãƒã‚¤ã‚¹ã®ã‚­ãƒ¼ã‚’押ã—ã¦ãã ã•ã„.\n" +#~ "5秒以内ã«ã‚­ãƒ¼ãŒæŠ¼ã•ã‚Œãªã‘ã‚Œã°, \n" +#~ "ãƒã‚¤ãƒ³ãƒ‡ã‚£ãƒ³ã‚°ã‚’変更ã›ãšã«ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‰ã˜ã¾ã™. " + +#~ msgid "" +#~ "This input event has been already assigned.\n" +#~ "\n" +#~ "It's not possible to assign multiple actions to the same input event " +#~ "(although it's possible to assign the same action to multiple events)." +#~ msgstr "" +#~ "ã“ã®å…¥åŠ›ã‚¤ãƒ™ãƒ³ãƒˆã¯æ—¢ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™.\n" +#~ "\n" +#~ "åŒã˜å…¥åŠ›ã‚¤ãƒ™ãƒ³ãƒˆã«è¤‡æ•°ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’割り当ã¦ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“. (ã—ã‹ã—, " +#~ "複数ã®ã‚¤ãƒ™ãƒ³ãƒˆã«åŒã˜ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’割り当ã¦ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã™)" + +#~ msgid "EvDev-Plug - Bindings Configuration" +#~ msgstr "EvDev-Plug - ãƒã‚¤ãƒ³ãƒ‡ã‚£ãƒ³ã‚°è¨­å®š" + +#~ msgid "Name: " +#~ msgstr "åå‰: " + +#~ msgid "Filename: " +#~ msgstr "ファイルå: " + +#~ msgid "Phys.Address: " +#~ msgstr "Phys.アドレス: " + +#~ msgid "EvDev-Plug - about" +#~ msgstr "EvDev-Plug ã«ã¤ã„ã¦" + +#~ msgid "" +#~ "\n" +#~ "player remote control via event devices\n" +#~ "http://www.develia.org/projects.php?p=audacious#evdevplug\n" +#~ "\n" +#~ "written by Giacomo Lozito\n" +#~ msgstr "" +#~ "\n" +#~ "イベントデãƒã‚¤ã‚¹ã«ã‚ˆã£ã¦ãƒ—レイヤをé éš”æ“作\n" +#~ "http://www.develia.org/projects.php?p=audacious#evdevplug\n" +#~ "\n" +#~ "Giacomo Lozito ã«ã‚ˆã£ã¦æ›¸ã‹ã‚ŒãŸ.\n" +#~ "\n" + +#~ msgid "This LADSPA plugin has no user controls" +#~ msgstr "LADSPA プラグインã«ãƒ¦ãƒ¼ã‚¶ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã¯ã‚ã‚Šã¾ã›ã‚“" + +#~ msgid "Name" +#~ msgstr "åå‰" + +#~ msgid "UID" +#~ msgstr "UID" + +#~ msgid "Installed plugins" +#~ msgstr "インストール済プラグイン" + +#~ msgid "Running plugins" +#~ msgstr "動作中ã®ãƒ—ラグイン" + +#~ msgid "Add" +#~ msgstr "追加" + +#~ msgid "Remove" +#~ msgstr "削除" + +#~ msgid "LADSPA Plugin Catalog" +#~ msgstr "LADSPA プラグイン カタログ" + +#~ msgid "About LIRC Audacious Plugin" +#~ msgstr "LIRC Audacious プラグインã«ã¤ã„ã¦" + +#~ msgid "LIRC Plugin " +#~ msgstr "LIRC プラグイン" + +#~ msgid "" +#~ "\n" +#~ "A simple plugin that lets you control\n" +#~ "Audacious using the LIRC remote control daemon\n" +#~ "\n" +#~ "Adapted for Audacious usage by Tony Vroon \n" +#~ "from the XMMS LIRC plugin by:\n" +#~ "Carl van Schaik \n" +#~ "Christoph Bartelmus \n" +#~ "Andrew O. Shadoura \n" +#~ "You can get LIRC information at:\n" +#~ "http://lirc.org" +#~ msgstr "" +#~ "\n" +#~ "LIRC リモートコントロールデーモンを用ã„ã¦\n" +#~ "Audacious をコントロールã™ã‚‹ã‚·ãƒ³ãƒ—ルãªãƒ—ラグイン\n" +#~ "\n" +#~ "Tony Vroon ã«ã‚ˆã‚‹ Audacious ã¸ã®é©ç”¨\n" +#~ "å…ƒã¨ãªã£ãŸ XMMS LIRC プラグインã¯\n" +#~ "Carl van Schaik \n" +#~ "Christoph Bartelmus \n" +#~ "Andrew O. Shadoura ã«ã‚ˆã‚‹.\n" +#~ "LIRC ã®æƒ…å ±ã¯ä»¥ä¸‹ã§å¾—られる.\n" +#~ "http://lirc.org" + +#~ msgid "LIRC plugin settings" +#~ msgstr "LIRC プラグイン設定" + +#~ msgid "Reconnect to LIRC server" +#~ msgstr "LIRC サーãƒã«å†æŽ¥ç¶š" + +#~ msgid "Timeout before reconnecting (seconds): " +#~ msgstr "å†æŽ¥ç¶šã¾ã§ã®ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆ(秒): " + +#~ msgid "Reconnect" +#~ msgstr "å†æŽ¥ç¶š" + +#~ msgid "Connection" +#~ msgstr "接続" + +#~ msgid "%s: could not init LIRC support\n" +#~ msgstr "%s: LIRC サãƒãƒ¼ãƒˆã‚’åˆæœŸåŒ–ã§ãã¾ã›ã‚“ã§ã—ãŸ\n" + +#~ msgid "" +#~ "%s: could not read LIRC config file\n" +#~ "%s: please read the documentation of LIRC\n" +#~ "%s: how to create a proper config file\n" +#~ msgstr "" +#~ "%s: LIRC 設定ファイルを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ\n" +#~ "%s: æ­£ã—ã„設定ファイルã®ä½œã‚Šæ–¹ã‚’知るã«ã¯\n" +#~ "%s: LIRC ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’読んã§ãã ã•ã„\n" + +#~ msgid "%s: trying to reconnect...\n" +#~ msgstr "%s: å†æŽ¥ç¶šã‚’試行中...\n" + +#~ msgid "%s: unknown command \"%s\"\n" +#~ msgstr "%s: ä¸æ˜Žãªã‚³ãƒžãƒ³ãƒ‰ \"%s\"\n" + +#~ msgid "%s: disconnected from LIRC\n" +#~ msgstr "%s: LIRC ã‹ã‚‰åˆ‡æ–­ã•ã‚Œã¾ã—ãŸ\n" + +#~ msgid "%s: will try reconnect every %d seconds...\n" +#~ msgstr "%s: %d 秒ã”ã¨ã«å†æŽ¥ç¶šã‚’試ã¿ã¾ã™...\n" + +#~ msgid "ModPlug Configuration" +#~ msgstr "ModPlug 設定" + +#~ msgid "16 bit" +#~ msgstr "16ビット" + +#~ msgid "8 bit" +#~ msgstr " 8ビット" + +#~ msgid "Mono (downmix)" +#~ msgstr "モノラル (ダウンミックス)" + +#~ msgid "Nearest (fastest)" +#~ msgstr "最短 (最速)" + +#~ msgid "Linear (fast)" +#~ msgstr "ç·šå½¢ (高速)" + +#~ msgid "Spline (good quality)" +#~ msgstr "スプライン (良å“質)" + +#~ msgid "8-tap Fir (extremely high quality)" +#~ msgstr "8 タップ Fir (éžå¸¸ã«é«˜å“質)" + +#, fuzzy +#~ msgid "96 kHz" +#~ msgstr "48 kHz" + +#~ msgid "48 kHz" +#~ msgstr "48 kHz" + +#~ msgid "44 kHz" +#~ msgstr "44 kHz" + +#~ msgid "22 kHz" +#~ msgstr "22 kHz" + +#~ msgid "Sampling Rate" +#~ msgstr "サンプリングレート" + +#~ msgid "Enable" +#~ msgstr "有効" + +#~ msgid "Depth" +#~ msgstr "æ·±ã•" + +#~ msgid "Delay" +#~ msgstr "é…延" + +#~ msgid "Reverb" +#~ msgstr "リãƒãƒ¼ãƒ–" + +#~ msgid "Amount" +#~ msgstr "é‡" + +#~ msgid "Range" +#~ msgstr "範囲" + +#~ msgid "Bass Boost" +#~ msgstr "ベース増加" + +#~ msgid "" +#~ "Note: Setting the preamp\n" +#~ "too high may cause clipping\n" +#~ "(annoying clicks and pops)!" +#~ msgstr "" +#~ "注æ„: プリアンプã®è¨­å®šãŒé«˜ã™ãŽã‚‹ã¨\n" +#~ "クリッピング(ã†ã‚‹ã•ã„ã‚«ãƒã‚«ãƒéŸ³ã‚„\n" +#~ "ブツブツ音)ã®åŽŸå› ã«ãªã‚Šã¾ã™!" + +#~ msgid "Effects" +#~ msgstr "エフェクト" + +#~ msgid "Use Filename as Song Title" +#~ msgstr "ファイルåを曲åã¨ã—ã¦ä½¿ã†" + +#~ msgid "Fast Playlist Info" +#~ msgstr "高速ãªãƒ—レイリスト情報" + +#~ msgid "Noise Reduction" +#~ msgstr "ノイズリダクション" + +#~ msgid "Play Amiga MOD" +#~ msgstr "Amiga MOD ã‚’æ¼”å¥ã™ã‚‹" + +#~ msgid "Don't loop" +#~ msgstr "ループã—ãªã„" + +#~ msgid "Loop" +#~ msgstr "ループ回数" + +#~ msgid "time(s)" +#~ msgstr "回" + +#~ msgid "Loop forever" +#~ msgstr "æ°¸é ã«ãƒ«ãƒ¼ãƒ—" + +#~ msgid "Looping" +#~ msgstr "ループ" + +#~ msgid "MOD Info" +#~ msgstr "MOD 情報" + +#~ msgid "" +#~ "Filename:\n" +#~ "Title:\n" +#~ "Type:\n" +#~ "Length:\n" +#~ "Speed:\n" +#~ "Tempo:\n" +#~ "Samples:\n" +#~ "Instruments:\n" +#~ "Patterns:\n" +#~ "Channels:" +#~ msgstr "" +#~ "ファイルå:\n" +#~ "曲å:\n" +#~ "タイプ:\n" +#~ "é•·ã•:\n" +#~ "速ã•:\n" +#~ "テンãƒ:\n" +#~ "サンプリングレート:\n" +#~ "楽器:\n" +#~ "パターン:\n" +#~ "ãƒãƒ£ãƒ³ãƒãƒ«:" + +#~ msgid "" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---" +#~ msgstr "" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---" + +#~ msgid "Samples" +#~ msgstr "サンプリングレート" + +#~ msgid "Instruments" +#~ msgstr "楽器" + +#~ msgid "Message" +#~ msgstr "メッセージ" + +#~ msgid "Modplug Input Plugin for Audacious ver" +#~ msgstr "Modplug 入力プラグイン for Audacious ver" + +#, fuzzy +#~ msgid "" +#~ "\n" +#~ "Modplug sound engine written by Olivier Lapicque.\n" +#~ "XMMS interface for Modplug by Kenton Varda.\n" +#~ "(c)2000 Olivier Lapicque and Kenton Varda.\n" +#~ "Updates and maintenance by Konstanty Bialkowski.\n" +#~ "Ported to BMP by Theofilos Intzoglou." +#~ msgstr "" +#~ "\n" +#~ "Modplug サウンドエンジン㯠Olivier Lapicque ã«ã‚ˆã£ã¦æ›¸ã‹ã‚ŒãŸ.\n" +#~ "Modplug XMMS インタフェイス㯠Kenton Vard ã«ã‚ˆã‚‹.\n" +#~ "(c)2000 Olivier Lapicque and Kenton Varda.\n" +#~ "æ›´æ–°ã¨ãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹ã¯ Konstanty Bialkowski ã«ã‚ˆã‚‹.\n" +#~ "BMP ã¸ã®ãƒãƒ¼ãƒˆã¯ Theofilos Intzoglou ã«ã‚ˆã‚‹." + +#~ msgid "About Modplug" +#~ msgstr "Modplug ã«ã¤ã„ã¦" + +#~ msgid "Show separators in playlist" +#~ msgstr "プレイリストã®åŒºåˆ‡ã‚Šç·šã‚’表示ã™ã‚‹" + +#~ msgid "Show window manager decoration" +#~ msgstr "ウィンドウマãƒãƒ¼ã‚¸ãƒ£è£…飾を表示ã™ã‚‹" + +#~ msgid "This enables the window manager to show decorations for windows." +#~ msgstr "ウィンドウマãƒãƒ¼ã‚¸ãƒ£ã«ã‚ˆã‚‹ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦è£…飾を有効ã«ã—ã¾ã™." + +#~ msgid "" +#~ "If selected, the file information text in the main window will scroll " +#~ "back and forth. If not selected, the text will only scroll in one " +#~ "direction." +#~ msgstr "" +#~ "ã“れを使ã†ã¨ï¼Œãƒ¡ã‚¤ãƒ³ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®ãƒ•ã‚¡ã‚¤ãƒ«æƒ…報テキストãŒå‰å¾Œã«ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ã—ã¾" +#~ "ã™ï¼Žãã†ã§ãªã‘ã‚Œã°ï¼Œãƒ†ã‚­ã‚¹ãƒˆã¯ä¸€æ–¹å‘ã®ã¿ã«ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ã—ã¾ã™ï¼Ž" + +#~ msgid "Disable inline gtk theme" +#~ msgstr "インライン GTK テーマを無効ã«ã™ã‚‹" + +#, fuzzy +#~ msgid "Random skin on play" +#~ msgstr "プレイリストã®é †åºã‚’ランダムã«ã—ã¾ã™." + +#~ msgid "Allow loading incomplete skins" +#~ msgstr "ä¸å®Œå…¨ãªã‚¹ã‚­ãƒ³ã®èª­ã¿è¾¼ã¿ã‚’許å¯ã™ã‚‹" + +#~ msgid "" +#~ "If selected, audacious won't refuse loading broken skins. Use only if " +#~ "your favourite skin doesn't work" +#~ msgstr "" +#~ "ã“れを使ã†ã¨ï¼Œaudacious ã¯å£Šã‚ŒãŸã‚¹ã‚­ãƒ³ã®èª­ã¿è¾¼ã¿ã‚’拒絶ã—ã¾ã›ã‚“.ãŠæ°—ã«å…¥ã‚Š" +#~ "ã®ã‚¹ã‚­ãƒ³ãŒå‹•ã‹ãªã„ã¨ãã ã‘使用ã—ã¦ãã ã•ã„." + +#~ msgid "Color Adjustment" +#~ msgstr "色補正" + +#~ msgid "" +#~ "Audacious allows you to alter the color balance of the skinned UI. The " +#~ "sliders below will allow you to do this." +#~ msgstr "以下ã®ã‚¹ãƒ©ã‚¤ãƒ€ã‚’用ã„ã¦ã‚¹ã‚­ãƒ³ UI ã®è‰²åˆã„ã®å¤‰æ›´ãŒã§ãã¾ã™." + +#~ msgid "Blue" +#~ msgstr "é’" + +#~ msgid "Green" +#~ msgstr "ç·‘" + +#~ msgid "Red" +#~ msgstr "赤" + +#, fuzzy +#~ msgid "Color adjustment ..." +#~ msgstr "色補正" + +#~ msgid "Disable 'GUI Scaling'" +#~ msgstr "「GUI スケーリングã€ç„¡åŠ¹" + +#~ msgid "Enable 'GUI Scaling'" +#~ msgstr "「GUI スケーリングã€æœ‰åŠ¹" + +#~ msgid "DoubleSize" +#~ msgstr "ダブルサイズ" + +#~ msgid "Easy Move" +#~ msgstr "ç°¡å˜ç§»å‹•" + +#~ msgid "Spectrum Analyzer" +#~ msgstr "スペクトラムアナライザ" + +#, fuzzy +#~ msgid "Search:" +#~ msgstr "å¹´:" + +#, fuzzy +#~ msgid "Stream name" +#~ msgstr "楽器å" + +#, fuzzy +#~ msgid "Now playing" +#~ msgstr "æ–°ã—ã„プレイリスト" + +#, fuzzy +#~ msgid "Remove Bookmark" +#~ msgstr "ã‚¿ã‚°ã®å‰Šé™¤" + +#, fuzzy +#~ msgid "About Stream Browser" +#~ msgstr "OSS ドライãƒã«ã¤ã„ã¦" + +#, fuzzy +#~ msgid "" +#~ "Copyright (c) 2008, by Calin Crisan and The Audacious " +#~ "Team.\n" +#~ "\n" +#~ "This is a simple stream browser that includes the most popular streaming " +#~ "directories.\n" +#~ "Many thanks to the Streamtuner developers ,\n" +#~ "\tand of course to the whole Audacious community.\n" +#~ "\n" +#~ "Also thank you Tony Vroon for mentoring & guiding me, again.\n" +#~ "\n" +#~ "This was a Google Summer of Code 2008 project." +#~ msgstr "" +#~ "Copyright (c) 2007, by Calin Crisan and The Audacious " +#~ "Team.\n" +#~ "\n" +#~ "libcdio 開発者 ã¨\n" +#~ "\tlibcddb 開発者 ã«å¤šå¤§ãªã‚‹æ„Ÿè¬.\n" +#~ "\n" +#~ "Tony Vroon ã«ã‚ˆã‚‹åŠ©è¨€ã¨æŒ‡é‡ã«æ„Ÿè¬.\n" +#~ "\n" +#~ "ã“れ㯠Google Summer of Code 2007 ã®ãƒ—ロジェクトã§ã—ãŸ." + +#~ msgid "Can't jump to time when no track is being played.\n" +#~ msgstr "å†ç”Ÿã•ã‚Œã‚‹ãƒˆãƒ©ãƒƒã‚¯ãŒãªã„時間ã¸ã¯ç§»å‹•ã§ãã¾ã›ã‚“.\n" + +#~ msgid "minutes:seconds" +#~ msgstr "分:秒" + +#~ msgid "Track length:" +#~ msgstr "トラックã®åˆè¨ˆæ™‚é–“:" + +#~ msgid "Error writing playlist \"%s\": %s" +#~ msgstr "プレイリスト \"%s\" を書ã込む際ã«ã‚¨ãƒ©ãƒ¼: %s" + +#~ msgid "%s already exist. Continue?" +#~ msgstr "%s ã¯æ—¢ã«å­˜åœ¨ã—ã¦ã„ã¾ã™. 続行ã—ã¾ã™ã‹ï¼Ÿ" + +#, fuzzy +#~ msgid "Show main menu" +#~ msgstr "メインウィンドウを表示ã™ã‚‹" + +#, fuzzy +#~ msgid "Show/hide statusbar" +#~ msgstr "プレイリストã®ä¿å­˜" + +#, fuzzy +#~ msgid "Import Playlist ..." +#~ msgstr "プレイリストã®èª­ã¿è¾¼ã¿" + +#, fuzzy +#~ msgid "Export Playlist ..." +#~ msgstr "プレイリストã®èª­ã¿è¾¼ã¿" + +#, fuzzy +#~ msgid "Refresh" +#~ msgstr "リフレッシュレート" + +#, fuzzy +#~ msgid "Refresh Selected" +#~ msgstr "é¸æŠžã—ãŸã‚¨ãƒ³ãƒˆãƒªã®å‰Šé™¤" + +#, fuzzy +#~ msgid "Refreshes metadata associated with selected entries." +#~ msgstr "プレイリストã®ã‚¨ãƒ³ãƒˆãƒªã«é–¢é€£ä»˜ã‘られãŸãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’æ›´æ–°ã—ã¾ã™." + +#, fuzzy +#~ msgid "Edit the playlist title." +#~ msgstr "プレイリストã®é †åºã‚’ランダムã«ã—ã¾ã™." + +#, fuzzy +#~ msgid "By Formatted Title" +#~ msgstr "タイトル" + +#, fuzzy +#~ msgid "Components" +#~ msgstr "コメント:" + +#~ msgid "Upload selected track(s)" +#~ msgstr "é¸æŠžã•ã‚ŒãŸãƒˆãƒ©ãƒƒã‚¯ã‚’アップロード" + +#~ msgid "MTP device handler" +#~ msgstr "MTP デãƒã‚¤ã‚¹ãƒãƒ³ãƒ‰ãƒ©" + +#~ msgid "Show main player window" +#~ msgstr "メインウィンドウを表示ã™ã‚‹" + +#~ msgid "Ignore" +#~ msgstr "無視" + +#~ msgid "" +#~ "Audacious has been started with all of its windows hidden.\n" +#~ "You may want to show the player window again to control Audacious; " +#~ "otherwise, you'll have to control it remotely via audtool or enabled " +#~ "plugins (such as the statusicon plugin)." +#~ msgstr "" +#~ "Audacious ã¯ã™ã¹ã¦ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ãŒéš ã•ã‚ŒãŸçŠ¶æ…‹ã§é–‹å§‹ã•ã‚Œã¾ã—ãŸï¼Ž\n" +#~ "å†åº¦ãƒ—レイヤウィンドウを表示ã™ã‚‹ã‹ï¼Œãã®ã¾ã¾ Audacious ã‚’æ“作ã™ã‚‹ãŸã‚ã«" +#~ "ã¯ï¼Œaudtool を用ã„ã‚‹ã‹ statusicon ã®ã‚ˆã†ãªãƒ—ラグインを有効ã«ã™ã‚‹ã“ã¨ã§é éš”" +#~ "æ“作ã—ã¦ãã ã•ã„." + +#~ msgid "Always ignore, show/hide is controlled remotely" +#~ msgstr "常ã«ç„¡è¦–ã—,表示ã™ã‚‹/éš ã™ ã¯é éš”æ“作ã™ã‚‹" + +#~ msgid "Audacious - broken GTK engine usage warning" +#~ msgstr "Audacious - 壊れ㟠GTK エンジンã®ä½¿ç”¨è­¦å‘Š" + +#~ msgid "" +#~ "Broken GTK engine in use\n" +#~ "\n" +#~ "Audacious has detected that you are using a broken GTK engine.\n" +#~ "\n" +#~ "The theme engine you are using, %s, is incompatible with some of " +#~ "the features used by modern skins. The incompatible features have been " +#~ "disabled for this session.\n" +#~ "\n" +#~ "To use these features, please consider using a different GTK theme engine." +#~ msgstr "" +#~ "壊れ㟠GTK エンジンãŒä½¿ã‚ã‚Œã¦ã„ã¾ã™\n" +#~ "\n" +#~ "Audacious 㯠GTK エンジンãŒä½¿ã‚ã‚Œã¦ã„ã‚‹ã“ã¨ã‚’検出ã—ã¾ã—ãŸ.\n" +#~ "\n" +#~ "テーマエンジン %s ã¯æœ€è¿‘ã®ã‚¹ã‚­ãƒ³ã§ç”¨ã„られã¦ã„る特徴ã¨éžäº’æ›ã§ã™.éž" +#~ "互æ›ãªç‰¹å¾´ã¯ã“ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã§ã¯ç„¡åŠ¹ã«ã•ã‚Œã¾ã—ãŸ.\n" +#~ "\n" +#~ "ã“れらã®ç‰¹å¾´ã‚’用ã„ã‚‹ã«ã¯, ä»–ã® GTK テーマエンジンを使ã†ã“ã¨ã‚’考慮ã—ã¦ãã " +#~ "ã•ã„." + +#~ msgid "Do not display this warning again" +#~ msgstr "次回ã‹ã‚‰ã“ã®è­¦å‘Šã‚’表示ã—ãªã„" -#: src/statusicon/statusicon.c:355 -msgid "About Status Icon Plugin" -msgstr "ステータスアイコン プラグインã«ã¤ã„ã¦" +#~ msgid "Save as Static Playlist" +#~ msgstr "スタティックプレイリストã¨ã—ã¦ä¿å­˜" -#: src/statusicon/statusicon.c:356 -#, fuzzy -msgid "" -"Status Icon Plugin\n" -"\n" -"Copyright 2005-2007 Giacomo Lozito \n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"This plugin provides a status icon, placed in\n" -"the system tray area of the window manager.\n" -msgstr "" -"\n" -"Giacomo Lozito < james@develia.org > ã«ã‚ˆã£ã¦æ›¸ã‹ã‚ŒãŸ\n" -"\n" -"ã“ã®ãƒ—ラグインã¯, ウィンドウマãƒãƒ¼ã‚¸ãƒ£ã®\n" -"システムトレイエリアã«ç½®ã‹ã‚Œã‚‹ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚¢ã‚¤ã‚³ãƒ³ã‚’æä¾›ã—ã¾ã™.\n" +#~ msgid "Use Relative Path" +#~ msgstr "相対パスを使ã†" -#: src/statusicon/statusicon.c:418 -msgid "Status Icon Plugin - Preferences" -msgstr "ステータスアイコンプラグイン - 設定" +#~ msgid "Load Playlist" +#~ msgstr "プレイリストã®èª­ã¿è¾¼ã¿" -#: src/statusicon/statusicon.c:428 -msgid "Right-Click Menu" -msgstr "å³ã‚¯ãƒªãƒƒã‚¯ãƒ¡ãƒ‹ãƒ¥ãƒ¼" +#~ msgid "Save Playlist" +#~ msgstr "プレイリストã®ä¿å­˜" -#: src/statusicon/statusicon.c:433 -msgid "Small playback menu #1" -msgstr "å°åž‹å†ç”Ÿãƒ¡ãƒ‹ãƒ¥ãƒ¼ #1" +#~ msgid "" +#~ "* Select ALSA output ports *\n" +#~ "MIDI events will be sent to the ports selected here. In example, if your " +#~ "audio card provides a hardware synth and you want to play MIDI with it, " +#~ "you'll probably want to select the wavetable synthesizer ports." +#~ msgstr "" +#~ "* ALSA 出力ãƒãƒ¼ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„ *\n" +#~ "MIDI イベントã¯ã“ã“ã§é¸æŠžã•ã‚ŒãŸãƒãƒ¼ãƒˆã«é€ã‚‰ã‚Œã¾ã™. 例ãˆã°, ã‚ãªãŸã®ã‚ªãƒ¼" +#~ "ディオカードãŒãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã‚·ãƒ³ã‚»ã‚’æä¾›ã—, ãれ㧠MIDI ã‚’æ¼”å¥ã—ãŸã„ãªã‚‰ã°, " +#~ "ウェーブテーブルシンセサイザーãƒãƒ¼ãƒˆã‚’é¸ã¶ã¨ã‚ˆã„ã§ã—ょã†." -#: src/statusicon/statusicon.c:436 -msgid "Small playback menu #2" -msgstr "å°åž‹å†ç”Ÿãƒ¡ãƒ‹ãƒ¥ãƒ¼ #2" +#~ msgid "" +#~ "* Select ALSA mixer card *\n" +#~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +#~ "ouput plugins from the player. During playback, the player volumeslider " +#~ "will manipulate the mixer control you select here. If you're using " +#~ "wavetable synthesizer ports, you'll probably want to select the Synth " +#~ "control here." +#~ msgstr "" +#~ "* ALSA ミキサカードをé¸æŠžã—ã¦ãã ã•ã„ *\n" +#~ "ALSA ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã¯ ALSA を直接通ã—ã¦å‡ºåŠ›ã—ã¾ã™ã®ã§, プレイヤã®ã‚¨ãƒ•ã‚§ã‚¯ãƒˆ" +#~ "や出力プラグインã¯ä½¿ç”¨ã—ã¾ã›ã‚“. å†ç”Ÿä¸­, プレイヤã®ãƒœãƒªãƒ¥ãƒ¼ãƒ ã‚¹ãƒ©ã‚¤ãƒ€ã¯ã“ã“" +#~ "ã§é¸æŠžã—ãŸãƒŸã‚­ã‚µã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã‚’æ“作ã—ã¾ã™. ウェーブテーブルシンセサイザー" +#~ "ãƒãƒ¼ãƒˆã‚’使ã£ã¦ã„ã‚‹ãªã‚‰ã°, ã“ã“ã§ã‚·ãƒ³ã‚»ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã‚’é¸ã¶ã¨ã‚ˆã„ã§ã—ょã†." -#: src/statusicon/statusicon.c:452 -msgid "Mouse Scroll Action" -msgstr "マウススクロールã®å‹•ä½œ" +#~ msgid "" +#~ "* Select ALSA mixer control *\n" +#~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +#~ "ouput plugins from the player. During playback, the player volume slider " +#~ "will manipulate the mixer control you select here. If you're using " +#~ "wavetable synthesizer ports, you'll probably want to select the Synth " +#~ "control here." +#~ msgstr "" +#~ "* ALSA ミキサコントロールをé¸æŠžã—ã¦ãã ã•ã„ *\n" +#~ "ALSA ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã¯ ALSA を直接通ã—ã¦å‡ºåŠ›ã—ã¾ã™ã®ã§, プレイヤã®ã‚¨ãƒ•ã‚§ã‚¯ãƒˆ" +#~ "や出力プラグインã¯ä½¿ç”¨ã—ã¾ã›ã‚“. å†ç”Ÿä¸­, プレイヤã®ãƒœãƒªãƒ¥ãƒ¼ãƒ ã‚¹ãƒ©ã‚¤ãƒ€ã¯ã“ã“" +#~ "ã§é¸æŠžã—ãŸãƒŸã‚­ã‚µã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã‚’æ“作ã—ã¾ã™. ウェーブテーブルシンセサイザー" +#~ "ãƒãƒ¼ãƒˆã‚’使ã£ã¦ã„ã‚‹ãªã‚‰ã°, ã“ã“ã§ã‚·ãƒ³ã‚»ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã‚’é¸ã¶ã¨ã‚ˆã„ã§ã—ょã†." -#: src/statusicon/statusicon.c:456 -msgid "Change volume" -msgstr "音é‡ã®å¤‰æ›´" +#~ msgid "" +#~ "* Backend selection *\n" +#~ "AMIDI-Plug works with backends, in a modular fashion; here you should " +#~ "select your backend; that is, the way MIDI events are going to be handled " +#~ "and played.\n" +#~ "If you have a hardware synthesizer on your audio card, and ALSA supports " +#~ "it, you'll want to use the ALSA backend. It can also be used with " +#~ "anything that provides an interface to the ALSA sequencer, including " +#~ "software synths or external devices.\n" +#~ "If you want to rely on a software synthesizer and/or want to pipe audio " +#~ "into effect and output plugins of the player you'll want to use the good " +#~ "FluidSynth backend.\n" +#~ "Press the info button to read specific information about each backend." +#~ msgstr "" +#~ "* ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã‚’é¸æŠžã—ã¦ãã ã•ã„ *\n" +#~ "AMIDI-Plug ã¯ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«å½¢å¼ã®ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã¨å‹•ä½œã—ã¾ã™. ã“ã“ã§ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰" +#~ "ã‚’é¸æŠžã—ã¦ãã ã•ã„. ãã‚Œã«ã‚ˆã£ã¦, MIDI イベントã¯å–り扱ã‚ã‚Œ, æ¼”å¥ã•ã‚Œã¾" +#~ "ã™.\n" +#~ "ã‚ãªãŸã®ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚«ãƒ¼ãƒ‰ã«ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã‚·ãƒ³ã‚»ã‚µã‚¤ã‚¶ãƒ¼ãŒã¤ã„ã¦ã„ã¦, ALSA ãŒ" +#~ "ãれをサãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹ãªã‚‰ã°, ALSA ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã‚’使ã†ã¨ã‚ˆã„ã§ã—ょã†.ã“ã‚Œã¯" +#~ "ソフトウェアシンセや外部デãƒã‚¤ã‚¹ã‚’å«ã‚€, ALSA シーケンサã¸ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤" +#~ "スをæä¾›ã™ã‚‹ã‚らゆるもã®ã‚’用ã„ã‚‹ã“ã¨ãŒã§ãã¾ã™.\n" +#~ "ソフトウェアシンセサイザーを当ã¦ã«ã—ãŸã„, ãŠã‚ˆã³ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚’プレイヤã®ã‚¨" +#~ "フェクトや出力プラグインã«é€šã—ãŸã„ãªã‚‰ã°, 有用㪠FluidSynth ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã‚’" +#~ "用ã„ã‚‹ã¨ã‚ˆã„ã§ã—ょã†.\n" +#~ "ãã‚Œãžã‚Œã®ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã®ç‰¹å®šã®æƒ…報を読むã«ã¯æƒ…報ボタンを押ã—ã¦ãã ã•ã„." -#: src/statusicon/statusicon.c:458 -msgid "Change playing song" -msgstr "æ¼”å¥æ›²ã®å¤‰æ›´" +#, fuzzy +#~ msgid "" +#~ "* Transpose function *\n" +#~ "This option allows you to play the midi file transposed in a different " +#~ "key, by shifting of the desired number of semitones all its notes " +#~ "(excepting those on midi channel 10, reserved for percussions). " +#~ "Especially useful if you wish to sing or play along with another " +#~ "instrument." +#~ msgstr "" +#~ "* トランスãƒãƒ¼ã‚ºæ©Ÿèƒ½ *\n" +#~ "ã“ã®ã‚ªãƒ—ション㯠MIDI ファイルを, å…¨ã¦ã®éŸ³(パーカッションã®ãŸã‚ã«äºˆç´„ã•ã‚Œ" +#~ "㟠MIDI ãƒãƒ£ãƒ³ãƒãƒ« 10 を除ã)ã®åŠéŸ³ã‚’è¦æ±‚ã•ã‚ŒãŸæ•°ã§å¤‰åŒ–ã•ã›ãŸç•°ãªã‚‹ã‚­ãƒ¼" +#~ "ã§, トランスãƒãƒ¼ã‚ºã—ã¦æ¼”å¥ã§ãるよã†ã«ã—ã¾ã™.ä»–ã®æ¥½å™¨ã‚’加ãˆã¦æ¼”å¥ã•ã›ãŸã„" +#~ "ãªã‚‰ã°éžå¸¸ã«æœ‰ç”¨ã§ã™." -#: src/stereo_plugin/stereo.c:40 -msgid "" -"Extra Stereo Plugin\n" -"\n" -"By Johan Levin 1999." -msgstr "" -"エクストラステレオプラグイン\n" -"\n" -"1999. Johan Levin ã«ã‚ˆã‚‹" +#~ msgid "" +#~ "* Drumshift function *\n" +#~ "This option allows you to shift notes on midi channel 10 (the standard " +#~ "percussions channel) of the desired number of semitones. This results in " +#~ "different drumset and percussions being used during midi playback, so if " +#~ "you wish to enhance (or reduce, or alter) percussion sounds, try to play " +#~ "with this value." +#~ msgstr "" +#~ "* ドラムシフト機能 *\n" +#~ "ã“ã®ã‚ªãƒ—ションã¯, MIDI ãƒãƒ£ãƒ³ãƒãƒ« 10 (標準ã®ãƒ‘ーカッションãƒãƒ£ãƒ³ãƒãƒ«) ã®åŠ" +#~ "音をè¦æ±‚ã•ã‚ŒãŸæ•°ã§å¤‰åŒ–ã•ã›ã‚‹ã‚ˆã†ã«ã—ã¾ã™. MIDI ã®æ¼”å¥ä¸­ã«ç•°ãªã‚‹ãƒ‰ãƒ©ãƒ ã‚»ãƒƒ" +#~ "トã¨ãƒ‘ーカッションãŒç”¨ã„られるã“ã¨ã«ã‚ˆã‚Š, ã“ã®å€¤ã‚’用ã„ã¦æ¼”å¥ã™ã‚‹ã“ã¨ã«ã‚ˆ" +#~ "ã‚Š, パーカッションã®éŸ³ã‚’高ã‚ã‚‹ (ã¾ãŸã¯å¼±ã‚ã‚‹, ã¾ãŸã¯å¤‰ãˆã‚‹) ã“ã¨ãŒã§ãã¾" +#~ "ã™." -#: src/stereo_plugin/stereo.c:64 -msgid "About Extra Stereo Plugin" -msgstr "エクストラステレオプラグインã«ã¤ã„ã¦" +#~ msgid "" +#~ "* Pre-calculate MIDI length *\n" +#~ "If this option is enabled, AMIDI-Plug will calculate the MIDI file length " +#~ "as soon as the player requests it, instead of doing that only when the " +#~ "MIDI file is being played. In example, MIDI length will be calculated " +#~ "straight after adding MIDI files in a playlist. Disable this option if " +#~ "you want faster playlist loading (when a lot of MIDI files are added), " +#~ "enable it to display more information in the playlist straight after " +#~ "loading." +#~ msgstr "" +#~ "* MIDI é•·ã‚’å‰ã‚‚ã£ã¦è¨ˆç®— *\n" +#~ "ã“ã®ã‚ªãƒ—ションãŒæœ‰åŠ¹ãªã‚‰ã°, AMIDI-Plug 㯠MIDI ファイルã®é•·ã•ã‚’, MIDI ファ" +#~ "イルãŒæ¼”å¥ã•ã‚Œã‚ˆã†ã¨ã—ãŸã¨ãã ã‘ã§ã¯ãªã, プレイヤãŒè¦æ±‚ã—ãŸã¨ãã™ãã«è¨ˆç®—" +#~ "ã—ã¾ã™. 例ãˆã°, MIDI ファイルãŒãƒ—レイリスト中ã«è¿½åŠ ã•ã‚ŒãŸç›´å¾Œã« MIDI é•·ã‚’" +#~ "計算ã—ã¾ã™. (多ãã® MIDI ファイルãŒè¿½åŠ ã•ã‚Œã¦ã„ã‚‹ã¨ã) プレイリストã®èª­ã¿" +#~ "è¾¼ã¿ã‚’æ—©ãã—ãŸã„ãªã‚‰ã°, ã“ã®ã‚ªãƒ—ションを無効ã«ã—ã¾ã™.プレイリストを読ã¿è¾¼" +#~ "ã‚“ã ç›´å¾Œã«ã‚ˆã‚Šå¤šãã®æƒ…報を表示ã•ã›ãŸã„ãªã‚‰ã°, 有効ã«ã—ã¾ã™. " -#: src/stereo_plugin/stereo.c:100 -msgid "Configure Extra Stereo" -msgstr "エクストラステレオã®è¨­å®š" +#~ msgid "" +#~ "* Extract comments from MIDI files *\n" +#~ "Some MIDI files contain text comments (author, copyright, instrument " +#~ "notes, etc.). If this option is enabled, AMIDI-Plug will extract and " +#~ "display comments (if available) in the file information dialog." +#~ msgstr "" +#~ "* MIDI ファイルã‹ã‚‰ã‚³ãƒ¡ãƒ³ãƒˆã‚’抽出 *\n" +#~ "MIDI ファイルã¯ãƒ†ã‚­ã‚¹ãƒˆã‚³ãƒ¡ãƒ³ãƒˆ(作者, 著作権情報, 楽譜ãªã©)ã‚’å«ã‚“ã§ã„ã‚‹ã“" +#~ "ã¨ãŒã‚ã‚Šã¾ã™. ã“ã®ã‚ªãƒ—ションãŒæœ‰åŠ¹ãªã‚‰ã°, AMIDI-Plug ã¯ã‚³ãƒ¡ãƒ³ãƒˆã‚’抽出ã—, " +#~ "ファイル情報ダイアログ内ã«è¡¨ç¤ºã—ã¾ã™ (å¯èƒ½ãªã‚‰ã°)." -#: src/streambrowser/gui/streambrowser_win.c:62 -#, fuzzy -msgid "Search:" -msgstr "å¹´:" +#~ msgid "" +#~ "* Extract lyrics from MIDI files *\n" +#~ "Some MIDI files contain song lyrics. If this option is enabled, AMIDI-" +#~ "Plug will extract and display song lyrics (if available) in the file " +#~ "information dialog." +#~ msgstr "" +#~ "* MIDI ファイルã‹ã‚‰æ­Œè©žã‚’抽出 *\n" +#~ "MIDI ファイルã¯æ­Œè©žã‚’å«ã‚“ã§ã„ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™. ã“ã®ã‚ªãƒ—ションãŒæœ‰åŠ¹ãªã‚‰" +#~ "ã°, AMIDI-Plug ã¯æ­Œè©žã‚’抽出ã—, ファイル情報ダイアログ内ã«è¡¨ç¤ºã—ã¾ã™ (å¯èƒ½" +#~ "ãªã‚‰ã°)." -#: src/streambrowser/gui/streambrowser_win.c:81 -#: src/streambrowser/gui/streambrowser_win.c:370 -msgid "Add Bookmark" -msgstr "" +#~ msgid "" +#~ "* Select SoundFont files *\n" +#~ "In order to play MIDI with FluidSynth, you need to specify at least one " +#~ "valid SoundFont file here (use absolute paths). The loading order is from " +#~ "the top (first) to the bottom (last)." +#~ msgstr "" +#~ "* サウンドフォント ファイルã®é¸æŠž *\n" +#~ "FluidSynth 㧠MIDI ã‚’æ¼”å¥ã™ã‚‹ã«ã¯, ã“ã“ã§å°‘ãªãã¨ã‚‚1ã¤ã®æœ‰åŠ¹ãªã‚µã‚¦ãƒ³ãƒ‰ãƒ•ã‚©" +#~ "ント ファイルを絶対パスã§æŒ‡å®šã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™. 読ã¿è¾¼ã¿é †åºã¯ä¸Š(å…ˆ)ã‹ã‚‰" +#~ "下(後)ã«ãªã‚Šã¾ã™." -#: src/streambrowser/gui/streambrowser_win.c:95 -#, fuzzy -msgid "Stream browser" -msgstr "å‚ç…§" +#~ msgid "" +#~ "* Load SoundFont on player start *\n" +#~ "Depending on your system speed, SoundFont loading in FluidSynth will " +#~ "require up to a few seconds. This is a one-time task (the soundfont will " +#~ "stay loaded until it is changed or the backend is unloaded) that can be " +#~ "done at player start, or before the first MIDI file is played (the latter " +#~ "is a better choice if you don't use your player to listen MIDI files " +#~ "only)." +#~ msgstr "" +#~ "* サウンドフォントをプレイヤ起動時ã«èª­ã¿è¾¼ã‚€ *\n" +#~ "システムã®é€Ÿã•ã«ã‚ˆã‚Šã¾ã™ãŒ, FluidSynth ã§ã®ã‚µã‚¦ãƒ³ãƒ‰ãƒ•ã‚©ãƒ³ãƒˆã®èª­ã¿è¾¼ã¿ã«ã¯" +#~ "数分ã‹ã‹ã‚Šã¾ã™. ã“ã‚Œã¯ãƒ—レイヤã®èµ·å‹•æ™‚ã‹, 最åˆã® MIDI ファイルãŒæ¼”å¥ã•ã‚Œã‚‹" +#~ "å‰ã«ä¸€åº¦ã ã‘è¡Œã‚ã‚Œã¾ã™. MIDI ファイルをè´ãã“ã¨ã ã‘ã«ãƒ—レイヤを使ã†ã®ã§ãª" +#~ "ã‘ã‚Œã°, 後者をé¸æŠžã™ã‚‹ã®ãŒã‚ˆã„ã§ã—ょã†. (サウンドフォントã¯, ãã‚ŒãŒå¤‰æ›´ã•" +#~ "ãˆã‚‹ã‹ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ãŒå–り外ã•ã‚Œã‚‹ã¾ã§, 読ã¿è¾¼ã¾ã‚ŒãŸã¾ã¾ã§ã™). " -#: src/streambrowser/gui/streambrowser_win.c:319 -#, fuzzy -msgid "Stream name" -msgstr "楽器å" +#~ msgid "" +#~ "* Load SoundFont on first midifile play *\n" +#~ "Depending on your system speed, SoundFont loading in FluidSynth will " +#~ "require up to a few seconds. This is a one-time task (the soundfont will " +#~ "stay loaded until it is changed or the backend is unloaded) that can be " +#~ "done at player start, or before the first MIDI file is played (the latter " +#~ "is a better choice if you don't use your player to listen MIDI files " +#~ "only)." +#~ msgstr "" +#~ "* サウンドフォントを最åˆã® MIDI ファイル演å¥æ™‚ã«èª­ã¿è¾¼ã‚€ *\n" +#~ "システムã®é€Ÿã•ã«ã‚ˆã‚Šã¾ã™ãŒ, FluidSynth ã§ã®ã‚µã‚¦ãƒ³ãƒ‰ãƒ•ã‚©ãƒ³ãƒˆã®èª­ã¿è¾¼ã¿ã«ã¯" +#~ "数分ã‹ã‹ã‚Šã¾ã™. ã“ã‚Œã¯ãƒ—レイヤã®èµ·å‹•æ™‚ã‹, 最åˆã® MIDI ファイルãŒæ¼”å¥ã•ã‚Œã‚‹" +#~ "å‰ã«ä¸€åº¦ã ã‘è¡Œã‚ã‚Œã¾ã™. MIDI ファイルをè´ãã“ã¨ã ã‘ã«ãƒ—レイヤを使ã†ã®ã§ãª" +#~ "ã‘ã‚Œã°, 後者をé¸æŠžã™ã‚‹ã®ãŒã‚ˆã„ã§ã—ょã†. (サウンドフォントã¯, ãã‚ŒãŒå¤‰æ›´ã•" +#~ "ãˆã‚‹ã‹ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ãŒå–り外ã•ã‚Œã‚‹ã¾ã§, 読ã¿è¾¼ã¾ã‚ŒãŸã¾ã¾ã§ã™). " -#: src/streambrowser/gui/streambrowser_win.c:326 -#, fuzzy -msgid "Now playing" -msgstr "æ–°ã—ã„プレイリスト" +#~ msgid "" +#~ "* Synthesizer gain *\n" +#~ "From FluidSynth docs: the gain is applied to the final or master output " +#~ "of the synthesizer; it is set to a low value by default to avoid the " +#~ "saturation of the output when random MIDI files are played." +#~ msgstr "" +#~ "* シンセサイザーゲイン *\n" +#~ "FluidSynth ã®æ–‡æ›¸ã‚ˆã‚Š: ゲインã¯ã‚·ãƒ³ã‚»ã‚µã‚¤ã‚¶ãƒ¼ã®æœ€å¾Œã‹ãƒžã‚¹ã‚¿å‡ºåŠ›ã«é©ç”¨ã•ã‚Œ" +#~ "ã¾ã™. ランダム㪠MIDI ファイルãŒæ¼”å¥ã•ã‚Œã‚‹ã¨ãã«, 出力ã®é£½å’Œã‚’é¿ã‘ã‚‹ãŸã‚, " +#~ "デフォルトã§ã¯ä½Žã„値ã«è¨­å®šã•ã‚Œã¦ã„ã¾ã™. " -#: src/streambrowser/gui/streambrowser_win.c:367 -#, fuzzy -msgid "Remove Bookmark" -msgstr "ã‚¿ã‚°ã®å‰Šé™¤" +#~ msgid "" +#~ "* Synthesizer polyphony *\n" +#~ "From FluidSynth docs: the polyphony defines how many voices can be played " +#~ "in parallel; the number of voices is not necessarily equivalent to the " +#~ "number of notes played simultaneously; indeed, when a note is struck on a " +#~ "specific MIDI channel, the preset on that channel may create several " +#~ "voices, for example, one for the left audio channel and one for the right " +#~ "audio channels; the number of voices activated depends on the number of " +#~ "instrument zones that fall in the correspond to the velocity and key of " +#~ "the played note." +#~ msgstr "" +#~ "* シンセサイザーãƒãƒªãƒ•ã‚©ãƒ‹ãƒ¼ *\n" +#~ "FluidSynth ã®æ–‡æ›¸ã‚ˆã‚Š: ãƒãƒªãƒ•ã‚©ãƒ‹ãƒ¼ã¯ã©ã‚Œã ã‘ã®éŸ³å£°ãŒä¸¦è¡Œã«æ¼”å¥ã•ã‚Œã‚‹ã‹ã‚’" +#~ "定義ã—ã¾ã™. 音声ã®æ•°ã¯, åŒæ™‚ã«æ¼”å¥ã•ã‚Œã‚‹éŸ³ã®æ•°ã¨åŒã˜ã§ã‚ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›" +#~ "ã‚“. 実際ã¯, ã‚る音ãŒç‰¹å®šã® MIDI ãƒãƒ£ãƒ³ãƒãƒ«ã§é³´ã‚‰ã•ã‚ŒãŸã¨ã, ãã®ãƒãƒ£ãƒ³ãƒãƒ«" +#~ "ã®ãƒ—リセットã¯, 例ãˆã°, 一ã¤ã¯å·¦ã®ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªãƒãƒ£ãƒ³ãƒãƒ«ã«, 一ã¤ã¯å³ã®ã‚ªãƒ¼" +#~ "ディオãƒãƒ£ãƒ³ãƒãƒ«ã«, ã„ãã¤ã‹ã®éŸ³å£°ã‚’生æˆã—ã¾ã™. 生æˆã•ã‚ŒãŸéŸ³å£°ã®æ•°ã¯, æ¼”å¥" +#~ "ã•ã‚ŒãŸéŸ³ã®é«˜ã•ã¨ã‚­ãƒ¼ã«å¯¾å¿œã—ã¦ã„る楽器ã®æ•°ã«ä¾å­˜ã—ã¾ã™. " -#: src/streambrowser/streambrowser.c:331 -#, fuzzy -msgid "About Stream Browser" -msgstr "OSS ドライãƒã«ã¤ã„ã¦" +#~ msgid "" +#~ "* Synthesizer reverb *\n" +#~ "From FluidSynth docs: when set to \"yes\" the reverb effects module is " +#~ "activated; note that when the reverb module is active, the amount of " +#~ "signal sent to the reverb module depends on the \"reverb send\" generator " +#~ "defined in the SoundFont." +#~ msgstr "" +#~ "* シンセサイザーリãƒãƒ¼ãƒ– *\n" +#~ "FluidSynth ã®æ–‡æ›¸ã‚ˆã‚Š: \"ã¯ã„\" ã«è¨­å®šã™ã‚‹ã¨ãƒªãƒãƒ¼ãƒ–エフェクトモジュールãŒ" +#~ "有効ã«ãªã‚Šã¾ã™. リãƒãƒ¼ãƒ–モジュールãŒæœ‰åŠ¹ãªã¨ãã¯, 多数ã®ã‚·ã‚°ãƒŠãƒ«ãŒã‚µã‚¦ãƒ³ãƒ‰" +#~ "フォントã§å®šç¾©ã•ã‚ŒãŸ \"リãƒãƒ¼ãƒ– センド\" ジェãƒãƒ¬ãƒ¼ã‚¿ã«ä¾å­˜ã—ã¦ã„るリãƒãƒ¼" +#~ "ブモジュールã«é€ã‚‰ã‚Œã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„. " -#: src/streambrowser/streambrowser.c:332 -#, fuzzy -msgid "" -"Copyright (c) 2008, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming " -"directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" -"\n" -"This was a Google Summer of Code 2008 project." -msgstr "" -"Copyright (c) 2007, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"libcdio 開発者 ã¨\n" -"\tlibcddb 開発者 ã«å¤šå¤§ãªã‚‹æ„Ÿè¬.\n" -"\n" -"Tony Vroon ã«ã‚ˆã‚‹åŠ©è¨€ã¨æŒ‡é‡ã«æ„Ÿè¬.\n" -"\n" -"ã“れ㯠Google Summer of Code 2007 ã®ãƒ—ロジェクトã§ã—ãŸ." +#~ msgid "" +#~ "* Synthesizer chorus *\n" +#~ "From FluidSynth docs: when set to \"yes\" the chorus effects module is " +#~ "activated; note that when the chorus module is active, the amount of " +#~ "signal sent to the chorus module depends on the \"chorus send\" generator " +#~ "defined in the SoundFont." +#~ msgstr "" +#~ "* シンセサイザーコーラス *\n" +#~ "FluidSynth ã®æ–‡æ›¸ã‚ˆã‚Š: \"ã¯ã„\" ã«è¨­å®šã™ã‚‹ã¨ã‚³ãƒ¼ãƒ©ã‚¹ã‚¨ãƒ•ã‚§ã‚¯ãƒˆãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ãŒ" +#~ "有効ã«ãªã‚Šã¾ã™. コーラスモジュールãŒæœ‰åŠ¹ãªã¨ãã¯, 多数ã®ã‚·ã‚°ãƒŠãƒ«ãŒã‚µã‚¦ãƒ³ãƒ‰" +#~ "フォントã§å®šç¾©ã•ã‚ŒãŸ \"コーラス センド\" ジェãƒãƒ¬ãƒ¼ã‚¿ã«ä¾å­˜ã—ã¦ã„るコーラ" +#~ "スモジュールã«é€ã‚‰ã‚Œã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„. " -#: src/streambrowser/streambrowser.c:357 src/streambrowser/streambrowser.c:367 #, fuzzy -msgid "Streambrowser" -msgstr "å‚ç…§" +#~ msgid "" +#~ "* Synthesizer samplerate *\n" +#~ "The sample rate of the audio generated by the synthesizer. You can also " +#~ "specify a custom value in the interval 22050Hz-96000Hz." +#~ msgstr "" +#~ "* シンセサイザーサンプリングレート *\n" +#~ "シンセサイザーã§ç”Ÿæˆã•ã‚ŒãŸã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã®ã‚µãƒ³ãƒ—リングレートã§ã™. " +#~ "22050Hz-96000Hz ã®é–“ã§ã‚«ã‚¹ã‚¿ãƒ å€¤ã‚’指定ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™.\n" +#~ "注æ„: デフォルトã®ãƒãƒƒãƒ•ã‚¡ãƒ‘ラメータ㯠44100Hz ã«è¨­å®šã•ã‚Œã¦ã„ã¾ã™. サンプ" +#~ "リングレートを変更ã—ãŸã‚‰, よã„音質を得るãŸã‚ã«, ãƒãƒƒãƒ•ã‚¡ãƒ‘ラメータã®ãƒãƒ¥ãƒ¼" +#~ "ニングãŒå¿…è¦ã«ãªã‚Šã¾ã™. " -#: src/sun/about.c:30 -msgid "About the Sun Driver" -msgstr "Sun ドライãƒã«ã¤ã„ã¦" +#~ msgid "" +#~ "If enabled, the extension from the original filename will not be stripped " +#~ "before adding the new file extension to the end." +#~ msgstr "" +#~ "ã“れを有効ã«ã™ã‚‹ã¨, æ–°ã—ã„ファイル拡張å­ã‚’末尾ã«ã¤ã‘るより先ã«, å…ƒã®ãƒ•ã‚¡ã‚¤" +#~ "ルåã®æ‹¡å¼µå­ã¯å–り除ã‹ã‚Œã¾ã›ã‚“." -#: src/sun/about.c:31 -msgid "" -"XMMS BSD Sun Driver\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" -msgstr "" -"XMMS BSD Sun ドライãƒ\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"メンテナ: .\n" +#~ msgid "" +#~ "best/slowest:0;\n" +#~ "worst/fastest:9;\n" +#~ "recommended:2;\n" +#~ "default:5;" +#~ msgstr "" +#~ "最高å“質/最低速:0;\n" +#~ "最低å“質/最高速:9;\n" +#~ "推奨:2;\n" +#~ "デフォルト:5;" -#: src/sun/configure.c:199 -msgid "Audio control device:" -msgstr "オーディオコントロールデãƒã‚¤ã‚¹:" +#~ msgid "Adds 16 bit checksum to every frame" +#~ msgstr "ã™ã¹ã¦ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã« 16 ビットãƒã‚§ãƒƒã‚¯ã‚µãƒ ã‚’付加ã™ã‚‹" -#: src/sun/configure.c:270 -msgid "Buffer size (ms):" -msgstr "ãƒãƒƒãƒ•ã‚¡ã®ã‚µã‚¤ã‚º (ミリ秒):" +#~ msgid "Variable bitrate" +#~ msgstr "å¯å¤‰ãƒ“ットレート" -#: src/sun/configure.c:348 -msgid "Volume controls device:" -msgstr "音é‡ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ãƒ‡ãƒã‚¤ã‚¹:" +#~ msgid "Average bitrate" +#~ msgstr "å¹³å‡ãƒ“ットレート" -#: src/sun/configure.c:361 -msgid "XMMS uses mixer exclusively." -msgstr "ミキサを排他的ã«ä½¿ã†" +#~ msgid "" +#~ "For use with players that do not support low bitrate mp3 (Apex AD600-A " +#~ "DVD/mp3 player)" +#~ msgstr "" +#~ "低ã„ビットレート㮠mp3 をサãƒãƒ¼ãƒˆã—ãªã„プレイヤ (Apex AD600-A DVD/mp3 " +#~ "player)ã®ãŸã‚ã«ä½¿ã„ã¾ã™" -#: src/sun/configure.c:536 -msgid "Sun driver configuration" -msgstr "Sun ドライãƒã®è¨­å®š" +#~ msgid "" +#~ "highest:0;\n" +#~ "lowest:9;\n" +#~ "default:4;" +#~ msgstr "" +#~ "最高:0;\n" +#~ "最低:9;\n" +#~ "デフォルト:4;" -#: src/tonegen/tonegen.c:53 -msgid "About Tone Generator" -msgstr "トーンジェãƒãƒ¬ãƒ¼ã‚¿ã«ã¤ã„ã¦" +#, fuzzy +#~ msgid "Show playlists" +#~ msgstr "プレイリストエディタを表示ã™ã‚‹" -#: src/tonegen/tonegen.c:55 -msgid "" -"Sinus tone generator by Haavard Kvaalen \n" -"Modified by Daniel J. Peng \n" -"\n" -"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" -"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" -msgstr "" -"Haavard Kvaalen ã«ã‚ˆã‚‹ã‚µã‚¤ãƒ³ãƒˆãƒ¼ãƒ³ã‚¸ã‚§ãƒãƒ¼ãƒ¬ãƒ¼ã‚¿\n" -"Daniel J. Peng ã«ã‚ˆã‚‹ä¿®æ­£\n" -"\n" -"URLã« tone://frequency1;frequency2;frequency3;... ã¨è¿½åŠ ã—ã¦ä½¿ç”¨ã—ã¾ã™\n" -"例 tone://2000;2005 㯠2000Hz トーン㨠2005Hz トーンを演å¥ã—ã¾ã™" +#, fuzzy +#~ msgid "Show/hide playlists" +#~ msgstr "プレイリストã®ä¿å­˜" -#: src/tonegen/tonegen.c:105 -#, c-format -msgid "%s %.1f Hz" -msgstr "%s %.1f Hz" +#~ msgid "About the Sun Driver" +#~ msgstr "Sun ドライãƒã«ã¤ã„ã¦" -#: src/tonegen/tonegen.c:105 -msgid "Tone Generator: " -msgstr "トーンジェãƒãƒ¬ãƒ¼ã‚¿: " +#~ msgid "" +#~ "XMMS BSD Sun Driver\n" +#~ "\n" +#~ "Copyright (c) 2001 CubeSoft Communications, Inc.\n" +#~ "Maintainer: .\n" +#~ msgstr "" +#~ "XMMS BSD Sun ドライãƒ\n" +#~ "\n" +#~ "Copyright (c) 2001 CubeSoft Communications, Inc.\n" +#~ "メンテナ: .\n" -#: src/vorbis/configure.c:31 -msgid "Override generic titles" -msgstr "オリジナルã®ã‚¿ã‚¤ãƒˆãƒ«ã‚’上書ãã™ã‚‹" +#~ msgid "Audio control device:" +#~ msgstr "オーディオコントロールデãƒã‚¤ã‚¹:" -#: src/vorbis/configure.c:32 -msgid "Title format:" -msgstr "タイトルã®æ›¸å¼:" +#~ msgid "Buffer size (ms):" +#~ msgstr "ãƒãƒƒãƒ•ã‚¡ã®ã‚µã‚¤ã‚º (ミリ秒):" -#: src/vorbis/configure.c:36 -#, fuzzy -msgid "Ogg Vorbis Tags" -msgstr "Ogg Vorbis ã‚¿ã‚°:" +#~ msgid "Volume controls device:" +#~ msgstr "音é‡ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ãƒ‡ãƒã‚¤ã‚¹:" -#: src/vorbis/configure.c:68 -msgid "Ogg Vorbis Audio Plugin Configuration" -msgstr "Ogg Vorbis オーディオプラグインã®è¨­å®š" +#~ msgid "XMMS uses mixer exclusively." +#~ msgstr "ミキサを排他的ã«ä½¿ã†" -#: src/vorbis/vorbis.c:549 -msgid "About Ogg Vorbis Audio Plugin" -msgstr "Ogg Vorbis オーディオ プラグインã«ã¤ã„ã¦" +#~ msgid "Sun driver configuration" +#~ msgstr "Sun ドライãƒã®è¨­å®š" -#: src/vorbis/vorbis.c:554 -msgid "" -"Ogg Vorbis Plugin by the Xiph.org Foundation\n" -"\n" -"Original code by\n" -"Tony Arcieri \n" -"Contributions from\n" -"Chris Montgomery \n" -"Peter Alm \n" -"Michael Smith \n" -"Jack Moffitt \n" -"Jorn Baayen \n" -"Haavard Kvaalen \n" -"Gian-Carlo Pascutto \n" -"Eugene Zagidullin \n" -"\n" -"Visit the Xiph.org Foundation at http://www.xiph.org/\n" -msgstr "" -"Xiph.org Foundation ã«ã‚ˆã‚‹ Ogg Vorbis プラグイン\n" -"\n" -"オリジナルã®ã‚³ãƒ¼ãƒ‰:\n" -"Tony Arcieri \n" -"貢献者:\n" -"Chris Montgomery \n" -"Peter Alm \n" -"Michael Smith \n" -"Jack Moffitt \n" -"Jorn Baayen \n" -"Haavard Kvaalen \n" -"Gian-Carlo Pascutto \n" -"Eugene Zagidullin \n" -"\n" -"Xiph.org Foundation ã‚‚ã”覧下ã•ã„.\n" +#, fuzzy +#~ msgid "Target volume:" +#~ msgstr "音é‡ã®å¤‰æ›´" -#: src/vtx/about.c:14 -msgid "About Vortex Player" -msgstr "Vortex プレイヤã«ã¤ã„ã¦" +#, fuzzy +#~ msgid "Effect strength:" +#~ msgstr "エフェクトã®å¼·ã•:" -#: src/vtx/about.c:15 -msgid "" -"Vortex file format player by Sashnov Alexander \n" -"Founded on original source in_vtx.dll by Roman Sherbakov \n" -"\n" -"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" -"and other AY/YM music sites.\n" -"\n" -"Audacious implementation by Pavel Vymetalek " -msgstr "" -"Sashnov Alexander ã«ã‚ˆã‚‹ Vortex ファイルフォーマットプレイ" -"ヤ\n" -"Roman Sherbakov ã® in_vtx.dll をオリジナルソースã¨ã™ã‚‹\n" -"\n" -"vtx フォーマットã®éŸ³æ¥½ã¯ http://vtx.microfor.ru/music.htm ã‚„\n" -"ä»–ã® AY/YM 音楽サイトã§è¦‹ã¤ã‘られã¾ã™.\n" -"\n" -"Audacious 実装㯠Pavel Vymetalek ã«ã‚ˆã‚‹" +#~ msgid "FLAC Audio Plugin " +#~ msgstr "FLAC オーディオ プラグイン" -#: src/wavpack/wavpack.c:371 -#, c-format -msgid "Wavpack Decoder Plugin %s" -msgstr "Wavpack デコーダプラグイン %s" +#, fuzzy +#~ msgid "Stream browser" +#~ msgstr "å‚ç…§" -#: src/wavpack/wavpack.c:372 -msgid "" -"Copyright (c) 2006 William Pitcock \n" -"\n" -"Some of the plugin code was by Miles Egan\n" -"Visit the Wavpack site at http://www.wavpack.com/\n" -msgstr "" -"Copyright (c) 2006 William Pitcock \n" -"\n" -"プラグインコードã®ä¸€éƒ¨ã¯ Miles Egan ã«ã‚ˆã‚‹\n" -"Wavpack ã®ã‚µã‚¤ãƒˆ http://www.wavpack.com/ ã‚’ã”覧ãã ã•ã„\n" +#, fuzzy +#~ msgid "Streambrowser" +#~ msgstr "å‚ç…§" #~ msgid "PREAMP" #~ msgstr "プリアンプ" @@ -5984,12 +5969,6 @@ #~ "\n" #~ "%s ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®ç¨®é¡žãŒä¸æ˜Žã§ã™.\n" -#~ msgid "Randomize List" -#~ msgstr "プレイリストをランダムã«ã™ã‚‹" - -#~ msgid "Randomizes the playlist." -#~ msgstr "プレイリストã®é †åºã‚’ランダムã«ã—ã¾ã™." - #, fuzzy #~ msgid "ALSA Gapless Output Plugin Preferences" #~ msgstr "ステータスアイコンプラグイン - 設定" @@ -6290,10 +6269,6 @@ #~ msgstr "プラグインã«ã¤ã„ã¦" #, fuzzy -#~ msgid "Output plugin" -#~ msgstr "出力プラグインエラー\n" - -#, fuzzy #~ msgid "Throttle Output" #~ msgstr "aRts 出力プラグインã«ã¤ã„ã¦" @@ -6318,10 +6293,6 @@ #~ msgstr "削除" #, fuzzy -#~ msgid "Length (ms):" -#~ msgstr "é•·ã• (ミリ秒):" - -#, fuzzy #~ msgid "Start volume (%):" #~ msgstr "音é‡: (%)" @@ -6404,10 +6375,6 @@ #~ msgstr "é¸æŠžã—ãŸãƒ—レイリストをデフォルトä½ç½®ã«ä¿å­˜ã—ã¾ã™." #, fuzzy -#~ msgid "_Rename" -#~ msgstr "ファイルå" - -#, fuzzy #~ msgid "About Icecast-Plugin" #~ msgstr "エコー プラグインã«ã¤ã„ã¦" @@ -6678,21 +6645,9 @@ #~ msgid "Title:" #~ msgstr "タイトル:" -#~ msgid "Artist:" -#~ msgstr "アーティスト:" - -#~ msgid "Album:" -#~ msgstr "アルãƒãƒ å:" - #~ msgid "Comment:" #~ msgstr "コメント:" -#~ msgid "Year:" -#~ msgstr "å¹´:" - -#~ msgid "Track number:" -#~ msgstr "トラック番å·:" - #~ msgid "Genre:" #~ msgstr "ジャンル:" @@ -6937,9 +6892,6 @@ #~ msgid "Musepack Tag" #~ msgstr "Musepack ã‚¿ã‚°" -#~ msgid "Track:" -#~ msgstr "トラック:" - #~ msgid "Musepack Info" #~ msgstr "Musepack 情報" @@ -7131,9 +7083,6 @@ #~ msgid "auto-M/S mode" #~ msgstr "自動 M/S モード" -#~ msgid "_Random" -#~ msgstr "ランダム(R_)" - #~ msgid "Show track numbers in playlist" #~ msgstr "プレイリストã«ãƒˆãƒ©ãƒƒã‚¯ç•ªå·ã‚’表示ã™ã‚‹" diff -Nru audacious-plugins-2.4.4/po/lt.po audacious-plugins-3.2/po/lt.po --- audacious-plugins-2.4.4/po/lt.po 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/po/lt.po 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,3659 @@ +# Lithuanian translation for Audacious Plugins +# Copyright (C) Audacious translators +# This file is distributed under the same license as the Audacious Plugins package. +# +# Translators: +# Algimantas MargeviÄius , 2011. +# Algimantas MargeviÄius , 2011, 2012. +# gymka , 2011. +msgid "" +msgstr "" +"Project-Id-Version: Audacious Plugins\n" +"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2012-01-11 09:01-0500\n" +"PO-Revision-Date: 2012-01-13 12:23+0000\n" +"Last-Translator: Algimantas MargeviÄius \n" +"Language-Team: Lithuanian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lt\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)\n" + +#: src/aac/libmp4.c:256 +#, c-format +msgid "" +"Using libfaad2-%s for decoding.\n" +"FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com\n" +"Copyright (c) 2005-2006 Audacious team" +msgstr "" +"Dekodavimui naudojamas libfaad2-%s.\n" +"FAAD2 AAC/HE-AAC/HE-AACv2/DRM dekoderis (c) Nero AG, www.nero.com\n" +"Copyright (c) 2005-2006 Audacious team" + +#: src/aac/libmp4.c:261 +msgid "About MP4 AAC decoder plugin" +msgstr "Apie MP4 AAC decoder plugin" + +#: src/alarm/alarm.c:312 +msgid "About Alarm" +msgstr "Apie Alarm" + +#: src/alarm/alarm.c:313 +msgid "" +"A plugin that can be used to start playing at a certain time.\n" +"\n" +"Originally written by Adam Feakin and Daniel Stodden." +msgstr "" +"Ä®skiepis kuris suteikia galimybÄ™ pradÄ—ti groti, nuo tam tikros vietos.\n" +"\n" +"Originaliai sukÅ«rÄ— Adam Feakin ir Daniel Stodden." + +#: src/alarm/interface.c:33 +msgid "Alarm" +msgstr "Žadintuvas" + +#: src/alarm/interface.c:40 +msgid "This is your wakeup call." +msgstr "Tai pabudimo skambutis." + +#: src/alarm/interface.c:55 src/alarm/interface.c:1213 +msgid "OK" +msgstr "Gerai" + +#: src/alarm/interface.c:214 +msgid "Alarm Settings" +msgstr "Žadintuvo nustatymai" + +#: src/alarm/interface.c:229 src/alarm/interface.c:401 +#: src/alarm/interface.c:773 +msgid "Time" +msgstr "Laikas" + +#: src/alarm/interface.c:270 +msgid "hours" +msgstr "valandos" + +#: src/alarm/interface.c:331 +msgid "h" +msgstr "v" + +#: src/alarm/interface.c:361 +msgid "minutes" +msgstr "minutÄ—s" + +#: src/alarm/interface.c:379 +msgid "Quiet after:" +msgstr "Nutilti po:" + +#: src/alarm/interface.c:389 +msgid "Alarm at (default):" +msgstr "Žadinti (numatyta):" + +#: src/alarm/interface.c:409 +msgid "Choose the days for the alarm to come on" +msgstr "Pasirinkite dienas kuriomis žadinti" + +#: src/alarm/interface.c:437 src/alarm/interface.c:485 +#: src/alarm/interface.c:533 src/alarm/interface.c:581 +#: src/alarm/interface.c:629 src/alarm/interface.c:677 +#: src/alarm/interface.c:725 src/bs2b/plugin.c:198 src/OSS/configure.c:153 +#: src/skins/ui_equalizer.c:1104 src/skins/ui_manager.c:447 +#: src/skins/ui_manager.c:468 +msgid "Default" +msgstr "Numatytasis" + +#: src/alarm/interface.c:763 +msgid "Day" +msgstr "Diena" + +#: src/alarm/interface.c:783 +msgid "Tuesday" +msgstr "Antradienis" + +#: src/alarm/interface.c:794 +msgid "Wednesday" +msgstr "TreÄiadienis" + +#: src/alarm/interface.c:805 +msgid "Thursday" +msgstr "Ketvirtadienis" + +#: src/alarm/interface.c:816 +msgid "Friday" +msgstr "Penktadienis" + +#: src/alarm/interface.c:827 +msgid "Saturday" +msgstr "Å eÅ¡tadienis" + +#: src/alarm/interface.c:838 +msgid "Sunday" +msgstr "Sekmadienis" + +#: src/alarm/interface.c:848 +msgid "Monday" +msgstr "Pirmadienis" + +#: src/alarm/interface.c:859 +msgid "Days" +msgstr "Dienos" + +#: src/alarm/interface.c:875 +msgid "Fading" +msgstr "Blukimas" + +#: src/alarm/interface.c:912 +msgid "seconds" +msgstr "sekundÄ—s" + +#: src/alarm/interface.c:920 src/alarm/interface.c:1035 +msgid "Volume" +msgstr "Garsas" + +#: src/alarm/interface.c:946 +msgid "Current" +msgstr "Dabartinis" + +#: src/alarm/interface.c:954 +msgid "Start at" +msgstr "PradÄ—ti nuo" + +#: src/alarm/interface.c:982 src/alarm/interface.c:1026 +msgid "%" +msgstr "%" + +#: src/alarm/interface.c:998 +msgid "Final" +msgstr "Baigti" + +#: src/alarm/interface.c:1051 +msgid "Additional Command" +msgstr "Papildoma komanda" + +#: src/alarm/interface.c:1077 +msgid "enable" +msgstr "Ä®jungti" + +#: src/alarm/interface.c:1085 +msgid "Playlist (optional)" +msgstr "GrojaraÅ¡tis (nebÅ«tina)" + +#: src/alarm/interface.c:1111 +msgid "Browse..." +msgstr "NarÅ¡yti..." + +#: src/alarm/interface.c:1119 src/alarm/interface.c:1283 +msgid "Reminder" +msgstr "Priminimas" + +#: src/alarm/interface.c:1136 +msgid "Use reminder" +msgstr "Naudoti priminimÄ…" + +#: src/alarm/interface.c:1152 src/sndstretch/sndstretch_xmms.c:358 +msgid "Options" +msgstr "Pasirinktys" + +#: src/alarm/interface.c:1160 +msgid "What do these options mean?" +msgstr "KÄ… Å¡ios pasirinktys reiÅ¡kia?" + +#: src/alarm/interface.c:1188 +msgid "" +"\n" +"Time\n" +" Alarm at: \n" +" The time for the alarm to come on.\n" +"\n" +" Quiet After: \n" +" Stop alarm after this amount of time.\n" +" (if the wakeup dialog is not closed)\n" +"\n" +"\n" +"Days\n" +" Day:\n" +" Select the days for the alarm to activate.\n" +"\n" +" Time:\n" +" Choose the time for the alarm on each day,\n" +" or select the toggle button to use the default\n" +" time.\n" +"\n" +"\n" +"Volume\n" +" Fading: \n" +" Fade the volume up to the chosen volume \n" +" for this amount of time.\n" +"\n" +" Start at: \n" +" Start fading from this volume.\n" +"\n" +" Final: \n" +" The volume to stop fading at. If the fading\n" +" time is 0 then set volume to this and start\n" +" playing.\n" +"\n" +"\n" +"Options:\n" +" Additional Command:\n" +" Run this command at the alarm time.\n" +"\n" +" Playlist: \n" +" Load this playlist for playing songs from \n" +" (must have .m3u extension). If no playlist\n" +" is given then the songs which are currently\n" +" in the list will be used.\n" +" The URL of an mp3/ogg stream can also be\n" +" entered here, but loading of playlists from\n" +" URLs is not currently supported by xmms.\n" +"\n" +" Reminder:\n" +" Display a reminder when the alarm goes off,\n" +" type the reminder in the box and turn on the\n" +" toggle button if you want it to be shown.\n" +msgstr "" +"\n" +"Laikas\n" +" Žadinti laiku: \n" +" Laikas kada įjungti žadintuvÄ….\n" +"\n" +" Nutilti po: \n" +" Po Å¡io laiko tarpo iÅ¡jungti žadintuvÄ….\n" +" (jei prikÄ—limo žadintuvas neuždarytas)\n" +"\n" +"\n" +"Dienos\n" +" Diena:\n" +" Pasirink dienas kuriomis įjungti žadintuvÄ….\n" +"\n" +" Laikas:\n" +" Pasirinkti kiekvienos dienos žadintuvo laikÄ…,\n" +" arba pasirinkti numatytÄ…jį laikÄ….\n" +"\n" +"\n" +"\n" +"Garsas\n" +" GarsÄ—jimas: \n" +" Garsinti iki nurodyto garso, \n" +" šį laiko tarpÄ….\n" +"\n" +" PradÄ—ti nuo: \n" +" PradÄ—ti garsinti nuo.\n" +"\n" +" Baigti: \n" +" Garsas ties kuriuo baigti garsinti. Jei garsinimo\n" +" laikas yra 0 tada nustatykit garsÄ… Å¡itÄ… ir\n" +" pradÄ—kit groti.\n" +"\n" +"\n" +"Pasirinktys:\n" +" Papildoma komanda:\n" +" Vykdyti Å¡iÄ… komandÄ… žadintuvo laiku.\n" +"\n" +" GrojaraÅ¡tis: \n" +" Ä®kelti šį grojaraÅ¡tį ir groti dainas iÅ¡ ji \n" +" (turi turÄ—ti .m3u plÄ—tinį). Jei nenurodytas \n" +" grojaraÅ¡tis bus naudojamos dainos kurios\n" +" dabar yra sÄ…raÅ¡e.\n" +" mp3/ogg URL taipogi gali bÅ«t Äia įvestas,\n" +" bet grojaraÅ¡Äio įkrovimas iÅ¡ URL Å¡iuo metu\n" +" nepalaikomas xmms.\n" +"\n" +" Priminimas:\n" +" Parodyti priminimÄ… žadintuvui iÅ¡sijungus,\n" +" įveskit priminimÄ… langelyje ir paspauskite patvirtinimo mygtukÄ…\n" +" jei norit jog bÅ«tų rodomas.\n" + +#: src/alarm/interface.c:1190 src/skins/ui_manager.c:382 +msgid "Help" +msgstr "Pagalba" + +#: src/alarm/interface.c:1222 src/cdaudio-ng/configure.c:249 +#: src/crystalizer/crystalizer.c:130 src/echo_plugin/gui.c:125 +#: src/jack/configure.c:148 src/null/null.c:108 src/stereo_plugin/stereo.c:125 +msgid "Cancel" +msgstr "AtÅ¡aukti" + +#: src/alarm/interface.c:1290 +msgid "Your reminder for today is.." +msgstr "Å iandien tavo priminimas yra.." + +#: src/alarm/interface.c:1315 +msgid "Thankyou" +msgstr "DÄ—kui" + +#: src/alsa/config.c:210 +msgid "Default PCM device" +msgstr "Numatytasis PCM įrenginys" + +#: src/alsa/config.c:235 +msgid "Default mixer device" +msgstr "Numatytasis mikseris" + +#: src/alsa/config.c:438 +msgid "ALSA Output Plugin Preferences" +msgstr "ALSA iÅ¡vesties įskiepio nustatymai" + +#: src/alsa/config.c:445 +msgid "PCM device:" +msgstr "PCM įrenginys:" + +#: src/alsa/config.c:447 src/OSS/configure.c:237 +msgid "Mixer device:" +msgstr "Mikseris:" + +#: src/alsa/config.c:449 +msgid "Mixer element:" +msgstr "Mikserio elementas:" + +#: src/alsa/config.c:452 +msgid "Work around drain hangup" +msgstr "Apeiti sausÄ… pakibimÄ…" + +#: src/alsa/plugin.c:59 +msgid "About ALSA Output Plugin" +msgstr "Apie ALSA iÅ¡vesties įskiepį" + +#: src/alsa/plugin.c:81 +msgid "ALSA error" +msgstr "ALSA klaida" + +#: src/amidi-plug/amidi-plug.c:326 +msgid "" +"You have not selected any sequencer ports for MIDI playback. You can do so " +"in the MIDI plugin preferences." +msgstr "" +"Nepasirinkti jokie MIDI atkÅ«rimo prievadai. Pasirinkt gali MIDI įskiepio " +"nustatymuose." + +#: src/amidi-plug/backend-alsa/b-alsa.c:35 +msgid "ALSA Backend " +msgstr "ALSA posistemÄ—" + +#: src/amidi-plug/backend-alsa/b-alsa.c:37 +msgid "" +"This backend sends MIDI events to a group of user-chosen ALSA sequencer ports. The ALSA sequencer interface is very versatile, it can provide ports for audio cards hardware synthesizers (i.e. emu10k1) but also for software synths, external devices, etc.\n" +"This backend does not produce audio, MIDI events are handled directly from devices/programs behind the ALSA ports; in example, MIDI events sent to the hardware synth will be directly played.\n" +"Backend written by Giacomo Lozito." +msgstr "" +"Å i posistemÄ— siunÄia MIDI įvykius naudotojo pasirinktai ALSA eiliÅ¡kumo prievadų grupei. ALSA sekvencerio sÄ…saja yra labai universali, ji gali suteikti prievadus audio plokÅ¡Äių sintezatoriams (pvz. emu10k1) beto programiniams sintezatoriams, papildomiems įrenginiams ir t.t.\n" +"Å i posistemÄ— nekuria garso, MIDI įvykius apdoroja tiesiogiai įrenginiai/programos už ALSA prievadų; pavyzdžiui MIDI įvykiai nusiųsti į sintezatorių bus grojami tiesiogiai.\n" +"PosistemÄ™ sukÅ«rÄ— Giacomo Lozito." + +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 +msgid "FluidSynth Backend " +msgstr "FluidSynth PosistemÄ—" + +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 +msgid "" +"This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" +"Backend written by Giacomo Lozito." +msgstr "" +"Å i posistemÄ— atkuria garsÄ… sisųdama MIDI įvykius į FluidSynth, realaus laiko programinį sintezatorių, paremtÄ… SoundFont2 specifika (www.fluidsynth.org).\n" +"Atkurtu garsu galima manipuliuoti grotuvo efektų įskiepiais ir jis yra apdorojamas iÅ¡vesties įskiepiu.\n" +"PosistemÄ™ sukÅ«rÄ— Giacomo Lozito." + +#: src/amidi-plug/i_configure-alsa.c:228 +msgid "ALSA BACKEND CONFIGURATION" +msgstr "ALSA POSISTEMÄ–S KONFIGŪRAVIMAS" + +#: src/amidi-plug/i_configure-alsa.c:331 +msgid "Port" +msgstr "Prievadas" + +#: src/amidi-plug/i_configure-alsa.c:333 +msgid "Client name" +msgstr "Vardas" + +#: src/amidi-plug/i_configure-alsa.c:335 +msgid "Port name" +msgstr "Prievado vardas" + +#: src/amidi-plug/i_configure-alsa.c:346 +msgid "ALSA output ports" +msgstr "ALSA iÅ¡vesties prievadai" + +#: src/amidi-plug/i_configure-alsa.c:399 +msgid "Soundcard: " +msgstr "Garso plokÅ¡tÄ—:" + +#: src/amidi-plug/i_configure-alsa.c:401 +msgid "Mixer control: " +msgstr "Mikserio valdymas:" + +#: src/amidi-plug/i_configure-alsa.c:413 +msgid "Mixer settings" +msgstr "Mikserio nustatymai" + +#: src/amidi-plug/i_configure-alsa.c:429 +msgid "ALSA Backend not loaded or not available" +msgstr "ALSA posistemÄ— neužkrauta arba neprieinama" + +#: src/amidi-plug/i_configure-alsa.c:448 +msgid "" +"ALSA\n" +"backend" +msgstr "" +"ALSA\n" +"posistemÄ—" + +#: src/amidi-plug/i_configure-ap.c:59 +msgid "AMIDI-Plug - backend information" +msgstr "AMIDI-Plug - posistemÄ—s informacija" + +#: src/amidi-plug/i_configure-ap.c:196 +msgid "AMIDI-PLUG PREFERENCES" +msgstr "AMIDI-PLUG NUSTATYMAI" + +#: src/amidi-plug/i_configure-ap.c:223 +msgid "Backend selection" +msgstr "PosistemÄ—s pasirinkimas" + +#: src/amidi-plug/i_configure-ap.c:227 +msgid "Available backends" +msgstr "Prieinamos posistemÄ—s" + +#: src/amidi-plug/i_configure-ap.c:257 +msgid "Playback settings" +msgstr "AtkÅ«rimo nustatymai" + +#: src/amidi-plug/i_configure-ap.c:262 +msgid "Transpose: " +msgstr "Perkelti:" + +#: src/amidi-plug/i_configure-ap.c:271 +msgid "Drum shift: " +msgstr "BÅ«gnų poslinkis: " + +#: src/amidi-plug/i_configure-ap.c:289 +msgid "Advanced settings" +msgstr "Papildomi nustatymai" + +#: src/amidi-plug/i_configure-ap.c:293 +msgid "pre-calculate length of MIDI files in playlist" +msgstr "numanomas MIDI failų grojaraÅ¡tyje ilgis" + +#: src/amidi-plug/i_configure-ap.c:298 +msgid "extract comments from MIDI file (if available)" +msgstr "gauti komentarus iÅ¡ MIDI failo (jei įmanoma)" + +#: src/amidi-plug/i_configure-ap.c:303 +msgid "extract lyrics from MIDI file (if available)" +msgstr "gauti žodžius iÅ¡ MIDI failo (jei įmanoma)" + +#: src/amidi-plug/i_configure-ap.c:333 +msgid "" +"AMIDI\n" +"Plug" +msgstr "" +"AMIDI\n" +"Plug" + +#: src/amidi-plug/i_configure.c:76 +msgid "AMIDI-Plug - select file" +msgstr "AMIDI-Plug - pasirinkti failÄ…" + +#: src/amidi-plug/i_configure.c:129 +msgid "AMIDI-Plug - configuration" +msgstr "AMIDI-Plug - konfigÅ«racija" + +#: src/amidi-plug/i_configure-fluidsynth.c:55 +msgid "AMIDI-Plug - select SoundFont file" +msgstr "AMIDI-Plug - pasirink SoundFont failÄ…" + +#: src/amidi-plug/i_configure-fluidsynth.c:270 +msgid "FLUIDSYNTH BACKEND CONFIGURATION" +msgstr "FLUIDSYNTH POSISTEMÄ–S KONFIGŪRAVIMAS" + +#: src/amidi-plug/i_configure-fluidsynth.c:313 +msgid "SoundFont settings" +msgstr "SoundFont nustatymai" + +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Bylos vardas" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 +msgid "Size (bytes)" +msgstr "Dydis (bitais)" + +#: src/amidi-plug/i_configure-fluidsynth.c:398 +msgid "Load SF on player start" +msgstr "Ä®krauti SF paleidžiant grotuvÄ…" + +#: src/amidi-plug/i_configure-fluidsynth.c:402 +msgid "Load SF on first midifile play" +msgstr "Ä®krauti SF pirmÄ… kart paleidus midi failÄ…" + +#: src/amidi-plug/i_configure-fluidsynth.c:417 +msgid "Synthesizer settings" +msgstr "Sintezatoriaus nustatymai" + +#: src/amidi-plug/i_configure-fluidsynth.c:426 +msgid "gain" +msgstr "gauti" + +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 +msgid "use default" +msgstr "naudoti numatytÄ…" + +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 +msgid "value:" +msgstr "vertÄ—:" + +#: src/amidi-plug/i_configure-fluidsynth.c:454 +msgid "poliphony" +msgstr "polifonija" + +#: src/amidi-plug/i_configure-fluidsynth.c:482 +msgid "reverb" +msgstr "aidas" + +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 +msgid "yes" +msgstr "taip" + +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 +msgid "no" +msgstr "ne" + +#: src/amidi-plug/i_configure-fluidsynth.c:513 +msgid "chorus" +msgstr "choras" + +#: src/amidi-plug/i_configure-fluidsynth.c:544 +msgid "sample rate" +msgstr "diskretizacijos dažnis" + +#: src/amidi-plug/i_configure-fluidsynth.c:550 +msgid "22050 Hz " +msgstr "22050 Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:553 +msgid "44100 Hz " +msgstr "44100 Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:556 +msgid "96000 Hz " +msgstr "96000 Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:559 +msgid "custom " +msgstr "derinta" + +#: src/amidi-plug/i_configure-fluidsynth.c:568 +msgid "Hz " +msgstr "Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:621 +msgid "FluidSynth Backend not loaded or not available" +msgstr "FluidSynth posistemÄ— neįkrauta arba neprieinama" + +#: src/amidi-plug/i_configure-fluidsynth.c:640 +msgid "" +"FluidSynth\n" +"backend" +msgstr "" +"FluidSynth\n" +"posistemÄ—" + +#: src/amidi-plug/i_configure-timidity.c:39 +msgid "TIMIDITY BACKEND CONFIGURATION" +msgstr "TIMIDITY POSISTEMÄ–S KONFIGŪRACIJA" + +#: src/amidi-plug/i_configure-timidity.c:64 +msgid "TiMidity Backend not loaded or not available" +msgstr "TiMidity posistemÄ— neįkrauta arba neprieinama" + +#: src/amidi-plug/i_configure-timidity.c:83 +msgid "" +"TiMidity\n" +"backend" +msgstr "" +"TiMidity\n" +"posistemÄ—" + +#: src/amidi-plug/i_fileinfo.c:169 +msgid "Name:" +msgstr "Pavadinimas:" + +#: src/amidi-plug/i_fileinfo.c:193 +msgid " MIDI Info " +msgstr " MIDI Info " + +#: src/amidi-plug/i_fileinfo.c:205 +msgid "Format:" +msgstr "Formatas:" + +#: src/amidi-plug/i_fileinfo.c:208 +msgid "Length (msec):" +msgstr "Ilgis (ms):" + +#: src/amidi-plug/i_fileinfo.c:211 +msgid "Num of Tracks:" +msgstr "Takelių kiekis:" + +#: src/amidi-plug/i_fileinfo.c:216 +msgid "variable" +msgstr "kintamasis" + +#: src/amidi-plug/i_fileinfo.c:217 +msgid "BPM:" +msgstr "BPM:" + +#: src/amidi-plug/i_fileinfo.c:223 +msgid "BPM (wavg):" +msgstr "BPM (wavg):" + +#: src/amidi-plug/i_fileinfo.c:226 +msgid "Time Div:" +msgstr "Laiko div:" + +#: src/amidi-plug/i_fileinfo.c:237 +msgid " MIDI Comments and Lyrics " +msgstr " MIDI komentarai ir žodžiai" + +#: src/amidi-plug/i_fileinfo.c:288 +msgid "* no comments available in this MIDI file *" +msgstr "* Å iame MIDI faile nÄ—ra komentarų *" + +#: src/amidi-plug/i_fileinfo.c:301 +msgid "* no lyrics available in this MIDI file *" +msgstr "* Å iame MIDI faile nÄ—ra žodžių *" + +#: src/amidi-plug/i_fileinfo.c:349 +msgid " (invalid UTF-8)" +msgstr " (neteisingas UTF-8)" + +#: src/amidi-plug/i_utils.c:43 +msgid "AMIDI-Plug - about" +msgstr "AMIDI-Plug - apie" + +#: src/amidi-plug/i_utils.c:68 +msgid "" +"\n" +"AMIDI-Plug " +msgstr "" +"\n" +"AMIDI-Plug " + +#: src/amidi-plug/i_utils.c:69 +msgid "" +"\n" +"modular MIDI music player\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"\n" +"special thanks to...\n" +"\n" +"Clemens Ladisch and Jaroslav Kysela\n" +"for their cool programs aplaymidi and amixer; those\n" +"were really useful, along with alsa-lib docs, in order\n" +"to learn more about the ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"for the nice midi keyboard logo\n" +"\n" +"Tony Vroon\n" +"for the good help with alpha testing\n" +"\n" +msgstr "" +"\n" +"modular MIDI music player\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"sukÅ«rÄ— Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"\n" +"ypatinga padÄ—ka...\n" +"\n" +"Clemens Ladisch and Jaroslav Kysela\n" +"už jų puikias programas aplaymidi ir amixer; jos\n" +"iÅ¡tikro buvo naudingos, su alsa-lib docs, norint \n" +"daugiau sužinot apei ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"už gražų midi klaviatÅ«ros logo\n" +"\n" +"Tony Vroon\n" +"už pagalbÄ… testuojant alpha versijÄ…\n" +"\n" + +#: src/aosd/aosd_style.c:75 +msgid "Rectangle" +msgstr "StaÄiakampis" + +#: src/aosd/aosd_style.c:79 +msgid "Rounded Rectangle" +msgstr "Apvalus staÄiakampis" + +#: src/aosd/aosd_style.c:83 +msgid "Concave Rectangle" +msgstr "Ä®gaubtas staÄiakampis" + +#: src/aosd/aosd_style.c:87 +msgid "None" +msgstr "Joks" + +#: src/aosd/aosd_trigger.c:78 +msgid "Playback Start" +msgstr "AtkÅ«rimo pradžia" + +#: src/aosd/aosd_trigger.c:79 +msgid "Triggers OSD when a playlist entry is played." +msgstr "Sužadina OSD kai grojaraÅ¡Äio elementas grojamas." + +#: src/aosd/aosd_trigger.c:83 +msgid "Title Change" +msgstr "Pavadinimo keitimas" + +#: src/aosd/aosd_trigger.c:84 +msgid "" +"Triggers OSD when, during playback, the song title changes but the filename " +"is the same. This is mostly useful to display title changes in internet " +"streams." +msgstr "" +"Sužadina OSD kai, atkÅ«rimo metu, dainos pavadinimas pasikeiÄia, bet bylos " +"vardas lieka tas pats. Å ita pasirinktis naudingiausia atvaizduojant " +"interneto srauto dainos pavadinimo pokyÄius. " + +#: src/aosd/aosd_trigger.c:90 +msgid "Volume Change" +msgstr "Garso keitimas" + +#: src/aosd/aosd_trigger.c:91 +msgid "Triggers OSD when volume is changed." +msgstr "Sužadina OSD kai garsas pakeiÄiamas." + +#: src/aosd/aosd_trigger.c:95 +msgid "Pause On" +msgstr "PauzÄ—" + +#: src/aosd/aosd_trigger.c:96 +msgid "Triggers OSD when playback is paused." +msgstr "Sužadina OSD kai atkÅ«rimas sustabdomas" + +#: src/aosd/aosd_trigger.c:100 +msgid "Pause Off" +msgstr "PauzÄ— iÅ¡jungiama" + +#: src/aosd/aosd_trigger.c:101 +msgid "Triggers OSD when playback is unpaused." +msgstr "Sužadina OSD kai atkÅ«rimas atkuriamas po pauzÄ—s." + +#: src/aosd/aosd_ui.c:179 +msgid "Placement" +msgstr "Vieta" + +#: src/aosd/aosd_ui.c:218 +msgid "Relative X offset:" +msgstr "Relative X offset:" + +#: src/aosd/aosd_ui.c:227 +msgid "Relative Y offset:" +msgstr "Relative Y offset:" + +#: src/aosd/aosd_ui.c:236 +msgid "Max OSD width:" +msgstr "Didžiausias OSD plotis:" + +#: src/aosd/aosd_ui.c:249 +msgid "Multi-Monitor options" +msgstr "Kelių vaizduoklių pasirinktys" + +#: src/aosd/aosd_ui.c:253 +msgid "Display OSD using:" +msgstr "Vaizduoklis naudoja OSD:" + +#: src/aosd/aosd_ui.c:264 +msgid "all monitors" +msgstr "visi vaizduokliai" + +#: src/aosd/aosd_ui.c:267 +#, c-format +msgid "monitor %i" +msgstr "vaizduoklis %i" + +#: src/aosd/aosd_ui.c:322 +msgid "Timing (ms)" +msgstr "Laiko derinimas (ms)" + +#: src/aosd/aosd_ui.c:327 +msgid "Display:" +msgstr "Monitorius:" + +#: src/aosd/aosd_ui.c:332 +msgid "Fade in:" +msgstr "Nustelbti:" + +#: src/aosd/aosd_ui.c:337 +msgid "Fade out:" +msgstr "Fade out:" + +#: src/aosd/aosd_ui.c:418 +msgid "Fonts" +msgstr "Å riftai" + +#: src/aosd/aosd_ui.c:426 +#, c-format +msgid "Font %i:" +msgstr "Å riftas %i:" + +#: src/aosd/aosd_ui.c:443 +msgid "Shadow" +msgstr "Å eÅ¡Ä—lis" + +#: src/aosd/aosd_ui.c:478 +msgid "Internationalization" +msgstr "Lokalizavimas" + +#: src/aosd/aosd_ui.c:484 +msgid "Disable UTF-8 conversion of text (in aosd)" +msgstr "IÅ¡jungti UTF-8 teksto konvertavimÄ… (aosd'e)" + +#: src/aosd/aosd_ui.c:502 +msgid "Select Skin File" +msgstr "Pasirinkti iÅ¡vaizdos failÄ…" + +#: src/aosd/aosd_ui.c:613 +msgid "Render Style" +msgstr "Atvaizdavimo stilius" + +#: src/aosd/aosd_ui.c:629 +msgid "Colors" +msgstr "Spalvos" + +#: src/aosd/aosd_ui.c:642 +#, c-format +msgid "Color %i:" +msgstr "Spalva %i:" + +#: src/aosd/aosd_ui.c:662 +msgid "Custom Skin" +msgstr "Derintas apipavalidinimas" + +#: src/aosd/aosd_ui.c:668 +msgid "Skin file:" +msgstr "IÅ¡vaizdos failas:" + +#: src/aosd/aosd_ui.c:671 +msgid "Browse" +msgstr "NarÅ¡yti" + +#: src/aosd/aosd_ui.c:773 +msgid "Enable trigger" +msgstr "Sužadinti" + +#: src/aosd/aosd_ui.c:800 +msgid "Event" +msgstr "Ä®vykis" + +#: src/aosd/aosd_ui.c:828 +msgid "Composite manager detected" +msgstr "Composite tvarkytuvas rastas" + +#: src/aosd/aosd_ui.c:835 +msgid "" +"Composite manager not detected;\n" +"unless you know that you have one running, please activate a composite manager otherwise the OSD won't work properly" +msgstr "" +"Composite tvarkyklÄ— nerasta;\n" +"įjunk composite tvarkyklÄ™, nes OSD neveiks taip kaip priklauso" + +#: src/aosd/aosd_ui.c:843 +msgid "Composite manager not required for fake transparency" +msgstr "Netikram permatomumui composite tvarkyklÄ— nereikalinga" + +#: src/aosd/aosd_ui.c:881 +msgid "Transparency" +msgstr "Skaidrumas" + +#: src/aosd/aosd_ui.c:887 +msgid "Fake transparency" +msgstr "Netikras skaidrumas" + +#: src/aosd/aosd_ui.c:889 +msgid "Real transparency (requires X Composite Ext.)" +msgstr "Tikras skaidrumas (reikalinga X composite plÄ—tinys)" + +#: src/aosd/aosd_ui.c:931 +msgid "Composite extension not loaded" +msgstr "Composite plÄ—tinys neįkrautas" + +#: src/aosd/aosd_ui.c:939 +msgid "Composite extension not available" +msgstr "Composite plÄ—tinys neprieinamas" + +#: src/aosd/aosd_ui.c:958 +#, c-format +msgid "Audacious OSD" +msgstr "Audacious OSD" + +#: src/aosd/aosd_ui.c:1039 +msgid "Audacious OSD - configuration" +msgstr "Audacious OSD - konfigÅ«racija" + +#: src/aosd/aosd_ui.c:1060 +msgid "Test" +msgstr "Testas" + +#: src/aosd/aosd_ui.c:1075 +msgid "Position" +msgstr "Pozicija" + +#: src/aosd/aosd_ui.c:1080 +msgid "Animation" +msgstr "Animacija" + +#: src/aosd/aosd_ui.c:1085 +msgid "Text" +msgstr "Tekstas" + +#: src/aosd/aosd_ui.c:1090 +msgid "Decoration" +msgstr "Dekoracijos" + +#: src/aosd/aosd_ui.c:1095 +msgid "Trigger" +msgstr "Sužadintojas" + +#: src/aosd/aosd_ui.c:1100 src/cdaudio-ng/configure.c:171 +msgid "Misc" +msgstr "Kita" + +#: src/aosd/aosd_ui.c:1137 +msgid "Audacious OSD - about" +msgstr "Audacious OSD - apie" + +#: src/aosd/aosd_ui.c:1167 +msgid "" +"\n" +"Audacious OSD " +msgstr "" +"\n" +"Audacious OSD " + +#: src/aosd/aosd_ui.c:1168 +msgid "" +"\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"On-Screen-Display is based on Ghosd library\n" +"written by Evan Martin\n" +"http://neugierig.org/software/ghosd/\n" +"\n" +msgstr "" +"\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"sukÅ«rÄ— Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"On-Screen-Display paremta Ghosd library\n" +"kuriÄ… sukÅ«rÄ— Evan Martin\n" +"http://neugierig.org/software/ghosd/\n" +"\n" + +#: src/blur_scope/config.c:73 +msgid "Blur Scope: Color selection" +msgstr "IÅ¡siliejimo sritis: Pagal spalvas" + +#: src/blur_scope/config.c:83 src/jack/configure.c:106 +msgid "Options:" +msgstr "Pasirinktys:" + +#: src/bs2b/plugin.c:157 +msgid "Bauer stereophonic-to-binaural Preferences" +msgstr "Bauer stereofoninis-į-binaural nustatymai" + +#: src/bs2b/plugin.c:168 +msgid "Feed level:" +msgstr "Duoti lygį:" + +#: src/bs2b/plugin.c:182 +msgid "Cut frequency:" +msgstr "Nukirpti dažnius:" + +#: src/bs2b/plugin.c:196 +msgid "Presets:" +msgstr "Nustatymų rinkiniai:" + +#: src/cdaudio-ng/cdaudio-ng.c:242 +msgid "About Audio CD Plugin" +msgstr "Apie Audio CD Plugin" + +#: src/cdaudio-ng/cdaudio-ng.c:243 +msgid "" +"Copyright (c) 2007, by Calin Crisan and The Audacious Team.\n" +"\n" +"Many thanks to libcdio developers \n" +"\tand to libcddb developers .\n" +"\n" +"Also thank you Tony Vroon for mentoring & guiding me.\n" +"\n" +"This was a Google Summer of Code 2007 project.\n" +"\n" +"Copyright 2009 John Lindgren" +msgstr "" +"Copyright (c) 2007, by Calin Crisan and The Audacious Team.\n" +"\n" +"Didelis dÄ—kui libcdio kÅ«rÄ—jams \n" +"\tir libcddb kÅ«rÄ—jams .\n" +"\n" +"Beto dÄ—kui Tony Vroon už pamokymus ir užvedimÄ… ant kelio.\n" +"\n" +"ÄŒia buvo Google Summer Code 2007 projektas.\n" +"\n" +"Copyright 2009 John Lindgren" + +#: src/cdaudio-ng/cdaudio-ng.c:552 +msgid "Audio CD" +msgstr "Audio CD" + +#: src/cdaudio-ng/cdaudio-ng.c:924 +msgid "Drive is empty." +msgstr "Diskasukis tuÅ¡Äias." + +#: src/cdaudio-ng/cdaudio-ng.c:926 +msgid "Unsupported disk type." +msgstr "Nepalaikomas disko tipas." + +#: src/cdaudio-ng/configure.c:148 +msgid "CD Audio Plugin Configuration" +msgstr "CD Audio Plugin KonfigÅ«racija" + +#: src/cdaudio-ng/configure.c:160 +msgid "Digital audio extraction" +msgstr "Skaitmeninio garso iÅ¡Ä—mimas" + +#: src/cdaudio-ng/configure.c:165 +msgid "Title information" +msgstr "Pavadinimo informacija" + +#: src/cdaudio-ng/configure.c:176 +msgid "Disc speed:" +msgstr "Disko greitis:" + +#: src/cdaudio-ng/configure.c:184 +msgid "Use cd-text if available" +msgstr "Jei įmanoma naudoti cd-tekstÄ…" + +#: src/cdaudio-ng/configure.c:191 +msgid "Use CDDB if available" +msgstr "Jei įmanoma naudoti CDDB" + +#: src/cdaudio-ng/configure.c:197 +msgid "Server: " +msgstr "Serveris:" + +#: src/cdaudio-ng/configure.c:201 +msgid "Path: " +msgstr "Kelias:" + +#: src/cdaudio-ng/configure.c:205 +msgid "Port: " +msgstr "Prievadas:" + +#: src/cdaudio-ng/configure.c:218 +msgid "Use HTTP instead of CDDBP" +msgstr "Naudoti HTTP vietoj CDDBP" + +#: src/cdaudio-ng/configure.c:230 +msgid "Override default device: " +msgstr "Nepaisyti numatytojo prietaiso:" + +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:123 +#: src/echo_plugin/gui.c:118 src/jack/configure.c:141 src/null/null.c:107 +#: src/stereo_plugin/stereo.c:118 +msgid "Ok" +msgstr "Gerai" + +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Play CD" +msgstr "Groti CD" + +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Add CD" +msgstr "PridÄ—ti CD" + +#: src/compressor/plugin.c:63 +msgid "About Dynamic Range Compression Plugin" +msgstr "Apie Dynamic Range Compression Plugin" + +#: src/compressor/plugin.c:95 +msgid "Dynamic Range Compressor Preferences" +msgstr "Dynamic Range Compressor Nustatymai" + +#: src/compressor/plugin.c:107 +msgid "Center volume:" +msgstr "Centro garsas:" + +#: src/compressor/plugin.c:120 +msgid "Dynamic range:" +msgstr "DinaminÄ— sritis:" + +#: src/console/configure.c:136 +msgid "Game Console Music Decoder" +msgstr "Žaidimų konsolÄ—s muzikos dekoderis" + +#: src/console/configure.c:153 +msgid "General" +msgstr "PagrindinÄ—s" + +#: src/console/configure.c:155 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "AtkÅ«rimas" + +#: src/console/configure.c:170 +msgid "Bass:" +msgstr "Bosas:" + +#: src/console/configure.c:174 src/console/configure.c:185 +#: src/console/configure.c:206 +msgid "secs" +msgstr "sekundÄ—s" + +#: src/console/configure.c:181 +msgid "Treble:" +msgstr "Treble:" + +#: src/console/configure.c:202 +msgid "Default song length:" +msgstr "Numatyta dainos trukmÄ—:" + +#: src/console/configure.c:208 +msgid "Resampling" +msgstr "Resampling" + +#: src/console/configure.c:214 +msgid "Enable audio resampling" +msgstr "Ä®jungti audio resampling" + +#: src/console/configure.c:229 +msgid "Resampling rate:" +msgstr "Diskretizacijos dažnis:" + +#: src/console/configure.c:233 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:244 +msgid "SPC" +msgstr "SPC" + +#: src/console/configure.c:245 +msgid "Ignore length from SPC tags" +msgstr "Ignoruoti SPC žymų ilgį" + +#: src/console/configure.c:246 +msgid "Increase reverb" +msgstr "Padidinti reverb" + +#: src/console/configure.c:271 +msgid "" +"The default song length, expressed in seconds, is used for songs that do not" +" provide length information (i.e. looping tracks)." +msgstr "" +"Numatyta dainos trukmÄ—, iÅ¡reikÅ¡ta sekundÄ—mis, naudojama dainom kurios " +"nesuteikia trukmÄ—s informacijos (pvz. looping tracks)" + +#: src/console/plugin.c:33 +msgid "About the Game Console Music Decoder" +msgstr "Apie Game Console Music Decoder" + +#: src/console/plugin.c:34 +msgid "" +"Console music decoder engine based on Game_Music_Emu 0.5.2.\n" +"Supported formats: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Audacious implementation by: William Pitcock , \n" +" Shay Green \n" +msgstr "" +"Console music decoder engine paremtas Game_Music_Emu 0.5.2.\n" +"Palaikomi formatai: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Integravo į Audacious : William Pitcock , \n" +" Shay Green \n" + +#: src/crossfade/plugin.c:60 +msgid "About Crossfade" +msgstr "Apie Crossfade" + +#: src/crossfade/plugin.c:92 +msgid "Crossfade Preferences" +msgstr "Crossfade Nustatymai" + +#: src/crossfade/plugin.c:104 +msgid "Overlap (in seconds):" +msgstr "Perdengimas (sekundÄ—mis):" + +#: src/crossfade/plugin.c:135 src/crossfade/plugin.c:141 +msgid "Crossfade Error" +msgstr "Crossfade klaida" + +#: src/crossfade/plugin.c:135 +msgid "" +"Crossfading failed because the songs had a different number of channels." +msgstr "" +"Garso perÄ—jimo efektas nepavyko, nes dainos turi skirtingÄ… kanalų skaiÄių." + +#: src/crossfade/plugin.c:143 +msgid "" +"Crossfading failed because the songs had different sample rates.\n" +"\n" +"You can use the Sample Rate Converter effect to resample the songs to the same rate." +msgstr "" +"Garso perÄ—jimo efektas nepavyko, nes dainos turi skirtingus diskretizavimo dažnius.\n" +"\n" +"Gali panaudoti Sample Rate Converter efektÄ… padaryti diskretizavimo dažnius tokius pat." + +#: src/crystalizer/crystalizer.c:100 +msgid "Configure Crystalizer" +msgstr "KonfigÅ«ruoti Crystalizer" + +#: src/crystalizer/crystalizer.c:102 src/stereo_plugin/stereo.c:97 +msgid "Effect intensity:" +msgstr "Efekto intensyvumas:" + +#: src/crystalizer/crystalizer.c:136 src/echo_plugin/gui.c:131 +#: src/stereo_plugin/stereo.c:131 +msgid "Apply" +msgstr "Pritaikyti" + +#: src/echo_plugin/gui.c:15 +msgid "" +"Echo Plugin\n" +"By Johan Levin 1999.\n" +"\n" +"Surround echo by Carl van Schaik 1999" +msgstr "" +"Echo įskiepis\n" +"SukÅ«rÄ— Johan Levin 1999.\n" +"\n" +"Surround echo sukÅ«rÄ— Carl van Schaik 1999" + +#: src/echo_plugin/gui.c:27 +msgid "About Echo Plugin" +msgstr "Apie Echo įskiepį" + +#: src/echo_plugin/gui.c:67 +msgid "Configure Echo" +msgstr "KonfigÅ«ruoti Echo" + +#: src/echo_plugin/gui.c:83 +msgid "Delay: (ms)" +msgstr "VÄ—lavimas: (ms)" + +#: src/echo_plugin/gui.c:88 +msgid "Feedback: (%)" +msgstr "Aidas: (%)" + +#: src/echo_plugin/gui.c:93 +msgid "Volume: (%)" +msgstr "Garsas: (%)" + +#: src/ffaudio/ffaudio-core.c:725 +#, c-format +msgid "" +"Multi-format audio decoding plugin for Audacious based on\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious plugin by:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" +msgstr "" +"Daugiaformatis audio dekodavimo įskiepis skirtas Audacious paremtas\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious įskiepį kÅ«rÄ—:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" + +#: src/ffaudio/ffaudio-core.c:739 +msgid "About FFaudio Plugin" +msgstr "Apie FFaudio įskiepį" + +#: src/filewriter/filewriter.c:166 +msgid "About FileWriter-Plugin" +msgstr "Apie FileWriter įskiepį" + +#: src/filewriter/filewriter.c:461 +msgid "File Writer Configuration" +msgstr "File Writer konfigÅ«ravimas" + +#: src/filewriter/filewriter.c:473 +msgid "Output file format:" +msgstr "IÅ¡vesties failo formatas:" + +#: src/filewriter/filewriter.c:491 +msgid "Configure" +msgstr "KonfigÅ«ruoti" + +#: src/filewriter/filewriter.c:506 +msgid "Save into original directory" +msgstr "IÅ¡saugoti originalo aplanke" + +#: src/filewriter/filewriter.c:511 +msgid "Save into custom directory" +msgstr "IÅ¡saugoti pasirinktame aplanke" + +#: src/filewriter/filewriter.c:521 +msgid "Output file folder:" +msgstr "Paskirties aplankas:" + +#: src/filewriter/filewriter.c:525 +msgid "Pick a folder" +msgstr "Rinkis aplankÄ…" + +#: src/filewriter/filewriter.c:544 +msgid "Get filename from:" +msgstr "Gauti failo vardÄ… iÅ¡:" + +#: src/filewriter/filewriter.c:547 +msgid "original file tags" +msgstr "originalios failo žymÄ—s" + +#: src/filewriter/filewriter.c:553 +msgid "original filename" +msgstr "originalus failo vardas" + +#: src/filewriter/filewriter.c:563 +msgid "Don't strip file name extension" +msgstr "NeiÅ¡trinti failo plÄ—tinio" + +#: src/filewriter/filewriter.c:578 +msgid "Prepend track number to filename" +msgstr "Ä®dÄ—ti takelio numerį į failo vardÄ…" + +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:765 +msgid "Auto" +msgstr "Auto" + +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" +msgstr "Sujungtas stereo" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Stereo" +msgstr "Stereo" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Mono" +msgstr "Mono" + +#: src/filewriter/mp3.c:706 +msgid "MP3 Configuration" +msgstr "MP3 konfigÅ«ravimas" + +#: src/filewriter/mp3.c:729 +msgid "Algorithm Quality:" +msgstr "Algoritmo kokybÄ—:" + +#: src/filewriter/mp3.c:754 +msgid "Output Samplerate:" +msgstr "IÅ¡vesties diskretizavimo dažnis:" + +#: src/filewriter/mp3.c:782 +msgid "(Hz)" +msgstr "(Hz)" + +#: src/filewriter/mp3.c:789 +msgid "Bitrate / Compression ratio:" +msgstr "Bitų dažnis / Kompresijos santykis:" + +#: src/filewriter/mp3.c:813 +msgid "Bitrate (kbps):" +msgstr "Bitų dažnis(kbps):" + +#: src/filewriter/mp3.c:846 +msgid "Compression ratio:" +msgstr "Kompresijos santykis:" + +#: src/filewriter/mp3.c:870 +msgid "Audio Mode:" +msgstr "Audio režimas:" + +#: src/filewriter/mp3.c:895 +msgid "Misc:" +msgstr "Kita:" + +#: src/filewriter/mp3.c:906 +msgid "Enforce strict ISO complience" +msgstr "Priversti griežtai laikytis ISO suderinamumo" + +#: src/filewriter/mp3.c:917 +msgid "Error protection" +msgstr "Apsauga nuo klaidų" + +#: src/filewriter/mp3.c:929 src/filewriter/vorbis.c:247 +msgid "Quality" +msgstr "KokybÄ—" + +#: src/filewriter/mp3.c:939 +msgid "Enable VBR/ABR" +msgstr "Ä®jungti VBR/ABR" + +#: src/filewriter/mp3.c:949 +msgid "Type:" +msgstr "Tipas:" + +#: src/filewriter/mp3.c:982 +msgid "VBR Options:" +msgstr "VBR pasirinktys:" + +#: src/filewriter/mp3.c:998 +msgid "Minimum bitrate (kbps):" +msgstr "Minimalus bitų dažnis (kbps):" + +#: src/filewriter/mp3.c:1025 +msgid "Maximum bitrate (kbps):" +msgstr "Maksimalus bitų dažnis (kbps):" + +#: src/filewriter/mp3.c:1048 +msgid "Strictly enforce minimum bitrate" +msgstr "Griežtai laikytis minimalaus bitų dažnio" + +#: src/filewriter/mp3.c:1060 +msgid "ABR Options:" +msgstr "ABR pasirinktys:" + +#: src/filewriter/mp3.c:1070 +msgid "Average bitrate (kbps):" +msgstr "Vidutinis bitų dažnis (kbps):" + +#: src/filewriter/mp3.c:1098 +msgid "VBR quality level:" +msgstr "VBR kokybÄ—s lygis:" + +#: src/filewriter/mp3.c:1117 +msgid "Don't write Xing VBR header" +msgstr "NeraÅ¡yti Xing VBR antraÅ¡tÄ—s" + +#: src/filewriter/mp3.c:1131 +msgid "VBR/ABR" +msgstr "VBR/ABR" + +#: src/filewriter/mp3.c:1141 +msgid "Frame params:" +msgstr "Kadro parametrai:" + +#: src/filewriter/mp3.c:1153 +msgid "Mark as copyright" +msgstr "PažymÄ—ti kaip saugomÄ… autorinių teisių" + +#: src/filewriter/mp3.c:1164 +msgid "Mark as original" +msgstr "PažymÄ—ti kaip originalÄ…" + +#: src/filewriter/mp3.c:1176 +msgid "ID3 params:" +msgstr "ID3 parametrai" + +#: src/filewriter/mp3.c:1187 +msgid "Force addition of version 2 tag" +msgstr "Priverstinai pridÄ—ti 2 versijos žymÄ…" + +#: src/filewriter/mp3.c:1197 +msgid "Only add v1 tag" +msgstr "PridÄ—ti tik v1 žymÄ…" + +#: src/filewriter/mp3.c:1204 +msgid "Only add v2 tag" +msgstr "PridÄ—ti tik v2 žymÄ…" + +#: src/filewriter/mp3.c:1225 +msgid "Tags" +msgstr "Žymos" + +#: src/filewriter/vorbis.c:240 +msgid "Vorbis Encoder Configuration" +msgstr "Vorbis koduotojo konfigÅ«racija" + +#: src/filewriter/vorbis.c:260 +msgid "Quality level (0 - 10):" +msgstr "KokybÄ—s lygis (0 - 10):" + +#: src/flacng/plugin.c:380 +msgid "About FLAC Audio Plugin" +msgstr "Apie FLAC Audio įskiepį" + +#: src/flacng/plugin.c:381 +msgid "" +"\n" +"\n" +"Original code by\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" +msgstr "" +"\n" +"\n" +"Originalų kodÄ… paraÅ¡Ä—\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" + +#: src/gnomeshortcuts/gnomeshortcuts.c:303 +msgid "About Gnome Shortcut Plugin" +msgstr "Apie Gnome Shortcut įskiepį" + +#: src/gnomeshortcuts/gnomeshortcuts.c:304 +msgid "" +"Gnome Shortcut Plugin\n" +"Let's you control the player with Gnome's shortcuts.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +msgstr "" +"Gnome Shortcut įskiepis\n" +"Suteikia galimybÄ™ valdyti grotuvÄ… su gnome trumpiniais.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" + +#: src/gtkui/columns.c:36 +msgid "Entry number" +msgstr "Ä®vesties numeris" + +#: src/gtkui/columns.c:36 src/search-tool/search-tool.c:43 +msgid "Title" +msgstr "Pavadinimas" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:42 +msgid "Artist" +msgstr "AtlikÄ—jas" + +#: src/gtkui/columns.c:37 +msgid "Year" +msgstr "Metai" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:43 +msgid "Album" +msgstr "Albumas" + +#: src/gtkui/columns.c:37 +msgid "Track" +msgstr "Takelis" + +#: src/gtkui/columns.c:37 +msgid "Queue position" +msgstr "Vieta eilÄ—je" + +#: src/gtkui/columns.c:38 +msgid "Length" +msgstr "TrukmÄ—" + +#: src/gtkui/columns.c:38 +msgid "File path" +msgstr "Bylos kelias" + +#: src/gtkui/columns.c:38 +msgid "File name" +msgstr "Bylos vardas" + +#: src/gtkui/columns.c:38 +msgid "Custom title" +msgstr "Derintas pavadinimas" + +#: src/gtkui/columns.c:39 +msgid "Bitrate" +msgstr "Bitų seka" + +#: src/gtkui/columns.c:278 +msgid "Choose Columns" +msgstr "Rinktis stulpelius" + +#: src/gtkui/columns.c:292 +msgid "Available:" +msgstr "Prieinama:" + +#: src/gtkui/columns.c:326 +msgid "Chosen:" +msgstr "Pasirinkta:" + +#: src/gtkui/layout.c:122 +msgid "Dock at Left" +msgstr "Sumažinti į kairÄ™" + +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "Sumažinti į deÅ¡inÄ™" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "Sumažinti į viršų" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "Sumažinti apaÄioje" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "Padidinti" + +#: src/gtkui/layout.c:123 src/ladspa/plugin.c:644 +msgid "Disable" +msgstr "IÅ¡jungti" + +#: src/gtkui/menus.c:131 +msgid "_Open Files ..." +msgstr "_Atverti failus ..." + +#: src/gtkui/menus.c:132 +msgid "Open _URL ..." +msgstr "Atverti _URL ..." + +#: src/gtkui/menus.c:133 +msgid "_Add Files ..." +msgstr "_PridÄ—ti failus..." + +#: src/gtkui/menus.c:134 +msgid "Add U_RL ..." +msgstr "PridÄ—ti U_RL ..." + +#: src/gtkui/menus.c:136 +msgid "A_bout ..." +msgstr "A_pie" + +#: src/gtkui/menus.c:137 +msgid "_Preferences ..." +msgstr "_Nustatymai ..." + +#: src/gtkui/menus.c:138 src/skins/ui_manager.c:406 +msgid "_Quit" +msgstr "_IÅ¡eiti" + +#: src/gtkui/menus.c:141 +msgid "_Play" +msgstr "_Groti" + +#: src/gtkui/menus.c:142 +msgid "Paus_e" +msgstr "Pauz_Ä—" + +#: src/gtkui/menus.c:143 +msgid "_Stop" +msgstr "_Sustabdyti" + +#: src/gtkui/menus.c:144 +msgid "Pre_vious" +msgstr "Ankste_snis" + +#: src/gtkui/menus.c:145 +msgid "_Next" +msgstr "_Sekantis" + +#: src/gtkui/menus.c:147 +msgid "_Repeat" +msgstr "_Kartoti" + +#: src/gtkui/menus.c:148 +msgid "S_huffle" +msgstr "S_umaiÅ¡yti" + +#: src/gtkui/menus.c:149 +msgid "N_o Playlist Advance" +msgstr "N_esislinkti grojaraÅ¡Äiu" + +#: src/gtkui/menus.c:150 +msgid "Stop _After This Song" +msgstr "Sustabdyti _po Å¡itos dainos" + +#: src/gtkui/menus.c:152 src/gtkui/menus.c:212 +msgid "Song _Info ..." +msgstr "Dainos _informacija ..." + +#: src/gtkui/menus.c:153 +msgid "Jump to _Time ..." +msgstr "Å okti į _laikÄ…" + +#: src/gtkui/menus.c:154 +msgid "_Jump to Song ..." +msgstr "_Pereiti prie dainos ..." + +#: src/gtkui/menus.c:157 +msgid "By Track _Number" +msgstr "Pagal takelio _numerį" + +#: src/gtkui/menus.c:158 +msgid "By _Title" +msgstr "Pagal _pavadinimÄ…" + +#: src/gtkui/menus.c:159 +msgid "By _Artist" +msgstr "Pagal _atlikÄ—jÄ…" + +#: src/gtkui/menus.c:160 +msgid "By A_lbum" +msgstr "Pagal a_lbumÄ…" + +#: src/gtkui/menus.c:161 +msgid "By Release _Date" +msgstr "Pagal iÅ¡leidimo _datÄ…" + +#: src/gtkui/menus.c:162 +msgid "By _File Path" +msgstr "Pagal _failo keliÄ…" + +#: src/gtkui/menus.c:163 +msgid "By _Custom Title" +msgstr "Pagal _derintÄ… eilutÄ™" + +#: src/gtkui/menus.c:165 +msgid "R_everse Order" +msgstr "A_tvirkÅ¡tine tvarka" + +#: src/gtkui/menus.c:166 +msgid "_Random Order" +msgstr "_Atsitiktine tvarka" + +#: src/gtkui/menus.c:169 src/gtkui/menus.c:214 +msgid "_Refresh" +msgstr "_Atnaujinti" + +#: src/gtkui/menus.c:170 +msgid "Remove _Unavailable Files" +msgstr "PaÅ¡alinti _neprieinamus failus" + +#: src/gtkui/menus.c:172 +msgid "_Sort" +msgstr "_Rikiuoti" + +#: src/gtkui/menus.c:174 +msgid "_New" +msgstr "_Naujas" + +#: src/gtkui/menus.c:175 src/gtkui/menus.c:225 +msgid "_Close" +msgstr "_Uždaryti" + +#: src/gtkui/menus.c:177 +msgid "_Import ..." +msgstr "_Ä®kelti ..." + +#: src/gtkui/menus.c:178 +msgid "_Export ..." +msgstr "_Eksportuoti ..." + +#: src/gtkui/menus.c:180 +msgid "_Playlist Manager ..." +msgstr "_GrojaraÅ¡Äio redaktorius ..." + +#: src/gtkui/menus.c:181 +msgid "_Queue Manager ..." +msgstr "_EilÄ—s redaktorius ..." + +#: src/gtkui/menus.c:184 +msgid "Volume _Up" +msgstr "Pagarsi_nti" + +#: src/gtkui/menus.c:185 +msgid "Volume _Down" +msgstr "Patil_dyti" + +#: src/gtkui/menus.c:187 +msgid "_Equalizer" +msgstr "_Ekvalaizeris" + +#: src/gtkui/menus.c:189 +msgid "E_ffects" +msgstr "E_fektai" + +#: src/gtkui/menus.c:192 +msgid "_Interface" +msgstr "_Vartotojo sÄ…saja" + +#: src/gtkui/menus.c:193 +msgid "_Visualizations" +msgstr "_Vizualizacijos" + +#: src/gtkui/menus.c:195 +msgid "Show _Menu Bar" +msgstr "Rodyti _meniu juostÄ…" + +#: src/gtkui/menus.c:196 +msgid "Show I_nfo Bar" +msgstr "Rodyti i_nfo juostÄ…" + +#: src/gtkui/menus.c:197 +msgid "Show _Status Bar" +msgstr "Rodyti _bÅ«senos juostÄ…" + +#: src/gtkui/menus.c:199 +msgid "Show Column _Headers" +msgstr "Rodyti stulpelio _antraÅ¡tes" + +#: src/gtkui/menus.c:200 +msgid "Choose _Columns ..." +msgstr "Pasirinkti _stulpelius ..." + +#: src/gtkui/menus.c:201 +msgid "Scrol_l on Song Change" +msgstr "Slinkt_is keiÄiantis dainai" + +#: src/gtkui/menus.c:204 +msgid "_File" +msgstr "_Failas" + +#: src/gtkui/menus.c:205 +msgid "_Playback" +msgstr "_AtkÅ«rimas" + +#: src/gtkui/menus.c:206 +msgid "P_laylist" +msgstr "G_rojaraÅ¡tis" + +#: src/gtkui/menus.c:207 src/gtkui/menus.c:221 +msgid "_Services" +msgstr "_Paslaugos" + +#: src/gtkui/menus.c:208 +msgid "_Output" +msgstr "_IÅ¡vestis" + +#: src/gtkui/menus.c:209 +msgid "_View" +msgstr "_Rodymas" + +#: src/gtkui/menus.c:213 +msgid "_Queue/Unqueue" +msgstr "_Ä® eilÄ™/IÅ¡ eilÄ—s" + +#: src/gtkui/menus.c:216 +msgid "Cu_t" +msgstr "IÅ¡kirpt_i" + +#: src/gtkui/menus.c:217 +msgid "_Copy" +msgstr "_Kopijuoti" + +#: src/gtkui/menus.c:218 +msgid "_Paste" +msgstr "_Ä®klijuoti" + +#: src/gtkui/menus.c:219 +msgid "Select _All" +msgstr "Pasirinkti _viskÄ…" + +#: src/gtkui/menus.c:224 +msgid "_Rename" +msgstr "_Pervadinti" + +#: src/gtkui/ui_gtk.c:95 +msgid "GTK Interface" +msgstr "GTK vartotojo sÄ…saja" + +#: src/gtkui/ui_gtk.c:156 src/skins/ui_main.c:303 +#, c-format +msgid "%s - Audacious" +msgstr "%s - Audacious" + +#: src/gtkui/ui_gtk.c:162 +msgid "Buffering ..." +msgstr "Ä®kraunama į atmintį ..." + +#: src/gtkui/ui_gtk.c:165 src/skins/ui_main.c:305 src/skins/ui_main.c:1504 +msgid "Audacious" +msgstr "Audacious" + +#: src/gtkui/ui_gtk.c:216 src/skins/plugin.c:190 +msgid "Error" +msgstr "Klaida" + +#: src/gtkui/ui_playlist_notebook.c:97 +msgid "Close" +msgstr "Užverti" + +#: src/gtkui/ui_statusbar.c:105 src/skins/ui_main.c:460 +msgid "mono" +msgstr "mono" + +#: src/gtkui/ui_statusbar.c:107 src/skins/ui_main.c:459 +msgid "stereo" +msgstr "stereo" + +#: src/gtkui/ui_statusbar.c:109 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d kanalas" +msgstr[1] "%d kanalai" +msgstr[2] "%d kanalų" + +#: src/gtkui/ui_statusbar.c:124 +#, c-format +msgid "%d kbps" +msgstr "%d kbps" + +#: src/hotkey/gui.c:71 +msgid "Previous Track" +msgstr "Ankstesnis takelis" + +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "Groti" + +#: src/hotkey/gui.c:73 +msgid "Pause/Resume" +msgstr "Sustabdyti/Paleisti" + +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +msgid "Stop" +msgstr "Stop" + +#: src/hotkey/gui.c:75 +msgid "Next Track" +msgstr "Kitas takelis" + +#: src/hotkey/gui.c:76 +msgid "Forward 5 Seconds" +msgstr "5 sekundes į priekį" + +#: src/hotkey/gui.c:77 +msgid "Rewind 5 Seconds" +msgstr "5 sekundes atgal" + +#: src/hotkey/gui.c:78 +msgid "Mute" +msgstr "Nutildyti" + +#: src/hotkey/gui.c:79 +msgid "Volume Up" +msgstr "Pagarsinti" + +#: src/hotkey/gui.c:80 +msgid "Volume Down" +msgstr "Patildyti" + +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Jump to File" +msgstr "Å okti į failÄ…" + +#: src/hotkey/gui.c:82 +msgid "Toggle Player Windows" +msgstr "Perjungti grotuvo langus" + +#: src/hotkey/gui.c:83 +msgid "Show On-Screen-Display" +msgstr "Rodyti On-Screen-Display" + +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "Perjungti KartojimÄ…" + +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "Perjungti maiÅ¡ymÄ…" + +#: src/hotkey/gui.c:95 +msgid "(none)" +msgstr "(joks)" + +#: src/hotkey/gui.c:232 +msgid "" +"It is not recommended to bind the primary mouse buttons without modificators.\n" +"\n" +"Do you want to continue?" +msgstr "" +"Nerekomenduojama susieti pagrindinius pelÄ—s mygtukus be prižiÅ«rÄ—tojų\n" +"\n" +"TÄ™sti?" + +#: src/hotkey/gui.c:234 +msgid "Binding mouse buttons" +msgstr "Saistyti pelÄ—s mygtukus" + +#: src/hotkey/gui.c:384 +msgid "Global Hotkey Plugin Configuration" +msgstr "Global Hotkey įskiepio konfiguravimas" + +#: src/hotkey/gui.c:400 +msgid "" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." +msgstr "" +"Paspauskite klavišų kombinacijÄ… teksto lauke\n" +"Taip pat galima sieti ir pelÄ—s mygtukus." + +#: src/hotkey/gui.c:405 +msgid "Hotkeys:" +msgstr "KarÅ¡tieji klaviÅ¡ai:" + +#: src/hotkey/gui.c:424 +msgid "Action:" +msgstr "Veiksmas:" + +#: src/hotkey/gui.c:432 +msgid "Key Binding:" +msgstr "KlaviÅ¡o susiejimas:" + +#: src/hotkey/gui.c:663 +msgid "About Global Hotkey Plugin" +msgstr "Apie Global Hotkey įskiepį" + +#: src/hotkey/gui.c:664 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributers include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä \n" +"\t\t\tBryn Davies \n" +"\t\t\tJonathan A. Davis \n" +"\t\t\tJeremy Tan \n" +"\n" +msgstr "" +"Globalus karÅ¡tųjų klavišų įskiepis\n" +"Valdyk grotuvÄ… su globalių klavišų kombinacijomis arba multimedia klaviÅ¡ais.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"KÅ«rÄ—jai:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä \n" +"\t\t\tBryn Davies \n" +"\t\t\tJonathan A. Davis \n" +"\t\t\tJeremy Tan \n" +"\n" + +#: src/jack/configure.c:66 +msgid "Connect to all available jack ports" +msgstr "Prisijungti prie visų prieinamų jack prievadų" + +#: src/jack/configure.c:73 +msgid "Connect only the output ports" +msgstr "Prisijungti tik prie iÅ¡vesties prievadų" + +#: src/jack/configure.c:80 +msgid "Connect to no ports" +msgstr "Nesijungti prie jokių prievadų" + +#: src/jack/configure.c:98 +msgid "jack Plugin configuration" +msgstr "jack įskiepio konfigÅ«racija" + +#: src/jack/configure.c:116 +msgid "Connection mode:" +msgstr "Prisijungimo režimas:" + +#: src/jack/configure.c:128 +msgid "Enable debug printing" +msgstr "Ä®jungti derinimo praneÅ¡imus" + +#: src/jack/jack.c:435 +msgid "" +"XMMS jack Driver 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" +"\n" +"Audacious port by\n" +"Giacomo Lozito from develia.org" +msgstr "" +"XMMS jack Driver 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" +"\n" +"PritaikÄ— Audacious programai\n" +"Giacomo Lozito from develia.org" + +#: src/jack/jack.c:440 +msgid "About JACK Output Plugin 0.17" +msgstr "Apie JACK iÅ¡vesties įskiepį 0.17" + +#: src/ladspa/plugin.c:415 +msgid "About LADSPA Host" +msgstr "Apie LADSPA Hot" + +#: src/ladspa/plugin.c:516 +#, c-format +msgid "%s Settings" +msgstr "%s nustatymai:" + +#: src/ladspa/plugin.c:584 +msgid "LADSPA Host Settings" +msgstr "LADSPA Host nustatymai" + +#: src/ladspa/plugin.c:593 +msgid "Module paths:" +msgstr "Modulio kelias:" + +#: src/ladspa/plugin.c:598 +msgid "" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." +msgstr "" +"Atskirk kelis kelius su dvitaÅ¡kiu.\n" +"Å ie keliai ieÅ¡komi neradus ko reikia LADSPA_PATH kelyje.\n" +"Kai pridedamai nauji keliai, paspausk ENTER naujų įskiepių paieÅ¡kai." + +#: src/ladspa/plugin.c:614 +msgid "Available plugins:" +msgstr "Prieinami įskiepiai:" + +#: src/ladspa/plugin.c:626 +msgid "Enable" +msgstr "Ä®jungti" + +#: src/ladspa/plugin.c:632 +msgid "Enabled plugins:" +msgstr "Ä®jungti įskiepiai:" + +#: src/ladspa/plugin.c:647 +msgid "Settings" +msgstr "Nustatymai" + +#: src/lyricwiki/lyricwiki.c:267 +msgid "" +"\n" +"Looking for lyrics..." +msgstr "" +"\n" +"IeÅ¡koma dainos žodžių..." + +#: src/lyricwiki/lyricwiki.c:304 +msgid "" +"\n" +"Connecting to lyrics.wikia.com..." +msgstr "" +"\n" +"Jungiamasi prie lyrics.wikia.com..." + +#: src/lyricwiki/lyricwiki.c:377 +msgid "" +"\n" +"No lyrics were found." +msgstr "" +"\n" +"Dainų žodžiai nerasti." + +#: src/metronom/metronom.c:86 +msgid "About Metronom" +msgstr "Apie Metronom" + +#: src/metronom/metronom.c:87 +msgid "" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +msgstr "" +"Takto generatorius, sukÅ«rÄ— Martin Strauss \n" +"\n" +"Norint naudoti, pridÄ—k URL: tact://beats*num/den\n" +"pvz. tact://77 groti 77 dūžiai per minutÄ™\n" +"arba tact://60*3/4 groti 60 bpm 3/4 taktu" + +#: src/metronom/metronom.c:144 +#, c-format +msgid "Tact generator: %d bpm" +msgstr "Takto generatorius: %d bpm" + +#: src/metronom/metronom.c:146 +#, c-format +msgid "Tact generator: %d bpm %d/%d" +msgstr "Takto generatorius: %d bpm %d/%d" + +#: src/mixer/plugin.c:64 +msgid "About Channel Mixer" +msgstr "Apie kanalų mikserį" + +#: src/mixer/plugin.c:93 +msgid "Channel Mixer Settings" +msgstr "Kanalų Mikserio nustatymai" + +#: src/mixer/plugin.c:102 +msgid "Output channels:" +msgstr "IÅ¡vesties kanalai:" + +#: src/mixer/plugin.c:112 +msgid "Changes take effect at the next song change." +msgstr "Pakeitimai įsigalios nuo sekanÄios dainos." + +#: src/mpg123/mpg123.c:191 +msgid "Surround" +msgstr "Apsupimas" + +#: src/mtp_up/mtp.c:340 +msgid "Upload in progress..." +msgstr "IÅ¡siunÄiama..." + +#: src/mtp_up/mtp.c:352 +msgid "Upload to MTP Device" +msgstr "IÅ¡siųsti į MTP įrenginį" + +#: src/mtp_up/mtp.c:353 +msgid "Disconnect MTP Device" +msgstr "Atjungti MTP įrenginį" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Stopped" +msgstr "Sustabdyta" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Audacious is not playing." +msgstr "Audacious negroja." + +#: src/null/null.c:64 +msgid "Null output plugin " +msgstr "Null iÅ¡vesties įskiepio" + +#: src/null/null.c:65 +msgid "" +" by Christian Birchinger \n" +"based on the XMMS plugin by HÃ¥vard KvÃ¥l " +msgstr "" +" kÅ«rÄ— Christian Birchinger \n" +"paremta XMMS įskiepiu kurį sukÅ«rÄ— HÃ¥vard KvÃ¥l " + +#: src/null/null.c:68 +msgid "About Null Output" +msgstr "Apie Null iÅ¡vestį" + +#: src/null/null.c:89 +msgid "Null output preferences" +msgstr "Null iÅ¡vesties nustatymai" + +#: src/null/null.c:100 +msgid "Run in real time" +msgstr "Vykdyti realiu laiku" + +#: src/oss4/configure.c:81 +msgid "1. Default device" +msgstr "1. Numatytasis įrenginys" + +#: src/oss4/configure.c:138 +msgid "OSS4 Output Plugin Preferences" +msgstr "OSS4 iÅ¡vesties įskiepio nustatymai" + +#: src/oss4/configure.c:150 src/OSS/configure.c:194 +msgid "Audio device:" +msgstr "Audio įrenginys:" + +#: src/oss4/configure.c:178 src/OSS/configure.c:217 src/OSS/configure.c:260 +msgid "Use alternate device:" +msgstr "Naudoti alternatyvų įrenginį:" + +#: src/oss4/configure.c:193 +msgid "Save volume between sessions" +msgstr "IÅ¡saugoti garsÄ… tarp sesijų" + +#: src/oss4/configure.c:197 +msgid "Enable format conversions made by the OSS software." +msgstr "Ä®galinti formato keitimÄ… kurį padarÄ— OSS programinÄ— įranga." + +#: src/oss4/configure.c:201 +msgid "Enable exclusive mode to prevent virtual mixing." +msgstr "Ä®galinti iÅ¡skirtinį režimÄ…, siekiant iÅ¡vengti virtualaus maiÅ¡ymosi." + +#: src/oss4/plugin.c:51 +msgid "About OSS4 Plugin" +msgstr "Apie OSS4 įskiepį" + +#: src/oss4/utils.c:211 +msgid "OSS4 error" +msgstr "OSS4 klaida" + +#: src/OSS/configure.c:137 +#, c-format +msgid "Default (%s)" +msgstr "Numatytasis (%s)" + +#: src/OSS/configure.c:178 +msgid "OSS Driver configuration" +msgstr "OSS Driver konfigÅ«racija" + +#: src/OSS/configure.c:281 +msgid "Devices" +msgstr "Ä®renginiai" + +#: src/OSS/configure.c:283 +msgid "Buffering:" +msgstr "Buferiavimas:" + +#: src/OSS/configure.c:296 +msgid "Pre-buffer (percent):" +msgstr "PrieÅ¡laikinis buferiavimas (procentais):" + +#: src/OSS/configure.c:307 +msgid "Buffering" +msgstr "Buferiavimas" + +#: src/OSS/configure.c:308 +msgid "Mixer Settings:" +msgstr "Mikserio nustatymai:" + +#: src/OSS/configure.c:314 +msgid "Volume controls Master not PCM" +msgstr "Garso valdymas Master ne PCM" + +#: src/OSS/configure.c:320 +msgid "Mixer" +msgstr "Mikseris" + +#: src/OSS/OSS.c:41 +msgid "About OSS Driver" +msgstr "Apie OSS Driver" + +#: src/pulse_audio/pulse_audio.c:669 +msgid "About Audacious PulseAudio Output Plugin" +msgstr "Apie Audacious PulseAudio iÅ¡vesties įskiepį" + +#: src/resample/plugin.c:89 +msgid "About Sample Rate Converter Plugin" +msgstr "Apie diskretizavimo dažnio keitÄ—jo įskiepį" + +#: src/resample/plugin.c:144 +msgid "Sample Rate Converter Preferences" +msgstr "Diskretizavimo dažnio keitÄ—jo nustatymai" + +#: src/resample/plugin.c:156 +msgid "Rate mappings:" +msgstr "Dažnio parodymai:" + +#: src/resample/plugin.c:179 +msgid "All others:" +msgstr "Visi kiti:" + +#: src/resample/plugin.c:191 +msgid "Method:" +msgstr "Metodas:" + +#: src/scrobbler/configure.c:123 src/scrobbler/configure.c:198 +msgid "Change password" +msgstr "Keisti slaptažodį" + +#: src/scrobbler/configure.c:144 +msgid "Services" +msgstr "Tarnyba" + +#: src/scrobbler/configure.c:166 +msgid "Username:" +msgstr "Naudotojo vardas:" + +#: src/scrobbler/configure.c:172 +msgid "Password:" +msgstr "Slaptažodis:" + +#: src/scrobbler/configure.c:180 +msgid "Scrobbler URL:" +msgstr "Scrobbler URL:" + +#: src/scrobbler/configure.c:212 +msgid "Last.FM" +msgstr "Last.FM" + +#: src/scrobbler/configure.c:239 +msgid "Scrobbler" +msgstr "Scrobbler" + +#: src/scrobbler/plugin.c:194 +msgid "" +"Audacious AudioScrobbler Plugin\n" +"\n" +"Originally created by Audun Hove and Pipian \n" +msgstr "" +"Audacious AudioScrobbler įskiepis\n" +"\n" +"Originaliai sukÅ«rÄ— Audun Hove ir Pipian \n" + +#: src/scrobbler/plugin.c:196 +msgid "About Scrobbler Plugin" +msgstr "Apie Scrobbler įskiepį" + +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" +msgstr "Apie SDL iÅ¡vesties įskiepį" + +#: src/sdlout/plugin.c:78 +msgid "SDL error" +msgstr "SDL klaida" + +#: src/search-tool/search-tool.c:42 +msgid "Genre" +msgstr "Žanras" + +#: src/search-tool/search-tool.c:96 src/search-tool/search-tool.c:106 +msgid "Library" +msgstr "Fonoteka" + +#: src/search-tool/search-tool.c:591 +msgid "_Create Playlist" +msgstr "_Sukurti grojaraÅ¡tį" + +#: src/search-tool/search-tool.c:598 +msgid "_Add to Playlist" +msgstr "_PridÄ—ti į grojaraÅ¡tį" + +#: src/search-tool/search-tool.c:641 +msgid "Search library" +msgstr "IeÅ¡koti fonotekoje" + +#: src/search-tool/search-tool.c:645 +msgid "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." +msgstr "" +"NorÄ—dami importuoti muzikÄ… į Audacious fonotekÄ…, pasirinkite aplankÄ… ir " +"paspauskite „atnaujinti“ piktogramÄ…." + +#: src/search-tool/search-tool.c:653 +msgid "Please wait ..." +msgstr "Palaukite..." + +#: src/search-tool/search-tool.c:675 +msgid "Choose Folder" +msgstr "Pasirinkite aplankÄ…" + +#: src/skins/plugin.c:167 +msgid "About Skinned GUI" +msgstr "Apie Skinned GUI" + +#: src/skins/plugin.c:168 +msgid "" +"Copyright (c) 2008, by Tomasz MoÅ„ \n" +"\n" +msgstr "" +"Copyright (c) 2008, by Tomasz MoÅ„ \n" +"\n" + +#: src/skins/skins_cfg.c:207 +msgid "_Player:" +msgstr "_Grotuvas:" + +#: src/skins/skins_cfg.c:208 +msgid "Select main player window font:" +msgstr "Pasirinkti pagrindinį lango Å¡riftÄ…:" + +#: src/skins/skins_cfg.c:210 +msgid "_Playlist:" +msgstr "_GrojaraÅ¡tis:" + +#: src/skins/skins_cfg.c:211 +msgid "Select playlist font:" +msgstr "Pasirinkti grojaraÅ¡Äio Å¡riftÄ…:" + +#: src/skins/skins_cfg.c:215 +msgid "_Fonts" +msgstr "_Å riftai" + +#: src/skins/skins_cfg.c:218 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "Naudoti bitmap Å¡riftus (palaiko tik ASCII)" + +#: src/skins/skins_cfg.c:220 +msgid "Scroll song title in both directions" +msgstr "Slinkti pavadinimÄ… į abi puses" + +#: src/skins/skins_cfg.c:298 +msgid "_Skin" +msgstr "_IÅ¡vaizda" + +#: src/skins/skins_cfg.c:345 +msgid "Interface Preferences" +msgstr "SÄ…sajos nustatymai" + +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "Preamp" + +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" +msgstr "31 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "63 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" +msgstr "125 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" +msgstr "250 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" +msgstr "500 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" +msgstr "1 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" +msgstr "2 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" +msgstr "4 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" +msgstr "8 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" +msgstr "16 kHz" + +#: src/skins/ui_equalizer.c:379 +msgid "Audacious Equalizer" +msgstr "Audacious ekvalaizeris" + +#: src/skins/ui_equalizer.c:887 +msgid "Presets" +msgstr "Å ablonai" + +#: src/skins/ui_equalizer.c:968 src/skins/ui_manager.c:442 +msgid "Load preset" +msgstr "Ä®krauti Å¡ablonÄ…" + +#: src/skins/ui_equalizer.c:985 +msgid "Load auto-preset" +msgstr "Ä®krauti auto iÅ¡ankstinius nustatymus" + +#: src/skins/ui_equalizer.c:1015 src/skins/ui_equalizer.c:1033 +#: src/skins/ui_equalizer.c:1049 +msgid "Load equalizer preset" +msgstr "Ä®krauti ekvalaizerio iÅ¡ankstinius nustatymus" + +#: src/skins/ui_equalizer.c:1068 src/skins/ui_manager.c:463 +msgid "Save preset" +msgstr "IÅ¡saugoti Å¡ablonus" + +#: src/skins/ui_equalizer.c:1084 +msgid "Save auto-preset" +msgstr "IÅ¡saugoti auto iÅ¡ankstinius nustatymus" + +#: src/skins/ui_equalizer.c:1114 src/skins/ui_equalizer.c:1150 +msgid "Save equalizer preset" +msgstr "IÅ¡saugoti ekvalaizerio iÅ¡ankstinius nustatymus" + +#: src/skins/ui_equalizer.c:1169 src/skins/ui_manager.c:478 +msgid "Delete preset" +msgstr "IÅ¡trinti Å¡ablonÄ…" + +#: src/skins/ui_equalizer.c:1186 +msgid "Delete auto-preset" +msgstr "IÅ¡trinti auto iÅ¡ankstinius nustatymus" + +#: src/skins/ui_main.c:444 +msgid "kbps" +msgstr "kbps" + +#: src/skins/ui_main.c:452 +msgid "kHz" +msgstr "kHz" + +#: src/skins/ui_main.c:459 +msgid "surround" +msgstr "surround" + +#: src/skins/ui_main.c:807 +#, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "Eiti į %d:%-2.2d / %d:%-2.2d" + +#: src/skins/ui_main.c:828 +#, c-format +msgid "Volume: %d%%" +msgstr "Garsumas: %d%%" + +#: src/skins/ui_main.c:851 +#, c-format +msgid "Balance: %d%% left" +msgstr "Balansas: %d%% kairÄ—" + +#: src/skins/ui_main.c:853 +msgid "Balance: center" +msgstr "Balansas: centras" + +#: src/skins/ui_main.c:855 +#, c-format +msgid "Balance: %d%% right" +msgstr "Balansas: %d%% deÅ¡inÄ—" + +#: src/skins/ui_main.c:981 +msgid "Options Menu" +msgstr "PasirinkÄių meniu" + +#: src/skins/ui_main.c:985 +msgid "Disable 'Always On Top'" +msgstr "IÅ¡jungti 'Visada virÅ¡uje'" + +#: src/skins/ui_main.c:987 +msgid "Enable 'Always On Top'" +msgstr "Ä®jungti 'Visada virÅ¡uje'" + +#: src/skins/ui_main.c:990 +msgid "File Info Box" +msgstr "Failo informacijos langas" + +#: src/skins/ui_main.c:995 +msgid "Visualization Menu" +msgstr "Vizualizacijos meniu" + +#: src/skins/ui_main.c:1653 +msgid "Single mode." +msgstr "Vieno režimas." + +#: src/skins/ui_main.c:1655 +msgid "Playlist mode." +msgstr "GrojaraÅ¡Äio režimas." + +#: src/skins/ui_main.c:1677 +msgid "Stopping after song." +msgstr "Sustabdymas po dainos." + +#: src/skins/ui_main.c:1679 +msgid "Not stopping after song." +msgstr "Nesustabdyti po dainos." + +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 +msgid "Autoscroll Songname" +msgstr "AutomatiÅ¡kai slinkti dainos pavadinimÄ…" + +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "Sustabdyti po grojamos dainos" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 +msgid "Peaks" +msgstr "Pikai" + +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "Kartoti" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "MaiÅ¡yti" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "Nesislinkti grojaraÅ¡Äiu" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 +msgid "Show Player" +msgstr "Rodyti grotuvÄ…" + +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 +msgid "Show Playlist Editor" +msgstr "Rodyti grojaraÅ¡Äio redaktorių" + +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 +msgid "Show Equalizer" +msgstr "Rodyti ekvalaizerį" + +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 +msgid "Always on Top" +msgstr "Visada virÅ¡uje" + +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 +msgid "Put on All Workspaces" +msgstr "Rodyti visuose darbalaukiuose" + +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 +msgid "Roll up Player" +msgstr "Sustumti grotuvÄ…" + +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 +msgid "Roll up Playlist Editor" +msgstr "Sustumti grojaraÅ¡Äio redaktorių" + +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 +msgid "Roll up Equalizer" +msgstr "Sustumti ekvalaizerį" + +#: src/skins/ui_manager.c:115 +msgid "Analyzer" +msgstr "Analizatorius" + +#: src/skins/ui_manager.c:116 +msgid "Scope" +msgstr "Akiratis" + +#: src/skins/ui_manager.c:117 +msgid "Voiceprint" +msgstr "Voiceprint" + +#: src/skins/ui_manager.c:118 +msgid "Off" +msgstr "IÅ¡jungta" + +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 +msgid "Normal" +msgstr "Normalus" + +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 +msgid "Fire" +msgstr "Ugnis" + +#: src/skins/ui_manager.c:124 +msgid "Vertical Lines" +msgstr "Vertikalios linijos" + +#: src/skins/ui_manager.c:128 +msgid "Lines" +msgstr "Linijos" + +#: src/skins/ui_manager.c:129 +msgid "Bars" +msgstr "Juostos" + +#: src/skins/ui_manager.c:133 +msgid "Dot Scope" +msgstr "TaÅ¡ko akiratis" + +#: src/skins/ui_manager.c:134 +msgid "Line Scope" +msgstr "Linijos akiratis" + +#: src/skins/ui_manager.c:135 +msgid "Solid Scope" +msgstr "Vientisas akiratis" + +#: src/skins/ui_manager.c:141 +msgid "Ice" +msgstr "Ledas" + +#: src/skins/ui_manager.c:146 +msgid "Smooth" +msgstr "Tolygus" + +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 +msgid "Slowest" +msgstr "LÄ—Äiausias" + +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 +msgid "Slow" +msgstr "LÄ—tas" + +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 +msgid "Medium" +msgstr "Vidutinis" + +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 +msgid "Fast" +msgstr "Greitas" + +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 +msgid "Fastest" +msgstr "GreiÄiausias" + +#: src/skins/ui_manager.c:166 +msgid "Time Elapsed" +msgstr "PraÄ—jo laiko" + +#: src/skins/ui_manager.c:167 +msgid "Time Remaining" +msgstr "Liko laiko" + +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "PauzÄ—" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "Ankstesnis" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "Sekantis" + +#: src/skins/ui_manager.c:196 +msgid "Visualization" +msgstr "Vizualizacija" + +#: src/skins/ui_manager.c:197 +msgid "Visualization Mode" +msgstr "Vizualizacijos režimas" + +#: src/skins/ui_manager.c:198 +msgid "Analyzer Mode" +msgstr "Analizatoriaus režimas" + +#: src/skins/ui_manager.c:199 +msgid "Scope Mode" +msgstr "AkiraÄio režimas" + +#: src/skins/ui_manager.c:200 +msgid "Voiceprint Mode" +msgstr "Voiceprint režimas" + +#: src/skins/ui_manager.c:201 +msgid "WindowShade VU Mode" +msgstr "WindowShade VU režimas" + +#: src/skins/ui_manager.c:202 +msgid "Analyzer Falloff" +msgstr "Analizatoriaus nukritimas" + +#: src/skins/ui_manager.c:203 +msgid "Peaks Falloff" +msgstr "Pikų krytis" + +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "GrojaraÅ¡tis" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "Naujas grojaraÅ¡tis" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 +msgid "Select Next Playlist" +msgstr "Pasirinkti sekantį grojaraÅ¡tį" + +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 +msgid "Select Previous Playlist" +msgstr "Pasirinkti ankstesnį grojaraÅ¡tį" + +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "IÅ¡trinti grojaraÅ¡tį" + +#: src/skins/ui_manager.c:222 +msgid "Import Playlist" +msgstr "Ä®kelti grojaraÅ¡tį" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "Ä®krauna grojaraÅ¡tį į pasirinktÄ… grojaraÅ¡tį." + +#: src/skins/ui_manager.c:226 +msgid "Export Playlist" +msgstr "Eksportuoti grojaraÅ¡tį" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "IÅ¡saugo pasirinktÄ… grojaraÅ¡tį." + +#: src/skins/ui_manager.c:229 +msgid "Refresh List" +msgstr "Atnaujinti sÄ…raÅ¡Ä…" + +#: src/skins/ui_manager.c:230 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "Atnaujina meta duomenis susietus su grojaraÅ¡Äio elementu." + +#: src/skins/ui_manager.c:233 +msgid "Playlist Manager" +msgstr "GrojaraÅ¡Äio redaktorius" + +#: src/skins/ui_manager.c:234 +msgid "Queue Manager" +msgstr "EilÄ—s redaktorius" + +#: src/skins/ui_manager.c:237 +msgid "View" +msgstr "Rodymas" + +#: src/skins/ui_manager.c:238 +msgid "Interface" +msgstr "Vartotojo sÄ…saja" + +#: src/skins/ui_manager.c:239 +msgid "Interface Preferences ..." +msgstr "Vartotojo sÄ…sajos nustatymai..." + +#: src/skins/ui_manager.c:243 +msgid "Add Internet Address..." +msgstr "PridÄ—ti interneto adresÄ…..." + +#: src/skins/ui_manager.c:244 +msgid "Adds a remote track to the playlist." +msgstr "PridÄ—ti nutolusį takelį į grojaraÅ¡tį." + +#: src/skins/ui_manager.c:247 +msgid "Add Files..." +msgstr "PridÄ—ti failus..." + +#: src/skins/ui_manager.c:248 +msgid "Adds files to the playlist." +msgstr "Prideda failus į grojaraÅ¡tį." + +#: src/skins/ui_manager.c:253 +msgid "Search and Select" +msgstr "IeÅ¡koti ir pasirinkti" + +#: src/skins/ui_manager.c:254 +msgid "" +"Searches the playlist and selects playlist entries based on specific " +"criteria." +msgstr "IeÅ¡ko ir pasirenka grojaraÅ¡Äio elementus pagal nurodytÄ… kriterijų." + +#: src/skins/ui_manager.c:257 +msgid "Invert Selection" +msgstr "Apversti pasirinktus" + +#: src/skins/ui_manager.c:258 +msgid "Inverts the selected and unselected entries." +msgstr "ApverÄia visus elementus." + +#: src/skins/ui_manager.c:261 +msgid "Select All" +msgstr "Pasirinkti viskÄ…" + +#: src/skins/ui_manager.c:262 +msgid "Selects all of the playlist entries." +msgstr "Pasirenka visus grojaraÅ¡Äio įraÅ¡us." + +#: src/skins/ui_manager.c:265 +msgid "Select None" +msgstr "Nieko nepasirinkti" + +#: src/skins/ui_manager.c:266 +msgid "Deselects all of the playlist entries." +msgstr "Atžymi visus grojaraÅ¡Äio įraÅ¡us." + +#: src/skins/ui_manager.c:271 +msgid "Remove All" +msgstr "PaÅ¡alinti visus" + +#: src/skins/ui_manager.c:272 +msgid "Removes all entries from the playlist." +msgstr "PaÅ¡alina visus įraÅ¡us iÅ¡ grojaraÅ¡Äio." + +#: src/skins/ui_manager.c:275 +msgid "Clear Queue" +msgstr "IÅ¡valyti eilÄ™" + +#: src/skins/ui_manager.c:276 +msgid "Clears the queue associated with this playlist." +msgstr "IÅ¡valo eilÄ™ susietÄ… su Å¡iuo grojaraÅ¡Äiu." + +#: src/skins/ui_manager.c:279 +msgid "Remove Unavailable Files" +msgstr "PaÅ¡alina neprieinamus failus" + +#: src/skins/ui_manager.c:280 +msgid "Removes unavailable files from the playlist." +msgstr "PaÅ¡alina neprieinamus failus iÅ¡ grojaraÅ¡Äio." + +#: src/skins/ui_manager.c:283 +msgid "Remove Duplicates" +msgstr "PaÅ¡alinti dubliuotus" + +#: src/skins/ui_manager.c:285 src/skins/ui_manager.c:317 +#: src/skins/ui_manager.c:347 +msgid "By Title" +msgstr "Pagal pavadinimÄ…" + +#: src/skins/ui_manager.c:286 +msgid "Removes duplicate entries from the playlist by title." +msgstr "PaÅ¡alina dubliuotus įraÅ¡us iÅ¡ grojaraÅ¡Äio pagal pavadinimÄ…." + +#: src/skins/ui_manager.c:289 src/skins/ui_manager.c:329 +#: src/skins/ui_manager.c:359 +msgid "By Filename" +msgstr "Pagal failo vardÄ…" + +#: src/skins/ui_manager.c:290 +msgid "Removes duplicate entries from the playlist by filename." +msgstr "PaÅ¡alina dubliuotus įraÅ¡us iÅ¡ grojaraÅ¡Äio pagal failo vardÄ…." + +#: src/skins/ui_manager.c:293 src/skins/ui_manager.c:333 +#: src/skins/ui_manager.c:363 +msgid "By Path + Filename" +msgstr "Pagal keliÄ… + failo vardÄ…" + +#: src/skins/ui_manager.c:294 +msgid "Removes duplicate entries from the playlist by their full path." +msgstr "PaÅ¡alina dubliuotus įraÅ¡us iÅ¡ grojaraÅ¡Äio pagal pilnÄ… jų keliÄ…." + +#: src/skins/ui_manager.c:297 +msgid "Remove Unselected" +msgstr "PaÅ¡alint nepažymÄ—tus" + +#: src/skins/ui_manager.c:298 +msgid "Remove unselected entries from the playlist." +msgstr "PaÅ¡alina nepažymÄ—tus." + +#: src/skins/ui_manager.c:301 +msgid "Remove Selected" +msgstr "PaÅ¡alint pažymÄ—tus" + +#: src/skins/ui_manager.c:302 +msgid "Remove selected entries from the playlist." +msgstr "PaÅ¡alina pažymÄ—tus elementus iÅ¡ grojaraÅ¡Äio." + +#: src/skins/ui_manager.c:307 +msgid "Randomize List" +msgstr "SumaiÅ¡yti sÄ…raÅ¡Ä…" + +#: src/skins/ui_manager.c:308 +msgid "Randomizes the playlist." +msgstr "SumaiÅ¡o sÄ…raÅ¡Ä…." + +#: src/skins/ui_manager.c:311 +msgid "Reverse List" +msgstr "Apversti sÄ…raÅ¡Ä…" + +#: src/skins/ui_manager.c:312 +msgid "Reverses the playlist." +msgstr "ApverÄia grojaraÅ¡tį." + +#: src/skins/ui_manager.c:315 +msgid "Sort List" +msgstr "Rikiuoti sÄ…raÅ¡Ä…" + +#: src/skins/ui_manager.c:318 src/skins/ui_manager.c:348 +msgid "Sorts the list by title." +msgstr "Rikiuoja sÄ…raÅ¡Ä… pagal pavadinimÄ…." + +#: src/skins/ui_manager.c:321 src/skins/ui_manager.c:351 +msgid "By Album" +msgstr "Pagal albumÄ…" + +#: src/skins/ui_manager.c:322 src/skins/ui_manager.c:352 +msgid "Sorts the list by album." +msgstr "Rikiuoja sÄ…raÅ¡Ä… pagal albumÄ…." + +#: src/skins/ui_manager.c:325 src/skins/ui_manager.c:355 +msgid "By Artist" +msgstr "Pagal atlikÄ—jÄ…" + +#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +msgid "Sorts the list by artist." +msgstr "Rikiuoja sÄ…raÅ¡Ä… pagal atlikÄ—jÄ…." + +#: src/skins/ui_manager.c:330 src/skins/ui_manager.c:360 +msgid "Sorts the list by filename." +msgstr "Rikiuoja sÄ…raÅ¡Ä… pagal failo vardÄ…." + +#: src/skins/ui_manager.c:334 src/skins/ui_manager.c:364 +msgid "Sorts the list by full pathname." +msgstr "Rikiuoja sÄ…raÅ¡Ä… pagal pilnÄ… keliÄ…." + +#: src/skins/ui_manager.c:337 src/skins/ui_manager.c:367 +msgid "By Date" +msgstr "Pagal datÄ…" + +#: src/skins/ui_manager.c:338 src/skins/ui_manager.c:368 +msgid "Sorts the list by modification time." +msgstr "Rikiuoja sÄ…raÅ¡Ä… pagal keitimo laikÄ…." + +#: src/skins/ui_manager.c:341 src/skins/ui_manager.c:371 +msgid "By Track Number" +msgstr "Pagal takelio numerį" + +#: src/skins/ui_manager.c:342 src/skins/ui_manager.c:372 +msgid "Sorts the list by track number." +msgstr "Rikiuoja sÄ…raÅ¡Ä… pagal takelio numerį." + +#: src/skins/ui_manager.c:345 +msgid "Sort Selected" +msgstr "Rikuoti pasirinktus" + +#: src/skins/ui_manager.c:381 +msgid "File" +msgstr "Failas" + +#: src/skins/ui_manager.c:384 +msgid "Plugin Services" +msgstr "Ä®skiepių paslaugos" + +#: src/skins/ui_manager.c:386 src/skins/ui_manager.c:389 +msgid "View Track Details" +msgstr "PažiÅ«rÄ—ti takelio detales" + +#: src/skins/ui_manager.c:387 src/skins/ui_manager.c:390 +msgid "View track details" +msgstr "PažiÅ«rÄ—ti takelio detales" + +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:393 +msgid "About Audacious" +msgstr "Apie Audacious" + +#: src/skins/ui_manager.c:395 +msgid "Play File" +msgstr "Groti failÄ…" + +#: src/skins/ui_manager.c:396 +msgid "Load and play a file" +msgstr "Ä®krauti ir groti failÄ…" + +#: src/skins/ui_manager.c:398 +msgid "Play Location" +msgstr "Groti vietÄ…" + +#: src/skins/ui_manager.c:399 +msgid "Play media from the selected location" +msgstr "Groti failÄ… iÅ¡ pasirinktos vietos" + +#: src/skins/ui_manager.c:401 +msgid "Plugin services" +msgstr "Ä®skiepių paslaugos" + +#: src/skins/ui_manager.c:403 +msgid "Preferences" +msgstr "Nustatymai" + +#: src/skins/ui_manager.c:404 +msgid "Open preferences window" +msgstr "Atverti nustatymų langÄ…" + +#: src/skins/ui_manager.c:407 +msgid "Quit Audacious" +msgstr "Užverti Audacious" + +#: src/skins/ui_manager.c:409 src/skins/ui_manager.c:410 +msgid "Set A-B" +msgstr "Nustatyti A-B" + +#: src/skins/ui_manager.c:412 src/skins/ui_manager.c:413 +msgid "Clear A-B" +msgstr "IÅ¡valyti A-B" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Jump to Time" +msgstr "Å okti į laikÄ…" + +#: src/skins/ui_manager.c:421 +msgid "Queue Toggle" +msgstr "Perjungti eilÄ™" + +#: src/skins/ui_manager.c:422 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "Ä®jungia/IÅ¡jungia įraÅ¡Ä… grojaraÅ¡Äio eilÄ—je." + +#: src/skins/ui_manager.c:425 +msgid "Copy" +msgstr "Kopijuoti" + +#: src/skins/ui_manager.c:427 +msgid "Cut" +msgstr "IÅ¡kirpti" + +#: src/skins/ui_manager.c:429 +msgid "Paste" +msgstr "Ä®klijuoti" + +#: src/skins/ui_manager.c:436 +msgid "Load" +msgstr "Ä®krauti" + +#: src/skins/ui_manager.c:437 +msgid "Import" +msgstr "Ä®kelti" + +#: src/skins/ui_manager.c:438 +msgid "Save" +msgstr "IÅ¡saugoti" + +#: src/skins/ui_manager.c:439 +msgid "Delete" +msgstr "IÅ¡trinti" + +#: src/skins/ui_manager.c:441 src/skins/ui_manager.c:462 +#: src/skins/ui_manager.c:477 +msgid "Preset" +msgstr "Å ablonas" + +#: src/skins/ui_manager.c:444 src/skins/ui_manager.c:465 +#: src/skins/ui_manager.c:480 +msgid "Auto-load preset" +msgstr "Savaime įsikraunantis Å¡ablonas" + +#: src/skins/ui_manager.c:445 +msgid "Load auto-load preset" +msgstr "Ä®krauti savaime įsikraunantį Å¡ablonÄ…" + +#: src/skins/ui_manager.c:448 +msgid "Load default preset into equalizer" +msgstr "Ä®krauti numatytÄ…jį Å¡ablonÄ… į ekvalaizerį" + +#: src/skins/ui_manager.c:450 +msgid "Zero" +msgstr "Nulis" + +#: src/skins/ui_manager.c:451 +msgid "Set equalizer preset levels to zero" +msgstr "Nustatyti ekvalaizerio Å¡ablono lygius į nulius" + +#: src/skins/ui_manager.c:453 +msgid "From file" +msgstr "IÅ¡ failo" + +#: src/skins/ui_manager.c:454 +msgid "Load preset from file" +msgstr "Ä®krauti Å¡ablonÄ… iÅ¡ failo" + +#: src/skins/ui_manager.c:456 +msgid "From WinAMP EQF file" +msgstr "IÅ¡ WinAMP EQF failo" + +#: src/skins/ui_manager.c:457 +msgid "Load preset from WinAMP EQF file" +msgstr "Ä®krauti Å¡ablonÄ… iÅ¡ WinAMP EQF failo" + +#: src/skins/ui_manager.c:459 +msgid "WinAMP Presets" +msgstr "WinAMP Å¡ablonai" + +#: src/skins/ui_manager.c:460 +msgid "Import WinAMP presets" +msgstr "Importuoti WinAMP Å¡ablonus" + +#: src/skins/ui_manager.c:466 +msgid "Save auto-load preset" +msgstr "IÅ¡saugoti savaime įsikraunantį Å¡ablonÄ…" + +#: src/skins/ui_manager.c:469 +msgid "Save default preset" +msgstr "IÅ¡saugoti numatytÄ…jį Å¡ablonÄ…" + +#: src/skins/ui_manager.c:471 +msgid "To file" +msgstr "Ä® failÄ…" + +#: src/skins/ui_manager.c:472 +msgid "Save preset to file" +msgstr "IÅ¡saugoti Å¡ablonÄ… į failÄ…" + +#: src/skins/ui_manager.c:474 +msgid "To WinAMP EQF file" +msgstr "Ä® WinAMP EQF failÄ…" + +#: src/skins/ui_manager.c:475 +msgid "Save preset to WinAMP EQF file" +msgstr "IÅ¡saugoti Å¡ablonÄ… į WinAMP EQF failÄ…" + +#: src/skins/ui_manager.c:481 +msgid "Delete auto-load preset" +msgstr "IÅ¡trinti savaime įsikraunantį Å¡ablonÄ…" + +#: src/skins/ui_playlist.c:248 +msgid "Search entries in active playlist" +msgstr "IeÅ¡koti įrašų aktyviame grojaraÅ¡tyje" + +#: src/skins/ui_playlist.c:256 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular" +" expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Surask ir pasirink įraÅ¡us grojaraÅ¡tyje užpildydamas vienÄ… ar kelis " +"laukelius. Laukeliai naudoja reguliariųjų iÅ¡raiÅ¡kų sintaksÄ™, raidžių lygis " +"nesvarbus. Jei nežinai kaip veikia reguliariosios iÅ¡raiÅ¡kos, paprasÄiausiai " +"įraÅ¡yk paraidžiui tai ko ieÅ¡kai." + +#: src/skins/ui_playlist.c:264 +msgid "Title: " +msgstr "Pavadinimas:" + +#: src/skins/ui_playlist.c:271 +msgid "Album: " +msgstr "Albumas:" + +#: src/skins/ui_playlist.c:278 +msgid "Artist: " +msgstr "AtlikÄ—jas:" + +#: src/skins/ui_playlist.c:285 +msgid "Filename: " +msgstr "Failo vardas:" + +#: src/skins/ui_playlist.c:293 +msgid "Clear previous selection before searching" +msgstr "Prie ieÅ¡kant, iÅ¡valyti buvusius pasirinkimus" + +#: src/skins/ui_playlist.c:296 +msgid "Automatically toggle queue for matching entries" +msgstr "Atitinkantiems įraÅ¡ams automatiÅ¡kai perjungti eilÄ™" + +#: src/skins/ui_playlist.c:299 +msgid "Create a new playlist with matching entries" +msgstr "IÅ¡ surastų įrašų sukurti naujÄ… grojaraÅ¡tį" + +#: src/skins/ui_playlist.c:765 +msgid "Audacious Playlist Editor" +msgstr "Audacious grojaraÅ¡Äio redaktorius" + +#: src/skins/ui_playlist.c:812 +#, c-format +msgid "%s (%d of %d)" +msgstr "%s (%d iÅ¡ %d)" + +#: src/skins/ui_skinselector.c:162 +msgid "Archived Winamp 2.x skin" +msgstr "Archyvuotas Winamp 2.x skin" + +#: src/skins/ui_skinselector.c:167 +msgid "Unarchived Winamp 2.x skin" +msgstr "IÅ¡archyvuotas Winamp 2.x skin" + +#: src/skins/util.c:774 +#, c-format +msgid "Could not create directory (%s): %s\n" +msgstr "Negaliu sukurt aplanko (%s): %s\n" + +#: src/sndfile/plugin.c:456 +msgid "About sndfile plugin" +msgstr "Apie sndfile įsiepį" + +#: src/sndstretch/sndstretch_xmms.c:155 +msgid "About SndStretch" +msgstr "Apie SndStretch" + +#: src/sndstretch/sndstretch_xmms.c:308 +msgid "Volume corr." +msgstr "Garso taisymas" + +#: src/sndstretch/sndstretch_xmms.c:309 +msgid "Short Overlap" +msgstr "Trumpas užklojimas" + +#: src/sndstretch/sndstretch_xmms.c:355 +msgid "Speed" +msgstr "Greitis" + +#: src/sndstretch/sndstretch_xmms.c:356 +msgid "Pitch" +msgstr "Pikai" + +#: src/sndstretch/sndstretch_xmms.c:357 +msgid "Scale" +msgstr "Mastas" + +#: src/sndstretch/sndstretch_xmms.c:377 +msgid "SndStretch - Configuration" +msgstr "SndStretch - Konfiguravimas" + +#: src/song_change/song_change.c:437 +msgid "Command to run when Audacious starts a new song." +msgstr "Komanda kuriÄ… paleisti kai Audacious paleidžia naujÄ… dainÄ…." + +#: src/song_change/song_change.c:439 src/song_change/song_change.c:445 +#: src/song_change/song_change.c:451 src/song_change/song_change.c:457 +msgid "Command:" +msgstr "Komanda:" + +#: src/song_change/song_change.c:443 +msgid "Command to run toward the end of a song." +msgstr "Komanda kuriÄ… paleisti prieÅ¡ pasibaigiant dainai." + +#: src/song_change/song_change.c:449 +msgid "Command to run when Audacious reaches the end of the playlist." +msgstr "Komanda kuriÄ… paleisti kai Audacious pasiekia grojaraÅ¡Äio pabaigÄ…." + +#: src/song_change/song_change.c:455 +msgid "" +"Command to run when title changes for a song (i.e. network streams titles)." +msgstr "" +"Komanda kuriÄ… paleisti kai dainos pavadinimas pasikeiÄia (t.y. interneto " +"srautų pavadinimai)" + +#: src/song_change/song_change.c:461 +msgid "" +"You can use the following format strings which\n" +"will be substituted before calling the command\n" +"(not all are useful for the end-of-playlist command).\n" +"\n" +"%F: Frequency (in hertz)\n" +"%c: Number of channels\n" +"%f: filename (full path)\n" +"%l: length (in milliseconds)\n" +"%n or %s: Song name\n" +"%r: Rate (in bits per second)\n" +"%t: Playlist position (%02d)\n" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" +msgstr "" +"Galite naudoti tokio formato žymas\n" +"kurios bus pakeistos prieÅ¡ kvieÄiant komandÄ…\n" +"(nevisos yra naudingos end-of-playlist komandai).\n" +"\n" +"%F: Dažnis ( hertcais)\n" +"%c: Kanalų kiekis\n" +"%f: failo vardas (pilnas kelias)\n" +"%l: trukmÄ— (milisekundÄ—mis)\n" +"%n arba %s: Dainos pavadinimas\n" +"%r: Rate (bitais per sekundÄ™)\n" +"%t: GrojaraÅ¡Äio vieta (%02d)\n" +"%p: Dabar grojama (1 or 0)\n" +"%a: AtlikÄ—jas\n" +"%b: Albumas\n" +"%T: Takelio pavadinimas" + +#: src/song_change/song_change.c:488 +msgid "" +"Parameters passed to the shell should be encapsulated in " +"quotes. Doing otherwise is a security risk." +msgstr "" +"Parametrai pateikti komandų interpretatoriui turi bÅ«t " +"kabutÄ—se. Darant kitaip rizikuojate savo saugumu." + +#: src/song_change/song_change.c:499 +msgid "Commands" +msgstr "Komandos" + +#: src/song_change/song_change.c:529 +msgid "Song Change" +msgstr "Dainos keitimas" + +#: src/statusicon/statusicon.c:379 +msgid "About Status Icon Plugin" +msgstr "Apie Status Icon įskiepį" + +#: src/statusicon/statusicon.c:380 +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager.\n" +msgstr "" +"Status Icon įskiepis\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"Å is įskiepis sistemos dÄ—kle sukuria piktogramÄ….\n" + +#: src/statusicon/statusicon.c:451 +msgid "Status Icon Plugin - Preferences" +msgstr "Status icon įskiepis - Nustatymai" + +#: src/statusicon/statusicon.c:461 +msgid "Right-Click Menu" +msgstr "DeÅ¡inio pelÄ—s klaviÅ¡o meniu" + +#: src/statusicon/statusicon.c:466 +msgid "Small playback menu #1" +msgstr "Mažas atkÅ«rimo meniu #1" + +#: src/statusicon/statusicon.c:469 +msgid "Small playback menu #2" +msgstr "Mažas atkÅ«rimo meniu #2" + +#: src/statusicon/statusicon.c:485 +msgid "Mouse Scroll Action" +msgstr "PelÄ—s ratuko veiksmas" + +#: src/statusicon/statusicon.c:489 +msgid "Change volume" +msgstr "Keisti garsÄ…" + +#: src/statusicon/statusicon.c:491 +msgid "Change playing song" +msgstr "Keisti grojanÄiÄ… dainÄ…" + +#: src/statusicon/statusicon.c:504 +msgid "Other settings" +msgstr "Kiti nustatymai" + +#: src/statusicon/statusicon.c:509 +msgid "Disable the popup window" +msgstr "IÅ¡jungti iÅ¡Å¡okantį langÄ…" + +#: src/statusicon/statusicon.c:516 +msgid "Close to the notification area (system tray)" +msgstr "Uždaryti į praneÅ¡imų srity (sistemos dÄ—klÄ…)" + +#: src/statusicon/statusicon.c:524 +msgid "Advance in playlist when scrolling upward" +msgstr "Slenkant aukÅ¡tyn, žengti grojaraÅ¡Äiu" + +#: src/stereo_plugin/stereo.c:45 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin 1999." +msgstr "" +"Extra Stereo Plugin\n" +"\n" +"KÅ«rÄ— Johan Levin 1999." + +#: src/stereo_plugin/stereo.c:64 +msgid "About Extra Stereo Plugin" +msgstr "Apie Extra Stereo įskiepį" + +#: src/stereo_plugin/stereo.c:95 +msgid "Configure Extra Stereo" +msgstr "KonfigÅ«ruoti Extra Stereo" + +#: src/tonegen/tonegen.c:49 +msgid "About Tone Generator" +msgstr "Apie Tonų Generatorių" + +#: src/tonegen/tonegen.c:51 +msgid "" +"Sinus tone generator by Haavard Kvaalen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" +msgstr "" +"Sinus tono generatorius, sukÅ«rÄ— Haavard Kvaalen \n" +"Patobulino Daniel J. Peng \n" +"\n" +"Norint naudot pridÄ—k URL: tone://frequency1;frequency2;frequency3;...\n" +"pvz. tone://2000;2005 norint grot 2000Hz tonÄ… ir 2005Hz tonÄ…" + +#: src/tonegen/tonegen.c:101 +#, c-format +msgid "%s %.1f Hz" +msgstr "%s %.1f Hz" + +#: src/tonegen/tonegen.c:101 +msgid "Tone Generator: " +msgstr "Tono generatorius: " + +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" +msgstr "Apie File I/O įskiepį" + +#: src/vorbis/vorbis.c:573 +msgid "About Ogg Vorbis Audio Plugin" +msgstr "Apie Ogg Vorbis Audio įskiepį" + +#: src/vorbis/vorbis.c:578 +msgid "" +"Ogg Vorbis Plugin by the Xiph.org Foundation\n" +"\n" +"Original code by\n" +"Tony Arcieri \n" +"Contributions from\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visit the Xiph.org Foundation at http://www.xiph.org/\n" +msgstr "" +"Ogg Vorbis sukÅ«rÄ— Xiph.org Foundation\n" +"\n" +"Orginalų kodÄ… raÅ¡Ä—\n" +"Tony Arcieri \n" +"Contributions from\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Aplankykite Xiph.org Foundation http://www.xiph.org/\n" + +#: src/vtx/about.c:14 +msgid "About Vortex Player" +msgstr "Apie Vortex Player" + +#: src/vtx/about.c:15 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"\n" +"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" +"and other AY/YM music sites.\n" +"\n" +"Audacious implementation by Pavel Vymetalek " +msgstr "" +"Vortex formato grotuvÄ… kÅ«rÄ— Sashnov Alexander \n" +"Sukurtas remiantis kodu rastu _vtx.dll kurį kÅ«rÄ— Roman Sherbakov \n" +"\n" +"Muzikos vtx formatu galim rast http://vtx.microfor.ru/music.htm\n" +"ir kitose AY/YM muzikos svetainÄ—se.\n" +"\n" +"Integravo į Audacious Pavel Vymetalek " + +#: src/wavpack/wavpack.c:353 +#, c-format +msgid "Wavpack Decoder Plugin %s" +msgstr "Wavpack Decoder įskiepis %s" + +#: src/wavpack/wavpack.c:354 +msgid "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan\n" +"Visit the Wavpack site at http://www.wavpack.com/\n" +msgstr "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Dalį įskiepio sukÅ«rÄ— Miles Egan\n" +"Aplankykite Wavpack puslapį http://www.wavpack.com/\n" + + diff -Nru audacious-plugins-2.4.4/po/lv.po audacious-plugins-3.2/po/lv.po --- audacious-plugins-2.4.4/po/lv.po 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/lv.po 2012-01-20 19:48:30.000000000 +0000 @@ -1,24 +1,24 @@ # Copyright (C) 2009 Einars Sprugis # This file is distributed under the same license as the audacious-plugins package. # -# Einars Sprugis , 2009. +# Einars Sprugis , 2009, 2011. msgid "" msgstr "" "Project-Id-Version: audacious-plugins2_22062009\n" "Report-Msgid-Bugs-To: http://jira.atheme.org/\n" -"POT-Creation-Date: 2010-08-03 17:55-0400\n" -"PO-Revision-Date: 2009-10-11 01:21+0300\n" +"POT-Creation-Date: 2011-07-17 18:49-0400\n" +"PO-Revision-Date: 2011-10-30 16:53+0200\n" "Last-Translator: Einars Sprugis \n" "Language-Team: Latvian \n" "Language: lv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 1.0\n" +"X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " "2);\n" -#: src/aac/libmp4.c:291 +#: src/aac/libmp4.c:256 #, c-format msgid "" "Using libfaad2-%s for decoding.\n" @@ -29,618 +29,53 @@ "FAAD2 AAC/HE-AAC/HE-AACv2/DRM dekodÄ“tÄjs (c) Nero AG, www.nero.com\n" "AutortiesÄ«bas (c) 2005-2006 Audacious komanda" -#: src/aac/libmp4.c:296 +#: src/aac/libmp4.c:261 msgid "About MP4 AAC decoder plugin" msgstr "Par MP4 AAC dekodÄ“tÄja spraudni" -#: src/adplug/adplug-xmms.cc:153 -msgid "About " -msgstr "Par" - -#: src/adplug/adplug-xmms.cc:157 -msgid "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"This plugin is released under the terms and conditions of the GNU LGPL.\n" -"See http://www.gnu.org/licenses/lgpl.html for details.\n" -"\n" -"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et " -"al.\n" -"Linked AdPlug library version: " -msgstr "" -"\n" -"AutortiesÄ«bas (c) 2002, 2003 Simon Peter \n" -"\n" -"Å is spraudnis ir izlaists zem GNU LGPL nosacÄ«jumiem.\n" -"Detaļas skatÄ«t http://www.gnu.org/licenses/lgpl.html\n" -"\n" -"Å is spraudnis izmanto AdPlug bibliotÄ“ku, autortiesÄ«bas (C) Simon Peter u.c.\n" -"SaistÄ«tÄs AdPlug bibliotÄ“kas versija: " - -#: src/adplug/adplug-xmms.cc:234 -msgid "AdPlug :: Configuration" -msgstr "AdPlug :: KonfigurÄcija" - -#: src/adplug/adplug-xmms.cc:243 src/adplug/adplug-xmms.cc:504 -#: src/cdaudio-ng/configure.c:258 src/crystalizer/crystalizer.c:127 -#: src/echo_plugin/gui.c:122 src/jack/configure.c:146 src/null/null.c:109 -#: src/stereo_plugin/stereo.c:123 src/sun/configure.c:557 -msgid "Ok" -msgstr "Labi" - -#: src/adplug/adplug-xmms.cc:253 src/alarm/interface.c:1398 -#: src/cdaudio-ng/configure.c:263 src/crystalizer/crystalizer.c:136 -#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 -#: src/modplug/gui/interface.cxx:715 src/null/null.c:110 -#: src/stereo_plugin/stereo.c:132 src/sun/configure.c:565 -msgid "Cancel" -msgstr "Atcelt" - -#: src/adplug/adplug-xmms.cc:269 src/console/configure.c:154 -#: src/modplug/gui/interface.cxx:629 src/modplug/gui/interface.cxx:888 -msgid "General" -msgstr "VispÄrÄ«gi" - -#: src/adplug/adplug-xmms.cc:281 -msgid "Sound quality" -msgstr "Skaņas kvalitÄte" - -#: src/adplug/adplug-xmms.cc:286 src/modplug/gui/interface.cxx:188 -msgid "Resolution" -msgstr "IzÅ¡Ä·irtspÄ“ja" - -#: src/adplug/adplug-xmms.cc:288 -msgid "8bit" -msgstr "8bit" - -#: src/adplug/adplug-xmms.cc:293 -msgid "16bit" -msgstr "16bit" - -#: src/adplug/adplug-xmms.cc:301 src/modplug/gui/interface.cxx:219 -msgid "Channels" -msgstr "KanÄli" - -#: src/adplug/adplug-xmms.cc:303 src/filewriter/mp3.c:934 -#: src/mpg123/mpg123.c:174 src/sid/xs_interface.c:301 -msgid "Mono" -msgstr "Mono" - -#: src/adplug/adplug-xmms.cc:308 src/filewriter/mp3.c:929 -#: src/modplug/gui/interface.cxx:205 src/mpg123/mpg123.c:174 -#: src/sid/xs_interface.c:308 -msgid "Stereo" -msgstr "Stereo" - -#: src/adplug/adplug-xmms.cc:312 -msgid "" -"Setting stereo is not recommended, unless you need to. This won't add any " -"stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!" -msgstr "" -"IeslÄ“gt stereo režīmu nav ieteicams, ja vien jums to nevajag. Tas " -"nepievienos skaņai stereo efektu (OPL2 ir tikai mono), bet patÄ“rÄ“s vairÄk " -"procesora resursu!" - -#: src/adplug/adplug-xmms.cc:320 -msgid "Frequency" -msgstr "Frekvence" - -#: src/adplug/adplug-xmms.cc:356 src/adplug/adplug-xmms.cc:560 -#: src/console/configure.c:156 src/gtkui/ui_manager.c:64 -#: src/skins/ui_manager.c:165 -msgid "Playback" -msgstr "AtskaņoÅ¡ana" - -#: src/adplug/adplug-xmms.cc:360 -msgid "Detect songend" -msgstr "Noteikt dziesmas beigas" - -#: src/adplug/adplug-xmms.cc:364 -msgid "" -"If enabled, XMMS will detect a song's ending, stop it and advance in the " -"playlist. If disabled, XMMS won't take notice of a song's ending and loop it " -"all over again and again." -msgstr "" -"Ja ieslÄ“gts, XMMS noteiks dziesmas beigas, apturÄ“s to un pavirzÄ«sies uz " -"priekÅ¡u repertuÄrÄ. Ja izslÄ“gts, XMMS neievÄ“ros dziesmas beigas un atkÄrtos " -"to." - -#: src/adplug/adplug-xmms.cc:375 -msgid "Formats" -msgstr "FormÄti" - -#: src/adplug/adplug-xmms.cc:382 -msgid "Format selection" -msgstr "FormÄta izvÄ“le" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Format" -msgstr "FormÄts" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Extension" -msgstr "PaplaÅ¡inÄjums" - -#: src/adplug/adplug-xmms.cc:425 -msgid "" -"Selected file types will be recognized and played back by this plugin. " -"Deselected types will be ignored to make room for other plugins to play " -"these files." -msgstr "" -"Å is spraudnis atpazÄ«s un atskaņos izvÄ“lÄ“tos faila tipus. NeizvÄ“lÄ“tie tipi " -"tiks ignorÄ“ti, lai atļautu tos atskaņot citiem spraudņiem." - -#: src/adplug/adplug-xmms.cc:511 -msgid "AdPlug :: File Info" -msgstr "AdPlug :: Faila informÄcija" - -#: src/adplug/adplug-xmms.cc:533 src/amidi-plug/i_configure-fluidsynth.c:348 -msgid "Filename" -msgstr "Faila nosaukums" - -#: src/adplug/adplug-xmms.cc:537 src/skins/ui_playlist.c:390 -msgid "Title: " -msgstr "Nosaukums: " - -#: src/adplug/adplug-xmms.cc:538 -msgid "Author: " -msgstr "Autors: " - -#: src/adplug/adplug-xmms.cc:539 -msgid "File Type: " -msgstr "Faila tips: " - -#: src/adplug/adplug-xmms.cc:540 -msgid "Subsongs: " -msgstr "ApakÅ¡dziesmas: " - -#: src/adplug/adplug-xmms.cc:541 -msgid "Instruments: " -msgstr "Instrumenti: " - -#: src/adplug/adplug-xmms.cc:546 -msgid "Orders: " -msgstr "KÄrtÄ«bas: " - -#: src/adplug/adplug-xmms.cc:547 -msgid "Patterns: " -msgstr "Paraugi: " - -#: src/adplug/adplug-xmms.cc:551 -msgid "Song" -msgstr "Dziesma" - -#: src/adplug/adplug-xmms.cc:577 -msgid "Instrument name" -msgstr "Instrumenta nosaukums" - -#: src/adplug/adplug-xmms.cc:619 -msgid "Song message" -msgstr "Dziesmas ziņojums" - -#: src/adplug/adplug-xmms.cc:641 -msgid "Subsong selection" -msgstr "ApakÅ¡dziesmas izvÄ“le" - -#: src/adplug/adplug-xmms.cc:707 -msgid "Order: " -msgstr "KÄrtÄ«ba: " - -#: src/adplug/adplug-xmms.cc:708 -msgid "Pattern: " -msgstr "Paraugs: " - -#: src/adplug/adplug-xmms.cc:710 -msgid "Row: " -msgstr "Rinda: " - -#: src/adplug/adplug-xmms.cc:711 -msgid "Speed: " -msgstr "Ä€trums: " - -#: src/adplug/adplug-xmms.cc:712 -msgid "Timer: " -msgstr "Taimeris: " - -#: src/adplug/adplug-xmms.cc:713 src/console/configure.c:234 -#: src/sid/xs_interface.c:354 -msgid "Hz" -msgstr "Hz" - -#: src/alarm/interface.c:34 -msgid "About XMMS Alarm" -msgstr "Par XMMS Alarm" - -#: src/alarm/interface.c:47 -msgid "XMMS Alarm" -msgstr "XMMS Alarm" - -#: src/alarm/interface.c:56 -msgid "" -"An XMMS plugin which can be used\n" -"to start playing at a certain time.\n" -"\n" -"Send all complaints to:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" -msgstr "" -"XMMS spraudnis, kas var tikt izmantots,\n" -"lai sÄktu atskaņoÅ¡anu noteiktÄ laikÄ.\n" -"\n" -"SÅ«tiet visas sÅ«dzÄ«bas uz:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" - -#: src/alarm/interface.c:71 src/bluetooth/scan_gui.c:149 src/lirc/about.c:115 -#: src/modplug/gui/interface.cxx:972 src/sid/xs_about.c:214 -#: src/sid/xs_interface.c:1825 -msgid "Close" -msgstr "AizvÄ“rt" - -#: src/alarm/interface.c:101 -msgid "Alarm" -msgstr "ModinÄtÄjs" - -#: src/alarm/interface.c:109 -msgid "This is your wakeup call." -msgstr "Å is ir jÅ«su moÅ¡anÄs zvans." - -#: src/alarm/interface.c:124 src/alarm/interface.c:1389 -#: src/modplug/gui/interface.cxx:703 src/sid/xs_config.c:322 -msgid "OK" -msgstr "Labi" - -#: src/alarm/interface.c:152 -msgid "Select Playlist" -msgstr "IzvÄ“lieties repertuÄru" - -#: src/alarm/interface.c:196 -msgid "Sorry" -msgstr "Atvainojiet" - -#: src/alarm/interface.c:204 -msgid "Warning" -msgstr "BrÄ«dinÄjums" - -#: src/alarm/interface.c:213 -msgid "" -"For safety reasons the \"quiet\" time must be at least 65 seconds longer " -"than the fading time, it must also be more than 10 seconds. This basically " -"means that there is a bug in the code and until I find a way of really " -"fixing it this message will appear :)\n" -"\n" -"Your fading settings have NOT been saved\n" -"\n" -"--\n" -"Adam" -msgstr "" -"DroÅ¡Ä«bas dēļ \"kluss\" ilgumam jÄbÅ«t vismaz par 65 sekundÄ“m garÄkam nekÄ " -"izdziÅ¡anas ilgumam, tam jÄbÅ«t arÄ« garÄkam par 10 sekundÄ“m. BÅ«tÄ«bÄ tas " -"nozÄ«mÄ“, ka kodÄ ir kļūda un, lÄ«dz tiks atrasts risinÄjums, jums bÅ«s jÄredz " -"Å¡is ziņojums :)\n" -"\n" -"JÅ«su izdziÅ¡anas ilguma iestatÄ«jumi NAV saglabÄti\n" -"\n" -"--\n" -"Adam" - -#: src/alarm/interface.c:229 -msgid "Oh Well" -msgstr "Nu, labi" - -#: src/alarm/interface.c:388 -msgid "Alarm Settings" -msgstr "ModinÄtÄjs iestatÄ«jumi" - -#: src/alarm/interface.c:404 src/alarm/interface.c:576 -#: src/alarm/interface.c:948 -msgid "Time" -msgstr "Laiks" - -#: src/alarm/interface.c:445 -msgid "hours" -msgstr "stundas" - -#: src/alarm/interface.c:506 -msgid "h" -msgstr "h" - -#: src/alarm/interface.c:536 -msgid "minutes" -msgstr "minÅ«tes" - -#: src/alarm/interface.c:554 -msgid "Quiet after:" -msgstr "Kluss pÄ“c:" - -#: src/alarm/interface.c:564 -msgid "Alarm at (default):" -msgstr "ModinÄt (noklusÄ“jums):" - -#: src/alarm/interface.c:584 -msgid "Choose the days for the alarm to come on" -msgstr "IzvÄ“lieties dienas, kurÄs ieslÄ“gsies modinÄtÄjs" - -#: src/alarm/interface.c:612 src/alarm/interface.c:660 -#: src/alarm/interface.c:708 src/alarm/interface.c:756 -#: src/alarm/interface.c:804 src/alarm/interface.c:852 -#: src/alarm/interface.c:900 src/OSS/configure.c:166 -#: src/skins/ui_manager.c:439 src/skins/ui_manager.c:460 -msgid "Default" -msgstr "NoklusÄ“tais" - -#: src/alarm/interface.c:938 -msgid "Day" -msgstr "Diena" - -#: src/alarm/interface.c:958 -msgid "Tuesday" -msgstr "Otrdiena" - -#: src/alarm/interface.c:969 -msgid "Wednesday" -msgstr "TreÅ¡diena" - -#: src/alarm/interface.c:980 -msgid "Thursday" -msgstr "Ceturtdiena" - -#: src/alarm/interface.c:991 -msgid "Friday" -msgstr "Piektdiena" - -#: src/alarm/interface.c:1002 -msgid "Saturday" -msgstr "Sestdiena" - -#: src/alarm/interface.c:1013 -msgid "Sunday" -msgstr "SvÄ“tdiena" - -#: src/alarm/interface.c:1023 -msgid "Monday" -msgstr "Pirmdiena" - -#: src/alarm/interface.c:1034 -msgid "Days" -msgstr "Dienas" - -#: src/alarm/interface.c:1050 -msgid "Fading" -msgstr "IzdziÅ¡ana" - -#: src/alarm/interface.c:1087 src/sid/xs_interface.c:921 -#: src/sid/xs_interface.c:975 src/sid/xs_interface.c:1155 -msgid "seconds" -msgstr "sekundes" - -#: src/alarm/interface.c:1095 src/alarm/interface.c:1211 -#: src/modplug/gui/interface.cxx:550 -msgid "Volume" -msgstr "Skaļums" - -#: src/alarm/interface.c:1121 -msgid "Current" -msgstr "PaÅ¡reizÄ“jais" - -#: src/alarm/interface.c:1128 -msgid "reset to current output volume" -msgstr "AtstatÄ«t uz paÅ¡reizÄ“jo izvades skaļumu" - -#: src/alarm/interface.c:1130 -msgid "Start at" -msgstr "SÄkumÄ" - -#: src/alarm/interface.c:1158 src/alarm/interface.c:1202 -msgid "%" -msgstr "%" - -#: src/alarm/interface.c:1174 -msgid "Final" -msgstr "BeigÄs" - -#: src/alarm/interface.c:1227 -msgid "Additional Command" -msgstr "Papildu komanda" - -#: src/alarm/interface.c:1253 -msgid "enable" -msgstr "ieslÄ“gt" - -#: src/alarm/interface.c:1261 -msgid "Playlist (optional)" -msgstr "RepertuÄrs (neobligÄts)" - -#: src/alarm/interface.c:1287 -msgid "Browse..." -msgstr "PÄrlÅ«kot..." - -#: src/alarm/interface.c:1295 src/alarm/interface.c:1460 -msgid "Reminder" -msgstr "AtgÄdinÄjums" - -#: src/alarm/interface.c:1312 -msgid "Use reminder" -msgstr "Izmantot atgÄdinÄjumu" - -#: src/alarm/interface.c:1328 src/sndstretch/sndstretch_xmms.c:394 -msgid "Options" -msgstr "Opcijas" - -#: src/alarm/interface.c:1336 -msgid "What do these options mean?" -msgstr "Ko Å¡Ä«s opcijas nozÄ«mÄ“?" - -#: src/alarm/interface.c:1364 -msgid "" -"\n" -"Time\n" -" Alarm at: \n" -" The time for the alarm to come on.\n" -"\n" -" Quiet After: \n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading: \n" -" Fade the volume up to the chosen volume \n" -" for this amount of time.\n" -"\n" -" Start at: \n" -" Start fading from this volume.\n" -"\n" -" Final: \n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist: \n" -" Load this playlist for playing songs from \n" -" (must have .m3u extension). If no playlist\n" -" is given then the songs which are currently\n" -" in the list will be used.\n" -" The URL of an mp3/ogg stream can also be\n" -" entered here, but loading of playlists from\n" -" URLs is not currently supported by xmms.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off,\n" -" type the reminder in the box and turn on the\n" -" toggle button if you want it to be shown.\n" -msgstr "" -"\n" -"Laiks\n" -" ModinÄt: \n" -" Laiks, kad ieslÄ“dzas modinÄtÄjs.\n" -"\n" -" Kluss pÄ“c: \n" -" IzslÄ“gt modinÄtÄju pÄ“c Å¡Ä« laika sprīža.\n" -" (ja netiek aizvÄ“rts pamoÅ¡anÄs dialogs)\n" -"\n" -"\n" -"Dienas\n" -" Diena:\n" -" IzvÄ“lieties dienas, kad modinÄtÄjam jÄieslÄ“dzas.\n" -"\n" -" Laiks:\n" -" IzvÄ“lieties modinÄÅ¡anas laiku katrai dienai\n" -" vai arÄ« atzÄ«mÄ“jiet 'NoklusÄ“tais', lai izmantotu\n" -" noklusÄ“to laiku.\n" -"\n" -"\n" -"Skaļums\n" -" IzdziÅ¡ana:\n" -" PalielinÄt skaļumu lÄ«dz izvÄ“lÄ“tajam lÄ«menim\n" -" Å¡ajÄ laika brÄ«dÄ«.\n" -"\n" -" SÄkt: \n" -" SÄkt skaļuma palielinÄÅ¡anu no Å¡Ä« lÄ«meņa.\n" -"\n" -" Beigt: \n" -" LÄ«menis, pie kura pÄrtraukt skaļuma palielinÄÅ¡anu.\n" -" Ja izdziÅ¡anas laiks ir 0, tad iestatÄ«t skaļumu uz Å¡o\n" -" lÄ«meni un sÄkt atskaņoÅ¡anu.\n" -"\n" -"\n" -"Opcijas:\n" -" Papildu komanda:\n" -" Palaist Å¡o komandu modinÄtÄja palaiÅ¡anas brÄ«dÄ«.\n" -"\n" -" RepertuÄrs: \n" -" IelÄdÄ“t repertuÄru, no kura tiks atskaņotas dziesmas\n" -" (jÄbÅ«t ar .m3u paplaÅ¡inÄjumu). Ja tas netiek norÄdÄ«ts,\n" -" tiks izmantotas dziesmas no paÅ¡reizÄ“jÄ repertuÄra.\n" -" Å eit var ievadÄ«t arÄ« mp3/ogg straumes URL, bet\n" -" repertuÄru ielÄdÄ“Å¡anu no URL xmms paÅ¡reiz\n" -" neatbalsta.\n" -"\n" -" AtgÄdinÄjums:\n" -" ModinÄtÄjam izslÄ“dzoties, parÄda atgÄdinÄjumu.\n" -" Ievadiet atgÄdinÄjumu teksta laukÄ un ielieciet\n" -" Ä·eksÄ«ti blakus esoÅ¡ajÄ rÅ«tÄ«, ja vÄ“lieties, lai tas tiktu\n" -" parÄdÄ«ts.\n" - -#: src/alarm/interface.c:1366 src/gtkui/ui_manager.c:165 -#: src/skins/ui_manager.c:371 -msgid "Help" -msgstr "PalÄ«dzÄ«ba" - -#: src/alarm/interface.c:1468 -msgid "Your reminder for today is.." -msgstr "JÅ«su atgÄdinÄjums Å¡odienai ir.." - -#: src/alarm/interface.c:1493 -msgid "Thankyou" -msgstr "Paldies" - -#: src/alsa/config.c:209 -#, fuzzy +#: src/alsa/config.c:210 msgid "Default PCM device" -msgstr "NoklusÄ“tÄ PCM ierÄ«ce (%s)" +msgstr "NoklusÄ“tÄ PCM ierÄ«ce" -#: src/alsa/config.c:234 -#, fuzzy +#: src/alsa/config.c:235 msgid "Default mixer device" -msgstr "NoklusÄ“tÄ PCM ierÄ«ce (%s)" +msgstr "NoklusÄ“tÄ miksera ierÄ«ce" -#: src/alsa/config.c:438 +#: src/alsa/config.c:447 msgid "ALSA Output Plugin Preferences" msgstr "ALSA izvades spraudņa iestatÄ«jumi" -#: src/alsa/config.c:445 -#, fuzzy +#: src/alsa/config.c:454 msgid "PCM device:" -msgstr "Miksera ierÄ«ce:" +msgstr "PCM ierÄ«ce:" -#: src/alsa/config.c:447 src/OSS/configure.c:256 src/sun/configure.c:218 +#: src/alsa/config.c:456 src/OSS/configure.c:246 msgid "Mixer device:" msgstr "Miksera ierÄ«ce:" -#: src/alsa/config.c:449 +#: src/alsa/config.c:458 msgid "Mixer element:" msgstr "Miksera elements:" -#: src/alsa/config.c:452 +#: src/alsa/config.c:461 msgid "Work around drain hangup" -msgstr "" +msgstr "Apiet 'drain hangup' problÄ“mai" -#: src/alsa/plugin.c:61 -#, fuzzy +#: src/alsa/plugin.c:59 msgid "About ALSA Output Plugin" -msgstr "Par JACK izvades spraudni 0.17" +msgstr "Par ALSA izvades spraudni" -#: src/alsa/plugin.c:83 -#, fuzzy +#: src/alsa/plugin.c:81 msgid "ALSA error" -msgstr " Kļūda" +msgstr "ALSA kļūda" -#: src/amidi-plug/amidi-plug.c:323 +#: src/amidi-plug/amidi-plug.c:335 msgid "" "You have not selected any sequencer ports for MIDI playback. You can do so " "in the MIDI plugin preferences." msgstr "" +"JÅ«s neesat izvÄ“lÄ“jies nevienu sekvencera portu MIDI atskaņoÅ¡anai. To varat " +"izdarÄ«t MIDI spraudņa iestatÄ«jumos." #: src/amidi-plug/backend-alsa/b-alsa.c:35 msgid "ALSA Backend " @@ -666,11 +101,11 @@ "aparatÅ«ras sintezatoru, tiks atskaņoti tieÅ¡i.\n" "Aizmuguri uzrakstÄ«jis Giacomo Lozito." -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:41 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 msgid "FluidSynth Backend " msgstr "FluidSynth aizmugure " -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:43 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 msgid "" "This backend produces audio by sending MIDI events to FluidSynth, a real-" "time software synthesizer based on the SoundFont2 specification (www." @@ -686,84 +121,43 @@ "tiek apstrÄdÄta ar izvÄ“lÄ“to izvades spraudni.\n" "Aizmuguri uzrakstÄ«jis Giacomo Lozito." -#: src/amidi-plug/i_configure-alsa.c:221 +#: src/amidi-plug/i_configure-alsa.c:228 msgid "ALSA BACKEND CONFIGURATION" msgstr "ALSA AIZMUGURES KONFIGURÄ€CIJA" -#: src/amidi-plug/i_configure-alsa.c:326 +#: src/amidi-plug/i_configure-alsa.c:331 msgid "Port" msgstr "Ports" -#: src/amidi-plug/i_configure-alsa.c:328 +#: src/amidi-plug/i_configure-alsa.c:333 msgid "Client name" msgstr "Klienta nosaukums" -#: src/amidi-plug/i_configure-alsa.c:330 +#: src/amidi-plug/i_configure-alsa.c:335 msgid "Port name" msgstr "Porta nosaukums" -#: src/amidi-plug/i_configure-alsa.c:341 +#: src/amidi-plug/i_configure-alsa.c:346 msgid "ALSA output ports" msgstr "ALSA izvades porti" -#: src/amidi-plug/i_configure-alsa.c:394 +#: src/amidi-plug/i_configure-alsa.c:399 msgid "Soundcard: " msgstr "Skaņas karte: " -#: src/amidi-plug/i_configure-alsa.c:396 +#: src/amidi-plug/i_configure-alsa.c:401 msgid "Mixer control: " msgstr "Miksera kontrole: " -#: src/amidi-plug/i_configure-alsa.c:408 +#: src/amidi-plug/i_configure-alsa.c:413 msgid "Mixer settings" msgstr "Miksera iestatÄ«jumi" -#: src/amidi-plug/i_configure-alsa.c:421 -msgid "" -"* Select ALSA output ports *\n" -"MIDI events will be sent to the ports selected here. In example, if your " -"audio card provides a hardware synth and you want to play MIDI with it, " -"you'll probably want to select the wavetable synthesizer ports." -msgstr "" -"* IzvÄ“lieties ALSA izvades portus *\n" -"MIDI notikumi tiks sÅ«tÄ«ti uz Å¡eit izvÄ“lÄ“tajiem portiem. PiemÄ“ram, ja jÅ«su " -"skaņas karte ir aprÄ«kota ar sintezatoru aparatÅ«ras lÄ«menÄ« un jÅ«s vÄ“laties ar " -"to atskaņot MIDI, tad, jums vajadzÄ“tu Å¡eit izvÄ“lÄ“ties viļņtabulas " -"sintezatora portus." - -#: src/amidi-plug/i_configure-alsa.c:426 -msgid "" -"* Select ALSA mixer card *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volumeslider will " -"manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" -"* IzvÄ“lieties ALSA mikseri *\n" -"ALSA aizmugure padod izvadi tieÅ¡i caur ALSA, tÄ neizmanto efektu un izvades " -"spraudņus no atskaņotÄja. AtskaņoÅ¡anas laikÄ atskaņotÄja skaļuma regulators " -"manipulÄ“s ar to miksera vadÄ«klu, ko izvÄ“lÄ“sieties Å¡eit. Ja izmantojat " -"viļņtabulas sintezatora portus, jums vajadzÄ“tu Å¡eit izvÄ“lÄ“ties Synth vadÄ«klu." - -#: src/amidi-plug/i_configure-alsa.c:433 -msgid "" -"* Select ALSA mixer control *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volume slider " -"will manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" -"* IzvÄ“lieties ALSA miksera vadÄ«klu *\n" -"ALSA aizmugure padod izvadi tieÅ¡i caur ALSA, tÄ neizmanto efektu un izvades " -"spraudņus no atskaņotÄja. AtskaņoÅ¡anas laikÄ atskaņotÄja skaļuma regulators " -"manipulÄ“s ar to miksera vadÄ«klu, ko izvÄ“lÄ“sieties Å¡eit. Ja izmantojat " -"viļņtabulas sintezatora portus, jums vajadzÄ“tu Å¡eit izvÄ“lÄ“ties Synth vadÄ«klu." - -#: src/amidi-plug/i_configure-alsa.c:444 +#: src/amidi-plug/i_configure-alsa.c:429 msgid "ALSA Backend not loaded or not available" msgstr "ALSA aizmugure nav ielÄdÄ“ta vai arÄ« nav pieejama" -#: src/amidi-plug/i_configure-alsa.c:463 +#: src/amidi-plug/i_configure-alsa.c:448 msgid "" "ALSA\n" "backend" @@ -771,151 +165,51 @@ "ALSA\n" "aizmugure" -#: src/amidi-plug/i_configure-ap.c:56 +#: src/amidi-plug/i_configure-ap.c:59 msgid "AMIDI-Plug - backend information" msgstr "AMIDI-Plug - aizmugures informÄcija" -#: src/amidi-plug/i_configure-ap.c:194 +#: src/amidi-plug/i_configure-ap.c:196 msgid "AMIDI-PLUG PREFERENCES" msgstr "AMIDI-PLUG IestatÄ«jumi" -#: src/amidi-plug/i_configure-ap.c:221 +#: src/amidi-plug/i_configure-ap.c:223 msgid "Backend selection" msgstr "Aizmugures izvÄ“le" -#: src/amidi-plug/i_configure-ap.c:225 +#: src/amidi-plug/i_configure-ap.c:227 msgid "Available backends" msgstr "PieejamÄs aizmugures" -#: src/amidi-plug/i_configure-ap.c:255 +#: src/amidi-plug/i_configure-ap.c:257 msgid "Playback settings" msgstr "AtskaņoÅ¡anas iestatÄ«jumi" -#: src/amidi-plug/i_configure-ap.c:260 +#: src/amidi-plug/i_configure-ap.c:262 msgid "Transpose: " msgstr "PÄrlikt: " -#: src/amidi-plug/i_configure-ap.c:269 +#: src/amidi-plug/i_configure-ap.c:271 msgid "Drum shift: " msgstr "Bungu pÄrbÄ«de: " -#: src/amidi-plug/i_configure-ap.c:287 +#: src/amidi-plug/i_configure-ap.c:289 msgid "Advanced settings" msgstr "PaplaÅ¡inÄtie iestatÄ«jumi" -#: src/amidi-plug/i_configure-ap.c:291 +#: src/amidi-plug/i_configure-ap.c:293 msgid "pre-calculate length of MIDI files in playlist" msgstr "aprÄ“Ä·inÄt garumus MIDI failiem repertuÄrÄ iepriekÅ¡" -#: src/amidi-plug/i_configure-ap.c:296 +#: src/amidi-plug/i_configure-ap.c:298 msgid "extract comments from MIDI file (if available)" msgstr "izvilkt komentÄrus no MIDI failiem (ja pieejami)" -#: src/amidi-plug/i_configure-ap.c:301 +#: src/amidi-plug/i_configure-ap.c:303 msgid "extract lyrics from MIDI file (if available)" msgstr "izvilkt dziesmu vÄrdu tekstus no MIDI failiem (ja pieejami)" -#: src/amidi-plug/i_configure-ap.c:320 -msgid "" -"* Backend selection *\n" -"AMIDI-Plug works with backends, in a modular fashion; here you should select " -"your backend; that is, the way MIDI events are going to be handled and " -"played.\n" -"If you have a hardware synthesizer on your audio card, and ALSA supports it, " -"you'll want to use the ALSA backend. It can also be used with anything that " -"provides an interface to the ALSA sequencer, including software synths or " -"external devices.\n" -"If you want to rely on a software synthesizer and/or want to pipe audio into " -"effect and output plugins of the player you'll want to use the good " -"FluidSynth backend.\n" -"Press the info button to read specific information about each backend." -msgstr "" -"* Aizmugures izvÄ“le *\n" -"AMIDI-Plug darbojas ar aizmugurÄ“m, modulÄrÄ veidÄ. Å eit jums jÄizvÄ“las " -"aizmugure, t.i., veids, kÄdÄ MIDI notikumi tiks apstrÄdÄti un atskaņoti.\n" -"Ja jÅ«su skaņas kartei ir ALSA atbalstÄ«ts aparatÅ«ras sintezators, jÅ«s " -"vÄ“lÄ“sieties izmantot ALSA aizmuguri. TÄ arÄ« var tikt izmantota ar jebko, kas " -"nodroÅ¡ina saskarni ALSA sekvencerim, ieskaitot programmatÅ«ras sintezatorus " -"vai ÄrÄ“jas ierÄ«ces.\n" -"Ja vÄ“laties izmantot programmatÅ«ras sintezatoru un/vai vÄ“laties ievadÄ«t " -"skaņu atskaņotÄja efektu un izvades spraudņos, jÅ«s vÄ“lÄ“sieties izmantot labu " -"FluidSynth aizmuguri.\n" -"Nospiediet informÄcijas pogu, lai saņemtu specifisku informÄciju par katru " -"aizmuguri." - -#: src/amidi-plug/i_configure-ap.c:331 -#, fuzzy -msgid "" -"* Transpose function *\n" -"This option allows you to play the midi file transposed in a different key, " -"by shifting of the desired number of semitones all its notes (excepting " -"those on midi channel 10, reserved for percussions). Especially useful if " -"you wish to sing or play along with another instrument." -msgstr "" -"* PÄrlikÅ¡anas funkcija *\n" -"Å Ä« opcija ļauj jums atskaņot pÄrveidotu midi failu, pÄrbÄ«dot par vÄ“lamo " -"skaitu pustoņu visas tÄ notis (izņemot notis 10. midi kanÄlÄ, kas rezervÄ“ts " -"perkusijÄm). Tas ir Ä«paÅ¡i noderÄ«gi, ja vÄ“laties dziedÄt vai spÄ“lÄ“t lÄ«dz ar " -"citu instrumentu." - -#: src/amidi-plug/i_configure-ap.c:337 -msgid "" -"* Drumshift function *\n" -"This option allows you to shift notes on midi channel 10 (the standard " -"percussions channel) of the desired number of semitones. This results in " -"different drumset and percussions being used during midi playback, so if you " -"wish to enhance (or reduce, or alter) percussion sounds, try to play with " -"this value." -msgstr "" -"* Bungu pÄrbÄ«des funkcija *\n" -"Å Ä« opcija ļauj jums pÄrbÄ«dÄ«t notis 10. midi kanÄlÄ (standarta perkusiju " -"kanÄls) par vÄ“lamo skaitu pustoņu. RezultÄtÄ midi atskaņoÅ¡anas laikÄ tiks " -"izmantotas atÅ¡Ä·irÄ«gas bungu un perkusiju skaņas. TÄtad, ja vÄ“laties mainÄ«t " -"perkusiju skaņas, mÄ“Ä£iniet paeksperimentÄ“t ar Å¡o vÄ“rtÄ«bu." - -#: src/amidi-plug/i_configure-ap.c:344 -msgid "" -"* Pre-calculate MIDI length *\n" -"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as " -"soon as the player requests it, instead of doing that only when the MIDI " -"file is being played. In example, MIDI length will be calculated straight " -"after adding MIDI files in a playlist. Disable this option if you want " -"faster playlist loading (when a lot of MIDI files are added), enable it to " -"display more information in the playlist straight after loading." -msgstr "" -"* AprÄ“Ä·inÄt MIDI garumus iepriekÅ¡ *\n" -"Ja Å¡Ä« opcija ir ieslÄ“gta, AMIDI-Plug aprÄ“Ä·inÄs MIDI faila garumu, tiklÄ«dz " -"atskaņotÄjs to pieprasa, nevis faila atskaņoÅ¡anas laikÄ. PiemÄ“ram, MIDI " -"garums tiks aprÄ“Ä·inÄts uzreiz pÄ“c to pievienoÅ¡anas repertuÄram. IzslÄ“dziet " -"Å¡o opciju, ja vÄ“laties ÄtrÄku repertuÄra ielÄdi (pievienojot daudz MIDI " -"failu), bet ieslÄ“dziet, lai repertuÄrÄ tiktu attÄ“lots vairÄk informÄcijas " -"uzreiz pÄ“c failu ielÄdÄ“Å¡anas." - -#: src/amidi-plug/i_configure-ap.c:353 -msgid "" -"* Extract comments from MIDI files *\n" -"Some MIDI files contain text comments (author, copyright, instrument notes, " -"etc.). If this option is enabled, AMIDI-Plug will extract and display " -"comments (if available) in the file information dialog." -msgstr "" -"* Izvilkt komentÄrus no MIDI failiem *\n" -"DažkÄrt MIDI faili satur teksta komentÄrus (autors, autortiesÄ«bas, " -"instrumentu notis, u.t.t.). Ja Å¡Ä« opcija ir ieslÄ“gta, AMIDI-Plug izvilks un " -"attÄ“los komentÄrus (ja pieejami) faila informÄcijas dialogÄ." - -#: src/amidi-plug/i_configure-ap.c:358 -msgid "" -"* Extract lyrics from MIDI files *\n" -"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug " -"will extract and display song lyrics (if available) in the file information " -"dialog." -msgstr "" -"* Izvilkt dziesmu vÄrdu tekstus no MIDI failiem *\n" -"DažkÄrt MIDI faili satur dziesmu vÄrdu tekstus. Ja Å¡Ä« opcija ir ieslÄ“gta, " -"AMIDI-Plug izvilks un attÄ“los dziesmu vÄrdu tekstus (ja pieejami) faila " -"informÄcijas dialogÄ." - -#: src/amidi-plug/i_configure-ap.c:375 +#: src/amidi-plug/i_configure-ap.c:333 msgid "" "AMIDI\n" "Plug" @@ -923,232 +217,113 @@ "AMIDI\n" "Plug" -#: src/amidi-plug/i_configure.c:73 +#: src/amidi-plug/i_configure.c:76 msgid "AMIDI-Plug - select file" msgstr "AMIDI-Plug - izvÄ“lieties failu" -#: src/amidi-plug/i_configure.c:126 +#: src/amidi-plug/i_configure.c:129 msgid "AMIDI-Plug - configuration" msgstr "AMIDI-Plug - konfigurÄcija" -#: src/amidi-plug/i_configure-fluidsynth.c:52 +#: src/amidi-plug/i_configure-fluidsynth.c:55 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - izvÄ“lieties SoundFont failu" -#: src/amidi-plug/i_configure-fluidsynth.c:268 +#: src/amidi-plug/i_configure-fluidsynth.c:270 msgid "FLUIDSYNTH BACKEND CONFIGURATION" msgstr "FLUIDSYNTH AIZMUGURES KONFIGURÄ€CIJA" -#: src/amidi-plug/i_configure-fluidsynth.c:316 +#: src/amidi-plug/i_configure-fluidsynth.c:313 msgid "SoundFont settings" msgstr "SoundFont iestatÄ«jumi" -#: src/amidi-plug/i_configure-fluidsynth.c:352 +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Faila nosaukums" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 msgid "Size (bytes)" msgstr "IzmÄ“rs (baitos)" -#: src/amidi-plug/i_configure-fluidsynth.c:401 +#: src/amidi-plug/i_configure-fluidsynth.c:398 msgid "Load SF on player start" msgstr "IelÄdÄ“t SF palaižot atskaņotÄju" -#: src/amidi-plug/i_configure-fluidsynth.c:405 +#: src/amidi-plug/i_configure-fluidsynth.c:402 msgid "Load SF on first midifile play" msgstr "IelÄdÄ“t SF pie pirmÄs MIDI faila atskaņoÅ¡anas" -#: src/amidi-plug/i_configure-fluidsynth.c:420 +#: src/amidi-plug/i_configure-fluidsynth.c:417 msgid "Synthesizer settings" msgstr "Sintezatora iestatÄ«jumi" -#: src/amidi-plug/i_configure-fluidsynth.c:429 +#: src/amidi-plug/i_configure-fluidsynth.c:426 msgid "gain" msgstr "pastiprinÄjums" -#: src/amidi-plug/i_configure-fluidsynth.c:435 -#: src/amidi-plug/i_configure-fluidsynth.c:463 -#: src/amidi-plug/i_configure-fluidsynth.c:491 -#: src/amidi-plug/i_configure-fluidsynth.c:522 +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 msgid "use default" msgstr "izmantot noklusÄ“to" -#: src/amidi-plug/i_configure-fluidsynth.c:438 -#: src/amidi-plug/i_configure-fluidsynth.c:466 +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 msgid "value:" msgstr "vÄ“rtÄ«ba:" -#: src/amidi-plug/i_configure-fluidsynth.c:457 +#: src/amidi-plug/i_configure-fluidsynth.c:454 msgid "poliphony" msgstr "polifonija" -#: src/amidi-plug/i_configure-fluidsynth.c:485 +#: src/amidi-plug/i_configure-fluidsynth.c:482 msgid "reverb" msgstr "atbalss" -#: src/amidi-plug/i_configure-fluidsynth.c:494 -#: src/amidi-plug/i_configure-fluidsynth.c:525 +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 msgid "yes" msgstr "jÄ" -#: src/amidi-plug/i_configure-fluidsynth.c:496 -#: src/amidi-plug/i_configure-fluidsynth.c:527 +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 msgid "no" msgstr "nÄ“" -#: src/amidi-plug/i_configure-fluidsynth.c:516 +#: src/amidi-plug/i_configure-fluidsynth.c:513 msgid "chorus" msgstr "koris" -#: src/amidi-plug/i_configure-fluidsynth.c:547 +#: src/amidi-plug/i_configure-fluidsynth.c:544 msgid "sample rate" msgstr "iztverÅ¡anas temps" -#: src/amidi-plug/i_configure-fluidsynth.c:553 +#: src/amidi-plug/i_configure-fluidsynth.c:550 msgid "22050 Hz " msgstr "22050 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:556 +#: src/amidi-plug/i_configure-fluidsynth.c:553 msgid "44100 Hz " msgstr "44100 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:559 +#: src/amidi-plug/i_configure-fluidsynth.c:556 msgid "96000 Hz " msgstr "96000 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:562 +#: src/amidi-plug/i_configure-fluidsynth.c:559 msgid "custom " msgstr "pielÄgots " -#: src/amidi-plug/i_configure-fluidsynth.c:571 +#: src/amidi-plug/i_configure-fluidsynth.c:568 msgid "Hz " msgstr "Hz " #: src/amidi-plug/i_configure-fluidsynth.c:621 -msgid "" -"* Select SoundFont files *\n" -"In order to play MIDI with FluidSynth, you need to specify at least one " -"valid SoundFont file here (use absolute paths). The loading order is from " -"the top (first) to the bottom (last)." -msgstr "" -"* IzvÄ“lieties SoundFont failus *\n" -"Lai atskaņotu MIDI failus ar FluidSynth, jums Å¡eit jÄnorÄda vismaz viens " -"derÄ«gs SoundFont fails (lietojiet absolÅ«tos ceļus). IelÄdÄ“Å¡anas kÄrtÄ«ba ir " -"no augÅ¡as (pirmais) uz apakÅ¡u (pÄ“dÄ“jais)." - -#: src/amidi-plug/i_configure-fluidsynth.c:626 -msgid "" -"* Load SoundFont on player start *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" -"* IelÄdÄ“t SoundFont palaižot atskaņotÄju *\n" -"AtkarÄ«bÄ no jÅ«su sistÄ“mas Ätruma, SoundFont ielÄdÄ“Å¡ana FluidSynth ilgs lÄ«dz " -"pat dažÄm sekundÄ“m. Å is ir vienreizÄ“js uzdevums (SoundFont paliks ielÄdÄ“ts " -"lÄ«dz tas tiks mainÄ«ts vai arÄ« tiks izlÄdÄ“ta aizmugure), ko var izpildÄ«t, " -"palaižot programmu vai pirms pirmÄ MIDI faila atskaņoÅ¡anas (pÄ“dÄ“jÄ ir labÄka " -"izvÄ“le, ja neizmantojat atskaņotÄju tikai MIDI failu atskaņoÅ¡anai)." - -#: src/amidi-plug/i_configure-fluidsynth.c:634 -msgid "" -"* Load SoundFont on first midifile play *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" -"* IelÄdÄ“t SoundFont, pirmoreiz atskaņojot MIDI failu *\n" -"AtkarÄ«bÄ no jÅ«su sistÄ“mas Ätruma, SoundFont ielÄdÄ“Å¡ana FluidSynth ilgs lÄ«dz " -"pat dažÄm sekundÄ“m. Å is ir vienreizÄ“js uzdevums (SoundFont paliks ielÄdÄ“ts " -"lÄ«dz tas tiks mainÄ«ts vai arÄ« tiks izlÄdÄ“ta aizmugure), ko var izpildÄ«t, " -"palaižot programmu vai pirms pirmÄ MIDI faila atskaņoÅ¡anas (pÄ“dÄ“jÄ ir labÄka " -"izvÄ“le, ja neizmantojat atskaņotÄju tikai MIDI failu atskaņoÅ¡anai)." - -#: src/amidi-plug/i_configure-fluidsynth.c:642 -msgid "" -"* Synthesizer gain *\n" -"From FluidSynth docs: the gain is applied to the final or master output of " -"the synthesizer; it is set to a low value by default to avoid the saturation " -"of the output when random MIDI files are played." -msgstr "" -"* Sintezatora pastiprinÄjums *\n" -"No FluidSynth dokumentÄcijas: pastiprinÄjums tiek attiecinÄts uz sintezatora " -"gala izvadi. PÄ“c noklusÄ“juma tam ir uzstÄdÄ«ta zema vÄ“rtÄ«ba, lai izvairÄ«tos " -"no izvades piesÄtinÄtÄ«bas, kad tiek atskaņoti gadÄ«juma MIDI faili." - -#: src/amidi-plug/i_configure-fluidsynth.c:647 -msgid "" -"* Synthesizer polyphony *\n" -"From FluidSynth docs: the polyphony defines how many voices can be played in " -"parallel; the number of voices is not necessarily equivalent to the number " -"of notes played simultaneously; indeed, when a note is struck on a specific " -"MIDI channel, the preset on that channel may create several voices, for " -"example, one for the left audio channel and one for the right audio " -"channels; the number of voices activated depends on the number of instrument " -"zones that fall in the correspond to the velocity and key of the played note." -msgstr "" -"* Sintezatora polifonija *\n" -"No FluidSynth dokumentÄcijas: polifonija nosaka, cik balsu var tikt " -"atskaņots paralÄ“li. Balsu skaitam nav noteikti jÄbÅ«t vienÄdam ar vienlaikus " -"atskaņoto noÅ¡u skaitu. Patiesi, kad nots tiek atskaņota noteiktÄ MIDI " -"kanÄlÄ, Å¡Ä« kanÄla uzstÄdÄ«jumi var izveidot vairÄkas balsis, piemÄ“ram, vienu " -"kreisajam, bet otru labajam audio kanÄlam. AktivizÄ“to balsu skaits ir " -"atkarÄ«gs no instrumentu zonu skaita, kas iekrÄ«t Ätruma atbilstÄ«bÄ, un " -"atskaņotÄs nots taustiņa." - -#: src/amidi-plug/i_configure-fluidsynth.c:657 -#: src/amidi-plug/i_configure-fluidsynth.c:663 -msgid "" -"* Synthesizer reverb *\n" -"From FluidSynth docs: when set to \"yes\" the reverb effects module is " -"activated; note that when the reverb module is active, the amount of signal " -"sent to the reverb module depends on the \"reverb send\" generator defined " -"in the SoundFont." -msgstr "" -"* Sintezatora atbalss *\n" -"No FluidSynth dokumentÄcijas: kad uzstÄdÄ«ts uz \"jÄ\", tiek " -"aktivizÄ“tsatbalss efektu modulis. IevÄ“rojiet - tad, kad atbalss modulis ir " -"aktÄ«vs, uz atbalss moduli nosÅ«tÄ«tais signÄlu daudzums ir atkarÄ«gs no " -"\"nosÅ«tÄ«tÄ atbalss\" Ä£eneratora, kas definÄ“ts SoundFont." - -#: src/amidi-plug/i_configure-fluidsynth.c:669 -#: src/amidi-plug/i_configure-fluidsynth.c:675 -msgid "" -"* Synthesizer chorus *\n" -"From FluidSynth docs: when set to \"yes\" the chorus effects module is " -"activated; note that when the chorus module is active, the amount of signal " -"sent to the chorus module depends on the \"chorus send\" generator defined " -"in the SoundFont." -msgstr "" -"* Sintezatora koris *\n" -"No FluidSynth dokumentÄcijas: kad uzstÄdÄ«ts uz \"jÄ\", tiek aktivizÄ“tskora " -"efektu modulis. IevÄ“rojiet - tad, kad kora modulis ir aktÄ«vs, uz kora moduli " -"nosÅ«tÄ«tais signÄlu daudzums ir atkarÄ«gs no \"nosÅ«tÄ«tais koris\" Ä£eneratora, " -"kas definÄ“ts SoundFont." - -#: src/amidi-plug/i_configure-fluidsynth.c:681 -#: src/amidi-plug/i_configure-fluidsynth.c:685 -#: src/amidi-plug/i_configure-fluidsynth.c:689 -#: src/amidi-plug/i_configure-fluidsynth.c:693 -#, fuzzy -msgid "" -"* Synthesizer samplerate *\n" -"The sample rate of the audio generated by the synthesizer. You can also " -"specify a custom value in the interval 22050Hz-96000Hz." -msgstr "" -"* Sintezatora iztverÅ¡anas temps *\n" -"Sintezatora Ä£enerÄ“tais audio iztverÅ¡anas temps. Varat norÄdÄ«t arÄ« pielÄgotu " -"vÄ“rtÄ«bu intervÄlÄ 22050Hz-96000Hz.\n" -"PiezÄ«me: noklusÄ“tie bufera parametri ir noregulÄ“ti 44100Hz tempam. Mainot " -"iztverÅ¡anas tempu, iespÄ“jams, bÅ«s nepiecieÅ¡ama bufera parametru regulÄ“Å¡ana, " -"lai iegÅ«tu labu skaņas kvalitÄti." - -#: src/amidi-plug/i_configure-fluidsynth.c:701 msgid "FluidSynth Backend not loaded or not available" msgstr "FluidSynth aizmugure nav ielÄdÄ“ta vai arÄ« nav pieejama" -#: src/amidi-plug/i_configure-fluidsynth.c:720 +#: src/amidi-plug/i_configure-fluidsynth.c:640 msgid "" "FluidSynth\n" "backend" @@ -1172,8 +347,7 @@ "TiMidity\n" "aizmugure" -#: src/amidi-plug/i_fileinfo.c:169 src/bluetooth/gui.c:271 -#: src/sid/xs_interface.c:1769 +#: src/amidi-plug/i_fileinfo.c:169 src/sid/xs_interface.c:1769 msgid "Name:" msgstr "Nosaukums:" @@ -1345,119 +519,119 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Palaiž OSD, kad tiek atjaunota atskaņoÅ¡ana pÄ“c pauzes." -#: src/aosd/aosd_ui.c:168 +#: src/aosd/aosd_ui.c:180 msgid "Placement" msgstr "Novietojums" -#: src/aosd/aosd_ui.c:202 +#: src/aosd/aosd_ui.c:219 msgid "Relative X offset:" msgstr "RelatÄ«vÄ X nobÄ«de:" -#: src/aosd/aosd_ui.c:211 +#: src/aosd/aosd_ui.c:228 msgid "Relative Y offset:" msgstr "RelatÄ«vÄ Y nobÄ«de:" -#: src/aosd/aosd_ui.c:220 +#: src/aosd/aosd_ui.c:237 msgid "Max OSD width:" msgstr "MaksimÄlais OSD platums:" -#: src/aosd/aosd_ui.c:233 +#: src/aosd/aosd_ui.c:250 msgid "Multi-Monitor options" msgstr "Daudzmonitoru opcijas" -#: src/aosd/aosd_ui.c:237 +#: src/aosd/aosd_ui.c:254 msgid "Display OSD using:" msgstr "RÄdÄ«t OSD izmantojot:" -#: src/aosd/aosd_ui.c:239 +#: src/aosd/aosd_ui.c:265 msgid "all monitors" msgstr "visi monitori" -#: src/aosd/aosd_ui.c:242 +#: src/aosd/aosd_ui.c:268 #, c-format msgid "monitor %i" msgstr "%i. monitors" -#: src/aosd/aosd_ui.c:295 +#: src/aosd/aosd_ui.c:323 msgid "Timing (ms)" msgstr "Ilgums (ms)" -#: src/aosd/aosd_ui.c:300 +#: src/aosd/aosd_ui.c:328 msgid "Display:" msgstr "RÄdÄ«t:" -#: src/aosd/aosd_ui.c:305 +#: src/aosd/aosd_ui.c:333 msgid "Fade in:" msgstr "ParÄdÄ«ties:" -#: src/aosd/aosd_ui.c:310 +#: src/aosd/aosd_ui.c:338 msgid "Fade out:" msgstr "Izgaist:" -#: src/aosd/aosd_ui.c:391 +#: src/aosd/aosd_ui.c:419 msgid "Fonts" msgstr "Fonti" -#: src/aosd/aosd_ui.c:399 +#: src/aosd/aosd_ui.c:427 #, c-format msgid "Font %i:" msgstr "%i. fonts:" -#: src/aosd/aosd_ui.c:416 +#: src/aosd/aosd_ui.c:444 msgid "Shadow" msgstr "Ä’na" -#: src/aosd/aosd_ui.c:451 +#: src/aosd/aosd_ui.c:479 msgid "Internationalization" msgstr "InternacionalizÄcija" -#: src/aosd/aosd_ui.c:457 +#: src/aosd/aosd_ui.c:485 msgid "Disable UTF-8 conversion of text (in aosd)" msgstr "AtslÄ“gt teksta UTF-8 pÄrveidi (iekÅ¡ aosd)" -#: src/aosd/aosd_ui.c:475 +#: src/aosd/aosd_ui.c:503 msgid "Select Skin File" msgstr "IzvÄ“lieties apdares failu" -#: src/aosd/aosd_ui.c:586 +#: src/aosd/aosd_ui.c:614 msgid "Render Style" msgstr "RenderÄ“Å¡anas stils" -#: src/aosd/aosd_ui.c:602 +#: src/aosd/aosd_ui.c:630 msgid "Colors" msgstr "KrÄsas" -#: src/aosd/aosd_ui.c:615 +#: src/aosd/aosd_ui.c:643 #, c-format msgid "Color %i:" msgstr "%i. krÄsa:" -#: src/aosd/aosd_ui.c:635 +#: src/aosd/aosd_ui.c:663 msgid "Custom Skin" msgstr "PielÄgota apdare" -#: src/aosd/aosd_ui.c:641 +#: src/aosd/aosd_ui.c:669 msgid "Skin file:" msgstr "Apdares fails:" -#: src/aosd/aosd_ui.c:644 src/sid/xs_interface.c:1044 +#: src/aosd/aosd_ui.c:672 src/sid/xs_interface.c:1044 #: src/sid/xs_interface.c:1236 src/sid/xs_interface.c:1292 msgid "Browse" msgstr "PÄrlÅ«kot" -#: src/aosd/aosd_ui.c:746 +#: src/aosd/aosd_ui.c:774 msgid "Enable trigger" msgstr "IeslÄ“gt palaidÄ“ju" -#: src/aosd/aosd_ui.c:773 +#: src/aosd/aosd_ui.c:801 msgid "Event" msgstr "Notikums" -#: src/aosd/aosd_ui.c:801 +#: src/aosd/aosd_ui.c:829 msgid "Composite manager detected" msgstr "KompozitÄ“Å¡anas pÄrvaldnieks atrasts" -#: src/aosd/aosd_ui.c:808 +#: src/aosd/aosd_ui.c:836 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -1467,73 +641,73 @@ "ja vien esat pÄrliecinÄts, ka jums tas ir palaists, lÅ«dzu, aktivizÄ“jiet " "kompozitÄ“Å¡anas pÄrvaldnieku, citÄdi OSD nefunkcionÄ“s pareizi" -#: src/aosd/aosd_ui.c:816 +#: src/aosd/aosd_ui.c:844 msgid "Composite manager not required for fake transparency" msgstr "Viltus caurspÄ«dÄ«bai kompozitÄ“Å¡anas pÄrvaldnieks nav nepiecieÅ¡ams" -#: src/aosd/aosd_ui.c:854 +#: src/aosd/aosd_ui.c:882 msgid "Transparency" msgstr "CaurspÄ«dÄ«ba" -#: src/aosd/aosd_ui.c:860 +#: src/aosd/aosd_ui.c:888 msgid "Fake transparency" msgstr "Viltus caurspÄ«dÄ«ba" -#: src/aosd/aosd_ui.c:862 +#: src/aosd/aosd_ui.c:890 msgid "Real transparency (requires X Composite Ext.)" msgstr "Īsta caurspÄ«dÄ«ba (nepiecieÅ¡ams X Composite paplaÅ¡in.)" -#: src/aosd/aosd_ui.c:904 +#: src/aosd/aosd_ui.c:932 msgid "Composite extension not loaded" msgstr "Composite paplaÅ¡inÄjums nav ielÄdÄ“ts" -#: src/aosd/aosd_ui.c:912 +#: src/aosd/aosd_ui.c:940 msgid "Composite extension not available" msgstr "Composite paplaÅ¡inÄjums nav pieejams" -#: src/aosd/aosd_ui.c:931 +#: src/aosd/aosd_ui.c:959 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.c:1012 +#: src/aosd/aosd_ui.c:1040 msgid "Audacious OSD - configuration" msgstr "Audacious OSD - konfigurÄcija" -#: src/aosd/aosd_ui.c:1033 +#: src/aosd/aosd_ui.c:1061 msgid "Test" msgstr "TestÄ“t" -#: src/aosd/aosd_ui.c:1048 +#: src/aosd/aosd_ui.c:1076 msgid "Position" msgstr "Novietojums" -#: src/aosd/aosd_ui.c:1053 +#: src/aosd/aosd_ui.c:1081 msgid "Animation" msgstr "AnimÄcija" -#: src/aosd/aosd_ui.c:1058 +#: src/aosd/aosd_ui.c:1086 msgid "Text" msgstr "Teksts" -#: src/aosd/aosd_ui.c:1063 +#: src/aosd/aosd_ui.c:1091 msgid "Decoration" msgstr "NoformÄ“jums" -#: src/aosd/aosd_ui.c:1068 +#: src/aosd/aosd_ui.c:1096 msgid "Trigger" msgstr "PalaidÄ“js" -#: src/aosd/aosd_ui.c:1073 src/cdaudio-ng/configure.c:178 -#: src/modplug/gui/interface.cxx:689 src/sid/xs_interface.c:1302 +#: src/aosd/aosd_ui.c:1101 src/cdaudio-ng/configure.c:171 +#: src/sid/xs_interface.c:1302 msgid "Misc" msgstr "DažÄdi" -#: src/aosd/aosd_ui.c:1110 +#: src/aosd/aosd_ui.c:1138 msgid "Audacious OSD - about" msgstr "Audacious OSD - par" -#: src/aosd/aosd_ui.c:1140 +#: src/aosd/aosd_ui.c:1168 msgid "" "\n" "Audacious OSD " @@ -1541,7 +715,7 @@ "\n" "Audacious OSD " -#: src/aosd/aosd_ui.c:1141 +#: src/aosd/aosd_ui.c:1169 msgid "" "\n" "http://www.develia.org/projects.php?p=audacious#aosd\n" @@ -1563,135 +737,6 @@ "http://neugierig.org/software/ghosd/\n" "\n" -#: src/bluetooth/agent.c:356 src/bluetooth/agent.c:397 -#, c-format -msgid "Pairing request for '%s'" -msgstr "PÄroÅ¡anas pieprasÄ«jums priekÅ¡ '%s'" - -#: src/bluetooth/agent.c:544 -#, c-format -msgid "Authorization request for %s" -msgstr "AutorizÄcijas pieprasÄ«jums priekÅ¡ '%s'" - -#: src/bluetooth/agent.c:728 -#, c-format -msgid "Created bonding with %s" -msgstr "Izveidots saite ar %s" - -#: src/bluetooth/agent.c:756 -#, c-format -msgid "Removed bonding with %s" -msgstr "Atcelta saite ar %s" - -#: src/bluetooth/agent.c:808 -msgid "Device has been switched off" -msgstr "IerÄ«ce tika izslÄ“gta" - -#: src/bluetooth/agent.c:811 -msgid "Device has been made non-discoverable" -msgstr "IerÄ«ce tika padarÄ«ta neatklÄjama" - -#: src/bluetooth/agent.c:813 -msgid "Device has been made connectable" -msgstr "IerÄ«ce tika padarÄ«ta savienojama" - -#: src/bluetooth/agent.c:815 -msgid "Device has been made discoverable" -msgstr "IerÄ«ce tika padarÄ«ta atklÄjama" - -#: src/bluetooth/agent.c:817 -msgid "Device has been made limited discoverable" -msgstr "IerÄ«ce tika padarÄ«ta ierobežoti atklÄjama" - -#: src/bluetooth/agent.c:819 -msgid "Device has been switched into pairing mode" -msgstr "IerÄ«ce tika pÄrslÄ“gta pÄroÅ¡anas režīmÄ" - -#: src/bluetooth/bluetooth.c:117 -msgid "Bluetooth headset support plugin" -msgstr "Bluetooth austiņu atbalsta spraudnis" - -#: src/bluetooth/bluetooth.c:118 -msgid "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the " -"Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" -msgstr "" -"Bluetooth austiņu atbalsts\n" -"autortiesÄ«bas (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"Å is bija GSoC 2008 projekts - liels paldies manam padomdevÄ“jam Tony Vroon un " -"Audacious komandai\n" -"\n" -"Lai izmantotu AVRCP, kodolÄ jÄbÅ«t ielÄdÄ“tam 'uinput' modulim\n" -"Austiņu taustiņi tiks atpazÄ«ti kÄ parasti multivides taustiņi\n" -"un var tikt konfigurÄ“ti, izmantojot Audacious globÄlo Ä«sinÄjumtaustiņu " -"spraudni\n" -"vai citus jÅ«su logu pÄrvaldÄ«tÄja rÄ«kus\n" - -#: src/bluetooth/gui.c:148 -msgid "Producer" -msgstr "RažotÄjs" - -#: src/bluetooth/gui.c:221 -msgid "Available Headsets" -msgstr "PieejamÄs austiņas" - -#: src/bluetooth/gui.c:224 -msgid "Current Headset" -msgstr "PaÅ¡reizÄ“jÄs austiņas" - -#: src/bluetooth/gui.c:227 -msgid "_Refresh" -msgstr "A_tsvaidzinÄt" - -#: src/bluetooth/gui.c:231 -msgid "_Connect" -msgstr "_Pievienot" - -#: src/bluetooth/gui.c:237 -msgid "_Close" -msgstr "Ai_zvÄ“rt" - -#: src/bluetooth/gui.c:274 -msgid "Class" -msgstr "Klase" - -#: src/bluetooth/gui.c:278 -msgid "Address:" -msgstr "Adrese:" - -#: src/bluetooth/scan_gui.c:69 -msgid "Bonding finish!" -msgstr "Sasaiste pabeigta!" - -#: src/bluetooth/scan_gui.c:76 -msgid "No devices found!" -msgstr "Nav atrasta neviena ierÄ«ce!" - -#: src/bluetooth/scan_gui.c:119 -msgid "Scanning..." -msgstr "SkenÄ“..." - -#: src/bluetooth/scan_gui.c:122 -msgid "Pairing..." -msgstr "PÄro..." - -#: src/bluetooth/scan_gui.c:138 -msgid "Rescan" -msgstr "PÄrskenÄ“t" - -#: src/bluetooth/scan_gui.c:142 src/gtkui/ui_manager.c:66 -#: src/gtkui/ui_manager.c:67 src/hotkey/gui.c:71 src/skins/ui_manager.c:167 -#: src/skins/ui_manager.c:168 -msgid "Play" -msgstr "Atskaņot" - #: src/blur_scope/config.c:73 msgid "Blur Scope: Color selection" msgstr "Blur Scope: krÄsu izvÄ“le" @@ -1700,11 +745,11 @@ msgid "Options:" msgstr "IestatÄ«jumi:" -#: src/cdaudio-ng/cdaudio-ng.c:278 +#: src/cdaudio-ng/cdaudio-ng.c:264 msgid "About Audio CD Plugin" msgstr "Par audio CD spraudni" -#: src/cdaudio-ng/cdaudio-ng.c:279 +#: src/cdaudio-ng/cdaudio-ng.c:265 msgid "" "Copyright (c) 2007, by Calin Crisan and The Audacious " "Team.\n" @@ -1729,126 +774,156 @@ "\n" "AutortiesÄ«bas 2009 John Lindgren" -#: src/cdaudio-ng/configure.c:155 +#: src/cdaudio-ng/cdaudio-ng.c:558 +msgid "Audio CD" +msgstr "Audio CD" + +#: src/cdaudio-ng/cdaudio-ng.c:913 +msgid "Drive is empty." +msgstr "Dzinis ir tukÅ¡s." + +#: src/cdaudio-ng/cdaudio-ng.c:915 +msgid "Unsupported disk type." +msgstr "NeatbalstÄ«ts diska tips." + +#: src/cdaudio-ng/configure.c:148 msgid "CD Audio Plugin Configuration" -msgstr "CD Audio spraudņa konfigurÄcija" +msgstr "CD audio spraudņa konfigurÄcija" -#: src/cdaudio-ng/configure.c:167 +#: src/cdaudio-ng/configure.c:160 msgid "Digital audio extraction" msgstr "Ciparu audio ekstrakcija" -#: src/cdaudio-ng/configure.c:172 +#: src/cdaudio-ng/configure.c:165 msgid "Title information" msgstr "Nosaukuma informÄcija" -#: src/cdaudio-ng/configure.c:190 -#, fuzzy +#: src/cdaudio-ng/configure.c:176 msgid "Disc speed:" -msgstr "TaktÄtrums:" +msgstr "Diska Ätrums:" -#: src/cdaudio-ng/configure.c:198 +#: src/cdaudio-ng/configure.c:184 msgid "Use cd-text if available" msgstr "Izmantot cd-text, ja pieejams" -#: src/cdaudio-ng/configure.c:205 +#: src/cdaudio-ng/configure.c:191 msgid "Use CDDB if available" msgstr "Izmantot CDDB, ja pieejams" -#: src/cdaudio-ng/configure.c:211 +#: src/cdaudio-ng/configure.c:197 msgid "Server: " msgstr "Serveris: " -#: src/cdaudio-ng/configure.c:215 +#: src/cdaudio-ng/configure.c:201 msgid "Path: " msgstr "Ceļš: " -#: src/cdaudio-ng/configure.c:219 +#: src/cdaudio-ng/configure.c:205 msgid "Port: " msgstr "Ports: " -#: src/cdaudio-ng/configure.c:232 +#: src/cdaudio-ng/configure.c:218 msgid "Use HTTP instead of CDDBP" msgstr "Lietot HTTP nevis CDDBP" -#: src/cdaudio-ng/configure.c:244 +#: src/cdaudio-ng/configure.c:230 msgid "Override default device: " msgstr "AizstÄt noklusÄ“to ierÄ«ci: " -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:131 +#: src/echo_plugin/gui.c:123 src/jack/configure.c:146 src/null/null.c:112 +#: src/stereo_plugin/stereo.c:125 +msgid "Ok" +msgstr "Labi" + +#: src/cdaudio-ng/configure.c:249 src/crystalizer/crystalizer.c:138 +#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 src/null/null.c:113 +#: src/stereo_plugin/stereo.c:132 +msgid "Cancel" +msgstr "Atcelt" + +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Play CD" msgstr "Atskaņot CD" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Add CD" msgstr "Pievienot CD" -#: src/compressor/plugin.c:58 -#, fuzzy +#: src/compressor/plugin.c:67 msgid "About Dynamic Range Compression Plugin" -msgstr "Par Extra Stereo spraudni" +msgstr "Par Dynamic Range Compression spraudni" -#: src/compressor/plugin.c:91 -#, fuzzy +#: src/compressor/plugin.c:99 msgid "Dynamic Range Compressor Preferences" -msgstr "AudioCompress iestatÄ«jumi" +msgstr "Dynamic Range Compressor iestatÄ«jumi" -#: src/compressor/plugin.c:103 -#, fuzzy -msgid "Target volume:" -msgstr "MainÄ«t skaļumu" +#: src/compressor/plugin.c:111 +msgid "Center volume:" +msgstr "Centra skaļums:" -#: src/compressor/plugin.c:116 -#, fuzzy -msgid "Effect strength:" -msgstr "Efekta intensitÄte:" +#: src/compressor/plugin.c:124 +msgid "Dynamic range:" +msgstr "Dinamiskais diapazons:" -#: src/console/configure.c:137 +#: src/console/configure.c:138 msgid "Game Console Music Decoder" msgstr "Spēļu konsoles mÅ«zikas dekodÄ“tÄjs" -#: src/console/configure.c:171 +#: src/console/configure.c:155 +msgid "General" +msgstr "VispÄrÄ«gi" + +#: src/console/configure.c:157 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "AtskaņoÅ¡ana" + +#: src/console/configure.c:172 msgid "Bass:" msgstr "Bass:" -#: src/console/configure.c:175 src/console/configure.c:186 -#: src/console/configure.c:207 +#: src/console/configure.c:176 src/console/configure.c:187 +#: src/console/configure.c:208 msgid "secs" msgstr "sekundes" -#: src/console/configure.c:182 +#: src/console/configure.c:183 msgid "Treble:" msgstr "Augstie toņi:" -#: src/console/configure.c:203 +#: src/console/configure.c:204 msgid "Default song length:" msgstr "NoklusÄ“tais dziesmas garums:" -#: src/console/configure.c:209 src/modplug/gui/interface.cxx:269 -#: src/sid/xs_interface.c:666 +#: src/console/configure.c:210 src/sid/xs_interface.c:666 msgid "Resampling" msgstr "IztverÅ¡anas tempa pÄrveidoÅ¡ana" -#: src/console/configure.c:215 +#: src/console/configure.c:216 msgid "Enable audio resampling" msgstr "IeslÄ“gt audio iztverÅ¡anas tempa pÄrveidoÅ¡anu" -#: src/console/configure.c:230 +#: src/console/configure.c:231 msgid "Resampling rate:" msgstr "IztverÅ¡anas temps:" -#: src/console/configure.c:245 +#: src/console/configure.c:235 src/sid/xs_interface.c:354 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:246 msgid "SPC" msgstr "SPC" -#: src/console/configure.c:246 +#: src/console/configure.c:247 msgid "Ignore length from SPC tags" msgstr "IgnorÄ“t garums no SPC tagiem" -#: src/console/configure.c:247 +#: src/console/configure.c:248 msgid "Increase reverb" msgstr "PalielinÄt atbalsi" -#: src/console/configure.c:272 +#: src/console/configure.c:273 msgid "" "The default song length, expressed in seconds, is used for songs that do not " "provide length information (i.e. looping tracks)." @@ -1872,476 +947,124 @@ "IevieÅ¡ana iekÅ¡ Audacious: William Pitcock , \n" " Shay Green \n" -#: src/crossfade/plugin.c:51 -#, fuzzy +#: src/crossfade/plugin.c:65 msgid "About Crossfade" -msgstr "Par sapludinÄÅ¡anas spraudni" +msgstr "Par Crossfade" -#: src/crossfade/plugin.c:84 -#, fuzzy +#: src/crossfade/plugin.c:97 msgid "Crossfade Preferences" -msgstr "IestatÄ«jumi" +msgstr "Crossfade iestatÄ«jumi" -#: src/crossfade/plugin.c:95 +#: src/crossfade/plugin.c:109 msgid "Overlap (in seconds):" -msgstr "" +msgstr "PÄrklÄÅ¡anÄs (sekundÄ“s):" -#: src/crossfade/plugin.c:129 src/crossfade/plugin.c:137 -#, fuzzy +#: src/crossfade/plugin.c:140 src/crossfade/plugin.c:146 msgid "Crossfade Error" -msgstr "SapludinÄtÄjs" +msgstr "Crossfade kļūda" -#: src/crossfade/plugin.c:130 +#: src/crossfade/plugin.c:140 msgid "" "Crossfading failed because the songs had a different number of channels." -msgstr "" +msgstr "SapludinÄÅ¡ana neizdevÄs, jo dziesmÄm ir dažÄds kanÄlu skaits." -#: src/crossfade/plugin.c:138 +#: src/crossfade/plugin.c:148 msgid "" "Crossfading failed because the songs had different sample rates.\n" "\n" "You can use the Sample Rate Converter effect to resample the songs to the " "same rate." msgstr "" +"SapludinÄÅ¡ana neizdevÄs, jo dziesmÄm ir dažÄdas iztverÅ¡anas frekvences.\n" +"\n" +"Varat izmantot Sample Rate Converter efektu, lai pÄrveidotu dziesmas uz to " +"paÅ¡u iztverÅ¡anas frekvenci." -#: src/crystalizer/crystalizer.c:104 +#: src/crystalizer/crystalizer.c:108 msgid "Configure Crystalizer" msgstr "KonfigurÄ“t Crystalizer" -#: src/crystalizer/crystalizer.c:106 src/stereo_plugin/stereo.c:102 +#: src/crystalizer/crystalizer.c:110 src/stereo_plugin/stereo.c:104 msgid "Effect intensity:" msgstr "Efekta intensitÄte:" -#: src/crystalizer/crystalizer.c:143 src/echo_plugin/gui.c:137 -#: src/modplug/gui/interface.cxx:709 src/stereo_plugin/stereo.c:139 +#: src/crystalizer/crystalizer.c:144 src/echo_plugin/gui.c:136 +#: src/stereo_plugin/stereo.c:138 msgid "Apply" msgstr "Pielietot" -#: src/echo_plugin/gui.c:14 +#: src/daemon/daemon.c:58 +msgid "Daemon Interface (like old headless mode)" +msgstr "DÄ“mona saskarne (lÄ«dzÄ«gs vecajam bezgalvas režīmam)" + +#: src/echo_plugin/gui.c:15 msgid "" "Echo Plugin\n" "By Johan Levin 1999.\n" "\n" "Surround echo by Carl van Schaik 1999" msgstr "" -"Atbalss spraudnis\n" +"Echo spraudnis\n" "Autors Johan Levin 1999.\n" "\n" "IeskaujoÅ¡Äs atbalss autors Carl van Schaik 1999" -#: src/echo_plugin/gui.c:26 +#: src/echo_plugin/gui.c:27 msgid "About Echo Plugin" -msgstr "Par atbalss spraudni" +msgstr "Par Echo spraudni" -#: src/echo_plugin/gui.c:69 +#: src/echo_plugin/gui.c:72 msgid "Configure Echo" -msgstr "KonfigurÄ“t atbalss" +msgstr "KonfigurÄ“t Echo" -#: src/echo_plugin/gui.c:82 +#: src/echo_plugin/gui.c:88 msgid "Delay: (ms)" msgstr "Aizture: (ms)" -#: src/echo_plugin/gui.c:87 +#: src/echo_plugin/gui.c:93 msgid "Feedback: (%)" msgstr "Atbilde: (%)" -#: src/echo_plugin/gui.c:92 +#: src/echo_plugin/gui.c:98 msgid "Volume: (%)" msgstr "Skaļums: (%)" -#: src/evdev-plug/ed.c:60 -msgid "Playback->Play" -msgstr "AtskaņoÅ¡ana->Atskaņot" - -#: src/evdev-plug/ed.c:61 -msgid "Playback->Stop" -msgstr "AtskaņoÅ¡ana->Stop" - -#: src/evdev-plug/ed.c:62 -msgid "Playback->Pause" -msgstr "AtskaņoÅ¡ana->Pauze" - -#: src/evdev-plug/ed.c:63 -msgid "Playback->Prev" -msgstr "AtskaņoÅ¡ana->IepriekÅ¡Ä“jÄ" - -#: src/evdev-plug/ed.c:64 -msgid "Playback->Next" -msgstr "AtskaņoÅ¡ana->NÄkamÄ" - -#: src/evdev-plug/ed.c:65 -msgid "Playback->Eject" -msgstr "AtskaņoÅ¡ana->Izņemt" - -#: src/evdev-plug/ed.c:67 -msgid "Playlist->Repeat" -msgstr "RepertuÄrs->AtkÄrtot" - -#: src/evdev-plug/ed.c:68 -msgid "Playlist->Shuffle" -msgstr "RepertuÄrs->Sajaukt" - -#: src/evdev-plug/ed.c:70 -msgid "Volume->Up_5" -msgstr "Skaļums->Uz_augÅ¡u_5" - -#: src/evdev-plug/ed.c:71 -msgid "Volume->Down_5" -msgstr "Skaļums->Uz_leju_5" - -#: src/evdev-plug/ed.c:72 -msgid "Volume->Up_10" -msgstr "Skaļums->Uz_augÅ¡u_10" - -#: src/evdev-plug/ed.c:73 -msgid "Volume->Down_10" -msgstr "Skaļums->Uz_leju_10" - -#: src/evdev-plug/ed.c:74 -msgid "Volume->Mute" -msgstr "Skaļums->ApklusinÄt" - -#: src/evdev-plug/ed.c:76 -msgid "Window->Main" -msgstr "Logs->Galvenais" - -#: src/evdev-plug/ed.c:77 -msgid "Window->Playlist" -msgstr "Logs->RepertuÄrs" - -#: src/evdev-plug/ed.c:78 -msgid "Window->Equalizer" -msgstr "Logs->Balansieris" - -#: src/evdev-plug/ed.c:79 -msgid "Window->JumpToFile" -msgstr "Logs->PÄrietUzFailu" - -#: src/evdev-plug/ed_internals.c:94 +#: src/ffaudio/ffaudio-core.c:763 #, c-format msgid "" -"event-device-plugin: unable to open device file %s , skipping this device; " -"check that the file exists and that you have read permission for it\n" -msgstr "" -"event-device-plugin: neizdevÄs atvÄ“rt ierÄ«ces failu %s , ierÄ«ce tika " -"izlaista; pÄrbaudiet, vai fails eksistÄ“ un vai jums ir lasÄ«Å¡anas atļauja Å¡im " -"failam\n" - -#: src/evdev-plug/ed_internals.c:103 -#, c-format -msgid "" -"event-device-plugin: unable to create a io_channel for device file %s ," -"skipping this device\n" -msgstr "" -"event-device-plugin: neizdevÄs izveidot io_channel ierÄ«ces failam %s , " -"ierÄ«ce tika izlaista\n" - -#: src/evdev-plug/ed_internals.c:342 -msgid "" -"event-device-plugin: unable to open /proc/bus/input/devices , automatic " -"detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: neizdevÄs atvÄ“rt /proc/bus/input/devices , automÄtiskÄ " -"notikumu ierÄ«Äu atraÅ¡ana nedarbosies.\n" - -#: src/evdev-plug/ed_internals.c:351 -msgid "" -"event-device-plugin: unable to open a io_channel for /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: neizdevÄs atvÄ“rt io_channel /proc/bus/input/ ierÄ«cÄ“m , " -"automÄtiskÄ notikumu ierÄ«Äu atraÅ¡ana nedarbosies.\n" - -#: src/evdev-plug/ed_internals.c:361 -msgid "" -"event-device-plugin: an error occurred while reading /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" +"Multi-format audio decoding plugin for Audacious based on\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious plugin by:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" msgstr "" -"event-device-plugin: kļūda lasot /proc/bus/input/ ierÄ«ces , automÄtiskÄ " -"notikumu ierÄ«Äu atraÅ¡ana nedarbosies.\n" +"DaudzformÄtu audio dekodÄ“Å¡anas Audacious spraudnis, kas balstÄ«ts uz\n" +"FFmpeg multivides karkasu (http://www.ffmpeg.org/)\n" +"AutortiesÄ«bas (c) 2000-2009 Fabrice Bellard, u.c.\n" +"\n" +"Audacious spraudņa autori:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" -#: src/evdev-plug/ed_internals.c:424 -#, c-format -msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" -msgstr "" -"event-device-plugin: ierÄ«ce %s nav atrasta iekÅ¡ /dev/input , tÄ tiek\n" -"izlaista.\n" +#: src/ffaudio/ffaudio-core.c:777 +msgid "About FFaudio Plugin" +msgstr "Par FFaudio spraudni" -#: src/evdev-plug/ed_internals.c:489 src/evdev-plug/ed_internals.c:583 -#, c-format -msgid "" -"event-device-plugin: unable to load config file %s , default settings will " -"be used.\n" -msgstr "" -"event-device-plugin: neizdevÄs ielÄdÄ“t konfigurÄcijas failu %s , tiks " -"izmantoti noklusÄ“tie iestatÄ«jumi.\n" +#: src/filewriter/filewriter.c:155 +msgid "About FileWriter-Plugin" +msgstr "Par FileWriter spraudni" -#: src/evdev-plug/ed_internals.c:535 -#, c-format -msgid "" -"event-device-plugin: incomplete information in config file for device \"%s" -"\" , skipping.\n" -msgstr "" -"event-device-plugin: nepilnÄ«ga informÄcija konfigurÄcijas failÄ ierÄ«cei \"%s" -"\", tÄ tiks izlaista.\n" - -#: src/evdev-plug/ed_internals.c:604 src/evdev-plug/ed_internals.c:936 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_active value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: konfigurÄcija, neizdevÄs iegÅ«t is_active vÄ“rtÄ«bu " -"ierÄ«cei \"%s\", tÄ tiks izlaista.\n" - -#: src/evdev-plug/ed_internals.c:840 -#, c-format -msgid "" -"event-device-plugin: unable to access local directory %s , settings will not " -"be saved.\n" -msgstr "" -"event-device-plugin: neizdevÄs piekļūt vietÄ“jai mapei %s , iestatÄ«jumi " -"netiks saglabÄti.\n" - -#: src/evdev-plug/ed_internals.c:890 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get filename value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: konfigurÄcija, neizdevÄs iegÅ«t filename vÄ“rtÄ«bu ierÄ«cei " -"\"%s\", tÄ tiks izlaista.\n" - -#: src/evdev-plug/ed_internals.c:906 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get phys value for device \"%s" -"\", skipping it.\n" -msgstr "" -"event-device-plugin: konfigurÄcija, neizdevÄs iegÅ«t phys vÄ“rtÄ«bu ierÄ«cei " -"\"%s \", tÄ tiks izlaista.\n" - -#: src/evdev-plug/ed_internals.c:922 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_custom value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: konfigurÄcija, neizdevÄs iegÅ«t is_custom vÄ“rtÄ«bu " -"ierÄ«cei \"%s\", tÄ tiks izlaista.\n" - -#: src/evdev-plug/ed_internals.c:946 -#, c-format -msgid "" -"event-device-plugin: configuration, unexpected value for device \"%s\", " -"skipping it.\n" -msgstr "" -"event-device-plugin: konfigurÄcija, negaidÄ«ta vÄ“rtÄ«ba ierÄ«cei \"%s \", tÄ " -"tiks izlaista.\n" - -#: src/evdev-plug/ed_ui.c:212 -msgid "Detected" -msgstr "Atrasts" - -#: src/evdev-plug/ed_ui.c:217 -msgid "Custom" -msgstr "PielÄgots" - -#: src/evdev-plug/ed_ui.c:223 -msgid "Not Detected" -msgstr "Nav atrasts" - -#: src/evdev-plug/ed_ui.c:275 src/evdev-plug/ed_ui.c:411 -#: src/evdev-plug/ed_ui.c:874 -msgid "Information" -msgstr "InformÄcija" - -#: src/evdev-plug/ed_ui.c:276 -msgid "" -"Cannot open bindings window for a not-detected device.\n" -"Ensure that the device has been correctly plugged in." -msgstr "" -"Nevar atvÄ“rt piesaistu logu ierÄ«cei, kas nav atrasta.\n" -"PÄrliecinieties, ka ir pareizi pievienota." - -#: src/evdev-plug/ed_ui.c:319 -msgid "Error" -msgstr "Kļūda" - -#: src/evdev-plug/ed_ui.c:320 -msgid "" -"Unable to open selected device.\n" -"Please check read permissions on device file." -msgstr "" -"NeizdevÄs atvÄ“rt izvÄ“lÄ“to ierÄ«ci.\n" -"LÅ«dzu, pÄrbaudiet lasÄ«Å¡anas atļaujas ierÄ«ces failam." - -#: src/evdev-plug/ed_ui.c:341 -msgid "EvDev-Plug - Add custom device" -msgstr "EvDev-Plug - Pievienot pielÄgotu ierÄ«ci" - -#: src/evdev-plug/ed_ui.c:353 -msgid "" -"EvDev-Plug tries to automatically detect and update information about\n" -"event devices available on the system.\n" -"However, if auto-detect doesn't work for your system, or you have event\n" -"devices in a non-standard location (currently they're only searched in\n" -"/dev/input/ ), you may want to add a custom device, explicitly specifying\n" -"name and device file." -msgstr "" -"EvDev-Plug mÄ“Ä£ina automÄtiski atrast un atjaunot informÄciju par notikumu\n" -"ierÄ«cÄ“m, kas pieejamas jÅ«su sistÄ“mÄ.\n" -"TomÄ“r, ja automÄtiskÄ atraÅ¡ana jÅ«su sistÄ“mÄ nedarbojas, vai arÄ« notikumu\n" -"ierÄ«ces ir nestandarta vietÄ (paÅ¡reiz tÄs tiek meklÄ“tas tikai iekÅ¡ /dev/" -"input/ ),\n" -"jÅ«s varat pievienot pielÄgotu ierÄ«ci, norÄdot tÄs nosaukumu un ierÄ«ces failu." - -#: src/evdev-plug/ed_ui.c:361 -msgid "Device name:" -msgstr "IerÄ«ces nosaukums:" - -#: src/evdev-plug/ed_ui.c:365 -msgid "Device file:" -msgstr "IerÄ«ces fails:" - -#: src/evdev-plug/ed_ui.c:404 -msgid "(custom)" -msgstr "(pielÄgots)" - -#: src/evdev-plug/ed_ui.c:412 -msgid "" -"Please specify both name and filename.\n" -"Filename must be specified with absolute path." -msgstr "" -"LÅ«dzu, norÄdiet gan nosaukumu, gan faila nosaukumu.\n" -"Faila nosaukumu jÄnorÄda ar pilno ceļu." - -#: src/evdev-plug/ed_ui.c:447 -msgid "Do you want to remove the existing configuration for selected device?\n" -msgstr "Vai vÄ“laties dzÄ“st paÅ¡reizÄ“jo konfigurÄciju izvÄ“lÄ“tajai ierÄ«cei?\n" - -#: src/evdev-plug/ed_ui.c:466 -msgid "Do you want to remove the selected custom device?\n" -msgstr "Vai vÄ“laties dzÄ“st izvÄ“lÄ“to pielÄgoto ierÄ«ci?\n" - -#: src/evdev-plug/ed_ui.c:612 -msgid "EvDev-Plug - Configuration" -msgstr "EvDev-Plug - KonfigurÄcija" - -#: src/evdev-plug/ed_ui.c:651 -msgid "Active" -msgstr "AktÄ«vs" - -#: src/evdev-plug/ed_ui.c:655 src/sun/configure.c:486 -msgid "Status" -msgstr "Statuss" - -#: src/evdev-plug/ed_ui.c:664 -msgid "Device Name" -msgstr "IerÄ«ces nosaukums" - -#: src/evdev-plug/ed_ui.c:668 -msgid "Device File" -msgstr "IerÄ«ces fails" - -#: src/evdev-plug/ed_ui.c:672 -msgid "Device Address" -msgstr "IerÄ«ces adrese" - -#: src/evdev-plug/ed_ui.c:689 -msgid "_Bindings" -msgstr "Pie_saistes" - -#: src/evdev-plug/ed_ui.c:838 -msgid "" -"Press a key of your device to bind it;\n" -"if no key is pressed in five seconds, this window\n" -"will close without binding changes." -msgstr "" -"Nospiediet jÅ«su ierÄ«ces taustiņu, lai to piesaistÄ«tu;\n" -"ja pÄ“c piecu sekunžu laikÄ netiks nospiests neviens\n" -"taustiņš, Å¡is logs aizvÄ“rsies, neizmainot piesaistes." - -#: src/evdev-plug/ed_ui.c:875 -msgid "" -"This input event has been already assigned.\n" -"\n" -"It's not possible to assign multiple actions to the same input event " -"(although it's possible to assign the same action to multiple events)." -msgstr "" -"Å is ievades notikums jau ir piesaistÄ«ts.\n" -"\n" -"Nav iespÄ“jams piesaistÄ«t vairÄkas darbÄ«bas vienam ievades notikumam (tomÄ“r " -"ir iespÄ“jams piesaistÄ«t vienu darbÄ«bu vairÄkiem notikumiem)." - -#: src/evdev-plug/ed_ui.c:1323 -msgid "EvDev-Plug - Bindings Configuration" -msgstr "EvDev-Plug - Piesaistu konfigurÄcija" - -#: src/evdev-plug/ed_ui.c:1363 -msgid "Name: " -msgstr "Nosaukums: " - -#: src/evdev-plug/ed_ui.c:1372 -msgid "Filename: " -msgstr "Faila nosaukums: " - -#: src/evdev-plug/ed_ui.c:1381 -msgid "Phys.Address: " -msgstr "Fiz. adrese: " - -#: src/evdev-plug/ed_ui.c:1460 -msgid "EvDev-Plug - about" -msgstr "EvDev-Plug - par" - -#: src/evdev-plug/ed_ui.c:1491 -msgid "" -"\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"written by Giacomo Lozito\n" -msgstr "" -"\n" -"atskaņotÄja tÄlvadÄ«ba ar notikumu ierÄ«cÄ“m\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"autors Giacomo Lozito\n" - -#: src/ffaudio/ffaudio-core.c:662 -#, fuzzy, c-format -msgid "" -"Multi-format audio decoding plugin for Audacious based on\n" -"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" -"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" -"\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" -"Audacious plugin by:\n" -" William Pitcock ,\n" -" Matti Hämäläinen \n" -msgstr "" -"DaudzformÄtu audio dekodÄ“Å¡anas Audacious spraudnis, kas balstÄ«ts uz\n" -"FFmpeg multivides karkasu (http://www.ffmpeg.org/)\n" -"AutortiesÄ«bas (c) 2000-2009 Fabrice Bellard, u.c.\n" -"\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" -"AtbalstÄ«tie formÄti: %s\n" -"\n" -"Audacious spraudņa autori:\n" -" William Pitcock ,\n" -" Matti Hämäläinen \n" - -#: src/ffaudio/ffaudio-core.c:675 -msgid "About FFaudio Plugin" -msgstr "Par FFaudio spraudni" - -#: src/filewriter/filewriter.c:180 -msgid "About FileWriter-Plugin" -msgstr "Par FileWriter spraudni" - -#: src/filewriter/filewriter.c:181 +#: src/filewriter/filewriter.c:156 msgid "" "FileWriter-Plugin\n" "\n" @@ -2375,250 +1098,207 @@ "Ja tÄ nav, rakstiet uz Free Software Foundation, Inc., 51 Franklin Street,\n" "Fifth Floor, Boston, MA 02110-1301, USA." -#: src/filewriter/filewriter.c:466 +#: src/filewriter/filewriter.c:450 msgid "File Writer Configuration" msgstr "Failu rakstÄ«tÄja konfigurÄcija" -#: src/filewriter/filewriter.c:478 +#: src/filewriter/filewriter.c:462 msgid "Output file format:" msgstr "Izvades faila formÄts:" -#: src/filewriter/filewriter.c:496 src/ladspa/ladspa.c:1058 +#: src/filewriter/filewriter.c:480 msgid "Configure" msgstr "KonfigurÄ“t" -#: src/filewriter/filewriter.c:511 +#: src/filewriter/filewriter.c:495 msgid "Save into original directory" msgstr "SaglabÄt oriÄ£inÄlajÄ mapÄ“" -#: src/filewriter/filewriter.c:516 +#: src/filewriter/filewriter.c:500 msgid "Save into custom directory" msgstr "SaglabÄt pielÄgotÄ mapÄ“" -#: src/filewriter/filewriter.c:528 +#: src/filewriter/filewriter.c:510 msgid "Output file folder:" msgstr "Izvades faila mape:" -#: src/filewriter/filewriter.c:532 +#: src/filewriter/filewriter.c:514 msgid "Pick a folder" msgstr "IzvÄ“lieties mapi" -#: src/filewriter/filewriter.c:551 +#: src/filewriter/filewriter.c:533 msgid "Get filename from:" msgstr "IegÅ«t faila nosaukumu no:" -#: src/filewriter/filewriter.c:554 +#: src/filewriter/filewriter.c:536 msgid "original file tags" msgstr "oriÄ£inÄlajiem faila tagiem" -#: src/filewriter/filewriter.c:560 +#: src/filewriter/filewriter.c:542 msgid "original filename" msgstr "oriÄ£inÄlÄ faila nosaukuma" -#: src/filewriter/filewriter.c:570 +#: src/filewriter/filewriter.c:552 msgid "Don't strip file name extension" msgstr "Neatmest faila paplaÅ¡inÄjumu" -#: src/filewriter/filewriter.c:574 -msgid "" -"If enabled, the extension from the original filename will not be stripped " -"before adding the new file extension to the end." -msgstr "" -"Ja ieslÄ“gts, paplaÅ¡inÄjums no oriÄ£inÄlÄ faila nosaukuma netiks atmests pirms " -"jaunÄ faila paplaÅ¡inÄjuma pievienoÅ¡anas beigÄs." - -#: src/filewriter/filewriter.c:588 +#: src/filewriter/filewriter.c:567 msgid "Prepend track number to filename" msgstr "Pievienot celiņa numuru pirms faila nosaukuma" -#: src/filewriter/mp3.c:710 +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:783 +msgid "Auto" +msgstr "AutomÄtiski" + +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" +msgstr "Joint Stereo" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 src/sid/xs_interface.c:308 +msgid "Stereo" +msgstr "Stereo" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 src/sid/xs_interface.c:301 +msgid "Mono" +msgstr "Mono" + +#: src/filewriter/mp3.c:724 msgid "MP3 Configuration" msgstr "MP3 konfigurÄcija" -#: src/filewriter/mp3.c:737 +#: src/filewriter/mp3.c:747 msgid "Algorithm Quality:" msgstr "Algoritma kvalitÄte:" -#: src/filewriter/mp3.c:759 -msgid "" -"best/slowest:0;\n" -"worst/fastest:9;\n" -"recommended:2;\n" -"default:5;" -msgstr "" -"labÄkais/lÄ“nÄkais:0;\n" -"sliktÄkais/ÄtrÄkais:9;\n" -"rekomendÄ“tais:2;\n" -"noklusÄ“tais:5;" - -#: src/filewriter/mp3.c:767 +#: src/filewriter/mp3.c:772 msgid "Output Samplerate:" msgstr "Izvades iztverÅ¡anas temps:" -#: src/filewriter/mp3.c:778 src/filewriter/mp3.c:919 -msgid "Auto" -msgstr "AutomÄtiski" - #: src/filewriter/mp3.c:800 msgid "(Hz)" msgstr "(Hz)" -#: src/filewriter/mp3.c:812 +#: src/filewriter/mp3.c:807 msgid "Bitrate / Compression ratio:" msgstr "BitÄtrums / Kompresijas attiecÄ«ba:" -#: src/filewriter/mp3.c:838 +#: src/filewriter/mp3.c:831 msgid "Bitrate (kbps):" msgstr "BitÄtrums (kbps):" -#: src/filewriter/mp3.c:879 +#: src/filewriter/mp3.c:864 msgid "Compression ratio:" msgstr "Kompresijas attiecÄ«ba:" -#: src/filewriter/mp3.c:909 +#: src/filewriter/mp3.c:888 msgid "Audio Mode:" msgstr "Audio režīms:" -#: src/filewriter/mp3.c:924 -msgid "Joint-Stereo" -msgstr "Joint-Stereo" - -#: src/filewriter/mp3.c:967 +#: src/filewriter/mp3.c:913 msgid "Misc:" msgstr "DažÄdi:" -#: src/filewriter/mp3.c:978 +#: src/filewriter/mp3.c:924 msgid "Enforce strict ISO complience" msgstr "Uzspiest stingru ISO savietojamÄ«bu" -#: src/filewriter/mp3.c:989 +#: src/filewriter/mp3.c:935 msgid "Error protection" msgstr "Kļūdu aizsardzÄ«ba" -#: src/filewriter/mp3.c:1001 -msgid "Adds 16 bit checksum to every frame" -msgstr "Pievieno 16 bitu kontrolsummu katram kadram" - -#: src/filewriter/mp3.c:1006 src/filewriter/vorbis.c:247 -#: src/modplug/gui/interface.cxx:320 +#: src/filewriter/mp3.c:947 src/filewriter/vorbis.c:245 msgid "Quality" msgstr "KvalitÄte" -#: src/filewriter/mp3.c:1018 +#: src/filewriter/mp3.c:957 msgid "Enable VBR/ABR" msgstr "IeslÄ“gt VBR/ABR" -#: src/filewriter/mp3.c:1030 +#: src/filewriter/mp3.c:967 msgid "Type:" msgstr "Tips:" -#: src/filewriter/mp3.c:1041 -msgid "Variable bitrate" -msgstr "MainÄ«gs bitÄtrums" - -#: src/filewriter/mp3.c:1053 -msgid "Average bitrate" -msgstr "VidÄ“jais bitÄtrums" - -#: src/filewriter/mp3.c:1067 +#: src/filewriter/mp3.c:1000 msgid "VBR Options:" msgstr "VBR opcijas:" -#: src/filewriter/mp3.c:1083 +#: src/filewriter/mp3.c:1016 msgid "Minimum bitrate (kbps):" msgstr "MinimÄlais bitÄtrums (kbps):" -#: src/filewriter/mp3.c:1119 +#: src/filewriter/mp3.c:1043 msgid "Maximum bitrate (kbps):" msgstr "MaksimÄlais bitÄtrums (kbps):" -#: src/filewriter/mp3.c:1151 +#: src/filewriter/mp3.c:1066 msgid "Strictly enforce minimum bitrate" msgstr "Stingri uzspiest minimÄlo bitÄtrumu" -#: src/filewriter/mp3.c:1153 -msgid "" -"For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/" -"mp3 player)" -msgstr "" -"IzmantoÅ¡anai ar atskaņotÄjiem, kas neatbalsta zema bitÄtruma mp3 (Apex AD600-" -"A DVD/mp3 atskaņotÄjs)" - -#: src/filewriter/mp3.c:1166 +#: src/filewriter/mp3.c:1078 msgid "ABR Options:" msgstr "ABR opcijas:" -#: src/filewriter/mp3.c:1176 +#: src/filewriter/mp3.c:1088 msgid "Average bitrate (kbps):" msgstr "VidÄ“jais bitÄtrums (kbps):" -#: src/filewriter/mp3.c:1213 +#: src/filewriter/mp3.c:1116 msgid "VBR quality level:" msgstr "VBR kvalitÄtes lÄ«menis:" -#: src/filewriter/mp3.c:1228 -msgid "" -"highest:0;\n" -"lowest:9;\n" -"default:4;" -msgstr "" -"augstÄkais:0;\n" -"zemÄkais:9;\n" -"noklusÄ“tais:4;" - -#: src/filewriter/mp3.c:1236 +#: src/filewriter/mp3.c:1135 msgid "Don't write Xing VBR header" msgstr "NerakstÄ«t Xing VBR galveni" -#: src/filewriter/mp3.c:1250 +#: src/filewriter/mp3.c:1149 msgid "VBR/ABR" msgstr "VBR/ABR" -#: src/filewriter/mp3.c:1262 +#: src/filewriter/mp3.c:1159 msgid "Frame params:" msgstr "Kadra parametri:" -#: src/filewriter/mp3.c:1274 +#: src/filewriter/mp3.c:1171 msgid "Mark as copyright" msgstr "AtzÄ«mÄ“t kÄ autortiesÄ«bas" -#: src/filewriter/mp3.c:1285 +#: src/filewriter/mp3.c:1182 msgid "Mark as original" msgstr "AtzÄ«mÄ“t kÄ oriÄ£inÄlu" -#: src/filewriter/mp3.c:1297 +#: src/filewriter/mp3.c:1194 msgid "ID3 params:" msgstr "ID3 parametri:" -#: src/filewriter/mp3.c:1308 +#: src/filewriter/mp3.c:1205 msgid "Force addition of version 2 tag" msgstr "Uzspiest 2. versijas tagu pievienoÅ¡anu" -#: src/filewriter/mp3.c:1318 +#: src/filewriter/mp3.c:1215 msgid "Only add v1 tag" msgstr "Pievienot tikai 1. versijas tagu" -#: src/filewriter/mp3.c:1325 +#: src/filewriter/mp3.c:1222 msgid "Only add v2 tag" msgstr "Pievienot tikai 2. versijas tagu" -#: src/filewriter/mp3.c:1346 +#: src/filewriter/mp3.c:1243 msgid "Tags" msgstr "Tagi" -#: src/filewriter/vorbis.c:240 +#: src/filewriter/vorbis.c:238 msgid "Vorbis Encoder Configuration" msgstr "Vorbis kodÄ“tÄja konfigurÄcija" -#: src/filewriter/vorbis.c:260 +#: src/filewriter/vorbis.c:258 msgid "Quality level (0 - 10):" msgstr "KvalitÄtes lÄ«menis (0 - 10):" -#: src/flacng/plugin.c:457 -msgid "FLAC Audio Plugin " -msgstr "FLAC audio spraudnis" +#: src/flacng/plugin.c:379 +msgid "About FLAC Audio Plugin" +msgstr "Par FLAC audio spraudni" -#: src/flacng/plugin.c:458 +#: src/flacng/plugin.c:380 msgid "" "\n" "\n" @@ -2634,15 +1314,11 @@ "\n" "http://www.skytale.net/projects/bmp-flac2/" -#: src/flacng/plugin.c:464 -msgid "About FLAC Audio Plugin" -msgstr "Par FLAC audio spraudni" - -#: src/gnomeshortcuts/gnomeshortcuts.c:306 +#: src/gnomeshortcuts/gnomeshortcuts.c:303 msgid "About Gnome Shortcut Plugin" msgstr "Par Gnome Ä«sceļu spraudni" -#: src/gnomeshortcuts/gnomeshortcuts.c:307 +#: src/gnomeshortcuts/gnomeshortcuts.c:304 msgid "" "Gnome Shortcut Plugin\n" "Let's you control the player with Gnome's shortcuts.\n" @@ -2656,493 +1332,441 @@ "AutortiesÄ«bas (C) 2007-2008 Sascha Hlusiak \n" "\n" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:273 +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 msgid "Open Files" msgstr "AtvÄ“rt failus" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:271 msgid "Add Files" msgstr "Pievienot failus" -#: src/gntui/gntui.c:271 +#: src/gntui/gntui.c:270 msgid "Audacious2" msgstr "Audacious2" -#: src/gntui/gntui.c:312 +#: src/gntui/gntui.c:311 msgid "gnt interface" msgstr "gnt saskarne" -#: src/gtkui/actions.c:257 src/skins/ui_main.c:818 -msgid "Can't jump to time when no track is being played.\n" -msgstr "Nevar pÄriet uz noteiktu laiku, ja nekas netiek atskaņots.\n" - -#: src/gtkui/actions.c:272 src/gtkui/ui_manager.c:204 -#: src/gtkui/ui_manager.c:205 src/skins/ui_main.c:833 -#: src/skins/ui_manager.c:410 src/skins/ui_manager.c:411 -msgid "Jump to Time" -msgstr "PÄriet uz laiku" +#: src/gtkui/columns.c:36 +msgid "Entry number" +msgstr "Ieraksta numurs" -#: src/gtkui/actions.c:289 src/skins/ui_main.c:854 -msgid "minutes:seconds" -msgstr "minÅ«tes:sekundes" - -#: src/gtkui/actions.c:299 src/skins/ui_main.c:864 -msgid "Track length:" -msgstr "Celiņa garums:" +#: src/gtkui/columns.c:36 src/sid/xs_interface.c:1103 +msgid "Title" +msgstr "Nosaukums" -#: src/gtkui/actions.c:610 src/skins/ui_playlist.c:648 -#, c-format -msgid "Error writing playlist \"%s\": %s" -msgstr "Kļūda rakstot repertuÄru \"%s\": %s" +#: src/gtkui/columns.c:37 +msgid "Artist" +msgstr "IzpildÄ«tÄjs" + +#: src/gtkui/columns.c:37 +msgid "Year" +msgstr "Gads" + +#: src/gtkui/columns.c:37 +msgid "Album" +msgstr "Albums" + +#: src/gtkui/columns.c:37 +msgid "Track" +msgstr "Celiņš" + +#: src/gtkui/columns.c:37 +msgid "Queue position" +msgstr "Novietojums rindÄ" + +#: src/gtkui/columns.c:38 +msgid "Length" +msgstr "Ilgums" + +#: src/gtkui/columns.c:38 +msgid "File path" +msgstr "Faila ceļš" -#: src/gtkui/actions.c:625 src/skins/ui_playlist.c:670 -#, c-format -msgid "%s already exist. Continue?" -msgstr "%s jau pastÄv. TurpinÄt?" +#: src/gtkui/columns.c:38 +msgid "File name" +msgstr "Faila nosaukums" -#: src/gtkui/actions.c:651 src/skins/ui_manager.c:214 -#, fuzzy -msgid "Export Playlist" -msgstr "IelÄdÄ“t repertuÄru" +#: src/gtkui/columns.c:38 +msgid "Custom title" +msgstr "PielÄgots nosaukums" + +#: src/gtkui/columns.c:39 +msgid "Bitrate" +msgstr "BitÄtrums" + +#: src/gtkui/columns.c:286 +msgid "Choose Columns" +msgstr "IzvÄ“lÄ“ties kolonnas" + +#: src/gtkui/columns.c:300 +msgid "Available:" +msgstr "Pieejams:" + +#: src/gtkui/columns.c:334 +msgid "Chosen:" +msgstr "IzvÄ“lÄ“ts:" + +#: src/gtkui/layout.c:122 +msgid "Dock at Left" +msgstr "Pietauvot pa kreisi" + +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "Pietauvot pa labi" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "Pietauvot augÅ¡Ä" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "Pietauvot apakÅ¡Ä" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "Attauvot" + +#: src/gtkui/layout.c:123 +msgid "Disable" +msgstr "AtslÄ“gt" + +#: src/gtkui/menus.c:132 +msgid "_Open Files ..." +msgstr "AtvÄ“rt _failus ..." + +#: src/gtkui/menus.c:133 +msgid "Open _URL ..." +msgstr "AtvÄ“rt _URL ..." + +#: src/gtkui/menus.c:134 +msgid "_Add File ..." +msgstr "_Pievienot failus ..." + +#: src/gtkui/menus.c:135 +msgid "Add U_RL ..." +msgstr "Pievienot U_RL ..." + +#: src/gtkui/menus.c:137 +msgid "A_bout ..." +msgstr "_Par ..." + +#: src/gtkui/menus.c:138 +msgid "_Preferences ..." +msgstr "_IestatÄ«jumi ..." -#: src/gtkui/actions.c:723 src/skins/ui_manager.c:211 -#, fuzzy -msgid "Import Playlist" -msgstr "IelÄdÄ“t repertuÄru" +#: src/gtkui/menus.c:139 src/skins/ui_manager.c:412 +msgid "_Quit" +msgstr "I_ziet" -#: src/gtkui/ui_gtk.c:72 -#, fuzzy +#: src/gtkui/menus.c:142 +msgid "_Play" +msgstr "A_tskaņot" + +#: src/gtkui/menus.c:143 +msgid "Paus_e" +msgstr "Pauz_e" + +#: src/gtkui/menus.c:144 +msgid "_Stop" +msgstr "_Stop" + +#: src/gtkui/menus.c:145 +msgid "Pre_vious" +msgstr "_IepriekÅ¡Ä“jais" + +#: src/gtkui/menus.c:146 +msgid "_Next" +msgstr "_NÄkamais" + +#: src/gtkui/menus.c:148 +msgid "_Repeat" +msgstr "_AtkÄrtot" + +#: src/gtkui/menus.c:149 +msgid "S_huffle" +msgstr "_Jaukt" + +#: src/gtkui/menus.c:150 +msgid "N_o Playlist Advance" +msgstr "Ne_virzÄ«ties uz priekÅ¡u repertuÄrÄ" + +#: src/gtkui/menus.c:151 +msgid "Stop _After This Song" +msgstr "Apt_urÄ“t pÄ“c paÅ¡reizÄ“jÄs dziesmas" + +#: src/gtkui/menus.c:153 src/gtkui/menus.c:210 +msgid "Song _Info ..." +msgstr "Dziesmas _info ..." + +#: src/gtkui/menus.c:154 +msgid "Jump to _Time ..." +msgstr "PÄriet uz _laiku ..." + +#: src/gtkui/menus.c:155 +msgid "_Jump to Song ..." +msgstr "PÄriet uz _dziesmu ..." + +#: src/gtkui/menus.c:158 +msgid "By Track _Number" +msgstr "PÄ“c celiņa _numura" + +#: src/gtkui/menus.c:159 +msgid "By _Title" +msgstr "PÄ“c n_osaukuma" + +#: src/gtkui/menus.c:160 +msgid "By _Artist" +msgstr "PÄ“c _izpildÄ«tÄja" + +#: src/gtkui/menus.c:161 +msgid "By A_lbum" +msgstr "PÄ“c a_lbuma" + +#: src/gtkui/menus.c:162 +msgid "By Release _Date" +msgstr "PÄ“c izlaiÅ¡anas _datuma" + +#: src/gtkui/menus.c:163 +msgid "By _File Path" +msgstr "PÄ“c _faila ceļa" + +#: src/gtkui/menus.c:164 +msgid "By _Custom Title" +msgstr "PÄ“c _pielÄgota nosaukuma" + +#: src/gtkui/menus.c:166 +msgid "R_everse Order" +msgstr "Apgri_eztÄ kÄrtÄ«bÄ" + +#: src/gtkui/menus.c:167 +msgid "_Random Order" +msgstr "NejauÅ¡Ä _kÄrtÄ«bÄ" + +#: src/gtkui/menus.c:170 src/gtkui/menus.c:212 +msgid "_Refresh" +msgstr "A_tsvaidzinÄt" + +#: src/gtkui/menus.c:172 +msgid "_Sort" +msgstr "_KÄrtot" + +#: src/gtkui/menus.c:174 +msgid "_New" +msgstr "_Jauns" + +#: src/gtkui/menus.c:175 +msgid "_Close" +msgstr "Ai_zvÄ“rt" + +#: src/gtkui/menus.c:177 +msgid "_Import ..." +msgstr "_ImportÄ“t ..." + +#: src/gtkui/menus.c:178 +msgid "_Export ..." +msgstr "_EksportÄ“t ..." + +#: src/gtkui/menus.c:180 +msgid "_Playlist Manager ..." +msgstr "_RepertuÄru pÄrvaldnieks ..." + +#: src/gtkui/menus.c:183 +msgid "Volume _Up" +msgstr "_PalielinÄt skaļumu" + +#: src/gtkui/menus.c:184 +msgid "Volume _Down" +msgstr "_SamazinÄt skaļumu" + +#: src/gtkui/menus.c:186 +msgid "_Equalizer" +msgstr "_Balansieris" + +#: src/gtkui/menus.c:188 +msgid "E_ffects" +msgstr "E_fekti" + +#: src/gtkui/menus.c:191 +msgid "_Interface" +msgstr "S_askarne" + +#: src/gtkui/menus.c:193 +msgid "Show _Menu Bar" +msgstr "RÄdÄ«t _izvÄ“lnes joslu" + +#: src/gtkui/menus.c:194 +msgid "Show I_nfo Bar" +msgstr "RÄdÄ«t i_nfoapgabalu" + +#: src/gtkui/menus.c:195 +msgid "Show _Status Bar" +msgstr "RÄdÄ«t _stÄvokļjoslu" + +#: src/gtkui/menus.c:197 +msgid "Show Column _Headers" +msgstr "RÄdÄ«t kolonnu _galvenes" + +#: src/gtkui/menus.c:198 +msgid "Choose _Columns ..." +msgstr "IzvÄ“lÄ“ties _kolonnas ..." + +#: src/gtkui/menus.c:199 +msgid "Scrol_l on Song Change" +msgstr "RitinÄt, _dziesmÄm mainoties" + +#: src/gtkui/menus.c:202 +msgid "_File" +msgstr "_Fails" + +#: src/gtkui/menus.c:203 +msgid "_Playback" +msgstr "_AtskaņoÅ¡ana" + +#: src/gtkui/menus.c:204 +msgid "P_laylist" +msgstr "_RepertuÄrs" + +#: src/gtkui/menus.c:205 src/gtkui/menus.c:219 +msgid "_Services" +msgstr "_Servisi" + +#: src/gtkui/menus.c:206 +msgid "_Output" +msgstr "I_zvade" + +#: src/gtkui/menus.c:207 +msgid "_View" +msgstr "S_kats" + +#: src/gtkui/menus.c:211 +msgid "_Queue/Unqueue" +msgstr "Ie_rindot/Izņ. no rindas" + +#: src/gtkui/menus.c:214 +msgid "Cu_t" +msgstr "_Izgriezt" + +#: src/gtkui/menus.c:215 +msgid "_Copy" +msgstr "_KopÄ“t" + +#: src/gtkui/menus.c:216 +msgid "_Paste" +msgstr "I_elÄ«mÄ“t" + +#: src/gtkui/menus.c:217 +msgid "Select _All" +msgstr "IezÄ«mÄ“t _visu" + +#: src/gtkui/menus.c:222 +msgid "_Rename" +msgstr "PÄ_rdÄ“vÄ“t" + +#: src/gtkui/ui_gtk.c:75 msgid "GTK Interface" -msgstr "gnt saskarne" +msgstr "GTK saskarne" -#: src/gtkui/ui_gtk.c:281 src/skins/ui_main.c:388 +#: src/gtkui/ui_gtk.c:132 src/skins/ui_main.c:303 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.c:287 src/skins/ui_main.c:390 src/skins/ui_main.c:2166 +#: src/gtkui/ui_gtk.c:138 src/skins/ui_main.c:305 src/skins/ui_main.c:1498 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_manager.c:35 src/gtkui/ui_manager.c:36 -#: src/skins/ui_manager.c:53 src/skins/ui_manager.c:54 -msgid "Stop after Current Song" -msgstr "ApturÄ“t pÄ“c paÅ¡reizÄ“jÄs dziesmas" - -#: src/gtkui/ui_manager.c:38 src/gtkui/ui_manager.c:39 -#: src/skins/ui_manager.c:59 src/skins/ui_manager.c:60 -msgid "Repeat" -msgstr "AtkÄrtot" - -#: src/gtkui/ui_manager.c:41 src/gtkui/ui_manager.c:42 -#: src/skins/ui_manager.c:62 src/skins/ui_manager.c:63 -msgid "Shuffle" -msgstr "Jaukt" - -#: src/gtkui/ui_manager.c:44 src/gtkui/ui_manager.c:45 -#: src/skins/ui_manager.c:65 src/skins/ui_manager.c:66 -msgid "No Playlist Advance" -msgstr "NevirzÄ«ties uz priekÅ¡u repertuÄrÄ" - -#: src/gtkui/ui_manager.c:47 -#, fuzzy -msgid "Show playlists" -msgstr "RÄdÄ«t repertuÄra redaktoru" - -#: src/gtkui/ui_manager.c:48 -#, fuzzy -msgid "Show/hide playlists" -msgstr "SaglabÄt repertuÄru" +#: src/gtkui/ui_gtk.c:177 src/skins/plugin.c:185 +msgid "Error" +msgstr "Kļūda" -#: src/gtkui/ui_manager.c:50 -msgid "Show infoarea" -msgstr "" +#: src/gtkui/ui_statusbar.c:102 src/skins/ui_main.c:460 +msgid "mono" +msgstr "mono" -#: src/gtkui/ui_manager.c:51 -msgid "Show/hide infoarea" -msgstr "" +#: src/gtkui/ui_statusbar.c:104 src/skins/ui_main.c:459 +msgid "stereo" +msgstr "stereo" -#: src/gtkui/ui_manager.c:53 -#, fuzzy -msgid "Show main menu" -msgstr "RÄdÄ«t galveno atskaņotÄja logu" +#: src/gtkui/ui_statusbar.c:106 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d kanÄls" +msgstr[1] "%d kanÄli" +msgstr[2] "%d kanÄlu" -#: src/gtkui/ui_manager.c:54 -msgid "Show/hide main menu" -msgstr "" +#: src/gtkui/ui_statusbar.c:121 +#, c-format +msgid "%d kbps" +msgstr "%d kbps" -#: src/gtkui/ui_manager.c:56 -#, fuzzy -msgid "Show statusbar" -msgstr "Statuss" +#: src/hotkey/gui.c:71 +msgid "Previous Track" +msgstr "IepriekÅ¡Ä“jais celiņš" -#: src/gtkui/ui_manager.c:57 -#, fuzzy -msgid "Show/hide statusbar" -msgstr "SaglabÄt repertuÄru" +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "Atskaņot" -#: src/gtkui/ui_manager.c:69 src/gtkui/ui_manager.c:70 -#: src/skins/ui_manager.c:170 src/skins/ui_manager.c:171 -msgid "Pause" -msgstr "Pauze" +#: src/hotkey/gui.c:73 +msgid "Pause/Resume" +msgstr "Pauze/AtsÄkt" -#: src/gtkui/ui_manager.c:72 src/gtkui/ui_manager.c:73 src/hotkey/gui.c:73 -#: src/skins/ui_manager.c:173 src/skins/ui_manager.c:174 +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 msgid "Stop" msgstr "Stop" -#: src/gtkui/ui_manager.c:75 src/gtkui/ui_manager.c:76 -#: src/skins/ui_manager.c:176 src/skins/ui_manager.c:177 -msgid "Previous" -msgstr "IepriekÅ¡Ä“jais" +#: src/hotkey/gui.c:75 +msgid "Next Track" +msgstr "NÄkamais celiņš" -#: src/gtkui/ui_manager.c:78 src/gtkui/ui_manager.c:79 -#: src/skins/ui_manager.c:179 src/skins/ui_manager.c:180 -msgid "Next" -msgstr "NÄkamais" +#: src/hotkey/gui.c:76 +msgid "Forward 5 Seconds" +msgstr "Uz priekÅ¡u par 5 sekundÄ“m" -#: src/gtkui/ui_manager.c:84 src/skins/ui_manager.c:197 -msgid "Playlist" -msgstr "RepertuÄrs" +#: src/hotkey/gui.c:77 +msgid "Rewind 5 Seconds" +msgstr "Atpakaļ par 5 sekundÄ“m" -#: src/gtkui/ui_manager.c:86 src/gtkui/ui_manager.c:87 -#: src/skins/ui_manager.c:199 src/skins/ui_manager.c:200 -msgid "New Playlist" -msgstr "Jauns repertuÄrs" +#: src/hotkey/gui.c:78 +msgid "Mute" +msgstr "ApklusinÄt" -#: src/gtkui/ui_manager.c:89 src/gtkui/ui_manager.c:90 -#: src/skins/ui_manager.c:208 src/skins/ui_manager.c:209 -msgid "Delete Playlist" -msgstr "DzÄ“st repertuÄru" +#: src/hotkey/gui.c:79 +msgid "Volume Up" +msgstr "PalielinÄt skaļumu" -#: src/gtkui/ui_manager.c:92 -#, fuzzy -msgid "Import Playlist ..." -msgstr "IelÄdÄ“t repertuÄru" +#: src/hotkey/gui.c:80 +msgid "Volume Down" +msgstr "SamazinÄt skaļumu" -#: src/gtkui/ui_manager.c:93 src/skins/ui_manager.c:212 -msgid "Loads a playlist file into the selected playlist." -msgstr "IelÄdÄ“ repertuÄra failu izvÄ“lÄ“tajÄ repertuÄrÄ." +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:424 src/skins/ui_manager.c:425 +msgid "Jump to File" +msgstr "PÄriet uz failu" -#: src/gtkui/ui_manager.c:95 -#, fuzzy -msgid "Export Playlist ..." -msgstr "IelÄdÄ“t repertuÄru" +#: src/hotkey/gui.c:82 +msgid "Toggle Player Windows" +msgstr "PÄrslÄ“gt atskaņotÄja logus" -#: src/gtkui/ui_manager.c:96 src/skins/ui_manager.c:215 -msgid "Saves the selected playlist." -msgstr "SaglabÄ izvÄ“lÄ“to repertuÄru." +#: src/hotkey/gui.c:83 +msgid "Show On-Screen-Display" +msgstr "ParÄdÄ«t uz-ekrÄna-attÄ“lu" -#: src/gtkui/ui_manager.c:98 src/skins/ui_manager.c:217 -msgid "Save All Playlists" -msgstr "SaglabÄt visus repertuÄrus" +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "PÄrslÄ“gt atkÄrtoÅ¡anu" + +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "PÄrslÄ“gt jaukÅ¡anu" -#: src/gtkui/ui_manager.c:99 src/skins/ui_manager.c:218 -msgid "" -"Saves all the playlists that are open. Note that this is done automatically " -"when Audacious quits." -msgstr "" -"SaglabÄ visus atvÄ“rtos repertuÄrus. IevÄ“ro, ka tas tiek izdarÄ«ts " -"automÄtiski, izejot no Audacious." +#: src/hotkey/gui.c:95 +msgid "(none)" +msgstr "(nekas)" -#: src/gtkui/ui_manager.c:103 -#, fuzzy -msgid "Refresh" -msgstr "A_tsvaidzinÄt" - -#: src/gtkui/ui_manager.c:104 src/skins/ui_manager.c:223 -msgid "Refreshes metadata associated with a playlist entry." -msgstr "Atsvaidzina ar repertuÄra ierakstu saistÄ«tos metadatus." - -#: src/gtkui/ui_manager.c:107 -msgid "Playlist Manager" -msgstr "RepertuÄru pÄrvaldnieks" - -#: src/gtkui/ui_manager.c:108 src/skins/ui_manager.c:227 -msgid "Opens the playlist manager." -msgstr "Atver repertuÄru pÄrvaldnieku." - -#: src/gtkui/ui_manager.c:111 -#, fuzzy -msgid "Add URL ..." -msgstr "Pievienot failus..." - -#: src/gtkui/ui_manager.c:112 src/skins/ui_manager.c:237 -msgid "Adds a remote track to the playlist." -msgstr "Pievieno repertuÄram attÄlinÄtu celiņu." - -#: src/gtkui/ui_manager.c:115 -#, fuzzy -msgid "Add Files ..." -msgstr "Pievienot failus..." - -#: src/gtkui/ui_manager.c:116 src/skins/ui_manager.c:241 -msgid "Adds files to the playlist." -msgstr "Pievieno failus repertuÄram." - -#: src/gtkui/ui_manager.c:119 src/skins/ui_manager.c:264 -msgid "Remove All" -msgstr "Izņemt visus" - -#: src/gtkui/ui_manager.c:120 src/skins/ui_manager.c:265 -msgid "Removes all entries from the playlist." -msgstr "Izņem no repertuÄra visus ierakstus." - -#: src/gtkui/ui_manager.c:123 src/skins/ui_manager.c:290 -msgid "Remove Unselected" -msgstr "Izņemt neiezÄ«mÄ“tos" - -#: src/gtkui/ui_manager.c:124 src/skins/ui_manager.c:291 -msgid "Remove unselected entries from the playlist." -msgstr "Izņem no repertuÄra neiezÄ«mÄ“tos ierakstus." - -#: src/gtkui/ui_manager.c:127 src/skins/ui_manager.c:294 -msgid "Remove Selected" -msgstr "Izņemt iezÄ«mÄ“tos" - -#: src/gtkui/ui_manager.c:128 src/skins/ui_manager.c:295 -msgid "Remove selected entries from the playlist." -msgstr "Izņem no repertuÄra iezÄ«mÄ“tos ierakstus." - -#: src/gtkui/ui_manager.c:131 -#, fuzzy -msgid "Sort" -msgstr "Ports" - -#: src/gtkui/ui_manager.c:132 src/skins/ui_manager.c:330 -#: src/skins/ui_manager.c:360 -msgid "By Track Number" -msgstr "PÄ“c celiņa numura" - -#: src/gtkui/ui_manager.c:134 src/skins/ui_manager.c:278 -#: src/skins/ui_manager.c:306 src/skins/ui_manager.c:336 -msgid "By Title" -msgstr "PÄ“c nosaukuma" - -#: src/gtkui/ui_manager.c:136 src/skins/ui_manager.c:314 -#: src/skins/ui_manager.c:344 -msgid "By Artist" -msgstr "PÄ“c izpildÄ«tÄja" - -#: src/gtkui/ui_manager.c:138 src/skins/ui_manager.c:310 -#: src/skins/ui_manager.c:340 -msgid "By Album" -msgstr "PÄ“c albuma" - -#: src/gtkui/ui_manager.c:140 -#, fuzzy -msgid "By File Path" -msgstr "PÄ“c faila nosaukuma" - -#: src/gtkui/ui_manager.c:142 -#, fuzzy -msgid "Reverse Order" -msgstr "Apgrieztais balanss" - -#: src/gtkui/ui_manager.c:147 -msgid "Output" -msgstr "Izvade" - -#: src/gtkui/ui_manager.c:149 src/modplug/gui/interface.cxx:572 -msgid "Effects" -msgstr "Efekti" - -#: src/gtkui/ui_manager.c:151 -#, fuzzy -msgid "Equalizer" -msgstr "RÄdÄ«t balansieri" - -#: src/gtkui/ui_manager.c:156 src/skins/ui_manager.c:232 -msgid "View" -msgstr "SkatÄ«t" - -#: src/gtkui/ui_manager.c:157 src/skins/ui_manager.c:233 -#, fuzzy -msgid "Interface" -msgstr "gnt saskarne" - -#: src/gtkui/ui_manager.c:164 src/skins/ui_manager.c:370 -msgid "File" -msgstr "Fails" - -#: src/gtkui/ui_manager.c:167 -#, fuzzy -msgid "Components" -msgstr "KomentÄrs:" - -#: src/gtkui/ui_manager.c:169 src/gtkui/ui_manager.c:172 -#: src/skins/ui_manager.c:375 src/skins/ui_manager.c:378 -msgid "View Track Details" -msgstr "SkatÄ«t celiņa detaļas" - -#: src/gtkui/ui_manager.c:170 src/gtkui/ui_manager.c:173 -#: src/skins/ui_manager.c:376 src/skins/ui_manager.c:379 -msgid "View track details" -msgstr "SkatÄ«t celiņa detaļas" - -#: src/gtkui/ui_manager.c:175 src/gtkui/ui_manager.c:176 -#: src/skins/ui_manager.c:381 src/skins/ui_manager.c:382 -msgid "About Audacious" -msgstr "Par Audacious" - -#: src/gtkui/ui_manager.c:178 -#, fuzzy -msgid "Open Files ..." -msgstr "AtvÄ“rt failus" - -#: src/gtkui/ui_manager.c:179 src/skins/ui_manager.c:385 -msgid "Load and play a file" -msgstr "IelÄdÄ“t un atskaņot failu" - -#: src/gtkui/ui_manager.c:181 -msgid "Open URL ..." -msgstr "" - -#: src/gtkui/ui_manager.c:182 src/skins/ui_manager.c:388 -msgid "Play media from the selected location" -msgstr "Atskaņot multitvides failu no izvÄ“lÄ“tÄs vietas" - -#: src/gtkui/ui_manager.c:184 src/skins/ui_manager.c:390 -msgid "Plugin services" -msgstr "Spraudņu servisi" - -#: src/gtkui/ui_manager.c:186 src/skins/ui_manager.c:392 -msgid "Preferences" -msgstr "IestatÄ«jumi" - -#: src/gtkui/ui_manager.c:187 src/skins/ui_manager.c:393 -msgid "Open preferences window" -msgstr "Atver iestatÄ«jumu logu" - -#: src/gtkui/ui_manager.c:189 src/skins/ui_manager.c:395 -msgid "_Quit" -msgstr "I_ziet" - -#: src/gtkui/ui_manager.c:190 src/skins/ui_manager.c:396 -msgid "Quit Audacious" -msgstr "Aizver Audacious" - -#: src/gtkui/ui_manager.c:192 src/gtkui/ui_manager.c:193 -#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 -msgid "Set A-B" -msgstr "UzstÄdÄ«t A-B" - -#: src/gtkui/ui_manager.c:195 src/gtkui/ui_manager.c:196 -#: src/skins/ui_manager.c:401 src/skins/ui_manager.c:402 -msgid "Clear A-B" -msgstr "NotÄ«rÄ«t A-B" - -#: src/gtkui/ui_manager.c:198 src/gtkui/ui_manager.c:199 -#: src/skins/ui_manager.c:404 src/skins/ui_manager.c:405 -msgid "Jump to Playlist Start" -msgstr "PÄriet uz repertuÄra sÄkumu" - -#: src/gtkui/ui_manager.c:201 src/gtkui/ui_manager.c:202 src/hotkey/gui.c:80 -#: src/skins/ui_manager.c:407 src/skins/ui_manager.c:408 -msgid "Jump to File" -msgstr "PÄriet uz failu" - -#: src/gtkui/ui_manager.c:207 src/skins/ui_manager.c:413 -msgid "Queue Toggle" -msgstr "PÄrslÄ“gt ierindoÅ¡anau" - -#: src/gtkui/ui_manager.c:208 src/skins/ui_manager.c:414 -msgid "Enables/disables the entry in the playlist's queue." -msgstr "IeslÄ“dz/izslÄ“dz repertuÄra ieraksta ierindoÅ¡anu." - -#: src/gtkui/ui_manager.c:211 src/skins/ui_manager.c:417 -msgid "Copy" -msgstr "" - -#: src/gtkui/ui_manager.c:214 src/skins/ui_manager.c:419 -#, fuzzy -msgid "Cut" -msgstr "PielÄgots" - -#: src/gtkui/ui_manager.c:217 src/skins/ui_manager.c:421 -#, fuzzy -msgid "Paste" -msgstr "Ä€trÄkais" - -#: src/gtkui/ui_manager.c:220 src/skins/ui_manager.c:254 -msgid "Select All" -msgstr "IezÄ«mÄ“t visus" - -#: src/gtkui/ui_manager.c:221 src/skins/ui_manager.c:255 -msgid "Selects all of the playlist entries." -msgstr "IezÄ«mÄ“ visus repertuÄra ierakstus." - -#: src/gtkui/ui_manager.c:224 src/skins/ui_manager.c:258 -msgid "Select None" -msgstr "NotÄ«rÄ«t iezÄ«mÄ“jumu" - -#: src/gtkui/ui_manager.c:225 src/skins/ui_manager.c:259 -msgid "Deselects all of the playlist entries." -msgstr "Noņem iezÄ«mÄ“jumu no visiem ierakstiem." - -#: src/gtkui/ui_statusbar.c:91 src/skins/ui_main.c:609 -msgid "mono" -msgstr "mono" - -#: src/gtkui/ui_statusbar.c:94 src/skins/ui_main.c:608 -msgid "stereo" -msgstr "stereo" - -#: src/gtkui/ui_statusbar.c:97 -#, fuzzy, c-format -msgid "%d channels" -msgstr "KanÄli" - -#: src/gtkui/ui_statusbar.c:101 -#, c-format -msgid "%s: %d kbps, %d Hz, %s" -msgstr "" - -#: src/hotkey/gui.c:70 -msgid "Previous Track" -msgstr "IepriekÅ¡Ä“jais celiņš" - -#: src/hotkey/gui.c:72 -msgid "Pause/Resume" -msgstr "Pauze/AtsÄkt" - -#: src/hotkey/gui.c:74 -msgid "Next Track" -msgstr "NÄkamais celiņš" - -#: src/hotkey/gui.c:75 -msgid "Forward 5 Seconds" -msgstr "Uz priekÅ¡u par 5 sekundÄ“m" - -#: src/hotkey/gui.c:76 -msgid "Rewind 5 Seconds" -msgstr "Atpakaļ par 5 sekundÄ“m" - -#: src/hotkey/gui.c:77 -msgid "Mute" -msgstr "ApklusinÄt" - -#: src/hotkey/gui.c:78 -msgid "Volume Up" -msgstr "PalielinÄt skaļumu" - -#: src/hotkey/gui.c:79 -msgid "Volume Down" -msgstr "SamazinÄt skaļumu" - -#: src/hotkey/gui.c:81 -msgid "Toggle Player Windows" -msgstr "PÄrslÄ“gt atskaņotÄja logus" - -#: src/hotkey/gui.c:82 -msgid "Show On-Screen-Display" -msgstr "ParÄdÄ«t uz-ekrÄna-attÄ“lu" - -#: src/hotkey/gui.c:92 -msgid "(none)" -msgstr "(nekas)" - -#: src/hotkey/gui.c:229 +#: src/hotkey/gui.c:232 msgid "" "It is not recommended to bind the primary mouse buttons without " "modificators.\n" @@ -3153,15 +1777,15 @@ "\n" "Vai vÄ“laties turpinÄt?" -#: src/hotkey/gui.c:231 +#: src/hotkey/gui.c:234 msgid "Binding mouse buttons" msgstr "Piesaista peles pogas" -#: src/hotkey/gui.c:381 +#: src/hotkey/gui.c:384 msgid "Global Hotkey Plugin Configuration" msgstr "GlobÄlo Ä«sinÄjumtaustiņu spraudņa konfigurÄcija" -#: src/hotkey/gui.c:397 +#: src/hotkey/gui.c:400 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -3169,23 +1793,23 @@ "Nospiediet taustiņu kombinÄciju teksta laukÄ.\n" "JÅ«s varat piesaistÄ«t arÄ« peles pogas." -#: src/hotkey/gui.c:402 +#: src/hotkey/gui.c:405 msgid "Hotkeys:" msgstr "ĪsinÄjumtaustiņi:" -#: src/hotkey/gui.c:421 +#: src/hotkey/gui.c:424 msgid "Action:" msgstr "DarbÄ«ba:" -#: src/hotkey/gui.c:429 +#: src/hotkey/gui.c:432 msgid "Key Binding:" msgstr "Taustiņa piesaiste:" -#: src/hotkey/gui.c:660 +#: src/hotkey/gui.c:663 msgid "About Global Hotkey Plugin" msgstr "Par globÄlo Ä«sinÄjumtaustiņu spraudni" -#: src/hotkey/gui.c:661 +#: src/hotkey/gui.c:664 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3238,7 +1862,7 @@ msgid "Enable debug printing" msgstr "IeslÄ“gt atkļūdoÅ¡anas izvadi" -#: src/jack/jack.c:437 +#: src/jack/jack.c:438 msgid "" "XMMS jack Driver 0.17\n" "\n" @@ -3256,148 +1880,39 @@ "Audacious porta autors\n" "Giacomo Lozito no develia.org" -#: src/jack/jack.c:442 +#: src/jack/jack.c:443 msgid "About JACK Output Plugin 0.17" msgstr "Par JACK izvades spraudni 0.17" -#: src/ladspa/ladspa.c:824 -msgid "This LADSPA plugin has no user controls" -msgstr "Å im LADSPA spraudnim nav lietotÄja vadÄ«klu" - -#: src/ladspa/ladspa.c:865 src/ladspa/ladspa.c:952 -msgid "Name" -msgstr "Nosaukums" - -#: src/ladspa/ladspa.c:952 -msgid "UID" -msgstr "UID" - -#: src/ladspa/ladspa.c:1029 -msgid "Installed plugins" -msgstr "InstalÄ“tie spraudņi" - -#: src/ladspa/ladspa.c:1037 -msgid "Running plugins" -msgstr "Spraudņi, kas paÅ¡reiz darbojas" - -#: src/ladspa/ladspa.c:1052 -msgid "Add" -msgstr "Pievienot" - -#: src/ladspa/ladspa.c:1055 -msgid "Remove" -msgstr "Izņemt" - -#: src/ladspa/ladspa.c:1066 -msgid "LADSPA Plugin Catalog" -msgstr "LADSPA spraudņu katalogs" - -#: src/lirc/about.c:63 -msgid "About LIRC Audacious Plugin" -msgstr "Par LIRC Audacious spraudni" - -#: src/lirc/about.c:90 -msgid "LIRC Plugin " -msgstr "LIRC spraudnis " - -#: src/lirc/about.c:92 +#: src/lyricwiki/lyricwiki.c:226 msgid "" "\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" +"Looking for lyrics..." +msgstr "" "\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" -msgstr "" -"\n" -"vienkÄrÅ¡s spraudnis, kas ļauj jums kontrolÄ“t\n" -"Audacious, izmantojot LIRC attÄlinÄtÄs vadÄ«bas dÄ“monu\n" -"\n" -"PiemÄ“rojis izmantoÅ¡anai Audacious - Tony Vroon \n" -"no XMMS LIRC spraudņa, kura autori ir:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"Varat iegÅ«t informÄciju par LIRC:\n" -"http://lirc.org" - -#: src/lirc/interface.c:37 -msgid "LIRC plugin settings" -msgstr "LIRC spraudņa iestatÄ«jumi" - -#: src/lirc/interface.c:61 -msgid "Reconnect to LIRC server" -msgstr "PieslÄ“gties vÄ“lreiz LIRC serverim" - -#: src/lirc/interface.c:68 -msgid "Timeout before reconnecting (seconds): " -msgstr "Noildze pirms atkÄrtotas pieslÄ“gÅ¡anÄs (sekundes): " - -#: src/lirc/interface.c:75 -msgid "Reconnect" -msgstr "PieslÄ“gties vÄ“lreiz" - -#: src/lirc/interface.c:79 -msgid "Connection" -msgstr "PieslÄ“gties" - -#: src/lirc/lirc.c:82 -#, c-format -msgid "%s: could not init LIRC support\n" -msgstr "%s: neizdevÄs inicializÄ“t LIRC atbalstu\n" +"MeklÄ“ dziesmas vÄrdus..." -#: src/lirc/lirc.c:90 -#, c-format +#: src/lyricwiki/lyricwiki.c:249 msgid "" -"%s: could not read LIRC config file\n" -"%s: please read the documentation of LIRC\n" -"%s: how to create a proper config file\n" -msgstr "" -"%s: neizdevÄs nolasÄ«t LIRC konf. failu\n" -"%s: lÅ«dzu, lasiet LIRC dokumentÄcijÄ\n" -"%s: kÄ izveidot pareizu konf. failu\n" - -#: src/lirc/lirc.c:117 -#, c-format -msgid "%s: trying to reconnect...\n" -msgstr "%s: mÄ“Ä£ina pieslÄ“gties vÄ“lreiz...\n" - -#: src/lirc/lirc.c:332 -#, c-format -msgid "%s: unknown command \"%s\"\n" -msgstr "%s: nezinÄma komanda \"%s\"\n" - -#: src/lirc/lirc.c:342 -#, c-format -msgid "%s: disconnected from LIRC\n" -msgstr "%s: atvienots no LIRC\n" - -#: src/lirc/lirc.c:346 -#, c-format -msgid "%s: will try reconnect every %d seconds...\n" -msgstr "%s: tiks mÄ“Ä£inÄts pieslÄ“gties vÄ“lreiz katras %d sekundes...\n" - -#: src/lyricwiki/lyricwiki.c:244 -msgid "LyricWiki" +"\n" +"Connecting to lyrics.wikia.com..." msgstr "" +"\n" +"PieslÄ“dzas lyrics.wikia.com..." #: src/lyricwiki/lyricwiki.c:337 -#, fuzzy msgid "" "\n" "No lyrics were found." -msgstr "Nav atrasta neviena ierÄ«ce!" +msgstr "" +"\n" +"Dziesmas vÄrdi netika atrasti." -#: src/metronom/metronom.c:90 +#: src/metronom/metronom.c:85 msgid "About Metronom" msgstr "Par Metronom" -#: src/metronom/metronom.c:91 +#: src/metronom/metronom.c:86 msgid "" "A Tact Generator by Martin Strauss \n" "\n" @@ -3411,270 +1926,45 @@ "piem., tact://77 , lai atskaņotu 77 sitienus minÅ«tÄ“\n" "vai tact://60*3/4 , lai atskaņotu 60 sit./min. 3/4 taktÄ«s" -#: src/metronom/metronom.c:145 +#: src/metronom/metronom.c:143 #, c-format msgid "Tact generator: %d bpm" msgstr "Takts Ä£enerators: %d sit./min." -#: src/metronom/metronom.c:147 +#: src/metronom/metronom.c:145 #, c-format msgid "Tact generator: %d bpm %d/%d" msgstr "Takts Ä£enerators: %d sit./min. %d/%d" -#: src/modplug/gui/interface.cxx:137 -msgid "ModPlug Configuration" -msgstr "ModPlug konfigurÄcija" - -#: src/modplug/gui/interface.cxx:174 -msgid "16 bit" -msgstr "16 bit" - -#: src/modplug/gui/interface.cxx:181 -msgid "8 bit" -msgstr "8 bit" - -#: src/modplug/gui/interface.cxx:212 -msgid "Mono (downmix)" -msgstr "Mono (lejupmiksÄ“Å¡ana)" - -#: src/modplug/gui/interface.cxx:241 -msgid "Nearest (fastest)" -msgstr "TuvÄkais (ÄtrÄkais)" - -#: src/modplug/gui/interface.cxx:248 -msgid "Linear (fast)" -msgstr "LineÄrais (Ätri)" - -#: src/modplug/gui/interface.cxx:255 -msgid "Spline (good quality)" -msgstr "Spline (laba kvalitÄte)" - -#: src/modplug/gui/interface.cxx:262 -msgid "8-tap Fir (extremely high quality)" -msgstr "8-tap Fir (ļoti augsta kvalitÄte)" - -#: src/modplug/gui/interface.cxx:286 -#, fuzzy -msgid "96 kHz" -msgstr "48 kHz" - -#: src/modplug/gui/interface.cxx:293 -msgid "48 kHz" -msgstr "48 kHz" - -#: src/modplug/gui/interface.cxx:300 -msgid "44 kHz" -msgstr "44 kHz" - -#: src/modplug/gui/interface.cxx:307 -msgid "22 kHz" -msgstr "22 kHz" - -#: src/modplug/gui/interface.cxx:315 -msgid "Sampling Rate" -msgstr "IztverÅ¡anas temps" - -#: src/modplug/gui/interface.cxx:349 src/modplug/gui/interface.cxx:411 -#: src/modplug/gui/interface.cxx:477 src/modplug/gui/interface.cxx:539 -msgid "Enable" -msgstr "IeslÄ“gt" - -#: src/modplug/gui/interface.cxx:378 src/modplug/gui/interface.cxx:506 -msgid "Depth" -msgstr "Dziļums" - -#: src/modplug/gui/interface.cxx:386 src/modplug/gui/interface.cxx:514 -msgid "Delay" -msgstr "Aizture" - -#: src/modplug/gui/interface.cxx:394 -msgid "Reverb" -msgstr "Atbalss" - -#: src/modplug/gui/interface.cxx:440 -msgid "Amount" -msgstr "Daudzums" - -#: src/modplug/gui/interface.cxx:448 -msgid "Range" -msgstr "Apgabals" - -#: src/modplug/gui/interface.cxx:456 -msgid "Bass Boost" -msgstr "Basu uzsvÄ“rÅ¡ana" - -#: src/modplug/gui/interface.cxx:522 src/mpg123/mpg123.c:174 +#: src/mpg123/mpg123.c:183 msgid "Surround" msgstr "IeskauÅ¡ana" -#: src/modplug/gui/interface.cxx:561 -msgid "" -"Note: Setting the preamp\n" -"too high may cause clipping\n" -"(annoying clicks and pops)!" -msgstr "" -"PiezÄ«me: pÄrÄk augsta\n" -"priekÅ¡pastiprinÄjuma iestatÄ«Å¡ana\n" -"var izraisÄ«t apgrieÅ¡anu\n" -"(kaitinoÅ¡us klikÅ¡Ä·us un paukÅ¡Ä·us)!" - -#: src/modplug/gui/interface.cxx:567 -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "Preamp" -msgstr "PriekÅ¡pastiprinÄjums" - -#: src/modplug/gui/interface.cxx:601 -msgid "Use Filename as Song Title" -msgstr "Lietot faila nosaukumu kÄ dziesmas nosaukumu" - -#: src/modplug/gui/interface.cxx:606 -msgid "Fast Playlist Info" -msgstr "Ä€trais repertuÄra info" - -#: src/modplug/gui/interface.cxx:617 -msgid "Noise Reduction" -msgstr "Trokšņu samazinÄÅ¡ana" - -#: src/modplug/gui/interface.cxx:623 -msgid "Play Amiga MOD" -msgstr "Atskaņot Amiga MOD" - -#: src/modplug/gui/interface.cxx:646 -msgid "Don't loop" -msgstr "Neciklot" - -#: src/modplug/gui/interface.cxx:658 -msgid "Loop" -msgstr "Ciklot" - -#: src/modplug/gui/interface.cxx:671 -msgid "time(s)" -msgstr "reize(s)" - -#: src/modplug/gui/interface.cxx:677 -msgid "Loop forever" -msgstr "Ciklot bezgalÄ«gi" - -#: src/modplug/gui/interface.cxx:684 -msgid "Looping" -msgstr "CikloÅ¡anÄs" - -#: src/modplug/gui/interface.cxx:859 -msgid "MOD Info" -msgstr "MOD info" - -#: src/modplug/gui/interface.cxx:878 -msgid "" -"Filename:\n" -"Title:\n" -"Type:\n" -"Length:\n" -"Speed:\n" -"Tempo:\n" -"Samples:\n" -"Instruments:\n" -"Patterns:\n" -"Channels:" -msgstr "" -"Faila nosaukums:\n" -"Nosaukums:\n" -"Tips:\n" -"Garums:\n" -"Ä€trums:\n" -"Temps:\n" -"Paraugi:\n" -"Instrumenti:\n" -"StruktÅ«ras:\n" -"KanÄli:" - -#: src/modplug/gui/interface.cxx:883 -msgid "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" -msgstr "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" - -#: src/modplug/gui/interface.cxx:913 -msgid "Samples" -msgstr "Paraugi" - -#: src/modplug/gui/interface.cxx:938 -msgid "Instruments" -msgstr "Instrumenti" - -#: src/modplug/gui/interface.cxx:959 -msgid "Message" -msgstr "Ziņojums" - -#: src/modplug/gui/main.cxx:51 -msgid "Modplug Input Plugin for Audacious ver" -msgstr "Audacious Modplug ievades spraudnis ver" - -#: src/modplug/gui/main.cxx:52 -#, fuzzy -msgid "" -"\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." -msgstr "" -"\n" -"Modplug skaņas dzinÄ“js, autors Olivier Lapicque.\n" -"Modplug XMMS saskarnes autors Kenton Varda.\n" -"(c)2000 Olivier Lapicque un Kenton Varda.\n" -"AtjauninÄjumi un uzturÄ“Å¡ana - Konstanty Bialkowski.\n" -"BMP porta autors Theofilos Intzoglou." - -#: src/modplug/gui/main.cxx:55 -msgid "About Modplug" -msgstr "Par Modplug" - -#: src/modplug/gui/support.cxx:90 src/modplug/gui/support.cxx:114 -#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 -#, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "NeizdevÄs atrast pikseļkartes failu: %s" - -#: src/mtp_up/mtp.c:35 -msgid "Upload selected track(s)" -msgstr "AugÅ¡upielÄdÄ“t izvÄ“lÄ“to celiņu(s)" - -#: src/mtp_up/mtp.c:291 +#: src/mtp_up/mtp.c:298 msgid "Upload in progress..." msgstr "Notiek augÅ¡upielÄde..." -#: src/mtp_up/mtp.c:300 -msgid "MTP device handler" -msgstr "MTP ierÄ«ces apstrÄdÄtÄjs" - -#: src/mtp_up/mtp.c:304 -msgid "Disconnect the device" -msgstr "Atvienot ierÄ«ci" +#: src/mtp_up/mtp.c:310 +msgid "Upload to MTP Device" +msgstr "AugÅ¡upielÄdÄ“t uz MTP ierÄ«ci" + +#: src/mtp_up/mtp.c:311 +msgid "Disconnect MTP Device" +msgstr "Atvienot MTP ierÄ«ci" + +#: src/notify/libnotify-aosd_event.c:47 +msgid "Stopped" +msgstr "ApturÄ“ts" + +#: src/notify/libnotify-aosd_event.c:47 +msgid "Audacious is not playing." +msgstr "Audacious paÅ¡reiz neatskaņo." -#: src/null/null.c:63 +#: src/null/null.c:64 msgid "Null output plugin " msgstr "Nulles izvades spraudnis " -#: src/null/null.c:64 +#: src/null/null.c:65 msgid "" " by Christian Birchinger \n" "based on the XMMS plugin by HÃ¥vard KvÃ¥l " @@ -3683,52 +1973,47 @@ "bÄzÄ“ts uz XMMS spraudni, kura autors ir HÃ¥vard KvÃ¥l\n" "" -#: src/null/null.c:67 +#: src/null/null.c:68 msgid "About Null Output" msgstr "Par nulles izvadi" -#: src/null/null.c:93 +#: src/null/null.c:94 msgid "Null output preferences" msgstr "Nulles izvades iestatÄ«jumi" -#: src/null/null.c:102 +#: src/null/null.c:105 msgid "Run in real time" msgstr "IzpildÄ«t reÄlÄ laikÄ" #: src/oss4/configure.c:89 -#, fuzzy msgid "1. Default device" -msgstr "NoklusÄ“tÄ PCM ierÄ«ce (%s)" +msgstr "1. noklusÄ“tÄ ierÄ«ce" #: src/oss4/configure.c:151 -#, fuzzy msgid "OSS4 Output Plugin Preferences" -msgstr "ALSA izvades spraudņa iestatÄ«jumi" +msgstr "OSS4 izvades spraudņa iestatÄ«jumi" -#: src/oss4/configure.c:163 src/OSS/configure.c:213 src/sun/configure.c:181 +#: src/oss4/configure.c:163 src/OSS/configure.c:203 msgid "Audio device:" msgstr "Audio ierÄ«ce:" -#: src/oss4/configure.c:189 src/OSS/configure.c:235 src/OSS/configure.c:276 +#: src/oss4/configure.c:189 src/OSS/configure.c:226 src/OSS/configure.c:269 msgid "Use alternate device:" msgstr "Lietot citu ierÄ«ci:" #: src/oss4/configure.c:202 -#, fuzzy msgid "Save volume between sessions" -msgstr "SaglabÄt VMIX skaļumu starp sesijÄm" +msgstr "SaglabÄt skaļumu starp sesijÄm" #: src/oss4/configure.c:206 msgid "Enable format conversions made by the OSS software." -msgstr "" +msgstr "IeslÄ“gt OSS programmatÅ«ras veiktÄs formÄta pÄrveides." -#: src/oss4/plugin.c:54 -#, fuzzy +#: src/oss4/plugin.c:51 msgid "About OSS4 Plugin" -msgstr "Par ESounD spraudnis" +msgstr "Par OSS4 spraudni" -#: src/oss4/plugin.c:55 -#, fuzzy +#: src/oss4/plugin.c:52 msgid "" "OSS4 Output Plugin for Audacious\n" "Copyright 2010 MichaÅ‚ Lipski \n" @@ -3749,7 +2034,12 @@ "You should have received a copy of the GNU General Public License along with " "this program. If not, see .\n" msgstr "" -"Audacious PulseAudio izvades spraudnis\n" +"Audacious OSS4 izvades spraudnis\n" +"\n" +"AutortiesÄ«bas 2010 MichaÅ‚ Lipski \n" +"\n" +"Es vÄ“lÄ“tos pateikties cilvÄ“kiem #audacious kanÄlÄ, it Ä«paÅ¡i Tony Vroon un " +"John Lindgren, kÄ arÄ« iepriekÅ¡Ä“jÄ OSS spraudņa autoriem.\n" "\n" " Å Ä« ir brÄ«vÄ programmatÅ«ra. JÅ«s varat to izplatÄ«t un/vai modificÄ“t saskaņÄ\n" "ar GNU GPL licenses nosacÄ«jumiem, kurus publicÄ“jis Free Software\n" @@ -3761,48 +2051,51 @@ "SÄ«kÄkai informÄcijai skatiet GNU General Public License.\n" "\n" "GNU GPL licenses kopijai vajadzÄ“tu bÅ«t saņemtai kopÄ ar Å¡o programmu.\n" -"Ja tÄ nav, rakstiet uz Free Software Foundation, Inc., 51 Franklin Street,\n" -"Fifth Floor, Boston, MA 02110-1301, USA.\n" +"Ja tÄ nav, skatiet .\n" #: src/oss4/utils.c:204 -#, fuzzy msgid "OSS4 error" -msgstr " Kļūda" +msgstr "OSS4 kļūda" -#: src/OSS/configure.c:148 +#: src/OSS/configure.c:146 #, c-format msgid "Default (%s)" msgstr "NoklusÄ“tais (%s)" -#: src/OSS/configure.c:197 +#: src/OSS/configure.c:162 src/skins/ui_manager.c:456 +#: src/skins/ui_manager.c:477 +msgid "Default" +msgstr "NoklusÄ“tais" + +#: src/OSS/configure.c:187 msgid "OSS Driver configuration" msgstr "OSS dziņa konfigurÄcija" -#: src/OSS/configure.c:298 src/sun/configure.c:246 +#: src/OSS/configure.c:290 msgid "Devices" msgstr "IerÄ«ces" -#: src/OSS/configure.c:300 src/sun/configure.c:257 +#: src/OSS/configure.c:292 msgid "Buffering:" msgstr "BuferizÄcija:" -#: src/OSS/configure.c:313 src/sun/configure.c:288 +#: src/OSS/configure.c:305 msgid "Pre-buffer (percent):" msgstr "Pirms-buferÄ“Å¡ana (%):" -#: src/OSS/configure.c:324 src/sun/configure.c:302 +#: src/OSS/configure.c:316 msgid "Buffering" msgstr "BuferizÄcija" -#: src/OSS/configure.c:325 +#: src/OSS/configure.c:317 msgid "Mixer Settings:" msgstr "Miksera iestatÄ«jumi:" -#: src/OSS/configure.c:331 +#: src/OSS/configure.c:323 msgid "Volume controls Master not PCM" msgstr "Skaļuma regulators kontrolÄ“ Master nevis PCM" -#: src/OSS/configure.c:337 src/sun/configure.c:392 +#: src/OSS/configure.c:329 msgid "Mixer" msgstr "Mikseris" @@ -3844,12 +2137,11 @@ "Ja tÄ nav, rakstiet uz Free Software Foundation, Inc., 51 Franklin Street,\n" "Fifth Floor, Boston, MA 02110-1301, USA." -#: src/pulse_audio/pulse_audio.c:691 +#: src/pulse_audio/pulse_audio.c:687 msgid "About Audacious PulseAudio Output Plugin" msgstr "Par Audacious PulseAudio izvades spraudni" -#: src/pulse_audio/pulse_audio.c:692 -#, fuzzy +#: src/pulse_audio/pulse_audio.c:688 msgid "" "Audacious PulseAudio Output Plugin\n" "\n" @@ -3881,54 +2173,53 @@ "\n" "GNU GPL licenses kopijai vajadzÄ“tu bÅ«t saņemtai kopÄ ar Å¡o programmu.\n" "Ja tÄ nav, rakstiet uz Free Software Foundation, Inc., 51 Franklin Street,\n" -"Fifth Floor, Boston, MA 02110-1301, USA.\n" +"Fifth Floor, Boston, MA 02110-1301, USA." -#: src/resample/plugin.c:78 -#, fuzzy +#: src/resample/plugin.c:91 msgid "About Sample Rate Converter Plugin" -msgstr "Par statusa ikonas spraudni" +msgstr "Par Sample Rate Converter spraudni" -#: src/resample/plugin.c:134 +#: src/resample/plugin.c:146 msgid "Sample Rate Converter Preferences" -msgstr "" +msgstr "Sample Rate Converter iestatÄ«jumi" -#: src/resample/plugin.c:146 +#: src/resample/plugin.c:158 msgid "Rate mappings:" -msgstr "" +msgstr "FrekvenÄu kartÄ“jumi:" -#: src/resample/plugin.c:169 +#: src/resample/plugin.c:181 msgid "All others:" -msgstr "" +msgstr "Visas citas:" -#: src/resample/plugin.c:181 +#: src/resample/plugin.c:193 msgid "Method:" -msgstr "" +msgstr "Metode:" -#: src/scrobbler/configure.c:152 src/scrobbler/configure.c:228 +#: src/scrobbler/configure.c:128 src/scrobbler/configure.c:204 msgid "Change password" msgstr "MainÄ«t paroli" -#: src/scrobbler/configure.c:174 +#: src/scrobbler/configure.c:150 msgid "Services" msgstr "Servisi" -#: src/scrobbler/configure.c:196 +#: src/scrobbler/configure.c:172 msgid "Username:" msgstr "LietotÄjvÄrds:" -#: src/scrobbler/configure.c:202 +#: src/scrobbler/configure.c:178 msgid "Password:" msgstr "Parole:" -#: src/scrobbler/configure.c:210 +#: src/scrobbler/configure.c:186 msgid "Scrobbler URL:" msgstr "Scrobbler URL:" -#: src/scrobbler/configure.c:242 +#: src/scrobbler/configure.c:218 msgid "Last.FM" msgstr "Last.FM" -#: src/scrobbler/configure.c:287 +#: src/scrobbler/configure.c:262 msgid "Scrobbler" msgstr "Scrobbler" @@ -3948,15 +2239,31 @@ msgid "About Scrobbler Plugin" msgstr "Par Scrobbler spraudni" +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" +msgstr "Par SDL izvades spraudni" + +#: src/sdlout/plugin.c:78 +msgid "SDL error" +msgstr "SDL kļūda" + #: src/sid/xs_about.c:84 #, c-format msgid "About %s" msgstr "Par %s" -#: src/sid/xs_config.c:322 +#: src/sid/xs_about.c:214 src/sid/xs_interface.c:1825 +msgid "Close" +msgstr "AizvÄ“rt" + +#: src/sid/xs_config.c:326 msgid " Error" msgstr " Kļūda" +#: src/sid/xs_config.c:326 +msgid "OK" +msgstr "Labi" + #: src/sid/xs_fileinfo.c:151 msgid "General info" msgstr "VispÄrÄ“jÄ informÄcija" @@ -3966,6 +2273,11 @@ msgid "Tune #%i: " msgstr "Melodija #%i: " +#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 +#, c-format +msgid "Couldn't find pixmap file: %s" +msgstr "NeizdevÄs atrast pikseļkartes failu: %s" + #: src/sid/xs_interface.c:234 msgid "Audacious-SID configuration" msgstr "Audacious-SID konfigurÄcija" @@ -4279,15 +2591,15 @@ msgid "Use" msgstr "Lietot" -#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:430 +#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:447 msgid "Save" msgstr "SaglabÄt" -#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:429 +#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:446 msgid "Import" msgstr "ImportÄ“t" -#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:431 +#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:448 msgid "Delete" msgstr "DzÄ“st" @@ -4320,6 +2632,11 @@ msgid "Playtime:" msgstr "AtskaņoÅ¡anas ilgums:" +#: src/sid/xs_interface.c:921 src/sid/xs_interface.c:975 +#: src/sid/xs_interface.c:1155 +msgid "seconds" +msgstr "sekundes" + #: src/sid/xs_interface.c:928 msgid "Minimum playtime:" msgstr "MinimÄlais atskaņoÅ¡anas ilgums:" @@ -4427,10 +2744,6 @@ msgid "Song title format:" msgstr "Dziesmas nosaukuma formÄts:" -#: src/sid/xs_interface.c:1103 -msgid "Title" -msgstr "Nosaukums" - #: src/sid/xs_interface.c:1125 msgid "Add sub-tunes to playlist" msgstr "Pievienot apakÅ¡melodijas repertuÄram" @@ -4580,11 +2893,11 @@ msgid "No" msgstr "NÄ“" -#: src/skins/plugin.c:179 +#: src/skins/plugin.c:167 msgid "About Skinned GUI" msgstr "Par apdarinÄto GLS" -#: src/skins/plugin.c:180 +#: src/skins/plugin.c:168 msgid "" "Copyright (c) 2008, by Tomasz MoÅ„ \n" "\n" @@ -4592,687 +2905,808 @@ "AutortiesÄ«bas (c) 2008, autors Tomasz MoÅ„ \n" "\n" -#: src/skins/plugin.c:196 -msgid "Skinned Interface" -msgstr "ApdarinÄtÄ saskarne" - -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:254 msgid "_Player:" msgstr "A_tskaņotÄjs:" -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:254 msgid "Select main player window font:" msgstr "IzvÄ“lieties galvenÄ atskaņotÄja loga fontu:" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:255 msgid "_Playlist:" msgstr "Re_pertuÄrs:" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:255 msgid "Select playlist font:" msgstr "IzvÄ“lieties repertuÄra fontu:" -#: src/skins/skins_cfg.c:321 +#: src/skins/skins_cfg.c:259 msgid "_Fonts" msgstr "_Fonti" -#: src/skins/skins_cfg.c:323 -msgid "Use Bitmap fonts if available" -msgstr "Lietot bitmap fontus, ja pieejami" - -#: src/skins/skins_cfg.c:323 -msgid "" -"Use bitmap fonts if they are available. Bitmap fonts do not support Unicode " -"strings." -msgstr "" -"Lietot bitmap fontus, ja tie ir pieejami. Bitmap fonti neatbalsta unikoda " -"virknes." - -#: src/skins/skins_cfg.c:324 -msgid "_Miscellaneous" -msgstr "_DažÄdi" - -#: src/skins/skins_cfg.c:325 -msgid "Show separators in playlist" -msgstr "RÄdÄ«t atdalÄ«tÄjus repertuÄrÄ" +#: src/skins/skins_cfg.c:261 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "Lietot bitmap fontus (atbalsta tikai ASCII)" + +#: src/skins/skins_cfg.c:263 +msgid "Scroll song title in both directions" +msgstr "RitinÄt dziesmas nosaukumu abos virzienos" -#: src/skins/skins_cfg.c:327 -msgid "Show window manager decoration" -msgstr "RÄdÄ«t logu pÄrvaldnieka apdares" - -#: src/skins/skins_cfg.c:328 -msgid "This enables the window manager to show decorations for windows." -msgstr "" -"IeslÄ“dziet Å¡o, lai rÄdÄ«tu loga pÄrvaldnieka apdares atskaņotÄja logiem." - -#: src/skins/skins_cfg.c:329 -msgid "Use two-way text scroller" -msgstr "Lietot divvirzienu teksta ritinÄtÄju" +#: src/skins/skins_cfg.c:346 +msgid "_Skin" +msgstr "_Apdare" -#: src/skins/skins_cfg.c:330 -msgid "" -"If selected, the file information text in the main window will scroll back " -"and forth. If not selected, the text will only scroll in one direction." -msgstr "" -"Ja ieslÄ“gts, faila informÄcijas teksts galvenajÄ logÄ ritinÄsies uz priekÅ¡u " -"un atpakaļ. Ja izslÄ“gts, teksta ritinÄÅ¡ana notiks tikai vienÄ virzienÄ." +#: src/skins/skins_cfg.c:393 +msgid "Interface Preferences" +msgstr "Saskarnes iestatÄ«jumi" -#: src/skins/skins_cfg.c:331 -msgid "Disable inline gtk theme" -msgstr "AtslÄ“gt iekļauto GTK tÄ“mu" +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "PriekÅ¡pastiprinÄjums" -#: src/skins/skins_cfg.c:333 -msgid "Random skin on play" -msgstr "NejauÅ¡a apdare atskaņojot" +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" +msgstr "31 Hz" -#: src/skins/skins_cfg.c:334 -msgid "Allow loading incomplete skins" -msgstr "Atļaut ielÄdÄ“t nepilnÄ«gas apdares" +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "63 Hz" -#: src/skins/skins_cfg.c:335 -msgid "" -"If selected, audacious won't refuse loading broken skins. Use only if your " -"favourite skin doesn't work" -msgstr "" -"Ja atzÄ«mÄ“ts, Audacious atļaus nepilnÄ«gu apdaru ielÄdi. Izmantojiet tikai " -"gadÄ«jumÄ, ja jÅ«su iecienÄ«tÄ apdare nestrÄdÄ." +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" +msgstr "125 Hz" -#: src/skins/skins_cfg.c:401 -msgid "Color Adjustment" -msgstr "KrÄsu regulÄ“Å¡ana" +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" +msgstr "250 Hz" -#: src/skins/skins_cfg.c:407 -msgid "" -"Audacious allows you to alter the color balance of the skinned UI. The " -"sliders below will allow you to do this." -msgstr "" -"Audacious atļauj jums mainÄ«t lietotÄja saskarnes apdaru krÄsu balansu. Lai " -"to darÄ«tu, lietojiet apakÅ¡Ä esoÅ¡os slÄ«dņus." +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" +msgstr "500 Hz" -#: src/skins/skins_cfg.c:417 -msgid "Blue" -msgstr "Zils" +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" +msgstr "1 kHz" -#: src/skins/skins_cfg.c:424 -msgid "Green" -msgstr "Zaļš" +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" +msgstr "2 kHz" -#: src/skins/skins_cfg.c:431 -msgid "Red" -msgstr "Sarkans" +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" +msgstr "4 kHz" -#: src/skins/skins_cfg.c:569 -msgid "_Skin" -msgstr "_Apdare" +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" +msgstr "8 kHz" -#: src/skins/skins_cfg.c:574 -#, fuzzy -msgid "Color adjustment ..." -msgstr "KrÄsu regulÄ“Å¡ana" +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" +msgstr "16 kHz" -#: src/skins/ui_equalizer.c:463 +#: src/skins/ui_equalizer.c:378 msgid "Audacious Equalizer" msgstr "Audacious balansieris" -#: src/skins/ui_equalizer.c:991 +#: src/skins/ui_equalizer.c:884 msgid "Presets" msgstr "Gatavie regulÄ“jumi" -#: src/skins/ui_main.c:593 +#: src/skins/ui_main.c:444 msgid "kbps" -msgstr "" +msgstr "kbps" -#: src/skins/ui_main.c:601 -#, fuzzy +#: src/skins/ui_main.c:452 msgid "kHz" -msgstr "Hz" +msgstr "kHz" -#: src/skins/ui_main.c:608 -#, fuzzy +#: src/skins/ui_main.c:459 msgid "surround" -msgstr "IeskauÅ¡ana" - -#: src/skins/ui_main.c:981 -msgid "Audacious - visibility warning" -msgstr "Audacious - redzamÄ«bas brÄ«dinÄjums" - -#: src/skins/ui_main.c:984 -msgid "Show main player window" -msgstr "RÄdÄ«t galveno atskaņotÄja logu" - -#: src/skins/ui_main.c:985 -msgid "Ignore" -msgstr "IgnorÄ“t" - -#: src/skins/ui_main.c:991 -msgid "" -"Audacious has been started with all of its windows hidden.\n" -"You may want to show the player window again to control Audacious; " -"otherwise, you'll have to control it remotely via audtool or enabled plugins " -"(such as the statusicon plugin)." -msgstr "" -"Audacious startÄ“jÄs, visiem logiem esot slÄ“ptÄ stÄvoklÄ«.\n" -"JÅ«s, iespÄ“jams, vÄ“laties logus atkal padarÄ«t redzamus, lai kontrolÄ“tu " -"Audacious. Ja nÄ“, jums nÄksies to kontrolÄ“t attÄlinÄti ar 'audtool' vai " -"spraudņu (piemÄ“ram, sistÄ“mjoslas ikonas spraudņa) palÄ«dzÄ«bu." - -#: src/skins/ui_main.c:997 -msgid "Always ignore, show/hide is controlled remotely" -msgstr "VienmÄ“r ignorÄ“t, rÄdÄ«t/slÄ“pt tiek kontrolÄ“ts attÄlinÄti" - -#: src/skins/ui_main.c:1042 -msgid "Audacious - broken GTK engine usage warning" -msgstr "Audacious - salauzta GTK dzinÄ“ja izmantoÅ¡anas brÄ«dinÄjums" - -#: src/skins/ui_main.c:1050 -#, c-format -msgid "" -"Broken GTK engine in use\n" -"\n" -"Audacious has detected that you are using a broken GTK engine.\n" -"\n" -"The theme engine you are using, %s, is incompatible with some of the " -"features used by modern skins. The incompatible features have been disabled " -"for this session.\n" -"\n" -"To use these features, please consider using a different GTK theme engine." -msgstr "" -"Tiek izmantots salauzts GTK dzinÄ“js\n" -"\n" -"Audacious atklÄja, ka jÅ«s izmantojat salauztu GTK dzinÄ“ju.\n" -"\n" -"TÄ“mu dzinÄ“js, ko izmantojat, %s, nav savietojams ar dažÄm moderno " -"spraudņu iespÄ“jÄm. NesavietojamÄs iespÄ“jas Å¡Ä«s sesijas laikÄ ir atslÄ“gtas.\n" -"\n" -"Lai izmantotu Å¡Ä«s iespÄ“jas, lÅ«dzu, izmantojiet citu GTK tÄ“mu dzinÄ“ju." +msgstr "ieskauÅ¡ana" -#: src/skins/ui_main.c:1061 -msgid "Do not display this warning again" -msgstr "Vairs nerÄdÄ«t Å¡o brÄ«dinÄjumu" - -#: src/skins/ui_main.c:1269 +#: src/skins/ui_main.c:807 #, c-format -msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)" -msgstr "PÄrlekt uz:%d:%-2.2d/%d:%-2.2d (%d%%)" +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "PÄriet uz %d:%-2.2d / %d:%-2.2d" -#: src/skins/ui_main.c:1299 +#: src/skins/ui_main.c:828 #, c-format msgid "Volume: %d%%" msgstr "Skaļums: %d%%" -#: src/skins/ui_main.c:1322 +#: src/skins/ui_main.c:851 #, c-format msgid "Balance: %d%% left" msgstr "Balanss: %d%% pa kreisi" -#: src/skins/ui_main.c:1324 +#: src/skins/ui_main.c:853 msgid "Balance: center" msgstr "Balanss: centrs" -#: src/skins/ui_main.c:1326 +#: src/skins/ui_main.c:855 #, c-format msgid "Balance: %d%% right" msgstr "Balanss: %d%% pa labi" -#: src/skins/ui_main.c:1618 +#: src/skins/ui_main.c:981 msgid "Options Menu" msgstr "IestatÄ«jumu izvÄ“lne" -#: src/skins/ui_main.c:1622 +#: src/skins/ui_main.c:985 msgid "Disable 'Always On Top'" msgstr "IzslÄ“gt 'VienmÄ“r virspusÄ“'" -#: src/skins/ui_main.c:1624 +#: src/skins/ui_main.c:987 msgid "Enable 'Always On Top'" msgstr "IeslÄ“gt 'VienmÄ“r virspusÄ“'" -#: src/skins/ui_main.c:1627 +#: src/skins/ui_main.c:990 msgid "File Info Box" msgstr "Faila info lodziņš" -#: src/skins/ui_main.c:1631 -msgid "Disable 'GUI Scaling'" -msgstr "AtslÄ“gt 'GLS mÄ“rogoÅ¡ana'" - -#: src/skins/ui_main.c:1633 -msgid "Enable 'GUI Scaling'" -msgstr "IeslÄ“gt 'GLS mÄ“rogoÅ¡ana'" - -#: src/skins/ui_main.c:1636 +#: src/skins/ui_main.c:995 msgid "Visualization Menu" msgstr "VizualizÄ“Å¡anas izvÄ“lne" -#: src/skins/ui_main.c:2348 +#: src/skins/ui_main.c:1645 msgid "Single mode." -msgstr "" +msgstr "Vieninstances režīms." -#: src/skins/ui_main.c:2350 -#, fuzzy +#: src/skins/ui_main.c:1647 msgid "Playlist mode." -msgstr "RepertuÄrs" +msgstr "RepertuÄra režīms." -#: src/skins/ui_main.c:2374 -#, fuzzy +#: src/skins/ui_main.c:1669 msgid "Stopping after song." -msgstr "ApturÄ“t pÄ“c paÅ¡reizÄ“jÄs dziesmas" +msgstr "Aptur pÄ“c paÅ¡reizÄ“jÄs dziesmas." -#: src/skins/ui_main.c:2376 +#: src/skins/ui_main.c:1671 msgid "Not stopping after song." -msgstr "" +msgstr "Neaptur pÄ“c paÅ¡reizÄ“jÄs dziesmas." -#: src/skins/ui_manager.c:50 src/skins/ui_manager.c:51 +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 msgid "Autoscroll Songname" msgstr "AutomÄtiski tÄ«t dziesmas nosaukumu" -#: src/skins/ui_manager.c:56 src/skins/ui_manager.c:57 +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "ApturÄ“t pÄ“c paÅ¡reizÄ“jÄs dziesmas" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 msgid "Peaks" msgstr "Maksimumi" -#: src/skins/ui_manager.c:68 src/skins/ui_manager.c:69 +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "AtkÄrtot" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "Jaukt" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "NevirzÄ«ties uz priekÅ¡u repertuÄrÄ" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 msgid "Show Player" msgstr "RÄdÄ«t atskaņotÄju" -#: src/skins/ui_manager.c:71 src/skins/ui_manager.c:72 +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 msgid "Show Playlist Editor" msgstr "RÄdÄ«t repertuÄra redaktoru" -#: src/skins/ui_manager.c:74 src/skins/ui_manager.c:75 +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 msgid "Show Equalizer" msgstr "RÄdÄ«t balansieri" -#: src/skins/ui_manager.c:77 src/skins/ui_manager.c:78 +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 msgid "Always on Top" msgstr "VienmÄ“r virspusÄ“" -#: src/skins/ui_manager.c:80 src/skins/ui_manager.c:81 +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 msgid "Put on All Workspaces" msgstr "Uzlikt uz visÄm darbvirsmÄm" -#: src/skins/ui_manager.c:83 src/skins/ui_manager.c:84 +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 msgid "Roll up Player" msgstr "SaritinÄt atskaņotÄju" -#: src/skins/ui_manager.c:86 src/skins/ui_manager.c:87 +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 msgid "Roll up Playlist Editor" msgstr "SaritinÄt repertuÄra redaktoru" -#: src/skins/ui_manager.c:89 src/skins/ui_manager.c:90 +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 msgid "Roll up Equalizer" msgstr "SaritinÄt balansieri" -#: src/skins/ui_manager.c:92 src/sndstretch/sndstretch_xmms.c:393 -msgid "Scale" -msgstr "MÄ“rogot" - -#: src/skins/ui_manager.c:93 -msgid "DoubleSize" -msgstr "DubultizmÄ“rs" - -#: src/skins/ui_manager.c:95 src/skins/ui_manager.c:96 -msgid "Easy Move" -msgstr "VienkÄrÅ¡Ä pÄrvietoÅ¡ana" - -#: src/skins/ui_manager.c:104 +#: src/skins/ui_manager.c:115 msgid "Analyzer" msgstr "Analizators" -#: src/skins/ui_manager.c:105 +#: src/skins/ui_manager.c:116 msgid "Scope" msgstr "Loks" -#: src/skins/ui_manager.c:106 +#: src/skins/ui_manager.c:117 msgid "Voiceprint" msgstr "Balss vizualizÄ“Å¡ana" -#: src/skins/ui_manager.c:107 +#: src/skins/ui_manager.c:118 msgid "Off" msgstr "IzslÄ“gts" -#: src/skins/ui_manager.c:111 src/skins/ui_manager.c:128 -#: src/skins/ui_manager.c:134 +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 msgid "Normal" msgstr "NormÄls" -#: src/skins/ui_manager.c:112 src/skins/ui_manager.c:129 +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 msgid "Fire" msgstr "Uguns" -#: src/skins/ui_manager.c:113 +#: src/skins/ui_manager.c:124 msgid "Vertical Lines" msgstr "VertikÄlas lÄ«nijas" -#: src/skins/ui_manager.c:117 +#: src/skins/ui_manager.c:128 msgid "Lines" msgstr "LÄ«nijas" -#: src/skins/ui_manager.c:118 +#: src/skins/ui_manager.c:129 msgid "Bars" msgstr "Joslas" -#: src/skins/ui_manager.c:122 +#: src/skins/ui_manager.c:133 msgid "Dot Scope" msgstr "PunktÄ“ts loks" -#: src/skins/ui_manager.c:123 +#: src/skins/ui_manager.c:134 msgid "Line Scope" msgstr "LÄ«nijveida loks" -#: src/skins/ui_manager.c:124 +#: src/skins/ui_manager.c:135 msgid "Solid Scope" msgstr "AizpildÄ«ts loks" -#: src/skins/ui_manager.c:130 +#: src/skins/ui_manager.c:141 msgid "Ice" msgstr "Ledus" -#: src/skins/ui_manager.c:135 +#: src/skins/ui_manager.c:146 msgid "Smooth" msgstr "Gluds" -#: src/skins/ui_manager.c:139 src/skins/ui_manager.c:147 +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 msgid "Slowest" msgstr "LÄ“nÄkais" -#: src/skins/ui_manager.c:140 src/skins/ui_manager.c:148 +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 msgid "Slow" msgstr "LÄ“ni" -#: src/skins/ui_manager.c:141 src/skins/ui_manager.c:149 +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 msgid "Medium" msgstr "VidÄ“ji" -#: src/skins/ui_manager.c:142 src/skins/ui_manager.c:150 +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 msgid "Fast" msgstr "Ä€tri" -#: src/skins/ui_manager.c:143 src/skins/ui_manager.c:151 +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 msgid "Fastest" msgstr "Ä€trÄkais" -#: src/skins/ui_manager.c:155 +#: src/skins/ui_manager.c:166 msgid "Time Elapsed" msgstr "PavadÄ«tais laiks" -#: src/skins/ui_manager.c:156 +#: src/skins/ui_manager.c:167 msgid "Time Remaining" msgstr "AtlikuÅ¡ais laiks" -#: src/skins/ui_manager.c:185 +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "Pauze" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "IepriekÅ¡Ä“jais" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "NÄkamais" + +#: src/skins/ui_manager.c:196 msgid "Visualization" msgstr "VizualizÄ“Å¡ana" -#: src/skins/ui_manager.c:186 +#: src/skins/ui_manager.c:197 msgid "Visualization Mode" msgstr "VizualizÄ“Å¡anas režīms" -#: src/skins/ui_manager.c:187 +#: src/skins/ui_manager.c:198 msgid "Analyzer Mode" msgstr "Analizatora režīms" -#: src/skins/ui_manager.c:188 +#: src/skins/ui_manager.c:199 msgid "Scope Mode" msgstr "Loka režīms" -#: src/skins/ui_manager.c:189 +#: src/skins/ui_manager.c:200 msgid "Voiceprint Mode" msgstr "Balss vizualizÄ“Å¡anas režīms" -#: src/skins/ui_manager.c:190 +#: src/skins/ui_manager.c:201 msgid "WindowShade VU Mode" msgstr "Loga saritinÄÅ¡anas VU režīms" -#: src/skins/ui_manager.c:191 +#: src/skins/ui_manager.c:202 msgid "Analyzer Falloff" msgstr "Analizatora kriÅ¡ana" -#: src/skins/ui_manager.c:192 +#: src/skins/ui_manager.c:203 msgid "Peaks Falloff" msgstr "Maksimumu kriÅ¡ana" -#: src/skins/ui_manager.c:202 src/skins/ui_manager.c:203 +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "RepertuÄrs" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "Jauns repertuÄrs" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 msgid "Select Next Playlist" msgstr "IezÄ«mÄ“t nÄkamo repertuÄru" -#: src/skins/ui_manager.c:205 src/skins/ui_manager.c:206 +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 msgid "Select Previous Playlist" msgstr "IezÄ«mÄ“t iepriekÅ¡Ä“jo repertuÄru" +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "DzÄ“st repertuÄru" + #: src/skins/ui_manager.c:222 +msgid "Import Playlist" +msgstr "ImportÄ“t repertuÄru" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "IelÄdÄ“ repertuÄra failu izvÄ“lÄ“tajÄ repertuÄrÄ." + +#: src/skins/ui_manager.c:226 +msgid "Export Playlist" +msgstr "EksportÄ“t repertuÄru" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "SaglabÄ izvÄ“lÄ“to repertuÄru." + +#: src/skins/ui_manager.c:229 +msgid "Save All Playlists" +msgstr "SaglabÄt visus repertuÄrus" + +#: src/skins/ui_manager.c:230 +msgid "" +"Saves all the playlists that are open. Note that this is done automatically " +"when Audacious quits." +msgstr "" +"SaglabÄ visus atvÄ“rtos repertuÄrus. IevÄ“ro, ka tas tiek izdarÄ«ts " +"automÄtiski, izejot no Audacious." + +#: src/skins/ui_manager.c:234 msgid "Refresh List" msgstr "AtsvaidzinÄt repertuÄru" -#: src/skins/ui_manager.c:226 +#: src/skins/ui_manager.c:235 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "Atsvaidzina ar repertuÄra ierakstu saistÄ«tos metadatus." + +#: src/skins/ui_manager.c:238 msgid "List Manager" msgstr "RepertuÄru pÄrvaldnieks" -#: src/skins/ui_manager.c:236 +#: src/skins/ui_manager.c:239 +msgid "Opens the playlist manager." +msgstr "Atver repertuÄru pÄrvaldnieku." + +#: src/skins/ui_manager.c:243 +msgid "View" +msgstr "SkatÄ«t" + +#: src/skins/ui_manager.c:244 +msgid "Interface" +msgstr "Saskarne" + +#: src/skins/ui_manager.c:245 +msgid "Interface Preferences ..." +msgstr "Saskarnes iestatÄ«jumi ..." + +#: src/skins/ui_manager.c:249 msgid "Add Internet Address..." msgstr "Pievienot interneta adresi..." -#: src/skins/ui_manager.c:240 +#: src/skins/ui_manager.c:250 +msgid "Adds a remote track to the playlist." +msgstr "Pievieno repertuÄram attÄlinÄtu celiņu." + +#: src/skins/ui_manager.c:253 msgid "Add Files..." msgstr "Pievienot failus..." -#: src/skins/ui_manager.c:246 +#: src/skins/ui_manager.c:254 +msgid "Adds files to the playlist." +msgstr "Pievieno failus repertuÄram." + +#: src/skins/ui_manager.c:259 msgid "Search and Select" msgstr "MeklÄ“t un iezÄ«mÄ“t" -#: src/skins/ui_manager.c:247 +#: src/skins/ui_manager.c:260 msgid "" "Searches the playlist and selects playlist entries based on specific " "criteria." msgstr "" "MeklÄ“ un atlasa repertuÄra ierakstus, balstoties uz norÄdÄ«tajiem kritÄ“rijiem." -#: src/skins/ui_manager.c:250 +#: src/skins/ui_manager.c:263 msgid "Invert Selection" msgstr "Apgriezt iezÄ«mÄ“to" -#: src/skins/ui_manager.c:251 +#: src/skins/ui_manager.c:264 msgid "Inverts the selected and unselected entries." msgstr "InvertÄ“ iezÄ«mÄ“tos un neiezÄ«mÄ“tos ierakstus." +#: src/skins/ui_manager.c:267 +msgid "Select All" +msgstr "IezÄ«mÄ“t visus" + #: src/skins/ui_manager.c:268 +msgid "Selects all of the playlist entries." +msgstr "IezÄ«mÄ“ visus repertuÄra ierakstus." + +#: src/skins/ui_manager.c:271 +msgid "Select None" +msgstr "NotÄ«rÄ«t iezÄ«mÄ“jumu" + +#: src/skins/ui_manager.c:272 +msgid "Deselects all of the playlist entries." +msgstr "Noņem iezÄ«mÄ“jumu no visiem ierakstiem." + +#: src/skins/ui_manager.c:277 +msgid "Remove All" +msgstr "Izņemt visus" + +#: src/skins/ui_manager.c:278 +msgid "Removes all entries from the playlist." +msgstr "Izņem no repertuÄra visus ierakstus." + +#: src/skins/ui_manager.c:281 msgid "Clear Queue" msgstr "NotÄ«rÄ«t ierindoÅ¡anu" -#: src/skins/ui_manager.c:269 +#: src/skins/ui_manager.c:282 msgid "Clears the queue associated with this playlist." msgstr "NotÄ«ra ar Å¡o repertuÄru saistÄ«to ierindoÅ¡anu." -#: src/skins/ui_manager.c:272 +#: src/skins/ui_manager.c:285 msgid "Remove Unavailable Files" msgstr "Izņemt nepieejamos failus" -#: src/skins/ui_manager.c:273 +#: src/skins/ui_manager.c:286 msgid "Removes unavailable files from the playlist." msgstr "Izņem no repertuÄra nepieejamos failus." -#: src/skins/ui_manager.c:276 +#: src/skins/ui_manager.c:289 msgid "Remove Duplicates" msgstr "Izņemt dublikÄtus" -#: src/skins/ui_manager.c:279 +#: src/skins/ui_manager.c:291 src/skins/ui_manager.c:323 +#: src/skins/ui_manager.c:353 +msgid "By Title" +msgstr "PÄ“c nosaukuma" + +#: src/skins/ui_manager.c:292 msgid "Removes duplicate entries from the playlist by title." msgstr "Izņem no repertuÄra dublikÄtus pÄ“c nosaukuma." -#: src/skins/ui_manager.c:282 src/skins/ui_manager.c:318 -#: src/skins/ui_manager.c:348 +#: src/skins/ui_manager.c:295 src/skins/ui_manager.c:335 +#: src/skins/ui_manager.c:365 msgid "By Filename" msgstr "PÄ“c faila nosaukuma" -#: src/skins/ui_manager.c:283 +#: src/skins/ui_manager.c:296 msgid "Removes duplicate entries from the playlist by filename." msgstr "Izņem no repertuÄra dublikÄtus pÄ“c faila nosaukuma." -#: src/skins/ui_manager.c:286 src/skins/ui_manager.c:322 -#: src/skins/ui_manager.c:352 +#: src/skins/ui_manager.c:299 src/skins/ui_manager.c:339 +#: src/skins/ui_manager.c:369 msgid "By Path + Filename" msgstr "PÄ“c ceļa + faila nosaukuma" -#: src/skins/ui_manager.c:287 +#: src/skins/ui_manager.c:300 msgid "Removes duplicate entries from the playlist by their full path." msgstr "Izņem no repertuÄra dublikÄtus pÄ“c to pilna ceļa." -#: src/skins/ui_manager.c:300 +#: src/skins/ui_manager.c:303 +msgid "Remove Unselected" +msgstr "Izņemt neiezÄ«mÄ“tos" + +#: src/skins/ui_manager.c:304 +msgid "Remove unselected entries from the playlist." +msgstr "Izņem no repertuÄra neiezÄ«mÄ“tos ierakstus." + +#: src/skins/ui_manager.c:307 +msgid "Remove Selected" +msgstr "Izņemt iezÄ«mÄ“tos" + +#: src/skins/ui_manager.c:308 +msgid "Remove selected entries from the playlist." +msgstr "Izņem no repertuÄra iezÄ«mÄ“tos ierakstus." + +#: src/skins/ui_manager.c:313 +msgid "Randomize List" +msgstr "Sajaukt repertuÄru" + +#: src/skins/ui_manager.c:314 +msgid "Randomizes the playlist." +msgstr "Sajauc repertuÄra ierakstu atskaņoÅ¡anas kÄrtÄ«bu." + +#: src/skins/ui_manager.c:317 msgid "Reverse List" msgstr "Apgriezt repertuÄru" -#: src/skins/ui_manager.c:301 +#: src/skins/ui_manager.c:318 msgid "Reverses the playlist." msgstr "Apgriež repertuÄru." -#: src/skins/ui_manager.c:304 +#: src/skins/ui_manager.c:321 msgid "Sort List" msgstr "KÄrtot repertuÄru" -#: src/skins/ui_manager.c:307 src/skins/ui_manager.c:337 +#: src/skins/ui_manager.c:324 src/skins/ui_manager.c:354 msgid "Sorts the list by title." msgstr "KÄrto repertuÄru pÄ“c nosaukuma." -#: src/skins/ui_manager.c:311 src/skins/ui_manager.c:341 +#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +msgid "By Album" +msgstr "PÄ“c albuma" + +#: src/skins/ui_manager.c:328 src/skins/ui_manager.c:358 msgid "Sorts the list by album." msgstr "KÄrto sarakstu pÄ“c albuma." -#: src/skins/ui_manager.c:315 src/skins/ui_manager.c:345 +#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +msgid "By Artist" +msgstr "PÄ“c izpildÄ«tÄja" + +#: src/skins/ui_manager.c:332 src/skins/ui_manager.c:362 msgid "Sorts the list by artist." msgstr "KÄrto repertuÄru pÄ“c izpildÄ«tÄja." -#: src/skins/ui_manager.c:319 src/skins/ui_manager.c:349 +#: src/skins/ui_manager.c:336 src/skins/ui_manager.c:366 msgid "Sorts the list by filename." msgstr "KÄrto repertuÄru pÄ“c faila nosaukuma." -#: src/skins/ui_manager.c:323 src/skins/ui_manager.c:353 +#: src/skins/ui_manager.c:340 src/skins/ui_manager.c:370 msgid "Sorts the list by full pathname." msgstr "KÄrto repertuÄru pÄ“c pilnÄ ceļa." -#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +#: src/skins/ui_manager.c:343 src/skins/ui_manager.c:373 msgid "By Date" msgstr "PÄ“c datuma" -#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +#: src/skins/ui_manager.c:344 src/skins/ui_manager.c:374 msgid "Sorts the list by modification time." msgstr "KÄrto repertuÄru pÄ“c izmaiņas datuma." -#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +#: src/skins/ui_manager.c:347 src/skins/ui_manager.c:377 +msgid "By Track Number" +msgstr "PÄ“c celiņa numura" + +#: src/skins/ui_manager.c:348 src/skins/ui_manager.c:378 msgid "Sorts the list by track number." msgstr "KÄrto repertuÄru pÄ“c celiņa numura." -#: src/skins/ui_manager.c:334 +#: src/skins/ui_manager.c:351 msgid "Sort Selected" msgstr "KÄrtot iezÄ«mÄ“tos" -#: src/skins/ui_manager.c:373 +#: src/skins/ui_manager.c:387 +msgid "File" +msgstr "Fails" + +#: src/skins/ui_manager.c:388 +msgid "Help" +msgstr "PalÄ«dzÄ«ba" + +#: src/skins/ui_manager.c:390 msgid "Plugin Services" msgstr "Spraudņu servisi" -#: src/skins/ui_manager.c:384 +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:395 +msgid "View Track Details" +msgstr "SkatÄ«t celiņa detaļas" + +#: src/skins/ui_manager.c:393 src/skins/ui_manager.c:396 +msgid "View track details" +msgstr "SkatÄ«t celiņa detaļas" + +#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 +msgid "About Audacious" +msgstr "Par Audacious" + +#: src/skins/ui_manager.c:401 msgid "Play File" msgstr "Atskaņot failu" -#: src/skins/ui_manager.c:387 +#: src/skins/ui_manager.c:402 +msgid "Load and play a file" +msgstr "IelÄdÄ“t un atskaņot failu" + +#: src/skins/ui_manager.c:404 msgid "Play Location" msgstr "Atskaņot vietu" -#: src/skins/ui_manager.c:428 +#: src/skins/ui_manager.c:405 +msgid "Play media from the selected location" +msgstr "Atskaņot multitvides failu no izvÄ“lÄ“tÄs vietas" + +#: src/skins/ui_manager.c:407 +msgid "Plugin services" +msgstr "Spraudņu servisi" + +#: src/skins/ui_manager.c:409 +msgid "Preferences" +msgstr "IestatÄ«jumi" + +#: src/skins/ui_manager.c:410 +msgid "Open preferences window" +msgstr "Atver iestatÄ«jumu logu" + +#: src/skins/ui_manager.c:413 +msgid "Quit Audacious" +msgstr "Aizver Audacious" + +#: src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Set A-B" +msgstr "UzstÄdÄ«t A-B" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Clear A-B" +msgstr "NotÄ«rÄ«t A-B" + +#: src/skins/ui_manager.c:421 src/skins/ui_manager.c:422 +msgid "Jump to Playlist Start" +msgstr "PÄriet uz repertuÄra sÄkumu" + +#: src/skins/ui_manager.c:427 src/skins/ui_manager.c:428 +msgid "Jump to Time" +msgstr "PÄriet uz laiku" + +#: src/skins/ui_manager.c:430 +msgid "Queue Toggle" +msgstr "PÄrslÄ“gt ierindoÅ¡anau" + +#: src/skins/ui_manager.c:431 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "IeslÄ“dz/izslÄ“dz repertuÄra ieraksta ierindoÅ¡anu." + +#: src/skins/ui_manager.c:434 +msgid "Copy" +msgstr "KopÄ“t" + +#: src/skins/ui_manager.c:436 +msgid "Cut" +msgstr "Izgriezt" + +#: src/skins/ui_manager.c:438 +msgid "Paste" +msgstr "IelÄ«mÄ“t" + +#: src/skins/ui_manager.c:445 msgid "Load" msgstr "IelÄdÄ“t" -#: src/skins/ui_manager.c:433 src/skins/ui_manager.c:454 -#: src/skins/ui_manager.c:469 +#: src/skins/ui_manager.c:450 src/skins/ui_manager.c:471 +#: src/skins/ui_manager.c:486 msgid "Preset" msgstr "SÄkumuzstÄdÄ«jumi" -#: src/skins/ui_manager.c:434 +#: src/skins/ui_manager.c:451 msgid "Load preset" msgstr "IelÄdÄ“t sÄkumuzstÄdÄ«jumu" -#: src/skins/ui_manager.c:436 src/skins/ui_manager.c:457 -#: src/skins/ui_manager.c:472 +#: src/skins/ui_manager.c:453 src/skins/ui_manager.c:474 +#: src/skins/ui_manager.c:489 msgid "Auto-load preset" msgstr "Auto-ielÄdes sÄkumuzstÄdÄ«jums" -#: src/skins/ui_manager.c:437 +#: src/skins/ui_manager.c:454 msgid "Load auto-load preset" msgstr "IelÄdÄ“ auto-ielÄdes sÄkumuzstÄdÄ«jumu" -#: src/skins/ui_manager.c:440 +#: src/skins/ui_manager.c:457 msgid "Load default preset into equalizer" msgstr "IelÄdÄ“t noklusÄ“to sÄkumuzstÄdÄ«jumu" -#: src/skins/ui_manager.c:442 +#: src/skins/ui_manager.c:459 msgid "Zero" msgstr "Nulle" -#: src/skins/ui_manager.c:443 +#: src/skins/ui_manager.c:460 msgid "Set equalizer preset levels to zero" msgstr "UzstÄdÄ«t balansiera sÄkumuzstÄdÄ«jumu lÄ«meņus uz 0" -#: src/skins/ui_manager.c:445 +#: src/skins/ui_manager.c:462 msgid "From file" msgstr "No faila" -#: src/skins/ui_manager.c:446 +#: src/skins/ui_manager.c:463 msgid "Load preset from file" msgstr "IelÄdÄ“t sÄkumuzstÄdÄ«jumu no faila" -#: src/skins/ui_manager.c:448 +#: src/skins/ui_manager.c:465 msgid "From WinAMP EQF file" msgstr "No WinAMP EQF faila" -#: src/skins/ui_manager.c:449 +#: src/skins/ui_manager.c:466 msgid "Load preset from WinAMP EQF file" msgstr "IelÄdÄ“t sÄkumuzstÄdÄ«jumu no WinAMP EQF faila" -#: src/skins/ui_manager.c:451 +#: src/skins/ui_manager.c:468 msgid "WinAMP Presets" msgstr "WinAMP sÄkumuzstÄdÄ«jumi" -#: src/skins/ui_manager.c:452 +#: src/skins/ui_manager.c:469 msgid "Import WinAMP presets" msgstr "ImportÄ“t WinAMP sÄkumuzstÄdÄ«jumus" -#: src/skins/ui_manager.c:455 +#: src/skins/ui_manager.c:472 msgid "Save preset" msgstr "SaglabÄt sÄkumuzstÄdÄ«jumu" -#: src/skins/ui_manager.c:458 +#: src/skins/ui_manager.c:475 msgid "Save auto-load preset" msgstr "SaglabÄt auto-ielÄdes sÄkumuzstÄdÄ«jumu" -#: src/skins/ui_manager.c:461 +#: src/skins/ui_manager.c:478 msgid "Save default preset" msgstr "SaglabÄt noklusÄ“to sÄkumuzstÄdÄ«jumu" -#: src/skins/ui_manager.c:463 +#: src/skins/ui_manager.c:480 msgid "To file" msgstr "Uz failu" -#: src/skins/ui_manager.c:464 +#: src/skins/ui_manager.c:481 msgid "Save preset to file" msgstr "SaglabÄt sÄkumuzstÄdÄ«jumu failÄ" -#: src/skins/ui_manager.c:466 +#: src/skins/ui_manager.c:483 msgid "To WinAMP EQF file" msgstr "Uz WinAMP EQF failu" -#: src/skins/ui_manager.c:467 +#: src/skins/ui_manager.c:484 msgid "Save preset to WinAMP EQF file" msgstr "SaglabÄt sÄkumuzstÄdÄ«jumu WinAMP EQF failÄ" -#: src/skins/ui_manager.c:470 +#: src/skins/ui_manager.c:487 msgid "Delete preset" msgstr "DzÄ“st sÄkumuzstÄdÄ«jumu" -#: src/skins/ui_manager.c:473 +#: src/skins/ui_manager.c:490 msgid "Delete auto-load preset" msgstr "DzÄ“st auto-ielÄdes sÄkumuzstÄdÄ«jumu" -#: src/skins/ui_playlist.c:374 +#: src/skins/ui_playlist.c:244 msgid "Search entries in active playlist" msgstr "MeklÄ“t ierakstus aktÄ«vajÄ repertuÄrÄ" -#: src/skins/ui_playlist.c:382 +#: src/skins/ui_playlist.c:252 msgid "" "Select entries in playlist by filling one or more fields. Fields use regular " "expressions syntax, case-insensitive. If you don't know how regular " @@ -5283,120 +3717,61 @@ "jÄizmanto regulÄro izteiksmju sintakse, reÄ£istrnejutÄ«ga. Ja neziniet, kÄ " "regulÄrÄs izteiksmes darbojas, vienkÄrÅ¡i nosaukuma daļu tam, ko meklÄ“jat." -#: src/skins/ui_playlist.c:397 +#: src/skins/ui_playlist.c:260 +msgid "Title: " +msgstr "Nosaukums: " + +#: src/skins/ui_playlist.c:267 msgid "Album: " msgstr "Albums: " -#: src/skins/ui_playlist.c:404 +#: src/skins/ui_playlist.c:274 msgid "Artist: " msgstr "IzpildÄ«tÄjs: " -#: src/skins/ui_playlist.c:411 +#: src/skins/ui_playlist.c:281 msgid "Filename: " msgstr "Faila nosaukums: " -#: src/skins/ui_playlist.c:419 +#: src/skins/ui_playlist.c:289 msgid "Clear previous selection before searching" msgstr "NotÄ«rÄ«t iepriekÅ¡Ä“jo iezÄ«mÄ“jumu pirms meklÄ“Å¡anas" -#: src/skins/ui_playlist.c:422 +#: src/skins/ui_playlist.c:292 msgid "Automatically toggle queue for matching entries" msgstr "AutomÄtiski pÄrslÄ“gt ierindoÅ¡anu atbilstoÅ¡ajiem ierakstiem" -#: src/skins/ui_playlist.c:425 +#: src/skins/ui_playlist.c:295 msgid "Create a new playlist with matching entries" msgstr "Izveidot jaunu repertuÄru no atbilstoÅ¡ajiem ierakstiem" -#: src/skins/ui_playlist.c:772 -msgid "Save as Static Playlist" -msgstr "SaglabÄt kÄ statisko repertuÄru" - -#: src/skins/ui_playlist.c:779 -msgid "Use Relative Path" -msgstr "Izmantot relatÄ«vo ceļu" - -#: src/skins/ui_playlist.c:802 -msgid "Load Playlist" -msgstr "IelÄdÄ“t repertuÄru" - -#: src/skins/ui_playlist.c:815 -msgid "Save Playlist" -msgstr "SaglabÄt repertuÄru" - -#: src/skins/ui_playlist.c:1146 +#: src/skins/ui_playlist.c:762 msgid "Audacious Playlist Editor" msgstr "Audacious repertuÄra redaktors" -#: src/skins/ui_playlist.c:1206 +#: src/skins/ui_playlist.c:809 #, c-format msgid "%s (%d of %d)" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "31 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "63 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "125 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "250 Hz" -msgstr "22050 Hz " - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "500 Hz" -msgstr "11000 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "1 kHz" -msgstr "11 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "2 kHz" -msgstr "22 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "4 kHz" -msgstr "44 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "8 kHz" -msgstr "48 kHz" +msgstr "%s (%d of %d)" -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "16 kHz" -msgstr "48 kHz" - -#: src/skins/ui_skinselector.c:179 +#: src/skins/ui_skinselector.c:162 msgid "Archived Winamp 2.x skin" msgstr "ArhivÄ“ta Winamp 2.x apdare" -#: src/skins/ui_skinselector.c:184 +#: src/skins/ui_skinselector.c:167 msgid "Unarchived Winamp 2.x skin" msgstr "AtarhivÄ“ta Winamp 2.x apdare" -#: src/skins/util.c:834 +#: src/skins/util.c:773 #, c-format msgid "Could not create directory (%s): %s\n" msgstr "NeizdevÄs izveidot mapi (%s): %s\n" -#: src/sndfile/plugin.c:531 +#: src/sndfile/plugin.c:438 msgid "About sndfile plugin" msgstr "Par sndfile spraudni" -#: src/sndfile/plugin.c:532 +#: src/sndfile/plugin.c:439 msgid "" "Adapted for Audacious usage by Tony Vroon \n" "from the xmms_sndfile plugin which is:\n" @@ -5435,386 +3810,1979 @@ "Ja tÄ nav, rakstiet uz Free Software Foundation, Inc., 51 Franklin Street,\n" "Fifth Floor, Boston, MA 02110-1301, USA." -#: src/sndstretch/sndstretch_xmms.c:175 -msgid "About SndStretch" -msgstr "Par SndStretch" +#: src/sndstretch/sndstretch_xmms.c:155 +msgid "About SndStretch" +msgstr "Par SndStretch" + +#: src/sndstretch/sndstretch_xmms.c:313 +msgid "Volume corr." +msgstr "Skaļuma kor." + +#: src/sndstretch/sndstretch_xmms.c:314 +msgid "Short Overlap" +msgstr "Īsa pÄrklÄÅ¡anÄs" + +#: src/sndstretch/sndstretch_xmms.c:360 +msgid "Speed" +msgstr "Ä€trums" + +#: src/sndstretch/sndstretch_xmms.c:361 +msgid "Pitch" +msgstr "Augstums" + +#: src/sndstretch/sndstretch_xmms.c:362 +msgid "Scale" +msgstr "MÄ“rogot" + +#: src/sndstretch/sndstretch_xmms.c:363 +msgid "Options" +msgstr "Opcijas" + +#: src/sndstretch/sndstretch_xmms.c:382 +msgid "SndStretch - Configuration" +msgstr "SndStretch - konfigurÄcija" + +#: src/song_change/song_change.c:464 +msgid "Command to run when Audacious starts a new song." +msgstr "Komanda, ko palaist, kad Audacious sÄk atskaņot jaunu dziesmu." + +#: src/song_change/song_change.c:465 src/song_change/song_change.c:469 +#: src/song_change/song_change.c:473 src/song_change/song_change.c:477 +msgid "Command:" +msgstr "Komanda:" + +#: src/song_change/song_change.c:468 +msgid "Command to run toward the end of a song." +msgstr "Komanda, ko palaist dziesmas beigÄs." + +#: src/song_change/song_change.c:472 +msgid "Command to run when Audacious reaches the end of the playlist." +msgstr "Komanda, ko palaist, kad Audacious sasniedz repertuÄra beigas." + +#: src/song_change/song_change.c:476 +msgid "" +"Command to run when title changes for a song (i.e. network streams titles)." +msgstr "" +"Komanda, ko palaist, kad nomainÄs dziesmas nosaukums (piem., tÄ«kla plÅ«smas)." + +#: src/song_change/song_change.c:480 +msgid "" +"You can use the following format strings which\n" +"will be substituted before calling the command\n" +"(not all are useful for the end-of-playlist command).\n" +"\n" +"%F: Frequency (in hertz)\n" +"%c: Number of channels\n" +"%f: filename (full path)\n" +"%l: length (in milliseconds)\n" +"%n or %s: Song name\n" +"%r: Rate (in bits per second)\n" +"%t: Playlist position (%02d)\n" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" +msgstr "" +"Varat izmantot sekojoÅ¡a formÄta virknes, kuras\n" +"pirms komandas izsaukÅ¡anas tiks aizvietotas\n" +"(ne visas ir derÄ«gas repertuÄra-beigas komandai).\n" +"\n" +"%F: frekvence (hercos)\n" +"%c: kanÄlu skaits\n" +"%f: faila nosaukums (pilns ceļš)\n" +"%l: ilgums (milisekundÄ“s)\n" +"%n vai %s: dziesmas nosaukums\n" +"%r: Ätrums (bitos sekundÄ“)\n" +"%t: repertuÄra pozÄ«cija (%02d)\n" +"%p: paÅ¡reiz atskaņo (1 vai 0)\n" +"%a: izpildÄ«tÄjs\n" +"%b: albums\n" +"%T: celiņa nosaukums" + +#: src/song_change/song_change.c:507 +msgid "" +"Parameters passed to the shell should be encapsulated in " +"quotes. Doing otherwise is a security risk." +msgstr "" +"Parametrus, kuri tiek padoti Äaulai, vajadzÄ“tu ietvert " +"pÄ“diņÄs. PretÄ“jÄ gadÄ«jumÄ rodas risks droÅ¡Ä«bai." + +#: src/song_change/song_change.c:518 +msgid "Commands" +msgstr "Komandas" + +#: src/song_change/song_change.c:555 +msgid "Song Change" +msgstr "Dziesmas maiņa" + +#: src/statusicon/statusicon.c:378 +msgid "About Status Icon Plugin" +msgstr "Par statusa ikonas spraudni" + +#: src/statusicon/statusicon.c:379 +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager.\n" +msgstr "" +"Status Icon spraudnis\n" +"\n" +"AutortiesÄ«bas 2005-2007 Giacomo Lozito < james@develia.org >\n" +"AutortiesÄ«bas 2010 MichaÅ‚ Lipski \n" +"\n" +"Å is spraudnis nodroÅ¡ina ar statusa ikonu, kas\n" +"tiek novietota logu pÄrvaldnieka sistÄ“mas ikonu joslÄ.\n" + +#: src/statusicon/statusicon.c:447 +msgid "Status Icon Plugin - Preferences" +msgstr "Statusa ikonas spraudnis - iestatÄ«jumi" + +#: src/statusicon/statusicon.c:457 +msgid "Right-Click Menu" +msgstr "LabÄ klikÅ¡Ä·a izvÄ“lne" + +#: src/statusicon/statusicon.c:462 +msgid "Small playback menu #1" +msgstr "Neliela atskaņoÅ¡anas izvÄ“lne #1" + +#: src/statusicon/statusicon.c:465 +msgid "Small playback menu #2" +msgstr "Neliela atskaņoÅ¡anas izvÄ“lne #2" + +#: src/statusicon/statusicon.c:481 +msgid "Mouse Scroll Action" +msgstr "Peles rullÄ«Å¡a darbÄ«ba" + +#: src/statusicon/statusicon.c:485 +msgid "Change volume" +msgstr "MainÄ«t skaļumu" + +#: src/statusicon/statusicon.c:487 +msgid "Change playing song" +msgstr "MainÄ«t atskaņojamo dziesmu" + +#: src/statusicon/statusicon.c:500 +msgid "Other settings" +msgstr "Citi iestatÄ«jumi" + +#: src/statusicon/statusicon.c:505 +msgid "Disable the popup window" +msgstr "AtslÄ“gt izlecoÅ¡o logu" + +#: src/statusicon/statusicon.c:512 +msgid "Close to the notification area (system tray)" +msgstr "AizvÄ“rt uz paziņojumu apgabalu (sistÄ“mas ikonu joslu)" + +#: src/stereo_plugin/stereo.c:41 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin 1999." +msgstr "" +"Extra Stereo spraudnis\n" +"\n" +"Autors Johan Levin 1999." + +#: src/stereo_plugin/stereo.c:65 +msgid "About Extra Stereo Plugin" +msgstr "Par Extra Stereo spraudni" + +#: src/stereo_plugin/stereo.c:102 +msgid "Configure Extra Stereo" +msgstr "KonfigurÄ“t Extra Stereo" + +#: src/tonegen/tonegen.c:48 +msgid "About Tone Generator" +msgstr "Par toņa Ä£eneratoru" + +#: src/tonegen/tonegen.c:50 +msgid "" +"Sinus tone generator by Haavard Kvaalen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" +msgstr "" +"Sinusa toņa Ä£enerators, autors Haavard Kvaalen \n" +"ModificÄ“jis Daniel J. Peng \n" +"\n" +"Lai to izmantotu, ievadiet URL: tone://frekvence1;frekvence2;frekvence3;...\n" +"piem., tone://2000;2005 , lai atskaņotu 2000Hz un 2005Hz toni" + +#: src/tonegen/tonegen.c:100 +#, c-format +msgid "%s %.1f Hz" +msgstr "%s %.1f Hz" + +#: src/tonegen/tonegen.c:100 +msgid "Tone Generator: " +msgstr "Toņa Ä£enerators: " + +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" +msgstr "Par File I/O spraudni" + +#: src/vorbis/configure.c:31 +msgid "Override generic titles" +msgstr "AizstÄt vispÄrÄ«gos nosaukumus" + +#: src/vorbis/configure.c:32 +msgid "Title format:" +msgstr "Nosaukuma formÄts:" + +#: src/vorbis/configure.c:36 +msgid "Ogg Vorbis Tags" +msgstr "Ogg Vorbis tagi" + +#: src/vorbis/configure.c:69 +msgid "Ogg Vorbis Audio Plugin Configuration" +msgstr "Ogg Vorbis Audio spraudņa konfigurÄcija" + +#: src/vorbis/vorbis.c:581 +msgid "About Ogg Vorbis Audio Plugin" +msgstr "Par Ogg Vorbis Audio spraudni" + +#: src/vorbis/vorbis.c:586 +msgid "" +"Ogg Vorbis Plugin by the Xiph.org Foundation\n" +"\n" +"Original code by\n" +"Tony Arcieri \n" +"Contributions from\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visit the Xiph.org Foundation at http://www.xiph.org/\n" +msgstr "" +"Ogg Vorbis spraudnis, izstrÄdÄja Xiph.org Foundation\n" +"\n" +"OriÄ£inÄlÄ koda autors\n" +"Tony Arcieri \n" +"Pienesumi no\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Apciemojiet Xiph.org Foundation - http://www.xiph.org/\n" + +#: src/vtx/about.c:14 +msgid "About Vortex Player" +msgstr "Par Vortex atskaņotÄju" + +#: src/vtx/about.c:15 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"\n" +"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" +"and other AY/YM music sites.\n" +"\n" +"Audacious implementation by Pavel Vymetalek " +msgstr "" +"Vortex faila formÄta atskaņotÄjs, autors Sashnov Alexander \n" +"BalstÄ«ts uz oriÄ£inÄlÄ koda no in_vtx.dll, kura autors ir Roman Sherbakov " +"\n" +"\n" +"MÅ«zika vtx formÄtÄ ir atrodama http://vtx.microfor.ru/music.htm\n" +"un citÄs AY/YM mÅ«zikas vietnÄ“s.\n" +"\n" +"IevieÅ¡ana iekÅ¡ Audacious: Pavel Vymetalek " + +#: src/wavpack/wavpack.c:353 +#, c-format +msgid "Wavpack Decoder Plugin %s" +msgstr "Wavpack dekodÄ“tÄja spraudnis %s" + +#: src/wavpack/wavpack.c:354 +msgid "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan\n" +"Visit the Wavpack site at http://www.wavpack.com/\n" +msgstr "" +"AutortiesÄ«bas (c) 2006 William Pitcock \n" +"\n" +"Daļas spraudņa koda autors Miles Egan\n" +"Apciemojiet Wavpack vietni http://www.wavpack.com/\n" + +#~ msgid "Use Bitmap fonts if available" +#~ msgstr "Lietot bitmap fontus, ja pieejami" + +#~ msgid "" +#~ "Use bitmap fonts if they are available. Bitmap fonts do not support " +#~ "Unicode strings." +#~ msgstr "" +#~ "Lietot bitmap fontus, ja tie ir pieejami. Bitmap fonti neatbalsta unikoda " +#~ "virknes." + +#~ msgid "_Miscellaneous" +#~ msgstr "_DažÄdi" + +#~ msgid "Use two-way text scroller" +#~ msgstr "Lietot divvirzienu teksta ritinÄtÄju" + +#~ msgid "About " +#~ msgstr "Par" + +#~ msgid "" +#~ "\n" +#~ "Copyright (C) 2002, 2003 Simon Peter \n" +#~ "\n" +#~ "This plugin is released under the terms and conditions of the GNU LGPL.\n" +#~ "See http://www.gnu.org/licenses/lgpl.html for details.\n" +#~ "\n" +#~ "This plugin uses the AdPlug library, which is copyright (C) Simon Peter, " +#~ "et al.\n" +#~ "Linked AdPlug library version: " +#~ msgstr "" +#~ "\n" +#~ "AutortiesÄ«bas (c) 2002, 2003 Simon Peter \n" +#~ "\n" +#~ "Å is spraudnis ir izlaists zem GNU LGPL nosacÄ«jumiem.\n" +#~ "Detaļas skatÄ«t http://www.gnu.org/licenses/lgpl.html\n" +#~ "\n" +#~ "Å is spraudnis izmanto AdPlug bibliotÄ“ku, autortiesÄ«bas (C) Simon Peter u." +#~ "c.\n" +#~ "SaistÄ«tÄs AdPlug bibliotÄ“kas versija: " + +#~ msgid "AdPlug :: Configuration" +#~ msgstr "AdPlug :: KonfigurÄcija" + +#~ msgid "Sound quality" +#~ msgstr "Skaņas kvalitÄte" + +#~ msgid "Resolution" +#~ msgstr "IzÅ¡Ä·irtspÄ“ja" + +#~ msgid "8bit" +#~ msgstr "8bit" + +#~ msgid "16bit" +#~ msgstr "16bit" + +#~ msgid "Channels" +#~ msgstr "KanÄli" + +#~ msgid "" +#~ "Setting stereo is not recommended, unless you need to. This won't add any " +#~ "stereo effects to the sound - OPL2 is just mono - but eats up more CPU " +#~ "power!" +#~ msgstr "" +#~ "IeslÄ“gt stereo režīmu nav ieteicams, ja vien jums to nevajag. Tas " +#~ "nepievienos skaņai stereo efektu (OPL2 ir tikai mono), bet patÄ“rÄ“s vairÄk " +#~ "procesora resursu!" + +#~ msgid "Frequency" +#~ msgstr "Frekvence" + +#~ msgid "Detect songend" +#~ msgstr "Noteikt dziesmas beigas" + +#~ msgid "" +#~ "If enabled, XMMS will detect a song's ending, stop it and advance in the " +#~ "playlist. If disabled, XMMS won't take notice of a song's ending and loop " +#~ "it all over again and again." +#~ msgstr "" +#~ "Ja ieslÄ“gts, XMMS noteiks dziesmas beigas, apturÄ“s to un pavirzÄ«sies uz " +#~ "priekÅ¡u repertuÄrÄ. Ja izslÄ“gts, XMMS neievÄ“ros dziesmas beigas un " +#~ "atkÄrtos to." + +#~ msgid "Formats" +#~ msgstr "FormÄti" + +#~ msgid "Format selection" +#~ msgstr "FormÄta izvÄ“le" + +#~ msgid "Format" +#~ msgstr "FormÄts" + +#~ msgid "Extension" +#~ msgstr "PaplaÅ¡inÄjums" + +#~ msgid "" +#~ "Selected file types will be recognized and played back by this plugin. " +#~ "Deselected types will be ignored to make room for other plugins to play " +#~ "these files." +#~ msgstr "" +#~ "Å is spraudnis atpazÄ«s un atskaņos izvÄ“lÄ“tos faila tipus. NeizvÄ“lÄ“tie tipi " +#~ "tiks ignorÄ“ti, lai atļautu tos atskaņot citiem spraudņiem." + +#~ msgid "AdPlug :: File Info" +#~ msgstr "AdPlug :: Faila informÄcija" + +#~ msgid "Author: " +#~ msgstr "Autors: " + +#~ msgid "File Type: " +#~ msgstr "Faila tips: " + +#~ msgid "Subsongs: " +#~ msgstr "ApakÅ¡dziesmas: " + +#~ msgid "Instruments: " +#~ msgstr "Instrumenti: " + +#~ msgid "Orders: " +#~ msgstr "KÄrtÄ«bas: " + +#~ msgid "Patterns: " +#~ msgstr "Paraugi: " + +#~ msgid "Song" +#~ msgstr "Dziesma" + +#~ msgid "Instrument name" +#~ msgstr "Instrumenta nosaukums" + +#~ msgid "Song message" +#~ msgstr "Dziesmas ziņojums" + +#~ msgid "Subsong selection" +#~ msgstr "ApakÅ¡dziesmas izvÄ“le" + +#~ msgid "Order: " +#~ msgstr "KÄrtÄ«ba: " + +#~ msgid "Pattern: " +#~ msgstr "Paraugs: " + +#~ msgid "Row: " +#~ msgstr "Rinda: " + +#~ msgid "Speed: " +#~ msgstr "Ä€trums: " + +#~ msgid "Timer: " +#~ msgstr "Taimeris: " + +#~ msgid "About XMMS Alarm" +#~ msgstr "Par XMMS Alarm" + +#~ msgid "XMMS Alarm" +#~ msgstr "XMMS Alarm" + +#~ msgid "" +#~ "An XMMS plugin which can be used\n" +#~ "to start playing at a certain time.\n" +#~ "\n" +#~ "Send all complaints to:\n" +#~ "Adam Feakin \n" +#~ "Daniel Stodden \n" +#~ "\n" +#~ "http://www.snika.uklinux.net/xmms-alarm/" +#~ msgstr "" +#~ "XMMS spraudnis, kas var tikt izmantots,\n" +#~ "lai sÄktu atskaņoÅ¡anu noteiktÄ laikÄ.\n" +#~ "\n" +#~ "SÅ«tiet visas sÅ«dzÄ«bas uz:\n" +#~ "Adam Feakin \n" +#~ "Daniel Stodden \n" +#~ "\n" +#~ "http://www.snika.uklinux.net/xmms-alarm/" + +#~ msgid "Alarm" +#~ msgstr "ModinÄtÄjs" + +#~ msgid "This is your wakeup call." +#~ msgstr "Å is ir jÅ«su moÅ¡anÄs zvans." + +#~ msgid "Select Playlist" +#~ msgstr "IzvÄ“lieties repertuÄru" + +#~ msgid "Sorry" +#~ msgstr "Atvainojiet" + +#~ msgid "Warning" +#~ msgstr "BrÄ«dinÄjums" + +#~ msgid "" +#~ "For safety reasons the \"quiet\" time must be at least 65 seconds longer " +#~ "than the fading time, it must also be more than 10 seconds. This " +#~ "basically means that there is a bug in the code and until I find a way of " +#~ "really fixing it this message will appear :)\n" +#~ "\n" +#~ "Your fading settings have NOT been saved\n" +#~ "\n" +#~ "--\n" +#~ "Adam" +#~ msgstr "" +#~ "DroÅ¡Ä«bas dēļ \"kluss\" ilgumam jÄbÅ«t vismaz par 65 sekundÄ“m garÄkam nekÄ " +#~ "izdziÅ¡anas ilgumam, tam jÄbÅ«t arÄ« garÄkam par 10 sekundÄ“m. BÅ«tÄ«bÄ tas " +#~ "nozÄ«mÄ“, ka kodÄ ir kļūda un, lÄ«dz tiks atrasts risinÄjums, jums bÅ«s " +#~ "jÄredz Å¡is ziņojums :)\n" +#~ "\n" +#~ "JÅ«su izdziÅ¡anas ilguma iestatÄ«jumi NAV saglabÄti\n" +#~ "\n" +#~ "--\n" +#~ "Adam" + +#~ msgid "Oh Well" +#~ msgstr "Nu, labi" + +#~ msgid "Alarm Settings" +#~ msgstr "ModinÄtÄjs iestatÄ«jumi" + +#~ msgid "Time" +#~ msgstr "Laiks" + +#~ msgid "hours" +#~ msgstr "stundas" + +#~ msgid "h" +#~ msgstr "h" + +#~ msgid "minutes" +#~ msgstr "minÅ«tes" + +#~ msgid "Quiet after:" +#~ msgstr "Kluss pÄ“c:" + +#~ msgid "Alarm at (default):" +#~ msgstr "ModinÄt (noklusÄ“jums):" + +#~ msgid "Choose the days for the alarm to come on" +#~ msgstr "IzvÄ“lieties dienas, kurÄs ieslÄ“gsies modinÄtÄjs" + +#~ msgid "Day" +#~ msgstr "Diena" + +#~ msgid "Tuesday" +#~ msgstr "Otrdiena" + +#~ msgid "Wednesday" +#~ msgstr "TreÅ¡diena" + +#~ msgid "Thursday" +#~ msgstr "Ceturtdiena" + +#~ msgid "Friday" +#~ msgstr "Piektdiena" + +#~ msgid "Saturday" +#~ msgstr "Sestdiena" + +#~ msgid "Sunday" +#~ msgstr "SvÄ“tdiena" + +#~ msgid "Monday" +#~ msgstr "Pirmdiena" + +#~ msgid "Days" +#~ msgstr "Dienas" + +#~ msgid "Fading" +#~ msgstr "IzdziÅ¡ana" + +#~ msgid "Volume" +#~ msgstr "Skaļums" + +#~ msgid "Current" +#~ msgstr "PaÅ¡reizÄ“jais" + +#~ msgid "reset to current output volume" +#~ msgstr "AtstatÄ«t uz paÅ¡reizÄ“jo izvades skaļumu" + +#~ msgid "Start at" +#~ msgstr "SÄkumÄ" + +#~ msgid "%" +#~ msgstr "%" + +#~ msgid "Final" +#~ msgstr "BeigÄs" + +#~ msgid "Additional Command" +#~ msgstr "Papildu komanda" + +#~ msgid "enable" +#~ msgstr "ieslÄ“gt" + +#~ msgid "Playlist (optional)" +#~ msgstr "RepertuÄrs (neobligÄts)" + +#~ msgid "Browse..." +#~ msgstr "PÄrlÅ«kot..." + +#~ msgid "Reminder" +#~ msgstr "AtgÄdinÄjums" + +#~ msgid "Use reminder" +#~ msgstr "Izmantot atgÄdinÄjumu" + +#~ msgid "What do these options mean?" +#~ msgstr "Ko Å¡Ä«s opcijas nozÄ«mÄ“?" + +#~ msgid "" +#~ "\n" +#~ "Time\n" +#~ " Alarm at: \n" +#~ " The time for the alarm to come on.\n" +#~ "\n" +#~ " Quiet After: \n" +#~ " Stop alarm after this amount of time.\n" +#~ " (if the wakeup dialog is not closed)\n" +#~ "\n" +#~ "\n" +#~ "Days\n" +#~ " Day:\n" +#~ " Select the days for the alarm to activate.\n" +#~ "\n" +#~ " Time:\n" +#~ " Choose the time for the alarm on each day,\n" +#~ " or select the toggle button to use the default\n" +#~ " time.\n" +#~ "\n" +#~ "\n" +#~ "Volume\n" +#~ " Fading: \n" +#~ " Fade the volume up to the chosen volume \n" +#~ " for this amount of time.\n" +#~ "\n" +#~ " Start at: \n" +#~ " Start fading from this volume.\n" +#~ "\n" +#~ " Final: \n" +#~ " The volume to stop fading at. If the fading\n" +#~ " time is 0 then set volume to this and start\n" +#~ " playing.\n" +#~ "\n" +#~ "\n" +#~ "Options:\n" +#~ " Additional Command:\n" +#~ " Run this command at the alarm time.\n" +#~ "\n" +#~ " Playlist: \n" +#~ " Load this playlist for playing songs from \n" +#~ " (must have .m3u extension). If no playlist\n" +#~ " is given then the songs which are currently\n" +#~ " in the list will be used.\n" +#~ " The URL of an mp3/ogg stream can also be\n" +#~ " entered here, but loading of playlists from\n" +#~ " URLs is not currently supported by xmms.\n" +#~ "\n" +#~ " Reminder:\n" +#~ " Display a reminder when the alarm goes off,\n" +#~ " type the reminder in the box and turn on the\n" +#~ " toggle button if you want it to be shown.\n" +#~ msgstr "" +#~ "\n" +#~ "Laiks\n" +#~ " ModinÄt: \n" +#~ " Laiks, kad ieslÄ“dzas modinÄtÄjs.\n" +#~ "\n" +#~ " Kluss pÄ“c: \n" +#~ " IzslÄ“gt modinÄtÄju pÄ“c Å¡Ä« laika sprīža.\n" +#~ " (ja netiek aizvÄ“rts pamoÅ¡anÄs dialogs)\n" +#~ "\n" +#~ "\n" +#~ "Dienas\n" +#~ " Diena:\n" +#~ " IzvÄ“lieties dienas, kad modinÄtÄjam jÄieslÄ“dzas.\n" +#~ "\n" +#~ " Laiks:\n" +#~ " IzvÄ“lieties modinÄÅ¡anas laiku katrai dienai\n" +#~ " vai arÄ« atzÄ«mÄ“jiet 'NoklusÄ“tais', lai izmantotu\n" +#~ " noklusÄ“to laiku.\n" +#~ "\n" +#~ "\n" +#~ "Skaļums\n" +#~ " IzdziÅ¡ana:\n" +#~ " PalielinÄt skaļumu lÄ«dz izvÄ“lÄ“tajam lÄ«menim\n" +#~ " Å¡ajÄ laika brÄ«dÄ«.\n" +#~ "\n" +#~ " SÄkt: \n" +#~ " SÄkt skaļuma palielinÄÅ¡anu no Å¡Ä« lÄ«meņa.\n" +#~ "\n" +#~ " Beigt: \n" +#~ " LÄ«menis, pie kura pÄrtraukt skaļuma palielinÄÅ¡anu.\n" +#~ " Ja izdziÅ¡anas laiks ir 0, tad iestatÄ«t skaļumu uz Å¡o\n" +#~ " lÄ«meni un sÄkt atskaņoÅ¡anu.\n" +#~ "\n" +#~ "\n" +#~ "Opcijas:\n" +#~ " Papildu komanda:\n" +#~ " Palaist Å¡o komandu modinÄtÄja palaiÅ¡anas brÄ«dÄ«.\n" +#~ "\n" +#~ " RepertuÄrs: \n" +#~ " IelÄdÄ“t repertuÄru, no kura tiks atskaņotas dziesmas\n" +#~ " (jÄbÅ«t ar .m3u paplaÅ¡inÄjumu). Ja tas netiek norÄdÄ«ts,\n" +#~ " tiks izmantotas dziesmas no paÅ¡reizÄ“jÄ repertuÄra.\n" +#~ " Å eit var ievadÄ«t arÄ« mp3/ogg straumes URL, bet\n" +#~ " repertuÄru ielÄdÄ“Å¡anu no URL xmms paÅ¡reiz\n" +#~ " neatbalsta.\n" +#~ "\n" +#~ " AtgÄdinÄjums:\n" +#~ " ModinÄtÄjam izslÄ“dzoties, parÄda atgÄdinÄjumu.\n" +#~ " Ievadiet atgÄdinÄjumu teksta laukÄ un ielieciet\n" +#~ " Ä·eksÄ«ti blakus esoÅ¡ajÄ rÅ«tÄ«, ja vÄ“lieties, lai tas tiktu\n" +#~ " parÄdÄ«ts.\n" + +#~ msgid "Your reminder for today is.." +#~ msgstr "JÅ«su atgÄdinÄjums Å¡odienai ir.." + +#~ msgid "Thankyou" +#~ msgstr "Paldies" + +#~ msgid "Pairing request for '%s'" +#~ msgstr "PÄroÅ¡anas pieprasÄ«jums priekÅ¡ '%s'" + +#~ msgid "Authorization request for %s" +#~ msgstr "AutorizÄcijas pieprasÄ«jums priekÅ¡ '%s'" + +#~ msgid "Created bonding with %s" +#~ msgstr "Izveidots saite ar %s" + +#~ msgid "Removed bonding with %s" +#~ msgstr "Atcelta saite ar %s" + +#~ msgid "Device has been switched off" +#~ msgstr "IerÄ«ce tika izslÄ“gta" + +#~ msgid "Device has been made non-discoverable" +#~ msgstr "IerÄ«ce tika padarÄ«ta neatklÄjama" + +#~ msgid "Device has been made connectable" +#~ msgstr "IerÄ«ce tika padarÄ«ta savienojama" + +#~ msgid "Device has been made discoverable" +#~ msgstr "IerÄ«ce tika padarÄ«ta atklÄjama" + +#~ msgid "Device has been made limited discoverable" +#~ msgstr "IerÄ«ce tika padarÄ«ta ierobežoti atklÄjama" + +#~ msgid "Device has been switched into pairing mode" +#~ msgstr "IerÄ«ce tika pÄrslÄ“gta pÄroÅ¡anas režīmÄ" + +#~ msgid "Bluetooth headset support plugin" +#~ msgstr "Bluetooth austiņu atbalsta spraudnis" + +#~ msgid "" +#~ "Bluetooth headset support\n" +#~ "Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" +#~ "This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and " +#~ "the Audacious team\n" +#~ " \n" +#~ "In order to use the AVRCP you need the uinput module loaded into the " +#~ "kernel\n" +#~ "The headset keys will be recognized as normal mutimedia keys and \n" +#~ "can be configured using the Audacious Global Hotkey plugin or ohter " +#~ "tools \n" +#~ "provided by your window manager\n" +#~ msgstr "" +#~ "Bluetooth austiņu atbalsts\n" +#~ "autortiesÄ«bas (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" +#~ "Å is bija GSoC 2008 projekts - liels paldies manam padomdevÄ“jam Tony Vroon " +#~ "un Audacious komandai\n" +#~ "\n" +#~ "Lai izmantotu AVRCP, kodolÄ jÄbÅ«t ielÄdÄ“tam 'uinput' modulim\n" +#~ "Austiņu taustiņi tiks atpazÄ«ti kÄ parasti multivides taustiņi\n" +#~ "un var tikt konfigurÄ“ti, izmantojot Audacious globÄlo Ä«sinÄjumtaustiņu " +#~ "spraudni\n" +#~ "vai citus jÅ«su logu pÄrvaldÄ«tÄja rÄ«kus\n" + +#~ msgid "Producer" +#~ msgstr "RažotÄjs" + +#~ msgid "Available Headsets" +#~ msgstr "PieejamÄs austiņas" + +#~ msgid "Current Headset" +#~ msgstr "PaÅ¡reizÄ“jÄs austiņas" + +#~ msgid "_Connect" +#~ msgstr "_Pievienot" + +#~ msgid "Class" +#~ msgstr "Klase" + +#~ msgid "Address:" +#~ msgstr "Adrese:" + +#~ msgid "Bonding finish!" +#~ msgstr "Sasaiste pabeigta!" + +#~ msgid "No devices found!" +#~ msgstr "Nav atrasta neviena ierÄ«ce!" + +#~ msgid "Scanning..." +#~ msgstr "SkenÄ“..." + +#~ msgid "Pairing..." +#~ msgstr "PÄro..." + +#~ msgid "Rescan" +#~ msgstr "PÄrskenÄ“t" + +#~ msgid "Playback->Play" +#~ msgstr "AtskaņoÅ¡ana->Atskaņot" + +#~ msgid "Playback->Stop" +#~ msgstr "AtskaņoÅ¡ana->Stop" + +#~ msgid "Playback->Pause" +#~ msgstr "AtskaņoÅ¡ana->Pauze" + +#~ msgid "Playback->Prev" +#~ msgstr "AtskaņoÅ¡ana->IepriekÅ¡Ä“jÄ" + +#~ msgid "Playback->Next" +#~ msgstr "AtskaņoÅ¡ana->NÄkamÄ" + +#~ msgid "Playback->Eject" +#~ msgstr "AtskaņoÅ¡ana->Izņemt" + +#~ msgid "Playlist->Repeat" +#~ msgstr "RepertuÄrs->AtkÄrtot" + +#~ msgid "Playlist->Shuffle" +#~ msgstr "RepertuÄrs->Sajaukt" + +#~ msgid "Volume->Up_5" +#~ msgstr "Skaļums->Uz_augÅ¡u_5" + +#~ msgid "Volume->Down_5" +#~ msgstr "Skaļums->Uz_leju_5" + +#~ msgid "Volume->Up_10" +#~ msgstr "Skaļums->Uz_augÅ¡u_10" + +#~ msgid "Volume->Down_10" +#~ msgstr "Skaļums->Uz_leju_10" + +#~ msgid "Volume->Mute" +#~ msgstr "Skaļums->ApklusinÄt" + +#~ msgid "Window->Main" +#~ msgstr "Logs->Galvenais" + +#~ msgid "Window->Playlist" +#~ msgstr "Logs->RepertuÄrs" + +#~ msgid "Window->Equalizer" +#~ msgstr "Logs->Balansieris" + +#~ msgid "Window->JumpToFile" +#~ msgstr "Logs->PÄrietUzFailu" + +#~ msgid "" +#~ "event-device-plugin: unable to open device file %s , skipping this " +#~ "device; check that the file exists and that you have read permission for " +#~ "it\n" +#~ msgstr "" +#~ "event-device-plugin: neizdevÄs atvÄ“rt ierÄ«ces failu %s , ierÄ«ce tika " +#~ "izlaista; pÄrbaudiet, vai fails eksistÄ“ un vai jums ir lasÄ«Å¡anas atļauja " +#~ "Å¡im failam\n" + +#~ msgid "" +#~ "event-device-plugin: unable to create a io_channel for device file %s ," +#~ "skipping this device\n" +#~ msgstr "" +#~ "event-device-plugin: neizdevÄs izveidot io_channel ierÄ«ces failam %s , " +#~ "ierÄ«ce tika izlaista\n" + +#~ msgid "" +#~ "event-device-plugin: unable to open /proc/bus/input/devices , automatic " +#~ "detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: neizdevÄs atvÄ“rt /proc/bus/input/devices , " +#~ "automÄtiskÄ notikumu ierÄ«Äu atraÅ¡ana nedarbosies.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to open a io_channel for /proc/bus/input/" +#~ "devices , automatic detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: neizdevÄs atvÄ“rt io_channel /proc/bus/input/ " +#~ "ierÄ«cÄ“m , automÄtiskÄ notikumu ierÄ«Äu atraÅ¡ana nedarbosies.\n" + +#~ msgid "" +#~ "event-device-plugin: an error occurred while reading /proc/bus/input/" +#~ "devices , automatic detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: kļūda lasot /proc/bus/input/ ierÄ«ces , automÄtiskÄ " +#~ "notikumu ierÄ«Äu atraÅ¡ana nedarbosies.\n" + +#~ msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" +#~ msgstr "" +#~ "event-device-plugin: ierÄ«ce %s nav atrasta iekÅ¡ /dev/input , tÄ tiek\n" +#~ "izlaista.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to load config file %s , default settings " +#~ "will be used.\n" +#~ msgstr "" +#~ "event-device-plugin: neizdevÄs ielÄdÄ“t konfigurÄcijas failu %s , tiks " +#~ "izmantoti noklusÄ“tie iestatÄ«jumi.\n" + +#~ msgid "" +#~ "event-device-plugin: incomplete information in config file for device \"%s" +#~ "\" , skipping.\n" +#~ msgstr "" +#~ "event-device-plugin: nepilnÄ«ga informÄcija konfigurÄcijas failÄ ierÄ«cei " +#~ "\"%s\", tÄ tiks izlaista.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get is_active value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: konfigurÄcija, neizdevÄs iegÅ«t is_active vÄ“rtÄ«bu " +#~ "ierÄ«cei \"%s\", tÄ tiks izlaista.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to access local directory %s , settings will " +#~ "not be saved.\n" +#~ msgstr "" +#~ "event-device-plugin: neizdevÄs piekļūt vietÄ“jai mapei %s , iestatÄ«jumi " +#~ "netiks saglabÄti.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get filename value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: konfigurÄcija, neizdevÄs iegÅ«t filename vÄ“rtÄ«bu " +#~ "ierÄ«cei \"%s\", tÄ tiks izlaista.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get phys value for device " +#~ "\"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: konfigurÄcija, neizdevÄs iegÅ«t phys vÄ“rtÄ«bu ierÄ«cei " +#~ "\"%s \", tÄ tiks izlaista.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get is_custom value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: konfigurÄcija, neizdevÄs iegÅ«t is_custom vÄ“rtÄ«bu " +#~ "ierÄ«cei \"%s\", tÄ tiks izlaista.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unexpected value for device \"%s\", " +#~ "skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: konfigurÄcija, negaidÄ«ta vÄ“rtÄ«ba ierÄ«cei \"%s \", tÄ " +#~ "tiks izlaista.\n" + +#~ msgid "Detected" +#~ msgstr "Atrasts" + +#~ msgid "Custom" +#~ msgstr "PielÄgots" + +#~ msgid "Not Detected" +#~ msgstr "Nav atrasts" + +#~ msgid "Information" +#~ msgstr "InformÄcija" + +#~ msgid "" +#~ "Cannot open bindings window for a not-detected device.\n" +#~ "Ensure that the device has been correctly plugged in." +#~ msgstr "" +#~ "Nevar atvÄ“rt piesaistu logu ierÄ«cei, kas nav atrasta.\n" +#~ "PÄrliecinieties, ka ir pareizi pievienota." + +#~ msgid "" +#~ "Unable to open selected device.\n" +#~ "Please check read permissions on device file." +#~ msgstr "" +#~ "NeizdevÄs atvÄ“rt izvÄ“lÄ“to ierÄ«ci.\n" +#~ "LÅ«dzu, pÄrbaudiet lasÄ«Å¡anas atļaujas ierÄ«ces failam." + +#~ msgid "EvDev-Plug - Add custom device" +#~ msgstr "EvDev-Plug - Pievienot pielÄgotu ierÄ«ci" + +#~ msgid "" +#~ "EvDev-Plug tries to automatically detect and update information about\n" +#~ "event devices available on the system.\n" +#~ "However, if auto-detect doesn't work for your system, or you have event\n" +#~ "devices in a non-standard location (currently they're only searched in\n" +#~ "/dev/input/ ), you may want to add a custom device, explicitly " +#~ "specifying\n" +#~ "name and device file." +#~ msgstr "" +#~ "EvDev-Plug mÄ“Ä£ina automÄtiski atrast un atjaunot informÄciju par " +#~ "notikumu\n" +#~ "ierÄ«cÄ“m, kas pieejamas jÅ«su sistÄ“mÄ.\n" +#~ "TomÄ“r, ja automÄtiskÄ atraÅ¡ana jÅ«su sistÄ“mÄ nedarbojas, vai arÄ« notikumu\n" +#~ "ierÄ«ces ir nestandarta vietÄ (paÅ¡reiz tÄs tiek meklÄ“tas tikai iekÅ¡ /dev/" +#~ "input/ ),\n" +#~ "jÅ«s varat pievienot pielÄgotu ierÄ«ci, norÄdot tÄs nosaukumu un ierÄ«ces " +#~ "failu." + +#~ msgid "Device name:" +#~ msgstr "IerÄ«ces nosaukums:" + +#~ msgid "Device file:" +#~ msgstr "IerÄ«ces fails:" + +#~ msgid "(custom)" +#~ msgstr "(pielÄgots)" + +#~ msgid "" +#~ "Please specify both name and filename.\n" +#~ "Filename must be specified with absolute path." +#~ msgstr "" +#~ "LÅ«dzu, norÄdiet gan nosaukumu, gan faila nosaukumu.\n" +#~ "Faila nosaukumu jÄnorÄda ar pilno ceļu." + +#~ msgid "" +#~ "Do you want to remove the existing configuration for selected device?\n" +#~ msgstr "Vai vÄ“laties dzÄ“st paÅ¡reizÄ“jo konfigurÄciju izvÄ“lÄ“tajai ierÄ«cei?\n" + +#~ msgid "Do you want to remove the selected custom device?\n" +#~ msgstr "Vai vÄ“laties dzÄ“st izvÄ“lÄ“to pielÄgoto ierÄ«ci?\n" + +#~ msgid "EvDev-Plug - Configuration" +#~ msgstr "EvDev-Plug - KonfigurÄcija" + +#~ msgid "Active" +#~ msgstr "AktÄ«vs" + +#~ msgid "Status" +#~ msgstr "Statuss" + +#~ msgid "Device Name" +#~ msgstr "IerÄ«ces nosaukums" + +#~ msgid "Device File" +#~ msgstr "IerÄ«ces fails" + +#~ msgid "Device Address" +#~ msgstr "IerÄ«ces adrese" + +#~ msgid "_Bindings" +#~ msgstr "Pie_saistes" + +#~ msgid "" +#~ "Press a key of your device to bind it;\n" +#~ "if no key is pressed in five seconds, this window\n" +#~ "will close without binding changes." +#~ msgstr "" +#~ "Nospiediet jÅ«su ierÄ«ces taustiņu, lai to piesaistÄ«tu;\n" +#~ "ja pÄ“c piecu sekunžu laikÄ netiks nospiests neviens\n" +#~ "taustiņš, Å¡is logs aizvÄ“rsies, neizmainot piesaistes." + +#~ msgid "" +#~ "This input event has been already assigned.\n" +#~ "\n" +#~ "It's not possible to assign multiple actions to the same input event " +#~ "(although it's possible to assign the same action to multiple events)." +#~ msgstr "" +#~ "Å is ievades notikums jau ir piesaistÄ«ts.\n" +#~ "\n" +#~ "Nav iespÄ“jams piesaistÄ«t vairÄkas darbÄ«bas vienam ievades notikumam " +#~ "(tomÄ“r ir iespÄ“jams piesaistÄ«t vienu darbÄ«bu vairÄkiem notikumiem)." + +#~ msgid "EvDev-Plug - Bindings Configuration" +#~ msgstr "EvDev-Plug - Piesaistu konfigurÄcija" + +#~ msgid "Name: " +#~ msgstr "Nosaukums: " + +#~ msgid "Filename: " +#~ msgstr "Faila nosaukums: " + +#~ msgid "Phys.Address: " +#~ msgstr "Fiz. adrese: " + +#~ msgid "EvDev-Plug - about" +#~ msgstr "EvDev-Plug - par" + +#~ msgid "" +#~ "\n" +#~ "player remote control via event devices\n" +#~ "http://www.develia.org/projects.php?p=audacious#evdevplug\n" +#~ "\n" +#~ "written by Giacomo Lozito\n" +#~ msgstr "" +#~ "\n" +#~ "atskaņotÄja tÄlvadÄ«ba ar notikumu ierÄ«cÄ“m\n" +#~ "http://www.develia.org/projects.php?p=audacious#evdevplug\n" +#~ "\n" +#~ "autors Giacomo Lozito\n" + +#~ msgid "This LADSPA plugin has no user controls" +#~ msgstr "Å im LADSPA spraudnim nav lietotÄja vadÄ«klu" + +#~ msgid "Name" +#~ msgstr "Nosaukums" + +#~ msgid "UID" +#~ msgstr "UID" + +#~ msgid "Installed plugins" +#~ msgstr "InstalÄ“tie spraudņi" + +#~ msgid "Running plugins" +#~ msgstr "Spraudņi, kas paÅ¡reiz darbojas" + +#~ msgid "Add" +#~ msgstr "Pievienot" + +#~ msgid "Remove" +#~ msgstr "Izņemt" + +#~ msgid "LADSPA Plugin Catalog" +#~ msgstr "LADSPA spraudņu katalogs" + +#~ msgid "About LIRC Audacious Plugin" +#~ msgstr "Par LIRC Audacious spraudni" + +#~ msgid "LIRC Plugin " +#~ msgstr "LIRC spraudnis " + +#~ msgid "" +#~ "\n" +#~ "A simple plugin that lets you control\n" +#~ "Audacious using the LIRC remote control daemon\n" +#~ "\n" +#~ "Adapted for Audacious usage by Tony Vroon \n" +#~ "from the XMMS LIRC plugin by:\n" +#~ "Carl van Schaik \n" +#~ "Christoph Bartelmus \n" +#~ "Andrew O. Shadoura \n" +#~ "You can get LIRC information at:\n" +#~ "http://lirc.org" +#~ msgstr "" +#~ "\n" +#~ "vienkÄrÅ¡s spraudnis, kas ļauj jums kontrolÄ“t\n" +#~ "Audacious, izmantojot LIRC attÄlinÄtÄs vadÄ«bas dÄ“monu\n" +#~ "\n" +#~ "PiemÄ“rojis izmantoÅ¡anai Audacious - Tony Vroon \n" +#~ "no XMMS LIRC spraudņa, kura autori ir:\n" +#~ "Carl van Schaik \n" +#~ "Christoph Bartelmus \n" +#~ "Andrew O. Shadoura \n" +#~ "Varat iegÅ«t informÄciju par LIRC:\n" +#~ "http://lirc.org" + +#~ msgid "LIRC plugin settings" +#~ msgstr "LIRC spraudņa iestatÄ«jumi" + +#~ msgid "Reconnect to LIRC server" +#~ msgstr "PieslÄ“gties vÄ“lreiz LIRC serverim" + +#~ msgid "Timeout before reconnecting (seconds): " +#~ msgstr "Noildze pirms atkÄrtotas pieslÄ“gÅ¡anÄs (sekundes): " + +#~ msgid "Reconnect" +#~ msgstr "PieslÄ“gties vÄ“lreiz" + +#~ msgid "Connection" +#~ msgstr "PieslÄ“gties" + +#~ msgid "%s: could not init LIRC support\n" +#~ msgstr "%s: neizdevÄs inicializÄ“t LIRC atbalstu\n" + +#~ msgid "" +#~ "%s: could not read LIRC config file\n" +#~ "%s: please read the documentation of LIRC\n" +#~ "%s: how to create a proper config file\n" +#~ msgstr "" +#~ "%s: neizdevÄs nolasÄ«t LIRC konf. failu\n" +#~ "%s: lÅ«dzu, lasiet LIRC dokumentÄcijÄ\n" +#~ "%s: kÄ izveidot pareizu konf. failu\n" + +#~ msgid "%s: trying to reconnect...\n" +#~ msgstr "%s: mÄ“Ä£ina pieslÄ“gties vÄ“lreiz...\n" + +#~ msgid "%s: unknown command \"%s\"\n" +#~ msgstr "%s: nezinÄma komanda \"%s\"\n" + +#~ msgid "%s: disconnected from LIRC\n" +#~ msgstr "%s: atvienots no LIRC\n" + +#~ msgid "%s: will try reconnect every %d seconds...\n" +#~ msgstr "%s: tiks mÄ“Ä£inÄts pieslÄ“gties vÄ“lreiz katras %d sekundes...\n" + +#~ msgid "ModPlug Configuration" +#~ msgstr "ModPlug konfigurÄcija" + +#~ msgid "16 bit" +#~ msgstr "16 bit" + +#~ msgid "8 bit" +#~ msgstr "8 bit" + +#~ msgid "Mono (downmix)" +#~ msgstr "Mono (lejupmiksÄ“Å¡ana)" + +#~ msgid "Nearest (fastest)" +#~ msgstr "TuvÄkais (ÄtrÄkais)" + +#~ msgid "Linear (fast)" +#~ msgstr "LineÄrais (Ätri)" + +#~ msgid "Spline (good quality)" +#~ msgstr "Spline (laba kvalitÄte)" + +#~ msgid "8-tap Fir (extremely high quality)" +#~ msgstr "8-tap Fir (ļoti augsta kvalitÄte)" + +#~ msgid "96 kHz" +#~ msgstr "96 kHz" + +#~ msgid "48 kHz" +#~ msgstr "48 kHz" + +#~ msgid "44 kHz" +#~ msgstr "44 kHz" + +#~ msgid "22 kHz" +#~ msgstr "22 kHz" + +#~ msgid "Sampling Rate" +#~ msgstr "IztverÅ¡anas temps" + +#~ msgid "Enable" +#~ msgstr "IeslÄ“gt" + +#~ msgid "Depth" +#~ msgstr "Dziļums" + +#~ msgid "Delay" +#~ msgstr "Aizture" + +#~ msgid "Reverb" +#~ msgstr "Atbalss" + +#~ msgid "Amount" +#~ msgstr "Daudzums" + +#~ msgid "Range" +#~ msgstr "Apgabals" + +#~ msgid "Bass Boost" +#~ msgstr "Basu uzsvÄ“rÅ¡ana" + +#~ msgid "" +#~ "Note: Setting the preamp\n" +#~ "too high may cause clipping\n" +#~ "(annoying clicks and pops)!" +#~ msgstr "" +#~ "PiezÄ«me: pÄrÄk augsta\n" +#~ "priekÅ¡pastiprinÄjuma iestatÄ«Å¡ana\n" +#~ "var izraisÄ«t apgrieÅ¡anu\n" +#~ "(kaitinoÅ¡us klikÅ¡Ä·us un paukÅ¡Ä·us)!" + +#~ msgid "Effects" +#~ msgstr "Efekti" + +#~ msgid "Use Filename as Song Title" +#~ msgstr "Lietot faila nosaukumu kÄ dziesmas nosaukumu" + +#~ msgid "Fast Playlist Info" +#~ msgstr "Ä€trais repertuÄra info" + +#~ msgid "Noise Reduction" +#~ msgstr "Trokšņu samazinÄÅ¡ana" + +#~ msgid "Play Amiga MOD" +#~ msgstr "Atskaņot Amiga MOD" + +#~ msgid "Don't loop" +#~ msgstr "Neciklot" + +#~ msgid "Loop" +#~ msgstr "Ciklot" + +#~ msgid "time(s)" +#~ msgstr "reize(s)" + +#~ msgid "Loop forever" +#~ msgstr "Ciklot bezgalÄ«gi" + +#~ msgid "Looping" +#~ msgstr "CikloÅ¡anÄs" + +#~ msgid "MOD Info" +#~ msgstr "MOD info" + +#~ msgid "" +#~ "Filename:\n" +#~ "Title:\n" +#~ "Type:\n" +#~ "Length:\n" +#~ "Speed:\n" +#~ "Tempo:\n" +#~ "Samples:\n" +#~ "Instruments:\n" +#~ "Patterns:\n" +#~ "Channels:" +#~ msgstr "" +#~ "Faila nosaukums:\n" +#~ "Nosaukums:\n" +#~ "Tips:\n" +#~ "Garums:\n" +#~ "Ä€trums:\n" +#~ "Temps:\n" +#~ "Paraugi:\n" +#~ "Instrumenti:\n" +#~ "StruktÅ«ras:\n" +#~ "KanÄli:" + +#~ msgid "" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---" +#~ msgstr "" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---" + +#~ msgid "Samples" +#~ msgstr "Paraugi" + +#~ msgid "Instruments" +#~ msgstr "Instrumenti" + +#~ msgid "Message" +#~ msgstr "Ziņojums" + +#~ msgid "Modplug Input Plugin for Audacious ver" +#~ msgstr "Audacious Modplug ievades spraudnis ver" + +#~ msgid "" +#~ "\n" +#~ "Modplug sound engine written by Olivier Lapicque.\n" +#~ "XMMS interface for Modplug by Kenton Varda.\n" +#~ "(c)2000 Olivier Lapicque and Kenton Varda.\n" +#~ "Updates and maintenance by Konstanty Bialkowski.\n" +#~ "Ported to BMP by Theofilos Intzoglou." +#~ msgstr "" +#~ "\n" +#~ "Modplug skaņas dzinÄ“js, autors Olivier Lapicque.\n" +#~ "Modplug XMMS saskarnes autors Kenton Varda.\n" +#~ "(c)2000 Olivier Lapicque un Kenton Varda.\n" +#~ "AtjauninÄjumi un uzturÄ“Å¡ana - Konstanty Bialkowski.\n" +#~ "BMP porta autors Theofilos Intzoglou." + +#~ msgid "About Modplug" +#~ msgstr "Par Modplug" + +#~ msgid "Show separators in playlist" +#~ msgstr "RÄdÄ«t atdalÄ«tÄjus repertuÄrÄ" + +#~ msgid "Show window manager decoration" +#~ msgstr "RÄdÄ«t logu pÄrvaldnieka apdares" + +#~ msgid "This enables the window manager to show decorations for windows." +#~ msgstr "" +#~ "IeslÄ“dziet Å¡o, lai rÄdÄ«tu loga pÄrvaldnieka apdares atskaņotÄja logiem." + +#~ msgid "" +#~ "If selected, the file information text in the main window will scroll " +#~ "back and forth. If not selected, the text will only scroll in one " +#~ "direction." +#~ msgstr "" +#~ "Ja ieslÄ“gts, faila informÄcijas teksts galvenajÄ logÄ ritinÄsies uz " +#~ "priekÅ¡u un atpakaļ. Ja izslÄ“gts, teksta ritinÄÅ¡ana notiks tikai vienÄ " +#~ "virzienÄ." + +#~ msgid "Disable inline gtk theme" +#~ msgstr "AtslÄ“gt iekļauto GTK tÄ“mu" + +#~ msgid "Random skin on play" +#~ msgstr "NejauÅ¡a apdare atskaņojot" + +#~ msgid "Allow loading incomplete skins" +#~ msgstr "Atļaut ielÄdÄ“t nepilnÄ«gas apdares" + +#~ msgid "" +#~ "If selected, audacious won't refuse loading broken skins. Use only if " +#~ "your favourite skin doesn't work" +#~ msgstr "" +#~ "Ja atzÄ«mÄ“ts, Audacious atļaus nepilnÄ«gu apdaru ielÄdi. Izmantojiet tikai " +#~ "gadÄ«jumÄ, ja jÅ«su iecienÄ«tÄ apdare nestrÄdÄ." + +#~ msgid "Color Adjustment" +#~ msgstr "KrÄsu regulÄ“Å¡ana" + +#~ msgid "" +#~ "Audacious allows you to alter the color balance of the skinned UI. The " +#~ "sliders below will allow you to do this." +#~ msgstr "" +#~ "Audacious atļauj jums mainÄ«t lietotÄja saskarnes apdaru krÄsu balansu. " +#~ "Lai to darÄ«tu, lietojiet apakÅ¡Ä esoÅ¡os slÄ«dņus." + +#~ msgid "Blue" +#~ msgstr "Zils" + +#~ msgid "Green" +#~ msgstr "Zaļš" + +#~ msgid "Red" +#~ msgstr "Sarkans" + +#~ msgid "Color adjustment ..." +#~ msgstr "KrÄsu regulÄ“Å¡ana ..." + +#~ msgid "Disable 'GUI Scaling'" +#~ msgstr "AtslÄ“gt 'GLS mÄ“rogoÅ¡ana'" -#: src/sndstretch/sndstretch_xmms.c:336 -msgid "Volume corr." -msgstr "Skaļuma kor." +#~ msgid "Enable 'GUI Scaling'" +#~ msgstr "IeslÄ“gt 'GLS mÄ“rogoÅ¡ana'" -#: src/sndstretch/sndstretch_xmms.c:337 -msgid "Short Overlap" -msgstr "Īsa pÄrklÄÅ¡anÄs" +#~ msgid "DoubleSize" +#~ msgstr "DubultizmÄ“rs" -#: src/sndstretch/sndstretch_xmms.c:391 -msgid "Speed" -msgstr "Ä€trums" +#~ msgid "Easy Move" +#~ msgstr "VienkÄrÅ¡Ä pÄrvietoÅ¡ana" -#: src/sndstretch/sndstretch_xmms.c:392 -msgid "Pitch" -msgstr "Augstums" +#~ msgid "Spectrum Analyzer" +#~ msgstr "Spektra analizators" -#: src/sndstretch/sndstretch_xmms.c:413 -msgid "SndStretch - Configuration" -msgstr "SndStretch - konfigurÄcija" +#~ msgid "Search:" +#~ msgstr "MeklÄ“t:" -#: src/song_change/song_change.c:397 -msgid "Command to run when Audacious starts a new song." -msgstr "Komanda, ko palaist, kad Audacious sÄk atskaņot jaunu dziesmu." +#~ msgid "Add Bookmark" +#~ msgstr "Pievienot grÄmatzÄ«mi" -#: src/song_change/song_change.c:398 src/song_change/song_change.c:402 -#: src/song_change/song_change.c:406 src/song_change/song_change.c:410 -msgid "Command:" -msgstr "Komanda:" +#~ msgid "Stream name" +#~ msgstr "PlÅ«smas nosaukums" -#: src/song_change/song_change.c:401 -msgid "Command to run toward the end of a song." -msgstr "Komanda, ko palaist dziesmas beigÄs." +#~ msgid "Now playing" +#~ msgstr "PaÅ¡reiz atskaņo" -#: src/song_change/song_change.c:405 -msgid "Command to run when Audacious reaches the end of the playlist." -msgstr "Komanda, ko palaist, kad Audacious sasniedz repertuÄra beigas." +#~ msgid "Remove Bookmark" +#~ msgstr "DzÄ“st grÄmatzÄ«mi" -#: src/song_change/song_change.c:409 -msgid "" -"Command to run when title changes for a song (i.e. network streams titles)." -msgstr "" -"Komanda, ko palaist, kad nomainÄs dziesmas nosaukums (piem., tÄ«kla plÅ«smas)." +#~ msgid "About Stream Browser" +#~ msgstr "Par plÅ«smu pÄrlÅ«ku" -#: src/song_change/song_change.c:413 -msgid "" -"You can use the following format strings which\n" -"will be substituted before calling the command\n" -"(not all are useful for the end-of-playlist command).\n" -"\n" -"%F: Frequency (in hertz)\n" -"%c: Number of channels\n" -"%f: filename (full path)\n" -"%l: length (in milliseconds)\n" -"%n or %s: Song name\n" -"%r: Rate (in bits per second)\n" -"%t: Playlist position (%02d)\n" -"%p: Currently playing (1 or 0)" -msgstr "" -"Varat izmantot sekojoÅ¡a formÄta virknes, kuras\n" -"pirms komandas izsaukÅ¡anas tiks aizvietotas\n" -"(ne visas ir derÄ«gas repertuÄra-beigas komandai).\n" -"\n" -"%F: Frekvence (hercos)\n" -"%c: KanÄlu skaits\n" -"%f: faila nosaukums (pilns ceļš)\n" -"%l: ilgums (milisekundÄ“s)\n" -"%n vai %s: Dziesmas nosaukums\n" -"%r: Ä€trums (bitos sekundÄ“)\n" -"%t: RepertuÄra pozÄ«cija (%02d)\n" -"%p: PaÅ¡reiz atskaņo (1 vai 0)" +#~ msgid "" +#~ "Copyright (c) 2008, by Calin Crisan and The Audacious " +#~ "Team.\n" +#~ "\n" +#~ "This is a simple stream browser that includes the most popular streaming " +#~ "directories.\n" +#~ "Many thanks to the Streamtuner developers ,\n" +#~ "\tand of course to the whole Audacious community.\n" +#~ "\n" +#~ "Also thank you Tony Vroon for mentoring & guiding me, again.\n" +#~ "\n" +#~ "This was a Google Summer of Code 2008 project." +#~ msgstr "" +#~ "AutortiesÄ«bas (c) 2008, Calin Crisan un Audacious " +#~ "komanda.\n" +#~ "\n" +#~ "Å is ir vienkÄrÅ¡s plÅ«smu pÄrlÅ«ks, kurÄ ir iekļautas populÄrÄkÄs plÅ«smu " +#~ "mapes.\n" +#~ "Liels paldies Streamtuner izstrÄdÄtÄjiem ,\n" +#~ "\tun, protams, visai Audacious kopienai.\n" +#~ "\n" +#~ "Paldies arÄ« Tony Vroon par padomiem, vÄ“lreiz.\n" +#~ "\n" +#~ "Å is bija Google Summer of Code 2008 projekts." -#: src/song_change/song_change.c:437 -msgid "" -"Parameters passed to the shell should be encapsulated in " -"quotes. Doing otherwise is a security risk." -msgstr "" -"Parametrus, kuri tiek padoti Äaulai, vajadzÄ“tu ietvert " -"pÄ“diņÄs. PretÄ“jÄ gadÄ«jumÄ rodas risks droÅ¡Ä«bai." +#~ msgid "Can't jump to time when no track is being played.\n" +#~ msgstr "Nevar pÄriet uz noteiktu laiku, ja nekas netiek atskaņots.\n" -#: src/song_change/song_change.c:448 -msgid "Commands" -msgstr "Komandas" +#~ msgid "minutes:seconds" +#~ msgstr "minÅ«tes:sekundes" -#: src/song_change/song_change.c:484 -msgid "Song Change" -msgstr "Dziesmas maiņa" +#~ msgid "Track length:" +#~ msgstr "Celiņa garums:" -#: src/spectrum/spectrum.c:89 -msgid "Spectrum Analyzer" -msgstr "Spektra analizators" +#~ msgid "Error writing playlist \"%s\": %s" +#~ msgstr "Kļūda rakstot repertuÄru \"%s\": %s" -#: src/statusicon/statusicon.c:355 -msgid "About Status Icon Plugin" -msgstr "Par statusa ikonas spraudni" +#~ msgid "%s already exist. Continue?" +#~ msgstr "%s jau pastÄv. TurpinÄt?" -#: src/statusicon/statusicon.c:356 -#, fuzzy -msgid "" -"Status Icon Plugin\n" -"\n" -"Copyright 2005-2007 Giacomo Lozito \n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"This plugin provides a status icon, placed in\n" -"the system tray area of the window manager.\n" -msgstr "" -"\n" -"autors Giacomo Lozito < james@develia.org >\n" -"\n" -"Å is spraudnis nodroÅ¡ina ar statusa ikonu, kas\n" -"tiek novietota logu pÄrvaldnieka sistÄ“mas ikonu joslÄ.\n" +#~ msgid "Show/hide infoarea" +#~ msgstr "RÄdÄ«t/slÄ“pt infoapgabalu" -#: src/statusicon/statusicon.c:418 -msgid "Status Icon Plugin - Preferences" -msgstr "Statusa ikonas spraudnis - iestatÄ«jumi" +#~ msgid "Show main menu" +#~ msgstr "RÄdÄ«t galveno izvÄ“lni" -#: src/statusicon/statusicon.c:428 -msgid "Right-Click Menu" -msgstr "LabÄ klikÅ¡Ä·a izvÄ“lne" +#~ msgid "Show/hide main menu" +#~ msgstr "RÄdÄ«t/slÄ“pt galveno izvÄ“lni" -#: src/statusicon/statusicon.c:433 -msgid "Small playback menu #1" -msgstr "Neliela atskaņoÅ¡anas izvÄ“lne #1" +#~ msgid "Show/hide statusbar" +#~ msgstr "RÄdÄ«t/slÄ“pt stÄvokļjoslu" -#: src/statusicon/statusicon.c:436 -msgid "Small playback menu #2" -msgstr "Neliela atskaņoÅ¡anas izvÄ“lne #2" +#~ msgid "Import Playlist ..." +#~ msgstr "ImportÄ“t repertuÄru ..." -#: src/statusicon/statusicon.c:452 -msgid "Mouse Scroll Action" -msgstr "Peles rullÄ«Å¡a darbÄ«ba" +#~ msgid "Export Playlist ..." +#~ msgstr "EksportÄ“t repertuÄru ..." -#: src/statusicon/statusicon.c:456 -msgid "Change volume" -msgstr "MainÄ«t skaļumu" +#~ msgid "Refresh" +#~ msgstr "AtsvaidzinÄt" -#: src/statusicon/statusicon.c:458 -msgid "Change playing song" -msgstr "MainÄ«t atskaņojamo dziesmu" +#~ msgid "Refresh Selected" +#~ msgstr "AtsvaidzinÄt iezÄ«mÄ“tos" -#: src/stereo_plugin/stereo.c:40 -msgid "" -"Extra Stereo Plugin\n" -"\n" -"By Johan Levin 1999." -msgstr "" -"Extra Stereo spraudnis\n" -"\n" -"Autors Johan Levin 1999." +#~ msgid "Refreshes metadata associated with selected entries." +#~ msgstr "Atsvaidzina ar izvÄ“lÄ“to repertuÄra ierakstu saistÄ«tos metadatus." -#: src/stereo_plugin/stereo.c:64 -msgid "About Extra Stereo Plugin" -msgstr "Par Extra Stereo spraudni" +#~ msgid "Edit title" +#~ msgstr "Rediģēt nosaukumu" -#: src/stereo_plugin/stereo.c:100 -msgid "Configure Extra Stereo" -msgstr "KonfigurÄ“t Extra Stereo" +#, fuzzy +#~ msgid "Edit the playlist title." +#~ msgstr "Rediģē repertuÄra nosaukumu." -#: src/streambrowser/gui/streambrowser_win.c:62 -msgid "Search:" -msgstr "MeklÄ“t:" - -#: src/streambrowser/gui/streambrowser_win.c:81 -#: src/streambrowser/gui/streambrowser_win.c:370 -msgid "Add Bookmark" -msgstr "Pievienot grÄmatzÄ«mi" - -#: src/streambrowser/gui/streambrowser_win.c:95 -msgid "Stream browser" -msgstr "PlÅ«smu pÄrlÅ«ks" - -#: src/streambrowser/gui/streambrowser_win.c:319 -msgid "Stream name" -msgstr "PlÅ«smas nosaukums" - -#: src/streambrowser/gui/streambrowser_win.c:326 -msgid "Now playing" -msgstr "PaÅ¡reiz atskaņo" - -#: src/streambrowser/gui/streambrowser_win.c:367 -msgid "Remove Bookmark" -msgstr "DzÄ“st grÄmatzÄ«mi" - -#: src/streambrowser/streambrowser.c:331 -msgid "About Stream Browser" -msgstr "Par plÅ«smu pÄrlÅ«ku" +#~ msgid "By Formatted Title" +#~ msgstr "PÄ“c formatÄ“tÄ nosaukuma" -#: src/streambrowser/streambrowser.c:332 -msgid "" -"Copyright (c) 2008, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming " -"directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" -"\n" -"This was a Google Summer of Code 2008 project." -msgstr "" -"AutortiesÄ«bas (c) 2008, Calin Crisan un Audacious " -"komanda.\n" -"\n" -"Å is ir vienkÄrÅ¡s plÅ«smu pÄrlÅ«ks, kurÄ ir iekļautas populÄrÄkÄs plÅ«smu " -"mapes.\n" -"Liels paldies Streamtuner izstrÄdÄtÄjiem ,\n" -"\tun, protams, visai Audacious kopienai.\n" -"\n" -"Paldies arÄ« Tony Vroon par padomiem, vÄ“lreiz.\n" -"\n" -"Å is bija Google Summer of Code 2008 projekts." +#~ msgid "Components" +#~ msgstr "Komponentes" -#: src/streambrowser/streambrowser.c:357 src/streambrowser/streambrowser.c:367 -msgid "Streambrowser" -msgstr "PlÅ«smu pÄrlÅ«ks" +#~ msgid "Upload selected track(s)" +#~ msgstr "AugÅ¡upielÄdÄ“t izvÄ“lÄ“to celiņu(s)" -#: src/sun/about.c:30 -msgid "About the Sun Driver" -msgstr "Par Sun dzini" +#~ msgid "MTP device handler" +#~ msgstr "MTP ierÄ«ces apstrÄdÄtÄjs" -#: src/sun/about.c:31 -msgid "" -"XMMS BSD Sun Driver\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" -msgstr "" -"XMMS BSD Sun dzinis\n" -"\n" -"AutortiesÄ«bas (c) 2001 CubeSoft Communications, Inc.\n" -"UzturÄ“tÄjs: .\n" +#~ msgid "Show main player window" +#~ msgstr "RÄdÄ«t galveno atskaņotÄja logu" + +#~ msgid "Ignore" +#~ msgstr "IgnorÄ“t" + +#~ msgid "" +#~ "Audacious has been started with all of its windows hidden.\n" +#~ "You may want to show the player window again to control Audacious; " +#~ "otherwise, you'll have to control it remotely via audtool or enabled " +#~ "plugins (such as the statusicon plugin)." +#~ msgstr "" +#~ "Audacious startÄ“jÄs, visiem logiem esot slÄ“ptÄ stÄvoklÄ«.\n" +#~ "JÅ«s, iespÄ“jams, vÄ“laties logus atkal padarÄ«t redzamus, lai kontrolÄ“tu " +#~ "Audacious. Ja nÄ“, jums nÄksies to kontrolÄ“t attÄlinÄti ar 'audtool' vai " +#~ "spraudņu (piemÄ“ram, sistÄ“mjoslas ikonas spraudņa) palÄ«dzÄ«bu." + +#~ msgid "Always ignore, show/hide is controlled remotely" +#~ msgstr "VienmÄ“r ignorÄ“t, rÄdÄ«t/slÄ“pt tiek kontrolÄ“ts attÄlinÄti" + +#~ msgid "Audacious - broken GTK engine usage warning" +#~ msgstr "Audacious - salauzta GTK dzinÄ“ja izmantoÅ¡anas brÄ«dinÄjums" + +#~ msgid "" +#~ "Broken GTK engine in use\n" +#~ "\n" +#~ "Audacious has detected that you are using a broken GTK engine.\n" +#~ "\n" +#~ "The theme engine you are using, %s, is incompatible with some of " +#~ "the features used by modern skins. The incompatible features have been " +#~ "disabled for this session.\n" +#~ "\n" +#~ "To use these features, please consider using a different GTK theme engine." +#~ msgstr "" +#~ "Tiek izmantots salauzts GTK dzinÄ“js\n" +#~ "\n" +#~ "Audacious atklÄja, ka jÅ«s izmantojat salauztu GTK dzinÄ“ju.\n" +#~ "\n" +#~ "TÄ“mu dzinÄ“js, ko izmantojat, %s, nav savietojams ar dažÄm moderno " +#~ "spraudņu iespÄ“jÄm. NesavietojamÄs iespÄ“jas Å¡Ä«s sesijas laikÄ ir " +#~ "atslÄ“gtas.\n" +#~ "\n" +#~ "Lai izmantotu Å¡Ä«s iespÄ“jas, lÅ«dzu, izmantojiet citu GTK tÄ“mu dzinÄ“ju." -#: src/sun/configure.c:199 -msgid "Audio control device:" -msgstr "Audio vadÄ«bas ierÄ«ce:" +#~ msgid "Do not display this warning again" +#~ msgstr "Vairs nerÄdÄ«t Å¡o brÄ«dinÄjumu" -#: src/sun/configure.c:270 -msgid "Buffer size (ms):" -msgstr "Bufera izmÄ“rs (ms):" +#~ msgid "Save as Static Playlist" +#~ msgstr "SaglabÄt kÄ statisko repertuÄru" -#: src/sun/configure.c:348 -msgid "Volume controls device:" -msgstr "Skaļuma vadÄ«bas ierÄ«ce:" +#~ msgid "Use Relative Path" +#~ msgstr "Izmantot relatÄ«vo ceļu" -#: src/sun/configure.c:361 -msgid "XMMS uses mixer exclusively." -msgstr "XMMS izmanto tikai mikseri." +#~ msgid "Load Playlist" +#~ msgstr "IelÄdÄ“t repertuÄru" -#: src/sun/configure.c:536 -msgid "Sun driver configuration" -msgstr "Sun dziņa konfigurÄcija" +#~ msgid "Save Playlist" +#~ msgstr "SaglabÄt repertuÄru" -#: src/tonegen/tonegen.c:53 -msgid "About Tone Generator" -msgstr "Par toņa Ä£eneratoru" +#~ msgid "Skinned Interface" +#~ msgstr "ApdarinÄtÄ saskarne" -#: src/tonegen/tonegen.c:55 -msgid "" -"Sinus tone generator by Haavard Kvaalen \n" -"Modified by Daniel J. Peng \n" -"\n" -"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" -"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" -msgstr "" -"Sinusa toņa Ä£enerators, autors Haavard Kvaalen \n" -"ModificÄ“jis Daniel J. Peng \n" -"\n" -"Lai to izmantotu, ievadiet URL: tone://frekvence1;frekvence2;frekvence3;...\n" -"piem., tone://2000;2005 , lai atskaņotu 2000Hz un 2005Hz toni" +#~ msgid "%s: %d kbps, %d Hz, %s" +#~ msgstr "%s: %d kbps, %d Hz, %s" -#: src/tonegen/tonegen.c:105 -#, c-format -msgid "%s %.1f Hz" -msgstr "%s %.1f Hz" +#~ msgid "" +#~ "* Select ALSA output ports *\n" +#~ "MIDI events will be sent to the ports selected here. In example, if your " +#~ "audio card provides a hardware synth and you want to play MIDI with it, " +#~ "you'll probably want to select the wavetable synthesizer ports." +#~ msgstr "" +#~ "* IzvÄ“lieties ALSA izvades portus *\n" +#~ "MIDI notikumi tiks sÅ«tÄ«ti uz Å¡eit izvÄ“lÄ“tajiem portiem. PiemÄ“ram, ja jÅ«su " +#~ "skaņas karte ir aprÄ«kota ar sintezatoru aparatÅ«ras lÄ«menÄ« un jÅ«s vÄ“laties " +#~ "ar to atskaņot MIDI, tad, jums vajadzÄ“tu Å¡eit izvÄ“lÄ“ties viļņtabulas " +#~ "sintezatora portus." + +#~ msgid "" +#~ "* Select ALSA mixer card *\n" +#~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +#~ "ouput plugins from the player. During playback, the player volumeslider " +#~ "will manipulate the mixer control you select here. If you're using " +#~ "wavetable synthesizer ports, you'll probably want to select the Synth " +#~ "control here." +#~ msgstr "" +#~ "* IzvÄ“lieties ALSA mikseri *\n" +#~ "ALSA aizmugure padod izvadi tieÅ¡i caur ALSA, tÄ neizmanto efektu un " +#~ "izvades spraudņus no atskaņotÄja. AtskaņoÅ¡anas laikÄ atskaņotÄja skaļuma " +#~ "regulators manipulÄ“s ar to miksera vadÄ«klu, ko izvÄ“lÄ“sieties Å¡eit. Ja " +#~ "izmantojat viļņtabulas sintezatora portus, jums vajadzÄ“tu Å¡eit izvÄ“lÄ“ties " +#~ "Synth vadÄ«klu." + +#~ msgid "" +#~ "* Select ALSA mixer control *\n" +#~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +#~ "ouput plugins from the player. During playback, the player volume slider " +#~ "will manipulate the mixer control you select here. If you're using " +#~ "wavetable synthesizer ports, you'll probably want to select the Synth " +#~ "control here." +#~ msgstr "" +#~ "* IzvÄ“lieties ALSA miksera vadÄ«klu *\n" +#~ "ALSA aizmugure padod izvadi tieÅ¡i caur ALSA, tÄ neizmanto efektu un " +#~ "izvades spraudņus no atskaņotÄja. AtskaņoÅ¡anas laikÄ atskaņotÄja skaļuma " +#~ "regulators manipulÄ“s ar to miksera vadÄ«klu, ko izvÄ“lÄ“sieties Å¡eit. Ja " +#~ "izmantojat viļņtabulas sintezatora portus, jums vajadzÄ“tu Å¡eit izvÄ“lÄ“ties " +#~ "Synth vadÄ«klu." + +#~ msgid "" +#~ "* Backend selection *\n" +#~ "AMIDI-Plug works with backends, in a modular fashion; here you should " +#~ "select your backend; that is, the way MIDI events are going to be handled " +#~ "and played.\n" +#~ "If you have a hardware synthesizer on your audio card, and ALSA supports " +#~ "it, you'll want to use the ALSA backend. It can also be used with " +#~ "anything that provides an interface to the ALSA sequencer, including " +#~ "software synths or external devices.\n" +#~ "If you want to rely on a software synthesizer and/or want to pipe audio " +#~ "into effect and output plugins of the player you'll want to use the good " +#~ "FluidSynth backend.\n" +#~ "Press the info button to read specific information about each backend." +#~ msgstr "" +#~ "* Aizmugures izvÄ“le *\n" +#~ "AMIDI-Plug darbojas ar aizmugurÄ“m, modulÄrÄ veidÄ. Å eit jums jÄizvÄ“las " +#~ "aizmugure, t.i., veids, kÄdÄ MIDI notikumi tiks apstrÄdÄti un atskaņoti.\n" +#~ "Ja jÅ«su skaņas kartei ir ALSA atbalstÄ«ts aparatÅ«ras sintezators, jÅ«s " +#~ "vÄ“lÄ“sieties izmantot ALSA aizmuguri. TÄ arÄ« var tikt izmantota ar jebko, " +#~ "kas nodroÅ¡ina saskarni ALSA sekvencerim, ieskaitot programmatÅ«ras " +#~ "sintezatorus vai ÄrÄ“jas ierÄ«ces.\n" +#~ "Ja vÄ“laties izmantot programmatÅ«ras sintezatoru un/vai vÄ“laties ievadÄ«t " +#~ "skaņu atskaņotÄja efektu un izvades spraudņos, jÅ«s vÄ“lÄ“sieties izmantot " +#~ "labu FluidSynth aizmuguri.\n" +#~ "Nospiediet informÄcijas pogu, lai saņemtu specifisku informÄciju par " +#~ "katru aizmuguri." + +#, fuzzy +#~ msgid "" +#~ "* Transpose function *\n" +#~ "This option allows you to play the midi file transposed in a different " +#~ "key, by shifting of the desired number of semitones all its notes " +#~ "(excepting those on midi channel 10, reserved for percussions). " +#~ "Especially useful if you wish to sing or play along with another " +#~ "instrument." +#~ msgstr "" +#~ "* PÄrlikÅ¡anas funkcija *\n" +#~ "Å Ä« opcija ļauj jums atskaņot pÄrveidotu midi failu, pÄrbÄ«dot par vÄ“lamo " +#~ "skaitu pustoņu visas tÄ notis (izņemot notis 10. midi kanÄlÄ, kas " +#~ "rezervÄ“ts perkusijÄm). Tas ir Ä«paÅ¡i noderÄ«gi, ja vÄ“laties dziedÄt vai " +#~ "spÄ“lÄ“t lÄ«dz ar citu instrumentu." + +#~ msgid "" +#~ "* Drumshift function *\n" +#~ "This option allows you to shift notes on midi channel 10 (the standard " +#~ "percussions channel) of the desired number of semitones. This results in " +#~ "different drumset and percussions being used during midi playback, so if " +#~ "you wish to enhance (or reduce, or alter) percussion sounds, try to play " +#~ "with this value." +#~ msgstr "" +#~ "* Bungu pÄrbÄ«des funkcija *\n" +#~ "Å Ä« opcija ļauj jums pÄrbÄ«dÄ«t notis 10. midi kanÄlÄ (standarta perkusiju " +#~ "kanÄls) par vÄ“lamo skaitu pustoņu. RezultÄtÄ midi atskaņoÅ¡anas laikÄ tiks " +#~ "izmantotas atÅ¡Ä·irÄ«gas bungu un perkusiju skaņas. TÄtad, ja vÄ“laties " +#~ "mainÄ«t perkusiju skaņas, mÄ“Ä£iniet paeksperimentÄ“t ar Å¡o vÄ“rtÄ«bu." + +#~ msgid "" +#~ "* Pre-calculate MIDI length *\n" +#~ "If this option is enabled, AMIDI-Plug will calculate the MIDI file length " +#~ "as soon as the player requests it, instead of doing that only when the " +#~ "MIDI file is being played. In example, MIDI length will be calculated " +#~ "straight after adding MIDI files in a playlist. Disable this option if " +#~ "you want faster playlist loading (when a lot of MIDI files are added), " +#~ "enable it to display more information in the playlist straight after " +#~ "loading." +#~ msgstr "" +#~ "* AprÄ“Ä·inÄt MIDI garumus iepriekÅ¡ *\n" +#~ "Ja Å¡Ä« opcija ir ieslÄ“gta, AMIDI-Plug aprÄ“Ä·inÄs MIDI faila garumu, tiklÄ«dz " +#~ "atskaņotÄjs to pieprasa, nevis faila atskaņoÅ¡anas laikÄ. PiemÄ“ram, MIDI " +#~ "garums tiks aprÄ“Ä·inÄts uzreiz pÄ“c to pievienoÅ¡anas repertuÄram. " +#~ "IzslÄ“dziet Å¡o opciju, ja vÄ“laties ÄtrÄku repertuÄra ielÄdi (pievienojot " +#~ "daudz MIDI failu), bet ieslÄ“dziet, lai repertuÄrÄ tiktu attÄ“lots vairÄk " +#~ "informÄcijas uzreiz pÄ“c failu ielÄdÄ“Å¡anas." + +#~ msgid "" +#~ "* Extract comments from MIDI files *\n" +#~ "Some MIDI files contain text comments (author, copyright, instrument " +#~ "notes, etc.). If this option is enabled, AMIDI-Plug will extract and " +#~ "display comments (if available) in the file information dialog." +#~ msgstr "" +#~ "* Izvilkt komentÄrus no MIDI failiem *\n" +#~ "DažkÄrt MIDI faili satur teksta komentÄrus (autors, autortiesÄ«bas, " +#~ "instrumentu notis, u.t.t.). Ja Å¡Ä« opcija ir ieslÄ“gta, AMIDI-Plug izvilks " +#~ "un attÄ“los komentÄrus (ja pieejami) faila informÄcijas dialogÄ." + +#~ msgid "" +#~ "* Extract lyrics from MIDI files *\n" +#~ "Some MIDI files contain song lyrics. If this option is enabled, AMIDI-" +#~ "Plug will extract and display song lyrics (if available) in the file " +#~ "information dialog." +#~ msgstr "" +#~ "* Izvilkt dziesmu vÄrdu tekstus no MIDI failiem *\n" +#~ "DažkÄrt MIDI faili satur dziesmu vÄrdu tekstus. Ja Å¡Ä« opcija ir ieslÄ“gta, " +#~ "AMIDI-Plug izvilks un attÄ“los dziesmu vÄrdu tekstus (ja pieejami) faila " +#~ "informÄcijas dialogÄ." + +#~ msgid "" +#~ "* Select SoundFont files *\n" +#~ "In order to play MIDI with FluidSynth, you need to specify at least one " +#~ "valid SoundFont file here (use absolute paths). The loading order is from " +#~ "the top (first) to the bottom (last)." +#~ msgstr "" +#~ "* IzvÄ“lieties SoundFont failus *\n" +#~ "Lai atskaņotu MIDI failus ar FluidSynth, jums Å¡eit jÄnorÄda vismaz viens " +#~ "derÄ«gs SoundFont fails (lietojiet absolÅ«tos ceļus). IelÄdÄ“Å¡anas kÄrtÄ«ba " +#~ "ir no augÅ¡as (pirmais) uz apakÅ¡u (pÄ“dÄ“jais)." + +#~ msgid "" +#~ "* Load SoundFont on player start *\n" +#~ "Depending on your system speed, SoundFont loading in FluidSynth will " +#~ "require up to a few seconds. This is a one-time task (the soundfont will " +#~ "stay loaded until it is changed or the backend is unloaded) that can be " +#~ "done at player start, or before the first MIDI file is played (the latter " +#~ "is a better choice if you don't use your player to listen MIDI files " +#~ "only)." +#~ msgstr "" +#~ "* IelÄdÄ“t SoundFont palaižot atskaņotÄju *\n" +#~ "AtkarÄ«bÄ no jÅ«su sistÄ“mas Ätruma, SoundFont ielÄdÄ“Å¡ana FluidSynth ilgs " +#~ "lÄ«dz pat dažÄm sekundÄ“m. Å is ir vienreizÄ“js uzdevums (SoundFont paliks " +#~ "ielÄdÄ“ts lÄ«dz tas tiks mainÄ«ts vai arÄ« tiks izlÄdÄ“ta aizmugure), ko var " +#~ "izpildÄ«t, palaižot programmu vai pirms pirmÄ MIDI faila atskaņoÅ¡anas " +#~ "(pÄ“dÄ“jÄ ir labÄka izvÄ“le, ja neizmantojat atskaņotÄju tikai MIDI failu " +#~ "atskaņoÅ¡anai)." + +#~ msgid "" +#~ "* Load SoundFont on first midifile play *\n" +#~ "Depending on your system speed, SoundFont loading in FluidSynth will " +#~ "require up to a few seconds. This is a one-time task (the soundfont will " +#~ "stay loaded until it is changed or the backend is unloaded) that can be " +#~ "done at player start, or before the first MIDI file is played (the latter " +#~ "is a better choice if you don't use your player to listen MIDI files " +#~ "only)." +#~ msgstr "" +#~ "* IelÄdÄ“t SoundFont, pirmoreiz atskaņojot MIDI failu *\n" +#~ "AtkarÄ«bÄ no jÅ«su sistÄ“mas Ätruma, SoundFont ielÄdÄ“Å¡ana FluidSynth ilgs " +#~ "lÄ«dz pat dažÄm sekundÄ“m. Å is ir vienreizÄ“js uzdevums (SoundFont paliks " +#~ "ielÄdÄ“ts lÄ«dz tas tiks mainÄ«ts vai arÄ« tiks izlÄdÄ“ta aizmugure), ko var " +#~ "izpildÄ«t, palaižot programmu vai pirms pirmÄ MIDI faila atskaņoÅ¡anas " +#~ "(pÄ“dÄ“jÄ ir labÄka izvÄ“le, ja neizmantojat atskaņotÄju tikai MIDI failu " +#~ "atskaņoÅ¡anai)." + +#~ msgid "" +#~ "* Synthesizer gain *\n" +#~ "From FluidSynth docs: the gain is applied to the final or master output " +#~ "of the synthesizer; it is set to a low value by default to avoid the " +#~ "saturation of the output when random MIDI files are played." +#~ msgstr "" +#~ "* Sintezatora pastiprinÄjums *\n" +#~ "No FluidSynth dokumentÄcijas: pastiprinÄjums tiek attiecinÄts uz " +#~ "sintezatora gala izvadi. PÄ“c noklusÄ“juma tam ir uzstÄdÄ«ta zema vÄ“rtÄ«ba, " +#~ "lai izvairÄ«tos no izvades piesÄtinÄtÄ«bas, kad tiek atskaņoti gadÄ«juma " +#~ "MIDI faili." + +#~ msgid "" +#~ "* Synthesizer polyphony *\n" +#~ "From FluidSynth docs: the polyphony defines how many voices can be played " +#~ "in parallel; the number of voices is not necessarily equivalent to the " +#~ "number of notes played simultaneously; indeed, when a note is struck on a " +#~ "specific MIDI channel, the preset on that channel may create several " +#~ "voices, for example, one for the left audio channel and one for the right " +#~ "audio channels; the number of voices activated depends on the number of " +#~ "instrument zones that fall in the correspond to the velocity and key of " +#~ "the played note." +#~ msgstr "" +#~ "* Sintezatora polifonija *\n" +#~ "No FluidSynth dokumentÄcijas: polifonija nosaka, cik balsu var tikt " +#~ "atskaņots paralÄ“li. Balsu skaitam nav noteikti jÄbÅ«t vienÄdam ar " +#~ "vienlaikus atskaņoto noÅ¡u skaitu. Patiesi, kad nots tiek atskaņota " +#~ "noteiktÄ MIDI kanÄlÄ, Å¡Ä« kanÄla uzstÄdÄ«jumi var izveidot vairÄkas balsis, " +#~ "piemÄ“ram, vienu kreisajam, bet otru labajam audio kanÄlam. AktivizÄ“to " +#~ "balsu skaits ir atkarÄ«gs no instrumentu zonu skaita, kas iekrÄ«t Ätruma " +#~ "atbilstÄ«bÄ, un atskaņotÄs nots taustiņa." + +#~ msgid "" +#~ "* Synthesizer reverb *\n" +#~ "From FluidSynth docs: when set to \"yes\" the reverb effects module is " +#~ "activated; note that when the reverb module is active, the amount of " +#~ "signal sent to the reverb module depends on the \"reverb send\" generator " +#~ "defined in the SoundFont." +#~ msgstr "" +#~ "* Sintezatora atbalss *\n" +#~ "No FluidSynth dokumentÄcijas: kad uzstÄdÄ«ts uz \"jÄ\", tiek " +#~ "aktivizÄ“tsatbalss efektu modulis. IevÄ“rojiet - tad, kad atbalss modulis " +#~ "ir aktÄ«vs, uz atbalss moduli nosÅ«tÄ«tais signÄlu daudzums ir atkarÄ«gs no " +#~ "\"nosÅ«tÄ«tÄ atbalss\" Ä£eneratora, kas definÄ“ts SoundFont." + +#~ msgid "" +#~ "* Synthesizer chorus *\n" +#~ "From FluidSynth docs: when set to \"yes\" the chorus effects module is " +#~ "activated; note that when the chorus module is active, the amount of " +#~ "signal sent to the chorus module depends on the \"chorus send\" generator " +#~ "defined in the SoundFont." +#~ msgstr "" +#~ "* Sintezatora koris *\n" +#~ "No FluidSynth dokumentÄcijas: kad uzstÄdÄ«ts uz \"jÄ\", tiek " +#~ "aktivizÄ“tskora efektu modulis. IevÄ“rojiet - tad, kad kora modulis ir " +#~ "aktÄ«vs, uz kora moduli nosÅ«tÄ«tais signÄlu daudzums ir atkarÄ«gs no " +#~ "\"nosÅ«tÄ«tais koris\" Ä£eneratora, kas definÄ“ts SoundFont." + +#, fuzzy +#~ msgid "" +#~ "* Synthesizer samplerate *\n" +#~ "The sample rate of the audio generated by the synthesizer. You can also " +#~ "specify a custom value in the interval 22050Hz-96000Hz." +#~ msgstr "" +#~ "* Sintezatora iztverÅ¡anas temps *\n" +#~ "Sintezatora Ä£enerÄ“tais audio iztverÅ¡anas temps. Varat norÄdÄ«t arÄ« " +#~ "pielÄgotu vÄ“rtÄ«bu intervÄlÄ 22050Hz-96000Hz.\n" +#~ "PiezÄ«me: noklusÄ“tie bufera parametri ir noregulÄ“ti 44100Hz tempam. Mainot " +#~ "iztverÅ¡anas tempu, iespÄ“jams, bÅ«s nepiecieÅ¡ama bufera parametru " +#~ "regulÄ“Å¡ana, lai iegÅ«tu labu skaņas kvalitÄti." + +#~ msgid "" +#~ "If enabled, the extension from the original filename will not be stripped " +#~ "before adding the new file extension to the end." +#~ msgstr "" +#~ "Ja ieslÄ“gts, paplaÅ¡inÄjums no oriÄ£inÄlÄ faila nosaukuma netiks atmests " +#~ "pirms jaunÄ faila paplaÅ¡inÄjuma pievienoÅ¡anas beigÄs." + +#~ msgid "" +#~ "best/slowest:0;\n" +#~ "worst/fastest:9;\n" +#~ "recommended:2;\n" +#~ "default:5;" +#~ msgstr "" +#~ "labÄkais/lÄ“nÄkais:0;\n" +#~ "sliktÄkais/ÄtrÄkais:9;\n" +#~ "rekomendÄ“tais:2;\n" +#~ "noklusÄ“tais:5;" + +#~ msgid "Adds 16 bit checksum to every frame" +#~ msgstr "Pievieno 16 bitu kontrolsummu katram kadram" + +#~ msgid "Variable bitrate" +#~ msgstr "MainÄ«gs bitÄtrums" + +#~ msgid "Average bitrate" +#~ msgstr "VidÄ“jais bitÄtrums" + +#~ msgid "" +#~ "For use with players that do not support low bitrate mp3 (Apex AD600-A " +#~ "DVD/mp3 player)" +#~ msgstr "" +#~ "IzmantoÅ¡anai ar atskaņotÄjiem, kas neatbalsta zema bitÄtruma mp3 (Apex " +#~ "AD600-A DVD/mp3 atskaņotÄjs)" + +#~ msgid "" +#~ "highest:0;\n" +#~ "lowest:9;\n" +#~ "default:4;" +#~ msgstr "" +#~ "augstÄkais:0;\n" +#~ "zemÄkais:9;\n" +#~ "noklusÄ“tais:4;" -#: src/tonegen/tonegen.c:105 -msgid "Tone Generator: " -msgstr "Toņa Ä£enerators: " +#, fuzzy +#~ msgid "Show playlists" +#~ msgstr "RÄdÄ«t repertuÄra redaktoru" -#: src/vorbis/configure.c:31 -msgid "Override generic titles" -msgstr "AizstÄt vispÄrÄ«gos nosaukumus" +#, fuzzy +#~ msgid "Show/hide playlists" +#~ msgstr "SaglabÄt repertuÄru" -#: src/vorbis/configure.c:32 -msgid "Title format:" -msgstr "Nosaukuma formÄts:" +#~ msgid "About the Sun Driver" +#~ msgstr "Par Sun dzini" -#: src/vorbis/configure.c:36 -msgid "Ogg Vorbis Tags" -msgstr "Ogg Vorbis tagi" +#~ msgid "" +#~ "XMMS BSD Sun Driver\n" +#~ "\n" +#~ "Copyright (c) 2001 CubeSoft Communications, Inc.\n" +#~ "Maintainer: .\n" +#~ msgstr "" +#~ "XMMS BSD Sun dzinis\n" +#~ "\n" +#~ "AutortiesÄ«bas (c) 2001 CubeSoft Communications, Inc.\n" +#~ "UzturÄ“tÄjs: .\n" -#: src/vorbis/configure.c:68 -msgid "Ogg Vorbis Audio Plugin Configuration" -msgstr "Ogg Vorbis Audio spraudņa konfigurÄcija" +#~ msgid "Audio control device:" +#~ msgstr "Audio vadÄ«bas ierÄ«ce:" -#: src/vorbis/vorbis.c:549 -msgid "About Ogg Vorbis Audio Plugin" -msgstr "Par Ogg Vorbis Audio spraudni" +#~ msgid "Buffer size (ms):" +#~ msgstr "Bufera izmÄ“rs (ms):" -#: src/vorbis/vorbis.c:554 -msgid "" -"Ogg Vorbis Plugin by the Xiph.org Foundation\n" -"\n" -"Original code by\n" -"Tony Arcieri \n" -"Contributions from\n" -"Chris Montgomery \n" -"Peter Alm \n" -"Michael Smith \n" -"Jack Moffitt \n" -"Jorn Baayen \n" -"Haavard Kvaalen \n" -"Gian-Carlo Pascutto \n" -"Eugene Zagidullin \n" -"\n" -"Visit the Xiph.org Foundation at http://www.xiph.org/\n" -msgstr "" -"Ogg Vorbis spraudnis, izstrÄdÄja Xiph.org Foundation\n" -"\n" -"OriÄ£inÄlÄ koda autors\n" -"Tony Arcieri \n" -"Pienesumi no\n" -"Chris Montgomery \n" -"Peter Alm \n" -"Michael Smith \n" -"Jack Moffitt \n" -"Jorn Baayen \n" -"Haavard Kvaalen \n" -"Gian-Carlo Pascutto \n" -"Eugene Zagidullin \n" -"\n" -"Apciemojiet Xiph.org Foundation - http://www.xiph.org/\n" +#~ msgid "Volume controls device:" +#~ msgstr "Skaļuma vadÄ«bas ierÄ«ce:" -#: src/vtx/about.c:14 -msgid "About Vortex Player" -msgstr "Par Vortex atskaņotÄju" +#~ msgid "XMMS uses mixer exclusively." +#~ msgstr "XMMS izmanto tikai mikseri." -#: src/vtx/about.c:15 -msgid "" -"Vortex file format player by Sashnov Alexander \n" -"Founded on original source in_vtx.dll by Roman Sherbakov \n" -"\n" -"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" -"and other AY/YM music sites.\n" -"\n" -"Audacious implementation by Pavel Vymetalek " -msgstr "" -"Vortex faila formÄta atskaņotÄjs, autors Sashnov Alexander \n" -"BalstÄ«ts uz oriÄ£inÄlÄ koda no in_vtx.dll, kura autors ir Roman Sherbakov " -"\n" -"\n" -"MÅ«zika vtx formÄtÄ ir atrodama http://vtx.microfor.ru/music.htm\n" -"un citÄs AY/YM mÅ«zikas vietnÄ“s.\n" -"\n" -"IevieÅ¡ana iekÅ¡ Audacious: Pavel Vymetalek " +#~ msgid "Sun driver configuration" +#~ msgstr "Sun dziņa konfigurÄcija" -#: src/wavpack/wavpack.c:371 -#, c-format -msgid "Wavpack Decoder Plugin %s" -msgstr "Wavpack dekodÄ“tÄja spraudnis %s" +#, fuzzy +#~ msgid "Target volume:" +#~ msgstr "MainÄ«t skaļumu" -#: src/wavpack/wavpack.c:372 -msgid "" -"Copyright (c) 2006 William Pitcock \n" -"\n" -"Some of the plugin code was by Miles Egan\n" -"Visit the Wavpack site at http://www.wavpack.com/\n" -msgstr "" -"AutortiesÄ«bas (c) 2006 William Pitcock \n" -"\n" -"Daļas spraudņa koda autors Miles Egan\n" -"Apciemojiet Wavpack vietni http://www.wavpack.com/\n" +#, fuzzy +#~ msgid "Effect strength:" +#~ msgstr "Efekta intensitÄte:" + +#~ msgid "FLAC Audio Plugin " +#~ msgstr "FLAC audio spraudnis" + +#~ msgid "Stream browser" +#~ msgstr "PlÅ«smu pÄrlÅ«ks" + +#~ msgid "Streambrowser" +#~ msgstr "PlÅ«smu pÄrlÅ«ks" #~ msgid "PREAMP" #~ msgstr "PRIEKÅ PASTIPRINÄ€T" @@ -5970,12 +5938,6 @@ #~ "\n" #~ "NezinÄms faila tips '%s'.\n" -#~ msgid "Randomize List" -#~ msgstr "Sajaukt repertuÄru" - -#~ msgid "Randomizes the playlist." -#~ msgstr "Sajauc repertuÄra ierakstu atskaņoÅ¡anas kÄrtÄ«bu." - #~ msgid "ALSA Gapless Output Plugin Preferences" #~ msgstr "ALSA bezstarplaiku spraudņa iestatÄ«jumi" @@ -6422,9 +6384,6 @@ #~ msgid "Reopen" #~ msgstr "AtvÄ“rt atkÄrtoti" -#~ msgid "Length (ms):" -#~ msgstr "Ilgums (ms):" - #~ msgid "" #~ "Specify the length of the silence to be inserted between the tracks.\n" #~ "Default: 2000" @@ -6852,9 +6811,6 @@ #~ msgid "Entries" #~ msgstr "Ieraksti" -#~ msgid "_Rename" -#~ msgstr "PÄ_rdÄ“vÄ“t" - #~ msgid "About Icecast-Plugin" #~ msgstr "Par Icecast spraudni" @@ -7215,21 +7171,9 @@ #~ msgid "Title:" #~ msgstr "Nosaukums:" -#~ msgid "Artist:" -#~ msgstr "IzpildÄ«tÄjs:" - -#~ msgid "Album:" -#~ msgstr "Albums:" - #~ msgid "Comment:" #~ msgstr "KomentÄrs:" -#~ msgid "Year:" -#~ msgstr "Gads:" - -#~ msgid "Track number:" -#~ msgstr "Celiņa numurs:" - #~ msgid "Genre:" #~ msgstr "Žanrs:" @@ -7475,9 +7419,6 @@ #~ msgid "Musepack Tag" #~ msgstr "Musepack birka" -#~ msgid "Track:" -#~ msgstr "Celiņš:" - #~ msgid "Musepack Info" #~ msgstr "Musepack info" diff -Nru audacious-plugins-2.4.4/po/Makefile audacious-plugins-3.2/po/Makefile --- audacious-plugins-2.4.4/po/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -12,18 +12,26 @@ cy.po \ de.po \ es.po \ + es_AR.po \ + es_MX.po \ et.po \ eu.po \ fr.po \ hu.po \ + it.po \ ja.po \ lv.po \ + lt.po \ pl.po \ ro.po \ ru.po \ sk.po \ + sr.po \ tr.po \ - zh_CN.po + uk.po \ + vi.po \ + zh_CN.po \ + zh_TW.po include ../extra.mk include ../buildsys.mk @@ -34,7 +42,7 @@ @echo Updating $(POTTEMPLATE) ... xgettext --default-domain=$(PACKAGE) --language=C \ --keyword=_ --keyword=N_ --from-code="utf-8" \ - --msgid-bugs-address="http://jira.atheme.org/" \ + --msgid-bugs-address="http://redmine.audacious-media-player.org/" \ --directory=.. --files-from=POTFILES.in -o $(POTTEMPLATE) update-po: update-pot diff -Nru audacious-plugins-2.4.4/po/pl.po audacious-plugins-3.2/po/pl.po --- audacious-plugins-2.4.4/po/pl.po 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/pl.po 2012-01-20 19:48:30.000000000 +0000 @@ -1,24 +1,26 @@ -# Polish translation for audacious -# Copyright (C) 2010, Szymon Weihs -# This file is distributed under the same license as the audacious package. -# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -# Szymon Weihs , 2010. +# Polish translation for Audacious Plugins +# Copyright (C) Audacious translators +# This file is distributed under the same license as the Audacious Plugins package. # - +# Translators: +# Piotr Sokół , 2012. +# , 2011. +# Szymon Weihs , 2011. msgid "" msgstr "" "Project-Id-Version: Audacious Plugins\n" -"Report-Msgid-Bugs-To: http://jira.atheme.org/\n" -"POT-Creation-Date: 2010-08-03 18:09-0400\n" -"PO-Revision-Date: 2010-08-16 11:48+0200\n" -"Last-Translator: Szymon Weihs \n" -"Language-Team: \n" -"Language: \n" +"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2012-01-11 09:01-0500\n" +"PO-Revision-Date: 2012-01-16 21:02+0000\n" +"Last-Translator: Piotr Sokół \n" +"Language-Team: Polish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: pl\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" -#: src/aac/libmp4.c:291 +#: src/aac/libmp4.c:256 #, c-format msgid "" "Using libfaad2-%s for decoding.\n" @@ -29,456 +31,174 @@ "Dekoder FAAD2 AAC/HE-AAC/HE-AACv2/DRM (c) Nero AG, www.nero.com\n" "Copyright (c) 2005-2006 Zespół Audacious" -#: src/aac/libmp4.c:296 +#: src/aac/libmp4.c:261 msgid "About MP4 AAC decoder plugin" msgstr "O wtyczce dekodera MP4 AAC" -#: src/adplug/adplug-xmms.cc:153 -msgid "About " -msgstr "O programie" - -#: src/adplug/adplug-xmms.cc:157 -msgid "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"This plugin is released under the terms and conditions of the GNU LGPL.\n" -"See http://www.gnu.org/licenses/lgpl.html for details.\n" -"\n" -"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et " -"al.\n" -"Linked AdPlug library version: " -msgstr "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"Ta wtyczka zostaÅ‚a wydana na zasadach licencji GNU LGPL.\n" -"Zobacz http://www.gnu.org/licenses/lgpl.html .\n" -"\n" -"Ten plugin używa biblioteki AdPlug - Copyright (C) Simon Peter, et " -"al.\n" -"PodÅ‚Ä…czona wersja biblioteki AdPlug: " - -#: src/adplug/adplug-xmms.cc:234 -msgid "AdPlug :: Configuration" -msgstr "AdPlug :: Konfiguracja" - -#: src/adplug/adplug-xmms.cc:243 src/adplug/adplug-xmms.cc:504 -#: src/cdaudio-ng/configure.c:258 src/crystalizer/crystalizer.c:127 -#: src/echo_plugin/gui.c:122 src/jack/configure.c:146 src/null/null.c:109 -#: src/stereo_plugin/stereo.c:123 src/sun/configure.c:557 -msgid "Ok" -msgstr "Ok" - -#: src/adplug/adplug-xmms.cc:253 src/alarm/interface.c:1398 -#: src/cdaudio-ng/configure.c:263 src/crystalizer/crystalizer.c:136 -#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 -#: src/modplug/gui/interface.cxx:715 src/null/null.c:110 -#: src/stereo_plugin/stereo.c:132 src/sun/configure.c:565 -msgid "Cancel" -msgstr "Anuluj" - -#: src/adplug/adplug-xmms.cc:269 src/console/configure.c:154 -#: src/modplug/gui/interface.cxx:629 src/modplug/gui/interface.cxx:888 -msgid "General" -msgstr "Ogólne" - -#: src/adplug/adplug-xmms.cc:281 -msgid "Sound quality" -msgstr "Jakość dźwiÄ™ku" - -#: src/adplug/adplug-xmms.cc:286 src/modplug/gui/interface.cxx:188 -msgid "Resolution" -msgstr "Rozdzielczość" - -#: src/adplug/adplug-xmms.cc:288 -msgid "8bit" -msgstr "8bit" - -#: src/adplug/adplug-xmms.cc:293 -msgid "16bit" -msgstr "16bit" - -#: src/adplug/adplug-xmms.cc:301 src/modplug/gui/interface.cxx:219 -msgid "Channels" -msgstr "KanaÅ‚y" - -#: src/adplug/adplug-xmms.cc:303 src/filewriter/mp3.c:934 -#: src/mpg123/mpg123.c:174 src/sid/xs_interface.c:301 -msgid "Mono" -msgstr "Mono" - -#: src/adplug/adplug-xmms.cc:308 src/filewriter/mp3.c:929 -#: src/modplug/gui/interface.cxx:205 src/mpg123/mpg123.c:174 -#: src/sid/xs_interface.c:308 -msgid "Stereo" -msgstr "Stereo" - -#: src/adplug/adplug-xmms.cc:312 -msgid "" -"Setting stereo is not recommended, unless you need to. This won't add any " -"stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!" -msgstr "" -"Nie należy wybierać opcji Stereo, jeÅ›li nie jest to konieczne. Nie poprawi " -"to wcale jakoÅ›ci dźwiÄ™ku - OPL2 obsÅ‚uguje tylko mono - ale bÄ™dzie zużywac " -"wiÄ™kszÄ… ilość mocy obliczeniowej procesora!" - -#: src/adplug/adplug-xmms.cc:320 -msgid "Frequency" -msgstr "CzÄ™stotliwość" - -#: src/adplug/adplug-xmms.cc:356 src/adplug/adplug-xmms.cc:560 -#: src/console/configure.c:156 src/gtkui/ui_manager.c:64 -#: src/skins/ui_manager.c:165 -msgid "Playback" -msgstr "Odtwarzanie" - -#: src/adplug/adplug-xmms.cc:360 -msgid "Detect songend" -msgstr "Wykryj koniec utworu" - -#: src/adplug/adplug-xmms.cc:364 -msgid "" -"If enabled, XMMS will detect a song's ending, stop it and advance in the " -"playlist. If disabled, XMMS won't take notice of a song's ending and loop it " -"all over again and again." -msgstr "" -"Gdy wÅ‚Ä…czone, XMMS wykrywa koniec utworu, zatrzymuje go i przeskakuje " -"do nastÄ™pnego na liÅ›cie. Gdy wyÅ‚Ä…czone, XMMS nie rozpoznaje zakoÅ„czenia " -"utworu i powtarza go w nieskoÅ„czoność." - -#: src/adplug/adplug-xmms.cc:375 -msgid "Formats" -msgstr "Formaty" - -#: src/adplug/adplug-xmms.cc:382 -msgid "Format selection" -msgstr "Wybór formatu" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Format" -msgstr "Format" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Extension" -msgstr "Rozszerzenie" - -#: src/adplug/adplug-xmms.cc:425 -msgid "" -"Selected file types will be recognized and played back by this plugin. " -"Deselected types will be ignored to make room for other plugins to play " -"these files." -msgstr "" -"Wybrane typy plików zostanÄ… rozpoznane i odtworzone przy pomocy tej wtyczki. " -"Odznaczone formaty zostanÄ… zignorowane, aby umożliwić innym pluginom ich " -"odtworzenie." - -#: src/adplug/adplug-xmms.cc:511 -msgid "AdPlug :: File Info" -msgstr "AdPlug :: Informacja o pliku" - -#: src/adplug/adplug-xmms.cc:533 src/amidi-plug/i_configure-fluidsynth.c:348 -msgid "Filename" -msgstr "Nazwa pliku" - -#: src/adplug/adplug-xmms.cc:537 src/skins/ui_playlist.c:390 -msgid "Title: " -msgstr "TytuÅ‚: " - -#: src/adplug/adplug-xmms.cc:538 -msgid "Author: " -msgstr "Autor: " - -#: src/adplug/adplug-xmms.cc:539 -msgid "File Type: " -msgstr "Typ pliku: " - -#: src/adplug/adplug-xmms.cc:540 -msgid "Subsongs: " -msgstr "Teksty: " - -#: src/adplug/adplug-xmms.cc:541 -msgid "Instruments: " -msgstr "Instrumenty: " - -#: src/adplug/adplug-xmms.cc:546 -msgid "Orders: " -msgstr "Kolejność: " - -#: src/adplug/adplug-xmms.cc:547 -msgid "Patterns: " -msgstr "Wzory: " - -#: src/adplug/adplug-xmms.cc:551 -msgid "Song" -msgstr "Utwór" - -#: src/adplug/adplug-xmms.cc:577 -msgid "Instrument name" -msgstr "Nazwa instrumentu" - -#: src/adplug/adplug-xmms.cc:619 -msgid "Song message" -msgstr "Informacja" - -#: src/adplug/adplug-xmms.cc:641 -msgid "Subsong selection" -msgstr "Wybór tekstu" - -#: src/adplug/adplug-xmms.cc:707 -msgid "Order: " -msgstr "Kolejność: " - -#: src/adplug/adplug-xmms.cc:708 -msgid "Pattern: " -msgstr "Wzór: " - -#: src/adplug/adplug-xmms.cc:710 -msgid "Row: " -msgstr "Linia: " - -#: src/adplug/adplug-xmms.cc:711 -msgid "Speed: " -msgstr "Szybkość: " - -#: src/adplug/adplug-xmms.cc:712 -msgid "Timer: " -msgstr "Czas: " - -#: src/adplug/adplug-xmms.cc:713 src/console/configure.c:234 -#: src/sid/xs_interface.c:354 -msgid "Hz" -msgstr "Hz" - -#: src/alarm/interface.c:34 -msgid "About XMMS Alarm" -msgstr "O wtyczce Alarm XMMS" +#: src/alarm/alarm.c:312 +msgid "About Alarm" +msgstr "O wtyczce Alarm" -#: src/alarm/interface.c:47 -msgid "XMMS Alarm" -msgstr "Alarm XMMS" - -#: src/alarm/interface.c:56 +#: src/alarm/alarm.c:313 msgid "" -"An XMMS plugin which can be used\n" -"to start playing at a certain time.\n" -"\n" -"Send all complaints to:\n" -"Adam Feakin \n" -"Daniel Stodden \n" +"A plugin that can be used to start playing at a certain time.\n" "\n" -"http://www.snika.uklinux.net/xmms-alarm/" +"Originally written by Adam Feakin and Daniel Stodden." msgstr "" -"Wtyczka XMMS, która może zostać użyta\n" -"do rozpoczÄ™cia odtwarzania o okreÅ›lonej porze.\n" -"\n" -"Wszelkie uwagi należy zgÅ‚aszać do:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" +"Wtyczka, która może być użyta do rozpoczÄ™cia odtwarzania o ustalonym czasie.\n" +"Pierwotnie stworzona przez Adam Feaking oraz Daniel Stodden." -#: src/alarm/interface.c:71 src/bluetooth/scan_gui.c:149 src/lirc/about.c:115 -#: src/modplug/gui/interface.cxx:972 src/sid/xs_about.c:214 -#: src/sid/xs_interface.c:1825 -msgid "Close" -msgstr "Zamknij" - -#: src/alarm/interface.c:101 +#: src/alarm/interface.c:33 msgid "Alarm" msgstr "Budzik" -#: src/alarm/interface.c:109 +#: src/alarm/interface.c:40 msgid "This is your wakeup call." msgstr "To jest twój sygnaÅ‚ budzenia." -#: src/alarm/interface.c:124 src/alarm/interface.c:1389 -#: src/modplug/gui/interface.cxx:703 src/sid/xs_config.c:322 +#: src/alarm/interface.c:55 src/alarm/interface.c:1213 msgid "OK" msgstr "OK" -#: src/alarm/interface.c:152 -msgid "Select Playlist" -msgstr "Wybierz listÄ™ odtwarzania" - -#: src/alarm/interface.c:196 -msgid "Sorry" -msgstr "Przepraszam" - -#: src/alarm/interface.c:204 -msgid "Warning" -msgstr "Ostrzeżenie" - -#: src/alarm/interface.c:213 -msgid "" -"For safety reasons the \"quiet\" time must be at least 65 seconds longer " -"than the fading time, it must also be more than 10 seconds. This basically " -"means that there is a bug in the code and until I find a way of really " -"fixing it this message will appear :)\n" -"\n" -"Your fading settings have NOT been saved\n" -"\n" -"--\n" -"Adam" -msgstr "" -"Z powodów bezpieczeÅ„stwa czas \"ciszy\" powinien być przynajmniej " -"o 65 sekund dÅ‚uższy od czasu wyciszania, musi być także dÅ‚uższy niż " -"10 sekund. Jest to spowodowane bugiem w kodzie wtyczki, wiÄ™c do czasu " -"jego naprawienia bÄ™dzie pojawiaÅ‚ siÄ™ ten komunikat :)" -"\n" -"Twoje ustawienia wyciszania NIE zostaÅ‚y zapisane\n" -"\n" -"--\n" -"Adam" - -#: src/alarm/interface.c:229 -msgid "Oh Well" -msgstr "No dobrze... :)" - -#: src/alarm/interface.c:388 +#: src/alarm/interface.c:214 msgid "Alarm Settings" msgstr "Ustawienia budzika" -#: src/alarm/interface.c:404 src/alarm/interface.c:576 -#: src/alarm/interface.c:948 +#: src/alarm/interface.c:229 src/alarm/interface.c:401 +#: src/alarm/interface.c:773 msgid "Time" msgstr "Czas" -#: src/alarm/interface.c:445 +#: src/alarm/interface.c:270 msgid "hours" msgstr "godziny" -#: src/alarm/interface.c:506 +#: src/alarm/interface.c:331 msgid "h" msgstr "h" -#: src/alarm/interface.c:536 +#: src/alarm/interface.c:361 msgid "minutes" msgstr "minuty" -#: src/alarm/interface.c:554 +#: src/alarm/interface.c:379 msgid "Quiet after:" msgstr "Wycisz po:" -#: src/alarm/interface.c:564 +#: src/alarm/interface.c:389 msgid "Alarm at (default):" msgstr "Alarm o (domyÅ›lnie):" -#: src/alarm/interface.c:584 +#: src/alarm/interface.c:409 msgid "Choose the days for the alarm to come on" msgstr "Wybierz dni, w których budzik zostanie uruchomiony" -#: src/alarm/interface.c:612 src/alarm/interface.c:660 -#: src/alarm/interface.c:708 src/alarm/interface.c:756 -#: src/alarm/interface.c:804 src/alarm/interface.c:852 -#: src/alarm/interface.c:900 src/OSS/configure.c:166 -#: src/skins/ui_manager.c:439 src/skins/ui_manager.c:460 +#: src/alarm/interface.c:437 src/alarm/interface.c:485 +#: src/alarm/interface.c:533 src/alarm/interface.c:581 +#: src/alarm/interface.c:629 src/alarm/interface.c:677 +#: src/alarm/interface.c:725 src/bs2b/plugin.c:198 src/OSS/configure.c:153 +#: src/skins/ui_equalizer.c:1104 src/skins/ui_manager.c:447 +#: src/skins/ui_manager.c:468 msgid "Default" msgstr "DomyÅ›lnie" -#: src/alarm/interface.c:938 +#: src/alarm/interface.c:763 msgid "Day" msgstr "DzieÅ„" -#: src/alarm/interface.c:958 +#: src/alarm/interface.c:783 msgid "Tuesday" msgstr "Wtorek" -#: src/alarm/interface.c:969 +#: src/alarm/interface.c:794 msgid "Wednesday" msgstr "Åšroda" -#: src/alarm/interface.c:980 +#: src/alarm/interface.c:805 msgid "Thursday" msgstr "Czwartek" -#: src/alarm/interface.c:991 +#: src/alarm/interface.c:816 msgid "Friday" msgstr "PiÄ…tek" -#: src/alarm/interface.c:1002 +#: src/alarm/interface.c:827 msgid "Saturday" msgstr "Sobota" -#: src/alarm/interface.c:1013 +#: src/alarm/interface.c:838 msgid "Sunday" msgstr "Niedziela" -#: src/alarm/interface.c:1023 +#: src/alarm/interface.c:848 msgid "Monday" msgstr "PoniedziaÅ‚ek" -#: src/alarm/interface.c:1034 +#: src/alarm/interface.c:859 msgid "Days" msgstr "Dni" -#: src/alarm/interface.c:1050 +#: src/alarm/interface.c:875 msgid "Fading" msgstr "Czas przejÅ›cia" -#: src/alarm/interface.c:1087 src/sid/xs_interface.c:921 -#: src/sid/xs_interface.c:975 src/sid/xs_interface.c:1155 +#: src/alarm/interface.c:912 msgid "seconds" msgstr "sekundy" -#: src/alarm/interface.c:1095 src/alarm/interface.c:1211 -#: src/modplug/gui/interface.cxx:550 +#: src/alarm/interface.c:920 src/alarm/interface.c:1035 msgid "Volume" msgstr "GÅ‚oÅ›ność" -#: src/alarm/interface.c:1121 +#: src/alarm/interface.c:946 msgid "Current" msgstr "Aktualny" -#: src/alarm/interface.c:1128 -msgid "reset to current output volume" -msgstr "zresetuj do bieżącej gÅ‚oÅ›noÅ›ci wyjÅ›cia" - -#: src/alarm/interface.c:1130 +#: src/alarm/interface.c:954 msgid "Start at" msgstr "Rozpocznij od" -#: src/alarm/interface.c:1158 src/alarm/interface.c:1202 +#: src/alarm/interface.c:982 src/alarm/interface.c:1026 msgid "%" msgstr "%" -#: src/alarm/interface.c:1174 +#: src/alarm/interface.c:998 msgid "Final" msgstr "KoÅ„cowa gÅ‚oÅ›ność" -#: src/alarm/interface.c:1227 +#: src/alarm/interface.c:1051 msgid "Additional Command" msgstr "Dodatkowe komendy" -#: src/alarm/interface.c:1253 +#: src/alarm/interface.c:1077 msgid "enable" msgstr "wÅ‚Ä…cz" -#: src/alarm/interface.c:1261 +#: src/alarm/interface.c:1085 msgid "Playlist (optional)" msgstr "Playlista (opcjonalnie)" -#: src/alarm/interface.c:1287 +#: src/alarm/interface.c:1111 msgid "Browse..." msgstr "PrzeglÄ…daj..." -#: src/alarm/interface.c:1295 src/alarm/interface.c:1460 +#: src/alarm/interface.c:1119 src/alarm/interface.c:1283 msgid "Reminder" msgstr "Przypominacz" -#: src/alarm/interface.c:1312 +#: src/alarm/interface.c:1136 msgid "Use reminder" msgstr "Użyj przypominacza" -#: src/alarm/interface.c:1328 src/sndstretch/sndstretch_xmms.c:394 +#: src/alarm/interface.c:1152 src/sndstretch/sndstretch_xmms.c:358 msgid "Options" msgstr "Opcje" -#: src/alarm/interface.c:1336 +#: src/alarm/interface.c:1160 msgid "What do these options mean?" msgstr "Co oznaczajÄ… te opcje?" -#: src/alarm/interface.c:1364 +#: src/alarm/interface.c:1188 msgid "" "\n" "Time\n" @@ -583,24 +303,29 @@ " Wpisz w podane pole treść komunkatu i zaznacz odpowiedniÄ…\n" " opcjÄ™, jeÅ›li chcesz, aby byÅ‚o ono pokazywane..\n" -#: src/alarm/interface.c:1366 src/gtkui/ui_manager.c:165 -#: src/skins/ui_manager.c:371 +#: src/alarm/interface.c:1190 src/skins/ui_manager.c:382 msgid "Help" msgstr "Pomoc" -#: src/alarm/interface.c:1468 +#: src/alarm/interface.c:1222 src/cdaudio-ng/configure.c:249 +#: src/crystalizer/crystalizer.c:130 src/echo_plugin/gui.c:125 +#: src/jack/configure.c:148 src/null/null.c:108 src/stereo_plugin/stereo.c:125 +msgid "Cancel" +msgstr "Anuluj" + +#: src/alarm/interface.c:1290 msgid "Your reminder for today is.." msgstr "Powiadomienie na dzisiaj to..." -#: src/alarm/interface.c:1493 +#: src/alarm/interface.c:1315 msgid "Thankyou" msgstr "DziÄ™kujÄ™" -#: src/alsa/config.c:209 +#: src/alsa/config.c:210 msgid "Default PCM device" msgstr "DomyÅ›lne urzÄ…dzenie PCM" -#: src/alsa/config.c:234 +#: src/alsa/config.c:235 msgid "Default mixer device" msgstr "DomyÅ›lne urzÄ…dzenie miksera" @@ -612,7 +337,7 @@ msgid "PCM device:" msgstr "UrzÄ…dzenie PCM:" -#: src/alsa/config.c:447 src/OSS/configure.c:256 src/sun/configure.c:218 +#: src/alsa/config.c:447 src/OSS/configure.c:237 msgid "Mixer device:" msgstr "UrzÄ…dzenie miksera:" @@ -624,494 +349,339 @@ msgid "Work around drain hangup" msgstr "ObejÅ›cie rozÅ‚Ä…czania" -#: src/alsa/plugin.c:61 +#: src/alsa/plugin.c:59 msgid "About ALSA Output Plugin" msgstr "O wtyczce wyjÅ›ciowej ALSA" -#: src/alsa/plugin.c:83 +#: src/alsa/plugin.c:81 msgid "ALSA error" msgstr "BÅ‚Ä…d ALSA" -#: src/amidi-plug/amidi-plug.c:323 +#: src/amidi-plug/amidi-plug.c:326 msgid "" "You have not selected any sequencer ports for MIDI playback. You can do so " "in the MIDI plugin preferences." msgstr "" -"Nie wybraÅ‚eÅ› żadnych portów sequencera dla odtwarzania MIDI. Możesz to " +"Nie wybraÅ‚eÅ› żadnych portów sekwencera dla odtwarzania MIDI. Możesz to " "zrobić w opcjach wtyczki MIDI." #: src/amidi-plug/backend-alsa/b-alsa.c:35 msgid "ALSA Backend " -msgstr "" +msgstr "ALSA Backend" #: src/amidi-plug/backend-alsa/b-alsa.c:37 msgid "" -"This backend sends MIDI events to a group of user-chosen ALSA sequencer " -"ports. The ALSA sequencer interface is very versatile, it can provide ports " -"for audio cards hardware synthesizers (i.e. emu10k1) but also for software " -"synths, external devices, etc.\n" -"This backend does not produce audio, MIDI events are handled directly from " -"devices/programs behind the ALSA ports; in example, MIDI events sent to the " -"hardware synth will be directly played.\n" +"This backend sends MIDI events to a group of user-chosen ALSA sequencer ports. The ALSA sequencer interface is very versatile, it can provide ports for audio cards hardware synthesizers (i.e. emu10k1) but also for software synths, external devices, etc.\n" +"This backend does not produce audio, MIDI events are handled directly from devices/programs behind the ALSA ports; in example, MIDI events sent to the hardware synth will be directly played.\n" "Backend written by Giacomo Lozito." msgstr "" +"Ten backend wysyÅ‚a zdarzenia MIDI do grupy wybranych przez użytkownika portów sekwencera ALSA. Interfejs sekwencera ALSA jest bardzo wszechstronny, może on dostarczyć porty dla sprzÄ™towych syntezatorów kart dźwiÄ™kowych (np. emu10k1), a także dla programowych syntezatorów, zewnÄ™trznych urzÄ…dzeÅ„ itp.\n" +"Ten backend nie wytwarza dźwiÄ™ku, zdarzenia MIDI sÄ… obsÅ‚ugiwane bezpoÅ›rednio przez urzÄ…dzenia/programy poprzez porty ALSA; na przykÅ‚ad, zdarzenia MIDI wysÅ‚ane do sprzÄ™towego syntezatora zostanÄ… bezpoÅ›rednio odtworzone.\n" +"Backend napisany przez Giacomo Lozito." -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:41 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 msgid "FluidSynth Backend " -msgstr "" +msgstr "FluidSynth Backend" -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:43 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 msgid "" -"This backend produces audio by sending MIDI events to FluidSynth, a real-" -"time software synthesizer based on the SoundFont2 specification (www." -"fluidsynth.org).\n" -"Produced audio can be manipulated via player effect plugins and is processed " -"by chosen ouput plugin.\n" +"This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" "Backend written by Giacomo Lozito." msgstr "" +"Ten backend wytwarza dźwiÄ™k poprzez wysyÅ‚anie zdarzeÅ„ MIDI do FluidSynth, programowego syntezatora czasu rzeczywistego opartego na specyfikacji SoundFont2 (www.fluidsynth.org).\n" +"Wytworzony dźwiÄ™k może być modyfikowany przez wtyczki efektów odtwarzacza i jest przetwarzany przez wybranÄ… wtyczkÄ™ wyjÅ›ciowÄ….\n" +"Backend napisany przez Giacomo Lozito." -#: src/amidi-plug/i_configure-alsa.c:221 +#: src/amidi-plug/i_configure-alsa.c:228 msgid "ALSA BACKEND CONFIGURATION" -msgstr "" +msgstr "KONFIGURACJA BACKEND'U ALSA" -#: src/amidi-plug/i_configure-alsa.c:326 +#: src/amidi-plug/i_configure-alsa.c:331 msgid "Port" -msgstr "" +msgstr "Port" -#: src/amidi-plug/i_configure-alsa.c:328 +#: src/amidi-plug/i_configure-alsa.c:333 msgid "Client name" -msgstr "" +msgstr "Nazwa klienta" -#: src/amidi-plug/i_configure-alsa.c:330 +#: src/amidi-plug/i_configure-alsa.c:335 msgid "Port name" -msgstr "" +msgstr "Nazwa portu" -#: src/amidi-plug/i_configure-alsa.c:341 +#: src/amidi-plug/i_configure-alsa.c:346 msgid "ALSA output ports" -msgstr "" +msgstr "Porty wyjÅ›ciowe ALSA" -#: src/amidi-plug/i_configure-alsa.c:394 +#: src/amidi-plug/i_configure-alsa.c:399 msgid "Soundcard: " -msgstr "" +msgstr "Karta dźwiÄ™kowa: " -#: src/amidi-plug/i_configure-alsa.c:396 +#: src/amidi-plug/i_configure-alsa.c:401 msgid "Mixer control: " -msgstr "" +msgstr "Kontroler miksera: " -#: src/amidi-plug/i_configure-alsa.c:408 +#: src/amidi-plug/i_configure-alsa.c:413 msgid "Mixer settings" -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:421 -msgid "" -"* Select ALSA output ports *\n" -"MIDI events will be sent to the ports selected here. In example, if your " -"audio card provides a hardware synth and you want to play MIDI with it, " -"you'll probably want to select the wavetable synthesizer ports." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:426 -msgid "" -"* Select ALSA mixer card *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volumeslider will " -"manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:433 -msgid "" -"* Select ALSA mixer control *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volume slider " -"will manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" +msgstr "Ustawienia miksera" -#: src/amidi-plug/i_configure-alsa.c:444 +#: src/amidi-plug/i_configure-alsa.c:429 msgid "ALSA Backend not loaded or not available" -msgstr "" +msgstr "Backend ALSA niezaÅ‚adowany lub niedostÄ™pny" -#: src/amidi-plug/i_configure-alsa.c:463 +#: src/amidi-plug/i_configure-alsa.c:448 msgid "" "ALSA\n" "backend" msgstr "" +"Backend\n" +"ALSA" -#: src/amidi-plug/i_configure-ap.c:56 +#: src/amidi-plug/i_configure-ap.c:59 msgid "AMIDI-Plug - backend information" -msgstr "" +msgstr "AMIDI-Plug - informacje o backendzie" -#: src/amidi-plug/i_configure-ap.c:194 +#: src/amidi-plug/i_configure-ap.c:196 msgid "AMIDI-PLUG PREFERENCES" -msgstr "" +msgstr "PREFERENCJE AMIDI-PLUG" -#: src/amidi-plug/i_configure-ap.c:221 +#: src/amidi-plug/i_configure-ap.c:223 msgid "Backend selection" -msgstr "" +msgstr "Wybór backendu" -#: src/amidi-plug/i_configure-ap.c:225 +#: src/amidi-plug/i_configure-ap.c:227 msgid "Available backends" -msgstr "" +msgstr "DostÄ™pne backendy" -#: src/amidi-plug/i_configure-ap.c:255 +#: src/amidi-plug/i_configure-ap.c:257 msgid "Playback settings" -msgstr "" +msgstr "Ustawienia odtwarzania" -#: src/amidi-plug/i_configure-ap.c:260 +#: src/amidi-plug/i_configure-ap.c:262 msgid "Transpose: " -msgstr "" +msgstr "Transpozycja: " -#: src/amidi-plug/i_configure-ap.c:269 +#: src/amidi-plug/i_configure-ap.c:271 msgid "Drum shift: " -msgstr "" +msgstr "Zmiany bÄ™bnów: " -#: src/amidi-plug/i_configure-ap.c:287 +#: src/amidi-plug/i_configure-ap.c:289 msgid "Advanced settings" -msgstr "" +msgstr "Zaawansowane ustawienia" -#: src/amidi-plug/i_configure-ap.c:291 +#: src/amidi-plug/i_configure-ap.c:293 msgid "pre-calculate length of MIDI files in playlist" -msgstr "" +msgstr "oblicz wstÄ™pnie dÅ‚ugoÅ›ci plików MIDI z playlisty" -#: src/amidi-plug/i_configure-ap.c:296 +#: src/amidi-plug/i_configure-ap.c:298 msgid "extract comments from MIDI file (if available)" -msgstr "" +msgstr "wyodrÄ™bnij komentarze z pliku MIDI (jeÅ›li dostÄ™pne)" -#: src/amidi-plug/i_configure-ap.c:301 +#: src/amidi-plug/i_configure-ap.c:303 msgid "extract lyrics from MIDI file (if available)" -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:320 -msgid "" -"* Backend selection *\n" -"AMIDI-Plug works with backends, in a modular fashion; here you should select " -"your backend; that is, the way MIDI events are going to be handled and " -"played.\n" -"If you have a hardware synthesizer on your audio card, and ALSA supports it, " -"you'll want to use the ALSA backend. It can also be used with anything that " -"provides an interface to the ALSA sequencer, including software synths or " -"external devices.\n" -"If you want to rely on a software synthesizer and/or want to pipe audio into " -"effect and output plugins of the player you'll want to use the good " -"FluidSynth backend.\n" -"Press the info button to read specific information about each backend." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:331 -msgid "" -"* Transpose function *\n" -"This option allows you to play the midi file transposed in a different key, " -"by shifting of the desired number of semitones all its notes (excepting " -"those on midi channel 10, reserved for percussions). Especially useful if " -"you wish to sing or play along with another instrument." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:337 -msgid "" -"* Drumshift function *\n" -"This option allows you to shift notes on midi channel 10 (the standard " -"percussions channel) of the desired number of semitones. This results in " -"different drumset and percussions being used during midi playback, so if you " -"wish to enhance (or reduce, or alter) percussion sounds, try to play with " -"this value." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:344 -msgid "" -"* Pre-calculate MIDI length *\n" -"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as " -"soon as the player requests it, instead of doing that only when the MIDI " -"file is being played. In example, MIDI length will be calculated straight " -"after adding MIDI files in a playlist. Disable this option if you want " -"faster playlist loading (when a lot of MIDI files are added), enable it to " -"display more information in the playlist straight after loading." -msgstr "" +msgstr "wyodrÄ™bnij sÅ‚owa piosenki z pliku MIDI (jeÅ›li dostÄ™pne)" -#: src/amidi-plug/i_configure-ap.c:353 -msgid "" -"* Extract comments from MIDI files *\n" -"Some MIDI files contain text comments (author, copyright, instrument notes, " -"etc.). If this option is enabled, AMIDI-Plug will extract and display " -"comments (if available) in the file information dialog." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:358 -msgid "" -"* Extract lyrics from MIDI files *\n" -"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug " -"will extract and display song lyrics (if available) in the file information " -"dialog." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:375 +#: src/amidi-plug/i_configure-ap.c:333 msgid "" "AMIDI\n" "Plug" msgstr "" +"AMIDI\n" +"Plug" -#: src/amidi-plug/i_configure.c:73 +#: src/amidi-plug/i_configure.c:76 msgid "AMIDI-Plug - select file" -msgstr "" +msgstr "AMIDI-Plug - wybierz plik" -#: src/amidi-plug/i_configure.c:126 +#: src/amidi-plug/i_configure.c:129 msgid "AMIDI-Plug - configuration" -msgstr "" +msgstr "AMIDI-Plug - konfiguracja" -#: src/amidi-plug/i_configure-fluidsynth.c:52 +#: src/amidi-plug/i_configure-fluidsynth.c:55 msgid "AMIDI-Plug - select SoundFont file" -msgstr "" +msgstr "AMIDI-Plug - wybierz plik SoundFont" -#: src/amidi-plug/i_configure-fluidsynth.c:268 +#: src/amidi-plug/i_configure-fluidsynth.c:270 msgid "FLUIDSYNTH BACKEND CONFIGURATION" -msgstr "" +msgstr "KONFIGURACJA BACKEND'U FLUIDSYNTH" -#: src/amidi-plug/i_configure-fluidsynth.c:316 +#: src/amidi-plug/i_configure-fluidsynth.c:313 msgid "SoundFont settings" -msgstr "" +msgstr "Ustawienia SoundFont" + +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Nazwa pliku" -#: src/amidi-plug/i_configure-fluidsynth.c:352 +#: src/amidi-plug/i_configure-fluidsynth.c:349 msgid "Size (bytes)" -msgstr "" +msgstr "Wielkość (w bajtach)" -#: src/amidi-plug/i_configure-fluidsynth.c:401 +#: src/amidi-plug/i_configure-fluidsynth.c:398 msgid "Load SF on player start" -msgstr "" +msgstr "ZaÅ‚aduj SF przy starcie odtwarzacza" -#: src/amidi-plug/i_configure-fluidsynth.c:405 +#: src/amidi-plug/i_configure-fluidsynth.c:402 msgid "Load SF on first midifile play" -msgstr "" +msgstr "ZaÅ‚aduj SF przy pierwszym odtwarzaniu pliku mid" -#: src/amidi-plug/i_configure-fluidsynth.c:420 +#: src/amidi-plug/i_configure-fluidsynth.c:417 msgid "Synthesizer settings" -msgstr "" +msgstr "Ustawienia syntezatora" -#: src/amidi-plug/i_configure-fluidsynth.c:429 +#: src/amidi-plug/i_configure-fluidsynth.c:426 msgid "gain" -msgstr "" +msgstr "wzmocnienie" -#: src/amidi-plug/i_configure-fluidsynth.c:435 -#: src/amidi-plug/i_configure-fluidsynth.c:463 -#: src/amidi-plug/i_configure-fluidsynth.c:491 -#: src/amidi-plug/i_configure-fluidsynth.c:522 +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 msgid "use default" -msgstr "" +msgstr "użyj domyÅ›lnej" -#: src/amidi-plug/i_configure-fluidsynth.c:438 -#: src/amidi-plug/i_configure-fluidsynth.c:466 +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 msgid "value:" -msgstr "" +msgstr "wartość:" -#: src/amidi-plug/i_configure-fluidsynth.c:457 +#: src/amidi-plug/i_configure-fluidsynth.c:454 msgid "poliphony" -msgstr "" +msgstr "polifonia" -#: src/amidi-plug/i_configure-fluidsynth.c:485 +#: src/amidi-plug/i_configure-fluidsynth.c:482 msgid "reverb" -msgstr "" +msgstr "pogÅ‚os" -#: src/amidi-plug/i_configure-fluidsynth.c:494 -#: src/amidi-plug/i_configure-fluidsynth.c:525 +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 msgid "yes" -msgstr "" +msgstr "tak" -#: src/amidi-plug/i_configure-fluidsynth.c:496 -#: src/amidi-plug/i_configure-fluidsynth.c:527 +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 msgid "no" -msgstr "" +msgstr "nie" -#: src/amidi-plug/i_configure-fluidsynth.c:516 +#: src/amidi-plug/i_configure-fluidsynth.c:513 msgid "chorus" -msgstr "" +msgstr "chór" -#: src/amidi-plug/i_configure-fluidsynth.c:547 +#: src/amidi-plug/i_configure-fluidsynth.c:544 msgid "sample rate" -msgstr "" +msgstr "czÄ™stotliwość próbkowania" -#: src/amidi-plug/i_configure-fluidsynth.c:553 +#: src/amidi-plug/i_configure-fluidsynth.c:550 msgid "22050 Hz " -msgstr "" +msgstr "22050 Hz" -#: src/amidi-plug/i_configure-fluidsynth.c:556 +#: src/amidi-plug/i_configure-fluidsynth.c:553 msgid "44100 Hz " -msgstr "" +msgstr "44100 Hz" -#: src/amidi-plug/i_configure-fluidsynth.c:559 +#: src/amidi-plug/i_configure-fluidsynth.c:556 msgid "96000 Hz " -msgstr "" +msgstr "96000 Hz" -#: src/amidi-plug/i_configure-fluidsynth.c:562 +#: src/amidi-plug/i_configure-fluidsynth.c:559 msgid "custom " -msgstr "" +msgstr "wÅ‚asna" -#: src/amidi-plug/i_configure-fluidsynth.c:571 +#: src/amidi-plug/i_configure-fluidsynth.c:568 msgid "Hz " -msgstr "" +msgstr "Hz" #: src/amidi-plug/i_configure-fluidsynth.c:621 -msgid "" -"* Select SoundFont files *\n" -"In order to play MIDI with FluidSynth, you need to specify at least one " -"valid SoundFont file here (use absolute paths). The loading order is from " -"the top (first) to the bottom (last)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:626 -msgid "" -"* Load SoundFont on player start *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:634 -msgid "" -"* Load SoundFont on first midifile play *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:642 -msgid "" -"* Synthesizer gain *\n" -"From FluidSynth docs: the gain is applied to the final or master output of " -"the synthesizer; it is set to a low value by default to avoid the saturation " -"of the output when random MIDI files are played." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:647 -msgid "" -"* Synthesizer polyphony *\n" -"From FluidSynth docs: the polyphony defines how many voices can be played in " -"parallel; the number of voices is not necessarily equivalent to the number " -"of notes played simultaneously; indeed, when a note is struck on a specific " -"MIDI channel, the preset on that channel may create several voices, for " -"example, one for the left audio channel and one for the right audio " -"channels; the number of voices activated depends on the number of instrument " -"zones that fall in the correspond to the velocity and key of the played note." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:657 -#: src/amidi-plug/i_configure-fluidsynth.c:663 -msgid "" -"* Synthesizer reverb *\n" -"From FluidSynth docs: when set to \"yes\" the reverb effects module is " -"activated; note that when the reverb module is active, the amount of signal " -"sent to the reverb module depends on the \"reverb send\" generator defined " -"in the SoundFont." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:669 -#: src/amidi-plug/i_configure-fluidsynth.c:675 -msgid "" -"* Synthesizer chorus *\n" -"From FluidSynth docs: when set to \"yes\" the chorus effects module is " -"activated; note that when the chorus module is active, the amount of signal " -"sent to the chorus module depends on the \"chorus send\" generator defined " -"in the SoundFont." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:681 -#: src/amidi-plug/i_configure-fluidsynth.c:685 -#: src/amidi-plug/i_configure-fluidsynth.c:689 -#: src/amidi-plug/i_configure-fluidsynth.c:693 -msgid "" -"* Synthesizer samplerate *\n" -"The sample rate of the audio generated by the synthesizer. You can also " -"specify a custom value in the interval 22050Hz-96000Hz." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:701 msgid "FluidSynth Backend not loaded or not available" -msgstr "" +msgstr "Backend FluidSynth niezaÅ‚adowany lub niedostÄ™pny" -#: src/amidi-plug/i_configure-fluidsynth.c:720 +#: src/amidi-plug/i_configure-fluidsynth.c:640 msgid "" "FluidSynth\n" "backend" msgstr "" +"Backend\n" +"FluidSynth" #: src/amidi-plug/i_configure-timidity.c:39 msgid "TIMIDITY BACKEND CONFIGURATION" -msgstr "" +msgstr "KONFIGURACJA BACKEND'U TIMIDITY" #: src/amidi-plug/i_configure-timidity.c:64 msgid "TiMidity Backend not loaded or not available" -msgstr "" +msgstr "Backend TiMidity niezaÅ‚adowany lub niedostÄ™pny" #: src/amidi-plug/i_configure-timidity.c:83 msgid "" "TiMidity\n" "backend" msgstr "" +"Backend\n" +"TiMidity" -#: src/amidi-plug/i_fileinfo.c:169 src/bluetooth/gui.c:271 -#: src/sid/xs_interface.c:1769 +#: src/amidi-plug/i_fileinfo.c:169 msgid "Name:" -msgstr "" +msgstr "Nazwa:" #: src/amidi-plug/i_fileinfo.c:193 msgid " MIDI Info " -msgstr "" +msgstr " Info MIDI " #: src/amidi-plug/i_fileinfo.c:205 msgid "Format:" -msgstr "" +msgstr "Format:" #: src/amidi-plug/i_fileinfo.c:208 msgid "Length (msec):" -msgstr "" +msgstr "DÅ‚ugość (msek):" #: src/amidi-plug/i_fileinfo.c:211 msgid "Num of Tracks:" -msgstr "" +msgstr "Liczba utworów" #: src/amidi-plug/i_fileinfo.c:216 msgid "variable" -msgstr "" +msgstr "zmienna" #: src/amidi-plug/i_fileinfo.c:217 msgid "BPM:" -msgstr "" +msgstr "BPM:" #: src/amidi-plug/i_fileinfo.c:223 msgid "BPM (wavg):" -msgstr "" +msgstr "BPM (wavg):" #: src/amidi-plug/i_fileinfo.c:226 msgid "Time Div:" -msgstr "" +msgstr "PodziaÅ‚ czasu:" #: src/amidi-plug/i_fileinfo.c:237 msgid " MIDI Comments and Lyrics " -msgstr "" +msgstr " Komentarze i teksty piosenek MIDI " #: src/amidi-plug/i_fileinfo.c:288 msgid "* no comments available in this MIDI file *" -msgstr "" +msgstr "* brak dostÄ™pnych komentarzy w tym pliku MIDI" #: src/amidi-plug/i_fileinfo.c:301 msgid "* no lyrics available in this MIDI file *" -msgstr "" +msgstr "* brak dostÄ™pnych tekstów piosenek w tym pliku MIDI" #: src/amidi-plug/i_fileinfo.c:349 msgid " (invalid UTF-8)" -msgstr "" +msgstr " (invalid UTF-8)" #: src/amidi-plug/i_utils.c:43 msgid "AMIDI-Plug - about" -msgstr "" +msgstr "O wtyczce AMIDI-Plug" #: src/amidi-plug/i_utils.c:68 msgid "" "\n" "AMIDI-Plug " msgstr "" +"\n" +"AMIDI-Plug " #: src/amidi-plug/i_utils.c:69 msgid "" @@ -1137,6 +707,27 @@ "for the good help with alpha testing\n" "\n" msgstr "" +"\n" +"moduÅ‚owy odtwarzacz muzyczny MIDI\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"stworzony przez Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"\n" +"specjalne podziÄ™kowania dla...\n" +"\n" +"Clemens Ladisch oraz Jaroslav Kysela\n" +"za ich fajne programy aplaymidi i amixer; byÅ‚y one\n" +"bardzo przydatne, równolegle z dokumentacjÄ… alsa-lib,\n" +"w nauce ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"za Å‚adne logo z klawiaturÄ… midi\n" +"\n" +"Tony Vroon\n" +"za dobrÄ… pomoc w testowaniu alfa\n" +"\n" #: src/aosd/aosd_style.c:75 msgid "Rectangle" @@ -1154,241 +745,237 @@ msgid "None" msgstr "Brak" -#: src/aosd/aosd_trigger.c:77 +#: src/aosd/aosd_trigger.c:78 msgid "Playback Start" msgstr "RozpoczÄ™cie odtwarzania" -#: src/aosd/aosd_trigger.c:78 +#: src/aosd/aosd_trigger.c:79 msgid "Triggers OSD when a playlist entry is played." msgstr "WyÅ›wietla OSD, gdy zostanie rozpoczÄ™te odtwarzanie utworu na liÅ›cie." -#: src/aosd/aosd_trigger.c:82 +#: src/aosd/aosd_trigger.c:83 msgid "Title Change" msgstr "Zmiana tytuÅ‚u" -#: src/aosd/aosd_trigger.c:83 +#: src/aosd/aosd_trigger.c:84 msgid "" "Triggers OSD when, during playback, the song title changes but the filename " "is the same. This is mostly useful to display title changes in internet " "streams." msgstr "" "WyÅ›wietla OSD, gdy podczas odtwarzania tytuÅ‚ piosenki zmieni siÄ™, ale plik " -"pozostanie ten sam. Zazwyczaj przydaje siÄ™ to przy sÅ‚uchaniu muzyki " -"ze strumieni internetowych." +"pozostanie ten sam. Zazwyczaj przydaje siÄ™ to przy sÅ‚uchaniu muzyki ze " +"strumieni internetowych." -#: src/aosd/aosd_trigger.c:89 +#: src/aosd/aosd_trigger.c:90 msgid "Volume Change" msgstr "Zmiana gÅ‚oÅ›noÅ›ci" -#: src/aosd/aosd_trigger.c:90 +#: src/aosd/aosd_trigger.c:91 msgid "Triggers OSD when volume is changed." msgstr "WyÅ›wietla OSD, gdy nastÄ…pi zmiana gÅ‚oÅ›noÅ›ci" -#: src/aosd/aosd_trigger.c:94 +#: src/aosd/aosd_trigger.c:95 msgid "Pause On" msgstr "Pauza WÅ‚." -#: src/aosd/aosd_trigger.c:95 +#: src/aosd/aosd_trigger.c:96 msgid "Triggers OSD when playback is paused." msgstr "WyÅ›wietla OSD, gdy odtwarzanie zostanie wstrzymane." -#: src/aosd/aosd_trigger.c:99 +#: src/aosd/aosd_trigger.c:100 msgid "Pause Off" -msgstr "Pauza WyÅ‚." +msgstr "Pauza wyÅ‚." -#: src/aosd/aosd_trigger.c:100 +#: src/aosd/aosd_trigger.c:101 msgid "Triggers OSD when playback is unpaused." msgstr "WyÅ›wietla OSD, gdy odtwarzanie zostanie wznowione." -#: src/aosd/aosd_ui.c:168 +#: src/aosd/aosd_ui.c:179 msgid "Placement" msgstr "Rozmieszczenie" -#: src/aosd/aosd_ui.c:202 +#: src/aosd/aosd_ui.c:218 msgid "Relative X offset:" msgstr "PrzesuniÄ™cie wzdÅ‚uż osi X:" -#: src/aosd/aosd_ui.c:211 +#: src/aosd/aosd_ui.c:227 msgid "Relative Y offset:" msgstr "PrzesuniÄ™cie wzdÅ‚uż osi Y:" -#: src/aosd/aosd_ui.c:220 +#: src/aosd/aosd_ui.c:236 msgid "Max OSD width:" msgstr "Maksymalna szerokość OSD:" -#: src/aosd/aosd_ui.c:233 +#: src/aosd/aosd_ui.c:249 msgid "Multi-Monitor options" msgstr "Ustawienia wielu monitorów" -#: src/aosd/aosd_ui.c:237 +#: src/aosd/aosd_ui.c:253 msgid "Display OSD using:" msgstr "WyÅ›wietl OSD używajÄ…c:" -#: src/aosd/aosd_ui.c:239 +#: src/aosd/aosd_ui.c:264 msgid "all monitors" msgstr "wszystkie" -#: src/aosd/aosd_ui.c:242 +#: src/aosd/aosd_ui.c:267 #, c-format msgid "monitor %i" msgstr "monitor %i" -#: src/aosd/aosd_ui.c:295 +#: src/aosd/aosd_ui.c:322 msgid "Timing (ms)" msgstr "Czas (ms)" -#: src/aosd/aosd_ui.c:300 +#: src/aosd/aosd_ui.c:327 msgid "Display:" msgstr "WyÅ›wietlanie:" -#: src/aosd/aosd_ui.c:305 +#: src/aosd/aosd_ui.c:332 msgid "Fade in:" msgstr "Pojawianie:" -#: src/aosd/aosd_ui.c:310 +#: src/aosd/aosd_ui.c:337 msgid "Fade out:" msgstr "Zanikanie:" -#: src/aosd/aosd_ui.c:391 +#: src/aosd/aosd_ui.c:418 msgid "Fonts" msgstr "Czcionki" -#: src/aosd/aosd_ui.c:399 +#: src/aosd/aosd_ui.c:426 #, c-format msgid "Font %i:" msgstr "Czcionka %i:" -#: src/aosd/aosd_ui.c:416 +#: src/aosd/aosd_ui.c:443 msgid "Shadow" msgstr "CieÅ„" -#: src/aosd/aosd_ui.c:451 +#: src/aosd/aosd_ui.c:478 msgid "Internationalization" msgstr "JÄ™zyki" -#: src/aosd/aosd_ui.c:457 +#: src/aosd/aosd_ui.c:484 msgid "Disable UTF-8 conversion of text (in aosd)" msgstr "WyÅ‚Ä…cz konwersjÄ™ tekstu na UTF-8 (w aosd)" -#: src/aosd/aosd_ui.c:475 +#: src/aosd/aosd_ui.c:502 msgid "Select Skin File" msgstr "Wybierz plik skórki" -#: src/aosd/aosd_ui.c:586 +#: src/aosd/aosd_ui.c:613 msgid "Render Style" msgstr "Renderuj styl" -#: src/aosd/aosd_ui.c:602 +#: src/aosd/aosd_ui.c:629 msgid "Colors" msgstr "Kolory" -#: src/aosd/aosd_ui.c:615 +#: src/aosd/aosd_ui.c:642 #, c-format msgid "Color %i:" msgstr "Kolor %i:" -#: src/aosd/aosd_ui.c:635 +#: src/aosd/aosd_ui.c:662 msgid "Custom Skin" msgstr "WÅ‚asna skórka" -#: src/aosd/aosd_ui.c:641 +#: src/aosd/aosd_ui.c:668 msgid "Skin file:" msgstr "Plik skórki:" -#: src/aosd/aosd_ui.c:644 src/sid/xs_interface.c:1044 -#: src/sid/xs_interface.c:1236 src/sid/xs_interface.c:1292 +#: src/aosd/aosd_ui.c:671 msgid "Browse" msgstr "PrzeglÄ…daj" -#: src/aosd/aosd_ui.c:746 +#: src/aosd/aosd_ui.c:773 msgid "Enable trigger" msgstr "Uruchom ten wyzwalacz" -#: src/aosd/aosd_ui.c:773 +#: src/aosd/aosd_ui.c:800 msgid "Event" msgstr "Zdarzenia" -#: src/aosd/aosd_ui.c:801 +#: src/aosd/aosd_ui.c:828 msgid "Composite manager detected" msgstr "Wykryto menedżer okien obsÅ‚ugujÄ…cy przezroczystość" -#: src/aosd/aosd_ui.c:808 +#: src/aosd/aosd_ui.c:835 msgid "" "Composite manager not detected;\n" -"unless you know that you have one running, please activate a composite " -"manager otherwise the OSD won't work properly" +"unless you know that you have one running, please activate a composite manager otherwise the OSD won't work properly" msgstr "" "Nie wykryto obsÅ‚ugi przezroczystoÅ›ci!\n" -"Aby OSD dziaÅ‚aÅ‚ teraz prawidÅ‚owo, należy uruchomić menedżer okien " -"obsÅ‚ugujÄ…cy przeroczystość (np. Compiz)." +"Aby OSD dziaÅ‚aÅ‚ teraz prawidÅ‚owo, należy uruchomić menedżer okien obsÅ‚ugujÄ…cy przeroczystość (np. Compiz)." -#: src/aosd/aosd_ui.c:816 +#: src/aosd/aosd_ui.c:843 msgid "Composite manager not required for fake transparency" msgstr "Menedżer okien obsÅ‚ugujÄ…cy przezroczystość nie jest wymagany" -#: src/aosd/aosd_ui.c:854 +#: src/aosd/aosd_ui.c:881 msgid "Transparency" msgstr "Przezroczystość" -#: src/aosd/aosd_ui.c:860 +#: src/aosd/aosd_ui.c:887 msgid "Fake transparency" msgstr "Udawana przezroczystość" -#: src/aosd/aosd_ui.c:862 +#: src/aosd/aosd_ui.c:889 msgid "Real transparency (requires X Composite Ext.)" msgstr "Prawdziwa przezroczystość (wymaga rozszerzenia X Composite)" -#: src/aosd/aosd_ui.c:904 +#: src/aosd/aosd_ui.c:931 msgid "Composite extension not loaded" msgstr "Rozszerzenie Composite nie zostaÅ‚o zaÅ‚adowane" -#: src/aosd/aosd_ui.c:912 +#: src/aosd/aosd_ui.c:939 msgid "Composite extension not available" msgstr "Rozszerzenie Composite nie jest dostÄ™pne" -#: src/aosd/aosd_ui.c:931 +#: src/aosd/aosd_ui.c:958 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.c:1012 +#: src/aosd/aosd_ui.c:1039 msgid "Audacious OSD - configuration" msgstr "Audacious OSD - konfiguracja" -#: src/aosd/aosd_ui.c:1033 +#: src/aosd/aosd_ui.c:1060 msgid "Test" msgstr "Test" -#: src/aosd/aosd_ui.c:1048 +#: src/aosd/aosd_ui.c:1075 msgid "Position" msgstr "Pozycja" -#: src/aosd/aosd_ui.c:1053 +#: src/aosd/aosd_ui.c:1080 msgid "Animation" msgstr "Animacja" -#: src/aosd/aosd_ui.c:1058 +#: src/aosd/aosd_ui.c:1085 msgid "Text" msgstr "Tekst" -#: src/aosd/aosd_ui.c:1063 +#: src/aosd/aosd_ui.c:1090 msgid "Decoration" msgstr "Dekoracja" -#: src/aosd/aosd_ui.c:1068 +#: src/aosd/aosd_ui.c:1095 msgid "Trigger" msgstr "Wyzwalacz" -#: src/aosd/aosd_ui.c:1073 src/cdaudio-ng/configure.c:178 -#: src/modplug/gui/interface.cxx:689 src/sid/xs_interface.c:1302 +#: src/aosd/aosd_ui.c:1100 src/cdaudio-ng/configure.c:171 msgid "Misc" msgstr "Różne" -#: src/aosd/aosd_ui.c:1110 +#: src/aosd/aosd_ui.c:1137 msgid "Audacious OSD - about" msgstr "O wtyczce Audacious OSD" -#: src/aosd/aosd_ui.c:1140 +#: src/aosd/aosd_ui.c:1167 msgid "" "\n" "Audacious OSD " @@ -1396,7 +983,7 @@ "\n" "Audacious OSD" -#: src/aosd/aosd_ui.c:1141 +#: src/aosd/aosd_ui.c:1168 msgid "" "\n" "http://www.develia.org/projects.php?p=audacious#aosd\n" @@ -1418,150 +1005,37 @@ "http://neugierig.org/software/ghosd/\n" "\n" -#: src/bluetooth/agent.c:356 src/bluetooth/agent.c:397 -#, c-format -msgid "Pairing request for '%s'" -msgstr "ProÅ›ba o uwierzytelnienie dla '%s'" - -#: src/bluetooth/agent.c:544 -#, c-format -msgid "Authorization request for %s" -msgstr "ProÅ›ba o autoryzacjÄ™ dla %s" - -#: src/bluetooth/agent.c:728 -#, c-format -msgid "Created bonding with %s" -msgstr "Utworzono poÅ‚Ä…czenie z %s" - -#: src/bluetooth/agent.c:756 -#, c-format -msgid "Removed bonding with %s" -msgstr "UsuniÄ™to poÅ‚Ä…czenie z %s" - -#: src/bluetooth/agent.c:808 -msgid "Device has been switched off" -msgstr "UrzÄ…dzenie zostaÅ‚o wyÅ‚Ä…czone" - -#: src/bluetooth/agent.c:811 -msgid "Device has been made non-discoverable" -msgstr "UrzÄ…dzenie jest poza zasiÄ™giem" - -#: src/bluetooth/agent.c:813 -msgid "Device has been made connectable" -msgstr "UrzÄ…dzenie jest możliwe do podÅ‚Ä…czenia" - -#: src/bluetooth/agent.c:815 -msgid "Device has been made discoverable" -msgstr "UrzÄ…dzenie jest w zasiÄ™gu" - -#: src/bluetooth/agent.c:817 -msgid "Device has been made limited discoverable" -msgstr "UrzÄ…dzenie jest w ograniczonym zasiegu" - -#: src/bluetooth/agent.c:819 -msgid "Device has been switched into pairing mode" -msgstr "UrzÄ…dzenie zostaÅ‚o przeÅ‚Ä…czone w tryb uwierzytelniania" - -#: src/bluetooth/bluetooth.c:117 -msgid "Bluetooth headset support plugin" -msgstr "Wtyczka obsÅ‚ugi sÅ‚uchawek bluetooth" - -#: src/bluetooth/bluetooth.c:118 -msgid "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the " -"Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" -msgstr "" -"ObsÅ‚uga zestawu sÅ‚uchawkowego Bluetooth\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"To byÅ‚ projekt GSoC 2008 - PodziÄ™kowania dla mojego mentora Tony Vroon i dla " -"zespoÅ‚u Audacious\n" -" \n" -"Aby móc używać AVRCP, musisz zaÅ‚adować moduÅ‚ uinput do jÄ…dra systemu.\n" -"Przyciski na sÅ‚uchawkach zostanÄ… rozpoznane jako zwykÅ‚e klawisze \n" -"multimedialne i mogÄ… zostać skonfigurowane przez wtyczkÄ™ Audacious Global \n" -"Hotkey lub inne narzÄ™dzia dostarczane z twoim menedżerem okien.\n" - -#: src/bluetooth/gui.c:148 -msgid "Producer" -msgstr "Producent" - -#: src/bluetooth/gui.c:221 -msgid "Available Headsets" -msgstr "DostÄ™pne sÅ‚uchawki" - -#: src/bluetooth/gui.c:224 -msgid "Current Headset" -msgstr "Aktywne sÅ‚uchawki" - -#: src/bluetooth/gui.c:227 -msgid "_Refresh" -msgstr "_OdÅ›wież" - -#: src/bluetooth/gui.c:231 -msgid "_Connect" -msgstr "_PodÅ‚Ä…cz" - -#: src/bluetooth/gui.c:237 -msgid "_Close" -msgstr "_Zamknij" - -#: src/bluetooth/gui.c:274 -msgid "Class" -msgstr "Klasa" - -#: src/bluetooth/gui.c:278 -msgid "Address:" -msgstr "Adres:" - -#: src/bluetooth/scan_gui.c:69 -msgid "Bonding finish!" -msgstr "PodÅ‚Ä…czanie zakoÅ„czone!" - -#: src/bluetooth/scan_gui.c:76 -msgid "No devices found!" -msgstr "Nie znaleziono urzÄ…dzeÅ„!" - -#: src/bluetooth/scan_gui.c:119 -msgid "Scanning..." -msgstr "Szukanie..." - -#: src/bluetooth/scan_gui.c:122 -msgid "Pairing..." -msgstr "Uwierzytelnianie..." - -#: src/bluetooth/scan_gui.c:138 -msgid "Rescan" -msgstr "Szukaj ponownie" - -#: src/bluetooth/scan_gui.c:142 src/gtkui/ui_manager.c:66 -#: src/gtkui/ui_manager.c:67 src/hotkey/gui.c:71 src/skins/ui_manager.c:167 -#: src/skins/ui_manager.c:168 -msgid "Play" -msgstr "Odtwarzaj" - #: src/blur_scope/config.c:73 msgid "Blur Scope: Color selection" msgstr "Blur Scope: wybór koloru" -#: src/blur_scope/config.c:83 src/jack/configure.c:111 +#: src/blur_scope/config.c:83 src/jack/configure.c:106 msgid "Options:" msgstr "Opcje:" -#: src/cdaudio-ng/cdaudio-ng.c:278 +#: src/bs2b/plugin.c:157 +msgid "Bauer stereophonic-to-binaural Preferences" +msgstr "Preferencje Bauer stereophonic-to-binaural" + +#: src/bs2b/plugin.c:168 +msgid "Feed level:" +msgstr "Poziom zasilenia:" + +#: src/bs2b/plugin.c:182 +msgid "Cut frequency:" +msgstr "Obetnij czÄ™stotliwość:" + +#: src/bs2b/plugin.c:196 +msgid "Presets:" +msgstr "Schematy ustawieÅ„:" + +#: src/cdaudio-ng/cdaudio-ng.c:242 msgid "About Audio CD Plugin" msgstr "O wtyczce Audio CD" -#: src/cdaudio-ng/cdaudio-ng.c:279 +#: src/cdaudio-ng/cdaudio-ng.c:243 msgid "" -"Copyright (c) 2007, by Calin Crisan and The Audacious " -"Team.\n" +"Copyright (c) 2007, by Calin Crisan and The Audacious Team.\n" "\n" "Many thanks to libcdio developers \n" "\tand to libcddb developers .\n" @@ -1572,8 +1046,7 @@ "\n" "Copyright 2009 John Lindgren" msgstr "" -"Copyright (c) 2007, Calin Crisan i zespół " -"Audacious.\n" +"Copyright (c) 2007, Calin Crisan i zespół Audacious.\n" "\n" "PodziÄ™kowania dla deweloperów libcdio \n" "\ti deweloperów libcddb .\n" @@ -1584,128 +1057,156 @@ "\n" "Copyright 2009 John Lindgren" +#: src/cdaudio-ng/cdaudio-ng.c:552 +msgid "Audio CD" +msgstr "Audio CD" + +#: src/cdaudio-ng/cdaudio-ng.c:924 +msgid "Drive is empty." +msgstr "Brak pÅ‚yty w napÄ™dzie." + +#: src/cdaudio-ng/cdaudio-ng.c:926 +msgid "Unsupported disk type." +msgstr "NieobsÅ‚ugiwany rodzaj dysku." -#: src/cdaudio-ng/configure.c:155 +#: src/cdaudio-ng/configure.c:148 msgid "CD Audio Plugin Configuration" msgstr "Konfiguracja wtyczki Audio CD" -#: src/cdaudio-ng/configure.c:167 +#: src/cdaudio-ng/configure.c:160 msgid "Digital audio extraction" msgstr "Wymuszenie cyfrowego dźwiÄ™ku" -#: src/cdaudio-ng/configure.c:172 +#: src/cdaudio-ng/configure.c:165 msgid "Title information" msgstr "Pobieranie informacji o utworach" -#: src/cdaudio-ng/configure.c:190 +#: src/cdaudio-ng/configure.c:176 msgid "Disc speed:" msgstr "PrÄ™dkość dysku:" -#: src/cdaudio-ng/configure.c:198 +#: src/cdaudio-ng/configure.c:184 msgid "Use cd-text if available" msgstr "Użyj info zapisanych na pÅ‚ycie, jeÅ›li dostÄ™pne" -#: src/cdaudio-ng/configure.c:205 +#: src/cdaudio-ng/configure.c:191 msgid "Use CDDB if available" msgstr "Użyj internetowej bazy CDDB, jeÅ›li dostÄ™pna" -#: src/cdaudio-ng/configure.c:211 +#: src/cdaudio-ng/configure.c:197 msgid "Server: " msgstr "Serwer: " -#: src/cdaudio-ng/configure.c:215 +#: src/cdaudio-ng/configure.c:201 msgid "Path: " msgstr "PoÅ‚ożenie: " -#: src/cdaudio-ng/configure.c:219 +#: src/cdaudio-ng/configure.c:205 msgid "Port: " msgstr "Port: " -#: src/cdaudio-ng/configure.c:232 +#: src/cdaudio-ng/configure.c:218 msgid "Use HTTP instead of CDDBP" msgstr "Użyj HTTP zamiast CDDBP" -#: src/cdaudio-ng/configure.c:244 +#: src/cdaudio-ng/configure.c:230 msgid "Override default device: " msgstr "UrzÄ…dzenie inne, niż domyÅ›lne: " -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:123 +#: src/echo_plugin/gui.c:118 src/jack/configure.c:141 src/null/null.c:107 +#: src/stereo_plugin/stereo.c:118 +msgid "Ok" +msgstr "Ok" + +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Play CD" -msgstr "Odtwarzaj CD" +msgstr "Odtwórz pÅ‚ytÄ™ CD" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Add CD" -msgstr "Dodaj CD" +msgstr "Dodaj pÅ‚ytÄ™ CD" -#: src/compressor/plugin.c:58 +#: src/compressor/plugin.c:63 msgid "About Dynamic Range Compression Plugin" msgstr "O wtyczce Dynamic Range Compression" -#: src/compressor/plugin.c:91 +#: src/compressor/plugin.c:95 msgid "Dynamic Range Compressor Preferences" msgstr "Konfiguracja - Dynamic Range Compressor" -#: src/compressor/plugin.c:103 -msgid "Target volume:" -msgstr "Docelowa gÅ‚oÅ›ność:" - -#: src/compressor/plugin.c:116 -msgid "Effect strength:" -msgstr "Moc efektu:" +#: src/compressor/plugin.c:107 +msgid "Center volume:" +msgstr "Centralna gÅ‚oÅ›ność:" + +#: src/compressor/plugin.c:120 +msgid "Dynamic range:" +msgstr "Zakres dynamiczny:" -#: src/console/configure.c:137 +#: src/console/configure.c:136 msgid "Game Console Music Decoder" msgstr "Game Console Music Decoder" -#: src/console/configure.c:171 +#: src/console/configure.c:153 +msgid "General" +msgstr "Ogólne" + +#: src/console/configure.c:155 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "Odtwarzanie" + +#: src/console/configure.c:170 msgid "Bass:" msgstr "Bas:" -#: src/console/configure.c:175 src/console/configure.c:186 -#: src/console/configure.c:207 +#: src/console/configure.c:174 src/console/configure.c:185 +#: src/console/configure.c:206 msgid "secs" -msgstr "sek." +msgstr "s" -#: src/console/configure.c:182 +#: src/console/configure.c:181 msgid "Treble:" msgstr "Sopran:" -#: src/console/configure.c:203 +#: src/console/configure.c:202 msgid "Default song length:" msgstr "DomyÅ›lna dÅ‚ugość piosenki:" -#: src/console/configure.c:209 src/modplug/gui/interface.cxx:269 -#: src/sid/xs_interface.c:666 +#: src/console/configure.c:208 msgid "Resampling" msgstr "Konwersja czÄ™stotliwoÅ›ci próbkowania" -#: src/console/configure.c:215 +#: src/console/configure.c:214 msgid "Enable audio resampling" msgstr "WÅ‚Ä…cz resampling audio" -#: src/console/configure.c:230 +#: src/console/configure.c:229 msgid "Resampling rate:" msgstr "CzÄ™stotliwość:" -#: src/console/configure.c:245 +#: src/console/configure.c:233 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:244 msgid "SPC" msgstr "SPC" -#: src/console/configure.c:246 +#: src/console/configure.c:245 msgid "Ignore length from SPC tags" msgstr "Ignoruj dÅ‚ugość z tagów SPC" -#: src/console/configure.c:247 +#: src/console/configure.c:246 msgid "Increase reverb" msgstr "ZwiÄ™ksz pogÅ‚os" -#: src/console/configure.c:272 +#: src/console/configure.c:271 msgid "" -"The default song length, expressed in seconds, is used for songs that do not " -"provide length information (i.e. looping tracks)." +"The default song length, expressed in seconds, is used for songs that do not" +" provide length information (i.e. looping tracks)." msgstr "" -"DomyÅ›lna dÅ‚ugość piosenki, wyrażona w sekundach, jest używana przy " -"utworach, dla których nie okreÅ›lono dÅ‚ugoÅ›ci (np. Å›cieżki - pÄ™tle). " +"DomyÅ›lna dÅ‚ugość piosenki, wyrażona w sekundach, jest używana przy utworach," +" dla których nie okreÅ›lono dÅ‚ugoÅ›ci (np. Å›cieżki - pÄ™tle). " #: src/console/plugin.c:33 msgid "About the Game Console Music Decoder" @@ -1723,54 +1224,50 @@ "Implementacja w Audacious: William Pitcock , \n" " Shay Green \n" -#: src/crossfade/plugin.c:51 +#: src/crossfade/plugin.c:60 msgid "About Crossfade" msgstr "O Crossfade" -#: src/crossfade/plugin.c:84 +#: src/crossfade/plugin.c:92 msgid "Crossfade Preferences" msgstr "Konfiguracja Crossfade" -#: src/crossfade/plugin.c:95 +#: src/crossfade/plugin.c:104 msgid "Overlap (in seconds):" msgstr "Zachodzenie na siebie (w sek.)" -#: src/crossfade/plugin.c:129 src/crossfade/plugin.c:137 +#: src/crossfade/plugin.c:135 src/crossfade/plugin.c:141 msgid "Crossfade Error" msgstr "BÅ‚Ä…d Crossfade" -#: src/crossfade/plugin.c:130 +#: src/crossfade/plugin.c:135 msgid "" "Crossfading failed because the songs had a different number of channels." -msgstr "" -"Crossfading nie zadziaÅ‚aÅ‚, gdyż piosenki majÄ… różnÄ… ilość kanałów." +msgstr "Crossfading nie zadziaÅ‚aÅ‚, gdyż piosenki majÄ… różnÄ… ilość kanałów." -#: src/crossfade/plugin.c:138 +#: src/crossfade/plugin.c:143 msgid "" "Crossfading failed because the songs had different sample rates.\n" "\n" -"You can use the Sample Rate Converter effect to resample the songs to the " -"same rate." +"You can use the Sample Rate Converter effect to resample the songs to the same rate." msgstr "" -"Crossfading nie zadziaÅ‚aÅ‚, gdyż piosenki majÄ… różne czÄ™stotliwoÅ›ci " -"próbkowania.\n" -"Możesz użyć efektu Sample Rate Converter, aby przekonwertować piosenki " -"do tej samej czÄ™stotliwoÅ›ci." +"Crossfading nie zadziaÅ‚aÅ‚, gdyż piosenki majÄ… różne czÄ™stotliwoÅ›ci próbkowania.\n" +"Możesz użyć efektu Sample Rate Converter, aby przekonwertować piosenki do tej samej czÄ™stotliwoÅ›ci." -#: src/crystalizer/crystalizer.c:104 +#: src/crystalizer/crystalizer.c:100 msgid "Configure Crystalizer" msgstr "Konfiguruj Crystalizer" -#: src/crystalizer/crystalizer.c:106 src/stereo_plugin/stereo.c:102 +#: src/crystalizer/crystalizer.c:102 src/stereo_plugin/stereo.c:97 msgid "Effect intensity:" msgstr "Intensywność efektu:" -#: src/crystalizer/crystalizer.c:143 src/echo_plugin/gui.c:137 -#: src/modplug/gui/interface.cxx:709 src/stereo_plugin/stereo.c:139 +#: src/crystalizer/crystalizer.c:136 src/echo_plugin/gui.c:131 +#: src/stereo_plugin/stereo.c:131 msgid "Apply" msgstr "Zastosuj" -#: src/echo_plugin/gui.c:14 +#: src/echo_plugin/gui.c:15 msgid "" "Echo Plugin\n" "By Johan Levin 1999.\n" @@ -1781,685 +1278,248 @@ "Johan Levin 1999.\n" "Echo otoczenia: Carl van Shaik 1999" -#: src/echo_plugin/gui.c:26 +#: src/echo_plugin/gui.c:27 msgid "About Echo Plugin" msgstr "O wtyczce Echo" -#: src/echo_plugin/gui.c:69 +#: src/echo_plugin/gui.c:67 msgid "Configure Echo" msgstr "Konfiguruj Echo" -#: src/echo_plugin/gui.c:82 +#: src/echo_plugin/gui.c:83 msgid "Delay: (ms)" msgstr "Opóźnienie: (ms)" -#: src/echo_plugin/gui.c:87 +#: src/echo_plugin/gui.c:88 msgid "Feedback: (%)" msgstr "OddźwiÄ™k: (%)" -#: src/echo_plugin/gui.c:92 +#: src/echo_plugin/gui.c:93 msgid "Volume: (%)" msgstr "GÅ‚oÅ›ność: (%)" -#: src/evdev-plug/ed.c:60 -msgid "Playback->Play" -msgstr "Odtwarzanie->Graj" - -#: src/evdev-plug/ed.c:61 -msgid "Playback->Stop" -msgstr "Odtwarzanie->Stop" - -#: src/evdev-plug/ed.c:62 -msgid "Playback->Pause" -msgstr "Odtwarzanie->Pauza" - -#: src/evdev-plug/ed.c:63 -msgid "Playback->Prev" -msgstr "Odtwarzanie->Poprzedni" - -#: src/evdev-plug/ed.c:64 -msgid "Playback->Next" -msgstr "Odtwarzanie->NastÄ™pny" - -#: src/evdev-plug/ed.c:65 -msgid "Playback->Eject" -msgstr "Odtwarzanie->WysuÅ„" - -#: src/evdev-plug/ed.c:67 -msgid "Playlist->Repeat" -msgstr "Odtwarzanie->Powtarzaj" - -#: src/evdev-plug/ed.c:68 -msgid "Playlist->Shuffle" -msgstr "Odtwarzanie->Losuj" - -#: src/evdev-plug/ed.c:70 -msgid "Volume->Up_5" -msgstr "GÅ‚oÅ›ność-> +_5" - -#: src/evdev-plug/ed.c:71 -msgid "Volume->Down_5" -msgstr "GÅ‚oÅ›ność- -_5>" - -#: src/evdev-plug/ed.c:72 -msgid "Volume->Up_10" -msgstr "GÅ‚oÅ›ność-> +_10" - -#: src/evdev-plug/ed.c:73 -msgid "Volume->Down_10" -msgstr "GÅ‚oÅ›ność-> -_10" - -#: src/evdev-plug/ed.c:74 -msgid "Volume->Mute" -msgstr "GÅ‚oÅ›ność->Wycisz" - -#: src/evdev-plug/ed.c:76 -msgid "Window->Main" -msgstr "Okno->Główne" - -#: src/evdev-plug/ed.c:77 -msgid "Window->Playlist" -msgstr "Okno->Playlista" - -#: src/evdev-plug/ed.c:78 -msgid "Window->Equalizer" -msgstr "Okno->Equalizer" - -#: src/evdev-plug/ed.c:79 -msgid "Window->JumpToFile" -msgstr "Okno->PrzeskoczDoPliku" - -#: src/evdev-plug/ed_internals.c:94 -#, c-format -msgid "" -"event-device-plugin: unable to open device file %s , skipping this device; " -"check that the file exists and that you have read permission for it\n" -msgstr "" -"event-device-plugin: nie można otworzyć pliku urzÄ…dzenia %s , pomijanie " -"tego urzÄ…dzenia; sprawdź, czy plik istnieje i czy masz uprawnienia do " -"jego czytania.\n" - -#: src/evdev-plug/ed_internals.c:103 -#, c-format -msgid "" -"event-device-plugin: unable to create a io_channel for device file %s ," -"skipping this device\n" -msgstr "" -"event-device-plugin: nie można utworzyć _kanaÅ‚u we/wy dla pliku urzÄ…dzenia " -"%s , pomijanie tego urzÄ…dzenia.\n" - -#: src/evdev-plug/ed_internals.c:342 -msgid "" -"event-device-plugin: unable to open /proc/bus/input/devices , automatic " -"detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: nie można otworzyć /proc/bus/input/devices , " -"automatyczne wykrywanie zdarzeÅ„ dla urzÄ…dzeÅ„ nie zadziaÅ‚a.\n" - -#: src/evdev-plug/ed_internals.c:351 -msgid "" -"event-device-plugin: unable to open a io_channel for /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: nie można otworzyć _kanaÅ‚u we/wy dla urzÄ…dzeÅ„ " -"/proc/bus/input , automatyczne wykrywanie zdarzeÅ„ dla urzÄ…dzeÅ„ " -"nie zadziaÅ‚a.\n" - -#: src/evdev-plug/ed_internals.c:361 -msgid "" -"event-device-plugin: an error occurred while reading /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: wystÄ…piÅ‚ bÅ‚Ä…d podczas czytania urzÄ…dzeÅ„ z" -"/proc/bus/input/ , automatyczne wykrywanie zdarzeÅ„ dla urzÄ…dzeÅ„ " -"nie zadziaÅ‚a.\n" - -#: src/evdev-plug/ed_internals.c:424 -#, c-format -msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" -msgstr "" -"event-device-plugin: nie znaleziono urzÄ…dzenia %s w /dev/input ," -"pomijanie.\n" - -#: src/evdev-plug/ed_internals.c:489 src/evdev-plug/ed_internals.c:583 -#, c-format -msgid "" -"event-device-plugin: unable to load config file %s , default settings will " -"be used.\n" -msgstr "" -"event-device-plugin: nie można zaÅ‚adować pliku konfiguracji %s , zostanÄ… " -"użyte domyÅ›lne ustawienia.\n" - -#: src/evdev-plug/ed_internals.c:535 -#, c-format -msgid "" -"event-device-plugin: incomplete information in config file for device \"%s" -"\" , skipping.\n" -msgstr "" -"event-device-plugin: niekompletne informacje w pliku konfiguracji dla " -"urzÄ…dzenia \"%s\" , pomijanie.\n" - -#: src/evdev-plug/ed_internals.c:604 src/evdev-plug/ed_internals.c:936 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_active value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: konfiguracja, nie można znaleźć wartość is_active dla " -"urzÄ…dzenia \"%s\" , pomijanie.\n" - -#: src/evdev-plug/ed_internals.c:840 -#, c-format -msgid "" -"event-device-plugin: unable to access local directory %s , settings will not " -"be saved.\n" -msgstr "" -"event-device-plugin: nie można uzyskać dostÄ™pu do lokalnego katalogu %s , " -"ustawienia nie zostanÄ… zapisane.\n" - -#: src/evdev-plug/ed_internals.c:890 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get filename value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: konfiguracja, nie można znaleźć wartoÅ›ci nazwy pliku " -"dla urzÄ…dzenia \"%s\" , pomijanie.\n" - -#: src/evdev-plug/ed_internals.c:906 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get phys value for device \"%s" -"\", skipping it.\n" -msgstr "" -"event-device-plugin: konfiguracja, nie można uzyskać wartoÅ›ci phys dla " -"urzÄ…dzenia \"%s\" , pomijanie.\n" - -#: src/evdev-plug/ed_internals.c:922 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_custom value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: konfiguracja, nie można uzyskać wartoÅ›ci is_custom dla " -"urzÄ…dzenia \"%s\" , pomijanie.\n" - -#: src/evdev-plug/ed_internals.c:946 -#, c-format -msgid "" -"event-device-plugin: configuration, unexpected value for device \"%s\", " -"skipping it.\n" -msgstr "" -"event-device-plugin: konfiguracja, niespodziewana wartość dla urzÄ…dzenia " -"\"%s\" , pomijanie.\n" - -#: src/evdev-plug/ed_ui.c:212 -msgid "Detected" -msgstr "Wykryto" - -#: src/evdev-plug/ed_ui.c:217 -msgid "Custom" -msgstr "WÅ‚asne" - -#: src/evdev-plug/ed_ui.c:223 -msgid "Not Detected" -msgstr "Nie wykryto" - -#: src/evdev-plug/ed_ui.c:275 src/evdev-plug/ed_ui.c:411 -#: src/evdev-plug/ed_ui.c:874 -msgid "Information" -msgstr "Informacja" - -#: src/evdev-plug/ed_ui.c:276 -msgid "" -"Cannot open bindings window for a not-detected device.\n" -"Ensure that the device has been correctly plugged in." -msgstr "" -"Nie można otworzyć okna dowiÄ…zaÅ„ dla nie-wykrytego urzÄ…dzenia.\n" -"Upewnij siÄ™, że urzÄ…dzenie zostaÅ‚o poprawnie podÅ‚Ä…czone." - -#: src/evdev-plug/ed_ui.c:319 -msgid "Error" -msgstr "BÅ‚Ä…d" - -#: src/evdev-plug/ed_ui.c:320 -msgid "" -"Unable to open selected device.\n" -"Please check read permissions on device file." -msgstr "" -"Nie można otworzyć wybranego urzÄ…dzenia.\n" -"ProszÄ™ sprawdzić uprawnienia czytania dla pliku urzÄ…dzenia." - -#: src/evdev-plug/ed_ui.c:341 -msgid "EvDev-Plug - Add custom device" -msgstr "EvDev-Plug - Dodaj niestandardowe urzÄ…dzenie" - -#: src/evdev-plug/ed_ui.c:353 -msgid "" -"EvDev-Plug tries to automatically detect and update information about\n" -"event devices available on the system.\n" -"However, if auto-detect doesn't work for your system, or you have event\n" -"devices in a non-standard location (currently they're only searched in\n" -"/dev/input/ ), you may want to add a custom device, explicitly specifying\n" -"name and device file." -msgstr "" -"EvDev-Plug próbuje automatycznie wykryć i zaktualizować informacje o\n" -"urzÄ…dzeniach zdarzeÅ„ dostÄ™pnych w systemie.\n" -"JeÅ›li jednak auto-detekcja nie zadziaÅ‚a bÄ…dź posiadasz nietypowe urzÄ…dzenia\n" -"(znajdujÄ… siÄ™ obecnie tylko w /dev/input/), możesz spróbować dodać je\n" -"rÄ™cznie podajÄ…c przy tym nazwÄ™ oraz plik urzÄ…dzenia." - -#: src/evdev-plug/ed_ui.c:361 -msgid "Device name:" -msgstr "Nazwa urzÄ…dzenia:" - -#: src/evdev-plug/ed_ui.c:365 -msgid "Device file:" -msgstr "Plik urzÄ…dzenia:" - -#: src/evdev-plug/ed_ui.c:404 -msgid "(custom)" -msgstr "(wÅ‚asne)" - -#: src/evdev-plug/ed_ui.c:412 -msgid "" -"Please specify both name and filename.\n" -"Filename must be specified with absolute path." -msgstr "" -"ProszÄ™ podać zarówno nazwÄ™, jak i lokalizacjÄ™ pliku.\n" -"Nazwa pliku musi zostać podana z bezpoÅ›redniÄ… Å›cieżkÄ…." - -#: src/evdev-plug/ed_ui.c:447 -msgid "Do you want to remove the existing configuration for selected device?\n" -msgstr "Czy chcesz usunąć istniejÄ…cÄ… konfiguracjÄ™ dla wybranego urzÄ…dzenia?\n" - -#: src/evdev-plug/ed_ui.c:466 -msgid "Do you want to remove the selected custom device?\n" -msgstr "Czy chcesz usunąć wybrane niestandardowe urzÄ…dzenie?\n" - -#: src/evdev-plug/ed_ui.c:612 -msgid "EvDev-Plug - Configuration" -msgstr "EvDev-Plug - Konfiguracja" - -#: src/evdev-plug/ed_ui.c:651 -msgid "Active" -msgstr "Aktywne" - -#: src/evdev-plug/ed_ui.c:655 src/sun/configure.c:486 -msgid "Status" -msgstr "Stan" - -#: src/evdev-plug/ed_ui.c:664 -msgid "Device Name" -msgstr "Nazwa urzÄ…dzenia" - -#: src/evdev-plug/ed_ui.c:668 -msgid "Device File" -msgstr "Plik urzÄ…dzenia" - -#: src/evdev-plug/ed_ui.c:672 -msgid "Device Address" -msgstr "Adres urzÄ…dzenia" - -#: src/evdev-plug/ed_ui.c:689 -msgid "_Bindings" -msgstr "_DowiÄ…zania" - -#: src/evdev-plug/ed_ui.c:838 -msgid "" -"Press a key of your device to bind it;\n" -"if no key is pressed in five seconds, this window\n" -"will close without binding changes." -msgstr "" -"WciÅ›nij przycisk twojego urzÄ…dzenia, aby skojarzyć go z wtyczkÄ…;\n" -"jeÅ›li żaden przycisk nie zostanie wciÅ›nięŧy przez kolejne 5 sekund, \n" -"to nastÄ…pi zamkniÄ™cie tego okna bez dokonywania zmian." - -#: src/evdev-plug/ed_ui.c:875 -msgid "" -"This input event has been already assigned.\n" -"\n" -"It's not possible to assign multiple actions to the same input event " -"(although it's possible to assign the same action to multiple events)." -msgstr "" -"To zdarzenie wejÅ›cia zostaÅ‚o już przypisane.\n" -"\n" -"Nie można przydzielić wielu akcji do tego samego zdarzenia wejÅ›cia " -"(jednakże można przypisać tÄ… samÄ… akcjÄ™ do wielu zdarzeÅ„)." - -#: src/evdev-plug/ed_ui.c:1323 -msgid "EvDev-Plug - Bindings Configuration" -msgstr "EvDev-Plug - Konfiguracja dowiÄ…zaÅ„" - -#: src/evdev-plug/ed_ui.c:1363 -msgid "Name: " -msgstr "Nazwa: " - -#: src/evdev-plug/ed_ui.c:1372 -msgid "Filename: " -msgstr "Lokalizacja pliku: " - -#: src/evdev-plug/ed_ui.c:1381 -msgid "Phys.Address: " -msgstr "Adres fizyczny: " - -#: src/evdev-plug/ed_ui.c:1460 -msgid "EvDev-Plug - about" -msgstr "O wtyczce EvDev-Plug" - -#: src/evdev-plug/ed_ui.c:1491 -msgid "" -"\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"written by Giacomo Lozito\n" -msgstr "" -"\n" -"Zdalna kontrola odtwarzacza poprzez urzÄ…dzenia zdarzeÅ„\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"Autor: Giacomo Lozito\n" - -#: src/ffaudio/ffaudio-core.c:662 +#: src/ffaudio/ffaudio-core.c:725 #, c-format msgid "" "Multi-format audio decoding plugin for Audacious based on\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" "Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" "\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" "Audacious plugin by:\n" " William Pitcock ,\n" " Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" msgstr "" "Wtyczka dekodera audio dla Audacious obsÅ‚ugujÄ…ca wiele formatów.\n" "Oparta na framework'u multimedialnym FFmpeg (http://www.ffmpeg.org/)\n" "Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" "\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" "Wtyczka dla Audacious napisana prez:\n" " William Pitcock ,\n" " Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" - -#: src/ffaudio/ffaudio-core.c:675 +#: src/ffaudio/ffaudio-core.c:739 msgid "About FFaudio Plugin" msgstr "O wtyczce FFaudio" -#: src/filewriter/filewriter.c:180 +#: src/filewriter/filewriter.c:166 msgid "About FileWriter-Plugin" msgstr "O wtyczce File-Writer" -#: src/filewriter/filewriter.c:181 -msgid "" -"FileWriter-Plugin\n" -"\n" -"This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" -"Wtyczka FileWriter\n" -"\n" -"This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." - -#: src/filewriter/filewriter.c:466 +#: src/filewriter/filewriter.c:461 msgid "File Writer Configuration" msgstr "Konfiguracja File Writer" -#: src/filewriter/filewriter.c:478 +#: src/filewriter/filewriter.c:473 msgid "Output file format:" msgstr "Format pliku wyjÅ›ciowego:" -#: src/filewriter/filewriter.c:496 src/ladspa/ladspa.c:1058 +#: src/filewriter/filewriter.c:491 msgid "Configure" msgstr "Konfiguruj" -#: src/filewriter/filewriter.c:511 +#: src/filewriter/filewriter.c:506 msgid "Save into original directory" -msgstr "Zapisz w oryginalnym katalogu" +msgstr "Zapisywanie w pierwotnym poÅ‚ożeniu" -#: src/filewriter/filewriter.c:516 +#: src/filewriter/filewriter.c:511 msgid "Save into custom directory" -msgstr "Zapisz we wÅ‚asnym katalogu" +msgstr "Zapisywanie we wÅ‚asnym poÅ‚ożeniu" -#: src/filewriter/filewriter.c:528 +#: src/filewriter/filewriter.c:521 msgid "Output file folder:" -msgstr "Folder pliku wyjÅ›ciowego:" +msgstr "PoÅ‚ożenie pliku docelowego:" -#: src/filewriter/filewriter.c:532 +#: src/filewriter/filewriter.c:525 msgid "Pick a folder" -msgstr "Wybierz folder" +msgstr "Wybór katalogu" -#: src/filewriter/filewriter.c:551 +#: src/filewriter/filewriter.c:544 msgid "Get filename from:" -msgstr "Uzyskaj nazwÄ™ pliku z:" +msgstr "Uzyskanie nazwy pliku z:" -#: src/filewriter/filewriter.c:554 +#: src/filewriter/filewriter.c:547 msgid "original file tags" -msgstr "tagi pliku oryginalnego" +msgstr "zaÅ‚Ä…czonych etykiet" -#: src/filewriter/filewriter.c:560 +#: src/filewriter/filewriter.c:553 msgid "original filename" -msgstr "oryginalna nazwa pliku" +msgstr "nazwy pliku" -#: src/filewriter/filewriter.c:570 +#: src/filewriter/filewriter.c:563 msgid "Don't strip file name extension" -msgstr "Nie ucinaj rozszerzenia pliku" - -#: src/filewriter/filewriter.c:574 -msgid "" -"If enabled, the extension from the original filename will not be stripped " -"before adding the new file extension to the end." -msgstr "" -"Gdy wÅ‚Ä…czone, rozszerzenie pliku oryginalnego nie zostanie usuniÄ™te z jego " -"nazwy przed dodaniem na koÅ„cu nowego rozszerzenia." +msgstr "Pozostawienie rozszerzenia nazwy pierwotnego pliku" -#: src/filewriter/filewriter.c:588 +#: src/filewriter/filewriter.c:578 msgid "Prepend track number to filename" -msgstr "Dodaj do nazwy pliku numer Å›cieżki" +msgstr "Dodanie do nazwy pliku numer Å›cieżki" + +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:765 +msgid "Auto" +msgstr "Automatycznie" + +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" +msgstr "Joint Stereo" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Stereo" +msgstr "Stereo" -#: src/filewriter/mp3.c:710 +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Mono" +msgstr "Mono" + +#: src/filewriter/mp3.c:706 msgid "MP3 Configuration" -msgstr "Konfiguracja MP3" +msgstr "Konfiguracja kodera MP3" -#: src/filewriter/mp3.c:737 +#: src/filewriter/mp3.c:729 msgid "Algorithm Quality:" msgstr "Jakość algorytmu:" -#: src/filewriter/mp3.c:759 -msgid "" -"best/slowest:0;\n" -"worst/fastest:9;\n" -"recommended:2;\n" -"default:5;" -msgstr "" -"najlepszy/najwolniejszy:0;\n" -"najgorszy/najszybyszy:9;\n" -"zalecany:2;\n" -"domyÅ›lny:5;" - -#: src/filewriter/mp3.c:767 +#: src/filewriter/mp3.c:754 msgid "Output Samplerate:" -msgstr "CzÄ™stotliwość próbkowania na wyjÅ›ciu:" - -#: src/filewriter/mp3.c:778 src/filewriter/mp3.c:919 -msgid "Auto" -msgstr "Automatycznie" +msgstr "Docelowa czÄ™stotliwość próbkowania:" -#: src/filewriter/mp3.c:800 +#: src/filewriter/mp3.c:782 msgid "(Hz)" msgstr "(Hz)" -#: src/filewriter/mp3.c:812 +#: src/filewriter/mp3.c:789 msgid "Bitrate / Compression ratio:" -msgstr "Bitrate / stopieÅ„ kompresji:" +msgstr "Tempo bitowe/współczynnik kompresji:" -#: src/filewriter/mp3.c:838 +#: src/filewriter/mp3.c:813 msgid "Bitrate (kbps):" -msgstr "Bitrate (kbps):" +msgstr "Tempo bitowe (kb/s):" -#: src/filewriter/mp3.c:879 +#: src/filewriter/mp3.c:846 msgid "Compression ratio:" -msgstr "StopieÅ„ kompresji:" +msgstr "Współczynnik kompresji:" -#: src/filewriter/mp3.c:909 +#: src/filewriter/mp3.c:870 msgid "Audio Mode:" -msgstr "Tryb audio:" +msgstr "KanaÅ‚y:" -#: src/filewriter/mp3.c:924 -msgid "Joint-Stereo" -msgstr "Dodaj Stereo" - -#: src/filewriter/mp3.c:967 +#: src/filewriter/mp3.c:895 msgid "Misc:" msgstr "Różne:" -#: src/filewriter/mp3.c:978 +#: src/filewriter/mp3.c:906 msgid "Enforce strict ISO complience" -msgstr "WymuÅ› Å›cisÅ‚Ä… zgodność z ISO" +msgstr "Wymuszenie Å›cisÅ‚ej zgodnoÅ›ci z ISO" -#: src/filewriter/mp3.c:989 +#: src/filewriter/mp3.c:917 msgid "Error protection" msgstr "Zabezpieczenie przed bÅ‚Ä™dami" -#: src/filewriter/mp3.c:1001 -msgid "Adds 16 bit checksum to every frame" -msgstr "Dodaje 16-bitowÄ… sumÄ™ kontrolnÄ… do każdej klatki" - -#: src/filewriter/mp3.c:1006 src/filewriter/vorbis.c:247 -#: src/modplug/gui/interface.cxx:320 +#: src/filewriter/mp3.c:929 src/filewriter/vorbis.c:247 msgid "Quality" msgstr "Jakość" -#: src/filewriter/mp3.c:1018 +#: src/filewriter/mp3.c:939 msgid "Enable VBR/ABR" -msgstr "WÅ‚Ä…cz VBR/ABR" +msgstr "WÅ‚Ä…czenie" -#: src/filewriter/mp3.c:1030 +#: src/filewriter/mp3.c:949 msgid "Type:" msgstr "Typ:" -#: src/filewriter/mp3.c:1041 -msgid "Variable bitrate" -msgstr "Zmienny bitrate" - -#: src/filewriter/mp3.c:1053 -msgid "Average bitrate" -msgstr "Åšredni bitrate" - -#: src/filewriter/mp3.c:1067 +#: src/filewriter/mp3.c:982 msgid "VBR Options:" -msgstr "Opcje VBR:" +msgstr "Zmienne tempo bitowe (VBR):" -#: src/filewriter/mp3.c:1083 +#: src/filewriter/mp3.c:998 msgid "Minimum bitrate (kbps):" -msgstr "Minimalny bitrate (kbps):" +msgstr "Minimalna wartość (kb/s):" -#: src/filewriter/mp3.c:1119 +#: src/filewriter/mp3.c:1025 msgid "Maximum bitrate (kbps):" -msgstr "Maksymalny bitrate (kbps):" +msgstr "Maksymalna wartość (kb/s):" -#: src/filewriter/mp3.c:1151 +#: src/filewriter/mp3.c:1048 msgid "Strictly enforce minimum bitrate" -msgstr "WymuÅ› minimalny bitrate" - -#: src/filewriter/mp3.c:1153 -msgid "" -"For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/" -"mp3 player)" -msgstr "" -"Do użycia z odtwarzaczami, które nie obsÅ‚ugujÄ… niskiego bitrate dla mp3" -"(Apex AD600-A DVD/mp3 player)" - +msgstr "Wymuszenie wartoÅ›ci minimalnej" -#: src/filewriter/mp3.c:1166 +#: src/filewriter/mp3.c:1060 msgid "ABR Options:" -msgstr "Opcje ABR:" +msgstr "Åšrednie tempo bitowe (ABR):" -#: src/filewriter/mp3.c:1176 +#: src/filewriter/mp3.c:1070 msgid "Average bitrate (kbps):" -msgstr "Åšredni bitrate (kbps):" +msgstr "Åšrednia wartość (kb/s):" -#: src/filewriter/mp3.c:1213 +#: src/filewriter/mp3.c:1098 msgid "VBR quality level:" -msgstr "Poziom jakoÅ›ci VBR:" - -#: src/filewriter/mp3.c:1228 -msgid "" -"highest:0;\n" -"lowest:9;\n" -"default:4;" -msgstr "" -"najwyższy:0;\n" -"najniższy:9;\n" -"domyÅ›lny:4;" +msgstr "Jakość algorytmu:" -#: src/filewriter/mp3.c:1236 +#: src/filewriter/mp3.c:1117 msgid "Don't write Xing VBR header" -msgstr "Nie zapisuj nagłówka Xing VBR" +msgstr "PominiÄ™cie zapisywania nagłówka Xing VBR" -#: src/filewriter/mp3.c:1250 +#: src/filewriter/mp3.c:1131 msgid "VBR/ABR" msgstr "VBR/ABR" -#: src/filewriter/mp3.c:1262 +#: src/filewriter/mp3.c:1141 msgid "Frame params:" msgstr "Parametry klatek:" -#: src/filewriter/mp3.c:1274 +#: src/filewriter/mp3.c:1153 msgid "Mark as copyright" -msgstr "Oznacz prawem autorskim" +msgstr "Oznaczenie prawem autorskim" -#: src/filewriter/mp3.c:1285 +#: src/filewriter/mp3.c:1164 msgid "Mark as original" -msgstr "Oznacz jako oryginalne" +msgstr "Oznaczenie jako oryginalne" -#: src/filewriter/mp3.c:1297 +#: src/filewriter/mp3.c:1176 msgid "ID3 params:" msgstr "Parametry ID3:" -#: src/filewriter/mp3.c:1308 +#: src/filewriter/mp3.c:1187 msgid "Force addition of version 2 tag" -msgstr "WymuÅ› dodanie tagów w wersji 2" +msgstr "Wymuszenie dodawania wersji 2" -#: src/filewriter/mp3.c:1318 +#: src/filewriter/mp3.c:1197 msgid "Only add v1 tag" -msgstr "Dodaj tylko tagi v1" +msgstr "Dodawanie tylko wersji 1" -#: src/filewriter/mp3.c:1325 +#: src/filewriter/mp3.c:1204 msgid "Only add v2 tag" -msgstr "Dodaj tylko tagi v2" +msgstr "Dodawanie tylko wersji 2" -#: src/filewriter/mp3.c:1346 +#: src/filewriter/mp3.c:1225 msgid "Tags" -msgstr "Tagi" +msgstr "Etykiety" #: src/filewriter/vorbis.c:240 msgid "Vorbis Encoder Configuration" @@ -2467,13 +1527,13 @@ #: src/filewriter/vorbis.c:260 msgid "Quality level (0 - 10):" -msgstr "Poziom jakoÅ›ci (0 - 10):" +msgstr "Poziom (0 - 10):" -#: src/flacng/plugin.c:457 -msgid "FLAC Audio Plugin " -msgstr "Wtyczka FLAC Audio " +#: src/flacng/plugin.c:380 +msgid "About FLAC Audio Plugin" +msgstr "O wtyczce FLAC Audio" -#: src/flacng/plugin.c:458 +#: src/flacng/plugin.c:381 msgid "" "\n" "\n" @@ -2489,15 +1549,11 @@ "\n" "http://www.skytale.net/projects/bmp-flac2/" -#: src/flacng/plugin.c:464 -msgid "About FLAC Audio Plugin" -msgstr "O wtyczce FLAC Audio" - -#: src/gnomeshortcuts/gnomeshortcuts.c:306 +#: src/gnomeshortcuts/gnomeshortcuts.c:303 msgid "About Gnome Shortcut Plugin" -msgstr "O wtyczce Gnome Shortcut" +msgstr "O wtyczce skróty Gnome" -#: src/gnomeshortcuts/gnomeshortcuts.c:307 +#: src/gnomeshortcuts/gnomeshortcuts.c:304 msgid "" "Gnome Shortcut Plugin\n" "Let's you control the player with Gnome's shortcuts.\n" @@ -2505,497 +1561,469 @@ "Copyright (C) 2007-2008 Sascha Hlusiak \n" "\n" msgstr "" -"Wtyczka Gnome Shortcut\n" -"Kontroluj swój odtwarzacz za pomocÄ… skrótów klawiaturowych Gnome.\n" +"Wtyczka skróty GNOME\n" +"Steruje odtwarzaczem za pomocÄ… skrótów klawiaturowych Å›rodowiska GNOME.\n" "\n" "Copyright (C) 2007-2008 Sascha Hlusiak \n" "\n" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:273 -msgid "Open Files" -msgstr "Otwórz pliki" - -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 -msgid "Add Files" -msgstr "Dodaj pliki" - -#: src/gntui/gntui.c:271 -msgid "Audacious2" -msgstr "Audacious2" - -#: src/gntui/gntui.c:312 -msgid "gnt interface" -msgstr "interfejs gnt" - -#: src/gtkui/actions.c:257 src/skins/ui_main.c:818 -msgid "Can't jump to time when no track is being played.\n" -msgstr "Nie można przeskoczyć do czasu, gdy żaden utwór nie jest odtwarzany.\n" - -#: src/gtkui/actions.c:272 src/gtkui/ui_manager.c:204 -#: src/gtkui/ui_manager.c:205 src/skins/ui_main.c:833 -#: src/skins/ui_manager.c:410 src/skins/ui_manager.c:411 -msgid "Jump to Time" -msgstr "Przeskocz do czasu" +#: src/gtkui/columns.c:36 +msgid "Entry number" +msgstr "Numer porzÄ…dkowy" -#: src/gtkui/actions.c:289 src/skins/ui_main.c:854 -msgid "minutes:seconds" -msgstr "minuty:sekundy" +#: src/gtkui/columns.c:36 src/search-tool/search-tool.c:43 +msgid "Title" +msgstr "TytuÅ‚" -#: src/gtkui/actions.c:299 src/skins/ui_main.c:864 -msgid "Track length:" -msgstr "DÅ‚ugość utworu:" +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:42 +msgid "Artist" +msgstr "Wykonawca" + +#: src/gtkui/columns.c:37 +msgid "Year" +msgstr "Rok" -#: src/gtkui/actions.c:610 src/skins/ui_playlist.c:648 -#, c-format -msgid "Error writing playlist \"%s\": %s" -msgstr "BÅ‚Ä…d zapisywania playlisty \"%s\": %s" +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:43 +msgid "Album" +msgstr "Album" -#: src/gtkui/actions.c:625 src/skins/ui_playlist.c:670 -#, c-format -msgid "%s already exist. Continue?" -msgstr "%s już istnieje. Kontynuować?" +#: src/gtkui/columns.c:37 +msgid "Track" +msgstr "Numer Å›cieżki" + +#: src/gtkui/columns.c:37 +msgid "Queue position" +msgstr "Pozycja w kolejce" + +#: src/gtkui/columns.c:38 +msgid "Length" +msgstr "Czas trwania" -#: src/gtkui/actions.c:651 src/skins/ui_manager.c:214 -msgid "Export Playlist" -msgstr "Eksportuj listÄ™ odtwarzania" +#: src/gtkui/columns.c:38 +msgid "File path" +msgstr "PoÅ‚ożenie pliku" -#: src/gtkui/actions.c:723 src/skins/ui_manager.c:211 -msgid "Import Playlist" -msgstr "Importuj listÄ™ odtwarzania" +#: src/gtkui/columns.c:38 +msgid "File name" +msgstr "Nazwa pliku" -#: src/gtkui/ui_gtk.c:72 -msgid "GTK Interface" -msgstr "Interfejs GTK" +#: src/gtkui/columns.c:38 +msgid "Custom title" +msgstr "WÅ‚asny tytuÅ‚ (z ustawieÅ„)" + +#: src/gtkui/columns.c:39 +msgid "Bitrate" +msgstr "Tempo bitowe" + +#: src/gtkui/columns.c:278 +msgid "Choose Columns" +msgstr "Wybierz kolumny" + +#: src/gtkui/columns.c:292 +msgid "Available:" +msgstr "DostÄ™pne:" + +#: src/gtkui/columns.c:326 +msgid "Chosen:" +msgstr "Wybrane:" + +#: src/gtkui/layout.c:122 +msgid "Dock at Left" +msgstr "Zaczep po lewej" + +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "Zaczep po prawej" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "Zaczep na górze" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "Zaczep na dole" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "Odczep" + +#: src/gtkui/layout.c:123 src/ladspa/plugin.c:644 +msgid "Disable" +msgstr "WyÅ‚Ä…cz" + +#: src/gtkui/menus.c:131 +msgid "_Open Files ..." +msgstr "_Otwórz..." + +#: src/gtkui/menus.c:132 +msgid "Open _URL ..." +msgstr "Otwórz adres _URL..." + +#: src/gtkui/menus.c:133 +msgid "_Add Files ..." +msgstr "_Dodaj..." + +#: src/gtkui/menus.c:134 +msgid "Add U_RL ..." +msgstr "Dodaj adres U_RL..." + +#: src/gtkui/menus.c:136 +msgid "A_bout ..." +msgstr "_O programie..." + +#: src/gtkui/menus.c:137 +msgid "_Preferences ..." +msgstr "_Preferencje..." -#: src/gtkui/ui_gtk.c:281 src/skins/ui_main.c:388 -#, c-format -msgid "%s - Audacious" -msgstr "%s - Audacious" +#: src/gtkui/menus.c:138 src/skins/ui_manager.c:406 +msgid "_Quit" +msgstr "Za_koÅ„cz" -#: src/gtkui/ui_gtk.c:287 src/skins/ui_main.c:390 src/skins/ui_main.c:2166 -msgid "Audacious" -msgstr "Audacious" +#: src/gtkui/menus.c:141 +msgid "_Play" +msgstr "_Rozpocznij" -#: src/gtkui/ui_manager.c:35 src/gtkui/ui_manager.c:36 -#: src/skins/ui_manager.c:53 src/skins/ui_manager.c:54 -msgid "Stop after Current Song" -msgstr "Zatrzymaj po tym utworze" +#: src/gtkui/menus.c:142 +msgid "Paus_e" +msgstr "_Wstrzymaj" -#: src/gtkui/ui_manager.c:38 src/gtkui/ui_manager.c:39 -#: src/skins/ui_manager.c:59 src/skins/ui_manager.c:60 -msgid "Repeat" -msgstr "Powtarzaj" +#: src/gtkui/menus.c:143 +msgid "_Stop" +msgstr "_Zatrzymaj" -#: src/gtkui/ui_manager.c:41 src/gtkui/ui_manager.c:42 -#: src/skins/ui_manager.c:62 src/skins/ui_manager.c:63 -msgid "Shuffle" -msgstr "Losuj" +#: src/gtkui/menus.c:144 +msgid "Pre_vious" +msgstr "P_oprzednie nagranie" -#: src/gtkui/ui_manager.c:44 src/gtkui/ui_manager.c:45 -#: src/skins/ui_manager.c:65 src/skins/ui_manager.c:66 -msgid "No Playlist Advance" -msgstr "Odtwarzaj pojedynczo" +#: src/gtkui/menus.c:145 +msgid "_Next" +msgstr "_NastÄ™pne nagranie" -#: src/gtkui/ui_manager.c:47 -msgid "Show playlists" -msgstr "Pokaż listy odtwarzania" - -#: src/gtkui/ui_manager.c:48 -msgid "Show/hide playlists" -msgstr "Pokaż/ukryj playlisty" - -#: src/gtkui/ui_manager.c:50 -msgid "Show infoarea" -msgstr "Pokaż obszar informacji" - -#: src/gtkui/ui_manager.c:51 -msgid "Show/hide infoarea" -msgstr "Pokaż/ukryj obszar informacji" - -#: src/gtkui/ui_manager.c:53 -msgid "Show main menu" -msgstr "Pokaż menu główne" - -#: src/gtkui/ui_manager.c:54 -msgid "Show/hide main menu" -msgstr "Pokaż/ukryj menu główne" - -#: src/gtkui/ui_manager.c:56 -msgid "Show statusbar" -msgstr "Pokaż pasek stanu" - -#: src/gtkui/ui_manager.c:57 -msgid "Show/hide statusbar" -msgstr "Pokaż/ukryj pasek stanu" +#: src/gtkui/menus.c:147 +msgid "_Repeat" +msgstr "Po_wtarzanie" -#: src/gtkui/ui_manager.c:69 src/gtkui/ui_manager.c:70 -#: src/skins/ui_manager.c:170 src/skins/ui_manager.c:171 -msgid "Pause" -msgstr "Pauza" +#: src/gtkui/menus.c:148 +msgid "S_huffle" +msgstr "_Losowanie kolejnoÅ›ci" -#: src/gtkui/ui_manager.c:72 src/gtkui/ui_manager.c:73 src/hotkey/gui.c:73 -#: src/skins/ui_manager.c:173 src/skins/ui_manager.c:174 -msgid "Stop" -msgstr "Stop" +#: src/gtkui/menus.c:149 +msgid "N_o Playlist Advance" +msgstr "_Pojedynczo" -#: src/gtkui/ui_manager.c:75 src/gtkui/ui_manager.c:76 -#: src/skins/ui_manager.c:176 src/skins/ui_manager.c:177 -msgid "Previous" -msgstr "Poprzedni" +#: src/gtkui/menus.c:150 +msgid "Stop _After This Song" +msgstr "_Zatrzymanie po tym nagraniu" -#: src/gtkui/ui_manager.c:78 src/gtkui/ui_manager.c:79 -#: src/skins/ui_manager.c:179 src/skins/ui_manager.c:180 -msgid "Next" -msgstr "NastÄ™pny" +#: src/gtkui/menus.c:152 src/gtkui/menus.c:212 +msgid "Song _Info ..." +msgstr "_Informacje o nagraniu..." -#: src/gtkui/ui_manager.c:84 src/skins/ui_manager.c:197 -msgid "Playlist" -msgstr "Playlista" +#: src/gtkui/menus.c:153 +msgid "Jump to _Time ..." +msgstr "Przejdź do _czasu..." -#: src/gtkui/ui_manager.c:86 src/gtkui/ui_manager.c:87 -#: src/skins/ui_manager.c:199 src/skins/ui_manager.c:200 -msgid "New Playlist" -msgstr "Nowa playlista" +#: src/gtkui/menus.c:154 +msgid "_Jump to Song ..." +msgstr "Przejdź do _nagrania..." -#: src/gtkui/ui_manager.c:89 src/gtkui/ui_manager.c:90 -#: src/skins/ui_manager.c:208 src/skins/ui_manager.c:209 -msgid "Delete Playlist" -msgstr "UsuÅ„ playlistÄ™" +#: src/gtkui/menus.c:157 +msgid "By Track _Number" +msgstr "WedÅ‚ug _numeru Å›cieżki" -#: src/gtkui/ui_manager.c:92 -msgid "Import Playlist ..." -msgstr "Importuj playlistÄ™ ..." +#: src/gtkui/menus.c:158 +msgid "By _Title" +msgstr "WedÅ‚ug _tytuÅ‚u" -#: src/gtkui/ui_manager.c:93 src/skins/ui_manager.c:212 -msgid "Loads a playlist file into the selected playlist." -msgstr "Åaduje playlistÄ™ z pliku do obecnej listy" +#: src/gtkui/menus.c:159 +msgid "By _Artist" +msgstr "WedÅ‚ug _wykonawcy" -#: src/gtkui/ui_manager.c:95 -msgid "Export Playlist ..." -msgstr "Eksportuj playlistÄ™ ..." +#: src/gtkui/menus.c:160 +msgid "By A_lbum" +msgstr "WedÅ‚ug _albumu" -#: src/gtkui/ui_manager.c:96 src/skins/ui_manager.c:215 -msgid "Saves the selected playlist." -msgstr "Zapisuje wybrane listy odtwarzania" +#: src/gtkui/menus.c:161 +msgid "By Release _Date" +msgstr "WedÅ‚ug _daty wydania" -#: src/gtkui/ui_manager.c:98 src/skins/ui_manager.c:217 -msgid "Save All Playlists" -msgstr "Zapisz wszystkie playlisty" +#: src/gtkui/menus.c:162 +msgid "By _File Path" +msgstr "WedÅ‚ug p_oÅ‚ożenia pliku" -#: src/gtkui/ui_manager.c:99 src/skins/ui_manager.c:218 -msgid "" -"Saves all the playlists that are open. Note that this is done automatically " -"when Audacious quits." -msgstr "" -"Zapisuje wszystkie otwarte listy odtwarzania. Akcja ta jest również " -"wykonywana automatycznie przy zamykaniu programu." +#: src/gtkui/menus.c:163 +msgid "By _Custom Title" +msgstr "WedÅ‚ug wÅ‚a_snego tytuÅ‚u" -#: src/gtkui/ui_manager.c:103 -msgid "Refresh" -msgstr "OdÅ›wież" +#: src/gtkui/menus.c:165 +msgid "R_everse Order" +msgstr "_Odwróć kolejność" -#: src/gtkui/ui_manager.c:104 src/skins/ui_manager.c:223 -msgid "Refreshes metadata associated with a playlist entry." -msgstr "OdÅ›wieża metadane zwiÄ…zane z wpisem na liÅ›cie." +#: src/gtkui/menus.c:166 +msgid "_Random Order" +msgstr "Wy_losuj kolejność" -#: src/gtkui/ui_manager.c:107 -msgid "Playlist Manager" -msgstr "Menedżer playlist" +#: src/gtkui/menus.c:169 src/gtkui/menus.c:214 +msgid "_Refresh" +msgstr "_Wczytaj ponownie" -#: src/gtkui/ui_manager.c:108 src/skins/ui_manager.c:227 -msgid "Opens the playlist manager." -msgstr "Otwiera menedżera list odtwarzania" +#: src/gtkui/menus.c:170 +msgid "Remove _Unavailable Files" +msgstr "UsuÅ„ _niedostÄ™pne Å›cieżki" -#: src/gtkui/ui_manager.c:111 -msgid "Add URL ..." -msgstr "Dodaj URL ..." +#: src/gtkui/menus.c:172 +msgid "_Sort" +msgstr "_Sortowanie" -#: src/gtkui/ui_manager.c:112 src/skins/ui_manager.c:237 -msgid "Adds a remote track to the playlist." -msgstr "Dodaje zdalny utwór do playlisty." +#: src/gtkui/menus.c:174 +msgid "_New" +msgstr "_Nowa" -#: src/gtkui/ui_manager.c:115 -msgid "Add Files ..." -msgstr "Dodaj pliki ..." +#: src/gtkui/menus.c:175 src/gtkui/menus.c:225 +msgid "_Close" +msgstr "_Zamknij" -#: src/gtkui/ui_manager.c:116 src/skins/ui_manager.c:241 -msgid "Adds files to the playlist." -msgstr "Dodaje pliki do playlisty." +#: src/gtkui/menus.c:177 +msgid "_Import ..." +msgstr "_Importuj..." + +#: src/gtkui/menus.c:178 +msgid "_Export ..." +msgstr "_Eksportuj..." + +#: src/gtkui/menus.c:180 +msgid "_Playlist Manager ..." +msgstr "_Menedżer list odtwarzania..." + +#: src/gtkui/menus.c:181 +msgid "_Queue Manager ..." +msgstr "Menedżer _kolejki..." + +#: src/gtkui/menus.c:184 +msgid "Volume _Up" +msgstr "_ZwiÄ™ksz gÅ‚oÅ›ność" + +#: src/gtkui/menus.c:185 +msgid "Volume _Down" +msgstr "Z_mniejsz gÅ‚oÅ›ność" + +#: src/gtkui/menus.c:187 +msgid "_Equalizer" +msgstr "_Korektor graficzny" + +#: src/gtkui/menus.c:189 +msgid "E_ffects" +msgstr "_Efekty" + +#: src/gtkui/menus.c:192 +msgid "_Interface" +msgstr "_Interfejs" + +#: src/gtkui/menus.c:193 +msgid "_Visualizations" +msgstr "_Wizualizacje" + +#: src/gtkui/menus.c:195 +msgid "Show _Menu Bar" +msgstr "Pasek _menu" + +#: src/gtkui/menus.c:196 +msgid "Show I_nfo Bar" +msgstr "Pasek _informacji" + +#: src/gtkui/menus.c:197 +msgid "Show _Status Bar" +msgstr "Pasek _stanu" + +#: src/gtkui/menus.c:199 +msgid "Show Column _Headers" +msgstr "_Nagłówki kolumn" + +#: src/gtkui/menus.c:200 +msgid "Choose _Columns ..." +msgstr "Wybierz _kolumny ..." + +#: src/gtkui/menus.c:201 +msgid "Scrol_l on Song Change" +msgstr "_Przewijanie listy po zmianie nagrania" + +#: src/gtkui/menus.c:204 +msgid "_File" +msgstr "_Plik" + +#: src/gtkui/menus.c:205 +msgid "_Playback" +msgstr "_Odtwarzanie" + +#: src/gtkui/menus.c:206 +msgid "P_laylist" +msgstr "_Lista" + +#: src/gtkui/menus.c:207 src/gtkui/menus.c:221 +msgid "_Services" +msgstr "W_tyczki" + +#: src/gtkui/menus.c:208 +msgid "_Output" +msgstr "_DźwiÄ™k" + +#: src/gtkui/menus.c:209 +msgid "_View" +msgstr "_Widok" + +#: src/gtkui/menus.c:213 +msgid "_Queue/Unqueue" +msgstr "_Dodaj/usuÅ„ kolejkÄ™" + +#: src/gtkui/menus.c:216 +msgid "Cu_t" +msgstr "_Wytnij" + +#: src/gtkui/menus.c:217 +msgid "_Copy" +msgstr "S_kopiuj" + +#: src/gtkui/menus.c:218 +msgid "_Paste" +msgstr "Wk_lej" + +#: src/gtkui/menus.c:219 +msgid "Select _All" +msgstr "_Zaznacz wszystko" + +#: src/gtkui/menus.c:224 +msgid "_Rename" +msgstr "ZmieÅ„ _nazwÄ™" -#: src/gtkui/ui_manager.c:119 src/skins/ui_manager.c:264 -msgid "Remove All" -msgstr "UsuÅ„ wszystkie" +#: src/gtkui/ui_gtk.c:95 +msgid "GTK Interface" +msgstr "Interfejs GTK" -#: src/gtkui/ui_manager.c:120 src/skins/ui_manager.c:265 -msgid "Removes all entries from the playlist." -msgstr "Usuwa wszystkie wpisy z playlisty." +#: src/gtkui/ui_gtk.c:156 src/skins/ui_main.c:303 +#, c-format +msgid "%s - Audacious" +msgstr "%s - Audacious" -#: src/gtkui/ui_manager.c:123 src/skins/ui_manager.c:290 -msgid "Remove Unselected" -msgstr "UsuÅ„ niezaznaczone" +#: src/gtkui/ui_gtk.c:162 +msgid "Buffering ..." +msgstr "Buforowanie ..." -#: src/gtkui/ui_manager.c:124 src/skins/ui_manager.c:291 -msgid "Remove unselected entries from the playlist." -msgstr "Usuwa niezaznaczone wpisy z playlisty." +#: src/gtkui/ui_gtk.c:165 src/skins/ui_main.c:305 src/skins/ui_main.c:1504 +msgid "Audacious" +msgstr "Audacious" -#: src/gtkui/ui_manager.c:127 src/skins/ui_manager.c:294 -msgid "Remove Selected" -msgstr "UsuÅ„ zaznaczone" +#: src/gtkui/ui_gtk.c:216 src/skins/plugin.c:190 +msgid "Error" +msgstr "BÅ‚Ä…d" -#: src/gtkui/ui_manager.c:128 src/skins/ui_manager.c:295 -msgid "Remove selected entries from the playlist." -msgstr "Usuwa zaznaczone wpisy z playlisty" +#: src/gtkui/ui_playlist_notebook.c:97 +msgid "Close" +msgstr "" -#: src/gtkui/ui_manager.c:131 -msgid "Sort" -msgstr "Sortuj" +#: src/gtkui/ui_statusbar.c:105 src/skins/ui_main.c:460 +msgid "mono" +msgstr "mono" -#: src/gtkui/ui_manager.c:132 src/skins/ui_manager.c:330 -#: src/skins/ui_manager.c:360 -msgid "By Track Number" -msgstr "Numer utworu" +#: src/gtkui/ui_statusbar.c:107 src/skins/ui_main.c:459 +msgid "stereo" +msgstr "stereo" -#: src/gtkui/ui_manager.c:134 src/skins/ui_manager.c:278 -#: src/skins/ui_manager.c:306 src/skins/ui_manager.c:336 -msgid "By Title" -msgstr "TytuÅ‚" +#: src/gtkui/ui_statusbar.c:109 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d kanaÅ‚" +msgstr[1] "%d kanaÅ‚y" +msgstr[2] "%d kanałów" -#: src/gtkui/ui_manager.c:136 src/skins/ui_manager.c:314 -#: src/skins/ui_manager.c:344 -msgid "By Artist" -msgstr "Artysta" +#: src/gtkui/ui_statusbar.c:124 +#, c-format +msgid "%d kbps" +msgstr "%d kb/s" -#: src/gtkui/ui_manager.c:138 src/skins/ui_manager.c:310 -#: src/skins/ui_manager.c:340 -msgid "By Album" -msgstr "Album" +#: src/hotkey/gui.c:71 +msgid "Previous Track" +msgstr "Poprzedni utwór" -#: src/gtkui/ui_manager.c:140 -msgid "By File Path" -msgstr "PoÅ‚ożenie pliku" +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "Rozpocznij" -#: src/gtkui/ui_manager.c:142 -msgid "Reverse Order" -msgstr "Odwróć kolejność" - -#: src/gtkui/ui_manager.c:147 -msgid "Output" -msgstr "WyjÅ›cie" - -#: src/gtkui/ui_manager.c:149 src/modplug/gui/interface.cxx:572 -msgid "Effects" -msgstr "Efekty" +#: src/hotkey/gui.c:73 +msgid "Pause/Resume" +msgstr "Wstrzymaj/wznów" -#: src/gtkui/ui_manager.c:151 -msgid "Equalizer" -msgstr "Korektor graficzny" - -#: src/gtkui/ui_manager.c:156 src/skins/ui_manager.c:232 -msgid "View" -msgstr "Widok" - -#: src/gtkui/ui_manager.c:157 src/skins/ui_manager.c:233 -msgid "Interface" -msgstr "Interfejs" - -#: src/gtkui/ui_manager.c:164 src/skins/ui_manager.c:370 -msgid "File" -msgstr "Plik" - -#: src/gtkui/ui_manager.c:167 -msgid "Components" -msgstr "Komponenty" - -#: src/gtkui/ui_manager.c:169 src/gtkui/ui_manager.c:172 -#: src/skins/ui_manager.c:375 src/skins/ui_manager.c:378 -msgid "View Track Details" -msgstr "Pokaż szczegóły utworu" - -#: src/gtkui/ui_manager.c:170 src/gtkui/ui_manager.c:173 -#: src/skins/ui_manager.c:376 src/skins/ui_manager.c:379 -msgid "View track details" -msgstr "Pokaż szczegóły utworu" - -#: src/gtkui/ui_manager.c:175 src/gtkui/ui_manager.c:176 -#: src/skins/ui_manager.c:381 src/skins/ui_manager.c:382 -msgid "About Audacious" -msgstr "O Audacious" - -#: src/gtkui/ui_manager.c:178 -msgid "Open Files ..." -msgstr "Otwórz pliki ..." - -#: src/gtkui/ui_manager.c:179 src/skins/ui_manager.c:385 -msgid "Load and play a file" -msgstr "Åaduje i odtwarza wybrany plik" - -#: src/gtkui/ui_manager.c:181 -msgid "Open URL ..." -msgstr "Otwórz URL ..." - -#: src/gtkui/ui_manager.c:182 src/skins/ui_manager.c:388 -msgid "Play media from the selected location" -msgstr "Odtwarza utwór z wybranej lokalizacji" - -#: src/gtkui/ui_manager.c:184 src/skins/ui_manager.c:390 -msgid "Plugin services" -msgstr "Wtyczki" - -#: src/gtkui/ui_manager.c:186 src/skins/ui_manager.c:392 -msgid "Preferences" -msgstr "Ustawienia" - -#: src/gtkui/ui_manager.c:187 src/skins/ui_manager.c:393 -msgid "Open preferences window" -msgstr "Otwiera okno preferencji" - -#: src/gtkui/ui_manager.c:189 src/skins/ui_manager.c:395 -msgid "_Quit" -msgstr "_Zamknij" - -#: src/gtkui/ui_manager.c:190 src/skins/ui_manager.c:396 -msgid "Quit Audacious" -msgstr "Zamyka Audacious" - -#: src/gtkui/ui_manager.c:192 src/gtkui/ui_manager.c:193 -#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 -msgid "Set A-B" -msgstr "Ustaw A-B" - -#: src/gtkui/ui_manager.c:195 src/gtkui/ui_manager.c:196 -#: src/skins/ui_manager.c:401 src/skins/ui_manager.c:402 -msgid "Clear A-B" -msgstr "Wyczyść A-B" - -#: src/gtkui/ui_manager.c:198 src/gtkui/ui_manager.c:199 -#: src/skins/ui_manager.c:404 src/skins/ui_manager.c:405 -msgid "Jump to Playlist Start" -msgstr "Przeskocz do poczÄ…tku playlisty" - -#: src/gtkui/ui_manager.c:201 src/gtkui/ui_manager.c:202 src/hotkey/gui.c:80 -#: src/skins/ui_manager.c:407 src/skins/ui_manager.c:408 -msgid "Jump to File" -msgstr "Przeskocz do pliku" - -#: src/gtkui/ui_manager.c:207 src/skins/ui_manager.c:413 -msgid "Queue Toggle" -msgstr "PrzeÅ‚Ä…cz kolejkÄ™" - -#: src/gtkui/ui_manager.c:208 src/skins/ui_manager.c:414 -msgid "Enables/disables the entry in the playlist's queue." -msgstr "Dodaje/usuwa wpis z kolejki listy odtwarzania" - -#: src/gtkui/ui_manager.c:211 src/skins/ui_manager.c:417 -msgid "Copy" -msgstr "Kopiuj" - -#: src/gtkui/ui_manager.c:214 src/skins/ui_manager.c:419 -msgid "Cut" -msgstr "Wytnij" - -#: src/gtkui/ui_manager.c:217 src/skins/ui_manager.c:421 -msgid "Paste" -msgstr "Wklej" - -#: src/gtkui/ui_manager.c:220 src/skins/ui_manager.c:254 -msgid "Select All" -msgstr "Zaznacz wszystko" - -#: src/gtkui/ui_manager.c:221 src/skins/ui_manager.c:255 -msgid "Selects all of the playlist entries." -msgstr "Zaznacza wszystkie wpisy na playliÅ›cie" - -#: src/gtkui/ui_manager.c:224 src/skins/ui_manager.c:258 -msgid "Select None" -msgstr "Wyczyść zaznaczenie" - -#: src/gtkui/ui_manager.c:225 src/skins/ui_manager.c:259 -msgid "Deselects all of the playlist entries." -msgstr "Odznacza wszystkie wpisy na playliÅ›cie" - -#: src/gtkui/ui_statusbar.c:91 src/skins/ui_main.c:609 -msgid "mono" -msgstr "mono" - -#: src/gtkui/ui_statusbar.c:94 src/skins/ui_main.c:608 -msgid "stereo" -msgstr "stereo" - -#: src/gtkui/ui_statusbar.c:97 -#, c-format -msgid "%d channels" -msgstr "%d kanaÅ‚y" - -#: src/gtkui/ui_statusbar.c:101 -#, c-format -msgid "%s: %d kbps, %d Hz, %s" -msgstr "%s: %d kbps, %d Hz, %s" - -#: src/hotkey/gui.c:70 -msgid "Previous Track" -msgstr "Poprzedni utwór" - -#: src/hotkey/gui.c:72 -msgid "Pause/Resume" -msgstr "Pauzuj/Wznów" +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +msgid "Stop" +msgstr "Zatrzymaj" -#: src/hotkey/gui.c:74 +#: src/hotkey/gui.c:75 msgid "Next Track" msgstr "NastÄ™pny utwór" -#: src/hotkey/gui.c:75 +#: src/hotkey/gui.c:76 msgid "Forward 5 Seconds" msgstr "PrzewiÅ„ do przodu o 5 sekund" -#: src/hotkey/gui.c:76 +#: src/hotkey/gui.c:77 msgid "Rewind 5 Seconds" msgstr "PrzewiÅ„ do tyÅ‚u o 5 skund" -#: src/hotkey/gui.c:77 +#: src/hotkey/gui.c:78 msgid "Mute" msgstr "Wycisz" -#: src/hotkey/gui.c:78 +#: src/hotkey/gui.c:79 msgid "Volume Up" msgstr "ZwiÄ™ksz gÅ‚oÅ›ność" -#: src/hotkey/gui.c:79 +#: src/hotkey/gui.c:80 msgid "Volume Down" msgstr "Zmniejsz gÅ‚oÅ›ność" -#: src/hotkey/gui.c:81 +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Jump to File" +msgstr "Przejdź do nagrania" + +#: src/hotkey/gui.c:82 msgid "Toggle Player Windows" msgstr "PrzeÅ‚Ä…cz okno odtwarzacza" -#: src/hotkey/gui.c:82 +#: src/hotkey/gui.c:83 msgid "Show On-Screen-Display" -msgstr "Pokaż OSD" +msgstr "Pokaż menu ekranowe" + +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "PrzeÅ‚Ä…cz powtarzanie" -#: src/hotkey/gui.c:92 +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "PrzeÅ‚Ä…cz losowanie" + +#: src/hotkey/gui.c:95 msgid "(none)" -msgstr "(---)" +msgstr "(brak)" -#: src/hotkey/gui.c:229 +#: src/hotkey/gui.c:232 msgid "" -"It is not recommended to bind the primary mouse buttons without " -"modificators.\n" +"It is not recommended to bind the primary mouse buttons without modificators.\n" "\n" "Do you want to continue?" msgstr "" -"Niezalecane jest dowiÄ…zywanie podstawowych przycisków myszy bez " -"dodatkowych klawiszy.\n" +"Niezalecane jest dowiÄ…zywanie podstawowych przycisków myszy bez dodatkowych klawiszy.\n" "\n" "Czy chcesz kontynuować?" -#: src/hotkey/gui.c:231 +#: src/hotkey/gui.c:234 msgid "Binding mouse buttons" msgstr "Przyciski dowiÄ…zaÅ„ myszy" -#: src/hotkey/gui.c:381 +#: src/hotkey/gui.c:384 msgid "Global Hotkey Plugin Configuration" msgstr "Konfiguracja wtyczki Global Hotkey" -#: src/hotkey/gui.c:397 +#: src/hotkey/gui.c:400 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." @@ -3003,23 +2031,23 @@ "ProszÄ™ wcisnąć kombinacjÄ™ klawiszy wewnÄ…trz pola\n" "tekstowego. Możesz również użyć przycisków myszy." -#: src/hotkey/gui.c:402 +#: src/hotkey/gui.c:405 msgid "Hotkeys:" msgstr "Skróty klawiszowe:" -#: src/hotkey/gui.c:421 +#: src/hotkey/gui.c:424 msgid "Action:" -msgstr "Akcja:" +msgstr "Czynność:" -#: src/hotkey/gui.c:429 +#: src/hotkey/gui.c:432 msgid "Key Binding:" -msgstr "DowiÄ…zany klawisz:" +msgstr "Skrót klawiszowy:" -#: src/hotkey/gui.c:660 +#: src/hotkey/gui.c:663 msgid "About Global Hotkey Plugin" msgstr "O wtyczce Global Hotkey" -#: src/hotkey/gui.c:661 +#: src/hotkey/gui.c:664 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3048,31 +2076,31 @@ "\t\t\tJeremy Tan \n" "\n" -#: src/jack/configure.c:71 +#: src/jack/configure.c:66 msgid "Connect to all available jack ports" -msgstr "" +msgstr "PoÅ‚Ä…cz ze wszystkimi dostÄ™pnymi portami jack" -#: src/jack/configure.c:78 +#: src/jack/configure.c:73 msgid "Connect only the output ports" -msgstr "" +msgstr "PoÅ‚Ä…cz tylko z portami wyjÅ›ciowymi" -#: src/jack/configure.c:85 +#: src/jack/configure.c:80 msgid "Connect to no ports" -msgstr "" +msgstr "Nie Å‚Ä…cz z żadnymi portami" -#: src/jack/configure.c:103 +#: src/jack/configure.c:98 msgid "jack Plugin configuration" -msgstr "" +msgstr "Konfiguracja wtyczki jack" -#: src/jack/configure.c:121 +#: src/jack/configure.c:116 msgid "Connection mode:" -msgstr "" +msgstr "Tryb poÅ‚Ä…czenia:" -#: src/jack/configure.c:133 +#: src/jack/configure.c:128 msgid "Enable debug printing" -msgstr "" +msgstr "WÅ‚Ä…cz wydruk debugowania" -#: src/jack/jack.c:437 +#: src/jack/jack.c:435 msgid "" "XMMS jack Driver 0.17\n" "\n" @@ -3082,124 +2110,78 @@ "Audacious port by\n" "Giacomo Lozito from develia.org" msgstr "" +"Sterownik XMMS jack 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"Chris Morgan \n" +"\n" +"Port dla Audacious stworzony przez \n" +"Giacomo Lozito z develia.org" -#: src/jack/jack.c:442 +#: src/jack/jack.c:440 msgid "About JACK Output Plugin 0.17" -msgstr "" - -#: src/ladspa/ladspa.c:824 -msgid "This LADSPA plugin has no user controls" -msgstr "" +msgstr "O wtyczce wyjÅ›ciowej JACK 0.17" -#: src/ladspa/ladspa.c:865 src/ladspa/ladspa.c:952 -msgid "Name" -msgstr "" +#: src/ladspa/plugin.c:415 +msgid "About LADSPA Host" +msgstr "O wtyczce LADSPA Host" -#: src/ladspa/ladspa.c:952 -msgid "UID" -msgstr "" +#: src/ladspa/plugin.c:516 +#, c-format +msgid "%s Settings" +msgstr "Ustawienia %s" -#: src/ladspa/ladspa.c:1029 -msgid "Installed plugins" -msgstr "" +#: src/ladspa/plugin.c:584 +msgid "LADSPA Host Settings" +msgstr "Ustawienia LADSPA Host" -#: src/ladspa/ladspa.c:1037 -msgid "Running plugins" -msgstr "" +#: src/ladspa/plugin.c:593 +msgid "Module paths:" +msgstr "Åšcieżki modułów:" -#: src/ladspa/ladspa.c:1052 -msgid "Add" +#: src/ladspa/plugin.c:598 +msgid "" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." msgstr "" +"Możesz rozdzielać wiele Å›cieżek dwukropkiem.\n" +"Podane Å›cieżki sÄ… przeszukiwane wraz z LADSPA_PATH.\n" +"Po dodaniu nowych Å›cieżek wciÅ›nij Enter, aby odszukać nowe wtyczki." -#: src/ladspa/ladspa.c:1055 -msgid "Remove" -msgstr "" +#: src/ladspa/plugin.c:614 +msgid "Available plugins:" +msgstr "DostÄ™pne wtyczki:" -#: src/ladspa/ladspa.c:1066 -msgid "LADSPA Plugin Catalog" -msgstr "" +#: src/ladspa/plugin.c:626 +msgid "Enable" +msgstr "WÅ‚Ä…cz" -#: src/lirc/about.c:63 -msgid "About LIRC Audacious Plugin" -msgstr "" +#: src/ladspa/plugin.c:632 +msgid "Enabled plugins:" +msgstr "WÅ‚Ä…czone wtyczki:" -#: src/lirc/about.c:90 -msgid "LIRC Plugin " -msgstr "" +#: src/ladspa/plugin.c:647 +msgid "Settings" +msgstr "Ustawienia" -#: src/lirc/about.c:92 +#: src/lyricwiki/lyricwiki.c:267 msgid "" "\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" -"\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" -msgstr "" - -#: src/lirc/interface.c:37 -msgid "LIRC plugin settings" -msgstr "" - -#: src/lirc/interface.c:61 -msgid "Reconnect to LIRC server" -msgstr "" - -#: src/lirc/interface.c:68 -msgid "Timeout before reconnecting (seconds): " -msgstr "" - -#: src/lirc/interface.c:75 -msgid "Reconnect" -msgstr "" - -#: src/lirc/interface.c:79 -msgid "Connection" -msgstr "" - -#: src/lirc/lirc.c:82 -#, c-format -msgid "%s: could not init LIRC support\n" +"Looking for lyrics..." msgstr "" +"\n" +"Wyszukiwanie tekstu..." -#: src/lirc/lirc.c:90 -#, c-format +#: src/lyricwiki/lyricwiki.c:304 msgid "" -"%s: could not read LIRC config file\n" -"%s: please read the documentation of LIRC\n" -"%s: how to create a proper config file\n" -msgstr "" - -#: src/lirc/lirc.c:117 -#, c-format -msgid "%s: trying to reconnect...\n" -msgstr "" - -#: src/lirc/lirc.c:332 -#, c-format -msgid "%s: unknown command \"%s\"\n" -msgstr "" - -#: src/lirc/lirc.c:342 -#, c-format -msgid "%s: disconnected from LIRC\n" -msgstr "" - -#: src/lirc/lirc.c:346 -#, c-format -msgid "%s: will try reconnect every %d seconds...\n" +"\n" +"Connecting to lyrics.wikia.com..." msgstr "" +"\n" +"ÅÄ…czenie z lyrics.wikia.com..." -#: src/lyricwiki/lyricwiki.c:244 -msgid "LyricWiki" -msgstr "LyricWiki" - -#: src/lyricwiki/lyricwiki.c:337 +#: src/lyricwiki/lyricwiki.c:377 msgid "" "\n" "No lyrics were found." @@ -3207,11 +2189,11 @@ "\n" "Nie znaleziono żadnych tekstów do piosenki." -#: src/metronom/metronom.c:90 +#: src/metronom/metronom.c:86 msgid "About Metronom" -msgstr "" +msgstr "O wtyczce Metronom" -#: src/metronom/metronom.c:91 +#: src/metronom/metronom.c:87 msgid "" "A Tact Generator by Martin Strauss \n" "\n" @@ -3219,1026 +2201,278 @@ "e.g. tact://77 to play 77 beats per minute\n" "or tact://60*3/4 to play 60 bpm in 3/4 tacts" msgstr "" +"Generator Taktu przez Martin Strauss \n" +"\n" +"Aby go użyć, dodaj URL: tact://beats*num/den\n" +"np. tact://77 by zagrać 77 beat'ów na minutÄ™\n" +"lub tact://60*3/4 by zagrać 60 bpm w 3/4 taktu" -#: src/metronom/metronom.c:145 +#: src/metronom/metronom.c:144 #, c-format msgid "Tact generator: %d bpm" -msgstr "" +msgstr "Generator taktu: %d bpm" -#: src/metronom/metronom.c:147 +#: src/metronom/metronom.c:146 #, c-format msgid "Tact generator: %d bpm %d/%d" -msgstr "" - -#: src/modplug/gui/interface.cxx:137 -msgid "ModPlug Configuration" -msgstr "" - -#: src/modplug/gui/interface.cxx:174 -msgid "16 bit" -msgstr "" - -#: src/modplug/gui/interface.cxx:181 -msgid "8 bit" -msgstr "" - -#: src/modplug/gui/interface.cxx:212 -msgid "Mono (downmix)" -msgstr "" - -#: src/modplug/gui/interface.cxx:241 -msgid "Nearest (fastest)" -msgstr "" - -#: src/modplug/gui/interface.cxx:248 -msgid "Linear (fast)" -msgstr "" - -#: src/modplug/gui/interface.cxx:255 -msgid "Spline (good quality)" -msgstr "" - -#: src/modplug/gui/interface.cxx:262 -msgid "8-tap Fir (extremely high quality)" -msgstr "" - -#: src/modplug/gui/interface.cxx:286 -msgid "96 kHz" -msgstr "" - -#: src/modplug/gui/interface.cxx:293 -msgid "48 kHz" -msgstr "" - -#: src/modplug/gui/interface.cxx:300 -msgid "44 kHz" -msgstr "" - -#: src/modplug/gui/interface.cxx:307 -msgid "22 kHz" -msgstr "" - -#: src/modplug/gui/interface.cxx:315 -msgid "Sampling Rate" -msgstr "" - -#: src/modplug/gui/interface.cxx:349 src/modplug/gui/interface.cxx:411 -#: src/modplug/gui/interface.cxx:477 src/modplug/gui/interface.cxx:539 -msgid "Enable" -msgstr "" - -#: src/modplug/gui/interface.cxx:378 src/modplug/gui/interface.cxx:506 -msgid "Depth" -msgstr "" - -#: src/modplug/gui/interface.cxx:386 src/modplug/gui/interface.cxx:514 -msgid "Delay" -msgstr "" - -#: src/modplug/gui/interface.cxx:394 -msgid "Reverb" -msgstr "" - -#: src/modplug/gui/interface.cxx:440 -msgid "Amount" -msgstr "" - -#: src/modplug/gui/interface.cxx:448 -msgid "Range" -msgstr "" - -#: src/modplug/gui/interface.cxx:456 -msgid "Bass Boost" -msgstr "" - -#: src/modplug/gui/interface.cxx:522 src/mpg123/mpg123.c:174 -msgid "Surround" -msgstr "" - -#: src/modplug/gui/interface.cxx:561 -msgid "" -"Note: Setting the preamp\n" -"too high may cause clipping\n" -"(annoying clicks and pops)!" -msgstr "" - -#: src/modplug/gui/interface.cxx:567 -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "Preamp" -msgstr "" - -#: src/modplug/gui/interface.cxx:601 -msgid "Use Filename as Song Title" -msgstr "" - -#: src/modplug/gui/interface.cxx:606 -msgid "Fast Playlist Info" -msgstr "" - -#: src/modplug/gui/interface.cxx:617 -msgid "Noise Reduction" -msgstr "" - -#: src/modplug/gui/interface.cxx:623 -msgid "Play Amiga MOD" -msgstr "" - -#: src/modplug/gui/interface.cxx:646 -msgid "Don't loop" -msgstr "" +msgstr "Generator taktu: %d bpm %d/%d" -#: src/modplug/gui/interface.cxx:658 -msgid "Loop" -msgstr "" - -#: src/modplug/gui/interface.cxx:671 -msgid "time(s)" -msgstr "" - -#: src/modplug/gui/interface.cxx:677 -msgid "Loop forever" -msgstr "" - -#: src/modplug/gui/interface.cxx:684 -msgid "Looping" -msgstr "" - -#: src/modplug/gui/interface.cxx:859 -msgid "MOD Info" -msgstr "" - -#: src/modplug/gui/interface.cxx:878 -msgid "" -"Filename:\n" -"Title:\n" -"Type:\n" -"Length:\n" -"Speed:\n" -"Tempo:\n" -"Samples:\n" -"Instruments:\n" -"Patterns:\n" -"Channels:" -msgstr "" - -#: src/modplug/gui/interface.cxx:883 -msgid "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" -msgstr "" - -#: src/modplug/gui/interface.cxx:913 -msgid "Samples" -msgstr "" - -#: src/modplug/gui/interface.cxx:938 -msgid "Instruments" -msgstr "" - -#: src/modplug/gui/interface.cxx:959 -msgid "Message" -msgstr "" - -#: src/modplug/gui/main.cxx:51 -msgid "Modplug Input Plugin for Audacious ver" -msgstr "" - -#: src/modplug/gui/main.cxx:52 -msgid "" -"\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." -msgstr "" - -#: src/modplug/gui/main.cxx:55 -msgid "About Modplug" -msgstr "" +#: src/mixer/plugin.c:64 +msgid "About Channel Mixer" +msgstr "O wtyczce Channel Mixer" -#: src/modplug/gui/support.cxx:90 src/modplug/gui/support.cxx:114 -#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 -#, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "" +#: src/mixer/plugin.c:93 +msgid "Channel Mixer Settings" +msgstr "Ustawienia miksera kanałów" -#: src/mtp_up/mtp.c:35 -msgid "Upload selected track(s)" -msgstr "" +#: src/mixer/plugin.c:102 +msgid "Output channels:" +msgstr "KanaÅ‚y wyjÅ›ciowe:" -#: src/mtp_up/mtp.c:291 -msgid "Upload in progress..." -msgstr "" - -#: src/mtp_up/mtp.c:300 -msgid "MTP device handler" -msgstr "" - -#: src/mtp_up/mtp.c:304 -msgid "Disconnect the device" -msgstr "" - -#: src/null/null.c:63 -msgid "Null output plugin " -msgstr "" - -#: src/null/null.c:64 -msgid "" -" by Christian Birchinger \n" -"based on the XMMS plugin by HÃ¥vard KvÃ¥l " -msgstr "" - -#: src/null/null.c:67 -msgid "About Null Output" -msgstr "" - -#: src/null/null.c:93 -msgid "Null output preferences" -msgstr "" - -#: src/null/null.c:102 -msgid "Run in real time" -msgstr "" - -#: src/oss4/configure.c:89 -msgid "1. Default device" -msgstr "" - -#: src/oss4/configure.c:151 -msgid "OSS4 Output Plugin Preferences" -msgstr "" - -#: src/oss4/configure.c:163 src/OSS/configure.c:213 src/sun/configure.c:181 -msgid "Audio device:" -msgstr "" - -#: src/oss4/configure.c:189 src/OSS/configure.c:235 src/OSS/configure.c:276 -msgid "Use alternate device:" -msgstr "" - -#: src/oss4/configure.c:202 -msgid "Save volume between sessions" -msgstr "" - -#: src/oss4/configure.c:206 -msgid "Enable format conversions made by the OSS software." -msgstr "" - -#: src/oss4/plugin.c:54 -msgid "About OSS4 Plugin" -msgstr "" - -#: src/oss4/plugin.c:55 -msgid "" -"OSS4 Output Plugin for Audacious\n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"I would like to thank people on #audacious, especially Tony Vroon and John " -"Lindgren and of course the authors of the previous OSS plugin.\n" -"\n" -"This program is free software: you can redistribute it and/or modify it " -"under the terms of the GNU General Public License as published by the Free " -"Software Foundation, either version 3 of the License, or (at your option) " -"any later version.\n" -"\n" -"This program 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 General Public License for " -"more details.\n" -"\n" -"You should have received a copy of the GNU General Public License along with " -"this program. If not, see .\n" -msgstr "" - -#: src/oss4/utils.c:204 -msgid "OSS4 error" -msgstr "" - -#: src/OSS/configure.c:148 -#, c-format -msgid "Default (%s)" -msgstr "" - -#: src/OSS/configure.c:197 -msgid "OSS Driver configuration" -msgstr "" - -#: src/OSS/configure.c:298 src/sun/configure.c:246 -msgid "Devices" -msgstr "" - -#: src/OSS/configure.c:300 src/sun/configure.c:257 -msgid "Buffering:" -msgstr "" - -#: src/OSS/configure.c:313 src/sun/configure.c:288 -msgid "Pre-buffer (percent):" -msgstr "" - -#: src/OSS/configure.c:324 src/sun/configure.c:302 -msgid "Buffering" -msgstr "" - -#: src/OSS/configure.c:325 -msgid "Mixer Settings:" -msgstr "" - -#: src/OSS/configure.c:331 -msgid "Volume controls Master not PCM" -msgstr "" - -#: src/OSS/configure.c:337 src/sun/configure.c:392 -msgid "Mixer" -msgstr "" - -#: src/OSS/OSS.c:40 -msgid "About OSS Driver" -msgstr "" - -#: src/OSS/OSS.c:41 -msgid "" -"Audacious OSS Driver\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" - -#: src/pulse_audio/pulse_audio.c:691 -msgid "About Audacious PulseAudio Output Plugin" -msgstr "" - -#: src/pulse_audio/pulse_audio.c:692 -msgid "" -"Audacious PulseAudio Output Plugin\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" - -#: src/resample/plugin.c:78 -msgid "About Sample Rate Converter Plugin" -msgstr "" - -#: src/resample/plugin.c:134 -msgid "Sample Rate Converter Preferences" -msgstr "" - -#: src/resample/plugin.c:146 -msgid "Rate mappings:" -msgstr "" - -#: src/resample/plugin.c:169 -msgid "All others:" -msgstr "" - -#: src/resample/plugin.c:181 -msgid "Method:" -msgstr "" - -#: src/scrobbler/configure.c:152 src/scrobbler/configure.c:228 -msgid "Change password" -msgstr "" - -#: src/scrobbler/configure.c:174 -msgid "Services" -msgstr "" - -#: src/scrobbler/configure.c:196 -msgid "Username:" -msgstr "" - -#: src/scrobbler/configure.c:202 -msgid "Password:" -msgstr "" - -#: src/scrobbler/configure.c:210 -msgid "Scrobbler URL:" -msgstr "" - -#: src/scrobbler/configure.c:242 -msgid "Last.FM" -msgstr "" - -#: src/scrobbler/configure.c:287 -msgid "Scrobbler" -msgstr "" - -#: src/scrobbler/plugin.c:213 -msgid "" -"Audacious AudioScrobbler Plugin\n" -"\n" -"Originally created by Audun Hove and Pipian \n" -msgstr "" - -#: src/scrobbler/plugin.c:215 -msgid "About Scrobbler Plugin" -msgstr "" - -#: src/sid/xs_about.c:84 -#, c-format -msgid "About %s" -msgstr "" - -#: src/sid/xs_config.c:322 -msgid " Error" -msgstr "" - -#: src/sid/xs_fileinfo.c:151 -msgid "General info" -msgstr "" - -#: src/sid/xs_fileinfo.c:164 -#, c-format -msgid "Tune #%i: " -msgstr "" - -#: src/sid/xs_interface.c:234 -msgid "Audacious-SID configuration" -msgstr "" - -#: src/sid/xs_interface.c:270 -msgid "8-bit" -msgstr "" - -#: src/sid/xs_interface.c:277 -msgid "16-bit" -msgstr "" - -#: src/sid/xs_interface.c:284 -msgid "Resolution:" -msgstr "" - -#: src/sid/xs_interface.c:315 -msgid "Autopanning" -msgstr "" - -#: src/sid/xs_interface.c:322 -msgid "Channels:" -msgstr "" - -#: src/sid/xs_interface.c:366 -msgid "Samplerate:" -msgstr "" - -#: src/sid/xs_interface.c:383 -msgid "Use oversampling" -msgstr "" - -#: src/sid/xs_interface.c:394 -msgid "Factor:" -msgstr "" - -#: src/sid/xs_interface.c:406 -msgid "Large factors require more CPU-power" -msgstr "" - -#: src/sid/xs_interface.c:412 -msgid "Oversampling:" -msgstr "" - -#: src/sid/xs_interface.c:417 -msgid "Audio" -msgstr "" - -#: src/sid/xs_interface.c:445 -msgid "Force speed" -msgstr "" - -#: src/sid/xs_interface.c:449 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"clock speed/frequency. Otherwise the speed is determined from played file " -"itself." -msgstr "" - -#: src/sid/xs_interface.c:451 -msgid "PAL (50 Hz)" -msgstr "" - -#: src/sid/xs_interface.c:455 -msgid "" -"PAL is the european TV standard, which uses 50Hz vertical refresh frequency. " -"Most of SID-tunes have been made for PAL computers." -msgstr "" - -#: src/sid/xs_interface.c:459 -msgid "NTSC (60 Hz)" -msgstr "" - -#: src/sid/xs_interface.c:463 -msgid "" -"NTSC is the TV standard with 60Hz vertical refresh rate (and other features " -"that differ from PAL). It is mainly used in United States, Japan and certain " -"other countries." -msgstr "" - -#: src/sid/xs_interface.c:467 -msgid "Clock speed:" -msgstr "" - -#: src/sid/xs_interface.c:484 -msgid "Force model" -msgstr "" - -#: src/sid/xs_interface.c:488 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"SID-chip model. Otherwise the preferred SID model is determined from the " -"file (if PSIDv2NG type) or if not available, this setting is used." -msgstr "" - -#: src/sid/xs_interface.c:490 -msgid "MOS 6581" -msgstr "" - -#: src/sid/xs_interface.c:494 -msgid "" -"MOS/CSG 6581 is the earlier major version of SID chip. It differs from 8580 " -"in few ways, having much fuller filter (which, due to design error, is never " -"same between two different SID-chips) and has the \"volume adjustment bug\", " -"which enables playing of digital samples." -msgstr "" - -#: src/sid/xs_interface.c:498 -msgid "MOS 8580" -msgstr "" - -#: src/sid/xs_interface.c:505 -msgid "SID model:" -msgstr "" - -#: src/sid/xs_interface.c:522 -msgid "SIDPlay 1 (frame-based)" -msgstr "" - -#: src/sid/xs_interface.c:526 -msgid "" -"Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most " -"cases, though." -msgstr "" - -#: src/sid/xs_interface.c:530 -msgid "SIDPlay 2 (cycle-based)" -msgstr "" - -#: src/sid/xs_interface.c:534 -msgid "" -"Use libSIDPlay 2.x emulation, which requires powerful CPU due to more exact " -"emulation." -msgstr "" - -#: src/sid/xs_interface.c:538 -msgid "Emulation library selection:" -msgstr "" - -#: src/sid/xs_interface.c:555 -msgid "Real C64 (SIDPlay 2 only)" -msgstr "" - -#: src/sid/xs_interface.c:562 -msgid "Bank switching" -msgstr "" - -#: src/sid/xs_interface.c:569 -msgid "Transparent ROM" -msgstr "" - -#: src/sid/xs_interface.c:576 -msgid "PlaySID environment" -msgstr "" - -#: src/sid/xs_interface.c:583 -msgid "Memory mode:" -msgstr "" - -#: src/sid/xs_interface.c:588 -msgid "Emu#1" -msgstr "" - -#: src/sid/xs_interface.c:611 -msgid "Optimization mode (faster, inaccurate)" -msgstr "" - -#: src/sid/xs_interface.c:615 -msgid "" -"This setting can be used to enable libSIDPlay2's \"optimization mode\", " -"which in downgrades the emulation from cycle-exact to something similar to " -"frame-exact. The result is lower CPU usage, but worse accuracy." -msgstr "" - -#: src/sid/xs_interface.c:617 -msgid "reSID-emulation" -msgstr "" - -#: src/sid/xs_interface.c:621 -msgid "" -"reSID is the software SID-chip simulator based on SID reverse-engineering, " -"created by Dag Lem. It is probably the closest thing to real SID available " -"as software-only emulation." -msgstr "" - -#: src/sid/xs_interface.c:625 -msgid "HardSID" -msgstr "" - -#: src/sid/xs_interface.c:629 -msgid "" -"HardSID is a EISA/PCI card for PC-compatibles, which can be fitted with a " -"real SID-chip. Software can be used to control the HardSID and combined with " -"software emulation of rest of C64 via libSIDPlay2 HardSID can be used to " -"achieve \"near 100%\" similarity to real C64. For more information, see " -"http://www.hardsid.com/" -msgstr "" - -#: src/sid/xs_interface.c:633 -msgid "SIDPlay 2 options:" -msgstr "" - -#: src/sid/xs_interface.c:650 -msgid "Fast (nearest neighbour)" -msgstr "" - -#: src/sid/xs_interface.c:654 -msgid "" -"Fastest and also worst sounding sampling method, simply picks nearest " -"neighbouring sample." -msgstr "" - -#: src/sid/xs_interface.c:658 -msgid "Linear interpolation" -msgstr "" - -#: src/sid/xs_interface.c:662 -msgid "" -"Uses linear interpolation between samples, yielding higher audio quality " -"with less sampling noise." -msgstr "" - -#: src/sid/xs_interface.c:673 -msgid "Resampling (FIR)" -msgstr "" - -#: src/sid/xs_interface.c:680 -msgid "reSID sampling options:" -msgstr "" - -#: src/sid/xs_interface.c:685 -msgid "Emu#2" -msgstr "" - -#: src/sid/xs_interface.c:697 -msgid "Emulate filters" -msgstr "" - -#: src/sid/xs_interface.c:701 -msgid "" -"This option enables emulation of SID filter. The filter is an essential part " -"of SID's sound capacity, but accurate emulation of it may require quite much " -"CPU power. However, if filter emulation is disabled, tunes won't sound " -"authentic at all if they utilize the filter." -msgstr "" - -#: src/sid/xs_interface.c:726 -msgid "FS" -msgstr "" - -#: src/sid/xs_interface.c:743 -msgid "FM" -msgstr "" - -#: src/sid/xs_interface.c:760 -msgid "FT" -msgstr "" - -#: src/sid/xs_interface.c:771 -msgid "Reset values" -msgstr "" - -#: src/sid/xs_interface.c:776 -msgid "SIDPlay1" -msgstr "" - -#: src/sid/xs_interface.c:817 -msgid "Export" -msgstr "" - -#: src/sid/xs_interface.c:825 -msgid "Use" -msgstr "" - -#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:430 -msgid "Save" -msgstr "" - -#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:429 -msgid "Import" -msgstr "" - -#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:431 -msgid "Delete" -msgstr "" - -#: src/sid/xs_interface.c:863 -msgid "Filter curve:" -msgstr "" - -#: src/sid/xs_interface.c:868 -msgid "SIDPlay2" -msgstr "" - -#: src/sid/xs_interface.c:874 -msgid "Filters" -msgstr "" - -#: src/sid/xs_interface.c:897 -msgid "Play at least for specified time" -msgstr "" - -#: src/sid/xs_interface.c:901 -msgid "" -"If enabled, the tune is played at least for the specified time, adding " -"silence to the end if necessary." -msgstr "" - -#: src/sid/xs_interface.c:908 src/sid/xs_interface.c:962 -#: src/sid/xs_interface.c:1142 -msgid "Playtime:" -msgstr "" +#: src/mixer/plugin.c:112 +msgid "Changes take effect at the next song change." +msgstr "Zmiany zostanÄ… zastosowane przy przejÅ›ciu do nastÄ™pnego utworu." -#: src/sid/xs_interface.c:928 -msgid "Minimum playtime:" -msgstr "" +#: src/mpg123/mpg123.c:191 +msgid "Surround" +msgstr "Surround" -#: src/sid/xs_interface.c:945 -msgid "Play for specified time maximum" -msgstr "" +#: src/mtp_up/mtp.c:340 +msgid "Upload in progress..." +msgstr "Trwa wgrywanie..." -#: src/sid/xs_interface.c:949 -msgid "" -"If enabled, tune is played until specified duration is reached (aka maximum " -"playtime)." -msgstr "" +#: src/mtp_up/mtp.c:352 +msgid "Upload to MTP Device" +msgstr "Wgraj do urzÄ…dzenia MTP" + +#: src/mtp_up/mtp.c:353 +msgid "Disconnect MTP Device" +msgstr "RozÅ‚Ä…cz urzÄ…dzenie MTP" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Stopped" +msgstr "Zatrzymany" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Audacious is not playing." +msgstr "Audacious nie odtwarza." -#: src/sid/xs_interface.c:951 -msgid "Only when song length is unknown" -msgstr "" +#: src/null/null.c:64 +msgid "Null output plugin " +msgstr "Wtyczka wyjÅ›ciowa Null" -#: src/sid/xs_interface.c:955 +#: src/null/null.c:65 msgid "" -"If enabled, the maximum playtime is applied only if song/tune length is not " -"known." +" by Christian Birchinger \n" +"based on the XMMS plugin by HÃ¥vard KvÃ¥l " msgstr "" +" stworzona przez Christian Birchinger \n" +"bazujÄ…c na wtyczce XMMS napisanej przez HÃ¥vard KvÃ¥l " -#: src/sid/xs_interface.c:982 -msgid "Maximum playtime:" -msgstr "" +#: src/null/null.c:68 +msgid "About Null Output" +msgstr "O wyjÅ›ciu Null" -#: src/sid/xs_interface.c:999 -msgid "Use XSIDPLAY-compatible database" -msgstr "" +#: src/null/null.c:89 +msgid "Null output preferences" +msgstr "Preferencje wyjÅ›cia Null" -#: src/sid/xs_interface.c:1003 -msgid "" -"This option enables using of XSIDPLAY compatible song length database. " -"(Refer to Audacious-SID documentation for more information)" -msgstr "" +#: src/null/null.c:100 +msgid "Run in real time" +msgstr "Uruchomienie w czasie rzeczywistym" -#: src/sid/xs_interface.c:1010 -msgid "DB-file:" -msgstr "" +#: src/oss4/configure.c:81 +msgid "1. Default device" +msgstr "1. DomyÅ›lne urzÄ…dzenie" -#: src/sid/xs_interface.c:1020 -msgid "Database path and filename" -msgstr "" +#: src/oss4/configure.c:138 +msgid "OSS4 Output Plugin Preferences" +msgstr "Preferencje wtyczki wyjÅ›ciowej OSS4" -#: src/sid/xs_interface.c:1027 -msgid "Browse for song length-database file" -msgstr "" +#: src/oss4/configure.c:150 src/OSS/configure.c:194 +msgid "Audio device:" +msgstr "UrzÄ…dzenie dźwiÄ™kowe:" -#: src/sid/xs_interface.c:1049 -msgid "Song length database:" -msgstr "" +#: src/oss4/configure.c:178 src/OSS/configure.c:217 src/OSS/configure.c:260 +msgid "Use alternate device:" +msgstr "Użyj alternatywnego urzÄ…dzenia:" -#: src/sid/xs_interface.c:1054 -msgid "Songlength" -msgstr "" +#: src/oss4/configure.c:193 +msgid "Save volume between sessions" +msgstr "Zapisz gÅ‚oÅ›ność pomiÄ™dzy sesjami" -#: src/sid/xs_interface.c:1072 -msgid "Override generic Tuplez format string" -msgstr "" +#: src/oss4/configure.c:197 +msgid "Enable format conversions made by the OSS software." +msgstr "WÅ‚Ä…cz konwersje formatu poprzez oprogramowanie OSS" -#: src/sid/xs_interface.c:1076 -msgid "" -"By enabling this option you can specify a custom Tuplez formatting string " -"for SID-files. The SID-plugin specific Tuplez tags are described shortly " -"below." +#: src/oss4/configure.c:201 +msgid "Enable exclusive mode to prevent virtual mixing." msgstr "" -#: src/sid/xs_interface.c:1087 -msgid "Tuplez format string for SID-files" -msgstr "" +#: src/oss4/plugin.c:51 +msgid "About OSS4 Plugin" +msgstr "O wtyczce OSS4" -#: src/sid/xs_interface.c:1090 -msgid "" -"SID-specific Tuplez fields:\n" -"\n" -"sid-format\t\t- Specific fileformat\n" -"sid-model\t\t- 6581 or 8580\n" -"sid-speed\t\t- Timing or speed: PAL/NTSC/etc.\n" -"\n" -"Other \"special\" fields set:\n" -"\n" -"subsong-num, subsong-id" -msgstr "" +#: src/oss4/utils.c:211 +msgid "OSS4 error" +msgstr "BÅ‚Ä…d OSS4" -#: src/sid/xs_interface.c:1098 -msgid "Song title format:" -msgstr "" +#: src/OSS/configure.c:137 +#, c-format +msgid "Default (%s)" +msgstr "DomyÅ›lny (%s)" -#: src/sid/xs_interface.c:1103 -msgid "Title" -msgstr "" +#: src/OSS/configure.c:178 +msgid "OSS Driver configuration" +msgstr "Konfiguracja sterownika OSS" -#: src/sid/xs_interface.c:1125 -msgid "Add sub-tunes to playlist" -msgstr "" +#: src/OSS/configure.c:281 +msgid "Devices" +msgstr "UrzÄ…dzenia" -#: src/sid/xs_interface.c:1129 -msgid "" -"If enabled, sub-tunes of each file will be added to playlist. If disabled, " -"only the default sub-tune will be added." -msgstr "" +#: src/OSS/configure.c:283 +msgid "Buffering:" +msgstr "Buforowanie:" -#: src/sid/xs_interface.c:1131 -msgid "Only tunes with specified minimum duration" -msgstr "" +#: src/OSS/configure.c:296 +msgid "Pre-buffer (percent):" +msgstr "Pre-bufor (w procentach):" -#: src/sid/xs_interface.c:1135 -msgid "Only add sub-tunes that have a duration of at least specified time." -msgstr "" +#: src/OSS/configure.c:307 +msgid "Buffering" +msgstr "Buforowanie" -#: src/sid/xs_interface.c:1162 -msgid "Sub-tune handling:" -msgstr "" +#: src/OSS/configure.c:308 +msgid "Mixer Settings:" +msgstr "Ustawienia miksera:" -#: src/sid/xs_interface.c:1179 -msgid "Use STIL database" -msgstr "" +#: src/OSS/configure.c:314 +msgid "Volume controls Master not PCM" +msgstr "Zmiana gÅ‚oÅ›noÅ›ci kanaÅ‚u Master, nie PCM" -#: src/sid/xs_interface.c:1183 -msgid "" -"If this option is enabled (and the database & HVSC settings below are " -"correctly set), Audacious-SID will use and display additional information " -"from STIL database when HVSC SIDs are played." -msgstr "" +#: src/OSS/configure.c:320 +msgid "Mixer" +msgstr "Mikser" -#: src/sid/xs_interface.c:1190 -msgid "STIL file:" -msgstr "" +#: src/OSS/OSS.c:41 +msgid "About OSS Driver" +msgstr "O sterowniku OSS" -#: src/sid/xs_interface.c:1206 -msgid "" -"Path and filename of STIL database file (STIL.txt), usually found from " -"HVSC's DOCUMENTS-subdirectory." -msgstr "" +#: src/pulse_audio/pulse_audio.c:669 +msgid "About Audacious PulseAudio Output Plugin" +msgstr "O wtyczce wyjÅ›ciowej PulseAudio dla Audacious" -#: src/sid/xs_interface.c:1219 -msgid "Browse for STIL-database file" -msgstr "" +#: src/resample/plugin.c:89 +msgid "About Sample Rate Converter Plugin" +msgstr "O wtyczce Sample Rate Converter" -#: src/sid/xs_interface.c:1246 -msgid "HVSC path:" -msgstr "" +#: src/resample/plugin.c:144 +msgid "Sample Rate Converter Preferences" +msgstr "Ustawienia Sample Rate Converter" -#: src/sid/xs_interface.c:1262 -msgid "" -"Path to base-directory of your High Voltage SID Collection (HVSC), for " -"example /media/C64Music/" -msgstr "" +#: src/resample/plugin.c:156 +msgid "Rate mappings:" +msgstr "CzÄ™stotliwoÅ›ci mapowania:" -#: src/sid/xs_interface.c:1275 -msgid "Browse for HVSC path" -msgstr "" +#: src/resample/plugin.c:179 +msgid "All others:" +msgstr "Wszystkie inne:" -#: src/sid/xs_interface.c:1297 -msgid "SID Tune Information List (STIL) database:" -msgstr "" +#: src/resample/plugin.c:191 +msgid "Method:" +msgstr "Metoda:" -#: src/sid/xs_interface.c:1321 -msgid "Cancel any changes" -msgstr "" +#: src/scrobbler/configure.c:123 src/scrobbler/configure.c:198 +msgid "Change password" +msgstr "ZmieÅ„ hasÅ‚o" -#: src/sid/xs_interface.c:1328 -msgid "Accept and update changes" -msgstr "" +#: src/scrobbler/configure.c:144 +msgid "Services" +msgstr "UsÅ‚ugi" -#: src/sid/xs_interface.c:1628 -msgid "Audacious-SID Fileinfo" -msgstr "" +#: src/scrobbler/configure.c:166 +msgid "Username:" +msgstr "Nazwa użytkownika:" -#: src/sid/xs_interface.c:1649 -msgid "Filename:" -msgstr "" +#: src/scrobbler/configure.c:172 +msgid "Password:" +msgstr "HasÅ‚o:" -#: src/sid/xs_interface.c:1657 -msgid "Songname:" -msgstr "" +#: src/scrobbler/configure.c:180 +msgid "Scrobbler URL:" +msgstr "Adres URL Scrobblera:" -#: src/sid/xs_interface.c:1665 -msgid "Composer:" -msgstr "" +#: src/scrobbler/configure.c:212 +msgid "Last.FM" +msgstr "Last.FM" -#: src/sid/xs_interface.c:1673 -msgid "Copyright:" -msgstr "" +#: src/scrobbler/configure.c:239 +msgid "Scrobbler" +msgstr "Scrobbler" -#: src/sid/xs_interface.c:1717 -msgid "Song Information:" +#: src/scrobbler/plugin.c:194 +msgid "" +"Audacious AudioScrobbler Plugin\n" +"\n" +"Originally created by Audun Hove and Pipian \n" msgstr "" +"Wtyczka Audacious AudioScrobbler\n" +"\n" +"Oryginalnie utworzona przez Audun Hove oraz Pipian \n" -#: src/sid/xs_interface.c:1752 -msgid "Author:" -msgstr "" +#: src/scrobbler/plugin.c:196 +msgid "About Scrobbler Plugin" +msgstr "O wtyczce Scrobbler" -#: src/sid/xs_interface.c:1786 -msgid "Duration:" -msgstr "" +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" +msgstr "O wtyczce wyjÅ›ciowej SDL" -#: src/sid/xs_interface.c:1820 -msgid "Sub-tune Information:" -msgstr "" +#: src/sdlout/plugin.c:78 +msgid "SDL error" +msgstr "BÅ‚Ä…d SDL" -#: src/sid/xs_interface.c:1881 -msgid "Select HVSC song length database" -msgstr "" +#: src/search-tool/search-tool.c:42 +msgid "Genre" +msgstr "Gatunek" -#: src/sid/xs_interface.c:1922 -msgid "Select STIL-database" -msgstr "" +#: src/search-tool/search-tool.c:96 src/search-tool/search-tool.c:106 +msgid "Library" +msgstr "Kolekcja" -#: src/sid/xs_interface.c:1963 -msgid "Select HVSC location prefix" -msgstr "" +#: src/search-tool/search-tool.c:591 +msgid "_Create Playlist" +msgstr "_Utwórz listÄ™ odtwarzania" -#: src/sid/xs_interface.c:2004 -msgid "Select SIDPlay2 filters file for importing" -msgstr "" +#: src/search-tool/search-tool.c:598 +msgid "_Add to Playlist" +msgstr "_Dodaj do listy odtwarzania" -#: src/sid/xs_interface.c:2045 -msgid "Select SIDPlay2 filters file for exporting" -msgstr "" +#: src/search-tool/search-tool.c:641 +msgid "Search library" +msgstr "Wyszukiwanie..." -#: src/sid/xs_interface.c:2093 src/sid/xs_interface.c:2106 -msgid "Confirm selected action" +#: src/search-tool/search-tool.c:645 +msgid "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." msgstr "" +"Aby zaimportować kolekcjÄ™ muzycznÄ…, proszÄ™ wybrać katalog i kliknąć przycisk" +" ponownego wczytywania." -#: src/sid/xs_interface.c:2123 -msgid "Yes" -msgstr "" +#: src/search-tool/search-tool.c:653 +msgid "Please wait ..." +msgstr "ProszÄ™ czekać..." -#: src/sid/xs_interface.c:2129 -msgid "No" -msgstr "" +#: src/search-tool/search-tool.c:675 +msgid "Choose Folder" +msgstr "Wybór katalogu" -#: src/skins/plugin.c:179 +#: src/skins/plugin.c:167 msgid "About Skinned GUI" msgstr "O interfejsie skórkowym" -#: src/skins/plugin.c:180 +#: src/skins/plugin.c:168 msgid "" "Copyright (c) 2008, by Tomasz MoÅ„ \n" "\n" @@ -4246,870 +2480,939 @@ "Copyright (c) 2008, Tomasz MoÅ„ \n" "\n" -#: src/skins/plugin.c:196 -msgid "Skinned Interface" -msgstr "Skórkowy Interfejs" - -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:207 msgid "_Player:" msgstr "_Odtwarzacz:" -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:208 msgid "Select main player window font:" -msgstr "Wybierz czcionkÄ™ dla gÅ‚ownego okna odtwarzacza:" +msgstr "Wybór czcionki okna odtwarzacza" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:210 msgid "_Playlist:" -msgstr "_Playlista:" +msgstr "_Lista odtwarzania:" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:211 msgid "Select playlist font:" -msgstr "Wybierz czcionkÄ™ dla playlisty:" +msgstr "Wybór czcionki listy odtwarzania" -#: src/skins/skins_cfg.c:321 +#: src/skins/skins_cfg.c:215 msgid "_Fonts" msgstr "_Czcionki" -#: src/skins/skins_cfg.c:323 -msgid "Use Bitmap fonts if available" -msgstr "Użyj bitmapowych czcionek, jeÅ›li dostÄ™pne" - -#: src/skins/skins_cfg.c:323 -msgid "" -"Use bitmap fonts if they are available. Bitmap fonts do not support Unicode " -"strings." -msgstr "" -"Używa bitmapowych czcionek, jeżeli sÄ… one dostÄ™pne. Bitmapowe czcionki " -"nie obsÅ‚ugujÄ… znaków Unicode." - -#: src/skins/skins_cfg.c:324 -msgid "_Miscellaneous" -msgstr "_Różne" - -#: src/skins/skins_cfg.c:325 -msgid "Show separators in playlist" -msgstr "Pokaż separatory na playliÅ›cie" - -#: src/skins/skins_cfg.c:327 -msgid "Show window manager decoration" -msgstr "Pokaż dekoracje menedżera okien" - -#: src/skins/skins_cfg.c:328 -msgid "This enables the window manager to show decorations for windows." -msgstr "Używa dla okna odtwarzacza obramowania wÅ‚Ä…czonego menedżera okien." +#: src/skins/skins_cfg.c:218 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "Czcionki bitmapowe (obsÅ‚uguje tylko kodowanie ASCII)" + +#: src/skins/skins_cfg.c:220 +msgid "Scroll song title in both directions" +msgstr "Przewijanie tytuÅ‚u utworu w obydwu kierunkach" -#: src/skins/skins_cfg.c:329 -msgid "Use two-way text scroller" -msgstr "Używaj dwukierunkowego przewijania tekstu" +#: src/skins/skins_cfg.c:298 +msgid "_Skin" +msgstr "_Styl" -#: src/skins/skins_cfg.c:330 -msgid "" -"If selected, the file information text in the main window will scroll back " -"and forth. If not selected, the text will only scroll in one direction." -msgstr "" -"JeÅ›li zaznaczone, informacje o pliku w oknie głównym sÄ… przewijane tam i " -"z powrotem. Gdy niezaznaczone, tekst jest przewijany w jednym kierunku." +#: src/skins/skins_cfg.c:345 +msgid "Interface Preferences" +msgstr "Preferencje interfejsu" -#: src/skins/skins_cfg.c:331 -msgid "Disable inline gtk theme" -msgstr "Użyj globalnego stylu gtk" +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "Przedwzm" -#: src/skins/skins_cfg.c:333 -msgid "Random skin on play" -msgstr "Losowa skórka przy odtwarzaniu" +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" +msgstr "31 Hz" -#: src/skins/skins_cfg.c:334 -msgid "Allow loading incomplete skins" -msgstr "Pozwól na Å‚adowanie niekompletnych skórek" +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "63 Hz" -#: src/skins/skins_cfg.c:335 -msgid "" -"If selected, audacious won't refuse loading broken skins. Use only if your " -"favourite skin doesn't work" -msgstr "" -"JeÅ›li zaznaczone, Audacious nie wstrzymie Å‚adowania zepsutych skórek. Używaj " -"tylko wtedy, gdy twoja ulubiona skórka nie chce dziaÅ‚ać." +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" +msgstr "125 Hz" -#: src/skins/skins_cfg.c:401 -msgid "Color Adjustment" -msgstr "Dopasowanie kolorów" +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" +msgstr "250 Hz" -#: src/skins/skins_cfg.c:407 -msgid "" -"Audacious allows you to alter the color balance of the skinned UI. The " -"sliders below will allow you to do this." -msgstr "" -"Audacious pozwala na zmianÄ™ balansu kolorów dowolnej skórki przy użyciu " -"poniższych suwaków." +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" +msgstr "500 Hz" -#: src/skins/skins_cfg.c:417 -msgid "Blue" -msgstr "Niebieski" +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" +msgstr "1 kHz" -#: src/skins/skins_cfg.c:424 -msgid "Green" -msgstr "Zielony" +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" +msgstr "2 kHz" -#: src/skins/skins_cfg.c:431 -msgid "Red" -msgstr "Czerwony" +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" +msgstr "4 kHz" -#: src/skins/skins_cfg.c:569 -msgid "_Skin" -msgstr "_Skórka" +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" +msgstr "8 kHz" -#: src/skins/skins_cfg.c:574 -msgid "Color adjustment ..." -msgstr "Dopasowanie kolorów..." +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" +msgstr "16 kHz" -#: src/skins/ui_equalizer.c:463 +#: src/skins/ui_equalizer.c:379 msgid "Audacious Equalizer" msgstr "Equalizer Audacious" -#: src/skins/ui_equalizer.c:991 +#: src/skins/ui_equalizer.c:887 msgid "Presets" -msgstr "Schematy ustawieÅ„" +msgstr "Profile ustawieÅ„" -#: src/skins/ui_main.c:593 -msgid "kbps" -msgstr "kbps" +#: src/skins/ui_equalizer.c:968 src/skins/ui_manager.c:442 +msgid "Load preset" +msgstr "Wczytywanie profilu" -#: src/skins/ui_main.c:601 -msgid "kHz" -msgstr "kHz" +#: src/skins/ui_equalizer.c:985 +msgid "Load auto-preset" +msgstr "" -#: src/skins/ui_main.c:608 -msgid "surround" -msgstr "surround" +#: src/skins/ui_equalizer.c:1015 src/skins/ui_equalizer.c:1033 +#: src/skins/ui_equalizer.c:1049 +msgid "Load equalizer preset" +msgstr "" -#: src/skins/ui_main.c:981 -msgid "Audacious - visibility warning" -msgstr "Audacious - ostrzeżenie o widocznoÅ›ci" +#: src/skins/ui_equalizer.c:1068 src/skins/ui_manager.c:463 +msgid "Save preset" +msgstr "Zapisywanie profilu" -#: src/skins/ui_main.c:984 -msgid "Show main player window" -msgstr "Pokaż gÅ‚owne okno odtwarzacza" +#: src/skins/ui_equalizer.c:1084 +msgid "Save auto-preset" +msgstr "Zapisywanie domyÅ›lnego profilu" -#: src/skins/ui_main.c:985 -msgid "Ignore" -msgstr "Ingoruj" +#: src/skins/ui_equalizer.c:1114 src/skins/ui_equalizer.c:1150 +msgid "Save equalizer preset" +msgstr "" -#: src/skins/ui_main.c:991 -msgid "" -"Audacious has been started with all of its windows hidden.\n" -"You may want to show the player window again to control Audacious; " -"otherwise, you'll have to control it remotely via audtool or enabled plugins " -"(such as the statusicon plugin)." -msgstr "" -"Audacious zostaÅ‚ uruchomiony z ukrytymi wszystkimi oknami.\n" -"Być może zechcesz ponownie wÅ‚Ä…czyć główne okno odtwarzacza; " -"jeÅ›li nie, bÄ™dziesz musiaÅ‚ kontrolować Audacious zdalnie poprzez audtool lub " -"zaÅ‚adowane wtyczki (takie jak Status Icon)." - -#: src/skins/ui_main.c:997 -msgid "Always ignore, show/hide is controlled remotely" -msgstr "Zawsze ignoruj, pokazywanie/ukrywanie kontrolowane zdalnie" - -#: src/skins/ui_main.c:1042 -msgid "Audacious - broken GTK engine usage warning" -msgstr "Audacious - ostrzeżenie o użyciu wadliwego silnika GTK" +#: src/skins/ui_equalizer.c:1169 src/skins/ui_manager.c:478 +msgid "Delete preset" +msgstr "Usuwanie profilu" -#: src/skins/ui_main.c:1050 -#, c-format -msgid "" -"Broken GTK engine in use\n" -"\n" -"Audacious has detected that you are using a broken GTK engine.\n" -"\n" -"The theme engine you are using, %s, is incompatible with some of the " -"features used by modern skins. The incompatible features have been disabled " -"for this session.\n" -"\n" -"To use these features, please consider using a different GTK theme engine." +#: src/skins/ui_equalizer.c:1186 +msgid "Delete auto-preset" msgstr "" -"Wadliwy silnik GTK jest w użyciu\n" -"\n" -"Audacious wykryÅ‚, że używasz niesprawnego silnika GTK.\n" -"\n" -"Silnik motywów, którego używasz: %s jest niezgodny z niektórymi " -"elementami używanymi przez nowoczesne skórki. NiedziaÅ‚ajÄ…ce obiekty zostaÅ‚y " -"wyÅ‚Ä…czone na czas trwania tej sesji.\n" -"\n" -"Aby uzyskać możliwość używania tych elementów, powinieneÅ› rozważyć zmianÄ™ " -"silnika motywów GTK." -#: src/skins/ui_main.c:1061 -msgid "Do not display this warning again" -msgstr "Nie wyÅ›wietlaj tego ostrzeżenia ponownie" +#: src/skins/ui_main.c:444 +msgid "kbps" +msgstr "kb/s" + +#: src/skins/ui_main.c:452 +msgid "kHz" +msgstr "kHz" + +#: src/skins/ui_main.c:459 +msgid "surround" +msgstr "surround" -#: src/skins/ui_main.c:1269 +#: src/skins/ui_main.c:807 #, c-format -msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)" -msgstr "Skocz do: %d:%-2.2d/%d:%-2.2d (%d%%)" +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "Skocz do: %d:%-2.2d / %d:%-2.2d" -#: src/skins/ui_main.c:1299 +#: src/skins/ui_main.c:828 #, c-format msgid "Volume: %d%%" msgstr "GÅ‚oÅ›ność: %d%%" -#: src/skins/ui_main.c:1322 +#: src/skins/ui_main.c:851 #, c-format msgid "Balance: %d%% left" msgstr "Balans: %d%% lewy" -#: src/skins/ui_main.c:1324 +#: src/skins/ui_main.c:853 msgid "Balance: center" msgstr "Balans: centralny" -#: src/skins/ui_main.c:1326 +#: src/skins/ui_main.c:855 #, c-format msgid "Balance: %d%% right" msgstr "Balans: %d%% prawy" -#: src/skins/ui_main.c:1618 +#: src/skins/ui_main.c:981 msgid "Options Menu" msgstr "Menu opcji" -#: src/skins/ui_main.c:1622 +#: src/skins/ui_main.c:985 msgid "Disable 'Always On Top'" msgstr "WyÅ‚Ä…cz 'Zawsze na wierzchu'" -#: src/skins/ui_main.c:1624 +#: src/skins/ui_main.c:987 msgid "Enable 'Always On Top'" msgstr "WÅ‚Ä…cz 'Zawsze na wierzchu'" -#: src/skins/ui_main.c:1627 +#: src/skins/ui_main.c:990 msgid "File Info Box" msgstr "Obszar informacji o pliku" -#: src/skins/ui_main.c:1631 -msgid "Disable 'GUI Scaling'" -msgstr "WyÅ‚Ä…cz 'Skalowanie GUI'" - -#: src/skins/ui_main.c:1633 -msgid "Enable 'GUI Scaling'" -msgstr "WÅ‚Ä…cz 'Skalowanie GUI'" - -#: src/skins/ui_main.c:1636 +#: src/skins/ui_main.c:995 msgid "Visualization Menu" msgstr "Menu wizualizacji" -#: src/skins/ui_main.c:2348 +#: src/skins/ui_main.c:1653 msgid "Single mode." msgstr "Tryb prosty." -#: src/skins/ui_main.c:2350 +#: src/skins/ui_main.c:1655 msgid "Playlist mode." msgstr "Tryb playlisty." -#: src/skins/ui_main.c:2374 +#: src/skins/ui_main.c:1677 msgid "Stopping after song." msgstr "Zatrzymaj po tym utworze." -#: src/skins/ui_main.c:2376 +#: src/skins/ui_main.c:1679 msgid "Not stopping after song." msgstr "Nie zatrzymuj po utworze." -#: src/skins/ui_manager.c:50 src/skins/ui_manager.c:51 +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 msgid "Autoscroll Songname" msgstr "Auto-przewijanie nazwy piosenki" -#: src/skins/ui_manager.c:56 src/skins/ui_manager.c:57 +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "Zatrzymaj po tym utworze" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 msgid "Peaks" msgstr "WierzchoÅ‚ki" -#: src/skins/ui_manager.c:68 src/skins/ui_manager.c:69 +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "Powtarzanie" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "Losowanie kolejnoÅ›ci" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "Pojedynczo" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 msgid "Show Player" -msgstr "Pokaż odtwarzacz" +msgstr "Odtwarzacz" -#: src/skins/ui_manager.c:71 src/skins/ui_manager.c:72 +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 msgid "Show Playlist Editor" -msgstr "Pokaż listÄ™ odtwarzania" +msgstr "Edytor list odtwarzania" -#: src/skins/ui_manager.c:74 src/skins/ui_manager.c:75 +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 msgid "Show Equalizer" -msgstr "Pokaż korektor graficzny" +msgstr "Korektor graficzny" -#: src/skins/ui_manager.c:77 src/skins/ui_manager.c:78 +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 msgid "Always on Top" msgstr "Zawsze na wierzchu" -#: src/skins/ui_manager.c:80 src/skins/ui_manager.c:81 +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 msgid "Put on All Workspaces" msgstr "Umieść na wszystkich pulpitach" -#: src/skins/ui_manager.c:83 src/skins/ui_manager.c:84 +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 msgid "Roll up Player" msgstr "ZwiÅ„ odtwarzacz" -#: src/skins/ui_manager.c:86 src/skins/ui_manager.c:87 +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 msgid "Roll up Playlist Editor" msgstr "ZwiÅ„ listÄ™ odtwarzania" -#: src/skins/ui_manager.c:89 src/skins/ui_manager.c:90 +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 msgid "Roll up Equalizer" msgstr "ZwiÅ„ korektor graficzny" -#: src/skins/ui_manager.c:92 src/sndstretch/sndstretch_xmms.c:393 -msgid "Scale" -msgstr "Skaluj" - -#: src/skins/ui_manager.c:93 -msgid "DoubleSize" -msgstr "Podwójna wielkość" - -#: src/skins/ui_manager.c:95 src/skins/ui_manager.c:96 -msgid "Easy Move" -msgstr "Åatwe przesuwanie" - -#: src/skins/ui_manager.c:104 +#: src/skins/ui_manager.c:115 msgid "Analyzer" msgstr "Analizator" -#: src/skins/ui_manager.c:105 +#: src/skins/ui_manager.c:116 msgid "Scope" msgstr "Scope" -#: src/skins/ui_manager.c:106 +#: src/skins/ui_manager.c:117 msgid "Voiceprint" msgstr "Voiceprint" -#: src/skins/ui_manager.c:107 +#: src/skins/ui_manager.c:118 msgid "Off" msgstr "WyÅ‚Ä…czony" -#: src/skins/ui_manager.c:111 src/skins/ui_manager.c:128 -#: src/skins/ui_manager.c:134 +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 msgid "Normal" msgstr "Normalny" -#: src/skins/ui_manager.c:112 src/skins/ui_manager.c:129 +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 msgid "Fire" msgstr "Ognisty" -#: src/skins/ui_manager.c:113 +#: src/skins/ui_manager.c:124 msgid "Vertical Lines" msgstr "Pionowe linie" -#: src/skins/ui_manager.c:117 +#: src/skins/ui_manager.c:128 msgid "Lines" msgstr "Linie" -#: src/skins/ui_manager.c:118 +#: src/skins/ui_manager.c:129 msgid "Bars" msgstr "Kolumny" -#: src/skins/ui_manager.c:122 +#: src/skins/ui_manager.c:133 msgid "Dot Scope" msgstr "Kropkowany" -#: src/skins/ui_manager.c:123 +#: src/skins/ui_manager.c:134 msgid "Line Scope" msgstr "Liniowy" -#: src/skins/ui_manager.c:124 +#: src/skins/ui_manager.c:135 msgid "Solid Scope" msgstr "GÅ‚adki" -#: src/skins/ui_manager.c:130 +#: src/skins/ui_manager.c:141 msgid "Ice" msgstr "Lodowy" -#: src/skins/ui_manager.c:135 +#: src/skins/ui_manager.c:146 msgid "Smooth" msgstr "WygÅ‚adzony" -#: src/skins/ui_manager.c:139 src/skins/ui_manager.c:147 +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 msgid "Slowest" msgstr "Najwolniejszy" -#: src/skins/ui_manager.c:140 src/skins/ui_manager.c:148 +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 msgid "Slow" msgstr "Wolny" -#: src/skins/ui_manager.c:141 src/skins/ui_manager.c:149 +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 msgid "Medium" msgstr "Åšredni" -#: src/skins/ui_manager.c:142 src/skins/ui_manager.c:150 +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 msgid "Fast" msgstr "Szybki" -#: src/skins/ui_manager.c:143 src/skins/ui_manager.c:151 +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 msgid "Fastest" msgstr "Najszybszy" -#: src/skins/ui_manager.c:155 +#: src/skins/ui_manager.c:166 msgid "Time Elapsed" -msgstr "Miniony czas" +msgstr "Bieżący czas" -#: src/skins/ui_manager.c:156 +#: src/skins/ui_manager.c:167 msgid "Time Remaining" msgstr "PozostaÅ‚y czas" -#: src/skins/ui_manager.c:185 +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "Wstrzymaj" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "Poprzednie nagranie" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "NastÄ™pne nagranie" + +#: src/skins/ui_manager.c:196 msgid "Visualization" msgstr "Wizualizacja" -#: src/skins/ui_manager.c:186 +#: src/skins/ui_manager.c:197 msgid "Visualization Mode" msgstr "Tryb wizualizacji" -#: src/skins/ui_manager.c:187 +#: src/skins/ui_manager.c:198 msgid "Analyzer Mode" msgstr "Tryb analizatora" -#: src/skins/ui_manager.c:188 +#: src/skins/ui_manager.c:199 msgid "Scope Mode" msgstr "Tryb Scope" -#: src/skins/ui_manager.c:189 +#: src/skins/ui_manager.c:200 msgid "Voiceprint Mode" msgstr "Tryb Voiceprint" -#: src/skins/ui_manager.c:190 +#: src/skins/ui_manager.c:201 msgid "WindowShade VU Mode" msgstr "Tryb WindowShade VU" -#: src/skins/ui_manager.c:191 +#: src/skins/ui_manager.c:202 msgid "Analyzer Falloff" msgstr "Spadek linii/kolumn" -#: src/skins/ui_manager.c:192 +#: src/skins/ui_manager.c:203 msgid "Peaks Falloff" msgstr "Spadek wierzchoÅ‚ków" -#: src/skins/ui_manager.c:202 src/skins/ui_manager.c:203 +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "Lista odtwarzania" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "Nowa" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 msgid "Select Next Playlist" -msgstr "NastÄ™pna playlista" +msgstr "NastÄ™pna lista odtwarzania" -#: src/skins/ui_manager.c:205 src/skins/ui_manager.c:206 +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 msgid "Select Previous Playlist" msgstr "Poprzednia playlista" +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "UsuÅ„" + #: src/skins/ui_manager.c:222 -msgid "Refresh List" -msgstr "OdÅ›wież listÄ™" +msgid "Import Playlist" +msgstr "Wybór pliku importowania" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "Wczytuje listÄ™ odtwarzania z pliku do bieżącej listy" #: src/skins/ui_manager.c:226 -msgid "List Manager" +msgid "Export Playlist" +msgstr "Wybór pliku eksportowania" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "Zapisuje wybranÄ… listÄ™ odtwarzania" + +#: src/skins/ui_manager.c:229 +msgid "Refresh List" +msgstr "Wczytaj ponownie" + +#: src/skins/ui_manager.c:230 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "OdÅ›wieża metadane zwiÄ…zane z wpisem na liÅ›cie." + +#: src/skins/ui_manager.c:233 +msgid "Playlist Manager" msgstr "Menedżer list odtwarzania" -#: src/skins/ui_manager.c:236 +#: src/skins/ui_manager.c:234 +msgid "Queue Manager" +msgstr "Menedżer kolejki" + +#: src/skins/ui_manager.c:237 +msgid "View" +msgstr "Widok" + +#: src/skins/ui_manager.c:238 +msgid "Interface" +msgstr "Interfejs" + +#: src/skins/ui_manager.c:239 +msgid "Interface Preferences ..." +msgstr "Preferencje interfejsu..." + +#: src/skins/ui_manager.c:243 msgid "Add Internet Address..." -msgstr "Dodaj adres internetowy..." +msgstr "Dodaj adres URL..." + +#: src/skins/ui_manager.c:244 +msgid "Adds a remote track to the playlist." +msgstr "Dodaje zdalny utwór do playlisty." -#: src/skins/ui_manager.c:240 +#: src/skins/ui_manager.c:247 msgid "Add Files..." msgstr "Dodaj pliki..." -#: src/skins/ui_manager.c:246 +#: src/skins/ui_manager.c:248 +msgid "Adds files to the playlist." +msgstr "Dodaje pliki do listy odtwarzania" + +#: src/skins/ui_manager.c:253 msgid "Search and Select" msgstr "Szukaj i zaznacz" -#: src/skins/ui_manager.c:247 +#: src/skins/ui_manager.c:254 msgid "" "Searches the playlist and selects playlist entries based on specific " "criteria." msgstr "" "Przeszukuje playlistÄ™ i zaznacza wpisy na podstawie ustalonych kryteriów." -#: src/skins/ui_manager.c:250 -msgid "Invert Selection" -msgstr "Odwróć zaznaczenie" +#: src/skins/ui_manager.c:257 +msgid "Invert Selection" +msgstr "Odwróć zaznaczenie" + +#: src/skins/ui_manager.c:258 +msgid "Inverts the selected and unselected entries." +msgstr "Odwraca zaznaczone i niezaznaczone wpisy." + +#: src/skins/ui_manager.c:261 +msgid "Select All" +msgstr "Zaznacz wszystko" + +#: src/skins/ui_manager.c:262 +msgid "Selects all of the playlist entries." +msgstr "Zaznacza wszystkie wpisy na playliÅ›cie" + +#: src/skins/ui_manager.c:265 +msgid "Select None" +msgstr "Wyczyść zaznaczenie" + +#: src/skins/ui_manager.c:266 +msgid "Deselects all of the playlist entries." +msgstr "Odznacza wszystkie wpisy na playliÅ›cie" -#: src/skins/ui_manager.c:251 -msgid "Inverts the selected and unselected entries." -msgstr "Odwraca zaznaczone i niezaznaczone wpisy." +#: src/skins/ui_manager.c:271 +msgid "Remove All" +msgstr "UsuÅ„ wszystkie" + +#: src/skins/ui_manager.c:272 +msgid "Removes all entries from the playlist." +msgstr "Usuwa wszystkie wpisy z playlisty." -#: src/skins/ui_manager.c:268 +#: src/skins/ui_manager.c:275 msgid "Clear Queue" msgstr "Wyczyść kolejkÄ™" -#: src/skins/ui_manager.c:269 +#: src/skins/ui_manager.c:276 msgid "Clears the queue associated with this playlist." msgstr "Usuwa kolejkÄ™ powiÄ…zanÄ… z tÄ… listÄ… odtwarzania." -#: src/skins/ui_manager.c:272 +#: src/skins/ui_manager.c:279 msgid "Remove Unavailable Files" msgstr "UsuÅ„ niedostÄ™pne" -#: src/skins/ui_manager.c:273 +#: src/skins/ui_manager.c:280 msgid "Removes unavailable files from the playlist." msgstr "Usuwa niedostÄ™pne pliki z playlisty." -#: src/skins/ui_manager.c:276 +#: src/skins/ui_manager.c:283 msgid "Remove Duplicates" msgstr "UsuÅ„ duplikaty" -#: src/skins/ui_manager.c:279 +#: src/skins/ui_manager.c:285 src/skins/ui_manager.c:317 +#: src/skins/ui_manager.c:347 +msgid "By Title" +msgstr "WedÅ‚ug tytuÅ‚u" + +#: src/skins/ui_manager.c:286 msgid "Removes duplicate entries from the playlist by title." msgstr "Usuwa duplikaty z playlisty na podstawie tytuÅ‚u utworu." -#: src/skins/ui_manager.c:282 src/skins/ui_manager.c:318 -#: src/skins/ui_manager.c:348 +#: src/skins/ui_manager.c:289 src/skins/ui_manager.c:329 +#: src/skins/ui_manager.c:359 msgid "By Filename" -msgstr "Nazwa pliku" +msgstr "WedÅ‚ug nazwy pliku" -#: src/skins/ui_manager.c:283 +#: src/skins/ui_manager.c:290 msgid "Removes duplicate entries from the playlist by filename." msgstr "Usuwa duplikaty z playlisty na podstawie nazwy pliku." -#: src/skins/ui_manager.c:286 src/skins/ui_manager.c:322 -#: src/skins/ui_manager.c:352 +#: src/skins/ui_manager.c:293 src/skins/ui_manager.c:333 +#: src/skins/ui_manager.c:363 msgid "By Path + Filename" -msgstr "Åšcieżka + Nazwa pliku" +msgstr "WedÅ‚ug Å›cieżki i nazwy pliku" -#: src/skins/ui_manager.c:287 +#: src/skins/ui_manager.c:294 msgid "Removes duplicate entries from the playlist by their full path." msgstr "Usuwa duplikaty z playlisty na podstawie ich peÅ‚nej Å›cieżki." -#: src/skins/ui_manager.c:300 +#: src/skins/ui_manager.c:297 +msgid "Remove Unselected" +msgstr "UsuÅ„ niezaznaczone" + +#: src/skins/ui_manager.c:298 +msgid "Remove unselected entries from the playlist." +msgstr "Usuwa niezaznaczone wpisy z playlisty." + +#: src/skins/ui_manager.c:301 +msgid "Remove Selected" +msgstr "UsuÅ„ zaznaczone" + +#: src/skins/ui_manager.c:302 +msgid "Remove selected entries from the playlist." +msgstr "Usuwa zaznaczone wpisy z playlisty" + +#: src/skins/ui_manager.c:307 +msgid "Randomize List" +msgstr "Wymieszaj listÄ™" + +#: src/skins/ui_manager.c:308 +msgid "Randomizes the playlist." +msgstr "Losowo zmienia kolejność wpisów na playliÅ›cie" + +#: src/skins/ui_manager.c:311 msgid "Reverse List" msgstr "Odwróć listÄ™" -#: src/skins/ui_manager.c:301 +#: src/skins/ui_manager.c:312 msgid "Reverses the playlist." msgstr "Odwraca kolejność wpisów na playliÅ›cie" -#: src/skins/ui_manager.c:304 +#: src/skins/ui_manager.c:315 msgid "Sort List" -msgstr "Sortuj listÄ™" +msgstr "Sortowanie" -#: src/skins/ui_manager.c:307 src/skins/ui_manager.c:337 +#: src/skins/ui_manager.c:318 src/skins/ui_manager.c:348 msgid "Sorts the list by title." msgstr "PorzÄ…dkuje listÄ™ na podstawie tytuÅ‚u." -#: src/skins/ui_manager.c:311 src/skins/ui_manager.c:341 +#: src/skins/ui_manager.c:321 src/skins/ui_manager.c:351 +msgid "By Album" +msgstr "WedÅ‚ug albumu" + +#: src/skins/ui_manager.c:322 src/skins/ui_manager.c:352 msgid "Sorts the list by album." msgstr "PorzÄ…dkuje listÄ™ na podstawie albumu." -#: src/skins/ui_manager.c:315 src/skins/ui_manager.c:345 +#: src/skins/ui_manager.c:325 src/skins/ui_manager.c:355 +msgid "By Artist" +msgstr "WedÅ‚ug wykonawcy" + +#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 msgid "Sorts the list by artist." msgstr "PorzÄ…dkuje listÄ™ na podstawie artysty." -#: src/skins/ui_manager.c:319 src/skins/ui_manager.c:349 +#: src/skins/ui_manager.c:330 src/skins/ui_manager.c:360 msgid "Sorts the list by filename." msgstr "PorzÄ…dkuje listÄ™ na podstawie nazwy pliku." -#: src/skins/ui_manager.c:323 src/skins/ui_manager.c:353 +#: src/skins/ui_manager.c:334 src/skins/ui_manager.c:364 msgid "Sorts the list by full pathname." msgstr "PorzÄ…dkuje listÄ™ na podstawie peÅ‚nej Å›cieżki." -#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +#: src/skins/ui_manager.c:337 src/skins/ui_manager.c:367 msgid "By Date" -msgstr "Data" +msgstr "WedÅ‚ug daty" -#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +#: src/skins/ui_manager.c:338 src/skins/ui_manager.c:368 msgid "Sorts the list by modification time." msgstr "PorzÄ…dkuje listÄ™ na podstawie daty modyfikacji." -#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +#: src/skins/ui_manager.c:341 src/skins/ui_manager.c:371 +msgid "By Track Number" +msgstr "WedÅ‚ug numeru Å›cieżki" + +#: src/skins/ui_manager.c:342 src/skins/ui_manager.c:372 msgid "Sorts the list by track number." -msgstr "PorzÄ…dkuje listÄ™ na podstawie numeru utworu." +msgstr "PorzÄ…dkuje listÄ™ na podstawie numeru Å›cieżki." -#: src/skins/ui_manager.c:334 +#: src/skins/ui_manager.c:345 msgid "Sort Selected" -msgstr "Sortuj zaznaczone" +msgstr "Posortuj zaznaczone" + +#: src/skins/ui_manager.c:381 +msgid "File" +msgstr "Plik" -#: src/skins/ui_manager.c:373 +#: src/skins/ui_manager.c:384 msgid "Plugin Services" msgstr "Wtyczki" -#: src/skins/ui_manager.c:384 +#: src/skins/ui_manager.c:386 src/skins/ui_manager.c:389 +msgid "View Track Details" +msgstr "Pokaż szczegóły utworu" + +#: src/skins/ui_manager.c:387 src/skins/ui_manager.c:390 +msgid "View track details" +msgstr "Informacje o nagraniu" + +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:393 +msgid "About Audacious" +msgstr "O programie" + +#: src/skins/ui_manager.c:395 msgid "Play File" -msgstr "Wczytaj plik" +msgstr "Odtwórz plik" + +#: src/skins/ui_manager.c:396 +msgid "Load and play a file" +msgstr "Wczytuje i odtwarza wybrany plik" -#: src/skins/ui_manager.c:387 +#: src/skins/ui_manager.c:398 msgid "Play Location" -msgstr "Wczytaj lokalizacjÄ™" +msgstr "Odtwórz poÅ‚ożenie" + +#: src/skins/ui_manager.c:399 +msgid "Play media from the selected location" +msgstr "Odtwarza utwór z wybranego poÅ‚ożenia" + +#: src/skins/ui_manager.c:401 +msgid "Plugin services" +msgstr "Wtyczki" + +#: src/skins/ui_manager.c:403 +msgid "Preferences" +msgstr "Preferencje" + +#: src/skins/ui_manager.c:404 +msgid "Open preferences window" +msgstr "Otwiera okno preferencji" + +#: src/skins/ui_manager.c:407 +msgid "Quit Audacious" +msgstr "KoÅ„czy dziaÅ‚anie programu" + +#: src/skins/ui_manager.c:409 src/skins/ui_manager.c:410 +msgid "Set A-B" +msgstr "Ustaw A-B" + +#: src/skins/ui_manager.c:412 src/skins/ui_manager.c:413 +msgid "Clear A-B" +msgstr "Wyczyść A-B" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Jump to Time" +msgstr "Przejdź do czasu" + +#: src/skins/ui_manager.c:421 +msgid "Queue Toggle" +msgstr "PrzeÅ‚Ä…cz kolejkÄ™" + +#: src/skins/ui_manager.c:422 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "Dodaje/usuwa wpis z kolejki listy odtwarzania" + +#: src/skins/ui_manager.c:425 +msgid "Copy" +msgstr "Skopiuj" + +#: src/skins/ui_manager.c:427 +msgid "Cut" +msgstr "Wytnij" -#: src/skins/ui_manager.c:428 +#: src/skins/ui_manager.c:429 +msgid "Paste" +msgstr "Wklej" + +#: src/skins/ui_manager.c:436 msgid "Load" msgstr "Wczytaj" -#: src/skins/ui_manager.c:433 src/skins/ui_manager.c:454 -#: src/skins/ui_manager.c:469 -msgid "Preset" -msgstr "Ustawienia" +#: src/skins/ui_manager.c:437 +msgid "Import" +msgstr "Importuj" -#: src/skins/ui_manager.c:434 -msgid "Load preset" -msgstr "Wczytaj ustawienia" +#: src/skins/ui_manager.c:438 +msgid "Save" +msgstr "Zapisz" -#: src/skins/ui_manager.c:436 src/skins/ui_manager.c:457 -#: src/skins/ui_manager.c:472 +#: src/skins/ui_manager.c:439 +msgid "Delete" +msgstr "UsuÅ„" + +#: src/skins/ui_manager.c:441 src/skins/ui_manager.c:462 +#: src/skins/ui_manager.c:477 +msgid "Preset" +msgstr "Profil" + +#: src/skins/ui_manager.c:444 src/skins/ui_manager.c:465 +#: src/skins/ui_manager.c:480 msgid "Auto-load preset" msgstr "Auto-Å‚adowane ustawienia" -#: src/skins/ui_manager.c:437 +#: src/skins/ui_manager.c:445 msgid "Load auto-load preset" msgstr "Wczytaj auto-Å‚adowane ustawienia" -#: src/skins/ui_manager.c:440 +#: src/skins/ui_manager.c:448 msgid "Load default preset into equalizer" msgstr "Wczytaj domyÅ›lne ustawienia equalizera" -#: src/skins/ui_manager.c:442 +#: src/skins/ui_manager.c:450 msgid "Zero" msgstr "Wyzeruj" -#: src/skins/ui_manager.c:443 +#: src/skins/ui_manager.c:451 msgid "Set equalizer preset levels to zero" msgstr "Wyzeruj ustawienia equalizera" -#: src/skins/ui_manager.c:445 +#: src/skins/ui_manager.c:453 msgid "From file" msgstr "Z pliku" -#: src/skins/ui_manager.c:446 +#: src/skins/ui_manager.c:454 msgid "Load preset from file" -msgstr "Wczytaj ustawienia z pliku" +msgstr "Wczytuje profil ustawieÅ„ z pliku" -#: src/skins/ui_manager.c:448 +#: src/skins/ui_manager.c:456 msgid "From WinAMP EQF file" msgstr "Z pliku WinAMP EQF" -#: src/skins/ui_manager.c:449 +#: src/skins/ui_manager.c:457 msgid "Load preset from WinAMP EQF file" msgstr "Wczytaj ustawienia z pliku WinAMP EQF" -#: src/skins/ui_manager.c:451 +#: src/skins/ui_manager.c:459 msgid "WinAMP Presets" msgstr "Ustawienia WinAMPa" -#: src/skins/ui_manager.c:452 +#: src/skins/ui_manager.c:460 msgid "Import WinAMP presets" msgstr "Importuj ustawienia WinAMPa" -#: src/skins/ui_manager.c:455 -msgid "Save preset" -msgstr "Zapisz ustawienia" - -#: src/skins/ui_manager.c:458 +#: src/skins/ui_manager.c:466 msgid "Save auto-load preset" msgstr "Zapisz auto-Å‚adowane ustawienia" -#: src/skins/ui_manager.c:461 +#: src/skins/ui_manager.c:469 msgid "Save default preset" msgstr "Zapisz domyÅ›lne ustawienia" -#: src/skins/ui_manager.c:463 +#: src/skins/ui_manager.c:471 msgid "To file" msgstr "Do pliku" -#: src/skins/ui_manager.c:464 +#: src/skins/ui_manager.c:472 msgid "Save preset to file" msgstr "Zapisz ustawienia do pliku" -#: src/skins/ui_manager.c:466 +#: src/skins/ui_manager.c:474 msgid "To WinAMP EQF file" msgstr "Do pliku WinAMP EQF" -#: src/skins/ui_manager.c:467 +#: src/skins/ui_manager.c:475 msgid "Save preset to WinAMP EQF file" msgstr "Zapisz ustawienia do pliku WinAMP EQF" -#: src/skins/ui_manager.c:470 -msgid "Delete preset" -msgstr "UsuÅ„ ustawienia" - -#: src/skins/ui_manager.c:473 +#: src/skins/ui_manager.c:481 msgid "Delete auto-load preset" msgstr "UsuÅ„ auto-Å‚adowane ustawienia" -#: src/skins/ui_playlist.c:374 +#: src/skins/ui_playlist.c:248 msgid "Search entries in active playlist" msgstr "Wyszukaj wpisy w aktywnej playliÅ›cie" -#: src/skins/ui_playlist.c:382 +#: src/skins/ui_playlist.c:256 msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " +"Select entries in playlist by filling one or more fields. Fields use regular" +" expressions syntax, case-insensitive. If you don't know how regular " "expressions work, simply insert a literal portion of what you're searching " "for." msgstr "" -"Zaznacz wpisy na playliÅ›cie poprzez wypeÅ‚nienie jednego lub wiÄ™cej pól. Pola " -"używajÄ… skÅ‚adni wyrażeÅ„ regularnych, bez uwzglÄ™dniania wielkoÅ›ci liter. " -"JeÅ›li nie wiesz, jak dziaÅ‚ajÄ… wyrażenia regularne, po prostu wstawiaj części " -"wyrazów tego, czego szukasz." +"Zaznacz wpisy na playliÅ›cie poprzez wypeÅ‚nienie jednego lub wiÄ™cej pól. Pola" +" używajÄ… skÅ‚adni wyrażeÅ„ regularnych, bez uwzglÄ™dniania wielkoÅ›ci liter. " +"JeÅ›li nie wiesz, jak dziaÅ‚ajÄ… wyrażenia regularne, po prostu wstawiaj części" +" wyrazów tego, czego szukasz." + +#: src/skins/ui_playlist.c:264 +msgid "Title: " +msgstr "TytuÅ‚: " -#: src/skins/ui_playlist.c:397 +#: src/skins/ui_playlist.c:271 msgid "Album: " msgstr "Album:" -#: src/skins/ui_playlist.c:404 +#: src/skins/ui_playlist.c:278 msgid "Artist: " -msgstr "Artysta:" +msgstr "Wykonawca:" -#: src/skins/ui_playlist.c:411 +#: src/skins/ui_playlist.c:285 msgid "Filename: " msgstr "Nazwa pliku:" -#: src/skins/ui_playlist.c:419 +#: src/skins/ui_playlist.c:293 msgid "Clear previous selection before searching" msgstr "Wyczyść poprzednie zaznaczenie przed szukaniem" -#: src/skins/ui_playlist.c:422 +#: src/skins/ui_playlist.c:296 msgid "Automatically toggle queue for matching entries" msgstr "Automatycznie przeÅ‚Ä…cz kolejkÄ™ dla pasujÄ…cych wpisów" -#: src/skins/ui_playlist.c:425 +#: src/skins/ui_playlist.c:299 msgid "Create a new playlist with matching entries" msgstr "Utwórz nowÄ… playlistÄ™ z pasujÄ…cymi wpisami" -#: src/skins/ui_playlist.c:772 -msgid "Save as Static Playlist" -msgstr "Zapisz jako statycznÄ… playlistÄ™" - -#: src/skins/ui_playlist.c:779 -msgid "Use Relative Path" -msgstr "Użyj wzglÄ™dnej Å›cieżki" - -#: src/skins/ui_playlist.c:802 -msgid "Load Playlist" -msgstr "Wczytaj playlistÄ™" - -#: src/skins/ui_playlist.c:815 -msgid "Save Playlist" -msgstr "Zapisz playlistÄ™" - -#: src/skins/ui_playlist.c:1146 +#: src/skins/ui_playlist.c:765 msgid "Audacious Playlist Editor" msgstr "Edytor playlisty Audacious" -#: src/skins/ui_playlist.c:1206 +#: src/skins/ui_playlist.c:812 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d z %d)" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "31 Hz" -msgstr "31 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "63 Hz" -msgstr "63 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "125 Hz" -msgstr "125 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "250 Hz" -msgstr "250 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "500 Hz" -msgstr "500 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "1 kHz" -msgstr "1 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "2 kHz" -msgstr "2 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -msgid "4 kHz" -msgstr "4 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -msgid "8 kHz" -msgstr "8 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -msgid "16 kHz" -msgstr "16 kHz" - -#: src/skins/ui_skinselector.c:179 +#: src/skins/ui_skinselector.c:162 msgid "Archived Winamp 2.x skin" -msgstr "Spakowana skórka Winamp 2.x" +msgstr "Zarchiwizowany styl programu Winamp 2.x" -#: src/skins/ui_skinselector.c:184 +#: src/skins/ui_skinselector.c:167 msgid "Unarchived Winamp 2.x skin" -msgstr "Skórka Winamp 2.x" +msgstr "Styl programu Winamp 2.x" -#: src/skins/util.c:834 +#: src/skins/util.c:774 #, c-format msgid "Could not create directory (%s): %s\n" msgstr "Nie można utworzyć katalogu (%s): %s\n" -#: src/sndfile/plugin.c:531 +#: src/sndfile/plugin.c:456 msgid "About sndfile plugin" -msgstr "" - -#: src/sndfile/plugin.c:532 -msgid "" -"Adapted for Audacious usage by Tony Vroon \n" -"from the xmms_sndfile plugin which is:\n" -"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -"This program is free software ; you can redistribute it and/or modify \n" -"it under the terms of the GNU General Public License as published by \n" -"the Free Software Foundation ; either version 2 of the License, or \n" -"(at your option) any later version. \n" -" \n" -"This program is distributed in the hope that it will be useful, \n" -"but WITHOUT ANY WARRANTY ; without even the implied warranty of \n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n" -"See the GNU General Public License for more details. \n" -"\n" -"You should have received a copy of the GNU General Public \n" -"License along with this program ; if not, write to \n" -"the Free Software Foundation, Inc., \n" -"51 Franklin Street, Fifth Floor, \n" -"Boston, MA 02110-1301 USA" -msgstr "" +msgstr "O wtyczce sndfile" -#: src/sndstretch/sndstretch_xmms.c:175 +#: src/sndstretch/sndstretch_xmms.c:155 msgid "About SndStretch" -msgstr "" +msgstr "O SndStretch" -#: src/sndstretch/sndstretch_xmms.c:336 +#: src/sndstretch/sndstretch_xmms.c:308 msgid "Volume corr." -msgstr "" +msgstr "Korekcja dźwiÄ™ku" -#: src/sndstretch/sndstretch_xmms.c:337 +#: src/sndstretch/sndstretch_xmms.c:309 msgid "Short Overlap" -msgstr "" +msgstr "Krótkie zazÄ™bianie siÄ™" -#: src/sndstretch/sndstretch_xmms.c:391 +#: src/sndstretch/sndstretch_xmms.c:355 msgid "Speed" -msgstr "" +msgstr "Szybkość odtwarzania" -#: src/sndstretch/sndstretch_xmms.c:392 +#: src/sndstretch/sndstretch_xmms.c:356 msgid "Pitch" -msgstr "" +msgstr "Wysokość dźwiÄ™ku" + +#: src/sndstretch/sndstretch_xmms.c:357 +msgid "Scale" +msgstr "Skaluj" -#: src/sndstretch/sndstretch_xmms.c:413 +#: src/sndstretch/sndstretch_xmms.c:377 msgid "SndStretch - Configuration" -msgstr "" +msgstr "SndStretch - Konfiguracja" -#: src/song_change/song_change.c:397 +#: src/song_change/song_change.c:437 msgid "Command to run when Audacious starts a new song." -msgstr "" +msgstr "Komenda wywoÅ‚ywana przy rozpoczÄ™ciu nowej piosenki." -#: src/song_change/song_change.c:398 src/song_change/song_change.c:402 -#: src/song_change/song_change.c:406 src/song_change/song_change.c:410 +#: src/song_change/song_change.c:439 src/song_change/song_change.c:445 +#: src/song_change/song_change.c:451 src/song_change/song_change.c:457 msgid "Command:" -msgstr "" +msgstr "Komenda:" -#: src/song_change/song_change.c:401 +#: src/song_change/song_change.c:443 msgid "Command to run toward the end of a song." -msgstr "" +msgstr "Komenda wywoÅ‚ywana przy koÅ„cu piosenki." -#: src/song_change/song_change.c:405 +#: src/song_change/song_change.c:449 msgid "Command to run when Audacious reaches the end of the playlist." -msgstr "" +msgstr "Komenda wywoÅ‚ywana, gdy Audacious dotrze do koÅ„ca playlisty." -#: src/song_change/song_change.c:409 +#: src/song_change/song_change.c:455 msgid "" "Command to run when title changes for a song (i.e. network streams titles)." msgstr "" +"Komenda wywoÅ‚ywana, gdy zmieni siÄ™ tytuÅ‚ piosenki (np. dla internetowych " +"strumieni)." -#: src/song_change/song_change.c:413 +#: src/song_change/song_change.c:461 msgid "" "You can use the following format strings which\n" "will be substituted before calling the command\n" @@ -5122,32 +3425,47 @@ "%n or %s: Song name\n" "%r: Rate (in bits per second)\n" "%t: Playlist position (%02d)\n" -"%p: Currently playing (1 or 0)" -msgstr "" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" +msgstr "" +"Możesz użyć poniższych zmiennych, które ulegnÄ…\n" +"odpowiedniemu podstawieniu przed wywoÅ‚aniem komendy\n" +"(nie wszystkie sÄ… użyteczne dla komend koÅ„ca playlisty).\n" +"\n" +"%F: CzÄ™stotliwość (w hertzach)\n" +"%c: Ilość kanałów\n" +"%f: nazwa pliku (peÅ‚na Å›cieżka)\n" +"%l: dÅ‚ugość (w milisekundach)\n" +"%n lub %s: nazwa piosenki\n" +"%r: Jakość (bity na sekundÄ™)\n" +"%t: Pozycja na playliÅ›cie (%02d)\n" +"%p: Aktualnie odtwarzany (1 lub 0)%a: Wykonawca\n" +"%b: Album\n" +"%T: TytuÅ‚ utworu" -#: src/song_change/song_change.c:437 +#: src/song_change/song_change.c:488 msgid "" "Parameters passed to the shell should be encapsulated in " "quotes. Doing otherwise is a security risk." msgstr "" +"Parametry przekazane do powÅ‚oki powinny być zawarte w " +"cudzysÅ‚owach. Ich brak jest zagrożeniem dla bezpieczeÅ„stwa." -#: src/song_change/song_change.c:448 +#: src/song_change/song_change.c:499 msgid "Commands" -msgstr "" +msgstr "Komendy" -#: src/song_change/song_change.c:484 +#: src/song_change/song_change.c:529 msgid "Song Change" -msgstr "" - -#: src/spectrum/spectrum.c:89 -msgid "Spectrum Analyzer" -msgstr "" +msgstr "Zmiana piosenki" -#: src/statusicon/statusicon.c:355 +#: src/statusicon/statusicon.c:379 msgid "About Status Icon Plugin" msgstr "O wtyczce Status Icon" -#: src/statusicon/statusicon.c:356 +#: src/statusicon/statusicon.c:380 msgid "" "Status Icon Plugin\n" "\n" @@ -5165,136 +3483,73 @@ "Ta wtyczka dostarcza ikonÄ™ stanu, umieszczonÄ…\n" "w zasobniku systemowym menedżera okien.\n" - -#: src/statusicon/statusicon.c:418 +#: src/statusicon/statusicon.c:451 msgid "Status Icon Plugin - Preferences" msgstr "Wtyczka Status Icon - Preferencje" -#: src/statusicon/statusicon.c:428 +#: src/statusicon/statusicon.c:461 msgid "Right-Click Menu" msgstr "Menu PPM" -#: src/statusicon/statusicon.c:433 +#: src/statusicon/statusicon.c:466 msgid "Small playback menu #1" msgstr "MaÅ‚e menu odtwarzania #1" -#: src/statusicon/statusicon.c:436 +#: src/statusicon/statusicon.c:469 msgid "Small playback menu #2" msgstr "MaÅ‚e menu odtwarzania #2" -#: src/statusicon/statusicon.c:452 +#: src/statusicon/statusicon.c:485 msgid "Mouse Scroll Action" msgstr "Akcja rolki myszy" -#: src/statusicon/statusicon.c:456 +#: src/statusicon/statusicon.c:489 msgid "Change volume" msgstr "Zmiana gÅ‚oÅ›noÅ›ci" -#: src/statusicon/statusicon.c:458 +#: src/statusicon/statusicon.c:491 msgid "Change playing song" msgstr "Zmiana odtwarzanego utworu" -#: src/stereo_plugin/stereo.c:40 -msgid "" -"Extra Stereo Plugin\n" -"\n" -"By Johan Levin 1999." -msgstr "" - -#: src/stereo_plugin/stereo.c:64 -msgid "About Extra Stereo Plugin" -msgstr "" - -#: src/stereo_plugin/stereo.c:100 -msgid "Configure Extra Stereo" -msgstr "" - -#: src/streambrowser/gui/streambrowser_win.c:62 -msgid "Search:" -msgstr "" - -#: src/streambrowser/gui/streambrowser_win.c:81 -#: src/streambrowser/gui/streambrowser_win.c:370 -msgid "Add Bookmark" -msgstr "" - -#: src/streambrowser/gui/streambrowser_win.c:95 -msgid "Stream browser" -msgstr "" - -#: src/streambrowser/gui/streambrowser_win.c:319 -msgid "Stream name" -msgstr "" +#: src/statusicon/statusicon.c:504 +msgid "Other settings" +msgstr "Inne ustawienia" -#: src/streambrowser/gui/streambrowser_win.c:326 -msgid "Now playing" -msgstr "" +#: src/statusicon/statusicon.c:509 +msgid "Disable the popup window" +msgstr "WyÅ‚Ä…cz okno powiadamiania" -#: src/streambrowser/gui/streambrowser_win.c:367 -msgid "Remove Bookmark" -msgstr "" +#: src/statusicon/statusicon.c:516 +msgid "Close to the notification area (system tray)" +msgstr "Zamknij do obszaru powiadamiania (systemowy tray)" -#: src/streambrowser/streambrowser.c:331 -msgid "About Stream Browser" +#: src/statusicon/statusicon.c:524 +msgid "Advance in playlist when scrolling upward" msgstr "" -#: src/streambrowser/streambrowser.c:332 +#: src/stereo_plugin/stereo.c:45 msgid "" -"Copyright (c) 2008, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming " -"directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" +"Extra Stereo Plugin\n" "\n" -"This was a Google Summer of Code 2008 project." -msgstr "" - -#: src/streambrowser/streambrowser.c:357 src/streambrowser/streambrowser.c:367 -msgid "Streambrowser" -msgstr "" - -#: src/sun/about.c:30 -msgid "About the Sun Driver" +"By Johan Levin 1999." msgstr "" - -#: src/sun/about.c:31 -msgid "" -"XMMS BSD Sun Driver\n" +"Wtyczka Extra Stereo\n" "\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" -msgstr "" - -#: src/sun/configure.c:199 -msgid "Audio control device:" -msgstr "" +"Johan Levin, 1999." -#: src/sun/configure.c:270 -msgid "Buffer size (ms):" -msgstr "" - -#: src/sun/configure.c:348 -msgid "Volume controls device:" -msgstr "" - -#: src/sun/configure.c:361 -msgid "XMMS uses mixer exclusively." -msgstr "" +#: src/stereo_plugin/stereo.c:64 +msgid "About Extra Stereo Plugin" +msgstr "O wtyczce Extra Stereo" -#: src/sun/configure.c:536 -msgid "Sun driver configuration" -msgstr "" +#: src/stereo_plugin/stereo.c:95 +msgid "Configure Extra Stereo" +msgstr "Konfiguruj dźwiÄ™k stereo" -#: src/tonegen/tonegen.c:53 +#: src/tonegen/tonegen.c:49 msgid "About Tone Generator" -msgstr "" +msgstr "O generatorze sygnałów" -#: src/tonegen/tonegen.c:55 +#: src/tonegen/tonegen.c:51 msgid "" "Sinus tone generator by Haavard Kvaalen \n" "Modified by Daniel J. Peng \n" @@ -5302,37 +3557,30 @@ "To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" "e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" msgstr "" +"Generator sygnałów Sinus autorstwa Haavard Kvaalen \n" +"Zmodyfikowany przez Daniel J. Peng \n" +"\n" +"Aby go użyć, dodaj URL w postaci: tone://czÄ™stotliwość1;czÄ™stotliwość2;czÄ™stotliwość3;...\n" +"np. tone://2000;2005 aby odtworzyć sygnaÅ‚ o kombinacji czÄ™stotliwoÅ›ci 2000Hz oraz 2005Hz" -#: src/tonegen/tonegen.c:105 +#: src/tonegen/tonegen.c:101 #, c-format msgid "%s %.1f Hz" -msgstr "" +msgstr "%s %.1f Hz" -#: src/tonegen/tonegen.c:105 +#: src/tonegen/tonegen.c:101 msgid "Tone Generator: " -msgstr "" - -#: src/vorbis/configure.c:31 -msgid "Override generic titles" -msgstr "" - -#: src/vorbis/configure.c:32 -msgid "Title format:" -msgstr "" - -#: src/vorbis/configure.c:36 -msgid "Ogg Vorbis Tags" -msgstr "" +msgstr "Generator sygnałów: " -#: src/vorbis/configure.c:68 -msgid "Ogg Vorbis Audio Plugin Configuration" -msgstr "" +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" +msgstr "O wtyczce File I/O" -#: src/vorbis/vorbis.c:549 +#: src/vorbis/vorbis.c:573 msgid "About Ogg Vorbis Audio Plugin" -msgstr "" +msgstr "O wtyczce dźwiÄ™ku Ogg Vorbis" -#: src/vorbis/vorbis.c:554 +#: src/vorbis/vorbis.c:578 msgid "" "Ogg Vorbis Plugin by the Xiph.org Foundation\n" "\n" @@ -5350,32 +3598,59 @@ "\n" "Visit the Xiph.org Foundation at http://www.xiph.org/\n" msgstr "" +"Wtyczka Ogg Vorbis autorstwa Xiph.org Foundation\n" +"\n" +"Oryginalny kod:\n" +"Tony Arcieri \n" +"Wsparcie od:\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Odwiedź witrynÄ™ Xiph.org Foundation: http://www.xiph.org/\n" #: src/vtx/about.c:14 msgid "About Vortex Player" -msgstr "" +msgstr "O odtwarzaczu Vortex" #: src/vtx/about.c:15 msgid "" "Vortex file format player by Sashnov Alexander \n" -"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" "\n" "Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" "and other AY/YM music sites.\n" "\n" "Audacious implementation by Pavel Vymetalek " msgstr "" +"Odtwarzacz plików formatu Vortex stworzony przez Sashnov Alexander \n" +"Oryginalne źródÅ‚a znalezione w_vtx.dll przez Roman Sherbakov \n" +"\n" +"MuzykÄ™ w formacie vtx można znaleźć na http://vtx.microfor.ru/music.htm\n" +"oraz na innych witrynach z muzykÄ… AY/YM.\n" +"\n" +"Implementacja w Audacious: Pavel Vymetalek " -#: src/wavpack/wavpack.c:371 +#: src/wavpack/wavpack.c:353 #, c-format msgid "Wavpack Decoder Plugin %s" -msgstr "" +msgstr "Wtyczka dekodera Wavpack %s" -#: src/wavpack/wavpack.c:372 +#: src/wavpack/wavpack.c:354 msgid "" "Copyright (c) 2006 William Pitcock \n" "\n" "Some of the plugin code was by Miles Egan\n" "Visit the Wavpack site at http://www.wavpack.com/\n" msgstr "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Część kodu napisaÅ‚ Miles Egan\n" +"Odwiedź witrynÄ™ internetowÄ… Wavpack: http://www.wavpack.com/\n" + + diff -Nru audacious-plugins-2.4.4/po/POTFILES.in audacious-plugins-3.2/po/POTFILES.in --- audacious-plugins-2.4.4/po/POTFILES.in 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/POTFILES.in 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ # Please don't update this file manually - use ./update-potfiles.sh instead! src/aac/libmp4.c -src/adplug/adplug-xmms.cc +src/alarm/alarm.c src/alarm/interface.c src/alsa/config.c src/alsa/plugin.c @@ -17,11 +17,8 @@ src/aosd/aosd_style.c src/aosd/aosd_trigger.c src/aosd/aosd_ui.c -src/bluetooth/agent.c -src/bluetooth/bluetooth.c -src/bluetooth/gui.c -src/bluetooth/scan_gui.c src/blur_scope/config.c +src/bs2b/plugin.c src/cdaudio-ng/cdaudio-ng.c src/cdaudio-ng/configure.c src/cd-menu-items/cd-menu-items.c @@ -53,43 +50,35 @@ src/console/Spc_Cpu.cxx src/console/Spc_Dsp.cxx src/console/Spc_Emu.cxx -src/console/Vfs_File.cxx src/console/Vgm_Emu.cxx src/console/Ym2612_Emu.cxx src/crossfade/plugin.c src/crystalizer/crystalizer.c src/echo_plugin/gui.c -src/evdev-plug/ed.c -src/evdev-plug/ed_internals.c -src/evdev-plug/ed_ui.c src/ffaudio/ffaudio-core.c src/filewriter/filewriter.c src/filewriter/mp3.c src/filewriter/vorbis.c src/flacng/plugin.c src/gnomeshortcuts/gnomeshortcuts.c -src/gntui/fileselector.c -src/gntui/gntui.c -src/gtkui/actions.c +src/gtkui/columns.c +src/gtkui/layout.c +src/gtkui/menus.c src/gtkui/ui_gtk.c -src/gtkui/ui_manager.c +src/gtkui/ui_playlist_notebook.c +src/gtkui/ui_playlist_widget.c src/gtkui/ui_statusbar.c src/hotkey/gui.c src/jack/bio2jack.c src/jack/configure.c src/jack/jack.c -src/ladspa/ladspa.c -src/lirc/about.c -src/lirc/interface.c -src/lirc/lirc.c +src/ladspa/plugin.c src/lyricwiki/lyricwiki.c src/metronom/metronom.c -src/modplug/gui/interface.cxx -src/modplug/gui/main.cxx -src/modplug/gui/modplug.glade -src/modplug/gui/support.cxx +src/mixer/plugin.c src/mpg123/mpg123.c src/mtp_up/mtp.c +src/notify/libnotify-aosd_event.c src/null/null.c src/oss4/configure.c src/oss4/plugin.c @@ -101,35 +90,23 @@ src/scrobbler/configure.c src/scrobbler/plugin.c src/scrobbler/scrobbler.c -src/sid/xmms-sid.glade -src/sid/xs_about.c -src/sid/xs_config.c -src/sid/xs_fileinfo.c -src/sid/xs_glade.c -src/sid/xs_interface.c +src/sdlout/plugin.c +src/search-tool/search-tool.c src/skins/plugin.c src/skins/skins_cfg.c src/skins/ui_equalizer.c src/skins/ui_main.c src/skins/ui_manager.c src/skins/ui_playlist.c -src/skins/ui_skinned_equalizer_slider.c src/skins/ui_skinselector.c src/skins/util.c src/sndfile/plugin.c src/sndstretch/sndstretch_xmms.c src/song_change/song_change.c -src/spectrum/spectrum.c src/statusicon/statusicon.c src/stereo_plugin/stereo.c -src/streambrowser/gui/streambrowser_win.c -src/streambrowser/streambrowser.c -src/sun/about.c -src/sun/configure.c src/tonegen/tonegen.c -src/usf/recompiler_cpu.c -src/usf/rsp_recompiler_cpu.c -src/vorbis/configure.c +src/unix-io/gtk.c src/vorbis/vorbis.c src/vtx/about.c src/wavpack/wavpack.c diff -Nru audacious-plugins-2.4.4/po/ro.po audacious-plugins-3.2/po/ro.po --- audacious-plugins-2.4.4/po/ro.po 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/ro.po 2012-01-20 19:48:30.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: audacious-plugins 1.4.0\n" "Report-Msgid-Bugs-To: http://jira.atheme.org/\n" -"POT-Creation-Date: 2010-08-03 17:55-0400\n" +"POT-Creation-Date: 2011-07-17 18:49-0400\n" "PO-Revision-Date: 2007-08-28 20:44+0200\n" "Last-Translator: Daniel Patriche \n" "Language-Team: Romanian \n" @@ -19,7 +19,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/aac/libmp4.c:291 +#: src/aac/libmp4.c:256 #, fuzzy, c-format msgid "" "Using libfaad2-%s for decoding.\n" @@ -31,629 +31,55 @@ "decoder-ul este ·(C)·Nero·AG,·www.nero.com\n" "Copyright·(c)·2005-2006·Echipa de dezvoltare Audacious" -#: src/aac/libmp4.c:296 +#: src/aac/libmp4.c:261 #, fuzzy msgid "About MP4 AAC decoder plugin" msgstr "Despre plugin-ul decodor MP4·AAC" -#: src/adplug/adplug-xmms.cc:153 -msgid "About " -msgstr "Despre " - -#: src/adplug/adplug-xmms.cc:157 -msgid "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"This plugin is released under the terms and conditions of the GNU LGPL.\n" -"See http://www.gnu.org/licenses/lgpl.html for details.\n" -"\n" -"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et " -"al.\n" -"Linked AdPlug library version: " -msgstr "" -"\n" -"Copyright·(C)·2002,·2003·Simon·Peter·\n" -"\n" -"Acest plugin este distribuit conform termenilor È™i condiÈ›iilor licenÈ›ei GNU " -"LGPL.\n" -"VedeÈ›i·http://www.gnu.org/licenses/lgpl.html·tentru detalii.\n" -"\n" -"Plugin-ul foloseÈ™te biblioteca AdPlug,·Copyright·(C)·Simon·Peter·și alÈ›ii.\n" -"Versiunea AdPlug pentru care a fost link-editat:·" - -#: src/adplug/adplug-xmms.cc:234 -msgid "AdPlug :: Configuration" -msgstr "AdPlug·::·Configurare" - -#: src/adplug/adplug-xmms.cc:243 src/adplug/adplug-xmms.cc:504 -#: src/cdaudio-ng/configure.c:258 src/crystalizer/crystalizer.c:127 -#: src/echo_plugin/gui.c:122 src/jack/configure.c:146 src/null/null.c:109 -#: src/stereo_plugin/stereo.c:123 src/sun/configure.c:557 -msgid "Ok" -msgstr "Ok" - -#: src/adplug/adplug-xmms.cc:253 src/alarm/interface.c:1398 -#: src/cdaudio-ng/configure.c:263 src/crystalizer/crystalizer.c:136 -#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 -#: src/modplug/gui/interface.cxx:715 src/null/null.c:110 -#: src/stereo_plugin/stereo.c:132 src/sun/configure.c:565 -msgid "Cancel" -msgstr "Anulează" - -#: src/adplug/adplug-xmms.cc:269 src/console/configure.c:154 -#: src/modplug/gui/interface.cxx:629 src/modplug/gui/interface.cxx:888 -msgid "General" -msgstr "General" - -#: src/adplug/adplug-xmms.cc:281 -msgid "Sound quality" -msgstr "Calitatea sunetului" - -#: src/adplug/adplug-xmms.cc:286 src/modplug/gui/interface.cxx:188 -msgid "Resolution" -msgstr "RezoluÈ›ie" - -#: src/adplug/adplug-xmms.cc:288 -msgid "8bit" -msgstr "8 biÈ›i" - -#: src/adplug/adplug-xmms.cc:293 -msgid "16bit" -msgstr "16 biÈ›i" - -#: src/adplug/adplug-xmms.cc:301 src/modplug/gui/interface.cxx:219 -msgid "Channels" -msgstr "Canale" - -#: src/adplug/adplug-xmms.cc:303 src/filewriter/mp3.c:934 -#: src/mpg123/mpg123.c:174 src/sid/xs_interface.c:301 -msgid "Mono" -msgstr "Mono" - -#: src/adplug/adplug-xmms.cc:308 src/filewriter/mp3.c:929 -#: src/modplug/gui/interface.cxx:205 src/mpg123/mpg123.c:174 -#: src/sid/xs_interface.c:308 -msgid "Stereo" -msgstr "Stereo" - -#: src/adplug/adplug-xmms.cc:312 -msgid "" -"Setting stereo is not recommended, unless you need to. This won't add any " -"stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!" -msgstr "" -"Nu este recomandată setarea forÈ›ată Stereo, decât dacă este neapărată " -"nevoieAceastă setare nu va adăuga efecte stereo, deoarece OPL2 suportă doar " -"MonoVa consuma însă mai multe resurse de calcul!" - -#: src/adplug/adplug-xmms.cc:320 -msgid "Frequency" -msgstr "FrecvenÈ›a" - -#: src/adplug/adplug-xmms.cc:356 src/adplug/adplug-xmms.cc:560 -#: src/console/configure.c:156 src/gtkui/ui_manager.c:64 -#: src/skins/ui_manager.c:165 -msgid "Playback" -msgstr "Redare" - -#: src/adplug/adplug-xmms.cc:360 -msgid "Detect songend" -msgstr "Detectează sfârÈ™itul melodiei" - -#: src/adplug/adplug-xmms.cc:364 -msgid "" -"If enabled, XMMS will detect a song's ending, stop it and advance in the " -"playlist. If disabled, XMMS won't take notice of a song's ending and loop it " -"all over again and again." -msgstr "" -"Dacă este activat, Audacious va detecta·sfârÈ™itul melodiei, va opri redarea " -"È™i va avansa la melodia următoare. Dacă este dezactivat, nu se va È™ti când s-" -"a terminat melodia È™i va fi redată din nou, la infinit. " - -#: src/adplug/adplug-xmms.cc:375 -msgid "Formats" -msgstr "Formate" - -#: src/adplug/adplug-xmms.cc:382 -msgid "Format selection" -msgstr "SelecÈ›ia formatelor" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Format" -msgstr "Format" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Extension" -msgstr "Extensie" - -#: src/adplug/adplug-xmms.cc:425 -msgid "" -"Selected file types will be recognized and played back by this plugin. " -"Deselected types will be ignored to make room for other plugins to play " -"these files." -msgstr "" -"Tipurile de fiÈ™iere selectate vor fi recunoscute È™i redate de acest plugin. " -"Cele deselectate vor fi ignorate, dar pot fi redate de alte pluginuri." - -#: src/adplug/adplug-xmms.cc:511 -msgid "AdPlug :: File Info" -msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" - -#: src/adplug/adplug-xmms.cc:533 src/amidi-plug/i_configure-fluidsynth.c:348 -msgid "Filename" -msgstr "Numele FiÈ™ierului:" - -#: src/adplug/adplug-xmms.cc:537 src/skins/ui_playlist.c:390 -msgid "Title: " -msgstr "Titlu: " - -#: src/adplug/adplug-xmms.cc:538 -msgid "Author: " -msgstr "Autor: " - -#: src/adplug/adplug-xmms.cc:539 -msgid "File Type: " -msgstr "Tipul FiÈ™ierului: " - -#: src/adplug/adplug-xmms.cc:540 -msgid "Subsongs: " -msgstr "Sub-melodii: " - -#: src/adplug/adplug-xmms.cc:541 -msgid "Instruments: " -msgstr "Instrumente: " - -#: src/adplug/adplug-xmms.cc:546 -msgid "Orders: " -msgstr "Ordine: " - -#: src/adplug/adplug-xmms.cc:547 -msgid "Patterns: " -msgstr "Șabloane: " - -#: src/adplug/adplug-xmms.cc:551 -msgid "Song" -msgstr "Melodia" - -#: src/adplug/adplug-xmms.cc:577 -msgid "Instrument name" -msgstr "Numele Instrumentului" - -#: src/adplug/adplug-xmms.cc:619 -msgid "Song message" -msgstr "Mesajul melodiei" - -#: src/adplug/adplug-xmms.cc:641 -msgid "Subsong selection" -msgstr "SelecÈ›ia sub-melodiei" - -#: src/adplug/adplug-xmms.cc:707 -msgid "Order: " -msgstr "Ordine: " - -#: src/adplug/adplug-xmms.cc:708 -msgid "Pattern: " -msgstr "Șablon: " - -#: src/adplug/adplug-xmms.cc:710 -msgid "Row: " -msgstr "Linie: " - -#: src/adplug/adplug-xmms.cc:711 -msgid "Speed: " -msgstr "Viteză: " - -#: src/adplug/adplug-xmms.cc:712 -msgid "Timer: " -msgstr "Cronometru: " - -#: src/adplug/adplug-xmms.cc:713 src/console/configure.c:234 -#: src/sid/xs_interface.c:354 -msgid "Hz" -msgstr "Hz" - -#: src/alarm/interface.c:34 -msgid "About XMMS Alarm" -msgstr "Despre plugin-ul·pentru Alarmă" - -#: src/alarm/interface.c:47 -msgid "XMMS Alarm" -msgstr "XMMS·Alarm" - -#: src/alarm/interface.c:56 -msgid "" -"An XMMS plugin which can be used\n" -"to start playing at a certain time.\n" -"\n" -"Send all complaints to:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" -msgstr "" -"Acest plugin poate fi folosit pentru\n" -"a orni redarea la un anumit timp.\n" -"\n" -"TrimiteÈ›i eventualele reclamaÈ›ii la:\n" -"Adam·Feakin·\n" -"Daniel·Stodden·\n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" - -#: src/alarm/interface.c:71 src/bluetooth/scan_gui.c:149 src/lirc/about.c:115 -#: src/modplug/gui/interface.cxx:972 src/sid/xs_about.c:214 -#: src/sid/xs_interface.c:1825 -msgid "Close" -msgstr "ÃŽnchide" - -#: src/alarm/interface.c:101 -msgid "Alarm" -msgstr "Alarmă" - -#: src/alarm/interface.c:109 -msgid "This is your wakeup call." -msgstr "Acesta este semnalul de deÈ™teptare." - -#: src/alarm/interface.c:124 src/alarm/interface.c:1389 -#: src/modplug/gui/interface.cxx:703 src/sid/xs_config.c:322 -msgid "OK" -msgstr "Ok" - -#: src/alarm/interface.c:152 -msgid "Select Playlist" -msgstr "SelectaÈ›i Playlist-ul" - -#: src/alarm/interface.c:196 -msgid "Sorry" -msgstr "Ne pare rău" - -#: src/alarm/interface.c:204 -msgid "Warning" -msgstr "Avertizare" - -#: src/alarm/interface.c:213 -msgid "" -"For safety reasons the \"quiet\" time must be at least 65 seconds longer " -"than the fading time, it must also be more than 10 seconds. This basically " -"means that there is a bug in the code and until I find a way of really " -"fixing it this message will appear :)\n" -"\n" -"Your fading settings have NOT been saved\n" -"\n" -"--\n" -"Adam" -msgstr "" -"Din motive de siguranță, timpul de \"liniÈ™te\" trebuie să fie de minim 65 " -"secunde.For·safety·reasons·the·\"quiet" -"\"·time·must·be·at·least·65·seconds·longer·than·the·fading·time," -"·it·must·also·be·more·than·10·seconds." -"··This·basically·means·that·there·is·a·bug·in·the·code·and·until·I·find·a·way·of·really·fixing·it·this·message·will·appear·:)\n" -"\n" -"Your·fading·settings·have·NOT·been·saved\n" -"\n" -"--\n" -"Adam" - -#: src/alarm/interface.c:229 -msgid "Oh Well" -msgstr "Ok" - -#: src/alarm/interface.c:388 -msgid "Alarm Settings" -msgstr "OpÈ›iuni ale plugin-ului Alarm" - -#: src/alarm/interface.c:404 src/alarm/interface.c:576 -#: src/alarm/interface.c:948 -msgid "Time" -msgstr "Timp" - -#: src/alarm/interface.c:445 -msgid "hours" -msgstr "ore" - -#: src/alarm/interface.c:506 -msgid "h" -msgstr "h" - -#: src/alarm/interface.c:536 -msgid "minutes" -msgstr "" - -#: src/alarm/interface.c:554 -msgid "Quiet after:" -msgstr "OpreÈ™te după:" - -#: src/alarm/interface.c:564 -msgid "Alarm at (default):" -msgstr "Alarmă la (implicit):" - -#: src/alarm/interface.c:584 -msgid "Choose the days for the alarm to come on" -msgstr "AlegeÈ›i zilele în care să pornească alarma" - -#: src/alarm/interface.c:612 src/alarm/interface.c:660 -#: src/alarm/interface.c:708 src/alarm/interface.c:756 -#: src/alarm/interface.c:804 src/alarm/interface.c:852 -#: src/alarm/interface.c:900 src/OSS/configure.c:166 -#: src/skins/ui_manager.c:439 src/skins/ui_manager.c:460 -#, fuzzy -msgid "Default" -msgstr "Implicit" - -#: src/alarm/interface.c:938 -msgid "Day" -msgstr "Ziua" - -#: src/alarm/interface.c:958 -msgid "Tuesday" -msgstr "MarÈ›i" - -#: src/alarm/interface.c:969 -msgid "Wednesday" -msgstr "Miercuri" - -#: src/alarm/interface.c:980 -msgid "Thursday" -msgstr "Joi" - -#: src/alarm/interface.c:991 -msgid "Friday" -msgstr "Vineri" - -#: src/alarm/interface.c:1002 -msgid "Saturday" -msgstr "Sâmbătă" - -#: src/alarm/interface.c:1013 -msgid "Sunday" -msgstr "Duminică" - -#: src/alarm/interface.c:1023 -msgid "Monday" -msgstr "Luni" - -#: src/alarm/interface.c:1034 -msgid "Days" -msgstr "Zile" - -#: src/alarm/interface.c:1050 -msgid "Fading" -msgstr "TranziÈ›ie" - -#: src/alarm/interface.c:1087 src/sid/xs_interface.c:921 -#: src/sid/xs_interface.c:975 src/sid/xs_interface.c:1155 -#, fuzzy -msgid "seconds" -msgstr "secunde" - -#: src/alarm/interface.c:1095 src/alarm/interface.c:1211 -#: src/modplug/gui/interface.cxx:550 -#, fuzzy -msgid "Volume" -msgstr "Volum: %d%%" - -#: src/alarm/interface.c:1121 -#, fuzzy -msgid "Current" -msgstr "Plugin-ul de ieÈ™ire curent" - -#: src/alarm/interface.c:1128 -msgid "reset to current output volume" -msgstr "resetează la volumul curent" - -#: src/alarm/interface.c:1130 -#, fuzzy -msgid "Start at" -msgstr "ÃŽncepe redarea playlist-ului curent" - -#: src/alarm/interface.c:1158 src/alarm/interface.c:1202 -msgid "%" -msgstr "%" - -#: src/alarm/interface.c:1174 -msgid "Final" -msgstr "Final" - -#: src/alarm/interface.c:1227 -msgid "Additional Command" -msgstr "Comandă adiÈ›ională" - -#: src/alarm/interface.c:1253 -#, fuzzy -msgid "enable" -msgstr "Activează modul 'Mărime Dublă'" - -#: src/alarm/interface.c:1261 -#, fuzzy -msgid "Playlist (optional)" -msgstr "SelectaÈ›i Playlist-ul" - -#: src/alarm/interface.c:1287 -msgid "Browse..." -msgstr "RăsfoieÈ™te" - -#: src/alarm/interface.c:1295 src/alarm/interface.c:1460 -#, fuzzy -msgid "Reminder" -msgstr "Reminder" - -#: src/alarm/interface.c:1312 -#, fuzzy -msgid "Use reminder" -msgstr "FoloseÈ™te cursoare de mouse personalizate (oferite de skin)" - -#: src/alarm/interface.c:1328 src/sndstretch/sndstretch_xmms.c:394 -#, fuzzy -msgid "Options" -msgstr "Meniu de OpÈ›iuni" - -#: src/alarm/interface.c:1336 -msgid "What do these options mean?" -msgstr "Ce înseamnă opÈ›iunile acestea?" - -#: src/alarm/interface.c:1364 -msgid "" -"\n" -"Time\n" -" Alarm at: \n" -" The time for the alarm to come on.\n" -"\n" -" Quiet After: \n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading: \n" -" Fade the volume up to the chosen volume \n" -" for this amount of time.\n" -"\n" -" Start at: \n" -" Start fading from this volume.\n" -"\n" -" Final: \n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist: \n" -" Load this playlist for playing songs from \n" -" (must have .m3u extension). If no playlist\n" -" is given then the songs which are currently\n" -" in the list will be used.\n" -" The URL of an mp3/ogg stream can also be\n" -" entered here, but loading of playlists from\n" -" URLs is not currently supported by xmms.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off,\n" -" type the reminder in the box and turn on the\n" -" toggle button if you want it to be shown.\n" -msgstr "" -"\n" -"Timp\n" -" Alarmă la: \n" -" Ora la care se va declanÈ™a alarma.\n" -"\n" -" OpreÈ™te după: \n" -" OpreÈ™te alarma după atât timp.\n" -" (dacă dialogul de trezire nu este închis)\n" -"\n" -"\n" -"Zile\n" -" Ziua:\n" -" SelectaÈ›i zilele în care să se activeze alarma.\n" -"\n" -" Timp:\n" -" AlegeÈ›i timpul la care va porni alarma în fiecare zi.\n" -" sau selectaÈ›i valoarea implicită folosind butonul\n" -"\n" -"\n" -"Volum\n" -" TranziÈ›ie: \n" -" Va face volumul să crească lent până la valoarea \n" -" maximă, iar aceasta este durata perioadei de\n" -" tranziÈ›ie.\n" -"\n" -"\n" -" Volum iniÈ›ial: \n" -" ÃŽncepe tranziÈ›ia de la această valoare iniÈ›ială a \n" -" volumului.\n" -"\n" -" Volum final: \n" -" Volumul maxim la care se va ajunge în timpul \n" -" tranziÈ›iei.\n" -"\n" -"\n" -"OpÈ›iuni:\n" -" Comandă adiÈ›ională:\n" -" Comandă ce va fi rulată la momentul declanșării \n" -" alarmei.\n" -"\n" -" Playlist: \n" -" ÃŽncarcă un playlist a cărui melodii vor fi redate\n" -" la declanÈ™area alarmei. (cu extensie .m3u), sau \n" -" un link spre un fiÈ™ier sau stream audio.\n" -" Dacă nu este dat nimic vor fi folosite melodiile\n" -" existente în playlist.\n" -"\n" -" Reminder:\n" -" AfiÈ™ează un mesaj de reamintire când alarma se \n" -" opreÈ™te. EditaÈ›i mesajul È™i activaÈ›i-l dacă doriÈ›i \n" -" ca acesta să fie afiÈ™at.\n" - -#: src/alarm/interface.c:1366 src/gtkui/ui_manager.c:165 -#: src/skins/ui_manager.c:371 -msgid "Help" -msgstr "Ajutor" - -#: src/alarm/interface.c:1468 -msgid "Your reminder for today is.." -msgstr "Mesajul de reamintire pentru ziua de azi este..." - -#: src/alarm/interface.c:1493 -msgid "Thankyou" -msgstr "MulÈ›umesc" - -#: src/alsa/config.c:209 +#: src/alsa/config.c:210 #, fuzzy msgid "Default PCM device" msgstr "Salvează Lista Implicită" -#: src/alsa/config.c:234 +#: src/alsa/config.c:235 #, fuzzy msgid "Default mixer device" msgstr "Salvează Lista Implicită" -#: src/alsa/config.c:438 +#: src/alsa/config.c:447 #, fuzzy msgid "ALSA Output Plugin Preferences" msgstr "PreferinÈ›ele Plugin-ului de IeÈ™ire" -#: src/alsa/config.c:445 +#: src/alsa/config.c:454 #, fuzzy msgid "PCM device:" msgstr "Dispozitiv mixer:" -#: src/alsa/config.c:447 src/OSS/configure.c:256 src/sun/configure.c:218 +#: src/alsa/config.c:456 src/OSS/configure.c:246 msgid "Mixer device:" msgstr "Dispozitiv mixer:" -#: src/alsa/config.c:449 +#: src/alsa/config.c:458 #, fuzzy msgid "Mixer element:" msgstr "Dispozitiv mixer:" -#: src/alsa/config.c:452 +#: src/alsa/config.c:461 msgid "Work around drain hangup" msgstr "" -#: src/alsa/plugin.c:61 +#: src/alsa/plugin.c:59 #, fuzzy msgid "About ALSA Output Plugin" msgstr "Despre plugin-ul·Apple·Lossless·Audio" -#: src/alsa/plugin.c:83 +#: src/alsa/plugin.c:81 #, fuzzy msgid "ALSA error" msgstr "Terror" -#: src/amidi-plug/amidi-plug.c:323 +#: src/amidi-plug/amidi-plug.c:335 msgid "" "You have not selected any sequencer ports for MIDI playback. You can do so " "in the MIDI plugin preferences." @@ -685,11 +111,11 @@ "\n" "Backend-ul a fost scris de către Giacomo Lozito." -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:41 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 msgid "FluidSynth Backend " msgstr "Backend-ul FluidSynth" -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:43 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 msgid "" "This backend produces audio by sending MIDI events to FluidSynth, a real-" "time software synthesizer based on the SoundFont2 specification (www." @@ -699,74 +125,48 @@ "Backend written by Giacomo Lozito." msgstr "" -#: src/amidi-plug/i_configure-alsa.c:221 +#: src/amidi-plug/i_configure-alsa.c:228 msgid "ALSA BACKEND CONFIGURATION" msgstr "" -#: src/amidi-plug/i_configure-alsa.c:326 +#: src/amidi-plug/i_configure-alsa.c:331 #, fuzzy msgid "Port" msgstr "Port-ul:" -#: src/amidi-plug/i_configure-alsa.c:328 +#: src/amidi-plug/i_configure-alsa.c:333 #, fuzzy msgid "Client name" msgstr "Numele Instrumentului" -#: src/amidi-plug/i_configure-alsa.c:330 +#: src/amidi-plug/i_configure-alsa.c:335 #, fuzzy msgid "Port name" msgstr "Numele Instrumentului" -#: src/amidi-plug/i_configure-alsa.c:341 +#: src/amidi-plug/i_configure-alsa.c:346 #, fuzzy msgid "ALSA output ports" msgstr "Plugin-ul de ieÈ™ire curent" -#: src/amidi-plug/i_configure-alsa.c:394 +#: src/amidi-plug/i_configure-alsa.c:399 msgid "Soundcard: " msgstr "Placa de sunet:" -#: src/amidi-plug/i_configure-alsa.c:396 +#: src/amidi-plug/i_configure-alsa.c:401 msgid "Mixer control: " msgstr "Controlul mixerului:" -#: src/amidi-plug/i_configure-alsa.c:408 +#: src/amidi-plug/i_configure-alsa.c:413 #, fuzzy msgid "Mixer settings" msgstr "OpÈ›iuni pentru Popup-ul cu informaÈ›ii suplimentare" -#: src/amidi-plug/i_configure-alsa.c:421 -msgid "" -"* Select ALSA output ports *\n" -"MIDI events will be sent to the ports selected here. In example, if your " -"audio card provides a hardware synth and you want to play MIDI with it, " -"you'll probably want to select the wavetable synthesizer ports." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:426 -msgid "" -"* Select ALSA mixer card *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volumeslider will " -"manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:433 -msgid "" -"* Select ALSA mixer control *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volume slider " -"will manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:444 +#: src/amidi-plug/i_configure-alsa.c:429 msgid "ALSA Backend not loaded or not available" msgstr "Backend-ul ALSA nu este incarcat sau nu este disponibil" -#: src/amidi-plug/i_configure-alsa.c:463 +#: src/amidi-plug/i_configure-alsa.c:448 msgid "" "ALSA\n" "backend" @@ -774,315 +174,179 @@ "Backend-ul\n" "ALSA" -#: src/amidi-plug/i_configure-ap.c:56 +#: src/amidi-plug/i_configure-ap.c:59 msgid "AMIDI-Plug - backend information" msgstr "AMIDI-Plug - informatii backend" -#: src/amidi-plug/i_configure-ap.c:194 +#: src/amidi-plug/i_configure-ap.c:196 #, fuzzy msgid "AMIDI-PLUG PREFERENCES" msgstr "PreferinÈ›ele Plugin-ului de IeÈ™ire" -#: src/amidi-plug/i_configure-ap.c:221 +#: src/amidi-plug/i_configure-ap.c:223 #, fuzzy msgid "Backend selection" msgstr "SelecÈ›ia formatelor" -#: src/amidi-plug/i_configure-ap.c:225 +#: src/amidi-plug/i_configure-ap.c:227 #, fuzzy msgid "Available backends" msgstr "_Preset-uri disponibile:" -#: src/amidi-plug/i_configure-ap.c:255 +#: src/amidi-plug/i_configure-ap.c:257 #, fuzzy msgid "Playback settings" msgstr "OpÈ›iuni pentru Popup-ul cu informaÈ›ii suplimentare" -#: src/amidi-plug/i_configure-ap.c:260 +#: src/amidi-plug/i_configure-ap.c:262 msgid "Transpose: " msgstr "" -#: src/amidi-plug/i_configure-ap.c:269 +#: src/amidi-plug/i_configure-ap.c:271 msgid "Drum shift: " msgstr "" -#: src/amidi-plug/i_configure-ap.c:287 +#: src/amidi-plug/i_configure-ap.c:289 #, fuzzy msgid "Advanced settings" msgstr "OpÈ›iuni pentru Popup-ul cu informaÈ›ii suplimentare" -#: src/amidi-plug/i_configure-ap.c:291 +#: src/amidi-plug/i_configure-ap.c:293 msgid "pre-calculate length of MIDI files in playlist" msgstr "" -#: src/amidi-plug/i_configure-ap.c:296 +#: src/amidi-plug/i_configure-ap.c:298 msgid "extract comments from MIDI file (if available)" msgstr "extrage comentariile din fiÅŸierul MIDI (dacă sunt disponibile)" -#: src/amidi-plug/i_configure-ap.c:301 +#: src/amidi-plug/i_configure-ap.c:303 msgid "extract lyrics from MIDI file (if available)" msgstr "extrage versuri din fiÅŸierul MIDI (dacă sunt disponibile)" -#: src/amidi-plug/i_configure-ap.c:320 -msgid "" -"* Backend selection *\n" -"AMIDI-Plug works with backends, in a modular fashion; here you should select " -"your backend; that is, the way MIDI events are going to be handled and " -"played.\n" -"If you have a hardware synthesizer on your audio card, and ALSA supports it, " -"you'll want to use the ALSA backend. It can also be used with anything that " -"provides an interface to the ALSA sequencer, including software synths or " -"external devices.\n" -"If you want to rely on a software synthesizer and/or want to pipe audio into " -"effect and output plugins of the player you'll want to use the good " -"FluidSynth backend.\n" -"Press the info button to read specific information about each backend." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:331 -msgid "" -"* Transpose function *\n" -"This option allows you to play the midi file transposed in a different key, " -"by shifting of the desired number of semitones all its notes (excepting " -"those on midi channel 10, reserved for percussions). Especially useful if " -"you wish to sing or play along with another instrument." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:337 -msgid "" -"* Drumshift function *\n" -"This option allows you to shift notes on midi channel 10 (the standard " -"percussions channel) of the desired number of semitones. This results in " -"different drumset and percussions being used during midi playback, so if you " -"wish to enhance (or reduce, or alter) percussion sounds, try to play with " -"this value." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:344 -msgid "" -"* Pre-calculate MIDI length *\n" -"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as " -"soon as the player requests it, instead of doing that only when the MIDI " -"file is being played. In example, MIDI length will be calculated straight " -"after adding MIDI files in a playlist. Disable this option if you want " -"faster playlist loading (when a lot of MIDI files are added), enable it to " -"display more information in the playlist straight after loading." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:353 -msgid "" -"* Extract comments from MIDI files *\n" -"Some MIDI files contain text comments (author, copyright, instrument notes, " -"etc.). If this option is enabled, AMIDI-Plug will extract and display " -"comments (if available) in the file information dialog." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:358 -msgid "" -"* Extract lyrics from MIDI files *\n" -"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug " -"will extract and display song lyrics (if available) in the file information " -"dialog." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:375 +#: src/amidi-plug/i_configure-ap.c:333 msgid "" "AMIDI\n" "Plug" msgstr "" -#: src/amidi-plug/i_configure.c:73 +#: src/amidi-plug/i_configure.c:76 msgid "AMIDI-Plug - select file" msgstr "AMIDI-Plug - Alege fiÅŸierul" -#: src/amidi-plug/i_configure.c:126 +#: src/amidi-plug/i_configure.c:129 msgid "AMIDI-Plug - configuration" msgstr "AMIDI-Plug - ConfiguraÅ£ie" -#: src/amidi-plug/i_configure-fluidsynth.c:52 +#: src/amidi-plug/i_configure-fluidsynth.c:55 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - SelectaÅ£i fiÅŸierul SoundFont" -#: src/amidi-plug/i_configure-fluidsynth.c:268 +#: src/amidi-plug/i_configure-fluidsynth.c:270 msgid "FLUIDSYNTH BACKEND CONFIGURATION" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:316 +#: src/amidi-plug/i_configure-fluidsynth.c:313 #, fuzzy msgid "SoundFont settings" msgstr "OpÈ›iuni pentru Popup-ul cu informaÈ›ii suplimentare" -#: src/amidi-plug/i_configure-fluidsynth.c:352 +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Numele FiÈ™ierului:" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 #, fuzzy msgid "Size (bytes)" msgstr "Mărimea Buffer-ului:" -#: src/amidi-plug/i_configure-fluidsynth.c:401 +#: src/amidi-plug/i_configure-fluidsynth.c:398 msgid "Load SF on player start" msgstr "ÃŽncarcă SF la pornirea playerului" -#: src/amidi-plug/i_configure-fluidsynth.c:405 +#: src/amidi-plug/i_configure-fluidsynth.c:402 msgid "Load SF on first midifile play" msgstr "ÃŽncarcă SF la prima redare a unui fiÅŸier MIDI" -#: src/amidi-plug/i_configure-fluidsynth.c:420 +#: src/amidi-plug/i_configure-fluidsynth.c:417 #, fuzzy msgid "Synthesizer settings" msgstr "OpÈ›iuni pentru Popup-ul cu informaÈ›ii suplimentare" -#: src/amidi-plug/i_configure-fluidsynth.c:429 +#: src/amidi-plug/i_configure-fluidsynth.c:426 msgid "gain" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:435 -#: src/amidi-plug/i_configure-fluidsynth.c:463 -#: src/amidi-plug/i_configure-fluidsynth.c:491 -#: src/amidi-plug/i_configure-fluidsynth.c:522 +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 #, fuzzy msgid "use default" msgstr "Skin-ul implicit:" -#: src/amidi-plug/i_configure-fluidsynth.c:438 -#: src/amidi-plug/i_configure-fluidsynth.c:466 +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 msgid "value:" msgstr "valoare:" -#: src/amidi-plug/i_configure-fluidsynth.c:457 +#: src/amidi-plug/i_configure-fluidsynth.c:454 msgid "poliphony" msgstr "polifonie" -#: src/amidi-plug/i_configure-fluidsynth.c:485 +#: src/amidi-plug/i_configure-fluidsynth.c:482 msgid "reverb" msgstr "reverb" -#: src/amidi-plug/i_configure-fluidsynth.c:494 -#: src/amidi-plug/i_configure-fluidsynth.c:525 +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 msgid "yes" msgstr "da" -#: src/amidi-plug/i_configure-fluidsynth.c:496 -#: src/amidi-plug/i_configure-fluidsynth.c:527 +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 #, fuzzy msgid "no" msgstr "Nu avansa în Playlist" -#: src/amidi-plug/i_configure-fluidsynth.c:516 +#: src/amidi-plug/i_configure-fluidsynth.c:513 msgid "chorus" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:547 +#: src/amidi-plug/i_configure-fluidsynth.c:544 #, fuzzy msgid "sample rate" msgstr "Rata de Reîmprospătare" -#: src/amidi-plug/i_configure-fluidsynth.c:553 +#: src/amidi-plug/i_configure-fluidsynth.c:550 #, fuzzy msgid "22050 Hz " msgstr "Rata de eÈ™antionare [Hz]:" -#: src/amidi-plug/i_configure-fluidsynth.c:556 +#: src/amidi-plug/i_configure-fluidsynth.c:553 #, fuzzy msgid "44100 Hz " msgstr "Rata de eÈ™antionare [Hz]:" -#: src/amidi-plug/i_configure-fluidsynth.c:559 +#: src/amidi-plug/i_configure-fluidsynth.c:556 #, fuzzy msgid "96000 Hz " msgstr "Rata de eÈ™antionare [Hz]:" -#: src/amidi-plug/i_configure-fluidsynth.c:562 +#: src/amidi-plug/i_configure-fluidsynth.c:559 #, fuzzy msgid "custom " msgstr "Format specificat:" -#: src/amidi-plug/i_configure-fluidsynth.c:571 +#: src/amidi-plug/i_configure-fluidsynth.c:568 #, fuzzy msgid "Hz " msgstr "Hz" #: src/amidi-plug/i_configure-fluidsynth.c:621 -msgid "" -"* Select SoundFont files *\n" -"In order to play MIDI with FluidSynth, you need to specify at least one " -"valid SoundFont file here (use absolute paths). The loading order is from " -"the top (first) to the bottom (last)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:626 -msgid "" -"* Load SoundFont on player start *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:634 -msgid "" -"* Load SoundFont on first midifile play *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:642 -msgid "" -"* Synthesizer gain *\n" -"From FluidSynth docs: the gain is applied to the final or master output of " -"the synthesizer; it is set to a low value by default to avoid the saturation " -"of the output when random MIDI files are played." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:647 -msgid "" -"* Synthesizer polyphony *\n" -"From FluidSynth docs: the polyphony defines how many voices can be played in " -"parallel; the number of voices is not necessarily equivalent to the number " -"of notes played simultaneously; indeed, when a note is struck on a specific " -"MIDI channel, the preset on that channel may create several voices, for " -"example, one for the left audio channel and one for the right audio " -"channels; the number of voices activated depends on the number of instrument " -"zones that fall in the correspond to the velocity and key of the played note." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:657 -#: src/amidi-plug/i_configure-fluidsynth.c:663 -msgid "" -"* Synthesizer reverb *\n" -"From FluidSynth docs: when set to \"yes\" the reverb effects module is " -"activated; note that when the reverb module is active, the amount of signal " -"sent to the reverb module depends on the \"reverb send\" generator defined " -"in the SoundFont." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:669 -#: src/amidi-plug/i_configure-fluidsynth.c:675 -msgid "" -"* Synthesizer chorus *\n" -"From FluidSynth docs: when set to \"yes\" the chorus effects module is " -"activated; note that when the chorus module is active, the amount of signal " -"sent to the chorus module depends on the \"chorus send\" generator defined " -"in the SoundFont." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:681 -#: src/amidi-plug/i_configure-fluidsynth.c:685 -#: src/amidi-plug/i_configure-fluidsynth.c:689 -#: src/amidi-plug/i_configure-fluidsynth.c:693 -msgid "" -"* Synthesizer samplerate *\n" -"The sample rate of the audio generated by the synthesizer. You can also " -"specify a custom value in the interval 22050Hz-96000Hz." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:701 msgid "FluidSynth Backend not loaded or not available" msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:720 +#: src/amidi-plug/i_configure-fluidsynth.c:640 msgid "" "FluidSynth\n" "backend" @@ -1102,8 +366,7 @@ "backend" msgstr "" -#: src/amidi-plug/i_fileinfo.c:169 src/bluetooth/gui.c:271 -#: src/sid/xs_interface.c:1769 +#: src/amidi-plug/i_fileinfo.c:169 src/sid/xs_interface.c:1769 #, fuzzy msgid "Name:" msgstr "Numele Instrumentului" @@ -1263,212 +526,212 @@ msgid "Triggers OSD when playback is unpaused." msgstr "" -#: src/aosd/aosd_ui.c:168 +#: src/aosd/aosd_ui.c:180 msgid "Placement" msgstr "Pozitionare" -#: src/aosd/aosd_ui.c:202 +#: src/aosd/aosd_ui.c:219 #, fuzzy msgid "Relative X offset:" msgstr "FoloseÈ™te cale relativă" -#: src/aosd/aosd_ui.c:211 +#: src/aosd/aosd_ui.c:228 #, fuzzy msgid "Relative Y offset:" msgstr "FoloseÈ™te cale relativă" -#: src/aosd/aosd_ui.c:220 +#: src/aosd/aosd_ui.c:237 msgid "Max OSD width:" msgstr "" -#: src/aosd/aosd_ui.c:233 +#: src/aosd/aosd_ui.c:250 msgid "Multi-Monitor options" msgstr "" -#: src/aosd/aosd_ui.c:237 +#: src/aosd/aosd_ui.c:254 #, fuzzy msgid "Display OSD using:" msgstr "Arată fereastra principală" -#: src/aosd/aosd_ui.c:239 +#: src/aosd/aosd_ui.c:265 #, fuzzy msgid "all monitors" msgstr "Selectează Tot" -#: src/aosd/aosd_ui.c:242 +#: src/aosd/aosd_ui.c:268 #, c-format msgid "monitor %i" msgstr "" -#: src/aosd/aosd_ui.c:295 +#: src/aosd/aosd_ui.c:323 msgid "Timing (ms)" msgstr "" -#: src/aosd/aosd_ui.c:300 +#: src/aosd/aosd_ui.c:328 #, fuzzy msgid "Display:" msgstr "La afiÈ™are" -#: src/aosd/aosd_ui.c:305 +#: src/aosd/aosd_ui.c:333 #, fuzzy msgid "Fade in:" msgstr "PorneÈ™te" -#: src/aosd/aosd_ui.c:310 +#: src/aosd/aosd_ui.c:338 msgid "Fade out:" msgstr "" -#: src/aosd/aosd_ui.c:391 +#: src/aosd/aosd_ui.c:419 #, fuzzy msgid "Fonts" msgstr "_Fonturi" -#: src/aosd/aosd_ui.c:399 +#: src/aosd/aosd_ui.c:427 #, fuzzy, c-format msgid "Font %i:" msgstr "Alege fontul playlist-ului" -#: src/aosd/aosd_ui.c:416 +#: src/aosd/aosd_ui.c:444 msgid "Shadow" msgstr "" -#: src/aosd/aosd_ui.c:451 +#: src/aosd/aosd_ui.c:479 msgid "Internationalization" msgstr "InternaÅ£ionalizare" -#: src/aosd/aosd_ui.c:457 +#: src/aosd/aosd_ui.c:485 msgid "Disable UTF-8 conversion of text (in aosd)" msgstr "" -#: src/aosd/aosd_ui.c:475 +#: src/aosd/aosd_ui.c:503 #, fuzzy msgid "Select Skin File" msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" -#: src/aosd/aosd_ui.c:586 +#: src/aosd/aosd_ui.c:614 msgid "Render Style" msgstr "" -#: src/aosd/aosd_ui.c:602 +#: src/aosd/aosd_ui.c:630 msgid "Colors" msgstr "Culori" -#: src/aosd/aosd_ui.c:615 +#: src/aosd/aosd_ui.c:643 #, fuzzy, c-format msgid "Color %i:" msgstr "Ajustarea culorii" -#: src/aosd/aosd_ui.c:635 +#: src/aosd/aosd_ui.c:663 #, fuzzy msgid "Custom Skin" msgstr "Skin-ul implicit:" -#: src/aosd/aosd_ui.c:641 +#: src/aosd/aosd_ui.c:669 #, fuzzy msgid "Skin file:" msgstr "Tipul FiÈ™ierului: " -#: src/aosd/aosd_ui.c:644 src/sid/xs_interface.c:1044 +#: src/aosd/aosd_ui.c:672 src/sid/xs_interface.c:1044 #: src/sid/xs_interface.c:1236 src/sid/xs_interface.c:1292 msgid "Browse" msgstr "" -#: src/aosd/aosd_ui.c:746 +#: src/aosd/aosd_ui.c:774 #, fuzzy msgid "Enable trigger" msgstr "Activează modul 'Mărime Dublă'" -#: src/aosd/aosd_ui.c:773 +#: src/aosd/aosd_ui.c:801 msgid "Event" msgstr "Eveniment" -#: src/aosd/aosd_ui.c:801 +#: src/aosd/aosd_ui.c:829 #, fuzzy msgid "Composite manager detected" msgstr "Deschide Managerul de Playlist-uri" -#: src/aosd/aosd_ui.c:808 +#: src/aosd/aosd_ui.c:836 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " "manager otherwise the OSD won't work properly" msgstr "" -#: src/aosd/aosd_ui.c:816 +#: src/aosd/aosd_ui.c:844 msgid "Composite manager not required for fake transparency" msgstr "" -#: src/aosd/aosd_ui.c:854 +#: src/aosd/aosd_ui.c:882 msgid "Transparency" msgstr "Transparenţă" -#: src/aosd/aosd_ui.c:860 +#: src/aosd/aosd_ui.c:888 msgid "Fake transparency" msgstr "Transparenţă falsă" -#: src/aosd/aosd_ui.c:862 +#: src/aosd/aosd_ui.c:890 msgid "Real transparency (requires X Composite Ext.)" msgstr "Transparenţă reală (necesita Extensia X Composite)" -#: src/aosd/aosd_ui.c:904 +#: src/aosd/aosd_ui.c:932 msgid "Composite extension not loaded" msgstr "Extensia composită nu a fost încărcată" -#: src/aosd/aosd_ui.c:912 +#: src/aosd/aosd_ui.c:940 msgid "Composite extension not available" msgstr "Extensia composită nu este disponibilă" -#: src/aosd/aosd_ui.c:931 +#: src/aosd/aosd_ui.c:959 #, c-format msgid "Audacious OSD" msgstr "" -#: src/aosd/aosd_ui.c:1012 +#: src/aosd/aosd_ui.c:1040 #, fuzzy msgid "Audacious OSD - configuration" msgstr "Developerii Audacious:" -#: src/aosd/aosd_ui.c:1033 +#: src/aosd/aosd_ui.c:1061 msgid "Test" msgstr "Test" -#: src/aosd/aosd_ui.c:1048 +#: src/aosd/aosd_ui.c:1076 msgid "Position" msgstr "PoziÅ£ie" -#: src/aosd/aosd_ui.c:1053 +#: src/aosd/aosd_ui.c:1081 msgid "Animation" msgstr "AnimaÅ£ie" -#: src/aosd/aosd_ui.c:1058 +#: src/aosd/aosd_ui.c:1086 msgid "Text" msgstr "Text" -#: src/aosd/aosd_ui.c:1063 +#: src/aosd/aosd_ui.c:1091 msgid "Decoration" msgstr "DecoraÅ£ii" -#: src/aosd/aosd_ui.c:1068 +#: src/aosd/aosd_ui.c:1096 msgid "Trigger" msgstr "DeclanÅŸator" -#: src/aosd/aosd_ui.c:1073 src/cdaudio-ng/configure.c:178 -#: src/modplug/gui/interface.cxx:689 src/sid/xs_interface.c:1302 +#: src/aosd/aosd_ui.c:1101 src/cdaudio-ng/configure.c:171 +#: src/sid/xs_interface.c:1302 msgid "Misc" msgstr "" -#: src/aosd/aosd_ui.c:1110 +#: src/aosd/aosd_ui.c:1138 #, fuzzy msgid "Audacious OSD - about" msgstr "Despre plugin-ul·pentru Alarmă" -#: src/aosd/aosd_ui.c:1140 +#: src/aosd/aosd_ui.c:1168 msgid "" "\n" "Audacious OSD " msgstr "" -#: src/aosd/aosd_ui.c:1141 +#: src/aosd/aosd_ui.c:1169 msgid "" "\n" "http://www.develia.org/projects.php?p=audacious#aosd\n" @@ -1481,135 +744,8 @@ "\n" msgstr "" -#: src/bluetooth/agent.c:356 src/bluetooth/agent.c:397 -#, c-format -msgid "Pairing request for '%s'" -msgstr "" - -#: src/bluetooth/agent.c:544 -#, c-format -msgid "Authorization request for %s" -msgstr "" - -#: src/bluetooth/agent.c:728 -#, c-format -msgid "Created bonding with %s" -msgstr "" - -#: src/bluetooth/agent.c:756 -#, c-format -msgid "Removed bonding with %s" -msgstr "" - -#: src/bluetooth/agent.c:808 -msgid "Device has been switched off" -msgstr "" - -#: src/bluetooth/agent.c:811 -msgid "Device has been made non-discoverable" -msgstr "" - -#: src/bluetooth/agent.c:813 -msgid "Device has been made connectable" -msgstr "" - -#: src/bluetooth/agent.c:815 -msgid "Device has been made discoverable" -msgstr "" - -#: src/bluetooth/agent.c:817 -msgid "Device has been made limited discoverable" -msgstr "" - -#: src/bluetooth/agent.c:819 -msgid "Device has been switched into pairing mode" -msgstr "" - -#: src/bluetooth/bluetooth.c:117 -msgid "Bluetooth headset support plugin" -msgstr "" - -#: src/bluetooth/bluetooth.c:118 -msgid "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the " -"Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" -msgstr "" - -#: src/bluetooth/gui.c:148 -msgid "Producer" -msgstr "" - -#: src/bluetooth/gui.c:221 -#, fuzzy -msgid "Available Headsets" -msgstr "_Preset-uri disponibile:" - -#: src/bluetooth/gui.c:224 -#, fuzzy -msgid "Current Headset" -msgstr "Plugin-ul de ieÈ™ire curent" - -#: src/bluetooth/gui.c:227 -msgid "_Refresh" -msgstr "" - -#: src/bluetooth/gui.c:231 -#, fuzzy -msgid "_Connect" -msgstr "Mod de Vizualizare" - -#: src/bluetooth/gui.c:237 -#, fuzzy -msgid "_Close" -msgstr "ÃŽnchide" - -#: src/bluetooth/gui.c:274 -#, fuzzy -msgid "Class" -msgstr "Classical" - -#: src/bluetooth/gui.c:278 -#, fuzzy -msgid "Address:" -msgstr "Adaugă Adresa Internet..." - -#: src/bluetooth/scan_gui.c:69 -msgid "Bonding finish!" -msgstr "" - -#: src/bluetooth/scan_gui.c:76 -msgid "No devices found!" -msgstr "" - -#: src/bluetooth/scan_gui.c:119 -msgid "Scanning..." -msgstr "" - -#: src/bluetooth/scan_gui.c:122 -msgid "Pairing..." -msgstr "" - -#: src/bluetooth/scan_gui.c:138 -#, fuzzy -msgid "Rescan" -msgstr "Dreptunghi" - -#: src/bluetooth/scan_gui.c:142 src/gtkui/ui_manager.c:66 -#: src/gtkui/ui_manager.c:67 src/hotkey/gui.c:71 src/skins/ui_manager.c:167 -#: src/skins/ui_manager.c:168 -#, fuzzy -msgid "Play" -msgstr "Pauză pentru" - -#: src/blur_scope/config.c:73 -msgid "Blur Scope: Color selection" +#: src/blur_scope/config.c:73 +msgid "Blur Scope: Color selection" msgstr "" #: src/blur_scope/config.c:83 src/jack/configure.c:111 @@ -1617,12 +753,12 @@ msgid "Options:" msgstr "Meniu de OpÈ›iuni" -#: src/cdaudio-ng/cdaudio-ng.c:278 +#: src/cdaudio-ng/cdaudio-ng.c:264 #, fuzzy msgid "About Audio CD Plugin" msgstr "Despre plugin-ul·Apple·Lossless·Audio" -#: src/cdaudio-ng/cdaudio-ng.c:279 +#: src/cdaudio-ng/cdaudio-ng.c:265 msgid "" "Copyright (c) 2007, by Calin Crisan and The Audacious " "Team.\n" @@ -1637,138 +773,173 @@ "Copyright 2009 John Lindgren" msgstr "" -#: src/cdaudio-ng/configure.c:155 +#: src/cdaudio-ng/cdaudio-ng.c:558 +#, fuzzy +msgid "Audio CD" +msgstr "Audio" + +#: src/cdaudio-ng/cdaudio-ng.c:913 +msgid "Drive is empty." +msgstr "" + +#: src/cdaudio-ng/cdaudio-ng.c:915 +msgid "Unsupported disk type." +msgstr "" + +#: src/cdaudio-ng/configure.c:148 #, fuzzy msgid "CD Audio Plugin Configuration" msgstr "Despre plugin-ul·Apple·Lossless·Audio" -#: src/cdaudio-ng/configure.c:167 +#: src/cdaudio-ng/configure.c:160 #, fuzzy msgid "Digital audio extraction" msgstr "Despre plugin-ul·Apple·Lossless·Audio" -#: src/cdaudio-ng/configure.c:172 +#: src/cdaudio-ng/configure.c:165 #, fuzzy msgid "Title information" msgstr "InformaÈ›ii despre Track" -#: src/cdaudio-ng/configure.c:190 +#: src/cdaudio-ng/configure.c:176 msgid "Disc speed:" msgstr "" -#: src/cdaudio-ng/configure.c:198 +#: src/cdaudio-ng/configure.c:184 #, fuzzy msgid "Use cd-text if available" msgstr "FoloseÈ™te fonturi Bitmap dacă sunt disponibile" -#: src/cdaudio-ng/configure.c:205 +#: src/cdaudio-ng/configure.c:191 #, fuzzy msgid "Use CDDB if available" msgstr "FoloseÈ™te fonturi Bitmap dacă sunt disponibile" -#: src/cdaudio-ng/configure.c:211 +#: src/cdaudio-ng/configure.c:197 msgid "Server: " msgstr "Server:" -#: src/cdaudio-ng/configure.c:215 +#: src/cdaudio-ng/configure.c:201 #, fuzzy msgid "Path: " msgstr "Șablon: " -#: src/cdaudio-ng/configure.c:219 +#: src/cdaudio-ng/configure.c:205 #, fuzzy msgid "Port: " msgstr "Port-ul:" -#: src/cdaudio-ng/configure.c:232 +#: src/cdaudio-ng/configure.c:218 msgid "Use HTTP instead of CDDBP" msgstr "" -#: src/cdaudio-ng/configure.c:244 +#: src/cdaudio-ng/configure.c:230 #, fuzzy msgid "Override default device: " msgstr "Salvează Lista Implicită" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:131 +#: src/echo_plugin/gui.c:123 src/jack/configure.c:146 src/null/null.c:112 +#: src/stereo_plugin/stereo.c:125 +msgid "Ok" +msgstr "Ok" + +#: src/cdaudio-ng/configure.c:249 src/crystalizer/crystalizer.c:138 +#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 src/null/null.c:113 +#: src/stereo_plugin/stereo.c:132 +msgid "Cancel" +msgstr "Anulează" + +#: src/cd-menu-items/cd-menu-items.c:34 #, fuzzy msgid "Play CD" msgstr "Pauză pentru" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cd-menu-items/cd-menu-items.c:34 #, fuzzy msgid "Add CD" msgstr "Adauga CD..." -#: src/compressor/plugin.c:58 +#: src/compressor/plugin.c:67 #, fuzzy msgid "About Dynamic Range Compression Plugin" msgstr "Despre plugin-ul decodor MP4·AAC" -#: src/compressor/plugin.c:91 +#: src/compressor/plugin.c:99 #, fuzzy msgid "Dynamic Range Compressor Preferences" msgstr "PreferinÈ›e Audacious" -#: src/compressor/plugin.c:103 +#: src/compressor/plugin.c:111 #, fuzzy -msgid "Target volume:" +msgid "Center volume:" msgstr "Schimbă volumul cu" -#: src/compressor/plugin.c:116 -#, fuzzy -msgid "Effect strength:" -msgstr "Lista plugin-urilor de _Efecte" +#: src/compressor/plugin.c:124 +msgid "Dynamic range:" +msgstr "" -#: src/console/configure.c:137 +#: src/console/configure.c:138 msgid "Game Console Music Decoder" msgstr "" -#: src/console/configure.c:171 +#: src/console/configure.c:155 +msgid "General" +msgstr "General" + +#: src/console/configure.c:157 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "Redare" + +#: src/console/configure.c:172 msgid "Bass:" msgstr "Bass:" -#: src/console/configure.c:175 src/console/configure.c:186 -#: src/console/configure.c:207 +#: src/console/configure.c:176 src/console/configure.c:187 +#: src/console/configure.c:208 msgid "secs" msgstr "" -#: src/console/configure.c:182 +#: src/console/configure.c:183 msgid "Treble:" msgstr "Inalte:" -#: src/console/configure.c:203 +#: src/console/configure.c:204 #, fuzzy msgid "Default song length:" msgstr "Pauză" -#: src/console/configure.c:209 src/modplug/gui/interface.cxx:269 -#: src/sid/xs_interface.c:666 +#: src/console/configure.c:210 src/sid/xs_interface.c:666 msgid "Resampling" msgstr "" -#: src/console/configure.c:215 +#: src/console/configure.c:216 #, fuzzy msgid "Enable audio resampling" msgstr "Activează proxy" -#: src/console/configure.c:230 +#: src/console/configure.c:231 #, fuzzy msgid "Resampling rate:" msgstr "Rata de Reîmprospătare" -#: src/console/configure.c:245 +#: src/console/configure.c:235 src/sid/xs_interface.c:354 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:246 msgid "SPC" msgstr "SPC" -#: src/console/configure.c:246 +#: src/console/configure.c:247 msgid "Ignore length from SPC tags" msgstr "" -#: src/console/configure.c:247 +#: src/console/configure.c:248 msgid "Increase reverb" msgstr "MăreÅŸte reverbul" -#: src/console/configure.c:272 +#: src/console/configure.c:273 msgid "" "The default song length, expressed in seconds, is used for songs that do not " "provide length information (i.e. looping tracks)." @@ -1786,31 +957,31 @@ " Shay Green \n" msgstr "" -#: src/crossfade/plugin.c:51 +#: src/crossfade/plugin.c:65 #, fuzzy msgid "About Crossfade" msgstr "Despre plugin-ul decodor MP4·AAC" -#: src/crossfade/plugin.c:84 +#: src/crossfade/plugin.c:97 #, fuzzy msgid "Crossfade Preferences" msgstr "PreferinÈ›e Audacious" -#: src/crossfade/plugin.c:95 +#: src/crossfade/plugin.c:109 msgid "Overlap (in seconds):" msgstr "" -#: src/crossfade/plugin.c:129 src/crossfade/plugin.c:137 +#: src/crossfade/plugin.c:140 src/crossfade/plugin.c:146 #, fuzzy msgid "Crossfade Error" msgstr "Crossover" -#: src/crossfade/plugin.c:130 +#: src/crossfade/plugin.c:140 msgid "" "Crossfading failed because the songs had a different number of channels." msgstr "" -#: src/crossfade/plugin.c:138 +#: src/crossfade/plugin.c:148 msgid "" "Crossfading failed because the songs had different sample rates.\n" "\n" @@ -1818,22 +989,26 @@ "same rate." msgstr "" -#: src/crystalizer/crystalizer.c:104 +#: src/crystalizer/crystalizer.c:108 #, fuzzy msgid "Configure Crystalizer" msgstr "Configurează" -#: src/crystalizer/crystalizer.c:106 src/stereo_plugin/stereo.c:102 +#: src/crystalizer/crystalizer.c:110 src/stereo_plugin/stereo.c:104 #, fuzzy msgid "Effect intensity:" msgstr "Lista plugin-urilor de _Efecte" -#: src/crystalizer/crystalizer.c:143 src/echo_plugin/gui.c:137 -#: src/modplug/gui/interface.cxx:709 src/stereo_plugin/stereo.c:139 +#: src/crystalizer/crystalizer.c:144 src/echo_plugin/gui.c:136 +#: src/stereo_plugin/stereo.c:138 msgid "Apply" msgstr "" -#: src/echo_plugin/gui.c:14 +#: src/daemon/daemon.c:58 +msgid "Daemon Interface (like old headless mode)" +msgstr "" + +#: src/echo_plugin/gui.c:15 msgid "" "Echo Plugin\n" "By Johan Levin 1999.\n" @@ -1841,3774 +1016,3958 @@ "Surround echo by Carl van Schaik 1999" msgstr "" -#: src/echo_plugin/gui.c:26 +#: src/echo_plugin/gui.c:27 #, fuzzy msgid "About Echo Plugin" msgstr "Despre plugin-ul decodor MP4·AAC" -#: src/echo_plugin/gui.c:69 +#: src/echo_plugin/gui.c:72 msgid "Configure Echo" msgstr "Configurează Ecou" -#: src/echo_plugin/gui.c:82 +#: src/echo_plugin/gui.c:88 msgid "Delay: (ms)" msgstr "" -#: src/echo_plugin/gui.c:87 +#: src/echo_plugin/gui.c:93 msgid "Feedback: (%)" msgstr "" -#: src/echo_plugin/gui.c:92 +#: src/echo_plugin/gui.c:98 #, fuzzy msgid "Volume: (%)" msgstr "Volum: %d%%" -#: src/evdev-plug/ed.c:60 -#, fuzzy -msgid "Playback->Play" -msgstr "Redă fiÈ™iere" +#: src/ffaudio/ffaudio-core.c:763 +#, c-format +msgid "" +"Multi-format audio decoding plugin for Audacious based on\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious plugin by:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" +msgstr "" -#: src/evdev-plug/ed.c:61 +#: src/ffaudio/ffaudio-core.c:777 #, fuzzy -msgid "Playback->Stop" -msgstr "OpreÈ™te melodia curentă" +msgid "About FFaudio Plugin" +msgstr "Despre plugin-ul·Apple·Lossless·Audio" -#: src/evdev-plug/ed.c:62 +#: src/filewriter/filewriter.c:155 #, fuzzy -msgid "Playback->Pause" -msgstr "Pauză pentru" +msgid "About FileWriter-Plugin" +msgstr "Despre plugin-ul decodor MP4·AAC" -#: src/evdev-plug/ed.c:63 +#: src/filewriter/filewriter.c:156 #, fuzzy -msgid "Playback->Prev" -msgstr "Continuă redarea la pornire" +msgid "" +"FileWriter-Plugin\n" +"\n" +"This program is free software; you can redistribute it and/or modify\n" +"it under the terms of the GNU General Public License as published by\n" +"the Free Software Foundation; either version 2 of the License, or\n" +"(at your option) any later version.\n" +"\n" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +"\n" +"You should have received a copy of the GNU General Public License\n" +"along with this program; if not, write to the Free Software\n" +"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" +"USA." +msgstr "" +"Plugin de ieÈ™ire ALSA pentru Audacious\n" +"\n" +"Acest program este software liber; poate fi redistribuit È™i/sau modificat\n" +"în conformitte cu termenii È™i condiÈ›iile licenÈ›ei GNU GPL, versiunea 2, sau\n" +"orice versiune mai nouă.\n" +"\n" +"CitiÈ›i textul licenÈ›ei pentru delatii suplimentare.\n" +"\n" +"O traducere (neoficială) în limba română poate fi găsită la adresa:\n" +"http://www.joomla.ro/content/view/144/45/ \n" +"\n" +"Textul original în engleză se află la adresa:\n" +"http://www.gnu.org/licenses/old-licenses/gpl-2.0.html\n" +"\n" +"Autor: Matthieu Sozeau (mattam@altern.org)" -#: src/evdev-plug/ed.c:64 +#: src/filewriter/filewriter.c:450 #, fuzzy -msgid "Playback->Next" -msgstr "Selectează Playlist-ul Următor" +msgid "File Writer Configuration" +msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" -#: src/evdev-plug/ed.c:65 +#: src/filewriter/filewriter.c:462 #, fuzzy -msgid "Playback->Eject" -msgstr "Continuă redarea la pornire" +msgid "Output file format:" +msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" -#: src/evdev-plug/ed.c:67 -#, fuzzy -msgid "Playlist->Repeat" -msgstr "SelectaÈ›i Playlist-ul" +#: src/filewriter/filewriter.c:480 +msgid "Configure" +msgstr "Configurează" + +#: src/filewriter/filewriter.c:495 +msgid "Save into original directory" +msgstr "Salvează în directorul original" + +#: src/filewriter/filewriter.c:500 +msgid "Save into custom directory" +msgstr "Salvează în directorul specificat" -#: src/evdev-plug/ed.c:68 +#: src/filewriter/filewriter.c:510 #, fuzzy -msgid "Playlist->Shuffle" -msgstr "SelectaÈ›i Playlist-ul" +msgid "Output file folder:" +msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" -#: src/evdev-plug/ed.c:70 +#: src/filewriter/filewriter.c:514 +msgid "Pick a folder" +msgstr "AlegeÅ£i un director" + +#: src/filewriter/filewriter.c:533 #, fuzzy -msgid "Volume->Up_5" -msgstr "Restrânge player-ul" +msgid "Get filename from:" +msgstr "După calea completă" -#: src/evdev-plug/ed.c:71 +#: src/filewriter/filewriter.c:536 #, fuzzy -msgid "Volume->Down_5" -msgstr "Schimbă volumul cu" +msgid "original file tags" +msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" -#: src/evdev-plug/ed.c:72 +#: src/filewriter/filewriter.c:542 #, fuzzy -msgid "Volume->Up_10" -msgstr "Restrânge player-ul" +msgid "original filename" +msgstr "După FiÈ™ier" + +#: src/filewriter/filewriter.c:552 +msgid "Don't strip file name extension" +msgstr "" + +#: src/filewriter/filewriter.c:567 +msgid "Prepend track number to filename" +msgstr "" -#: src/evdev-plug/ed.c:73 +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:783 #, fuzzy -msgid "Volume->Down_10" -msgstr "Schimbă volumul cu" +msgid "Auto" +msgstr "Auto-ÃŽncarcă Preset-ul" -#: src/evdev-plug/ed.c:74 +#: src/filewriter/mp3.c:38 #, fuzzy -msgid "Volume->Mute" -msgstr "Schimbă volumul cu" +msgid "Joint Stereo" +msgstr "Stereo" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 src/sid/xs_interface.c:308 +msgid "Stereo" +msgstr "Stereo" -#: src/evdev-plug/ed.c:76 +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 src/sid/xs_interface.c:301 +msgid "Mono" +msgstr "Mono" + +#: src/filewriter/mp3.c:724 #, fuzzy -msgid "Window->Main" -msgstr "Arată fereastra principală" +msgid "MP3 Configuration" +msgstr "AdPlug·::·Configurare" -#: src/evdev-plug/ed.c:77 +#: src/filewriter/mp3.c:747 #, fuzzy -msgid "Window->Playlist" -msgstr "SelectaÈ›i Playlist-ul" +msgid "Algorithm Quality:" +msgstr "Calitatea sunetului" -#: src/evdev-plug/ed.c:78 +#: src/filewriter/mp3.c:772 #, fuzzy -msgid "Window->Equalizer" -msgstr "Egalizator Audacious" +msgid "Output Samplerate:" +msgstr "Plugin-ul de ieÈ™ire curent" -#: src/evdev-plug/ed.c:79 +#: src/filewriter/mp3.c:800 #, fuzzy -msgid "Window->JumpToFile" -msgstr "Fereastra de PreferinÈ›e" +msgid "(Hz)" +msgstr "Hz" -#: src/evdev-plug/ed_internals.c:94 -#, c-format -msgid "" -"event-device-plugin: unable to open device file %s , skipping this device; " -"check that the file exists and that you have read permission for it\n" +#: src/filewriter/mp3.c:807 +msgid "Bitrate / Compression ratio:" msgstr "" -#: src/evdev-plug/ed_internals.c:103 -#, c-format -msgid "" -"event-device-plugin: unable to create a io_channel for device file %s ," -"skipping this device\n" -msgstr "" +#: src/filewriter/mp3.c:831 +msgid "Bitrate (kbps):" +msgstr "Bitrate-ul (kbps):" -#: src/evdev-plug/ed_internals.c:342 -msgid "" -"event-device-plugin: unable to open /proc/bus/input/devices , automatic " -"detection of event devices won't work.\n" +#: src/filewriter/mp3.c:864 +msgid "Compression ratio:" msgstr "" -#: src/evdev-plug/ed_internals.c:351 -msgid "" -"event-device-plugin: unable to open a io_channel for /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" +#: src/filewriter/mp3.c:888 +#, fuzzy +msgid "Audio Mode:" +msgstr "Mod de Vizualizare" -#: src/evdev-plug/ed_internals.c:361 -msgid "" -"event-device-plugin: an error occurred while reading /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" +#: src/filewriter/mp3.c:913 +msgid "Misc:" msgstr "" -#: src/evdev-plug/ed_internals.c:424 -#, c-format -msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" +#: src/filewriter/mp3.c:924 +msgid "Enforce strict ISO complience" msgstr "" -#: src/evdev-plug/ed_internals.c:489 src/evdev-plug/ed_internals.c:583 -#, c-format -msgid "" -"event-device-plugin: unable to load config file %s , default settings will " -"be used.\n" -msgstr "" +#: src/filewriter/mp3.c:935 +#, fuzzy +msgid "Error protection" +msgstr "Eroare în Audacious" -#: src/evdev-plug/ed_internals.c:535 -#, c-format -msgid "" -"event-device-plugin: incomplete information in config file for device \"%s" -"\" , skipping.\n" -msgstr "" +#: src/filewriter/mp3.c:947 src/filewriter/vorbis.c:245 +#, fuzzy +msgid "Quality" +msgstr "Calitatea sunetului" -#: src/evdev-plug/ed_internals.c:604 src/evdev-plug/ed_internals.c:936 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_active value for device " -"\"%s\", skipping it.\n" -msgstr "" +#: src/filewriter/mp3.c:957 +#, fuzzy +msgid "Enable VBR/ABR" +msgstr "Activează proxy" -#: src/evdev-plug/ed_internals.c:840 -#, c-format -msgid "" -"event-device-plugin: unable to access local directory %s , settings will not " -"be saved.\n" -msgstr "" +#: src/filewriter/mp3.c:967 +#, fuzzy +msgid "Type:" +msgstr "Tipul FiÈ™ierului: " -#: src/evdev-plug/ed_internals.c:890 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get filename value for device " -"\"%s\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:906 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get phys value for device \"%s" -"\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:922 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_custom value for device " -"\"%s\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:946 -#, c-format -msgid "" -"event-device-plugin: configuration, unexpected value for device \"%s\", " -"skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_ui.c:212 -#, fuzzy -msgid "Detected" -msgstr "Detectează sfârÈ™itul melodiei" - -#: src/evdev-plug/ed_ui.c:217 +#: src/filewriter/mp3.c:1000 #, fuzzy -msgid "Custom" -msgstr "Format specificat:" +msgid "VBR Options:" +msgstr "Meniu de OpÈ›iuni" -#: src/evdev-plug/ed_ui.c:223 -#, fuzzy -msgid "Not Detected" -msgstr "SelecÈ›ia formatelor" +#: src/filewriter/mp3.c:1016 +msgid "Minimum bitrate (kbps):" +msgstr "Bitrate minim (kbps)" -#: src/evdev-plug/ed_ui.c:275 src/evdev-plug/ed_ui.c:411 -#: src/evdev-plug/ed_ui.c:874 -#, fuzzy -msgid "Information" -msgstr "InformaÈ›ii despre Track" +#: src/filewriter/mp3.c:1043 +msgid "Maximum bitrate (kbps):" +msgstr "Bitrate maxim (kbps)" -#: src/evdev-plug/ed_ui.c:276 -msgid "" -"Cannot open bindings window for a not-detected device.\n" -"Ensure that the device has been correctly plugged in." +#: src/filewriter/mp3.c:1066 +msgid "Strictly enforce minimum bitrate" msgstr "" -#: src/evdev-plug/ed_ui.c:319 +#: src/filewriter/mp3.c:1078 #, fuzzy -msgid "Error" -msgstr "Eroare în Audacious" +msgid "ABR Options:" +msgstr "Meniu de OpÈ›iuni" -#: src/evdev-plug/ed_ui.c:320 -msgid "" -"Unable to open selected device.\n" -"Please check read permissions on device file." +#: src/filewriter/mp3.c:1088 +msgid "Average bitrate (kbps):" msgstr "" -#: src/evdev-plug/ed_ui.c:341 -msgid "EvDev-Plug - Add custom device" +#: src/filewriter/mp3.c:1116 +msgid "VBR quality level:" msgstr "" -#: src/evdev-plug/ed_ui.c:353 -msgid "" -"EvDev-Plug tries to automatically detect and update information about\n" -"event devices available on the system.\n" -"However, if auto-detect doesn't work for your system, or you have event\n" -"devices in a non-standard location (currently they're only searched in\n" -"/dev/input/ ), you may want to add a custom device, explicitly specifying\n" -"name and device file." +#: src/filewriter/mp3.c:1135 +msgid "Don't write Xing VBR header" msgstr "" -#: src/evdev-plug/ed_ui.c:361 -#, fuzzy -msgid "Device name:" -msgstr "Numele Instrumentului" +#: src/filewriter/mp3.c:1149 +msgid "VBR/ABR" +msgstr "VBR/ABR" -#: src/evdev-plug/ed_ui.c:365 -#, fuzzy -msgid "Device file:" -msgstr "Tipul FiÈ™ierului: " +#: src/filewriter/mp3.c:1159 +msgid "Frame params:" +msgstr "" -#: src/evdev-plug/ed_ui.c:404 +#: src/filewriter/mp3.c:1171 #, fuzzy -msgid "(custom)" -msgstr "Format specificat:" +msgid "Mark as copyright" +msgstr "Salvează ca È™i playlist static" -#: src/evdev-plug/ed_ui.c:412 -msgid "" -"Please specify both name and filename.\n" -"Filename must be specified with absolute path." -msgstr "" +#: src/filewriter/mp3.c:1182 +#, fuzzy +msgid "Mark as original" +msgstr "Salvează ca È™i playlist static" -#: src/evdev-plug/ed_ui.c:447 -msgid "Do you want to remove the existing configuration for selected device?\n" +#: src/filewriter/mp3.c:1194 +msgid "ID3 params:" msgstr "" -#: src/evdev-plug/ed_ui.c:466 -msgid "Do you want to remove the selected custom device?\n" +#: src/filewriter/mp3.c:1205 +msgid "Force addition of version 2 tag" msgstr "" -#: src/evdev-plug/ed_ui.c:612 -msgid "EvDev-Plug - Configuration" -msgstr "" +#: src/filewriter/mp3.c:1215 +msgid "Only add v1 tag" +msgstr "Adaugă numai tag-ul v1" -#: src/evdev-plug/ed_ui.c:651 -msgid "Active" -msgstr "Activ" +#: src/filewriter/mp3.c:1222 +msgid "Only add v2 tag" +msgstr "Adaugă numai tag-ul v2" -#: src/evdev-plug/ed_ui.c:655 src/sun/configure.c:486 -msgid "Status" -msgstr "Statut" +#: src/filewriter/mp3.c:1243 +msgid "Tags" +msgstr "Tag-uri" -#: src/evdev-plug/ed_ui.c:664 -#, fuzzy -msgid "Device Name" -msgstr "Numele Instrumentului" +#: src/filewriter/vorbis.c:238 +msgid "Vorbis Encoder Configuration" +msgstr "ConfiguraÅ£ia Vorbis Encoder" -#: src/evdev-plug/ed_ui.c:668 -#, fuzzy -msgid "Device File" -msgstr "Tipul FiÈ™ierului: " +#: src/filewriter/vorbis.c:258 +msgid "Quality level (0 - 10):" +msgstr "Nivelul de calitate (0 - 10):" -#: src/evdev-plug/ed_ui.c:672 +#: src/flacng/plugin.c:379 #, fuzzy -msgid "Device Address" -msgstr "Adaugă Adresa Internet..." - -#: src/evdev-plug/ed_ui.c:689 -msgid "_Bindings" -msgstr "" +msgid "About FLAC Audio Plugin" +msgstr "Despre plugin-ul·Apple·Lossless·Audio" -#: src/evdev-plug/ed_ui.c:838 +#: src/flacng/plugin.c:380 msgid "" -"Press a key of your device to bind it;\n" -"if no key is pressed in five seconds, this window\n" -"will close without binding changes." +"\n" +"\n" +"Original code by\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" msgstr "" -#: src/evdev-plug/ed_ui.c:875 +#: src/gnomeshortcuts/gnomeshortcuts.c:303 +#, fuzzy +msgid "About Gnome Shortcut Plugin" +msgstr "Despre plugin-ul decodor MP4·AAC" + +#: src/gnomeshortcuts/gnomeshortcuts.c:304 msgid "" -"This input event has been already assigned.\n" +"Gnome Shortcut Plugin\n" +"Let's you control the player with Gnome's shortcuts.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" "\n" -"It's not possible to assign multiple actions to the same input event " -"(although it's possible to assign the same action to multiple events)." msgstr "" -#: src/evdev-plug/ed_ui.c:1323 -msgid "EvDev-Plug - Bindings Configuration" +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 +msgid "Open Files" msgstr "" -#: src/evdev-plug/ed_ui.c:1363 -#, fuzzy -msgid "Name: " -msgstr "Numele Instrumentului" - -#: src/evdev-plug/ed_ui.c:1372 +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:271 #, fuzzy -msgid "Filename: " +msgid "Add Files" msgstr "Numele FiÈ™ierului:" -#: src/evdev-plug/ed_ui.c:1381 -#, fuzzy -msgid "Phys.Address: " -msgstr "Adaugă Adresa Internet..." - -#: src/evdev-plug/ed_ui.c:1460 +#: src/gntui/gntui.c:270 #, fuzzy -msgid "EvDev-Plug - about" -msgstr "Despre plugin-ul·pentru Alarmă" - -#: src/evdev-plug/ed_ui.c:1491 -msgid "" -"\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"written by Giacomo Lozito\n" -msgstr "" +msgid "Audacious2" +msgstr "%s - Audacious" -#: src/ffaudio/ffaudio-core.c:662 -#, c-format -msgid "" -"Multi-format audio decoding plugin for Audacious based on\n" -"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" -"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" -"\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" -"Audacious plugin by:\n" -" William Pitcock ,\n" -" Matti Hämäläinen \n" +#: src/gntui/gntui.c:311 +msgid "gnt interface" msgstr "" -#: src/ffaudio/ffaudio-core.c:675 +#: src/gtkui/columns.c:36 #, fuzzy -msgid "About FFaudio Plugin" -msgstr "Despre plugin-ul·Apple·Lossless·Audio" +msgid "Entry number" +msgstr "Numărul Trackului" -#: src/filewriter/filewriter.c:180 +#: src/gtkui/columns.c:36 src/sid/xs_interface.c:1103 #, fuzzy -msgid "About FileWriter-Plugin" -msgstr "Despre plugin-ul decodor MP4·AAC" +msgid "Title" +msgstr "Titlu" -#: src/filewriter/filewriter.c:181 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "" -"FileWriter-Plugin\n" -"\n" -"This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" -"Plugin de ieÈ™ire ALSA pentru Audacious\n" -"\n" -"Acest program este software liber; poate fi redistribuit È™i/sau modificat\n" -"în conformitte cu termenii È™i condiÈ›iile licenÈ›ei GNU GPL, versiunea 2, sau\n" -"orice versiune mai nouă.\n" -"\n" -"CitiÈ›i textul licenÈ›ei pentru delatii suplimentare.\n" -"\n" -"O traducere (neoficială) în limba română poate fi găsită la adresa:\n" -"http://www.joomla.ro/content/view/144/45/ \n" -"\n" -"Textul original în engleză se află la adresa:\n" -"http://www.gnu.org/licenses/old-licenses/gpl-2.0.html\n" -"\n" -"Autor: Matthieu Sozeau (mattam@altern.org)" +msgid "Artist" +msgstr "Artist" -#: src/filewriter/filewriter.c:466 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "File Writer Configuration" -msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" +msgid "Year" +msgstr "Anul" -#: src/filewriter/filewriter.c:478 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "Output file format:" -msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" +msgid "Album" +msgstr "Album" -#: src/filewriter/filewriter.c:496 src/ladspa/ladspa.c:1058 -msgid "Configure" -msgstr "Configurează" +#: src/gtkui/columns.c:37 +#, fuzzy +msgid "Track" +msgstr "InformaÈ›ii despre Track" -#: src/filewriter/filewriter.c:511 -msgid "Save into original directory" -msgstr "Salvează în directorul original" +#: src/gtkui/columns.c:37 +#, fuzzy +msgid "Queue position" +msgstr "PoziÅ£ie" -#: src/filewriter/filewriter.c:516 -msgid "Save into custom directory" -msgstr "Salvează în directorul specificat" +#: src/gtkui/columns.c:38 +#, fuzzy +msgid "Length" +msgstr "Mărimea track-ului" -#: src/filewriter/filewriter.c:528 +#: src/gtkui/columns.c:38 #, fuzzy -msgid "Output file folder:" -msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" +msgid "File path" +msgstr "Numele FiÈ™ierului:" -#: src/filewriter/filewriter.c:532 -msgid "Pick a folder" -msgstr "AlegeÅ£i un director" +#: src/gtkui/columns.c:38 +#, fuzzy +msgid "File name" +msgstr "Numele FiÈ™ierului:" -#: src/filewriter/filewriter.c:551 +#: src/gtkui/columns.c:38 #, fuzzy -msgid "Get filename from:" -msgstr "După calea completă" +msgid "Custom title" +msgstr "Skin-ul implicit:" -#: src/filewriter/filewriter.c:554 +#: src/gtkui/columns.c:39 #, fuzzy -msgid "original file tags" -msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" +msgid "Bitrate" +msgstr "Rata de Reîmprospătare" + +#: src/gtkui/columns.c:286 +msgid "Choose Columns" +msgstr "" -#: src/filewriter/filewriter.c:560 +#: src/gtkui/columns.c:300 #, fuzzy -msgid "original filename" -msgstr "După FiÈ™ier" +msgid "Available:" +msgstr "variabil" -#: src/filewriter/filewriter.c:570 -msgid "Don't strip file name extension" +#: src/gtkui/columns.c:334 +msgid "Chosen:" msgstr "" -#: src/filewriter/filewriter.c:574 -msgid "" -"If enabled, the extension from the original filename will not be stripped " -"before adding the new file extension to the end." +#: src/gtkui/layout.c:122 +msgid "Dock at Left" msgstr "" -#: src/filewriter/filewriter.c:588 -msgid "Prepend track number to filename" +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "" + +#: src/gtkui/layout.c:123 +msgid "Undock" msgstr "" -#: src/filewriter/mp3.c:710 +#: src/gtkui/layout.c:123 #, fuzzy -msgid "MP3 Configuration" -msgstr "AdPlug·::·Configurare" +msgid "Disable" +msgstr "variabil" -#: src/filewriter/mp3.c:737 +#: src/gtkui/menus.c:132 #, fuzzy -msgid "Algorithm Quality:" -msgstr "Calitatea sunetului" +msgid "_Open Files ..." +msgstr "Numele FiÈ™ierului:" -#: src/filewriter/mp3.c:759 -msgid "" -"best/slowest:0;\n" -"worst/fastest:9;\n" -"recommended:2;\n" -"default:5;" +#: src/gtkui/menus.c:133 +msgid "Open _URL ..." msgstr "" -#: src/filewriter/mp3.c:767 +#: src/gtkui/menus.c:134 #, fuzzy -msgid "Output Samplerate:" -msgstr "Plugin-ul de ieÈ™ire curent" +msgid "_Add File ..." +msgstr "Numele FiÈ™ierului:" -#: src/filewriter/mp3.c:778 src/filewriter/mp3.c:919 +#: src/gtkui/menus.c:135 #, fuzzy -msgid "Auto" -msgstr "Auto-ÃŽncarcă Preset-ul" +msgid "Add U_RL ..." +msgstr "Numele FiÈ™ierului:" -#: src/filewriter/mp3.c:800 +#: src/gtkui/menus.c:137 #, fuzzy -msgid "(Hz)" -msgstr "Hz" +msgid "A_bout ..." +msgstr "Despre " -#: src/filewriter/mp3.c:812 -msgid "Bitrate / Compression ratio:" -msgstr "" +#: src/gtkui/menus.c:138 +#, fuzzy +msgid "_Preferences ..." +msgstr "PreferinÈ›e Audacious" -#: src/filewriter/mp3.c:838 -msgid "Bitrate (kbps):" -msgstr "Bitrate-ul (kbps):" +#: src/gtkui/menus.c:139 src/skins/ui_manager.c:412 +#, fuzzy +msgid "_Quit" +msgstr "Calitatea sunetului" -#: src/filewriter/mp3.c:879 -msgid "Compression ratio:" -msgstr "" +#: src/gtkui/menus.c:142 +#, fuzzy +msgid "_Play" +msgstr "Pauză pentru" -#: src/filewriter/mp3.c:909 +#: src/gtkui/menus.c:143 #, fuzzy -msgid "Audio Mode:" -msgstr "Mod de Vizualizare" +msgid "Paus_e" +msgstr "La încărcare" -#: src/filewriter/mp3.c:924 -msgid "Joint-Stereo" -msgstr "" +#: src/gtkui/menus.c:144 +#, fuzzy +msgid "_Stop" +msgstr "Synthpop" -#: src/filewriter/mp3.c:967 -msgid "Misc:" -msgstr "" +#: src/gtkui/menus.c:145 +#, fuzzy +msgid "Pre_vious" +msgstr "Primus" -#: src/filewriter/mp3.c:978 -msgid "Enforce strict ISO complience" -msgstr "" +#: src/gtkui/menus.c:146 +#, fuzzy +msgid "_Next" +msgstr "Text" -#: src/filewriter/mp3.c:989 +#: src/gtkui/menus.c:148 #, fuzzy -msgid "Error protection" -msgstr "Eroare în Audacious" +msgid "_Repeat" +msgstr "Beat" -#: src/filewriter/mp3.c:1001 -msgid "Adds 16 bit checksum to every frame" +#: src/gtkui/menus.c:149 +msgid "S_huffle" msgstr "" -#: src/filewriter/mp3.c:1006 src/filewriter/vorbis.c:247 -#: src/modplug/gui/interface.cxx:320 +#: src/gtkui/menus.c:150 #, fuzzy -msgid "Quality" -msgstr "Calitatea sunetului" +msgid "N_o Playlist Advance" +msgstr "SelectaÈ›i Playlist-ul" -#: src/filewriter/mp3.c:1018 -#, fuzzy -msgid "Enable VBR/ABR" -msgstr "Activează proxy" +#: src/gtkui/menus.c:151 +msgid "Stop _After This Song" +msgstr "" + +#: src/gtkui/menus.c:153 src/gtkui/menus.c:210 +msgid "Song _Info ..." +msgstr "" -#: src/filewriter/mp3.c:1030 +#: src/gtkui/menus.c:154 #, fuzzy -msgid "Type:" -msgstr "Tipul FiÈ™ierului: " +msgid "Jump to _Time ..." +msgstr "Fereastra de PreferinÈ›e" -#: src/filewriter/mp3.c:1041 -msgid "Variable bitrate" -msgstr "Bitrate variabil" - -#: src/filewriter/mp3.c:1053 -msgid "Average bitrate" -msgstr "Bitrate mediu" +#: src/gtkui/menus.c:155 +msgid "_Jump to Song ..." +msgstr "" -#: src/filewriter/mp3.c:1067 +#: src/gtkui/menus.c:158 #, fuzzy -msgid "VBR Options:" -msgstr "Meniu de OpÈ›iuni" +msgid "By Track _Number" +msgstr "Numărul Trackului" -#: src/filewriter/mp3.c:1083 -msgid "Minimum bitrate (kbps):" -msgstr "Bitrate minim (kbps)" +#: src/gtkui/menus.c:159 +#, fuzzy +msgid "By _Title" +msgstr "Titlu" -#: src/filewriter/mp3.c:1119 -msgid "Maximum bitrate (kbps):" -msgstr "Bitrate maxim (kbps)" +#: src/gtkui/menus.c:160 +#, fuzzy +msgid "By _Artist" +msgstr "Artist" -#: src/filewriter/mp3.c:1151 -msgid "Strictly enforce minimum bitrate" -msgstr "" +#: src/gtkui/menus.c:161 +#, fuzzy +msgid "By A_lbum" +msgstr "Album" -#: src/filewriter/mp3.c:1153 -msgid "" -"For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/" -"mp3 player)" -msgstr "" +#: src/gtkui/menus.c:162 +#, fuzzy +msgid "By Release _Date" +msgstr "Data:" -#: src/filewriter/mp3.c:1166 +#: src/gtkui/menus.c:163 #, fuzzy -msgid "ABR Options:" -msgstr "Meniu de OpÈ›iuni" +msgid "By _File Path" +msgstr "Numele FiÈ™ierului:" -#: src/filewriter/mp3.c:1176 -msgid "Average bitrate (kbps):" -msgstr "" +#: src/gtkui/menus.c:164 +#, fuzzy +msgid "By _Custom Title" +msgstr "Skin-ul implicit:" -#: src/filewriter/mp3.c:1213 -msgid "VBR quality level:" +#: src/gtkui/menus.c:166 +msgid "R_everse Order" msgstr "" -#: src/filewriter/mp3.c:1228 -msgid "" -"highest:0;\n" -"lowest:9;\n" -"default:4;" +#: src/gtkui/menus.c:167 +msgid "_Random Order" msgstr "" -#: src/filewriter/mp3.c:1236 -msgid "Don't write Xing VBR header" +#: src/gtkui/menus.c:170 src/gtkui/menus.c:212 +msgid "_Refresh" msgstr "" -#: src/filewriter/mp3.c:1250 -msgid "VBR/ABR" -msgstr "VBR/ABR" +#: src/gtkui/menus.c:172 +#, fuzzy +msgid "_Sort" +msgstr "Port-ul:" -#: src/filewriter/mp3.c:1262 -msgid "Frame params:" +#: src/gtkui/menus.c:174 +msgid "_New" msgstr "" -#: src/filewriter/mp3.c:1274 +#: src/gtkui/menus.c:175 #, fuzzy -msgid "Mark as copyright" -msgstr "Salvează ca È™i playlist static" +msgid "_Close" +msgstr "ÃŽnchide" -#: src/filewriter/mp3.c:1285 +#: src/gtkui/menus.c:177 #, fuzzy -msgid "Mark as original" -msgstr "Salvează ca È™i playlist static" - -#: src/filewriter/mp3.c:1297 -msgid "ID3 params:" -msgstr "" - -#: src/filewriter/mp3.c:1308 -msgid "Force addition of version 2 tag" -msgstr "" +msgid "_Import ..." +msgstr "Importă" -#: src/filewriter/mp3.c:1318 -msgid "Only add v1 tag" -msgstr "Adaugă numai tag-ul v1" +#: src/gtkui/menus.c:178 +#, fuzzy +msgid "_Export ..." +msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" -#: src/filewriter/mp3.c:1325 -msgid "Only add v2 tag" -msgstr "Adaugă numai tag-ul v2" +#: src/gtkui/menus.c:180 +#, fuzzy +msgid "_Playlist Manager ..." +msgstr "SelectaÈ›i Playlist-ul" -#: src/filewriter/mp3.c:1346 -msgid "Tags" -msgstr "Tag-uri" +#: src/gtkui/menus.c:183 +#, fuzzy +msgid "Volume _Up" +msgstr "Volum: %d%%" -#: src/filewriter/vorbis.c:240 -msgid "Vorbis Encoder Configuration" -msgstr "ConfiguraÅ£ia Vorbis Encoder" +#: src/gtkui/menus.c:184 +#, fuzzy +msgid "Volume _Down" +msgstr "Schimbă volumul cu" -#: src/filewriter/vorbis.c:260 -msgid "Quality level (0 - 10):" -msgstr "Nivelul de calitate (0 - 10):" +#: src/gtkui/menus.c:186 +#, fuzzy +msgid "_Equalizer" +msgstr "Egalizator Audacious" -#: src/flacng/plugin.c:457 +#: src/gtkui/menus.c:188 #, fuzzy -msgid "FLAC Audio Plugin " -msgstr "Despre plugin-ul·Apple·Lossless·Audio" +msgid "E_ffects" +msgstr "Efecte" -#: src/flacng/plugin.c:458 -msgid "" -"\n" -"\n" -"Original code by\n" -"Ralf Ertzinger \n" -"\n" -"http://www.skytale.net/projects/bmp-flac2/" +#: src/gtkui/menus.c:191 +msgid "_Interface" msgstr "" -#: src/flacng/plugin.c:464 -#, fuzzy -msgid "About FLAC Audio Plugin" -msgstr "Despre plugin-ul·Apple·Lossless·Audio" +#: src/gtkui/menus.c:193 +msgid "Show _Menu Bar" +msgstr "" + +#: src/gtkui/menus.c:194 +msgid "Show I_nfo Bar" +msgstr "" -#: src/gnomeshortcuts/gnomeshortcuts.c:306 +#: src/gtkui/menus.c:195 #, fuzzy -msgid "About Gnome Shortcut Plugin" -msgstr "Despre plugin-ul decodor MP4·AAC" +msgid "Show _Status Bar" +msgstr "Statut" -#: src/gnomeshortcuts/gnomeshortcuts.c:307 -msgid "" -"Gnome Shortcut Plugin\n" -"Let's you control the player with Gnome's shortcuts.\n" -"\n" -"Copyright (C) 2007-2008 Sascha Hlusiak \n" -"\n" +#: src/gtkui/menus.c:197 +msgid "Show Column _Headers" msgstr "" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:273 -msgid "Open Files" +#: src/gtkui/menus.c:198 +msgid "Choose _Columns ..." msgstr "" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 +#: src/gtkui/menus.c:199 #, fuzzy -msgid "Add Files" -msgstr "Numele FiÈ™ierului:" +msgid "Scrol_l on Song Change" +msgstr "Mesajul melodiei" -#: src/gntui/gntui.c:271 +#: src/gtkui/menus.c:202 #, fuzzy -msgid "Audacious2" -msgstr "%s - Audacious" - -#: src/gntui/gntui.c:312 -msgid "gnt interface" -msgstr "" +msgid "_File" +msgstr "Numele FiÈ™ierului:" -#: src/gtkui/actions.c:257 src/skins/ui_main.c:818 -msgid "Can't jump to time when no track is being played.\n" -msgstr "" +#: src/gtkui/menus.c:203 +#, fuzzy +msgid "_Playback" +msgstr "Redare" -#: src/gtkui/actions.c:272 src/gtkui/ui_manager.c:204 -#: src/gtkui/ui_manager.c:205 src/skins/ui_main.c:833 -#: src/skins/ui_manager.c:410 src/skins/ui_manager.c:411 +#: src/gtkui/menus.c:204 #, fuzzy -msgid "Jump to Time" -msgstr "Fereastra de PreferinÈ›e" +msgid "P_laylist" +msgstr "SelectaÈ›i Playlist-ul" -#: src/gtkui/actions.c:289 src/skins/ui_main.c:854 +#: src/gtkui/menus.c:205 src/gtkui/menus.c:219 #, fuzzy -msgid "minutes:seconds" -msgstr "secunde" +msgid "_Services" +msgstr "Server" -#: src/gtkui/actions.c:299 src/skins/ui_main.c:864 +#: src/gtkui/menus.c:206 #, fuzzy -msgid "Track length:" -msgstr "InformaÈ›ii despre Track" +msgid "_Output" +msgstr "Plugin-ul de ieÈ™ire curent" -#: src/gtkui/actions.c:610 src/skins/ui_playlist.c:648 -#, c-format -msgid "Error writing playlist \"%s\": %s" +#: src/gtkui/menus.c:207 +msgid "_View" msgstr "" -#: src/gtkui/actions.c:625 src/skins/ui_playlist.c:670 -#, c-format -msgid "%s already exist. Continue?" +#: src/gtkui/menus.c:211 +msgid "_Queue/Unqueue" +msgstr "" + +#: src/gtkui/menus.c:214 +msgid "Cu_t" +msgstr "" + +#: src/gtkui/menus.c:215 +msgid "_Copy" +msgstr "" + +#: src/gtkui/menus.c:216 +msgid "_Paste" msgstr "" -#: src/gtkui/actions.c:651 src/skins/ui_manager.c:214 +#: src/gtkui/menus.c:217 #, fuzzy -msgid "Export Playlist" -msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" +msgid "Select _All" +msgstr "SelectaÈ›i Playlist-ul" -#: src/gtkui/actions.c:723 src/skins/ui_manager.c:211 +#: src/gtkui/menus.c:222 #, fuzzy -msgid "Import Playlist" -msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" +msgid "_Rename" +msgstr "Numele FiÈ™ierului:" -#: src/gtkui/ui_gtk.c:72 +#: src/gtkui/ui_gtk.c:75 msgid "GTK Interface" msgstr "" -#: src/gtkui/ui_gtk.c:281 src/skins/ui_main.c:388 +#: src/gtkui/ui_gtk.c:132 src/skins/ui_main.c:303 #, fuzzy, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.c:287 src/skins/ui_main.c:390 src/skins/ui_main.c:2166 +#: src/gtkui/ui_gtk.c:138 src/skins/ui_main.c:305 src/skins/ui_main.c:1498 #, fuzzy msgid "Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_manager.c:35 src/gtkui/ui_manager.c:36 -#: src/skins/ui_manager.c:53 src/skins/ui_manager.c:54 -msgid "Stop after Current Song" -msgstr "" - -#: src/gtkui/ui_manager.c:38 src/gtkui/ui_manager.c:39 -#: src/skins/ui_manager.c:59 src/skins/ui_manager.c:60 +#: src/gtkui/ui_gtk.c:177 src/skins/plugin.c:185 #, fuzzy -msgid "Repeat" -msgstr "Beat" - -#: src/gtkui/ui_manager.c:41 src/gtkui/ui_manager.c:42 -#: src/skins/ui_manager.c:62 src/skins/ui_manager.c:63 -msgid "Shuffle" -msgstr "" - -#: src/gtkui/ui_manager.c:44 src/gtkui/ui_manager.c:45 -#: src/skins/ui_manager.c:65 src/skins/ui_manager.c:66 -msgid "No Playlist Advance" -msgstr "" +msgid "Error" +msgstr "Eroare în Audacious" -#: src/gtkui/ui_manager.c:47 +#: src/gtkui/ui_statusbar.c:102 src/skins/ui_main.c:460 #, fuzzy -msgid "Show playlists" -msgstr "SelectaÈ›i Playlist-ul" +msgid "mono" +msgstr "Mono" -#: src/gtkui/ui_manager.c:48 +#: src/gtkui/ui_statusbar.c:104 src/skins/ui_main.c:459 #, fuzzy -msgid "Show/hide playlists" -msgstr "SelectaÈ›i Playlist-ul" - -#: src/gtkui/ui_manager.c:50 -msgid "Show infoarea" -msgstr "" +msgid "stereo" +msgstr "Stereo" -#: src/gtkui/ui_manager.c:51 -msgid "Show/hide infoarea" -msgstr "" +#: src/gtkui/ui_statusbar.c:106 +#, fuzzy, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "Canale" +msgstr[1] "Canale" -#: src/gtkui/ui_manager.c:53 -msgid "Show main menu" +#: src/gtkui/ui_statusbar.c:121 +#, c-format +msgid "%d kbps" msgstr "" -#: src/gtkui/ui_manager.c:54 -msgid "Show/hide main menu" +#: src/hotkey/gui.c:71 +msgid "Previous Track" msgstr "" -#: src/gtkui/ui_manager.c:56 +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 #, fuzzy -msgid "Show statusbar" -msgstr "Statut" - -#: src/gtkui/ui_manager.c:57 -#, fuzzy -msgid "Show/hide statusbar" -msgstr "SelectaÈ›i Playlist-ul" +msgid "Play" +msgstr "Pauză pentru" -#: src/gtkui/ui_manager.c:69 src/gtkui/ui_manager.c:70 -#: src/skins/ui_manager.c:170 src/skins/ui_manager.c:171 +#: src/hotkey/gui.c:73 #, fuzzy -msgid "Pause" +msgid "Pause/Resume" msgstr "La încărcare" -#: src/gtkui/ui_manager.c:72 src/gtkui/ui_manager.c:73 src/hotkey/gui.c:73 -#: src/skins/ui_manager.c:173 src/skins/ui_manager.c:174 +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 #, fuzzy msgid "Stop" msgstr "Synthpop" -#: src/gtkui/ui_manager.c:75 src/gtkui/ui_manager.c:76 -#: src/skins/ui_manager.c:176 src/skins/ui_manager.c:177 +#: src/hotkey/gui.c:75 #, fuzzy -msgid "Previous" -msgstr "Primus" +msgid "Next Track" +msgstr "InformaÈ›ii despre Track" + +#: src/hotkey/gui.c:76 +msgid "Forward 5 Seconds" +msgstr "" + +#: src/hotkey/gui.c:77 +msgid "Rewind 5 Seconds" +msgstr "" -#: src/gtkui/ui_manager.c:78 src/gtkui/ui_manager.c:79 -#: src/skins/ui_manager.c:179 src/skins/ui_manager.c:180 +#: src/hotkey/gui.c:78 #, fuzzy -msgid "Next" -msgstr "Text" +msgid "Mute" +msgstr "Data:" -#: src/gtkui/ui_manager.c:84 src/skins/ui_manager.c:197 +#: src/hotkey/gui.c:79 #, fuzzy -msgid "Playlist" -msgstr "SelectaÈ›i Playlist-ul" +msgid "Volume Up" +msgstr "Volum: %d%%" -#: src/gtkui/ui_manager.c:86 src/gtkui/ui_manager.c:87 -#: src/skins/ui_manager.c:199 src/skins/ui_manager.c:200 +#: src/hotkey/gui.c:80 #, fuzzy -msgid "New Playlist" -msgstr "SelectaÈ›i Playlist-ul" +msgid "Volume Down" +msgstr "Schimbă volumul cu" -#: src/gtkui/ui_manager.c:89 src/gtkui/ui_manager.c:90 -#: src/skins/ui_manager.c:208 src/skins/ui_manager.c:209 +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:424 src/skins/ui_manager.c:425 #, fuzzy -msgid "Delete Playlist" -msgstr "SelectaÈ›i Playlist-ul" +msgid "Jump to File" +msgstr "Fereastra de PreferinÈ›e" -#: src/gtkui/ui_manager.c:92 +#: src/hotkey/gui.c:82 #, fuzzy -msgid "Import Playlist ..." -msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" +msgid "Toggle Player Windows" +msgstr "Schimbă Coada" -#: src/gtkui/ui_manager.c:93 src/skins/ui_manager.c:212 -msgid "Loads a playlist file into the selected playlist." +#: src/hotkey/gui.c:83 +msgid "Show On-Screen-Display" msgstr "" -#: src/gtkui/ui_manager.c:95 +#: src/hotkey/gui.c:84 #, fuzzy -msgid "Export Playlist ..." -msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" +msgid "Toggle Repeat" +msgstr "Beat" -#: src/gtkui/ui_manager.c:96 src/skins/ui_manager.c:215 -#, fuzzy -msgid "Saves the selected playlist." -msgstr "SelectaÈ›i Playlist-ul" +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "" -#: src/gtkui/ui_manager.c:98 src/skins/ui_manager.c:217 +#: src/hotkey/gui.c:95 #, fuzzy -msgid "Save All Playlists" -msgstr "SelectaÈ›i Playlist-ul" +msgid "(none)" +msgstr "Deselectează tot" -#: src/gtkui/ui_manager.c:99 src/skins/ui_manager.c:218 +#: src/hotkey/gui.c:232 msgid "" -"Saves all the playlists that are open. Note that this is done automatically " -"when Audacious quits." -msgstr "" - -#: src/gtkui/ui_manager.c:103 -msgid "Refresh" +"It is not recommended to bind the primary mouse buttons without " +"modificators.\n" +"\n" +"Do you want to continue?" msgstr "" -#: src/gtkui/ui_manager.c:104 src/skins/ui_manager.c:223 -msgid "Refreshes metadata associated with a playlist entry." +#: src/hotkey/gui.c:234 +msgid "Binding mouse buttons" msgstr "" -#: src/gtkui/ui_manager.c:107 +#: src/hotkey/gui.c:384 #, fuzzy -msgid "Playlist Manager" -msgstr "SelectaÈ›i Playlist-ul" - -#: src/gtkui/ui_manager.c:108 src/skins/ui_manager.c:227 -msgid "Opens the playlist manager." -msgstr "" +msgid "Global Hotkey Plugin Configuration" +msgstr "Lista plugin-urilor _Generale" -#: src/gtkui/ui_manager.c:111 -msgid "Add URL ..." +#: src/hotkey/gui.c:400 +msgid "" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." msgstr "" -#: src/gtkui/ui_manager.c:112 src/skins/ui_manager.c:237 -msgid "Adds a remote track to the playlist." +#: src/hotkey/gui.c:405 +msgid "Hotkeys:" msgstr "" -#: src/gtkui/ui_manager.c:115 +#: src/hotkey/gui.c:424 #, fuzzy -msgid "Add Files ..." +msgid "Action:" msgstr "Numele FiÈ™ierului:" -#: src/gtkui/ui_manager.c:116 src/skins/ui_manager.c:241 -msgid "Adds files to the playlist." +#: src/hotkey/gui.c:432 +msgid "Key Binding:" msgstr "" -#: src/gtkui/ui_manager.c:119 src/skins/ui_manager.c:264 +#: src/hotkey/gui.c:663 #, fuzzy -msgid "Remove All" -msgstr "Șterge Duplicatele" - -#: src/gtkui/ui_manager.c:120 src/skins/ui_manager.c:265 -msgid "Removes all entries from the playlist." -msgstr "" - -#: src/gtkui/ui_manager.c:123 src/skins/ui_manager.c:290 -msgid "Remove Unselected" -msgstr "" - -#: src/gtkui/ui_manager.c:124 src/skins/ui_manager.c:291 -msgid "Remove unselected entries from the playlist." -msgstr "" - -#: src/gtkui/ui_manager.c:127 src/skins/ui_manager.c:294 -msgid "Remove Selected" -msgstr "" +msgid "About Global Hotkey Plugin" +msgstr "Despre plugin-ul decodor MP4·AAC" -#: src/gtkui/ui_manager.c:128 src/skins/ui_manager.c:295 -msgid "Remove selected entries from the playlist." +#: src/hotkey/gui.c:664 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributers include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä \n" +"\t\t\tBryn Davies \n" +"\t\t\tJonathan A. Davis \n" +"\t\t\tJeremy Tan \n" +"\n" msgstr "" -#: src/gtkui/ui_manager.c:131 -#, fuzzy -msgid "Sort" -msgstr "Port-ul:" +#: src/jack/configure.c:71 +msgid "Connect to all available jack ports" +msgstr "Conectează la toate porturile jack" -#: src/gtkui/ui_manager.c:132 src/skins/ui_manager.c:330 -#: src/skins/ui_manager.c:360 -#, fuzzy -msgid "By Track Number" -msgstr "Numărul Trackului" +#: src/jack/configure.c:78 +msgid "Connect only the output ports" +msgstr "Conectează numai la porturile de ieÅŸire" -#: src/gtkui/ui_manager.c:134 src/skins/ui_manager.c:278 -#: src/skins/ui_manager.c:306 src/skins/ui_manager.c:336 -#, fuzzy -msgid "By Title" -msgstr "Titlu" +#: src/jack/configure.c:85 +msgid "Connect to no ports" +msgstr "" -#: src/gtkui/ui_manager.c:136 src/skins/ui_manager.c:314 -#: src/skins/ui_manager.c:344 +#: src/jack/configure.c:103 #, fuzzy -msgid "By Artist" -msgstr "Artist" +msgid "jack Plugin configuration" +msgstr "Lista plugin-urilor _Generale" -#: src/gtkui/ui_manager.c:138 src/skins/ui_manager.c:310 -#: src/skins/ui_manager.c:340 +#: src/jack/configure.c:121 #, fuzzy -msgid "By Album" -msgstr "Album" +msgid "Connection mode:" +msgstr "Mod de Vizualizare" -#: src/gtkui/ui_manager.c:140 +#: src/jack/configure.c:133 #, fuzzy -msgid "By File Path" -msgstr "Numele FiÈ™ierului:" +msgid "Enable debug printing" +msgstr "Activează proxy" -#: src/gtkui/ui_manager.c:142 -msgid "Reverse Order" +#: src/jack/jack.c:438 +msgid "" +"XMMS jack Driver 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" +"\n" +"Audacious port by\n" +"Giacomo Lozito from develia.org" msgstr "" -#: src/gtkui/ui_manager.c:147 -msgid "Output" +#: src/jack/jack.c:443 +msgid "About JACK Output Plugin 0.17" msgstr "" -#: src/gtkui/ui_manager.c:149 src/modplug/gui/interface.cxx:572 -#, fuzzy -msgid "Effects" -msgstr "Efecte" - -#: src/gtkui/ui_manager.c:151 -#, fuzzy -msgid "Equalizer" -msgstr "Egalizator Audacious" +#: src/lyricwiki/lyricwiki.c:226 +msgid "" +"\n" +"Looking for lyrics..." +msgstr "" -#: src/gtkui/ui_manager.c:156 src/skins/ui_manager.c:232 -msgid "View" +#: src/lyricwiki/lyricwiki.c:249 +msgid "" +"\n" +"Connecting to lyrics.wikia.com..." msgstr "" -#: src/gtkui/ui_manager.c:157 src/skins/ui_manager.c:233 -msgid "Interface" +#: src/lyricwiki/lyricwiki.c:337 +msgid "" +"\n" +"No lyrics were found." msgstr "" -#: src/gtkui/ui_manager.c:164 src/skins/ui_manager.c:370 +#: src/metronom/metronom.c:85 #, fuzzy -msgid "File" -msgstr "Numele FiÈ™ierului:" +msgid "About Metronom" +msgstr "Despre Audacious" -#: src/gtkui/ui_manager.c:167 -#, fuzzy -msgid "Components" -msgstr "Comentariu" +#: src/metronom/metronom.c:86 +msgid "" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +msgstr "" -#: src/gtkui/ui_manager.c:169 src/gtkui/ui_manager.c:172 -#: src/skins/ui_manager.c:375 src/skins/ui_manager.c:378 -#, fuzzy -msgid "View Track Details" -msgstr "Fereastra cu informaÈ›ii despre Track" +#: src/metronom/metronom.c:143 +#, c-format +msgid "Tact generator: %d bpm" +msgstr "" -#: src/gtkui/ui_manager.c:170 src/gtkui/ui_manager.c:173 -#: src/skins/ui_manager.c:376 src/skins/ui_manager.c:379 -msgid "View track details" +#: src/metronom/metronom.c:145 +#, c-format +msgid "Tact generator: %d bpm %d/%d" msgstr "" -#: src/gtkui/ui_manager.c:175 src/gtkui/ui_manager.c:176 -#: src/skins/ui_manager.c:381 src/skins/ui_manager.c:382 -#, fuzzy -msgid "About Audacious" -msgstr "Despre plugin-ul decodor MP4·AAC" +#: src/mpg123/mpg123.c:183 +msgid "Surround" +msgstr "" -#: src/gtkui/ui_manager.c:178 -msgid "Open Files ..." +#: src/mtp_up/mtp.c:298 +msgid "Upload in progress..." msgstr "" -#: src/gtkui/ui_manager.c:179 src/skins/ui_manager.c:385 -#, fuzzy -msgid "Load and play a file" -msgstr "ÃŽncarcă SF la pornirea playerului" +#: src/mtp_up/mtp.c:310 +msgid "Upload to MTP Device" +msgstr "" -#: src/gtkui/ui_manager.c:181 -msgid "Open URL ..." +#: src/mtp_up/mtp.c:311 +msgid "Disconnect MTP Device" msgstr "" -#: src/gtkui/ui_manager.c:182 src/skins/ui_manager.c:388 +#: src/notify/libnotify-aosd_event.c:47 #, fuzzy -msgid "Play media from the selected location" -msgstr "SelecÈ›ia formatelor" +msgid "Stopped" +msgstr "Synthpop" -#: src/gtkui/ui_manager.c:184 src/skins/ui_manager.c:390 -msgid "Plugin services" -msgstr "" +#: src/notify/libnotify-aosd_event.c:47 +#, fuzzy +msgid "Audacious is not playing." +msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" -#: src/gtkui/ui_manager.c:186 src/skins/ui_manager.c:392 -msgid "Preferences" -msgstr "" +#: src/null/null.c:64 +#, fuzzy +msgid "Null output plugin " +msgstr "Plugin-ul de ieÈ™ire curent" -#: src/gtkui/ui_manager.c:187 src/skins/ui_manager.c:393 -msgid "Open preferences window" +#: src/null/null.c:65 +msgid "" +" by Christian Birchinger \n" +"based on the XMMS plugin by HÃ¥vard KvÃ¥l " msgstr "" -#: src/gtkui/ui_manager.c:189 src/skins/ui_manager.c:395 +#: src/null/null.c:68 #, fuzzy -msgid "_Quit" -msgstr "Calitatea sunetului" +msgid "About Null Output" +msgstr "Plugin-ul de ieÈ™ire curent" -#: src/gtkui/ui_manager.c:190 src/skins/ui_manager.c:396 +#: src/null/null.c:94 #, fuzzy -msgid "Quit Audacious" -msgstr "%s - Audacious" +msgid "Null output preferences" +msgstr "PreferinÈ›ele Plugin-ului de IeÈ™ire" -#: src/gtkui/ui_manager.c:192 src/gtkui/ui_manager.c:193 -#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 -msgid "Set A-B" +#: src/null/null.c:105 +msgid "Run in real time" msgstr "" -#: src/gtkui/ui_manager.c:195 src/gtkui/ui_manager.c:196 -#: src/skins/ui_manager.c:401 src/skins/ui_manager.c:402 -msgid "Clear A-B" -msgstr "" +#: src/oss4/configure.c:89 +#, fuzzy +msgid "1. Default device" +msgstr "Salvează Lista Implicită" -#: src/gtkui/ui_manager.c:198 src/gtkui/ui_manager.c:199 -#: src/skins/ui_manager.c:404 src/skins/ui_manager.c:405 -msgid "Jump to Playlist Start" -msgstr "" +#: src/oss4/configure.c:151 +#, fuzzy +msgid "OSS4 Output Plugin Preferences" +msgstr "PreferinÈ›ele Plugin-ului de IeÈ™ire" -#: src/gtkui/ui_manager.c:201 src/gtkui/ui_manager.c:202 src/hotkey/gui.c:80 -#: src/skins/ui_manager.c:407 src/skins/ui_manager.c:408 +#: src/oss4/configure.c:163 src/OSS/configure.c:203 #, fuzzy -msgid "Jump to File" -msgstr "Fereastra de PreferinÈ›e" +msgid "Audio device:" +msgstr "Sistemul Audio" -#: src/gtkui/ui_manager.c:207 src/skins/ui_manager.c:413 -msgid "Queue Toggle" -msgstr "" +#: src/oss4/configure.c:189 src/OSS/configure.c:226 src/OSS/configure.c:269 +#, fuzzy +msgid "Use alternate device:" +msgstr "FoloseÈ™te cursoare de mouse personalizate (oferite de skin)" -#: src/gtkui/ui_manager.c:208 src/skins/ui_manager.c:414 -msgid "Enables/disables the entry in the playlist's queue." +#: src/oss4/configure.c:202 +msgid "Save volume between sessions" msgstr "" -#: src/gtkui/ui_manager.c:211 src/skins/ui_manager.c:417 -msgid "Copy" +#: src/oss4/configure.c:206 +msgid "Enable format conversions made by the OSS software." msgstr "" -#: src/gtkui/ui_manager.c:214 src/skins/ui_manager.c:419 +#: src/oss4/plugin.c:51 #, fuzzy -msgid "Cut" -msgstr "Cult" - -#: src/gtkui/ui_manager.c:217 src/skins/ui_manager.c:421 -msgid "Paste" -msgstr "" +msgid "About OSS4 Plugin" +msgstr "Despre plugin-ul decodor MP4·AAC" -#: src/gtkui/ui_manager.c:220 src/skins/ui_manager.c:254 +#: src/oss4/plugin.c:52 #, fuzzy -msgid "Select All" -msgstr "SelectaÈ›i Playlist-ul" - -#: src/gtkui/ui_manager.c:221 src/skins/ui_manager.c:255 -msgid "Selects all of the playlist entries." +msgid "" +"OSS4 Output Plugin for Audacious\n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"I would like to thank people on #audacious, especially Tony Vroon and John " +"Lindgren and of course the authors of the previous OSS plugin.\n" +"\n" +"This program is free software: you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation, either version 3 of the License, or (at your option) " +"any later version.\n" +"\n" +"This program 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 General Public License for " +"more details.\n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"this program. If not, see .\n" msgstr "" +"Plugin de ieÈ™ire ALSA pentru Audacious\n" +"\n" +"Acest program este software liber; poate fi redistribuit È™i/sau modificat\n" +"în conformitte cu termenii È™i condiÈ›iile licenÈ›ei GNU GPL, versiunea 2, sau\n" +"orice versiune mai nouă.\n" +"\n" +"CitiÈ›i textul licenÈ›ei pentru delatii suplimentare.\n" +"\n" +"O traducere (neoficială) în limba română poate fi găsită la adresa:\n" +"http://www.joomla.ro/content/view/144/45/ \n" +"\n" +"Textul original în engleză se află la adresa:\n" +"http://www.gnu.org/licenses/old-licenses/gpl-2.0.html\n" +"\n" +"Autor: Matthieu Sozeau (mattam@altern.org)" -#: src/gtkui/ui_manager.c:224 src/skins/ui_manager.c:258 +#: src/oss4/utils.c:204 #, fuzzy -msgid "Select None" -msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" +msgid "OSS4 error" +msgstr "Terror" -#: src/gtkui/ui_manager.c:225 src/skins/ui_manager.c:259 -msgid "Deselects all of the playlist entries." -msgstr "" +#: src/OSS/configure.c:146 +#, fuzzy, c-format +msgid "Default (%s)" +msgstr "Implicit" -#: src/gtkui/ui_statusbar.c:91 src/skins/ui_main.c:609 +#: src/OSS/configure.c:162 src/skins/ui_manager.c:456 +#: src/skins/ui_manager.c:477 #, fuzzy -msgid "mono" -msgstr "Mono" +msgid "Default" +msgstr "Implicit" -#: src/gtkui/ui_statusbar.c:94 src/skins/ui_main.c:608 -#, fuzzy -msgid "stereo" -msgstr "Stereo" +#: src/OSS/configure.c:187 +msgid "OSS Driver configuration" +msgstr "" -#: src/gtkui/ui_statusbar.c:97 -#, fuzzy, c-format -msgid "%d channels" -msgstr "Canale" +#: src/OSS/configure.c:290 +msgid "Devices" +msgstr "" -#: src/gtkui/ui_statusbar.c:101 -#, c-format -msgid "%s: %d kbps, %d Hz, %s" +#: src/OSS/configure.c:292 +msgid "Buffering:" msgstr "" -#: src/hotkey/gui.c:70 -msgid "Previous Track" +#: src/OSS/configure.c:305 +msgid "Pre-buffer (percent):" msgstr "" -#: src/hotkey/gui.c:72 -#, fuzzy -msgid "Pause/Resume" -msgstr "La încărcare" +#: src/OSS/configure.c:316 +msgid "Buffering" +msgstr "" -#: src/hotkey/gui.c:74 +#: src/OSS/configure.c:317 #, fuzzy -msgid "Next Track" -msgstr "InformaÈ›ii despre Track" +msgid "Mixer Settings:" +msgstr "OpÈ›iuni pentru Popup-ul cu informaÈ›ii suplimentare" -#: src/hotkey/gui.c:75 -msgid "Forward 5 Seconds" +#: src/OSS/configure.c:323 +msgid "Volume controls Master not PCM" msgstr "" -#: src/hotkey/gui.c:76 -msgid "Rewind 5 Seconds" +#: src/OSS/configure.c:329 +msgid "Mixer" msgstr "" -#: src/hotkey/gui.c:77 -#, fuzzy -msgid "Mute" -msgstr "Data:" - -#: src/hotkey/gui.c:78 +#: src/OSS/OSS.c:40 #, fuzzy -msgid "Volume Up" -msgstr "Volum: %d%%" +msgid "About OSS Driver" +msgstr "Despre plugin-ul·pentru Alarmă" -#: src/hotkey/gui.c:79 -#, fuzzy -msgid "Volume Down" -msgstr "Schimbă volumul cu" - -#: src/hotkey/gui.c:81 -#, fuzzy -msgid "Toggle Player Windows" -msgstr "Schimbă Coada" - -#: src/hotkey/gui.c:82 -msgid "Show On-Screen-Display" +#: src/OSS/OSS.c:41 +msgid "" +"Audacious OSS Driver\n" +"\n" +" This program is free software; you can redistribute it and/or modify\n" +"it under the terms of the GNU General Public License as published by\n" +"the Free Software Foundation; either version 2 of the License, or\n" +"(at your option) any later version.\n" +"\n" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +"\n" +"You should have received a copy of the GNU General Public License\n" +"along with this program; if not, write to the Free Software\n" +"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" +"USA." msgstr "" -#: src/hotkey/gui.c:92 +#: src/pulse_audio/pulse_audio.c:687 #, fuzzy -msgid "(none)" -msgstr "Deselectează tot" +msgid "About Audacious PulseAudio Output Plugin" +msgstr "Despre plugin-ul decodor MP4·AAC" -#: src/hotkey/gui.c:229 +#: src/pulse_audio/pulse_audio.c:688 +#, fuzzy msgid "" -"It is not recommended to bind the primary mouse buttons without " -"modificators.\n" +"Audacious PulseAudio Output Plugin\n" "\n" -"Do you want to continue?" -msgstr "" - -#: src/hotkey/gui.c:231 -msgid "Binding mouse buttons" +" This program is free software; you can redistribute it and/or modify\n" +"it under the terms of the GNU General Public License as published by\n" +"the Free Software Foundation; either version 2 of the License, or\n" +"(at your option) any later version.\n" +"\n" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +"\n" +"You should have received a copy of the GNU General Public License\n" +"along with this program; if not, write to the Free Software\n" +"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" +"USA." msgstr "" +"Plugin de ieÈ™ire ALSA pentru Audacious\n" +"\n" +"Acest program este software liber; poate fi redistribuit È™i/sau modificat\n" +"în conformitte cu termenii È™i condiÈ›iile licenÈ›ei GNU GPL, versiunea 2, sau\n" +"orice versiune mai nouă.\n" +"\n" +"CitiÈ›i textul licenÈ›ei pentru delatii suplimentare.\n" +"\n" +"O traducere (neoficială) în limba română poate fi găsită la adresa:\n" +"http://www.joomla.ro/content/view/144/45/ \n" +"\n" +"Textul original în engleză se află la adresa:\n" +"http://www.gnu.org/licenses/old-licenses/gpl-2.0.html\n" +"\n" +"Autor: Matthieu Sozeau (mattam@altern.org)" -#: src/hotkey/gui.c:381 +#: src/resample/plugin.c:91 #, fuzzy -msgid "Global Hotkey Plugin Configuration" -msgstr "Lista plugin-urilor _Generale" +msgid "About Sample Rate Converter Plugin" +msgstr "Despre plugin-ul decodor MP4·AAC" -#: src/hotkey/gui.c:397 -msgid "" -"Press a key combination inside a text field.\n" -"You can also bind mouse buttons." +#: src/resample/plugin.c:146 +msgid "Sample Rate Converter Preferences" msgstr "" -#: src/hotkey/gui.c:402 -msgid "Hotkeys:" +#: src/resample/plugin.c:158 +msgid "Rate mappings:" msgstr "" -#: src/hotkey/gui.c:421 -#, fuzzy -msgid "Action:" -msgstr "Numele FiÈ™ierului:" +#: src/resample/plugin.c:181 +msgid "All others:" +msgstr "" -#: src/hotkey/gui.c:429 -msgid "Key Binding:" +#: src/resample/plugin.c:193 +msgid "Method:" msgstr "" -#: src/hotkey/gui.c:660 +#: src/scrobbler/configure.c:128 src/scrobbler/configure.c:204 #, fuzzy -msgid "About Global Hotkey Plugin" -msgstr "Despre plugin-ul decodor MP4·AAC" +msgid "Change password" +msgstr "Pauză" -#: src/hotkey/gui.c:661 -msgid "" -"Global Hotkey Plugin\n" -"Control the player with global key combinations or multimedia keys.\n" -"\n" -"Copyright (C) 2007-2008 Sascha Hlusiak \n" -"\n" -"Contributers include:\n" -"Copyright (C) 2006-2007 Vladimir Paskov \n" -"Copyright (C) 2000-2002 Ville Syrjälä \n" -"\t\t\tBryn Davies \n" -"\t\t\tJonathan A. Davis \n" -"\t\t\tJeremy Tan \n" -"\n" +#: src/scrobbler/configure.c:150 +msgid "Services" msgstr "" -#: src/jack/configure.c:71 -msgid "Connect to all available jack ports" -msgstr "Conectează la toate porturile jack" - -#: src/jack/configure.c:78 -msgid "Connect only the output ports" -msgstr "Conectează numai la porturile de ieÅŸire" +#: src/scrobbler/configure.c:172 +#, fuzzy +msgid "Username:" +msgstr "Utilizator:" -#: src/jack/configure.c:85 -msgid "Connect to no ports" -msgstr "" +#: src/scrobbler/configure.c:178 +#, fuzzy +msgid "Password:" +msgstr "Parolă:" -#: src/jack/configure.c:103 +#: src/scrobbler/configure.c:186 #, fuzzy -msgid "jack Plugin configuration" -msgstr "Lista plugin-urilor _Generale" +msgid "Scrobbler URL:" +msgstr "Eroare în Audacious" -#: src/jack/configure.c:121 +#: src/scrobbler/configure.c:218 #, fuzzy -msgid "Connection mode:" -msgstr "Mod de Vizualizare" +msgid "Last.FM" +msgstr "Radio Last.fm" -#: src/jack/configure.c:133 +#: src/scrobbler/configure.c:262 #, fuzzy -msgid "Enable debug printing" -msgstr "Activează proxy" +msgid "Scrobbler" +msgstr "Eroare în Audacious" -#: src/jack/jack.c:437 +#: src/scrobbler/plugin.c:213 msgid "" -"XMMS jack Driver 0.17\n" -"\n" -"xmms-jack.sf.net\n" -"Chris Morgan\n" +"Audacious AudioScrobbler Plugin\n" "\n" -"Audacious port by\n" -"Giacomo Lozito from develia.org" -msgstr "" - -#: src/jack/jack.c:442 -msgid "About JACK Output Plugin 0.17" -msgstr "" - -#: src/ladspa/ladspa.c:824 -msgid "This LADSPA plugin has no user controls" +"Originally created by Audun Hove and Pipian \n" msgstr "" -#: src/ladspa/ladspa.c:865 src/ladspa/ladspa.c:952 +#: src/scrobbler/plugin.c:215 #, fuzzy -msgid "Name" -msgstr "Numele Instrumentului" - -#: src/ladspa/ladspa.c:952 -msgid "UID" -msgstr "" +msgid "About Scrobbler Plugin" +msgstr "Despre plugin-ul decodor MP4·AAC" -#: src/ladspa/ladspa.c:1029 +#: src/sdlout/plugin.c:58 #, fuzzy -msgid "Installed plugins" -msgstr "Reîncarcă Plugin-urile" +msgid "About SDL Output Plugin" +msgstr "Despre plugin-ul·Apple·Lossless·Audio" -#: src/ladspa/ladspa.c:1037 +#: src/sdlout/plugin.c:78 #, fuzzy -msgid "Running plugins" -msgstr "Reîncarcă Plugin-urile" +msgid "SDL error" +msgstr "Terror" -#: src/ladspa/ladspa.c:1052 -#, fuzzy -msgid "Add" -msgstr "Adaugă FiÈ™iere" +#: src/sid/xs_about.c:84 +#, c-format +msgid "About %s" +msgstr "Despre %s" -#: src/ladspa/ladspa.c:1055 -#, fuzzy -msgid "Remove" -msgstr "Șterge Duplicatele" +#: src/sid/xs_about.c:214 src/sid/xs_interface.c:1825 +msgid "Close" +msgstr "ÃŽnchide" -#: src/ladspa/ladspa.c:1066 +#: src/sid/xs_config.c:326 #, fuzzy -msgid "LADSPA Plugin Catalog" -msgstr "Lista plugin-urilor _Generale" +msgid " Error" +msgstr "Eroare în Audacious" -#: src/lirc/about.c:63 -#, fuzzy -msgid "About LIRC Audacious Plugin" -msgstr "Despre plugin-ul decodor MP4·AAC" +#: src/sid/xs_config.c:326 +msgid "OK" +msgstr "Ok" -#: src/lirc/about.c:90 +#: src/sid/xs_fileinfo.c:151 #, fuzzy -msgid "LIRC Plugin " -msgstr "Plugin de intrare: %s" +msgid "General info" +msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" -#: src/lirc/about.c:92 -msgid "" -"\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" -"\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" +#: src/sid/xs_fileinfo.c:164 +#, fuzzy, c-format +msgid "Tune #%i: " +msgstr "PorneÈ™te" + +#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 +#, c-format +msgid "Couldn't find pixmap file: %s" msgstr "" -#: src/lirc/interface.c:37 +#: src/sid/xs_interface.c:234 #, fuzzy -msgid "LIRC plugin settings" -msgstr "Plugin de intrare: %s" +msgid "Audacious-SID configuration" +msgstr "Developerii Audacious:" -#: src/lirc/interface.c:61 -msgid "Reconnect to LIRC server" +#: src/sid/xs_interface.c:270 +msgid "8-bit" msgstr "" -#: src/lirc/interface.c:68 -msgid "Timeout before reconnecting (seconds): " +#: src/sid/xs_interface.c:277 +msgid "16-bit" msgstr "" -#: src/lirc/interface.c:75 -msgid "Reconnect" +#: src/sid/xs_interface.c:284 +#, fuzzy +msgid "Resolution:" +msgstr "RezoluÈ›ie" + +#: src/sid/xs_interface.c:315 +msgid "Autopanning" msgstr "" -#: src/lirc/interface.c:79 +#: src/sid/xs_interface.c:322 #, fuzzy -msgid "Connection" -msgstr "Mod de Vizualizare" +msgid "Channels:" +msgstr "Canale" -#: src/lirc/lirc.c:82 -#, c-format -msgid "%s: could not init LIRC support\n" +#: src/sid/xs_interface.c:366 +msgid "Samplerate:" msgstr "" -#: src/lirc/lirc.c:90 -#, c-format -msgid "" -"%s: could not read LIRC config file\n" -"%s: please read the documentation of LIRC\n" -"%s: how to create a proper config file\n" +#: src/sid/xs_interface.c:383 +#, fuzzy +msgid "Use oversampling" +msgstr "FoloseÈ™te cursoare de mouse personalizate (oferite de skin)" + +#: src/sid/xs_interface.c:394 +msgid "Factor:" msgstr "" -#: src/lirc/lirc.c:117 -#, c-format -msgid "%s: trying to reconnect...\n" +#: src/sid/xs_interface.c:406 +msgid "Large factors require more CPU-power" msgstr "" -#: src/lirc/lirc.c:332 -#, c-format -msgid "%s: unknown command \"%s\"\n" +#: src/sid/xs_interface.c:412 +msgid "Oversampling:" msgstr "" -#: src/lirc/lirc.c:342 -#, fuzzy, c-format -msgid "%s: disconnected from LIRC\n" -msgstr "ÃŽncarcă preset din fiÈ™ier" +#: src/sid/xs_interface.c:417 +#, fuzzy +msgid "Audio" +msgstr "Audio" -#: src/lirc/lirc.c:346 -#, c-format -msgid "%s: will try reconnect every %d seconds...\n" +#: src/sid/xs_interface.c:445 +msgid "Force speed" msgstr "" -#: src/lyricwiki/lyricwiki.c:244 -msgid "LyricWiki" +#: src/sid/xs_interface.c:449 +msgid "" +"If enabled, this option \"forces\" the emulation engine to use the selected " +"clock speed/frequency. Otherwise the speed is determined from played file " +"itself." msgstr "" -#: src/lyricwiki/lyricwiki.c:337 +#: src/sid/xs_interface.c:451 +#, fuzzy +msgid "PAL (50 Hz)" +msgstr "Rata de eÈ™antionare [Hz]:" + +#: src/sid/xs_interface.c:455 msgid "" -"\n" -"No lyrics were found." +"PAL is the european TV standard, which uses 50Hz vertical refresh frequency. " +"Most of SID-tunes have been made for PAL computers." msgstr "" -#: src/metronom/metronom.c:90 +#: src/sid/xs_interface.c:459 #, fuzzy -msgid "About Metronom" -msgstr "Despre Audacious" +msgid "NTSC (60 Hz)" +msgstr "Rata de eÈ™antionare [Hz]:" -#: src/metronom/metronom.c:91 +#: src/sid/xs_interface.c:463 msgid "" -"A Tact Generator by Martin Strauss \n" -"\n" -"To use it, add a URL: tact://beats*num/den\n" -"e.g. tact://77 to play 77 beats per minute\n" -"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +"NTSC is the TV standard with 60Hz vertical refresh rate (and other features " +"that differ from PAL). It is mainly used in United States, Japan and certain " +"other countries." msgstr "" -#: src/metronom/metronom.c:145 -#, c-format -msgid "Tact generator: %d bpm" +#: src/sid/xs_interface.c:467 +msgid "Clock speed:" msgstr "" -#: src/metronom/metronom.c:147 -#, c-format -msgid "Tact generator: %d bpm %d/%d" +#: src/sid/xs_interface.c:484 +msgid "Force model" msgstr "" -#: src/modplug/gui/interface.cxx:137 -#, fuzzy -msgid "ModPlug Configuration" -msgstr "AdPlug·::·Configurare" +#: src/sid/xs_interface.c:488 +msgid "" +"If enabled, this option \"forces\" the emulation engine to use the selected " +"SID-chip model. Otherwise the preferred SID model is determined from the " +"file (if PSIDv2NG type) or if not available, this setting is used." +msgstr "" + +#: src/sid/xs_interface.c:490 +msgid "MOS 6581" +msgstr "" -#: src/modplug/gui/interface.cxx:174 -msgid "16 bit" -msgstr "16 bit" +#: src/sid/xs_interface.c:494 +msgid "" +"MOS/CSG 6581 is the earlier major version of SID chip. It differs from 8580 " +"in few ways, having much fuller filter (which, due to design error, is never " +"same between two different SID-chips) and has the \"volume adjustment bug\", " +"which enables playing of digital samples." +msgstr "" -#: src/modplug/gui/interface.cxx:181 -msgid "8 bit" -msgstr "8 bit" +#: src/sid/xs_interface.c:498 +msgid "MOS 8580" +msgstr "" -#: src/modplug/gui/interface.cxx:212 -msgid "Mono (downmix)" +#: src/sid/xs_interface.c:505 +msgid "SID model:" msgstr "" -#: src/modplug/gui/interface.cxx:241 -msgid "Nearest (fastest)" +#: src/sid/xs_interface.c:522 +msgid "SIDPlay 1 (frame-based)" msgstr "" -#: src/modplug/gui/interface.cxx:248 -msgid "Linear (fast)" +#: src/sid/xs_interface.c:526 +msgid "" +"Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most " +"cases, though." msgstr "" -#: src/modplug/gui/interface.cxx:255 -msgid "Spline (good quality)" +#: src/sid/xs_interface.c:530 +msgid "SIDPlay 2 (cycle-based)" msgstr "" -#: src/modplug/gui/interface.cxx:262 -msgid "8-tap Fir (extremely high quality)" +#: src/sid/xs_interface.c:534 +msgid "" +"Use libSIDPlay 2.x emulation, which requires powerful CPU due to more exact " +"emulation." msgstr "" -#: src/modplug/gui/interface.cxx:286 +#: src/sid/xs_interface.c:538 #, fuzzy -msgid "96 kHz" -msgstr "48 kHz" - -#: src/modplug/gui/interface.cxx:293 -msgid "48 kHz" -msgstr "48 kHz" +msgid "Emulation library selection:" +msgstr "Șterge selecÈ›ia anterioară înainte de a căuta" -#: src/modplug/gui/interface.cxx:300 -msgid "44 kHz" -msgstr "44 kHz" +#: src/sid/xs_interface.c:555 +msgid "Real C64 (SIDPlay 2 only)" +msgstr "" -#: src/modplug/gui/interface.cxx:307 -msgid "22 kHz" -msgstr "22 kHz" +#: src/sid/xs_interface.c:562 +msgid "Bank switching" +msgstr "" -#: src/modplug/gui/interface.cxx:315 -#, fuzzy -msgid "Sampling Rate" -msgstr "Convertor pentru rata de eÈ™antionare" +#: src/sid/xs_interface.c:569 +msgid "Transparent ROM" +msgstr "" -#: src/modplug/gui/interface.cxx:349 src/modplug/gui/interface.cxx:411 -#: src/modplug/gui/interface.cxx:477 src/modplug/gui/interface.cxx:539 -#, fuzzy -msgid "Enable" -msgstr "Activează modul 'Mărime Dublă'" +#: src/sid/xs_interface.c:576 +msgid "PlaySID environment" +msgstr "" -#: src/modplug/gui/interface.cxx:378 src/modplug/gui/interface.cxx:506 +#: src/sid/xs_interface.c:583 #, fuzzy -msgid "Depth" -msgstr "Adancimea cautarii" +msgid "Memory mode:" +msgstr "Mod de Vizualizare" -#: src/modplug/gui/interface.cxx:386 src/modplug/gui/interface.cxx:514 -msgid "Delay" +#: src/sid/xs_interface.c:588 +msgid "Emu#1" msgstr "" -#: src/modplug/gui/interface.cxx:394 -msgid "Reverb" +#: src/sid/xs_interface.c:611 +msgid "Optimization mode (faster, inaccurate)" msgstr "" -#: src/modplug/gui/interface.cxx:440 -msgid "Amount" +#: src/sid/xs_interface.c:615 +msgid "" +"This setting can be used to enable libSIDPlay2's \"optimization mode\", " +"which in downgrades the emulation from cycle-exact to something similar to " +"frame-exact. The result is lower CPU usage, but worse accuracy." msgstr "" -#: src/modplug/gui/interface.cxx:448 -msgid "Range" +#: src/sid/xs_interface.c:617 +msgid "reSID-emulation" msgstr "" -#: src/modplug/gui/interface.cxx:456 -msgid "Bass Boost" +#: src/sid/xs_interface.c:621 +msgid "" +"reSID is the software SID-chip simulator based on SID reverse-engineering, " +"created by Dag Lem. It is probably the closest thing to real SID available " +"as software-only emulation." msgstr "" -#: src/modplug/gui/interface.cxx:522 src/mpg123/mpg123.c:174 -msgid "Surround" +#: src/sid/xs_interface.c:625 +msgid "HardSID" msgstr "" -#: src/modplug/gui/interface.cxx:561 +#: src/sid/xs_interface.c:629 msgid "" -"Note: Setting the preamp\n" -"too high may cause clipping\n" -"(annoying clicks and pops)!" +"HardSID is a EISA/PCI card for PC-compatibles, which can be fitted with a " +"real SID-chip. Software can be used to control the HardSID and combined with " +"software emulation of rest of C64 via libSIDPlay2 HardSID can be used to " +"achieve \"near 100%\" similarity to real C64. For more information, see " +"http://www.hardsid.com/" msgstr "" -#: src/modplug/gui/interface.cxx:567 -#: src/skins/ui_skinned_equalizer_slider.c:435 +#: src/sid/xs_interface.c:633 #, fuzzy -msgid "Preamp" -msgstr "PREAMP" +msgid "SIDPlay 2 options:" +msgstr "Meniu de OpÈ›iuni" -#: src/modplug/gui/interface.cxx:601 -msgid "Use Filename as Song Title" +#: src/sid/xs_interface.c:650 +msgid "Fast (nearest neighbour)" msgstr "" -#: src/modplug/gui/interface.cxx:606 -#, fuzzy -msgid "Fast Playlist Info" -msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" +#: src/sid/xs_interface.c:654 +msgid "" +"Fastest and also worst sounding sampling method, simply picks nearest " +"neighbouring sample." +msgstr "" -#: src/modplug/gui/interface.cxx:617 -msgid "Noise Reduction" +#: src/sid/xs_interface.c:658 +msgid "Linear interpolation" msgstr "" -#: src/modplug/gui/interface.cxx:623 -#, fuzzy -msgid "Play Amiga MOD" -msgstr "- redă fiÈ™ierele multimedia" +#: src/sid/xs_interface.c:662 +msgid "" +"Uses linear interpolation between samples, yielding higher audio quality " +"with less sampling noise." +msgstr "" -#: src/modplug/gui/interface.cxx:646 +#: src/sid/xs_interface.c:673 +msgid "Resampling (FIR)" +msgstr "" + +#: src/sid/xs_interface.c:680 #, fuzzy -msgid "Don't loop" -msgstr "Nu curăța playlist-ul" +msgid "reSID sampling options:" +msgstr "Convertor pentru rata de eÈ™antionare" -#: src/modplug/gui/interface.cxx:658 -msgid "Loop" +#: src/sid/xs_interface.c:685 +msgid "Emu#2" msgstr "" -#: src/modplug/gui/interface.cxx:671 -#, fuzzy -msgid "time(s)" -msgstr "Timp Scurs" +#: src/sid/xs_interface.c:697 +msgid "Emulate filters" +msgstr "" -#: src/modplug/gui/interface.cxx:677 -msgid "Loop forever" +#: src/sid/xs_interface.c:701 +msgid "" +"This option enables emulation of SID filter. The filter is an essential part " +"of SID's sound capacity, but accurate emulation of it may require quite much " +"CPU power. However, if filter emulation is disabled, tunes won't sound " +"authentic at all if they utilize the filter." msgstr "" -#: src/modplug/gui/interface.cxx:684 -msgid "Looping" +#: src/sid/xs_interface.c:726 +msgid "FS" msgstr "" -#: src/modplug/gui/interface.cxx:859 +#: src/sid/xs_interface.c:743 #, fuzzy -msgid "MOD Info" -msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" +msgid "FM" +msgstr "Radio Last.fm" -#: src/modplug/gui/interface.cxx:878 -msgid "" -"Filename:\n" -"Title:\n" -"Type:\n" -"Length:\n" -"Speed:\n" -"Tempo:\n" -"Samples:\n" -"Instruments:\n" -"Patterns:\n" -"Channels:" +#: src/sid/xs_interface.c:760 +msgid "FT" msgstr "" -#: src/modplug/gui/interface.cxx:883 -msgid "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" +#: src/sid/xs_interface.c:771 +msgid "Reset values" +msgstr "" + +#: src/sid/xs_interface.c:776 +msgid "SIDPlay1" +msgstr "" + +#: src/sid/xs_interface.c:817 +msgid "Export" msgstr "" -#: src/modplug/gui/interface.cxx:913 -msgid "Samples" +#: src/sid/xs_interface.c:825 +msgid "Use" msgstr "" -#: src/modplug/gui/interface.cxx:938 +#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:447 #, fuzzy -msgid "Instruments" -msgstr "Instrumente: " +msgid "Save" +msgstr "Salvează" -#: src/modplug/gui/interface.cxx:959 +#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:446 #, fuzzy -msgid "Message" -msgstr "Mesajul melodiei" +msgid "Import" +msgstr "Importă" + +#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:448 +#, fuzzy +msgid "Delete" +msgstr "Implicit" + +#: src/sid/xs_interface.c:863 +msgid "Filter curve:" +msgstr "" + +#: src/sid/xs_interface.c:868 +msgid "SIDPlay2" +msgstr "" + +#: src/sid/xs_interface.c:874 +msgid "Filters" +msgstr "" -#: src/modplug/gui/main.cxx:51 -msgid "Modplug Input Plugin for Audacious ver" +#: src/sid/xs_interface.c:897 +msgid "Play at least for specified time" msgstr "" -#: src/modplug/gui/main.cxx:52 +#: src/sid/xs_interface.c:901 msgid "" -"\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." +"If enabled, the tune is played at least for the specified time, adding " +"silence to the end if necessary." +msgstr "" + +#: src/sid/xs_interface.c:908 src/sid/xs_interface.c:962 +#: src/sid/xs_interface.c:1142 +msgid "Playtime:" msgstr "" -#: src/modplug/gui/main.cxx:55 +#: src/sid/xs_interface.c:921 src/sid/xs_interface.c:975 +#: src/sid/xs_interface.c:1155 #, fuzzy -msgid "About Modplug" -msgstr "Despre Audacious" +msgid "seconds" +msgstr "secunde" -#: src/modplug/gui/support.cxx:90 src/modplug/gui/support.cxx:114 -#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 -#, c-format -msgid "Couldn't find pixmap file: %s" +#: src/sid/xs_interface.c:928 +msgid "Minimum playtime:" msgstr "" -#: src/mtp_up/mtp.c:35 -msgid "Upload selected track(s)" +#: src/sid/xs_interface.c:945 +msgid "Play for specified time maximum" msgstr "" -#: src/mtp_up/mtp.c:291 -msgid "Upload in progress..." +#: src/sid/xs_interface.c:949 +msgid "" +"If enabled, tune is played until specified duration is reached (aka maximum " +"playtime)." +msgstr "" + +#: src/sid/xs_interface.c:951 +msgid "Only when song length is unknown" msgstr "" -#: src/mtp_up/mtp.c:300 -msgid "MTP device handler" +#: src/sid/xs_interface.c:955 +msgid "" +"If enabled, the maximum playtime is applied only if song/tune length is not " +"known." msgstr "" -#: src/mtp_up/mtp.c:304 -msgid "Disconnect the device" +#: src/sid/xs_interface.c:982 +msgid "Maximum playtime:" msgstr "" -#: src/null/null.c:63 -#, fuzzy -msgid "Null output plugin " -msgstr "Plugin-ul de ieÈ™ire curent" +#: src/sid/xs_interface.c:999 +msgid "Use XSIDPLAY-compatible database" +msgstr "" -#: src/null/null.c:64 +#: src/sid/xs_interface.c:1003 msgid "" -" by Christian Birchinger \n" -"based on the XMMS plugin by HÃ¥vard KvÃ¥l " +"This option enables using of XSIDPLAY compatible song length database. " +"(Refer to Audacious-SID documentation for more information)" msgstr "" -#: src/null/null.c:67 +#: src/sid/xs_interface.c:1010 #, fuzzy -msgid "About Null Output" -msgstr "Plugin-ul de ieÈ™ire curent" +msgid "DB-file:" +msgstr "Tipul FiÈ™ierului: " -#: src/null/null.c:93 -#, fuzzy -msgid "Null output preferences" -msgstr "PreferinÈ›ele Plugin-ului de IeÈ™ire" +#: src/sid/xs_interface.c:1020 +msgid "Database path and filename" +msgstr "" -#: src/null/null.c:102 -msgid "Run in real time" +#: src/sid/xs_interface.c:1027 +msgid "Browse for song length-database file" msgstr "" -#: src/oss4/configure.c:89 +#: src/sid/xs_interface.c:1049 #, fuzzy -msgid "1. Default device" -msgstr "Salvează Lista Implicită" +msgid "Song length database:" +msgstr "Pauză" -#: src/oss4/configure.c:151 -#, fuzzy -msgid "OSS4 Output Plugin Preferences" -msgstr "PreferinÈ›ele Plugin-ului de IeÈ™ire" +#: src/sid/xs_interface.c:1054 +msgid "Songlength" +msgstr "" -#: src/oss4/configure.c:163 src/OSS/configure.c:213 src/sun/configure.c:181 -#, fuzzy -msgid "Audio device:" -msgstr "Sistemul Audio" +#: src/sid/xs_interface.c:1072 +msgid "Override generic Tuplez format string" +msgstr "" -#: src/oss4/configure.c:189 src/OSS/configure.c:235 src/OSS/configure.c:276 -#, fuzzy -msgid "Use alternate device:" -msgstr "FoloseÈ™te cursoare de mouse personalizate (oferite de skin)" +#: src/sid/xs_interface.c:1076 +msgid "" +"By enabling this option you can specify a custom Tuplez formatting string " +"for SID-files. The SID-plugin specific Tuplez tags are described shortly " +"below." +msgstr "" -#: src/oss4/configure.c:202 -msgid "Save volume between sessions" +#: src/sid/xs_interface.c:1087 +msgid "Tuplez format string for SID-files" msgstr "" -#: src/oss4/configure.c:206 -msgid "Enable format conversions made by the OSS software." +#: src/sid/xs_interface.c:1090 +msgid "" +"SID-specific Tuplez fields:\n" +"\n" +"sid-format\t\t- Specific fileformat\n" +"sid-model\t\t- 6581 or 8580\n" +"sid-speed\t\t- Timing or speed: PAL/NTSC/etc.\n" +"\n" +"Other \"special\" fields set:\n" +"\n" +"subsong-num, subsong-id" msgstr "" -#: src/oss4/plugin.c:54 +#: src/sid/xs_interface.c:1098 #, fuzzy -msgid "About OSS4 Plugin" -msgstr "Despre plugin-ul decodor MP4·AAC" +msgid "Song title format:" +msgstr "Formatul titlului:" -#: src/oss4/plugin.c:55 +#: src/sid/xs_interface.c:1125 +msgid "Add sub-tunes to playlist" +msgstr "" + +#: src/sid/xs_interface.c:1129 +msgid "" +"If enabled, sub-tunes of each file will be added to playlist. If disabled, " +"only the default sub-tune will be added." +msgstr "" + +#: src/sid/xs_interface.c:1131 +msgid "Only tunes with specified minimum duration" +msgstr "" + +#: src/sid/xs_interface.c:1135 +msgid "Only add sub-tunes that have a duration of at least specified time." +msgstr "" + +#: src/sid/xs_interface.c:1162 #, fuzzy +msgid "Sub-tune handling:" +msgstr "InformaÈ›ii despre Pluginul de ieÈ™ire" + +#: src/sid/xs_interface.c:1179 +msgid "Use STIL database" +msgstr "Foloseste baza de date STIL" + +#: src/sid/xs_interface.c:1183 msgid "" -"OSS4 Output Plugin for Audacious\n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"I would like to thank people on #audacious, especially Tony Vroon and John " -"Lindgren and of course the authors of the previous OSS plugin.\n" -"\n" -"This program is free software: you can redistribute it and/or modify it " -"under the terms of the GNU General Public License as published by the Free " -"Software Foundation, either version 3 of the License, or (at your option) " -"any later version.\n" -"\n" -"This program 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 General Public License for " -"more details.\n" -"\n" -"You should have received a copy of the GNU General Public License along with " -"this program. If not, see .\n" +"If this option is enabled (and the database & HVSC settings below are " +"correctly set), Audacious-SID will use and display additional information " +"from STIL database when HVSC SIDs are played." msgstr "" -"Plugin de ieÈ™ire ALSA pentru Audacious\n" -"\n" -"Acest program este software liber; poate fi redistribuit È™i/sau modificat\n" -"în conformitte cu termenii È™i condiÈ›iile licenÈ›ei GNU GPL, versiunea 2, sau\n" -"orice versiune mai nouă.\n" -"\n" -"CitiÈ›i textul licenÈ›ei pentru delatii suplimentare.\n" -"\n" -"O traducere (neoficială) în limba română poate fi găsită la adresa:\n" -"http://www.joomla.ro/content/view/144/45/ \n" -"\n" -"Textul original în engleză se află la adresa:\n" -"http://www.gnu.org/licenses/old-licenses/gpl-2.0.html\n" -"\n" -"Autor: Matthieu Sozeau (mattam@altern.org)" -#: src/oss4/utils.c:204 +#: src/sid/xs_interface.c:1190 +msgid "STIL file:" +msgstr "Fisierul STIL:" + +#: src/sid/xs_interface.c:1206 +msgid "" +"Path and filename of STIL database file (STIL.txt), usually found from " +"HVSC's DOCUMENTS-subdirectory." +msgstr "" + +#: src/sid/xs_interface.c:1219 +msgid "Browse for STIL-database file" +msgstr "" + +#: src/sid/xs_interface.c:1246 #, fuzzy -msgid "OSS4 error" -msgstr "Terror" +msgid "HVSC path:" +msgstr "Calea fisierului" -#: src/OSS/configure.c:148 -#, fuzzy, c-format -msgid "Default (%s)" -msgstr "Implicit" +#: src/sid/xs_interface.c:1262 +msgid "" +"Path to base-directory of your High Voltage SID Collection (HVSC), for " +"example /media/C64Music/" +msgstr "" -#: src/OSS/configure.c:197 -msgid "OSS Driver configuration" +#: src/sid/xs_interface.c:1275 +msgid "Browse for HVSC path" msgstr "" -#: src/OSS/configure.c:298 src/sun/configure.c:246 -msgid "Devices" +#: src/sid/xs_interface.c:1297 +msgid "SID Tune Information List (STIL) database:" msgstr "" -#: src/OSS/configure.c:300 src/sun/configure.c:257 -msgid "Buffering:" +#: src/sid/xs_interface.c:1321 +msgid "Cancel any changes" +msgstr "Anuleaza toate schimbarile" + +#: src/sid/xs_interface.c:1328 +msgid "Accept and update changes" msgstr "" -#: src/OSS/configure.c:313 src/sun/configure.c:288 -msgid "Pre-buffer (percent):" +#: src/sid/xs_interface.c:1628 +#, fuzzy +msgid "Audacious-SID Fileinfo" +msgstr "Developerii Audacious:" + +#: src/sid/xs_interface.c:1649 +#, fuzzy +msgid "Filename:" +msgstr "FiÈ™ier:" + +#: src/sid/xs_interface.c:1657 +#, fuzzy +msgid "Songname:" +msgstr "Autoderularea Numelui FiÈ™ierului" + +#: src/sid/xs_interface.c:1665 +msgid "Composer:" msgstr "" -#: src/OSS/configure.c:324 src/sun/configure.c:302 -msgid "Buffering" +#: src/sid/xs_interface.c:1673 +msgid "Copyright:" msgstr "" -#: src/OSS/configure.c:325 +#: src/sid/xs_interface.c:1717 #, fuzzy -msgid "Mixer Settings:" -msgstr "OpÈ›iuni pentru Popup-ul cu informaÈ›ii suplimentare" +msgid "Song Information:" +msgstr "InformaÈ›ii despre Track" -#: src/OSS/configure.c:331 -msgid "Volume controls Master not PCM" +#: src/sid/xs_interface.c:1752 +#, fuzzy +msgid "Author:" +msgstr "Autor: " + +#: src/sid/xs_interface.c:1786 +msgid "Duration:" msgstr "" -#: src/OSS/configure.c:337 src/sun/configure.c:392 -msgid "Mixer" +#: src/sid/xs_interface.c:1820 +#, fuzzy +msgid "Sub-tune Information:" +msgstr "InformaÈ›ii despre Pluginul de ieÈ™ire" + +#: src/sid/xs_interface.c:1881 +msgid "Select HVSC song length database" msgstr "" -#: src/OSS/OSS.c:40 +#: src/sid/xs_interface.c:1922 #, fuzzy -msgid "About OSS Driver" -msgstr "Despre plugin-ul·pentru Alarmă" +msgid "Select STIL-database" +msgstr "Alege fontul playlist-ului" -#: src/OSS/OSS.c:41 +#: src/sid/xs_interface.c:1963 +msgid "Select HVSC location prefix" +msgstr "" + +#: src/sid/xs_interface.c:2004 +msgid "Select SIDPlay2 filters file for importing" +msgstr "" + +#: src/sid/xs_interface.c:2045 +msgid "Select SIDPlay2 filters file for exporting" +msgstr "" + +#: src/sid/xs_interface.c:2093 src/sid/xs_interface.c:2106 +#, fuzzy +msgid "Confirm selected action" +msgstr "SelecÈ›ia formatelor" + +#: src/sid/xs_interface.c:2123 +#, fuzzy +msgid "Yes" +msgstr "da" + +#: src/sid/xs_interface.c:2129 +#, fuzzy +msgid "No" +msgstr "Deselectează tot" + +#: src/skins/plugin.c:167 +msgid "About Skinned GUI" +msgstr "" + +#: src/skins/plugin.c:168 msgid "" -"Audacious OSS Driver\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" +"Copyright (c) 2008, by Tomasz MoÅ„ \n" "\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." msgstr "" -#: src/pulse_audio/pulse_audio.c:691 +#: src/skins/skins_cfg.c:254 +#, fuzzy +msgid "_Player:" +msgstr "Pauză pentru" + +#: src/skins/skins_cfg.c:254 +msgid "Select main player window font:" +msgstr "" + +#: src/skins/skins_cfg.c:255 +#, fuzzy +msgid "_Playlist:" +msgstr "SelectaÈ›i Playlist-ul" + +#: src/skins/skins_cfg.c:255 +#, fuzzy +msgid "Select playlist font:" +msgstr "SelectaÈ›i Playlist-ul" + +#: src/skins/skins_cfg.c:259 +#, fuzzy +msgid "_Fonts" +msgstr "Numele FiÈ™ierului:" + +#: src/skins/skins_cfg.c:261 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "" + +#: src/skins/skins_cfg.c:263 +msgid "Scroll song title in both directions" +msgstr "" + +#: src/skins/skins_cfg.c:346 #, fuzzy -msgid "About Audacious PulseAudio Output Plugin" -msgstr "Despre plugin-ul decodor MP4·AAC" +msgid "_Skin" +msgstr "Numele FiÈ™ierului:" -#: src/pulse_audio/pulse_audio.c:692 +#: src/skins/skins_cfg.c:393 #, fuzzy -msgid "" -"Audacious PulseAudio Output Plugin\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" -"Plugin de ieÈ™ire ALSA pentru Audacious\n" -"\n" -"Acest program este software liber; poate fi redistribuit È™i/sau modificat\n" -"în conformitte cu termenii È™i condiÈ›iile licenÈ›ei GNU GPL, versiunea 2, sau\n" -"orice versiune mai nouă.\n" -"\n" -"CitiÈ›i textul licenÈ›ei pentru delatii suplimentare.\n" -"\n" -"O traducere (neoficială) în limba română poate fi găsită la adresa:\n" -"http://www.joomla.ro/content/view/144/45/ \n" -"\n" -"Textul original în engleză se află la adresa:\n" -"http://www.gnu.org/licenses/old-licenses/gpl-2.0.html\n" -"\n" -"Autor: Matthieu Sozeau (mattam@altern.org)" +msgid "Interface Preferences" +msgstr "PreferinÈ›e Audacious" -#: src/resample/plugin.c:78 +#: src/skins/ui_equalizer.c:330 #, fuzzy -msgid "About Sample Rate Converter Plugin" -msgstr "Despre plugin-ul decodor MP4·AAC" +msgid "Preamp" +msgstr "PREAMP" -#: src/resample/plugin.c:134 -msgid "Sample Rate Converter Preferences" +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" msgstr "" -#: src/resample/plugin.c:146 -msgid "Rate mappings:" +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" msgstr "" -#: src/resample/plugin.c:169 -msgid "All others:" +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" msgstr "" -#: src/resample/plugin.c:181 -msgid "Method:" -msgstr "" +#: src/skins/ui_equalizer.c:335 +#, fuzzy +msgid "250 Hz" +msgstr "Rata de eÈ™antionare [Hz]:" -#: src/scrobbler/configure.c:152 src/scrobbler/configure.c:228 +#: src/skins/ui_equalizer.c:335 #, fuzzy -msgid "Change password" -msgstr "Pauză" +msgid "500 Hz" +msgstr "11000 Hz" -#: src/scrobbler/configure.c:174 -msgid "Services" -msgstr "" +#: src/skins/ui_equalizer.c:335 +#, fuzzy +msgid "1 kHz" +msgstr "11 kHz" -#: src/scrobbler/configure.c:196 +#: src/skins/ui_equalizer.c:336 #, fuzzy -msgid "Username:" -msgstr "Utilizator:" +msgid "2 kHz" +msgstr "22 kHz" -#: src/scrobbler/configure.c:202 +#: src/skins/ui_equalizer.c:336 #, fuzzy -msgid "Password:" -msgstr "Parolă:" +msgid "4 kHz" +msgstr "44 kHz" -#: src/scrobbler/configure.c:210 +#: src/skins/ui_equalizer.c:336 #, fuzzy -msgid "Scrobbler URL:" -msgstr "Eroare în Audacious" +msgid "8 kHz" +msgstr "48 kHz" -#: src/scrobbler/configure.c:242 +#: src/skins/ui_equalizer.c:336 #, fuzzy -msgid "Last.FM" -msgstr "Radio Last.fm" +msgid "16 kHz" +msgstr "48 kHz" -#: src/scrobbler/configure.c:287 +#: src/skins/ui_equalizer.c:378 #, fuzzy -msgid "Scrobbler" -msgstr "Eroare în Audacious" +msgid "Audacious Equalizer" +msgstr "Egalizator Audacious" -#: src/scrobbler/plugin.c:213 -msgid "" -"Audacious AudioScrobbler Plugin\n" -"\n" -"Originally created by Audun Hove and Pipian \n" +#: src/skins/ui_equalizer.c:884 +msgid "Presets" msgstr "" -#: src/scrobbler/plugin.c:215 +#: src/skins/ui_main.c:444 +msgid "kbps" +msgstr "" + +#: src/skins/ui_main.c:452 #, fuzzy -msgid "About Scrobbler Plugin" -msgstr "Despre plugin-ul decodor MP4·AAC" +msgid "kHz" +msgstr "Hz" -#: src/sid/xs_about.c:84 +#: src/skins/ui_main.c:459 +msgid "surround" +msgstr "" + +#: src/skins/ui_main.c:807 #, c-format -msgid "About %s" -msgstr "Despre %s" +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "" -#: src/sid/xs_config.c:322 -#, fuzzy -msgid " Error" -msgstr "Eroare în Audacious" +#: src/skins/ui_main.c:828 +#, fuzzy, c-format +msgid "Volume: %d%%" +msgstr "Volum: %d%%" -#: src/sid/xs_fileinfo.c:151 -#, fuzzy -msgid "General info" -msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" +#: src/skins/ui_main.c:851 +#, c-format +msgid "Balance: %d%% left" +msgstr "" -#: src/sid/xs_fileinfo.c:164 -#, fuzzy, c-format -msgid "Tune #%i: " -msgstr "PorneÈ™te" +#: src/skins/ui_main.c:853 +msgid "Balance: center" +msgstr "" -#: src/sid/xs_interface.c:234 +#: src/skins/ui_main.c:855 +#, c-format +msgid "Balance: %d%% right" +msgstr "" + +#: src/skins/ui_main.c:981 #, fuzzy -msgid "Audacious-SID configuration" -msgstr "Developerii Audacious:" +msgid "Options Menu" +msgstr "Meniu de OpÈ›iuni" -#: src/sid/xs_interface.c:270 -msgid "8-bit" +#: src/skins/ui_main.c:985 +msgid "Disable 'Always On Top'" msgstr "" -#: src/sid/xs_interface.c:277 -msgid "16-bit" +#: src/skins/ui_main.c:987 +msgid "Enable 'Always On Top'" msgstr "" -#: src/sid/xs_interface.c:284 +#: src/skins/ui_main.c:990 #, fuzzy -msgid "Resolution:" -msgstr "RezoluÈ›ie" +msgid "File Info Box" +msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" -#: src/sid/xs_interface.c:315 -msgid "Autopanning" +#: src/skins/ui_main.c:995 +msgid "Visualization Menu" msgstr "" -#: src/sid/xs_interface.c:322 +#: src/skins/ui_main.c:1645 +msgid "Single mode." +msgstr "" + +#: src/skins/ui_main.c:1647 #, fuzzy -msgid "Channels:" -msgstr "Canale" +msgid "Playlist mode." +msgstr "SelectaÈ›i Playlist-ul" -#: src/sid/xs_interface.c:366 -msgid "Samplerate:" +#: src/skins/ui_main.c:1669 +msgid "Stopping after song." msgstr "" -#: src/sid/xs_interface.c:383 +#: src/skins/ui_main.c:1671 +msgid "Not stopping after song." +msgstr "" + +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 +msgid "Autoscroll Songname" +msgstr "" + +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 #, fuzzy -msgid "Use oversampling" -msgstr "FoloseÈ™te cursoare de mouse personalizate (oferite de skin)" +msgid "Peaks" +msgstr "Pranks" -#: src/sid/xs_interface.c:394 -msgid "Factor:" +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +#, fuzzy +msgid "Repeat" +msgstr "Beat" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" msgstr "" -#: src/sid/xs_interface.c:406 -msgid "Large factors require more CPU-power" +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" msgstr "" -#: src/sid/xs_interface.c:412 -msgid "Oversampling:" +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 +msgid "Show Player" msgstr "" -#: src/sid/xs_interface.c:417 +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 +msgid "Show Playlist Editor" +msgstr "" + +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 #, fuzzy -msgid "Audio" -msgstr "Audio" +msgid "Show Equalizer" +msgstr "Egalizator Audacious" -#: src/sid/xs_interface.c:445 -msgid "Force speed" +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 +msgid "Always on Top" msgstr "" -#: src/sid/xs_interface.c:449 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"clock speed/frequency. Otherwise the speed is determined from played file " -"itself." +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 +msgid "Put on All Workspaces" msgstr "" -#: src/sid/xs_interface.c:451 -#, fuzzy -msgid "PAL (50 Hz)" -msgstr "Rata de eÈ™antionare [Hz]:" +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 +msgid "Roll up Player" +msgstr "" -#: src/sid/xs_interface.c:455 -msgid "" -"PAL is the european TV standard, which uses 50Hz vertical refresh frequency. " -"Most of SID-tunes have been made for PAL computers." +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 +msgid "Roll up Playlist Editor" msgstr "" -#: src/sid/xs_interface.c:459 +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 +msgid "Roll up Equalizer" +msgstr "" + +#: src/skins/ui_manager.c:115 #, fuzzy -msgid "NTSC (60 Hz)" -msgstr "Rata de eÈ™antionare [Hz]:" +msgid "Analyzer" +msgstr "Modul Analizatorului" -#: src/sid/xs_interface.c:463 -msgid "" -"NTSC is the TV standard with 60Hz vertical refresh rate (and other features " -"that differ from PAL). It is mainly used in United States, Japan and certain " -"other countries." +#: src/skins/ui_manager.c:116 +#, fuzzy +msgid "Scope" +msgstr "Synthpop" + +#: src/skins/ui_manager.c:117 +msgid "Voiceprint" msgstr "" -#: src/sid/xs_interface.c:467 -msgid "Clock speed:" +#: src/skins/ui_manager.c:118 +msgid "Off" msgstr "" -#: src/sid/xs_interface.c:484 -msgid "Force model" +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 +#, fuzzy +msgid "Normal" +msgstr "Format" + +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 +#, fuzzy +msgid "Fire" +msgstr "Satire" + +#: src/skins/ui_manager.c:124 +msgid "Vertical Lines" msgstr "" -#: src/sid/xs_interface.c:488 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"SID-chip model. Otherwise the preferred SID model is determined from the " -"file (if PSIDv2NG type) or if not available, this setting is used." -msgstr "" +#: src/skins/ui_manager.c:128 +#, fuzzy +msgid "Lines" +msgstr "Latin" -#: src/sid/xs_interface.c:490 -msgid "MOS 6581" -msgstr "" +#: src/skins/ui_manager.c:129 +#, fuzzy +msgid "Bars" +msgstr "Bass" -#: src/sid/xs_interface.c:494 -msgid "" -"MOS/CSG 6581 is the earlier major version of SID chip. It differs from 8580 " -"in few ways, having much fuller filter (which, due to design error, is never " -"same between two different SID-chips) and has the \"volume adjustment bug\", " -"which enables playing of digital samples." -msgstr "" +#: src/skins/ui_manager.c:133 +#, fuzzy +msgid "Dot Scope" +msgstr "Nu curăța playlist-ul" -#: src/sid/xs_interface.c:498 -msgid "MOS 8580" +#: src/skins/ui_manager.c:134 +msgid "Line Scope" msgstr "" -#: src/sid/xs_interface.c:505 -msgid "SID model:" +#: src/skins/ui_manager.c:135 +msgid "Solid Scope" msgstr "" -#: src/sid/xs_interface.c:522 -msgid "SIDPlay 1 (frame-based)" +#: src/skins/ui_manager.c:141 +msgid "Ice" msgstr "" -#: src/sid/xs_interface.c:526 -msgid "" -"Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most " -"cases, though." +#: src/skins/ui_manager.c:146 +msgid "Smooth" msgstr "" -#: src/sid/xs_interface.c:530 -msgid "SIDPlay 2 (cycle-based)" -msgstr "" +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 +#, fuzzy +msgid "Slowest" +msgstr "Showtunes" -#: src/sid/xs_interface.c:534 -msgid "" -"Use libSIDPlay 2.x emulation, which requires powerful CPU due to more exact " -"emulation." +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 +#, fuzzy +msgid "Slow" +msgstr "Slow Jam" + +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 +msgid "Medium" msgstr "" -#: src/sid/xs_interface.c:538 +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 #, fuzzy -msgid "Emulation library selection:" -msgstr "Șterge selecÈ›ia anterioară înainte de a căuta" +msgid "Fast" +msgstr "Format" -#: src/sid/xs_interface.c:555 -msgid "Real C64 (SIDPlay 2 only)" +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 +msgid "Fastest" msgstr "" -#: src/sid/xs_interface.c:562 -msgid "Bank switching" +#: src/skins/ui_manager.c:166 +msgid "Time Elapsed" msgstr "" -#: src/sid/xs_interface.c:569 -msgid "Transparent ROM" +#: src/skins/ui_manager.c:167 +msgid "Time Remaining" msgstr "" -#: src/sid/xs_interface.c:576 -msgid "PlaySID environment" -msgstr "" +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +#, fuzzy +msgid "Pause" +msgstr "La încărcare" -#: src/sid/xs_interface.c:583 +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 #, fuzzy -msgid "Memory mode:" -msgstr "Mod de Vizualizare" +msgid "Previous" +msgstr "Primus" -#: src/sid/xs_interface.c:588 -msgid "Emu#1" +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +#, fuzzy +msgid "Next" +msgstr "Text" + +#: src/skins/ui_manager.c:196 +#, fuzzy +msgid "Visualization" +msgstr "InternaÅ£ionalizare" + +#: src/skins/ui_manager.c:197 +msgid "Visualization Mode" msgstr "" -#: src/sid/xs_interface.c:611 -msgid "Optimization mode (faster, inaccurate)" +#: src/skins/ui_manager.c:198 +msgid "Analyzer Mode" msgstr "" -#: src/sid/xs_interface.c:615 -msgid "" -"This setting can be used to enable libSIDPlay2's \"optimization mode\", " -"which in downgrades the emulation from cycle-exact to something similar to " -"frame-exact. The result is lower CPU usage, but worse accuracy." +#: src/skins/ui_manager.c:199 +msgid "Scope Mode" msgstr "" -#: src/sid/xs_interface.c:617 -msgid "reSID-emulation" +#: src/skins/ui_manager.c:200 +msgid "Voiceprint Mode" msgstr "" -#: src/sid/xs_interface.c:621 -msgid "" -"reSID is the software SID-chip simulator based on SID reverse-engineering, " -"created by Dag Lem. It is probably the closest thing to real SID available " -"as software-only emulation." +#: src/skins/ui_manager.c:201 +msgid "WindowShade VU Mode" msgstr "" -#: src/sid/xs_interface.c:625 -msgid "HardSID" +#: src/skins/ui_manager.c:202 +msgid "Analyzer Falloff" msgstr "" -#: src/sid/xs_interface.c:629 -msgid "" -"HardSID is a EISA/PCI card for PC-compatibles, which can be fitted with a " -"real SID-chip. Software can be used to control the HardSID and combined with " -"software emulation of rest of C64 via libSIDPlay2 HardSID can be used to " -"achieve \"near 100%\" similarity to real C64. For more information, see " -"http://www.hardsid.com/" +#: src/skins/ui_manager.c:203 +msgid "Peaks Falloff" msgstr "" -#: src/sid/xs_interface.c:633 +#: src/skins/ui_manager.c:208 #, fuzzy -msgid "SIDPlay 2 options:" -msgstr "Meniu de OpÈ›iuni" +msgid "Playlist" +msgstr "SelectaÈ›i Playlist-ul" -#: src/sid/xs_interface.c:650 -msgid "Fast (nearest neighbour)" -msgstr "" +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +#, fuzzy +msgid "New Playlist" +msgstr "SelectaÈ›i Playlist-ul" -#: src/sid/xs_interface.c:654 -msgid "" -"Fastest and also worst sounding sampling method, simply picks nearest " -"neighbouring sample." -msgstr "" +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 +#, fuzzy +msgid "Select Next Playlist" +msgstr "SelectaÈ›i Playlist-ul" -#: src/sid/xs_interface.c:658 -msgid "Linear interpolation" -msgstr "" +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 +#, fuzzy +msgid "Select Previous Playlist" +msgstr "SelectaÈ›i Playlist-ul" -#: src/sid/xs_interface.c:662 -msgid "" -"Uses linear interpolation between samples, yielding higher audio quality " -"with less sampling noise." -msgstr "" +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +#, fuzzy +msgid "Delete Playlist" +msgstr "SelectaÈ›i Playlist-ul" -#: src/sid/xs_interface.c:673 -msgid "Resampling (FIR)" +#: src/skins/ui_manager.c:222 +#, fuzzy +msgid "Import Playlist" +msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." msgstr "" -#: src/sid/xs_interface.c:680 +#: src/skins/ui_manager.c:226 #, fuzzy -msgid "reSID sampling options:" -msgstr "Convertor pentru rata de eÈ™antionare" +msgid "Export Playlist" +msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" -#: src/sid/xs_interface.c:685 -msgid "Emu#2" -msgstr "" +#: src/skins/ui_manager.c:227 +#, fuzzy +msgid "Saves the selected playlist." +msgstr "SelectaÈ›i Playlist-ul" -#: src/sid/xs_interface.c:697 -msgid "Emulate filters" -msgstr "" +#: src/skins/ui_manager.c:229 +#, fuzzy +msgid "Save All Playlists" +msgstr "SelectaÈ›i Playlist-ul" -#: src/sid/xs_interface.c:701 +#: src/skins/ui_manager.c:230 msgid "" -"This option enables emulation of SID filter. The filter is an essential part " -"of SID's sound capacity, but accurate emulation of it may require quite much " -"CPU power. However, if filter emulation is disabled, tunes won't sound " -"authentic at all if they utilize the filter." +"Saves all the playlists that are open. Note that this is done automatically " +"when Audacious quits." msgstr "" -#: src/sid/xs_interface.c:726 -msgid "FS" +#: src/skins/ui_manager.c:234 +msgid "Refresh List" msgstr "" -#: src/sid/xs_interface.c:743 -#, fuzzy -msgid "FM" -msgstr "Radio Last.fm" - -#: src/sid/xs_interface.c:760 -msgid "FT" +#: src/skins/ui_manager.c:235 +msgid "Refreshes metadata associated with a playlist entry." msgstr "" -#: src/sid/xs_interface.c:771 -msgid "Reset values" +#: src/skins/ui_manager.c:238 +msgid "List Manager" msgstr "" -#: src/sid/xs_interface.c:776 -msgid "SIDPlay1" +#: src/skins/ui_manager.c:239 +msgid "Opens the playlist manager." msgstr "" -#: src/sid/xs_interface.c:817 -msgid "Export" +#: src/skins/ui_manager.c:243 +msgid "View" msgstr "" -#: src/sid/xs_interface.c:825 -msgid "Use" +#: src/skins/ui_manager.c:244 +msgid "Interface" msgstr "" -#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:430 -#, fuzzy -msgid "Save" -msgstr "Salvează" - -#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:429 +#: src/skins/ui_manager.c:245 #, fuzzy -msgid "Import" -msgstr "Importă" +msgid "Interface Preferences ..." +msgstr "PreferinÈ›e Audacious" -#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:431 -#, fuzzy -msgid "Delete" -msgstr "Implicit" +#: src/skins/ui_manager.c:249 +msgid "Add Internet Address..." +msgstr "" -#: src/sid/xs_interface.c:863 -msgid "Filter curve:" +#: src/skins/ui_manager.c:250 +msgid "Adds a remote track to the playlist." msgstr "" -#: src/sid/xs_interface.c:868 -msgid "SIDPlay2" +#: src/skins/ui_manager.c:253 +msgid "Add Files..." msgstr "" -#: src/sid/xs_interface.c:874 -msgid "Filters" +#: src/skins/ui_manager.c:254 +msgid "Adds files to the playlist." msgstr "" -#: src/sid/xs_interface.c:897 -msgid "Play at least for specified time" +#: src/skins/ui_manager.c:259 +msgid "Search and Select" msgstr "" -#: src/sid/xs_interface.c:901 +#: src/skins/ui_manager.c:260 msgid "" -"If enabled, the tune is played at least for the specified time, adding " -"silence to the end if necessary." +"Searches the playlist and selects playlist entries based on specific " +"criteria." msgstr "" -#: src/sid/xs_interface.c:908 src/sid/xs_interface.c:962 -#: src/sid/xs_interface.c:1142 -msgid "Playtime:" +#: src/skins/ui_manager.c:263 +#, fuzzy +msgid "Invert Selection" +msgstr "SelecÈ›ia formatelor" + +#: src/skins/ui_manager.c:264 +msgid "Inverts the selected and unselected entries." msgstr "" -#: src/sid/xs_interface.c:928 -msgid "Minimum playtime:" +#: src/skins/ui_manager.c:267 +#, fuzzy +msgid "Select All" +msgstr "SelectaÈ›i Playlist-ul" + +#: src/skins/ui_manager.c:268 +msgid "Selects all of the playlist entries." msgstr "" -#: src/sid/xs_interface.c:945 -msgid "Play for specified time maximum" +#: src/skins/ui_manager.c:271 +#, fuzzy +msgid "Select None" +msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" + +#: src/skins/ui_manager.c:272 +msgid "Deselects all of the playlist entries." msgstr "" -#: src/sid/xs_interface.c:949 -msgid "" -"If enabled, tune is played until specified duration is reached (aka maximum " -"playtime)." +#: src/skins/ui_manager.c:277 +#, fuzzy +msgid "Remove All" +msgstr "Șterge Duplicatele" + +#: src/skins/ui_manager.c:278 +msgid "Removes all entries from the playlist." msgstr "" -#: src/sid/xs_interface.c:951 -msgid "Only when song length is unknown" +#: src/skins/ui_manager.c:281 +msgid "Clear Queue" msgstr "" -#: src/sid/xs_interface.c:955 -msgid "" -"If enabled, the maximum playtime is applied only if song/tune length is not " -"known." +#: src/skins/ui_manager.c:282 +msgid "Clears the queue associated with this playlist." msgstr "" -#: src/sid/xs_interface.c:982 -msgid "Maximum playtime:" +#: src/skins/ui_manager.c:285 +msgid "Remove Unavailable Files" msgstr "" -#: src/sid/xs_interface.c:999 -msgid "Use XSIDPLAY-compatible database" +#: src/skins/ui_manager.c:286 +msgid "Removes unavailable files from the playlist." msgstr "" -#: src/sid/xs_interface.c:1003 -msgid "" -"This option enables using of XSIDPLAY compatible song length database. " -"(Refer to Audacious-SID documentation for more information)" +#: src/skins/ui_manager.c:289 +msgid "Remove Duplicates" msgstr "" -#: src/sid/xs_interface.c:1010 +#: src/skins/ui_manager.c:291 src/skins/ui_manager.c:323 +#: src/skins/ui_manager.c:353 #, fuzzy -msgid "DB-file:" -msgstr "Tipul FiÈ™ierului: " +msgid "By Title" +msgstr "Titlu" -#: src/sid/xs_interface.c:1020 -msgid "Database path and filename" +#: src/skins/ui_manager.c:292 +msgid "Removes duplicate entries from the playlist by title." msgstr "" -#: src/sid/xs_interface.c:1027 -msgid "Browse for song length-database file" +#: src/skins/ui_manager.c:295 src/skins/ui_manager.c:335 +#: src/skins/ui_manager.c:365 +#, fuzzy +msgid "By Filename" +msgstr "Numele FiÈ™ierului:" + +#: src/skins/ui_manager.c:296 +msgid "Removes duplicate entries from the playlist by filename." msgstr "" -#: src/sid/xs_interface.c:1049 +#: src/skins/ui_manager.c:299 src/skins/ui_manager.c:339 +#: src/skins/ui_manager.c:369 #, fuzzy -msgid "Song length database:" -msgstr "Pauză" +msgid "By Path + Filename" +msgstr "Numele FiÈ™ierului:" -#: src/sid/xs_interface.c:1054 -msgid "Songlength" +#: src/skins/ui_manager.c:300 +msgid "Removes duplicate entries from the playlist by their full path." msgstr "" -#: src/sid/xs_interface.c:1072 -msgid "Override generic Tuplez format string" +#: src/skins/ui_manager.c:303 +msgid "Remove Unselected" msgstr "" -#: src/sid/xs_interface.c:1076 -msgid "" -"By enabling this option you can specify a custom Tuplez formatting string " -"for SID-files. The SID-plugin specific Tuplez tags are described shortly " -"below." +#: src/skins/ui_manager.c:304 +msgid "Remove unselected entries from the playlist." msgstr "" -#: src/sid/xs_interface.c:1087 -msgid "Tuplez format string for SID-files" +#: src/skins/ui_manager.c:307 +msgid "Remove Selected" msgstr "" -#: src/sid/xs_interface.c:1090 -msgid "" -"SID-specific Tuplez fields:\n" -"\n" -"sid-format\t\t- Specific fileformat\n" -"sid-model\t\t- 6581 or 8580\n" -"sid-speed\t\t- Timing or speed: PAL/NTSC/etc.\n" -"\n" -"Other \"special\" fields set:\n" -"\n" -"subsong-num, subsong-id" +#: src/skins/ui_manager.c:308 +msgid "Remove selected entries from the playlist." msgstr "" -#: src/sid/xs_interface.c:1098 +#: src/skins/ui_manager.c:313 #, fuzzy -msgid "Song title format:" -msgstr "Formatul titlului:" +msgid "Randomize List" +msgstr "Salvează" -#: src/sid/xs_interface.c:1103 +#: src/skins/ui_manager.c:314 #, fuzzy -msgid "Title" -msgstr "Titlu" +msgid "Randomizes the playlist." +msgstr "SelectaÈ›i Playlist-ul" -#: src/sid/xs_interface.c:1125 -msgid "Add sub-tunes to playlist" +#: src/skins/ui_manager.c:317 +msgid "Reverse List" msgstr "" -#: src/sid/xs_interface.c:1129 -msgid "" -"If enabled, sub-tunes of each file will be added to playlist. If disabled, " -"only the default sub-tune will be added." +#: src/skins/ui_manager.c:318 +msgid "Reverses the playlist." msgstr "" -#: src/sid/xs_interface.c:1131 -msgid "Only tunes with specified minimum duration" -msgstr "" +#: src/skins/ui_manager.c:321 +#, fuzzy +msgid "Sort List" +msgstr "Artist" -#: src/sid/xs_interface.c:1135 -msgid "Only add sub-tunes that have a duration of at least specified time." +#: src/skins/ui_manager.c:324 src/skins/ui_manager.c:354 +msgid "Sorts the list by title." msgstr "" -#: src/sid/xs_interface.c:1162 +#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 #, fuzzy -msgid "Sub-tune handling:" -msgstr "InformaÈ›ii despre Pluginul de ieÈ™ire" - -#: src/sid/xs_interface.c:1179 -msgid "Use STIL database" -msgstr "Foloseste baza de date STIL" +msgid "By Album" +msgstr "Album" -#: src/sid/xs_interface.c:1183 -msgid "" -"If this option is enabled (and the database & HVSC settings below are " -"correctly set), Audacious-SID will use and display additional information " -"from STIL database when HVSC SIDs are played." +#: src/skins/ui_manager.c:328 src/skins/ui_manager.c:358 +msgid "Sorts the list by album." msgstr "" -#: src/sid/xs_interface.c:1190 -msgid "STIL file:" -msgstr "Fisierul STIL:" +#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +#, fuzzy +msgid "By Artist" +msgstr "Artist" -#: src/sid/xs_interface.c:1206 -msgid "" -"Path and filename of STIL database file (STIL.txt), usually found from " -"HVSC's DOCUMENTS-subdirectory." +#: src/skins/ui_manager.c:332 src/skins/ui_manager.c:362 +msgid "Sorts the list by artist." msgstr "" -#: src/sid/xs_interface.c:1219 -msgid "Browse for STIL-database file" +#: src/skins/ui_manager.c:336 src/skins/ui_manager.c:366 +msgid "Sorts the list by filename." msgstr "" -#: src/sid/xs_interface.c:1246 -#, fuzzy -msgid "HVSC path:" -msgstr "Calea fisierului" - -#: src/sid/xs_interface.c:1262 -msgid "" -"Path to base-directory of your High Voltage SID Collection (HVSC), for " -"example /media/C64Music/" +#: src/skins/ui_manager.c:340 src/skins/ui_manager.c:370 +msgid "Sorts the list by full pathname." msgstr "" -#: src/sid/xs_interface.c:1275 -msgid "Browse for HVSC path" -msgstr "" +#: src/skins/ui_manager.c:343 src/skins/ui_manager.c:373 +#, fuzzy +msgid "By Date" +msgstr "Data:" -#: src/sid/xs_interface.c:1297 -msgid "SID Tune Information List (STIL) database:" +#: src/skins/ui_manager.c:344 src/skins/ui_manager.c:374 +msgid "Sorts the list by modification time." msgstr "" -#: src/sid/xs_interface.c:1321 -msgid "Cancel any changes" -msgstr "Anuleaza toate schimbarile" +#: src/skins/ui_manager.c:347 src/skins/ui_manager.c:377 +#, fuzzy +msgid "By Track Number" +msgstr "Numărul Trackului" -#: src/sid/xs_interface.c:1328 -msgid "Accept and update changes" +#: src/skins/ui_manager.c:348 src/skins/ui_manager.c:378 +msgid "Sorts the list by track number." msgstr "" -#: src/sid/xs_interface.c:1628 +#: src/skins/ui_manager.c:351 #, fuzzy -msgid "Audacious-SID Fileinfo" -msgstr "Developerii Audacious:" +msgid "Sort Selected" +msgstr "SelecÈ›ia formatelor" -#: src/sid/xs_interface.c:1649 +#: src/skins/ui_manager.c:387 #, fuzzy -msgid "Filename:" -msgstr "FiÈ™ier:" +msgid "File" +msgstr "Numele FiÈ™ierului:" -#: src/sid/xs_interface.c:1657 -#, fuzzy -msgid "Songname:" -msgstr "Autoderularea Numelui FiÈ™ierului" +#: src/skins/ui_manager.c:388 +msgid "Help" +msgstr "Ajutor" -#: src/sid/xs_interface.c:1665 -msgid "Composer:" +#: src/skins/ui_manager.c:390 +msgid "Plugin Services" msgstr "" -#: src/sid/xs_interface.c:1673 -msgid "Copyright:" +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:395 +#, fuzzy +msgid "View Track Details" +msgstr "Fereastra cu informaÈ›ii despre Track" + +#: src/skins/ui_manager.c:393 src/skins/ui_manager.c:396 +msgid "View track details" msgstr "" -#: src/sid/xs_interface.c:1717 +#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 #, fuzzy -msgid "Song Information:" -msgstr "InformaÈ›ii despre Track" +msgid "About Audacious" +msgstr "Despre plugin-ul decodor MP4·AAC" -#: src/sid/xs_interface.c:1752 +#: src/skins/ui_manager.c:401 #, fuzzy -msgid "Author:" -msgstr "Autor: " - -#: src/sid/xs_interface.c:1786 -msgid "Duration:" -msgstr "" +msgid "Play File" +msgstr "Pauză pentru" -#: src/sid/xs_interface.c:1820 +#: src/skins/ui_manager.c:402 #, fuzzy -msgid "Sub-tune Information:" -msgstr "InformaÈ›ii despre Pluginul de ieÈ™ire" +msgid "Load and play a file" +msgstr "ÃŽncarcă SF la pornirea playerului" -#: src/sid/xs_interface.c:1881 -msgid "Select HVSC song length database" -msgstr "" +#: src/skins/ui_manager.c:404 +#, fuzzy +msgid "Play Location" +msgstr "LocaÅ£ie:" -#: src/sid/xs_interface.c:1922 +#: src/skins/ui_manager.c:405 #, fuzzy -msgid "Select STIL-database" -msgstr "Alege fontul playlist-ului" +msgid "Play media from the selected location" +msgstr "SelecÈ›ia formatelor" -#: src/sid/xs_interface.c:1963 -msgid "Select HVSC location prefix" +#: src/skins/ui_manager.c:407 +msgid "Plugin services" msgstr "" -#: src/sid/xs_interface.c:2004 -msgid "Select SIDPlay2 filters file for importing" +#: src/skins/ui_manager.c:409 +msgid "Preferences" msgstr "" -#: src/sid/xs_interface.c:2045 -msgid "Select SIDPlay2 filters file for exporting" +#: src/skins/ui_manager.c:410 +msgid "Open preferences window" msgstr "" -#: src/sid/xs_interface.c:2093 src/sid/xs_interface.c:2106 +#: src/skins/ui_manager.c:413 #, fuzzy -msgid "Confirm selected action" -msgstr "SelecÈ›ia formatelor" +msgid "Quit Audacious" +msgstr "%s - Audacious" -#: src/sid/xs_interface.c:2123 -#, fuzzy -msgid "Yes" -msgstr "da" +#: src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Set A-B" +msgstr "" -#: src/sid/xs_interface.c:2129 +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Clear A-B" +msgstr "" + +#: src/skins/ui_manager.c:421 src/skins/ui_manager.c:422 +msgid "Jump to Playlist Start" +msgstr "" + +#: src/skins/ui_manager.c:427 src/skins/ui_manager.c:428 #, fuzzy -msgid "No" -msgstr "Deselectează tot" +msgid "Jump to Time" +msgstr "Fereastra de PreferinÈ›e" -#: src/skins/plugin.c:179 -msgid "About Skinned GUI" +#: src/skins/ui_manager.c:430 +msgid "Queue Toggle" msgstr "" -#: src/skins/plugin.c:180 -msgid "" -"Copyright (c) 2008, by Tomasz MoÅ„ \n" -"\n" +#: src/skins/ui_manager.c:431 +msgid "Enables/disables the entry in the playlist's queue." msgstr "" -#: src/skins/plugin.c:196 -msgid "Skinned Interface" +#: src/skins/ui_manager.c:434 +msgid "Copy" msgstr "" -#: src/skins/skins_cfg.c:316 +#: src/skins/ui_manager.c:436 #, fuzzy -msgid "_Player:" -msgstr "Pauză pentru" +msgid "Cut" +msgstr "Cult" -#: src/skins/skins_cfg.c:316 -msgid "Select main player window font:" +#: src/skins/ui_manager.c:438 +msgid "Paste" msgstr "" -#: src/skins/skins_cfg.c:317 +#: src/skins/ui_manager.c:445 #, fuzzy -msgid "_Playlist:" -msgstr "SelectaÈ›i Playlist-ul" +msgid "Load" +msgstr "ÃŽncarcă" -#: src/skins/skins_cfg.c:317 +#: src/skins/ui_manager.c:450 src/skins/ui_manager.c:471 +#: src/skins/ui_manager.c:486 #, fuzzy -msgid "Select playlist font:" -msgstr "SelectaÈ›i Playlist-ul" +msgid "Preset" +msgstr "Port-ul:" -#: src/skins/skins_cfg.c:321 -#, fuzzy -msgid "_Fonts" -msgstr "Numele FiÈ™ierului:" +#: src/skins/ui_manager.c:451 +msgid "Load preset" +msgstr "" -#: src/skins/skins_cfg.c:323 -#, fuzzy -msgid "Use Bitmap fonts if available" -msgstr "FoloseÈ™te fonturi Bitmap dacă sunt disponibile" +#: src/skins/ui_manager.c:453 src/skins/ui_manager.c:474 +#: src/skins/ui_manager.c:489 +msgid "Auto-load preset" +msgstr "" -#: src/skins/skins_cfg.c:323 -msgid "" -"Use bitmap fonts if they are available. Bitmap fonts do not support Unicode " -"strings." +#: src/skins/ui_manager.c:454 +msgid "Load auto-load preset" msgstr "" -#: src/skins/skins_cfg.c:324 +#: src/skins/ui_manager.c:457 #, fuzzy -msgid "_Miscellaneous" -msgstr "Meniu de OpÈ›iuni" +msgid "Load default preset into equalizer" +msgstr "ÃŽncarcă presetarea implicită a egalizatorului" -#: src/skins/skins_cfg.c:325 -msgid "Show separators in playlist" -msgstr "" +#: src/skins/ui_manager.c:459 +#, fuzzy +msgid "Zero" +msgstr "Retro" -#: src/skins/skins_cfg.c:327 -msgid "Show window manager decoration" +#: src/skins/ui_manager.c:460 +msgid "Set equalizer preset levels to zero" msgstr "" -#: src/skins/skins_cfg.c:328 -msgid "This enables the window manager to show decorations for windows." +#: src/skins/ui_manager.c:462 +msgid "From file" msgstr "" -#: src/skins/skins_cfg.c:329 -msgid "Use two-way text scroller" -msgstr "" +#: src/skins/ui_manager.c:463 +#, fuzzy +msgid "Load preset from file" +msgstr "ÃŽncarcă preset din fiÈ™ier" -#: src/skins/skins_cfg.c:330 -msgid "" -"If selected, the file information text in the main window will scroll back " -"and forth. If not selected, the text will only scroll in one direction." +#: src/skins/ui_manager.c:465 +msgid "From WinAMP EQF file" msgstr "" -#: src/skins/skins_cfg.c:331 -msgid "Disable inline gtk theme" +#: src/skins/ui_manager.c:466 +msgid "Load preset from WinAMP EQF file" msgstr "" -#: src/skins/skins_cfg.c:333 -msgid "Random skin on play" +#: src/skins/ui_manager.c:468 +msgid "WinAMP Presets" msgstr "" -#: src/skins/skins_cfg.c:334 -msgid "Allow loading incomplete skins" +#: src/skins/ui_manager.c:469 +msgid "Import WinAMP presets" msgstr "" -#: src/skins/skins_cfg.c:335 -msgid "" -"If selected, audacious won't refuse loading broken skins. Use only if your " -"favourite skin doesn't work" +#: src/skins/ui_manager.c:472 +msgid "Save preset" msgstr "" -#: src/skins/skins_cfg.c:401 -msgid "Color Adjustment" +#: src/skins/ui_manager.c:475 +msgid "Save auto-load preset" msgstr "" -#: src/skins/skins_cfg.c:407 -msgid "" -"Audacious allows you to alter the color balance of the skinned UI. The " -"sliders below will allow you to do this." -msgstr "" +#: src/skins/ui_manager.c:478 +#, fuzzy +msgid "Save default preset" +msgstr "ÃŽncarcă presetarea implicită a egalizatorului" -#: src/skins/skins_cfg.c:417 +#: src/skins/ui_manager.c:480 #, fuzzy -msgid "Blue" -msgstr "Blues" +msgid "To file" +msgstr "Fisierul STIL:" -#: src/skins/skins_cfg.c:424 -msgid "Green" +#: src/skins/ui_manager.c:481 +msgid "Save preset to file" msgstr "" -#: src/skins/skins_cfg.c:431 -msgid "Red" +#: src/skins/ui_manager.c:483 +msgid "To WinAMP EQF file" msgstr "" -#: src/skins/skins_cfg.c:569 -#, fuzzy -msgid "_Skin" -msgstr "Numele FiÈ™ierului:" - -#: src/skins/skins_cfg.c:574 -msgid "Color adjustment ..." +#: src/skins/ui_manager.c:484 +msgid "Save preset to WinAMP EQF file" msgstr "" -#: src/skins/ui_equalizer.c:463 +#: src/skins/ui_manager.c:487 #, fuzzy -msgid "Audacious Equalizer" -msgstr "Egalizator Audacious" +msgid "Delete preset" +msgstr "Implicit" -#: src/skins/ui_equalizer.c:991 -msgid "Presets" +#: src/skins/ui_manager.c:490 +msgid "Delete auto-load preset" msgstr "" -#: src/skins/ui_main.c:593 -msgid "kbps" +#: src/skins/ui_playlist.c:244 +msgid "Search entries in active playlist" +msgstr "" + +#: src/skins/ui_playlist.c:252 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." msgstr "" -#: src/skins/ui_main.c:601 +#: src/skins/ui_playlist.c:260 +msgid "Title: " +msgstr "Titlu: " + +#: src/skins/ui_playlist.c:267 #, fuzzy -msgid "kHz" -msgstr "Hz" +msgid "Album: " +msgstr "Album" -#: src/skins/ui_main.c:608 -msgid "surround" -msgstr "" +#: src/skins/ui_playlist.c:274 +#, fuzzy +msgid "Artist: " +msgstr "Artist" -#: src/skins/ui_main.c:981 -msgid "Audacious - visibility warning" +#: src/skins/ui_playlist.c:281 +#, fuzzy +msgid "Filename: " +msgstr "FiÈ™ier:" + +#: src/skins/ui_playlist.c:289 +msgid "Clear previous selection before searching" msgstr "" -#: src/skins/ui_main.c:984 -msgid "Show main player window" +#: src/skins/ui_playlist.c:292 +msgid "Automatically toggle queue for matching entries" msgstr "" -#: src/skins/ui_main.c:985 -msgid "Ignore" +#: src/skins/ui_playlist.c:295 +msgid "Create a new playlist with matching entries" msgstr "" -#: src/skins/ui_main.c:991 -msgid "" -"Audacious has been started with all of its windows hidden.\n" -"You may want to show the player window again to control Audacious; " -"otherwise, you'll have to control it remotely via audtool or enabled plugins " -"(such as the statusicon plugin)." +#: src/skins/ui_playlist.c:762 +#, fuzzy +msgid "Audacious Playlist Editor" +msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" + +#: src/skins/ui_playlist.c:809 +#, c-format +msgid "%s (%d of %d)" msgstr "" -#: src/skins/ui_main.c:997 -msgid "Always ignore, show/hide is controlled remotely" +#: src/skins/ui_skinselector.c:162 +msgid "Archived Winamp 2.x skin" msgstr "" -#: src/skins/ui_main.c:1042 -msgid "Audacious - broken GTK engine usage warning" +#: src/skins/ui_skinselector.c:167 +msgid "Unarchived Winamp 2.x skin" msgstr "" -#: src/skins/ui_main.c:1050 -#, c-format +#: src/skins/util.c:773 +#, fuzzy, c-format +msgid "Could not create directory (%s): %s\n" +msgstr "Nu s-a putut crea directorul (%s): %s\n" + +#: src/sndfile/plugin.c:438 +#, fuzzy +msgid "About sndfile plugin" +msgstr "Lista plugin-urilor _Generale" + +#: src/sndfile/plugin.c:439 msgid "" -"Broken GTK engine in use\n" -"\n" -"Audacious has detected that you are using a broken GTK engine.\n" +"Adapted for Audacious usage by Tony Vroon \n" +"from the xmms_sndfile plugin which is:\n" +"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" "\n" -"The theme engine you are using, %s, is incompatible with some of the " -"features used by modern skins. The incompatible features have been disabled " -"for this session.\n" +"This program is free software ; you can redistribute it and/or modify \n" +"it under the terms of the GNU General Public License as published by \n" +"the Free Software Foundation ; either version 2 of the License, or \n" +"(at your option) any later version. \n" +" \n" +"This program is distributed in the hope that it will be useful, \n" +"but WITHOUT ANY WARRANTY ; without even the implied warranty of \n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n" +"See the GNU General Public License for more details. \n" "\n" -"To use these features, please consider using a different GTK theme engine." -msgstr "" - -#: src/skins/ui_main.c:1061 -msgid "Do not display this warning again" +"You should have received a copy of the GNU General Public \n" +"License along with this program ; if not, write to \n" +"the Free Software Foundation, Inc., \n" +"51 Franklin Street, Fifth Floor, \n" +"Boston, MA 02110-1301 USA" msgstr "" -#: src/skins/ui_main.c:1269 -#, c-format -msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)" -msgstr "" +#: src/sndstretch/sndstretch_xmms.c:155 +#, fuzzy +msgid "About SndStretch" +msgstr "Despre Audacious" -#: src/skins/ui_main.c:1299 -#, fuzzy, c-format -msgid "Volume: %d%%" -msgstr "Volum: %d%%" +#: src/sndstretch/sndstretch_xmms.c:313 +#, fuzzy +msgid "Volume corr." +msgstr "Schimbă volumul cu" -#: src/skins/ui_main.c:1322 -#, c-format -msgid "Balance: %d%% left" +#: src/sndstretch/sndstretch_xmms.c:314 +msgid "Short Overlap" msgstr "" -#: src/skins/ui_main.c:1324 -msgid "Balance: center" +#: src/sndstretch/sndstretch_xmms.c:360 +#, fuzzy +msgid "Speed" +msgstr "Viteză: " + +#: src/sndstretch/sndstretch_xmms.c:361 +msgid "Pitch" msgstr "" -#: src/skins/ui_main.c:1326 -#, c-format -msgid "Balance: %d%% right" +#: src/sndstretch/sndstretch_xmms.c:362 +msgid "Scale" msgstr "" -#: src/skins/ui_main.c:1618 +#: src/sndstretch/sndstretch_xmms.c:363 #, fuzzy -msgid "Options Menu" +msgid "Options" msgstr "Meniu de OpÈ›iuni" -#: src/skins/ui_main.c:1622 -msgid "Disable 'Always On Top'" +#: src/sndstretch/sndstretch_xmms.c:382 +#, fuzzy +msgid "SndStretch - Configuration" +msgstr "AdPlug·::·Configurare" + +#: src/song_change/song_change.c:464 +msgid "Command to run when Audacious starts a new song." msgstr "" -#: src/skins/ui_main.c:1624 -msgid "Enable 'Always On Top'" +#: src/song_change/song_change.c:465 src/song_change/song_change.c:469 +#: src/song_change/song_change.c:473 src/song_change/song_change.c:477 +msgid "Command:" msgstr "" -#: src/skins/ui_main.c:1627 -#, fuzzy -msgid "File Info Box" -msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" +#: src/song_change/song_change.c:468 +msgid "Command to run toward the end of a song." +msgstr "" -#: src/skins/ui_main.c:1631 -msgid "Disable 'GUI Scaling'" +#: src/song_change/song_change.c:472 +msgid "Command to run when Audacious reaches the end of the playlist." msgstr "" -#: src/skins/ui_main.c:1633 -#, fuzzy -msgid "Enable 'GUI Scaling'" -msgstr "Activează proxy" +#: src/song_change/song_change.c:476 +msgid "" +"Command to run when title changes for a song (i.e. network streams titles)." +msgstr "" -#: src/skins/ui_main.c:1636 -msgid "Visualization Menu" +#: src/song_change/song_change.c:480 +msgid "" +"You can use the following format strings which\n" +"will be substituted before calling the command\n" +"(not all are useful for the end-of-playlist command).\n" +"\n" +"%F: Frequency (in hertz)\n" +"%c: Number of channels\n" +"%f: filename (full path)\n" +"%l: length (in milliseconds)\n" +"%n or %s: Song name\n" +"%r: Rate (in bits per second)\n" +"%t: Playlist position (%02d)\n" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" msgstr "" -#: src/skins/ui_main.c:2348 -msgid "Single mode." +#: src/song_change/song_change.c:507 +msgid "" +"Parameters passed to the shell should be encapsulated in " +"quotes. Doing otherwise is a security risk." +msgstr "" + +#: src/song_change/song_change.c:518 +msgid "Commands" msgstr "" -#: src/skins/ui_main.c:2350 +#: src/song_change/song_change.c:555 #, fuzzy -msgid "Playlist mode." -msgstr "SelectaÈ›i Playlist-ul" +msgid "Song Change" +msgstr "Mesajul melodiei" -#: src/skins/ui_main.c:2374 -msgid "Stopping after song." +#: src/statusicon/statusicon.c:378 +#, fuzzy +msgid "About Status Icon Plugin" +msgstr "Despre plugin-ul decodor MP4·AAC" + +#: src/statusicon/statusicon.c:379 +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager.\n" msgstr "" -#: src/skins/ui_main.c:2376 -msgid "Not stopping after song." +#: src/statusicon/statusicon.c:447 +msgid "Status Icon Plugin - Preferences" msgstr "" -#: src/skins/ui_manager.c:50 src/skins/ui_manager.c:51 -msgid "Autoscroll Songname" +#: src/statusicon/statusicon.c:457 +msgid "Right-Click Menu" msgstr "" -#: src/skins/ui_manager.c:56 src/skins/ui_manager.c:57 +#: src/statusicon/statusicon.c:462 #, fuzzy -msgid "Peaks" -msgstr "Pranks" +msgid "Small playback menu #1" +msgstr "Continuă redarea la pornire" -#: src/skins/ui_manager.c:68 src/skins/ui_manager.c:69 -msgid "Show Player" -msgstr "" +#: src/statusicon/statusicon.c:465 +#, fuzzy +msgid "Small playback menu #2" +msgstr "Continuă redarea la pornire" -#: src/skins/ui_manager.c:71 src/skins/ui_manager.c:72 -msgid "Show Playlist Editor" +#: src/statusicon/statusicon.c:481 +msgid "Mouse Scroll Action" msgstr "" -#: src/skins/ui_manager.c:74 src/skins/ui_manager.c:75 +#: src/statusicon/statusicon.c:485 #, fuzzy -msgid "Show Equalizer" -msgstr "Egalizator Audacious" +msgid "Change volume" +msgstr "Schimbă volumul cu" + +#: src/statusicon/statusicon.c:487 +#, fuzzy +msgid "Change playing song" +msgstr "Pauză" + +#: src/statusicon/statusicon.c:500 +#, fuzzy +msgid "Other settings" +msgstr "OpÈ›iuni pentru Popup-ul cu informaÈ›ii suplimentare" -#: src/skins/ui_manager.c:77 src/skins/ui_manager.c:78 -msgid "Always on Top" +#: src/statusicon/statusicon.c:505 +msgid "Disable the popup window" msgstr "" -#: src/skins/ui_manager.c:80 src/skins/ui_manager.c:81 -msgid "Put on All Workspaces" +#: src/statusicon/statusicon.c:512 +msgid "Close to the notification area (system tray)" msgstr "" -#: src/skins/ui_manager.c:83 src/skins/ui_manager.c:84 -msgid "Roll up Player" +#: src/stereo_plugin/stereo.c:41 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin 1999." msgstr "" -#: src/skins/ui_manager.c:86 src/skins/ui_manager.c:87 -msgid "Roll up Playlist Editor" -msgstr "" +#: src/stereo_plugin/stereo.c:65 +#, fuzzy +msgid "About Extra Stereo Plugin" +msgstr "Despre plugin-ul decodor MP4·AAC" -#: src/skins/ui_manager.c:89 src/skins/ui_manager.c:90 -msgid "Roll up Equalizer" +#: src/stereo_plugin/stereo.c:102 +msgid "Configure Extra Stereo" msgstr "" -#: src/skins/ui_manager.c:92 src/sndstretch/sndstretch_xmms.c:393 -msgid "Scale" +#: src/tonegen/tonegen.c:48 +#, fuzzy +msgid "About Tone Generator" +msgstr "Despre plugin-ul·pentru Alarmă" + +#: src/tonegen/tonegen.c:50 +msgid "" +"Sinus tone generator by Haavard Kvaalen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" msgstr "" -#: src/skins/ui_manager.c:93 -msgid "DoubleSize" +#: src/tonegen/tonegen.c:100 +#, c-format +msgid "%s %.1f Hz" +msgstr "%s %.1f Hz" + +#: src/tonegen/tonegen.c:100 +msgid "Tone Generator: " msgstr "" -#: src/skins/ui_manager.c:95 src/skins/ui_manager.c:96 -msgid "Easy Move" +#: src/unix-io/gtk.c:34 +#, fuzzy +msgid "About File I/O Plugin" +msgstr "Despre plugin-ul decodor MP4·AAC" + +#: src/vorbis/configure.c:31 +msgid "Override generic titles" msgstr "" -#: src/skins/ui_manager.c:104 +#: src/vorbis/configure.c:32 #, fuzzy -msgid "Analyzer" -msgstr "Modul Analizatorului" +msgid "Title format:" +msgstr "Formatul titlului:" -#: src/skins/ui_manager.c:105 +#: src/vorbis/configure.c:36 #, fuzzy -msgid "Scope" -msgstr "Synthpop" +msgid "Ogg Vorbis Tags" +msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" -#: src/skins/ui_manager.c:106 -msgid "Voiceprint" +#: src/vorbis/configure.c:69 +msgid "Ogg Vorbis Audio Plugin Configuration" msgstr "" -#: src/skins/ui_manager.c:107 -msgid "Off" +#: src/vorbis/vorbis.c:581 +#, fuzzy +msgid "About Ogg Vorbis Audio Plugin" +msgstr "Despre plugin-ul·Apple·Lossless·Audio" + +#: src/vorbis/vorbis.c:586 +msgid "" +"Ogg Vorbis Plugin by the Xiph.org Foundation\n" +"\n" +"Original code by\n" +"Tony Arcieri \n" +"Contributions from\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visit the Xiph.org Foundation at http://www.xiph.org/\n" msgstr "" -#: src/skins/ui_manager.c:111 src/skins/ui_manager.c:128 -#: src/skins/ui_manager.c:134 +#: src/vtx/about.c:14 #, fuzzy -msgid "Normal" -msgstr "Format" +msgid "About Vortex Player" +msgstr "Despre plugin-ul decodor MP4·AAC" -#: src/skins/ui_manager.c:112 src/skins/ui_manager.c:129 -#, fuzzy -msgid "Fire" -msgstr "Satire" +#: src/vtx/about.c:15 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"\n" +"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" +"and other AY/YM music sites.\n" +"\n" +"Audacious implementation by Pavel Vymetalek " +msgstr "" -#: src/skins/ui_manager.c:113 -msgid "Vertical Lines" +#: src/wavpack/wavpack.c:353 +#, fuzzy, c-format +msgid "Wavpack Decoder Plugin %s" +msgstr "Lista plugin-urilor _Generale" + +#: src/wavpack/wavpack.c:354 +msgid "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan\n" +"Visit the Wavpack site at http://www.wavpack.com/\n" msgstr "" -#: src/skins/ui_manager.c:117 #, fuzzy -msgid "Lines" -msgstr "Latin" +#~ msgid "Use Bitmap fonts if available" +#~ msgstr "FoloseÈ™te fonturi Bitmap dacă sunt disponibile" -#: src/skins/ui_manager.c:118 #, fuzzy -msgid "Bars" -msgstr "Bass" +#~ msgid "_Miscellaneous" +#~ msgstr "Meniu de OpÈ›iuni" -#: src/skins/ui_manager.c:122 -#, fuzzy -msgid "Dot Scope" -msgstr "Nu curăța playlist-ul" +#~ msgid "About " +#~ msgstr "Despre " -#: src/skins/ui_manager.c:123 -msgid "Line Scope" -msgstr "" +#~ msgid "" +#~ "\n" +#~ "Copyright (C) 2002, 2003 Simon Peter \n" +#~ "\n" +#~ "This plugin is released under the terms and conditions of the GNU LGPL.\n" +#~ "See http://www.gnu.org/licenses/lgpl.html for details.\n" +#~ "\n" +#~ "This plugin uses the AdPlug library, which is copyright (C) Simon Peter, " +#~ "et al.\n" +#~ "Linked AdPlug library version: " +#~ msgstr "" +#~ "\n" +#~ "Copyright·(C)·2002,·2003·Simon·Peter·\n" +#~ "\n" +#~ "Acest plugin este distribuit conform termenilor È™i condiÈ›iilor licenÈ›ei " +#~ "GNU LGPL.\n" +#~ "VedeÈ›i·http://www.gnu.org/licenses/lgpl.html·tentru detalii.\n" +#~ "\n" +#~ "Plugin-ul foloseÈ™te biblioteca AdPlug,·Copyright·(C)·Simon·Peter·și " +#~ "alÈ›ii.\n" +#~ "Versiunea AdPlug pentru care a fost link-editat:·" -#: src/skins/ui_manager.c:124 -msgid "Solid Scope" -msgstr "" +#~ msgid "AdPlug :: Configuration" +#~ msgstr "AdPlug·::·Configurare" -#: src/skins/ui_manager.c:130 -msgid "Ice" -msgstr "" +#~ msgid "Sound quality" +#~ msgstr "Calitatea sunetului" -#: src/skins/ui_manager.c:135 -msgid "Smooth" -msgstr "" +#~ msgid "Resolution" +#~ msgstr "RezoluÈ›ie" -#: src/skins/ui_manager.c:139 src/skins/ui_manager.c:147 -#, fuzzy -msgid "Slowest" -msgstr "Showtunes" +#~ msgid "8bit" +#~ msgstr "8 biÈ›i" -#: src/skins/ui_manager.c:140 src/skins/ui_manager.c:148 -#, fuzzy -msgid "Slow" -msgstr "Slow Jam" +#~ msgid "16bit" +#~ msgstr "16 biÈ›i" -#: src/skins/ui_manager.c:141 src/skins/ui_manager.c:149 -msgid "Medium" -msgstr "" +#~ msgid "Channels" +#~ msgstr "Canale" -#: src/skins/ui_manager.c:142 src/skins/ui_manager.c:150 -#, fuzzy -msgid "Fast" -msgstr "Format" +#~ msgid "" +#~ "Setting stereo is not recommended, unless you need to. This won't add any " +#~ "stereo effects to the sound - OPL2 is just mono - but eats up more CPU " +#~ "power!" +#~ msgstr "" +#~ "Nu este recomandată setarea forÈ›ată Stereo, decât dacă este neapărată " +#~ "nevoieAceastă setare nu va adăuga efecte stereo, deoarece OPL2 suportă " +#~ "doar MonoVa consuma însă mai multe resurse de calcul!" -#: src/skins/ui_manager.c:143 src/skins/ui_manager.c:151 -msgid "Fastest" -msgstr "" +#~ msgid "Frequency" +#~ msgstr "FrecvenÈ›a" -#: src/skins/ui_manager.c:155 -msgid "Time Elapsed" -msgstr "" +#~ msgid "Detect songend" +#~ msgstr "Detectează sfârÈ™itul melodiei" -#: src/skins/ui_manager.c:156 -msgid "Time Remaining" -msgstr "" +#~ msgid "" +#~ "If enabled, XMMS will detect a song's ending, stop it and advance in the " +#~ "playlist. If disabled, XMMS won't take notice of a song's ending and loop " +#~ "it all over again and again." +#~ msgstr "" +#~ "Dacă este activat, Audacious va detecta·sfârÈ™itul melodiei, va opri " +#~ "redarea È™i va avansa la melodia următoare. Dacă este dezactivat, nu se va " +#~ "È™ti când s-a terminat melodia È™i va fi redată din nou, la infinit. " -#: src/skins/ui_manager.c:185 -#, fuzzy -msgid "Visualization" -msgstr "InternaÅ£ionalizare" +#~ msgid "Formats" +#~ msgstr "Formate" -#: src/skins/ui_manager.c:186 -msgid "Visualization Mode" -msgstr "" +#~ msgid "Format selection" +#~ msgstr "SelecÈ›ia formatelor" -#: src/skins/ui_manager.c:187 -msgid "Analyzer Mode" -msgstr "" +#~ msgid "Format" +#~ msgstr "Format" -#: src/skins/ui_manager.c:188 -msgid "Scope Mode" -msgstr "" +#~ msgid "Extension" +#~ msgstr "Extensie" -#: src/skins/ui_manager.c:189 -msgid "Voiceprint Mode" -msgstr "" +#~ msgid "" +#~ "Selected file types will be recognized and played back by this plugin. " +#~ "Deselected types will be ignored to make room for other plugins to play " +#~ "these files." +#~ msgstr "" +#~ "Tipurile de fiÈ™iere selectate vor fi recunoscute È™i redate de acest " +#~ "plugin. Cele deselectate vor fi ignorate, dar pot fi redate de alte " +#~ "pluginuri." -#: src/skins/ui_manager.c:190 -msgid "WindowShade VU Mode" -msgstr "" +#~ msgid "AdPlug :: File Info" +#~ msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" -#: src/skins/ui_manager.c:191 -msgid "Analyzer Falloff" -msgstr "" +#~ msgid "Author: " +#~ msgstr "Autor: " -#: src/skins/ui_manager.c:192 -msgid "Peaks Falloff" -msgstr "" +#~ msgid "File Type: " +#~ msgstr "Tipul FiÈ™ierului: " -#: src/skins/ui_manager.c:202 src/skins/ui_manager.c:203 -#, fuzzy -msgid "Select Next Playlist" -msgstr "SelectaÈ›i Playlist-ul" +#~ msgid "Subsongs: " +#~ msgstr "Sub-melodii: " -#: src/skins/ui_manager.c:205 src/skins/ui_manager.c:206 -#, fuzzy -msgid "Select Previous Playlist" -msgstr "SelectaÈ›i Playlist-ul" +#~ msgid "Instruments: " +#~ msgstr "Instrumente: " -#: src/skins/ui_manager.c:222 -msgid "Refresh List" -msgstr "" +#~ msgid "Orders: " +#~ msgstr "Ordine: " -#: src/skins/ui_manager.c:226 -msgid "List Manager" -msgstr "" +#~ msgid "Patterns: " +#~ msgstr "Șabloane: " -#: src/skins/ui_manager.c:236 -msgid "Add Internet Address..." -msgstr "" +#~ msgid "Song" +#~ msgstr "Melodia" -#: src/skins/ui_manager.c:240 -msgid "Add Files..." -msgstr "" +#~ msgid "Instrument name" +#~ msgstr "Numele Instrumentului" -#: src/skins/ui_manager.c:246 -msgid "Search and Select" -msgstr "" +#~ msgid "Song message" +#~ msgstr "Mesajul melodiei" -#: src/skins/ui_manager.c:247 -msgid "" -"Searches the playlist and selects playlist entries based on specific " -"criteria." -msgstr "" +#~ msgid "Subsong selection" +#~ msgstr "SelecÈ›ia sub-melodiei" -#: src/skins/ui_manager.c:250 -#, fuzzy -msgid "Invert Selection" -msgstr "SelecÈ›ia formatelor" +#~ msgid "Order: " +#~ msgstr "Ordine: " -#: src/skins/ui_manager.c:251 -msgid "Inverts the selected and unselected entries." -msgstr "" +#~ msgid "Pattern: " +#~ msgstr "Șablon: " -#: src/skins/ui_manager.c:268 -msgid "Clear Queue" -msgstr "" +#~ msgid "Row: " +#~ msgstr "Linie: " -#: src/skins/ui_manager.c:269 -msgid "Clears the queue associated with this playlist." -msgstr "" +#~ msgid "Speed: " +#~ msgstr "Viteză: " -#: src/skins/ui_manager.c:272 -msgid "Remove Unavailable Files" -msgstr "" +#~ msgid "Timer: " +#~ msgstr "Cronometru: " -#: src/skins/ui_manager.c:273 -msgid "Removes unavailable files from the playlist." -msgstr "" +#~ msgid "About XMMS Alarm" +#~ msgstr "Despre plugin-ul·pentru Alarmă" -#: src/skins/ui_manager.c:276 -msgid "Remove Duplicates" -msgstr "" +#~ msgid "XMMS Alarm" +#~ msgstr "XMMS·Alarm" -#: src/skins/ui_manager.c:279 -msgid "Removes duplicate entries from the playlist by title." -msgstr "" +#~ msgid "" +#~ "An XMMS plugin which can be used\n" +#~ "to start playing at a certain time.\n" +#~ "\n" +#~ "Send all complaints to:\n" +#~ "Adam Feakin \n" +#~ "Daniel Stodden \n" +#~ "\n" +#~ "http://www.snika.uklinux.net/xmms-alarm/" +#~ msgstr "" +#~ "Acest plugin poate fi folosit pentru\n" +#~ "a orni redarea la un anumit timp.\n" +#~ "\n" +#~ "TrimiteÈ›i eventualele reclamaÈ›ii la:\n" +#~ "Adam·Feakin·\n" +#~ "Daniel·Stodden·\n" +#~ "\n" +#~ "http://www.snika.uklinux.net/xmms-alarm/" -#: src/skins/ui_manager.c:282 src/skins/ui_manager.c:318 -#: src/skins/ui_manager.c:348 -#, fuzzy -msgid "By Filename" -msgstr "Numele FiÈ™ierului:" +#~ msgid "Alarm" +#~ msgstr "Alarmă" -#: src/skins/ui_manager.c:283 -msgid "Removes duplicate entries from the playlist by filename." -msgstr "" +#~ msgid "This is your wakeup call." +#~ msgstr "Acesta este semnalul de deÈ™teptare." -#: src/skins/ui_manager.c:286 src/skins/ui_manager.c:322 -#: src/skins/ui_manager.c:352 -#, fuzzy -msgid "By Path + Filename" -msgstr "Numele FiÈ™ierului:" +#~ msgid "Select Playlist" +#~ msgstr "SelectaÈ›i Playlist-ul" -#: src/skins/ui_manager.c:287 -msgid "Removes duplicate entries from the playlist by their full path." -msgstr "" +#~ msgid "Sorry" +#~ msgstr "Ne pare rău" -#: src/skins/ui_manager.c:300 -msgid "Reverse List" -msgstr "" +#~ msgid "Warning" +#~ msgstr "Avertizare" -#: src/skins/ui_manager.c:301 -msgid "Reverses the playlist." -msgstr "" +#~ msgid "" +#~ "For safety reasons the \"quiet\" time must be at least 65 seconds longer " +#~ "than the fading time, it must also be more than 10 seconds. This " +#~ "basically means that there is a bug in the code and until I find a way of " +#~ "really fixing it this message will appear :)\n" +#~ "\n" +#~ "Your fading settings have NOT been saved\n" +#~ "\n" +#~ "--\n" +#~ "Adam" +#~ msgstr "" +#~ "Din motive de siguranță, timpul de \"liniÈ™te\" trebuie să fie de minim 65 " +#~ "secunde.For·safety·reasons·the·\"quiet" +#~ "\"·time·must·be·at·least·65·seconds·longer·than·the·fading·time," +#~ "·it·must·also·be·more·than·10·seconds." +#~ "··This·basically·means·that·there·is·a·bug·in·the·code·and·until·I·find·a·way·of·really·fixing·it·this·message·will·appear·:)\n" +#~ "\n" +#~ "Your·fading·settings·have·NOT·been·saved\n" +#~ "\n" +#~ "--\n" +#~ "Adam" -#: src/skins/ui_manager.c:304 -#, fuzzy -msgid "Sort List" -msgstr "Artist" +#~ msgid "Oh Well" +#~ msgstr "Ok" + +#~ msgid "Alarm Settings" +#~ msgstr "OpÈ›iuni ale plugin-ului Alarm" + +#~ msgid "Time" +#~ msgstr "Timp" + +#~ msgid "hours" +#~ msgstr "ore" + +#~ msgid "h" +#~ msgstr "h" + +#~ msgid "Quiet after:" +#~ msgstr "OpreÈ™te după:" -#: src/skins/ui_manager.c:307 src/skins/ui_manager.c:337 -msgid "Sorts the list by title." -msgstr "" +#~ msgid "Alarm at (default):" +#~ msgstr "Alarmă la (implicit):" -#: src/skins/ui_manager.c:311 src/skins/ui_manager.c:341 -msgid "Sorts the list by album." -msgstr "" +#~ msgid "Choose the days for the alarm to come on" +#~ msgstr "AlegeÈ›i zilele în care să pornească alarma" -#: src/skins/ui_manager.c:315 src/skins/ui_manager.c:345 -msgid "Sorts the list by artist." -msgstr "" +#~ msgid "Day" +#~ msgstr "Ziua" -#: src/skins/ui_manager.c:319 src/skins/ui_manager.c:349 -msgid "Sorts the list by filename." -msgstr "" +#~ msgid "Tuesday" +#~ msgstr "MarÈ›i" -#: src/skins/ui_manager.c:323 src/skins/ui_manager.c:353 -msgid "Sorts the list by full pathname." -msgstr "" +#~ msgid "Wednesday" +#~ msgstr "Miercuri" -#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 -#, fuzzy -msgid "By Date" -msgstr "Data:" +#~ msgid "Thursday" +#~ msgstr "Joi" -#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 -msgid "Sorts the list by modification time." -msgstr "" +#~ msgid "Friday" +#~ msgstr "Vineri" -#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 -msgid "Sorts the list by track number." -msgstr "" +#~ msgid "Saturday" +#~ msgstr "Sâmbătă" -#: src/skins/ui_manager.c:334 -#, fuzzy -msgid "Sort Selected" -msgstr "SelecÈ›ia formatelor" +#~ msgid "Sunday" +#~ msgstr "Duminică" -#: src/skins/ui_manager.c:373 -msgid "Plugin Services" -msgstr "" +#~ msgid "Monday" +#~ msgstr "Luni" -#: src/skins/ui_manager.c:384 -#, fuzzy -msgid "Play File" -msgstr "Pauză pentru" +#~ msgid "Days" +#~ msgstr "Zile" + +#~ msgid "Fading" +#~ msgstr "TranziÈ›ie" -#: src/skins/ui_manager.c:387 #, fuzzy -msgid "Play Location" -msgstr "LocaÅ£ie:" +#~ msgid "Volume" +#~ msgstr "Volum: %d%%" -#: src/skins/ui_manager.c:428 #, fuzzy -msgid "Load" -msgstr "ÃŽncarcă" +#~ msgid "Current" +#~ msgstr "Plugin-ul de ieÈ™ire curent" + +#~ msgid "reset to current output volume" +#~ msgstr "resetează la volumul curent" -#: src/skins/ui_manager.c:433 src/skins/ui_manager.c:454 -#: src/skins/ui_manager.c:469 #, fuzzy -msgid "Preset" -msgstr "Port-ul:" +#~ msgid "Start at" +#~ msgstr "ÃŽncepe redarea playlist-ului curent" -#: src/skins/ui_manager.c:434 -msgid "Load preset" -msgstr "" +#~ msgid "%" +#~ msgstr "%" -#: src/skins/ui_manager.c:436 src/skins/ui_manager.c:457 -#: src/skins/ui_manager.c:472 -msgid "Auto-load preset" -msgstr "" +#~ msgid "Final" +#~ msgstr "Final" -#: src/skins/ui_manager.c:437 -msgid "Load auto-load preset" -msgstr "" +#~ msgid "Additional Command" +#~ msgstr "Comandă adiÈ›ională" -#: src/skins/ui_manager.c:440 #, fuzzy -msgid "Load default preset into equalizer" -msgstr "ÃŽncarcă presetarea implicită a egalizatorului" +#~ msgid "enable" +#~ msgstr "Activează modul 'Mărime Dublă'" -#: src/skins/ui_manager.c:442 #, fuzzy -msgid "Zero" -msgstr "Retro" +#~ msgid "Playlist (optional)" +#~ msgstr "SelectaÈ›i Playlist-ul" -#: src/skins/ui_manager.c:443 -msgid "Set equalizer preset levels to zero" -msgstr "" +#~ msgid "Browse..." +#~ msgstr "RăsfoieÈ™te" -#: src/skins/ui_manager.c:445 -msgid "From file" -msgstr "" +#, fuzzy +#~ msgid "Reminder" +#~ msgstr "Reminder" -#: src/skins/ui_manager.c:446 #, fuzzy -msgid "Load preset from file" -msgstr "ÃŽncarcă preset din fiÈ™ier" +#~ msgid "Use reminder" +#~ msgstr "FoloseÈ™te cursoare de mouse personalizate (oferite de skin)" -#: src/skins/ui_manager.c:448 -msgid "From WinAMP EQF file" -msgstr "" +#~ msgid "What do these options mean?" +#~ msgstr "Ce înseamnă opÈ›iunile acestea?" -#: src/skins/ui_manager.c:449 -msgid "Load preset from WinAMP EQF file" -msgstr "" +#~ msgid "" +#~ "\n" +#~ "Time\n" +#~ " Alarm at: \n" +#~ " The time for the alarm to come on.\n" +#~ "\n" +#~ " Quiet After: \n" +#~ " Stop alarm after this amount of time.\n" +#~ " (if the wakeup dialog is not closed)\n" +#~ "\n" +#~ "\n" +#~ "Days\n" +#~ " Day:\n" +#~ " Select the days for the alarm to activate.\n" +#~ "\n" +#~ " Time:\n" +#~ " Choose the time for the alarm on each day,\n" +#~ " or select the toggle button to use the default\n" +#~ " time.\n" +#~ "\n" +#~ "\n" +#~ "Volume\n" +#~ " Fading: \n" +#~ " Fade the volume up to the chosen volume \n" +#~ " for this amount of time.\n" +#~ "\n" +#~ " Start at: \n" +#~ " Start fading from this volume.\n" +#~ "\n" +#~ " Final: \n" +#~ " The volume to stop fading at. If the fading\n" +#~ " time is 0 then set volume to this and start\n" +#~ " playing.\n" +#~ "\n" +#~ "\n" +#~ "Options:\n" +#~ " Additional Command:\n" +#~ " Run this command at the alarm time.\n" +#~ "\n" +#~ " Playlist: \n" +#~ " Load this playlist for playing songs from \n" +#~ " (must have .m3u extension). If no playlist\n" +#~ " is given then the songs which are currently\n" +#~ " in the list will be used.\n" +#~ " The URL of an mp3/ogg stream can also be\n" +#~ " entered here, but loading of playlists from\n" +#~ " URLs is not currently supported by xmms.\n" +#~ "\n" +#~ " Reminder:\n" +#~ " Display a reminder when the alarm goes off,\n" +#~ " type the reminder in the box and turn on the\n" +#~ " toggle button if you want it to be shown.\n" +#~ msgstr "" +#~ "\n" +#~ "Timp\n" +#~ " Alarmă la: \n" +#~ " Ora la care se va declanÈ™a alarma.\n" +#~ "\n" +#~ " OpreÈ™te după: \n" +#~ " OpreÈ™te alarma după atât timp.\n" +#~ " (dacă dialogul de trezire nu este închis)\n" +#~ "\n" +#~ "\n" +#~ "Zile\n" +#~ " Ziua:\n" +#~ " SelectaÈ›i zilele în care să se activeze alarma.\n" +#~ "\n" +#~ " Timp:\n" +#~ " AlegeÈ›i timpul la care va porni alarma în fiecare zi.\n" +#~ " sau selectaÈ›i valoarea implicită folosind butonul\n" +#~ "\n" +#~ "\n" +#~ "Volum\n" +#~ " TranziÈ›ie: \n" +#~ " Va face volumul să crească lent până la valoarea \n" +#~ " maximă, iar aceasta este durata perioadei de\n" +#~ " tranziÈ›ie.\n" +#~ "\n" +#~ "\n" +#~ " Volum iniÈ›ial: \n" +#~ " ÃŽncepe tranziÈ›ia de la această valoare iniÈ›ială a \n" +#~ " volumului.\n" +#~ "\n" +#~ " Volum final: \n" +#~ " Volumul maxim la care se va ajunge în timpul \n" +#~ " tranziÈ›iei.\n" +#~ "\n" +#~ "\n" +#~ "OpÈ›iuni:\n" +#~ " Comandă adiÈ›ională:\n" +#~ " Comandă ce va fi rulată la momentul declanșării \n" +#~ " alarmei.\n" +#~ "\n" +#~ " Playlist: \n" +#~ " ÃŽncarcă un playlist a cărui melodii vor fi redate\n" +#~ " la declanÈ™area alarmei. (cu extensie .m3u), sau \n" +#~ " un link spre un fiÈ™ier sau stream audio.\n" +#~ " Dacă nu este dat nimic vor fi folosite melodiile\n" +#~ " existente în playlist.\n" +#~ "\n" +#~ " Reminder:\n" +#~ " AfiÈ™ează un mesaj de reamintire când alarma se \n" +#~ " opreÈ™te. EditaÈ›i mesajul È™i activaÈ›i-l dacă doriÈ›i \n" +#~ " ca acesta să fie afiÈ™at.\n" -#: src/skins/ui_manager.c:451 -msgid "WinAMP Presets" -msgstr "" +#~ msgid "Your reminder for today is.." +#~ msgstr "Mesajul de reamintire pentru ziua de azi este..." -#: src/skins/ui_manager.c:452 -msgid "Import WinAMP presets" -msgstr "" +#~ msgid "Thankyou" +#~ msgstr "MulÈ›umesc" -#: src/skins/ui_manager.c:455 -msgid "Save preset" -msgstr "" +#, fuzzy +#~ msgid "Available Headsets" +#~ msgstr "_Preset-uri disponibile:" -#: src/skins/ui_manager.c:458 -msgid "Save auto-load preset" -msgstr "" +#, fuzzy +#~ msgid "Current Headset" +#~ msgstr "Plugin-ul de ieÈ™ire curent" -#: src/skins/ui_manager.c:461 #, fuzzy -msgid "Save default preset" -msgstr "ÃŽncarcă presetarea implicită a egalizatorului" +#~ msgid "_Connect" +#~ msgstr "Mod de Vizualizare" -#: src/skins/ui_manager.c:463 #, fuzzy -msgid "To file" -msgstr "Fisierul STIL:" +#~ msgid "Class" +#~ msgstr "Classical" -#: src/skins/ui_manager.c:464 -msgid "Save preset to file" -msgstr "" +#, fuzzy +#~ msgid "Address:" +#~ msgstr "Adaugă Adresa Internet..." -#: src/skins/ui_manager.c:466 -msgid "To WinAMP EQF file" -msgstr "" +#, fuzzy +#~ msgid "Rescan" +#~ msgstr "Dreptunghi" -#: src/skins/ui_manager.c:467 -msgid "Save preset to WinAMP EQF file" -msgstr "" +#, fuzzy +#~ msgid "Playback->Play" +#~ msgstr "Redă fiÈ™iere" -#: src/skins/ui_manager.c:470 #, fuzzy -msgid "Delete preset" -msgstr "Implicit" +#~ msgid "Playback->Stop" +#~ msgstr "OpreÈ™te melodia curentă" -#: src/skins/ui_manager.c:473 -msgid "Delete auto-load preset" -msgstr "" +#, fuzzy +#~ msgid "Playback->Pause" +#~ msgstr "Pauză pentru" -#: src/skins/ui_playlist.c:374 -msgid "Search entries in active playlist" -msgstr "" +#, fuzzy +#~ msgid "Playback->Prev" +#~ msgstr "Continuă redarea la pornire" -#: src/skins/ui_playlist.c:382 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" +#, fuzzy +#~ msgid "Playback->Next" +#~ msgstr "Selectează Playlist-ul Următor" -#: src/skins/ui_playlist.c:397 #, fuzzy -msgid "Album: " -msgstr "Album" +#~ msgid "Playback->Eject" +#~ msgstr "Continuă redarea la pornire" -#: src/skins/ui_playlist.c:404 #, fuzzy -msgid "Artist: " -msgstr "Artist" +#~ msgid "Playlist->Repeat" +#~ msgstr "SelectaÈ›i Playlist-ul" -#: src/skins/ui_playlist.c:411 #, fuzzy -msgid "Filename: " -msgstr "FiÈ™ier:" +#~ msgid "Playlist->Shuffle" +#~ msgstr "SelectaÈ›i Playlist-ul" -#: src/skins/ui_playlist.c:419 -msgid "Clear previous selection before searching" -msgstr "" +#, fuzzy +#~ msgid "Volume->Up_5" +#~ msgstr "Restrânge player-ul" -#: src/skins/ui_playlist.c:422 -msgid "Automatically toggle queue for matching entries" -msgstr "" +#, fuzzy +#~ msgid "Volume->Down_5" +#~ msgstr "Schimbă volumul cu" -#: src/skins/ui_playlist.c:425 -msgid "Create a new playlist with matching entries" -msgstr "" +#, fuzzy +#~ msgid "Volume->Up_10" +#~ msgstr "Restrânge player-ul" -#: src/skins/ui_playlist.c:772 #, fuzzy -msgid "Save as Static Playlist" -msgstr "SelectaÈ›i Playlist-ul" +#~ msgid "Volume->Down_10" +#~ msgstr "Schimbă volumul cu" -#: src/skins/ui_playlist.c:779 -msgid "Use Relative Path" -msgstr "" +#, fuzzy +#~ msgid "Volume->Mute" +#~ msgstr "Schimbă volumul cu" -#: src/skins/ui_playlist.c:802 #, fuzzy -msgid "Load Playlist" -msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" +#~ msgid "Window->Main" +#~ msgstr "Arată fereastra principală" -#: src/skins/ui_playlist.c:815 #, fuzzy -msgid "Save Playlist" -msgstr "SelectaÈ›i Playlist-ul" +#~ msgid "Window->Playlist" +#~ msgstr "SelectaÈ›i Playlist-ul" -#: src/skins/ui_playlist.c:1146 #, fuzzy -msgid "Audacious Playlist Editor" -msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" +#~ msgid "Window->Equalizer" +#~ msgstr "Egalizator Audacious" -#: src/skins/ui_playlist.c:1206 -#, c-format -msgid "%s (%d of %d)" -msgstr "" +#, fuzzy +#~ msgid "Window->JumpToFile" +#~ msgstr "Fereastra de PreferinÈ›e" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "31 Hz" -msgstr "" +#, fuzzy +#~ msgid "Detected" +#~ msgstr "Detectează sfârÈ™itul melodiei" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "63 Hz" -msgstr "" +#, fuzzy +#~ msgid "Custom" +#~ msgstr "Format specificat:" -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "125 Hz" -msgstr "" +#, fuzzy +#~ msgid "Not Detected" +#~ msgstr "SelecÈ›ia formatelor" -#: src/skins/ui_skinned_equalizer_slider.c:436 #, fuzzy -msgid "250 Hz" -msgstr "Rata de eÈ™antionare [Hz]:" +#~ msgid "Information" +#~ msgstr "InformaÈ›ii despre Track" -#: src/skins/ui_skinned_equalizer_slider.c:436 #, fuzzy -msgid "500 Hz" -msgstr "11000 Hz" +#~ msgid "Device name:" +#~ msgstr "Numele Instrumentului" -#: src/skins/ui_skinned_equalizer_slider.c:436 #, fuzzy -msgid "1 kHz" -msgstr "11 kHz" +#~ msgid "Device file:" +#~ msgstr "Tipul FiÈ™ierului: " -#: src/skins/ui_skinned_equalizer_slider.c:436 #, fuzzy -msgid "2 kHz" -msgstr "22 kHz" +#~ msgid "(custom)" +#~ msgstr "Format specificat:" + +#~ msgid "Active" +#~ msgstr "Activ" + +#~ msgid "Status" +#~ msgstr "Statut" -#: src/skins/ui_skinned_equalizer_slider.c:437 #, fuzzy -msgid "4 kHz" -msgstr "44 kHz" +#~ msgid "Device Name" +#~ msgstr "Numele Instrumentului" -#: src/skins/ui_skinned_equalizer_slider.c:437 #, fuzzy -msgid "8 kHz" -msgstr "48 kHz" +#~ msgid "Device File" +#~ msgstr "Tipul FiÈ™ierului: " -#: src/skins/ui_skinned_equalizer_slider.c:437 #, fuzzy -msgid "16 kHz" -msgstr "48 kHz" +#~ msgid "Device Address" +#~ msgstr "Adaugă Adresa Internet..." -#: src/skins/ui_skinselector.c:179 -msgid "Archived Winamp 2.x skin" -msgstr "" +#, fuzzy +#~ msgid "Name: " +#~ msgstr "Numele Instrumentului" -#: src/skins/ui_skinselector.c:184 -msgid "Unarchived Winamp 2.x skin" -msgstr "" +#, fuzzy +#~ msgid "Filename: " +#~ msgstr "Numele FiÈ™ierului:" -#: src/skins/util.c:834 -#, fuzzy, c-format -msgid "Could not create directory (%s): %s\n" -msgstr "Nu s-a putut crea directorul (%s): %s\n" +#, fuzzy +#~ msgid "Phys.Address: " +#~ msgstr "Adaugă Adresa Internet..." -#: src/sndfile/plugin.c:531 #, fuzzy -msgid "About sndfile plugin" -msgstr "Lista plugin-urilor _Generale" +#~ msgid "EvDev-Plug - about" +#~ msgstr "Despre plugin-ul·pentru Alarmă" -#: src/sndfile/plugin.c:532 -msgid "" -"Adapted for Audacious usage by Tony Vroon \n" -"from the xmms_sndfile plugin which is:\n" -"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -"This program is free software ; you can redistribute it and/or modify \n" -"it under the terms of the GNU General Public License as published by \n" -"the Free Software Foundation ; either version 2 of the License, or \n" -"(at your option) any later version. \n" -" \n" -"This program is distributed in the hope that it will be useful, \n" -"but WITHOUT ANY WARRANTY ; without even the implied warranty of \n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n" -"See the GNU General Public License for more details. \n" -"\n" -"You should have received a copy of the GNU General Public \n" -"License along with this program ; if not, write to \n" -"the Free Software Foundation, Inc., \n" -"51 Franklin Street, Fifth Floor, \n" -"Boston, MA 02110-1301 USA" -msgstr "" +#, fuzzy +#~ msgid "Name" +#~ msgstr "Numele Instrumentului" -#: src/sndstretch/sndstretch_xmms.c:175 #, fuzzy -msgid "About SndStretch" -msgstr "Despre Audacious" +#~ msgid "Installed plugins" +#~ msgstr "Reîncarcă Plugin-urile" + +#, fuzzy +#~ msgid "Running plugins" +#~ msgstr "Reîncarcă Plugin-urile" + +#, fuzzy +#~ msgid "Add" +#~ msgstr "Adaugă FiÈ™iere" + +#, fuzzy +#~ msgid "Remove" +#~ msgstr "Șterge Duplicatele" -#: src/sndstretch/sndstretch_xmms.c:336 #, fuzzy -msgid "Volume corr." -msgstr "Schimbă volumul cu" +#~ msgid "LADSPA Plugin Catalog" +#~ msgstr "Lista plugin-urilor _Generale" -#: src/sndstretch/sndstretch_xmms.c:337 -msgid "Short Overlap" -msgstr "" +#, fuzzy +#~ msgid "About LIRC Audacious Plugin" +#~ msgstr "Despre plugin-ul decodor MP4·AAC" -#: src/sndstretch/sndstretch_xmms.c:391 #, fuzzy -msgid "Speed" -msgstr "Viteză: " +#~ msgid "LIRC Plugin " +#~ msgstr "Plugin de intrare: %s" -#: src/sndstretch/sndstretch_xmms.c:392 -msgid "Pitch" -msgstr "" +#, fuzzy +#~ msgid "LIRC plugin settings" +#~ msgstr "Plugin de intrare: %s" -#: src/sndstretch/sndstretch_xmms.c:413 #, fuzzy -msgid "SndStretch - Configuration" -msgstr "AdPlug·::·Configurare" +#~ msgid "Connection" +#~ msgstr "Mod de Vizualizare" -#: src/song_change/song_change.c:397 -msgid "Command to run when Audacious starts a new song." -msgstr "" +#, fuzzy +#~ msgid "%s: disconnected from LIRC\n" +#~ msgstr "ÃŽncarcă preset din fiÈ™ier" -#: src/song_change/song_change.c:398 src/song_change/song_change.c:402 -#: src/song_change/song_change.c:406 src/song_change/song_change.c:410 -msgid "Command:" -msgstr "" +#, fuzzy +#~ msgid "ModPlug Configuration" +#~ msgstr "AdPlug·::·Configurare" -#: src/song_change/song_change.c:401 -msgid "Command to run toward the end of a song." -msgstr "" +#~ msgid "16 bit" +#~ msgstr "16 bit" -#: src/song_change/song_change.c:405 -msgid "Command to run when Audacious reaches the end of the playlist." -msgstr "" +#~ msgid "8 bit" +#~ msgstr "8 bit" -#: src/song_change/song_change.c:409 -msgid "" -"Command to run when title changes for a song (i.e. network streams titles)." -msgstr "" +#, fuzzy +#~ msgid "96 kHz" +#~ msgstr "48 kHz" -#: src/song_change/song_change.c:413 -msgid "" -"You can use the following format strings which\n" -"will be substituted before calling the command\n" -"(not all are useful for the end-of-playlist command).\n" -"\n" -"%F: Frequency (in hertz)\n" -"%c: Number of channels\n" -"%f: filename (full path)\n" -"%l: length (in milliseconds)\n" -"%n or %s: Song name\n" -"%r: Rate (in bits per second)\n" -"%t: Playlist position (%02d)\n" -"%p: Currently playing (1 or 0)" -msgstr "" +#~ msgid "48 kHz" +#~ msgstr "48 kHz" -#: src/song_change/song_change.c:437 -msgid "" -"Parameters passed to the shell should be encapsulated in " -"quotes. Doing otherwise is a security risk." -msgstr "" +#~ msgid "44 kHz" +#~ msgstr "44 kHz" -#: src/song_change/song_change.c:448 -msgid "Commands" -msgstr "" +#~ msgid "22 kHz" +#~ msgstr "22 kHz" -#: src/song_change/song_change.c:484 #, fuzzy -msgid "Song Change" -msgstr "Mesajul melodiei" +#~ msgid "Sampling Rate" +#~ msgstr "Convertor pentru rata de eÈ™antionare" -#: src/spectrum/spectrum.c:89 #, fuzzy -msgid "Spectrum Analyzer" -msgstr "Modul Analizatorului" +#~ msgid "Enable" +#~ msgstr "Activează modul 'Mărime Dublă'" -#: src/statusicon/statusicon.c:355 #, fuzzy -msgid "About Status Icon Plugin" -msgstr "Despre plugin-ul decodor MP4·AAC" - -#: src/statusicon/statusicon.c:356 -msgid "" -"Status Icon Plugin\n" -"\n" -"Copyright 2005-2007 Giacomo Lozito \n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"This plugin provides a status icon, placed in\n" -"the system tray area of the window manager.\n" -msgstr "" - -#: src/statusicon/statusicon.c:418 -msgid "Status Icon Plugin - Preferences" -msgstr "" +#~ msgid "Depth" +#~ msgstr "Adancimea cautarii" -#: src/statusicon/statusicon.c:428 -msgid "Right-Click Menu" -msgstr "" +#, fuzzy +#~ msgid "Effects" +#~ msgstr "Efecte" -#: src/statusicon/statusicon.c:433 #, fuzzy -msgid "Small playback menu #1" -msgstr "Continuă redarea la pornire" +#~ msgid "Fast Playlist Info" +#~ msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" -#: src/statusicon/statusicon.c:436 #, fuzzy -msgid "Small playback menu #2" -msgstr "Continuă redarea la pornire" +#~ msgid "Play Amiga MOD" +#~ msgstr "- redă fiÈ™ierele multimedia" -#: src/statusicon/statusicon.c:452 -msgid "Mouse Scroll Action" -msgstr "" +#, fuzzy +#~ msgid "Don't loop" +#~ msgstr "Nu curăța playlist-ul" -#: src/statusicon/statusicon.c:456 #, fuzzy -msgid "Change volume" -msgstr "Schimbă volumul cu" +#~ msgid "time(s)" +#~ msgstr "Timp Scurs" -#: src/statusicon/statusicon.c:458 #, fuzzy -msgid "Change playing song" -msgstr "Pauză" +#~ msgid "MOD Info" +#~ msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" -#: src/stereo_plugin/stereo.c:40 -msgid "" -"Extra Stereo Plugin\n" -"\n" -"By Johan Levin 1999." -msgstr "" +#, fuzzy +#~ msgid "Instruments" +#~ msgstr "Instrumente: " -#: src/stereo_plugin/stereo.c:64 #, fuzzy -msgid "About Extra Stereo Plugin" -msgstr "Despre plugin-ul decodor MP4·AAC" +#~ msgid "Message" +#~ msgstr "Mesajul melodiei" -#: src/stereo_plugin/stereo.c:100 -msgid "Configure Extra Stereo" -msgstr "" +#, fuzzy +#~ msgid "About Modplug" +#~ msgstr "Despre Audacious" -#: src/streambrowser/gui/streambrowser_win.c:62 #, fuzzy -msgid "Search:" -msgstr "Anul" +#~ msgid "Blue" +#~ msgstr "Blues" -#: src/streambrowser/gui/streambrowser_win.c:81 -#: src/streambrowser/gui/streambrowser_win.c:370 -msgid "Add Bookmark" -msgstr "" +#, fuzzy +#~ msgid "Enable 'GUI Scaling'" +#~ msgstr "Activează proxy" -#: src/streambrowser/gui/streambrowser_win.c:95 -msgid "Stream browser" -msgstr "" +#, fuzzy +#~ msgid "Spectrum Analyzer" +#~ msgstr "Modul Analizatorului" -#: src/streambrowser/gui/streambrowser_win.c:319 #, fuzzy -msgid "Stream name" -msgstr "Numele Instrumentului" +#~ msgid "Search:" +#~ msgstr "Anul" -#: src/streambrowser/gui/streambrowser_win.c:326 #, fuzzy -msgid "Now playing" -msgstr "SelectaÈ›i Playlist-ul" +#~ msgid "Stream name" +#~ msgstr "Numele Instrumentului" -#: src/streambrowser/gui/streambrowser_win.c:367 #, fuzzy -msgid "Remove Bookmark" -msgstr "Șterge Duplicatele" +#~ msgid "Now playing" +#~ msgstr "SelectaÈ›i Playlist-ul" -#: src/streambrowser/streambrowser.c:331 #, fuzzy -msgid "About Stream Browser" -msgstr "Despre plugin-ul·pentru Alarmă" +#~ msgid "Remove Bookmark" +#~ msgstr "Șterge Duplicatele" -#: src/streambrowser/streambrowser.c:332 -msgid "" -"Copyright (c) 2008, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming " -"directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" -"\n" -"This was a Google Summer of Code 2008 project." -msgstr "" +#, fuzzy +#~ msgid "About Stream Browser" +#~ msgstr "Despre plugin-ul·pentru Alarmă" -#: src/streambrowser/streambrowser.c:357 src/streambrowser/streambrowser.c:367 -msgid "Streambrowser" -msgstr "" +#, fuzzy +#~ msgid "minutes:seconds" +#~ msgstr "secunde" -#: src/sun/about.c:30 #, fuzzy -msgid "About the Sun Driver" -msgstr "Despre plugin-ul·pentru Alarmă" +#~ msgid "Track length:" +#~ msgstr "InformaÈ›ii despre Track" -#: src/sun/about.c:31 -msgid "" -"XMMS BSD Sun Driver\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" -msgstr "" +#, fuzzy +#~ msgid "Show/hide statusbar" +#~ msgstr "SelectaÈ›i Playlist-ul" -#: src/sun/configure.c:199 #, fuzzy -msgid "Audio control device:" -msgstr "Despre plugin-ul·Apple·Lossless·Audio" +#~ msgid "Import Playlist ..." +#~ msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" -#: src/sun/configure.c:270 #, fuzzy -msgid "Buffer size (ms):" -msgstr "Titlu" +#~ msgid "Refresh Selected" +#~ msgstr "SelecÈ›ia formatelor" -#: src/sun/configure.c:348 #, fuzzy -msgid "Volume controls device:" -msgstr "Schimbă volumul cu" +#~ msgid "Edit the playlist title." +#~ msgstr "SelectaÈ›i Playlist-ul" -#: src/sun/configure.c:361 -msgid "XMMS uses mixer exclusively." -msgstr "" +#, fuzzy +#~ msgid "By Formatted Title" +#~ msgstr "Titlu" -#: src/sun/configure.c:536 -msgid "Sun driver configuration" -msgstr "" +#, fuzzy +#~ msgid "Components" +#~ msgstr "Comentariu" -#: src/tonegen/tonegen.c:53 #, fuzzy -msgid "About Tone Generator" -msgstr "Despre plugin-ul·pentru Alarmă" +#~ msgid "Save as Static Playlist" +#~ msgstr "SelectaÈ›i Playlist-ul" -#: src/tonegen/tonegen.c:55 -msgid "" -"Sinus tone generator by Haavard Kvaalen \n" -"Modified by Daniel J. Peng \n" -"\n" -"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" -"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" -msgstr "" +#, fuzzy +#~ msgid "Load Playlist" +#~ msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" -#: src/tonegen/tonegen.c:105 -#, c-format -msgid "%s %.1f Hz" -msgstr "%s %.1f Hz" +#, fuzzy +#~ msgid "Save Playlist" +#~ msgstr "SelectaÈ›i Playlist-ul" -#: src/tonegen/tonegen.c:105 -msgid "Tone Generator: " -msgstr "" +#~ msgid "Variable bitrate" +#~ msgstr "Bitrate variabil" -#: src/vorbis/configure.c:31 -msgid "Override generic titles" -msgstr "" +#~ msgid "Average bitrate" +#~ msgstr "Bitrate mediu" -#: src/vorbis/configure.c:32 #, fuzzy -msgid "Title format:" -msgstr "Formatul titlului:" +#~ msgid "Show playlists" +#~ msgstr "SelectaÈ›i Playlist-ul" -#: src/vorbis/configure.c:36 #, fuzzy -msgid "Ogg Vorbis Tags" -msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" +#~ msgid "Show/hide playlists" +#~ msgstr "SelectaÈ›i Playlist-ul" -#: src/vorbis/configure.c:68 -msgid "Ogg Vorbis Audio Plugin Configuration" -msgstr "" +#, fuzzy +#~ msgid "About the Sun Driver" +#~ msgstr "Despre plugin-ul·pentru Alarmă" -#: src/vorbis/vorbis.c:549 #, fuzzy -msgid "About Ogg Vorbis Audio Plugin" -msgstr "Despre plugin-ul·Apple·Lossless·Audio" +#~ msgid "Audio control device:" +#~ msgstr "Despre plugin-ul·Apple·Lossless·Audio" -#: src/vorbis/vorbis.c:554 -msgid "" -"Ogg Vorbis Plugin by the Xiph.org Foundation\n" -"\n" -"Original code by\n" -"Tony Arcieri \n" -"Contributions from\n" -"Chris Montgomery \n" -"Peter Alm \n" -"Michael Smith \n" -"Jack Moffitt \n" -"Jorn Baayen \n" -"Haavard Kvaalen \n" -"Gian-Carlo Pascutto \n" -"Eugene Zagidullin \n" -"\n" -"Visit the Xiph.org Foundation at http://www.xiph.org/\n" -msgstr "" +#, fuzzy +#~ msgid "Buffer size (ms):" +#~ msgstr "Titlu" -#: src/vtx/about.c:14 #, fuzzy -msgid "About Vortex Player" -msgstr "Despre plugin-ul decodor MP4·AAC" +#~ msgid "Volume controls device:" +#~ msgstr "Schimbă volumul cu" -#: src/vtx/about.c:15 -msgid "" -"Vortex file format player by Sashnov Alexander \n" -"Founded on original source in_vtx.dll by Roman Sherbakov \n" -"\n" -"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" -"and other AY/YM music sites.\n" -"\n" -"Audacious implementation by Pavel Vymetalek " -msgstr "" +#, fuzzy +#~ msgid "Target volume:" +#~ msgstr "Schimbă volumul cu" -#: src/wavpack/wavpack.c:371 -#, fuzzy, c-format -msgid "Wavpack Decoder Plugin %s" -msgstr "Lista plugin-urilor _Generale" +#, fuzzy +#~ msgid "Effect strength:" +#~ msgstr "Lista plugin-urilor de _Efecte" -#: src/wavpack/wavpack.c:372 -msgid "" -"Copyright (c) 2006 William Pitcock \n" -"\n" -"Some of the plugin code was by Miles Egan\n" -"Visit the Wavpack site at http://www.wavpack.com/\n" -msgstr "" +#, fuzzy +#~ msgid "FLAC Audio Plugin " +#~ msgstr "Despre plugin-ul·Apple·Lossless·Audio" #, fuzzy #~ msgid "Audacious standard menu" @@ -5626,18 +4985,11 @@ #~ msgid "Port:" #~ msgstr "Port-ul:" -#~ msgid "Server" -#~ msgstr "Server" - #, fuzzy #~ msgid "Load List" #~ msgstr "ÃŽncarcă" #, fuzzy -#~ msgid "Save List" -#~ msgstr "Salvează" - -#, fuzzy #~ msgid "About RoarAudio Plugin" #~ msgstr "Despre plugin-ul·Apple·Lossless·Audio" @@ -5853,10 +5205,6 @@ #~ msgstr "Despre " #, fuzzy -#~ msgid "Output plugin" -#~ msgstr "Plugin-ul de ieÈ™ire curent" - -#, fuzzy #~ msgid "Throttle Output" #~ msgstr "Plugin-ul de ieÈ™ire curent" @@ -5965,10 +5313,6 @@ #~ msgstr "Implicit" #, fuzzy -#~ msgid "_Rename" -#~ msgstr "Numele FiÈ™ierului:" - -#, fuzzy #~ msgid "About Icecast-Plugin" #~ msgstr "Despre plugin-ul decodor MP4·AAC" @@ -6101,26 +5445,10 @@ #~ msgstr "Titlu: " #, fuzzy -#~ msgid "Artist:" -#~ msgstr "Artist" - -#, fuzzy -#~ msgid "Album:" -#~ msgstr "Album" - -#, fuzzy #~ msgid "Comment:" #~ msgstr "Comentariu" #, fuzzy -#~ msgid "Year:" -#~ msgstr "Anul" - -#, fuzzy -#~ msgid "Track number:" -#~ msgstr "Numărul Trackului" - -#, fuzzy #~ msgid "Genre:" #~ msgstr "Genul" @@ -6340,10 +5668,6 @@ #~ msgstr "FoloseÈ™te cursoare de mouse personalizate (oferite de skin)" #, fuzzy -#~ msgid "Track:" -#~ msgstr "InformaÈ›ii despre Track" - -#, fuzzy #~ msgid "Musepack Info" #~ msgstr "AdPlug·::·InformaÈ›ii despre fiÈ™ier" @@ -6930,14 +6254,6 @@ #~ msgstr "Album" #, fuzzy -#~ msgid "Bit rate:" -#~ msgstr "Rata de Reîmprospătare" - -#, fuzzy -#~ msgid "Length:" -#~ msgstr "Mărimea track-ului" - -#, fuzzy #~ msgid "File size:" #~ msgstr "Mărimea Buffer-ului:" diff -Nru audacious-plugins-2.4.4/po/ru.po audacious-plugins-3.2/po/ru.po --- audacious-plugins-2.4.4/po/ru.po 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/ru.po 2012-01-20 19:48:30.000000000 +0000 @@ -1,32 +1,27 @@ -# Russian translation for Audacious-plugins. -# Copyright (C) 2006, 2007 Alexander Orlov -# This file is distributed under the same license as the Audacious-plugins package. -# -# За оÑнову взÑÑ‚ перевод Ð’Ð¸Ñ‚Ð°Ð»Ð¸Ñ Ð›Ð¸Ð¿Ð°Ñ‚Ð¾Ð²Ð° Ð´Ð»Ñ BMP. -# Ð£Ð»ÑƒÑ‡ÑˆÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð° приветÑтвуютÑÑ :) +# Russian translation for Audacious Plugins +# Copyright (C) Audacious translators +# This file is distributed under the same license as the Audacious Plugins package. # +# Translators: # Alexander Orlov , 2007. +# NaiLi Rootaerc , 2012. # Sergey V. Mironov , 2009. # Sergey V. Mironov , 2010. msgid "" msgstr "" -"Project-Id-Version: audacious-plugins 1.5\n" -"Report-Msgid-Bugs-To: http://jira.atheme.org/\n" -"POT-Creation-Date: 2010-08-03 17:55-0400\n" -"PO-Revision-Date: 2010-08-22 22:00+0400\n" -"Last-Translator: Sergey V. Mironov \n" -"Language-Team: Russian \n" -"Language: ru\n" +"Project-Id-Version: Audacious Plugins\n" +"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2012-01-11 09:01-0500\n" +"PO-Revision-Date: 2012-01-13 11:36+0000\n" +"Last-Translator: NaiLi Rootaerc \n" +"Language-Team: Russian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Russian\n" -"X-Poedit-Basepath: /home/asphyx/ahinea/audacious-plugins\n" -"X-Generator: Lokalize 1.0\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Language: ru\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" -#: src/aac/libmp4.c:291 +#: src/aac/libmp4.c:256 #, c-format msgid "" "Using libfaad2-%s for decoding.\n" @@ -37,457 +32,174 @@ "Декодер FAAD2 AAC/HE-AAC/HE-AACv2/DRM (c) Nero AG, www.nero.com\n" "Copyright (c) 2005-2006 команда разработчиков Audacious" -#: src/aac/libmp4.c:296 +#: src/aac/libmp4.c:261 msgid "About MP4 AAC decoder plugin" msgstr "О модуле MP4 AAC" -#: src/adplug/adplug-xmms.cc:153 -msgid "About " -msgstr "О " - -#: src/adplug/adplug-xmms.cc:157 -msgid "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"This plugin is released under the terms and conditions of the GNU LGPL.\n" -"See http://www.gnu.org/licenses/lgpl.html for details.\n" -"\n" -"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et " -"al.\n" -"Linked AdPlug library version: " -msgstr "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"Этот модуль раÑпроÑтранÑетÑÑ Ð½Ð° уÑловиÑÑ… GNU LGPL.\n" -"Смотрите http://www.gnu.org/licenses/lgpl.html Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ " -"информации.\n" -"\n" -"Этот модуль иÑпользует библиотеку AdPlug, Copyright (C) Simon Peter.\n" -"ВерÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ AdPlug: " - -#: src/adplug/adplug-xmms.cc:234 -msgid "AdPlug :: Configuration" -msgstr "AdPlug :: ÐаÑтройка" - -#: src/adplug/adplug-xmms.cc:243 src/adplug/adplug-xmms.cc:504 -#: src/cdaudio-ng/configure.c:258 src/crystalizer/crystalizer.c:127 -#: src/echo_plugin/gui.c:122 src/jack/configure.c:146 src/null/null.c:109 -#: src/stereo_plugin/stereo.c:123 src/sun/configure.c:557 -msgid "Ok" -msgstr "ОК" - -#: src/adplug/adplug-xmms.cc:253 src/alarm/interface.c:1398 -#: src/cdaudio-ng/configure.c:263 src/crystalizer/crystalizer.c:136 -#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 -#: src/modplug/gui/interface.cxx:715 src/null/null.c:110 -#: src/stereo_plugin/stereo.c:132 src/sun/configure.c:565 -msgid "Cancel" -msgstr "Отмена" - -#: src/adplug/adplug-xmms.cc:269 src/console/configure.c:154 -#: src/modplug/gui/interface.cxx:629 src/modplug/gui/interface.cxx:888 -msgid "General" -msgstr "ОÑновной" - -#: src/adplug/adplug-xmms.cc:281 -msgid "Sound quality" -msgstr "КачеÑтво звука" - -#: src/adplug/adplug-xmms.cc:286 src/modplug/gui/interface.cxx:188 -msgid "Resolution" -msgstr "Разрешение" - -#: src/adplug/adplug-xmms.cc:288 -msgid "8bit" -msgstr "8 бит" - -#: src/adplug/adplug-xmms.cc:293 -msgid "16bit" -msgstr "16 бит" - -#: src/adplug/adplug-xmms.cc:301 src/modplug/gui/interface.cxx:219 -msgid "Channels" -msgstr "Каналы" - -#: src/adplug/adplug-xmms.cc:303 src/filewriter/mp3.c:934 -#: src/mpg123/mpg123.c:174 src/sid/xs_interface.c:301 -msgid "Mono" -msgstr "Моно" - -#: src/adplug/adplug-xmms.cc:308 src/filewriter/mp3.c:929 -#: src/modplug/gui/interface.cxx:205 src/mpg123/mpg123.c:174 -#: src/sid/xs_interface.c:308 -msgid "Stereo" -msgstr "Стерео" - -#: src/adplug/adplug-xmms.cc:312 -msgid "" -"Setting stereo is not recommended, unless you need to. This won't add any " -"stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!" -msgstr "" -"ÐаÑтройка режима Ñтерео не рекомендуетÑÑ, еÑли вам Ñто не требуетÑÑ. Эта " -"Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ðµ добавит ÑтереоÑффектов к звучанию, но увеличит загрузку " -"процеÑÑора!" - -#: src/adplug/adplug-xmms.cc:320 -msgid "Frequency" -msgstr "ЧаÑтота" - -#: src/adplug/adplug-xmms.cc:356 src/adplug/adplug-xmms.cc:560 -#: src/console/configure.c:156 src/gtkui/ui_manager.c:64 -#: src/skins/ui_manager.c:165 -msgid "Playback" -msgstr "ВоÑпроизведение" - -#: src/adplug/adplug-xmms.cc:360 -msgid "Detect songend" -msgstr "Определить конец дорожки" - -#: src/adplug/adplug-xmms.cc:364 -msgid "" -"If enabled, XMMS will detect a song's ending, stop it and advance in the " -"playlist. If disabled, XMMS won't take notice of a song's ending and loop it " -"all over again and again." -msgstr "" -"ЕÑли включено, то Audacious определит окончание дорожки, оÑтановит " -"воÑпроизведение и выведет Ñообщение в ÑпиÑке воÑпроизведениÑ. ЕÑли " -"отключено, то Audacious не Ñтанет Ñообщать об окончании дорожки и " -"воÑпроизведение продолжитÑÑ Ð¿Ð¾ кругу." - -#: src/adplug/adplug-xmms.cc:375 -msgid "Formats" -msgstr "Форматы" - -#: src/adplug/adplug-xmms.cc:382 -msgid "Format selection" -msgstr "Выбор формата" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Format" -msgstr "Формат" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Extension" -msgstr "РаÑширение" - -#: src/adplug/adplug-xmms.cc:425 -msgid "" -"Selected file types will be recognized and played back by this plugin. " -"Deselected types will be ignored to make room for other plugins to play " -"these files." -msgstr "" -"С помощью Ñтих модулей можно выбрать типы файлов Ð´Ð»Ñ Ð²Ð¾ÑпроизведениÑ. ЕÑли " -"модули не отмечены, то Ð´Ð»Ñ Ð²Ð¾ÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñтих файлов будут иÑпользоватьÑÑ " -"другие модули." - -#: src/adplug/adplug-xmms.cc:511 -msgid "AdPlug :: File Info" -msgstr "AdPlug :: Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ файле" - -#: src/adplug/adplug-xmms.cc:533 src/amidi-plug/i_configure-fluidsynth.c:348 -msgid "Filename" -msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/adplug/adplug-xmms.cc:537 src/skins/ui_playlist.c:390 -msgid "Title: " -msgstr "Ðазвание: " - -#: src/adplug/adplug-xmms.cc:538 -msgid "Author: " -msgstr "Ðвтор: " - -#: src/adplug/adplug-xmms.cc:539 -msgid "File Type: " -msgstr "Тип файла: " - -#: src/adplug/adplug-xmms.cc:540 -msgid "Subsongs: " -msgstr "Поддорожки: " - -#: src/adplug/adplug-xmms.cc:541 -msgid "Instruments: " -msgstr "ИнÑтрументы:" - -#: src/adplug/adplug-xmms.cc:546 -msgid "Orders: " -msgstr "ПорÑдки: " - -#: src/adplug/adplug-xmms.cc:547 -msgid "Patterns: " -msgstr "Ритмы: " - -#: src/adplug/adplug-xmms.cc:551 -msgid "Song" -msgstr "Дорожка" - -#: src/adplug/adplug-xmms.cc:577 -msgid "Instrument name" -msgstr "Ðазвание инÑтрумента" - -#: src/adplug/adplug-xmms.cc:619 -msgid "Song message" -msgstr "Сообщение дорожки" - -#: src/adplug/adplug-xmms.cc:641 -msgid "Subsong selection" -msgstr "Выбор поддорожки" - -#: src/adplug/adplug-xmms.cc:707 -msgid "Order: " -msgstr "ПорÑдок: " - -#: src/adplug/adplug-xmms.cc:708 -msgid "Pattern: " -msgstr "Ритм: " - -#: src/adplug/adplug-xmms.cc:710 -msgid "Row: " -msgstr "РÑд: " - -#: src/adplug/adplug-xmms.cc:711 -msgid "Speed: " -msgstr "СкороÑÑ‚ÑŒ:" - -#: src/adplug/adplug-xmms.cc:712 -msgid "Timer: " -msgstr "Таймер:" +#: src/alarm/alarm.c:312 +msgid "About Alarm" +msgstr "Про Будильник" -#: src/adplug/adplug-xmms.cc:713 src/console/configure.c:234 -#: src/sid/xs_interface.c:354 -msgid "Hz" -msgstr "Гц" - -#: src/alarm/interface.c:34 -msgid "About XMMS Alarm" -msgstr "О модуле Будильник" - -#: src/alarm/interface.c:47 -msgid "XMMS Alarm" -msgstr "Будильник" - -#: src/alarm/interface.c:56 +#: src/alarm/alarm.c:313 msgid "" -"An XMMS plugin which can be used\n" -"to start playing at a certain time.\n" +"A plugin that can be used to start playing at a certain time.\n" "\n" -"Send all complaints to:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" +"Originally written by Adam Feakin and Daniel Stodden." msgstr "" -"Модуль XMMS, который можно иÑпользовать\n" -"Ð´Ð»Ñ Ð²Ð¾ÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ¸ в заданное времÑ.\n" -"\n" -"Ð’Ñе Ð·Ð°Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Ð½Ð°Ð¿Ñ€Ð°Ð²Ð»Ñйте по адреÑу:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" - -#: src/alarm/interface.c:71 src/bluetooth/scan_gui.c:149 src/lirc/about.c:115 -#: src/modplug/gui/interface.cxx:972 src/sid/xs_about.c:214 -#: src/sid/xs_interface.c:1825 -msgid "Close" -msgstr "Закрыть" +"Модуль, который начинает и заканчивает воÑпроизведение по раÑпиÑанию.\n" +"Первоначально напиÑан Adam Feakin and Daniel Stodden." -#: src/alarm/interface.c:101 +#: src/alarm/interface.c:33 msgid "Alarm" -msgstr "Сигнал" +msgstr "Будильник" -#: src/alarm/interface.c:109 +#: src/alarm/interface.c:40 msgid "This is your wakeup call." -msgstr "Ваш Ñигнал будильника." +msgstr "Это ваш звонок будильника." -#: src/alarm/interface.c:124 src/alarm/interface.c:1389 -#: src/modplug/gui/interface.cxx:703 src/sid/xs_config.c:322 +#: src/alarm/interface.c:55 src/alarm/interface.c:1213 msgid "OK" msgstr "ОК" -#: src/alarm/interface.c:152 -msgid "Select Playlist" -msgstr "Выберите ÑпиÑок воÑпроизведениÑ" - -#: src/alarm/interface.c:196 -msgid "Sorry" -msgstr "Извините" - -#: src/alarm/interface.c:204 -msgid "Warning" -msgstr "Предупреждение" - -#: src/alarm/interface.c:213 -msgid "" -"For safety reasons the \"quiet\" time must be at least 65 seconds longer " -"than the fading time, it must also be more than 10 seconds. This basically " -"means that there is a bug in the code and until I find a way of really " -"fixing it this message will appear :)\n" -"\n" -"Your fading settings have NOT been saved\n" -"\n" -"--\n" -"Adam" -msgstr "" -"По причинам безопаÑноÑти режим \"тишина\" должен быть по крайней мере на 65 " -"Ñекунд дольше, чем Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð¸Ñ, и больше 10 Ñекунд. Это, в общем, " -"означает, что в коде программы еÑÑ‚ÑŒ ошибка. До тех пор, пока она не будет " -"найдена и уÑтранена, вы будете видеть Ñто Ñообщение :)\n" -"\n" -"Ваши наÑтройки Ð·Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð¸Ñ ÐЕ были Ñохранены\n" -"\n" -"--\n" -"Adam" - -#: src/alarm/interface.c:229 -msgid "Oh Well" -msgstr "Отлично" - -#: src/alarm/interface.c:388 +#: src/alarm/interface.c:214 msgid "Alarm Settings" -msgstr "Параметры будильника" +msgstr "ÐаÑтройки будильника" -#: src/alarm/interface.c:404 src/alarm/interface.c:576 -#: src/alarm/interface.c:948 +#: src/alarm/interface.c:229 src/alarm/interface.c:401 +#: src/alarm/interface.c:773 msgid "Time" msgstr "ВремÑ" -#: src/alarm/interface.c:445 +#: src/alarm/interface.c:270 msgid "hours" -msgstr "чаÑов" +msgstr "чаÑÑ‹" -#: src/alarm/interface.c:506 +#: src/alarm/interface.c:331 msgid "h" -msgstr "ч." +msgstr "ч" -#: src/alarm/interface.c:536 +#: src/alarm/interface.c:361 msgid "minutes" -msgstr "минут" +msgstr "минуты" -#: src/alarm/interface.c:554 +#: src/alarm/interface.c:379 msgid "Quiet after:" -msgstr "Отключить поÑле:" +msgstr "Тихо поÑле:" -#: src/alarm/interface.c:564 +#: src/alarm/interface.c:389 msgid "Alarm at (default):" -msgstr "Ð’Ñ€ÐµÐ¼Ñ Ñигнала (по умолчанию):" +msgstr "Будильник в: (по-умолчанию):" -#: src/alarm/interface.c:584 +#: src/alarm/interface.c:409 msgid "Choose the days for the alarm to come on" -msgstr "Выберите дни Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ°" +msgstr "Выберите дни Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка будильника" -#: src/alarm/interface.c:612 src/alarm/interface.c:660 -#: src/alarm/interface.c:708 src/alarm/interface.c:756 -#: src/alarm/interface.c:804 src/alarm/interface.c:852 -#: src/alarm/interface.c:900 src/OSS/configure.c:166 -#: src/skins/ui_manager.c:439 src/skins/ui_manager.c:460 +#: src/alarm/interface.c:437 src/alarm/interface.c:485 +#: src/alarm/interface.c:533 src/alarm/interface.c:581 +#: src/alarm/interface.c:629 src/alarm/interface.c:677 +#: src/alarm/interface.c:725 src/bs2b/plugin.c:198 src/OSS/configure.c:153 +#: src/skins/ui_equalizer.c:1104 src/skins/ui_manager.c:447 +#: src/skins/ui_manager.c:468 msgid "Default" msgstr "По умолчанию" -#: src/alarm/interface.c:938 +#: src/alarm/interface.c:763 msgid "Day" msgstr "День" -#: src/alarm/interface.c:958 +#: src/alarm/interface.c:783 msgid "Tuesday" msgstr "Вторник" -#: src/alarm/interface.c:969 +#: src/alarm/interface.c:794 msgid "Wednesday" msgstr "Среда" -#: src/alarm/interface.c:980 +#: src/alarm/interface.c:805 msgid "Thursday" msgstr "Четверг" -#: src/alarm/interface.c:991 +#: src/alarm/interface.c:816 msgid "Friday" msgstr "ПÑтница" -#: src/alarm/interface.c:1002 +#: src/alarm/interface.c:827 msgid "Saturday" msgstr "Суббота" -#: src/alarm/interface.c:1013 +#: src/alarm/interface.c:838 msgid "Sunday" msgstr "ВоÑкреÑенье" -#: src/alarm/interface.c:1023 +#: src/alarm/interface.c:848 msgid "Monday" msgstr "Понедельник" -#: src/alarm/interface.c:1034 +#: src/alarm/interface.c:859 msgid "Days" msgstr "Дни" -#: src/alarm/interface.c:1050 +#: src/alarm/interface.c:875 msgid "Fading" msgstr "Затухание" -#: src/alarm/interface.c:1087 src/sid/xs_interface.c:921 -#: src/sid/xs_interface.c:975 src/sid/xs_interface.c:1155 +#: src/alarm/interface.c:912 msgid "seconds" msgstr "Ñекунд" -#: src/alarm/interface.c:1095 src/alarm/interface.c:1211 -#: src/modplug/gui/interface.cxx:550 +#: src/alarm/interface.c:920 src/alarm/interface.c:1035 msgid "Volume" msgstr "ГромкоÑÑ‚ÑŒ" -#: src/alarm/interface.c:1121 +#: src/alarm/interface.c:946 msgid "Current" -msgstr "СейчаÑ" +msgstr "Текущее" -#: src/alarm/interface.c:1128 -msgid "reset to current output volume" -msgstr "ÑброÑить до текущей громкоÑти" - -#: src/alarm/interface.c:1130 +#: src/alarm/interface.c:954 msgid "Start at" -msgstr "ÐачальнаÑ" +msgstr "Ðачать в" -#: src/alarm/interface.c:1158 src/alarm/interface.c:1202 +#: src/alarm/interface.c:982 src/alarm/interface.c:1026 msgid "%" msgstr "%" -#: src/alarm/interface.c:1174 +#: src/alarm/interface.c:998 msgid "Final" -msgstr "КонечнаÑ" +msgstr "Завершить" -#: src/alarm/interface.c:1227 +#: src/alarm/interface.c:1051 msgid "Additional Command" msgstr "Дополнительные команды" -#: src/alarm/interface.c:1253 +#: src/alarm/interface.c:1077 msgid "enable" -msgstr "ЗапуÑтить" +msgstr "включить" -#: src/alarm/interface.c:1261 +#: src/alarm/interface.c:1085 msgid "Playlist (optional)" -msgstr "СпиÑок воÑпроизведениÑ" +msgstr "СпиÑок (выборочно)" -#: src/alarm/interface.c:1287 +#: src/alarm/interface.c:1111 msgid "Browse..." msgstr "Обзор..." -#: src/alarm/interface.c:1295 src/alarm/interface.c:1460 +#: src/alarm/interface.c:1119 src/alarm/interface.c:1283 msgid "Reminder" -msgstr "Ðапоминание" +msgstr "Ðапоминатель" -#: src/alarm/interface.c:1312 +#: src/alarm/interface.c:1136 msgid "Use reminder" -msgstr "Включить напоминание" +msgstr "Применить напоминатель" -#: src/alarm/interface.c:1328 src/sndstretch/sndstretch_xmms.c:394 +#: src/alarm/interface.c:1152 src/sndstretch/sndstretch_xmms.c:358 msgid "Options" msgstr "Параметры" -#: src/alarm/interface.c:1336 +#: src/alarm/interface.c:1160 msgid "What do these options mean?" -msgstr "Что означают Ñти параметры?" +msgstr "Что же Ñта Ð¾Ð¿Ñ†Ð¸Ñ Ð·Ð½Ð°Ñ‡Ð¸Ñ‚?" -#: src/alarm/interface.c:1364 +#: src/alarm/interface.c:1188 msgid "" "\n" "Time\n" @@ -543,73 +255,77 @@ msgstr "" "\n" "ВремÑ\n" -" Ð’Ñ€ÐµÐ¼Ñ Ñигнала (по умолчанию): \n" -" Ð’Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° Ñигнала будильника.\n" +" Будильник в:\n" +" Ð’Ñ€ÐµÐ¼Ñ Ð´Ð»Ñ Ð±ÑƒÐ´Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ° пришло.\n" "\n" -" Отключить поÑле: \n" -" ОÑтановить будильник поÑле указанного времени.\n" -" (еÑли диалоговое окно не закрыто)\n" +" Тишина поÑле:\n" +" ОÑтановить будильник по иÑтечении времени.\n" +" (еÑли диалог Ð¿Ñ€Ð¾Ð±ÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ Ð½Ðµ закрыт)\n" "\n" "\n" "Дни\n" " День:\n" -" Выберите дни, когда будильник активирован.\n" +" Выберите дни Ð´Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ð¸ будильника.\n" "\n" -" ВремÑ:\n" -" Выберите Ð²Ñ€ÐµÐ¼Ñ Ð±ÑƒÐ´Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ° на каждый день,\n" -" или же уÑтановите флаг \"По умолчанию\"\n" +"ВремÑ:\n" +" Выберите Ð²Ñ€ÐµÐ¼Ñ Ð´Ð»Ñ Ð±ÑƒÐ´Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ° на каждый день,\n" +" или выберите переключатель чтобы иÑпользовать Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾-умолчанию.\n" "\n" "\n" "ГромкоÑÑ‚ÑŒ\n" " Затухание:\n" -" Затухание громкоÑти от выбранного начального значениÑ\n" -" до конечного Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð·Ð° Ñтот промежуток времени.\n" +" Повышать громкоÑÑ‚ÑŒ до выбранного ÑƒÑ€Ð¾Ð²Ð½Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти\n" +" Ð´Ð»Ñ Ñтого периода времени.\n" "\n" -" ÐачальнаÑ: \n" -" ÐÐ°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾ÑÑ‚ÑŒ затуханиÑ.\n" +" Ðачать в:\n" +" Ðачать затухание Ñ Ñтого ÑƒÑ€Ð¾Ð²Ð½Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти.\n" "\n" -" КонечнаÑ: \n" -" ГромкоÑÑ‚ÑŒ, на которой оÑтанавливаетÑÑ Ð·Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð¸Ðµ. ЕÑли\n" -" Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð¸Ñ Ñ€Ð°Ð²Ð½Ð¾ 0, уÑтановите громкоÑÑ‚ÑŒ и начните\n" -" воÑпроизведение.\n" +" Завершить:\n" +" ГромкоÑÑ‚ÑŒ переÑтанет затухать в. ЕÑли времÑ\n" +" Ð·Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð¸Ñ Ñ€Ð°Ð²Ð½Ð¾ 0 тогда уÑтановить громкоÑÑ‚ÑŒ и начать\n" +" воÑпроизводить.\n" "\n" "\n" -"Параметры:\n" +"ÐаÑтройки:\n" " Дополнительные команды:\n" -" ЗапуÑк указанной команды в Ñто времÑ.\n" +" ЗапуÑтить Ñту команду во Ð²Ñ€ÐµÐ¼Ñ Ð±ÑƒÐ´Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ°.\n" "\n" -" СпиÑок воÑпроизведениÑ:\n" -" Загрузка ÑпиÑка воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñигнала\n" -" (иÑпользуетÑÑ Ñ€Ð°Ñширение .m3u). ЕÑли ÑпиÑок\n" -" воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ð½, то дорожки будут воÑпроизводитьÑÑ\n" -" из Ñтого ÑпиÑка.\n" -" Могут также быть иÑпользованы URL потоков mp3/ogg,\n" -" но загрузка ÑпиÑков воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ð¾ URL в наÑтоÑщее\n" -" Ð²Ñ€ÐµÐ¼Ñ Ð½Ðµ поддерживаетÑÑ Audacious.\n" -"\n" -" Ðапоминание:\n" -" Отображение текÑта Ð½Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸ выключении Ñигнала.\n" -" Введите текÑÑ‚ Ð½Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð² поле и уÑтановите флажок\n" -" \"Включить напоминание\".\n" +" СпиÑок:\n" +" Загрузить ÑпиÑок Ð´Ð»Ñ Ð²Ð¾ÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸Ð·\n" +" (Ñ Ñ€Ð°Ñширением .m3u). ЕÑли ÑпиÑок отÑутÑтвует,\n" +" брать текущую пеÑню.\n" +" СÑылка на mp3/ogg поток может быть\n" +" введена здеÑÑŒ, но загрузка ÑпиÑка из\n" +" ÑÑылок неполноÑтью поддерживаетÑÑ xmms.\n" +"\n" +" Ðапоминатель:\n" +" Отображать напоминание когда будильник отключён,\n" +" тип Ð½Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð² окне, еÑли хотите Ñтого\n" +" включите переключатель.\n" -#: src/alarm/interface.c:1366 src/gtkui/ui_manager.c:165 -#: src/skins/ui_manager.c:371 +#: src/alarm/interface.c:1190 src/skins/ui_manager.c:382 msgid "Help" msgstr "Справка" -#: src/alarm/interface.c:1468 +#: src/alarm/interface.c:1222 src/cdaudio-ng/configure.c:249 +#: src/crystalizer/crystalizer.c:130 src/echo_plugin/gui.c:125 +#: src/jack/configure.c:148 src/null/null.c:108 src/stereo_plugin/stereo.c:125 +msgid "Cancel" +msgstr "Отмена" + +#: src/alarm/interface.c:1290 msgid "Your reminder for today is.." -msgstr "Ðапоминание на ÑегоднÑшний день..." +msgstr "Ваше напоминание на ÑÐµÐ³Ð¾Ð´Ð½Ñ Ñто..." -#: src/alarm/interface.c:1493 +#: src/alarm/interface.c:1315 msgid "Thankyou" msgstr "СпаÑибо" -#: src/alsa/config.c:209 +#: src/alsa/config.c:210 msgid "Default PCM device" msgstr "УÑтройÑтво PCM по умолчанию" -#: src/alsa/config.c:234 +#: src/alsa/config.c:235 msgid "Default mixer device" msgstr "Микшер по умолчанию" @@ -621,7 +337,7 @@ msgid "PCM device:" msgstr "УÑтройÑтво PCM:" -#: src/alsa/config.c:447 src/OSS/configure.c:256 src/sun/configure.c:218 +#: src/alsa/config.c:447 src/OSS/configure.c:237 msgid "Mixer device:" msgstr "Микшер:" @@ -631,17 +347,17 @@ #: src/alsa/config.c:452 msgid "Work around drain hangup" -msgstr "" +msgstr "Ðе завиÑать из-за изъÑна \"drain\" в ALSA" -#: src/alsa/plugin.c:61 +#: src/alsa/plugin.c:59 msgid "About ALSA Output Plugin" msgstr "О модуле вывода ALSA" -#: src/alsa/plugin.c:83 +#: src/alsa/plugin.c:81 msgid "ALSA error" msgstr "Ошибка ALSA" -#: src/amidi-plug/amidi-plug.c:323 +#: src/amidi-plug/amidi-plug.c:326 msgid "" "You have not selected any sequencer ports for MIDI playback. You can do so " "in the MIDI plugin preferences." @@ -655,123 +371,65 @@ #: src/amidi-plug/backend-alsa/b-alsa.c:37 msgid "" -"This backend sends MIDI events to a group of user-chosen ALSA sequencer " -"ports. The ALSA sequencer interface is very versatile, it can provide ports " -"for audio cards hardware synthesizers (i.e. emu10k1) but also for software " -"synths, external devices, etc.\n" -"This backend does not produce audio, MIDI events are handled directly from " -"devices/programs behind the ALSA ports; in example, MIDI events sent to the " -"hardware synth will be directly played.\n" +"This backend sends MIDI events to a group of user-chosen ALSA sequencer ports. The ALSA sequencer interface is very versatile, it can provide ports for audio cards hardware synthesizers (i.e. emu10k1) but also for software synths, external devices, etc.\n" +"This backend does not produce audio, MIDI events are handled directly from devices/programs behind the ALSA ports; in example, MIDI events sent to the hardware synth will be directly played.\n" "Backend written by Giacomo Lozito." msgstr "" -"Этот модуль отправлÑет ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ MIDI на группу выбранных пользователем портов " -"Ñинтезатора ALSA. Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñинтезатора ALSA очень разноÑторонний, он может " -"предоÑтавлÑÑ‚ÑŒ порты Ð´Ð»Ñ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ñ‹Ñ… Ñинтезаторов (например, emu10k1), Ð´Ð»Ñ " -"программных Ñинтезаторов, Ð´Ð»Ñ Ð²Ð½ÐµÑˆÐ½Ð¸Ñ… уÑтройÑтв, и др.\n" -"Этот модуль не производит звук, ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ MIDI от уÑтройÑтв/программ " -"обрабатываютÑÑ Ð½Ð°Ð¿Ñ€Ñмую поÑле портов ALSA; например, отправленные на " -"аппаратный Ñинтезатор ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ MIDI будут Ñразу воÑпроизведены.\n" +"Этот модуль отправлÑет ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ MIDI на группу выбранных пользователем портов Ñинтезатора ALSA. Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñинтезатора ALSA очень разноÑторонний, он может предоÑтавлÑÑ‚ÑŒ порты Ð´Ð»Ñ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ñ‹Ñ… Ñинтезаторов (например, emu10k1), Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ñ‹Ñ… Ñинтезаторов, Ð´Ð»Ñ Ð²Ð½ÐµÑˆÐ½Ð¸Ñ… уÑтройÑтв, и др.\n" +"Этот модуль не производит звук, ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ MIDI от уÑтройÑтв/программ обрабатываютÑÑ Ð½Ð°Ð¿Ñ€Ñмую поÑле портов ALSA; например, отправленные на аппаратный Ñинтезатор ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ MIDI будут Ñразу воÑпроизведены.\n" "Этот внутренний модуль напиÑан Giacomo Lozito." -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:41 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 msgid "FluidSynth Backend " msgstr "Модуль FluidSynth" -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:43 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 msgid "" -"This backend produces audio by sending MIDI events to FluidSynth, a real-" -"time software synthesizer based on the SoundFont2 specification (www." -"fluidsynth.org).\n" -"Produced audio can be manipulated via player effect plugins and is processed " -"by chosen ouput plugin.\n" +"This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" "Backend written by Giacomo Lozito." msgstr "" -"Этот внутренний модуль производит звук, отправлÑÑ ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ MIDI на " -"FluidSynth, программный Ñинтезатор реального времени, оÑнованный на " -"ÑпецификациÑÑ… SoundFont2 (www.fluidsynth.org).\n" -"Полученный звук может быть изменён Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ модулей Ñффектов и обработан " -"выбранным модулем вывода.\n" +"Этот внутренний модуль производит звук, отправлÑÑ ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ MIDI на FluidSynth, программный Ñинтезатор реального времени, оÑнованный на ÑпецификациÑÑ… SoundFont2 (www.fluidsynth.org).\n" +"Полученный звук может быть изменён Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ модулей Ñффектов и обработан выбранным модулем вывода.\n" "Этот внутренний модуль напиÑан Giacomo Lozito." -#: src/amidi-plug/i_configure-alsa.c:221 +#: src/amidi-plug/i_configure-alsa.c:228 msgid "ALSA BACKEND CONFIGURATION" msgstr "ПÐРÐМЕТРЫ Ð’ÐУТРЕÐÐЕГО МОДУЛЯ ALSA" -#: src/amidi-plug/i_configure-alsa.c:326 +#: src/amidi-plug/i_configure-alsa.c:331 msgid "Port" msgstr "Порт" -#: src/amidi-plug/i_configure-alsa.c:328 +#: src/amidi-plug/i_configure-alsa.c:333 msgid "Client name" msgstr "Ðазвание клиента" -#: src/amidi-plug/i_configure-alsa.c:330 +#: src/amidi-plug/i_configure-alsa.c:335 msgid "Port name" msgstr "Ðазвание порта" -#: src/amidi-plug/i_configure-alsa.c:341 +#: src/amidi-plug/i_configure-alsa.c:346 msgid "ALSA output ports" msgstr "Порты вывода ALSA" -#: src/amidi-plug/i_configure-alsa.c:394 +#: src/amidi-plug/i_configure-alsa.c:399 msgid "Soundcard: " msgstr "Ð—Ð²ÑƒÐºÐ¾Ð²Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð°: " -#: src/amidi-plug/i_configure-alsa.c:396 +#: src/amidi-plug/i_configure-alsa.c:401 msgid "Mixer control: " msgstr "Выбор микшера: " -#: src/amidi-plug/i_configure-alsa.c:408 +#: src/amidi-plug/i_configure-alsa.c:413 msgid "Mixer settings" msgstr "Параметры микшера" -#: src/amidi-plug/i_configure-alsa.c:421 -msgid "" -"* Select ALSA output ports *\n" -"MIDI events will be sent to the ports selected here. In example, if your " -"audio card provides a hardware synth and you want to play MIDI with it, " -"you'll probably want to select the wavetable synthesizer ports." -msgstr "" -"* Выберите порты вывода ALSA *\n" -"Ð¡Ð¾Ð±Ñ‹Ñ‚Ð¸Ñ MIDI будут направлены в порты, указанные здеÑÑŒ. Ðапример, еÑли у " -"вашей звуковой карты еÑÑ‚ÑŒ аппаратный Ñинтезатор, и вы хотите проиграть " -"MIDI Ñ ÐµÐ³Ð¾ помощью, то вам необходимо выбрать порты Ñинтезатора." - -#: src/amidi-plug/i_configure-alsa.c:426 -msgid "" -"* Select ALSA mixer card *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volumeslider will " -"manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" -"* Выберите микшерную карту ALSA *\n" -"Внутренний модуль ALSA выводит звук напрÑмую через ALSA, он не иÑпользует " -"модули Ñффектов и модули вывода проигрывателÑ. Во Ð²Ñ€ÐµÐ¼Ñ Ð²Ð¾ÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ " -"регулÑтор громкоÑти Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±ÑƒÐ´ÐµÑ‚ управлÑÑ‚ÑŒ микшером, выбранным вами " -"здеÑÑŒ. ЕÑли вы иÑпользуете порты Ñинтезатора, то, вероÑтно, захотите выбрать " -"регулÑтор Synth." - -#: src/amidi-plug/i_configure-alsa.c:433 -msgid "" -"* Select ALSA mixer control *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volume slider " -"will manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" -"* Выберите уÑтройÑтво микшера ALSA *\n" -"Внутренний модуль ALSA выводит звук напрÑмую через ALSA, он не иÑпользует " -"модули Ñффектов и вывода из проигрывателÑ. Во Ð²Ñ€ÐµÐ¼Ñ Ð²Ð¾ÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ " -"регулÑтор громкоÑти Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±ÑƒÐ´ÐµÑ‚ управлÑÑ‚ÑŒ микшером, который вы " -"выберете здеÑÑŒ. ЕÑли вы иÑпользуете порты Ñинтезатора, то, вероÑтно, " -"захотите выбрать регулÑтор Synth." - -#: src/amidi-plug/i_configure-alsa.c:444 +#: src/amidi-plug/i_configure-alsa.c:429 msgid "ALSA Backend not loaded or not available" msgstr "Внутренний модуль ALSA не загружен или недоÑтупен." -#: src/amidi-plug/i_configure-alsa.c:463 +#: src/amidi-plug/i_configure-alsa.c:448 msgid "" "ALSA\n" "backend" @@ -779,151 +437,51 @@ "Модуль\n" "ALSA" -#: src/amidi-plug/i_configure-ap.c:56 +#: src/amidi-plug/i_configure-ap.c:59 msgid "AMIDI-Plug - backend information" msgstr "AMIDI-Plug - Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ внутреннем модуле" -#: src/amidi-plug/i_configure-ap.c:194 +#: src/amidi-plug/i_configure-ap.c:196 msgid "AMIDI-PLUG PREFERENCES" msgstr "ПÐРÐМЕТРЫ Ð’ÐУТРЕÐÐЕГО МОДУЛЯ AMIDI-PLUG" -#: src/amidi-plug/i_configure-ap.c:221 +#: src/amidi-plug/i_configure-ap.c:223 msgid "Backend selection" msgstr "Выбор внутреннего модулÑ" -#: src/amidi-plug/i_configure-ap.c:225 +#: src/amidi-plug/i_configure-ap.c:227 msgid "Available backends" msgstr "ДоÑтупные внутренние модули" -#: src/amidi-plug/i_configure-ap.c:255 +#: src/amidi-plug/i_configure-ap.c:257 msgid "Playback settings" msgstr "Параметры воÑпроизведениÑ" -#: src/amidi-plug/i_configure-ap.c:260 +#: src/amidi-plug/i_configure-ap.c:262 msgid "Transpose: " msgstr "ТранÑпонирование: " -#: src/amidi-plug/i_configure-ap.c:269 +#: src/amidi-plug/i_configure-ap.c:271 msgid "Drum shift: " msgstr "Смещение ударных: " -#: src/amidi-plug/i_configure-ap.c:287 +#: src/amidi-plug/i_configure-ap.c:289 msgid "Advanced settings" msgstr "Дополнительные параметры" -#: src/amidi-plug/i_configure-ap.c:291 +#: src/amidi-plug/i_configure-ap.c:293 msgid "pre-calculate length of MIDI files in playlist" msgstr "ВычиÑлÑÑ‚ÑŒ длительноÑÑ‚ÑŒ MIDI-файлов в ÑпиÑке" -#: src/amidi-plug/i_configure-ap.c:296 +#: src/amidi-plug/i_configure-ap.c:298 msgid "extract comments from MIDI file (if available)" msgstr "Считывать комментарии из MIDI-файлов (еÑли доÑтупны)" -#: src/amidi-plug/i_configure-ap.c:301 +#: src/amidi-plug/i_configure-ap.c:303 msgid "extract lyrics from MIDI file (if available)" msgstr "Считывать текÑÑ‚Ñ‹ из MIDI-файлов (еÑли доÑтупны)" -#: src/amidi-plug/i_configure-ap.c:320 -msgid "" -"* Backend selection *\n" -"AMIDI-Plug works with backends, in a modular fashion; here you should select " -"your backend; that is, the way MIDI events are going to be handled and " -"played.\n" -"If you have a hardware synthesizer on your audio card, and ALSA supports it, " -"you'll want to use the ALSA backend. It can also be used with anything that " -"provides an interface to the ALSA sequencer, including software synths or " -"external devices.\n" -"If you want to rely on a software synthesizer and/or want to pipe audio into " -"effect and output plugins of the player you'll want to use the good " -"FluidSynth backend.\n" -"Press the info button to read specific information about each backend." -msgstr "" -"* Выбор внутреннего Ð¼Ð¾Ð´ÑƒÐ»Ñ *\n" -"AMIDI-Plug работает в модульном режиме; здеÑÑŒ вам необходимо выбрать " -"внутренний модуль, то еÑÑ‚ÑŒ, ÑпоÑоб, Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ которого ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ MIDI будут " -"обрабатыватьÑÑ Ð¸ проигрыватьÑÑ.\n" -"ЕÑли ваша Ð·Ð²ÑƒÐºÐ¾Ð²Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð° оÑнащена аппаратным Ñинтезатором и ALSA его " -"поддерживает, то лучше выбрать модуль ALSA. Его также можно иÑпользовать Ð´Ð»Ñ " -"вÑего, что поддерживает Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñинтезатора ALSA, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ñ‹Ðµ " -"Ñинтезаторы или внешние уÑтройÑтва.\n" -"ЕÑли вы хотите иÑпользовать программный Ñинтезатор и/или пропуÑкать звук " -"через модули Ñффектов и вывода, то вам Ñледует иÑпользовать хороший модуль " -"FluidSynth." - -#: src/amidi-plug/i_configure-ap.c:331 -msgid "" -"* Transpose function *\n" -"This option allows you to play the midi file transposed in a different key, " -"by shifting of the desired number of semitones all its notes (excepting " -"those on midi channel 10, reserved for percussions). Especially useful if " -"you wish to sing or play along with another instrument." -msgstr "" -"* ТранÑпонирование *\n" -"Этот параметр позволÑет воÑпроизводить MIDI-файл, переложив его в другой " -"Ñ€Ñд, ÑÐ¼ÐµÑ‰Ð°Ñ Ð½ÑƒÐ¶Ð½Ð¾Ðµ чиÑло полутонов и их нот (за иÑключением тех, которые " -"находÑÑ‚ÑÑ Ð² 10 канале, который зарезервирован Ð´Ð»Ñ ÑƒÐ´Ð°Ñ€Ð½Ñ‹Ñ…). Это удобно, еÑли " -"вы хотите петь или играть вмеÑте Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼ инÑтрументом." - -#: src/amidi-plug/i_configure-ap.c:337 -msgid "" -"* Drumshift function *\n" -"This option allows you to shift notes on midi channel 10 (the standard " -"percussions channel) of the desired number of semitones. This results in " -"different drumset and percussions being used during midi playback, so if you " -"wish to enhance (or reduce, or alter) percussion sounds, try to play with " -"this value." -msgstr "" -"* Смещение ударных *\n" -"Этот параметр позволÑет вам ÑмеÑтить ноты на 10 канале (Ñтандартный канал " -"Ð´Ð»Ñ ÑƒÐ´Ð°Ñ€Ð½Ñ‹Ñ…) на желаемое чиÑло полутонов. Ð’ результате во Ð²Ñ€ÐµÐ¼Ñ " -"воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ иÑпользован другой Ñ€Ñд ударных, так что еÑли вы хотите " -"уÑилить (оÑлабить, или изменить) звуки ударных, попробуйте " -"поÑкÑпериментировать Ñ Ñтим значением." - -#: src/amidi-plug/i_configure-ap.c:344 -msgid "" -"* Pre-calculate MIDI length *\n" -"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as " -"soon as the player requests it, instead of doing that only when the MIDI " -"file is being played. In example, MIDI length will be calculated straight " -"after adding MIDI files in a playlist. Disable this option if you want " -"faster playlist loading (when a lot of MIDI files are added), enable it to " -"display more information in the playlist straight after loading." -msgstr "" -"* ВычиÑлÑÑ‚ÑŒ длительноÑÑ‚ÑŒ MIDI *\n" -"ЕÑли Ñтот параметр включен, AMIDI-Plug будет вычиÑлÑÑ‚ÑŒ длительноÑÑ‚ÑŒ MIDI-" -"файлов Ñразу же по запроÑу проигрывателÑ, вмеÑто того, чтобы дожидатьÑÑ " -"Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°. Ðапример, длительноÑÑ‚ÑŒ MIDI будет вычиÑлена " -"Ñразу при добавлении MIDI файла в ÑпиÑок. Отключите Ñтот параметр, еÑли вы " -"хотите уÑкорить загрузку ÑпиÑка воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ (когда добавлено много MIDI " -"файлов), или же включите его Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ð° большей информации в ÑпиÑке Ñразу " -"поÑле загрузки." - -#: src/amidi-plug/i_configure-ap.c:353 -msgid "" -"* Extract comments from MIDI files *\n" -"Some MIDI files contain text comments (author, copyright, instrument notes, " -"etc.). If this option is enabled, AMIDI-Plug will extract and display " -"comments (if available) in the file information dialog." -msgstr "" -"* Считывать комментарии из MIDI-файлов *\n" -"Ðекоторые MIDI файлы Ñодержат текÑтовые комментарии (автор, авторÑкое право, " -"ноты, и др.). ЕÑли Ñтот параметр включен, AMIDI-Plug будет Ñчитывать и " -"показывать комментарии (еÑли доÑтупны) в информационном окне." - -#: src/amidi-plug/i_configure-ap.c:358 -msgid "" -"* Extract lyrics from MIDI files *\n" -"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug " -"will extract and display song lyrics (if available) in the file information " -"dialog." -msgstr "" -"* Считывать текÑÑ‚Ñ‹ из MIDI-файлов *\n" -"Ðекоторые MIDI-файлы Ñодержат текÑÑ‚Ñ‹ пеÑен. ЕÑли Ñтот параметр включен, " -"AMIDI-Plug будет Ñчитывать и показывать текÑÑ‚Ñ‹ пеÑен (еÑли доÑтупны) в " -"информационном окне." - -#: src/amidi-plug/i_configure-ap.c:375 +#: src/amidi-plug/i_configure-ap.c:333 msgid "" "AMIDI\n" "Plug" @@ -931,230 +489,113 @@ "AMIDI\n" "Plug" -#: src/amidi-plug/i_configure.c:73 +#: src/amidi-plug/i_configure.c:76 msgid "AMIDI-Plug - select file" msgstr "AMIDI-Plug - выбор файла" -#: src/amidi-plug/i_configure.c:126 +#: src/amidi-plug/i_configure.c:129 msgid "AMIDI-Plug - configuration" msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ AMIDI-Plug" -#: src/amidi-plug/i_configure-fluidsynth.c:52 +#: src/amidi-plug/i_configure-fluidsynth.c:55 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - выбор SoundFont файла" -#: src/amidi-plug/i_configure-fluidsynth.c:268 +#: src/amidi-plug/i_configure-fluidsynth.c:270 msgid "FLUIDSYNTH BACKEND CONFIGURATION" msgstr "ПÐРÐМЕТРЫ Ð’ÐУТРЕÐÐЕГО МОДУЛЯ FLUIDSYNTH" -#: src/amidi-plug/i_configure-fluidsynth.c:316 +#: src/amidi-plug/i_configure-fluidsynth.c:313 msgid "SoundFont settings" msgstr "Параметры SoundFont" -#: src/amidi-plug/i_configure-fluidsynth.c:352 +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 msgid "Size (bytes)" msgstr "Размер (байт)" -#: src/amidi-plug/i_configure-fluidsynth.c:401 +#: src/amidi-plug/i_configure-fluidsynth.c:398 msgid "Load SF on player start" msgstr "Загружать SF при запуÑке проигрывателÑ" -#: src/amidi-plug/i_configure-fluidsynth.c:405 +#: src/amidi-plug/i_configure-fluidsynth.c:402 msgid "Load SF on first midifile play" msgstr "Загружать SF при воÑпроизведении первого MIDI-файла" -#: src/amidi-plug/i_configure-fluidsynth.c:420 +#: src/amidi-plug/i_configure-fluidsynth.c:417 msgid "Synthesizer settings" msgstr "Параметры Ñинтезатора" -#: src/amidi-plug/i_configure-fluidsynth.c:429 +#: src/amidi-plug/i_configure-fluidsynth.c:426 msgid "gain" msgstr "уÑиление" -#: src/amidi-plug/i_configure-fluidsynth.c:435 -#: src/amidi-plug/i_configure-fluidsynth.c:463 -#: src/amidi-plug/i_configure-fluidsynth.c:491 -#: src/amidi-plug/i_configure-fluidsynth.c:522 +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 msgid "use default" msgstr "по умолчанию" -#: src/amidi-plug/i_configure-fluidsynth.c:438 -#: src/amidi-plug/i_configure-fluidsynth.c:466 +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 msgid "value:" msgstr "значение:" -#: src/amidi-plug/i_configure-fluidsynth.c:457 +#: src/amidi-plug/i_configure-fluidsynth.c:454 msgid "poliphony" msgstr "полифониÑ" -#: src/amidi-plug/i_configure-fluidsynth.c:485 +#: src/amidi-plug/i_configure-fluidsynth.c:482 msgid "reverb" msgstr "реверберациÑ" -#: src/amidi-plug/i_configure-fluidsynth.c:494 -#: src/amidi-plug/i_configure-fluidsynth.c:525 +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 msgid "yes" msgstr "да" -#: src/amidi-plug/i_configure-fluidsynth.c:496 -#: src/amidi-plug/i_configure-fluidsynth.c:527 +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 msgid "no" msgstr "нет" -#: src/amidi-plug/i_configure-fluidsynth.c:516 +#: src/amidi-plug/i_configure-fluidsynth.c:513 msgid "chorus" msgstr "хор" -#: src/amidi-plug/i_configure-fluidsynth.c:547 +#: src/amidi-plug/i_configure-fluidsynth.c:544 msgid "sample rate" msgstr "чаÑтота" -#: src/amidi-plug/i_configure-fluidsynth.c:553 +#: src/amidi-plug/i_configure-fluidsynth.c:550 msgid "22050 Hz " msgstr "22050 Гц" -#: src/amidi-plug/i_configure-fluidsynth.c:556 +#: src/amidi-plug/i_configure-fluidsynth.c:553 msgid "44100 Hz " msgstr "44100 Гц" -#: src/amidi-plug/i_configure-fluidsynth.c:559 +#: src/amidi-plug/i_configure-fluidsynth.c:556 msgid "96000 Hz " msgstr "96000 Гц" -#: src/amidi-plug/i_configure-fluidsynth.c:562 +#: src/amidi-plug/i_configure-fluidsynth.c:559 msgid "custom " msgstr "Ð´Ñ€ÑƒÐ³Ð°Ñ " -#: src/amidi-plug/i_configure-fluidsynth.c:571 +#: src/amidi-plug/i_configure-fluidsynth.c:568 msgid "Hz " msgstr "Гц" #: src/amidi-plug/i_configure-fluidsynth.c:621 -msgid "" -"* Select SoundFont files *\n" -"In order to play MIDI with FluidSynth, you need to specify at least one " -"valid SoundFont file here (use absolute paths). The loading order is from " -"the top (first) to the bottom (last)." -msgstr "" -"* Выбор файлов SoundFont *\n" -"Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы воÑпроизводить MIDI Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ FluidSynth, нужно указать " -"здеÑÑŒ по крайней мере один рабочий SoundFont файл (указав абÑолютный путь к " -"нему). Файлы загружаютÑÑ Ñверху (Ñ Ð¿ÐµÑ€Ð²Ð¾Ð³Ð¾) вниз (до поÑледнего)." - -#: src/amidi-plug/i_configure-fluidsynth.c:626 -msgid "" -"* Load SoundFont on player start *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" -"* Загружать SoundFont при запуÑке Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ñ‚ÐµÐ»Ñ *\n" -"Ð’ завиÑимоÑти от ÑкороÑти вашей ÑиÑтемы, загрузка SoundFont в FluidSynth " -"может занимать до неÑкольких Ñекунд. Эта задача выполнÑетÑÑ Ð¾Ð´Ð¸Ð½ раз " -"(SoundFont оÑтаетÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½Ð½Ñ‹Ð¼, пока не изменитÑÑ, или не будет выгружен) " -"во Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ð¿ÑƒÑка проигрывателÑ, или перед воÑпроизведением MIDI файла " -"(поÑледнее лучше, еÑли вы иÑпользуете проигрыватель не только Ð´Ð»Ñ " -"проÑÐ»ÑƒÑˆÐ¸Ð²Ð°Ð½Ð¸Ñ MIDI-файлов)." - -#: src/amidi-plug/i_configure-fluidsynth.c:634 -msgid "" -"* Load SoundFont on first midifile play *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" -"* Загружать SoundFont при воÑпроизведении первого MIDI-файла *\n" -"Ð’ завиÑимоÑти от ÑкороÑти вашей ÑиÑтемы, загрузка SoundFont в FluidSynth " -"может занимать до неÑкольких Ñекунд. Эта задача выполнÑетÑÑ Ð¾Ð´Ð¸Ð½ раз " -"(SoundFont оÑтаетÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½Ð½Ñ‹Ð¼, пока не изменитÑÑ, или не будет выгружен) " -"во Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ð¿ÑƒÑка проигрывателÑ, или перед воÑпроизведением MIDI файла " -"(поÑледнее лучше, еÑли вы иÑпользуете проигрыватель не только Ð´Ð»Ñ " -"проÑÐ»ÑƒÑˆÐ¸Ð²Ð°Ð½Ð¸Ñ MIDI-файлов)." - -#: src/amidi-plug/i_configure-fluidsynth.c:642 -msgid "" -"* Synthesizer gain *\n" -"From FluidSynth docs: the gain is applied to the final or master output of " -"the synthesizer; it is set to a low value by default to avoid the saturation " -"of the output when random MIDI files are played." -msgstr "" -"* УÑиление Ñинтезатора *\n" -"Из документации FluidSynth: уÑиление применÑетÑÑ Ð½Ð° поÑледнем или на " -"оÑновном выводе Ñинтезатора; по умолчанию уÑтановлено в низкое значение, " -"чтобы избежать иÑкажений при воÑпроизведении разных MIDI-файлов." - -#: src/amidi-plug/i_configure-fluidsynth.c:647 -msgid "" -"* Synthesizer polyphony *\n" -"From FluidSynth docs: the polyphony defines how many voices can be played in " -"parallel; the number of voices is not necessarily equivalent to the number " -"of notes played simultaneously; indeed, when a note is struck on a specific " -"MIDI channel, the preset on that channel may create several voices, for " -"example, one for the left audio channel and one for the right audio " -"channels; the number of voices activated depends on the number of instrument " -"zones that fall in the correspond to the velocity and key of the played note." -msgstr "" -"* ÐŸÐ¾Ð»Ð¸Ñ„Ð¾Ð½Ð¸Ñ Ñинтезатора *\n" -"Из документации FluidSynth: Ð¿Ð¾Ð»Ð¸Ñ„Ð¾Ð½Ð¸Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÑÑ‚, Ñколько голоÑов могут " -"играть одновременно; чиÑло голоÑов не обÑзательно ÑоответÑтвует количеÑтву " -"воÑпроизводимых одновременно нот; на Ñамом деле, когда нота Ñтоит на каком-" -"то канале MIDI, Ñинтезатор Ð´Ð»Ñ Ñтого канала может Ñоздать неÑколько голоÑов, " -"например, один Ð´Ð»Ñ Ð»ÐµÐ²Ð¾Ð³Ð¾ аудио канала и один Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²Ð¾Ð³Ð¾. КоличеÑтво " -"активированных голоÑов завиÑит от количеÑтва инÑтрументальных зон, " -"ÑоотноÑимых Ñо ÑкороÑтью Ð½Ð°Ð¶Ð°Ñ‚Ð¸Ñ Ð¸ ключом проигрываемой ноты." - -#: src/amidi-plug/i_configure-fluidsynth.c:657 -#: src/amidi-plug/i_configure-fluidsynth.c:663 -msgid "" -"* Synthesizer reverb *\n" -"From FluidSynth docs: when set to \"yes\" the reverb effects module is " -"activated; note that when the reverb module is active, the amount of signal " -"sent to the reverb module depends on the \"reverb send\" generator defined " -"in the SoundFont." -msgstr "" -"* Ð ÐµÐ²ÐµÑ€Ð±ÐµÑ€Ð°Ñ†Ð¸Ñ Ñинтезатора *\n" -"Из документации FluidSynth: когда уÑтановлено в \"да\", включаетÑÑ Ð¼Ð¾Ð´ÑƒÐ»ÑŒ " -"реверберации; заметьте, что когда модуль реверберации включен, количеÑтво " -"Ñигналов, отправлÑемых на него, завиÑит от параметра \"reverb send\" " -"уÑтановленного в SoundFont." - -#: src/amidi-plug/i_configure-fluidsynth.c:669 -#: src/amidi-plug/i_configure-fluidsynth.c:675 -msgid "" -"* Synthesizer chorus *\n" -"From FluidSynth docs: when set to \"yes\" the chorus effects module is " -"activated; note that when the chorus module is active, the amount of signal " -"sent to the chorus module depends on the \"chorus send\" generator defined " -"in the SoundFont." -msgstr "" -"* Хор Ñинтезатора *\n" -"Из документации FluidSynth: когда уÑтановлено в \"да\", включаетÑÑ Ð¼Ð¾Ð´ÑƒÐ»ÑŒ " -"хора; заметьте, что когда модуль хора включен, количеÑтво Ñигналов, " -"отправлÑемых на него, завиÑит от параметра \"chorus send\" уÑтановленного в " -"SoundFont." - -#: src/amidi-plug/i_configure-fluidsynth.c:681 -#: src/amidi-plug/i_configure-fluidsynth.c:685 -#: src/amidi-plug/i_configure-fluidsynth.c:689 -#: src/amidi-plug/i_configure-fluidsynth.c:693 -msgid "" -"* Synthesizer samplerate *\n" -"The sample rate of the audio generated by the synthesizer. You can also " -"specify a custom value in the interval 22050Hz-96000Hz." -msgstr "" -"* ЧаÑтота Ñинтезатора *\n" -"ЧаÑтота звука, который генерирует Ñинтезатор. Можно также указать другое " -"значение в интервале 22050-96000 Гц." - -#: src/amidi-plug/i_configure-fluidsynth.c:701 msgid "FluidSynth Backend not loaded or not available" msgstr "Внутренний модуль FluidSynth не загружен или недоÑтупен" -#: src/amidi-plug/i_configure-fluidsynth.c:720 +#: src/amidi-plug/i_configure-fluidsynth.c:640 msgid "" "FluidSynth\n" "backend" @@ -1178,8 +619,7 @@ "Модуль\n" "TiMidity" -#: src/amidi-plug/i_fileinfo.c:169 src/bluetooth/gui.c:271 -#: src/sid/xs_interface.c:1769 +#: src/amidi-plug/i_fileinfo.c:169 msgid "Name:" msgstr "ИмÑ:" @@ -1305,242 +745,239 @@ msgid "None" msgstr "Ðет" -#: src/aosd/aosd_trigger.c:77 +#: src/aosd/aosd_trigger.c:78 msgid "Playback Start" msgstr "Ðачало воÑпроизведениÑ" -#: src/aosd/aosd_trigger.c:78 +#: src/aosd/aosd_trigger.c:79 msgid "Triggers OSD when a playlist entry is played." msgstr "Показать OSD в начале воÑпроизведениÑ." -#: src/aosd/aosd_trigger.c:82 +#: src/aosd/aosd_trigger.c:83 msgid "Title Change" msgstr "Изменение названиÑ" -#: src/aosd/aosd_trigger.c:83 +#: src/aosd/aosd_trigger.c:84 msgid "" "Triggers OSD when, during playback, the song title changes but the filename " "is the same. This is mostly useful to display title changes in internet " "streams." msgstr "" "Показать OSD, еÑли в процеÑÑе воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¼ÐµÐ½ÑетÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ, но Ð¸Ð¼Ñ " -"файла оÑтаётÑÑ Ð¿Ñ€ÐµÐ¶Ð½Ð¸Ð¼. Полезно Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ð¹ при воÑпроизведении " -"из Ñети." +"файла оÑтаётÑÑ Ð¿Ñ€ÐµÐ¶Ð½Ð¸Ð¼. Полезно Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ð¹ при воÑпроизведении" +" из Ñети." -#: src/aosd/aosd_trigger.c:89 +#: src/aosd/aosd_trigger.c:90 msgid "Volume Change" msgstr "Изменение громкоÑти" -#: src/aosd/aosd_trigger.c:90 +#: src/aosd/aosd_trigger.c:91 msgid "Triggers OSD when volume is changed." msgstr "Показать OSD когда менÑетÑÑ Ð³Ñ€Ð¾Ð¼ÐºÐ¾ÑÑ‚ÑŒ." -#: src/aosd/aosd_trigger.c:94 +#: src/aosd/aosd_trigger.c:95 msgid "Pause On" msgstr "Пауза вкл." -#: src/aosd/aosd_trigger.c:95 +#: src/aosd/aosd_trigger.c:96 msgid "Triggers OSD when playback is paused." msgstr "Показать OSD, когда воÑпроизведение приоÑтанавливаетÑÑ." -#: src/aosd/aosd_trigger.c:99 +#: src/aosd/aosd_trigger.c:100 msgid "Pause Off" msgstr "Пауза выкл." -#: src/aosd/aosd_trigger.c:100 +#: src/aosd/aosd_trigger.c:101 msgid "Triggers OSD when playback is unpaused." msgstr "Показать OSD, когда воÑпроизведение возобновлÑетÑÑ." -#: src/aosd/aosd_ui.c:168 +#: src/aosd/aosd_ui.c:179 msgid "Placement" msgstr "РаÑположение" -#: src/aosd/aosd_ui.c:202 +#: src/aosd/aosd_ui.c:218 msgid "Relative X offset:" msgstr "Смещение по оÑи X:" -#: src/aosd/aosd_ui.c:211 +#: src/aosd/aosd_ui.c:227 msgid "Relative Y offset:" msgstr "Смещение по оÑи Y:" -#: src/aosd/aosd_ui.c:220 +#: src/aosd/aosd_ui.c:236 msgid "Max OSD width:" msgstr "МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð° OSD:" -#: src/aosd/aosd_ui.c:233 +#: src/aosd/aosd_ui.c:249 msgid "Multi-Monitor options" msgstr "Параметры Ð´Ð»Ñ ÑиÑтем Ñ Ð½ÐµÑколькими мониторами" -#: src/aosd/aosd_ui.c:237 +#: src/aosd/aosd_ui.c:253 msgid "Display OSD using:" msgstr "Показать OSD:" -#: src/aosd/aosd_ui.c:239 +#: src/aosd/aosd_ui.c:264 msgid "all monitors" msgstr "на вÑех мониторах" -#: src/aosd/aosd_ui.c:242 +#: src/aosd/aosd_ui.c:267 #, c-format msgid "monitor %i" msgstr "на мониторе %i" -#: src/aosd/aosd_ui.c:295 +#: src/aosd/aosd_ui.c:322 msgid "Timing (ms)" msgstr "Ð’Ñ€ÐµÐ¼Ñ (мÑ)" -#: src/aosd/aosd_ui.c:300 +#: src/aosd/aosd_ui.c:327 msgid "Display:" msgstr "отображениÑ:" -#: src/aosd/aosd_ui.c:305 +#: src/aosd/aosd_ui.c:332 msgid "Fade in:" msgstr "поÑвлениÑ:" -#: src/aosd/aosd_ui.c:310 +#: src/aosd/aosd_ui.c:337 msgid "Fade out:" msgstr "затуханиÑ:" -#: src/aosd/aosd_ui.c:391 +#: src/aosd/aosd_ui.c:418 msgid "Fonts" msgstr "Шрифты" -#: src/aosd/aosd_ui.c:399 +#: src/aosd/aosd_ui.c:426 #, c-format msgid "Font %i:" msgstr "Шрифт %i:" -#: src/aosd/aosd_ui.c:416 +#: src/aosd/aosd_ui.c:443 msgid "Shadow" msgstr "Тень" -#: src/aosd/aosd_ui.c:451 +#: src/aosd/aosd_ui.c:478 msgid "Internationalization" msgstr "Поддержка меÑтных Ñзыков" -#: src/aosd/aosd_ui.c:457 +#: src/aosd/aosd_ui.c:484 msgid "Disable UTF-8 conversion of text (in aosd)" msgstr "Отключить преобразование текÑта в UTF-8" -#: src/aosd/aosd_ui.c:475 +#: src/aosd/aosd_ui.c:502 msgid "Select Skin File" msgstr "Выберите файл ÑтилÑ" -#: src/aosd/aosd_ui.c:586 +#: src/aosd/aosd_ui.c:613 msgid "Render Style" msgstr "Стиль отображениÑ" -#: src/aosd/aosd_ui.c:602 +#: src/aosd/aosd_ui.c:629 msgid "Colors" msgstr "Цвета" -#: src/aosd/aosd_ui.c:615 +#: src/aosd/aosd_ui.c:642 #, c-format msgid "Color %i:" msgstr "Цвет %i:" -#: src/aosd/aosd_ui.c:635 +#: src/aosd/aosd_ui.c:662 msgid "Custom Skin" msgstr "Другой Ñтиль" -#: src/aosd/aosd_ui.c:641 +#: src/aosd/aosd_ui.c:668 msgid "Skin file:" msgstr "Файл ÑтилÑ:" -#: src/aosd/aosd_ui.c:644 src/sid/xs_interface.c:1044 -#: src/sid/xs_interface.c:1236 src/sid/xs_interface.c:1292 +#: src/aosd/aosd_ui.c:671 msgid "Browse" msgstr "Обзор" -#: src/aosd/aosd_ui.c:746 +#: src/aosd/aosd_ui.c:773 msgid "Enable trigger" msgstr "Включить Ñобытие" -#: src/aosd/aosd_ui.c:773 +#: src/aosd/aosd_ui.c:800 msgid "Event" msgstr "Событие" -#: src/aosd/aosd_ui.c:801 +#: src/aosd/aosd_ui.c:828 msgid "Composite manager detected" msgstr "Ðайден композитный менеджер" -#: src/aosd/aosd_ui.c:808 +#: src/aosd/aosd_ui.c:835 msgid "" "Composite manager not detected;\n" -"unless you know that you have one running, please activate a composite " -"manager otherwise the OSD won't work properly" +"unless you know that you have one running, please activate a composite manager otherwise the OSD won't work properly" msgstr "" "Композитный менеджер не найден;\n" "ПожалуйÑта, запуÑтите композитный менеджер; в противном Ñлучае\n" "OSD не будет работать корректно." -#: src/aosd/aosd_ui.c:816 +#: src/aosd/aosd_ui.c:843 msgid "Composite manager not required for fake transparency" msgstr "" "Ð”Ð»Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° \"Ð˜Ð¼Ð¸Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð·Ñ€Ð°Ñ‡Ð½Ð¾ÑÑ‚ÑŒ\" композитный менеджер не требуетÑÑ." -#: src/aosd/aosd_ui.c:854 +#: src/aosd/aosd_ui.c:881 msgid "Transparency" msgstr "ПрозрачноÑÑ‚ÑŒ" -#: src/aosd/aosd_ui.c:860 +#: src/aosd/aosd_ui.c:887 msgid "Fake transparency" msgstr "Ð˜Ð¼Ð¸Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð·Ñ€Ð°Ñ‡Ð½Ð¾ÑÑ‚ÑŒ" -#: src/aosd/aosd_ui.c:862 +#: src/aosd/aosd_ui.c:889 msgid "Real transparency (requires X Composite Ext.)" msgstr "ÐаÑтоÑÑ‰Ð°Ñ Ð¿Ñ€Ð¾Ð·Ñ€Ð°Ñ‡Ð½Ð¾ÑÑ‚ÑŒ (требуетÑÑ Ñ€Ð°Ñширение X Composite)" -#: src/aosd/aosd_ui.c:904 +#: src/aosd/aosd_ui.c:931 msgid "Composite extension not loaded" msgstr "РаÑширение X Composite не загружено" -#: src/aosd/aosd_ui.c:912 +#: src/aosd/aosd_ui.c:939 msgid "Composite extension not available" msgstr "РаÑширение X Composite недоÑтупно" -#: src/aosd/aosd_ui.c:931 +#: src/aosd/aosd_ui.c:958 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.c:1012 +#: src/aosd/aosd_ui.c:1039 msgid "Audacious OSD - configuration" msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ Audacious OSD" -#: src/aosd/aosd_ui.c:1033 +#: src/aosd/aosd_ui.c:1060 msgid "Test" msgstr "Проверить" -#: src/aosd/aosd_ui.c:1048 +#: src/aosd/aosd_ui.c:1075 msgid "Position" msgstr "Положение" -#: src/aosd/aosd_ui.c:1053 +#: src/aosd/aosd_ui.c:1080 msgid "Animation" msgstr "ÐнимациÑ" -#: src/aosd/aosd_ui.c:1058 +#: src/aosd/aosd_ui.c:1085 msgid "Text" msgstr "ТекÑÑ‚" -#: src/aosd/aosd_ui.c:1063 +#: src/aosd/aosd_ui.c:1090 msgid "Decoration" msgstr "Стиль" -#: src/aosd/aosd_ui.c:1068 +#: src/aosd/aosd_ui.c:1095 msgid "Trigger" msgstr "СобытиÑ" -#: src/aosd/aosd_ui.c:1073 src/cdaudio-ng/configure.c:178 -#: src/modplug/gui/interface.cxx:689 src/sid/xs_interface.c:1302 +#: src/aosd/aosd_ui.c:1100 src/cdaudio-ng/configure.c:171 msgid "Misc" msgstr "Прочее" -#: src/aosd/aosd_ui.c:1110 +#: src/aosd/aosd_ui.c:1137 msgid "Audacious OSD - about" msgstr "О модуле Audacious OSD" -#: src/aosd/aosd_ui.c:1140 +#: src/aosd/aosd_ui.c:1167 msgid "" "\n" "Audacious OSD " @@ -1548,7 +985,7 @@ "\n" "Audacious OSD " -#: src/aosd/aosd_ui.c:1141 +#: src/aosd/aosd_ui.c:1168 msgid "" "\n" "http://www.develia.org/projects.php?p=audacious#aosd\n" @@ -1570,151 +1007,37 @@ "http://neugierig.org/software/ghosd/\n" "\n" -#: src/bluetooth/agent.c:356 src/bluetooth/agent.c:397 -#, c-format -msgid "Pairing request for '%s'" -msgstr "Парный Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð´Ð»Ñ '%s'" - -#: src/bluetooth/agent.c:544 -#, c-format -msgid "Authorization request for %s" -msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° авторизацию Ð´Ð»Ñ %s" - -#: src/bluetooth/agent.c:728 -#, c-format -msgid "Created bonding with %s" -msgstr "УÑтановлено Ñоединение Ñ %s" - -#: src/bluetooth/agent.c:756 -#, c-format -msgid "Removed bonding with %s" -msgstr "Соединение Ñ %s прервано" - -#: src/bluetooth/agent.c:808 -msgid "Device has been switched off" -msgstr "УÑтройÑтво было выключено" - -#: src/bluetooth/agent.c:811 -msgid "Device has been made non-discoverable" -msgstr "Ðевозможно обнаружить уÑтройÑтво" - -#: src/bluetooth/agent.c:813 -msgid "Device has been made connectable" -msgstr "УÑтройÑтво доÑтупно Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ" - -#: src/bluetooth/agent.c:815 -msgid "Device has been made discoverable" -msgstr "УÑтройÑтво определÑетÑÑ" - -#: src/bluetooth/agent.c:817 -msgid "Device has been made limited discoverable" -msgstr "УÑтройÑтво определилоÑÑŒ чаÑтично" - -#: src/bluetooth/agent.c:819 -msgid "Device has been switched into pairing mode" -msgstr "УÑтройÑтво переведено в режим подключениÑ" - -#: src/bluetooth/bluetooth.c:117 -msgid "Bluetooth headset support plugin" -msgstr "О модуле поддержки гарнитуры Bluetooth" - -#: src/bluetooth/bluetooth.c:118 -msgid "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the " -"Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" -msgstr "" -"Модуль поддержки гарнитуры Bluetooth\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"Это проект Google Summer of Code 2008. Благодарю моего наÑтавника Tony Vroon " -"и членов команды Audacious\n" -" \n" -"Ð”Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ AVRCP нужно загрузить модуль Ñдра uinput\n" -"Кнопки гарнитуры будут раÑпознаны как обычные мультимедийные кнопки\n" -"и могут быть наÑтроены Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ð¼Ð¾Ð´ÑƒÐ»Ñ Global Hotkey в Audacious или Ñ " -"помощью других программ,\n" -"предоÑтавлÑемых вашим оконным менеджером.\n" - -#: src/bluetooth/gui.c:148 -msgid "Producer" -msgstr "Производитель" - -#: src/bluetooth/gui.c:221 -msgid "Available Headsets" -msgstr "ДоÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ð³Ð°Ñ€Ð½Ð¸Ñ‚ÑƒÑ€Ð°" - -#: src/bluetooth/gui.c:224 -msgid "Current Headset" -msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð³Ð°Ñ€Ð½Ð¸Ñ‚ÑƒÑ€Ð°" - -#: src/bluetooth/gui.c:227 -msgid "_Refresh" -msgstr "Обновить" - -#: src/bluetooth/gui.c:231 -msgid "_Connect" -msgstr "Соединение" - -#: src/bluetooth/gui.c:237 -msgid "_Close" -msgstr "Закрыть" - -#: src/bluetooth/gui.c:274 -msgid "Class" -msgstr "КлаÑÑ" - -#: src/bluetooth/gui.c:278 -msgid "Address:" -msgstr "ÐдреÑ:" - -#: src/bluetooth/scan_gui.c:69 -msgid "Bonding finish!" -msgstr "Соединение завершено!" - -#: src/bluetooth/scan_gui.c:76 -msgid "No devices found!" -msgstr "УÑтройÑтва не обнаружены!" - -#: src/bluetooth/scan_gui.c:119 -msgid "Scanning..." -msgstr "Сканирование..." - -#: src/bluetooth/scan_gui.c:122 -msgid "Pairing..." -msgstr "Подключение..." - -#: src/bluetooth/scan_gui.c:138 -msgid "Rescan" -msgstr "Повторное Ñканирование" - -#: src/bluetooth/scan_gui.c:142 src/gtkui/ui_manager.c:66 -#: src/gtkui/ui_manager.c:67 src/hotkey/gui.c:71 src/skins/ui_manager.c:167 -#: src/skins/ui_manager.c:168 -msgid "Play" -msgstr "ВоÑпроизвеÑти" - #: src/blur_scope/config.c:73 msgid "Blur Scope: Color selection" msgstr "Размытый оÑциллоÑкоп: выбор цвета" -#: src/blur_scope/config.c:83 src/jack/configure.c:111 +#: src/blur_scope/config.c:83 src/jack/configure.c:106 msgid "Options:" msgstr "Параметры:" -#: src/cdaudio-ng/cdaudio-ng.c:278 +#: src/bs2b/plugin.c:157 +msgid "Bauer stereophonic-to-binaural Preferences" +msgstr "ÐаÑтройка Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтереозвука в бинауральный по БауÑру" + +#: src/bs2b/plugin.c:168 +msgid "Feed level:" +msgstr "Уровень ÑÐ¼ÐµÑˆÐ¸Ð²Ð°Ð½Ð¸Ñ ÐºÐ°Ð½Ð°Ð»Ð¾Ð²:" + +#: src/bs2b/plugin.c:182 +msgid "Cut frequency:" +msgstr "ЧаÑтота Ñреза:" + +#: src/bs2b/plugin.c:196 +msgid "Presets:" +msgstr "Заготовки:" + +#: src/cdaudio-ng/cdaudio-ng.c:242 msgid "About Audio CD Plugin" msgstr "О модуле Audio CD" -#: src/cdaudio-ng/cdaudio-ng.c:279 +#: src/cdaudio-ng/cdaudio-ng.c:243 msgid "" -"Copyright (c) 2007, by Calin Crisan and The Audacious " -"Team.\n" +"Copyright (c) 2007, by Calin Crisan and The Audacious Team.\n" "\n" "Many thanks to libcdio developers \n" "\tand to libcddb developers .\n" @@ -1725,11 +1048,9 @@ "\n" "Copyright 2009 John Lindgren" msgstr "" -"Copyright (c) 2007 Calin Crisan и команда разработчиков " -"Audacious.\n" +"Copyright (c) 2007 Calin Crisan и команда разработчиков Audacious.\n" "\n" -"Ðвтор выражает благодарноÑÑ‚ÑŒ разработчикам библиотеки libcdio \n" +"Ðвтор выражает благодарноÑÑ‚ÑŒ разработчикам библиотеки libcdio \n" "\tи разработчикам библиотеки libcddb .\n" "\n" "Также ÑпаÑибо тебе, Tony Vroon, за наÑтавлениÑ.\n" @@ -1738,124 +1059,153 @@ "\n" "Copyright 2009 John Lindgren" -#: src/cdaudio-ng/configure.c:155 +#: src/cdaudio-ng/cdaudio-ng.c:552 +msgid "Audio CD" +msgstr "Ðудио CD" + +#: src/cdaudio-ng/cdaudio-ng.c:924 +msgid "Drive is empty." +msgstr "Привод пуÑÑ‚." + +#: src/cdaudio-ng/cdaudio-ng.c:926 +msgid "Unsupported disk type." +msgstr "Ðеподдерживаемый тип диÑка." + +#: src/cdaudio-ng/configure.c:148 msgid "CD Audio Plugin Configuration" msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ CD Audio" -#: src/cdaudio-ng/configure.c:167 +#: src/cdaudio-ng/configure.c:160 msgid "Digital audio extraction" msgstr "Цифровое Ñчитывание аудио" -#: src/cdaudio-ng/configure.c:172 +#: src/cdaudio-ng/configure.c:165 msgid "Title information" msgstr "Данные о названии" -#: src/cdaudio-ng/configure.c:190 +#: src/cdaudio-ng/configure.c:176 msgid "Disc speed:" msgstr "СкороÑÑ‚ÑŒ диÑка:" -#: src/cdaudio-ng/configure.c:198 +#: src/cdaudio-ng/configure.c:184 msgid "Use cd-text if available" msgstr "ИÑпользовать CD-Text, еÑли возможно" -#: src/cdaudio-ng/configure.c:205 +#: src/cdaudio-ng/configure.c:191 msgid "Use CDDB if available" msgstr "ИÑпользовать CDDB, еÑли возможно" -#: src/cdaudio-ng/configure.c:211 +#: src/cdaudio-ng/configure.c:197 msgid "Server: " msgstr "Сервер: " -#: src/cdaudio-ng/configure.c:215 +#: src/cdaudio-ng/configure.c:201 msgid "Path: " msgstr "Путь: " -#: src/cdaudio-ng/configure.c:219 +#: src/cdaudio-ng/configure.c:205 msgid "Port: " msgstr "Порт: " -#: src/cdaudio-ng/configure.c:232 +#: src/cdaudio-ng/configure.c:218 msgid "Use HTTP instead of CDDBP" msgstr "ИÑпользовать HTTP вмеÑто CDDBP" -#: src/cdaudio-ng/configure.c:244 +#: src/cdaudio-ng/configure.c:230 msgid "Override default device: " msgstr "Изменить уÑтройÑтво по умолчанию: " -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:123 +#: src/echo_plugin/gui.c:118 src/jack/configure.c:141 src/null/null.c:107 +#: src/stereo_plugin/stereo.c:118 +msgid "Ok" +msgstr "ОК" + +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Play CD" msgstr "ВоÑпроизвеÑти CD-диÑк" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Add CD" msgstr "Добавить CD-диÑк" -#: src/compressor/plugin.c:58 +#: src/compressor/plugin.c:63 msgid "About Dynamic Range Compression Plugin" msgstr "О модуле ДинамичеÑÐºÐ°Ñ ÐºÐ¾Ð¼Ð¿Ñ€ÐµÑÑиÑ" -#: src/compressor/plugin.c:91 +#: src/compressor/plugin.c:95 msgid "Dynamic Range Compressor Preferences" msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð”Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑÐºÐ°Ñ ÐºÐ¾Ð¼Ð¿Ñ€ÐµÑÑиÑ" -#: src/compressor/plugin.c:103 -msgid "Target volume:" -msgstr "ГромкоÑÑ‚ÑŒ:" - -#: src/compressor/plugin.c:116 -msgid "Effect strength:" -msgstr "ИнтенÑивноÑÑ‚ÑŒ Ñффекта:" +#: src/compressor/plugin.c:107 +msgid "Center volume:" +msgstr "Центр громкоÑти:" + +#: src/compressor/plugin.c:120 +msgid "Dynamic range:" +msgstr "ДинамичеÑкий диапазон:" -#: src/console/configure.c:137 +#: src/console/configure.c:136 msgid "Game Console Music Decoder" msgstr "Модуль поддержки звука игровой конÑоли" -#: src/console/configure.c:171 +#: src/console/configure.c:153 +msgid "General" +msgstr "ОÑновной" + +#: src/console/configure.c:155 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "ВоÑпроизведение" + +#: src/console/configure.c:170 msgid "Bass:" msgstr "БаÑ:" -#: src/console/configure.c:175 src/console/configure.c:186 -#: src/console/configure.c:207 +#: src/console/configure.c:174 src/console/configure.c:185 +#: src/console/configure.c:206 msgid "secs" msgstr "Ñекунд" -#: src/console/configure.c:182 +#: src/console/configure.c:181 msgid "Treble:" msgstr "Ð’Ñ‹Ñокие:" -#: src/console/configure.c:203 +#: src/console/configure.c:202 msgid "Default song length:" msgstr "ДлительноÑÑ‚ÑŒ композиции по умолчанию:" -#: src/console/configure.c:209 src/modplug/gui/interface.cxx:269 -#: src/sid/xs_interface.c:666 +#: src/console/configure.c:208 msgid "Resampling" msgstr "Преобразование чаÑтоты" -#: src/console/configure.c:215 +#: src/console/configure.c:214 msgid "Enable audio resampling" msgstr "Включить преобразование" -#: src/console/configure.c:230 +#: src/console/configure.c:229 msgid "Resampling rate:" msgstr "Преобразование чаÑтоты:" -#: src/console/configure.c:245 +#: src/console/configure.c:233 +msgid "Hz" +msgstr "Гц" + +#: src/console/configure.c:244 msgid "SPC" msgstr "SPC" -#: src/console/configure.c:246 +#: src/console/configure.c:245 msgid "Ignore length from SPC tags" msgstr "Игнорировать длительноÑÑ‚ÑŒ из тегов SPC" -#: src/console/configure.c:247 +#: src/console/configure.c:246 msgid "Increase reverb" msgstr "Увеличить реверберацию" -#: src/console/configure.c:272 +#: src/console/configure.c:271 msgid "" -"The default song length, expressed in seconds, is used for songs that do not " -"provide length information (i.e. looping tracks)." +"The default song length, expressed in seconds, is used for songs that do not" +" provide length information (i.e. looping tracks)." msgstr "" "ДлительноÑÑ‚ÑŒ дорожки по умолчанию, Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ Ð² Ñекундах, иÑпользуетÑÑ Ð´Ð»Ñ " "запиÑей, у которых отÑутÑтвуют данные о длительноÑти (например, беÑконечные " @@ -1873,61 +1223,57 @@ " Shay Green \n" msgstr "" "Модуль поддержки звука игровых конÑолей оÑнован на Game_Music_Emu 0.5.2.\n" -"Поддерживаемые форматы: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, " -"VGZ\n" +"Поддерживаемые форматы: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" "Audacious implementation by: William Pitcock , \n" "Shay Green \n" -#: src/crossfade/plugin.c:51 +#: src/crossfade/plugin.c:60 msgid "About Crossfade" msgstr "О модуле ПерекрёÑтное затухание" -#: src/crossfade/plugin.c:84 +#: src/crossfade/plugin.c:92 msgid "Crossfade Preferences" msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ ÐŸÐµÑ€ÐµÐºÑ€Ñ‘Ñтное затухание" -#: src/crossfade/plugin.c:95 +#: src/crossfade/plugin.c:104 msgid "Overlap (in seconds):" msgstr "Перекрытие (в Ñекундах):" -#: src/crossfade/plugin.c:129 src/crossfade/plugin.c:137 +#: src/crossfade/plugin.c:135 src/crossfade/plugin.c:141 msgid "Crossfade Error" msgstr "ПерекрёÑтное затухание недоÑтупно" -#: src/crossfade/plugin.c:130 +#: src/crossfade/plugin.c:135 msgid "" "Crossfading failed because the songs had a different number of channels." msgstr "" "ПерекрёÑтное затухание недоÑтупно, поÑкольку композиции имеет разное " "количеÑтво каналов." -#: src/crossfade/plugin.c:138 +#: src/crossfade/plugin.c:143 msgid "" "Crossfading failed because the songs had different sample rates.\n" "\n" -"You can use the Sample Rate Converter effect to resample the songs to the " -"same rate." +"You can use the Sample Rate Converter effect to resample the songs to the same rate." msgstr "" -"ПерекрёÑтное затухание недоÑтупно, поÑкольку композиции имеют различные " -"битрейты.\n" +"ПерекрёÑтное затухание недоÑтупно, поÑкольку композиции имеют различные битрейты.\n" "\n" -"Ð’Ñ‹ можете иÑпользовать модуль ÐŸÑ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‡Ð°Ñтоты Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ " -"композиций к единому битрейту." +"Ð’Ñ‹ можете иÑпользовать модуль ÐŸÑ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‡Ð°Ñтоты Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¹ к единому битрейту." -#: src/crystalizer/crystalizer.c:104 +#: src/crystalizer/crystalizer.c:100 msgid "Configure Crystalizer" msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ Crystalizer" -#: src/crystalizer/crystalizer.c:106 src/stereo_plugin/stereo.c:102 +#: src/crystalizer/crystalizer.c:102 src/stereo_plugin/stereo.c:97 msgid "Effect intensity:" msgstr "ИнтенÑивноÑÑ‚ÑŒ Ñффекта:" -#: src/crystalizer/crystalizer.c:143 src/echo_plugin/gui.c:137 -#: src/modplug/gui/interface.cxx:709 src/stereo_plugin/stereo.c:139 +#: src/crystalizer/crystalizer.c:136 src/echo_plugin/gui.c:131 +#: src/stereo_plugin/stereo.c:131 msgid "Apply" msgstr "Применить" -#: src/echo_plugin/gui.c:14 +#: src/echo_plugin/gui.c:15 msgid "" "Echo Plugin\n" "By Johan Levin 1999.\n" @@ -1939,684 +1285,245 @@ "\n" "Объёмное Ñхо добавил Carl van Schaik 1999" -#: src/echo_plugin/gui.c:26 +#: src/echo_plugin/gui.c:27 msgid "About Echo Plugin" msgstr "О модуле Эхо" -#: src/echo_plugin/gui.c:69 +#: src/echo_plugin/gui.c:67 msgid "Configure Echo" msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð­Ñ…Ð¾" -#: src/echo_plugin/gui.c:82 +#: src/echo_plugin/gui.c:83 msgid "Delay: (ms)" msgstr "Задержка (мÑ):" -#: src/echo_plugin/gui.c:87 +#: src/echo_plugin/gui.c:88 msgid "Feedback: (%)" msgstr "ÐžÐ±Ñ€Ð°Ñ‚Ð½Ð°Ñ ÑвÑзь (%):" -#: src/echo_plugin/gui.c:92 +#: src/echo_plugin/gui.c:93 msgid "Volume: (%)" msgstr "ГромкоÑÑ‚ÑŒ (%):" -#: src/evdev-plug/ed.c:60 -msgid "Playback->Play" -msgstr "ВоÑпроизведение->Играть" - -#: src/evdev-plug/ed.c:61 -msgid "Playback->Stop" -msgstr "ВоÑпроизведение->Стоп" - -#: src/evdev-plug/ed.c:62 -msgid "Playback->Pause" -msgstr "ВоÑпроизведение->Пауза" - -#: src/evdev-plug/ed.c:63 -msgid "Playback->Prev" -msgstr "ВоÑпроизведение->ПредыдущаÑ" - -#: src/evdev-plug/ed.c:64 -msgid "Playback->Next" -msgstr "ВоÑпроизведение->СледующаÑ" - -#: src/evdev-plug/ed.c:65 -msgid "Playback->Eject" -msgstr "ВоÑпроизведение->Извлечь" - -#: src/evdev-plug/ed.c:67 -msgid "Playlist->Repeat" -msgstr "СпиÑок->Повтор" - -#: src/evdev-plug/ed.c:68 -msgid "Playlist->Shuffle" -msgstr "СпиÑок->Случайно" - -#: src/evdev-plug/ed.c:70 -msgid "Volume->Up_5" -msgstr "ГромкоÑÑ‚ÑŒ->Вверх_5" - -#: src/evdev-plug/ed.c:71 -msgid "Volume->Down_5" -msgstr "ГромкоÑÑ‚ÑŒ->Вниз_5" - -#: src/evdev-plug/ed.c:72 -msgid "Volume->Up_10" -msgstr "ГромкоÑÑ‚ÑŒ->Вверх_10" - -#: src/evdev-plug/ed.c:73 -msgid "Volume->Down_10" -msgstr "ГромкоÑÑ‚ÑŒ->Вниз_10" - -#: src/evdev-plug/ed.c:74 -msgid "Volume->Mute" -msgstr "ГромкоÑÑ‚ÑŒ->Приглушить" - -#: src/evdev-plug/ed.c:76 -msgid "Window->Main" -msgstr "Окно->Главное" - -#: src/evdev-plug/ed.c:77 -msgid "Window->Playlist" -msgstr "Окно->СпиÑок воÑпроизведениÑ" - -#: src/evdev-plug/ed.c:78 -msgid "Window->Equalizer" -msgstr "Окно->Эквалайзер" - -#: src/evdev-plug/ed.c:79 -msgid "Window->JumpToFile" -msgstr "Окно->Перейти к файлу" - -#: src/evdev-plug/ed_internals.c:94 +#: src/ffaudio/ffaudio-core.c:725 #, c-format msgid "" -"event-device-plugin: unable to open device file %s , skipping this device; " -"check that the file exists and that you have read permission for it\n" +"Multi-format audio decoding plugin for Audacious based on\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious plugin by:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" msgstr "" -"event-device-plugin: невозможно открыть файл уÑтройÑтва %s , уÑтройÑтво " -"пропущено; проверьте, что файл ÑущеÑтвует и что у Ð²Ð°Ñ ÐµÑÑ‚ÑŒ права на его " -"чтение\n" +"Мульти-формат плагина аудио-декодера Ð´Ð»Ñ Audacious оÑнован на FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Ðвторы плагина Ð´Ð»Ñ Audacious:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" -#: src/evdev-plug/ed_internals.c:103 -#, c-format -msgid "" -"event-device-plugin: unable to create a io_channel for device file %s ," -"skipping this device\n" -msgstr "" -"event-device-plugin: невозможно Ñоздать io_channel Ð´Ð»Ñ ÑƒÑтройÑтва %s, " -"уÑтройÑтво пропущено\n" +#: src/ffaudio/ffaudio-core.c:739 +msgid "About FFaudio Plugin" +msgstr "О модуле FFaudio" -#: src/evdev-plug/ed_internals.c:342 -msgid "" -"event-device-plugin: unable to open /proc/bus/input/devices , automatic " -"detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: невозможно открыть /proc/bus/input/devices, " -"автоматичеÑкое раÑпознавание уÑтройÑтв Ñобытий не будет работать.\n" +#: src/filewriter/filewriter.c:166 +msgid "About FileWriter-Plugin" +msgstr "О модуле ЗапиÑÑŒ в файл" -#: src/evdev-plug/ed_internals.c:351 -msgid "" -"event-device-plugin: unable to open a io_channel for /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: невозможно открыть io_channel Ð´Ð»Ñ /proc/bus/input/" -"devices, автоматичеÑкое раÑпознавание уÑтройÑтв Ñобытий не будет работать.\n" +#: src/filewriter/filewriter.c:461 +msgid "File Writer Configuration" +msgstr "Параметры запиÑи в файл" -#: src/evdev-plug/ed_internals.c:361 -msgid "" -"event-device-plugin: an error occurred while reading /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: произошла ошибка при чтении /proc/bus/input/devices, " -"автоматичеÑкое раÑпознавание уÑтройÑтв Ñобытий не будет работать.\n" +#: src/filewriter/filewriter.c:473 +msgid "Output file format:" +msgstr "Формат запиÑываемого файла:" -#: src/evdev-plug/ed_internals.c:424 -#, c-format -msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" -msgstr "" -"event-device-plugin: уÑтройÑтво %s не найдено в /dev/input, пропущено.\n" +#: src/filewriter/filewriter.c:491 +msgid "Configure" +msgstr "ÐаÑтройка" -#: src/evdev-plug/ed_internals.c:489 src/evdev-plug/ed_internals.c:583 -#, c-format -msgid "" -"event-device-plugin: unable to load config file %s , default settings will " -"be used.\n" -msgstr "" -"event-device-plugin: невозможно загрузить конфигурационный файл %s, будут " -"иÑпользованы наÑтройки по умолчанию.\n" +#: src/filewriter/filewriter.c:506 +msgid "Save into original directory" +msgstr "Сохранить в тот же каталог" -#: src/evdev-plug/ed_internals.c:535 -#, c-format -msgid "" -"event-device-plugin: incomplete information in config file for device \"%s" -"\" , skipping.\n" -msgstr "" -"event-device-plugin: Ð½ÐµÐ¿Ð¾Ð»Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð² конфигурационном файле Ð´Ð»Ñ " -"уÑтройÑтва \"%s\", пропущено.\n" +#: src/filewriter/filewriter.c:511 +msgid "Save into custom directory" +msgstr "Сохранить в другой каталог" -#: src/evdev-plug/ed_internals.c:604 src/evdev-plug/ed_internals.c:936 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_active value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: наÑтройка, невозможно получить значение is_active Ð´Ð»Ñ " -"уÑтройÑтва \"%s\", пропущено.\n" +#: src/filewriter/filewriter.c:521 +msgid "Output file folder:" +msgstr "Каталог Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñываемых файлов:" -#: src/evdev-plug/ed_internals.c:840 -#, c-format -msgid "" -"event-device-plugin: unable to access local directory %s , settings will not " -"be saved.\n" -msgstr "" -"event-device-plugin: невозможно получить доÑтуп к локальному каталогу %s, " -"наÑтройки не будут Ñохранены.\n" +#: src/filewriter/filewriter.c:525 +msgid "Pick a folder" +msgstr "ПоиÑк каталога" -#: src/evdev-plug/ed_internals.c:890 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get filename value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: наÑтройка, невозможно получить Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ ÑƒÑтройÑтва " -"\"%s\", пропущено.\n" +#: src/filewriter/filewriter.c:544 +msgid "Get filename from:" +msgstr "Создать название файла из:" -#: src/evdev-plug/ed_internals.c:906 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get phys value for device \"%s" -"\", skipping it.\n" -msgstr "" -"event-device-plugin: наÑтройка, невозможно получить физичеÑкое значение Ð´Ð»Ñ " -"уÑтройÑтва \"%s\", пропущено.\n" +#: src/filewriter/filewriter.c:547 +msgid "original file tags" +msgstr "имеющихÑÑ Ñ‚ÐµÐ³Ð¾Ð² файла" -#: src/evdev-plug/ed_internals.c:922 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_custom value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: наÑтройка, невозможно получить значение is_custom Ð´Ð»Ñ " -"уÑтройÑтва \"%s\", пропущено.\n" +#: src/filewriter/filewriter.c:553 +msgid "original filename" +msgstr "имеющегоÑÑ Ð¸Ð¼ÐµÐ½Ð¸ файла" -#: src/evdev-plug/ed_internals.c:946 -#, c-format -msgid "" -"event-device-plugin: configuration, unexpected value for device \"%s\", " -"skipping it.\n" -msgstr "" -"event-device-plugin: наÑтройка, непредуÑмотренное значение Ð´Ð»Ñ ÑƒÑтройÑтва " -"\"%s\", пропущено.\n" +#: src/filewriter/filewriter.c:563 +msgid "Don't strip file name extension" +msgstr "Ðе удалÑÑ‚ÑŒ раÑширение имени файла" -#: src/evdev-plug/ed_ui.c:212 -msgid "Detected" -msgstr "Определено" +#: src/filewriter/filewriter.c:578 +msgid "Prepend track number to filename" +msgstr "ВпиÑать до Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° номер дорожки" -#: src/evdev-plug/ed_ui.c:217 -msgid "Custom" -msgstr "Другое" +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:765 +msgid "Auto" +msgstr "ÐвтоматичеÑки" -#: src/evdev-plug/ed_ui.c:223 -msgid "Not Detected" -msgstr "Ðе определено" +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" +msgstr "Объединённое Ñтерео" -#: src/evdev-plug/ed_ui.c:275 src/evdev-plug/ed_ui.c:411 -#: src/evdev-plug/ed_ui.c:874 -msgid "Information" -msgstr "ИнформациÑ" +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Stereo" +msgstr "Стерео" -#: src/evdev-plug/ed_ui.c:276 -msgid "" -"Cannot open bindings window for a not-detected device.\n" -"Ensure that the device has been correctly plugged in." -msgstr "" -"Ðевозможно открыть окно Ð´Ð»Ñ Ð½ÐµÐ¾Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ð³Ð¾ уÑтройÑтва.\n" -"УбедитеÑÑŒ, что уÑтройÑтво подключено правильно." +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Mono" +msgstr "Моно" -#: src/evdev-plug/ed_ui.c:319 -msgid "Error" -msgstr "Ошибка" +#: src/filewriter/mp3.c:706 +msgid "MP3 Configuration" +msgstr "Параметры MP3" -#: src/evdev-plug/ed_ui.c:320 -msgid "" -"Unable to open selected device.\n" -"Please check read permissions on device file." -msgstr "" -"Ðевозможно открыть выбранное уÑтройÑтво.\n" -"ПожалуйÑта, проверьте права доÑтупа к файлу уÑтройÑтва." - -#: src/evdev-plug/ed_ui.c:341 -msgid "EvDev-Plug - Add custom device" -msgstr "EvDev-Plug - Добавить другое уÑтройÑтво" - -#: src/evdev-plug/ed_ui.c:353 -msgid "" -"EvDev-Plug tries to automatically detect and update information about\n" -"event devices available on the system.\n" -"However, if auto-detect doesn't work for your system, or you have event\n" -"devices in a non-standard location (currently they're only searched in\n" -"/dev/input/ ), you may want to add a custom device, explicitly specifying\n" -"name and device file." -msgstr "" -"EvDev-Plug пытаетÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки определить и обновить информацию\n" -"о ÑобытиÑÑ… уÑтройÑтв, приÑутÑтвующих в ÑиÑтеме.\n" -"Однако, еÑли автоматичеÑкое определение в вашей ÑиÑтеме не работает\n" -"или же уÑтройÑтва размещены не там, где обычно (ÑÐµÐ¹Ñ‡Ð°Ñ Ð¿Ñ€Ð¾ÑматриваетÑÑ\n" -"только каталог /dev/input/), то вы можете добавить уÑтройÑтво вручную,\n" -"указав название и файл уÑтройÑтва." - -#: src/evdev-plug/ed_ui.c:361 -msgid "Device name:" -msgstr "Ð˜Ð¼Ñ ÑƒÑтройÑтва:" - -#: src/evdev-plug/ed_ui.c:365 -msgid "Device file:" -msgstr "Файл уÑтройÑтва:" - -#: src/evdev-plug/ed_ui.c:404 -msgid "(custom)" -msgstr "(другое)" - -#: src/evdev-plug/ed_ui.c:412 -msgid "" -"Please specify both name and filename.\n" -"Filename must be specified with absolute path." -msgstr "" -"ПожалуйÑта укажите название и Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°.\n" -"Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° должно иметь абÑолютный путь." - -#: src/evdev-plug/ed_ui.c:447 -msgid "Do you want to remove the existing configuration for selected device?\n" -msgstr "" -"Ð’Ñ‹ хотите удалить ÑущеÑтвующую конфигурацию Ð´Ð»Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð³Ð¾ уÑтройÑтва?\n" - -#: src/evdev-plug/ed_ui.c:466 -msgid "Do you want to remove the selected custom device?\n" -msgstr "Ð’Ñ‹ хотите удалить выбранное уÑтройÑтво?\n" - -#: src/evdev-plug/ed_ui.c:612 -msgid "EvDev-Plug - Configuration" -msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ EvDev-Plug" - -#: src/evdev-plug/ed_ui.c:651 -msgid "Active" -msgstr "Ðктивное" - -#: src/evdev-plug/ed_ui.c:655 src/sun/configure.c:486 -msgid "Status" -msgstr "СтатуÑ" - -#: src/evdev-plug/ed_ui.c:664 -msgid "Device Name" -msgstr "Ðазвание уÑтройÑтва" - -#: src/evdev-plug/ed_ui.c:668 -msgid "Device File" -msgstr "Файл уÑтройÑтва" - -#: src/evdev-plug/ed_ui.c:672 -msgid "Device Address" -msgstr "ÐÐ´Ñ€ÐµÑ ÑƒÑтройÑтва" - -#: src/evdev-plug/ed_ui.c:689 -msgid "_Bindings" -msgstr "_ПривÑзки клавиш" - -#: src/evdev-plug/ed_ui.c:838 -msgid "" -"Press a key of your device to bind it;\n" -"if no key is pressed in five seconds, this window\n" -"will close without binding changes." -msgstr "" -"Ðажмите клавишу на вашем уÑтройÑтве, чтобы Ñделать\n" -"привÑзку к ней. ЕÑли ни одна клавиша не будет нажата\n" -"в течении 5 Ñекунд, окно закроетÑÑ Ð±ÐµÐ· Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð²Ñзок." - -#: src/evdev-plug/ed_ui.c:875 -msgid "" -"This input event has been already assigned.\n" -"\n" -"It's not possible to assign multiple actions to the same input event " -"(although it's possible to assign the same action to multiple events)." -msgstr "" -"Это Ñобытие уже назначено.\n" -"\n" -"Ðевозможно назначить неÑколько дейÑтвий на одно и тоже входное Ñобытие (так " -"же, как Ð½ÐµÐ»ÑŒÐ·Ñ Ð½Ð°Ð·Ð½Ð°Ñ‡Ð¸Ñ‚ÑŒ одно дейÑтвие на неÑколько Ñобытий)." - -#: src/evdev-plug/ed_ui.c:1323 -msgid "EvDev-Plug - Bindings Configuration" -msgstr "EvDev-Plug - ÐаÑтройка привÑзок клавиш" - -#: src/evdev-plug/ed_ui.c:1363 -msgid "Name: " -msgstr "Ðазвание: " - -#: src/evdev-plug/ed_ui.c:1372 -msgid "Filename: " -msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°: " - -#: src/evdev-plug/ed_ui.c:1381 -msgid "Phys.Address: " -msgstr "Физ. адреÑ: " - -#: src/evdev-plug/ed_ui.c:1460 -msgid "EvDev-Plug - about" -msgstr "О модуле EvDev-Plug" - -#: src/evdev-plug/ed_ui.c:1491 -msgid "" -"\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"written by Giacomo Lozito\n" -msgstr "" -"\n" -"Удалённое управление проигрывателем Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ уÑтройÑтв Ñобытий\n" -"http://www.develia.org/projects.php?p=evdevplug\n" -"\n" -"Модуль напиÑал Giacomo Lozito\n" -"< james@develia.org >\n" -"\n" - -#: src/ffaudio/ffaudio-core.c:662 -#, c-format -msgid "" -"Multi-format audio decoding plugin for Audacious based on\n" -"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" -"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" -"\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" -"Audacious plugin by:\n" -" William Pitcock ,\n" -" Matti Hämäläinen \n" -msgstr "" -"Многоформатный модуль Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ° Ð´Ð»Ñ Audacious,\n" -"оÑнован на FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" -"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" -"\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" -"Модуль Ð´Ð»Ñ Audacious напиÑали:\n" -" William Pitcock ,\n" -" Matti Hämäläinen \n" - -#: src/ffaudio/ffaudio-core.c:675 -msgid "About FFaudio Plugin" -msgstr "О модуле FFaudio" - -#: src/filewriter/filewriter.c:180 -msgid "About FileWriter-Plugin" -msgstr "О модуле ЗапиÑÑŒ в файл" - -#: src/filewriter/filewriter.c:181 -msgid "" -"FileWriter-Plugin\n" -"\n" -"This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" -"Модуль ЗапиÑÑŒ в файл\n" -"\n" -"Эта программа - Ñвободное программное обеÑпечение; вы можете раÑпроÑтранÑÑ‚ÑŒ " -"и/или модифицировать его в ÑоответÑтвии Ñ ÑƒÑловиÑми\n" -"Стандартной ОбщеÑтвенной Лицензии GNU, изданной Фондом Свободного\n" -"Программного ОбеÑпечениÑ; или же верÑией 2 Стандартной ОбщеÑтвенной\n" -"Лицензии Лицензии GNU или (по желанию) любой более поздней её верÑией.\n" -"\n" -"Эта программа раÑпроÑтранÑетÑÑ Ñ Ð½Ð°Ð´ÐµÐ¶Ð´Ð¾Ð¹, что она будет полезна, но БЕЗ\n" -"ВСЯКИХ ГÐРÐÐТИЙÐЫХ ОБЯЗÐТЕЛЬСТВ; без подразумеваемой гарантии товарного\n" -"ÑоÑтоÑÐ½Ð¸Ñ Ð¸ ПРИГОДÐОСТИ ИСПОЛЬЗОВÐÐИЯ ЕРДЛЯ КÐКОЙ-ЛИБО ЦЕЛИ.\n" -"ОбратитеÑÑŒ за подробноÑÑ‚Ñми к Лицензии GNU.\n" -"\n" -"Ð’Ñ‹ должны были получить копию Стандартной ОбщеÑтвенной Лицензии GNU\n" -"вмеÑте Ñ Ñтой программой; еÑли же нет, то напишите об Ñтом по адреÑу: Free " -"Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, " -"USA." - -#: src/filewriter/filewriter.c:466 -msgid "File Writer Configuration" -msgstr "Параметры запиÑи в файл" - -#: src/filewriter/filewriter.c:478 -msgid "Output file format:" -msgstr "Формат запиÑываемого файла:" - -#: src/filewriter/filewriter.c:496 src/ladspa/ladspa.c:1058 -msgid "Configure" -msgstr "ÐаÑтройка" - -#: src/filewriter/filewriter.c:511 -msgid "Save into original directory" -msgstr "Сохранить в тот же каталог" - -#: src/filewriter/filewriter.c:516 -msgid "Save into custom directory" -msgstr "Сохранить в другой каталог" - -#: src/filewriter/filewriter.c:528 -msgid "Output file folder:" -msgstr "Каталог Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñываемых файлов:" - -#: src/filewriter/filewriter.c:532 -msgid "Pick a folder" -msgstr "ПоиÑк каталога" - -#: src/filewriter/filewriter.c:551 -msgid "Get filename from:" -msgstr "Создать название файла из:" - -#: src/filewriter/filewriter.c:554 -msgid "original file tags" -msgstr "имеющихÑÑ Ñ‚ÐµÐ³Ð¾Ð² файла" - -#: src/filewriter/filewriter.c:560 -msgid "original filename" -msgstr "имеющегоÑÑ Ð¸Ð¼ÐµÐ½Ð¸ файла" - -#: src/filewriter/filewriter.c:570 -msgid "Don't strip file name extension" -msgstr "Ðе удалÑÑ‚ÑŒ раÑширение имени файла" - -#: src/filewriter/filewriter.c:574 -msgid "" -"If enabled, the extension from the original filename will not be stripped " -"before adding the new file extension to the end." -msgstr "" -"ЕÑли включено, то раÑширение имеющегоÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° не будет удалено до " -"Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² конце нового раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°" - -#: src/filewriter/filewriter.c:588 -msgid "Prepend track number to filename" -msgstr "ВпиÑать до Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° номер дорожки" - -#: src/filewriter/mp3.c:710 -msgid "MP3 Configuration" -msgstr "Параметры MP3" - -#: src/filewriter/mp3.c:737 +#: src/filewriter/mp3.c:729 msgid "Algorithm Quality:" msgstr "КачеÑтво алгоритма:" -#: src/filewriter/mp3.c:759 -msgid "" -"best/slowest:0;\n" -"worst/fastest:9;\n" -"recommended:2;\n" -"default:5;" -msgstr "" -"наилучшее, но медленно: 0;\n" -"наихудшее, но быÑтро: 9;\n" -"рекомендованное: 2;\n" -"по умолчанию: 5;" - -#: src/filewriter/mp3.c:767 +#: src/filewriter/mp3.c:754 msgid "Output Samplerate:" msgstr "Ð’Ñ‹Ñ…Ð¾Ð´Ð½Ð°Ñ Ñ‡Ð°Ñтота:" -#: src/filewriter/mp3.c:778 src/filewriter/mp3.c:919 -msgid "Auto" -msgstr "ÐвтоматичеÑки" - -#: src/filewriter/mp3.c:800 +#: src/filewriter/mp3.c:782 msgid "(Hz)" msgstr "(Гц)" -#: src/filewriter/mp3.c:812 +#: src/filewriter/mp3.c:789 msgid "Bitrate / Compression ratio:" msgstr "Битрейт / Степень ÑжатиÑ:" -#: src/filewriter/mp3.c:838 +#: src/filewriter/mp3.c:813 msgid "Bitrate (kbps):" msgstr "Битрейт (кб/Ñ)" -#: src/filewriter/mp3.c:879 +#: src/filewriter/mp3.c:846 msgid "Compression ratio:" msgstr "Степень ÑжатиÑ:" -#: src/filewriter/mp3.c:909 +#: src/filewriter/mp3.c:870 msgid "Audio Mode:" msgstr "Ðудио режим:" -#: src/filewriter/mp3.c:924 -msgid "Joint-Stereo" -msgstr "Joint Ñтерео" - -#: src/filewriter/mp3.c:967 +#: src/filewriter/mp3.c:895 msgid "Misc:" msgstr "Прочее:" -#: src/filewriter/mp3.c:978 +#: src/filewriter/mp3.c:906 msgid "Enforce strict ISO complience" msgstr "Полное ÑоответÑтвие ISO" -#: src/filewriter/mp3.c:989 +#: src/filewriter/mp3.c:917 msgid "Error protection" msgstr "Защита от ошибок" -#: src/filewriter/mp3.c:1001 -msgid "Adds 16 bit checksum to every frame" -msgstr "Добавить 16-битную контрольную Ñумму к каждому фрейму" - -#: src/filewriter/mp3.c:1006 src/filewriter/vorbis.c:247 -#: src/modplug/gui/interface.cxx:320 +#: src/filewriter/mp3.c:929 src/filewriter/vorbis.c:247 msgid "Quality" msgstr "КачеÑтво" -#: src/filewriter/mp3.c:1018 +#: src/filewriter/mp3.c:939 msgid "Enable VBR/ABR" msgstr "Включить VBR/ABR" -#: src/filewriter/mp3.c:1030 +#: src/filewriter/mp3.c:949 msgid "Type:" msgstr "Тип:" -#: src/filewriter/mp3.c:1041 -msgid "Variable bitrate" -msgstr "Переменный битрейт" - -#: src/filewriter/mp3.c:1053 -msgid "Average bitrate" -msgstr "Средний битрейт" - -#: src/filewriter/mp3.c:1067 +#: src/filewriter/mp3.c:982 msgid "VBR Options:" msgstr "Параметры VBR:" -#: src/filewriter/mp3.c:1083 +#: src/filewriter/mp3.c:998 msgid "Minimum bitrate (kbps):" msgstr "Минимальный битрейт (кб/Ñ):" -#: src/filewriter/mp3.c:1119 +#: src/filewriter/mp3.c:1025 msgid "Maximum bitrate (kbps):" msgstr "МакÑимальный битрейт (кб/Ñ):" -#: src/filewriter/mp3.c:1151 +#: src/filewriter/mp3.c:1048 msgid "Strictly enforce minimum bitrate" msgstr "Строгое Ñоблюдение минимального битрейта" -#: src/filewriter/mp3.c:1153 -msgid "" -"For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/" -"mp3 player)" -msgstr "" -"Ð”Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ñ‚ÐµÐ»Ñми, которые не поддерживают низкий битрейт " -"mp3 (Apex AD600-A DVD/mp3 player)" - -#: src/filewriter/mp3.c:1166 +#: src/filewriter/mp3.c:1060 msgid "ABR Options:" msgstr "Параметры ABR:" -#: src/filewriter/mp3.c:1176 +#: src/filewriter/mp3.c:1070 msgid "Average bitrate (kbps):" msgstr "Средний битрейт (кб/Ñ):" -#: src/filewriter/mp3.c:1213 +#: src/filewriter/mp3.c:1098 msgid "VBR quality level:" msgstr "Уровень качеÑтва VBR:" -#: src/filewriter/mp3.c:1228 -msgid "" -"highest:0;\n" -"lowest:9;\n" -"default:4;" -msgstr "" -"наивыÑший: 0;\n" -"Ñамый низкий: 9;\n" -"по умолчанию: 4;" - -#: src/filewriter/mp3.c:1236 +#: src/filewriter/mp3.c:1117 msgid "Don't write Xing VBR header" msgstr "Ðе запиÑывать заголовки Xing VBR" -#: src/filewriter/mp3.c:1250 +#: src/filewriter/mp3.c:1131 msgid "VBR/ABR" msgstr "VBR/ABR" -#: src/filewriter/mp3.c:1262 +#: src/filewriter/mp3.c:1141 msgid "Frame params:" msgstr "Параметры фрейма:" -#: src/filewriter/mp3.c:1274 +#: src/filewriter/mp3.c:1153 msgid "Mark as copyright" msgstr "Пометить авторÑким правом (copyright)" -#: src/filewriter/mp3.c:1285 +#: src/filewriter/mp3.c:1164 msgid "Mark as original" msgstr "Пометить как оригинальное" -#: src/filewriter/mp3.c:1297 +#: src/filewriter/mp3.c:1176 msgid "ID3 params:" msgstr "Параметры ID3:" -#: src/filewriter/mp3.c:1308 +#: src/filewriter/mp3.c:1187 msgid "Force addition of version 2 tag" msgstr "Принудительное добавление 2-й верÑии тегов" -#: src/filewriter/mp3.c:1318 +#: src/filewriter/mp3.c:1197 msgid "Only add v1 tag" msgstr "Только 1-Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ñ‚ÐµÐ³Ð¾Ð²" -#: src/filewriter/mp3.c:1325 +#: src/filewriter/mp3.c:1204 msgid "Only add v2 tag" msgstr "Только 2-Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ñ‚ÐµÐ³Ð¾Ð²" -#: src/filewriter/mp3.c:1346 +#: src/filewriter/mp3.c:1225 msgid "Tags" msgstr "Теги" @@ -2628,11 +1535,11 @@ msgid "Quality level (0 - 10):" msgstr "Уровень качеÑтва (0 - 10):" -#: src/flacng/plugin.c:457 -msgid "FLAC Audio Plugin " -msgstr "Модуль поддержки FLAC " +#: src/flacng/plugin.c:380 +msgid "About FLAC Audio Plugin" +msgstr "О модуле поддержки FLAC" -#: src/flacng/plugin.c:458 +#: src/flacng/plugin.c:381 msgid "" "\n" "\n" @@ -2648,15 +1555,11 @@ "\n" "http://www.skytale.net/projects/bmp-flac2/" -#: src/flacng/plugin.c:464 -msgid "About FLAC Audio Plugin" -msgstr "О модуле поддержки FLAC" - -#: src/gnomeshortcuts/gnomeshortcuts.c:306 +#: src/gnomeshortcuts/gnomeshortcuts.c:303 msgid "About Gnome Shortcut Plugin" msgstr "О модуле \"ГорÑчие клавиши\" Ð´Ð»Ñ Gnome" -#: src/gnomeshortcuts/gnomeshortcuts.c:307 +#: src/gnomeshortcuts/gnomeshortcuts.c:304 msgid "" "Gnome Shortcut Plugin\n" "Let's you control the player with Gnome's shortcuts.\n" @@ -2671,516 +1574,487 @@ "Copyright (C) 2007 Sascha Hlusiak \n" "\n" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:273 -msgid "Open Files" -msgstr "Открыть файлы" - -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 -msgid "Add Files" -msgstr "Добавить файлы" - -#: src/gntui/gntui.c:271 -msgid "Audacious2" -msgstr "Audacious2" - -#: src/gntui/gntui.c:312 -msgid "gnt interface" -msgstr "Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ gnt" - -#: src/gtkui/actions.c:257 src/skins/ui_main.c:818 -msgid "Can't jump to time when no track is being played.\n" -msgstr "" -"Ðевозможно перейти к указанному времени, еÑли дорожка не проигрываетÑÑ.\n" - -#: src/gtkui/actions.c:272 src/gtkui/ui_manager.c:204 -#: src/gtkui/ui_manager.c:205 src/skins/ui_main.c:833 -#: src/skins/ui_manager.c:410 src/skins/ui_manager.c:411 -msgid "Jump to Time" -msgstr "Перейти к указанному времени" +#: src/gtkui/columns.c:36 +msgid "Entry number" +msgstr "Ð’Ñтупительный номер" -#: src/gtkui/actions.c:289 src/skins/ui_main.c:854 -msgid "minutes:seconds" -msgstr "минут:Ñекунд" - -#: src/gtkui/actions.c:299 src/skins/ui_main.c:864 -msgid "Track length:" -msgstr "Длина дорожки:" +#: src/gtkui/columns.c:36 src/search-tool/search-tool.c:43 +msgid "Title" +msgstr "Ðазвание" -#: src/gtkui/actions.c:610 src/skins/ui_playlist.c:648 -#, c-format -msgid "Error writing playlist \"%s\": %s" -msgstr "Ошибка запиÑи ÑпиÑка воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ \"%s\": %s" +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:42 +msgid "Artist" +msgstr "ÐртиÑÑ‚" + +#: src/gtkui/columns.c:37 +msgid "Year" +msgstr "Год" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:43 +msgid "Album" +msgstr "Ðльбом" -#: src/gtkui/actions.c:625 src/skins/ui_playlist.c:670 -#, c-format -msgid "%s already exist. Continue?" -msgstr "%s уже ÑущеÑтвует. Продолжить?" +#: src/gtkui/columns.c:37 +msgid "Track" +msgstr "Дорожка" -#: src/gtkui/actions.c:651 src/skins/ui_manager.c:214 -msgid "Export Playlist" -msgstr "Выгрузить ÑпиÑок воÑпроизведениÑ" +#: src/gtkui/columns.c:37 +msgid "Queue position" +msgstr "Очередь размещениÑ" + +#: src/gtkui/columns.c:38 +msgid "Length" +msgstr "Длинна" + +#: src/gtkui/columns.c:38 +msgid "File path" +msgstr "Путь к файлу" -#: src/gtkui/actions.c:723 src/skins/ui_manager.c:211 -msgid "Import Playlist" -msgstr "Загрузить ÑпиÑок воÑпроизведениÑ" +#: src/gtkui/columns.c:38 +msgid "File name" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/gtkui/columns.c:38 +msgid "Custom title" +msgstr "Ðазвание вручную:" + +#: src/gtkui/columns.c:39 +msgid "Bitrate" +msgstr "Битрейт" + +#: src/gtkui/columns.c:278 +msgid "Choose Columns" +msgstr "Выбрать Ñтолбики" + +#: src/gtkui/columns.c:292 +msgid "Available:" +msgstr "ДоÑтупно:" + +#: src/gtkui/columns.c:326 +msgid "Chosen:" +msgstr "Выбрано:" + +#: src/gtkui/layout.c:122 +msgid "Dock at Left" +msgstr "Прикрепить Ñлева" + +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "Прикрепить Ñправа" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "Прикрепить наверху" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "Прикрепить внизу" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "Открепить" + +#: src/gtkui/layout.c:123 src/ladspa/plugin.c:644 +msgid "Disable" +msgstr "Отключить" + +#: src/gtkui/menus.c:131 +msgid "_Open Files ..." +msgstr "_Открыть файлы ..." + +#: src/gtkui/menus.c:132 +msgid "Open _URL ..." +msgstr "Открыть _URL ..." + +#: src/gtkui/menus.c:133 +msgid "_Add Files ..." +msgstr "_Добавить файлы ..." + +#: src/gtkui/menus.c:134 +msgid "Add U_RL ..." +msgstr "Добавить U_RL ..." + +#: src/gtkui/menus.c:136 +msgid "A_bout ..." +msgstr "О_ программе ..." + +#: src/gtkui/menus.c:137 +msgid "_Preferences ..." +msgstr "_ÐаÑтройка..." + +#: src/gtkui/menus.c:138 src/skins/ui_manager.c:406 +msgid "_Quit" +msgstr "_Выход" + +#: src/gtkui/menus.c:141 +msgid "_Play" +msgstr "_ВоÑпроизведение" + +#: src/gtkui/menus.c:142 +msgid "Paus_e" +msgstr "Пауз_а" + +#: src/gtkui/menus.c:143 +msgid "_Stop" +msgstr "_Стоп" + +#: src/gtkui/menus.c:144 +msgid "Pre_vious" +msgstr "пре_дыдущее" + +#: src/gtkui/menus.c:145 +msgid "_Next" +msgstr "_Следующее" + +#: src/gtkui/menus.c:147 +msgid "_Repeat" +msgstr "_Повтор" + +#: src/gtkui/menus.c:148 +msgid "S_huffle" +msgstr "Ð’_разброÑ" + +#: src/gtkui/menus.c:149 +msgid "N_o Playlist Advance" +msgstr "Ð_е передвигатьÑÑ Ð¿Ð¾ ÑпиÑку" + +#: src/gtkui/menus.c:150 +msgid "Stop _After This Song" +msgstr "ОÑтановить _поÑле Ñтой пеÑни" + +#: src/gtkui/menus.c:152 src/gtkui/menus.c:212 +msgid "Song _Info ..." +msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ _пеÑне" + +#: src/gtkui/menus.c:153 +msgid "Jump to _Time ..." +msgstr "Перейти к _времени ..." + +#: src/gtkui/menus.c:154 +msgid "_Jump to Song ..." +msgstr "_Перейти к пеÑне ..." + +#: src/gtkui/menus.c:157 +msgid "By Track _Number" +msgstr "По _номеру Трека" + +#: src/gtkui/menus.c:158 +msgid "By _Title" +msgstr "По _названию" + +#: src/gtkui/menus.c:159 +msgid "By _Artist" +msgstr "По _артиÑту" + +#: src/gtkui/menus.c:160 +msgid "By A_lbum" +msgstr "По а_льбому" + +#: src/gtkui/menus.c:161 +msgid "By Release _Date" +msgstr "По _дате выпуÑка" + +#: src/gtkui/menus.c:162 +msgid "By _File Path" +msgstr "По раÑположению _файла" + +#: src/gtkui/menus.c:163 +msgid "By _Custom Title" +msgstr "По _заданному названию файла" + +#: src/gtkui/menus.c:165 +msgid "R_everse Order" +msgstr "Ð’ _обратном порÑдке" + +#: src/gtkui/menus.c:166 +msgid "_Random Order" +msgstr "Ð’ _Ñлучайном порÑдке" + +#: src/gtkui/menus.c:169 src/gtkui/menus.c:214 +msgid "_Refresh" +msgstr "Обновить" + +#: src/gtkui/menus.c:170 +msgid "Remove _Unavailable Files" +msgstr "Убрать _недоÑтупные файлы" + +#: src/gtkui/menus.c:172 +msgid "_Sort" +msgstr "_Сортировать" + +#: src/gtkui/menus.c:174 +msgid "_New" +msgstr "_Ðовый" + +#: src/gtkui/menus.c:175 src/gtkui/menus.c:225 +msgid "_Close" +msgstr "Закрыть" -#: src/gtkui/ui_gtk.c:72 +#: src/gtkui/menus.c:177 +msgid "_Import ..." +msgstr "_Импортировать ..." + +#: src/gtkui/menus.c:178 +msgid "_Export ..." +msgstr "_ЭкÑпортировать ..." + +#: src/gtkui/menus.c:180 +msgid "_Playlist Manager ..." +msgstr "_Управление ÑпиÑком ..." + +#: src/gtkui/menus.c:181 +msgid "_Queue Manager ..." +msgstr "_Управление очередью ..." + +#: src/gtkui/menus.c:184 +msgid "Volume _Up" +msgstr "ГромкоÑÑ‚ÑŒ _больше" + +#: src/gtkui/menus.c:185 +msgid "Volume _Down" +msgstr "ГромкоÑÑ‚ÑŒ _меньше" + +#: src/gtkui/menus.c:187 +msgid "_Equalizer" +msgstr "_Эквалайзер" + +#: src/gtkui/menus.c:189 +msgid "E_ffects" +msgstr "Э_ффекты" + +#: src/gtkui/menus.c:192 +msgid "_Interface" +msgstr "_ИнтерфейÑ" + +#: src/gtkui/menus.c:193 +msgid "_Visualizations" +msgstr "_ВизуализациÑ" + +#: src/gtkui/menus.c:195 +msgid "Show _Menu Bar" +msgstr "Показывать _панель меню" + +#: src/gtkui/menus.c:196 +msgid "Show I_nfo Bar" +msgstr "Показывать п_анель информации" + +#: src/gtkui/menus.c:197 +msgid "Show _Status Bar" +msgstr "Показывать _Ñтроку ÑоÑтоÑниÑ" + +#: src/gtkui/menus.c:199 +msgid "Show Column _Headers" +msgstr "Показывать заголовки _Ñтолбцов" + +#: src/gtkui/menus.c:200 +msgid "Choose _Columns ..." +msgstr "Показывать _Ñтолбцы" + +#: src/gtkui/menus.c:201 +msgid "Scrol_l on Song Change" +msgstr "Прокручивать при Ñмене пеÑни" + +#: src/gtkui/menus.c:204 +msgid "_File" +msgstr "_Файл" + +#: src/gtkui/menus.c:205 +msgid "_Playback" +msgstr "_ВоÑпроизведение" + +#: src/gtkui/menus.c:206 +msgid "P_laylist" +msgstr "С_пиÑок" + +#: src/gtkui/menus.c:207 src/gtkui/menus.c:221 +msgid "_Services" +msgstr "_Службы" + +#: src/gtkui/menus.c:208 +msgid "_Output" +msgstr "_Вывод" + +#: src/gtkui/menus.c:209 +msgid "_View" +msgstr "_Вид" + +#: src/gtkui/menus.c:213 +msgid "_Queue/Unqueue" +msgstr "_Элемент очереди" + +#: src/gtkui/menus.c:216 +msgid "Cu_t" +msgstr "_Вырезать" + +#: src/gtkui/menus.c:217 +msgid "_Copy" +msgstr "_Копировать" + +#: src/gtkui/menus.c:218 +msgid "_Paste" +msgstr "_Ð’Ñтавить" + +#: src/gtkui/menus.c:219 +msgid "Select _All" +msgstr "Выбрать _вÑÑ‘" + +#: src/gtkui/menus.c:224 +msgid "_Rename" +msgstr "_Переименовать" + +#: src/gtkui/ui_gtk.c:95 msgid "GTK Interface" msgstr "Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ GTK" -#: src/gtkui/ui_gtk.c:281 src/skins/ui_main.c:388 +#: src/gtkui/ui_gtk.c:156 src/skins/ui_main.c:303 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.c:287 src/skins/ui_main.c:390 src/skins/ui_main.c:2166 +#: src/gtkui/ui_gtk.c:162 +msgid "Buffering ..." +msgstr "Ð‘ÑƒÑ„ÐµÑ€Ð¸Ð·Ð°Ñ†Ð¸Ñ ..." + +#: src/gtkui/ui_gtk.c:165 src/skins/ui_main.c:305 src/skins/ui_main.c:1504 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_manager.c:35 src/gtkui/ui_manager.c:36 -#: src/skins/ui_manager.c:53 src/skins/ui_manager.c:54 -msgid "Stop after Current Song" -msgstr "ОÑтановить поÑле текущей дорожки" +#: src/gtkui/ui_gtk.c:216 src/skins/plugin.c:190 +msgid "Error" +msgstr "Ошибка" -#: src/gtkui/ui_manager.c:38 src/gtkui/ui_manager.c:39 -#: src/skins/ui_manager.c:59 src/skins/ui_manager.c:60 -msgid "Repeat" -msgstr "Повтор" +#: src/gtkui/ui_playlist_notebook.c:97 +msgid "Close" +msgstr "Закрыть" -#: src/gtkui/ui_manager.c:41 src/gtkui/ui_manager.c:42 -#: src/skins/ui_manager.c:62 src/skins/ui_manager.c:63 -msgid "Shuffle" -msgstr "Случайно" +#: src/gtkui/ui_statusbar.c:105 src/skins/ui_main.c:460 +msgid "mono" +msgstr "моно" -#: src/gtkui/ui_manager.c:44 src/gtkui/ui_manager.c:45 -#: src/skins/ui_manager.c:65 src/skins/ui_manager.c:66 -msgid "No Playlist Advance" -msgstr "Без Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑпиÑку воÑпроизведениÑ" +#: src/gtkui/ui_statusbar.c:107 src/skins/ui_main.c:459 +msgid "stereo" +msgstr "Ñтерео" -#: src/gtkui/ui_manager.c:47 -msgid "Show playlists" -msgstr "Показать ÑпиÑки воÑпроизведениÑ" - -#: src/gtkui/ui_manager.c:48 -msgid "Show/hide playlists" -msgstr "Показать/Ñкрыть ÑпиÑки воÑпроизведениÑ" - -#: src/gtkui/ui_manager.c:50 -msgid "Show infoarea" -msgstr "Показать информационное поле" - -#: src/gtkui/ui_manager.c:51 -msgid "Show/hide infoarea" -msgstr "Показать/Ñкрыть информационное поле" - -#: src/gtkui/ui_manager.c:53 -msgid "Show main menu" -msgstr "Показать главное меню" - -#: src/gtkui/ui_manager.c:54 -msgid "Show/hide main menu" -msgstr "Показать/Ñкрыть главное меню" - -#: src/gtkui/ui_manager.c:56 -msgid "Show statusbar" -msgstr "Показать Ñтроку ÑоÑтоÑниÑ" - -#: src/gtkui/ui_manager.c:57 -msgid "Show/hide statusbar" -msgstr "Показать/Ñкрыть Ñтроку ÑоÑтоÑниÑ" +#: src/gtkui/ui_statusbar.c:109 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d канал" +msgstr[1] "%d каналов" +msgstr[2] "%d каналы" -#: src/gtkui/ui_manager.c:69 src/gtkui/ui_manager.c:70 -#: src/skins/ui_manager.c:170 src/skins/ui_manager.c:171 -msgid "Pause" -msgstr "Пауза" +#: src/gtkui/ui_statusbar.c:124 +#, c-format +msgid "%d kbps" +msgstr "%d кбит/Ñ" + +#: src/hotkey/gui.c:71 +msgid "Previous Track" +msgstr "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ°" + +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "ВоÑпроизвеÑти" -#: src/gtkui/ui_manager.c:72 src/gtkui/ui_manager.c:73 src/hotkey/gui.c:73 -#: src/skins/ui_manager.c:173 src/skins/ui_manager.c:174 +#: src/hotkey/gui.c:73 +msgid "Pause/Resume" +msgstr "Пауза/Продолжить" + +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 msgid "Stop" msgstr "ОÑтановить" -#: src/gtkui/ui_manager.c:75 src/gtkui/ui_manager.c:76 -#: src/skins/ui_manager.c:176 src/skins/ui_manager.c:177 -msgid "Previous" -msgstr "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ°" - -#: src/gtkui/ui_manager.c:78 src/gtkui/ui_manager.c:79 -#: src/skins/ui_manager.c:179 src/skins/ui_manager.c:180 -msgid "Next" +#: src/hotkey/gui.c:75 +msgid "Next Track" msgstr "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ°" -#: src/gtkui/ui_manager.c:84 src/skins/ui_manager.c:197 -msgid "Playlist" -msgstr "СпиÑок воÑпроизведениÑ" +#: src/hotkey/gui.c:76 +msgid "Forward 5 Seconds" +msgstr "Перемотать вперёд на 5 Ñек." -#: src/gtkui/ui_manager.c:86 src/gtkui/ui_manager.c:87 -#: src/skins/ui_manager.c:199 src/skins/ui_manager.c:200 -msgid "New Playlist" -msgstr "Ðовый ÑпиÑок" +#: src/hotkey/gui.c:77 +msgid "Rewind 5 Seconds" +msgstr "Перемотать назад на 5 Ñек." -#: src/gtkui/ui_manager.c:89 src/gtkui/ui_manager.c:90 -#: src/skins/ui_manager.c:208 src/skins/ui_manager.c:209 -msgid "Delete Playlist" -msgstr "Удалить ÑпиÑок" +#: src/hotkey/gui.c:78 +msgid "Mute" +msgstr "Приглушить" -#: src/gtkui/ui_manager.c:92 -msgid "Import Playlist ..." -msgstr "Загрузить ÑпиÑок..." +#: src/hotkey/gui.c:79 +msgid "Volume Up" +msgstr "Громче" -#: src/gtkui/ui_manager.c:93 src/skins/ui_manager.c:212 -msgid "Loads a playlist file into the selected playlist." -msgstr "Загрузить ÑпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸Ð· файла в выбранный ÑпиÑок." +#: src/hotkey/gui.c:80 +msgid "Volume Down" +msgstr "Тише" -#: src/gtkui/ui_manager.c:95 -msgid "Export Playlist ..." -msgstr "Выгрузить ÑпиÑок..." +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Jump to File" +msgstr "Перейти к файлу" -#: src/gtkui/ui_manager.c:96 src/skins/ui_manager.c:215 -msgid "Saves the selected playlist." -msgstr "Сохранить выбранный ÑпиÑок воÑпроизведениÑ." +#: src/hotkey/gui.c:82 +msgid "Toggle Player Windows" +msgstr "Показать/Ñкрыть окна проигрывателÑ" + +#: src/hotkey/gui.c:83 +msgid "Show On-Screen-Display" +msgstr "Отобразить Ñкранное Ñообщение (OSD)" + +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "Переключить на повтор" + +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "Переключить на раÑброÑ" -#: src/gtkui/ui_manager.c:98 src/skins/ui_manager.c:217 -msgid "Save All Playlists" -msgstr "Сохранить вÑе ÑпиÑки воÑпроизведениÑ" +#: src/hotkey/gui.c:95 +msgid "(none)" +msgstr "(нет)" -#: src/gtkui/ui_manager.c:99 src/skins/ui_manager.c:218 +#: src/hotkey/gui.c:232 msgid "" -"Saves all the playlists that are open. Note that this is done automatically " -"when Audacious quits." +"It is not recommended to bind the primary mouse buttons without modificators.\n" +"\n" +"Do you want to continue?" msgstr "" -"Сохранить вÑе открытые ÑпиÑки воÑпроизведениÑ. Это делаетÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки " -"при закрытии Audacious." +"Ðе рекомендуетÑÑ Ð´ÐµÐ»Ð°Ñ‚ÑŒ привÑзки к оÑновным кнопкам мыши без клавиш-модификаторов.\n" +"\n" +"Продолжить?" -#: src/gtkui/ui_manager.c:103 -msgid "Refresh" -msgstr "Обновить" +#: src/hotkey/gui.c:234 +msgid "Binding mouse buttons" +msgstr "ПривÑзки к кнопкам мыши" -#: src/gtkui/ui_manager.c:104 src/skins/ui_manager.c:223 -msgid "Refreshes metadata associated with a playlist entry." -msgstr "Обновить метаданные и ÑоотнеÑти их Ñ Ð·Ð°Ð¿Ð¸ÑÑми ÑпиÑка воÑпроизведениÑ." +#: src/hotkey/gui.c:384 +msgid "Global Hotkey Plugin Configuration" +msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð“Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ðµ \"горÑчие клавиши\"" -#: src/gtkui/ui_manager.c:107 -msgid "Playlist Manager" -msgstr "Менеджер ÑпиÑков" +#: src/hotkey/gui.c:400 +msgid "" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." +msgstr "" +"Ðажмите комбинацию клавиш в текÑтовом поле.\n" +"Можно также Ñделать привÑзки к кнопкам мыши." -#: src/gtkui/ui_manager.c:108 src/skins/ui_manager.c:227 -msgid "Opens the playlist manager." -msgstr "Открыть менеджер ÑпиÑков." +#: src/hotkey/gui.c:405 +msgid "Hotkeys:" +msgstr "ГорÑчие клавиши:" -#: src/gtkui/ui_manager.c:111 -msgid "Add URL ..." -msgstr "Добавить адреÑ..." +#: src/hotkey/gui.c:424 +msgid "Action:" +msgstr "ДейÑтвие:" -#: src/gtkui/ui_manager.c:112 src/skins/ui_manager.c:237 -msgid "Adds a remote track to the playlist." -msgstr "Добавить звуковой поток из Ñети в ÑпиÑок воÑпроизведениÑ." - -#: src/gtkui/ui_manager.c:115 -msgid "Add Files ..." -msgstr "Добавить файлы..." - -#: src/gtkui/ui_manager.c:116 src/skins/ui_manager.c:241 -msgid "Adds files to the playlist." -msgstr "Добавить файлы в ÑпиÑок воÑпроизведениÑ." - -#: src/gtkui/ui_manager.c:119 src/skins/ui_manager.c:264 -msgid "Remove All" -msgstr "Удалить вÑе" - -#: src/gtkui/ui_manager.c:120 src/skins/ui_manager.c:265 -msgid "Removes all entries from the playlist." -msgstr "Удалить вÑе запиÑи из ÑпиÑка воÑпроизведениÑ." - -#: src/gtkui/ui_manager.c:123 src/skins/ui_manager.c:290 -msgid "Remove Unselected" -msgstr "Удалить не отмеченные" - -#: src/gtkui/ui_manager.c:124 src/skins/ui_manager.c:291 -msgid "Remove unselected entries from the playlist." -msgstr "Удалить из ÑпиÑка воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ðµ выделенные запиÑи." - -#: src/gtkui/ui_manager.c:127 src/skins/ui_manager.c:294 -msgid "Remove Selected" -msgstr "Удалить выбранные" - -#: src/gtkui/ui_manager.c:128 src/skins/ui_manager.c:295 -msgid "Remove selected entries from the playlist." -msgstr "Удалить из ÑпиÑка воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð½Ñ‹Ðµ запиÑи." - -#: src/gtkui/ui_manager.c:131 -msgid "Sort" -msgstr "Сортировка" - -#: src/gtkui/ui_manager.c:132 src/skins/ui_manager.c:330 -#: src/skins/ui_manager.c:360 -msgid "By Track Number" -msgstr "По номеру дорожки" - -#: src/gtkui/ui_manager.c:134 src/skins/ui_manager.c:278 -#: src/skins/ui_manager.c:306 src/skins/ui_manager.c:336 -msgid "By Title" -msgstr "По названию" - -#: src/gtkui/ui_manager.c:136 src/skins/ui_manager.c:314 -#: src/skins/ui_manager.c:344 -msgid "By Artist" -msgstr "По иÑполнителю" - -#: src/gtkui/ui_manager.c:138 src/skins/ui_manager.c:310 -#: src/skins/ui_manager.c:340 -msgid "By Album" -msgstr "По альбому" - -#: src/gtkui/ui_manager.c:140 -msgid "By File Path" -msgstr "По имени файла" - -#: src/gtkui/ui_manager.c:142 -msgid "Reverse Order" -msgstr "Ð’ обратном порÑдке" - -#: src/gtkui/ui_manager.c:147 -msgid "Output" -msgstr "Вывод" - -#: src/gtkui/ui_manager.c:149 src/modplug/gui/interface.cxx:572 -msgid "Effects" -msgstr "Эффекты" - -#: src/gtkui/ui_manager.c:151 -msgid "Equalizer" -msgstr "Эквалайзер" - -#: src/gtkui/ui_manager.c:156 src/skins/ui_manager.c:232 -msgid "View" -msgstr "Вид" - -#: src/gtkui/ui_manager.c:157 src/skins/ui_manager.c:233 -msgid "Interface" -msgstr "ИнтерфейÑ" - -#: src/gtkui/ui_manager.c:164 src/skins/ui_manager.c:370 -msgid "File" -msgstr "Файл" - -#: src/gtkui/ui_manager.c:167 -msgid "Components" -msgstr "Компоненты" - -#: src/gtkui/ui_manager.c:169 src/gtkui/ui_manager.c:172 -#: src/skins/ui_manager.c:375 src/skins/ui_manager.c:378 -msgid "View Track Details" -msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ дорожке" - -#: src/gtkui/ui_manager.c:170 src/gtkui/ui_manager.c:173 -#: src/skins/ui_manager.c:376 src/skins/ui_manager.c:379 -msgid "View track details" -msgstr "ПроÑмотреть информацию о дорожке." - -#: src/gtkui/ui_manager.c:175 src/gtkui/ui_manager.c:176 -#: src/skins/ui_manager.c:381 src/skins/ui_manager.c:382 -msgid "About Audacious" -msgstr "Об Audacious" - -#: src/gtkui/ui_manager.c:178 -msgid "Open Files ..." -msgstr "Открыть файлы..." - -#: src/gtkui/ui_manager.c:179 src/skins/ui_manager.c:385 -msgid "Load and play a file" -msgstr "Загрузить и воÑпроизвеÑти файл" - -#: src/gtkui/ui_manager.c:181 -msgid "Open URL ..." -msgstr "Открыть адреÑ..." - -#: src/gtkui/ui_manager.c:182 src/skins/ui_manager.c:388 -msgid "Play media from the selected location" -msgstr "ВоÑпроизвеÑти аудиоданные из выбранного меÑта." - -#: src/gtkui/ui_manager.c:184 src/skins/ui_manager.c:390 -msgid "Plugin services" -msgstr "Службы модулей" - -#: src/gtkui/ui_manager.c:186 src/skins/ui_manager.c:392 -msgid "Preferences" -msgstr "Параметры" - -#: src/gtkui/ui_manager.c:187 src/skins/ui_manager.c:393 -msgid "Open preferences window" -msgstr "Открыть окно параметров" - -#: src/gtkui/ui_manager.c:189 src/skins/ui_manager.c:395 -msgid "_Quit" -msgstr "_Выход" - -#: src/gtkui/ui_manager.c:190 src/skins/ui_manager.c:396 -msgid "Quit Audacious" -msgstr "Закрыть Audacious" - -#: src/gtkui/ui_manager.c:192 src/gtkui/ui_manager.c:193 -#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 -msgid "Set A-B" -msgstr "УÑтановить A-B" - -#: src/gtkui/ui_manager.c:195 src/gtkui/ui_manager.c:196 -#: src/skins/ui_manager.c:401 src/skins/ui_manager.c:402 -msgid "Clear A-B" -msgstr "ОчиÑтить A-B" - -#: src/gtkui/ui_manager.c:198 src/gtkui/ui_manager.c:199 -#: src/skins/ui_manager.c:404 src/skins/ui_manager.c:405 -msgid "Jump to Playlist Start" -msgstr "Перейти к началу ÑпиÑка" - -#: src/gtkui/ui_manager.c:201 src/gtkui/ui_manager.c:202 src/hotkey/gui.c:80 -#: src/skins/ui_manager.c:407 src/skins/ui_manager.c:408 -msgid "Jump to File" -msgstr "Перейти к файлу" - -#: src/gtkui/ui_manager.c:207 src/skins/ui_manager.c:413 -msgid "Queue Toggle" -msgstr "Показать/Ñкрыть очередь" - -#: src/gtkui/ui_manager.c:208 src/skins/ui_manager.c:414 -msgid "Enables/disables the entry in the playlist's queue." -msgstr "Включить или отключить очерёдноÑÑ‚ÑŒ запиÑей в ÑпиÑке воÑпроизведениÑ." - -#: src/gtkui/ui_manager.c:211 src/skins/ui_manager.c:417 -msgid "Copy" -msgstr "Копировать" - -#: src/gtkui/ui_manager.c:214 src/skins/ui_manager.c:419 -msgid "Cut" -msgstr "Вырезать" - -#: src/gtkui/ui_manager.c:217 src/skins/ui_manager.c:421 -msgid "Paste" -msgstr "Ð’Ñтавить" - -#: src/gtkui/ui_manager.c:220 src/skins/ui_manager.c:254 -msgid "Select All" -msgstr "Выбрать вÑе" - -#: src/gtkui/ui_manager.c:221 src/skins/ui_manager.c:255 -msgid "Selects all of the playlist entries." -msgstr "Выбрать вÑе запиÑи ÑпиÑка воÑпроизведениÑ." - -#: src/gtkui/ui_manager.c:224 src/skins/ui_manager.c:258 -msgid "Select None" -msgstr "СнÑÑ‚ÑŒ выделение" - -#: src/gtkui/ui_manager.c:225 src/skins/ui_manager.c:259 -msgid "Deselects all of the playlist entries." -msgstr "СнÑÑ‚ÑŒ выделение Ñ Ñ€Ð°Ð½ÐµÐµ выделенных запиÑей." - -#: src/gtkui/ui_statusbar.c:91 src/skins/ui_main.c:609 -msgid "mono" -msgstr "моно" - -#: src/gtkui/ui_statusbar.c:94 src/skins/ui_main.c:608 -msgid "stereo" -msgstr "Ñтерео" - -#: src/gtkui/ui_statusbar.c:97 -#, c-format -msgid "%d channels" -msgstr "%d каналов" - -#: src/gtkui/ui_statusbar.c:101 -#, c-format -msgid "%s: %d kbps, %d Hz, %s" -msgstr "%s: %d кбит/Ñ, %d Гц, %s" - -#: src/hotkey/gui.c:70 -msgid "Previous Track" -msgstr "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ°" - -#: src/hotkey/gui.c:72 -msgid "Pause/Resume" -msgstr "Пауза/Продолжить" - -#: src/hotkey/gui.c:74 -msgid "Next Track" -msgstr "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ°" - -#: src/hotkey/gui.c:75 -msgid "Forward 5 Seconds" -msgstr "Перемотать вперёд на 5 Ñек." - -#: src/hotkey/gui.c:76 -msgid "Rewind 5 Seconds" -msgstr "Перемотать назад на 5 Ñек." - -#: src/hotkey/gui.c:77 -msgid "Mute" -msgstr "Приглушить" - -#: src/hotkey/gui.c:78 -msgid "Volume Up" -msgstr "Громче" - -#: src/hotkey/gui.c:79 -msgid "Volume Down" -msgstr "Тише" - -#: src/hotkey/gui.c:81 -msgid "Toggle Player Windows" -msgstr "Показать/Ñкрыть окна проигрывателÑ" - -#: src/hotkey/gui.c:82 -msgid "Show On-Screen-Display" -msgstr "Отобразить Ñкранное Ñообщение (OSD)" - -#: src/hotkey/gui.c:92 -msgid "(none)" -msgstr "(нет)" - -#: src/hotkey/gui.c:229 -msgid "" -"It is not recommended to bind the primary mouse buttons without " -"modificators.\n" -"\n" -"Do you want to continue?" -msgstr "" -"Ðе рекомендуетÑÑ Ð´ÐµÐ»Ð°Ñ‚ÑŒ привÑзки к оÑновным кнопкам мыши без клавиш-" -"модификаторов.\n" -"\n" -"Продолжить?" - -#: src/hotkey/gui.c:231 -msgid "Binding mouse buttons" -msgstr "ПривÑзки к кнопкам мыши" - -#: src/hotkey/gui.c:381 -msgid "Global Hotkey Plugin Configuration" -msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð“Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ðµ \"горÑчие клавиши\"" - -#: src/hotkey/gui.c:397 -msgid "" -"Press a key combination inside a text field.\n" -"You can also bind mouse buttons." -msgstr "" -"Ðажмите комбинацию клавиш в текÑтовом поле.\n" -"Можно также Ñделать привÑзки к кнопкам мыши." - -#: src/hotkey/gui.c:402 -msgid "Hotkeys:" -msgstr "ГорÑчие клавиши:" - -#: src/hotkey/gui.c:421 -msgid "Action:" -msgstr "ДейÑтвие:" - -#: src/hotkey/gui.c:429 +#: src/hotkey/gui.c:432 msgid "Key Binding:" msgstr "ПривÑзка клавиш:" -#: src/hotkey/gui.c:660 +#: src/hotkey/gui.c:663 msgid "About Global Hotkey Plugin" msgstr "О модуле Глобальные \"горÑчие клавиши\"" -#: src/hotkey/gui.c:661 +#: src/hotkey/gui.c:664 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3209,31 +2083,31 @@ "\t\t\tJeremy Tan \n" "\n" -#: src/jack/configure.c:71 +#: src/jack/configure.c:66 msgid "Connect to all available jack ports" msgstr "ПодÑоединитьÑÑ Ðº доÑтупным портам" -#: src/jack/configure.c:78 +#: src/jack/configure.c:73 msgid "Connect only the output ports" msgstr "ПодÑоединитьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ к портам вывода" -#: src/jack/configure.c:85 +#: src/jack/configure.c:80 msgid "Connect to no ports" msgstr "Ðе подÑоединÑÑ‚ÑŒÑÑ Ðº портам" -#: src/jack/configure.c:103 +#: src/jack/configure.c:98 msgid "jack Plugin configuration" msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ Jack" -#: src/jack/configure.c:121 +#: src/jack/configure.c:116 msgid "Connection mode:" msgstr "Режим ÑоединениÑ:" -#: src/jack/configure.c:133 +#: src/jack/configure.c:128 msgid "Enable debug printing" msgstr "Выводить отладочную информацию" -#: src/jack/jack.c:437 +#: src/jack/jack.c:435 msgid "" "XMMS jack Driver 0.17\n" "\n" @@ -3251,139 +2125,70 @@ "Портирован Ð´Ð»Ñ Audacious:\n" "Giacomo Lozito Ñ develia.org" -#: src/jack/jack.c:442 +#: src/jack/jack.c:440 msgid "About JACK Output Plugin 0.17" msgstr "О модуле вывода JACK 0.17" -#: src/ladspa/ladspa.c:824 -msgid "This LADSPA plugin has no user controls" -msgstr "Этот модуль LADSPA не имеет пользовательÑких наÑтроек" - -#: src/ladspa/ladspa.c:865 src/ladspa/ladspa.c:952 -msgid "Name" -msgstr "ИмÑ" - -#: src/ladspa/ladspa.c:952 -msgid "UID" -msgstr "UID" - -#: src/ladspa/ladspa.c:1029 -msgid "Installed plugins" -msgstr "УÑтановленные модули" - -#: src/ladspa/ladspa.c:1037 -msgid "Running plugins" -msgstr "Ðктивные модули" - -#: src/ladspa/ladspa.c:1052 -msgid "Add" -msgstr "Добавить" +#: src/ladspa/plugin.c:415 +msgid "About LADSPA Host" +msgstr "Про хоÑÑ‚ LADSPA" -#: src/ladspa/ladspa.c:1055 -msgid "Remove" -msgstr "Удалить" +#: src/ladspa/plugin.c:516 +#, c-format +msgid "%s Settings" +msgstr "%s ÐаÑтройки" -#: src/ladspa/ladspa.c:1066 -msgid "LADSPA Plugin Catalog" -msgstr "Каталог модулей LADSPA" - -#: src/lirc/about.c:63 -msgid "About LIRC Audacious Plugin" -msgstr "О модуле LIRC" - -#: src/lirc/about.c:90 -msgid "LIRC Plugin " -msgstr "Модуль LIRC " - -#: src/lirc/about.c:92 -msgid "" -"\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" -"\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" -msgstr "" -"\n" -"ПроÑтой модуль, позволÑющий управлÑÑ‚ÑŒ Audacious\n" -"Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ инфракраÑного пульта управлениÑ\n" -"и ÑиÑтемного ÑервиÑа LIRC\n" -"\n" -"Ðдаптировано Ð´Ð»Ñ Audacious:\n" -"Tony Vroon ,\n" -"оÑновано на модуле XMMS LIRC:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"Информацию о LIRC можно найти на:\n" -"http://lirc.org" - -#: src/lirc/interface.c:37 -msgid "LIRC plugin settings" -msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ LIRC" - -#: src/lirc/interface.c:61 -msgid "Reconnect to LIRC server" -msgstr "Повторно подключитьÑÑ Ðº Ñерверу LIRC" - -#: src/lirc/interface.c:68 -msgid "Timeout before reconnecting (seconds): " -msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð´Ð¾ повторного ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ (Ñекунд): " - -#: src/lirc/interface.c:75 -msgid "Reconnect" -msgstr "Повторное подключение" - -#: src/lirc/interface.c:79 -msgid "Connection" -msgstr "Соединение" +#: src/ladspa/plugin.c:584 +msgid "LADSPA Host Settings" +msgstr "ÐаÑтройки хоÑта LADSPA" -#: src/lirc/lirc.c:82 -#, c-format -msgid "%s: could not init LIRC support\n" -msgstr "%s: невозможно инициализировать поддержку LIRC\n" +#: src/ladspa/plugin.c:593 +msgid "Module paths:" +msgstr "Путь к модулÑм:" -#: src/lirc/lirc.c:90 -#, c-format +#: src/ladspa/plugin.c:598 msgid "" -"%s: could not read LIRC config file\n" -"%s: please read the documentation of LIRC\n" -"%s: how to create a proper config file\n" -msgstr "" -"%s: невозможно прочитать конфигурационный файл LIRC\n" -"%s: пожалуйÑта, обратитеÑÑŒ к документации LIRC\n" -"%s: как Ñоздать рабочий конфигурационный файл\n" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." +msgstr "" +"ЕÑли путей неÑколько, разделÑйте их двоеточием.\n" +"ПоиÑк оÑущеÑтвлÑетÑÑ Ð¿Ð¾ указанным путÑм и переменной LADSPA_PATH.\n" +"Указав пути, нажмите Enter Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка новых плагинов." -#: src/lirc/lirc.c:117 -#, c-format -msgid "%s: trying to reconnect...\n" -msgstr "%s: повторное Ñоединение...\n" +#: src/ladspa/plugin.c:614 +msgid "Available plugins:" +msgstr "ДоÑтупные плагины:" -#: src/lirc/lirc.c:332 -#, c-format -msgid "%s: unknown command \"%s\"\n" -msgstr "%s: неизвеÑÑ‚Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° \"%s\"\n" +#: src/ladspa/plugin.c:626 +msgid "Enable" +msgstr "Включить" -#: src/lirc/lirc.c:342 -#, c-format -msgid "%s: disconnected from LIRC\n" -msgstr "%s: отключение от LIRC\n" +#: src/ladspa/plugin.c:632 +msgid "Enabled plugins:" +msgstr "Включенные плагины" -#: src/lirc/lirc.c:346 -#, c-format -msgid "%s: will try reconnect every %d seconds...\n" -msgstr "%s: пытатьÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ каждые %d Ñекунд...\n" +#: src/ladspa/plugin.c:647 +msgid "Settings" +msgstr "ÐаÑтройки" + +#: src/lyricwiki/lyricwiki.c:267 +msgid "" +"\n" +"Looking for lyrics..." +msgstr "" +"\n" +"Ищу Ñлова..." -#: src/lyricwiki/lyricwiki.c:244 -msgid "LyricWiki" -msgstr "LyricWiki" +#: src/lyricwiki/lyricwiki.c:304 +msgid "" +"\n" +"Connecting to lyrics.wikia.com..." +msgstr "" +"\n" +"Подключение к lyrics.wikia.com..." -#: src/lyricwiki/lyricwiki.c:337 +#: src/lyricwiki/lyricwiki.c:377 msgid "" "\n" "No lyrics were found." @@ -3391,11 +2196,11 @@ "\n" "ТекÑÑ‚Ñ‹ не обнаружены." -#: src/metronom/metronom.c:90 +#: src/metronom/metronom.c:86 msgid "About Metronom" msgstr "О модуле Метроном" -#: src/metronom/metronom.c:91 +#: src/metronom/metronom.c:87 msgid "" "A Tact Generator by Martin Strauss \n" "\n" @@ -3403,1201 +2208,279 @@ "e.g. tact://77 to play 77 beats per minute\n" "or tact://60*3/4 to play 60 bpm in 3/4 tacts" msgstr "" -"Тактовый генератор (метроном) от Martin Strauss \n" +"Тактовый генератор (метроном) от Martin Strauss \n" "\n" "Ð”Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ð±Ð°Ð²ÑŒÑ‚Ðµ адреÑ, например: tact://такты[*чиÑл/знам]\n" "Ðапример, tact://77 Ð´Ð»Ñ Ð²Ð¾ÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ 77и тактов в минуту\n" "или tact://60*3/4 Ð´Ð»Ñ Ð²Ð¾ÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ 60и тактов в минуту\n" "в размере 3/4" -#: src/metronom/metronom.c:145 +#: src/metronom/metronom.c:144 #, c-format msgid "Tact generator: %d bpm" msgstr "Тактовый генератор: %d тактов/Ñ" -#: src/metronom/metronom.c:147 +#: src/metronom/metronom.c:146 #, c-format msgid "Tact generator: %d bpm %d/%d" msgstr "Тактовый генератор: %d такт/мин %d/%d" -#: src/modplug/gui/interface.cxx:137 -msgid "ModPlug Configuration" -msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ ModPlug" - -#: src/modplug/gui/interface.cxx:174 -msgid "16 bit" -msgstr "16 бит" - -#: src/modplug/gui/interface.cxx:181 -msgid "8 bit" -msgstr "8 бит" - -#: src/modplug/gui/interface.cxx:212 -msgid "Mono (downmix)" -msgstr "Моно (микшировать 2 канала в 1)" - -#: src/modplug/gui/interface.cxx:241 -msgid "Nearest (fastest)" -msgstr "КуÑочно-поÑтоÑнное (быÑтрейшее)" - -#: src/modplug/gui/interface.cxx:248 -msgid "Linear (fast)" -msgstr "Линейное (быÑтрое)" - -#: src/modplug/gui/interface.cxx:255 -msgid "Spline (good quality)" -msgstr "Сплайны (хорошее качеÑтво)" - -#: src/modplug/gui/interface.cxx:262 -msgid "8-tap Fir (extremely high quality)" -msgstr "8-точечный КИХ (наилучшее качеÑтво)" - -#: src/modplug/gui/interface.cxx:286 -msgid "96 kHz" -msgstr "96 кГц" - -#: src/modplug/gui/interface.cxx:293 -msgid "48 kHz" -msgstr "48 кГц" - -#: src/modplug/gui/interface.cxx:300 -msgid "44 kHz" -msgstr "44 кГц" - -#: src/modplug/gui/interface.cxx:307 -msgid "22 kHz" -msgstr "22 кГц" - -#: src/modplug/gui/interface.cxx:315 -msgid "Sampling Rate" -msgstr "ЧаÑтота" - -#: src/modplug/gui/interface.cxx:349 src/modplug/gui/interface.cxx:411 -#: src/modplug/gui/interface.cxx:477 src/modplug/gui/interface.cxx:539 -msgid "Enable" -msgstr "Включить" +#: src/mixer/plugin.c:64 +msgid "About Channel Mixer" +msgstr "Про Channel Mixer" + +#: src/mixer/plugin.c:93 +msgid "Channel Mixer Settings" +msgstr "ÐаÑтройки Channel Mixer " + +#: src/mixer/plugin.c:102 +msgid "Output channels:" +msgstr "Каналов на выходе:" + +#: src/mixer/plugin.c:112 +msgid "Changes take effect at the next song change." +msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¾ÑущеÑтвлÑÑŽÑ‚ÑÑ Ð¿Ñ€Ð¸ Ñмене воÑпроизводимой пеÑни." -#: src/modplug/gui/interface.cxx:378 src/modplug/gui/interface.cxx:506 -msgid "Depth" -msgstr "Глубина" - -#: src/modplug/gui/interface.cxx:386 src/modplug/gui/interface.cxx:514 -msgid "Delay" -msgstr "Задержка" - -#: src/modplug/gui/interface.cxx:394 -msgid "Reverb" -msgstr "РеверберациÑ" - -#: src/modplug/gui/interface.cxx:440 -msgid "Amount" -msgstr "Величина" - -#: src/modplug/gui/interface.cxx:448 -msgid "Range" -msgstr "Диапазон" - -#: src/modplug/gui/interface.cxx:456 -msgid "Bass Boost" -msgstr "УÑиление баÑа" - -#: src/modplug/gui/interface.cxx:522 src/mpg123/mpg123.c:174 +#: src/mpg123/mpg123.c:191 msgid "Surround" msgstr "Объёмное звучание" -#: src/modplug/gui/interface.cxx:561 -msgid "" -"Note: Setting the preamp\n" -"too high may cause clipping\n" -"(annoying clicks and pops)!" -msgstr "" -"Важно: УÑтановка Ñлишком большого значениÑ\n" -"предуÑÐ¸Ð»ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ вызвать отÑечение Ñигнала,\n" -"и, как ÑледÑтвие, щелчки и треÑк!" - -#: src/modplug/gui/interface.cxx:567 -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "Preamp" -msgstr "ПредуÑиление" - -#: src/modplug/gui/interface.cxx:601 -msgid "Use Filename as Song Title" -msgstr "ИÑпользовать Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° как название дорожки" - -#: src/modplug/gui/interface.cxx:606 -msgid "Fast Playlist Info" -msgstr "БыÑÑ‚Ñ€Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ ÑпиÑка воÑпроизведениÑ" - -#: src/modplug/gui/interface.cxx:617 -msgid "Noise Reduction" -msgstr "Шумоподавление" - -#: src/modplug/gui/interface.cxx:623 -msgid "Play Amiga MOD" -msgstr "Играть Amiga MOD" - -#: src/modplug/gui/interface.cxx:646 -msgid "Don't loop" -msgstr "Ðе по кругу" - -#: src/modplug/gui/interface.cxx:658 -msgid "Loop" -msgstr "По кругу" - -#: src/modplug/gui/interface.cxx:671 -msgid "time(s)" -msgstr "времÑ(Ñ)" - -#: src/modplug/gui/interface.cxx:677 -msgid "Loop forever" -msgstr "По кругу беÑпрерывно" - -#: src/modplug/gui/interface.cxx:684 -msgid "Looping" -msgstr "БеÑпрерывно" - -#: src/modplug/gui/interface.cxx:859 -msgid "MOD Info" -msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ MOD" - -#: src/modplug/gui/interface.cxx:878 -msgid "" -"Filename:\n" -"Title:\n" -"Type:\n" -"Length:\n" -"Speed:\n" -"Tempo:\n" -"Samples:\n" -"Instruments:\n" -"Patterns:\n" -"Channels:" -msgstr "" -"Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°:\n" -"Ðазвание:\n" -"Тип:\n" -"Длина:\n" -"СкороÑÑ‚ÑŒ:\n" -"Темп:\n" -"СÑмплы:\n" -"ИнÑтрументы:\n" -"РитмичноÑÑ‚ÑŒ:\n" -"Каналы:" - -#: src/modplug/gui/interface.cxx:883 -msgid "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" -msgstr "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" - -#: src/modplug/gui/interface.cxx:913 -msgid "Samples" -msgstr "СÑмплы" - -#: src/modplug/gui/interface.cxx:938 -msgid "Instruments" -msgstr "ИнÑтрументы" - -#: src/modplug/gui/interface.cxx:959 -msgid "Message" -msgstr "Сообщение" - -#: src/modplug/gui/main.cxx:51 -msgid "Modplug Input Plugin for Audacious ver" -msgstr "Модуль ввода Modplug Ð´Ð»Ñ Audacious, верÑÐ¸Ñ " - -#: src/modplug/gui/main.cxx:52 -msgid "" -"\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." -msgstr "" -"\n" -"Звуковое Ñдро Modplug напиÑал Olivier Lapicque.\n" -"XMMS interface for Modplug напиÑал Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"ÐžÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ Ñопровождение Konstanty Bialkowski.\n" -"Портировал в BMP Theofilos Intzoglou." - -#: src/modplug/gui/main.cxx:55 -msgid "About Modplug" -msgstr "О модуле Modplug" - -#: src/modplug/gui/support.cxx:90 src/modplug/gui/support.cxx:114 -#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 -#, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "Ðе удалоÑÑŒ найти файл изображениÑ: %s" - -#: src/mtp_up/mtp.c:35 -msgid "Upload selected track(s)" -msgstr "Выгрузка выбранных дорожек" - -#: src/mtp_up/mtp.c:291 +#: src/mtp_up/mtp.c:340 msgid "Upload in progress..." msgstr "ПроводитÑÑ Ð²Ñ‹Ð³Ñ€ÑƒÐ·ÐºÐ°..." -#: src/mtp_up/mtp.c:300 -msgid "MTP device handler" -msgstr "Оператор уÑтройÑтва MTP" - -#: src/mtp_up/mtp.c:304 -msgid "Disconnect the device" -msgstr "Отключить уÑтройÑтво" - -#: src/null/null.c:63 -msgid "Null output plugin " -msgstr "Модуль Ðулевой вывод" - -#: src/null/null.c:64 -msgid "" -" by Christian Birchinger \n" -"based on the XMMS plugin by HÃ¥vard KvÃ¥l " -msgstr "" -"Christian Birchinger \n" -"оÑнован на модуле Ð´Ð»Ñ XMMS, от HÃ¥vard KvÃ¥l " - -#: src/null/null.c:67 -msgid "About Null Output" -msgstr "О модуле Ðулевой вывод" - -#: src/null/null.c:93 -msgid "Null output preferences" -msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ Ðулевой вывод" - -#: src/null/null.c:102 -msgid "Run in real time" -msgstr "ЗапуÑтить в режиме реального времени" - -#: src/oss4/configure.c:89 -msgid "1. Default device" -msgstr "1. УÑтройÑтво по умолчанию" - -#: src/oss4/configure.c:151 -msgid "OSS4 Output Plugin Preferences" -msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° OSS4" - -#: src/oss4/configure.c:163 src/OSS/configure.c:213 src/sun/configure.c:181 -msgid "Audio device:" -msgstr "Звуковое уÑтройÑтво:" - -#: src/oss4/configure.c:189 src/OSS/configure.c:235 src/OSS/configure.c:276 -msgid "Use alternate device:" -msgstr "ИÑпользовать другое уÑтройÑтво:" - -#: src/oss4/configure.c:202 -msgid "Save volume between sessions" -msgstr "Сохранить громкоÑÑ‚ÑŒ между ÑеÑÑиÑми" - -#: src/oss4/configure.c:206 -msgid "Enable format conversions made by the OSS software." -msgstr "Включить преобразование формата Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ OSS." - -#: src/oss4/plugin.c:54 -msgid "About OSS4 Plugin" -msgstr "О модуле OSS4" - -#: src/oss4/plugin.c:55 -msgid "" -"OSS4 Output Plugin for Audacious\n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"I would like to thank people on #audacious, especially Tony Vroon and John " -"Lindgren and of course the authors of the previous OSS plugin.\n" -"\n" -"This program is free software: you can redistribute it and/or modify it " -"under the terms of the GNU General Public License as published by the Free " -"Software Foundation, either version 3 of the License, or (at your option) " -"any later version.\n" -"\n" -"This program 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 General Public License for " -"more details.\n" -"\n" -"You should have received a copy of the GNU General Public License along with " -"this program. If not, see .\n" -msgstr "" -"Модуль вывода OSS4 Ð´Ð»Ñ Audacious\n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"Мне хотелоÑÑŒ бы поблагодарить людей на канале #audacious, оÑобенно Tony " -"Vroon и John " -"Lindgren и, конечно, авторов предыдущего Ð¼Ð¾Ð´ÑƒÐ»Ñ OSS.\n" -"\n" -"Эта программа - беÑплатное программное обеÑпечение; вы можете " -"раÑпроÑтранÑÑ‚ÑŒ и/или модифицировать ее\n" -"в ÑоответÑтвии Ñ ÑƒÑловиÑми Лицензии GNU, опубликованную\n" -"Организацией БеÑплатного Программного ОбеÑпечениÑ; вы можете пользоватьÑÑ " -"верÑией 2 Лицензии или\n" -"(по вашему желанию) любой более поздней верÑией.\n" -"\n" -"Эта программа раÑпроÑтранÑетÑÑ Ð² надежде, что она будет полезна,\n" -"но БЕЗ ВСЯКОЙ ГÐРÐÐТИИ; даже без гарании подразумеваемой\n" -"РÐБОТОСПОСОБÐОСТИ или ПРИГОДÐОСТИ ДЛЯ КÐКОЙ-ЛИБО ЦЕЛИ. ПожалуйÑта,\n" -"за подробноÑÑ‚Ñми обратитеÑÑŒ к Лицензии GNU.\n" -"\n" -"Ð’Ñ‹ должны были получить копию Лицензии GNU вмеÑте Ñ Ñтой программой;\n" -"еÑли же нет, то обратитеÑÑŒ к Ñтранице .\n" - -#: src/oss4/utils.c:204 -msgid "OSS4 error" -msgstr "Ошибка OSS4" - -#: src/OSS/configure.c:148 -#, c-format -msgid "Default (%s)" -msgstr "По умолчанию (%s)" - -#: src/OSS/configure.c:197 -msgid "OSS Driver configuration" -msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ OSS" - -#: src/OSS/configure.c:298 src/sun/configure.c:246 -msgid "Devices" -msgstr "УÑтройÑтва" - -#: src/OSS/configure.c:300 src/sun/configure.c:257 -msgid "Buffering:" -msgstr "БуферизациÑ:" - -#: src/OSS/configure.c:313 src/sun/configure.c:288 -msgid "Pre-buffer (percent):" -msgstr "ÐŸÑ€ÐµÐ´Ð±ÑƒÑ„ÐµÑ€Ð¸Ð·Ð°Ñ†Ð¸Ñ (%):" - -#: src/OSS/configure.c:324 src/sun/configure.c:302 -msgid "Buffering" -msgstr "БуферизациÑ" - -#: src/OSS/configure.c:325 -msgid "Mixer Settings:" -msgstr "Параметры микшера:" - -#: src/OSS/configure.c:331 -msgid "Volume controls Master not PCM" -msgstr "Регулировка громкоÑти через Master, а не через PCM" - -#: src/OSS/configure.c:337 src/sun/configure.c:392 -msgid "Mixer" -msgstr "Микшер" - -#: src/OSS/OSS.c:40 -msgid "About OSS Driver" -msgstr "О модуле OSS" - -#: src/OSS/OSS.c:41 -msgid "" -"Audacious OSS Driver\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" -"Модуль OSS Ð´Ð»Ñ Audacious\n" -"\n" -"Эта программа - Ñвободное программное обеÑпечение; вы можете раÑпроÑтранÑÑ‚ÑŒ " -"и/или модифицировать его в ÑоответÑтвии Ñ ÑƒÑловиÑми\n" -"Стандартной ОбщеÑтвенной Лицензии GNU, изданной Фондом Свободного\n" -"Программного ОбеÑпечениÑ; или же верÑией 2 Стандартной ОбщеÑтвенной\n" -"Лицензии Лицензии GNU или (по желанию) любой более поздней её верÑией.\n" -"\n" -"Эта программа раÑпроÑтранÑетÑÑ Ñ Ð½Ð°Ð´ÐµÐ¶Ð´Ð¾Ð¹, что она будет полезна, но БЕЗ\n" -"ВСЯКИХ ГÐРÐÐТИЙÐЫХ ОБЯЗÐТЕЛЬСТВ; без подразумеваемой гарантии товарного\n" -"ÑоÑтоÑÐ½Ð¸Ñ Ð¸ ПРИГОДÐОСТИ ИСПОЛЬЗОВÐÐИЯ ЕРДЛЯ КÐКОЙ-ЛИБО ЦЕЛИ.\n" -"ОбратитеÑÑŒ за подробноÑÑ‚Ñми к Лицензии GNU.\n" -"\n" -"Ð’Ñ‹ должны были получить копию Стандартной ОбщеÑтвенной Лицензии GNU\n" -"вмеÑте Ñ Ñтой программой; еÑли же нет, то напишите об Ñтом по адреÑу: Free " -"Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, " -"USA." - -#: src/pulse_audio/pulse_audio.c:691 -msgid "About Audacious PulseAudio Output Plugin" -msgstr "О модуле вывода PulseAudio" - -#: src/pulse_audio/pulse_audio.c:692 -msgid "" -"Audacious PulseAudio Output Plugin\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" -"Модуль вывода PulseAudio Ð´Ð»Ñ Audacious\n" -"\n" -" Эта программа - беÑплатное программное обеÑпечение; вы можете " -"раÑпроÑтранÑÑ‚ÑŒ и/или модифицировать ее\n" -"в ÑоответÑтвии Ñ ÑƒÑловиÑми Лицензии GNU, опубликованную\n" -"Организацией БеÑплатного Программного ОбеÑпечениÑ; вы можете пользоватьÑÑ " -"верÑией 2 Лицензии или\n" -"(по вашему желанию) любой более поздней верÑией.\n" -"\n" -"Эта программа раÑпроÑтранÑетÑÑ Ð² надежде, что она будет полезна,\n" -"но БЕЗ ВСЯКОЙ ГÐРÐÐТИИ; даже без гарании подразумеваемой\n" -"РÐБОТОСПОСОБÐОСТИ или ПРИГОДÐОСТИ ДЛЯ КÐКОЙ-ЛИБО ЦЕЛИ. ПожалуйÑта,\n" -"за подробноÑÑ‚Ñми обратитеÑÑŒ к Лицензии GNU.\n" -"\n" -"Ð’Ñ‹ должны были получить копию Лицензии GNU вмеÑте Ñ Ñтой программой;\n" -"еÑли же нет, то напишите об Ñтом по адреÑу: Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307,\n" -"USA." - -#: src/resample/plugin.c:78 -msgid "About Sample Rate Converter Plugin" -msgstr "О модуле Преобразование чаÑтоты" - -#: src/resample/plugin.c:134 -msgid "Sample Rate Converter Preferences" -msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ ÐŸÑ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ðµ чаÑтоты" - -#: src/resample/plugin.c:146 -msgid "Rate mappings:" -msgstr "Карта битрейтов:" - -#: src/resample/plugin.c:169 -msgid "All others:" -msgstr "Ð’Ñе оÑтальные:" - -#: src/resample/plugin.c:181 -msgid "Method:" -msgstr "Метод:" - -#: src/scrobbler/configure.c:152 src/scrobbler/configure.c:228 -msgid "Change password" -msgstr "Сменить пароль" - -#: src/scrobbler/configure.c:174 -msgid "Services" -msgstr "Службы" - -#: src/scrobbler/configure.c:196 -msgid "Username:" -msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ:" - -#: src/scrobbler/configure.c:202 -msgid "Password:" -msgstr "Пароль:" - -#: src/scrobbler/configure.c:210 -msgid "Scrobbler URL:" -msgstr "Scrobbler URL:" - -#: src/scrobbler/configure.c:242 -msgid "Last.FM" -msgstr "Last.FM" - -#: src/scrobbler/configure.c:287 -msgid "Scrobbler" -msgstr "Scrobbler" - -#: src/scrobbler/plugin.c:213 -msgid "" -"Audacious AudioScrobbler Plugin\n" -"\n" -"Originally created by Audun Hove and Pipian \n" -msgstr "" -"Модуль AudioScrobbler Ð´Ð»Ñ Audacious\n" -"\n" -"Первоначально был разработан Audun Hove и Pipian " -"\n" - -#: src/scrobbler/plugin.c:215 -msgid "About Scrobbler Plugin" -msgstr "О модуле Scrobbler" - -#: src/sid/xs_about.c:84 -#, c-format -msgid "About %s" -msgstr "О модуле %s" - -#: src/sid/xs_config.c:322 -msgid " Error" -msgstr "Ошибка" - -#: src/sid/xs_fileinfo.c:151 -msgid "General info" -msgstr "ÐžÐ±Ñ‰Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" - -#: src/sid/xs_fileinfo.c:164 -#, c-format -msgid "Tune #%i: " -msgstr "Дорожка #%i: " - -#: src/sid/xs_interface.c:234 -msgid "Audacious-SID configuration" -msgstr "Параметры Audacious-SID" - -#: src/sid/xs_interface.c:270 -msgid "8-bit" -msgstr "8 бит" - -#: src/sid/xs_interface.c:277 -msgid "16-bit" -msgstr "16 бит" - -#: src/sid/xs_interface.c:284 -msgid "Resolution:" -msgstr "Разрешение:" - -#: src/sid/xs_interface.c:315 -msgid "Autopanning" -msgstr "ÐвтоматичеÑкое панорамирование" - -#: src/sid/xs_interface.c:322 -msgid "Channels:" -msgstr "Каналы:" - -#: src/sid/xs_interface.c:366 -msgid "Samplerate:" -msgstr "ЧаÑтота:" - -#: src/sid/xs_interface.c:383 -msgid "Use oversampling" -msgstr "ИÑпользовать повышение чаÑтоты" - -#: src/sid/xs_interface.c:394 -msgid "Factor:" -msgstr "КоÑффициент:" - -#: src/sid/xs_interface.c:406 -msgid "Large factors require more CPU-power" -msgstr "Большие коÑффициенты требуют больше реÑурÑов процеÑÑора." - -#: src/sid/xs_interface.c:412 -msgid "Oversampling:" -msgstr "Повышение чаÑтоты:" - -#: src/sid/xs_interface.c:417 -msgid "Audio" -msgstr "Звук" - -#: src/sid/xs_interface.c:445 -msgid "Force speed" -msgstr "Принудительное уÑкорение" - -#: src/sid/xs_interface.c:449 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"clock speed/frequency. Otherwise the speed is determined from played file " -"itself." -msgstr "" -"ЕÑли включено, то Ñтот параметр заÑтавлÑет иÑпользовать выбранную чаÑтоту. Ð’ " -"другом Ñлучае ÑкороÑÑ‚ÑŒ воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÑетÑÑ Ð¸Ð· Ñамого проигрываемого " -"файла." - -#: src/sid/xs_interface.c:451 -msgid "PAL (50 Hz)" -msgstr "PAL (50 Гц)" - -#: src/sid/xs_interface.c:455 -msgid "" -"PAL is the european TV standard, which uses 50Hz vertical refresh frequency. " -"Most of SID-tunes have been made for PAL computers." -msgstr "" -"PAL ÑвлÑетÑÑ ÐµÐ²Ñ€Ð¾Ð¿ÐµÐ¹Ñким телевизионным Ñтандартом, иÑпользующим 50-герцовую " -"вертикальную развёртку. БольшинÑтво уÑтройÑтв SID было Ñделано Ð´Ð»Ñ PAL-" -"ÑовмеÑтимых компьютеров." - -#: src/sid/xs_interface.c:459 -msgid "NTSC (60 Hz)" -msgstr "NTSC (60 Гц)" - -#: src/sid/xs_interface.c:463 -msgid "" -"NTSC is the TV standard with 60Hz vertical refresh rate (and other features " -"that differ from PAL). It is mainly used in United States, Japan and certain " -"other countries." -msgstr "" -"NTSC ÑвлÑетÑÑ Ñ‚ÐµÐ»ÐµÐ²Ð¸Ð·Ð¸Ð¾Ð½Ð½Ñ‹Ð¼ Ñтандартом Ñ 60-герцовой вертикальной развёрткой " -"(и другими функциÑми, отличающимиÑÑ Ð¾Ñ‚ ÑиÑтемы PAL). Большей чаÑтью, он " -"иÑпользуетÑÑ Ð² Соединённых Штатах, Японии и некоторых других Ñтранах." - -#: src/sid/xs_interface.c:467 -msgid "Clock speed:" -msgstr "Ð¢Ð°ÐºÑ‚Ð¾Ð²Ð°Ñ Ñ‡Ð°Ñтота:" - -#: src/sid/xs_interface.c:484 -msgid "Force model" -msgstr "Принудительно задать модель" - -#: src/sid/xs_interface.c:488 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"SID-chip model. Otherwise the preferred SID model is determined from the " -"file (if PSIDv2NG type) or if not available, this setting is used." -msgstr "" -"ЕÑли включено, Ñтот параметр принудительно Ñмулирует выбранную модель " -"микроÑхемы SID. Ð’ другом Ñлучае, Ð¿Ñ€ÐµÐ´Ð¿Ð¾Ð»Ð¾Ð¶Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»ÑŒ SID определÑетÑÑ " -"из файла (еÑли тип PSIDv2NG type). ЕÑли же еÑли Ñто недоÑтупно, то " -"иÑпользуетÑÑ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ðµ значение." - -#: src/sid/xs_interface.c:490 -msgid "MOS 6581" -msgstr "MOS 6581" - -#: src/sid/xs_interface.c:494 -msgid "" -"MOS/CSG 6581 is the earlier major version of SID chip. It differs from 8580 " -"in few ways, having much fuller filter (which, due to design error, is never " -"same between two different SID-chips) and has the \"volume adjustment bug\", " -"which enables playing of digital samples." -msgstr "" -"MOS/CSG 6581 - Ñто ÑÐ°Ð¼Ð°Ñ ÑÑ‚Ð°Ñ€ÑˆÐ°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð¼Ð¸ÐºÑ€Ð¾Ñхемы SID. Она немного " -"отличаетÑÑ Ð¾Ñ‚ 8580, имеет более полные фильтры (которые, в ÑвÑзи Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹ " -"проектированиÑ, никогда не Ñовпадают в разных микроÑхемах SID) и имеет " -"\"ошибку наÑтойки громкоÑти\", ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð²ÐºÐ»ÑŽÑ‡Ð°ÐµÑ‚ воÑпроизведение цифровых " -"ÑÑмплов." - -#: src/sid/xs_interface.c:498 -msgid "MOS 8580" -msgstr "MOS 8580" - -#: src/sid/xs_interface.c:505 -msgid "SID model:" -msgstr "Модель SID:" - -#: src/sid/xs_interface.c:522 -msgid "SIDPlay 1 (frame-based)" -msgstr "SIDPlay 1 (frame-based)" - -#: src/sid/xs_interface.c:526 -msgid "" -"Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most " -"cases, though." -msgstr "" -"ЭмулÑÑ†Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ libSIDPlay верÑии 1.x, быÑтрее, но не так точно. Хороший " -"выбор в большинÑтве Ñлучаев." - -#: src/sid/xs_interface.c:530 -msgid "SIDPlay 2 (cycle-based)" -msgstr "SIDPlay 2 (cycle-based)" - -#: src/sid/xs_interface.c:534 -msgid "" -"Use libSIDPlay 2.x emulation, which requires powerful CPU due to more exact " -"emulation." -msgstr "" -"ЭмулÑÑ†Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ libSIDPlay верÑии 2.x, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ более мощных CPU в " -"ÑвÑзи в более точной ÑмулÑцией." - -#: src/sid/xs_interface.c:538 -msgid "Emulation library selection:" -msgstr "Выбор библиотеки ÑмулÑции:" - -#: src/sid/xs_interface.c:555 -msgid "Real C64 (SIDPlay 2 only)" -msgstr "Real C64 (только 2-Ñ Ð²ÐµÑ€ÑÐ¸Ñ SIDPlay)" - -#: src/sid/xs_interface.c:562 -msgid "Bank switching" -msgstr "Переключение банков" - -#: src/sid/xs_interface.c:569 -msgid "Transparent ROM" -msgstr "Прозрачное ПЗУ" - -#: src/sid/xs_interface.c:576 -msgid "PlaySID environment" -msgstr "Окружение PlaySID" - -#: src/sid/xs_interface.c:583 -msgid "Memory mode:" -msgstr "Режим памÑти:" - -#: src/sid/xs_interface.c:588 -msgid "Emu#1" -msgstr "Emu#1" - -#: src/sid/xs_interface.c:611 -msgid "Optimization mode (faster, inaccurate)" -msgstr "Режим оптимизации (быÑтро, неточно)" - -#: src/sid/xs_interface.c:615 -msgid "" -"This setting can be used to enable libSIDPlay2's \"optimization mode\", " -"which in downgrades the emulation from cycle-exact to something similar to " -"frame-exact. The result is lower CPU usage, but worse accuracy." -msgstr "" -"Этот параметр может быть иÑпользован Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ \"режима оптимизации\" во " -"2-й верÑии libSIDPlay, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñнижает ÑмулÑцию от cycle-exact к чему-то " -"наподобие frame-exact. Результатом ÑвлÑетÑÑ Ð½ÐµÐ±Ð¾Ð»ÑŒÑˆÐ°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° процеÑÑора Ñ " -"потерей точноÑти." - -#: src/sid/xs_interface.c:617 -msgid "reSID-emulation" -msgstr "ЭмулÑÑ†Ð¸Ñ reSID" - -#: src/sid/xs_interface.c:621 -msgid "" -"reSID is the software SID-chip simulator based on SID reverse-engineering, " -"created by Dag Lem. It is probably the closest thing to real SID available " -"as software-only emulation." -msgstr "" -"reSID Ñто программный ÑимулÑтор микроÑхемы SID, полученный в ходе реверÑ-" -"инжиниринга SID, Ñоздана Dag Lem. ВероÑтно, она ближе вÑех к наÑтоÑщим SID " -"по Ñравнению Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ программными ÑмулÑторами." - -#: src/sid/xs_interface.c:625 -msgid "HardSID" -msgstr "HardSID" - -#: src/sid/xs_interface.c:629 -msgid "" -"HardSID is a EISA/PCI card for PC-compatibles, which can be fitted with a " -"real SID-chip. Software can be used to control the HardSID and combined with " -"software emulation of rest of C64 via libSIDPlay2 HardSID can be used to " -"achieve \"near 100%\" similarity to real C64. For more information, see " -"http://www.hardsid.com/" -msgstr "" -"HardSID Ñто EISA/PCI карта Ð´Ð»Ñ PC-ÑовмеÑтимых уÑтройÑтв, на которых можно " -"размеÑтить наÑтоÑщие микроÑхемы SID. Программы могут быть иÑпользованы Ð´Ð»Ñ " -"ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ HardSID и, Ñоединив её Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð¾Ð¹ ÑмулÑцией оÑтавшихÑÑ C64 через " -"libSIDPlay2, HardSID, можно иÑпользовать Ð´Ð»Ñ Ð´Ð¾ÑÑ‚Ð¸Ð¶ÐµÐ½Ð¸Ñ \"100-процентной " -"близоÑти\" к наÑтоÑщему C64. Дополнительную информацию Ñмотрите на http://" -"www.hardsid.com/" - -#: src/sid/xs_interface.c:633 -msgid "SIDPlay 2 options:" -msgstr "Параметры SIDPlay 2:" - -#: src/sid/xs_interface.c:650 -msgid "Fast (nearest neighbour)" -msgstr "БыÑтро (ближайший ÑÑмпл)" - -#: src/sid/xs_interface.c:654 -msgid "" -"Fastest and also worst sounding sampling method, simply picks nearest " -"neighbouring sample." -msgstr "" -"БыÑтрое и также наихудшее звучание ÑÑмплов, проÑтой поиÑк ближайшего " -"ÑоÑеднего ÑÑмпла." - -#: src/sid/xs_interface.c:658 -msgid "Linear interpolation" -msgstr "Ð›Ð¸Ð½ÐµÐ¹Ð½Ð°Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð¿Ð¾Ð»ÑциÑ" - -#: src/sid/xs_interface.c:662 -msgid "" -"Uses linear interpolation between samples, yielding higher audio quality " -"with less sampling noise." -msgstr "" -"ИÑпользовать линейную интерполÑцию между ÑÑмплами, результатом чего ÑвлÑетÑÑ " -"повышение качеÑтва звука Ñ Ð¼ÐµÐ½ÑŒÑˆÐ¸Ð¼Ð¸ шумами." - -#: src/sid/xs_interface.c:673 -msgid "Resampling (FIR)" -msgstr "Преобразование чаÑтоты (КИХ)" - -#: src/sid/xs_interface.c:680 -msgid "reSID sampling options:" -msgstr "Параметры reSID" - -#: src/sid/xs_interface.c:685 -msgid "Emu#2" -msgstr "Emu#2" - -#: src/sid/xs_interface.c:697 -msgid "Emulate filters" -msgstr "Эмулировать фильтры" - -#: src/sid/xs_interface.c:701 -msgid "" -"This option enables emulation of SID filter. The filter is an essential part " -"of SID's sound capacity, but accurate emulation of it may require quite much " -"CPU power. However, if filter emulation is disabled, tunes won't sound " -"authentic at all if they utilize the filter." -msgstr "" -"Этот параметр активирует ÑмулÑцию фильтра SID. Фильтр ÑвлÑетÑÑ ÑоÑтавной " -"чаÑтью звуковых возможноÑтей SID, но Ñ‚Ð¾Ñ‡Ð½Ð°Ñ ÐµÐ³Ð¾ ÑмулÑÑ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ потребовать " -"значительных реÑурÑов процеÑÑора. Однако, еÑли ÑмулÑÑ†Ð¸Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð° отключена, " -"то мелодии не будут иметь наÑтоÑщее звучание, как было бы, еÑли при их " -"воÑпроизведении иÑпользовалÑÑ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€." - -#: src/sid/xs_interface.c:726 -msgid "FS" -msgstr "FS" - -#: src/sid/xs_interface.c:743 -msgid "FM" -msgstr "FM" - -#: src/sid/xs_interface.c:760 -msgid "FT" -msgstr "FT" - -#: src/sid/xs_interface.c:771 -msgid "Reset values" -msgstr "СброÑить значениÑ" - -#: src/sid/xs_interface.c:776 -msgid "SIDPlay1" -msgstr "SIDPlay1" - -#: src/sid/xs_interface.c:817 -msgid "Export" -msgstr "ЭкÑпорт" - -#: src/sid/xs_interface.c:825 -msgid "Use" -msgstr "ИÑпользовать" - -#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:430 -msgid "Save" -msgstr "Сохранить" - -#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:429 -msgid "Import" -msgstr "Импорт" - -#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:431 -msgid "Delete" -msgstr "Удалить" - -#: src/sid/xs_interface.c:863 -msgid "Filter curve:" -msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð°:" - -#: src/sid/xs_interface.c:868 -msgid "SIDPlay2" -msgstr "SIDPlay2" - -#: src/sid/xs_interface.c:874 -msgid "Filters" -msgstr "Фильтры" - -#: src/sid/xs_interface.c:897 -msgid "Play at least for specified time" -msgstr "ВоÑпроизводить, как минимум, за указанное времÑ" - -#: src/sid/xs_interface.c:901 -msgid "" -"If enabled, the tune is played at least for the specified time, adding " -"silence to the end if necessary." -msgstr "" -"ЕÑли включено, то мелодии проигрываютÑÑ, по меньшей мере, за указанное " -"времÑ, добавлÑÑ Ñ‚Ð¸ÑˆÐ¸Ð½Ñƒ в конце по мере необходимоÑти." - -#: src/sid/xs_interface.c:908 src/sid/xs_interface.c:962 -#: src/sid/xs_interface.c:1142 -msgid "Playtime:" -msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð²Ð¾ÑпроизведениÑ:" - -#: src/sid/xs_interface.c:928 -msgid "Minimum playtime:" -msgstr "Минимальное Ð²Ñ€ÐµÐ¼Ñ Ð²Ð¾ÑпроизведениÑ:" - -#: src/sid/xs_interface.c:945 -msgid "Play for specified time maximum" -msgstr "ВоÑпроизводить указанное макÑимальное времÑ" - -#: src/sid/xs_interface.c:949 -msgid "" -"If enabled, tune is played until specified duration is reached (aka maximum " -"playtime)." -msgstr "" -"ЕÑли включено, то Ð¼ÐµÐ»Ð¾Ð´Ð¸Ñ Ð²Ð¾ÑпроизводитÑÑ Ð´Ð¾ доÑÑ‚Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ " -"длительноÑти (макÑимальное Ð²Ñ€ÐµÐ¼Ñ Ð²Ð¾ÑпроизведениÑ)." +#: src/mtp_up/mtp.c:352 +msgid "Upload to MTP Device" +msgstr "Загрузить на MTP-уÑтройÑтво" + +#: src/mtp_up/mtp.c:353 +msgid "Disconnect MTP Device" +msgstr "Отключить MTP-уÑтройÑтво" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Stopped" +msgstr "ОÑтановлен" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Audacious is not playing." +msgstr "Audacious ничего не воÑпроизводит." -#: src/sid/xs_interface.c:951 -msgid "Only when song length is unknown" -msgstr "Только когда длительноÑÑ‚ÑŒ неизвеÑтна" +#: src/null/null.c:64 +msgid "Null output plugin " +msgstr "Модуль Ðулевой вывод" -#: src/sid/xs_interface.c:955 +#: src/null/null.c:65 msgid "" -"If enabled, the maximum playtime is applied only if song/tune length is not " -"known." +" by Christian Birchinger \n" +"based on the XMMS plugin by HÃ¥vard KvÃ¥l " msgstr "" -"ЕÑли включено, то воÑпроизведение оÑущеÑтвлÑетÑÑ Ð·Ð° макÑимальное времÑ, еÑли " -"длительноÑÑ‚ÑŒ дорожки не извеÑтна." +"Christian Birchinger \n" +"оÑнован на модуле Ð´Ð»Ñ XMMS, от HÃ¥vard KvÃ¥l " -#: src/sid/xs_interface.c:982 -msgid "Maximum playtime:" -msgstr "МакÑимальное Ð²Ñ€ÐµÐ¼Ñ Ð²Ð¾ÑпроизведениÑ:" +#: src/null/null.c:68 +msgid "About Null Output" +msgstr "О модуле Ðулевой вывод" -#: src/sid/xs_interface.c:999 -msgid "Use XSIDPLAY-compatible database" -msgstr "ИÑпользовать XSIDPLAY-ÑовмеÑтимые базы данных" +#: src/null/null.c:89 +msgid "Null output preferences" +msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ Ðулевой вывод" -#: src/sid/xs_interface.c:1003 -msgid "" -"This option enables using of XSIDPLAY compatible song length database. " -"(Refer to Audacious-SID documentation for more information)" -msgstr "" -"Этот параметр активирует иÑпользование XSIDPLAY-ÑовмеÑтимых баз данных " -"длительноÑти мелодий. (Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации обратитеÑÑŒ к " -"документации Audacious-SID)." +#: src/null/null.c:100 +msgid "Run in real time" +msgstr "ЗапуÑтить в режиме реального времени" -#: src/sid/xs_interface.c:1010 -msgid "DB-file:" -msgstr "DB-файл:" +#: src/oss4/configure.c:81 +msgid "1. Default device" +msgstr "1. УÑтройÑтво по умолчанию" -#: src/sid/xs_interface.c:1020 -msgid "Database path and filename" -msgstr "Путь и Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° базы данных" +#: src/oss4/configure.c:138 +msgid "OSS4 Output Plugin Preferences" +msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° OSS4" -#: src/sid/xs_interface.c:1027 -msgid "Browse for song length-database file" -msgstr "Перейти к файлу базы данных длительноÑти мелодий" +#: src/oss4/configure.c:150 src/OSS/configure.c:194 +msgid "Audio device:" +msgstr "Звуковое уÑтройÑтво:" -#: src/sid/xs_interface.c:1049 -msgid "Song length database:" -msgstr "База данных длительноÑти мелодий:" +#: src/oss4/configure.c:178 src/OSS/configure.c:217 src/OSS/configure.c:260 +msgid "Use alternate device:" +msgstr "ИÑпользовать другое уÑтройÑтво:" -#: src/sid/xs_interface.c:1054 -msgid "Songlength" -msgstr "ДлительноÑÑ‚ÑŒ" +#: src/oss4/configure.c:193 +msgid "Save volume between sessions" +msgstr "Сохранить громкоÑÑ‚ÑŒ между ÑеÑÑиÑми" -#: src/sid/xs_interface.c:1072 -msgid "Override generic Tuplez format string" -msgstr "Переопределить Ñтандартную Ñтроку формата Tuplez" +#: src/oss4/configure.c:197 +msgid "Enable format conversions made by the OSS software." +msgstr "Включить преобразование формата Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ OSS." -#: src/sid/xs_interface.c:1076 -msgid "" -"By enabling this option you can specify a custom Tuplez formatting string " -"for SID-files. The SID-plugin specific Tuplez tags are described shortly " -"below." -msgstr "" -"Включив Ñтот параметр, можно указать другую Ñтроку Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Tuplez Ð´Ð»Ñ " -"SID-файлов. Специальные теги Tuplez Ð¼Ð¾Ð´ÑƒÐ»Ñ SID кратко опиÑаны ниже." +#: src/oss4/configure.c:201 +msgid "Enable exclusive mode to prevent virtual mixing." +msgstr "Включить ÑкÑклюзивный режим, избегать виртуального микшированиÑ." -#: src/sid/xs_interface.c:1087 -msgid "Tuplez format string for SID-files" -msgstr "Формат Ñтроки Tuplez Ð´Ð»Ñ SID-файлов" +#: src/oss4/plugin.c:51 +msgid "About OSS4 Plugin" +msgstr "О модуле OSS4" -#: src/sid/xs_interface.c:1090 -msgid "" -"SID-specific Tuplez fields:\n" -"\n" -"sid-format\t\t- Specific fileformat\n" -"sid-model\t\t- 6581 or 8580\n" -"sid-speed\t\t- Timing or speed: PAL/NTSC/etc.\n" -"\n" -"Other \"special\" fields set:\n" -"\n" -"subsong-num, subsong-id" -msgstr "" -"SID-Ñпецифичные Ð¿Ð¾Ð»Ñ Tuplez:\n" -"\n" -"sid-format\t\t- Указать формат файла\n" -"sid-model\t\t- 6581 или 8580\n" -"sid-speed\t\t- Тайминги или ÑкороÑÑ‚ÑŒ: PAL/NTSC/ и Ñ‚.д.\n" -"\n" -"ÐаÑтройка других \"Ñпециальных\" полей:\n" -"\n" -"Ðомер поддорожки, идентификатор поддорожки" +#: src/oss4/utils.c:211 +msgid "OSS4 error" +msgstr "Ошибка OSS4" -#: src/sid/xs_interface.c:1098 -msgid "Song title format:" -msgstr "Формат названиÑ:" +#: src/OSS/configure.c:137 +#, c-format +msgid "Default (%s)" +msgstr "По умолчанию (%s)" -#: src/sid/xs_interface.c:1103 -msgid "Title" -msgstr "Ðазвание" +#: src/OSS/configure.c:178 +msgid "OSS Driver configuration" +msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ OSS" -#: src/sid/xs_interface.c:1125 -msgid "Add sub-tunes to playlist" -msgstr "Добавить поддорожки в ÑпиÑок воÑпроизведениÑ" +#: src/OSS/configure.c:281 +msgid "Devices" +msgstr "УÑтройÑтва" -#: src/sid/xs_interface.c:1129 -msgid "" -"If enabled, sub-tunes of each file will be added to playlist. If disabled, " -"only the default sub-tune will be added." -msgstr "" -"ЕÑли включено, вÑтроенные мелодии каждого файла будут добавлены в ÑпиÑок " -"воÑпроизведениÑ. ЕÑли отключено, то будут добавлены только поддорожки по " -"умолчанию." +#: src/OSS/configure.c:283 +msgid "Buffering:" +msgstr "БуферизациÑ:" -#: src/sid/xs_interface.c:1131 -msgid "Only tunes with specified minimum duration" -msgstr "Только дорожки Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð¹ длительноÑтью" +#: src/OSS/configure.c:296 +msgid "Pre-buffer (percent):" +msgstr "ÐŸÑ€ÐµÐ´Ð±ÑƒÑ„ÐµÑ€Ð¸Ð·Ð°Ñ†Ð¸Ñ (%):" -#: src/sid/xs_interface.c:1135 -msgid "Only add sub-tunes that have a duration of at least specified time." -msgstr "" -"Добавить только те поддорожки, которые имеют продолжительноÑÑ‚ÑŒ не меньше " -"указанного времени." +#: src/OSS/configure.c:307 +msgid "Buffering" +msgstr "БуферизациÑ" -#: src/sid/xs_interface.c:1162 -msgid "Sub-tune handling:" -msgstr "Обработка поддорожек:" +#: src/OSS/configure.c:308 +msgid "Mixer Settings:" +msgstr "Параметры микшера:" -#: src/sid/xs_interface.c:1179 -msgid "Use STIL database" -msgstr "ИÑпользовать базу данных STIL" +#: src/OSS/configure.c:314 +msgid "Volume controls Master not PCM" +msgstr "Регулировка громкоÑти через Master, а не через PCM" -#: src/sid/xs_interface.c:1183 -msgid "" -"If this option is enabled (and the database & HVSC settings below are " -"correctly set), Audacious-SID will use and display additional information " -"from STIL database when HVSC SIDs are played." -msgstr "" -"ЕÑли включён Ñтот параметр (и наÑтройки базы данных и HVSC ниже указаны " -"правильно), Audacious-SID Ñтанет иÑпользовать и отображать дополнительную " -"информацию из базы данных STIL при воÑпроизведении HVSC SID-файлов." +#: src/OSS/configure.c:320 +msgid "Mixer" +msgstr "Микшер" -#: src/sid/xs_interface.c:1190 -msgid "STIL file:" -msgstr "Файл STIL:" +#: src/OSS/OSS.c:41 +msgid "About OSS Driver" +msgstr "О модуле OSS" -#: src/sid/xs_interface.c:1206 -msgid "" -"Path and filename of STIL database file (STIL.txt), usually found from " -"HVSC's DOCUMENTS-subdirectory." -msgstr "" -"Путь и Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° базы данных STIL (STIL.txt), обычно раÑположенных в " -"подкаталоге DOCUMENTS HVSC." +#: src/pulse_audio/pulse_audio.c:669 +msgid "About Audacious PulseAudio Output Plugin" +msgstr "О модуле вывода PulseAudio" -#: src/sid/xs_interface.c:1219 -msgid "Browse for STIL-database file" -msgstr "Перейти к файлу базы данных STIL" +#: src/resample/plugin.c:89 +msgid "About Sample Rate Converter Plugin" +msgstr "О модуле Преобразование чаÑтоты" -#: src/sid/xs_interface.c:1246 -msgid "HVSC path:" -msgstr "Путь HVSC:" +#: src/resample/plugin.c:144 +msgid "Sample Rate Converter Preferences" +msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ ÐŸÑ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ðµ чаÑтоты" -#: src/sid/xs_interface.c:1262 -msgid "" -"Path to base-directory of your High Voltage SID Collection (HVSC), for " -"example /media/C64Music/" -msgstr "" -"Путь к каталогу базы данных вашей High Voltage SID Collection (HVSC), " -"например, /media/C64Music/" +#: src/resample/plugin.c:156 +msgid "Rate mappings:" +msgstr "Карта битрейтов:" -#: src/sid/xs_interface.c:1275 -msgid "Browse for HVSC path" -msgstr "Перейти к HVSC" +#: src/resample/plugin.c:179 +msgid "All others:" +msgstr "Ð’Ñе оÑтальные:" -#: src/sid/xs_interface.c:1297 -msgid "SID Tune Information List (STIL) database:" -msgstr "База данных SID Tune Information List (STIL):" +#: src/resample/plugin.c:191 +msgid "Method:" +msgstr "Метод:" -#: src/sid/xs_interface.c:1321 -msgid "Cancel any changes" -msgstr "Отменить Ñделанные изменениÑ" +#: src/scrobbler/configure.c:123 src/scrobbler/configure.c:198 +msgid "Change password" +msgstr "Сменить пароль" -#: src/sid/xs_interface.c:1328 -msgid "Accept and update changes" -msgstr "ПринÑÑ‚ÑŒ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸ обновить" +#: src/scrobbler/configure.c:144 +msgid "Services" +msgstr "Службы" -#: src/sid/xs_interface.c:1628 -msgid "Audacious-SID Fileinfo" -msgstr "Audacious-SID: Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ файле" +#: src/scrobbler/configure.c:166 +msgid "Username:" +msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ:" -#: src/sid/xs_interface.c:1649 -msgid "Filename:" -msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°:" +#: src/scrobbler/configure.c:172 +msgid "Password:" +msgstr "Пароль:" -#: src/sid/xs_interface.c:1657 -msgid "Songname:" -msgstr "Ðазвание дорожки:" +#: src/scrobbler/configure.c:180 +msgid "Scrobbler URL:" +msgstr "Scrobbler URL:" -#: src/sid/xs_interface.c:1665 -msgid "Composer:" -msgstr "Композитор:" +#: src/scrobbler/configure.c:212 +msgid "Last.FM" +msgstr "Last.FM" -#: src/sid/xs_interface.c:1673 -msgid "Copyright:" -msgstr "ÐвторÑкое право:" +#: src/scrobbler/configure.c:239 +msgid "Scrobbler" +msgstr "Scrobbler" -#: src/sid/xs_interface.c:1717 -msgid "Song Information:" -msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ дорожке:" +#: src/scrobbler/plugin.c:194 +msgid "" +"Audacious AudioScrobbler Plugin\n" +"\n" +"Originally created by Audun Hove and Pipian \n" +msgstr "" +"Модуль AudioScrobbler Ð´Ð»Ñ Audacious\n" +"\n" +"Первоначально был разработан Audun Hove и Pipian \n" -#: src/sid/xs_interface.c:1752 -msgid "Author:" -msgstr "Ðвтор:" +#: src/scrobbler/plugin.c:196 +msgid "About Scrobbler Plugin" +msgstr "О модуле Scrobbler" -#: src/sid/xs_interface.c:1786 -msgid "Duration:" -msgstr "ДлительноÑÑ‚ÑŒ:" +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" +msgstr "Про SDL Output Plugin" -#: src/sid/xs_interface.c:1820 -msgid "Sub-tune Information:" -msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ поддорожке:" +#: src/sdlout/plugin.c:78 +msgid "SDL error" +msgstr "Сбой SDL" -#: src/sid/xs_interface.c:1881 -msgid "Select HVSC song length database" -msgstr "Выберите базу данных длительноÑти дорожек HVSC" +#: src/search-tool/search-tool.c:42 +msgid "Genre" +msgstr "Жанр" -#: src/sid/xs_interface.c:1922 -msgid "Select STIL-database" -msgstr "Выберите базу данных STIL" +#: src/search-tool/search-tool.c:96 src/search-tool/search-tool.c:106 +msgid "Library" +msgstr "Библиотека" -#: src/sid/xs_interface.c:1963 -msgid "Select HVSC location prefix" -msgstr "Выберите Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð°Ð´Ñ€ÐµÑа HVSC" +#: src/search-tool/search-tool.c:591 +msgid "_Create Playlist" +msgstr "_Создать ÑпиÑок" -#: src/sid/xs_interface.c:2004 -msgid "Select SIDPlay2 filters file for importing" -msgstr "Выберите Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ файл фильтров SIDPlay2" +#: src/search-tool/search-tool.c:598 +msgid "_Add to Playlist" +msgstr "_Добавить в ÑпиÑок" -#: src/sid/xs_interface.c:2045 -msgid "Select SIDPlay2 filters file for exporting" -msgstr "Выберите Ð´Ð»Ñ Ð²Ñ‹Ð³Ñ€ÑƒÐ·ÐºÐ¸ файл фильтров SIDPlay2" +#: src/search-tool/search-tool.c:641 +msgid "Search library" +msgstr "ПоиÑк в библиотеке" -#: src/sid/xs_interface.c:2093 src/sid/xs_interface.c:2106 -msgid "Confirm selected action" -msgstr "Подтвердить выбранное дейÑтвие" +#: src/search-tool/search-tool.c:645 +msgid "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." +msgstr "" +"Ð”Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° музыки в библиотеку Audacious, выберите каталог, затем нажмите " +"иконку \"обновить\"." -#: src/sid/xs_interface.c:2123 -msgid "Yes" -msgstr "Да" +#: src/search-tool/search-tool.c:653 +msgid "Please wait ..." +msgstr "ПожалуйÑта подождите ..." -#: src/sid/xs_interface.c:2129 -msgid "No" -msgstr "No" +#: src/search-tool/search-tool.c:675 +msgid "Choose Folder" +msgstr "Выберите каталог" -#: src/skins/plugin.c:179 +#: src/skins/plugin.c:167 msgid "About Skinned GUI" msgstr "О графичеÑком интерфейÑе, иÑпользующем Ñтили" -#: src/skins/plugin.c:180 +#: src/skins/plugin.c:168 msgid "" "Copyright (c) 2008, by Tomasz MoÅ„ \n" "\n" @@ -4605,469 +2488,469 @@ "Copyright (c) 2008, Tomasz MoÅ„ \n" "\n" -#: src/skins/plugin.c:196 -msgid "Skinned Interface" -msgstr "Стили" - -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:207 msgid "_Player:" msgstr "Проигрыватель:" -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:208 msgid "Select main player window font:" msgstr "Выберите шрифт оÑновного окна проигрывателÑ:" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:210 msgid "_Playlist:" msgstr "СпиÑок воÑпроизведениÑ:" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:211 msgid "Select playlist font:" msgstr "Выберите шрифт ÑпиÑка воÑпроизведениÑ:" -#: src/skins/skins_cfg.c:321 +#: src/skins/skins_cfg.c:215 msgid "_Fonts" msgstr "Шрифты" -#: src/skins/skins_cfg.c:323 -msgid "Use Bitmap fonts if available" -msgstr "ИÑпользовать раÑтровые шрифты, еÑли возможно" +#: src/skins/skins_cfg.c:218 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "ИÑпользовать раÑтровые шрифты (поддерживает только ASCII)" + +#: src/skins/skins_cfg.c:220 +msgid "Scroll song title in both directions" +msgstr "Прокручивать название пеÑни в обоих направлениÑÑ…" -#: src/skins/skins_cfg.c:323 -msgid "" -"Use bitmap fonts if they are available. Bitmap fonts do not support Unicode " -"strings." -msgstr "" -"ИÑпользовать раÑтровые шрифты, еÑли они доÑтупны. РаÑтровые шрифты не " -"поддерживают кодировку Юникод." +#: src/skins/skins_cfg.c:298 +msgid "_Skin" +msgstr "Стиль" -#: src/skins/skins_cfg.c:324 -msgid "_Miscellaneous" -msgstr "Разное" +#: src/skins/skins_cfg.c:345 +msgid "Interface Preferences" +msgstr "ÐаÑтройка ИнтерфейÑа" -#: src/skins/skins_cfg.c:325 -msgid "Show separators in playlist" -msgstr "Показать разделители в ÑпиÑке воÑпроизведениÑ" +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "ПредуÑиление" -#: src/skins/skins_cfg.c:327 -msgid "Show window manager decoration" -msgstr "ИÑпользовать оформление оконного менеджера" +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" +msgstr "31 Гц" -#: src/skins/skins_cfg.c:328 -msgid "This enables the window manager to show decorations for windows." -msgstr "Применить к окнам Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ðµ оконного менеджера." +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "63 Гц" -#: src/skins/skins_cfg.c:329 -msgid "Use two-way text scroller" -msgstr "Прокрутка Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð² обоих направлениÑÑ…" +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" +msgstr "125 Гц" -#: src/skins/skins_cfg.c:330 -msgid "" -"If selected, the file information text in the main window will scroll back " -"and forth. If not selected, the text will only scroll in one direction." -msgstr "" -"ЕÑли включено, то текÑÑ‚ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð² оÑновном окне Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±ÑƒÐ´ÐµÑ‚ " -"двигатьÑÑ Ð²Ð¿ÐµÑ€Ñ‘Ð´ и назад. ЕÑли не включено, то текÑÑ‚ будет двигатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ " -"в одном направлении." +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" +msgstr "250 Гц" -#: src/skins/skins_cfg.c:331 -msgid "Disable inline gtk theme" -msgstr "Отключить тему, оÑнованную на библиотеке gtk." +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" +msgstr "500 Гц" -#: src/skins/skins_cfg.c:333 -msgid "Random skin on play" -msgstr "Случайный Ñтиль при воÑпроизведении" +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" +msgstr "1 кГц" -#: src/skins/skins_cfg.c:334 -msgid "Allow loading incomplete skins" -msgstr "Разрешить загрузку незавершённых Ñтилей" +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" +msgstr "2 кГц" -#: src/skins/skins_cfg.c:335 -msgid "" -"If selected, audacious won't refuse loading broken skins. Use only if your " -"favourite skin doesn't work" -msgstr "" -"ЕÑли включено, то audacious не Ñтанет отвергать нерабочие Ñтили. ИÑпользуйте " -"лишь тогда, когда ваш любимый Ñтиль не работает." +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" +msgstr "4 кГц" -#: src/skins/skins_cfg.c:401 -msgid "Color Adjustment" -msgstr "ÐаÑтройка цвета" +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" +msgstr "8 кГц" -#: src/skins/skins_cfg.c:407 -msgid "" -"Audacious allows you to alter the color balance of the skinned UI. The " -"sliders below will allow you to do this." -msgstr "" -"Audacious может изменÑÑ‚ÑŒ цветовой Ð±Ð°Ð»Ð°Ð½Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑкого интерфейÑа Ñтилей. " -"Ползунки ниже позволÑÑ‚ Ñделать Ñто." +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" +msgstr "16 кГц" -#: src/skins/skins_cfg.c:417 -msgid "Blue" -msgstr "Синий" +#: src/skins/ui_equalizer.c:379 +msgid "Audacious Equalizer" +msgstr "Эквалайзер Audacious" -#: src/skins/skins_cfg.c:424 -msgid "Green" -msgstr "Зелёный" +#: src/skins/ui_equalizer.c:887 +msgid "Presets" +msgstr "ПредуÑтановки" -#: src/skins/skins_cfg.c:431 -msgid "Red" -msgstr "КраÑный" +#: src/skins/ui_equalizer.c:968 src/skins/ui_manager.c:442 +msgid "Load preset" +msgstr "Загрузить предуÑтановку" -#: src/skins/skins_cfg.c:569 -msgid "_Skin" -msgstr "Стиль" +#: src/skins/ui_equalizer.c:985 +msgid "Load auto-preset" +msgstr "Загрузить авто-уÑтановки" + +#: src/skins/ui_equalizer.c:1015 src/skins/ui_equalizer.c:1033 +#: src/skins/ui_equalizer.c:1049 +msgid "Load equalizer preset" +msgstr "Загрузить уÑтановки Ñквалайзера" -#: src/skins/skins_cfg.c:574 -msgid "Color adjustment ..." -msgstr "ÐаÑтройка цвета..." +#: src/skins/ui_equalizer.c:1068 src/skins/ui_manager.c:463 +msgid "Save preset" +msgstr "Сохранить предуÑтановки" -#: src/skins/ui_equalizer.c:463 -msgid "Audacious Equalizer" -msgstr "Эквалайзер Audacious" +#: src/skins/ui_equalizer.c:1084 +msgid "Save auto-preset" +msgstr "Сохранить авто-уÑтановки" + +#: src/skins/ui_equalizer.c:1114 src/skins/ui_equalizer.c:1150 +msgid "Save equalizer preset" +msgstr "Сохранить уÑтановки Ñквалайзера" -#: src/skins/ui_equalizer.c:991 -msgid "Presets" -msgstr "ПредуÑтановки" +#: src/skins/ui_equalizer.c:1169 src/skins/ui_manager.c:478 +msgid "Delete preset" +msgstr "Удалить предуÑтановку" + +#: src/skins/ui_equalizer.c:1186 +msgid "Delete auto-preset" +msgstr "Удалить авто-уÑтановки" -#: src/skins/ui_main.c:593 +#: src/skins/ui_main.c:444 msgid "kbps" msgstr "кбит/Ñ" -#: src/skins/ui_main.c:601 +#: src/skins/ui_main.c:452 msgid "kHz" msgstr "кГц" -#: src/skins/ui_main.c:608 +#: src/skins/ui_main.c:459 msgid "surround" msgstr "объёмное звучание" -#: src/skins/ui_main.c:981 -msgid "Audacious - visibility warning" -msgstr "Audacious - предупреждение о неразличимоÑти" - -#: src/skins/ui_main.c:984 -msgid "Show main player window" -msgstr "Отобразить оÑновное окно проигрывателÑ" - -#: src/skins/ui_main.c:985 -msgid "Ignore" -msgstr "Игнорировать" - -#: src/skins/ui_main.c:991 -msgid "" -"Audacious has been started with all of its windows hidden.\n" -"You may want to show the player window again to control Audacious; " -"otherwise, you'll have to control it remotely via audtool or enabled plugins " -"(such as the statusicon plugin)." -msgstr "" -"Ð’Ñе окна запущенной программы Audacious Ñкрыты.\n" -"Вам может потребоватьÑÑ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð·Ð¸Ñ‚ÑŒ окна Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ " -"Audacious; иначе вы должны управлÑÑ‚ÑŒ ей Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ активных модулей " -"(например, через значок в ÑиÑтемном лотке)." - -#: src/skins/ui_main.c:997 -msgid "Always ignore, show/hide is controlled remotely" -msgstr "Ð’Ñегда игнорировать, Ñкрытие/Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÑетÑÑ ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ð¾" - -#: src/skins/ui_main.c:1042 -msgid "Audacious - broken GTK engine usage warning" -msgstr "Audacious - предупреждение о нерабочем движке GTK" - -#: src/skins/ui_main.c:1050 -#, c-format -msgid "" -"Broken GTK engine in use\n" -"\n" -"Audacious has detected that you are using a broken GTK engine.\n" -"\n" -"The theme engine you are using, %s, is incompatible with some of the " -"features used by modern skins. The incompatible features have been disabled " -"for this session.\n" -"\n" -"To use these features, please consider using a different GTK theme engine." -msgstr "" -"ИÑпользуетÑÑ Ð½ÐµÑ€Ð°Ð±Ð¾Ñ‡Ð¸Ð¹ движок GTK\n" -"\n" -"Audacious определила, что иÑпользуетÑÑ Ð½ÐµÑ€Ð°Ð±Ð¾Ñ‡Ð¸Ð¹ движок GTK.\n" -"\n" -"Движок тем, который вы иÑпользуете, %s, неÑовмеÑтим Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼Ð¸ " -"возможноÑÑ‚Ñми, иÑпользуемыми Ñовременными ÑтилÑми. Ðе поддерживаемые " -"возможноÑти отключены в Ñтой ÑеÑÑии.\n" -"\n" -"Ð”Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтих возможноÑтей попробуйте иÑпользовать другой движок " -"тем GTK." - -#: src/skins/ui_main.c:1061 -msgid "Do not display this warning again" -msgstr "Больше не показывать Ñто предупреждение" - -#: src/skins/ui_main.c:1269 +#: src/skins/ui_main.c:807 #, c-format -msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)" -msgstr "ПоиÑк: %d:%-2.2d/%d:%-2.2d (%d%%)" +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "Переход к %d:%-2.2d / %d:%-2.2d" -#: src/skins/ui_main.c:1299 +#: src/skins/ui_main.c:828 #, c-format msgid "Volume: %d%%" msgstr "ГромкоÑÑ‚ÑŒ: %d%%" -#: src/skins/ui_main.c:1322 +#: src/skins/ui_main.c:851 #, c-format msgid "Balance: %d%% left" msgstr "БаланÑ: %d%% влево" -#: src/skins/ui_main.c:1324 +#: src/skins/ui_main.c:853 msgid "Balance: center" msgstr "БаланÑ: по центру" -#: src/skins/ui_main.c:1326 +#: src/skins/ui_main.c:855 #, c-format msgid "Balance: %d%% right" msgstr "БаланÑ: %d%% вправо" -#: src/skins/ui_main.c:1618 +#: src/skins/ui_main.c:981 msgid "Options Menu" msgstr "Меню параметров" -#: src/skins/ui_main.c:1622 +#: src/skins/ui_main.c:985 msgid "Disable 'Always On Top'" msgstr "Отключить \"Видимый вÑегда\"" -#: src/skins/ui_main.c:1624 +#: src/skins/ui_main.c:987 msgid "Enable 'Always On Top'" msgstr "Включить \"Видимый вÑегда\"" -#: src/skins/ui_main.c:1627 +#: src/skins/ui_main.c:990 msgid "File Info Box" msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ файле" -#: src/skins/ui_main.c:1631 -msgid "Disable 'GUI Scaling'" -msgstr "Отключить маÑштабирование" - -#: src/skins/ui_main.c:1633 -msgid "Enable 'GUI Scaling'" -msgstr "Включить маÑштабирование" - -#: src/skins/ui_main.c:1636 +#: src/skins/ui_main.c:995 msgid "Visualization Menu" msgstr "Меню визуализации" -#: src/skins/ui_main.c:2348 +#: src/skins/ui_main.c:1653 msgid "Single mode." msgstr "Одиночный режим." -#: src/skins/ui_main.c:2350 +#: src/skins/ui_main.c:1655 msgid "Playlist mode." msgstr "Режим ÑпиÑка воÑпроизведениÑ." -#: src/skins/ui_main.c:2374 +#: src/skins/ui_main.c:1677 msgid "Stopping after song." msgstr "ОÑтановить поÑле дорожки." -#: src/skins/ui_main.c:2376 +#: src/skins/ui_main.c:1679 msgid "Not stopping after song." msgstr "Ðе оÑтанавливать поÑле дорожки." -#: src/skins/ui_manager.c:50 src/skins/ui_manager.c:51 +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 msgid "Autoscroll Songname" msgstr "Ðвтопрокрутка Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ¸" -#: src/skins/ui_manager.c:56 src/skins/ui_manager.c:57 +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "ОÑтановить поÑле текущей дорожки" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 msgid "Peaks" msgstr "Пики" -#: src/skins/ui_manager.c:68 src/skins/ui_manager.c:69 +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "Повтор" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "Случайно" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "Без Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑпиÑку воÑпроизведениÑ" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 msgid "Show Player" msgstr "Отобразить проигрыватель" -#: src/skins/ui_manager.c:71 src/skins/ui_manager.c:72 +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 msgid "Show Playlist Editor" msgstr "Отобразить редактор ÑпиÑка воÑпроизведениÑ" -#: src/skins/ui_manager.c:74 src/skins/ui_manager.c:75 +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 msgid "Show Equalizer" msgstr "Отобразить Ñквалайзер" -#: src/skins/ui_manager.c:77 src/skins/ui_manager.c:78 +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 msgid "Always on Top" msgstr "Видимый вÑегда" -#: src/skins/ui_manager.c:80 src/skins/ui_manager.c:81 +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 msgid "Put on All Workspaces" msgstr "РазмеÑтить на вÑе рабочие Ñтолы" -#: src/skins/ui_manager.c:83 src/skins/ui_manager.c:84 +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 msgid "Roll up Player" msgstr "Свернуть проигрыватель" -#: src/skins/ui_manager.c:86 src/skins/ui_manager.c:87 +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 msgid "Roll up Playlist Editor" msgstr "Свернуть ÑпиÑок воÑпроизведениÑ" -#: src/skins/ui_manager.c:89 src/skins/ui_manager.c:90 +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 msgid "Roll up Equalizer" msgstr "Свернуть Ñквалайзер" -#: src/skins/ui_manager.c:92 src/sndstretch/sndstretch_xmms.c:393 -msgid "Scale" -msgstr "МаÑштабирование" - -#: src/skins/ui_manager.c:93 -msgid "DoubleSize" -msgstr "Двойной размер" - -#: src/skins/ui_manager.c:95 src/skins/ui_manager.c:96 -msgid "Easy Move" -msgstr "ПроÑтое перемещение" - -#: src/skins/ui_manager.c:104 +#: src/skins/ui_manager.c:115 msgid "Analyzer" msgstr "Ðнализатор" -#: src/skins/ui_manager.c:105 +#: src/skins/ui_manager.c:116 msgid "Scope" msgstr "ОÑциллограмма" -#: src/skins/ui_manager.c:106 +#: src/skins/ui_manager.c:117 msgid "Voiceprint" msgstr "Отпечаток голоÑа" -#: src/skins/ui_manager.c:107 +#: src/skins/ui_manager.c:118 msgid "Off" msgstr "Выкл." -#: src/skins/ui_manager.c:111 src/skins/ui_manager.c:128 -#: src/skins/ui_manager.c:134 +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 msgid "Normal" msgstr "Обычный" -#: src/skins/ui_manager.c:112 src/skins/ui_manager.c:129 +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 msgid "Fire" msgstr "Огонь" -#: src/skins/ui_manager.c:113 +#: src/skins/ui_manager.c:124 msgid "Vertical Lines" msgstr "Вертикальные линии" -#: src/skins/ui_manager.c:117 +#: src/skins/ui_manager.c:128 msgid "Lines" msgstr "Линии" -#: src/skins/ui_manager.c:118 +#: src/skins/ui_manager.c:129 msgid "Bars" msgstr "ПолоÑки" -#: src/skins/ui_manager.c:122 +#: src/skins/ui_manager.c:133 msgid "Dot Scope" msgstr "Ð¢Ð¾Ñ‡ÐµÑ‡Ð½Ð°Ñ Ð¾Ñциллограмма" -#: src/skins/ui_manager.c:123 +#: src/skins/ui_manager.c:134 msgid "Line Scope" msgstr "Ð›Ð¸Ð½ÐµÐ¹Ð½Ð°Ñ Ð¾Ñциллограмма" -#: src/skins/ui_manager.c:124 +#: src/skins/ui_manager.c:135 msgid "Solid Scope" msgstr "ÐÐµÐ¿Ñ€ÐµÑ€Ñ‹Ð²Ð½Ð°Ñ Ð¾Ñциллограмма" -#: src/skins/ui_manager.c:130 +#: src/skins/ui_manager.c:141 msgid "Ice" msgstr "Лёд" -#: src/skins/ui_manager.c:135 +#: src/skins/ui_manager.c:146 msgid "Smooth" msgstr "Сглаженный" -#: src/skins/ui_manager.c:139 src/skins/ui_manager.c:147 +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 msgid "Slowest" msgstr "Очень медленно" -#: src/skins/ui_manager.c:140 src/skins/ui_manager.c:148 +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 msgid "Slow" msgstr "Медленно" -#: src/skins/ui_manager.c:141 src/skins/ui_manager.c:149 +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 msgid "Medium" msgstr "Средне" -#: src/skins/ui_manager.c:142 src/skins/ui_manager.c:150 +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 msgid "Fast" msgstr "БыÑтро" -#: src/skins/ui_manager.c:143 src/skins/ui_manager.c:151 +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 msgid "Fastest" msgstr "Очень быÑтро" -#: src/skins/ui_manager.c:155 +#: src/skins/ui_manager.c:166 msgid "Time Elapsed" msgstr "Прошедшее времÑ" -#: src/skins/ui_manager.c:156 +#: src/skins/ui_manager.c:167 msgid "Time Remaining" msgstr "ОÑтавшееÑÑ Ð²Ñ€ÐµÐ¼Ñ" -#: src/skins/ui_manager.c:185 +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "Пауза" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ°" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ°" + +#: src/skins/ui_manager.c:196 msgid "Visualization" msgstr "ВизуализациÑ" -#: src/skins/ui_manager.c:186 +#: src/skins/ui_manager.c:197 msgid "Visualization Mode" msgstr "Режим визуализации" -#: src/skins/ui_manager.c:187 +#: src/skins/ui_manager.c:198 msgid "Analyzer Mode" msgstr "Ðнализатор" -#: src/skins/ui_manager.c:188 +#: src/skins/ui_manager.c:199 msgid "Scope Mode" msgstr "ОÑциллограмма" -#: src/skins/ui_manager.c:189 +#: src/skins/ui_manager.c:200 msgid "Voiceprint Mode" msgstr "Отпечаток голоÑа" -#: src/skins/ui_manager.c:190 +#: src/skins/ui_manager.c:201 msgid "WindowShade VU Mode" msgstr "Режим WindowShade VU" -#: src/skins/ui_manager.c:191 +#: src/skins/ui_manager.c:202 msgid "Analyzer Falloff" msgstr "Падение анализатора" -#: src/skins/ui_manager.c:192 -msgid "Peaks Falloff" -msgstr "Падение пиков" +#: src/skins/ui_manager.c:203 +msgid "Peaks Falloff" +msgstr "Падение пиков" + +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "СпиÑок воÑпроизведениÑ" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "Ðовый ÑпиÑок" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 +msgid "Select Next Playlist" +msgstr "Выбрать Ñледующий ÑпиÑок" + +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 +msgid "Select Previous Playlist" +msgstr "Выбрать предыдущий ÑпиÑок" + +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "Удалить ÑпиÑок" + +#: src/skins/ui_manager.c:222 +msgid "Import Playlist" +msgstr "Загрузить ÑпиÑок воÑпроизведениÑ" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "Загрузить ÑпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸Ð· файла в выбранный ÑпиÑок." + +#: src/skins/ui_manager.c:226 +msgid "Export Playlist" +msgstr "Выгрузить ÑпиÑок воÑпроизведениÑ" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "Сохранить выбранный ÑпиÑок воÑпроизведениÑ." + +#: src/skins/ui_manager.c:229 +msgid "Refresh List" +msgstr "Обновить ÑпиÑок" + +#: src/skins/ui_manager.c:230 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "Обновить метаданные и ÑоотнеÑти их Ñ Ð·Ð°Ð¿Ð¸ÑÑми ÑпиÑка воÑпроизведениÑ." + +#: src/skins/ui_manager.c:233 +msgid "Playlist Manager" +msgstr "Управление ÑпиÑком" -#: src/skins/ui_manager.c:202 src/skins/ui_manager.c:203 -msgid "Select Next Playlist" -msgstr "Выбрать Ñледующий ÑпиÑок" +#: src/skins/ui_manager.c:234 +msgid "Queue Manager" +msgstr "Управление очередью" -#: src/skins/ui_manager.c:205 src/skins/ui_manager.c:206 -msgid "Select Previous Playlist" -msgstr "Выбрать предыдущий ÑпиÑок" +#: src/skins/ui_manager.c:237 +msgid "View" +msgstr "Вид" -#: src/skins/ui_manager.c:222 -msgid "Refresh List" -msgstr "Обновить ÑпиÑок" +#: src/skins/ui_manager.c:238 +msgid "Interface" +msgstr "ИнтерфейÑ" -#: src/skins/ui_manager.c:226 -msgid "List Manager" -msgstr "Менеджер ÑпиÑков" +#: src/skins/ui_manager.c:239 +msgid "Interface Preferences ..." +msgstr "ÐаÑтройка интерфейÑа ..." -#: src/skins/ui_manager.c:236 +#: src/skins/ui_manager.c:243 msgid "Add Internet Address..." msgstr "Добавить адреÑ..." -#: src/skins/ui_manager.c:240 +#: src/skins/ui_manager.c:244 +msgid "Adds a remote track to the playlist." +msgstr "Добавить звуковой поток из Ñети в ÑпиÑок воÑпроизведениÑ." + +#: src/skins/ui_manager.c:247 msgid "Add Files..." msgstr "Добавить файлы..." -#: src/skins/ui_manager.c:246 +#: src/skins/ui_manager.c:248 +msgid "Adds files to the playlist." +msgstr "Добавить файлы в ÑпиÑок воÑпроизведениÑ." + +#: src/skins/ui_manager.c:253 msgid "Search and Select" msgstr "Ðайти и выбрать" -#: src/skins/ui_manager.c:247 +#: src/skins/ui_manager.c:254 msgid "" "Searches the playlist and selects playlist entries based on specific " "criteria." @@ -5075,224 +2958,361 @@ "Ðайти в ÑпиÑке воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸ отметить запиÑи, ÑоответÑтвующие заданному " "критерию." -#: src/skins/ui_manager.c:250 +#: src/skins/ui_manager.c:257 msgid "Invert Selection" msgstr "Инвертировать выбор" -#: src/skins/ui_manager.c:251 +#: src/skins/ui_manager.c:258 msgid "Inverts the selected and unselected entries." msgstr "СнÑÑ‚ÑŒ выделение Ñ Ð¾Ñ‚Ð¼ÐµÑ‡ÐµÐ½Ð½Ñ‹Ñ… пунктов и пометить не отмеченные." -#: src/skins/ui_manager.c:268 +#: src/skins/ui_manager.c:261 +msgid "Select All" +msgstr "Выбрать вÑе" + +#: src/skins/ui_manager.c:262 +msgid "Selects all of the playlist entries." +msgstr "Выбрать вÑе запиÑи ÑпиÑка воÑпроизведениÑ." + +#: src/skins/ui_manager.c:265 +msgid "Select None" +msgstr "СнÑÑ‚ÑŒ выделение" + +#: src/skins/ui_manager.c:266 +msgid "Deselects all of the playlist entries." +msgstr "СнÑÑ‚ÑŒ выделение Ñ Ñ€Ð°Ð½ÐµÐµ выделенных запиÑей." + +#: src/skins/ui_manager.c:271 +msgid "Remove All" +msgstr "Удалить вÑе" + +#: src/skins/ui_manager.c:272 +msgid "Removes all entries from the playlist." +msgstr "Удалить вÑе запиÑи из ÑпиÑка воÑпроизведениÑ." + +#: src/skins/ui_manager.c:275 msgid "Clear Queue" msgstr "ОчиÑтить очередь" -#: src/skins/ui_manager.c:269 +#: src/skins/ui_manager.c:276 msgid "Clears the queue associated with this playlist." msgstr "ОчиÑтить очередь, ÑвÑзанную Ñ Ñтим ÑпиÑком воÑпроизведениÑ." -#: src/skins/ui_manager.c:272 +#: src/skins/ui_manager.c:279 msgid "Remove Unavailable Files" msgstr "Удалить недоÑтупные файлы" -#: src/skins/ui_manager.c:273 +#: src/skins/ui_manager.c:280 msgid "Removes unavailable files from the playlist." msgstr "Удалить недоÑтупные файлы из ÑпиÑка воÑпроизведениÑ." -#: src/skins/ui_manager.c:276 +#: src/skins/ui_manager.c:283 msgid "Remove Duplicates" msgstr "Удалить дубликаты" -#: src/skins/ui_manager.c:279 +#: src/skins/ui_manager.c:285 src/skins/ui_manager.c:317 +#: src/skins/ui_manager.c:347 +msgid "By Title" +msgstr "По названию" + +#: src/skins/ui_manager.c:286 msgid "Removes duplicate entries from the playlist by title." msgstr "" "Удалить из ÑпиÑка воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´ÑƒÐ±Ð»Ð¸Ñ€ÑƒÑŽÑ‰Ð¸ÐµÑÑ Ð·Ð°Ð¿Ð¸Ñи Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ‹Ð¼ " "названием." -#: src/skins/ui_manager.c:282 src/skins/ui_manager.c:318 -#: src/skins/ui_manager.c:348 +#: src/skins/ui_manager.c:289 src/skins/ui_manager.c:329 +#: src/skins/ui_manager.c:359 msgid "By Filename" msgstr "По имени файла" -#: src/skins/ui_manager.c:283 +#: src/skins/ui_manager.c:290 msgid "Removes duplicate entries from the playlist by filename." msgstr "" -"Удалить из ÑпиÑка воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´ÑƒÐ±Ð»Ð¸Ñ€ÑƒÑŽÑ‰Ð¸ÐµÑÑ Ð·Ð°Ð¿Ð¸Ñи Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ‹Ð¼Ð¸ именами " -"файлов." +"Удалить из ÑпиÑка воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´ÑƒÐ±Ð»Ð¸Ñ€ÑƒÑŽÑ‰Ð¸ÐµÑÑ Ð·Ð°Ð¿Ð¸Ñи Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ‹Ð¼Ð¸ именами" +" файлов." -#: src/skins/ui_manager.c:286 src/skins/ui_manager.c:322 -#: src/skins/ui_manager.c:352 +#: src/skins/ui_manager.c:293 src/skins/ui_manager.c:333 +#: src/skins/ui_manager.c:363 msgid "By Path + Filename" msgstr "По пути и имени файла" -#: src/skins/ui_manager.c:287 +#: src/skins/ui_manager.c:294 msgid "Removes duplicate entries from the playlist by their full path." msgstr "" "Удалить из ÑпиÑка воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´ÑƒÐ±Ð»Ð¸Ñ€ÑƒÑŽÑ‰Ð¸ÐµÑÑ Ð·Ð°Ð¿Ð¸Ñи, имеющие одинаковый " "абÑолютный путь." -#: src/skins/ui_manager.c:300 +#: src/skins/ui_manager.c:297 +msgid "Remove Unselected" +msgstr "Удалить не отмеченные" + +#: src/skins/ui_manager.c:298 +msgid "Remove unselected entries from the playlist." +msgstr "Удалить из ÑпиÑка воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ðµ выделенные запиÑи." + +#: src/skins/ui_manager.c:301 +msgid "Remove Selected" +msgstr "Удалить выбранные" + +#: src/skins/ui_manager.c:302 +msgid "Remove selected entries from the playlist." +msgstr "Удалить из ÑпиÑка воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð½Ñ‹Ðµ запиÑи." + +#: src/skins/ui_manager.c:307 +msgid "Randomize List" +msgstr "Сортировать в Ñлучайном порÑдке" + +#: src/skins/ui_manager.c:308 +msgid "Randomizes the playlist." +msgstr "Сортировать запиÑи в ÑпиÑке воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð² Ñлучайном порÑдке." + +#: src/skins/ui_manager.c:311 msgid "Reverse List" msgstr "Ð’ обратном порÑдке" -#: src/skins/ui_manager.c:301 +#: src/skins/ui_manager.c:312 msgid "Reverses the playlist." msgstr "Обратить порÑдок запиÑей в ÑпиÑке воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ð° противоположный." -#: src/skins/ui_manager.c:304 +#: src/skins/ui_manager.c:315 msgid "Sort List" msgstr "Сортировать ÑпиÑок" -#: src/skins/ui_manager.c:307 src/skins/ui_manager.c:337 +#: src/skins/ui_manager.c:318 src/skins/ui_manager.c:348 msgid "Sorts the list by title." msgstr "Сортировать ÑпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ð¾ названию." -#: src/skins/ui_manager.c:311 src/skins/ui_manager.c:341 +#: src/skins/ui_manager.c:321 src/skins/ui_manager.c:351 +msgid "By Album" +msgstr "По альбому" + +#: src/skins/ui_manager.c:322 src/skins/ui_manager.c:352 msgid "Sorts the list by album." msgstr "Сортировать ÑпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ð¾ альбому." -#: src/skins/ui_manager.c:315 src/skins/ui_manager.c:345 +#: src/skins/ui_manager.c:325 src/skins/ui_manager.c:355 +msgid "By Artist" +msgstr "По иÑполнителю" + +#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 msgid "Sorts the list by artist." msgstr "Сортировать ÑпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ð¾ иÑполнителю." -#: src/skins/ui_manager.c:319 src/skins/ui_manager.c:349 +#: src/skins/ui_manager.c:330 src/skins/ui_manager.c:360 msgid "Sorts the list by filename." msgstr "Сортировать ÑпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ð¾ имени файла." -#: src/skins/ui_manager.c:323 src/skins/ui_manager.c:353 +#: src/skins/ui_manager.c:334 src/skins/ui_manager.c:364 msgid "Sorts the list by full pathname." msgstr "Сортировать ÑпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ð¾ абÑолютному пути к файлу." -#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +#: src/skins/ui_manager.c:337 src/skins/ui_manager.c:367 msgid "By Date" msgstr "По дате" -#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +#: src/skins/ui_manager.c:338 src/skins/ui_manager.c:368 msgid "Sorts the list by modification time." msgstr "Сортировать ÑпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ð¾ дате изменениÑ." -#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +#: src/skins/ui_manager.c:341 src/skins/ui_manager.c:371 +msgid "By Track Number" +msgstr "По номеру дорожки" + +#: src/skins/ui_manager.c:342 src/skins/ui_manager.c:372 msgid "Sorts the list by track number." msgstr "Сортировать ÑпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ð¾ номеру дорожки." -#: src/skins/ui_manager.c:334 +#: src/skins/ui_manager.c:345 msgid "Sort Selected" msgstr "Сортировать выбранные" -#: src/skins/ui_manager.c:373 +#: src/skins/ui_manager.c:381 +msgid "File" +msgstr "Файл" + +#: src/skins/ui_manager.c:384 msgid "Plugin Services" msgstr "Службы модулей" -#: src/skins/ui_manager.c:384 +#: src/skins/ui_manager.c:386 src/skins/ui_manager.c:389 +msgid "View Track Details" +msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ дорожке" + +#: src/skins/ui_manager.c:387 src/skins/ui_manager.c:390 +msgid "View track details" +msgstr "ПроÑмотреть информацию о дорожке." + +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:393 +msgid "About Audacious" +msgstr "Об Audacious" + +#: src/skins/ui_manager.c:395 msgid "Play File" msgstr "ВоÑпроизвеÑти файл" -#: src/skins/ui_manager.c:387 +#: src/skins/ui_manager.c:396 +msgid "Load and play a file" +msgstr "Загрузить и воÑпроизвеÑти файл" + +#: src/skins/ui_manager.c:398 msgid "Play Location" msgstr "ВоÑпроизвеÑти из адреÑа" -#: src/skins/ui_manager.c:428 +#: src/skins/ui_manager.c:399 +msgid "Play media from the selected location" +msgstr "ВоÑпроизвеÑти аудиоданные из выбранного меÑта." + +#: src/skins/ui_manager.c:401 +msgid "Plugin services" +msgstr "Службы модулей" + +#: src/skins/ui_manager.c:403 +msgid "Preferences" +msgstr "Параметры" + +#: src/skins/ui_manager.c:404 +msgid "Open preferences window" +msgstr "Открыть окно параметров" + +#: src/skins/ui_manager.c:407 +msgid "Quit Audacious" +msgstr "Закрыть Audacious" + +#: src/skins/ui_manager.c:409 src/skins/ui_manager.c:410 +msgid "Set A-B" +msgstr "УÑтановить A-B" + +#: src/skins/ui_manager.c:412 src/skins/ui_manager.c:413 +msgid "Clear A-B" +msgstr "ОчиÑтить A-B" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Jump to Time" +msgstr "Перейти к указанному времени" + +#: src/skins/ui_manager.c:421 +msgid "Queue Toggle" +msgstr "Показать/Ñкрыть очередь" + +#: src/skins/ui_manager.c:422 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "Включить или отключить очерёдноÑÑ‚ÑŒ запиÑей в ÑпиÑке воÑпроизведениÑ." + +#: src/skins/ui_manager.c:425 +msgid "Copy" +msgstr "Копировать" + +#: src/skins/ui_manager.c:427 +msgid "Cut" +msgstr "Вырезать" + +#: src/skins/ui_manager.c:429 +msgid "Paste" +msgstr "Ð’Ñтавить" + +#: src/skins/ui_manager.c:436 msgid "Load" msgstr "Загрузить" -#: src/skins/ui_manager.c:433 src/skins/ui_manager.c:454 -#: src/skins/ui_manager.c:469 +#: src/skins/ui_manager.c:437 +msgid "Import" +msgstr "Импорт" + +#: src/skins/ui_manager.c:438 +msgid "Save" +msgstr "Сохранить" + +#: src/skins/ui_manager.c:439 +msgid "Delete" +msgstr "Удалить" + +#: src/skins/ui_manager.c:441 src/skins/ui_manager.c:462 +#: src/skins/ui_manager.c:477 msgid "Preset" msgstr "ПредуÑтановка" -#: src/skins/ui_manager.c:434 -msgid "Load preset" -msgstr "Загрузить предуÑтановку" - -#: src/skins/ui_manager.c:436 src/skins/ui_manager.c:457 -#: src/skins/ui_manager.c:472 +#: src/skins/ui_manager.c:444 src/skins/ui_manager.c:465 +#: src/skins/ui_manager.c:480 msgid "Auto-load preset" msgstr "ÐвтоматичеÑки Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°ÐµÐ¼Ð°Ñ Ð¿Ñ€ÐµÐ´ÑƒÑтановка" -#: src/skins/ui_manager.c:437 +#: src/skins/ui_manager.c:445 msgid "Load auto-load preset" msgstr "Загрузить автоматичеÑки загружаемую предуÑтановку" -#: src/skins/ui_manager.c:440 +#: src/skins/ui_manager.c:448 msgid "Load default preset into equalizer" msgstr "Загрузить в Ñквалайзер предуÑтановку по умолчанию" -#: src/skins/ui_manager.c:442 +#: src/skins/ui_manager.c:450 msgid "Zero" msgstr "Ðулевой уровень" -#: src/skins/ui_manager.c:443 +#: src/skins/ui_manager.c:451 msgid "Set equalizer preset levels to zero" msgstr "СброÑить уÑтановки Ñквалайзера в нулевой уровень" -#: src/skins/ui_manager.c:445 +#: src/skins/ui_manager.c:453 msgid "From file" msgstr "Из файла" -#: src/skins/ui_manager.c:446 +#: src/skins/ui_manager.c:454 msgid "Load preset from file" msgstr "Загрузить предуÑтановку из файла" -#: src/skins/ui_manager.c:448 +#: src/skins/ui_manager.c:456 msgid "From WinAMP EQF file" msgstr "Из EQF файла WinAMP'a" -#: src/skins/ui_manager.c:449 +#: src/skins/ui_manager.c:457 msgid "Load preset from WinAMP EQF file" msgstr "Загрузить предуÑтановки из EQF файла WinAMP'a" -#: src/skins/ui_manager.c:451 +#: src/skins/ui_manager.c:459 msgid "WinAMP Presets" msgstr "ПредуÑтановки WinAMP'a" -#: src/skins/ui_manager.c:452 +#: src/skins/ui_manager.c:460 msgid "Import WinAMP presets" msgstr "Импортировать предуÑтановки WinAMP'a" -#: src/skins/ui_manager.c:455 -msgid "Save preset" -msgstr "Сохранить предуÑтановки" - -#: src/skins/ui_manager.c:458 +#: src/skins/ui_manager.c:466 msgid "Save auto-load preset" msgstr "Сохранить автозагружаемые предуÑтановки" -#: src/skins/ui_manager.c:461 +#: src/skins/ui_manager.c:469 msgid "Save default preset" msgstr "Сохранить предуÑтановки по умолчанию" -#: src/skins/ui_manager.c:463 +#: src/skins/ui_manager.c:471 msgid "To file" msgstr "Ð’ файл" -#: src/skins/ui_manager.c:464 +#: src/skins/ui_manager.c:472 msgid "Save preset to file" msgstr "Сохранить предуÑтановки в файл" -#: src/skins/ui_manager.c:466 +#: src/skins/ui_manager.c:474 msgid "To WinAMP EQF file" msgstr "Ð’ файл EQF WinAMP'a" -#: src/skins/ui_manager.c:467 +#: src/skins/ui_manager.c:475 msgid "Save preset to WinAMP EQF file" msgstr "Сохранить предуÑтановки в файл EQF WinAMP'a" -#: src/skins/ui_manager.c:470 -msgid "Delete preset" -msgstr "Удалить предуÑтановку" - -#: src/skins/ui_manager.c:473 +#: src/skins/ui_manager.c:481 msgid "Delete auto-load preset" msgstr "Удалить автозагружаемую предуÑтановку" -#: src/skins/ui_playlist.c:374 +#: src/skins/ui_playlist.c:248 msgid "Search entries in active playlist" msgstr "ПоиÑк запиÑей в активном ÑпиÑке воÑпроизведениÑ" -#: src/skins/ui_playlist.c:382 +#: src/skins/ui_playlist.c:256 msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " +"Select entries in playlist by filling one or more fields. Fields use regular" +" expressions syntax, case-insensitive. If you don't know how regular " "expressions work, simply insert a literal portion of what you're searching " "for." msgstr "" @@ -5301,205 +3321,115 @@ "чувÑтвительное к региÑтру. ЕÑли вы не знаете, как работают регулÑрные " "выражениÑ, проÑто вÑтавьте чаÑÑ‚ÑŒ букв из Ñлова, которые хотите найти." -#: src/skins/ui_playlist.c:397 +#: src/skins/ui_playlist.c:264 +msgid "Title: " +msgstr "Ðазвание: " + +#: src/skins/ui_playlist.c:271 msgid "Album: " msgstr "Ðльбом: " -#: src/skins/ui_playlist.c:404 +#: src/skins/ui_playlist.c:278 msgid "Artist: " msgstr "ИÑполнитель: " -#: src/skins/ui_playlist.c:411 +#: src/skins/ui_playlist.c:285 msgid "Filename: " msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°: " -#: src/skins/ui_playlist.c:419 +#: src/skins/ui_playlist.c:293 msgid "Clear previous selection before searching" msgstr "ОчиÑтить предыдущий выбор до начала поиÑка" -#: src/skins/ui_playlist.c:422 +#: src/skins/ui_playlist.c:296 msgid "Automatically toggle queue for matching entries" msgstr "ÐвтоматичеÑки переключать поочерёдно на ÑоответÑтвующим запиÑÑм" -#: src/skins/ui_playlist.c:425 +#: src/skins/ui_playlist.c:299 msgid "Create a new playlist with matching entries" msgstr "Создать новый ÑпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ ÑоответÑтвующими запиÑÑми" -#: src/skins/ui_playlist.c:772 -msgid "Save as Static Playlist" -msgstr "Сохранить как ÑтатичеÑкий ÑпиÑок воÑпроизведениÑ" - -#: src/skins/ui_playlist.c:779 -msgid "Use Relative Path" -msgstr "ОтноÑительный путь" - -#: src/skins/ui_playlist.c:802 -msgid "Load Playlist" -msgstr "Загрузить ÑпиÑок воÑпроизведениÑ" - -#: src/skins/ui_playlist.c:815 -msgid "Save Playlist" -msgstr "Сохранить ÑпиÑок воÑпроизведениÑ" - -#: src/skins/ui_playlist.c:1146 +#: src/skins/ui_playlist.c:765 msgid "Audacious Playlist Editor" msgstr "Редактор ÑпиÑков воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Audacious" -#: src/skins/ui_playlist.c:1206 +#: src/skins/ui_playlist.c:812 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d из %d)" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "31 Hz" -msgstr "31 Гц" - -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "63 Hz" -msgstr "63 Гц" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "125 Hz" -msgstr "125 Гц" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "250 Hz" -msgstr "250 Гц" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "500 Hz" -msgstr "500 Гц" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "1 kHz" -msgstr "1 кГц" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "2 kHz" -msgstr "2 кГц" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -msgid "4 kHz" -msgstr "4 кГц" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -msgid "8 kHz" -msgstr "8 кГц" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -msgid "16 kHz" -msgstr "16 кГц" - -#: src/skins/ui_skinselector.c:179 +#: src/skins/ui_skinselector.c:162 msgid "Archived Winamp 2.x skin" msgstr "ÐÑ€Ñ…Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚ÐµÐ¼Ð° Winamp 2.x" -#: src/skins/ui_skinselector.c:184 +#: src/skins/ui_skinselector.c:167 msgid "Unarchived Winamp 2.x skin" msgstr "Ðе Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚ÐµÐ¼Ð° Winamp 2.x" -#: src/skins/util.c:834 +#: src/skins/util.c:774 #, c-format msgid "Could not create directory (%s): %s\n" msgstr "Ðевозможно Ñоздать каталог (%s): %s\n" -#: src/sndfile/plugin.c:531 +#: src/sndfile/plugin.c:456 msgid "About sndfile plugin" msgstr "О модуле sndfile" -#: src/sndfile/plugin.c:532 -msgid "" -"Adapted for Audacious usage by Tony Vroon \n" -"from the xmms_sndfile plugin which is:\n" -"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -"This program is free software ; you can redistribute it and/or modify \n" -"it under the terms of the GNU General Public License as published by \n" -"the Free Software Foundation ; either version 2 of the License, or \n" -"(at your option) any later version. \n" -" \n" -"This program is distributed in the hope that it will be useful, \n" -"but WITHOUT ANY WARRANTY ; without even the implied warranty of \n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n" -"See the GNU General Public License for more details. \n" -"\n" -"You should have received a copy of the GNU General Public \n" -"License along with this program ; if not, write to \n" -"the Free Software Foundation, Inc., \n" -"51 Franklin Street, Fifth Floor, \n" -"Boston, MA 02110-1301 USA" -msgstr "" -"Ðдаптировал Ð´Ð»Ñ Audacious Tony Vroon \n" -"из Ð¼Ð¾Ð´ÑƒÐ»Ñ xmms_sndfile\n" -"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -"Эта программа - Ñвободное программное обеÑпечение; вы можете раÑпроÑтранÑÑ‚ÑŒ " -"и/или модифицировать его в ÑоответÑтвии Ñ ÑƒÑловиÑми\n" -"Стандартной ОбщеÑтвенной Лицензии GNU, изданной Фондом Свободного\n" -"Программного ОбеÑпечениÑ; или же верÑией 2 Стандартной ОбщеÑтвенной\n" -"Лицензии Лицензии GNU или (по желанию) любой более поздней её верÑией.\n" -"\n" -"Эта программа раÑпроÑтранÑетÑÑ Ñ Ð½Ð°Ð´ÐµÐ¶Ð´Ð¾Ð¹, что она будет полезна, но БЕЗ\n" -"ВСЯКИХ ГÐРÐÐТИЙÐЫХ ОБЯЗÐТЕЛЬСТВ; без подразумеваемой гарантии товарного\n" -"ÑоÑтоÑÐ½Ð¸Ñ Ð¸ ПРИГОДÐОСТИ ИСПОЛЬЗОВÐÐИЯ ЕРДЛЯ КÐКОЙ-ЛИБО ЦЕЛИ.\n" -"ОбратитеÑÑŒ за подробноÑÑ‚Ñми к Лицензии GNU.\n" -"\n" -"Ð’Ñ‹ должны были получить копию Стандартной ОбщеÑтвенной Лицензии GNU\n" -"вмеÑте Ñ Ñтой программой; еÑли же нет, то напишите об Ñтом по адреÑу: Free " -"Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, " -"USA." - -#: src/sndstretch/sndstretch_xmms.c:175 +#: src/sndstretch/sndstretch_xmms.c:155 msgid "About SndStretch" msgstr "О модуле SndStretch" -#: src/sndstretch/sndstretch_xmms.c:336 +#: src/sndstretch/sndstretch_xmms.c:308 msgid "Volume corr." msgstr "ÐšÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти" -#: src/sndstretch/sndstretch_xmms.c:337 +#: src/sndstretch/sndstretch_xmms.c:309 msgid "Short Overlap" msgstr "Короткое перекрытие" -#: src/sndstretch/sndstretch_xmms.c:391 +#: src/sndstretch/sndstretch_xmms.c:355 msgid "Speed" msgstr "СкороÑÑ‚ÑŒ" -#: src/sndstretch/sndstretch_xmms.c:392 +#: src/sndstretch/sndstretch_xmms.c:356 msgid "Pitch" msgstr "Смена выÑоты тона" -#: src/sndstretch/sndstretch_xmms.c:413 +#: src/sndstretch/sndstretch_xmms.c:357 +msgid "Scale" +msgstr "МаÑштабирование" + +#: src/sndstretch/sndstretch_xmms.c:377 msgid "SndStretch - Configuration" msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ SndStretch" -#: src/song_change/song_change.c:397 +#: src/song_change/song_change.c:437 msgid "Command to run when Audacious starts a new song." -msgstr "Команда, запуÑÐºÐ°ÐµÐ¼Ð°Ñ Audacious в начале воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð¹ дорожки." +msgstr "" +"Команда, запуÑÐºÐ°ÐµÐ¼Ð°Ñ Audacious в начале воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð¹ дорожки." -#: src/song_change/song_change.c:398 src/song_change/song_change.c:402 -#: src/song_change/song_change.c:406 src/song_change/song_change.c:410 +#: src/song_change/song_change.c:439 src/song_change/song_change.c:445 +#: src/song_change/song_change.c:451 src/song_change/song_change.c:457 msgid "Command:" msgstr "Команда:" -#: src/song_change/song_change.c:401 +#: src/song_change/song_change.c:443 msgid "Command to run toward the end of a song." msgstr "Команда, запуÑÐºÐ°ÐµÐ¼Ð°Ñ Ð¿Ð¾Ñле Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ¸." -#: src/song_change/song_change.c:405 +#: src/song_change/song_change.c:449 msgid "Command to run when Audacious reaches the end of the playlist." msgstr "" "Команда, запуÑÐºÐ°ÐµÐ¼Ð°Ñ Audacious при доÑтижении конца ÑпиÑка воÑпроизведениÑ." -#: src/song_change/song_change.c:409 +#: src/song_change/song_change.c:455 msgid "" "Command to run when title changes for a song (i.e. network streams titles)." msgstr "" "Команда, запуÑÐºÐ°ÐµÐ¼Ð°Ñ Ð¿Ñ€Ð¸ изменении Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ¸ (например, при " "воÑпроизведении из Ñети)." -#: src/song_change/song_change.c:413 +#: src/song_change/song_change.c:461 msgid "" "You can use the following format strings which\n" "will be substituted before calling the command\n" @@ -5512,46 +3442,48 @@ "%n or %s: Song name\n" "%r: Rate (in bits per second)\n" "%t: Playlist position (%02d)\n" -"%p: Currently playing (1 or 0)" -msgstr "" -"ДопуÑкаетÑÑ Ð¸Ñпользовать Ñледующий формат Ñтрок, которые будут заменены\n" -"поÑле вызова команды (не вÑе из них можно иÑпользовать Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´,\n" -"выполнÑемых при доÑтижении конца ÑпиÑка воÑпроизведениÑ).\n" -"\n" -"%F: ЧаÑтота (в герцах)\n" -"%c: ЧиÑло каналов\n" -"%f: Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° (абÑолютный путь)\n" -"%l: Длина (в миллиÑекундах)\n" -"%n или %s: Ðазвание дорожки\n" -"%r: Битрейт (в битах в Ñекунду)\n" -"%t: Положение ÑпиÑка воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ (%02d)\n" -"%p: ВоÑпроизведение ÑÐµÐ¹Ñ‡Ð°Ñ (1 или 0)" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" +msgstr "" +"Ð’Ñ‹ можете иÑпользовать Ñледующие форматы Ñтрок,\n" +"которые будут заменены перед вызовом команды\n" +"(не вÑе они полезны Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ ÑпиÑка ).\n" +"\n" +"%F: Frequency (in hertz)\n" +"%c: Number of channels\n" +"%f: filename (full path)\n" +"%l: length (in milliseconds)\n" +"%n or %s: Song name\n" +"%r: Rate (in bits per second)\n" +"%t: Playlist position (%02d)\n" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" -#: src/song_change/song_change.c:437 +#: src/song_change/song_change.c:488 msgid "" "Parameters passed to the shell should be encapsulated in " "quotes. Doing otherwise is a security risk." msgstr "" -"Параметры, передаваемые оболочке, должны быть заключены в " -"кавычки. Ð’ противном Ñлучае возможны проблемы Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑтью." +"Параметры, передаваемые оболочке, должны быть заключены в" +" кавычки. Ð’ противном Ñлучае возможны проблемы Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑтью." -#: src/song_change/song_change.c:448 +#: src/song_change/song_change.c:499 msgid "Commands" msgstr "Команды" -#: src/song_change/song_change.c:484 +#: src/song_change/song_change.c:529 msgid "Song Change" msgstr "Смена дорожки" -#: src/spectrum/spectrum.c:89 -msgid "Spectrum Analyzer" -msgstr "Ðнализатор Ñпектра" - -#: src/statusicon/statusicon.c:355 +#: src/statusicon/statusicon.c:379 msgid "About Status Icon Plugin" msgstr "О модуле СтатуÑ" -#: src/statusicon/statusicon.c:356 +#: src/statusicon/statusicon.c:380 msgid "" "Status Icon Plugin\n" "\n" @@ -5561,43 +3493,58 @@ "This plugin provides a status icon, placed in\n" "the system tray area of the window manager.\n" msgstr "" -"Модуль СтатуÑ" -"\n" +"Модуль СтатуÑ\n" "Copyright 2005-2007 Giacomo Lozito \n" "Copyright 2010 MichaÅ‚ Lipski \n" "\n" "Этот модуль отображает значок программы\n" "в ÑиÑтемном лотке.\n" -#: src/statusicon/statusicon.c:418 +#: src/statusicon/statusicon.c:451 msgid "Status Icon Plugin - Preferences" msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¡Ñ‚Ð°Ñ‚ÑƒÑ" -#: src/statusicon/statusicon.c:428 +#: src/statusicon/statusicon.c:461 msgid "Right-Click Menu" msgstr "ДейÑтвие при щелчке правой кнопкой мыши" -#: src/statusicon/statusicon.c:433 +#: src/statusicon/statusicon.c:466 msgid "Small playback menu #1" msgstr "Уменьшенное меню #1" -#: src/statusicon/statusicon.c:436 +#: src/statusicon/statusicon.c:469 msgid "Small playback menu #2" msgstr "Уменьшенное меню #2" -#: src/statusicon/statusicon.c:452 +#: src/statusicon/statusicon.c:485 msgid "Mouse Scroll Action" msgstr "ДейÑтвие при прокрутке колеÑа мыши" -#: src/statusicon/statusicon.c:456 +#: src/statusicon/statusicon.c:489 msgid "Change volume" msgstr "Изменить громкоÑÑ‚ÑŒ" -#: src/statusicon/statusicon.c:458 +#: src/statusicon/statusicon.c:491 msgid "Change playing song" msgstr "Сменить текущую дорожку" -#: src/stereo_plugin/stereo.c:40 +#: src/statusicon/statusicon.c:504 +msgid "Other settings" +msgstr "Другие наÑтройки" + +#: src/statusicon/statusicon.c:509 +msgid "Disable the popup window" +msgstr "Отключить вÑплывающее окно" + +#: src/statusicon/statusicon.c:516 +msgid "Close to the notification area (system tray)" +msgstr "ВмеÑто Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñвернуть в облаÑÑ‚ÑŒ уведомлений (в трей)" + +#: src/statusicon/statusicon.c:524 +msgid "Advance in playlist when scrolling upward" +msgstr "ПродвигатьÑÑ Ð¿Ð¾ ÑпиÑку воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ прокрутке колёÑика" + +#: src/stereo_plugin/stereo.c:45 msgid "" "Extra Stereo Plugin\n" "\n" @@ -5611,111 +3558,15 @@ msgid "About Extra Stereo Plugin" msgstr "О модуле Дополнительное Ñтерео" -#: src/stereo_plugin/stereo.c:100 +#: src/stereo_plugin/stereo.c:95 msgid "Configure Extra Stereo" msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ñтерео" -#: src/streambrowser/gui/streambrowser_win.c:62 -msgid "Search:" -msgstr "ПоиÑк:" - -#: src/streambrowser/gui/streambrowser_win.c:81 -#: src/streambrowser/gui/streambrowser_win.c:370 -msgid "Add Bookmark" -msgstr "Добавить закладку" - -#: src/streambrowser/gui/streambrowser_win.c:95 -msgid "Stream browser" -msgstr "Потоковый браузер" - -#: src/streambrowser/gui/streambrowser_win.c:319 -msgid "Stream name" -msgstr "Ðазвание потока" - -#: src/streambrowser/gui/streambrowser_win.c:326 -msgid "Now playing" -msgstr "ВоÑпроизводитÑÑ" - -#: src/streambrowser/gui/streambrowser_win.c:367 -msgid "Remove Bookmark" -msgstr "Удалить закладку" - -#: src/streambrowser/streambrowser.c:331 -msgid "About Stream Browser" -msgstr "О модуле Потоковый браузер" - -#: src/streambrowser/streambrowser.c:332 -msgid "" -"Copyright (c) 2008, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming " -"directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" -"\n" -"This was a Google Summer of Code 2008 project." -msgstr "" -"Copyright (c) 2008, Calin Crisan и команда Audacious.\n" -"\n" -"Это проÑтой потоковый браузер, который включает большинÑтво Ñамых популÑрных " -"потоковых каталогов.\n" -"БлагодарноÑти разработчикам Streamtuner ,\n" -"и, конечно, вÑему ÑообщеÑтву Audacious.\n" -"\n" -"Также благодарноÑти Tony Vroon за наÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ оказанную мне помощь.\n" -"\n" -"Это проект Google Summer of Code 2008." - -#: src/streambrowser/streambrowser.c:357 src/streambrowser/streambrowser.c:367 -msgid "Streambrowser" -msgstr "Потоковый браузер" - -#: src/sun/about.c:30 -msgid "About the Sun Driver" -msgstr "О модуле Sun Driver" - -#: src/sun/about.c:31 -msgid "" -"XMMS BSD Sun Driver\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" -msgstr "" -"XMMS BSD Sun Драйвер\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Поддержка: .\n" - -#: src/sun/configure.c:199 -msgid "Audio control device:" -msgstr "УÑтройÑтво ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð¼:" - -#: src/sun/configure.c:270 -msgid "Buffer size (ms):" -msgstr "Размер буфера (мÑ):" - -#: src/sun/configure.c:348 -msgid "Volume controls device:" -msgstr "УÑтройÑтво ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñтью:" - -#: src/sun/configure.c:361 -msgid "XMMS uses mixer exclusively." -msgstr "Микшер иÑпользуетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ XMMS." - -#: src/sun/configure.c:536 -msgid "Sun driver configuration" -msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ Sun driver" - -#: src/tonegen/tonegen.c:53 +#: src/tonegen/tonegen.c:49 msgid "About Tone Generator" msgstr "О модуле Генератор Ñигналов" -#: src/tonegen/tonegen.c:55 +#: src/tonegen/tonegen.c:51 msgid "" "Sinus tone generator by Haavard Kvaalen \n" "Modified by Daniel J. Peng \n" @@ -5726,40 +3577,27 @@ "Генератор ÑинуÑоидальных Ñигналов, Haavard Kvaalen \n" "ИзменениÑ, Daniel J. Peng \n" "\n" -"Чтобы иÑпользовать его, добавьте в проигрыватель Ñледующий адреÑ: tone://" -"чаÑтота1;чаÑтота2;чаÑтота3;...\n" +"Чтобы иÑпользовать его, добавьте в проигрыватель Ñледующий адреÑ: tone://чаÑтота1;чаÑтота2;чаÑтота3;...\n" "Ðапример, tone://2000;2005 Ð´Ð»Ñ Ð²Ð¾ÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñигналов 2000 Гц и 2005 Гц" -#: src/tonegen/tonegen.c:105 +#: src/tonegen/tonegen.c:101 #, c-format msgid "%s %.1f Hz" msgstr "%s %.1f Гц" -#: src/tonegen/tonegen.c:105 +#: src/tonegen/tonegen.c:101 msgid "Tone Generator: " msgstr "Генератор Ñигналов: " -#: src/vorbis/configure.c:31 -msgid "Override generic titles" -msgstr "Ðе иÑпользовать Ñтандартные названиÑ" - -#: src/vorbis/configure.c:32 -msgid "Title format:" -msgstr "Формат названиÑ:" - -#: src/vorbis/configure.c:36 -msgid "Ogg Vorbis Tags" -msgstr "Теги Ogg Vorbis" - -#: src/vorbis/configure.c:68 -msgid "Ogg Vorbis Audio Plugin Configuration" -msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ Ogg Vorbis" +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" +msgstr "Про File I/O Plugin" -#: src/vorbis/vorbis.c:549 +#: src/vorbis/vorbis.c:573 msgid "About Ogg Vorbis Audio Plugin" msgstr "О модуле Ogg Vorbis" -#: src/vorbis/vorbis.c:554 +#: src/vorbis/vorbis.c:578 msgid "" "Ogg Vorbis Plugin by the Xiph.org Foundation\n" "\n" @@ -5800,8 +3638,7 @@ #: src/vtx/about.c:15 msgid "" "Vortex file format player by Sashnov Alexander \n" -"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" "\n" "Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" "and other AY/YM music sites.\n" @@ -5816,12 +3653,12 @@ "\n" "Реализацию Ð´Ð»Ñ Audacious выполнил Pavel Vymetalek " -#: src/wavpack/wavpack.c:371 +#: src/wavpack/wavpack.c:353 #, c-format msgid "Wavpack Decoder Plugin %s" msgstr "Модуль Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Wavpack %s" -#: src/wavpack/wavpack.c:372 +#: src/wavpack/wavpack.c:354 msgid "" "Copyright (c) 2006 William Pitcock \n" "\n" @@ -5833,2851 +3670,4 @@ "ЧаÑÑ‚ÑŒ кода Ñтого Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð½Ð°Ð¿Ð¸Ñал Miles Egan\n" "ПоÑетите Ñайт Wavpack по адреÑу http://www.wavpack.com/\n" -#~ msgid "PREAMP" -#~ msgstr "ПРЕДУСИЛЕÐИЕ" - -#~ msgid "60HZ" -#~ msgstr "60 Гц" - -#~ msgid "170HZ" -#~ msgstr "170 Гц" - -#~ msgid "310HZ" -#~ msgstr "310 Гц" - -#~ msgid "600HZ" -#~ msgstr "600 Гц" - -#~ msgid "1KHZ" -#~ msgstr "1 кГц" - -#~ msgid "3KHZ" -#~ msgstr "3 кГц" - -#~ msgid "6KHZ" -#~ msgstr "6 кГц" - -#~ msgid "12KHZ" -#~ msgstr "12 кГц" - -#~ msgid "14KHZ" -#~ msgstr "14 кГц" - -#~ msgid "16KHZ" -#~ msgstr "16 кГц" - -#~ msgid "Audacious standard menu" -#~ msgstr "Стандартное меню Audacious" - -#~ msgid "Surround echo" -#~ msgstr "Объёмное Ñхо" - -#~ msgid "About ESounD Plugin" -#~ msgstr "О модуле ESounD" - -#~ msgid "" -#~ "Audacious ESounD Plugin\n" -#~ "\n" -#~ " This program is free software; you can redistribute it and/or modify\n" -#~ "it under the terms of the GNU General Public License as published by\n" -#~ "the Free Software Foundation; either version 2 of the License, or\n" -#~ "(at your option) any later version.\n" -#~ "\n" -#~ "This program is distributed in the hope that it will be useful,\n" -#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -#~ "GNU General Public License for more details.\n" -#~ "\n" -#~ "You should have received a copy of the GNU General Public License\n" -#~ "along with this program; if not, write to the Free Software\n" -#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA " -#~ "02110-1301,\n" -#~ "USA." -#~ msgstr "" -#~ "Драйвер ESounD Ð´Ð»Ñ Audacious\n" -#~ "\n" -#~ "Эта программа - Ñвободное программное обеÑпечение; вы можете " -#~ "раÑпроÑтранÑÑ‚ÑŒ и/или модифицировать его в ÑоответÑтвии Ñ ÑƒÑловиÑми\n" -#~ "Стандартной ОбщеÑтвенной Лицензии GNU, изданной Фондом Свободного\n" -#~ "Программного ОбеÑпечениÑ; или же верÑией 2 Стандартной ОбщеÑтвенной\n" -#~ "Лицензии Лицензии GNU или (по желанию) любой более поздней её верÑией.\n" -#~ "\n" -#~ "Эта программа раÑпроÑтранÑетÑÑ Ñ Ð½Ð°Ð´ÐµÐ¶Ð´Ð¾Ð¹, что она будет полезна, но БЕЗ\n" -#~ "ВСЯКИХ ГÐРÐÐТИЙÐЫХ ОБЯЗÐТЕЛЬСТВ; без подразумеваемой гарантии товарного\n" -#~ "ÑоÑтоÑÐ½Ð¸Ñ Ð¸ ПРИГОДÐОСТИ ИСПОЛЬЗОВÐÐИЯ ЕРДЛЯ КÐКОЙ-ЛИБО ЦЕЛИ.\n" -#~ "ОбратитеÑÑŒ за подробноÑÑ‚Ñми к Лицензии GNU.\n" -#~ "\n" -#~ "Ð’Ñ‹ должны были получить копию Стандартной ОбщеÑтвенной Лицензии GNU\n" -#~ "вмеÑте Ñ Ñтой программой; еÑли же нет, то напишите об Ñтом по адреÑу: " -#~ "Free Software\n" -#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, " -#~ "USA." - -#~ msgid "ESD Output Plugin configuration" -#~ msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ ESD" - -#~ msgid "Host:" -#~ msgstr "Узел:" - -#~ msgid "Use remote host" -#~ msgstr "ИÑпользовать удалённый узел" - -#~ msgid "Volume controls OSS mixer" -#~ msgstr "ГромкоÑÑ‚ÑŒ регулируетÑÑ Ð¼Ð¸ÐºÑˆÐµÑ€Ð¾Ð¼ OSS" - -#~ msgid "Port:" -#~ msgstr "Порт:" - -#~ msgid "Server" -#~ msgstr "Сервер" - -#~ msgid "GTK Foobar-like Interface" -#~ msgstr "Похожий на GTK Foobar интерфейÑ" - -#~ msgid "Load List" -#~ msgstr "Загрузить ÑпиÑок" - -#~ msgid "Save List" -#~ msgstr "Сохранить ÑпиÑок" - -#, fuzzy -#~ msgid "About RoarAudio Plugin" -#~ msgstr "О модуле FFaudio" - -#, fuzzy -#~ msgid "RoarAudio Audacious Plugin..." -#~ msgstr "О модуле LIRC" - -#, fuzzy -#~ msgid "RoarAudio Plugin - Configuration" -#~ msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ CD Audio" - -#, fuzzy -#~ msgid "Server Type:" -#~ msgstr "Сервер:" - -#, fuzzy -#~ msgid "Host:" -#~ msgstr "_Шрифты" - -#, fuzzy -#~ msgid "Proxy Address" -#~ msgstr "ÐдреÑ:" - -#, fuzzy -#~ msgid "Proxy" -#~ msgstr "Gerpok" - -#, fuzzy -#~ msgid "Player Name:" -#~ msgstr "_Проигрыватель:" - -#, fuzzy -#~ msgid "Player" -#~ msgstr "Плеер:" - -#, fuzzy -#~ msgid "Current Song" -#~ msgstr "ДейÑтвие:" - -#~ msgid "" -#~ "Unable to save playlist.\n" -#~ "\n" -#~ "Unknown file type for '%s'.\n" -#~ msgstr "" -#~ "Ðевозможно Ñохранить ÑпиÑок воÑпроизведениÑ.\n" -#~ "\n" -#~ "ÐеизвеÑтный тип файла Ð´Ð»Ñ '%s'.\n" - -#~ msgid "Randomize List" -#~ msgstr "Сортировать в Ñлучайном порÑдке" - -#~ msgid "Randomizes the playlist." -#~ msgstr "Сортировать запиÑи в ÑпиÑке воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð² Ñлучайном порÑдке." - -#~ msgid "ALSA Gapless Output Plugin Preferences" -#~ msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° ALSA Gapless" - -#~ msgid "Unknown soundcard" -#~ msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð·Ð²ÑƒÐºÐ¾Ð²Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð°" - -#~ msgid "Default PCM device (%s)" -#~ msgstr "УÑтройÑтво PCM по умолчанию (%s)" - -#~ msgid "Device:" -#~ msgstr "УÑтройÑтво:" - -#~ msgid "Mixer:" -#~ msgstr "Микшер:" - -#~ msgid "Dummy Backend " -#~ msgstr "Фиктивный модуль" - -#~ msgid "" -#~ "This backend does not produce audio at all. It is mostly useful for " -#~ "analysis and testing purposes, as it can log all MIDI events to standard " -#~ "output, standard error or file.\n" -#~ "Backend written by Giacomo Lozito." -#~ msgstr "" -#~ "Этот внутренний модуль вообще не производит звук. Он удобен только Ð´Ð»Ñ " -#~ "анализа и теÑтированиÑ, он также может журналировать вÑе ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ MIDI в " -#~ "Ñтандартный вывод, Ñтандартный вывод ошибок, или в файл.\n" -#~ "Этот внутренний модуль напиÑан Giacomo Lozito." - -#~ msgid "AMIDI-Plug message" -#~ msgstr "Сообщение AMIDI-Plug" - -#~ msgid "Please stop the player before changing AMIDI-Plug settings." -#~ msgstr "" -#~ "ПожалуйÑта, оÑтановите воÑпроизведение перед изменением параметров AMIDI-" -#~ "PLug" - -#~ msgid "DUMMY BACKEND CONFIGURATION" -#~ msgstr "ПÐРÐМЕТРЫ ФИКТИВÐОГО МОДУЛЯ" - -#~ msgid "MIDI logger settings" -#~ msgstr "Параметры журнала MIDI" - -#~ msgid "Do not log anything" -#~ msgstr "Ðе веÑти журнал" - -#~ msgid "Log MIDI events to standard output" -#~ msgstr "ЗапиÑывать ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ MIDI в Ñтандартный вывод" - -#~ msgid "Log MIDI events to standard error" -#~ msgstr "ЗапиÑывать ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ MIDI в Ñтандартный вывод ошибок" - -#~ msgid "Log MIDI events to file" -#~ msgstr "ЗапиÑывать ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ MIDI в файл" - -#~ msgid "Logfile settings" -#~ msgstr "Параметры файла журнала" - -#~ msgid "Use a single file to log everything (rewrite)" -#~ msgstr "ИÑпользовать один файл Ð´Ð»Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ð° (перезапиÑывать)" - -#~ msgid "Use a single file to log everything (append)" -#~ msgstr "ИÑпользовать один файл Ð´Ð»Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ð° (добавлÑÑ‚ÑŒ)" - -#~ msgid "Use a different logfile for each MIDI file" -#~ msgstr "ИÑпользовать отдельный файл Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ MIDI-файла" - -#~ msgid "» Log dir:" -#~ msgstr "» Каталог журнала:" - -#~ msgid "browse" -#~ msgstr "Обзор" - -#~ msgid "» Log file:" -#~ msgstr "» Файл журнала:" - -#~ msgid "Playback speed" -#~ msgstr "СкороÑÑ‚ÑŒ воÑпроизведениÑ" - -#~ msgid "Play at normal speed" -#~ msgstr "ÐÐ¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑкороÑÑ‚ÑŒ воÑпроизведениÑ" - -#~ msgid "Play as fast as possible" -#~ msgstr "МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑкороÑÑ‚ÑŒ воÑпроизведениÑ" - -#~ msgid "Dummy Backend not loaded or not available" -#~ msgstr "Фиктивный модуль не загружен или недоÑтупен" - -#~ msgid "" -#~ "Dummy\n" -#~ "backend" -#~ msgstr "" -#~ "Фиктивный\n" -#~ "модуль" - -#~ msgid "Buffer settings" -#~ msgstr "Параметры буфера" - -#~ msgid "def" -#~ msgstr "определение" - -#~ msgid "handy buffer tuner" -#~ msgstr "Ñ‚Ð¾Ð½ÐºÐ°Ñ Ð½Ð°Ñтройка буфера" - -#~ msgid "size" -#~ msgstr "размер" - -#~ msgid "margin" -#~ msgstr "поле" - -#~ msgid "increment" -#~ msgstr "увеличение" - -#~ msgid "" -#~ "* FluidSynth backend buffer *\n" -#~ "This button resets the backend buffer parameters to default values." -#~ msgstr "" -#~ "* Буфер внутреннего Ð¼Ð¾Ð´ÑƒÐ»Ñ FluidSynth *\n" -#~ "Эта кнопка ÑбраÑывает наÑтройки буфера до значений по умолчанию." - -#~ msgid "" -#~ "* FluidSynth backend buffer *\n" -#~ "If you notice skips or slowness during song playback and your system is " -#~ "not performing any cpu-intensive task (except FluidSynth itself), you may " -#~ "want to adjust the buffer parameters. Try to move the \"handy buffer tuner" -#~ "\" some steps to the right until playback is fluid again." -#~ msgstr "" -#~ "* Буфер внутреннего Ð¼Ð¾Ð´ÑƒÐ»Ñ FluidSynth *\n" -#~ "ЕÑли вы заметили пропуÑки или замедление воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ¸ в то " -#~ "времÑ, когда ваша ÑиÑтема не выполнÑет каких-либо реÑурÑоёмких задач " -#~ "(кроме Ñамого FluidSynth), то, возможно, вам Ñледует подкорректировать " -#~ "параметры буфера. Попробуйте подвинуть ползунок \"Ñ‚Ð¾Ð½ÐºÐ°Ñ Ð½Ð°Ñтройка буфера" -#~ "\" на неÑколько пунктов вправо до тех пор, пока воÑпроизведение не Ñтанет " -#~ "ровным." - -#~ msgid "" -#~ "* FluidSynth backend buffer *\n" -#~ "It is a good idea to make buffer adjustments with the \"handy buffer tuner" -#~ "\" before resorting to manual editing of buffer parameters.\n" -#~ "However, if you want to fine-tune something and want to know what you're " -#~ "doing, you can understand how these parameters work by reading the " -#~ "backend code (b-fluidsynth.c). In short words, every amount of time " -#~ "(proportional to buffer_SIZE and sample rate), right before gathering " -#~ "samples, the buffer is resized as follows:\n" -#~ "buffer_SIZE + buffer_MARGIN + extramargin\n" -#~ "where extramargin is a value computed as number_of_seconds_of_playback / " -#~ "margin_INCREMENT ." -#~ msgstr "" -#~ "* Буфер внутреннего Ð¼Ð¾Ð´ÑƒÐ»Ñ FluidSynth *\n" -#~ "Прежде чем вручную наÑтраивать параметры буфера, попробуйте " -#~ "подкорректировать его Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ползунка \"Ñ‚Ð¾Ð½ÐºÐ°Ñ Ð½Ð°Ñтройка буфера\".Тем " -#~ "не менее, еÑли вы хотите хорошо наÑтроить что-то и знаете, что делаете, " -#~ "вы можете понÑÑ‚ÑŒ как работают Ñти параметры, поÑмотрев иÑходный код " -#~ "Ð¼Ð¾Ð´ÑƒÐ»Ñ (b-fluidsynth.c). Короче говорÑ, в каждый момент времени " -#~ "(пропорционально buffer_SIZE и чаÑтоте), прÑмо перед Ñозданием очередной " -#~ "порции звука, у буфера менÑетÑÑ Ñ€Ð°Ð·Ð¼ÐµÑ€ по Ñледующему принципу:\n" -#~ "buffer_SIZE + buffer_MARGIN + extramargin,\n" -#~ "где extramargin - чиÑло, выÑчитываемое как " -#~ "количеÑтво_Ñекунд_воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ / margin_INCREMENT." - -#~ msgid "AudioCompress " -#~ msgstr "AudioCompress " - -#~ msgid "" -#~ "\n" -#~ "(c)2003 trikuare studios(http://trikuare.cx)\n" -#~ "Ported to Audacious by Tony Vroon (chainsaw@gentoo.org)\n" -#~ "\n" -#~ "Simple dynamic range compressor for transparently\n" -#~ "keeping the volume level more or less consistent" -#~ msgstr "" -#~ "\n" -#~ "(c)2003 trikuare studios (http://trikuare.cx)\n" -#~ "Портирован Tony Vroon (chainsaw@gentoo.org) Ð´Ð»Ñ Audacious\n" -#~ "\n" -#~ "ПроÑтой динамичеÑкий компреÑÑор Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð·Ñ€Ð°Ñ‡Ð½Ð¾Ð³Ð¾\n" -#~ "ÑƒÐ´ÐµÑ€Ð¶Ð°Ð½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти на отноÑительно поÑтоÑнном уровне." - -#~ msgid "About AudioCompress" -#~ msgstr "О модуле AudioCompress" - -#~ msgid "" -#~ "If checked, when the sound peaks the volume will be cut instantly; " -#~ "otherwise, it will ramp down just in time for the peak (but some minor " -#~ "clipping may still occur)." -#~ msgstr "" -#~ "ЕÑли включён, то Ñрезает громкие звуковые пики немедленно. Иначе, модуль " -#~ "Ñнижает громкоÑÑ‚ÑŒ только во Ð²Ñ€ÐµÐ¼Ñ Ð·Ð²ÑƒÐºÐ¾Ð²Ñ‹Ñ… пиков (Ñ…Ð¾Ñ‚Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ðµ резкие " -#~ "звуки могут быть пропущены)." - -#~ msgid "The maximum amount to amplify the audio by" -#~ msgstr "Уровень макÑимального уÑÐ¸Ð»ÐµÐ½Ð¸Ñ Ð·Ð²ÑƒÐºÐ°" - -#~ msgid "Defines how smoothly the volume will ramp up" -#~ msgstr "УÑтановить, наÑколько гладко должна нараÑтать громкоÑÑ‚ÑŒ" - -#~ msgid "" -#~ "The target audio level for ramping up. Lowering the value gives a bit " -#~ "more dynamic range for peaks, but will make the overall sound quieter." -#~ msgstr "" -#~ "Заданный уровень Ð´Ð»Ñ Ð½Ð°Ñ€Ð°Ñ‰Ð¸Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ°. Снижение Ñтого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð°ÑÑ‚ " -#~ "более динамичный Ñпектр пиков, но Ñделает общий звуковой фон тише." - -#~ msgid "How long of a window to maintain" -#~ msgstr "Сколько удерживать окно" - -#~ msgid " Quality Options " -#~ msgstr "Параметры качеÑтва" - -#~ msgid " Aggressively prevent clipping" -#~ msgstr "УÑиленно предотвращать Ñрезание" - -#~ msgid " Target & gain" -#~ msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÑƒÑÐ¸Ð»ÐµÐ½Ð¸Ñ Ð·Ð²ÑƒÐºÐ°" - -#~ msgid "Target audio level:" -#~ msgstr "Заданный уровень звука:" - -#~ msgid "Maximum gain:" -#~ msgstr "МакÑимальное уÑиление:" - -#~ msgid "Gain smooth:" -#~ msgstr "Сглаживание уÑилениÑ:" - -#~ msgid " History " -#~ msgstr "ИÑториÑ" - -#~ msgid "" -#~ "How long of a history to maintain. A higher number will make the volume " -#~ "changes less responsive." -#~ msgstr "" -#~ "ДлительноÑÑ‚ÑŒ Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸Ñтории изменений Ñигнала. Большие Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÑƒÑ‚ " -#~ "к замедлению Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти." - -#~ msgid "Load default values" -#~ msgstr "Параметры по умолчанию" - -#~ msgid "Audio values" -#~ msgstr "Параметры звука" - -#~ msgid "Limit read speed to: " -#~ msgstr "Ограничить ÑкороÑÑ‚ÑŒ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð´Ð¾:" - -#~ msgid "Start of playback" -#~ msgstr "Ðачало воÑпроизведениÑ" - -#~ msgid "Automatic songchange" -#~ msgstr "ÐвтоматичеÑÐºÐ°Ñ Ñмена дорожки" - -#~ msgid "Manual songchange" -#~ msgstr "Смена дорожки вручную" - -#~ msgid "Manual stop" -#~ msgstr "ОÑтановка воÑпроизведениÑ" - -#~ msgid "End of playlist" -#~ msgstr "Конец ÑпиÑка воÑпроизведениÑ" - -#~ msgid "Seeking" -#~ msgstr "Перемещение" - -#~ msgid "Reopen output device" -#~ msgstr "Повторно открыть уÑтройÑтво вывода" - -#~ msgid "Flush output device" -#~ msgstr "СброÑить уÑтройÑтво вывода" - -#~ msgid "None (gapless/off)" -#~ msgstr "Ðет (непрерывный режим выключен)" - -#~ msgid "Simple crossfade" -#~ msgstr "ПроÑтое перекрёÑтное затухание" - -#~ msgid "Advanced crossfade" -#~ msgstr "Сложное перекрёÑтное затухание" - -#~ msgid "Fadein" -#~ msgstr "Плавное увеличение громкоÑти" - -#~ msgid "Fadeout" -#~ msgstr "Плавное уменьшение громкоÑти" - -#~ msgid "Fadeout/Fadein" -#~ msgstr "Уменьшение/увеличение громкоÑти" - -#~ msgid "" -#~ "Audacious Crossfade Plugin\n" -#~ "\n" -#~ "Copyright © 2009 William Pitcock \n" -#~ "\n" -#~ "...based in part on XMMS-Crossfade:\n" -#~ "Copyright © 2000-2009 Peter Eisenlohr \n" -#~ "\n" -#~ "based on the original OSS Output Plugin Copyright (C) 1998-2000\n" -#~ "Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front " -#~ "Technologies\n" -#~ "\n" -#~ "This program is free software; you can redistribute it and/or modify\n" -#~ "it under the terms of the GNU General Public License as published by\n" -#~ "the Free Software Foundation; either version 2 of the License, or\n" -#~ "(at your option) any later version.\n" -#~ "\n" -#~ "This program is distributed in the hope that it will be useful,\n" -#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -#~ "GNU General Public License for more details.\n" -#~ "\n" -#~ "You should have received a copy of the GNU General Public License\n" -#~ "along with this program; if not, write to the Free Software\n" -#~ "Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,\n" -#~ "USA." -#~ msgstr "" -#~ "Модуль \"ПерекрёÑтное затухание\"\n" -#~ "\n" -#~ "Copyright © 2009 William Pitcock \n" -#~ "\n" -#~ "...иÑпользует чаÑÑ‚ÑŒ кода XMMS-Crossfade:\n" -#~ "Copyright © 2000-2009 Peter Eisenlohr \n" -#~ "\n" -#~ "иÑпользуютÑÑ Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»ÑŒÐ½Ñ‹Ðµ модули вывода звуковой ÑиÑтемы OSS Copyright " -#~ "(C) 1998-2000\n" -#~ "Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front " -#~ "Technologies\n" -#~ "\n" -#~ "Эта программа - Ñвободное программное обеÑпечение; вы можете " -#~ "раÑпроÑтранÑÑ‚ÑŒ и/или модифицировать его в ÑоответÑтвии Ñ ÑƒÑловиÑми\n" -#~ "Стандартной ОбщеÑтвенной Лицензии GNU, изданной Фондом Свободного\n" -#~ "Программного ОбеÑпечениÑ; или же верÑией 2 Стандартной ОбщеÑтвенной\n" -#~ "Лицензии Лицензии GNU или (по желанию) любой более поздней её верÑией.\n" -#~ "\n" -#~ "Эта программа раÑпроÑтранÑетÑÑ Ñ Ð½Ð°Ð´ÐµÐ¶Ð´Ð¾Ð¹, что она будет полезна, но БЕЗ\n" -#~ "ВСЯКИХ ГÐРÐÐТИЙÐЫХ ОБЯЗÐТЕЛЬСТВ; без подразумеваемой гарантии товарного\n" -#~ "ÑоÑтоÑÐ½Ð¸Ñ Ð¸ ПРИГОДÐОСТИ ИСПОЛЬЗОВÐÐИЯ ЕРДЛЯ КÐКОЙ-ЛИБО ЦЕЛИ.\n" -#~ "ОбратитеÑÑŒ за подробноÑÑ‚Ñми к Лицензии GNU.\n" -#~ "\n" -#~ "Ð’Ñ‹ должны были получить копию Стандартной ОбщеÑтвенной Лицензии GNU\n" -#~ "вмеÑте Ñ Ñтой программой; еÑли же нет, то напишите об Ñтом по адреÑу: " -#~ "Free Software\n" -#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, " -#~ "USA." - -#~ msgid "Crossfade Configuration" -#~ msgstr "Параметры перекрёÑтного затуханиÑ" - -#~ msgid "About" -#~ msgstr "О" - -#~ msgid "Output plugin" -#~ msgstr "Драйвер вывода звука" - -#~ msgid "Throttle Output" -#~ msgstr "Приглушенный вывод" - -#~ msgid "Max block size (bytes):" -#~ msgstr "МакÑимальный размер блока (байт):" - -#~ msgid "Force close/reopen on songchange" -#~ msgstr "Принудительно открыть заново при Ñмене дорожки" - -#~ msgid "Plugin compatibility options" -#~ msgstr "Параметры ÑовмеÑтимоÑти драйвера" - -#~ msgid "" -#~ "When modifying the Output Options or the Mixing buffer size, you need to " -#~ "stop/restart playback for the settings to take effect." -#~ msgstr "" -#~ "При изменении параметров вывода или размера буфера микшера необходимо " -#~ "оÑтановить и запуÑтить воÑпроизведение заново, чтобы Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ñтупили в " -#~ "Ñилу." - -#~ msgid "Mixing buffer size (ms):" -#~ msgstr "Размер буфера микшера (мÑ):" - -#~ msgid "" -#~ "Specify the size of the mixing buffer. Mixing buffer space is required " -#~ "for pauses, fade-outs, offsetting (i.e. interleaving the end and " -#~ "beginning of two songs) and killing trailing gaps. Fade-ins and killing " -#~ "leading gaps are done on-the-fly and do not depend on mixing buffer " -#~ "space.\n" -#~ "Default: n/a - calculated automatically" -#~ msgstr "" -#~ "Укажите здеÑÑŒ размер буфера микшера. Буфер микшера необходим Ð´Ð»Ñ Ð¿Ð°ÑƒÐ·, " -#~ "плавного ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти, переходов (например, Ð´Ð»Ñ ÑвÑÐ·Ñ‹Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð½Ñ†Ð° " -#~ "и начала двух дорожек) и Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ¶ÑƒÑ‚ÐºÐ¾Ð² между дорожками. " -#~ "Плавное увеличение громкоÑти и удаление главных промежутков делаетÑÑ \"на " -#~ "лету\" и не завиÑит от размера буфера микшера.\n" -#~ "По умолчанию: недоÑтупно - подÑчитываетÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки" - -#~ msgid "auto" -#~ msgstr "ÐвтоматичеÑки" - -#~ msgid "" -#~ "Automatically calculate an optimal buffer size.\n" -#~ "Default: On" -#~ msgstr "" -#~ "ÐвтоматичеÑки раÑÑчитывать оптимальный размер буфера.\n" -#~ "По умолчанию включено" - -#~ msgid "Set parameters for:" -#~ msgstr "ÐаÑтроить параметры длÑ:" - -#~ msgid "" -#~ "Select the type of songchange you want to configure:\n" -#~ "* Start of playback: When starting playback by pressing PLAY\n" -#~ "* Automatic songchange: When reaching the end of a song and the playlist " -#~ "advances to the next song\n" -#~ "* Manual songchange: When manually selecting another song, for example by " -#~ "pressing NEXT/PREV\n" -#~ "* Manual stop: When pressing the STOP button\n" -#~ "* End of playlist: After the last song in the playlist has been played\n" -#~ "* Seeking: When seeking within the current song" -#~ msgstr "" -#~ "Выберите тип Ñмены дорожки, который требуетÑÑ Ð½Ð°Ñтроить:\n" -#~ "* Ðачало воÑпроизведениÑ: когда воÑпроизведение запуÑкаетÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ¾Ð¹ " -#~ "\"ИГРÐТЬ\"\n" -#~ "* ÐвтоматичеÑÐºÐ°Ñ Ñмена дорожки: когда при доÑтижении конца дорожки " -#~ "проиÑходит переход к Ñледующей в ÑпиÑке воÑпроизведениÑ\n" -#~ "* Смена дорожки вручную: при выборе другой дорожки вручную, например, Ñ " -#~ "помощью кнопок СЛЕДУЮЩÐЯ ДОРОЖКР/ ПРЕДЫДУЩÐЯ ДОРОЖКÐ\n" -#~ "* ОÑтановка воÑпроизведениÑ: при нажатии на кнопку \"ОСТÐÐОВИТЬ\"\n" -#~ "* Конец ÑпиÑка воÑпроизведениÑ: поÑле поÑледней проигранной дорожки в " -#~ "ÑпиÑке воÑпроизведениÑ\n" -#~ "* Перемещение: При передвижении по текущей дорожке" - -#~ msgid "Crossfade/Transition type:" -#~ msgstr "Тип перекрёÑтного затуханиÑ/перехода:" - -#~ msgid "" -#~ "Select the transition to be used for the songchange type selected above:\n" -#~ "* Fade-in: Fade-in at 'Start of playback'\n" -#~ "* Reopen output device: Force a close/open on the output plugin. This " -#~ "will most certainly re-introduce gaps and clicks, but might be usefull " -#~ "with some plugins.\n" -#~ "* Flush output device: Keeps the output plugin opened, but flushes its " -#~ "buffers. This will give you almost instant reaction when pressing NEXT/" -#~ "PREV.\n" -#~ "* None (gapless/off): Gapless mode. Keeps the device opened, but does not " -#~ "do any fading.\n" -#~ "* Simple crossfade: Does a simple crossfade between the previous and the " -#~ "next song.\n" -#~ "* Advanced crossfade: Allows you to configure the crossfade in more " -#~ "detail.\n" -#~ "* Fade-out: Fade-out at 'Manual stop' or 'End of playlist'." -#~ msgstr "" -#~ "Выберите переход Ð´Ð»Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð³Ð¾ выше типа Ñмены дорожки:\n" -#~ "* Плавное увеличение громкоÑти: плавное увеличение громкоÑти в начале " -#~ "воÑпроизведениÑ'\n" -#~ "* Повторно открыть уÑтройÑтво вывода: принудительно закрыть и открыть " -#~ "драйвер вывода. Это Ñ Ð±Ð¾Ð»ÑŒÑˆÐµÐ¹ определённоÑтью добавит пауз и щелчков, но " -#~ "может помочь при иÑпользовании некоторых драйверов.\n" -#~ "* СброÑить уÑтройÑтво вывода: оÑтавить драйвер вывода открытым, но " -#~ "ÑброÑить его буферы. Это приведёт к более быÑтрой реакции на нажатие " -#~ "кнопок СЛЕДУЮЩÐЯ ДОРОЖКР/ ПРЕДЫДУЩÐЯ ДОРОЖКÐ.\n" -#~ "* Ðет (непрерывный режим выключен): режим без пауз. УÑтройÑтво оÑтаётÑÑ " -#~ "открытым, но плавного Ð·Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð¸Ñ Ð½ÐµÑ‚.\n" -#~ "* ПроÑтое перекрёÑтное затухание: проÑтое затухание между предыдущей и " -#~ "Ñледующей дорожками.\n" -#~ "* Сложное перекрёÑтное затухание: имеетÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑ‚ÑŒ наÑтроить параметры " -#~ "перекрёÑтного Ð·Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ детально.\n" -#~ "* Плавное уменьшение громкоÑти: уменьшение громкоÑти в режиме 'ОÑтановка " -#~ "воÑпроизведениÑ\" или \"Конец ÑпиÑка воÑпроизведениÑ\"." - -#~ msgid "Reopen" -#~ msgstr "Открыть повторно" - -#~ msgid "Length (ms):" -#~ msgstr "ДлительноÑÑ‚ÑŒ (мÑ):" - -#~ msgid "" -#~ "Specify the length of the silence to be inserted between the tracks.\n" -#~ "Default: 2000" -#~ msgstr "" -#~ "Укажите длительноÑÑ‚ÑŒ тишины между дорожками.\n" -#~ "По умолчанию: 2000" - -#~ msgid "Start volume (%):" -#~ msgstr "ÐÐ°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾ÑÑ‚ÑŒ (%):" - -#~ msgid "Set the duration for the fadein of the next song." -#~ msgstr "" -#~ "Укажите продолжительноÑÑ‚ÑŒ плавного ÑƒÐ²ÐµÐ»Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти Ð´Ð»Ñ Ñледующей " -#~ "дорожки" - -#~ msgid "" -#~ "Set the start volume. XMMS-crossfade will fade from this volume to 100% " -#~ "during the time specified above.\n" -#~ "Default: 0" -#~ msgstr "" -#~ "Укажите начальную громкоÑÑ‚ÑŒ. ПерекрёÑтное затухание начнётÑÑ Ñ Ñтой " -#~ "громкоÑти до доÑÑ‚Ð¸Ð¶ÐµÐ½Ð¸Ñ 100% громкоÑти за времÑ, указанное выше.\n" -#~ "По умолчанию: 0" - -#~ msgid "Fade in" -#~ msgstr "Плавное увеличение громкоÑти" - -#~ msgid "Flush" -#~ msgstr "ОчиÑтить" - -#~ msgid "" -#~ "Specify the length of the crosssfade.\n" -#~ "Default: depends on songchange type" -#~ msgstr "" -#~ "Укажите длительноÑÑ‚ÑŒ перекрёÑтного затуханиÑ.\n" -#~ "По умолчанию: в завиÑимоÑти от выбранного типа Ñмены дорожки" - -#~ msgid "Crossfade" -#~ msgstr "ПерекрёÑтное затухание" - -#~ msgid "Simple XF" -#~ msgstr "ПроÑтое затухание" - -#~ msgid "Set the duration for the fadeout of the previous song." -#~ msgstr "" -#~ "УÑтановите продолжительноÑÑ‚ÑŒ плавного ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти предыдущей " -#~ "дорожки" - -#~ msgid "End volume (%):" -#~ msgstr "ÐšÐ¾Ð½ÐµÑ‡Ð½Ð°Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾ÑÑ‚ÑŒ (%):" - -#~ msgid "" -#~ "Set the end volume. XMMS-crossfade will fade from 100% to this volume " -#~ "during the time specified above.\n" -#~ "Default: 0" -#~ msgstr "" -#~ "Укажите конечную громкоÑÑ‚ÑŒ. ПерекрёÑтное затухание начнётÑÑ Ñо 100% " -#~ "громкоÑти до указанной громкоÑти за времÑ, указанное выше.\n" -#~ "По умолчанию: 0" - -#~ msgid "Fade out" -#~ msgstr "Плавное уменьшение громкоÑти" - -#~ msgid "Custom (ms):" -#~ msgstr "Другой (мÑ):" - -#~ msgid "Set a custom offset." -#~ msgstr "УÑтановите другое Ñмещение" - -#~ msgid "" -#~ "Set how much the end of the previous and the beginning of the next song " -#~ "should overlap.\n" -#~ "* Negative values indicate that the next song should start before the " -#~ "previous has reached the end.\n" -#~ "* A value of 0 means that the songs are concatenated seamlessly.\n" -#~ "* Positive values will yield insert silence inbetween.." -#~ msgstr "" -#~ "УÑтановите, ÐºÐ°ÐºÐ°Ñ Ñ‡Ð°ÑÑ‚ÑŒ предыдущей дорожки и начало Ñледующей дорожки " -#~ "должны перекрыватьÑÑ.\n" -#~ "* Отрицательные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°ÑŽÑ‚, что ÑÐ»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ° должна начатьÑÑ " -#~ "до того, как закончитÑÑ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ.\n" -#~ "* Значение, равное 0, означает, что дорожки воÑпроизводÑÑ‚ÑÑ Ð±ÐµÐ· " -#~ "промежутков.\n" -#~ "* Положительные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÑвидетельÑтвуют об уÑтановлении тишины между " -#~ "дорожками." - -#~ msgid "None (0 ms)" -#~ msgstr "Ðет (0 мÑ)" - -#~ msgid "" -#~ "Don't overlap the two songs. The next song will start immediatelly after " -#~ "the previous has ended." -#~ msgstr "" -#~ "Ðе перекрывать две дорожки. Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ° начнётÑÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾ поÑле " -#~ "Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ¹." - -#~ msgid "Lock to fadeout length" -#~ msgstr "ПривÑзать к времени ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти" - -#~ msgid "Overlap by the fadeout duration specified above." -#~ msgstr "" -#~ "Перекрытие делаетÑÑ Ð¿Ð¾ длительноÑти ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти, указанного выше." - -#~ msgid "Lock to fadein length" -#~ msgstr "ПривÑзать к времени ÑƒÐ²ÐµÐ»Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти" - -#~ msgid "Overlap by the fadein duration specified below.." -#~ msgstr "" -#~ "Перекрытие делаетÑÑ Ð¿Ð¾ длительноÑти ÑƒÐ²ÐµÐ»Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти, указанного ниже." - -#~ msgid "Offset" -#~ msgstr "Смещение" - -#~ msgid " Enable" -#~ msgstr "Включить" - -#~ msgid "Lock to Fade-out" -#~ msgstr "ПривÑзать к времени ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти" - -#~ msgid "Use the same settings as fade-out." -#~ msgstr "" -#~ "ИÑпользовать те же наÑтройки, что и Ð´Ð»Ñ Ð¿Ð»Ð°Ð²Ð½Ð¾Ð³Ð¾ ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти" - -#~ msgid "Advanced XF" -#~ msgstr "Дополнительно" - -#~ msgid "Set the duration for the fadein when starting playback." -#~ msgstr "" -#~ "УÑтановить продолжительноÑÑ‚ÑŒ ÑƒÐ²ÐµÐ»Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти в начале " -#~ "воÑпроизведениÑ." - -#~ msgid "Set the duration for the fadeout of the last song." -#~ msgstr "" -#~ "УÑтановить продолжительноÑÑ‚ÑŒ ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти поÑледней дорожки." - -#~ msgid "" -#~ "Set how much additional silence should be played after the end of the " -#~ "last song. This way, you can avoid the clicks some soundcards produce " -#~ "when being shut down during playback.\n" -#~ "Default: 500" -#~ msgstr "" -#~ "УÑтановить, наÑколько увеличить тишину поÑле Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð¿Ð¾Ñледней дорожки. " -#~ "Таким образом, можно избежать щелчков, которые издают некоторые звуковые " -#~ "карты при выключении воÑпроизведениÑ.\n" -#~ "По умолчанию: 500" - -#~ msgid "Additional silence" -#~ msgstr "Увеличение тишины" - -#~ msgid "" -#~ "Set the duration for the fadeout when pausing.\n" -#~ "Default: 100" -#~ msgstr "" -#~ "УÑтановить продолжительноÑÑ‚ÑŒ плавного ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти во Ð²Ñ€ÐµÐ¼Ñ " -#~ "паузы.\n" -#~ "По умолчанию: 100" - -#~ msgid "" -#~ "Set how much additional silence should be played after pausing. This way, " -#~ "you can avoid the clicks some soundcards produce when entering pause.\n" -#~ "Default: 100" -#~ msgstr "" -#~ "УÑтановить, наÑколько увеличить тишину поÑле паузы. Таким образом, можно " -#~ "избежать щелчков, которые издают некоторые звуковые карты при паузе.\n" -#~ "По умолчанию: 100" - -#~ msgid "" -#~ "Set the duration for the fadein when unpausing.\n" -#~ "Default: 100" -#~ msgstr "" -#~ "УÑтановить длительноÑÑ‚ÑŒ плавного ÑƒÐ²ÐµÐ»Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñти поÑле Ð²Ð¾Ð·Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ " -#~ "воÑпроизведениÑ.\n" -#~ "По умолчанию: 100" - -#~ msgid "Fade out (ms):" -#~ msgstr "Уменьшение громкоÑти (мÑ):" - -#~ msgid "Silence (ms):" -#~ msgstr "Тишина (мÑ):" - -#~ msgid "Fade in (ms):" -#~ msgstr "Увеличение громкоÑти (мÑ):" - -#~ msgid "Fade out / Fade in" -#~ msgstr "Уменьшение / увеличение громкоÑти" - -#~ msgid "" -#~ "Set the maximum length for gaps at the beginning of a stream.\n" -#~ "Default: 500" -#~ msgstr "" -#~ "УÑтановить макÑимальную длительноÑÑ‚ÑŒ пауз в начале звукового потока.\n" -#~ "По умолчанию: 500" - -#~ msgid "" -#~ "Set the maximum volume for gaps at the beginning of a stream. All samples " -#~ "below this value are considered as silent.\n" -#~ "Default: 512" -#~ msgstr "" -#~ "УÑтановить макÑимальную громкоÑÑ‚ÑŒ пауз в начале звукового потока. Ð’Ñе " -#~ "ÑÑмплы ниже Ñтого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ€Ð°ÑÑматриваютÑÑ ÐºÐ°Ðº тишина.\n" -#~ "По умолчанию: 512" - -#~ msgid "Max. length (ms):" -#~ msgstr "МакÑ. длительноÑÑ‚ÑŒ (мÑ):" - -#~ msgid "Max. level (16bit sample):" -#~ msgstr "МакÑ. уровень (16-битные ÑÑмплы):" - -#~ msgid "Leading gap killer" -#~ msgstr "Ðачальное удаление промежутков" - -#~ msgid "" -#~ "Set the maximum length for gaps at the end of a stream.\n" -#~ "Default: 500" -#~ msgstr "" -#~ "УÑтановить макÑимальную длительноÑÑ‚ÑŒ пауз в конце потока.\n" -#~ "По умолчанию: 500" - -#~ msgid "" -#~ "Set the maximum volume for gaps at the end of a stream. All samples below " -#~ "this value are considered as silent.\n" -#~ "Default: 512" -#~ msgstr "" -#~ "УÑтановить макÑимальную громкоÑÑ‚ÑŒ пауз в конце звукового потока. Ð’Ñе " -#~ "ÑÑмплы ниже Ñтого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ€Ð°ÑÑматриваютÑÑ ÐºÐ°Ðº тишина.\n" -#~ "По умолчанию: 512" - -#~ msgid "Lock to Leading" -#~ msgstr "ПривÑзать к начальному" - -#~ msgid "Use the same settings as above." -#~ msgstr "ИÑпользовать те же параметры, что и указанные выше." - -#~ msgid "Trailing gap killer" -#~ msgstr "Конечное удаление промежутков" - -#~ msgid "Skip to next zero crossing" -#~ msgstr "Ð¡Ð±Ñ€Ð¾Ñ Ð´Ð¾ Ñледующего переÑÐµÑ‡ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ð·Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð¸Ñ Ð² нулевой точке" - -#~ msgid "" -#~ "If enabled, XMMS-crossfade will take additional care to avoid clicks with " -#~ "pre-faded (gapless) tracks. XMMS-crossfade will cut off the end of the " -#~ "previous song (the beginning of the next song) only at a zero-crossing of " -#~ "the sample values.\n" -#~ "Default: On" -#~ msgstr "" -#~ "ЕÑли активно, то модуль перекрёÑтного Ð·Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð·Ð°Ð±Ð¾Ñ‚Ð¸Ñ‚ÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ " -#~ "о том, как избежать щелчков от дорожек, к которым уже применено " -#~ "затухание. Ð’ Ñтом Ñлучае окончание предыдущей дорожки ÑрезаетÑÑ (начало " -#~ "Ñледующей дорожки) только в нулевой точке значений затуханиÑ.\n" -#~ "По умолчанию: включено" - -#~ msgid "Advanced" -#~ msgstr "Дополнительно" - -#~ msgid "Gap Killer" -#~ msgstr "Уничтожитель пауз" - -#~ msgid "Write debug output to " -#~ msgstr "ЗапиÑать отладочную информацию в Ñтандартный вывод " - -#~ msgid "" -#~ "Monitors what is going on in XMMS-crossfade. If you think you found a bug " -#~ "in XMMS-crossfade, please enable this option and send me the output.\n" -#~ "Note that you should disable debug output if you start XMMS from within " -#~ "Netscape. Netscape will spam you with dialogs containing the debug output " -#~ "captured from .\n" -#~ "Default: Off" -#~ msgstr "" -#~ "Проводить мониторинг дейÑтвий Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿ÐµÑ€ÐµÐºÑ€Ñ‘Ñтного затуханиÑ. ЕÑли вам " -#~ "показалоÑÑŒ, что вы обнаружили ошибку в Ñтом модуле, пожалуйÑта, включите " -#~ "Ñтот параметр и перешлите нам полученные данные.\n" -#~ "Помните, что необходимо выключить формирование отладочной информации, " -#~ "еÑли модуль Ð·Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð¸Ñ Ð·Ð°Ð¿ÑƒÑ‰ÐµÐ½ в браузере Netscape. Netscape заброÑает Ð²Ð°Ñ " -#~ "ÑообщениÑми, Ñодержащими отладочную информацию, полученную из " -#~ "Ñтандартного вывода .\n" -#~ "По умолчанию: выключено" - -#~ msgid "Debug options" -#~ msgstr "Параметры отладки" - -#~ msgid "Enable volume control" -#~ msgstr "Включить регулÑтор громкоÑти" - -#~ msgid "" -#~ "Enables/disables XMMS volume and balance controls.\n" -#~ "Default: On" -#~ msgstr "" -#~ "Включить или отключить программные регулÑторы громкоÑти и баланÑа " -#~ "Audacious.\n" -#~ "По умолчанию: включено" - -#~ msgid "" -#~ "Reverses left and right with the balance control.\n" -#~ "Default: Off" -#~ msgstr "" -#~ "Изменить левый и правый канал Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ регулÑтора баланÑа.\n" -#~ "По умолчанию: выключено" - -#~ msgid "Software Mixer" -#~ msgstr "Программный микшер" - -#~ msgid "" -#~ "Enable software mixer. Usefull for output plugins without mixer support.\n" -#~ "Default: Off" -#~ msgstr "" -#~ "Включить программный микшер. Полезно Ð´Ð»Ñ Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹ вывода без поддержки " -#~ "микшера.\n" -#~ "По умолчанию: выключено" - -#~ msgid "Volume control options" -#~ msgstr "Параметры ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñтью" - -#~ msgid "Songchange timeout (ms):" -#~ msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ñмены дорожки (мÑ):" - -#~ msgid "" -#~ "The songchange timeout is the maximum time XMMS-crossfade waits for the " -#~ "next song. If this timeout is exceeded, the output plugin/device is " -#~ "closed.\n" -#~ "Default: 100" -#~ msgstr "" -#~ "МакÑимальное времÑ, в течение которого модуль перекрёÑтного Ð·Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð¸Ñ " -#~ "будет ожидать Ñледующую дорожку. При доÑтижении Ñтого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð´ÑƒÐ»ÑŒ " -#~ "вывода и уÑтройÑтво будут закрыты.\n" -#~ "По умолчанию: 100" - -#~ msgid "Mixing buffer preload (ms):" -#~ msgstr "Предзагрузка буфера микшера (мÑ):" - -#~ msgid "" -#~ "Tells XMMS-crossfade how much data it should buffer before it starts " -#~ "writing to the output plugin/device. Usually, this value can be set to 0, " -#~ "because the output plugin does preloading on its own.\n" -#~ "Default: 0" -#~ msgstr "" -#~ "Сообщить модулю перекрёÑтного затуханиÑ, Ñколько данных должны быть " -#~ "переведены в буфер до начала запиÑи в модуль вывода или уÑтройÑтво. " -#~ "Обычно Ñто значение равно 0, так как модуль вывода имеет Ñвою ÑобÑтвенную " -#~ "ÑиÑтему предварительно загрузки.\n" -#~ "По умолчанию: 0" - -#~ msgid "Don't crossfade" -#~ msgstr "Ðе применÑÑ‚ÑŒ затухание" - -#~ msgid "successive tracks" -#~ msgstr "поÑледующих дорожек" - -#~ msgid "" -#~ "This option enables the automatic detection of pre-faded or gapless " -#~ "tracks, like the tracks on some compilations or on most live albums. If " -#~ "such tracks are detected, crossfading will be disabled and only the " -#~ "gapkiller (if enabled) will be used for the songchange.\n" -#~ "Default: On" -#~ msgstr "" -#~ "Этот параметр включает автоматичеÑкое определение дорожек Ñ Ð·Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð¸ÐµÐ¼ " -#~ "или непрерывных дорожек, например, дорожек в некоторых Ñборниках или в " -#~ "большинÑтве \"живых\" альбомов. ЕÑли определена Ñ‚Ð°ÐºÐ°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ°, затухание " -#~ "будет отключено и только уничтожитель пауз (еÑли включён) будет " -#~ "применÑÑ‚ÑŒÑÑ Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ñтих дорожек.\n" -#~ "По умолчанию: включено" - -#~ msgid "same file" -#~ msgstr "тот же Ñамый файл" - -#~ msgid "" -#~ "This option disables crossfading between the same file. This can happen " -#~ "if you have only one file in the playlist and 'repeat' turned on.\n" -#~ "Default: Off" -#~ msgstr "" -#~ "Этот параметр отключает затухание между единÑтвенным файлом. Такое может " -#~ "быть, еÑли в ÑпиÑке воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ‚ÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ один файл при " -#~ "включённом режиме \"Повтор\".\n" -#~ "По умолчанию: выключено" - -#~ msgid "Enable HTTP buffer underrun workaround" -#~ msgstr "Включить буфер HTTP Ð´Ð»Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°Ð½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ Ð½ÐµÐ´Ð¾Ð³Ñ€ÑƒÐ·ÐºÐ¾Ð¹" - -#~ msgid "" -#~ "Enable this when you have problems playing internet HTTP audio streams. " -#~ "Unfortunatelly, it also breaks crossfading.\n" -#~ "Default: Off" -#~ msgstr "" -#~ "Включите Ñтот параметр, еÑли еÑÑ‚ÑŒ проблемы Ñ Ð²Ð¾Ñпроизведением HTTP " -#~ "аудиопотоков через интернет. К Ñожалению, Ñто также нарушает затухание.\n" -#~ "По умолчанию: выключено" - -#~ msgid "Limit OP buffer usage (ms):" -#~ msgstr "Ограничение размера буфера Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° (мÑ):" - -#~ msgid "" -#~ "With this option enabled, XMMS-crossfade will limit the amount of data " -#~ "being buffered by the output plugin. This way, you can decrease the " -#~ "latency between pressing STOP/NEXT/PREV and the new song actually being " -#~ "played. \n" -#~ "Default: Off" -#~ msgstr "" -#~ "ЕÑли включён Ñтот параметр, модуль перекрёÑтного Ð·Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ " -#~ "ограничивать количеÑтво данных буфера Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð°. Таким образом можно " -#~ "Ñократить задержки между нажатием кнопок \"ОСТÐÐОВИТЬ\", \"СЛЕДУЮЩÐЯ\", " -#~ "\"ПРЕДЫДУЩÐЯ\" во Ð²Ñ€ÐµÐ¼Ñ Ð²Ð¾ÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐµÐº. \n" -#~ "По умолчанию: выключено" - -#~ msgid "" -#~ "Beware that setting this value too low also increases the chance of " -#~ "buffer underruns.\n" -#~ "Default: 250" -#~ msgstr "" -#~ "Помните, что Ñлишком низкое значение Ñтого параметра также увеличивает " -#~ "ÑˆÐ°Ð½Ñ Ð½ÐµÐ´Ð¾Ð³Ñ€ÑƒÐ·ÐºÐ¸ буфера.\n" -#~ "По умолчанию: 250" - -#~ msgid "Use Quantaudio timing comments" -#~ msgstr "ИÑпользовать комментарии Quantaudio" - -#~ msgid "Keep output opened" -#~ msgstr "Ðе закрывать вывод" - -#~ msgid "" -#~ "Keep the output device opened all the time, even if XMMS is stopped. This " -#~ "way, you can avoid clicks caused by the soundcard when the device is " -#~ "opened or closed\n" -#~ "Default: Off" -#~ msgstr "" -#~ "ОÑтавить открытым уÑтройÑтво вывода вÑÑ‘ времÑ, даже еÑли программа " -#~ "Audacious будет закрыта. Так можно избежать щелчков, вызванных звуковой " -#~ "картой при открытии или закрытии уÑтройÑтва\n" -#~ "По умолчанию: выключено" - -#~ msgid "Advanced options" -#~ msgstr "Дополнительные параметры" - -#~ msgid "New" -#~ msgstr "Ðовый" - -#~ msgid "Save Default List" -#~ msgstr "Сохранить ÑпиÑок по умолчанию" - -#~ msgid "Saves the selected playlist to the default location." -#~ msgstr "Сохранить выбранный ÑпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð² меÑто по умолчанию." - -#~ msgid "Entries" -#~ msgstr "ЗапиÑи" - -#~ msgid "_Rename" -#~ msgstr "_Переименовать" - -#~ msgid "About Icecast-Plugin" -#~ msgstr "О модуле Icecast" - -#~ msgid "" -#~ "Icecast-Plugin\n" -#~ "\n" -#~ "This program is free software; you can redistribute it and/or modify\n" -#~ "it under the terms of the GNU General Public License as published by\n" -#~ "the Free Software Foundation; either version 2 of the License, or\n" -#~ "(at your option) any later version.\n" -#~ "\n" -#~ "This program is distributed in the hope that it will be useful,\n" -#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -#~ "GNU General Public License for more details.\n" -#~ "\n" -#~ "You should have received a copy of the GNU General Public License\n" -#~ "along with this program; if not, write to the Free Software\n" -#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA " -#~ "02110-1301,\n" -#~ "USA." -#~ msgstr "" -#~ "Модуль Icecast\n" -#~ "\n" -#~ "Эта программа - Ñвободное программное обеÑпечение; вы можете " -#~ "раÑпроÑтранÑÑ‚ÑŒ и/или модифицировать его в ÑоответÑтвии Ñ ÑƒÑловиÑми\n" -#~ "Стандартной ОбщеÑтвенной Лицензии GNU, изданной Фондом Свободного\n" -#~ "Программного ОбеÑпечениÑ; или же верÑией 2 Стандартной ОбщеÑтвенной\n" -#~ "Лицензии Лицензии GNU или (по желанию) любой более поздней её верÑией.\n" -#~ "\n" -#~ "Эта программа раÑпроÑтранÑетÑÑ Ñ Ð½Ð°Ð´ÐµÐ¶Ð´Ð¾Ð¹, что она будет полезна, но БЕЗ\n" -#~ "ВСЯКИХ ГÐРÐÐТИЙÐЫХ ОБЯЗÐТЕЛЬСТВ; без подразумеваемой гарантии товарного\n" -#~ "ÑоÑтоÑÐ½Ð¸Ñ Ð¸ ПРИГОДÐОСТИ ИСПОЛЬЗОВÐÐИЯ ЕРДЛЯ КÐКОЙ-ЛИБО ЦЕЛИ.\n" -#~ "ОбратитеÑÑŒ за подробноÑÑ‚Ñми к Лицензии GNU.\n" -#~ "\n" -#~ "Ð’Ñ‹ должны были получить копию Стандартной ОбщеÑтвенной Лицензии GNU\n" -#~ "вмеÑте Ñ Ñтой программой; еÑли же нет, то напишите об Ñтом по адреÑу: " -#~ "Free Software\n" -#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, " -#~ "USA." - -#~ msgid "Error setting hostname: %s\n" -#~ msgstr "Ошибка в указании удалённого узла: %s\n" - -#~ msgid "Error setting protocol: %s\n" -#~ msgstr "Ошибка в указании протокола: %s\n" - -#~ msgid "Error setting port: %s\n" -#~ msgstr "Ошибка в указании порта: %s\n" - -#~ msgid "Error setting password: %s\n" -#~ msgstr "Ошибка при введении паролÑ: %s\n" - -#~ msgid "Error setting mount: %s\n" -#~ msgstr "Ошибка параметров монтированиÑ: %s\n" - -#~ msgid "Error setting stream %s: %s\n" -#~ msgstr "Ошибка в указании потока %s: %s\n" - -#~ msgid "public" -#~ msgstr "публичный" - -#~ msgid "private" -#~ msgstr "перÑональный" - -#~ msgid "Error setting stream name: %s\n" -#~ msgstr "Ошибка в имени потока: %s\n" - -#~ msgid "Error setting stream genre: %s\n" -#~ msgstr "Ошибка в указании жанра потока: %s\n" - -#~ msgid "Error setting stream URL: %s\n" -#~ msgstr "Ошибка в URL потока: %s\n" - -#~ msgid "Error setting stream description: %s\n" -#~ msgstr "Ошибка в опиÑании потока: %s\n" - -#~ msgid "Error setting user: %s\n" -#~ msgstr "Ошибка в имени пользователÑ: %s\n" - -#~ msgid "Error connecting to server: %s\n" -#~ msgstr "Ошибка ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ñервером: %s\n" - -#~ msgid "Icecast Configuration" -#~ msgstr "Параметры Icecast" - -#~ msgid "Output stream format:" -#~ msgstr "Формат вывода потока:" - -#~ msgid "Server address:" -#~ msgstr "ÐÐ´Ñ€ÐµÑ Ñервера:" - -#~ msgid "Server hostname or IP address" -#~ msgstr "Ð˜Ð¼Ñ (hostname) Ñервера или IP адреÑ" - -#~ msgid "Server port number" -#~ msgstr "Ðомер порта Ñервера" - -#~ msgid "Mount point:" -#~ msgstr "Точка монтированиÑ:" - -#~ msgid "Mount point for the stream" -#~ msgstr "Точка Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ°" - -#~ msgid "User name:" -#~ msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ:" - -#~ msgid "" -#~ "Icecast source user name for the stream; depends on your server " -#~ "settings.\n" -#~ "The default value is \"source\"" -#~ msgstr "" -#~ "Icecast получает Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð· потока; завиÑит от наÑтройки вашего " -#~ "Ñервера.\n" -#~ "Значение по умолчанию \"source\"" - -#~ msgid "Icecast source user password" -#~ msgstr "Icecast получает пароль пользователÑ" - -#~ msgid "Connection timeout (seconds):" -#~ msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ (Ñекунд):" - -#~ msgid "" -#~ "Amount of time before plugin closes connection to server when no audio " -#~ "data available" -#~ msgstr "" -#~ "Лимит времени до того, как модуль закроет Ñоединение Ñ Ñервером, еÑли " -#~ "аудиоданные больше недоÑтупны." - -#~ msgid "Buffer size (bytes):" -#~ msgstr "Размер буфера (байт):" - -#~ msgid "" -#~ "Internal buffer size\n" -#~ "Try to increase this if you are experiencing audio skipping on client side" -#~ msgstr "" -#~ "Внутренний размер буфера\n" -#~ "Попробуйте увеличить Ñто значение еÑли еÑÑ‚ÑŒ пропуÑки звука на Ñтороне " -#~ "клиента." - -#~ msgid "Flush buffer if " -#~ msgstr "ОчиÑтить буфер, еÑли" - -#~ msgid "Determines when to flush internal buffer to prevent its overflow" -#~ msgstr "" -#~ "Определить, когда очиÑтить внутренний буфер, чтобы избежать его " -#~ "переполнениÑ." - -#~ msgid "percents are filled" -#~ msgstr "процентов заполнено" - -#~ msgid "Stream is public" -#~ msgstr "Поток ÑвлÑетÑÑ Ð¿ÑƒÐ±Ð»Ð¸Ñ‡Ð½Ñ‹Ð¼" - -#~ msgid "" -#~ "Setting this asks the server to list the stream in any directories it " -#~ "knows about" -#~ msgstr "" -#~ "Эта уÑтановка запрашивает у Ñервера ÑпиÑок потоков во вÑех каталогах, о " -#~ "которых он знает." - -#~ msgid "Stream name:" -#~ msgstr "Ðазвание потока:" - -#~ msgid "Stream URL:" -#~ msgstr "URL потока:" - -#~ msgid "The URL of a site about this stream" -#~ msgstr "URL Ñайта об Ñтом потоке" - -#~ msgid "Stream genre:" -#~ msgstr "Жанр потока:" - -#~ msgid "" -#~ "The genre (or genres) of the stream. This is usually a keyword list, eg " -#~ "\"pop rock rap\"" -#~ msgstr "" -#~ "Жанр (или жанры) потока. Обычно Ñто ÑпиÑок Ñлов, например, \"pop rock rap" -#~ "\"." - -#~ msgid "Stream description:" -#~ msgstr "ОпиÑание потока:" - -#~ msgid "" -#~ "Couldn't initialize the last.fm radio plugin.\n" -#~ "\n" -#~ "Check if your Scrobbler's plugin login data is set up properly." -#~ msgstr "" -#~ "Ðевозможно инициализировать модуль last.fm радио.\n" -#~ "\n" -#~ "Проверьте правильноÑÑ‚ÑŒ имени Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð² модуле Scrobbler." - -#~ msgid "Enable fast play-length calculation" -#~ msgstr "Включить быÑтрый подÑчёт длительноÑти звучаниÑ" - -#~ msgid "Parse XING headers" -#~ msgstr "Обрабатывать заголовки XING" - -#~ msgid "Use SJIS to write ID3 tags (not recommended)" -#~ msgstr "ИÑпользовать SJIS Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи тегов ID3 (не рекомендуетÑÑ)" - -#~ msgid "Metadata Settings" -#~ msgstr "ÐаÑтройка метаданных" - -#~ msgid "MPEG Audio Plugin Configuration" -#~ msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸ MPEG" - -#~ msgid "" -#~ "Audacious MPEG Audio Plugin\n" -#~ "\n" -#~ "Compiled against libMAD version: %d.%d.%d%s\n" -#~ "\n" -#~ "Written by:\n" -#~ " William Pitcock \n" -#~ " Yoshiki Yazawa \n" -#~ "\n" -#~ "Portions derived from XMMS-MAD by:\n" -#~ " Sam Clegg\n" -#~ "\n" -#~ "ReplayGain support by:\n" -#~ " Samuel Krempp" -#~ msgstr "" -#~ "Модуль Audacious MPEG Audio\n" -#~ "\n" -#~ "Собран Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¾Ð¹ libMAD верÑии: %d.%d.%d%s\n" -#~ "\n" -#~ "Ðвторы:\n" -#~ " William Pitcock \n" -#~ " Yoshiki Yazawa \n" -#~ "\n" -#~ "ЧаÑтично иÑпользован XMMS-MAD от:\n" -#~ " Sam Clegg\n" -#~ "\n" -#~ "Поддержка ReplayGain:\n" -#~ " Samuel Krempp" - -#~ msgid "About MPEG Audio Plugin" -#~ msgstr "О модуле поддержки MPEG" - -#~ msgid "About OSSv4 Driver" -#~ msgstr "О драйвере OSSv4 Driver" - -#~ msgid "" -#~ "Audacious OSSv4 Driver\n" -#~ "\n" -#~ "Based on the OSSv3 Output plugin,\n" -#~ "Ported to OSSv4's VMIX by Cristi Magherusan \n" -#~ "\n" -#~ "This program is free software; you can redistribute it and/or modify\n" -#~ "it under the terms of the GNU General Public License as published by\n" -#~ "the Free Software Foundation; either version 2 of the License, or\n" -#~ "(at your option) any later version.\n" -#~ "\n" -#~ "This program is distributed in the hope that it will be useful,\n" -#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -#~ "GNU General Public License for more details.\n" -#~ "\n" -#~ "You should have received a copy of the GNU General Public License\n" -#~ "along with this program; if not, write to the Free Software\n" -#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA " -#~ "02110-1301,\n" -#~ "USA.\n" -#~ "\n" -#~ "Note: For any issues regarding this plugin (including patches and \n" -#~ "suggestions) please contact the maintainer, and NO other \n" -#~ "Audacious developers\n" -#~ "\n" -#~ msgstr "" -#~ "Драйвер Audacious OSSv4\n" -#~ "\n" -#~ "ОÑнован на модуле вывода OSSv3,\n" -#~ "Портирование на VMIX OSSv4 выполнил Cristi Magherusan \n" -#~ "\n" -#~ "Эта программа - Ñвободное программное обеÑпечение; вы можете " -#~ "раÑпроÑтранÑÑ‚ÑŒ и/или модифицировать его в ÑоответÑтвии Ñ ÑƒÑловиÑми\n" -#~ "Стандартной ОбщеÑтвенной Лицензии GNU, изданной Фондом Свободного\n" -#~ "Программного ОбеÑпечениÑ; или же верÑией 2 Стандартной ОбщеÑтвенной\n" -#~ "Лицензии Лицензии GNU или (по желанию) любой более поздней её верÑией.\n" -#~ "\n" -#~ "Эта программа раÑпроÑтранÑетÑÑ Ñ Ð½Ð°Ð´ÐµÐ¶Ð´Ð¾Ð¹, что она будет полезна, но БЕЗ\n" -#~ "ВСЯКИХ ГÐРÐÐТИЙÐЫХ ОБЯЗÐТЕЛЬСТВ; без подразумеваемой гарантии товарного\n" -#~ "ÑоÑтоÑÐ½Ð¸Ñ Ð¸ ПРИГОДÐОСТИ ИСПОЛЬЗОВÐÐИЯ ЕРДЛЯ КÐКОЙ-ЛИБО ЦЕЛИ.\n" -#~ "ОбратитеÑÑŒ за подробноÑÑ‚Ñми к Лицензии GNU.\n" -#~ "\n" -#~ "Ð’Ñ‹ должны были получить копию Стандартной ОбщеÑтвенной Лицензии GNU\n" -#~ "вмеÑте Ñ Ñтой программой; еÑли же нет, то напишите об Ñтом по адреÑу: " -#~ "Free Software\n" -#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, " -#~ "USA.\n" -#~ "Примечание: По вÑем вопроÑам, ÑвÑзанным Ñ Ñтим модулем, (Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð¿Ð°Ñ‚Ñ‡Ð¸ и\n" -#~ "предложениÑ) пожалуйÑта, обращайтеÑÑŒ к разработчику и ÐИ К КОМУ ДРУГОМУ " -#~ "из\n" -#~ "разработчиков Audacious\n" -#~ "\n" - -#~ msgid "" -#~ "There has been an error that may require your attention.\n" -#~ "\n" -#~ "Contents of server error:\n" -#~ "\n" -#~ "%s\n" -#~ msgstr "" -#~ "Произошла ошибка, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¼Ð¾Ð¶ÐµÑ‚ потребовать вашего вниманиÑ.\n" -#~ "\n" -#~ "Содержание ошибки Ñервера:\n" -#~ "\n" -#~ "%s\n" - -#~ msgid "Scrobbler Error" -#~ msgstr "Ошибка Scrobbler" - -#~ msgid "VBR" -#~ msgstr "VBR" - -#~ msgid "" -#~ "Couldn't open audio.\n" -#~ "\n" -#~ "Please check that:\n" -#~ "1. You have the correct output plugin selected.\n" -#~ "2. No other programs is blocking the soundcard.\n" -#~ "3. Your soundcard is configured properly.\n" -#~ msgstr "" -#~ "Ðевозможно воÑпроизвеÑти звук.\n" -#~ "\n" -#~ "ПожалуйÑта, убедитеÑÑŒ, что:\n" -#~ "1. Ð’Ñ‹ выбрали правильный модуль вывода звука.\n" -#~ "2. Другие программы не блокируют звуковую карту.\n" -#~ "3. Ваша Ð·Ð²ÑƒÐºÐ¾Ð²Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð° наÑтроена правильно.\n" - -#~ msgid "TiMidity Configuration" -#~ msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ TiMidity" - -#~ msgid "22000 Hz" -#~ msgstr "22000 Гц" - -#~ msgid "44100 Hz" -#~ msgstr "44100 Гц" - -#~ msgid "Sample Width" -#~ msgstr "РазрÑдноÑÑ‚ÑŒ ÑÑмпла" - -#~ msgid "TiMidity Configuration File" -#~ msgstr "Файл наÑтроек TiMidity" - -#~ msgid "TiMidity Plugin %s" -#~ msgstr "О модуле TiMidity %s" - -#~ msgid "" -#~ "TiMidity Plugin\n" -#~ "http://libtimidity.sourceforge.net\n" -#~ "by Konstantin Korikov" -#~ msgstr "" -#~ "Модуль TiMidity\n" -#~ "http://libtimidity.sourceforge.net\n" -#~ "Konstantin Korikov" - -#~ msgid "Couldn't load MIDI file" -#~ msgstr "Ðевозможно загрузить MIDI файл" - -#~ msgid "Can't open file\n" -#~ msgstr "Ðевозможно открыть файл\n" - -#~ msgid "Not supported file format\n" -#~ msgstr "Формат файла не поддерживаетÑÑ\n" - -#~ msgid "File is corrupted\n" -#~ msgstr "Файл повреждён\n" - -#~ msgid "Can't read from file\n" -#~ msgstr "Ðевозможно прочеÑÑ‚ÑŒ информацию из файла\n" - -#~ msgid "Insufficient memory available\n" -#~ msgstr "ÐедоÑтаточно памÑти\n" - -#~ msgid "Output plugin error\n" -#~ msgstr "Ошибка Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð°\n" - -#~ msgid "Unknown error\n" -#~ msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°\n" - -#~ msgid "TTA Decoder Error" -#~ msgstr "Ошибка декодера TTA" - -#~ msgid "TTA input plugin " -#~ msgstr "Модуль поддержки TTA" - -#~ msgid "" -#~ " for BMP\n" -#~ "Copyright (c) 2004 True Audio Software\n" -#~ msgstr "" -#~ "ÐапиÑано Ð´Ð»Ñ BMP\n" -#~ "Copyright (c) 2004 True Audio Software\n" - -#~ msgid "About True Audio Plugin" -#~ msgstr "О модуле True Audio" - -#~ msgid "Ape2 Tag" -#~ msgstr "Теги Ape2" - -#~ msgid "Title:" -#~ msgstr "Ðазвание:" - -#~ msgid "Artist:" -#~ msgstr "ИÑполнитель:" - -#~ msgid "Album:" -#~ msgstr "Ðльбом:" - -#~ msgid "Comment:" -#~ msgstr "Комментарий:" - -#~ msgid "Year:" -#~ msgstr "Год:" - -#~ msgid "Track number:" -#~ msgstr "Ðомер дорожки:" - -#~ msgid "Genre:" -#~ msgstr "Жанр:" - -#~ msgid "Remove Tag" -#~ msgstr "Удалить тег" - -#~ msgid "Wavpack Info:" -#~ msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Wavpack:" - -#~ msgid "version %d" -#~ msgstr "верÑиÑ: %d" - -#~ msgid "average bitrate: %6.1f kbps" -#~ msgstr "Ñредний битрейт: %6.1f кбит/Ñ" - -#~ msgid "samplerate: %d Hz" -#~ msgstr "чаÑтота: %d Гц" - -#~ msgid "bits per sample: %d" -#~ msgstr "бит на ÑÑмпл: %d" - -#~ msgid "channels: %d" -#~ msgstr "каналов: %d" - -#~ msgid "length: %d:%.2d" -#~ msgstr "длительноÑÑ‚ÑŒ: %d:%.2d" - -#~ msgid "file size: %d Bytes" -#~ msgstr "размер файла: %d байт" - -#~ msgid "Title Peak: ?" -#~ msgstr "Пики названиÑ: ?" - -#~ msgid "Album Peak: ?" -#~ msgstr "Пики альбома: ?" - -#~ msgid "Title Gain: ?" -#~ msgstr "УÑиление названиÑ: ?" - -#~ msgid "Album Gain: ?" -#~ msgstr "УÑиление альбома: ?" - -#~ msgid "File Info - %s" -#~ msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ файле %s" - -#~ msgid "Enable Dynamic Bitrate Display" -#~ msgstr "Включить динамичеÑкое отображение битрейта" - -#~ msgid "General Plugin Settings" -#~ msgstr "ОÑновные параметры модулÑ" - -#~ msgid "use Track Gain/Peak" -#~ msgstr "иÑпользовать уÑиление / пик дорожки" - -#~ msgid "use Album Gain/Peak" -#~ msgstr "иÑпользовать уÑиление / пик альбома" - -#~ msgid "Enable Clipping Prevention" -#~ msgstr "Включить предотвращение ÑрезаниÑ" - -#~ msgid "Enable ReplayGain" -#~ msgstr "Включить ReplayGain" - -#~ msgid "ReplayGain Type" -#~ msgstr "Тип ReplayGain" - -#~ msgid "ReplayGain Settings" -#~ msgstr "Параметры ReplayGain" - -#~ msgid "Plugin" -#~ msgstr "Модуль" - -#~ msgid "ReplayGain" -#~ msgstr "ReplayGain" - -#~ msgid "Wavpack Configuration" -#~ msgstr "Параметры Ð¼Ð¾Ð´ÑƒÐ»Ñ Wavpack" - -#, fuzzy -#~ msgid "Override default devices" -#~ msgstr "Переопределить уÑтройÑтво по-умолчанию:" - -#, fuzzy -#~ msgid "Card:" -#~ msgstr "Команда:" - -#~ msgid "Mixer card:" -#~ msgstr "Карта микшера:" - -#~ msgid "Orientation" -#~ msgstr "Положение" - -#~ msgid "The orientation of the tray" -#~ msgstr "Положение ÑиÑтемного лотка" - -#~ msgid "/Toggle Decorations" -#~ msgstr "/Переключить отображение обрамлениÑ" - -#~ msgid "/-" -#~ msgstr "/-" - -#~ msgid "/Close" -#~ msgstr "/Закрыть" - -#~ msgid "Blur scope" -#~ msgstr "Размытый оÑциллоÑкоп" - -#~ msgid "ReplayGain Settings:" -#~ msgstr "ÐаÑтройки ReplayGain:" - -#~ msgid "ReplayGain Type:" -#~ msgstr "Тип ReplayGain:" - -#~ msgid "About Apple Lossless Audio Plugin" -#~ msgstr "О модуле Apple Lossless" - -#~ msgid "About Monkey's Audio Plugin" -#~ msgstr "О модуле Monkey's Audio" - -#~ msgid "" -#~ "Copyright (C) 2007 Eugene Zagidullin \n" -#~ "Based on ffape decoder, Copyright (C) 2007 Benjamin Zores\n" -#~ "ffape itself based on libdemac by Dave Chapman\n" -#~ "\n" -#~ "ffape is a part of FFmpeg project, http://ffmpeg.mplayerhq.hu/" -#~ msgstr "" -#~ "Copyright (C) 2007 Eugene Zagidullin \n" -#~ "ОÑнован на декодере ffape, Copyright (C) 2007 Benjamin Zores\n" -#~ "ffape, в Ñвою очередь, оÑнован на libdemac от Dave Chapman\n" -#~ "\n" -#~ "ffape ÑвлÑетÑÑ Ñ‡Ð°Ñтью проекта FFmpeg, http://ffmpeg.mplayerhq.hu/" - -#~ msgid "ID3 format:" -#~ msgstr "Формат ID3-тега:" - -#~ msgid "ALSA Driver configuration" -#~ msgstr "ÐаÑтройка драйвера ALSA" - -#~ msgid "Device settings" -#~ msgstr "ÐаÑтройки уÑтройÑтва" - -#~ msgid "About CD Audio Plugin NG" -#~ msgstr "О модуле CD Audio NG" - -#~ msgid "Musepack Decoder Configuration" -#~ msgstr "ÐаÑтройка декодера Musepack" - -#~ msgid "General Settings" -#~ msgstr "Общие параметры" - -#~ msgid "Use Track Gain" -#~ msgstr "ИÑпользовать Gain/Peak дорожки" - -#~ msgid "Use Album Gain" -#~ msgstr "ИÑпользовать Gain/Peak альбома" - -#~ msgid "Track:" -#~ msgstr "Дорожка:" - -#~ msgid "Samplerate: %d Hz" -#~ msgstr "ЧаÑтота: %d Гц" - -#~ msgid "Channels: %d" -#~ msgstr "Каналы: %d" - -#~ msgid "Length: %d:\\%.2d" -#~ msgstr "ДлительноÑÑ‚ÑŒ: %d:\\%.2d" - -#~ msgid "File size: %d Bytes" -#~ msgstr "Размер файла: %d Байт" - -#~ msgid "Track Peak: %5u" -#~ msgstr "Пик дорожки: %5u" - -#~ msgid "Track Gain: %-+2.2f dB" -#~ msgstr "УÑиление дорожки: %-+2.2f dB" - -#~ msgid "Album Peak: %5u" -#~ msgstr "Пик альбома: %5u" - -#~ msgid "Album Gain: %-+5.2f dB" -#~ msgstr "УÑиление альбома: %-+5.2f dB" - -#~ msgid "ID3 Tag:" -#~ msgstr "Тег ID3:" - -#~ msgid " Close " -#~ msgstr " Закрыть " - -#~ msgid "Sample rate mismatch" -#~ msgstr "ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ñ‡Ð°Ñтота ÑÑмплированиÑ" - -#, fuzzy -#~ msgid "Audio Settings" -#~ msgstr "ÐаÑтройки будильника" - -#~ msgid "Force reopen audio when audio type changed" -#~ msgstr "Принудительно пере-открывать аудио-вывод при Ñмене типа аудио" - -#, fuzzy -#~ msgid "Miscellaneous Settings" -#~ msgstr "ÐаÑтройки микшера:" - -#~ msgid "Display average bitrate for VBR" -#~ msgstr "Отображать Ñредний битрейт Ð´Ð»Ñ VBR" - -#~ msgid "Using libfaad2-" -#~ msgstr "ИÑпользуетÑÑ libfaad2-" - -#~ msgid "About ALSA Driver" -#~ msgstr "О драйвере ALSA" - -#~ msgid "" -#~ "Audacious ALSA Driver\n" -#~ "\n" -#~ " This program is free software; you can redistribute it and/or modify\n" -#~ "it under the terms of the GNU General Public License as published by\n" -#~ "the Free Software Foundation; either version 2 of the License, or\n" -#~ "(at your option) any later version.\n" -#~ "\n" -#~ "This program is distributed in the hope that it will be useful,\n" -#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -#~ "GNU General Public License for more details.\n" -#~ "\n" -#~ "You should have received a copy of the GNU General Public License\n" -#~ "along with this program; if not, write to the Free Software\n" -#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA " -#~ "02110-1301,\n" -#~ "USA.\n" -#~ "Author: Matthieu Sozeau (mattam@altern.org)" -#~ msgstr "" -#~ "Драйвер ALSA Ð´Ð»Ñ Audacious\n" -#~ "\n" -#~ " Эта программа - беÑплатное программное обеÑпечение; вы можете " -#~ "раÑпроÑтранÑÑ‚ÑŒ и/или модифицировать ее\n" -#~ "в ÑоответÑтвии Ñ ÑƒÑловиÑми Лицензии GNU, опубликованную\n" -#~ "Организацией БеÑплатного Программного ОбеÑпечениÑ; вы можете пользоватьÑÑ " -#~ "верÑией 2 Лицензии или\n" -#~ "(по вашему желанию) любой более поздней верÑией.\n" -#~ "\n" -#~ "Эта программа раÑпроÑтранÑетÑÑ Ð² надежде, что она будет полезна,\n" -#~ "но БЕЗ ВСЯКОЙ ГÐРÐÐТИИ; даже без гарании подразумеваемой\n" -#~ "РÐБОТОСПОСОБÐОСТИ или ПРИГОДÐОСТИ ДЛЯ КÐКОЙ-ЛИБО ЦЕЛИ. ПожалуйÑта,\n" -#~ "за подробноÑÑ‚Ñми обратитеÑÑŒ к Лицензии GNU.\n" -#~ "\n" -#~ "Ð’Ñ‹ должны были получить копию Лицензии GNU вмеÑте Ñ Ñтой программой;\n" -#~ "еÑли же нет, то напишите об Ñтом по адреÑу: Free Software\n" -#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA " -#~ "02110-1301,\n" -#~ "USA.\n" -#~ "Ðвтор: Matthieu Sozeau (mattam@altern.org)" - -#~ msgid "Soundcard:" -#~ msgstr "Ð—Ð²ÑƒÐºÐ¾Ð²Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð°:" - -#~ msgid "Buffer time (ms):" -#~ msgstr "Размер буфера (мÑ):" - -#~ msgid "Period time (ms):" -#~ msgstr "Размер периода (мÑ):" - -#~ msgid "aRts Driver configuration" -#~ msgstr "ÐаÑтройка драйвера aRts" - -#~ msgid "" -#~ "No playable CD found.\n" -#~ "\n" -#~ "No CD inserted, or inserted CD is not an audio CD.\n" -#~ msgstr "" -#~ "Ðу найден пригодный к воÑпроизведению диÑк.\n" -#~ "\n" -#~ "ДиÑк не вÑтавлен в привод, или вÑтавленный диÑк не ÑвлÑетÑÑ Audio CD.\n" - -#~ msgid "Print debug information" -#~ msgstr "Выводить отладочную информацию" - -#, fuzzy -#~ msgid "Audacious Skinned GUI Configuration" -#~ msgstr "ÐаÑтройка Audacious OSD" - -#~ msgid "Dither output when rounding to 16-bit" -#~ msgstr "Размыть вывод при округлении до 16 бит" - -#, fuzzy -#~ msgid "Base gain (dB):" -#~ msgstr "УÑиление по-умолачнию (дБ):" - -#~ msgid "Enable ReplayGain processing" -#~ msgstr "Включить ReplayGain" - -#, fuzzy -#~ msgid "Enable peak info clip prevention" -#~ msgstr "Включить предотвращение ÑрезаниÑ" - -#, fuzzy -#~ msgid "Enable adaptive scaler clip prevention" -#~ msgstr "Включить предотвращение ÑрезаниÑ" - -#, fuzzy -#~ msgid "Gain Control" -#~ msgstr "РегулÑтор громкоÑти:" - -#~ msgid "Enable 6dB Boost + Hard Limiting" -#~ msgstr "Включить уÑиление на 6dB + жёÑткое ограничение" - -#~ msgid "Playback:" -#~ msgstr "ВоÑпроизведение:" - -#~ msgid "Configure keys which controls Audacious playback." -#~ msgstr "Клавиши Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¾Ñпроизведением в Audacious." - -#~ msgid "Volume Control:" -#~ msgstr "Регулировка громкоÑти:" - -#~ msgid "Configure keys which controls music volume." -#~ msgstr "Клавиши Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñтью." - -#~ msgid "Configure keys which control the player." -#~ msgstr "Клавиши Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð»ÐµÐµÑ€Ð¾Ð¼." - -#~ msgid "For this, the Audacious OSD plugin must be activated." -#~ msgstr "" -#~ "Чтобы Ñта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñтала доÑтупной,\n" -#~ "необходимо включить модуль Audacious OSD." - -#~ msgid "Track mode" -#~ msgstr "Режим дорожки" - -#~ msgid "6dB hard limiting" -#~ msgstr "6dB жёÑткое ограничение" - -#~ msgid "Preamp (dB):" -#~ msgstr "ПредуÑиление (дБ):" - -#~ msgid "About sndfile WAV support" -#~ msgstr "О модуле поддержки WAV" - -#, fuzzy -#~ msgid "Couldn't open file!" -#~ msgstr "Ðевозможно загрузить MIDI файл" - -#, fuzzy -#~ msgid "Name:" -#~ msgstr "Ðазвание: " - -#~ msgid " MPEG Info " -#~ msgstr " Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ MPEG " - -#~ msgid " ID3 Tag " -#~ msgstr " ID3-тег " - -#, fuzzy -#~ msgid "Unknown" -#~ msgstr "(неизвеÑтно)" - -#, fuzzy -#~ msgid "Layer %s" -#~ msgstr "Проигрыватель WMA %s" - -#~ msgid "%d Hz" -#~ msgstr "%d Гц" - -#~ msgid "Classic Rock" -#~ msgstr "КлаÑÑичеÑкий рок" - -#~ msgid "Country" -#~ msgstr "Кантри" - -#~ msgid "Dance" -#~ msgstr "ДÑнÑ" - -#~ msgid "Disco" -#~ msgstr "ДиÑко" - -#~ msgid "Funk" -#~ msgstr "Фанк" - -#~ msgid "Grunge" -#~ msgstr "Гранж" - -#~ msgid "Hip-Hop" -#~ msgstr "Хип-Хоп" - -#~ msgid "Jazz" -#~ msgstr "Джаз" - -#~ msgid "Metal" -#~ msgstr "Метал" - -#~ msgid "Oldies" -#~ msgstr "Ретро" - -#~ msgid "Other" -#~ msgstr "Другое" - -#~ msgid "Pop" -#~ msgstr "Поп" - -#~ msgid "R&B" -#~ msgstr "R&B" - -#~ msgid "Rap" -#~ msgstr "РÑп" - -#~ msgid "Reggae" -#~ msgstr "Регги" - -#~ msgid "Rock" -#~ msgstr "Рок" - -#~ msgid "Techno" -#~ msgstr "Техно" - -#~ msgid "Industrial" -#~ msgstr "ИндуÑтриальный" - -#~ msgid "Alternative" -#~ msgstr "Ðльтернативный" - -#~ msgid "Ska" -#~ msgstr "Ска" - -#~ msgid "Death Metal" -#~ msgstr "ДÑз метал" - -#~ msgid "Soundtrack" -#~ msgstr "Ð—Ð²ÑƒÐºÐ¾Ð²Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ°" - -#~ msgid "Euro-Techno" -#~ msgstr "Евро-Техно" - -#~ msgid "Ambient" -#~ msgstr "ÐžÐºÑ€ÑƒÐ¶Ð°ÑŽÑ‰Ð°Ñ Ñреда" - -#~ msgid "Trip-Hop" -#~ msgstr "Трип-Хоп" - -#~ msgid "Vocal" -#~ msgstr "Вокал" - -#~ msgid "Jazz+Funk" -#~ msgstr "Джаз+Фанк" - -#~ msgid "Fusion" -#~ msgstr "СлиÑние" - -#~ msgid "Trance" -#~ msgstr "ТранÑ" - -#~ msgid "Instrumental" -#~ msgstr "ИнÑтрументальный" - -#~ msgid "Acid" -#~ msgstr "КиÑлота" - -#~ msgid "House" -#~ msgstr "ХауÑ" - -#~ msgid "Game" -#~ msgstr "Игра" - -#~ msgid "Sound Clip" -#~ msgstr "Музыкальный клип" - -#~ msgid "Gospel" -#~ msgstr "Евангелие" - -#~ msgid "Noise" -#~ msgstr "Шум" - -#~ msgid "AlternRock" -#~ msgstr "Ðльтернативный рок" - -#~ msgid "Soul" -#~ msgstr "Душа" - -#~ msgid "Punk" -#~ msgstr "Панк" - -#~ msgid "Space" -#~ msgstr "КоÑмоÑ" - -#~ msgid "Meditative" -#~ msgstr "МедитациÑ" - -#~ msgid "Instrumental Pop" -#~ msgstr "ИÑтрументальный поп" - -#~ msgid "Instrumental Rock" -#~ msgstr "ИÑтрументальный рок" - -#~ msgid "Ethnic" -#~ msgstr "ЭтничеÑкий" - -#~ msgid "Gothic" -#~ msgstr "ГотичеÑкий" - -#~ msgid "Darkwave" -#~ msgstr "Ð¢ÐµÐ¼Ð½Ð°Ñ Ð²Ð¾Ð»Ð½Ð°" - -#~ msgid "Techno-Industrial" -#~ msgstr "ТехноиндуÑтриальный" - -#~ msgid "Electronic" -#~ msgstr "Электронный" - -#~ msgid "Pop-Folk" -#~ msgstr "Ðародный поп" - -#~ msgid "Eurodance" -#~ msgstr "ЕвродÑнÑ" - -#~ msgid "Dream" -#~ msgstr "Сон" - -#~ msgid "Southern Rock" -#~ msgstr "Южный рок" - -#~ msgid "Comedy" -#~ msgstr "КомедиÑ" - -#~ msgid "Gangsta Rap" -#~ msgstr "Черный Ñ€Ñп" - -#~ msgid "Top 40" -#~ msgstr "Top 40" - -#~ msgid "Christian Rap" -#~ msgstr "ХриÑтианÑкий реп" - -#~ msgid "Pop/Funk" -#~ msgstr "Поп/Фанк" - -#~ msgid "Jungle" -#~ msgstr "Джангл" - -#~ msgid "Native American" -#~ msgstr "ÐÐ°Ñ€Ð¾Ð´Ð½Ð°Ñ Ð°Ð¼ÐµÑ€Ð¸ÐºÐ°Ð½ÑкаÑ" - -#~ msgid "Cabaret" -#~ msgstr "Кабаре" - -#~ msgid "New Wave" -#~ msgstr "ÐÐ¾Ð²Ð°Ñ Ð²Ð¾Ð»Ð½Ð°" - -#~ msgid "Psychedelic" -#~ msgstr "ПÑиходелиÑ" - -#~ msgid "Rave" -#~ msgstr "РÑйв" - -#~ msgid "Trailer" -#~ msgstr "ÐнонÑ" - -#~ msgid "Lo-Fi" -#~ msgstr "Lo-Fi" - -#~ msgid "Tribal" -#~ msgstr "Семейное" - -#~ msgid "Acid Punk" -#~ msgstr "КиÑлотный панк" - -#~ msgid "Acid Jazz" -#~ msgstr "КиÑлотный джаз" - -#~ msgid "Polka" -#~ msgstr "Полька" - -#~ msgid "Musical" -#~ msgstr "Музыкальное" - -#~ msgid "Rock & Roll" -#~ msgstr "Рок-н-рол" - -#~ msgid "Hard Rock" -#~ msgstr "ТÑжелый рок" - -#~ msgid "Folk" -#~ msgstr "Фольк" - -#~ msgid "Folk/Rock" -#~ msgstr "Фольк/Рок" - -#~ msgid "National Folk" -#~ msgstr "Ðациональный фольк" - -#~ msgid "Fast-Fusion" -#~ msgstr "БыÑтрое ÑлиÑние" - -#~ msgid "Bebob" -#~ msgstr "Бибоп" - -#~ msgid "Revival" -#~ msgstr "Возрождение" - -#~ msgid "Celtic" -#~ msgstr "КельтÑкаÑ" - -#~ msgid "Bluegrass" -#~ msgstr "Bluegrass" - -#~ msgid "Avantgarde" -#~ msgstr "Ðвангард" - -#~ msgid "Gothic Rock" -#~ msgstr "ГотичеÑкий рок" - -#~ msgid "Progressive Rock" -#~ msgstr "ПрогреÑÑивный рок" - -#~ msgid "Psychedelic Rock" -#~ msgstr "ПÑиходеличеÑкий рок" - -#~ msgid "Symphonic Rock" -#~ msgstr "СимфоничеÑкий рок" - -#~ msgid "Slow Rock" -#~ msgstr "Медленный рок" - -#~ msgid "Big Band" -#~ msgstr "Big Band" - -#~ msgid "Chorus" -#~ msgstr "Хор" - -#~ msgid "Easy Listening" -#~ msgstr "Easy Listening" - -#~ msgid "Acoustic" -#~ msgstr "ÐкуÑтичеÑкаÑ" - -#~ msgid "Humour" -#~ msgstr "Юмор" - -#~ msgid "Chanson" -#~ msgstr "ШанÑон" - -#~ msgid "Opera" -#~ msgstr "Опера" - -#~ msgid "Chamber Music" -#~ msgstr "ÐšÐ°Ð¼ÐµÑ€Ð½Ð°Ñ Ð¼ÑƒÐ·Ñ‹ÐºÐ°" - -#~ msgid "Sonata" -#~ msgstr "Соната" - -#~ msgid "Symphony" -#~ msgstr "СимфониÑ" - -#~ msgid "Booty Bass" -#~ msgstr "Booty Bass" - -#~ msgid "Primus" -#~ msgstr "Прима" - -#~ msgid "Porn Groove" -#~ msgstr "Порн грув" - -#~ msgid "Slow Jam" -#~ msgstr "Медленный джÑм" - -#~ msgid "Club" -#~ msgstr "Клуб" - -#~ msgid "Tango" -#~ msgstr "Танго" - -#~ msgid "Samba" -#~ msgstr "Самба" - -#~ msgid "Folklore" -#~ msgstr "Фольклор" - -#~ msgid "Ballad" -#~ msgstr "Баллада" - -#~ msgid "Power Ballad" -#~ msgstr "Ð¡Ð¸Ð»ÑŒÐ½Ð°Ñ Ð±Ð°Ð»Ð»Ð°Ð´Ð°" - -#~ msgid "Rhythmic Soul" -#~ msgstr "Ритмичный Ñоул" - -#~ msgid "Freestyle" -#~ msgstr "Свободный Ñтиль" - -#~ msgid "Duet" -#~ msgstr "ДуÑÑ‚" - -#~ msgid "Punk Rock" -#~ msgstr "Панк рок" - -#~ msgid "Drum Solo" -#~ msgstr "Ударное Ñоло" - -#~ msgid "A Cappella" -#~ msgstr "РКапелла" - -#~ msgid "Euro-House" -#~ msgstr "Euro-House" - -#~ msgid "Dance Hall" -#~ msgstr "Танцевальный зал" - -#~ msgid "Goa" -#~ msgstr "Гоа" - -#~ msgid "Drum & Bass" -#~ msgstr "Драм-н-баÑ" - -#~ msgid "Club-House" -#~ msgstr "Клуб-хауÑ" - -#~ msgid "Hardcore" -#~ msgstr "Хардкор" - -#~ msgid "Indie" -#~ msgstr "Indie" - -#~ msgid "BritPop" -#~ msgstr "Бритпоп" - -#~ msgid "Negerpunk" -#~ msgstr "Чёрный панк" - -#~ msgid "Polsk Punk" -#~ msgstr "ПольÑкий панк" - -#~ msgid "Christian Gangsta Rap" -#~ msgstr "Черный хриÑтианÑкий Ñ€Ñп" - -#~ msgid "Heavy Metal" -#~ msgstr "ТÑжелый метал" - -#~ msgid "Black Metal" -#~ msgstr "Чёрный метал" - -#~ msgid "Contemporary Christian" -#~ msgstr "Ð¡Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ñ…Ñ€Ð¸ÑтианÑкаÑ" - -#~ msgid "Christian Rock" -#~ msgstr "ХриÑтианÑкий рок" - -#~ msgid "Merengue" -#~ msgstr "Меренга" - -#~ msgid "Salsa" -#~ msgstr "СалÑа" - -#~ msgid "Thrash Metal" -#~ msgstr "ТрÑш метал" - -#~ msgid "Anime" -#~ msgstr "Ðниме" - -#~ msgid "JPop" -#~ msgstr "JPop" - -#~ msgid "Synthpop" -#~ msgstr "Электронный поп" - -#~ msgid "" -#~ "An error occured:\n" -#~ "%s" -#~ msgstr "" -#~ "Произошла ошибка:\n" -#~ "%s" - -#~ msgid "Error!" -#~ msgstr "Ошибка!" - -#~ msgid "Failed to modify tag (open)" -#~ msgstr "Ðе удалоÑÑŒ изменить тег (открыть)" - -#~ msgid "Failed to modify tag (close)" -#~ msgstr "Ðе удалоÑÑŒ изменить тег (закрыть)" - -#~ msgid "Failed to modify tag" -#~ msgstr "Ðе удалоÑÑŒ изменить тег" - -#~ msgid " Ogg Vorbis Tag " -#~ msgstr " Тег Ogg Vorbis " - -#~ msgid "Version:" -#~ msgstr "ВерÑиÑ:" - -#~ msgid "ISRC number:" -#~ msgstr "Ðомер ISRC:" - -#~ msgid " Ogg Vorbis ReplayGain " -#~ msgstr " Ogg Vorbis ReplayGain " - -#~ msgid "Track peak:" -#~ msgstr "Пик дорожки:" - -#~ msgid "Album gain:" -#~ msgstr "УÑиление альбома:" - -#~ msgid "Album peak:" -#~ msgstr "Пик альбома:" - -#~ msgid " Ogg Vorbis Info " -#~ msgstr " Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ogg Vorbis " - -#~ msgid "Bit rate:" -#~ msgstr "БитрÑйт:" - -#~ msgid "Length:" -#~ msgstr "Длина:" - -#~ msgid "File size:" -#~ msgstr "Размер файла:" - -#~ msgid "N/A" -#~ msgstr "Ð/Д" - -#~ msgid "%d KBit/s (nominal)" -#~ msgstr "%d КБит/Ñ (номинал)" - -#~ msgid "%d" -#~ msgstr "%d" - -#~ msgid "%d:%.2d" -#~ msgstr "%d:%.2d" - -#~ msgid "%d Bytes" -#~ msgstr "%d байт" - -#, fuzzy -#~ msgid "" -#~ "You cannot use the FileWriter plugin\n" -#~ "when you're running in realtime mode." -#~ msgstr "" -#~ "ИÑпользование Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð·Ð°Ð¿Ð¸Ñи на диÑк невозможно\n" -#~ "во Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ в режиме реального времени." - -#, fuzzy -#~ msgid "Override generic XMMS titles" -#~ msgstr "Ðе иÑпользовать Ñтандартные названиÑ" - -#, fuzzy -#~ msgid "No sub-tune control." -#~ msgstr "РегулÑтор громкоÑти:" - -#, fuzzy -#~ msgid "Disabled" -#~ msgstr "переменный" - -#, fuzzy -#~ msgid "22050" -#~ msgstr "22000 Гц" - -#, fuzzy -#~ msgid "44100" -#~ msgstr "44100 Гц" - -#, fuzzy -#~ msgid "12000" -#~ msgstr "11000 Гц" - -#, fuzzy -#~ msgid "24000" -#~ msgstr "22000 Гц" - -#, fuzzy -#~ msgid "32000" -#~ msgstr "22000 Гц" - -#~ msgid "Drive %d" -#~ msgstr "Привод %d" - -#~ msgid "" -#~ "Failed to open device %s\n" -#~ "Error: %s\n" -#~ "\n" -#~ msgstr "" -#~ "Ðе удалоÑÑŒ открыть уÑтройÑтво %s\n" -#~ "Ошибка: %s\n" -#~ "\n" - -#~ msgid "" -#~ "Failed to read \"Table of Contents\"\n" -#~ "Maybe no disc in the drive?\n" -#~ "\n" -#~ msgstr "" -#~ "Ðе удалоÑÑŒ прочитать \"Оглавление\"\n" -#~ "Возможно нет диÑка в приводе?\n" -#~ "\n" - -#~ msgid "" -#~ "Device %s OK.\n" -#~ "Disc has %d tracks" -#~ msgstr "" -#~ "Привод %s: ОК.\n" -#~ "Ðа диÑке %d дорожек" - -#~ msgid " (%d data tracks)" -#~ msgstr " (%d дорожек Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸)" - -#~ msgid "" -#~ "Digital audio extraction not tested as the disc has no audio tracks\n" -#~ msgstr "" -#~ "Цифровое Ñчитывание аудио не теÑтировалоÑÑŒ, так как на диÑке нет аудио-" -#~ "дорожек\n" - -#~ msgid "" -#~ "Digital audio extraction test: OK\n" -#~ "\n" -#~ msgstr "" -#~ "ТеÑтирование цифрового ÑчитываниÑ: OK\n" -#~ "\n" - -#~ msgid "" -#~ "Digital audio extraction test failed: %s\n" -#~ "\n" -#~ msgstr "" -#~ "ТеÑтирование цифрового ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÑƒÐ´Ð°Ñ‡Ð½Ð¾: %s\n" -#~ "\n" - -#~ msgid "Error: %s exist, but is not a directory" -#~ msgstr "Ошибка: %s ÑущеÑтвует, но не ÑвлÑетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð¼" - -#~ msgid "Directory %s OK." -#~ msgstr "Каталог %s OK." - -#~ msgid "_Device:" -#~ msgstr "_УÑтройÑтво:" - -#~ msgid "Dir_ectory:" -#~ msgstr "_Каталог:" - -#~ msgid "Analog" -#~ msgstr "Ðналоговый" - -#~ msgid "No mixer" -#~ msgstr "Ðет микшера" - -#~ msgid "CDROM drive" -#~ msgstr "Привод CD-ROM" - -#~ msgid "OSS mixer" -#~ msgstr "OSS-микшер" - -#~ msgid "Check drive..." -#~ msgstr "Проверить привод" - -#~ msgid "CD Audio Player Configuration" -#~ msgstr "ÐаÑтройка Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ñ‚ÐµÐ»Ñ ÐºÐ¾Ð¼Ð¿Ð°ÐºÑ‚ диÑков" - -#~ msgid "Device" -#~ msgstr "УÑтройÑтво" - -#~ msgid "CDDB:" -#~ msgstr "CDDB:" - -#~ msgid "Use CDDB" -#~ msgstr "ИÑпользовать CDDB" - -#~ msgid "Get server list" -#~ msgstr "Получить ÑпиÑок Ñерверов" - -#~ msgid "CDDB server:" -#~ msgstr "Cервер CDDB:" - -#~ msgid "Name format:" -#~ msgstr "Формат названиÑ:" - -#~ msgid "CD Audio Plugin" -#~ msgstr "Модуль поддержки аудио компакт-диÑков" - -#~ msgid "CD Audio Track %02u" -#~ msgstr "CD аудио-дорожка %02u" - -#~ msgid "Game console audio module decoder" -#~ msgstr "Модуль поддержки Console Audio" - -#~ msgid "NSF/NSFE" -#~ msgstr "NSF/NSFE" - -#~ msgid "Use optional NSFE playlist" -#~ msgstr "ИÑпользовать ÑпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ NSFE" - -#~ msgid "Disk Writer Plugin %s" -#~ msgstr "Модуль запиÑи на диÑк %s" - -#~ msgid "eSound Output Plugin" -#~ msgstr "Модуль вывода звука eSound" - -#~ msgid "Extra Stereo Plugin %s" -#~ msgstr "Модуль Extra Stereo %s" - -#~ msgid "BSD Sun Driver %s" -#~ msgstr "BSD Sun Драйвер %s" - -#~ msgid "TiMidity Player %s" -#~ msgstr "Проигрыватель TiMidity %s" - -#~ msgid "Tone Generator %s" -#~ msgstr "Генератор Ñигналов %s" - -#~ msgid "Ogg Vorbis Audio Plugin" -#~ msgstr "Модуль поддержки Ogg Vorbis" - -#~ msgid "WAV Audio Plugin" -#~ msgstr "Модуль поддержки WAV" - -#~ msgid "ALSA %s output plugin" -#~ msgstr "Модуль вывода звука ALSA %s" - -#~ msgid "AMIDI-Plug %s (MIDI Player)" -#~ msgstr "AMIDI-Plug %s (MIDI проигрыватель)" - -#~ msgid "AMIDI-Plug - warning" -#~ msgstr "AMIDI-Plug - предупреждение" - -#~ msgid "" -#~ "No sequencer backend has been selected!\n" -#~ "Please configure AMIDI-Plug before playing." -#~ msgstr "" -#~ "Ðе выбран модуль ÑеквенÑера!\n" -#~ "ПожалуйÑта наÑтройте AMIDI-Plug перед воÑпроизведением." - -#~ msgid "" -#~ "\n" -#~ "EvDev-Plug " -#~ msgstr "" -#~ "\n" -#~ "EvDev-Plug " - -#~ msgid "Arabic (IBM-864)" -#~ msgstr "ÐрабÑÐºÐ°Ñ (IBM-864)" - -#~ msgid "Arabic (ISO-8859-6)" -#~ msgstr "ÐрабÑÐºÐ°Ñ (ISO-8859-6)" - -#~ msgid "Arabic (Windows-1256)" -#~ msgstr "ÐрабÑÐºÐ°Ñ (Windows-1256)" - -#~ msgid "Baltic (ISO-8859-13)" -#~ msgstr "БалтийÑÐºÐ°Ñ (ISO-8859-13)" - -#~ msgid "Baltic (ISO-8859-4)" -#~ msgstr "БалтийÑÐºÐ°Ñ (ISO-8859-4)" - -#~ msgid "Baltic (Windows-1257)" -#~ msgstr "БалтийÑÐºÐ°Ñ (Windows-1257)" - -#~ msgid "Celtic (ISO-8859-14)" -#~ msgstr "КельтÑÐºÐ°Ñ (ISO-8859-14)" - -#~ msgid "Central European (IBM-852)" -#~ msgstr "Ð¦ÐµÐ½Ñ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ð•Ð²Ñ€Ð¾Ð¿Ð° (IBM-852)" - -#~ msgid "Central European (ISO-8859-2)" -#~ msgstr "Ð¦ÐµÐ½Ñ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ð•Ð²Ñ€Ð¾Ð¿Ð° (ISO-8859-2)" - -#~ msgid "Central European (Windows-1250)" -#~ msgstr "Ð¦ÐµÐ½Ñ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ð•Ð²Ñ€Ð¾Ð¿Ð° (Windows-1250)" - -#~ msgid "Chinese Simplified (GB18030)" -#~ msgstr "КитайÑÐºÐ°Ñ ÑƒÐ¿Ñ€Ð¾Ñ‰ÐµÐ½Ð½Ð°Ñ (GB18030)" - -#~ msgid "Chinese Simplified (GB2312)" -#~ msgstr "КитайÑÐºÐ°Ñ ÑƒÐ¿Ñ€Ð¾Ñ‰ÐµÐ½Ð½Ð°Ñ (GB2312)" - -#~ msgid "Chinese Traditional (Big5)" -#~ msgstr "КитайÑÐºÐ°Ñ Ñ‚Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ (Big5)" - -#~ msgid "Chinese Traditional (Big5-HKSCS)" -#~ msgstr "КитайÑÐºÐ°Ñ Ñ‚Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ (Big5-HKSCS)" - -#~ msgid "Cyrillic (IBM-855)" -#~ msgstr "Кириллица (IBM-855)" - -#~ msgid "Cyrillic (ISO-8859-5)" -#~ msgstr "Кириллица (ISO-8859-5)" - -#~ msgid "Cyrillic (ISO-IR-111)" -#~ msgstr "Кириллица (ISO-IR-111)" - -#~ msgid "Cyrillic (KOI8-R)" -#~ msgstr "Кириллица (KOI8-R)" - -#~ msgid "Cyrillic (Windows-1251)" -#~ msgstr "Кириллица (Windows-1251)" - -#~ msgid "Cyrillic/Russian (CP-866)" -#~ msgstr "Кириллица/РоÑÑÐ¸Ñ (CP-866)" - -#~ msgid "Cyrillic/Ukrainian (KOI8-U)" -#~ msgstr "Кириллица/Украина (KOI8-U)" - -#~ msgid "English (US-ASCII)" -#~ msgstr "ÐнглийÑÐºÐ°Ñ (US-ASCII)" - -#~ msgid "Greek (ISO-8859-7)" -#~ msgstr "ГречеÑÐºÐ°Ñ (ISO-8859-7)" - -#~ msgid "Greek (Windows-1253)" -#~ msgstr "ГречеÑÐºÐ°Ñ (Windows-1253)" - -#~ msgid "Hebrew (IBM-862)" -#~ msgstr "Иврит (IBM-862)" - -#~ msgid "Hebrew (Windows-1255)" -#~ msgstr "Иврит (Windows-1255)" - -#~ msgid "Japanese (EUC-JP)" -#~ msgstr "ЯпонÑÐºÐ°Ñ (EUC-JP)" - -#~ msgid "Japanese (ISO-2022-JP)" -#~ msgstr "ЯпонÑÐºÐ°Ñ (ISO-2022-JP)" - -#~ msgid "Japanese (Shift_JIS)" -#~ msgstr "ЯпонÑÐºÐ°Ñ (Shift_JIS)" - -#~ msgid "Korean (EUC-KR)" -#~ msgstr "КорейÑÐºÐ°Ñ (EUC-KR)" - -#~ msgid "Nordic (ISO-8859-10)" -#~ msgstr "СкандинавÑÐºÐ°Ñ (ISO-8859-10)" - -#~ msgid "South European (ISO-8859-3)" -#~ msgstr "ВоÑÑ‚Ð¾Ñ‡Ð½Ð°Ñ Ð•Ð²Ñ€Ð¾Ð¿Ð° (ISO-8859-3)" - -#~ msgid "Thai (TIS-620)" -#~ msgstr "ТайÑÐºÐ°Ñ (TIS-620)" - -#~ msgid "Turkish (IBM-857)" -#~ msgstr "Ð¢ÑƒÑ€ÐµÑ†ÐºÐ°Ñ (IBM-857)" - -#~ msgid "Turkish (ISO-8859-9)" -#~ msgstr "Ð¢ÑƒÑ€ÐµÑ†ÐºÐ°Ñ (ISO-8859-9)" - -#~ msgid "Turkish (Windows-1254)" -#~ msgstr "Ð¢ÑƒÑ€ÐµÑ†ÐºÐ°Ñ (Windows-1254)" - -#~ msgid "Unicode (UTF-7)" -#~ msgstr "Юникод (UTF-7)" - -#~ msgid "Unicode (UTF-8)" -#~ msgstr "Юникод (UTF-8)" - -#~ msgid "Unicode (UTF-16BE)" -#~ msgstr "Юникод (UTF-16BE)" - -#~ msgid "Unicode (UTF-16LE)" -#~ msgstr "Юникод (UTF-16LE)" - -#~ msgid "Unicode (UTF-32BE)" -#~ msgstr "Юникод (UTF-32BE)" - -#~ msgid "Unicode (UTF-32LE)" -#~ msgstr "Юникод (UTF-32LE)" - -#~ msgid "Vietnamese (VISCII)" -#~ msgstr "ВьетнамÑÐºÐ°Ñ (VISCII)" - -#~ msgid "Vietnamese (Windows-1258)" -#~ msgstr "ВьетнамÑÐºÐ°Ñ (Windows-1258)" - -#~ msgid "Visual Hebrew (ISO-8859-8)" -#~ msgstr "Иврит (ISO-8859-8)" - -#~ msgid "Western (IBM-850)" -#~ msgstr "Ð—Ð°Ð¿Ð°Ð´Ð½Ð°Ñ (IBM-850)" - -#~ msgid "Western (ISO-8859-1)" -#~ msgstr "Ð—Ð°Ð¿Ð°Ð´Ð½Ð°Ñ (ISO-8859-1)" - -#~ msgid "Western (ISO-8859-15)" -#~ msgstr "Ð—Ð°Ð¿Ð°Ð´Ð½Ð°Ñ (ISO-8859-15)" - -#~ msgid "Western (Windows-1252)" -#~ msgstr "Ð—Ð°Ð¿Ð°Ð´Ð½Ð°Ñ (Windows-1252)" - -#~ msgid "Arabic (IBM-864-I)" -#~ msgstr "ÐрабÑÐºÐ°Ñ (IBM-864-I)" - -#~ msgid "Arabic (ISO-8859-6-E)" -#~ msgstr "ÐрабÑÐºÐ°Ñ (ISO-8859-6-E)" - -#~ msgid "Arabic (ISO-8859-6-I)" -#~ msgstr "ÐрабÑÐºÐ°Ñ (ISO-8859-6-I)" - -#~ msgid "Arabic (MacArabic)" -#~ msgstr "ÐрабÑÐºÐ°Ñ (MacArabic)" - -#~ msgid "Armenian (ARMSCII-8)" -#~ msgstr "ÐрмÑнÑÐºÐ°Ñ (ARMSCII-8)" - -#~ msgid "Central European (MacCE)" -#~ msgstr "Ð¦ÐµÐ½Ñ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ð•Ð²Ñ€Ð¾Ð¿Ð° (MacCE)" - -#~ msgid "Chinese Simplified (GBK)" -#~ msgstr "КитайÑÐºÐ°Ñ ÑƒÐ¿Ñ€Ð¾Ñ‰ÐµÐ½Ð½Ð°Ñ (GBK)" - -#~ msgid "Chinese Simplified (HZ)" -#~ msgstr "КитайÑÐºÐ°Ñ ÑƒÐ¿Ñ€Ð¾Ñ‰ÐµÐ½Ð½Ð°Ñ (HZ)" - -#~ msgid "Chinese Traditional (EUC-TW)" -#~ msgstr "КитайÑÐºÐ°Ñ Ñ‚Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ (EUC-TW)" - -#~ msgid "Croatian (MacCroatian)" -#~ msgstr "ХорватÑÐºÐ°Ñ (MacCroatian)" - -#~ msgid "Cyrillic (MacCyrillic)" -#~ msgstr "Кириллица (MacCyrillic)" - -#~ msgid "Cyrillic/Ukrainian (MacUkrainian)" -#~ msgstr "Кириллица/Украина (MacUkrainian)" - -#~ msgid "Farsi (MacFarsi)" -#~ msgstr "ФарÑи (MacFarsi)" - -#~ msgid "Greek (MacGreek)" -#~ msgstr "ГречеÑÐºÐ°Ñ (MacGreek)" - -#~ msgid "Gujarati (MacGujarati)" -#~ msgstr "Гуджарати (MacGujarati)" - -#~ msgid "Gurmukhi (MacGurmukhi)" -#~ msgstr "Гурмуки (MacGurmukhi)" - -#~ msgid "Hebrew (ISO-8859-8-E)" -#~ msgstr "Иврит (ISO-8859-8-E)" - -#~ msgid "Hebrew (ISO-8859-8-I)" -#~ msgstr "Иврит (ISO-8859-8-I)" - -#~ msgid "Hebrew (MacHebrew)" -#~ msgstr "Иврит (MacHebrew)" - -#~ msgid "Hindi (MacDevanagari)" -#~ msgstr "Хинди (MacDevanagari)" - -#~ msgid "Icelandic (MacIcelandic)" -#~ msgstr "ИÑландÑÐºÐ°Ñ (MacIcelandic)" - -#~ msgid "Korean (JOHAB)" -#~ msgstr "КорейÑÐºÐ°Ñ (JOHAB)" - -#~ msgid "Korean (UHC)" -#~ msgstr "КорейÑÐºÐ°Ñ (UHC)" - -#~ msgid "Romanian (MacRomanian)" -#~ msgstr "РумынÑÐºÐ°Ñ (MacRomanian)" - -#~ msgid "Turkish (MacTurkish)" -#~ msgstr "Ð¢ÑƒÑ€ÐµÑ†ÐºÐ°Ñ (MacTurkish)" - -#~ msgid "Vietnamese (TCVN)" -#~ msgstr "ВьетнамÑÐºÐ°Ñ (TCVN)" - -#~ msgid "Vietnamese (VPS)" -#~ msgstr "ВьетнамÑÐºÐ°Ñ (VPS)" - -#~ msgid "Western (MacRoman)" -#~ msgstr "Ð—Ð°Ð¿Ð°Ð´Ð½Ð°Ñ (MacRoman)" - -#~ msgid "Tag Handling" -#~ msgstr "Обработка Ñ‚Ñгов" - -#~ msgid "Convert Character Set" -#~ msgstr "Преобразование кодировки" - -#~ msgid "Convert character set from :" -#~ msgstr "Преобразовать кодировку из :" - -#~ msgid "Disable bitrate update during playback (saves cpu usage)" -#~ msgstr "" -#~ "Запретить обновление битрейта во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ð½Ð¸Ñ (уменьшает загрузку " -#~ "процеÑÑора)" - -#~ msgid "Album mode" -#~ msgstr "Ðльбомный режим" - -#~ msgid "0 dB" -#~ msgstr "0 dB" - -#~ msgid "Without ReplayGain" -#~ msgstr "Выключить ReplayGain" - -#~ msgid "Dither 24bps to 16bps" -#~ msgstr "Преобразовать 24 бит/Ñ Ð² 16 бит/Ñ" - -#~ msgid "With ReplayGain" -#~ msgstr "Включить ReplayGain" - -#~ msgid "Noise shaping" -#~ msgstr "Подавление шума" - -#~ msgid "high" -#~ msgstr "выÑокое" - -#~ msgid "Dither to" -#~ msgstr "Преобразовать к" - -#~ msgid "16 bps" -#~ msgstr "16 бит/Ñ" - -#~ msgid "24 bps" -#~ msgstr "24 бит/Ñ" - -#~ msgid "" -#~ "Flac Plugin by Josh Coalson\n" -#~ "contributions by\n" -#~ "......\n" -#~ "......\n" -#~ "and\n" -#~ "Daisuke Shimamura\n" -#~ "Visit http://flac.sourceforge.net/\n" -#~ "\n" -#~ "Audacious Team port" -#~ msgstr "" -#~ "Модуль Flac от Josh Coalson\n" -#~ "в разработке учаÑтвовали:\n" -#~ "......\n" -#~ "......\n" -#~ "и\n" -#~ "Daisuke Shimamura\n" -#~ "ПоÑетите http://flac.sourceforge.net/\n" -#~ "\n" -#~ "Audacious Team port" - -#~ msgid "Alt" -#~ msgstr "Alt" - -#~ msgid "Blocksize: %d" -#~ msgstr "Блок: %d" - -#~ msgid "" -#~ "Blocksize: variable\n" -#~ " min/max: %d/%d" -#~ msgstr "" -#~ "Блок: переменный\n" -#~ " мин/макÑ: %d/%d" - -#~ msgid "FLAC Info:" -#~ msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ FLAC:" - -#~ msgid "Filesize: %lld B" -#~ msgstr "Размер файла: %lld Б" - -#~ msgid "ReplayGain Reference Loudness: %2.1f dB" -#~ msgstr "ReplayGain Ð ÐµÐºÐ¾Ð¼ÐµÐ½Ð´ÑƒÐµÐ¼Ð°Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾ÑÑ‚ÑŒ: %2.1f дБ" - -#~ msgid "ReplayGain Track Peak: %1.8f" -#~ msgstr "ReplayGain Пик дорожки: %1.8f" -#~ msgid "ReplayGain Album Peak: %1.8f" -#~ msgstr "ReplaGain Пик альбома: %1.8f" diff -Nru audacious-plugins-2.4.4/po/sk.po audacious-plugins-3.2/po/sk.po --- audacious-plugins-2.4.4/po/sk.po 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/sk.po 2012-01-20 19:48:30.000000000 +0000 @@ -1,26 +1,25 @@ -# translation of sk.po to Slovak -# Slovak translation for Audacious-Plugins -# Copyright (C) 2007, 2008, 2010 Andrej Herceg . -# This file is distributed under the same license as the audacious-plugins package. +# Slovak translation for Audacious Plugins +# Copyright (C) Audacious translators +# This file is distributed under the same license as the Audacious Plugins package. # -# -# Andrej Herceg , 2007, 2008, 2010. +# Translators: +# Andrej Herceg , 2007, 2008, 2010, 2011. +# Tomáš Vadina , 2012. msgid "" msgstr "" -"Project-Id-Version: audacious-plugins-2.4-alpha2\n" -"Report-Msgid-Bugs-To: http://jira.atheme.org/\n" -"POT-Creation-Date: 2010-08-03 17:55-0400\n" -"PO-Revision-Date: 2010-06-25 16:31+0200\n" -"Last-Translator: Andrej Herceg \n" -"Language-Team: Slovak >\n" -"Language: \n" +"Project-Id-Version: Audacious\n" +"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2011-12-29 19:29-0500\n" +"PO-Revision-Date: 2012-01-09 14:29+0000\n" +"Last-Translator: Tomáš Vadina \n" +"Language-Team: Slovak\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: KBabel 1.11.4\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" -#: src/aac/libmp4.c:291 +#: src/aac/libmp4.c:256 #, c-format msgid "" "Using libfaad2-%s for decoding.\n" @@ -31,454 +30,175 @@ "FAAD2 AAC/HE-AAC/HE-AACv2/DRM dekodér (c) Nero AG, www.nero.com\n" "Copyright (c) 2005-2006 tím Audacious" -#: src/aac/libmp4.c:296 +#: src/aac/libmp4.c:261 msgid "About MP4 AAC decoder plugin" msgstr "O module dekodéra MP4 AAC" -#: src/adplug/adplug-xmms.cc:153 -msgid "About " -msgstr "O " - -#: src/adplug/adplug-xmms.cc:157 -msgid "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"This plugin is released under the terms and conditions of the GNU LGPL.\n" -"See http://www.gnu.org/licenses/lgpl.html for details.\n" -"\n" -"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et " -"al.\n" -"Linked AdPlug library version: " -msgstr "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"Modul je poskytovaný za podmienok licencie GNU LGPL.\n" -"Pre podrobnosti navÅ¡tívte http://www.gnu.org/licenses/lgpl.html\n" -"\n" -"Modul používa knižnicu AdPlug, Copyright (C) Simon Peter a Äalší.\n" -"Zostavené s AdPlug knižnicou verzie: " - -#: src/adplug/adplug-xmms.cc:234 -msgid "AdPlug :: Configuration" -msgstr "AdPlug :: Nastavenie" - -#: src/adplug/adplug-xmms.cc:243 src/adplug/adplug-xmms.cc:504 -#: src/cdaudio-ng/configure.c:258 src/crystalizer/crystalizer.c:127 -#: src/echo_plugin/gui.c:122 src/jack/configure.c:146 src/null/null.c:109 -#: src/stereo_plugin/stereo.c:123 src/sun/configure.c:557 -msgid "Ok" -msgstr "OK" - -#: src/adplug/adplug-xmms.cc:253 src/alarm/interface.c:1398 -#: src/cdaudio-ng/configure.c:263 src/crystalizer/crystalizer.c:136 -#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 -#: src/modplug/gui/interface.cxx:715 src/null/null.c:110 -#: src/stereo_plugin/stereo.c:132 src/sun/configure.c:565 -msgid "Cancel" -msgstr "ZruÅ¡iÅ¥" - -#: src/adplug/adplug-xmms.cc:269 src/console/configure.c:154 -#: src/modplug/gui/interface.cxx:629 src/modplug/gui/interface.cxx:888 -msgid "General" -msgstr "VÅ¡eobecné" - -#: src/adplug/adplug-xmms.cc:281 -msgid "Sound quality" -msgstr "Kvalita zvuku" - -#: src/adplug/adplug-xmms.cc:286 src/modplug/gui/interface.cxx:188 -msgid "Resolution" -msgstr "Rozlíšenie" - -#: src/adplug/adplug-xmms.cc:288 -msgid "8bit" -msgstr "8 bitov" - -#: src/adplug/adplug-xmms.cc:293 -msgid "16bit" -msgstr "16 bitov" - -#: src/adplug/adplug-xmms.cc:301 src/modplug/gui/interface.cxx:219 -msgid "Channels" -msgstr "PoÄet kanálov" - -#: src/adplug/adplug-xmms.cc:303 src/filewriter/mp3.c:934 -#: src/mpg123/mpg123.c:174 src/sid/xs_interface.c:301 -msgid "Mono" -msgstr "Mono" - -#: src/adplug/adplug-xmms.cc:308 src/filewriter/mp3.c:929 -#: src/modplug/gui/interface.cxx:205 src/mpg123/mpg123.c:174 -#: src/sid/xs_interface.c:308 -msgid "Stereo" -msgstr "Stereo" - -#: src/adplug/adplug-xmms.cc:312 -msgid "" -"Setting stereo is not recommended, unless you need to. This won't add any " -"stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!" -msgstr "" -"Povolenie sterea nie je odporúÄané (ak ho naozaj nepotrebujete). Táto voľba " -"nepridá zvuku žiadne stereoefekty (OPL2 je len mono), a spotrebováva sa viac " -"výkonu CPU." - -#: src/adplug/adplug-xmms.cc:320 -msgid "Frequency" -msgstr "Frekvencia" - -#: src/adplug/adplug-xmms.cc:356 src/adplug/adplug-xmms.cc:560 -#: src/console/configure.c:156 src/gtkui/ui_manager.c:64 -#: src/skins/ui_manager.c:165 -msgid "Playback" -msgstr "Prehrávanie" - -#: src/adplug/adplug-xmms.cc:360 -msgid "Detect songend" -msgstr "RozoznaÅ¥ koniec skladby" - -#: src/adplug/adplug-xmms.cc:364 -msgid "" -"If enabled, XMMS will detect a song's ending, stop it and advance in the " -"playlist. If disabled, XMMS won't take notice of a song's ending and loop it " -"all over again and again." -msgstr "" -"Ak je povolené, XMMS rozozná, že sa skladba skonÄila, zastaví ju a prejde na " -"nasledujúcu skladbu v zozname skladieb. Ak je zakázané, XMMS nebude reagovaÅ¥ " -"na koniec pesniÄky a bude ju opakovaÅ¥ neustále dookola." - -#: src/adplug/adplug-xmms.cc:375 -msgid "Formats" -msgstr "Formáty" - -#: src/adplug/adplug-xmms.cc:382 -msgid "Format selection" -msgstr "Výber formátu" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Format" -msgstr "Formát" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Extension" -msgstr "Prípona" - -#: src/adplug/adplug-xmms.cc:425 -msgid "" -"Selected file types will be recognized and played back by this plugin. " -"Deselected types will be ignored to make room for other plugins to play " -"these files." -msgstr "" -"Vybrané typy súborov budú rozpoznané a prehrávané týmto modulom. Ostatné " -"budú ignorované a budú prenechané iným modulom." - -#: src/adplug/adplug-xmms.cc:511 -msgid "AdPlug :: File Info" -msgstr "AdPlug :: Informácie o súbore" - -#: src/adplug/adplug-xmms.cc:533 src/amidi-plug/i_configure-fluidsynth.c:348 -msgid "Filename" -msgstr "Názov súboru" - -#: src/adplug/adplug-xmms.cc:537 src/skins/ui_playlist.c:390 -msgid "Title: " -msgstr "Názov: " - -#: src/adplug/adplug-xmms.cc:538 -msgid "Author: " -msgstr "Autor: " - -#: src/adplug/adplug-xmms.cc:539 -msgid "File Type: " -msgstr "Typ súboru: " - -#: src/adplug/adplug-xmms.cc:540 -msgid "Subsongs: " -msgstr "Podskladby: " - -#: src/adplug/adplug-xmms.cc:541 -msgid "Instruments: " -msgstr "Nástroje: " - -#: src/adplug/adplug-xmms.cc:546 -msgid "Orders: " -msgstr "Poradia: " - -#: src/adplug/adplug-xmms.cc:547 -msgid "Patterns: " -msgstr "Úseky: " - -#: src/adplug/adplug-xmms.cc:551 -msgid "Song" -msgstr "Skladba" - -#: src/adplug/adplug-xmms.cc:577 -msgid "Instrument name" -msgstr "Meno nástroja" - -#: src/adplug/adplug-xmms.cc:619 -msgid "Song message" -msgstr "Správa skladby" - -#: src/adplug/adplug-xmms.cc:641 -msgid "Subsong selection" -msgstr "Výber podskladby" - -#: src/adplug/adplug-xmms.cc:707 -msgid "Order: " -msgstr "Poradie: " - -#: src/adplug/adplug-xmms.cc:708 -msgid "Pattern: " -msgstr "Úsek: " - -#: src/adplug/adplug-xmms.cc:710 -msgid "Row: " -msgstr "Riadok: " - -#: src/adplug/adplug-xmms.cc:711 -msgid "Speed: " -msgstr "RýchlosÅ¥: " - -#: src/adplug/adplug-xmms.cc:712 -msgid "Timer: " -msgstr "ÄŒasovaÄ: " - -#: src/adplug/adplug-xmms.cc:713 src/console/configure.c:234 -#: src/sid/xs_interface.c:354 -msgid "Hz" -msgstr "Hz" - -#: src/alarm/interface.c:34 -msgid "About XMMS Alarm" -msgstr "O budíku" - -#: src/alarm/interface.c:47 -msgid "XMMS Alarm" -msgstr "XMMS budík" +#: src/alarm/alarm.c:312 +msgid "About Alarm" +msgstr "O programe Alarm" -#: src/alarm/interface.c:56 +#: src/alarm/alarm.c:313 msgid "" -"An XMMS plugin which can be used\n" -"to start playing at a certain time.\n" +"A plugin that can be used to start playing at a certain time.\n" "\n" -"Send all complaints to:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" +"Originally written by Adam Feakin and Daniel Stodden." msgstr "" -"XMMS modul, ktorý môže byÅ¥ použitý\n" -"k naÄasovaniu spustenia prehrávanie.\n" -"\n" -"SÅ¥ažnosti posielajte na adresu:\n" -"Adam Feakin \n" -"Daniel Stodden \n" +"Modul, ktorý možno použiÅ¥ na prehrávanie v urÄitom Äase.\n" "\n" -"http://www.snika.uklinux.net/xmms-alarm/" +"Pôvodne napísal Adam Feakin a Daniel Stodden." -#: src/alarm/interface.c:71 src/bluetooth/scan_gui.c:149 src/lirc/about.c:115 -#: src/modplug/gui/interface.cxx:972 src/sid/xs_about.c:214 -#: src/sid/xs_interface.c:1825 -msgid "Close" -msgstr "ZatvoriÅ¥" - -#: src/alarm/interface.c:101 +#: src/alarm/interface.c:33 msgid "Alarm" -msgstr "Budík" +msgstr "Alarm" -#: src/alarm/interface.c:109 +#: src/alarm/interface.c:40 msgid "This is your wakeup call." -msgstr "Toto je váš budiaci signál." +msgstr "Toto je budiaci signál." -#: src/alarm/interface.c:124 src/alarm/interface.c:1389 -#: src/modplug/gui/interface.cxx:703 src/sid/xs_config.c:322 +#: src/alarm/interface.c:55 src/alarm/interface.c:1213 msgid "OK" msgstr "OK" -#: src/alarm/interface.c:152 -msgid "Select Playlist" -msgstr "VybraÅ¥ zoznam skladieb" - -#: src/alarm/interface.c:196 -msgid "Sorry" -msgstr "Ospravedlnenie" - -#: src/alarm/interface.c:204 -msgid "Warning" -msgstr "Upozornenie" - -#: src/alarm/interface.c:213 -msgid "" -"For safety reasons the \"quiet\" time must be at least 65 seconds longer " -"than the fading time, it must also be more than 10 seconds. This basically " -"means that there is a bug in the code and until I find a way of really " -"fixing it this message will appear :)\n" -"\n" -"Your fading settings have NOT been saved\n" -"\n" -"--\n" -"Adam" -msgstr "" -"Z bezpeÄnostých dôvodov musí byÅ¥ dĺžka ticha aspoň o 65 sekúnd dlhÅ¡ia ako je " -"dĺžka zosilňovania a zároveň musí byÅ¥ dlhá aspoň 10 sekúnd. To v podstate " -"znamená, že v kóde je chyba a kým nenájdem spôsob, ako ju naozaj odstrániÅ¥, " -"bude sa zobrazovaÅ¥ táto správa. :)\n" -"\n" -"VaÅ¡e nastavenia zosilňovanie NEBOLI uložené.\n" -"\n" -"--\n" -"Adam" - -#: src/alarm/interface.c:229 -msgid "Oh Well" -msgstr "Tak dobre" - -#: src/alarm/interface.c:388 +#: src/alarm/interface.c:214 msgid "Alarm Settings" -msgstr "Nastavenia budíka" +msgstr "Nastavenie Alarmu" -#: src/alarm/interface.c:404 src/alarm/interface.c:576 -#: src/alarm/interface.c:948 +#: src/alarm/interface.c:229 src/alarm/interface.c:401 +#: src/alarm/interface.c:773 msgid "Time" msgstr "ÄŒas" -#: src/alarm/interface.c:445 +#: src/alarm/interface.c:270 msgid "hours" -msgstr "hodinách" +msgstr "hodín" -#: src/alarm/interface.c:506 +#: src/alarm/interface.c:331 msgid "h" msgstr "h" -#: src/alarm/interface.c:536 +#: src/alarm/interface.c:361 msgid "minutes" -msgstr "minútach" +msgstr "minút" -#: src/alarm/interface.c:554 +#: src/alarm/interface.c:379 msgid "Quiet after:" msgstr "Ticho po:" -#: src/alarm/interface.c:564 +#: src/alarm/interface.c:389 msgid "Alarm at (default):" -msgstr "BudiÅ¥ v (Å¡tandardne):" +msgstr "BudiÅ¥ o (predvolené):" -#: src/alarm/interface.c:584 +#: src/alarm/interface.c:409 msgid "Choose the days for the alarm to come on" -msgstr "Zvoľte dni, kedy má budík budiÅ¥" +msgstr "Vyberte dni, kedy má budík budiÅ¥" -#: src/alarm/interface.c:612 src/alarm/interface.c:660 -#: src/alarm/interface.c:708 src/alarm/interface.c:756 -#: src/alarm/interface.c:804 src/alarm/interface.c:852 -#: src/alarm/interface.c:900 src/OSS/configure.c:166 -#: src/skins/ui_manager.c:439 src/skins/ui_manager.c:460 +#: src/alarm/interface.c:437 src/alarm/interface.c:485 +#: src/alarm/interface.c:533 src/alarm/interface.c:581 +#: src/alarm/interface.c:629 src/alarm/interface.c:677 +#: src/alarm/interface.c:725 src/bs2b/plugin.c:198 src/OSS/configure.c:153 +#: src/skins/ui_equalizer.c:1104 src/skins/ui_manager.c:447 +#: src/skins/ui_manager.c:468 msgid "Default" msgstr "Å tandardné" -#: src/alarm/interface.c:938 +#: src/alarm/interface.c:763 msgid "Day" msgstr "Deň" -#: src/alarm/interface.c:958 +#: src/alarm/interface.c:783 msgid "Tuesday" msgstr "Utorok" -#: src/alarm/interface.c:969 +#: src/alarm/interface.c:794 msgid "Wednesday" msgstr "Streda" -#: src/alarm/interface.c:980 +#: src/alarm/interface.c:805 msgid "Thursday" msgstr "Å tvrtok" -#: src/alarm/interface.c:991 +#: src/alarm/interface.c:816 msgid "Friday" msgstr "Piatok" -#: src/alarm/interface.c:1002 +#: src/alarm/interface.c:827 msgid "Saturday" msgstr "Sobota" -#: src/alarm/interface.c:1013 +#: src/alarm/interface.c:838 msgid "Sunday" msgstr "Nedeľa" -#: src/alarm/interface.c:1023 +#: src/alarm/interface.c:848 msgid "Monday" msgstr "Pondelok" -#: src/alarm/interface.c:1034 +#: src/alarm/interface.c:859 msgid "Days" msgstr "Dni" -#: src/alarm/interface.c:1050 +#: src/alarm/interface.c:875 msgid "Fading" -msgstr "Zosilňovanie" +msgstr "Zosilovanie" -#: src/alarm/interface.c:1087 src/sid/xs_interface.c:921 -#: src/sid/xs_interface.c:975 src/sid/xs_interface.c:1155 +#: src/alarm/interface.c:912 msgid "seconds" msgstr "sekúnd" -#: src/alarm/interface.c:1095 src/alarm/interface.c:1211 -#: src/modplug/gui/interface.cxx:550 +#: src/alarm/interface.c:920 src/alarm/interface.c:1035 msgid "Volume" msgstr "HlasitosÅ¥" -#: src/alarm/interface.c:1121 +#: src/alarm/interface.c:946 msgid "Current" msgstr "Aktuálna" -#: src/alarm/interface.c:1128 -msgid "reset to current output volume" -msgstr "vrátiÅ¥ na aktuálnu hlasitosÅ¥ výstupu" - -#: src/alarm/interface.c:1130 +#: src/alarm/interface.c:954 msgid "Start at" msgstr "ZaÄaÅ¥ na" -#: src/alarm/interface.c:1158 src/alarm/interface.c:1202 +#: src/alarm/interface.c:982 src/alarm/interface.c:1026 msgid "%" msgstr "%" -#: src/alarm/interface.c:1174 +#: src/alarm/interface.c:998 msgid "Final" msgstr "SkonÄiÅ¥ na" -#: src/alarm/interface.c:1227 +#: src/alarm/interface.c:1051 msgid "Additional Command" msgstr "DodatoÄný príkaz" -#: src/alarm/interface.c:1253 +#: src/alarm/interface.c:1077 msgid "enable" msgstr "povoliÅ¥" -#: src/alarm/interface.c:1261 +#: src/alarm/interface.c:1085 msgid "Playlist (optional)" msgstr "Zoznam skladieb (voliteľné)" -#: src/alarm/interface.c:1287 +#: src/alarm/interface.c:1111 msgid "Browse..." -msgstr "Prechádzať…" +msgstr "PrechádzaÅ¥..." -#: src/alarm/interface.c:1295 src/alarm/interface.c:1460 +#: src/alarm/interface.c:1119 src/alarm/interface.c:1283 msgid "Reminder" -msgstr "Pripomenutie" +msgstr "Upozornenie" -#: src/alarm/interface.c:1312 +#: src/alarm/interface.c:1136 msgid "Use reminder" -msgstr "Pripomenúť" +msgstr "UpozorňovaÅ¥" -#: src/alarm/interface.c:1328 src/sndstretch/sndstretch_xmms.c:394 +#: src/alarm/interface.c:1152 src/sndstretch/sndstretch_xmms.c:358 msgid "Options" msgstr "Možnosti" -#: src/alarm/interface.c:1336 +#: src/alarm/interface.c:1160 msgid "What do these options mean?" -msgstr "ÄŒo znamenajú tieto možnosti?" +msgstr "ÄŒo tieto možnosti znamenajú?" -#: src/alarm/interface.c:1364 +#: src/alarm/interface.c:1188 msgid "" "\n" "Time\n" @@ -534,73 +254,78 @@ msgstr "" "\n" "ÄŒas\n" -" BudiÅ¥ v: \n" -" ÄŒas, v ktorom sa spustí budenie.\n" +" BudiÅ¥ o: \n" +" ÄŒas budíka.\n" "\n" " Ticho po: \n" " ZastaviÅ¥ budík po uplynutí tejto doby.\n" -" (ak nie je okno budíka medzi tým zatvorené)\n" +" (pokiaľ nebude budiaci dialóg zatvorený)\n" "\n" "\n" "Dni\n" " Deň:\n" -" Zvoľte dni, kedy má byÅ¥ budík aktívny.\n" +" Vyberte dni, kedy má budík fungovaÅ¥.\n" "\n" " ÄŒas:\n" -" Zvoľte Äas budenia pre každý deň, alebo zaÅ¡krtnite\n" -" prepínacie tlaÄidlo na použitie Å¡tandardného Äasu.\n" +" Vyberte Äas budíka pre každý deň,\n" +" alebo použite Å¡tandardný Äas.\n" "\n" "\n" "HlasitosÅ¥\n" -" Zosilňovanie: \n" -" PoÄas tohoto Äasu postupne zosilňuje hlasitosÅ¥ až\n" -" na zvolenú hodnotu\n" +" Zosilovanie: \n" +" Zosiluje až na vybranú hodnotu \n" +" po vybranú dobu.\n" "\n" " ZaÄaÅ¥ na: \n" -" ZaÄaÅ¥ zosilňovanie z tejto úrovne.\n" +" Zosilovanie zaÄne z tejto hlasitosti.\n" "\n" " SkonÄiÅ¥ na: \n" -" Úroveň, pri ktorej skonÄí zosilňovanie. Ak je Äas\n" -"zosilňovania 0, hlasitosÅ¥ sa nastaví na túto úroveň\n" -"a spustí sa prehrávanie.\n" +" HlasitosÅ¥ na konci zosilnenia. Ak je doba\n" +" zosilovania na hodnote 0, potom bude \n" +" hlasitosÅ¥ táto.\n" "\n" "\n" -"Nastavenia:\n" +"Možnosti:\n" " DodatoÄný príkaz:\n" -" Tento príkaz bude pri budení spustený.\n" +" Tento príkaz bude spustený v dobe budíka.\n" "\n" " Zoznam skladieb: \n" -" NaÄítaÅ¥ zoznam skladieb, z ktorého sa budú\n" -" prehrávaÅ¥ skladby (musí maÅ¥ príponu .m3u).\n" -" Ak nie je zoznam zadaný, budú sa prehrávaÅ¥ skladby\n" -" z aktuálneho zoznamu skladieb.\n" -" Je možné použiÅ¥ aj URL mp3/ogg prúdu, ale\n" -" naÄítavanie zoznamu skladieb z URL nie je momentálne\n" -" v XMMS podporované.\n" -"\n" -" Pripomenutie:\n" -" Pri vypnutí budíka zobrazí pripomienku.\n" -" Text pripomienky napíšte do vstupného poľa\n" -" a zaÅ¡krtnite „Pripomenúť“ ak si prajete, aby sa text zobrazil.\n" +" NaÄíta tento zoznam skladieb, z ktorého bude hraÅ¥ \n" +" (musí maÅ¥ príponu .m3u). Ak zoznam nie je zadaný, \n" +" budú použité skladby, ktoré budú v aktuálnom\n" +" zozname skladieb.\n" +" URL MP3/OGG prúdu môže byÅ¥ taktiež\n" +" zadaná, ale naÄítanie zoznamu skladieb\n" +" z URL nie je momentálne podporované.\n" +"\n" +" Upozornenie:\n" +" Pri vypnutí budíka zobrazí odkaz.\n" +" Text odkazu vpíšte do vstupného poľa a ak \n" +" si želáte zobrazovaÅ¥ odkaz, stlaÄte tlaÄidlo.\n" -#: src/alarm/interface.c:1366 src/gtkui/ui_manager.c:165 -#: src/skins/ui_manager.c:371 +#: src/alarm/interface.c:1190 src/skins/ui_manager.c:382 msgid "Help" msgstr "Pomocník" -#: src/alarm/interface.c:1468 +#: src/alarm/interface.c:1222 src/cdaudio-ng/configure.c:249 +#: src/crystalizer/crystalizer.c:130 src/echo_plugin/gui.c:125 +#: src/jack/configure.c:148 src/null/null.c:108 src/stereo_plugin/stereo.c:125 +msgid "Cancel" +msgstr "ZruÅ¡iÅ¥" + +#: src/alarm/interface.c:1290 msgid "Your reminder for today is.." -msgstr "VaÅ¡a pripomienka pre dnes je…" +msgstr "Váš odkaz pre dnes je.." -#: src/alarm/interface.c:1493 +#: src/alarm/interface.c:1315 msgid "Thankyou" msgstr "ÄŽakujem" -#: src/alsa/config.c:209 +#: src/alsa/config.c:210 msgid "Default PCM device" msgstr "Predvolené PCM zariadenie" -#: src/alsa/config.c:234 +#: src/alsa/config.c:235 msgid "Default mixer device" msgstr "Predvolené zariadenie mixéra" @@ -612,7 +337,7 @@ msgid "PCM device:" msgstr "PCM zariadenie:" -#: src/alsa/config.c:447 src/OSS/configure.c:256 src/sun/configure.c:218 +#: src/alsa/config.c:447 src/OSS/configure.c:237 msgid "Mixer device:" msgstr "Zariadenie mixéra:" @@ -624,15 +349,15 @@ msgid "Work around drain hangup" msgstr "ObísÅ¥ problém so zasekávaním pri vyprázdňovaní" -#: src/alsa/plugin.c:61 +#: src/alsa/plugin.c:59 msgid "About ALSA Output Plugin" msgstr "O výstupnom module ALSA" -#: src/alsa/plugin.c:83 +#: src/alsa/plugin.c:81 msgid "ALSA error" msgstr "Chyba ALSA" -#: src/amidi-plug/amidi-plug.c:323 +#: src/amidi-plug/amidi-plug.c:326 msgid "" "You have not selected any sequencer ports for MIDI playback. You can do so " "in the MIDI plugin preferences." @@ -646,122 +371,66 @@ #: src/amidi-plug/backend-alsa/b-alsa.c:37 msgid "" -"This backend sends MIDI events to a group of user-chosen ALSA sequencer " -"ports. The ALSA sequencer interface is very versatile, it can provide ports " -"for audio cards hardware synthesizers (i.e. emu10k1) but also for software " -"synths, external devices, etc.\n" -"This backend does not produce audio, MIDI events are handled directly from " -"devices/programs behind the ALSA ports; in example, MIDI events sent to the " -"hardware synth will be directly played.\n" +"This backend sends MIDI events to a group of user-chosen ALSA sequencer ports. The ALSA sequencer interface is very versatile, it can provide ports for audio cards hardware synthesizers (i.e. emu10k1) but also for software synths, external devices, etc.\n" +"This backend does not produce audio, MIDI events are handled directly from devices/programs behind the ALSA ports; in example, MIDI events sent to the hardware synth will be directly played.\n" "Backend written by Giacomo Lozito." msgstr "" -"Toto koncové zariadenie posiela MIDI udalosti skupine užívateľom vybraných " -"portov ALSA sekvencéra. Rozhranie ALSA sekvencéra je vysoko prispôsobivé. " -"Môže poskytovaÅ¥ porty pre hardvérové syntetizátory zvukovej karty (napr. " -"emu10k1), alebo syntetizátorom softvérovým, vonkajším zariadeniam atÄ.\n" -"Toto koncové zariadenie nevytvára zvuk, MIDI udalosti sú spracovávané priamo " -"zariadením/programom, ktoré sa ukrýva za ALSA portom. Napríklad MIDI " -"udalosti poslané hardvérovému syntetizátoru budú prehrané priamo ním.\n" +"Toto koncové zariadenie posiela MIDI udalosti skupine užívateľom vybraných portov ALSA sekvencéra. Rozhranie ALSA sekvencéra je vysoko prispôsobivé. Môže poskytovaÅ¥ porty pre hardvérové syntetizátory zvukovej karty (napr. emu10k1), alebo syntetizátorom softvérovým, vonkajším zariadeniam atÄ.\n" +"Toto koncové zariadenie nevytvára zvuk, MIDI udalosti sú spracovávané priamo zariadením/programom, ktoré sa ukrýva za ALSA portom. Napríklad MIDI udalosti poslané hardvérovému syntetizátoru budú prehrané priamo ním.\n" "OvládaÄ koncového zariadenia napísal Giacomo Lozito." -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:41 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 msgid "FluidSynth Backend " msgstr "Koncové zariadenie FluidSynth " -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:43 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 msgid "" -"This backend produces audio by sending MIDI events to FluidSynth, a real-" -"time software synthesizer based on the SoundFont2 specification (www." -"fluidsynth.org).\n" -"Produced audio can be manipulated via player effect plugins and is processed " -"by chosen ouput plugin.\n" +"This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" "Backend written by Giacomo Lozito." msgstr "" -"Toto koncové zariadenie vytvára zvuk posielaním MIDI udalostí do FluidSynth " -"(softvérový syntetizátor pracujúci v reálnom Äase založený na Å¡pecifikácii " -"SoundFont2 www.fluidsynth.org).\n" -"Vyprodukovaný zvuk môže byÅ¥ upravený efektovými modulmi prehrávaÄa a " -"následne je spracovaný zvoleným výstupným modulom.\n" +"Toto koncové zariadenie vytvára zvuk posielaním MIDI udalostí do FluidSynth (softvérový syntetizátor pracujúci v reálnom Äase založený na Å¡pecifikácii SoundFont2 www.fluidsynth.org).\n" +"Vyprodukovaný zvuk môže byÅ¥ upravený efektovými modulmi prehrávaÄa a následne je spracovaný zvoleným výstupným modulom.\n" "OvládaÄ koncového zariadenia napísal Giacomo Lozito." -#: src/amidi-plug/i_configure-alsa.c:221 +#: src/amidi-plug/i_configure-alsa.c:228 msgid "ALSA BACKEND CONFIGURATION" msgstr "KONFIGURÃCIA KONCOVÉHO ZARIADENIE PRE ALSA" -#: src/amidi-plug/i_configure-alsa.c:326 +#: src/amidi-plug/i_configure-alsa.c:331 msgid "Port" msgstr "Port" -#: src/amidi-plug/i_configure-alsa.c:328 +#: src/amidi-plug/i_configure-alsa.c:333 msgid "Client name" msgstr "Názov klienta" -#: src/amidi-plug/i_configure-alsa.c:330 +#: src/amidi-plug/i_configure-alsa.c:335 msgid "Port name" msgstr "Názov portu" -#: src/amidi-plug/i_configure-alsa.c:341 +#: src/amidi-plug/i_configure-alsa.c:346 msgid "ALSA output ports" msgstr "Výstupné porty ALSA" -#: src/amidi-plug/i_configure-alsa.c:394 +#: src/amidi-plug/i_configure-alsa.c:399 msgid "Soundcard: " msgstr "Zvuková karta: " -#: src/amidi-plug/i_configure-alsa.c:396 +#: src/amidi-plug/i_configure-alsa.c:401 msgid "Mixer control: " msgstr "Ovládanie mixéra: " -#: src/amidi-plug/i_configure-alsa.c:408 +#: src/amidi-plug/i_configure-alsa.c:413 msgid "Mixer settings" msgstr "Nastavenia mixéra" -#: src/amidi-plug/i_configure-alsa.c:421 -msgid "" -"* Select ALSA output ports *\n" -"MIDI events will be sent to the ports selected here. In example, if your " -"audio card provides a hardware synth and you want to play MIDI with it, " -"you'll probably want to select the wavetable synthesizer ports." -msgstr "" -"* Vyberte výstupné porty ALSA *\n" -"MIDI udalosti budú zasielané tu vybraným portom. Napríklad, ak vaÅ¡a zvuková " -"karta poskytuje hardvérový syntetizátor a chcete ho použiÅ¥ na prehrávanie, " -"budete pravdepodobne potrebovaÅ¥ vybraÅ¥ porty wavetable syntetizátora." - -#: src/amidi-plug/i_configure-alsa.c:426 -msgid "" -"* Select ALSA mixer card *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volumeslider will " -"manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" -"* Vyberte kartu ALSA mixéra *\n" -"OvládaÄ koncového zariadenia ALSA posiela výstup priamo cez ALSA. Nepoužíva " -"moduly efektov a výstupu prehrávaÄa. PoÄas prehrávania bude ovládanie " -"hlasitosti používaÅ¥ mixér, ktorý tu vyberiete. Ak používate porty wavetable " -"syntetizátora, budete pravdepodobne chcieÅ¥ použiÅ¥ \"Ovládanie syntézy\"." - -#: src/amidi-plug/i_configure-alsa.c:433 -msgid "" -"* Select ALSA mixer control *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volume slider " -"will manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" -"* Vyberte ovládanie ALSA mixéra *\n" -"OvládaÄ koncového zariadenia ALSA posiela výstup priamo cez ALSA. Nepoužíva " -"moduly efektov a výstupu prehrávaÄa. PoÄas prehrávania bude ovládanie " -"hlasitosti používaÅ¥ mixér, ktorý tu vyberiete. Ak používate porty wavetable " -"syntetizátora, budete pravdepodobne chcieÅ¥ použiÅ¥ \"Ovládanie syntézy\"." - -#: src/amidi-plug/i_configure-alsa.c:444 +#: src/amidi-plug/i_configure-alsa.c:429 msgid "ALSA Backend not loaded or not available" msgstr "" "OvládaÄ koncového zariadenia ALSA nie je naÄítaný, alebo nie je dostupný" -#: src/amidi-plug/i_configure-alsa.c:463 +#: src/amidi-plug/i_configure-alsa.c:448 msgid "" "ALSA\n" "backend" @@ -769,148 +438,51 @@ "Koncové zariadenie\n" "ALSA" -#: src/amidi-plug/i_configure-ap.c:56 +#: src/amidi-plug/i_configure-ap.c:59 msgid "AMIDI-Plug - backend information" msgstr "AMIDI-Plug - podrobnosti o koncovom zariadení" -#: src/amidi-plug/i_configure-ap.c:194 +#: src/amidi-plug/i_configure-ap.c:196 msgid "AMIDI-PLUG PREFERENCES" msgstr "PREDVOĽBY AMIDI-PLUG" -#: src/amidi-plug/i_configure-ap.c:221 +#: src/amidi-plug/i_configure-ap.c:223 msgid "Backend selection" msgstr "Výber koncového zariadenia" -#: src/amidi-plug/i_configure-ap.c:225 +#: src/amidi-plug/i_configure-ap.c:227 msgid "Available backends" msgstr "Dostupné koncové zariadenia" -#: src/amidi-plug/i_configure-ap.c:255 +#: src/amidi-plug/i_configure-ap.c:257 msgid "Playback settings" msgstr "Nastavenie prehrávania" -#: src/amidi-plug/i_configure-ap.c:260 +#: src/amidi-plug/i_configure-ap.c:262 msgid "Transpose: " msgstr "TransponovaÅ¥: " -#: src/amidi-plug/i_configure-ap.c:269 +#: src/amidi-plug/i_configure-ap.c:271 msgid "Drum shift: " msgstr "Posun bicích: " -#: src/amidi-plug/i_configure-ap.c:287 +#: src/amidi-plug/i_configure-ap.c:289 msgid "Advanced settings" msgstr "PokroÄilé nastavenia" -#: src/amidi-plug/i_configure-ap.c:291 +#: src/amidi-plug/i_configure-ap.c:293 msgid "pre-calculate length of MIDI files in playlist" msgstr "dopredu vypoÄítaÅ¥ dĺžku MIDI súborov v zozname skladieb" -#: src/amidi-plug/i_configure-ap.c:296 +#: src/amidi-plug/i_configure-ap.c:298 msgid "extract comments from MIDI file (if available)" msgstr "extrahovaÅ¥ komentáre z MIDI súboru (ak existujú)" -#: src/amidi-plug/i_configure-ap.c:301 +#: src/amidi-plug/i_configure-ap.c:303 msgid "extract lyrics from MIDI file (if available)" msgstr "extrahovaÅ¥ slová z MIDI súboru (ak existujú)" -#: src/amidi-plug/i_configure-ap.c:320 -msgid "" -"* Backend selection *\n" -"AMIDI-Plug works with backends, in a modular fashion; here you should select " -"your backend; that is, the way MIDI events are going to be handled and " -"played.\n" -"If you have a hardware synthesizer on your audio card, and ALSA supports it, " -"you'll want to use the ALSA backend. It can also be used with anything that " -"provides an interface to the ALSA sequencer, including software synths or " -"external devices.\n" -"If you want to rely on a software synthesizer and/or want to pipe audio into " -"effect and output plugins of the player you'll want to use the good " -"FluidSynth backend.\n" -"Press the info button to read specific information about each backend." -msgstr "" -"* Výber koncového zariadenia *\n" -"AMIDI-Plug pracuje s koncovými zariadeniami modulárnym spôsobom. Tu by ste " -"si mali vybraÅ¥ ovládaÄ, to znamená spôsob, akým budú MIDI udalosti " -"spracovávané a prehrávané.\n" -"Ak na vaÅ¡ej zvukovej karte máte hardvérový syntetizátor, a ALSA ho " -"podporuje, je rozumné použiÅ¥ ovládaÄ ALSA. Môže byÅ¥ tiež použitý s " -"Äímkoľvek, Äo poskytuje rozhranie k sekvencéru ALSA, vrátane softvérového " -"syntetizátora a externých zariadení.\n" -"Ak sa budete chcieÅ¥ spoľahnúť na softvérový syntetizátor a/alebo budete " -"chcieÅ¥ zvuk spracovaÅ¥ efektovým a výstupným modulom prehrávaÄa, dobrou " -"voľbou bude ovládaÄ FluidSynth.\n" -"Podrobnosti o jednotlivých ovládaÄoch získate po stlaÄení tlaÄítka " -"„Podrobnosti“." - -#: src/amidi-plug/i_configure-ap.c:331 -msgid "" -"* Transpose function *\n" -"This option allows you to play the midi file transposed in a different key, " -"by shifting of the desired number of semitones all its notes (excepting " -"those on midi channel 10, reserved for percussions). Especially useful if " -"you wish to sing or play along with another instrument." -msgstr "" -"* Funkcia transpozície *\n" -"Táto voľba umožňuje prehraÅ¥ MIDI súbor transponovaný o zadaný poÄet poltónov " -"(okrem stopy 10, ktorá je vyhradené pre bicie). Funkcia je užitoÄná, ak " -"chcete spievaÅ¥ alebo hraÅ¥ s iným nástrojom spolu so skladbou." - -#: src/amidi-plug/i_configure-ap.c:337 -msgid "" -"* Drumshift function *\n" -"This option allows you to shift notes on midi channel 10 (the standard " -"percussions channel) of the desired number of semitones. This results in " -"different drumset and percussions being used during midi playback, so if you " -"wish to enhance (or reduce, or alter) percussion sounds, try to play with " -"this value." -msgstr "" -"* Funkcia posunu bicích *\n" -"Táto funkcia umožňuje posun tónov na 10. MIDI kanáli (Å¡tandardný kanál pre " -"bicie) o zadaný poÄet poltónov. Výsledkom je použitie inej sady bicích poÄas " -"prehrávania. Takže ak chcete vylepÅ¡iÅ¥ (stlmiÅ¥ Äi inak upraviÅ¥) zvuk bicích, " -"pohrajte sa s touto hodnotou." - -#: src/amidi-plug/i_configure-ap.c:344 -msgid "" -"* Pre-calculate MIDI length *\n" -"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as " -"soon as the player requests it, instead of doing that only when the MIDI " -"file is being played. In example, MIDI length will be calculated straight " -"after adding MIDI files in a playlist. Disable this option if you want " -"faster playlist loading (when a lot of MIDI files are added), enable it to " -"display more information in the playlist straight after loading." -msgstr "" -"* Dopredu vypoÄítaÅ¥ dĺžku MIDI skladby *\n" -"Ak je táto voľba povolená, AMIDI-Plug vypoÄíta dĺžku MIDI súboru okamžite, " -"ako o ňu prehrávaÄ požiada. Inak bude dĺžka skladby vypoÄítaná až pri prvom " -"prehraní. Vypnutím tejto voľby sa zrýchli naÄítanie zoznamu skladieb (hlavne " -"ak obsahuje veľa MIDI súborov). Túto funkciu zapnite ak potrebujete vidieÅ¥ " -"dĺžku skladieb okamžite po naÄítaní zoznamu." - -#: src/amidi-plug/i_configure-ap.c:353 -msgid "" -"* Extract comments from MIDI files *\n" -"Some MIDI files contain text comments (author, copyright, instrument notes, " -"etc.). If this option is enabled, AMIDI-Plug will extract and display " -"comments (if available) in the file information dialog." -msgstr "" -"* NaÄítaÅ¥ komentáre z MIDI súborov *\n" -"Niektoré MIDI súbory obsahujú textové komentáre (autora, autorské práva, " -"poznámky k nástrojom, atÄ.). Ak je táto voľba povolená, AMIDI-Plug tieto " -"komentáre naÄíta (ak existujú) a zobrazí v okne s podrobnosÅ¥ami o súbore." - -#: src/amidi-plug/i_configure-ap.c:358 -msgid "" -"* Extract lyrics from MIDI files *\n" -"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug " -"will extract and display song lyrics (if available) in the file information " -"dialog." -msgstr "" -"* NaÄítaÅ¥ slová z MIDI súborov *\n" -"Niektoré MIDI súbory obsahujú text piesne. Ak je táto voľba povolená, AMIDI-" -"Plug text naÄíta (ak existuje) a zobrazí ho v okne s podrobnosÅ¥ami o súbore." - -#: src/amidi-plug/i_configure-ap.c:375 +#: src/amidi-plug/i_configure-ap.c:333 msgid "" "AMIDI\n" "Plug" @@ -918,232 +490,115 @@ "AMIDI\n" "Plug" -#: src/amidi-plug/i_configure.c:73 +#: src/amidi-plug/i_configure.c:76 msgid "AMIDI-Plug - select file" msgstr "AMIDI-Plug - vyberte súbor" -#: src/amidi-plug/i_configure.c:126 +#: src/amidi-plug/i_configure.c:129 msgid "AMIDI-Plug - configuration" msgstr "AMIDI-Plug - nastavenie" -#: src/amidi-plug/i_configure-fluidsynth.c:52 +#: src/amidi-plug/i_configure-fluidsynth.c:55 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - vyberte SoundFont súbor" -#: src/amidi-plug/i_configure-fluidsynth.c:268 +#: src/amidi-plug/i_configure-fluidsynth.c:270 msgid "FLUIDSYNTH BACKEND CONFIGURATION" msgstr "NASTAVENIE KONCOV0HO ZARIADENIA FLUIDSYNTH" -#: src/amidi-plug/i_configure-fluidsynth.c:316 +#: src/amidi-plug/i_configure-fluidsynth.c:313 msgid "SoundFont settings" msgstr "Nastavenia SoundFont" -#: src/amidi-plug/i_configure-fluidsynth.c:352 +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Názov súboru" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 msgid "Size (bytes)" msgstr "VeľkosÅ¥ (v bajtoch)" -#: src/amidi-plug/i_configure-fluidsynth.c:401 +#: src/amidi-plug/i_configure-fluidsynth.c:398 msgid "Load SF on player start" msgstr "NaÄítaÅ¥ SoundFont pri spustení prehrávaÄa" -#: src/amidi-plug/i_configure-fluidsynth.c:405 +#: src/amidi-plug/i_configure-fluidsynth.c:402 msgid "Load SF on first midifile play" msgstr "NaÄítaÅ¥ SoundFont pri prehrávaní prvého MIDI súboru" -#: src/amidi-plug/i_configure-fluidsynth.c:420 +#: src/amidi-plug/i_configure-fluidsynth.c:417 msgid "Synthesizer settings" msgstr "Nastavenia syntetizátora" -#: src/amidi-plug/i_configure-fluidsynth.c:429 +#: src/amidi-plug/i_configure-fluidsynth.c:426 msgid "gain" msgstr "zosilnenie" -#: src/amidi-plug/i_configure-fluidsynth.c:435 -#: src/amidi-plug/i_configure-fluidsynth.c:463 -#: src/amidi-plug/i_configure-fluidsynth.c:491 -#: src/amidi-plug/i_configure-fluidsynth.c:522 +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 msgid "use default" msgstr "použiÅ¥ predvolené" -#: src/amidi-plug/i_configure-fluidsynth.c:438 -#: src/amidi-plug/i_configure-fluidsynth.c:466 +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 msgid "value:" msgstr "hodnota:" -#: src/amidi-plug/i_configure-fluidsynth.c:457 +#: src/amidi-plug/i_configure-fluidsynth.c:454 msgid "poliphony" msgstr "viachlas" -#: src/amidi-plug/i_configure-fluidsynth.c:485 +#: src/amidi-plug/i_configure-fluidsynth.c:482 msgid "reverb" msgstr "dozvuk" -#: src/amidi-plug/i_configure-fluidsynth.c:494 -#: src/amidi-plug/i_configure-fluidsynth.c:525 +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 msgid "yes" msgstr "áno" -#: src/amidi-plug/i_configure-fluidsynth.c:496 -#: src/amidi-plug/i_configure-fluidsynth.c:527 +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 msgid "no" msgstr "nie" -#: src/amidi-plug/i_configure-fluidsynth.c:516 +#: src/amidi-plug/i_configure-fluidsynth.c:513 msgid "chorus" msgstr "zbor" -#: src/amidi-plug/i_configure-fluidsynth.c:547 +#: src/amidi-plug/i_configure-fluidsynth.c:544 msgid "sample rate" msgstr "vzorkovacia frekvencia" -#: src/amidi-plug/i_configure-fluidsynth.c:553 +#: src/amidi-plug/i_configure-fluidsynth.c:550 msgid "22050 Hz " msgstr "22050 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:556 +#: src/amidi-plug/i_configure-fluidsynth.c:553 msgid "44100 Hz " msgstr "44100 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:559 +#: src/amidi-plug/i_configure-fluidsynth.c:556 msgid "96000 Hz " msgstr "96000 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:562 +#: src/amidi-plug/i_configure-fluidsynth.c:559 msgid "custom " msgstr "vlastná " -#: src/amidi-plug/i_configure-fluidsynth.c:571 +#: src/amidi-plug/i_configure-fluidsynth.c:568 msgid "Hz " msgstr "Hz " #: src/amidi-plug/i_configure-fluidsynth.c:621 -msgid "" -"* Select SoundFont files *\n" -"In order to play MIDI with FluidSynth, you need to specify at least one " -"valid SoundFont file here (use absolute paths). The loading order is from " -"the top (first) to the bottom (last)." -msgstr "" -"* Výber SoundFont súborov *\n" -"Ak chcete prehrávaÅ¥ MIDI súbory pomocou FluidSynth, musíte zadaÅ¥ aspoň jeden " -"SoundFont súbor (použite absolútne cesty). Poradie pri nahrávaní je zhora " -"nadol." - -#: src/amidi-plug/i_configure-fluidsynth.c:626 -msgid "" -"* Load SoundFont on player start *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" -"* NaÄítaÅ¥ SoundFont pri Å¡tarte prehrávaÄa *\n" -"V závislosti od rýchlosti vášho systému môže trvaÅ¥ naÄítanie súborov " -"SoundFont do FluidSynth niekoľko sekúnd. Ide o jednorázovú úlohu (súbor " -"ostane naÄítaný kým nebude nahradený iným, alebo kým nezakážete ovládaÄ " -"FluidSynth), ktorá môže byÅ¥ vykonaná pri Å¡tarte prehrávaÄa, alebo pred " -"prehrávaním prvého MIDI súboru (druhá možnosÅ¥ je výhodnejÅ¡ia v prípade, ak " -"prehrávaÄ nepoužívate iba na prehrávanie MIDI súborov)." - -#: src/amidi-plug/i_configure-fluidsynth.c:634 -msgid "" -"* Load SoundFont on first midifile play *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" -"* NaÄítaÅ¥ SoundFont pred prehrávaním prvého MIDI súboru *\n" -"V závislosti od rýchlosti vášho systému môže trvaÅ¥ naÄítanie súborov " -"SoundFont do FluidSynth niekoľko sekúnd. Ide o jednorázovú úlohu (súbor " -"ostane naÄítaný kým nebude nahradený iným, alebo kým nezakážete ovládaÄ " -"FluidSynth), ktorá môže byÅ¥ vykonaná pri Å¡tarte prehrávaÄa, alebo pred " -"prehrávaním prvého MIDI súboru (druhá možnosÅ¥ je výhodnejÅ¡ia v prípade, ak " -"prehrávaÄ nepoužívate iba na prehrávanie MIDI súborov)." - -#: src/amidi-plug/i_configure-fluidsynth.c:642 -msgid "" -"* Synthesizer gain *\n" -"From FluidSynth docs: the gain is applied to the final or master output of " -"the synthesizer; it is set to a low value by default to avoid the saturation " -"of the output when random MIDI files are played." -msgstr "" -"* Zosilnenie syntetizátora *\n" -"Z dokumentácie FluidSynth: zosilnenie je použité na koneÄný alebo hlavný " -"výstup syntetizátora. Aby sa zabránilo skresleniu pri prehrávaní rôznorodých " -"MIDI súborov je Å¡tandardne nastavené na nízku hodnotu." - -#: src/amidi-plug/i_configure-fluidsynth.c:647 -msgid "" -"* Synthesizer polyphony *\n" -"From FluidSynth docs: the polyphony defines how many voices can be played in " -"parallel; the number of voices is not necessarily equivalent to the number " -"of notes played simultaneously; indeed, when a note is struck on a specific " -"MIDI channel, the preset on that channel may create several voices, for " -"example, one for the left audio channel and one for the right audio " -"channels; the number of voices activated depends on the number of instrument " -"zones that fall in the correspond to the velocity and key of the played note." -msgstr "" -"* Viachlas syntetizátora *\n" -"Z dokumentácie FluidSynth: viachlas urÄuje, koľko sa môže naraz hraÅ¥ hlasov. " -"PoÄet hlasov nie je nutne zhodný s poÄtom súÄasne hraných nôt. KeÄ je nota " -"vyslaná na urÄitom MIDI kanáli, nastavenie kanála môže spôsobiÅ¥ vytvorenie " -"viacerých hlasov (napr. jeden pre ľavý zvukový kanál a jeden pre pravý). " -"PoÄet aktivovaných hlasov závisí na poÄte nástrojových zón, ktoré " -"zodpovedajú rýchlosti a kľúÄu hraných nôt." - -#: src/amidi-plug/i_configure-fluidsynth.c:657 -#: src/amidi-plug/i_configure-fluidsynth.c:663 -msgid "" -"* Synthesizer reverb *\n" -"From FluidSynth docs: when set to \"yes\" the reverb effects module is " -"activated; note that when the reverb module is active, the amount of signal " -"sent to the reverb module depends on the \"reverb send\" generator defined " -"in the SoundFont." -msgstr "" -"* Dozvuk syntetizátora *\n" -"Z dokumentácie FluidSynth: ak je nastavené na „áno“ je modul efektu dozvuku " -"aktivovaný. VeľkosÅ¥ signálu zasielaného do tohoto modulu závisí na " -"generátore „posielania dozvuku“, ktorý je definovaný v SoundFont." - -#: src/amidi-plug/i_configure-fluidsynth.c:669 -#: src/amidi-plug/i_configure-fluidsynth.c:675 -msgid "" -"* Synthesizer chorus *\n" -"From FluidSynth docs: when set to \"yes\" the chorus effects module is " -"activated; note that when the chorus module is active, the amount of signal " -"sent to the chorus module depends on the \"chorus send\" generator defined " -"in the SoundFont." -msgstr "" -"* Zbor syntetizátora *\n" -"Z dokumentácie FluidSynth: ak je nastavené na „áno“ je modul efektu zboru " -"aktivovaný. VeľkosÅ¥ signálu zasielaného do tohoto modulu závisí na " -"generátore „posielania zboru“, ktorý je definovaný v SoundFont." - -#: src/amidi-plug/i_configure-fluidsynth.c:681 -#: src/amidi-plug/i_configure-fluidsynth.c:685 -#: src/amidi-plug/i_configure-fluidsynth.c:689 -#: src/amidi-plug/i_configure-fluidsynth.c:693 -msgid "" -"* Synthesizer samplerate *\n" -"The sample rate of the audio generated by the synthesizer. You can also " -"specify a custom value in the interval 22050Hz-96000Hz." -msgstr "" -"* Vzorkovacia frekvencia syntetizátora *\n" -"Vzorkovacia frekvencia zvuku generovaného syntetizátorom. Môžete zadaÅ¥ " -"vlastnú hodnotu z intervalu 22050Hz-96000Hz.\n" -"Poznámka: Å¡tandardné parametre pre vyrovnávaciu pamäť sú nastavené pre " -"frekvenciu 44100Hz. Dosiahnutie dobrej kvality zvuku bude možno vyžadovaÅ¥ " -"úpravu týchto parametrov." - -#: src/amidi-plug/i_configure-fluidsynth.c:701 msgid "FluidSynth Backend not loaded or not available" msgstr "" "OvládaÄ koncového zariadenia FluidSynth nie je naÄítaný, alebo nie je " "dostupný" -#: src/amidi-plug/i_configure-fluidsynth.c:720 +#: src/amidi-plug/i_configure-fluidsynth.c:640 msgid "" "FluidSynth\n" "backend" @@ -1167,8 +622,7 @@ "Koncové zariadenie\n" "TiMidity" -#: src/amidi-plug/i_fileinfo.c:169 src/bluetooth/gui.c:271 -#: src/sid/xs_interface.c:1769 +#: src/amidi-plug/i_fileinfo.c:169 msgid "Name:" msgstr "Názov:" @@ -1294,19 +748,19 @@ msgid "None" msgstr "Žiadne" -#: src/aosd/aosd_trigger.c:77 +#: src/aosd/aosd_trigger.c:78 msgid "Playback Start" msgstr "ZaÄiatok prehrávania" -#: src/aosd/aosd_trigger.c:78 +#: src/aosd/aosd_trigger.c:79 msgid "Triggers OSD when a playlist entry is played." msgstr "OSD sa zobrazí pri zahájení prehrávania položky zo zoznamu skladieb." -#: src/aosd/aosd_trigger.c:82 +#: src/aosd/aosd_trigger.c:83 msgid "Title Change" msgstr "Zmena názvu" -#: src/aosd/aosd_trigger.c:83 +#: src/aosd/aosd_trigger.c:84 msgid "" "Triggers OSD when, during playback, the song title changes but the filename " "is the same. This is mostly useful to display title changes in internet " @@ -1316,219 +770,215 @@ "nezmenené. Je to hlavne vhodné na zobrazenie zmien názvov skladieb pri " "prehrávaní internetových prúdov." -#: src/aosd/aosd_trigger.c:89 +#: src/aosd/aosd_trigger.c:90 msgid "Volume Change" msgstr "Zmena hlasitosti" -#: src/aosd/aosd_trigger.c:90 +#: src/aosd/aosd_trigger.c:91 msgid "Triggers OSD when volume is changed." msgstr "OSD sa zobrazí pri zmene hlasitosti." -#: src/aosd/aosd_trigger.c:94 +#: src/aosd/aosd_trigger.c:95 msgid "Pause On" msgstr "Pozastavenie prehrávania" -#: src/aosd/aosd_trigger.c:95 +#: src/aosd/aosd_trigger.c:96 msgid "Triggers OSD when playback is paused." msgstr "OSD sa zobrazí pri pozastavení prehrávania." -#: src/aosd/aosd_trigger.c:99 +#: src/aosd/aosd_trigger.c:100 msgid "Pause Off" msgstr "Obnovenie prehrávania" -#: src/aosd/aosd_trigger.c:100 +#: src/aosd/aosd_trigger.c:101 msgid "Triggers OSD when playback is unpaused." msgstr "OSD sa zobrazí keÄ je prehrávanie obnovené." -#: src/aosd/aosd_ui.c:168 +#: src/aosd/aosd_ui.c:179 msgid "Placement" msgstr "Umiestnenie" -#: src/aosd/aosd_ui.c:202 +#: src/aosd/aosd_ui.c:218 msgid "Relative X offset:" msgstr "Relatívne odsadenie v smere osi X:" -#: src/aosd/aosd_ui.c:211 +#: src/aosd/aosd_ui.c:227 msgid "Relative Y offset:" msgstr "Relatívne odsadenie v smere osi Y:" -#: src/aosd/aosd_ui.c:220 +#: src/aosd/aosd_ui.c:236 msgid "Max OSD width:" msgstr "Maximálna šírka OSD:" -#: src/aosd/aosd_ui.c:233 +#: src/aosd/aosd_ui.c:249 msgid "Multi-Monitor options" msgstr "Nastavenia pre viac monitorov" -#: src/aosd/aosd_ui.c:237 +#: src/aosd/aosd_ui.c:253 msgid "Display OSD using:" msgstr "ZobraziÅ¥ OSD na:" -#: src/aosd/aosd_ui.c:239 +#: src/aosd/aosd_ui.c:264 msgid "all monitors" msgstr "vÅ¡etkých monitoroch" -#: src/aosd/aosd_ui.c:242 +#: src/aosd/aosd_ui.c:267 #, c-format msgid "monitor %i" msgstr "monitore %i" -#: src/aosd/aosd_ui.c:295 +#: src/aosd/aosd_ui.c:322 msgid "Timing (ms)" msgstr "ÄŒasovanie (ms)" -#: src/aosd/aosd_ui.c:300 +#: src/aosd/aosd_ui.c:327 msgid "Display:" msgstr "Zobrazenie:" -#: src/aosd/aosd_ui.c:305 +#: src/aosd/aosd_ui.c:332 msgid "Fade in:" msgstr "Rozsvietenie:" -#: src/aosd/aosd_ui.c:310 +#: src/aosd/aosd_ui.c:337 msgid "Fade out:" msgstr "Zhasnutie:" -#: src/aosd/aosd_ui.c:391 +#: src/aosd/aosd_ui.c:418 msgid "Fonts" msgstr "Písma" -#: src/aosd/aosd_ui.c:399 +#: src/aosd/aosd_ui.c:426 #, c-format msgid "Font %i:" msgstr "Písmo %i:" -#: src/aosd/aosd_ui.c:416 +#: src/aosd/aosd_ui.c:443 msgid "Shadow" msgstr "Tieň" -#: src/aosd/aosd_ui.c:451 +#: src/aosd/aosd_ui.c:478 msgid "Internationalization" msgstr "Internacionalizácia" -#: src/aosd/aosd_ui.c:457 +#: src/aosd/aosd_ui.c:484 msgid "Disable UTF-8 conversion of text (in aosd)" msgstr "ZakázaÅ¥ prevod textu do kódovania UTF-8 (v knižnici aosd)" -#: src/aosd/aosd_ui.c:475 +#: src/aosd/aosd_ui.c:502 msgid "Select Skin File" msgstr "Vyberte súbor s vzhľadom" -#: src/aosd/aosd_ui.c:586 +#: src/aosd/aosd_ui.c:613 msgid "Render Style" msgstr "Å týl zobrazenia" -#: src/aosd/aosd_ui.c:602 +#: src/aosd/aosd_ui.c:629 msgid "Colors" msgstr "Farby" -#: src/aosd/aosd_ui.c:615 +#: src/aosd/aosd_ui.c:642 #, c-format msgid "Color %i:" msgstr "Farba %i:" -#: src/aosd/aosd_ui.c:635 +#: src/aosd/aosd_ui.c:662 msgid "Custom Skin" msgstr "Používateľský vzhľad" -#: src/aosd/aosd_ui.c:641 +#: src/aosd/aosd_ui.c:668 msgid "Skin file:" msgstr "Súbor s vzhľadom:" -#: src/aosd/aosd_ui.c:644 src/sid/xs_interface.c:1044 -#: src/sid/xs_interface.c:1236 src/sid/xs_interface.c:1292 +#: src/aosd/aosd_ui.c:671 msgid "Browse" msgstr "PrechádzaÅ¥" -#: src/aosd/aosd_ui.c:746 +#: src/aosd/aosd_ui.c:773 msgid "Enable trigger" msgstr "PovoliÅ¥ spúšťaÄ" -#: src/aosd/aosd_ui.c:773 +#: src/aosd/aosd_ui.c:800 msgid "Event" msgstr "UdalosÅ¥" -#: src/aosd/aosd_ui.c:801 +#: src/aosd/aosd_ui.c:828 msgid "Composite manager detected" msgstr "Bol zistený kompozitný správca" -#: src/aosd/aosd_ui.c:808 +#: src/aosd/aosd_ui.c:835 msgid "" "Composite manager not detected;\n" -"unless you know that you have one running, please activate a composite " -"manager otherwise the OSD won't work properly" +"unless you know that you have one running, please activate a composite manager otherwise the OSD won't work properly" msgstr "" "Nebol nájdený kompozitný správca.\n" -"Ak viete, že žiadny nebeží, prosím, aktivujte kompozitného správcu, inak " -"nebude OSD pracovaÅ¥ správne" +"Ak viete, že žiadny nebeží, prosím, aktivujte kompozitného správcu, inak nebude OSD pracovaÅ¥ správne" -#: src/aosd/aosd_ui.c:816 +#: src/aosd/aosd_ui.c:843 msgid "Composite manager not required for fake transparency" msgstr "Pri faloÅ¡nej priehľadnosti nie je potrebný kompozitný správca" -#: src/aosd/aosd_ui.c:854 +#: src/aosd/aosd_ui.c:881 msgid "Transparency" msgstr "PriehľadnosÅ¥" -#: src/aosd/aosd_ui.c:860 +#: src/aosd/aosd_ui.c:887 msgid "Fake transparency" msgstr "FaloÅ¡ná priehľadnosÅ¥" -#: src/aosd/aosd_ui.c:862 +#: src/aosd/aosd_ui.c:889 msgid "Real transparency (requires X Composite Ext.)" msgstr "SkutoÄná priehľadnosÅ¥ (vyžaduje kompozitné rozšírenie X servera)" -#: src/aosd/aosd_ui.c:904 +#: src/aosd/aosd_ui.c:931 msgid "Composite extension not loaded" msgstr "Kompozitné rozšírenie nie je naÄítané" -#: src/aosd/aosd_ui.c:912 +#: src/aosd/aosd_ui.c:939 msgid "Composite extension not available" msgstr "Kompozitné rozšírenie nie je dostupné" -#: src/aosd/aosd_ui.c:931 +#: src/aosd/aosd_ui.c:958 #, c-format msgid "Audacious OSD" msgstr "OSD Audacious" -#: src/aosd/aosd_ui.c:1012 +#: src/aosd/aosd_ui.c:1039 msgid "Audacious OSD - configuration" msgstr "OSD pre Audacious - nastavenie" -#: src/aosd/aosd_ui.c:1033 +#: src/aosd/aosd_ui.c:1060 msgid "Test" msgstr "VyskúšaÅ¥" -#: src/aosd/aosd_ui.c:1048 +#: src/aosd/aosd_ui.c:1075 msgid "Position" msgstr "Umiestnenie" -#: src/aosd/aosd_ui.c:1053 +#: src/aosd/aosd_ui.c:1080 msgid "Animation" msgstr "Animácia" -#: src/aosd/aosd_ui.c:1058 +#: src/aosd/aosd_ui.c:1085 msgid "Text" msgstr "Text" -#: src/aosd/aosd_ui.c:1063 +#: src/aosd/aosd_ui.c:1090 msgid "Decoration" msgstr "Výzdoba" -#: src/aosd/aosd_ui.c:1068 +#: src/aosd/aosd_ui.c:1095 msgid "Trigger" msgstr "SpúšťaÄ" -#: src/aosd/aosd_ui.c:1073 src/cdaudio-ng/configure.c:178 -#: src/modplug/gui/interface.cxx:689 src/sid/xs_interface.c:1302 +#: src/aosd/aosd_ui.c:1100 src/cdaudio-ng/configure.c:171 msgid "Misc" msgstr "Rôzne" -#: src/aosd/aosd_ui.c:1110 +#: src/aosd/aosd_ui.c:1137 msgid "Audacious OSD - about" msgstr "O module OSD pre Audacious" -#: src/aosd/aosd_ui.c:1140 +#: src/aosd/aosd_ui.c:1167 msgid "" "\n" "Audacious OSD " @@ -1536,7 +986,7 @@ "\n" "OSD pre Audacious " -#: src/aosd/aosd_ui.c:1141 +#: src/aosd/aosd_ui.c:1168 msgid "" "\n" "http://www.develia.org/projects.php?p=audacious#aosd\n" @@ -1558,151 +1008,37 @@ "http://neugierig.org/software/ghosd/\n" "\n" -#: src/bluetooth/agent.c:356 src/bluetooth/agent.c:397 -#, c-format -msgid "Pairing request for '%s'" -msgstr "Požiadavka o spárovanie pre '%s'" - -#: src/bluetooth/agent.c:544 -#, c-format -msgid "Authorization request for %s" -msgstr "Požiadavka o autorizáciu pre '%s'" - -#: src/bluetooth/agent.c:728 -#, c-format -msgid "Created bonding with %s" -msgstr "Vytvorené prepojenie s %s" - -#: src/bluetooth/agent.c:756 -#, c-format -msgid "Removed bonding with %s" -msgstr "Odstránené prepojenie s %s" - -#: src/bluetooth/agent.c:808 -msgid "Device has been switched off" -msgstr "Zariadenie bolo vypnuté" - -#: src/bluetooth/agent.c:811 -msgid "Device has been made non-discoverable" -msgstr "Zariadenie už nebude zistiteľné" - -#: src/bluetooth/agent.c:813 -msgid "Device has been made connectable" -msgstr "K zariadeniu sa bude môcÅ¥ pripájaÅ¥" - -#: src/bluetooth/agent.c:815 -msgid "Device has been made discoverable" -msgstr "Zariadenie bude zistiteľné" - -#: src/bluetooth/agent.c:817 -msgid "Device has been made limited discoverable" -msgstr "Zariadenie bude obmedzene zistiteľné" - -#: src/bluetooth/agent.c:819 -msgid "Device has been switched into pairing mode" -msgstr "Zariadenie bolo prepnuté do párovacieho režimu" - -#: src/bluetooth/bluetooth.c:117 -msgid "Bluetooth headset support plugin" -msgstr "Modul podporujúci bluetooth slúchadlové súpravy" - -#: src/bluetooth/bluetooth.c:118 -msgid "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the " -"Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" -msgstr "" -"Podpora bluetooth slúchadlových súprav\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"Toto bol GSoC 2008 projekt. Veľká vÄaka patrí Tonymu Vroonovi a tímu " -"Audacious\n" -"\n" -"Ak sa rozhodnete používaÅ¥ AVRCP budete musieÅ¥ do jadra zaviesÅ¥ modul " -"uinput.\n" -"TlaÄítka súpravy sa budú tváriÅ¥ ako normálne multimediálne klávesy\n" -"a môžu byÅ¥ nastavené pomocou modulu „Globálne klávesové skratky“\n" -"alebo inými nástrojmi, ktoré poskytuje váš správca okien\n" - -#: src/bluetooth/gui.c:148 -msgid "Producer" -msgstr "Výrobca" - -#: src/bluetooth/gui.c:221 -msgid "Available Headsets" -msgstr "Dostupné slúchadlové súpravy" - -#: src/bluetooth/gui.c:224 -msgid "Current Headset" -msgstr "Aktuálna slúchadlová súprava" - -#: src/bluetooth/gui.c:227 -msgid "_Refresh" -msgstr "_ObnoviÅ¥" - -#: src/bluetooth/gui.c:231 -msgid "_Connect" -msgstr "_SpojiÅ¥" - -#: src/bluetooth/gui.c:237 -msgid "_Close" -msgstr "_ZatvoriÅ¥" - -#: src/bluetooth/gui.c:274 -msgid "Class" -msgstr "Trieda" - -#: src/bluetooth/gui.c:278 -msgid "Address:" -msgstr "Adresa:" - -#: src/bluetooth/scan_gui.c:69 -msgid "Bonding finish!" -msgstr "Prepojenie vytvorené!" - -#: src/bluetooth/scan_gui.c:76 -msgid "No devices found!" -msgstr "Nebolo nájdené žiadne zariadenie." - -#: src/bluetooth/scan_gui.c:119 -msgid "Scanning..." -msgstr "Vyhľadávanie…" - -#: src/bluetooth/scan_gui.c:122 -msgid "Pairing..." -msgstr "Párovanie…" - -#: src/bluetooth/scan_gui.c:138 -msgid "Rescan" -msgstr "Znovu vyhľadaÅ¥" - -#: src/bluetooth/scan_gui.c:142 src/gtkui/ui_manager.c:66 -#: src/gtkui/ui_manager.c:67 src/hotkey/gui.c:71 src/skins/ui_manager.c:167 -#: src/skins/ui_manager.c:168 -msgid "Play" -msgstr "PrehraÅ¥" - #: src/blur_scope/config.c:73 msgid "Blur Scope: Color selection" msgstr "Blur Scope: Výber farby" -#: src/blur_scope/config.c:83 src/jack/configure.c:111 +#: src/blur_scope/config.c:83 src/jack/configure.c:106 msgid "Options:" msgstr "Možnosti:" -#: src/cdaudio-ng/cdaudio-ng.c:278 +#: src/bs2b/plugin.c:157 +msgid "Bauer stereophonic-to-binaural Preferences" +msgstr "Predvoľby Bauer stereophonic-to-binaural" + +#: src/bs2b/plugin.c:168 +msgid "Feed level:" +msgstr "Úroveň zdroja:" + +#: src/bs2b/plugin.c:182 +msgid "Cut frequency:" +msgstr "Frekvencia pre vystrihnutie:" + +#: src/bs2b/plugin.c:196 +msgid "Presets:" +msgstr "Predvoľby:" + +#: src/cdaudio-ng/cdaudio-ng.c:242 msgid "About Audio CD Plugin" msgstr "O module zvukových CD" -#: src/cdaudio-ng/cdaudio-ng.c:279 +#: src/cdaudio-ng/cdaudio-ng.c:243 msgid "" -"Copyright (c) 2007, by Calin Crisan and The Audacious " -"Team.\n" +"Copyright (c) 2007, by Calin Crisan and The Audacious Team.\n" "\n" "Many thanks to libcdio developers \n" "\tand to libcddb developers .\n" @@ -1715,8 +1051,7 @@ msgstr "" "Copyright (c) 2007, Calin Crisan a tím Audacious.\n" "\n" -"Veľká vÄaka patrí vývojárom libcdio a " -"libcddb .\n" +"Veľká vÄaka patrí vývojárom libcdio a libcddb .\n" "\n" "Taktiež Äakujem Tonymu Vroonovi za rady a vedenie.\n" "\n" @@ -1724,124 +1059,153 @@ "\n" "Copyright 2009 John Lindgren" -#: src/cdaudio-ng/configure.c:155 +#: src/cdaudio-ng/cdaudio-ng.c:552 +msgid "Audio CD" +msgstr "Zvukové CD" + +#: src/cdaudio-ng/cdaudio-ng.c:924 +msgid "Drive is empty." +msgstr "Mechanika je prázdna." + +#: src/cdaudio-ng/cdaudio-ng.c:926 +msgid "Unsupported disk type." +msgstr "Nepodporovaný typ disku." + +#: src/cdaudio-ng/configure.c:148 msgid "CD Audio Plugin Configuration" msgstr "Nastavenie modulu zvukových CD" -#: src/cdaudio-ng/configure.c:167 +#: src/cdaudio-ng/configure.c:160 msgid "Digital audio extraction" msgstr "Digitálne získane zvuku" -#: src/cdaudio-ng/configure.c:172 +#: src/cdaudio-ng/configure.c:165 msgid "Title information" msgstr "Informácie o titule" -#: src/cdaudio-ng/configure.c:190 +#: src/cdaudio-ng/configure.c:176 msgid "Disc speed:" msgstr "RýchlosÅ¥ disku:" -#: src/cdaudio-ng/configure.c:198 +#: src/cdaudio-ng/configure.c:184 msgid "Use cd-text if available" msgstr "Ak je k dispozícii, použiÅ¥ cd-text" -#: src/cdaudio-ng/configure.c:205 +#: src/cdaudio-ng/configure.c:191 msgid "Use CDDB if available" msgstr "Ak je k dispozícii, použiÅ¥ CDDB" -#: src/cdaudio-ng/configure.c:211 +#: src/cdaudio-ng/configure.c:197 msgid "Server: " msgstr "Server: " -#: src/cdaudio-ng/configure.c:215 +#: src/cdaudio-ng/configure.c:201 msgid "Path: " msgstr "Cesta: " -#: src/cdaudio-ng/configure.c:219 +#: src/cdaudio-ng/configure.c:205 msgid "Port: " msgstr "Port: " -#: src/cdaudio-ng/configure.c:232 +#: src/cdaudio-ng/configure.c:218 msgid "Use HTTP instead of CDDBP" msgstr "Namiesto CDDBP použiÅ¥ HTTP" -#: src/cdaudio-ng/configure.c:244 +#: src/cdaudio-ng/configure.c:230 msgid "Override default device: " msgstr "NahradiÅ¥ predvolené zariadenie: " -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:123 +#: src/echo_plugin/gui.c:118 src/jack/configure.c:141 src/null/null.c:107 +#: src/stereo_plugin/stereo.c:118 +msgid "Ok" +msgstr "OK" + +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Play CD" msgstr "PrehraÅ¥ CD" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Add CD" msgstr "PridaÅ¥ CD" -#: src/compressor/plugin.c:58 +#: src/compressor/plugin.c:63 msgid "About Dynamic Range Compression Plugin" msgstr "O module Kompresia dynamického rozsahu" -#: src/compressor/plugin.c:91 +#: src/compressor/plugin.c:95 msgid "Dynamic Range Compressor Preferences" msgstr "Nastavenia kompresie dynamického rozsahu" -#: src/compressor/plugin.c:103 -msgid "Target volume:" -msgstr "Cieľová hlasitosÅ¥:" - -#: src/compressor/plugin.c:116 -msgid "Effect strength:" -msgstr "Sila efektu:" +#: src/compressor/plugin.c:107 +msgid "Center volume:" +msgstr "Stredná hlasitosÅ¥:" + +#: src/compressor/plugin.c:120 +msgid "Dynamic range:" +msgstr "Dynamický rozsah:" -#: src/console/configure.c:137 +#: src/console/configure.c:136 msgid "Game Console Music Decoder" msgstr "Dekodér konzolovej hudby" -#: src/console/configure.c:171 +#: src/console/configure.c:153 +msgid "General" +msgstr "VÅ¡eobecné" + +#: src/console/configure.c:155 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "Prehrávanie" + +#: src/console/configure.c:170 msgid "Bass:" msgstr "Hĺbky:" -#: src/console/configure.c:175 src/console/configure.c:186 -#: src/console/configure.c:207 +#: src/console/configure.c:174 src/console/configure.c:185 +#: src/console/configure.c:206 msgid "secs" msgstr "s" -#: src/console/configure.c:182 +#: src/console/configure.c:181 msgid "Treble:" msgstr "Výšky:" -#: src/console/configure.c:203 +#: src/console/configure.c:202 msgid "Default song length:" msgstr "Predvolená dĺžka skladby:" -#: src/console/configure.c:209 src/modplug/gui/interface.cxx:269 -#: src/sid/xs_interface.c:666 +#: src/console/configure.c:208 msgid "Resampling" msgstr "Prevzorkovanie" -#: src/console/configure.c:215 +#: src/console/configure.c:214 msgid "Enable audio resampling" msgstr "PovoliÅ¥ prevzorkovanie zvuku" -#: src/console/configure.c:230 +#: src/console/configure.c:229 msgid "Resampling rate:" msgstr "PrevzorkovaÅ¥ na:" -#: src/console/configure.c:245 +#: src/console/configure.c:233 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:244 msgid "SPC" msgstr "SPC" -#: src/console/configure.c:246 +#: src/console/configure.c:245 msgid "Ignore length from SPC tags" msgstr "IgnorovaÅ¥ dĺžku z SPC znaÄiek" -#: src/console/configure.c:247 +#: src/console/configure.c:246 msgid "Increase reverb" msgstr "PredĺžiÅ¥ dozvuk" -#: src/console/configure.c:272 +#: src/console/configure.c:271 msgid "" -"The default song length, expressed in seconds, is used for songs that do not " -"provide length information (i.e. looping tracks)." +"The default song length, expressed in seconds, is used for songs that do not" +" provide length information (i.e. looping tracks)." msgstr "" "Predvolená dĺžka skladby, vyjadrená v sekundách, je použitá pri skladbách, " "ktoré neposkytujú informáciu o dĺžke (napr. skladby s opakovaním)." @@ -1862,53 +1226,51 @@ "Pre Audacious upravili: William Pitcock ,\n" " Shay Green \n" -#: src/crossfade/plugin.c:51 +#: src/crossfade/plugin.c:60 msgid "About Crossfade" msgstr "O module Prelínanie (crossfade)" -#: src/crossfade/plugin.c:84 +#: src/crossfade/plugin.c:92 msgid "Crossfade Preferences" msgstr "Predvoľby prelínania" -#: src/crossfade/plugin.c:95 +#: src/crossfade/plugin.c:104 msgid "Overlap (in seconds):" msgstr "Presah (v sekundách):" -#: src/crossfade/plugin.c:129 src/crossfade/plugin.c:137 +#: src/crossfade/plugin.c:135 src/crossfade/plugin.c:141 msgid "Crossfade Error" msgstr "Chyba prelínania" -#: src/crossfade/plugin.c:130 +#: src/crossfade/plugin.c:135 msgid "" "Crossfading failed because the songs had a different number of channels." msgstr "Prelínanie zlyhalo, pretože skladby majú rôzny poÄet kanálov." -#: src/crossfade/plugin.c:138 +#: src/crossfade/plugin.c:143 msgid "" "Crossfading failed because the songs had different sample rates.\n" "\n" -"You can use the Sample Rate Converter effect to resample the songs to the " -"same rate." +"You can use the Sample Rate Converter effect to resample the songs to the same rate." msgstr "" "Prelínanie zlyhalo, pretože skladby majú rozdielnu vzorkovaciu frekvenciu:\n" "\n" -"Na prevzorkovanie skladieb na rovnakú frekvenciu môžete použiÅ¥ efektový " -"modul „Konvertor vzorkovacej frekvencie“." +"Na prevzorkovanie skladieb na rovnakú frekvenciu môžete použiÅ¥ efektový modul „Konvertor vzorkovacej frekvencie“." -#: src/crystalizer/crystalizer.c:104 +#: src/crystalizer/crystalizer.c:100 msgid "Configure Crystalizer" msgstr "NastaviÅ¥ Crystalizer" -#: src/crystalizer/crystalizer.c:106 src/stereo_plugin/stereo.c:102 +#: src/crystalizer/crystalizer.c:102 src/stereo_plugin/stereo.c:97 msgid "Effect intensity:" msgstr "Sila efektu:" -#: src/crystalizer/crystalizer.c:143 src/echo_plugin/gui.c:137 -#: src/modplug/gui/interface.cxx:709 src/stereo_plugin/stereo.c:139 +#: src/crystalizer/crystalizer.c:136 src/echo_plugin/gui.c:131 +#: src/stereo_plugin/stereo.c:131 msgid "Apply" msgstr "PoužiÅ¥" -#: src/echo_plugin/gui.c:14 +#: src/echo_plugin/gui.c:15 msgid "" "Echo Plugin\n" "By Johan Levin 1999.\n" @@ -1920,680 +1282,245 @@ "\n" "Priestorovú ozvenu pridal Carl van Shaik, 1999" -#: src/echo_plugin/gui.c:26 +#: src/echo_plugin/gui.c:27 msgid "About Echo Plugin" msgstr "O module ozveny" -#: src/echo_plugin/gui.c:69 +#: src/echo_plugin/gui.c:67 msgid "Configure Echo" msgstr "NastaviÅ¥ ozvenu" -#: src/echo_plugin/gui.c:82 +#: src/echo_plugin/gui.c:83 msgid "Delay: (ms)" msgstr "Oneskorenie: (ms)" -#: src/echo_plugin/gui.c:87 +#: src/echo_plugin/gui.c:88 msgid "Feedback: (%)" msgstr "Spätná väzba: (%)" -#: src/echo_plugin/gui.c:92 +#: src/echo_plugin/gui.c:93 msgid "Volume: (%)" msgstr "HlasitosÅ¥: (%)" -#: src/evdev-plug/ed.c:60 -msgid "Playback->Play" -msgstr "Prehrávanie->PrehraÅ¥" - -#: src/evdev-plug/ed.c:61 -msgid "Playback->Stop" -msgstr "Prehrávanie->ZastaviÅ¥" - -#: src/evdev-plug/ed.c:62 -msgid "Playback->Pause" -msgstr "Prehrávanie->PozastaviÅ¥" - -#: src/evdev-plug/ed.c:63 -msgid "Playback->Prev" -msgstr "Prehrávanie->Predchádzajúca" - -#: src/evdev-plug/ed.c:64 -msgid "Playback->Next" -msgstr "Prehrávanie->ÄŽalÅ¡ia" - -#: src/evdev-plug/ed.c:65 -msgid "Playback->Eject" -msgstr "Prehrávanie->Vysunúť" - -#: src/evdev-plug/ed.c:67 -msgid "Playlist->Repeat" -msgstr "Zoznam skladieb->OpakovaÅ¥" - -#: src/evdev-plug/ed.c:68 -msgid "Playlist->Shuffle" -msgstr "Zoznam skladieb->PremieÅ¡aÅ¥ zoznam" - -#: src/evdev-plug/ed.c:70 -msgid "Volume->Up_5" -msgstr "HlasitosÅ¥->ZvýšiÅ¥ o 5" - -#: src/evdev-plug/ed.c:71 -msgid "Volume->Down_5" -msgstr "HlasitosÅ¥->ZnížiÅ¥ o 5" - -#: src/evdev-plug/ed.c:72 -msgid "Volume->Up_10" -msgstr "HlasitosÅ¥->ZvýšiÅ¥ o 10" - -#: src/evdev-plug/ed.c:73 -msgid "Volume->Down_10" -msgstr "HlasitosÅ¥->ZnížiÅ¥ o 10" - -#: src/evdev-plug/ed.c:74 -msgid "Volume->Mute" -msgstr "HlasitosÅ¥->StlmiÅ¥" - -#: src/evdev-plug/ed.c:76 -msgid "Window->Main" -msgstr "Okno->Hlavné" - -#: src/evdev-plug/ed.c:77 -msgid "Window->Playlist" -msgstr "Okno->Zoznam skladieb" - -#: src/evdev-plug/ed.c:78 -msgid "Window->Equalizer" -msgstr "Okno->Ekvalizér" - -#: src/evdev-plug/ed.c:79 -msgid "Window->JumpToFile" -msgstr "Okno->PrejsÅ¥ na súbor" - -#: src/evdev-plug/ed_internals.c:94 -#, c-format -msgid "" -"event-device-plugin: unable to open device file %s , skipping this device; " -"check that the file exists and that you have read permission for it\n" -msgstr "" -"event-device-plugin: zariadenie %s sa nedá otvoriÅ¥, toto zariadenie sa " -"vynechá; skontrolujte, Äi súbor zariadenia existuje a Äi máte právo ho " -"ÄítaÅ¥\n" - -#: src/evdev-plug/ed_internals.c:103 +#: src/ffaudio/ffaudio-core.c:798 #, c-format msgid "" -"event-device-plugin: unable to create a io_channel for device file %s ," -"skipping this device\n" +"Multi-format audio decoding plugin for Audacious based on\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious plugin by:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" msgstr "" -"event-device-plugin: vstupno-výstupný kanál pre zariadenie %s sa nedá " -"vytvoriÅ¥, zariadenie bude vynechané\n" +"Multi-formátový dekódujúci modul zvuku pre Audacious založený na multimediálnom frameworku FFmpeg (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Modul do Audacious:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" -#: src/evdev-plug/ed_internals.c:342 -msgid "" -"event-device-plugin: unable to open /proc/bus/input/devices , automatic " -"detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: súbor /proc/bus/input/devices sa nedá otvoriÅ¥, " -"automatické detekcia udalostných zariadení nebude fungovaÅ¥.\n" +#: src/ffaudio/ffaudio-core.c:812 +msgid "About FFaudio Plugin" +msgstr "O module FFaudio" -#: src/evdev-plug/ed_internals.c:351 -msgid "" -"event-device-plugin: unable to open a io_channel for /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: vstupno-výstupný kanál pre /proc/bus/input/devices sa " -"nedá otvoriÅ¥, automatické detekcia udalostných zariadení nebude fungovaÅ¥.\n" +#: src/filewriter/filewriter.c:166 +msgid "About FileWriter-Plugin" +msgstr "O module FileWriter" -#: src/evdev-plug/ed_internals.c:361 -msgid "" -"event-device-plugin: an error occurred while reading /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: pri Äítaní /proc/bus/input/devices nastala chyba, " -"automatické detekcia udalostných zariadení nebude fungovaÅ¥.\n" +#: src/filewriter/filewriter.c:461 +msgid "File Writer Configuration" +msgstr "Nastavenie zápisu do súboru" -#: src/evdev-plug/ed_internals.c:424 -#, c-format -msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" -msgstr "" -"event-device-plugin: zariadenie %s nebolo nájdené v /dev/input; zariadenie " -"bude vynechané.\n" +#: src/filewriter/filewriter.c:473 +msgid "Output file format:" +msgstr "Formát výstupného súboru:" -#: src/evdev-plug/ed_internals.c:489 src/evdev-plug/ed_internals.c:583 -#, c-format -msgid "" -"event-device-plugin: unable to load config file %s , default settings will " -"be used.\n" -msgstr "" -"event-device-plugin: konfiguraÄný súbor %s sa nedá naÄítaÅ¥,budú použité " -"predvolené nastavenia.\n" +#: src/filewriter/filewriter.c:491 +msgid "Configure" +msgstr "NastaviÅ¥" -#: src/evdev-plug/ed_internals.c:535 -#, c-format -msgid "" -"event-device-plugin: incomplete information in config file for device \"%s" -"\" , skipping.\n" -msgstr "" -"event-device-plugin: v konfiguraÄnom súbore sú neúplné informácie pre " -"zariadenie „%s“, zariadenie bude vynechané\n" +#: src/filewriter/filewriter.c:506 +msgid "Save into original directory" +msgstr "UkladaÅ¥ do pôvodného adresára" -#: src/evdev-plug/ed_internals.c:604 src/evdev-plug/ed_internals.c:936 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_active value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: konfigurácia: nedá sa získaÅ¥ hodnota is_active pre " -"zariadenie „%s“, zariadenie bude vynechané\n" +#: src/filewriter/filewriter.c:511 +msgid "Save into custom directory" +msgstr "UkladaÅ¥ do vlastného adresára" -#: src/evdev-plug/ed_internals.c:840 -#, c-format -msgid "" -"event-device-plugin: unable to access local directory %s , settings will not " -"be saved.\n" -msgstr "" -"event-device-plugin: prístup k lokálnemu adresáru %s bol odoprený, " -"nastavenia nebudú uložené.\n" +#: src/filewriter/filewriter.c:521 +msgid "Output file folder:" +msgstr "PrieÄinok s výstupnými súbormi:" -#: src/evdev-plug/ed_internals.c:890 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get filename value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: konfigurácia: hodnotu filename pre zariadenie „%s“ sa " -"nepodarilo získaÅ¥, zariadenie bude vynechané\n" +#: src/filewriter/filewriter.c:525 +msgid "Pick a folder" +msgstr "VybraÅ¥ prieÄinok" -#: src/evdev-plug/ed_internals.c:906 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get phys value for device \"%s" -"\", skipping it.\n" -msgstr "" -"event-device-plugin: konfigurácia: hodnotu phys pre zariadenie „%s“ sa " -"nepodarilo získaÅ¥, zariadenie bude vynechané\n" +#: src/filewriter/filewriter.c:544 +msgid "Get filename from:" +msgstr "ZískaÅ¥ názov súboru z:" -#: src/evdev-plug/ed_internals.c:922 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_custom value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: konfigurácia: hodnotu is_custom pre zariadenie „%s“ sa " -"nepodarilo získaÅ¥, zariadenie bude vynechané\n" +#: src/filewriter/filewriter.c:547 +msgid "original file tags" +msgstr "pôvodných znaÄiek v súbore" -#: src/evdev-plug/ed_internals.c:946 -#, c-format -msgid "" -"event-device-plugin: configuration, unexpected value for device \"%s\", " -"skipping it.\n" -msgstr "" -"event-device-plugin: konfigurácia: neoÄakávaná hodnota pre zariadenie „%s“, " -"zariadenie bude vynechané\n" +#: src/filewriter/filewriter.c:553 +msgid "original filename" +msgstr "názvu pôvodného súboru" -#: src/evdev-plug/ed_ui.c:212 -msgid "Detected" -msgstr "Nájdené" +#: src/filewriter/filewriter.c:563 +msgid "Don't strip file name extension" +msgstr "NeodstraňovaÅ¥ príponu názvu súboru" -#: src/evdev-plug/ed_ui.c:217 -msgid "Custom" -msgstr "Vlastné" +#: src/filewriter/filewriter.c:578 +msgid "Prepend track number to filename" +msgstr "Na zaÄiatok názvu súboru pridaÅ¥ Äíslo stopy" -#: src/evdev-plug/ed_ui.c:223 -msgid "Not Detected" -msgstr "Nenájdené" +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:765 +msgid "Auto" +msgstr "Auto" -#: src/evdev-plug/ed_ui.c:275 src/evdev-plug/ed_ui.c:411 -#: src/evdev-plug/ed_ui.c:874 -msgid "Information" -msgstr "Podrobnosti" +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" +msgstr "Joint Stereo" -#: src/evdev-plug/ed_ui.c:276 -msgid "" -"Cannot open bindings window for a not-detected device.\n" -"Ensure that the device has been correctly plugged in." -msgstr "" -"Okno s prepojeniami pre nenájdené zariadenie sa nedá otvoriÅ¥.\n" -"Uistite sa, že zariadenie je správne pripojené." +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Stereo" +msgstr "Stereo" -#: src/evdev-plug/ed_ui.c:319 -msgid "Error" -msgstr "Chyba" +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Mono" +msgstr "Mono" -#: src/evdev-plug/ed_ui.c:320 -msgid "" -"Unable to open selected device.\n" -"Please check read permissions on device file." -msgstr "" -"Zvolené zariadenie sa nedá otvoriÅ¥.\n" -"Skontrolujte prosím, práva na Äítanie tohoto zariadenia." +#: src/filewriter/mp3.c:706 +msgid "MP3 Configuration" +msgstr "Nastavenie MP3" -#: src/evdev-plug/ed_ui.c:341 -msgid "EvDev-Plug - Add custom device" -msgstr "EvDev-Plug - PridaÅ¥ vlastné zariadenie" +#: src/filewriter/mp3.c:729 +msgid "Algorithm Quality:" +msgstr "Kvalita algoritmu:" -#: src/evdev-plug/ed_ui.c:353 -msgid "" -"EvDev-Plug tries to automatically detect and update information about\n" -"event devices available on the system.\n" -"However, if auto-detect doesn't work for your system, or you have event\n" -"devices in a non-standard location (currently they're only searched in\n" -"/dev/input/ ), you may want to add a custom device, explicitly specifying\n" -"name and device file." -msgstr "" -"EvDev-Plug sa pokúsi automaticky zistiÅ¥ udalostné zariadenia dostupné\n" -"v systéme a aktualizovaÅ¥ o nich informácie.\n" -"Ak autodetekcia na vaÅ¡om systéme nepracuje správne, alebo máte udalostné\n" -"zariadenia v neÅ¡tandardnom adresári (v súÄastnosti je prehľadávaný iba " -"adresár\n" -"/dev/input), môžete pridaÅ¥ vlastné zariadenia." +#: src/filewriter/mp3.c:754 +msgid "Output Samplerate:" +msgstr "Výstupná vzorkovacia frekvencia:" -#: src/evdev-plug/ed_ui.c:361 -msgid "Device name:" -msgstr "Názov zariadenia:" +#: src/filewriter/mp3.c:782 +msgid "(Hz)" +msgstr "(Hz)" -#: src/evdev-plug/ed_ui.c:365 -msgid "Device file:" -msgstr "Súbor zariadenia:" +#: src/filewriter/mp3.c:789 +msgid "Bitrate / Compression ratio:" +msgstr "Dátový tok / kompresný pomer:" -#: src/evdev-plug/ed_ui.c:404 -msgid "(custom)" -msgstr "(vlastné)" - -#: src/evdev-plug/ed_ui.c:412 -msgid "" -"Please specify both name and filename.\n" -"Filename must be specified with absolute path." -msgstr "" -"Prosím zadajte názov a názov súboru.\n" -"Názov súboru musí byÅ¥ uvedené s absolútnou cestou." - -#: src/evdev-plug/ed_ui.c:447 -msgid "Do you want to remove the existing configuration for selected device?\n" -msgstr "Prajete si odstrániÅ¥ existujúce nastavenie pre zvolené zariadenie?\n" - -#: src/evdev-plug/ed_ui.c:466 -msgid "Do you want to remove the selected custom device?\n" -msgstr "Prajete si odstrániÅ¥ zvolené vlastné zariadenie?\n" - -#: src/evdev-plug/ed_ui.c:612 -msgid "EvDev-Plug - Configuration" -msgstr "EvDev-Plug - Nastavenie" - -#: src/evdev-plug/ed_ui.c:651 -msgid "Active" -msgstr "Aktívne" - -#: src/evdev-plug/ed_ui.c:655 src/sun/configure.c:486 -msgid "Status" -msgstr "Stav" - -#: src/evdev-plug/ed_ui.c:664 -msgid "Device Name" -msgstr "Názov zariadenia" - -#: src/evdev-plug/ed_ui.c:668 -msgid "Device File" -msgstr "Súbor zariadenia" - -#: src/evdev-plug/ed_ui.c:672 -msgid "Device Address" -msgstr "Adresa zariadenia" - -#: src/evdev-plug/ed_ui.c:689 -msgid "_Bindings" -msgstr "_Prepojenia" - -#: src/evdev-plug/ed_ui.c:838 -msgid "" -"Press a key of your device to bind it;\n" -"if no key is pressed in five seconds, this window\n" -"will close without binding changes." -msgstr "" -"Na zariadení stlaÄte kláves, ktorý si želáte prepojiÅ¥.\n" -"Ak nebude stlaÄený žiadny kláves bude toto okno\n" -"automaticky o päť sekúnd zatvorené." - -#: src/evdev-plug/ed_ui.c:875 -msgid "" -"This input event has been already assigned.\n" -"\n" -"It's not possible to assign multiple actions to the same input event " -"(although it's possible to assign the same action to multiple events)." -msgstr "" -"Táto vstupná udalosÅ¥ už bola priradená.\n" -"\n" -"Nie je možné priradiÅ¥ viac akcií rovnakej vstupnej udalosti (je ale možné " -"priradiÅ¥ jednu akciu viacerým vstupným udalostiam)." - -#: src/evdev-plug/ed_ui.c:1323 -msgid "EvDev-Plug - Bindings Configuration" -msgstr "EvDev-Plug - Nastavenie prepojení" - -#: src/evdev-plug/ed_ui.c:1363 -msgid "Name: " -msgstr "Názov: " - -#: src/evdev-plug/ed_ui.c:1372 -msgid "Filename: " -msgstr "Názov súboru: " - -#: src/evdev-plug/ed_ui.c:1381 -msgid "Phys.Address: " -msgstr "Fyzická adresa: " - -#: src/evdev-plug/ed_ui.c:1460 -msgid "EvDev-Plug - about" -msgstr "O module EvDev-Plug" - -#: src/evdev-plug/ed_ui.c:1491 -msgid "" -"\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"written by Giacomo Lozito\n" -msgstr "" -"\n" -"diaľkové ovládanie prehrávaÄa pomocou udalostných zariadení\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"napísal Giacomo Lozito\n" - -#: src/ffaudio/ffaudio-core.c:662 -#, fuzzy, c-format -msgid "" -"Multi-format audio decoding plugin for Audacious based on\n" -"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" -"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" -"\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" -"Audacious plugin by:\n" -" William Pitcock ,\n" -" Matti Hämäläinen \n" -msgstr "" -"Viacformátový modul dekódujúci zvuk pre Audacious založený\n" -"na multimediálnom systéme FFmpeg (http://www.ffmpeg.org/)\n" -"Copyright (c) 2000-2009 Fabrice Bellard, ai.\n" -"\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" -"Podporované formáty: %s\n" -"\n" -"Modul pre Audacious napísali:\n" -" William Pitcock ,\n" -" Matti Hämäläinen \n" - -#: src/ffaudio/ffaudio-core.c:675 -msgid "About FFaudio Plugin" -msgstr "O module FFaudio" - -#: src/filewriter/filewriter.c:180 -msgid "About FileWriter-Plugin" -msgstr "O module FileWriter" - -#: src/filewriter/filewriter.c:181 -msgid "" -"FileWriter-Plugin\n" -"\n" -"This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" -"Modul FileWriter\n" -"\n" -"Tento program je slobodný softvér. Môžete ho šíriÅ¥ a/alebo upravovaÅ¥ podľa " -"ustanovení GNU GPL, vydávanej nadáciou Free Software Foundation; buÄ vo " -"verzii 2 tejto licencie, alebo (podľa vášho uváženia) v ľubovoľnej novÅ¡ej " -"verzii.\n" -"\n" -"Tento program je rozÅ¡irovaný v nádeji, že bude užitoÄný, ale BEZ AKEJKOĽVEK " -"ZÃRUKY. Neposkytujú sa ani odvodené záruky PREDAJNOSTI alebo VHODNOSTI PRE " -"URÄŒITà ÚČEL. ÄŽalÅ¡ie podrobnosti hľadajte v GNU GPL.\n" -"\n" -"Kópiu GNU GPL ste mali dostaÅ¥ spolu s týmto programom. Ak sa tak nestalo, " -"požiadajte o ňu Free Software Foundation, Inc., 51 Franklin Street, Fifth " -"Floor, Boston, MA 02110-1301, USA." - -#: src/filewriter/filewriter.c:466 -msgid "File Writer Configuration" -msgstr "Nastavenie zápisu do súboru" - -#: src/filewriter/filewriter.c:478 -msgid "Output file format:" -msgstr "Formát výstupného súboru:" - -#: src/filewriter/filewriter.c:496 src/ladspa/ladspa.c:1058 -msgid "Configure" -msgstr "NastaviÅ¥" - -#: src/filewriter/filewriter.c:511 -msgid "Save into original directory" -msgstr "UkladaÅ¥ do pôvodného adresára" - -#: src/filewriter/filewriter.c:516 -msgid "Save into custom directory" -msgstr "UkladaÅ¥ do vlastného adresára" - -#: src/filewriter/filewriter.c:528 -msgid "Output file folder:" -msgstr "PrieÄinok s výstupnými súbormi:" - -#: src/filewriter/filewriter.c:532 -msgid "Pick a folder" -msgstr "VybraÅ¥ prieÄinok" - -#: src/filewriter/filewriter.c:551 -msgid "Get filename from:" -msgstr "ZískaÅ¥ názov súboru z:" - -#: src/filewriter/filewriter.c:554 -msgid "original file tags" -msgstr "pôvodných znaÄiek v súbore" - -#: src/filewriter/filewriter.c:560 -msgid "original filename" -msgstr "názvu pôvodného súboru" - -#: src/filewriter/filewriter.c:570 -msgid "Don't strip file name extension" -msgstr "NeodstraňovaÅ¥ príponu názvu súboru" - -#: src/filewriter/filewriter.c:574 -msgid "" -"If enabled, the extension from the original filename will not be stripped " -"before adding the new file extension to the end." -msgstr "" -"Ak je povolené, prípona z názvu pôvodného súboru nebude pred pridaním novej " -"prípony odstránená." - -#: src/filewriter/filewriter.c:588 -msgid "Prepend track number to filename" -msgstr "Na zaÄiatok názvu súboru pridaÅ¥ Äíslo stopy" - -#: src/filewriter/mp3.c:710 -msgid "MP3 Configuration" -msgstr "Nastavenie MP3" - -#: src/filewriter/mp3.c:737 -msgid "Algorithm Quality:" -msgstr "Kvalita algoritmu:" - -#: src/filewriter/mp3.c:759 -msgid "" -"best/slowest:0;\n" -"worst/fastest:9;\n" -"recommended:2;\n" -"default:5;" -msgstr "" -"najlepší/najpomalší:0;\n" -"najhorší/najrýchlejší:9;\n" -"odporúÄaná:2;\n" -"predvolená:5;" - -#: src/filewriter/mp3.c:767 -msgid "Output Samplerate:" -msgstr "Výstupná vzorkovacia frekvencia:" - -#: src/filewriter/mp3.c:778 src/filewriter/mp3.c:919 -msgid "Auto" -msgstr "Auto" - -#: src/filewriter/mp3.c:800 -msgid "(Hz)" -msgstr "(Hz)" - -#: src/filewriter/mp3.c:812 -msgid "Bitrate / Compression ratio:" -msgstr "Dátový tok / kompresný pomer:" - -#: src/filewriter/mp3.c:838 +#: src/filewriter/mp3.c:813 msgid "Bitrate (kbps):" msgstr "Dátový tok (kb/s):" -#: src/filewriter/mp3.c:879 +#: src/filewriter/mp3.c:846 msgid "Compression ratio:" msgstr "Kompresný pomer:" -#: src/filewriter/mp3.c:909 +#: src/filewriter/mp3.c:870 msgid "Audio Mode:" msgstr "Zvukový režim:" -#: src/filewriter/mp3.c:924 -msgid "Joint-Stereo" -msgstr "Joint-Stereo" - -#: src/filewriter/mp3.c:967 +#: src/filewriter/mp3.c:895 msgid "Misc:" msgstr "Rôzne:" -#: src/filewriter/mp3.c:978 +#: src/filewriter/mp3.c:906 msgid "Enforce strict ISO complience" msgstr "VynútiÅ¥ prísnu zhodu s ISO" -#: src/filewriter/mp3.c:989 +#: src/filewriter/mp3.c:917 msgid "Error protection" msgstr "Ochrana pred chybami" -#: src/filewriter/mp3.c:1001 -msgid "Adds 16 bit checksum to every frame" -msgstr "Ku každému rámcu pridaÅ¥ 16 bitový kontrolný súÄet" - -#: src/filewriter/mp3.c:1006 src/filewriter/vorbis.c:247 -#: src/modplug/gui/interface.cxx:320 +#: src/filewriter/mp3.c:929 src/filewriter/vorbis.c:247 msgid "Quality" msgstr "Kvalita" -#: src/filewriter/mp3.c:1018 +#: src/filewriter/mp3.c:939 msgid "Enable VBR/ABR" msgstr "PovoliÅ¥ VBR/ABR" -#: src/filewriter/mp3.c:1030 +#: src/filewriter/mp3.c:949 msgid "Type:" msgstr "Typ:" -#: src/filewriter/mp3.c:1041 -msgid "Variable bitrate" -msgstr "Variabilný dátový tok" - -#: src/filewriter/mp3.c:1053 -msgid "Average bitrate" -msgstr "Priemerný dátový tok" - -#: src/filewriter/mp3.c:1067 +#: src/filewriter/mp3.c:982 msgid "VBR Options:" msgstr "Nastavenia VBR:" -#: src/filewriter/mp3.c:1083 +#: src/filewriter/mp3.c:998 msgid "Minimum bitrate (kbps):" msgstr "Najmenší dátový tok (kb/s):" -#: src/filewriter/mp3.c:1119 +#: src/filewriter/mp3.c:1025 msgid "Maximum bitrate (kbps):" msgstr "NajväÄší dátový tok (kb/s):" -#: src/filewriter/mp3.c:1151 +#: src/filewriter/mp3.c:1048 msgid "Strictly enforce minimum bitrate" msgstr "Prísne vynucovaÅ¥ najmenší dátový tok" -#: src/filewriter/mp3.c:1153 -msgid "" -"For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/" -"mp3 player)" -msgstr "" -"Pre použitie v prehrávaÄoch, ktoré nepodporujú mp3 s nízkym dátovým tokom " -"(prehrávaÄ Apex AD600-A DVD/MP3)" - -#: src/filewriter/mp3.c:1166 +#: src/filewriter/mp3.c:1060 msgid "ABR Options:" msgstr "Nastavenia ABR:" -#: src/filewriter/mp3.c:1176 +#: src/filewriter/mp3.c:1070 msgid "Average bitrate (kbps):" msgstr "Priemerný dátový tok (kb/s):" -#: src/filewriter/mp3.c:1213 +#: src/filewriter/mp3.c:1098 msgid "VBR quality level:" msgstr "Úroveň kvality VBR:" -#: src/filewriter/mp3.c:1228 -msgid "" -"highest:0;\n" -"lowest:9;\n" -"default:4;" -msgstr "" -"najvyÅ¡Å¡ia:0;\n" -"najnižšia:9;\n" -"predvolená:4;" - -#: src/filewriter/mp3.c:1236 +#: src/filewriter/mp3.c:1117 msgid "Don't write Xing VBR header" msgstr "NezapisovaÅ¥ hlaviÄku Xing VBR" -#: src/filewriter/mp3.c:1250 +#: src/filewriter/mp3.c:1131 msgid "VBR/ABR" msgstr "VBR/ABR" -#: src/filewriter/mp3.c:1262 +#: src/filewriter/mp3.c:1141 msgid "Frame params:" msgstr "Parametre rámcov:" -#: src/filewriter/mp3.c:1274 +#: src/filewriter/mp3.c:1153 msgid "Mark as copyright" msgstr "PridaÅ¥ oznaÄenie autorských práv" -#: src/filewriter/mp3.c:1285 +#: src/filewriter/mp3.c:1164 msgid "Mark as original" msgstr "PridaÅ¥ oznaÄenie originálu" -#: src/filewriter/mp3.c:1297 +#: src/filewriter/mp3.c:1176 msgid "ID3 params:" msgstr "Parametre ID3:" -#: src/filewriter/mp3.c:1308 +#: src/filewriter/mp3.c:1187 msgid "Force addition of version 2 tag" msgstr "VynútiÅ¥ pridanie znaÄiek verzie 2" -#: src/filewriter/mp3.c:1318 +#: src/filewriter/mp3.c:1197 msgid "Only add v1 tag" msgstr "PridávaÅ¥ iba znaÄky verzie 1" -#: src/filewriter/mp3.c:1325 +#: src/filewriter/mp3.c:1204 msgid "Only add v2 tag" msgstr "PridávaÅ¥ iba znaÄky verzie 2" -#: src/filewriter/mp3.c:1346 +#: src/filewriter/mp3.c:1225 msgid "Tags" msgstr "ZnaÄky" @@ -2605,11 +1532,11 @@ msgid "Quality level (0 - 10):" msgstr "Úroveň kvality (0-10):" -#: src/flacng/plugin.c:457 -msgid "FLAC Audio Plugin " -msgstr "Modul Flac Audio " +#: src/flacng/plugin.c:380 +msgid "About FLAC Audio Plugin" +msgstr "O module FLAC Audio" -#: src/flacng/plugin.c:458 +#: src/flacng/plugin.c:381 msgid "" "\n" "\n" @@ -2625,15 +1552,11 @@ "\n" "http://www.skytale.net/projects/bmp-flac2/" -#: src/flacng/plugin.c:464 -msgid "About FLAC Audio Plugin" -msgstr "O module FLAC Audio" - -#: src/gnomeshortcuts/gnomeshortcuts.c:306 +#: src/gnomeshortcuts/gnomeshortcuts.c:303 msgid "About Gnome Shortcut Plugin" msgstr "O module Klávesové skratky Gnome" -#: src/gnomeshortcuts/gnomeshortcuts.c:307 +#: src/gnomeshortcuts/gnomeshortcuts.c:304 msgid "" "Gnome Shortcut Plugin\n" "Let's you control the player with Gnome's shortcuts.\n" @@ -2647,528 +1570,483 @@ "Copyright (C) 2007-2008 Sascha Hlusiak \n" "\n" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:273 -msgid "Open Files" -msgstr "OtvoriÅ¥ súbory" - -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 -msgid "Add Files" -msgstr "PridaÅ¥ súbory" - -#: src/gntui/gntui.c:271 -msgid "Audacious2" -msgstr "Audacious2" - -#: src/gntui/gntui.c:312 -msgid "gnt interface" -msgstr "GNT rozhranie" - -#: src/gtkui/actions.c:257 src/skins/ui_main.c:818 -msgid "Can't jump to time when no track is being played.\n" -msgstr "KeÄ sa neprehráva žiadna skladba nie je možné prejsÅ¥ na Äas.\n" - -#: src/gtkui/actions.c:272 src/gtkui/ui_manager.c:204 -#: src/gtkui/ui_manager.c:205 src/skins/ui_main.c:833 -#: src/skins/ui_manager.c:410 src/skins/ui_manager.c:411 -msgid "Jump to Time" -msgstr "PrejsÅ¥ na Äas" +#: src/gtkui/columns.c:36 +msgid "Entry number" +msgstr "Číslo položky" -#: src/gtkui/actions.c:289 src/skins/ui_main.c:854 -msgid "minutes:seconds" -msgstr "minúty:sekundy" - -#: src/gtkui/actions.c:299 src/skins/ui_main.c:864 -msgid "Track length:" -msgstr "Dĺžka skladby:" +#: src/gtkui/columns.c:36 src/search-tool/search-tool.c:43 +msgid "Title" +msgstr "Názov" -#: src/gtkui/actions.c:610 src/skins/ui_playlist.c:648 -#, c-format -msgid "Error writing playlist \"%s\": %s" -msgstr "Chyba pri ukladaní zoznamu skladieb „%s“: %s" +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:42 +msgid "Artist" +msgstr "Umelec" + +#: src/gtkui/columns.c:37 +msgid "Year" +msgstr "Rok" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:43 +msgid "Album" +msgstr "Album" + +#: src/gtkui/columns.c:37 +msgid "Track" +msgstr "Stopa" + +#: src/gtkui/columns.c:37 +msgid "Queue position" +msgstr "Poradie vo fronte" + +#: src/gtkui/columns.c:38 +msgid "Length" +msgstr "Dĺžka" + +#: src/gtkui/columns.c:38 +msgid "File path" +msgstr "Cesta k súboru" -#: src/gtkui/actions.c:625 src/skins/ui_playlist.c:670 -#, c-format -msgid "%s already exist. Continue?" -msgstr "%s už existuje. PokraÄovaÅ¥?" +#: src/gtkui/columns.c:38 +msgid "File name" +msgstr "Názov súboru" -#: src/gtkui/actions.c:651 src/skins/ui_manager.c:214 -msgid "Export Playlist" -msgstr "ExportovaÅ¥ zoznam skladieb" +#: src/gtkui/columns.c:38 +msgid "Custom title" +msgstr "Vlastný názov" + +#: src/gtkui/columns.c:39 +msgid "Bitrate" +msgstr "Dátový tok" + +#: src/gtkui/columns.c:278 +msgid "Choose Columns" +msgstr "VybraÅ¥ stĺpce" + +#: src/gtkui/columns.c:292 +msgid "Available:" +msgstr "Dostupné:" + +#: src/gtkui/columns.c:326 +msgid "Chosen:" +msgstr "Vybrané:" + +#: src/gtkui/layout.c:122 +msgid "Dock at Left" +msgstr "UkotviÅ¥ vľavo" + +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "UkotviÅ¥ vpravo" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "UkotviÅ¥ hore" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "UkotviÅ¥ dole" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "UvolniÅ¥" + +#: src/gtkui/layout.c:123 src/ladspa/plugin.c:644 +msgid "Disable" +msgstr "ZakázaÅ¥" + +#: src/gtkui/menus.c:131 +msgid "_Open Files ..." +msgstr "_OtvoriÅ¥ súbory ..." + +#: src/gtkui/menus.c:132 +msgid "Open _URL ..." +msgstr "OtvoriÅ¥ _URL ..." + +#: src/gtkui/menus.c:133 +msgid "_Add Files ..." +msgstr "Prid_aÅ¥ súbory ..." + +#: src/gtkui/menus.c:134 +msgid "Add U_RL ..." +msgstr "PridaÅ¥ U_RL ..." + +#: src/gtkui/menus.c:136 +msgid "A_bout ..." +msgstr "_O programe ..." + +#: src/gtkui/menus.c:137 +msgid "_Preferences ..." +msgstr "_Predvoľby" -#: src/gtkui/actions.c:723 src/skins/ui_manager.c:211 -msgid "Import Playlist" -msgstr "ImportovaÅ¥ zoznam skladieb" +#: src/gtkui/menus.c:138 src/skins/ui_manager.c:406 +msgid "_Quit" +msgstr "_Koniec" + +#: src/gtkui/menus.c:141 +msgid "_Play" +msgstr "_HraÅ¥" + +#: src/gtkui/menus.c:142 +msgid "Paus_e" +msgstr "P_ozastaviÅ¥" + +#: src/gtkui/menus.c:143 +msgid "_Stop" +msgstr "Za_staviÅ¥" + +#: src/gtkui/menus.c:144 +msgid "Pre_vious" +msgstr "Pred_chádzajúca" + +#: src/gtkui/menus.c:145 +msgid "_Next" +msgstr "_Nasledujúca" + +#: src/gtkui/menus.c:147 +msgid "_Repeat" +msgstr "O_pakovaÅ¥" + +#: src/gtkui/menus.c:148 +msgid "S_huffle" +msgstr "Ná_hodné prehrávanie" + +#: src/gtkui/menus.c:149 +msgid "N_o Playlist Advance" +msgstr "Nep_okraÄovaÅ¥ podľa zoznamu skladieb" + +#: src/gtkui/menus.c:150 +msgid "Stop _After This Song" +msgstr "ZastaviÅ¥ po tejto skl_adbe" + +#: src/gtkui/menus.c:152 src/gtkui/menus.c:212 +msgid "Song _Info ..." +msgstr "_Informácie o skladbe ..." + +#: src/gtkui/menus.c:153 +msgid "Jump to _Time ..." +msgstr "S_koÄiÅ¥ na Äas ..." + +#: src/gtkui/menus.c:154 +msgid "_Jump to Song ..." +msgstr "SkoÄiÅ¥ na sk_ladbu ..." + +#: src/gtkui/menus.c:157 +msgid "By Track _Number" +msgstr "Podľa Äí_sla stopy" + +#: src/gtkui/menus.c:158 +msgid "By _Title" +msgstr "Podľa _názvu" + +#: src/gtkui/menus.c:159 +msgid "By _Artist" +msgstr "Podľa _umelca" + +#: src/gtkui/menus.c:160 +msgid "By A_lbum" +msgstr "Podľa a_lbumu" + +#: src/gtkui/menus.c:161 +msgid "By Release _Date" +msgstr "Podľa dátumu vy_dania" + +#: src/gtkui/menus.c:162 +msgid "By _File Path" +msgstr "Podľa _cesty k súboru" + +#: src/gtkui/menus.c:163 +msgid "By _Custom Title" +msgstr "Podľa vlastného ná_zvu" + +#: src/gtkui/menus.c:165 +msgid "R_everse Order" +msgstr "Obrátené poradie" + +#: src/gtkui/menus.c:166 +msgid "_Random Order" +msgstr "Náhodné po_radie" + +#: src/gtkui/menus.c:169 src/gtkui/menus.c:214 +msgid "_Refresh" +msgstr "_ObnoviÅ¥" + +#: src/gtkui/menus.c:170 +msgid "Remove _Unavailable Files" +msgstr "OdstrániÅ¥ nedost_upné súbory" + +#: src/gtkui/menus.c:172 +msgid "_Sort" +msgstr "_ZoradiÅ¥" + +#: src/gtkui/menus.c:174 +msgid "_New" +msgstr "_Nový" + +#: src/gtkui/menus.c:175 src/gtkui/menus.c:225 +msgid "_Close" +msgstr "_ZatvoriÅ¥" + +#: src/gtkui/menus.c:177 +msgid "_Import ..." +msgstr "_ImportovaÅ¥ ..." + +#: src/gtkui/menus.c:178 +msgid "_Export ..." +msgstr "_ExportovaÅ¥ ..." + +#: src/gtkui/menus.c:180 +msgid "_Playlist Manager ..." +msgstr "S_právca zoznamu skladieb ..." + +#: src/gtkui/menus.c:181 +msgid "_Queue Manager ..." +msgstr "Správca _fronty .." + +#: src/gtkui/menus.c:184 +msgid "Volume _Up" +msgstr "Zo_silniÅ¥" + +#: src/gtkui/menus.c:185 +msgid "Volume _Down" +msgstr "S_tíšiÅ¥" + +#: src/gtkui/menus.c:187 +msgid "_Equalizer" +msgstr "_Ekvalizér" + +#: src/gtkui/menus.c:189 +msgid "E_ffects" +msgstr "E_fekty" + +#: src/gtkui/menus.c:192 +msgid "_Interface" +msgstr "_Rozhranie" + +#: src/gtkui/menus.c:193 +msgid "_Visualizations" +msgstr "_Vizualizácie" + +#: src/gtkui/menus.c:195 +msgid "Show _Menu Bar" +msgstr "ZobraziÅ¥ _panel s ponukou" + +#: src/gtkui/menus.c:196 +msgid "Show I_nfo Bar" +msgstr "ZobraziÅ¥ panel s i_nformáciami" + +#: src/gtkui/menus.c:197 +msgid "Show _Status Bar" +msgstr "ZobraziÅ¥ panel so _stavom" + +#: src/gtkui/menus.c:199 +msgid "Show Column _Headers" +msgstr "ZobraziÅ¥ _hlaviÄky stĺpcov" + +#: src/gtkui/menus.c:200 +msgid "Choose _Columns ..." +msgstr "VybraÅ¥ stĺp_ce ..." + +#: src/gtkui/menus.c:201 +msgid "Scrol_l on Song Change" +msgstr "Ro_lovaÅ¥ na zmenenú skladbu" + +#: src/gtkui/menus.c:204 +msgid "_File" +msgstr "_Súbor" + +#: src/gtkui/menus.c:205 +msgid "_Playback" +msgstr "_Prehrávanie" + +#: src/gtkui/menus.c:206 +msgid "P_laylist" +msgstr "Zoznam sk_ladieb" + +#: src/gtkui/menus.c:207 src/gtkui/menus.c:221 +msgid "_Services" +msgstr "_Služby" + +#: src/gtkui/menus.c:208 +msgid "_Output" +msgstr "_Výstup" + +#: src/gtkui/menus.c:209 +msgid "_View" +msgstr "_Zobrazenie" + +#: src/gtkui/menus.c:213 +msgid "_Queue/Unqueue" +msgstr "PridaÅ¥ alebo odobraÅ¥ z _fronty" + +#: src/gtkui/menus.c:216 +msgid "Cu_t" +msgstr "Vys_trihnúť" + +#: src/gtkui/menus.c:217 +msgid "_Copy" +msgstr "_KopírovaÅ¥" + +#: src/gtkui/menus.c:218 +msgid "_Paste" +msgstr "V_ložiÅ¥" + +#: src/gtkui/menus.c:219 +msgid "Select _All" +msgstr "Ozn_aÄiÅ¥ vÅ¡etko" + +#: src/gtkui/menus.c:224 +msgid "_Rename" +msgstr "_PremenovaÅ¥" -#: src/gtkui/ui_gtk.c:72 -#, fuzzy +#: src/gtkui/ui_gtk.c:95 msgid "GTK Interface" -msgstr "GNT rozhranie" +msgstr "Rozhranie GTK" -#: src/gtkui/ui_gtk.c:281 src/skins/ui_main.c:388 +#: src/gtkui/ui_gtk.c:156 src/skins/ui_main.c:303 #, c-format msgid "%s - Audacious" msgstr "%s - Audacious" -#: src/gtkui/ui_gtk.c:287 src/skins/ui_main.c:390 src/skins/ui_main.c:2166 +#: src/gtkui/ui_gtk.c:162 +msgid "Buffering ..." +msgstr "Napĺňanie vyrovnávajúcej pamäte ..." + +#: src/gtkui/ui_gtk.c:165 src/skins/ui_main.c:305 src/skins/ui_main.c:1504 msgid "Audacious" msgstr "Audacious" -#: src/gtkui/ui_manager.c:35 src/gtkui/ui_manager.c:36 -#: src/skins/ui_manager.c:53 src/skins/ui_manager.c:54 -msgid "Stop after Current Song" -msgstr "ZastaviÅ¥ po skonÄení aktuálnej skladby" +#: src/gtkui/ui_gtk.c:216 src/skins/plugin.c:190 +msgid "Error" +msgstr "Chyba" -#: src/gtkui/ui_manager.c:38 src/gtkui/ui_manager.c:39 -#: src/skins/ui_manager.c:59 src/skins/ui_manager.c:60 -msgid "Repeat" -msgstr "OpakovaÅ¥" +#: src/gtkui/ui_statusbar.c:105 src/skins/ui_main.c:460 +msgid "mono" +msgstr "mono" -#: src/gtkui/ui_manager.c:41 src/gtkui/ui_manager.c:42 -#: src/skins/ui_manager.c:62 src/skins/ui_manager.c:63 -msgid "Shuffle" -msgstr "Náhodné poradie" +#: src/gtkui/ui_statusbar.c:107 src/skins/ui_main.c:459 +msgid "stereo" +msgstr "stereo" -#: src/gtkui/ui_manager.c:44 src/gtkui/ui_manager.c:45 -#: src/skins/ui_manager.c:65 src/skins/ui_manager.c:66 -msgid "No Playlist Advance" -msgstr "NeprehrávaÅ¥ ÄalÅ¡iu skladbu zo zoznamu" +#: src/gtkui/ui_statusbar.c:109 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d kanálov" +msgstr[1] "%d kanál" +msgstr[2] "%d kanály" -#: src/gtkui/ui_manager.c:47 -msgid "Show playlists" -msgstr "ZobraziÅ¥ zoznamy skladieb" - -#: src/gtkui/ui_manager.c:48 -msgid "Show/hide playlists" -msgstr "Zobrazí alebo skryje zoznamy skladieb" - -#: src/gtkui/ui_manager.c:50 -msgid "Show infoarea" -msgstr "ZobraziÅ¥ informaÄnú plochu" - -#: src/gtkui/ui_manager.c:51 -msgid "Show/hide infoarea" -msgstr "Zobrazí alebo skryje informaÄnú plochu" - -#: src/gtkui/ui_manager.c:53 -msgid "Show main menu" -msgstr "ZobraziÅ¥ hlavnú ponuku" - -#: src/gtkui/ui_manager.c:54 -msgid "Show/hide main menu" -msgstr "Zobrazí alebo skryje hlavnú ponuku" - -#: src/gtkui/ui_manager.c:56 -#, fuzzy -msgid "Show statusbar" -msgstr "Stav" - -#: src/gtkui/ui_manager.c:57 -#, fuzzy -msgid "Show/hide statusbar" -msgstr "Zobrazí alebo skryje zoznamy skladieb" +#: src/gtkui/ui_statusbar.c:124 +#, c-format +msgid "%d kbps" +msgstr "%d kbps" -#: src/gtkui/ui_manager.c:69 src/gtkui/ui_manager.c:70 -#: src/skins/ui_manager.c:170 src/skins/ui_manager.c:171 -msgid "Pause" -msgstr "PozastaviÅ¥" +#: src/hotkey/gui.c:71 +msgid "Previous Track" +msgstr "Predchádzajúca stopa" + +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "PrehraÅ¥" + +#: src/hotkey/gui.c:73 +msgid "Pause/Resume" +msgstr "PozastaviÅ¥/PokraÄovaÅ¥" -#: src/gtkui/ui_manager.c:72 src/gtkui/ui_manager.c:73 src/hotkey/gui.c:73 -#: src/skins/ui_manager.c:173 src/skins/ui_manager.c:174 +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 msgid "Stop" msgstr "ZastaviÅ¥" -#: src/gtkui/ui_manager.c:75 src/gtkui/ui_manager.c:76 -#: src/skins/ui_manager.c:176 src/skins/ui_manager.c:177 -msgid "Previous" -msgstr "Predchádzajúca" +#: src/hotkey/gui.c:75 +msgid "Next Track" +msgstr "Nasledujúca stopa" -#: src/gtkui/ui_manager.c:78 src/gtkui/ui_manager.c:79 -#: src/skins/ui_manager.c:179 src/skins/ui_manager.c:180 -msgid "Next" -msgstr "Nasledujúca" +#: src/hotkey/gui.c:76 +msgid "Forward 5 Seconds" +msgstr "Vpred o 5 sekúnd" -#: src/gtkui/ui_manager.c:84 src/skins/ui_manager.c:197 -msgid "Playlist" -msgstr "Zoznam skladieb" +#: src/hotkey/gui.c:77 +msgid "Rewind 5 Seconds" +msgstr "Späť o 5 sekúnd" -#: src/gtkui/ui_manager.c:86 src/gtkui/ui_manager.c:87 -#: src/skins/ui_manager.c:199 src/skins/ui_manager.c:200 -msgid "New Playlist" -msgstr "Nový zoznam skladieb" +#: src/hotkey/gui.c:78 +msgid "Mute" +msgstr "StlmiÅ¥" -#: src/gtkui/ui_manager.c:89 src/gtkui/ui_manager.c:90 -#: src/skins/ui_manager.c:208 src/skins/ui_manager.c:209 -msgid "Delete Playlist" -msgstr "ZmazaÅ¥ zoznam skladieb" +#: src/hotkey/gui.c:79 +msgid "Volume Up" +msgstr "ZosilniÅ¥" -#: src/gtkui/ui_manager.c:92 -#, fuzzy -msgid "Import Playlist ..." -msgstr "ImportovaÅ¥ zoznam skladieb" +#: src/hotkey/gui.c:80 +msgid "Volume Down" +msgstr "StíšiÅ¥" -#: src/gtkui/ui_manager.c:93 src/skins/ui_manager.c:212 -msgid "Loads a playlist file into the selected playlist." -msgstr "Pridá súbor so zoznamom do vybraného zoznamu skladieb." +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Jump to File" +msgstr "PrejsÅ¥ na súbor" -#: src/gtkui/ui_manager.c:95 -#, fuzzy -msgid "Export Playlist ..." -msgstr "ExportovaÅ¥ zoznam skladieb" +#: src/hotkey/gui.c:82 +msgid "Toggle Player Windows" +msgstr "Prepnúť okná prehrávaÄa" -#: src/gtkui/ui_manager.c:96 src/skins/ui_manager.c:215 -msgid "Saves the selected playlist." -msgstr "Uloží vybraný zoznam skladieb." +#: src/hotkey/gui.c:83 +msgid "Show On-Screen-Display" +msgstr "ZobraziÅ¥ OSD" + +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "Prepnúť opakovanie" + +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "Prepnúť náhodné prehrávanie" -#: src/gtkui/ui_manager.c:98 src/skins/ui_manager.c:217 -msgid "Save All Playlists" -msgstr "UložiÅ¥ vÅ¡etky zoznamy skladieb" +#: src/hotkey/gui.c:95 +msgid "(none)" +msgstr "(žiadne)" -#: src/gtkui/ui_manager.c:99 src/skins/ui_manager.c:218 +#: src/hotkey/gui.c:232 msgid "" -"Saves all the playlists that are open. Note that this is done automatically " -"when Audacious quits." +"It is not recommended to bind the primary mouse buttons without modificators.\n" +"\n" +"Do you want to continue?" msgstr "" -"Uloží vÅ¡etky otvorené zoznamy skladieb. Berte na vedomie, že toto je " -"automaticky urobené pri ukonÄovaní Audacious." +"Priradenie primárneho tlaÄidla myÅ¡i bez modifikátoru nie je odporúÄané.\n" +"\n" +"Chcete pokraÄovaÅ¥?" -#: src/gtkui/ui_manager.c:103 -#, fuzzy -msgid "Refresh" -msgstr "_ObnoviÅ¥" +#: src/hotkey/gui.c:234 +msgid "Binding mouse buttons" +msgstr "Priradenie tlaÄidiel myÅ¡i" -#: src/gtkui/ui_manager.c:104 src/skins/ui_manager.c:223 -msgid "Refreshes metadata associated with a playlist entry." -msgstr "Obnovuje metadáta patriace k skladbe zo zoznamu." +#: src/hotkey/gui.c:384 +msgid "Global Hotkey Plugin Configuration" +msgstr "Nastavenie modulu Globálne klávesové skratky" -#: src/gtkui/ui_manager.c:107 -#, fuzzy -msgid "Playlist Manager" -msgstr "Správca zoznamov" +#: src/hotkey/gui.c:400 +msgid "" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." +msgstr "" +"V textovom poli stlaÄte kombináciu klávesov.\n" +"Môžete priradiÅ¥ aj tlaÄítka na myÅ¡i." -#: src/gtkui/ui_manager.c:108 src/skins/ui_manager.c:227 -msgid "Opens the playlist manager." -msgstr "Otvorí správcu zoznamov skladieb." - -#: src/gtkui/ui_manager.c:111 -#, fuzzy -msgid "Add URL ..." -msgstr "PridaÅ¥ súbory…" - -#: src/gtkui/ui_manager.c:112 src/skins/ui_manager.c:237 -msgid "Adds a remote track to the playlist." -msgstr "Do zoznamu skladieb pridá vzdialenú stopu." - -#: src/gtkui/ui_manager.c:115 -#, fuzzy -msgid "Add Files ..." -msgstr "PridaÅ¥ súbory…" - -#: src/gtkui/ui_manager.c:116 src/skins/ui_manager.c:241 -msgid "Adds files to the playlist." -msgstr "Do zoznamu skladieb pridá súbory." - -#: src/gtkui/ui_manager.c:119 src/skins/ui_manager.c:264 -msgid "Remove All" -msgstr "OdstrániÅ¥ vÅ¡etky" - -#: src/gtkui/ui_manager.c:120 src/skins/ui_manager.c:265 -msgid "Removes all entries from the playlist." -msgstr "Zo zoznamu odstráni vÅ¡etky skladby." - -#: src/gtkui/ui_manager.c:123 src/skins/ui_manager.c:290 -msgid "Remove Unselected" -msgstr "OdstrániÅ¥ neoznaÄené" - -#: src/gtkui/ui_manager.c:124 src/skins/ui_manager.c:291 -msgid "Remove unselected entries from the playlist." -msgstr "Zo zoznamu odstráni neoznaÄené skladby." - -#: src/gtkui/ui_manager.c:127 src/skins/ui_manager.c:294 -msgid "Remove Selected" -msgstr "OdstrániÅ¥ oznaÄené" - -#: src/gtkui/ui_manager.c:128 src/skins/ui_manager.c:295 -msgid "Remove selected entries from the playlist." -msgstr "Zo zoznamu odstráni oznaÄené skladby." - -#: src/gtkui/ui_manager.c:131 -#, fuzzy -msgid "Sort" -msgstr "Port" - -#: src/gtkui/ui_manager.c:132 src/skins/ui_manager.c:330 -#: src/skins/ui_manager.c:360 -msgid "By Track Number" -msgstr "Podľa Äísla stopy" - -#: src/gtkui/ui_manager.c:134 src/skins/ui_manager.c:278 -#: src/skins/ui_manager.c:306 src/skins/ui_manager.c:336 -msgid "By Title" -msgstr "Podľa názvu" - -#: src/gtkui/ui_manager.c:136 src/skins/ui_manager.c:314 -#: src/skins/ui_manager.c:344 -msgid "By Artist" -msgstr "Podľa umelca" - -#: src/gtkui/ui_manager.c:138 src/skins/ui_manager.c:310 -#: src/skins/ui_manager.c:340 -msgid "By Album" -msgstr "Podľa albumu" - -#: src/gtkui/ui_manager.c:140 -#, fuzzy -msgid "By File Path" -msgstr "Podľa názvu súboru" - -#: src/gtkui/ui_manager.c:142 -#, fuzzy -msgid "Reverse Order" -msgstr "ObrátiÅ¥ poradie" - -#: src/gtkui/ui_manager.c:147 -msgid "Output" -msgstr "Výstup" - -#: src/gtkui/ui_manager.c:149 src/modplug/gui/interface.cxx:572 -msgid "Effects" -msgstr "Efekty" - -#: src/gtkui/ui_manager.c:151 -msgid "Equalizer" -msgstr "Ekvalizér" - -#: src/gtkui/ui_manager.c:156 src/skins/ui_manager.c:232 -msgid "View" -msgstr "Zobrazenie" - -#: src/gtkui/ui_manager.c:157 src/skins/ui_manager.c:233 -#, fuzzy -msgid "Interface" -msgstr "GNT rozhranie" - -#: src/gtkui/ui_manager.c:164 src/skins/ui_manager.c:370 -msgid "File" -msgstr "Súbor" - -#: src/gtkui/ui_manager.c:167 -msgid "Components" -msgstr "SúÄasti" - -#: src/gtkui/ui_manager.c:169 src/gtkui/ui_manager.c:172 -#: src/skins/ui_manager.c:375 src/skins/ui_manager.c:378 -msgid "View Track Details" -msgstr "ZobraziÅ¥ informácie o skladbe" - -#: src/gtkui/ui_manager.c:170 src/gtkui/ui_manager.c:173 -#: src/skins/ui_manager.c:376 src/skins/ui_manager.c:379 -msgid "View track details" -msgstr "Zobrazí informácie o skladbe" - -#: src/gtkui/ui_manager.c:175 src/gtkui/ui_manager.c:176 -#: src/skins/ui_manager.c:381 src/skins/ui_manager.c:382 -msgid "About Audacious" -msgstr "O Audacious" - -#: src/gtkui/ui_manager.c:178 -#, fuzzy -msgid "Open Files ..." -msgstr "OtvoriÅ¥ súbory" - -#: src/gtkui/ui_manager.c:179 src/skins/ui_manager.c:385 -msgid "Load and play a file" -msgstr "NaÄíta a prehrá súbor" - -#: src/gtkui/ui_manager.c:181 -msgid "Open URL ..." -msgstr "" - -#: src/gtkui/ui_manager.c:182 src/skins/ui_manager.c:388 -msgid "Play media from the selected location" -msgstr "Prehrá súbor z vybranej adresy" - -#: src/gtkui/ui_manager.c:184 src/skins/ui_manager.c:390 -msgid "Plugin services" -msgstr "Služby modulov" - -#: src/gtkui/ui_manager.c:186 src/skins/ui_manager.c:392 -msgid "Preferences" -msgstr "Predvoľby" - -#: src/gtkui/ui_manager.c:187 src/skins/ui_manager.c:393 -msgid "Open preferences window" -msgstr "Otvorí okno s predvoľbami" - -#: src/gtkui/ui_manager.c:189 src/skins/ui_manager.c:395 -msgid "_Quit" -msgstr "_Koniec" - -#: src/gtkui/ui_manager.c:190 src/skins/ui_manager.c:396 -msgid "Quit Audacious" -msgstr "UkonÄí Audacious" - -#: src/gtkui/ui_manager.c:192 src/gtkui/ui_manager.c:193 -#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 -msgid "Set A-B" -msgstr "NastaviÅ¥ A-B" - -#: src/gtkui/ui_manager.c:195 src/gtkui/ui_manager.c:196 -#: src/skins/ui_manager.c:401 src/skins/ui_manager.c:402 -msgid "Clear A-B" -msgstr "OdstrániÅ¥ A-B" - -#: src/gtkui/ui_manager.c:198 src/gtkui/ui_manager.c:199 -#: src/skins/ui_manager.c:404 src/skins/ui_manager.c:405 -msgid "Jump to Playlist Start" -msgstr "PrejsÅ¥ na zaÄiatok playlistu" - -#: src/gtkui/ui_manager.c:201 src/gtkui/ui_manager.c:202 src/hotkey/gui.c:80 -#: src/skins/ui_manager.c:407 src/skins/ui_manager.c:408 -msgid "Jump to File" -msgstr "PrejsÅ¥ na súbor" - -#: src/gtkui/ui_manager.c:207 src/skins/ui_manager.c:413 -msgid "Queue Toggle" -msgstr "Prepnúť front" - -#: src/gtkui/ui_manager.c:208 src/skins/ui_manager.c:414 -msgid "Enables/disables the entry in the playlist's queue." -msgstr "Povolí/zakáže položku vo fronte zoznamu skladieb." - -#: src/gtkui/ui_manager.c:211 src/skins/ui_manager.c:417 -msgid "Copy" -msgstr "KopírovaÅ¥" - -#: src/gtkui/ui_manager.c:214 src/skins/ui_manager.c:419 -msgid "Cut" -msgstr "Vystrihnúť" - -#: src/gtkui/ui_manager.c:217 src/skins/ui_manager.c:421 -msgid "Paste" -msgstr "VložiÅ¥" - -#: src/gtkui/ui_manager.c:220 src/skins/ui_manager.c:254 -msgid "Select All" -msgstr "VybraÅ¥ vÅ¡etko" - -#: src/gtkui/ui_manager.c:221 src/skins/ui_manager.c:255 -msgid "Selects all of the playlist entries." -msgstr "Vyberie vÅ¡etky skladby v zozname." - -#: src/gtkui/ui_manager.c:224 src/skins/ui_manager.c:258 -msgid "Select None" -msgstr "ZruÅ¡iÅ¥ výber" - -#: src/gtkui/ui_manager.c:225 src/skins/ui_manager.c:259 -msgid "Deselects all of the playlist entries." -msgstr "Zruší výber skladieb zoznamu." - -#: src/gtkui/ui_statusbar.c:91 src/skins/ui_main.c:609 -msgid "mono" -msgstr "mono" - -#: src/gtkui/ui_statusbar.c:94 src/skins/ui_main.c:608 -msgid "stereo" -msgstr "stereo" - -#: src/gtkui/ui_statusbar.c:97 -#, fuzzy, c-format -msgid "%d channels" -msgstr "PoÄet kanálov" - -#: src/gtkui/ui_statusbar.c:101 -#, c-format -msgid "%s: %d kbps, %d Hz, %s" -msgstr "" - -#: src/hotkey/gui.c:70 -msgid "Previous Track" -msgstr "Predchádzajúca stopa" - -#: src/hotkey/gui.c:72 -msgid "Pause/Resume" -msgstr "PozastaviÅ¥/PokraÄovaÅ¥" - -#: src/hotkey/gui.c:74 -msgid "Next Track" -msgstr "Nasledujúca stopa" - -#: src/hotkey/gui.c:75 -msgid "Forward 5 Seconds" -msgstr "Vpred o 5 sekúnd" - -#: src/hotkey/gui.c:76 -msgid "Rewind 5 Seconds" -msgstr "Späť o 5 sekúnd" - -#: src/hotkey/gui.c:77 -msgid "Mute" -msgstr "StlmiÅ¥" - -#: src/hotkey/gui.c:78 -msgid "Volume Up" -msgstr "ZosilniÅ¥" - -#: src/hotkey/gui.c:79 -msgid "Volume Down" -msgstr "StíšiÅ¥" - -#: src/hotkey/gui.c:81 -msgid "Toggle Player Windows" -msgstr "Prepnúť okná prehrávaÄa" - -#: src/hotkey/gui.c:82 -msgid "Show On-Screen-Display" -msgstr "ZobraziÅ¥ OSD" - -#: src/hotkey/gui.c:92 -msgid "(none)" -msgstr "(žiadne)" - -#: src/hotkey/gui.c:229 -msgid "" -"It is not recommended to bind the primary mouse buttons without " -"modificators.\n" -"\n" -"Do you want to continue?" -msgstr "" -"Priradenie primárneho tlaÄidla myÅ¡i bez modifikátoru nie je odporúÄané.\n" -"\n" -"Chcete pokraÄovaÅ¥?" - -#: src/hotkey/gui.c:231 -msgid "Binding mouse buttons" -msgstr "Priradenie tlaÄidiel myÅ¡i" - -#: src/hotkey/gui.c:381 -msgid "Global Hotkey Plugin Configuration" -msgstr "Nastavenie modulu Globálne klávesové skratky" - -#: src/hotkey/gui.c:397 -msgid "" -"Press a key combination inside a text field.\n" -"You can also bind mouse buttons." -msgstr "" -"V textovom poli stlaÄte kombináciu klávesov.\n" -"Môžete priradiÅ¥ aj tlaÄítka na myÅ¡i." - -#: src/hotkey/gui.c:402 +#: src/hotkey/gui.c:405 msgid "Hotkeys:" msgstr "Klávesové skratky:" -#: src/hotkey/gui.c:421 +#: src/hotkey/gui.c:424 msgid "Action:" msgstr "ÄŒinnosÅ¥:" -#: src/hotkey/gui.c:429 +#: src/hotkey/gui.c:432 msgid "Key Binding:" msgstr "Priradenie klávesu:" -#: src/hotkey/gui.c:660 +#: src/hotkey/gui.c:663 msgid "About Global Hotkey Plugin" msgstr "O module Globálne klávesové skratky" -#: src/hotkey/gui.c:661 +#: src/hotkey/gui.c:664 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -3197,31 +2075,31 @@ "\t\t\tJeremy Tan \n" "\n" -#: src/jack/configure.c:71 +#: src/jack/configure.c:66 msgid "Connect to all available jack ports" msgstr "PripojiÅ¥ sa na vÅ¡etky dostupné porty" -#: src/jack/configure.c:78 +#: src/jack/configure.c:73 msgid "Connect only the output ports" msgstr "PripojiÅ¥ sa len na výstupné porty" -#: src/jack/configure.c:85 +#: src/jack/configure.c:80 msgid "Connect to no ports" msgstr "NepripájaÅ¥ sa na žiadne porty" -#: src/jack/configure.c:103 +#: src/jack/configure.c:98 msgid "jack Plugin configuration" msgstr "Nastavenie modulu jack" -#: src/jack/configure.c:121 +#: src/jack/configure.c:116 msgid "Connection mode:" msgstr "Režim pripojenia:" -#: src/jack/configure.c:133 +#: src/jack/configure.c:128 msgid "Enable debug printing" msgstr "PovoliÅ¥ ladiace výpisy" -#: src/jack/jack.c:437 +#: src/jack/jack.c:435 msgid "" "XMMS jack Driver 0.17\n" "\n" @@ -3239,1328 +2117,361 @@ "Pre Audacious upravil\n" "Giacomo Lozito z develia.org" -#: src/jack/jack.c:442 +#: src/jack/jack.c:440 msgid "About JACK Output Plugin 0.17" msgstr "O výstupnom module JACK 0.17" -#: src/ladspa/ladspa.c:824 -msgid "This LADSPA plugin has no user controls" -msgstr "Tento LADSPA modul nemá žiadne používateľské nastavenia" - -#: src/ladspa/ladspa.c:865 src/ladspa/ladspa.c:952 -msgid "Name" -msgstr "Názov" - -#: src/ladspa/ladspa.c:952 -msgid "UID" -msgstr "UID" - -#: src/ladspa/ladspa.c:1029 -msgid "Installed plugins" -msgstr "NainÅ¡talované moduly" - -#: src/ladspa/ladspa.c:1037 -msgid "Running plugins" -msgstr "Bežiace moduly" - -#: src/ladspa/ladspa.c:1052 -msgid "Add" -msgstr "PridaÅ¥" - -#: src/ladspa/ladspa.c:1055 -msgid "Remove" -msgstr "OdstrániÅ¥" - -#: src/ladspa/ladspa.c:1066 -msgid "LADSPA Plugin Catalog" -msgstr "Katalóg LADSPA modulov" - -#: src/lirc/about.c:63 -msgid "About LIRC Audacious Plugin" -msgstr "O module LIRC pre Audacious" - -#: src/lirc/about.c:90 -msgid "LIRC Plugin " -msgstr "Modul LIRC " - -#: src/lirc/about.c:92 -msgid "" -"\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" -"\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" -msgstr "" -"\n" -"Jednoduchý modul, ktorý vám umožní ovládaÅ¥ Audacious\n" -"pomocou systémovej služby diaľkového ovládania LIRC\n" -"\n" -"Pre Audacious upravil Tony Vroon \n" -"Originálny modul XMMS LIRC napísali:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"Informácie o LIRC môžete získaÅ¥ na:\n" -"http://lirc.org" - -#: src/lirc/interface.c:37 -msgid "LIRC plugin settings" -msgstr "Nastavenia modulu LIRC" - -#: src/lirc/interface.c:61 -msgid "Reconnect to LIRC server" -msgstr "Znovu sa pripojiÅ¥ k LIRC serveru" - -#: src/lirc/interface.c:68 -msgid "Timeout before reconnecting (seconds): " -msgstr "ÄŒasový limit pred znovupripojením (sekúnd): " +#: src/ladspa/plugin.c:415 +msgid "About LADSPA Host" +msgstr "O hostiteľovi LADSPA" -#: src/lirc/interface.c:75 -msgid "Reconnect" -msgstr "Znovu pripojiÅ¥" - -#: src/lirc/interface.c:79 -msgid "Connection" -msgstr "Spojenie" - -#: src/lirc/lirc.c:82 -#, c-format -msgid "%s: could not init LIRC support\n" -msgstr "%s: LIRC podpora sa nedá inicializovaÅ¥\n" - -#: src/lirc/lirc.c:90 +#: src/ladspa/plugin.c:516 #, c-format -msgid "" -"%s: could not read LIRC config file\n" -"%s: please read the documentation of LIRC\n" -"%s: how to create a proper config file\n" -msgstr "" -"%s: konfiguraÄný súbor LIRC sa nedá preÄítaÅ¥,\n" -"%s: preÄítajte si, prosím, dokumentáciu k LIRC\n" -"%s: ako správne vytvoriÅ¥ konfiguraÄný súbor\n" +msgid "%s Settings" +msgstr "Nastavenia %s" -#: src/lirc/lirc.c:117 -#, c-format -msgid "%s: trying to reconnect...\n" -msgstr "%s: pokúšam sa znovupripojiť…\n" +#: src/ladspa/plugin.c:584 +msgid "LADSPA Host Settings" +msgstr "Nastavenia hostiteľa LADSPA" -#: src/lirc/lirc.c:332 -#, c-format -msgid "%s: unknown command \"%s\"\n" -msgstr "%s: neznámy príkaz „%s“\n" +#: src/ladspa/plugin.c:593 +msgid "Module paths:" +msgstr "Cesty modulu:" -#: src/lirc/lirc.c:342 -#, c-format -msgid "%s: disconnected from LIRC\n" -msgstr "%s: odpojené od LIRC\n" - -#: src/lirc/lirc.c:346 -#, c-format -msgid "%s: will try reconnect every %d seconds...\n" -msgstr "%s: pokus o znovupripojenie budem opakovaÅ¥ každých %d sekúnd…\n" - -#: src/lyricwiki/lyricwiki.c:244 -msgid "LyricWiki" -msgstr "" - -#: src/lyricwiki/lyricwiki.c:337 -#, fuzzy -msgid "" -"\n" -"No lyrics were found." -msgstr "Nebolo nájdené žiadne zariadenie." - -#: src/metronom/metronom.c:90 -msgid "About Metronom" -msgstr "O module Metronóm" - -#: src/metronom/metronom.c:91 +#: src/ladspa/plugin.c:598 msgid "" -"A Tact Generator by Martin Strauss \n" -"\n" -"To use it, add a URL: tact://beats*num/den\n" -"e.g. tact://77 to play 77 beats per minute\n" -"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." msgstr "" -"Generátor taktu od Martina Straussa \n" -"\n" -"Pre použitie pridajte URL: tact://úderov*dôb/dĺžka\n" -"napr. tact://77 pre 77 úderov za minútu\n" -"alebo tact://60*3/4 pre 60 úderov za minútu v 3/4 takte" +" OddeliÅ¥ viac ciest s dvojbodkou.\n" +"Tieto cesty sú vyhľadávané v rátane do LADSPA_PATH.\n" +"Po pridaní novej cesty, stlaÄte Enter pre vyhľadanie nových modulov. " -#: src/metronom/metronom.c:145 -#, c-format -msgid "Tact generator: %d bpm" -msgstr "Generátor taktu: %d bpm" +#: src/ladspa/plugin.c:614 +msgid "Available plugins:" +msgstr "Dostupné moduly:" -#: src/metronom/metronom.c:147 -#, c-format -msgid "Tact generator: %d bpm %d/%d" -msgstr "Generátor taktu: %d bpm %d/%d" - -#: src/modplug/gui/interface.cxx:137 -msgid "ModPlug Configuration" -msgstr "Nastavenie ModPlug" - -#: src/modplug/gui/interface.cxx:174 -msgid "16 bit" -msgstr "16 bitov" - -#: src/modplug/gui/interface.cxx:181 -msgid "8 bit" -msgstr "8 bitov" - -#: src/modplug/gui/interface.cxx:212 -msgid "Mono (downmix)" -msgstr "mono (zmieÅ¡aÅ¥ kanále)" - -#: src/modplug/gui/interface.cxx:241 -msgid "Nearest (fastest)" -msgstr "Najbližšie (najrýchlejÅ¡ie)" - -#: src/modplug/gui/interface.cxx:248 -msgid "Linear (fast)" -msgstr "Lineárne (rýchle)" - -#: src/modplug/gui/interface.cxx:255 -msgid "Spline (good quality)" -msgstr "Kubická interpolácia (kvalitné)" - -#: src/modplug/gui/interface.cxx:262 -msgid "8-tap Fir (extremely high quality)" -msgstr "8-tap Fir interpolácia (veľmi kvalitné)" - -#: src/modplug/gui/interface.cxx:286 -msgid "96 kHz" -msgstr "96 kHz" - -#: src/modplug/gui/interface.cxx:293 -msgid "48 kHz" -msgstr "48 kHz" - -#: src/modplug/gui/interface.cxx:300 -msgid "44 kHz" -msgstr "44 kHz" - -#: src/modplug/gui/interface.cxx:307 -msgid "22 kHz" -msgstr "22 kHz" - -#: src/modplug/gui/interface.cxx:315 -msgid "Sampling Rate" -msgstr "Vzorkovacia frekvencia" - -#: src/modplug/gui/interface.cxx:349 src/modplug/gui/interface.cxx:411 -#: src/modplug/gui/interface.cxx:477 src/modplug/gui/interface.cxx:539 +#: src/ladspa/plugin.c:626 msgid "Enable" msgstr "PovoliÅ¥" -#: src/modplug/gui/interface.cxx:378 src/modplug/gui/interface.cxx:506 -msgid "Depth" -msgstr "Hĺbka" - -#: src/modplug/gui/interface.cxx:386 src/modplug/gui/interface.cxx:514 -msgid "Delay" -msgstr "Oneskorenie" - -#: src/modplug/gui/interface.cxx:394 -msgid "Reverb" -msgstr "Dozvuk" - -#: src/modplug/gui/interface.cxx:440 -msgid "Amount" -msgstr "Stupeň" - -#: src/modplug/gui/interface.cxx:448 -msgid "Range" -msgstr "Rozsah" - -#: src/modplug/gui/interface.cxx:456 -msgid "Bass Boost" -msgstr "Zvýraznenie hlbokých tónov" +#: src/ladspa/plugin.c:632 +msgid "Enabled plugins:" +msgstr "Povolené moduly:" -#: src/modplug/gui/interface.cxx:522 src/mpg123/mpg123.c:174 -msgid "Surround" -msgstr "Priestorový zvuk" - -#: src/modplug/gui/interface.cxx:561 -msgid "" -"Note: Setting the preamp\n" -"too high may cause clipping\n" -"(annoying clicks and pops)!" -msgstr "" -"Poznámka: Vysoké hodnoty\n" -"predzosilnenia môžu spôsobiÅ¥\n" -"orezanie (obÅ¥ažujúce praskanie)." - -#: src/modplug/gui/interface.cxx:567 -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "Preamp" -msgstr "Predzosilnenie" - -#: src/modplug/gui/interface.cxx:601 -msgid "Use Filename as Song Title" -msgstr "PoužiÅ¥ názov súboru ako názov skladby" - -#: src/modplug/gui/interface.cxx:606 -msgid "Fast Playlist Info" -msgstr "Rýchle informácie o skladbe" - -#: src/modplug/gui/interface.cxx:617 -msgid "Noise Reduction" -msgstr "PotlaÄenie Å¡umu" - -#: src/modplug/gui/interface.cxx:623 -msgid "Play Amiga MOD" -msgstr "PrehrávaÅ¥ moduly z Amigy" - -#: src/modplug/gui/interface.cxx:646 -msgid "Don't loop" -msgstr "NeopakovaÅ¥" - -#: src/modplug/gui/interface.cxx:658 -msgid "Loop" -msgstr "OpakovaÅ¥" - -#: src/modplug/gui/interface.cxx:671 -msgid "time(s)" -msgstr "krát" - -#: src/modplug/gui/interface.cxx:677 -msgid "Loop forever" -msgstr "OpakovaÅ¥ donekoneÄna" - -#: src/modplug/gui/interface.cxx:684 -msgid "Looping" -msgstr "Opakovanie" - -#: src/modplug/gui/interface.cxx:859 -msgid "MOD Info" -msgstr "Informácie o module" - -#: src/modplug/gui/interface.cxx:878 -msgid "" -"Filename:\n" -"Title:\n" -"Type:\n" -"Length:\n" -"Speed:\n" -"Tempo:\n" -"Samples:\n" -"Instruments:\n" -"Patterns:\n" -"Channels:" -msgstr "" -"Názov súboru:\n" -"Názov skladby:\n" -"Typ:\n" -"Dĺžka:\n" -"RýchlosÅ¥:\n" -"Tempo:\n" -"PoÄet vzoriek:\n" -"PoÄet nástrojov:\n" -"PoÄet úsekov:\n" -"PoÄet kanálov:" - -#: src/modplug/gui/interface.cxx:883 -msgid "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" -msgstr "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" - -#: src/modplug/gui/interface.cxx:913 -msgid "Samples" -msgstr "Vzorky" - -#: src/modplug/gui/interface.cxx:938 -msgid "Instruments" -msgstr "Nástroje" - -#: src/modplug/gui/interface.cxx:959 -msgid "Message" -msgstr "Odkaz" - -#: src/modplug/gui/main.cxx:51 -msgid "Modplug Input Plugin for Audacious ver" -msgstr "Vstupný modul Modplug pre Audaciuos verzie " - -#: src/modplug/gui/main.cxx:52 -msgid "" -"\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." -msgstr "" -"\n" -"Zvukové jadro Modplug napísal Olivier Lapicque.\n" -"XMMS rozhranie k Modplug napísal Kenton Varda.\n" -"(c)2000 Olivier Lapicque a Kenton Varda.\n" -"Aktualizuje a udržuje Konstanty Bialkowski.\n" -"Pre BMP upravil Theofilos Intzoglou." - -#: src/modplug/gui/main.cxx:55 -msgid "About Modplug" -msgstr "O module Modplug" - -#: src/modplug/gui/support.cxx:90 src/modplug/gui/support.cxx:114 -#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 -#, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "Nepodarilo sa nájsÅ¥ súbor s obrázkom: %s" - -#: src/mtp_up/mtp.c:35 -msgid "Upload selected track(s)" -msgstr "NahraÅ¥ vybrané stopy" - -#: src/mtp_up/mtp.c:291 -msgid "Upload in progress..." -msgstr "Prebieha nahrávanie…" +#: src/ladspa/plugin.c:647 +msgid "Settings" +msgstr "Nastavenie" -#: src/mtp_up/mtp.c:300 -msgid "MTP device handler" -msgstr "Obsluha MTP zariadenia" - -#: src/mtp_up/mtp.c:304 -msgid "Disconnect the device" -msgstr "OdpojiÅ¥ zariadenie" - -#: src/null/null.c:63 -msgid "Null output plugin " -msgstr "Slepý výstupný modul" - -#: src/null/null.c:64 +#: src/lyricwiki/lyricwiki.c:267 msgid "" -" by Christian Birchinger \n" -"based on the XMMS plugin by HÃ¥vard KvÃ¥l " -msgstr "" -" napísal Christian Birchinger \n" -"založené na module pre XMMS, autorom ktorého je HÃ¥vard KvÃ¥l " - -#: src/null/null.c:67 -msgid "About Null Output" -msgstr "O slepom výstupnom module" - -#: src/null/null.c:93 -msgid "Null output preferences" -msgstr "Predvoľby slepého výstupu" - -#: src/null/null.c:102 -msgid "Run in real time" -msgstr "BežaÅ¥ v reálnom Äase" - -#: src/oss4/configure.c:89 -msgid "1. Default device" -msgstr "1. Å tandardné zariadenie" - -#: src/oss4/configure.c:151 -msgid "OSS4 Output Plugin Preferences" -msgstr "Predvoľby výstupného modulu OSS4" - -#: src/oss4/configure.c:163 src/OSS/configure.c:213 src/sun/configure.c:181 -msgid "Audio device:" -msgstr "Zvukové zariadenie:" - -#: src/oss4/configure.c:189 src/OSS/configure.c:235 src/OSS/configure.c:276 -msgid "Use alternate device:" -msgstr "PoužiÅ¥ iné zariadenie:" - -#: src/oss4/configure.c:202 -msgid "Save volume between sessions" -msgstr "Medi reláciami uložiÅ¥ hlasitosÅ¥" - -#: src/oss4/configure.c:206 -msgid "Enable format conversions made by the OSS software." -msgstr "PovoliÅ¥ konverziu formátu prostredníctvom OSS." - -#: src/oss4/plugin.c:54 -msgid "About OSS4 Plugin" -msgstr "O module OSS4" - -#: src/oss4/plugin.c:55 -msgid "" -"OSS4 Output Plugin for Audacious\n" -"Copyright 2010 MichaÅ‚ Lipski \n" "\n" -"I would like to thank people on #audacious, especially Tony Vroon and John " -"Lindgren and of course the authors of the previous OSS plugin.\n" -"\n" -"This program is free software: you can redistribute it and/or modify it " -"under the terms of the GNU General Public License as published by the Free " -"Software Foundation, either version 3 of the License, or (at your option) " -"any later version.\n" -"\n" -"This program 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 General Public License for " -"more details.\n" -"\n" -"You should have received a copy of the GNU General Public License along with " -"this program. If not, see .\n" -msgstr "" -"Výstupný modul OSS4 pre Audacious\n" -"Coyright 2010 MichaÅ‚ Lipski \n" -"\n" -"Chcel by som poÄakovaÅ¥ ľudom na #audacious, Å¡peciálne Tony Vroonovi a " -"Johnovi Lingrenovi a samozrejme autorom predchádzajúceho OSS modulu.\n" -"\n" -"Tento program je slobodný softvér. Môžete ho šíriÅ¥ a/alebo upravovaÅ¥ podľa " -"ustanovení GNU GPL, vydávanej nadáciou Free Software Foundation buÄ vo " -"verzii 3 tejto licencie, alebo (podľa vášho uváženia) v ľubovoľnej novÅ¡ej " -"verzii.\n" -"\n" -"Tento program je rozÅ¡irovaný v nádeji, že bude užitoÄný, ale BEZ AKEJKOĽVEK " -"ZÃRUKY. Neposkytujú sa ani odvodené záruky PREDAJNOSTI alebo VHODNOSTI PRE " -"URÄŒITà ÚČEL. ÄŽalÅ¡ie podrobnosti hľadajte v GNU GPL.\n" -"\n" -"Kópiu GNU GPL ste mali dostaÅ¥ spolu s týmto programom. Ak sa tak nestalo, " -"požiadajte o ňu Free Software Foundation, Inc., 51 Franklin Street, Fifth " -"Floor, Boston, MA 02110-1301, USA.\n" - -#: src/oss4/utils.c:204 -msgid "OSS4 error" -msgstr "Chyba OSS4" - -#: src/OSS/configure.c:148 -#, c-format -msgid "Default (%s)" -msgstr "Predvolené (%s)" - -#: src/OSS/configure.c:197 -msgid "OSS Driver configuration" -msgstr "Nastavenie ovládaÄa OSS" - -#: src/OSS/configure.c:298 src/sun/configure.c:246 -msgid "Devices" -msgstr "Zariadenia" - -#: src/OSS/configure.c:300 src/sun/configure.c:257 -msgid "Buffering:" -msgstr "Vyrovnávanie:" - -#: src/OSS/configure.c:313 src/sun/configure.c:288 -msgid "Pre-buffer (percent):" -msgstr "Dopredu naÄítaÅ¥ (v percentách):" - -#: src/OSS/configure.c:324 src/sun/configure.c:302 -msgid "Buffering" -msgstr "Vyrovnávanie" - -#: src/OSS/configure.c:325 -msgid "Mixer Settings:" -msgstr "Nastavenia mixéra:" - -#: src/OSS/configure.c:331 -msgid "Volume controls Master not PCM" -msgstr "HlasitosÅ¥ je ovládaná kanálom Master a nie PCM" - -#: src/OSS/configure.c:337 src/sun/configure.c:392 -msgid "Mixer" -msgstr "Mixér" - -#: src/OSS/OSS.c:40 -msgid "About OSS Driver" -msgstr "O module OSS" - -#: src/OSS/OSS.c:41 -msgid "" -"Audacious OSS Driver\n" +"Looking for lyrics..." +msgstr "" "\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" -"OSS ovládaÄ pre Audacious\n" -"\n" -"Tento program je slobodný softvér. Môžete ho šíriÅ¥ a/alebo upravovaÅ¥ podľa " -"ustanovení GNU GPL, vydávanej nadáciou Free Software Foundation; buÄ vo " -"verzii 2 tejto licencie, alebo (podľa vášho uváženia) v ľubovoľnej novÅ¡ej " -"verzii.\n" -"\n" -"Tento program je rozÅ¡irovaný v nádeji, že bude užitoÄný, ale BEZ AKEJKOĽVEK " -"ZÃRUKY; neposkytujú sa ani odvodené záruky PREDAJNOSTI, alebo VHODNOSTI PRE " -"URÄŒITà ÚČEL. ÄŽalÅ¡ie podrobnosti hľadajte v GNU GPL.\n" -"\n" -"Kópiu GNU GPL by ste mali dostaÅ¥ spolu s týmto programom. Ak sa tak nestalo, " -"požiadajte o ňu Free Software Foundation, Inc., 51 Franklin Street, Fifth " -"Floor, Boston, MA 02110-1301, USA." - -#: src/pulse_audio/pulse_audio.c:691 -msgid "About Audacious PulseAudio Output Plugin" -msgstr "O výstupnom module PulseAudio pre Audacious" +"Vyhľadáva sa text skladby..." -#: src/pulse_audio/pulse_audio.c:692 +#: src/lyricwiki/lyricwiki.c:304 msgid "" -"Audacious PulseAudio Output Plugin\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" "\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." +"Connecting to lyrics.wikia.com..." msgstr "" -"Výstupný modul PulseAudio pre Audacious\n" -"\n" -"Tento program je slobodný softvér. Môžete ho šíriÅ¥ a/alebo upravovaÅ¥ podľa " -"ustanovení GNU GPL, vydávanej nadáciou Free Software Foundation buÄ vo " -"verzii 2, tejto licencie, alebo (podľa vášho uváženia) v ľubovoľnej novÅ¡ej " -"verzii.\n" "\n" -"Tento program je rozÅ¡irovaný v nádeji, že bude užitoÄný, ale BEZ AKEJKOĽVEK " -"ZÃRUKY. Neposkytujú sa ani odvodené záruky PREDAJNOSTI alebo VHODNOSTI PRE " -"URÄŒITà ÚČEL. ÄŽalÅ¡ie podrobnosti hľadajte v GNU GPL.\n" -"\n" -"Kópiu GNU GPL ste mali dostaÅ¥ spolu s týmto programom. Ak sa tak nestalo, " -"požiadajte o ňu Free Software Foundation, Inc., 51 Franklin Street, Fifth " -"Floor, Boston, MA 02110-1301, USA." - -#: src/resample/plugin.c:78 -msgid "About Sample Rate Converter Plugin" -msgstr "O module Konvertor vzorkovacej frekvencie" +"Pripájanie na lyrics.wikia.com..." -#: src/resample/plugin.c:134 -msgid "Sample Rate Converter Preferences" -msgstr "Nastavenia konverzie vzorkovacej frekvencie" - -#: src/resample/plugin.c:146 -msgid "Rate mappings:" -msgstr "Priradenie frekvencií:" - -#: src/resample/plugin.c:169 -msgid "All others:" -msgstr "VÅ¡etky ostatné:" - -#: src/resample/plugin.c:181 -msgid "Method:" -msgstr "Metóda:" - -#: src/scrobbler/configure.c:152 src/scrobbler/configure.c:228 -msgid "Change password" -msgstr "ZmeniÅ¥ heslo" - -#: src/scrobbler/configure.c:174 -msgid "Services" -msgstr "Služby" - -#: src/scrobbler/configure.c:196 -msgid "Username:" -msgstr "Prístupové meno:" - -#: src/scrobbler/configure.c:202 -msgid "Password:" -msgstr "Heslo:" - -#: src/scrobbler/configure.c:210 -msgid "Scrobbler URL:" -msgstr "URL Scrobblera:" - -#: src/scrobbler/configure.c:242 -msgid "Last.FM" -msgstr "Last.FM" - -#: src/scrobbler/configure.c:287 -msgid "Scrobbler" -msgstr "Scrobbler" - -#: src/scrobbler/plugin.c:213 +#: src/lyricwiki/lyricwiki.c:377 msgid "" -"Audacious AudioScrobbler Plugin\n" "\n" -"Originally created by Audun Hove and Pipian \n" +"No lyrics were found." msgstr "" -"Modul AudioScrobbler pre Audacious\n" "\n" -"Pôvodne vytvoril Audun Hove a Pipian \n" - -#: src/scrobbler/plugin.c:215 -msgid "About Scrobbler Plugin" -msgstr "O module Scrobbler" - -#: src/sid/xs_about.c:84 -#, c-format -msgid "About %s" -msgstr "O %s" - -#: src/sid/xs_config.c:322 -msgid " Error" -msgstr " Chyba" - -#: src/sid/xs_fileinfo.c:151 -msgid "General info" -msgstr "VÅ¡eobecné informácie" - -#: src/sid/xs_fileinfo.c:164 -#, c-format -msgid "Tune #%i: " -msgstr "Skladba Ä. %i: " - -#: src/sid/xs_interface.c:234 -msgid "Audacious-SID configuration" -msgstr "Nastavenie Audacious-SID" - -#: src/sid/xs_interface.c:270 -msgid "8-bit" -msgstr "8 bitov" - -#: src/sid/xs_interface.c:277 -msgid "16-bit" -msgstr "16 bitov" - -#: src/sid/xs_interface.c:284 -msgid "Resolution:" -msgstr "Rozlíšenie:" - -#: src/sid/xs_interface.c:315 -msgid "Autopanning" -msgstr "Automatický priestorový posun" - -#: src/sid/xs_interface.c:322 -msgid "Channels:" -msgstr "PoÄet kanálov:" +"Žiadne texty neboli nájdené." -#: src/sid/xs_interface.c:366 -msgid "Samplerate:" -msgstr "Vzorkovacia frekvencia:" - -#: src/sid/xs_interface.c:383 -msgid "Use oversampling" -msgstr "PrevzorkovaÅ¥" - -#: src/sid/xs_interface.c:394 -msgid "Factor:" -msgstr "ÄŒiniteľ:" - -#: src/sid/xs_interface.c:406 -msgid "Large factors require more CPU-power" -msgstr "Vysoký Äiniteľ vyžaduje väÄší výkon procesoru" - -#: src/sid/xs_interface.c:412 -msgid "Oversampling:" -msgstr "Prevzorkovanie:" - -#: src/sid/xs_interface.c:417 -msgid "Audio" -msgstr "Zvuk" - -#: src/sid/xs_interface.c:445 -msgid "Force speed" -msgstr "VnútiÅ¥ rýchlosÅ¥" - -#: src/sid/xs_interface.c:449 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"clock speed/frequency. Otherwise the speed is determined from played file " -"itself." -msgstr "" -"Ak je povolené, bude emulaÄnému jadru vnútená zvolená hodinová frekvencia. " -"Inak bude rýchlosÅ¥ urÄená zo samotného prehrávaného súboru." - -#: src/sid/xs_interface.c:451 -msgid "PAL (50 Hz)" -msgstr "PAL (50Hz)" - -#: src/sid/xs_interface.c:455 -msgid "" -"PAL is the european TV standard, which uses 50Hz vertical refresh frequency. " -"Most of SID-tunes have been made for PAL computers." -msgstr "" -"PAL je európskeho norma televízneho vysielania, ktorá používa 50Hz " -"vertikálnu obnovovaciu frekvenciu. VäÄÅ¡ina SID skladieb bola vytvorená pre " -"poÄítaÄe s PAL výstupom." - -#: src/sid/xs_interface.c:459 -msgid "NTSC (60 Hz)" -msgstr "NTSC (60Hz)" - -#: src/sid/xs_interface.c:463 -msgid "" -"NTSC is the TV standard with 60Hz vertical refresh rate (and other features " -"that differ from PAL). It is mainly used in United States, Japan and certain " -"other countries." -msgstr "" -"NTSC je norma televízneho vysielanie s 60Hz vertikálnou obnovovacou " -"frekvenciou (a s Äalšími odliÅ¡nosÅ¥ami od normy PAL). Používa sa hlavne v " -"Spojených Å¡tátoch, Japonsku a v niekoľkých Äalších krajinách." - -#: src/sid/xs_interface.c:467 -msgid "Clock speed:" -msgstr "Hodinová frekvencia:" - -#: src/sid/xs_interface.c:484 -msgid "Force model" -msgstr "VnútiÅ¥ model" - -#: src/sid/xs_interface.c:488 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"SID-chip model. Otherwise the preferred SID model is determined from the " -"file (if PSIDv2NG type) or if not available, this setting is used." -msgstr "" -"Ak je povolené, emulaÄnému jadru bude vnútený typ SID Äipu. V opaÄnom " -"prípade bude typ SID Äipu urÄený zo súboru (ak je typu PSIDv2NG), alebo, ak " -"nie je informácia dostupná, použije sa vybraný typ." - -#: src/sid/xs_interface.c:490 -msgid "MOS 6581" -msgstr "MOS 6581" - -#: src/sid/xs_interface.c:494 -msgid "" -"MOS/CSG 6581 is the earlier major version of SID chip. It differs from 8580 " -"in few ways, having much fuller filter (which, due to design error, is never " -"same between two different SID-chips) and has the \"volume adjustment bug\", " -"which enables playing of digital samples." -msgstr "" -"MOS/CSG 6581 je skorÅ¡ia hlavná verzia SID Äipu. V porovnaní s 8580 má " -"niekoľko odliÅ¡ností. Má oveľa plnší filter (ktorý, kvôli chybe v návrhu, nie " -"je nikdy rovnaký medzi dvomi rôznymi SID Äipmi) a má „chybu pri regulovaní " -"hlasitosti“, ktorá umožňuje prehrávanie digitálnych vzoriek." - -#: src/sid/xs_interface.c:498 -msgid "MOS 8580" -msgstr "MOS 8580" - -#: src/sid/xs_interface.c:505 -msgid "SID model:" -msgstr "Typ SID Äipu:" - -#: src/sid/xs_interface.c:522 -msgid "SIDPlay 1 (frame-based)" -msgstr "SIDPlay 1 (založené na snímkoch)" - -#: src/sid/xs_interface.c:526 -msgid "" -"Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most " -"cases, though." -msgstr "" -"Pre emuláciu sa použije knižnica libSIDPlay 1.x. Je rýchlejÅ¡ia, ale nie je " -"tak presná. Napriek tomu je vo väÄÅ¡ine prípadov dostaÄujúca." - -#: src/sid/xs_interface.c:530 -msgid "SIDPlay 2 (cycle-based)" -msgstr "SIDPlay 2 (založené na cykloch)" - -#: src/sid/xs_interface.c:534 -msgid "" -"Use libSIDPlay 2.x emulation, which requires powerful CPU due to more exact " -"emulation." -msgstr "" -"Pre emuláciu sa použije knižnica libSIDPlay 2.x. Kvôli presnejÅ¡ej emulácii " -"vyžaduje väÄší výkon procesoru." - -#: src/sid/xs_interface.c:538 -msgid "Emulation library selection:" -msgstr "Výber emulaÄnej knižnice:" - -#: src/sid/xs_interface.c:555 -msgid "Real C64 (SIDPlay 2 only)" -msgstr "SkutoÄný C64 (iba pre SIDPlay 2)" - -#: src/sid/xs_interface.c:562 -msgid "Bank switching" -msgstr "Prepínanie bánk" - -#: src/sid/xs_interface.c:569 -msgid "Transparent ROM" -msgstr "Transparentná ROM" - -#: src/sid/xs_interface.c:576 -msgid "PlaySID environment" -msgstr "Prostredie PlaySID" - -#: src/sid/xs_interface.c:583 -msgid "Memory mode:" -msgstr "Režim pamäte:" - -#: src/sid/xs_interface.c:588 -msgid "Emu#1" -msgstr "Emu#1" - -#: src/sid/xs_interface.c:611 -msgid "Optimization mode (faster, inaccurate)" -msgstr "Optimalizovaný mód (rýchlejší, nepresný)" - -#: src/sid/xs_interface.c:615 -msgid "" -"This setting can be used to enable libSIDPlay2's \"optimization mode\", " -"which in downgrades the emulation from cycle-exact to something similar to " -"frame-exact. The result is lower CPU usage, but worse accuracy." -msgstr "" -"Táto voľba môže byÅ¥ použitá pre povolenie „optimalizovaného módu“, v ktorom " -"sa znižuje presnosÅ¥ emulácie z presnosti na cyklus k presnosti na snímok. " -"Výsledkom je nižšie zaÅ¥aženie procesoru, ale aj menÅ¡ia presnosÅ¥." - -#: src/sid/xs_interface.c:617 -msgid "reSID-emulation" -msgstr "Emulácia reSID" - -#: src/sid/xs_interface.c:621 -msgid "" -"reSID is the software SID-chip simulator based on SID reverse-engineering, " -"created by Dag Lem. It is probably the closest thing to real SID available " -"as software-only emulation." -msgstr "" -"reSID je softvérový simulátor SID Äipu založený na spätnom inžinierstve SID " -"Äipu, ktorého autorom je Dag Lem. Ide pravdepodobne o najvernejÅ¡iu " -"softvérovú emuláciu SID Äipu." - -#: src/sid/xs_interface.c:625 -msgid "HardSID" -msgstr "HardSID" - -#: src/sid/xs_interface.c:629 -msgid "" -"HardSID is a EISA/PCI card for PC-compatibles, which can be fitted with a " -"real SID-chip. Software can be used to control the HardSID and combined with " -"software emulation of rest of C64 via libSIDPlay2 HardSID can be used to " -"achieve \"near 100%\" similarity to real C64. For more information, see " -"http://www.hardsid.com/" -msgstr "" -"HardSID je EISA/PCI karta pre PC kompatibilné poÄítaÄe, ktorá môže byÅ¥ " -"vybavená skutoÄným SID Äipom. Softvér slúži na ovládanie HardSID a v " -"kombinácii so softvérovou emuláciou zbytku C64 pomocou libSIDPlay2 sa dá " -"dosiahnuÅ¥ „takmer 100%“ zhoda so skutoÄným C64. Viac informácií nájdete na " -"http://www.hardsid.com/" - -#: src/sid/xs_interface.c:633 -msgid "SIDPlay 2 options:" -msgstr "Možnosti SIDPlay2:" - -#: src/sid/xs_interface.c:650 -msgid "Fast (nearest neighbour)" -msgstr "Rýchla (najbližšia susedná vzorka)" - -#: src/sid/xs_interface.c:654 -msgid "" -"Fastest and also worst sounding sampling method, simply picks nearest " -"neighbouring sample." -msgstr "" -"NajrýchlejÅ¡ia a tiež najhorÅ¡ie znejúca vzorkovacia metóda, jednoducho vyberá " -"najbližšiu susednú vzorku." - -#: src/sid/xs_interface.c:658 -msgid "Linear interpolation" -msgstr "Lineárna interpolácia" - -#: src/sid/xs_interface.c:662 -msgid "" -"Uses linear interpolation between samples, yielding higher audio quality " -"with less sampling noise." -msgstr "" -"Používa lineárnu interpoláciu medzi vzorkami, Äím dosahuje vyÅ¡Å¡iu kvalitu " -"zvuku s menšími ruchmi." - -#: src/sid/xs_interface.c:673 -msgid "Resampling (FIR)" -msgstr "Prevzorkovanie (FIR)" - -#: src/sid/xs_interface.c:680 -msgid "reSID sampling options:" -msgstr "Možnosti vzorkovania reSID:" - -#: src/sid/xs_interface.c:685 -msgid "Emu#2" -msgstr "Emu#2" - -#: src/sid/xs_interface.c:697 -msgid "Emulate filters" -msgstr "EmulovaÅ¥ filtre" +#: src/metronom/metronom.c:86 +msgid "About Metronom" +msgstr "O module Metronóm" -#: src/sid/xs_interface.c:701 +#: src/metronom/metronom.c:87 msgid "" -"This option enables emulation of SID filter. The filter is an essential part " -"of SID's sound capacity, but accurate emulation of it may require quite much " -"CPU power. However, if filter emulation is disabled, tunes won't sound " -"authentic at all if they utilize the filter." -msgstr "" -"Táto možnosÅ¥ povoľuje emuláciu SID filtra. Filter je dôležitou súÄasÅ¥ou " -"zvukovej výbavy SID Äipu, ale jeho presná emulácia môže vyžadovaÅ¥ dosÅ¥ veľký " -"výkon procesoru. Ak vÅ¡ak tento filter vypnete, skladby, ktoré ho používajú, " -"nebudú znieÅ¥ verne." - -#: src/sid/xs_interface.c:726 -msgid "FS" -msgstr "FS" - -#: src/sid/xs_interface.c:743 -msgid "FM" -msgstr "FM" - -#: src/sid/xs_interface.c:760 -msgid "FT" -msgstr "FT" - -#: src/sid/xs_interface.c:771 -msgid "Reset values" -msgstr "ObnoviÅ¥ hodnoty" - -#: src/sid/xs_interface.c:776 -msgid "SIDPlay1" -msgstr "SIDPlay1" - -#: src/sid/xs_interface.c:817 -msgid "Export" -msgstr "ExportovaÅ¥" - -#: src/sid/xs_interface.c:825 -msgid "Use" -msgstr "PoužiÅ¥" - -#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:430 -msgid "Save" -msgstr "UložiÅ¥" - -#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:429 -msgid "Import" -msgstr "ImportovaÅ¥" - -#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:431 -msgid "Delete" -msgstr "VymazaÅ¥" - -#: src/sid/xs_interface.c:863 -msgid "Filter curve:" -msgstr "Krivka filtra:" - -#: src/sid/xs_interface.c:868 -msgid "SIDPlay2" -msgstr "SIDPlay2" - -#: src/sid/xs_interface.c:874 -msgid "Filters" -msgstr "Filtre" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +msgstr "" +"Generátor taktu od Martina Straussa \n" +"\n" +"Pre použitie pridajte URL: tact://úderov*dôb/dĺžka\n" +"napr. tact://77 pre 77 úderov za minútu\n" +"alebo tact://60*3/4 pre 60 úderov za minútu v 3/4 takte" -#: src/sid/xs_interface.c:897 -msgid "Play at least for specified time" -msgstr "PrehrávaÅ¥ aspoň poÄas urÄenej doby" +#: src/metronom/metronom.c:144 +#, c-format +msgid "Tact generator: %d bpm" +msgstr "Generátor taktu: %d bpm" -#: src/sid/xs_interface.c:901 -msgid "" -"If enabled, the tune is played at least for the specified time, adding " -"silence to the end if necessary." -msgstr "" -"Ak je povolené, skladba je prehrávaná aspoň poÄas urÄenej doby. Ak je to " -"potrebné, bude na koniec skladby pridané ticho." +#: src/metronom/metronom.c:146 +#, c-format +msgid "Tact generator: %d bpm %d/%d" +msgstr "Generátor taktu: %d bpm %d/%d" -#: src/sid/xs_interface.c:908 src/sid/xs_interface.c:962 -#: src/sid/xs_interface.c:1142 -msgid "Playtime:" -msgstr "Doba prehrávania:" +#: src/mixer/plugin.c:64 +msgid "About Channel Mixer" +msgstr "O zmieÅ¡avaÄi kanálov" + +#: src/mixer/plugin.c:93 +msgid "Channel Mixer Settings" +msgstr "Nastavenie znieÅ¡avaÄa kanálov" + +#: src/mixer/plugin.c:102 +msgid "Output channels:" +msgstr "Výstupné kanály:" + +#: src/mixer/plugin.c:112 +msgid "Changes take effect at the next song change." +msgstr "Zmeny sa prejavia pri prepnutí na ÄalÅ¡iu skladbu." -#: src/sid/xs_interface.c:928 -msgid "Minimum playtime:" -msgstr "Minimálna doba prehrávania:" +#: src/mpg123/mpg123.c:191 +msgid "Surround" +msgstr "Priestorový zvuk" -#: src/sid/xs_interface.c:945 -msgid "Play for specified time maximum" -msgstr "PrehrávaÅ¥ maximálne poÄas urÄenej doby" +#: src/mtp_up/mtp.c:336 +msgid "Upload in progress..." +msgstr "Prebieha nahrávanie…" -#: src/sid/xs_interface.c:949 -msgid "" -"If enabled, tune is played until specified duration is reached (aka maximum " -"playtime)." -msgstr "" -"Ak je povolené, skladba bude prehrávaná najdlhÅ¡ie poÄas urÄenej doby (tz. " -"poÄas maximálnej dĺžky prehrávania)." +#: src/mtp_up/mtp.c:348 +msgid "Upload to MTP Device" +msgstr "NahraÅ¥ do zariadenia MTP" + +#: src/mtp_up/mtp.c:349 +msgid "Disconnect MTP Device" +msgstr "OdpojiÅ¥ zariadenie MTP" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Stopped" +msgstr "Zastavené" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Audacious is not playing." +msgstr "Audacious teraz neprehráva." -#: src/sid/xs_interface.c:951 -msgid "Only when song length is unknown" -msgstr "Len ak je dĺžka skladby neznáma" +#: src/null/null.c:64 +msgid "Null output plugin " +msgstr "Slepý výstupný modul" -#: src/sid/xs_interface.c:955 +#: src/null/null.c:65 msgid "" -"If enabled, the maximum playtime is applied only if song/tune length is not " -"known." +" by Christian Birchinger \n" +"based on the XMMS plugin by HÃ¥vard KvÃ¥l " msgstr "" -"Ak je povolené, maximálna doba prehrávania sa použije iba ak nie je dĺžka " -"skladby známa." +" napísal Christian Birchinger \n" +"založené na module pre XMMS, autorom ktorého je HÃ¥vard KvÃ¥l " -#: src/sid/xs_interface.c:982 -msgid "Maximum playtime:" -msgstr "Maximálna doba prehrávania:" +#: src/null/null.c:68 +msgid "About Null Output" +msgstr "O slepom výstupnom module" -#: src/sid/xs_interface.c:999 -msgid "Use XSIDPLAY-compatible database" -msgstr "PoužiÅ¥ databázu kompatibilnú s XSIDPLAY" +#: src/null/null.c:89 +msgid "Null output preferences" +msgstr "Predvoľby slepého výstupu" -#: src/sid/xs_interface.c:1003 -msgid "" -"This option enables using of XSIDPLAY compatible song length database. " -"(Refer to Audacious-SID documentation for more information)" -msgstr "" -"Táto voľba poloví používanie XSIDPLAY kompatibilnej databázy s dĺžkami " -"skladieb. (Podrobnosti nájdete v dokumentácii k modulu Audacious-SID)" +#: src/null/null.c:100 +msgid "Run in real time" +msgstr "BežaÅ¥ v reálnom Äase" -#: src/sid/xs_interface.c:1010 -msgid "DB-file:" -msgstr "Súbor s databázou:" +#: src/oss4/configure.c:81 +msgid "1. Default device" +msgstr "1. Å tandardné zariadenie" -#: src/sid/xs_interface.c:1020 -msgid "Database path and filename" -msgstr "Celá cesta k súboru s databázou" +#: src/oss4/configure.c:138 +msgid "OSS4 Output Plugin Preferences" +msgstr "Predvoľby výstupného modulu OSS4" -#: src/sid/xs_interface.c:1027 -msgid "Browse for song length-database file" -msgstr "VyhľadaÅ¥ súbor s databázou dĺžok skladieb" +#: src/oss4/configure.c:150 src/OSS/configure.c:194 +msgid "Audio device:" +msgstr "Zvukové zariadenie:" -#: src/sid/xs_interface.c:1049 -msgid "Song length database:" -msgstr "Databáza s dĺžkou skladby:" +#: src/oss4/configure.c:178 src/OSS/configure.c:217 src/OSS/configure.c:260 +msgid "Use alternate device:" +msgstr "PoužiÅ¥ iné zariadenie:" -#: src/sid/xs_interface.c:1054 -msgid "Songlength" -msgstr "Dĺžka skladby" +#: src/oss4/configure.c:193 +msgid "Save volume between sessions" +msgstr "Medi reláciami uložiÅ¥ hlasitosÅ¥" -#: src/sid/xs_interface.c:1072 -msgid "Override generic Tuplez format string" -msgstr "NahradiÅ¥ vÅ¡eobecný formátovací reÅ¥azec Tuplez" +#: src/oss4/configure.c:197 +msgid "Enable format conversions made by the OSS software." +msgstr "PovoliÅ¥ konverziu formátu prostredníctvom OSS." -#: src/sid/xs_interface.c:1076 -msgid "" -"By enabling this option you can specify a custom Tuplez formatting string " -"for SID-files. The SID-plugin specific Tuplez tags are described shortly " -"below." -msgstr "" -"Po povolení tejto voľby môžete urÄiÅ¥ používateľsky formátovací reÅ¥azec " -"Tuplez pre súbory SID. Tuplez znaÄky Å¡pecifické pre modul SID sú popísané " -"nižšie." +#: src/oss4/configure.c:201 +msgid "Enable exclusive mode to prevent virtual mixing." +msgstr "PovoliÅ¥ exkluzívny režim pre predchádzanie virtuálnemu zmieÅ¡avaniu." -#: src/sid/xs_interface.c:1087 -msgid "Tuplez format string for SID-files" -msgstr "Formátovací reÅ¥azec Tuplez pre súbory SID" +#: src/oss4/plugin.c:51 +msgid "About OSS4 Plugin" +msgstr "O module OSS4" -#: src/sid/xs_interface.c:1090 -msgid "" -"SID-specific Tuplez fields:\n" -"\n" -"sid-format\t\t- Specific fileformat\n" -"sid-model\t\t- 6581 or 8580\n" -"sid-speed\t\t- Timing or speed: PAL/NTSC/etc.\n" -"\n" -"Other \"special\" fields set:\n" -"\n" -"subsong-num, subsong-id" -msgstr "" -"Tuplez položky Å¡pecifické pre SID:\n" -"\n" -"sid-format\t\t- Presný formát súboru\n" -"sid-model\t\t- 6581 alebo 8580\n" -"sid-speed\t\t- ÄŒasovanie alebo rýchlosÅ¥: PAL/NTSC atÄ.\n" -"\n" -"Ostatné „špeciálne“ sady položiek:\n" -"\n" -"subsong-num, subsong-id" +#: src/oss4/utils.c:211 +msgid "OSS4 error" +msgstr "Chyba OSS4" -#: src/sid/xs_interface.c:1098 -msgid "Song title format:" -msgstr "Formát názvu skladby:" +#: src/OSS/configure.c:137 +#, c-format +msgid "Default (%s)" +msgstr "Predvolené (%s)" -#: src/sid/xs_interface.c:1103 -msgid "Title" -msgstr "Názov" +#: src/OSS/configure.c:178 +msgid "OSS Driver configuration" +msgstr "Nastavenie ovládaÄa OSS" -#: src/sid/xs_interface.c:1125 -msgid "Add sub-tunes to playlist" -msgstr "PridaÅ¥ podskladby do zoznamu skladieb" +#: src/OSS/configure.c:281 +msgid "Devices" +msgstr "Zariadenia" -#: src/sid/xs_interface.c:1129 -msgid "" -"If enabled, sub-tunes of each file will be added to playlist. If disabled, " -"only the default sub-tune will be added." -msgstr "" -"Ak je povolené, do zoznamu skladieb budú pridané podskladby každého súboru. " -"Ak je zakázané, do zoznamu skladieb bude pridaná iba predvolená podskladba." +#: src/OSS/configure.c:283 +msgid "Buffering:" +msgstr "Vyrovnávanie:" -#: src/sid/xs_interface.c:1131 -msgid "Only tunes with specified minimum duration" -msgstr "Iba skladby dlhÅ¡ie ako zadaná dĺžka prehrávania" +#: src/OSS/configure.c:296 +msgid "Pre-buffer (percent):" +msgstr "Dopredu naÄítaÅ¥ (v percentách):" -#: src/sid/xs_interface.c:1135 -msgid "Only add sub-tunes that have a duration of at least specified time." -msgstr "Pridajú sa iba podskladby, ktorých dĺžka je aspoň rovná zadanej dĺžke." +#: src/OSS/configure.c:307 +msgid "Buffering" +msgstr "Vyrovnávanie" -#: src/sid/xs_interface.c:1162 -msgid "Sub-tune handling:" -msgstr "Narábanie s podskladbami:" +#: src/OSS/configure.c:308 +msgid "Mixer Settings:" +msgstr "Nastavenia mixéra:" -#: src/sid/xs_interface.c:1179 -msgid "Use STIL database" -msgstr "PoužívaÅ¥ databázu STIL" +#: src/OSS/configure.c:314 +msgid "Volume controls Master not PCM" +msgstr "HlasitosÅ¥ je ovládaná kanálom Master a nie PCM" -#: src/sid/xs_interface.c:1183 -msgid "" -"If this option is enabled (and the database & HVSC settings below are " -"correctly set), Audacious-SID will use and display additional information " -"from STIL database when HVSC SIDs are played." -msgstr "" -"Ak je táto voľba povolená (a sú správne nastavené databáza a HVSC " -"nastavenia), Audacious-SID pri prehrávaní súborov HVSC SID použije a zobrazí " -"doplňujúce informácie z databázy STIL." +#: src/OSS/configure.c:320 +msgid "Mixer" +msgstr "Mixér" -#: src/sid/xs_interface.c:1190 -msgid "STIL file:" -msgstr "Súbor STIL:" +#: src/OSS/OSS.c:41 +msgid "About OSS Driver" +msgstr "O module OSS" -#: src/sid/xs_interface.c:1206 -msgid "" -"Path and filename of STIL database file (STIL.txt), usually found from " -"HVSC's DOCUMENTS-subdirectory." -msgstr "" -"Cesta a názov súboru STIL databázy (STIL.txt). ZvyÄajne sa nachádza v " -"podadresári DOCUMENTS od HVSC." +#: src/pulse_audio/pulse_audio.c:669 +msgid "About Audacious PulseAudio Output Plugin" +msgstr "O výstupnom module PulseAudio pre Audacious" -#: src/sid/xs_interface.c:1219 -msgid "Browse for STIL-database file" -msgstr "VybraÅ¥ cestu k súboru STIL databázy" +#: src/resample/plugin.c:89 +msgid "About Sample Rate Converter Plugin" +msgstr "O module Konvertor vzorkovacej frekvencie" -#: src/sid/xs_interface.c:1246 -msgid "HVSC path:" -msgstr "Cesta k HVSC:" +#: src/resample/plugin.c:144 +msgid "Sample Rate Converter Preferences" +msgstr "Nastavenia konverzie vzorkovacej frekvencie" -#: src/sid/xs_interface.c:1262 -msgid "" -"Path to base-directory of your High Voltage SID Collection (HVSC), for " -"example /media/C64Music/" -msgstr "" -"Cesta ku koreňovému adresáru vaÅ¡ej zbierky High Voltage SID (HVSC) (napr. /" -"media/C64Music/)" +#: src/resample/plugin.c:156 +msgid "Rate mappings:" +msgstr "Priradenie frekvencií:" -#: src/sid/xs_interface.c:1275 -msgid "Browse for HVSC path" -msgstr "VybraÅ¥ cestu k HVSC" +#: src/resample/plugin.c:179 +msgid "All others:" +msgstr "VÅ¡etky ostatné:" -#: src/sid/xs_interface.c:1297 -msgid "SID Tune Information List (STIL) database:" -msgstr "Databáza SID Tune Information List (STIL):" +#: src/resample/plugin.c:191 +msgid "Method:" +msgstr "Metóda:" -#: src/sid/xs_interface.c:1321 -msgid "Cancel any changes" -msgstr "ZruÅ¡iÅ¥ vÅ¡etky zmeny" +#: src/scrobbler/configure.c:123 src/scrobbler/configure.c:198 +msgid "Change password" +msgstr "ZmeniÅ¥ heslo" -#: src/sid/xs_interface.c:1328 -msgid "Accept and update changes" -msgstr "PrijaÅ¥ a uložiÅ¥ zmeny" +#: src/scrobbler/configure.c:144 +msgid "Services" +msgstr "Služby" -#: src/sid/xs_interface.c:1628 -msgid "Audacious-SID Fileinfo" -msgstr "Audacious - Informácie o súbore SID" +#: src/scrobbler/configure.c:166 +msgid "Username:" +msgstr "Prístupové meno:" -#: src/sid/xs_interface.c:1649 -msgid "Filename:" -msgstr "Názov súboru:" +#: src/scrobbler/configure.c:172 +msgid "Password:" +msgstr "Heslo:" -#: src/sid/xs_interface.c:1657 -msgid "Songname:" -msgstr "Názov skladby:" +#: src/scrobbler/configure.c:180 +msgid "Scrobbler URL:" +msgstr "URL Scrobblera:" -#: src/sid/xs_interface.c:1665 -msgid "Composer:" -msgstr "Skladateľ:" +#: src/scrobbler/configure.c:212 +msgid "Last.FM" +msgstr "Last.FM" -#: src/sid/xs_interface.c:1673 -msgid "Copyright:" -msgstr "Autorské práva:" +#: src/scrobbler/configure.c:239 +msgid "Scrobbler" +msgstr "Scrobbler" -#: src/sid/xs_interface.c:1717 -msgid "Song Information:" -msgstr "Informácie o skladbe:" +#: src/scrobbler/plugin.c:194 +msgid "" +"Audacious AudioScrobbler Plugin\n" +"\n" +"Originally created by Audun Hove and Pipian \n" +msgstr "" +"Modul AudioScrobbler pre Audacious\n" +"\n" +"Pôvodne vytvoril Audun Hove a Pipian \n" -#: src/sid/xs_interface.c:1752 -msgid "Author:" -msgstr "Autor:" +#: src/scrobbler/plugin.c:196 +msgid "About Scrobbler Plugin" +msgstr "O module Scrobbler" -#: src/sid/xs_interface.c:1786 -msgid "Duration:" -msgstr "Dĺžka:" +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" +msgstr "O výstupnom module SDL" -#: src/sid/xs_interface.c:1820 -msgid "Sub-tune Information:" -msgstr "Informácie o podskladbe:" +#: src/sdlout/plugin.c:78 +msgid "SDL error" +msgstr "Chyba SDL" -#: src/sid/xs_interface.c:1881 -msgid "Select HVSC song length database" -msgstr "VybraÅ¥ databázu dĺžok skladieb od HVSC" +#: src/search-tool/search-tool.c:42 +msgid "Genre" +msgstr "Žáner" -#: src/sid/xs_interface.c:1922 -msgid "Select STIL-database" -msgstr "VybraÅ¥ databázu STIL" +#: src/search-tool/search-tool.c:96 src/search-tool/search-tool.c:106 +msgid "Library" +msgstr "Knižnica" -#: src/sid/xs_interface.c:1963 -msgid "Select HVSC location prefix" -msgstr "VybraÅ¥ cestu k HVSC" +#: src/search-tool/search-tool.c:591 +msgid "_Create Playlist" +msgstr "_VytvoriÅ¥ zoznam skladieb" -#: src/sid/xs_interface.c:2004 -msgid "Select SIDPlay2 filters file for importing" -msgstr "VybraÅ¥ súbor so SIDPlay2 filtrami pre import" +#: src/search-tool/search-tool.c:598 +msgid "_Add to Playlist" +msgstr "_PridaÅ¥ do zoznamu skladieb" -#: src/sid/xs_interface.c:2045 -msgid "Select SIDPlay2 filters file for exporting" -msgstr "VybraÅ¥ súbor s SIDPlay2 filtrami pre export" +#: src/search-tool/search-tool.c:641 +msgid "Search library" +msgstr "VyhľadaÅ¥ knižnicu" -#: src/sid/xs_interface.c:2093 src/sid/xs_interface.c:2106 -msgid "Confirm selected action" -msgstr "PotvrdiÅ¥ vybranú akciu" +#: src/search-tool/search-tool.c:645 +msgid "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." +msgstr "" +"Pre import hudobnej knižnice do Audacious, vyberte prieÄinok a potom " +"kliknite na ikonu \"obnoviÅ¥\"." -#: src/sid/xs_interface.c:2123 -msgid "Yes" -msgstr "Ãno" +#: src/search-tool/search-tool.c:653 +msgid "Please wait ..." +msgstr "ÄŒakajte prosím ..." -#: src/sid/xs_interface.c:2129 -msgid "No" -msgstr "Nie" +#: src/search-tool/search-tool.c:675 +msgid "Choose Folder" +msgstr "VybraÅ¥ prieÄinok" -#: src/skins/plugin.c:179 +#: src/skins/plugin.c:167 msgid "About Skinned GUI" msgstr "O rozhraní s meniteľným vzhľadom" -#: src/skins/plugin.c:180 +#: src/skins/plugin.c:168 msgid "" "Copyright (c) 2008, by Tomasz MoÅ„ \n" "\n" @@ -4568,897 +2479,940 @@ "Copyright (c) 2008 Tomasz MoÅ„ \n" "\n" -#: src/skins/plugin.c:196 -msgid "Skinned Interface" -msgstr "Rozhranie s meniteľným vzhľadom" - -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:207 msgid "_Player:" msgstr "V _okne prehrávaÄa:" -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:208 msgid "Select main player window font:" msgstr "Vyberte písmo pre hlavné okno prehrávaÄa:" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:210 msgid "_Playlist:" msgstr "V zozname _skladieb:" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:211 msgid "Select playlist font:" msgstr "Vyberte písmo pre zoznam skladieb:" -#: src/skins/skins_cfg.c:321 +#: src/skins/skins_cfg.c:215 msgid "_Fonts" msgstr "_Písma" -#: src/skins/skins_cfg.c:323 -msgid "Use Bitmap fonts if available" -msgstr "Ak sú dostupné, použiÅ¥ bitmapové písma" +#: src/skins/skins_cfg.c:218 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "PoužiÅ¥ bitmapové písma (podporuje iba ASCII)" + +#: src/skins/skins_cfg.c:220 +msgid "Scroll song title in both directions" +msgstr "RolovaÅ¥ názov skladby obidvoma smermi" -#: src/skins/skins_cfg.c:323 -msgid "" -"Use bitmap fonts if they are available. Bitmap fonts do not support Unicode " -"strings." -msgstr "" -"Ak sú dostupné, použijú sa bitmapové písma. Bitmapové písma nepodporujú " -"Unicode reÅ¥azce." +#: src/skins/skins_cfg.c:298 +msgid "_Skin" +msgstr "_Vzhľad" -#: src/skins/skins_cfg.c:324 -msgid "_Miscellaneous" -msgstr "_Rôzne" +#: src/skins/skins_cfg.c:345 +msgid "Interface Preferences" +msgstr "Predvoľby rozhrania" -#: src/skins/skins_cfg.c:325 -msgid "Show separators in playlist" -msgstr "ZobrazovaÅ¥ oddeľovaÄe v zozname skladieb" +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "Predzosilnenie" -#: src/skins/skins_cfg.c:327 -msgid "Show window manager decoration" -msgstr "ZobrazovaÅ¥ dekoráciu okien" +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" +msgstr "31 Hz" -#: src/skins/skins_cfg.c:328 -msgid "This enables the window manager to show decorations for windows." -msgstr "Touto voľbou povolíte zobrazovanie dekorácie okien." +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "63 Hz" -#: src/skins/skins_cfg.c:329 -msgid "Use two-way text scroller" -msgstr "PoužiÅ¥ obojsmerný posun textu" +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" +msgstr "125 Hz" -#: src/skins/skins_cfg.c:330 -msgid "" -"If selected, the file information text in the main window will scroll back " -"and forth. If not selected, the text will only scroll in one direction." -msgstr "" -"Ak je povolené, bude sa text s informáciami v hlavnom okne posúvaÅ¥ tam a " -"späť. Ak nie je povolené, text sa bude posúvaÅ¥ iba v jednom smere." +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" +msgstr "250 Hz " -#: src/skins/skins_cfg.c:331 -msgid "Disable inline gtk theme" -msgstr "ZakázaÅ¥ vloženú GTK tému" +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" +msgstr "500 Hz " -#: src/skins/skins_cfg.c:333 -msgid "Random skin on play" -msgstr "Náhodný vzhľad pri prehrávaní" +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" +msgstr "1 kHz" -#: src/skins/skins_cfg.c:334 -msgid "Allow loading incomplete skins" -msgstr "PovoliÅ¥ naÄítavanie nekompletných vzhľadov" +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" +msgstr "2 kHz" -#: src/skins/skins_cfg.c:335 -msgid "" -"If selected, audacious won't refuse loading broken skins. Use only if your " -"favourite skin doesn't work" -msgstr "" -"Ak je povolené, Audacious neodmietne naÄítanie poÅ¡kodeného vzhľadu. Použite " -"iba ak váš obľúbený vzhľad nefunguje" +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" +msgstr "4 kHz" -#: src/skins/skins_cfg.c:401 -msgid "Color Adjustment" -msgstr "Prispôsobenie farby" +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" +msgstr "8 kHz" -#: src/skins/skins_cfg.c:407 -msgid "" -"Audacious allows you to alter the color balance of the skinned UI. The " -"sliders below will allow you to do this." -msgstr "" -"Audacious umožňuje zmeniÅ¥ zafarbenie témy užívateľského rozhrania pomocou " -"nasledujúcich jazdcov." +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" +msgstr "16 kHz" + +#: src/skins/ui_equalizer.c:379 +msgid "Audacious Equalizer" +msgstr "Ekvalizér Audacious" + +#: src/skins/ui_equalizer.c:887 +msgid "Presets" +msgstr "Predvoľby" -#: src/skins/skins_cfg.c:417 -msgid "Blue" -msgstr "Modrá" +#: src/skins/ui_equalizer.c:968 src/skins/ui_manager.c:442 +msgid "Load preset" +msgstr "NaÄítaÅ¥ predvoľbu" -#: src/skins/skins_cfg.c:424 -msgid "Green" -msgstr "Zelená" +#: src/skins/ui_equalizer.c:985 +msgid "Load auto-preset" +msgstr "NaÄítaÅ¥ automatickú predvoľbu" + +#: src/skins/ui_equalizer.c:1015 src/skins/ui_equalizer.c:1033 +#: src/skins/ui_equalizer.c:1049 +msgid "Load equalizer preset" +msgstr "NaÄítaÅ¥ predvoľbu ekvalizéra" -#: src/skins/skins_cfg.c:431 -msgid "Red" -msgstr "ÄŒervená" +#: src/skins/ui_equalizer.c:1068 src/skins/ui_manager.c:463 +msgid "Save preset" +msgstr "UložiÅ¥ predvoľbu" -#: src/skins/skins_cfg.c:569 -msgid "_Skin" -msgstr "_Vzhľad" +#: src/skins/ui_equalizer.c:1084 +msgid "Save auto-preset" +msgstr "UložiÅ¥ automatickú predvoľbu" -#: src/skins/skins_cfg.c:574 -#, fuzzy -msgid "Color adjustment ..." -msgstr "Prispôsobenie farby" +#: src/skins/ui_equalizer.c:1114 src/skins/ui_equalizer.c:1150 +msgid "Save equalizer preset" +msgstr "UložiÅ¥ predvoľby ekvaizéra" -#: src/skins/ui_equalizer.c:463 -msgid "Audacious Equalizer" -msgstr "Ekvalizér Audacious" +#: src/skins/ui_equalizer.c:1169 src/skins/ui_manager.c:478 +msgid "Delete preset" +msgstr "VymazaÅ¥ predvoľbu" -#: src/skins/ui_equalizer.c:991 -msgid "Presets" -msgstr "Prednastavenia" +#: src/skins/ui_equalizer.c:1186 +msgid "Delete auto-preset" +msgstr "VymazaÅ¥ automatickú predvoľbu" -#: src/skins/ui_main.c:593 +#: src/skins/ui_main.c:444 msgid "kbps" msgstr "kb/s" -#: src/skins/ui_main.c:601 +#: src/skins/ui_main.c:452 msgid "kHz" msgstr "Hz" -#: src/skins/ui_main.c:608 +#: src/skins/ui_main.c:459 msgid "surround" msgstr "Priestorový zvuk" -#: src/skins/ui_main.c:981 -msgid "Audacious - visibility warning" -msgstr "Audacious - upozornenie o viditeľnosti" - -#: src/skins/ui_main.c:984 -msgid "Show main player window" -msgstr "ZobraziÅ¥ hlavné okno prehrávaÄa" - -#: src/skins/ui_main.c:985 -msgid "Ignore" -msgstr "IgnorovaÅ¥" - -#: src/skins/ui_main.c:991 -msgid "" -"Audacious has been started with all of its windows hidden.\n" -"You may want to show the player window again to control Audacious; " -"otherwise, you'll have to control it remotely via audtool or enabled plugins " -"(such as the statusicon plugin)." -msgstr "" -"Pri spustení Audacious boli vÅ¡etky okná skryté.\n" -"Možno budete chcieÅ¥ kvôli ovládaniu zobraziÅ¥ okno prehrávaÄa. Inak ho budete " -"musieÅ¥ ovládaÅ¥ vzdialene pomocou audtool alebo pomocou zapnutých modulov " -"(napr. pomocou modulu stavová ikona)." - -#: src/skins/ui_main.c:997 -msgid "Always ignore, show/hide is controlled remotely" -msgstr "Vždy ignorovaÅ¥. UkázaÅ¥/skryÅ¥ je ovládané vzdialene" - -#: src/skins/ui_main.c:1042 -msgid "Audacious - broken GTK engine usage warning" -msgstr "Audacious - GTK modul vzhľadu" - -#: src/skins/ui_main.c:1050 -#, c-format -msgid "" -"Broken GTK engine in use\n" -"\n" -"Audacious has detected that you are using a broken GTK engine.\n" -"\n" -"The theme engine you are using, %s, is incompatible with some of the " -"features used by modern skins. The incompatible features have been disabled " -"for this session.\n" -"\n" -"To use these features, please consider using a different GTK theme engine." -msgstr "" -"Používa sa chybný modul vzhľadu GTK\n" -"\n" -"Audacious zistil, že používate chybný modul vzhľadu GTK.\n" -"\n" -"Používaný modul vzhľadu, %s, nie je kompatibilný s niektorými " -"vlastnosÅ¥ami moderných tém. Nekompatibilné vlastnosti budú v tejto relácii " -"zakázané.\n" -"\n" -"Ak chcete tieto vlastnosti použiÅ¥, zvážte použitie iného modulu vzhľadu pre " -"GTK." - -#: src/skins/ui_main.c:1061 -msgid "Do not display this warning again" -msgstr "Toto upozornenie viac nezobrazovaÅ¥" - -#: src/skins/ui_main.c:1269 +#: src/skins/ui_main.c:807 #, c-format -msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)" -msgstr "PrejsÅ¥ na: %d:%-2.2d/%d:%-2.2d (%d%%)" +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "prejsÅ¥ na %d:%-2.2d / %d:%-2.2d" -#: src/skins/ui_main.c:1299 +#: src/skins/ui_main.c:828 #, c-format msgid "Volume: %d%%" msgstr "HlasitosÅ¥: %d%%" -#: src/skins/ui_main.c:1322 +#: src/skins/ui_main.c:851 #, c-format msgid "Balance: %d%% left" msgstr "Vyváženie: %d%% vľavo" -#: src/skins/ui_main.c:1324 +#: src/skins/ui_main.c:853 msgid "Balance: center" msgstr "Vyváženie: stred" -#: src/skins/ui_main.c:1326 +#: src/skins/ui_main.c:855 #, c-format msgid "Balance: %d%% right" msgstr "Vyváženie: %d%% vpravo" -#: src/skins/ui_main.c:1618 +#: src/skins/ui_main.c:981 msgid "Options Menu" msgstr "Ponuka s možnosÅ¥ami" -#: src/skins/ui_main.c:1622 +#: src/skins/ui_main.c:985 msgid "Disable 'Always On Top'" msgstr "Vypnúť „Vždy navrchu“" -#: src/skins/ui_main.c:1624 +#: src/skins/ui_main.c:987 msgid "Enable 'Always On Top'" msgstr "Zapnúť „Vždy navrchu“" -#: src/skins/ui_main.c:1627 +#: src/skins/ui_main.c:990 msgid "File Info Box" msgstr "Informácie o súbore" -#: src/skins/ui_main.c:1631 -msgid "Disable 'GUI Scaling'" -msgstr "Vypnúť „ZväÄÅ¡iÅ¥ GUI“" - -#: src/skins/ui_main.c:1633 -msgid "Enable 'GUI Scaling'" -msgstr "Zapnúť „ZväÄÅ¡iÅ¥ GUI“" - -#: src/skins/ui_main.c:1636 +#: src/skins/ui_main.c:995 msgid "Visualization Menu" msgstr "Ponuka s typom znázornenia" -#: src/skins/ui_main.c:2348 +#: src/skins/ui_main.c:1653 msgid "Single mode." msgstr "Režim jednej skladby." -#: src/skins/ui_main.c:2350 +#: src/skins/ui_main.c:1655 msgid "Playlist mode." msgstr "Režim zoznamu skladieb." -#: src/skins/ui_main.c:2374 +#: src/skins/ui_main.c:1677 msgid "Stopping after song." msgstr "ZastaviÅ¥ po skonÄení skladby." -#: src/skins/ui_main.c:2376 +#: src/skins/ui_main.c:1679 msgid "Not stopping after song." msgstr "NezastaviÅ¥ po skonÄení skladby." -#: src/skins/ui_manager.c:50 src/skins/ui_manager.c:51 +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 msgid "Autoscroll Songname" msgstr "Automatický posun názvu skladby" -#: src/skins/ui_manager.c:56 src/skins/ui_manager.c:57 +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "ZastaviÅ¥ po skonÄení aktuálnej skladby" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 msgid "Peaks" msgstr "Vrcholy" -#: src/skins/ui_manager.c:68 src/skins/ui_manager.c:69 +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "OpakovaÅ¥" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "Náhodné poradie" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "NeprehrávaÅ¥ ÄalÅ¡iu skladbu zo zoznamu" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 msgid "Show Player" msgstr "ZobraziÅ¥ prehrávaÄ" -#: src/skins/ui_manager.c:71 src/skins/ui_manager.c:72 +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 msgid "Show Playlist Editor" msgstr "ZobraziÅ¥ editor zoznamu skladieb" -#: src/skins/ui_manager.c:74 src/skins/ui_manager.c:75 +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 msgid "Show Equalizer" msgstr "ZobraziÅ¥ ekvalizér" -#: src/skins/ui_manager.c:77 src/skins/ui_manager.c:78 +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 msgid "Always on Top" msgstr "Vždy navrchu" -#: src/skins/ui_manager.c:80 src/skins/ui_manager.c:81 +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 msgid "Put on All Workspaces" msgstr "ZobrazovaÅ¥ na vÅ¡etkých plochách" -#: src/skins/ui_manager.c:83 src/skins/ui_manager.c:84 +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 msgid "Roll up Player" msgstr "ZrolovaÅ¥ prehrávaÄ" -#: src/skins/ui_manager.c:86 src/skins/ui_manager.c:87 +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 msgid "Roll up Playlist Editor" msgstr "ZrolovaÅ¥ editor zoznamu skladieb" -#: src/skins/ui_manager.c:89 src/skins/ui_manager.c:90 +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 msgid "Roll up Equalizer" msgstr "ZrolovaÅ¥ ekvalizér" -#: src/skins/ui_manager.c:92 src/sndstretch/sndstretch_xmms.c:393 -msgid "Scale" -msgstr "ZväÄÅ¡iÅ¥" - -#: src/skins/ui_manager.c:93 -msgid "DoubleSize" -msgstr "Dvojitá veľkosÅ¥" - -#: src/skins/ui_manager.c:95 src/skins/ui_manager.c:96 -msgid "Easy Move" -msgstr "Jednoduchý presun" - -#: src/skins/ui_manager.c:104 +#: src/skins/ui_manager.c:115 msgid "Analyzer" msgstr "Analyzátor" -#: src/skins/ui_manager.c:105 +#: src/skins/ui_manager.c:116 msgid "Scope" msgstr "Osciloskop" -#: src/skins/ui_manager.c:106 +#: src/skins/ui_manager.c:117 msgid "Voiceprint" msgstr "FrekvenÄné spektrum" -#: src/skins/ui_manager.c:107 +#: src/skins/ui_manager.c:118 msgid "Off" msgstr "Žiadne" -#: src/skins/ui_manager.c:111 src/skins/ui_manager.c:128 -#: src/skins/ui_manager.c:134 +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 msgid "Normal" msgstr "Normálny" -#: src/skins/ui_manager.c:112 src/skins/ui_manager.c:129 +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 msgid "Fire" msgstr "Oheň" -#: src/skins/ui_manager.c:113 +#: src/skins/ui_manager.c:124 msgid "Vertical Lines" msgstr "Vertikálne Äiary" -#: src/skins/ui_manager.c:117 +#: src/skins/ui_manager.c:128 msgid "Lines" msgstr "ÄŒiary" -#: src/skins/ui_manager.c:118 +#: src/skins/ui_manager.c:129 msgid "Bars" msgstr "Obdĺžniky" -#: src/skins/ui_manager.c:122 +#: src/skins/ui_manager.c:133 msgid "Dot Scope" msgstr "Bodový osciloskop" -#: src/skins/ui_manager.c:123 +#: src/skins/ui_manager.c:134 msgid "Line Scope" msgstr "ÄŒiarový osciloskop" -#: src/skins/ui_manager.c:124 +#: src/skins/ui_manager.c:135 msgid "Solid Scope" msgstr "Vyplnený osciloskop" -#: src/skins/ui_manager.c:130 +#: src/skins/ui_manager.c:141 msgid "Ice" msgstr "Ľad" -#: src/skins/ui_manager.c:135 +#: src/skins/ui_manager.c:146 msgid "Smooth" msgstr "Plynulý" -#: src/skins/ui_manager.c:139 src/skins/ui_manager.c:147 +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 msgid "Slowest" msgstr "NajpomalÅ¡ie" -#: src/skins/ui_manager.c:140 src/skins/ui_manager.c:148 +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 msgid "Slow" msgstr "Pomaly" -#: src/skins/ui_manager.c:141 src/skins/ui_manager.c:149 +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 msgid "Medium" msgstr "Stredne" -#: src/skins/ui_manager.c:142 src/skins/ui_manager.c:150 +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 msgid "Fast" msgstr "Rýchlo" -#: src/skins/ui_manager.c:143 src/skins/ui_manager.c:151 +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 msgid "Fastest" msgstr "NajrýchlejÅ¡ie" -#: src/skins/ui_manager.c:155 +#: src/skins/ui_manager.c:166 msgid "Time Elapsed" -msgstr "Ubehnutý Äas" +msgstr "Odohraný Äas" -#: src/skins/ui_manager.c:156 +#: src/skins/ui_manager.c:167 msgid "Time Remaining" msgstr "Zostávajúci Äas" -#: src/skins/ui_manager.c:185 +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "PozastaviÅ¥" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "Predchádzajúca" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "Nasledujúca" + +#: src/skins/ui_manager.c:196 msgid "Visualization" msgstr "Vizualizácia" -#: src/skins/ui_manager.c:186 +#: src/skins/ui_manager.c:197 msgid "Visualization Mode" msgstr "Typ zobrazenia" -#: src/skins/ui_manager.c:187 +#: src/skins/ui_manager.c:198 msgid "Analyzer Mode" msgstr "Typ analyzátora" -#: src/skins/ui_manager.c:188 +#: src/skins/ui_manager.c:199 msgid "Scope Mode" msgstr "Typ osciloskopu" -#: src/skins/ui_manager.c:189 +#: src/skins/ui_manager.c:200 msgid "Voiceprint Mode" msgstr "Typ frekvenÄného spektra" -#: src/skins/ui_manager.c:190 +#: src/skins/ui_manager.c:201 msgid "WindowShade VU Mode" msgstr "Typ vizualizácie pri zrolovanom okne" -#: src/skins/ui_manager.c:191 +#: src/skins/ui_manager.c:202 msgid "Analyzer Falloff" msgstr "Klesanie stĺpcov" -#: src/skins/ui_manager.c:192 +#: src/skins/ui_manager.c:203 msgid "Peaks Falloff" msgstr "Klesanie vrcholov" -#: src/skins/ui_manager.c:202 src/skins/ui_manager.c:203 +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "Zoznam skladieb" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "Nový zoznam skladieb" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 msgid "Select Next Playlist" msgstr "VybraÅ¥ nasledujúci zoznam skladieb" -#: src/skins/ui_manager.c:205 src/skins/ui_manager.c:206 +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 msgid "Select Previous Playlist" msgstr "VybraÅ¥ predchádzajúci zoznam skladieb" +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "ZmazaÅ¥ zoznam skladieb" + #: src/skins/ui_manager.c:222 +msgid "Import Playlist" +msgstr "ImportovaÅ¥ zoznam skladieb" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "Pridá súbor so zoznamom do vybraného zoznamu skladieb." + +#: src/skins/ui_manager.c:226 +msgid "Export Playlist" +msgstr "ExportovaÅ¥ zoznam skladieb" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "Uloží vybraný zoznam skladieb." + +#: src/skins/ui_manager.c:229 msgid "Refresh List" msgstr "ObnoviÅ¥ zoznam" -#: src/skins/ui_manager.c:226 -msgid "List Manager" -msgstr "Správca zoznamov" +#: src/skins/ui_manager.c:230 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "Obnovuje metadáta patriace k skladbe zo zoznamu." + +#: src/skins/ui_manager.c:233 +msgid "Playlist Manager" +msgstr "Správca zoznamu skladieb" + +#: src/skins/ui_manager.c:234 +msgid "Queue Manager" +msgstr "Správca fronty" + +#: src/skins/ui_manager.c:237 +msgid "View" +msgstr "Zobrazenie" + +#: src/skins/ui_manager.c:238 +msgid "Interface" +msgstr "Rozhranie" + +#: src/skins/ui_manager.c:239 +msgid "Interface Preferences ..." +msgstr "Predvoľby rozhrania ..." -#: src/skins/ui_manager.c:236 +#: src/skins/ui_manager.c:243 msgid "Add Internet Address..." msgstr "PridaÅ¥ internetovú adresu…" -#: src/skins/ui_manager.c:240 +#: src/skins/ui_manager.c:244 +msgid "Adds a remote track to the playlist." +msgstr "Do zoznamu skladieb pridá vzdialenú stopu." + +#: src/skins/ui_manager.c:247 msgid "Add Files..." msgstr "PridaÅ¥ súbory…" -#: src/skins/ui_manager.c:246 +#: src/skins/ui_manager.c:248 +msgid "Adds files to the playlist." +msgstr "Do zoznamu skladieb pridá súbory." + +#: src/skins/ui_manager.c:253 msgid "Search and Select" msgstr "Hľadanie a výber" -#: src/skins/ui_manager.c:247 +#: src/skins/ui_manager.c:254 msgid "" "Searches the playlist and selects playlist entries based on specific " "criteria." msgstr "Prehľadá zoznam skladieb a vyberie skladby podľa zadaných kritérií." -#: src/skins/ui_manager.c:250 +#: src/skins/ui_manager.c:257 msgid "Invert Selection" msgstr "InvertovaÅ¥ výber" -#: src/skins/ui_manager.c:251 +#: src/skins/ui_manager.c:258 msgid "Inverts the selected and unselected entries." msgstr "Zamení vybrané a nevybrané položky." -#: src/skins/ui_manager.c:268 +#: src/skins/ui_manager.c:261 +msgid "Select All" +msgstr "OznaÄiÅ¥ vÅ¡etko" + +#: src/skins/ui_manager.c:262 +msgid "Selects all of the playlist entries." +msgstr "Vyberie vÅ¡etky skladby v zozname." + +#: src/skins/ui_manager.c:265 +msgid "Select None" +msgstr "ZruÅ¡iÅ¥ výber" + +#: src/skins/ui_manager.c:266 +msgid "Deselects all of the playlist entries." +msgstr "Zruší výber skladieb zoznamu." + +#: src/skins/ui_manager.c:271 +msgid "Remove All" +msgstr "OdstrániÅ¥ vÅ¡etky" + +#: src/skins/ui_manager.c:272 +msgid "Removes all entries from the playlist." +msgstr "Zo zoznamu odstráni vÅ¡etky skladby." + +#: src/skins/ui_manager.c:275 msgid "Clear Queue" msgstr "VyprázdniÅ¥ front" -#: src/skins/ui_manager.c:269 +#: src/skins/ui_manager.c:276 msgid "Clears the queue associated with this playlist." msgstr "Vyprázdni front spojený s týmto zoznamom skladieb." -#: src/skins/ui_manager.c:272 +#: src/skins/ui_manager.c:279 msgid "Remove Unavailable Files" msgstr "OdstrániÅ¥ nedostupné súbory" -#: src/skins/ui_manager.c:273 +#: src/skins/ui_manager.c:280 msgid "Removes unavailable files from the playlist." msgstr "Zo zoznamu skladieb odstráni nedostupné súbory." -#: src/skins/ui_manager.c:276 +#: src/skins/ui_manager.c:283 msgid "Remove Duplicates" msgstr "OdstrániÅ¥ duplikáty" -#: src/skins/ui_manager.c:279 +#: src/skins/ui_manager.c:285 src/skins/ui_manager.c:317 +#: src/skins/ui_manager.c:347 +msgid "By Title" +msgstr "Podľa názvu" + +#: src/skins/ui_manager.c:286 msgid "Removes duplicate entries from the playlist by title." msgstr "Zo zoznamu skladieb odstráni skladby s rovnakými názvami." -#: src/skins/ui_manager.c:282 src/skins/ui_manager.c:318 -#: src/skins/ui_manager.c:348 +#: src/skins/ui_manager.c:289 src/skins/ui_manager.c:329 +#: src/skins/ui_manager.c:359 msgid "By Filename" msgstr "Podľa názvu súboru" -#: src/skins/ui_manager.c:283 +#: src/skins/ui_manager.c:290 msgid "Removes duplicate entries from the playlist by filename." msgstr "Zo zoznamu skladieb odstráni skladby s rovnakými názvami súboru." -#: src/skins/ui_manager.c:286 src/skins/ui_manager.c:322 -#: src/skins/ui_manager.c:352 +#: src/skins/ui_manager.c:293 src/skins/ui_manager.c:333 +#: src/skins/ui_manager.c:363 msgid "By Path + Filename" msgstr "Podľa cesty a názvu súboru" -#: src/skins/ui_manager.c:287 +#: src/skins/ui_manager.c:294 msgid "Removes duplicate entries from the playlist by their full path." msgstr "" "Zo zoznamu skladieb odstráni skladby s rovnakou cestou a názvom súboru." -#: src/skins/ui_manager.c:300 +#: src/skins/ui_manager.c:297 +msgid "Remove Unselected" +msgstr "OdstrániÅ¥ neoznaÄené" + +#: src/skins/ui_manager.c:298 +msgid "Remove unselected entries from the playlist." +msgstr "Zo zoznamu odstráni neoznaÄené skladby." + +#: src/skins/ui_manager.c:301 +msgid "Remove Selected" +msgstr "OdstrániÅ¥ oznaÄené" + +#: src/skins/ui_manager.c:302 +msgid "Remove selected entries from the playlist." +msgstr "Zo zoznamu odstráni oznaÄené skladby." + +#: src/skins/ui_manager.c:307 +msgid "Randomize List" +msgstr "PremieÅ¡aÅ¥ poradie" + +#: src/skins/ui_manager.c:308 +msgid "Randomizes the playlist." +msgstr "Skladby v zozname zoradí náhodne." + +#: src/skins/ui_manager.c:311 msgid "Reverse List" msgstr "ObrátiÅ¥ poradie" -#: src/skins/ui_manager.c:301 +#: src/skins/ui_manager.c:312 msgid "Reverses the playlist." msgstr "Obráti poradie skladieb v zozname." -#: src/skins/ui_manager.c:304 +#: src/skins/ui_manager.c:315 msgid "Sort List" msgstr "TriediÅ¥ zoznam" -#: src/skins/ui_manager.c:307 src/skins/ui_manager.c:337 +#: src/skins/ui_manager.c:318 src/skins/ui_manager.c:348 msgid "Sorts the list by title." msgstr "Zoradí skladby v zozname podľa názvu." -#: src/skins/ui_manager.c:311 src/skins/ui_manager.c:341 +#: src/skins/ui_manager.c:321 src/skins/ui_manager.c:351 +msgid "By Album" +msgstr "Podľa albumu" + +#: src/skins/ui_manager.c:322 src/skins/ui_manager.c:352 msgid "Sorts the list by album." msgstr "Zoradí skladby v zozname podľa názvu." -#: src/skins/ui_manager.c:315 src/skins/ui_manager.c:345 +#: src/skins/ui_manager.c:325 src/skins/ui_manager.c:355 +msgid "By Artist" +msgstr "Podľa umelca" + +#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 msgid "Sorts the list by artist." msgstr "Zoradí skladby v zozname podľa umelca." -#: src/skins/ui_manager.c:319 src/skins/ui_manager.c:349 +#: src/skins/ui_manager.c:330 src/skins/ui_manager.c:360 msgid "Sorts the list by filename." msgstr "Zoradí skladby v zozname podľa názvu súboru." -#: src/skins/ui_manager.c:323 src/skins/ui_manager.c:353 +#: src/skins/ui_manager.c:334 src/skins/ui_manager.c:364 msgid "Sorts the list by full pathname." msgstr "Zoradí skladby v zozname podľa celej cesty." -#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +#: src/skins/ui_manager.c:337 src/skins/ui_manager.c:367 msgid "By Date" msgstr "Podľa dátumu" -#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +#: src/skins/ui_manager.c:338 src/skins/ui_manager.c:368 msgid "Sorts the list by modification time." msgstr "Zoradí skladby v zozname podľa dátumu poslednej úpravy súboru." -#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +#: src/skins/ui_manager.c:341 src/skins/ui_manager.c:371 +msgid "By Track Number" +msgstr "Podľa Äísla stopy" + +#: src/skins/ui_manager.c:342 src/skins/ui_manager.c:372 msgid "Sorts the list by track number." msgstr "Zoradí skladby v zozname podľa Äísla stopy." -#: src/skins/ui_manager.c:334 +#: src/skins/ui_manager.c:345 msgid "Sort Selected" msgstr "TriediÅ¥ výber" -#: src/skins/ui_manager.c:373 +#: src/skins/ui_manager.c:381 +msgid "File" +msgstr "Súbor" + +#: src/skins/ui_manager.c:384 msgid "Plugin Services" msgstr "Služby modulov" -#: src/skins/ui_manager.c:384 +#: src/skins/ui_manager.c:386 src/skins/ui_manager.c:389 +msgid "View Track Details" +msgstr "ZobraziÅ¥ informácie o skladbe" + +#: src/skins/ui_manager.c:387 src/skins/ui_manager.c:390 +msgid "View track details" +msgstr "Zobrazí informácie o skladbe" + +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:393 +msgid "About Audacious" +msgstr "O Audacious" + +#: src/skins/ui_manager.c:395 msgid "Play File" msgstr "PrehraÅ¥ súbor" -#: src/skins/ui_manager.c:387 +#: src/skins/ui_manager.c:396 +msgid "Load and play a file" +msgstr "NaÄíta a prehrá súbor" + +#: src/skins/ui_manager.c:398 msgid "Play Location" msgstr "PrehraÅ¥ z adresy" -#: src/skins/ui_manager.c:428 +#: src/skins/ui_manager.c:399 +msgid "Play media from the selected location" +msgstr "Prehrá súbor z vybranej adresy" + +#: src/skins/ui_manager.c:401 +msgid "Plugin services" +msgstr "Služby modulov" + +#: src/skins/ui_manager.c:403 +msgid "Preferences" +msgstr "Predvoľby" + +#: src/skins/ui_manager.c:404 +msgid "Open preferences window" +msgstr "Otvorí okno s predvoľbami" + +#: src/skins/ui_manager.c:407 +msgid "Quit Audacious" +msgstr "UkonÄí Audacious" + +#: src/skins/ui_manager.c:409 src/skins/ui_manager.c:410 +msgid "Set A-B" +msgstr "NastaviÅ¥ A-B" + +#: src/skins/ui_manager.c:412 src/skins/ui_manager.c:413 +msgid "Clear A-B" +msgstr "OdstrániÅ¥ A-B" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Jump to Time" +msgstr "PrejsÅ¥ na Äas" + +#: src/skins/ui_manager.c:421 +msgid "Queue Toggle" +msgstr "Prepnúť frontu" + +#: src/skins/ui_manager.c:422 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "Povolí/zakáže položku vo fronte zoznamu skladieb." + +#: src/skins/ui_manager.c:425 +msgid "Copy" +msgstr "KopírovaÅ¥" + +#: src/skins/ui_manager.c:427 +msgid "Cut" +msgstr "Vystrihnúť" + +#: src/skins/ui_manager.c:429 +msgid "Paste" +msgstr "VložiÅ¥" + +#: src/skins/ui_manager.c:436 msgid "Load" msgstr "NaÄítaÅ¥" -#: src/skins/ui_manager.c:433 src/skins/ui_manager.c:454 -#: src/skins/ui_manager.c:469 -msgid "Preset" -msgstr "Prednastavenia" +#: src/skins/ui_manager.c:437 +msgid "Import" +msgstr "ImportovaÅ¥" -#: src/skins/ui_manager.c:434 -msgid "Load preset" -msgstr "NaÄíta prednastavenia" +#: src/skins/ui_manager.c:438 +msgid "Save" +msgstr "UložiÅ¥" -#: src/skins/ui_manager.c:436 src/skins/ui_manager.c:457 -#: src/skins/ui_manager.c:472 +#: src/skins/ui_manager.c:439 +msgid "Delete" +msgstr "VymazaÅ¥" + +#: src/skins/ui_manager.c:441 src/skins/ui_manager.c:462 +#: src/skins/ui_manager.c:477 +msgid "Preset" +msgstr "Predvoľby" + +#: src/skins/ui_manager.c:444 src/skins/ui_manager.c:465 +#: src/skins/ui_manager.c:480 msgid "Auto-load preset" -msgstr "Automaticky naÄítavané prednastavenia" +msgstr "Automaticky naÄítavané predvoľby" -#: src/skins/ui_manager.c:437 +#: src/skins/ui_manager.c:445 msgid "Load auto-load preset" -msgstr "NaÄíta automaticky naÄítavané prednastavenia" +msgstr "NaÄítaÅ¥ automaticky naÄítavané predvoľby" -#: src/skins/ui_manager.c:440 +#: src/skins/ui_manager.c:448 msgid "Load default preset into equalizer" -msgstr "NaÄíta Å¡tandardné prednastavenia do ekvalizéra" +msgstr "NaÄítaÅ¥ Å¡tandardné predvoľby do ekvalizéra" -#: src/skins/ui_manager.c:442 +#: src/skins/ui_manager.c:450 msgid "Zero" msgstr "VynulovaÅ¥" -#: src/skins/ui_manager.c:443 +#: src/skins/ui_manager.c:451 msgid "Set equalizer preset levels to zero" -msgstr "Vynuluje prednastavenia ekvalizéra" +msgstr "VynulovaÅ¥ predvoľby ekvalizéra" -#: src/skins/ui_manager.c:445 +#: src/skins/ui_manager.c:453 msgid "From file" msgstr "Zo súboru" -#: src/skins/ui_manager.c:446 +#: src/skins/ui_manager.c:454 msgid "Load preset from file" -msgstr "NaÄíta prednastavenia zo súboru" +msgstr "NaÄítaÅ¥ predvoľby zo súboru" -#: src/skins/ui_manager.c:448 +#: src/skins/ui_manager.c:456 msgid "From WinAMP EQF file" msgstr "Zo súboru WinAMP EQF" -#: src/skins/ui_manager.c:449 +#: src/skins/ui_manager.c:457 msgid "Load preset from WinAMP EQF file" -msgstr "NaÄíta prednastavenia zo súboru WinAMP EQF" +msgstr "NaÄítaÅ¥ predvoľby zo súboru WinAMP EQF" -#: src/skins/ui_manager.c:451 +#: src/skins/ui_manager.c:459 msgid "WinAMP Presets" -msgstr "Prednastavenia WinAMP" +msgstr "Predvoľby WinAMP" -#: src/skins/ui_manager.c:452 +#: src/skins/ui_manager.c:460 msgid "Import WinAMP presets" -msgstr "Importuje prednastavenia WinAMP" - -#: src/skins/ui_manager.c:455 -msgid "Save preset" -msgstr "Uloží prednastavenia" +msgstr "ImportovaÅ¥ predvoľby WinAMP" -#: src/skins/ui_manager.c:458 +#: src/skins/ui_manager.c:466 msgid "Save auto-load preset" -msgstr "Uloží automaticky naÄítavané prednastavenia" +msgstr "UložiÅ¥ automaticky naÄítavané predvoľby" -#: src/skins/ui_manager.c:461 +#: src/skins/ui_manager.c:469 msgid "Save default preset" -msgstr "Uloží Å¡tandardné prednastavenia" +msgstr "UložiÅ¥ Å¡tandardné predvoľby" -#: src/skins/ui_manager.c:463 +#: src/skins/ui_manager.c:471 msgid "To file" msgstr "Do súboru" -#: src/skins/ui_manager.c:464 +#: src/skins/ui_manager.c:472 msgid "Save preset to file" -msgstr "Uloží prednastavenia do súboru" +msgstr "UložiÅ¥ predvoľby do súboru" -#: src/skins/ui_manager.c:466 +#: src/skins/ui_manager.c:474 msgid "To WinAMP EQF file" msgstr "Do súboru WinAMP EQF" -#: src/skins/ui_manager.c:467 +#: src/skins/ui_manager.c:475 msgid "Save preset to WinAMP EQF file" -msgstr "Uloží prednastavenia do súboru WinAMP EQF" - -#: src/skins/ui_manager.c:470 -msgid "Delete preset" -msgstr "Vymaže prednastavenia" +msgstr "UložiÅ¥ predvoľby do súboru WinAMP EQF" -#: src/skins/ui_manager.c:473 +#: src/skins/ui_manager.c:481 msgid "Delete auto-load preset" -msgstr "Vymaže automaticky naÄítavané prednastavenia" +msgstr "VymazaÅ¥ automaticky naÄítavané predvoľby" -#: src/skins/ui_playlist.c:374 +#: src/skins/ui_playlist.c:248 msgid "Search entries in active playlist" msgstr "VyhľadaÅ¥ skladby v aktívnom zozname skladieb" -#: src/skins/ui_playlist.c:382 +#: src/skins/ui_playlist.c:256 msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " +"Select entries in playlist by filling one or more fields. Fields use regular" +" expressions syntax, case-insensitive. If you don't know how regular " "expressions work, simply insert a literal portion of what you're searching " "for." msgstr "" -"Položky v zozname skladieb vyberiete vyplnením jedného alebo viacerých polí. " -"Polia používajú regulárne výrazy a neberie sa ohľad na veľkosÅ¥ písmen. Ak " +"Položky v zozname skladieb vyberiete vyplnením jedného alebo viacerých polí." +" Polia používajú regulárne výrazy a neberie sa ohľad na veľkosÅ¥ písmen. Ak " "regulárnym výrazom nerozumiete, jednoducho zadajte ÄasÅ¥ textu, ktorý chcete " "vyhľadaÅ¥." -#: src/skins/ui_playlist.c:397 +#: src/skins/ui_playlist.c:264 +msgid "Title: " +msgstr "Názov: " + +#: src/skins/ui_playlist.c:271 msgid "Album: " msgstr "Album: " -#: src/skins/ui_playlist.c:404 +#: src/skins/ui_playlist.c:278 msgid "Artist: " msgstr "Umelec: " -#: src/skins/ui_playlist.c:411 +#: src/skins/ui_playlist.c:285 msgid "Filename: " msgstr "Názov súboru: " -#: src/skins/ui_playlist.c:419 +#: src/skins/ui_playlist.c:293 msgid "Clear previous selection before searching" msgstr "Pred hľadaním vymazaÅ¥ predchádzajúci výber" -#: src/skins/ui_playlist.c:422 +#: src/skins/ui_playlist.c:296 msgid "Automatically toggle queue for matching entries" msgstr "Zhodujúce sa položky pridaÅ¥ do (odstrániÅ¥ z) frontu" -#: src/skins/ui_playlist.c:425 +#: src/skins/ui_playlist.c:299 msgid "Create a new playlist with matching entries" msgstr "Zo zhodujúcich sa položiek vytvoriÅ¥ nový zoznam skladieb" -#: src/skins/ui_playlist.c:772 -msgid "Save as Static Playlist" -msgstr "UložiÅ¥ ako statický zoznam skladieb" - -#: src/skins/ui_playlist.c:779 -msgid "Use Relative Path" -msgstr "PoužiÅ¥ relatívne cesty" - -#: src/skins/ui_playlist.c:802 -msgid "Load Playlist" -msgstr "NaÄítaÅ¥ zoznam skladieb" - -#: src/skins/ui_playlist.c:815 -msgid "Save Playlist" -msgstr "UložiÅ¥ zoznam skladieb" - -#: src/skins/ui_playlist.c:1146 +#: src/skins/ui_playlist.c:765 msgid "Audacious Playlist Editor" msgstr "Editor zoznamu skladieb" -#: src/skins/ui_playlist.c:1206 +#: src/skins/ui_playlist.c:812 #, c-format msgid "%s (%d of %d)" msgstr "%s (%d z %d)" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "31 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "63 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "125 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "250 Hz" -msgstr "22050 Hz " - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "500 Hz" -msgstr "44100 Hz " - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "1 kHz" -msgstr "96 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "2 kHz" -msgstr "22 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "4 kHz" -msgstr "44 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "8 kHz" -msgstr "48 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "16 kHz" -msgstr "96 kHz" - -#: src/skins/ui_skinselector.c:179 +#: src/skins/ui_skinselector.c:162 msgid "Archived Winamp 2.x skin" msgstr "Zabalený vzhľad pre WinAMP 2.x" -#: src/skins/ui_skinselector.c:184 +#: src/skins/ui_skinselector.c:167 msgid "Unarchived Winamp 2.x skin" msgstr "Nezabalený vzhľad pre WinAMP 2.x" -#: src/skins/util.c:834 +#: src/skins/util.c:774 #, c-format msgid "Could not create directory (%s): %s\n" msgstr "Nepodarilo sa vytvoriÅ¥ adresár (%s): %s\n" -#: src/sndfile/plugin.c:531 +#: src/sndfile/plugin.c:456 msgid "About sndfile plugin" msgstr "Modul sndfile (WAV)" -#: src/sndfile/plugin.c:532 -msgid "" -"Adapted for Audacious usage by Tony Vroon \n" -"from the xmms_sndfile plugin which is:\n" -"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -"This program is free software ; you can redistribute it and/or modify \n" -"it under the terms of the GNU General Public License as published by \n" -"the Free Software Foundation ; either version 2 of the License, or \n" -"(at your option) any later version. \n" -" \n" -"This program is distributed in the hope that it will be useful, \n" -"but WITHOUT ANY WARRANTY ; without even the implied warranty of \n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n" -"See the GNU General Public License for more details. \n" -"\n" -"You should have received a copy of the GNU General Public \n" -"License along with this program ; if not, write to \n" -"the Free Software Foundation, Inc., \n" -"51 Franklin Street, Fifth Floor, \n" -"Boston, MA 02110-1301 USA" -msgstr "" -"Pre Audacious upravil Tony Vroon \n" -"z pôvodného modulu pre xmms_sndfile:\n" -"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -"Tento program slobodný sotvér. Môžete ho šíriÅ¥ a/alebo upravovaÅ¥ podľa " -"ustanovení GNU GPL, vydávanej nadáciou Free Software Foundation; buÄ vo " -"verzii 2, tejto licencie, alebo (podľa vášho uváženia) v ľubovoľnej novÅ¡ej " -"verzii.\n" -"\n" -"Tento program je rozÅ¡irovaný v nádeji, že bude užitoÄný, ale BEZ AKEJKOĽVEK " -"ZÃRUKY; neposkytujú sa ani odvodené záruky PREDAJNOSTI, alebo VHODNOSTI PRE " -"URÄŒITà ÚČEL. ÄŽalÅ¡ie podrobnosti hľadajte v GNU GPL.\n" -"\n" -"Kópiu GNU GPL by ste mali dostaÅ¥ spolu s týmto programom. Ak sa tak nestalo, " -"požiadajte o ňu Free Software Foundation, Inc., 51 Franklin Street, Fifth " -"Floor, Boston, MA 02110-1301, USA." - -#: src/sndstretch/sndstretch_xmms.c:175 +#: src/sndstretch/sndstretch_xmms.c:155 msgid "About SndStretch" msgstr "O module SndStretch" -#: src/sndstretch/sndstretch_xmms.c:336 +#: src/sndstretch/sndstretch_xmms.c:308 msgid "Volume corr." msgstr "Oprava hlasitosti" -#: src/sndstretch/sndstretch_xmms.c:337 +#: src/sndstretch/sndstretch_xmms.c:309 msgid "Short Overlap" msgstr "Krátke presahy" -#: src/sndstretch/sndstretch_xmms.c:391 +#: src/sndstretch/sndstretch_xmms.c:355 msgid "Speed" msgstr "RýchlosÅ¥" -#: src/sndstretch/sndstretch_xmms.c:392 +#: src/sndstretch/sndstretch_xmms.c:356 msgid "Pitch" msgstr "Výška" -#: src/sndstretch/sndstretch_xmms.c:413 +#: src/sndstretch/sndstretch_xmms.c:357 +msgid "Scale" +msgstr "ZväÄÅ¡iÅ¥" + +#: src/sndstretch/sndstretch_xmms.c:377 msgid "SndStretch - Configuration" msgstr "SndStretch - Nastavenie" -#: src/song_change/song_change.c:397 +#: src/song_change/song_change.c:437 msgid "Command to run when Audacious starts a new song." msgstr "Príkaz, ktorý sa vykoná keÄ Audacious zaÄne prehrávaÅ¥ novú skladbu." -#: src/song_change/song_change.c:398 src/song_change/song_change.c:402 -#: src/song_change/song_change.c:406 src/song_change/song_change.c:410 +#: src/song_change/song_change.c:439 src/song_change/song_change.c:445 +#: src/song_change/song_change.c:451 src/song_change/song_change.c:457 msgid "Command:" msgstr "Príkaz:" -#: src/song_change/song_change.c:401 +#: src/song_change/song_change.c:443 msgid "Command to run toward the end of a song." msgstr "Príkaz, ktorý sa vykoná na konci skladby." -#: src/song_change/song_change.c:405 +#: src/song_change/song_change.c:449 msgid "Command to run when Audacious reaches the end of the playlist." msgstr "" "Príkaz, ktorý sa vykoná, keÄ Audacious dosiahne koniec zoznamu skladieb." -#: src/song_change/song_change.c:409 +#: src/song_change/song_change.c:455 msgid "" "Command to run when title changes for a song (i.e. network streams titles)." msgstr "" "Príkaz, ktorý sa vykoná pri zmene názvu skladby (t.j. pre názvy v sieÅ¥ových " "prúdoch)." -#: src/song_change/song_change.c:413 +#: src/song_change/song_change.c:461 msgid "" "You can use the following format strings which\n" "will be substituted before calling the command\n" @@ -5471,47 +3425,49 @@ "%n or %s: Song name\n" "%r: Rate (in bits per second)\n" "%t: Playlist position (%02d)\n" -"%p: Currently playing (1 or 0)" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" msgstr "" "Môžete použiÅ¥ nasledujúce formátovacie reÅ¥azce,\n" "ktoré budú pri spustení príkazu nahradené (nie vÅ¡etky\n" "sú užitoÄné pre príkaz spúšťaný na konci zoznamu skladieb).\n" "\n" -"%F: frekvencia (v hertzoch)\n" -"%c: poÄet kanálov\n" -"%f: názov súboru (celá cesta)\n" -"%l: dĺžka (v milisekundách)\n" -"%n alebo %%s: názov skladby\n" -"%r: dátový tok (v bitoch za sekundu)\n" -"%t: pozícia v zozname skladieb (%02d)\n" -"%p: práve sa hrá (1 alebo 0)" +"%F: Frekvencia (v hertzoch)\n" +"%c: PoÄet kanálov\n" +"%f: Názov súboru (celá cesta)\n" +"%l: Dĺžka (v milisekundách)\n" +"%n alebo %s: Názov skladby\n" +"%r: Dátový tok (v bitoch za sekundu)\n" +"%t: Pozícia v zozname skladieb (%02d)\n" +"%p: Práve sa hrá (1 alebo 0)\n" +"%a: Umelec\n" +"%b: Album\n" +"%T: Názov stopy" -#: src/song_change/song_change.c:437 +#: src/song_change/song_change.c:488 msgid "" "Parameters passed to the shell should be encapsulated in " "quotes. Doing otherwise is a security risk." msgstr "" "Parametre predávané shellu by mali byÅ¥ uzatvorené do " -"úvodzoviek. NereÅ¡pektovanie tejto rady predstavuje bezpeÄnostné riziko." +"úvodzoviek. NereÅ¡pektovanie tejto rady predstavuje bezpeÄnostné " +"riziko." -#: src/song_change/song_change.c:448 +#: src/song_change/song_change.c:499 msgid "Commands" msgstr "Príkazy" -#: src/song_change/song_change.c:484 +#: src/song_change/song_change.c:529 msgid "Song Change" msgstr "Zmena skladby" -#: src/spectrum/spectrum.c:89 -msgid "Spectrum Analyzer" -msgstr "Analyzátor spektra" - -#: src/statusicon/statusicon.c:355 +#: src/statusicon/statusicon.c:379 msgid "About Status Icon Plugin" msgstr "O module Stavová ikona" -#: src/statusicon/statusicon.c:356 +#: src/statusicon/statusicon.c:380 msgid "" "Status Icon Plugin\n" "\n" @@ -5529,35 +3485,51 @@ "Tento modul poskytuje stavovú ikonu umiestnenú\n" "v oznamovacej oblasti správcu okien.\n" -#: src/statusicon/statusicon.c:418 +#: src/statusicon/statusicon.c:451 msgid "Status Icon Plugin - Preferences" msgstr "Modul Stavová ikona - Nastavenia" -#: src/statusicon/statusicon.c:428 +#: src/statusicon/statusicon.c:461 msgid "Right-Click Menu" msgstr "Ponuka pri stlaÄení pravého tlaÄidla" -#: src/statusicon/statusicon.c:433 +#: src/statusicon/statusicon.c:466 msgid "Small playback menu #1" msgstr "Jednoduchá ponuka na prehrávanie Ä. 1" -#: src/statusicon/statusicon.c:436 +#: src/statusicon/statusicon.c:469 msgid "Small playback menu #2" msgstr "Jednoduchá ponuka na prehrávanie Ä. 2" -#: src/statusicon/statusicon.c:452 +#: src/statusicon/statusicon.c:485 msgid "Mouse Scroll Action" msgstr "Reakcia na otáÄanie kolieska na myÅ¡i" -#: src/statusicon/statusicon.c:456 +#: src/statusicon/statusicon.c:489 msgid "Change volume" msgstr "ZmeniÅ¥ hlasitosÅ¥" -#: src/statusicon/statusicon.c:458 +#: src/statusicon/statusicon.c:491 msgid "Change playing song" msgstr "ZmeniÅ¥ prehrávanú skladbu" -#: src/stereo_plugin/stereo.c:40 +#: src/statusicon/statusicon.c:504 +msgid "Other settings" +msgstr "ÄŽalÅ¡ie nastavenia" + +#: src/statusicon/statusicon.c:509 +msgid "Disable the popup window" +msgstr "ZakázaÅ¥ vyskakovacie okno" + +#: src/statusicon/statusicon.c:516 +msgid "Close to the notification area (system tray)" +msgstr "ZatvoriÅ¥ do oznamovacej oblasti (systémovej Äasti panelu)" + +#: src/statusicon/statusicon.c:524 +msgid "Advance in playlist when scrolling upward" +msgstr "PokraÄovaÅ¥ v zozname skladieb ak sa posúva smerom hore" + +#: src/stereo_plugin/stereo.c:45 msgid "" "Extra Stereo Plugin\n" "\n" @@ -5571,110 +3543,15 @@ msgid "About Extra Stereo Plugin" msgstr "O module Extra stereo" -#: src/stereo_plugin/stereo.c:100 +#: src/stereo_plugin/stereo.c:95 msgid "Configure Extra Stereo" msgstr "NastaviÅ¥ Extra stereo" -#: src/streambrowser/gui/streambrowser_win.c:62 -msgid "Search:" -msgstr "HľadaÅ¥:" - -#: src/streambrowser/gui/streambrowser_win.c:81 -#: src/streambrowser/gui/streambrowser_win.c:370 -msgid "Add Bookmark" -msgstr "PridaÅ¥ záložku" - -#: src/streambrowser/gui/streambrowser_win.c:95 -msgid "Stream browser" -msgstr "PrehliadaÄ prúdov" - -#: src/streambrowser/gui/streambrowser_win.c:319 -msgid "Stream name" -msgstr "Názov prúdu" - -#: src/streambrowser/gui/streambrowser_win.c:326 -msgid "Now playing" -msgstr "Práve hrá" - -#: src/streambrowser/gui/streambrowser_win.c:367 -msgid "Remove Bookmark" -msgstr "OdstrániÅ¥ záložku" - -#: src/streambrowser/streambrowser.c:331 -msgid "About Stream Browser" -msgstr "O prehliadaÄi prúdov" - -#: src/streambrowser/streambrowser.c:332 -msgid "" -"Copyright (c) 2008, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming " -"directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" -"\n" -"This was a Google Summer of Code 2008 project." -msgstr "" -"Copyright (c) 2008, Calin Crisan a tím Audacious.\n" -"\n" -"Toto je jednoduchý prehliadaÄ prúdov, ktorý obsahuje najobľúbenejÅ¡ie " -"adresáre prúdov.\n" -"Veľká vÄaka patrí vývojárom Streamtuner \n" -"a samozrejme celej komunite okolo Audacious.\n" -"\n" -"Opäť Äakujem Tonymu Vroonovi za rady a vedenie.\n" -"\n" -"Toto bol Google Summer of Code 2008 projekt." - -#: src/streambrowser/streambrowser.c:357 src/streambrowser/streambrowser.c:367 -msgid "Streambrowser" -msgstr "PrehliadaÄ prúdov" - -#: src/sun/about.c:30 -msgid "About the Sun Driver" -msgstr "O ovládaÄi pre Sun" - -#: src/sun/about.c:31 -msgid "" -"XMMS BSD Sun Driver\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" -msgstr "" -"BSD ovládaÄ pre Sun programu XMMS\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Správca: .\n" - -#: src/sun/configure.c:199 -msgid "Audio control device:" -msgstr "Zariadenie na ovládanie zvuku:" - -#: src/sun/configure.c:270 -msgid "Buffer size (ms):" -msgstr "VeľkosÅ¥ vyrovnávacej pamäte (ms):" - -#: src/sun/configure.c:348 -msgid "Volume controls device:" -msgstr "Zariadenie na ovládanie hlasitosti:" - -#: src/sun/configure.c:361 -msgid "XMMS uses mixer exclusively." -msgstr "XMMS používa výluÄný prístup k mixéru." - -#: src/sun/configure.c:536 -msgid "Sun driver configuration" -msgstr "Nastavenie ovládaÄa pre Sun" - -#: src/tonegen/tonegen.c:53 +#: src/tonegen/tonegen.c:49 msgid "About Tone Generator" msgstr "O generátore tónov" -#: src/tonegen/tonegen.c:55 +#: src/tonegen/tonegen.c:51 msgid "" "Sinus tone generator by Haavard Kvaalen \n" "Modified by Daniel J. Peng \n" @@ -5686,39 +3563,26 @@ "Upravil Daniel J. Peng \n" "\n" "Pre použitie zadajte URL: tone://frekvencia1;frekvencia2; frekvencia3;...\n" -"napr. na prehranie tónov o frekvencii 2000Hz a 2005Hz zadajte " -"tone://2000;2005" +"napr. na prehranie tónov o frekvencii 2000Hz a 2005Hz zadajte tone://2000;2005" -#: src/tonegen/tonegen.c:105 +#: src/tonegen/tonegen.c:101 #, c-format msgid "%s %.1f Hz" msgstr "%s %.1f Hz" -#: src/tonegen/tonegen.c:105 +#: src/tonegen/tonegen.c:101 msgid "Tone Generator: " msgstr "Generátor tónov: " -#: src/vorbis/configure.c:31 -msgid "Override generic titles" -msgstr "PoužívaÅ¥ vlastný formát názvu" - -#: src/vorbis/configure.c:32 -msgid "Title format:" -msgstr "Formát názvu:" - -#: src/vorbis/configure.c:36 -msgid "Ogg Vorbis Tags" -msgstr "ZnaÄky Ogg Vorbis" - -#: src/vorbis/configure.c:68 -msgid "Ogg Vorbis Audio Plugin Configuration" -msgstr "Nastavenie modulu Ogg Vorbis Audio" +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" +msgstr "O module File I/O" -#: src/vorbis/vorbis.c:549 +#: src/vorbis/vorbis.c:573 msgid "About Ogg Vorbis Audio Plugin" msgstr "O module Ogg Vorbis Audio" -#: src/vorbis/vorbis.c:554 +#: src/vorbis/vorbis.c:578 msgid "" "Ogg Vorbis Plugin by the Xiph.org Foundation\n" "\n" @@ -5759,8 +3623,7 @@ #: src/vtx/about.c:15 msgid "" "Vortex file format player by Sashnov Alexander \n" -"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" "\n" "Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" "and other AY/YM music sites.\n" @@ -5768,20 +3631,18 @@ "Audacious implementation by Pavel Vymetalek " msgstr "" "PrehrávaÄ hudobného formátu Vortex napísal \n" -"Založené na pôvodom zdrojovom kóde in_vtx.dll od Romana Sherbakova " -"\n" +"Založené na pôvodom zdrojovom kóde in_vtx.dll od Romana Sherbakova \n" "\n" -"Hudba vo formáte vtx môže byÅ¥ nájdená na http://vtx.microfor.ru/music.htm a " -"Äalších AY/YM hudobných stránkach.\n" +"Hudba vo formáte vtx môže byÅ¥ nájdená na http://vtx.microfor.ru/music.htm a Äalších AY/YM hudobných stránkach.\n" "\n" "Pre Audacious upravil Pavel Vymetalek " -#: src/wavpack/wavpack.c:371 +#: src/wavpack/wavpack.c:353 #, c-format msgid "Wavpack Decoder Plugin %s" msgstr "Modul dekodéra Wavpack %s" -#: src/wavpack/wavpack.c:372 +#: src/wavpack/wavpack.c:354 msgid "" "Copyright (c) 2006 William Pitcock \n" "\n" @@ -5793,162 +3654,4 @@ "Niektoré Äasti kódu modulu napísal Miles Egan\n" "NavÅ¡tívte stránku Wavpack na adrese http://www.wavpack.com/\n" -#~ msgid "PREAMP" -#~ msgstr "PREAMP" - -#~ msgid "60HZ" -#~ msgstr "60Hz" - -#~ msgid "170HZ" -#~ msgstr "170Hz" - -#~ msgid "310HZ" -#~ msgstr "310Hz" - -#~ msgid "600HZ" -#~ msgstr "600Hz" - -#~ msgid "1KHZ" -#~ msgstr "1kHz" - -#~ msgid "3KHZ" -#~ msgstr "3kHz" - -#~ msgid "6KHZ" -#~ msgstr "6kHz" - -#~ msgid "12KHZ" -#~ msgstr "12kHz" - -#~ msgid "14KHZ" -#~ msgstr "14kHz" - -#~ msgid "16KHZ" -#~ msgstr "16kHz" - -#~ msgid "Audacious standard menu" -#~ msgstr "Å tandardná ponuka Audacious" - -#~ msgid "Surround echo" -#~ msgstr "Priestorová ozvena" - -#~ msgid "About ESounD Plugin" -#~ msgstr "O module ESounD" - -#~ msgid "" -#~ "Audacious ESounD Plugin\n" -#~ "\n" -#~ " This program is free software; you can redistribute it and/or modify\n" -#~ "it under the terms of the GNU General Public License as published by\n" -#~ "the Free Software Foundation; either version 2 of the License, or\n" -#~ "(at your option) any later version.\n" -#~ "\n" -#~ "This program is distributed in the hope that it will be useful,\n" -#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -#~ "GNU General Public License for more details.\n" -#~ "\n" -#~ "You should have received a copy of the GNU General Public License\n" -#~ "along with this program; if not, write to the Free Software\n" -#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA " -#~ "02110-1301,\n" -#~ "USA." -#~ msgstr "" -#~ "Modul ESounD pre Audacious\n" -#~ "\n" -#~ "Tento program je slobodný softvér. Môžete ho šíriÅ¥ a/alebo upravovaÅ¥ " -#~ "podľa ustanovení GNU GPL, vydávanej nadáciou Free Software Foundation; " -#~ "buÄ vo verzii 2 tejto licencie, alebo (podľa vášho uváženia) v ľubovoľnej " -#~ "novÅ¡ej verzii.\n" -#~ "\n" -#~ "Tento program je rozÅ¡irovaný v nádeji, že bude užitoÄný, ale BEZ " -#~ "AKEJKOĽVEK ZÃRUKY. Neposkytujú sa ani odvodené záruky PREDAJNOSTI alebo " -#~ "VHODNOSTI PRE URÄŒITà ÚČEL. ÄŽalÅ¡ie podrobnosti hľadajte v GNU GPL.\n" -#~ "\n" -#~ "Kópiu GNU GPL ste mali dostaÅ¥ spolu s týmto programom. Ak sa tak nestalo, " -#~ "požiadajte o ňu Free Software Foundation, Inc., 51 Franklin Street, Fifth " -#~ "Floor, Boston, MA 02110-1301, USA." - -#~ msgid "ESD Output Plugin configuration" -#~ msgstr "Nastavenie výstupného modulu ESD" - -#~ msgid "Host:" -#~ msgstr "Hostiteľ:" - -#~ msgid "Use remote host" -#~ msgstr "PoužiÅ¥ vzdialený poÄítaÄ" - -#~ msgid "Volume controls OSS mixer" -#~ msgstr "HlasitosÅ¥ je ovládaná mixérom OSS" - -#~ msgid "Port:" -#~ msgstr "Port:" - -#~ msgid "Server" -#~ msgstr "Server" - -#~ msgid "GTK Foobar-like Interface" -#~ msgstr "GTK rozhranie podobné prehrávaÄu Foobar" - -#~ msgid "Load List" -#~ msgstr "NaÄítaÅ¥ zoznam" - -#~ msgid "Save List" -#~ msgstr "UložiÅ¥ zoznam" - -#~ msgid "About RoarAudio Plugin" -#~ msgstr "O module RoarAudio" - -#~ msgid "RoarAudio Audacious Plugin..." -#~ msgstr "Modul RoarAudio pre Audacious…" - -#~ msgid "RoarAudio Plugin - Configuration" -#~ msgstr "Modul RoarAudio - Konfigurácia" - -#~ msgid "Server Type:" -#~ msgstr "Druh serveru:" - -#~ msgid "Host or Path:" -#~ msgstr "Hostiteľ alebo cesta:" - -#~ msgid "Host:" -#~ msgstr "Hostiteľ:" - -#~ msgid "Server & Network" -#~ msgstr "Server a sieÅ¥" - -#~ msgid "Proxy Address" -#~ msgstr "Adresa proxy servera" - -#~ msgid "Proxy" -#~ msgstr "Proxy" - -#~ msgid "Proxy" -#~ msgstr "Proxy" - -#~ msgid "Player Name:" -#~ msgstr "Názov prehrávaÄa:" - -#~ msgid "Player" -#~ msgstr "PrehrávaÄ" - -#~ msgid "Current Song" -#~ msgstr "Aktuálna skladba" - -#~ msgid "Meta Data" -#~ msgstr "Metadáta" - -#~ msgid "" -#~ "Unable to save playlist.\n" -#~ "\n" -#~ "Unknown file type for '%s'.\n" -#~ msgstr "" -#~ "Zoznam skladieb sa nedá uložiÅ¥.\n" -#~ "\n" -#~ "Neznámy typ súboru '%s'.\n" - -#~ msgid "Randomize List" -#~ msgstr "PremieÅ¡aÅ¥ zoznam" -#~ msgid "Randomizes the playlist." -#~ msgstr "Zoradí skladby v zozname v náhodnom poradí." diff -Nru audacious-plugins-2.4.4/po/sr.po audacious-plugins-3.2/po/sr.po --- audacious-plugins-2.4.4/po/sr.po 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/po/sr.po 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,3654 @@ +# Serbian translation for Audacious Plugins +# Copyright (C) Audacious Translators +# This file is distributed under the same license as the Audacious Plugins package. +# +# Translators: +# МироÑлав Ðиколић , 2011, 2012. +msgid "" +msgstr "" +"Project-Id-Version: Audacious\n" +"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2011-12-29 19:29-0500\n" +"PO-Revision-Date: 2012-01-08 17:16+0000\n" +"Last-Translator: MirosNik \n" +"Language-Team: Serbian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr_RS\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" + +#: src/aac/libmp4.c:256 +#, c-format +msgid "" +"Using libfaad2-%s for decoding.\n" +"FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com\n" +"Copyright (c) 2005-2006 Audacious team" +msgstr "" +"КориÑти libfaad2-%s за декодирање.\n" +"ФÐÐД2 ÐÐЦ/ХЕ-ÐÐЦ/ХЕ-ÐÐЦв2/ДРМ декодер (c) Ðеро ÐГ, www.nero.com\n" +"ÐуторÑка права (c) 2005-2006 Екипа Безочника" + +#: src/aac/libmp4.c:261 +msgid "About MP4 AAC decoder plugin" +msgstr "О прикључку МП4 ÐÐЦ декодеру" + +#: src/alarm/alarm.c:312 +msgid "About Alarm" +msgstr "О Ðларму" + +#: src/alarm/alarm.c:313 +msgid "" +"A plugin that can be used to start playing at a certain time.\n" +"\n" +"Originally written by Adam Feakin and Daniel Stodden." +msgstr "" +"Прикључак који може бити коришћен да започне пуштање у одређено време.\n" +"\n" +"Првобитни аутори Ñу Ðдам Фикин и Данијел Стоден." + +#: src/alarm/interface.c:33 +msgid "Alarm" +msgstr "Ðларм" + +#: src/alarm/interface.c:40 +msgid "This is your wakeup call." +msgstr "Ово је ваш позив за буђење." + +#: src/alarm/interface.c:55 src/alarm/interface.c:1213 +msgid "OK" +msgstr "У реду" + +#: src/alarm/interface.c:214 +msgid "Alarm Settings" +msgstr "Подешавања аларма" + +#: src/alarm/interface.c:229 src/alarm/interface.c:401 +#: src/alarm/interface.c:773 +msgid "Time" +msgstr "Време" + +#: src/alarm/interface.c:270 +msgid "hours" +msgstr "Ñат(а)" + +#: src/alarm/interface.c:331 +msgid "h" +msgstr "чаÑова" + +#: src/alarm/interface.c:361 +msgid "minutes" +msgstr "минута" + +#: src/alarm/interface.c:379 +msgid "Quiet after:" +msgstr "Утишај након:" + +#: src/alarm/interface.c:389 +msgid "Alarm at (default):" +msgstr "Ðктивирај аларм у (оÑновно):" + +#: src/alarm/interface.c:409 +msgid "Choose the days for the alarm to come on" +msgstr "Изаберите којим данима ће Ñе активирати аларм" + +#: src/alarm/interface.c:437 src/alarm/interface.c:485 +#: src/alarm/interface.c:533 src/alarm/interface.c:581 +#: src/alarm/interface.c:629 src/alarm/interface.c:677 +#: src/alarm/interface.c:725 src/bs2b/plugin.c:198 src/OSS/configure.c:153 +#: src/skins/ui_equalizer.c:1104 src/skins/ui_manager.c:447 +#: src/skins/ui_manager.c:468 +msgid "Default" +msgstr "ОÑновно" + +#: src/alarm/interface.c:763 +msgid "Day" +msgstr "Дан" + +#: src/alarm/interface.c:783 +msgid "Tuesday" +msgstr "Уторак" + +#: src/alarm/interface.c:794 +msgid "Wednesday" +msgstr "Среда" + +#: src/alarm/interface.c:805 +msgid "Thursday" +msgstr "Четвртак" + +#: src/alarm/interface.c:816 +msgid "Friday" +msgstr "Петак" + +#: src/alarm/interface.c:827 +msgid "Saturday" +msgstr "Субота" + +#: src/alarm/interface.c:838 +msgid "Sunday" +msgstr "Ðедеља" + +#: src/alarm/interface.c:848 +msgid "Monday" +msgstr "Понедељак" + +#: src/alarm/interface.c:859 +msgid "Days" +msgstr "Дани" + +#: src/alarm/interface.c:875 +msgid "Fading" +msgstr "Ишчезавање" + +#: src/alarm/interface.c:912 +msgid "seconds" +msgstr "Ñекунде" + +#: src/alarm/interface.c:920 src/alarm/interface.c:1035 +msgid "Volume" +msgstr "Јачина" + +#: src/alarm/interface.c:946 +msgid "Current" +msgstr "Тренутно" + +#: src/alarm/interface.c:954 +msgid "Start at" +msgstr "Започни при" + +#: src/alarm/interface.c:982 src/alarm/interface.c:1026 +msgid "%" +msgstr "%" + +#: src/alarm/interface.c:998 +msgid "Final" +msgstr "Заврши при" + +#: src/alarm/interface.c:1051 +msgid "Additional Command" +msgstr "Додатна наредба" + +#: src/alarm/interface.c:1077 +msgid "enable" +msgstr "укључи" + +#: src/alarm/interface.c:1085 +msgid "Playlist (optional)" +msgstr "СпиÑак нумера (необавезно)" + +#: src/alarm/interface.c:1111 +msgid "Browse..." +msgstr "Претражи..." + +#: src/alarm/interface.c:1119 src/alarm/interface.c:1283 +msgid "Reminder" +msgstr "ПодÑетник" + +#: src/alarm/interface.c:1136 +msgid "Use reminder" +msgstr "КориÑти подÑетник" + +#: src/alarm/interface.c:1152 src/sndstretch/sndstretch_xmms.c:358 +msgid "Options" +msgstr "Опције" + +#: src/alarm/interface.c:1160 +msgid "What do these options mean?" +msgstr "Шта значе ове опције?" + +#: src/alarm/interface.c:1188 +msgid "" +"\n" +"Time\n" +" Alarm at: \n" +" The time for the alarm to come on.\n" +"\n" +" Quiet After: \n" +" Stop alarm after this amount of time.\n" +" (if the wakeup dialog is not closed)\n" +"\n" +"\n" +"Days\n" +" Day:\n" +" Select the days for the alarm to activate.\n" +"\n" +" Time:\n" +" Choose the time for the alarm on each day,\n" +" or select the toggle button to use the default\n" +" time.\n" +"\n" +"\n" +"Volume\n" +" Fading: \n" +" Fade the volume up to the chosen volume \n" +" for this amount of time.\n" +"\n" +" Start at: \n" +" Start fading from this volume.\n" +"\n" +" Final: \n" +" The volume to stop fading at. If the fading\n" +" time is 0 then set volume to this and start\n" +" playing.\n" +"\n" +"\n" +"Options:\n" +" Additional Command:\n" +" Run this command at the alarm time.\n" +"\n" +" Playlist: \n" +" Load this playlist for playing songs from \n" +" (must have .m3u extension). If no playlist\n" +" is given then the songs which are currently\n" +" in the list will be used.\n" +" The URL of an mp3/ogg stream can also be\n" +" entered here, but loading of playlists from\n" +" URLs is not currently supported by xmms.\n" +"\n" +" Reminder:\n" +" Display a reminder when the alarm goes off,\n" +" type the reminder in the box and turn on the\n" +" toggle button if you want it to be shown.\n" +msgstr "" +"\n" +"Време\n" +" Ðктивирај аларм у: \n" +" Време када ће Ñе активирати аларм.\n" +"\n" +" Утишај након: \n" +" ЗауÑтавља аларм након иÑтека овог времена.\n" +" (ако није затворено прозорче буђења)\n" +"\n" +"\n" +"Дани\n" +" Дан:\n" +" Изаберите којим данима ће бити активиран аларм.\n" +"\n" +" Време:\n" +" Изаберите време аларма за Ñваки дан, или\n" +" штиклирајте квадратић да кориÑтите оÑновно време.\n" +"\n" +"\n" +"Јачина\n" +" Ишчезавање: \n" +" Повећава јачину звука до изабране јачине\n" +" у овом временÑком периоду.\n" +"\n" +" Започни при: \n" +" Започиње појачавање од ове јачине.\n" +"\n" +" Заврши при: \n" +" Јачина при којој ће бити зауÑтављено појачање.\n" +" Ðко је време појачања 0 онда подешава јачину\n" +" на ову и започиње пуштање.\n" +"\n" +"\n" +"Опције:\n" +" Додатна наредба:\n" +" Покреће ову наредбу за време аларма.\n" +"\n" +" СпиÑак нумера: \n" +" Учитава овај ÑпиÑак нумера да би пуштао пеÑме \n" +" (мора да Ñадржи .m3u проширење). Ðко није дат\n" +" ÑпиÑак нумера онда ће бити коришћене пеÑме\n" +" које Ñе тренутно налазе на ÑпиÑку.\n" +" ÐдреÑа мп3/огг тока може такође бити унешена\n" +" овде, али Ñ…Ð¼Ð¼Ñ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¾ не подржава\n" +" учитавање ÑпиÑка нумера Ñа адреÑа.\n" +"\n" +" ПодÑетник:\n" +" Приказује подÑетник након иÑкључења аларма,\n" +" упишите подÑетник у поље и штиклирајте\n" +" квадратић ако желите да буде приказиван.\n" + +#: src/alarm/interface.c:1190 src/skins/ui_manager.c:382 +msgid "Help" +msgstr "Помоћ" + +#: src/alarm/interface.c:1222 src/cdaudio-ng/configure.c:249 +#: src/crystalizer/crystalizer.c:130 src/echo_plugin/gui.c:125 +#: src/jack/configure.c:148 src/null/null.c:108 src/stereo_plugin/stereo.c:125 +msgid "Cancel" +msgstr "Откажи" + +#: src/alarm/interface.c:1290 +msgid "Your reminder for today is.." +msgstr "Ваш подÑетник за Ð´Ð°Ð½Ð°Ñ Ñ˜Ðµ.." + +#: src/alarm/interface.c:1315 +msgid "Thankyou" +msgstr "Хвала вам" + +#: src/alsa/config.c:210 +msgid "Default PCM device" +msgstr "ОÑновни ПЦМ уређај" + +#: src/alsa/config.c:235 +msgid "Default mixer device" +msgstr "ОÑновни уређај мешача" + +#: src/alsa/config.c:438 +msgid "ALSA Output Plugin Preferences" +msgstr "ПоÑтавке ÐлÑиног прикључка излаза" + +#: src/alsa/config.c:445 +msgid "PCM device:" +msgstr "ПЦМ уређај:" + +#: src/alsa/config.c:447 src/OSS/configure.c:237 +msgid "Mixer device:" +msgstr "Уређај микÑера:" + +#: src/alsa/config.c:449 +msgid "Mixer element:" +msgstr "Елемент мешача:" + +#: src/alsa/config.c:452 +msgid "Work around drain hangup" +msgstr "Решите Ñуви прекид" + +#: src/alsa/plugin.c:59 +msgid "About ALSA Output Plugin" +msgstr "О прикључку ÐЛСРизлаза" + +#: src/alsa/plugin.c:81 +msgid "ALSA error" +msgstr "Грешка ÐЛСÐ-е" + +#: src/amidi-plug/amidi-plug.c:326 +msgid "" +"You have not selected any sequencer ports for MIDI playback. You can do so " +"in the MIDI plugin preferences." +msgstr "" +"ÐиÑте изабрали ниједан порт Ñеквенцера за МИДИ пуштање. То можете урадити у " +"поÑтавкама МИДИ прикључка." + +#: src/amidi-plug/backend-alsa/b-alsa.c:35 +msgid "ALSA Backend " +msgstr "ÐЛСРпозадинац " + +#: src/amidi-plug/backend-alsa/b-alsa.c:37 +msgid "" +"This backend sends MIDI events to a group of user-chosen ALSA sequencer ports. The ALSA sequencer interface is very versatile, it can provide ports for audio cards hardware synthesizers (i.e. emu10k1) but also for software synths, external devices, etc.\n" +"This backend does not produce audio, MIDI events are handled directly from devices/programs behind the ALSA ports; in example, MIDI events sent to the hardware synth will be directly played.\n" +"Backend written by Giacomo Lozito." +msgstr "" +"Овај позадинац шаље МИДИ догађаје у групу портова ÐЛСРÑеквенцера коју је изабрао кориÑник. Сучеље ÐЛСРÑеквенцера је врло разноврÑно, може да обезбеди портове за хардверÑке ÑинтиÑајзере звучних картица (тј. ему10к1), али такође и за ÑофтверÑке ÑинтиÑајзере, Ñпољне уређаје, итд.\n" +"Овај позадинац не производи звук, МИДИ догађајима Ñе управља непоÑредно Ñа уређаја/програма иза ÐЛСРпортова; на пример, МИДИ догађаји поÑлати хардверÑком ÑинтиÑајзеру ће бити директно репродуковани.\n" +"Овај програм је напиÑао Ђакомо Лоцито." + +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 +msgid "FluidSynth Backend " +msgstr "Флуид Ñинт позадинац " + +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 +msgid "" +"This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" +"Backend written by Giacomo Lozito." +msgstr "" +"Овај позадинац производи звук тако што шаље МИДИ догађаје Флуид Ñинту, реално временÑком ÑофтверÑком ÑинтиÑајзеру заÑнованом на СаундФонт2 Ñпецификацији (www.fluidsynth.org).\n" +"Произведени звук може бити манипулиÑан помоћу програмÑких прикључака за ефекте а обрађен изабраним прикључком излаза.\n" +"Овај програм је напиÑао Ђакомо Лоцито." + +#: src/amidi-plug/i_configure-alsa.c:228 +msgid "ALSA BACKEND CONFIGURATION" +msgstr "ПОДЕШÐÐ’ÐЊРÐЛСРПОЗÐДИÐЦÐ" + +#: src/amidi-plug/i_configure-alsa.c:331 +msgid "Port" +msgstr "Порт" + +#: src/amidi-plug/i_configure-alsa.c:333 +msgid "Client name" +msgstr "Име програма" + +#: src/amidi-plug/i_configure-alsa.c:335 +msgid "Port name" +msgstr "Име порта" + +#: src/amidi-plug/i_configure-alsa.c:346 +msgid "ALSA output ports" +msgstr "ÐЛСÐ, излазни портови" + +#: src/amidi-plug/i_configure-alsa.c:399 +msgid "Soundcard: " +msgstr "Звучна картица: " + +#: src/amidi-plug/i_configure-alsa.c:401 +msgid "Mixer control: " +msgstr "Контрола микÑера: " + +#: src/amidi-plug/i_configure-alsa.c:413 +msgid "Mixer settings" +msgstr "Подешавања микÑера" + +#: src/amidi-plug/i_configure-alsa.c:429 +msgid "ALSA Backend not loaded or not available" +msgstr "ÐЛСРпозадинац није учитан или није доÑтупан" + +#: src/amidi-plug/i_configure-alsa.c:448 +msgid "" +"ALSA\n" +"backend" +msgstr "" +"ÐЛСÐ\n" +"позадинац" + +#: src/amidi-plug/i_configure-ap.c:59 +msgid "AMIDI-Plug - backend information" +msgstr "ÐМИДИ прикључак — информације о позадинцу" + +#: src/amidi-plug/i_configure-ap.c:196 +msgid "AMIDI-PLUG PREFERENCES" +msgstr "ПОДЕШÐÐ’ÐЊРÐМИДИ ПРИКЉУЧКÐ" + +#: src/amidi-plug/i_configure-ap.c:223 +msgid "Backend selection" +msgstr "Избор позадинца" + +#: src/amidi-plug/i_configure-ap.c:227 +msgid "Available backends" +msgstr "ДоÑтупни позадинци" + +#: src/amidi-plug/i_configure-ap.c:257 +msgid "Playback settings" +msgstr "Подешавања репродукције" + +#: src/amidi-plug/i_configure-ap.c:262 +msgid "Transpose: " +msgstr "Премештај: " + +#: src/amidi-plug/i_configure-ap.c:271 +msgid "Drum shift: " +msgstr "Промена бубња: " + +#: src/amidi-plug/i_configure-ap.c:289 +msgid "Advanced settings" +msgstr "Ðапредна подешавања" + +#: src/amidi-plug/i_configure-ap.c:293 +msgid "pre-calculate length of MIDI files in playlist" +msgstr "унапред израчунај дужину МИДИ датотека у ÑпиÑку нумера" + +#: src/amidi-plug/i_configure-ap.c:298 +msgid "extract comments from MIDI file (if available)" +msgstr "извуци коментаре из МИДИ датотеке (ако поÑтоје)" + +#: src/amidi-plug/i_configure-ap.c:303 +msgid "extract lyrics from MIDI file (if available)" +msgstr "извуци текÑÑ‚ пеÑме из МИДИ датотеке (ако поÑтоји)" + +#: src/amidi-plug/i_configure-ap.c:333 +msgid "" +"AMIDI\n" +"Plug" +msgstr "" +"ÐМИДИ\n" +"прикључак" + +#: src/amidi-plug/i_configure.c:76 +msgid "AMIDI-Plug - select file" +msgstr "ÐМИДИ прикључак — изаберите датотеку" + +#: src/amidi-plug/i_configure.c:129 +msgid "AMIDI-Plug - configuration" +msgstr "ÐМИДИ прикључак — подешавања" + +#: src/amidi-plug/i_configure-fluidsynth.c:55 +msgid "AMIDI-Plug - select SoundFont file" +msgstr "ÐМИДИ прикључак — изаберите СаундФонт датотеку" + +#: src/amidi-plug/i_configure-fluidsynth.c:270 +msgid "FLUIDSYNTH BACKEND CONFIGURATION" +msgstr "ПОДЕШÐÐ’ÐЊРФЛУИД СИÐТ ПОЗÐДИÐЦÐ" + +#: src/amidi-plug/i_configure-fluidsynth.c:313 +msgid "SoundFont settings" +msgstr "Подешавања СаундФонта" + +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Ðазив датотеке" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 +msgid "Size (bytes)" +msgstr "Величина (бајтова)" + +#: src/amidi-plug/i_configure-fluidsynth.c:398 +msgid "Load SF on player start" +msgstr "Учитај СФ при покретању програма" + +#: src/amidi-plug/i_configure-fluidsynth.c:402 +msgid "Load SF on first midifile play" +msgstr "Учитај СФ при првом пуштању миди датотеке" + +#: src/amidi-plug/i_configure-fluidsynth.c:417 +msgid "Synthesizer settings" +msgstr "Подешавања ÑинтиÑајзера" + +#: src/amidi-plug/i_configure-fluidsynth.c:426 +msgid "gain" +msgstr "појачање" + +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 +msgid "use default" +msgstr "кориÑти оÑновно" + +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 +msgid "value:" +msgstr "вредноÑÑ‚:" + +#: src/amidi-plug/i_configure-fluidsynth.c:454 +msgid "poliphony" +msgstr "полифонија" + +#: src/amidi-plug/i_configure-fluidsynth.c:482 +msgid "reverb" +msgstr "одјек" + +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 +msgid "yes" +msgstr "да" + +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 +msgid "no" +msgstr "не" + +#: src/amidi-plug/i_configure-fluidsynth.c:513 +msgid "chorus" +msgstr "хор" + +#: src/amidi-plug/i_configure-fluidsynth.c:544 +msgid "sample rate" +msgstr "узорковање" + +#: src/amidi-plug/i_configure-fluidsynth.c:550 +msgid "22050 Hz " +msgstr "22050 Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:553 +msgid "44100 Hz " +msgstr "44100 Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:556 +msgid "96000 Hz " +msgstr "96000 Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:559 +msgid "custom " +msgstr "произвољно " + +#: src/amidi-plug/i_configure-fluidsynth.c:568 +msgid "Hz " +msgstr "Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:621 +msgid "FluidSynth Backend not loaded or not available" +msgstr "ФлуидСинт позадинац није учитан или није доÑтупан" + +#: src/amidi-plug/i_configure-fluidsynth.c:640 +msgid "" +"FluidSynth\n" +"backend" +msgstr "" +"ФлуидСинт\n" +"позадинац" + +#: src/amidi-plug/i_configure-timidity.c:39 +msgid "TIMIDITY BACKEND CONFIGURATION" +msgstr "ПОДЕШÐÐ’ÐЊРТИМИДИТИ ПОЗÐДИÐЦÐ" + +#: src/amidi-plug/i_configure-timidity.c:64 +msgid "TiMidity Backend not loaded or not available" +msgstr "ТиМидити позадинац није учитан или није доÑтупан" + +#: src/amidi-plug/i_configure-timidity.c:83 +msgid "" +"TiMidity\n" +"backend" +msgstr "" +"ТиМидити\n" +"позадинац" + +#: src/amidi-plug/i_fileinfo.c:169 +msgid "Name:" +msgstr "Ðазив:" + +#: src/amidi-plug/i_fileinfo.c:193 +msgid " MIDI Info " +msgstr " МИДИ Информације " + +#: src/amidi-plug/i_fileinfo.c:205 +msgid "Format:" +msgstr "Формат:" + +#: src/amidi-plug/i_fileinfo.c:208 +msgid "Length (msec):" +msgstr "Трајање (msec):" + +#: src/amidi-plug/i_fileinfo.c:211 +msgid "Num of Tracks:" +msgstr "Број нумера:" + +#: src/amidi-plug/i_fileinfo.c:216 +msgid "variable" +msgstr "променљиво" + +#: src/amidi-plug/i_fileinfo.c:217 +msgid "BPM:" +msgstr "БПМ:" + +#: src/amidi-plug/i_fileinfo.c:223 +msgid "BPM (wavg):" +msgstr "БПМ (wavg):" + +#: src/amidi-plug/i_fileinfo.c:226 +msgid "Time Div:" +msgstr "Див време:" + +#: src/amidi-plug/i_fileinfo.c:237 +msgid " MIDI Comments and Lyrics " +msgstr " МИДИ коментари и текÑтови пеÑама " + +#: src/amidi-plug/i_fileinfo.c:288 +msgid "* no comments available in this MIDI file *" +msgstr "* нема доÑтупних коментара у овој МИДИ датотеци *" + +#: src/amidi-plug/i_fileinfo.c:301 +msgid "* no lyrics available in this MIDI file *" +msgstr "* нема доÑтупних текÑтова пеÑама у овој МИДИ датотеци *" + +#: src/amidi-plug/i_fileinfo.c:349 +msgid " (invalid UTF-8)" +msgstr " (неиÑправан УТФ-8)" + +#: src/amidi-plug/i_utils.c:43 +msgid "AMIDI-Plug - about" +msgstr "О ÐМИДИ прикључку" + +#: src/amidi-plug/i_utils.c:68 +msgid "" +"\n" +"AMIDI-Plug " +msgstr "" +"\n" +"ÐМИДИ прикључак " + +#: src/amidi-plug/i_utils.c:69 +msgid "" +"\n" +"modular MIDI music player\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"\n" +"special thanks to...\n" +"\n" +"Clemens Ladisch and Jaroslav Kysela\n" +"for their cool programs aplaymidi and amixer; those\n" +"were really useful, along with alsa-lib docs, in order\n" +"to learn more about the ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"for the nice midi keyboard logo\n" +"\n" +"Tony Vroon\n" +"for the good help with alpha testing\n" +"\n" +msgstr "" +"\n" +"Модуларни МИДИ музички програм\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"ÐапиÑао га је Ђакомо Лоцито\n" +"< james@develia.org >\n" +"\n" +"\n" +"ПоÑебно Ñу заÑлужни...\n" +"\n" +"ÐšÐ»ÐµÐ¼ÐµÐ½Ñ Ð›Ð°Ð´Ð¸Ñˆ и ЈароÑлав КиÑела\n" +"због њихових програма „aplaymidi“ и „amixer“; који\n" +"Ñу врло кориÑни, уз „alsa-lib docs“, како биÑмо\n" +"Ñазнали више о ÐЛСРÐПИју\n" +"\n" +"Ðлфредо Спадафина\n" +"који је урадио леп логотип МИДИ таÑтатуре \n" +"\n" +"Тони Врун\n" +"због одличне помоћи за алфа теÑтирање\n" +"\n" + +#: src/aosd/aosd_style.c:75 +msgid "Rectangle" +msgstr "Правоугаоник" + +#: src/aosd/aosd_style.c:79 +msgid "Rounded Rectangle" +msgstr "Заобљени правоугаоник" + +#: src/aosd/aosd_style.c:83 +msgid "Concave Rectangle" +msgstr "Удубљен правоугаоник" + +#: src/aosd/aosd_style.c:87 +msgid "None" +msgstr "Ðишта" + +#: src/aosd/aosd_trigger.c:78 +msgid "Playback Start" +msgstr "Почетак репродукције" + +#: src/aosd/aosd_trigger.c:79 +msgid "Triggers OSD when a playlist entry is played." +msgstr "Приказује ОСД када почиње репродукција пеÑме." + +#: src/aosd/aosd_trigger.c:83 +msgid "Title Change" +msgstr "Промена наÑлова" + +#: src/aosd/aosd_trigger.c:84 +msgid "" +"Triggers OSD when, during playback, the song title changes but the filename " +"is the same. This is mostly useful to display title changes in internet " +"streams." +msgstr "" +"Приказује ОСД када Ñе, у току репродукције, измени наÑлов пеÑме али назив " +"датотеке оÑтане иÑти. Ово је углавном кориÑно за приказивање измена у " +"наÑловима у интернет токовима." + +#: src/aosd/aosd_trigger.c:90 +msgid "Volume Change" +msgstr "Промена јачине звука" + +#: src/aosd/aosd_trigger.c:91 +msgid "Triggers OSD when volume is changed." +msgstr "Приказује ОСД када је измењена јачина звука." + +#: src/aosd/aosd_trigger.c:95 +msgid "Pause On" +msgstr "Паузирање" + +#: src/aosd/aosd_trigger.c:96 +msgid "Triggers OSD when playback is paused." +msgstr "Приказује ОСД када је репродукција привремено зауÑтављена." + +#: src/aosd/aosd_trigger.c:100 +msgid "Pause Off" +msgstr "Отпаузирање" + +#: src/aosd/aosd_trigger.c:101 +msgid "Triggers OSD when playback is unpaused." +msgstr "Приказује ОСД када је репродукција поново покренута." + +#: src/aosd/aosd_ui.c:179 +msgid "Placement" +msgstr "ПоÑтављање" + +#: src/aosd/aosd_ui.c:218 +msgid "Relative X offset:" +msgstr "Релативан хоризонтални померај:" + +#: src/aosd/aosd_ui.c:227 +msgid "Relative Y offset:" +msgstr "Релативан вертикални померај:" + +#: src/aosd/aosd_ui.c:236 +msgid "Max OSD width:" +msgstr "Ðајвећа ширина приказа:" + +#: src/aosd/aosd_ui.c:249 +msgid "Multi-Monitor options" +msgstr "Опција више монитора" + +#: src/aosd/aosd_ui.c:253 +msgid "Display OSD using:" +msgstr "Прикажи ОСД на:" + +#: src/aosd/aosd_ui.c:264 +msgid "all monitors" +msgstr "Ñвим мониторима" + +#: src/aosd/aosd_ui.c:267 +#, c-format +msgid "monitor %i" +msgstr "на монитору бр. %i" + +#: src/aosd/aosd_ui.c:322 +msgid "Timing (ms)" +msgstr "Време трајања (ms)" + +#: src/aosd/aosd_ui.c:327 +msgid "Display:" +msgstr "Приказ:" + +#: src/aosd/aosd_ui.c:332 +msgid "Fade in:" +msgstr "Појављивање:" + +#: src/aosd/aosd_ui.c:337 +msgid "Fade out:" +msgstr "Ишчезавање:" + +#: src/aosd/aosd_ui.c:418 +msgid "Fonts" +msgstr "Словни ликови" + +#: src/aosd/aosd_ui.c:426 +#, c-format +msgid "Font %i:" +msgstr "ПиÑмо %i:" + +#: src/aosd/aosd_ui.c:443 +msgid "Shadow" +msgstr "Сенка" + +#: src/aosd/aosd_ui.c:478 +msgid "Internationalization" +msgstr "Интернационализација" + +#: src/aosd/aosd_ui.c:484 +msgid "Disable UTF-8 conversion of text (in aosd)" +msgstr "ИÑкључи УТФ-8 конверзију текÑта (у аоÑд)" + +#: src/aosd/aosd_ui.c:502 +msgid "Select Skin File" +msgstr "Изаберите датотеку маÑке" + +#: src/aosd/aosd_ui.c:613 +msgid "Render Style" +msgstr "Стил иÑцртавања" + +#: src/aosd/aosd_ui.c:629 +msgid "Colors" +msgstr "Боје" + +#: src/aosd/aosd_ui.c:642 +#, c-format +msgid "Color %i:" +msgstr "Боја %i:" + +#: src/aosd/aosd_ui.c:662 +msgid "Custom Skin" +msgstr "Произвољна маÑка" + +#: src/aosd/aosd_ui.c:668 +msgid "Skin file:" +msgstr "Датотека маÑке:" + +#: src/aosd/aosd_ui.c:671 +msgid "Browse" +msgstr "Претражи" + +#: src/aosd/aosd_ui.c:773 +msgid "Enable trigger" +msgstr "Омогући активирање" + +#: src/aosd/aosd_ui.c:800 +msgid "Event" +msgstr "Догађај" + +#: src/aosd/aosd_ui.c:828 +msgid "Composite manager detected" +msgstr "Откривен је композитни управник" + +#: src/aosd/aosd_ui.c:835 +msgid "" +"Composite manager not detected;\n" +"unless you know that you have one running, please activate a composite manager otherwise the OSD won't work properly" +msgstr "" +"Ðије откривен композитни управник;\n" +"оÑим ако знате да је један већ покренут, молим покрените композитног управника јер у Ñупротном ОСД неће радити иÑправно" + +#: src/aosd/aosd_ui.c:843 +msgid "Composite manager not required for fake transparency" +msgstr "Композитни управник није потребан за лажну провидноÑÑ‚" + +#: src/aosd/aosd_ui.c:881 +msgid "Transparency" +msgstr "ПровидноÑÑ‚" + +#: src/aosd/aosd_ui.c:887 +msgid "Fake transparency" +msgstr "Лажна провидноÑÑ‚" + +#: src/aosd/aosd_ui.c:889 +msgid "Real transparency (requires X Composite Ext.)" +msgstr "Стварна провидноÑÑ‚ (захтева Ð¥ композитно проширење)" + +#: src/aosd/aosd_ui.c:931 +msgid "Composite extension not loaded" +msgstr "Композитно проширење није учитано" + +#: src/aosd/aosd_ui.c:939 +msgid "Composite extension not available" +msgstr "Композитно проширење није доÑтупно" + +#: src/aosd/aosd_ui.c:958 +#, c-format +msgid "Audacious OSD" +msgstr "Безочник — ОСД" + +#: src/aosd/aosd_ui.c:1039 +msgid "Audacious OSD - configuration" +msgstr "Безочник ОСД — подешавања" + +#: src/aosd/aosd_ui.c:1060 +msgid "Test" +msgstr "ИÑпробај" + +#: src/aosd/aosd_ui.c:1075 +msgid "Position" +msgstr "Положај" + +#: src/aosd/aosd_ui.c:1080 +msgid "Animation" +msgstr "Ðнимација" + +#: src/aosd/aosd_ui.c:1085 +msgid "Text" +msgstr "ТекÑÑ‚" + +#: src/aosd/aosd_ui.c:1090 +msgid "Decoration" +msgstr "Декорација" + +#: src/aosd/aosd_ui.c:1095 +msgid "Trigger" +msgstr "Укључивање" + +#: src/aosd/aosd_ui.c:1100 src/cdaudio-ng/configure.c:171 +msgid "Misc" +msgstr "ОÑтало" + +#: src/aosd/aosd_ui.c:1137 +msgid "Audacious OSD - about" +msgstr "Безочник ОСД" + +#: src/aosd/aosd_ui.c:1167 +msgid "" +"\n" +"Audacious OSD " +msgstr "" +"\n" +"Безочник ОСД " + +#: src/aosd/aosd_ui.c:1168 +msgid "" +"\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"On-Screen-Display is based on Ghosd library\n" +"written by Evan Martin\n" +"http://neugierig.org/software/ghosd/\n" +"\n" +msgstr "" +"\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"напиÑао је Ђакомо Лоцито\n" +"< james@develia.org >\n" +"\n" +"Приказ на екрану (OSD) је заÑнован на библиотеци\n" +"„Ghosd“ коју је напиÑао Еван Мартин\n" +"http://neugierig.org/software/ghosd/\n" +"\n" + +#: src/blur_scope/config.c:73 +msgid "Blur Scope: Color selection" +msgstr "Обим замућења: избор боја" + +#: src/blur_scope/config.c:83 src/jack/configure.c:106 +msgid "Options:" +msgstr "Опције:" + +#: src/bs2b/plugin.c:157 +msgid "Bauer stereophonic-to-binaural Preferences" +msgstr "ПоÑтавке Бојер ÑтереофонÑког-у-бинаурални" + +#: src/bs2b/plugin.c:168 +msgid "Feed level:" +msgstr "Ðиво довода:" + +#: src/bs2b/plugin.c:182 +msgid "Cut frequency:" +msgstr "УчеÑтаноÑÑ‚ иÑецања:" + +#: src/bs2b/plugin.c:196 +msgid "Presets:" +msgstr "Претподешавања:" + +#: src/cdaudio-ng/cdaudio-ng.c:242 +msgid "About Audio CD Plugin" +msgstr "О прикључку звучног ЦД-а" + +#: src/cdaudio-ng/cdaudio-ng.c:243 +msgid "" +"Copyright (c) 2007, by Calin Crisan and The Audacious Team.\n" +"\n" +"Many thanks to libcdio developers \n" +"\tand to libcddb developers .\n" +"\n" +"Also thank you Tony Vroon for mentoring & guiding me.\n" +"\n" +"This was a Google Summer of Code 2007 project.\n" +"\n" +"Copyright 2009 John Lindgren" +msgstr "" +"ÐуторÑка права (c) 2007, Калин КриÑан и Безочник тим.\n" +"\n" +"Велико хвала „libcdio“ програмерима \n" +"\tи „libcddb“ програмерима .\n" +"\n" +"Хвала ти такође Тони Врун што Ñи ме Ñаветовао и водио.\n" +"\n" +"Беше то Гугл лето пројекта Кôд 2007.\n" +"\n" +"ÐуторÑка права 2009 Ðон Линдгрен" + +#: src/cdaudio-ng/cdaudio-ng.c:552 +msgid "Audio CD" +msgstr "Ðудио ЦД" + +#: src/cdaudio-ng/cdaudio-ng.c:924 +msgid "Drive is empty." +msgstr "Уређај је празан." + +#: src/cdaudio-ng/cdaudio-ng.c:926 +msgid "Unsupported disk type." +msgstr "Ðеподржана врÑта диÑка." + +#: src/cdaudio-ng/configure.c:148 +msgid "CD Audio Plugin Configuration" +msgstr "Подешавање ЦД аудио прикључка" + +#: src/cdaudio-ng/configure.c:160 +msgid "Digital audio extraction" +msgstr "Извлачење дигиталног звука" + +#: src/cdaudio-ng/configure.c:165 +msgid "Title information" +msgstr "Информације о наÑлову" + +#: src/cdaudio-ng/configure.c:176 +msgid "Disc speed:" +msgstr "Брзина диÑка:" + +#: src/cdaudio-ng/configure.c:184 +msgid "Use cd-text if available" +msgstr "КориÑти цд-текÑÑ‚ ако је доÑтупан" + +#: src/cdaudio-ng/configure.c:191 +msgid "Use CDDB if available" +msgstr "КориÑти ЦДДБ ако је доÑтупан" + +#: src/cdaudio-ng/configure.c:197 +msgid "Server: " +msgstr "Сервер: " + +#: src/cdaudio-ng/configure.c:201 +msgid "Path: " +msgstr "Путања: " + +#: src/cdaudio-ng/configure.c:205 +msgid "Port: " +msgstr "Порт: " + +#: src/cdaudio-ng/configure.c:218 +msgid "Use HTTP instead of CDDBP" +msgstr "КориÑти ХТТП умеÑто ЦДДБП-а" + +#: src/cdaudio-ng/configure.c:230 +msgid "Override default device: " +msgstr "Замени оÑновни уређај: " + +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:123 +#: src/echo_plugin/gui.c:118 src/jack/configure.c:141 src/null/null.c:107 +#: src/stereo_plugin/stereo.c:118 +msgid "Ok" +msgstr "У реду" + +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Play CD" +msgstr "ПуÑти ЦД" + +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Add CD" +msgstr "Додај ЦД" + +#: src/compressor/plugin.c:63 +msgid "About Dynamic Range Compression Plugin" +msgstr "О прикључку Ñажимања динамичког опÑега" + +#: src/compressor/plugin.c:95 +msgid "Dynamic Range Compressor Preferences" +msgstr "ПоÑтавке Ñажиматеља динамичког опÑега" + +#: src/compressor/plugin.c:107 +msgid "Center volume:" +msgstr "Главна јачина:" + +#: src/compressor/plugin.c:120 +msgid "Dynamic range:" +msgstr "Динамички опÑег:" + +#: src/console/configure.c:136 +msgid "Game Console Music Decoder" +msgstr "Конзолни музички декодер игре" + +#: src/console/configure.c:153 +msgid "General" +msgstr "Опште" + +#: src/console/configure.c:155 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "Репродукција" + +#: src/console/configure.c:170 +msgid "Bass:" +msgstr "ÐиÑки тонови:" + +#: src/console/configure.c:174 src/console/configure.c:185 +#: src/console/configure.c:206 +msgid "secs" +msgstr "Ñекунди" + +#: src/console/configure.c:181 +msgid "Treble:" +msgstr "ВиÑоки тонови:" + +#: src/console/configure.c:202 +msgid "Default song length:" +msgstr "ОÑновно трајање пеÑме:" + +#: src/console/configure.c:208 +msgid "Resampling" +msgstr "Поновно узорковање" + +#: src/console/configure.c:214 +msgid "Enable audio resampling" +msgstr "Укључи поновно узорковање" + +#: src/console/configure.c:229 +msgid "Resampling rate:" +msgstr "Проток поновног узорковања:" + +#: src/console/configure.c:233 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:244 +msgid "SPC" +msgstr "СПЦ" + +#: src/console/configure.c:245 +msgid "Ignore length from SPC tags" +msgstr "Занемари трајање из СПЦ ознака" + +#: src/console/configure.c:246 +msgid "Increase reverb" +msgstr "Повећај одјек" + +#: src/console/configure.c:271 +msgid "" +"The default song length, expressed in seconds, is used for songs that do not" +" provide length information (i.e. looping tracks)." +msgstr "" +"ОÑновно трајање пеÑме, изражено у Ñекундама, Ñе кориÑти за пеÑме које не " +"пружају информације о трајању (тј. упетљане нумере)." + +#: src/console/plugin.c:33 +msgid "About the Game Console Music Decoder" +msgstr "О Конзолном музичком декодеру игре" + +#: src/console/plugin.c:34 +msgid "" +"Console music decoder engine based on Game_Music_Emu 0.5.2.\n" +"Supported formats: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Audacious implementation by: William Pitcock , \n" +" Shay Green \n" +msgstr "" +"Мотор конзолног музичког декодера је заÑнован на Game_Music_Emu 0.5.2.\n" +"Подржани формати: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"ПримењеноÑÑ‚ у Безочнику: Вилијам Питкок , \n" +" Шај Грин \n" + +#: src/crossfade/plugin.c:60 +msgid "About Crossfade" +msgstr "О поÑтепеном прелазу" + +#: src/crossfade/plugin.c:92 +msgid "Crossfade Preferences" +msgstr "ПоÑтавке поÑтепеног прелаза" + +#: src/crossfade/plugin.c:104 +msgid "Overlap (in seconds):" +msgstr "Преклапање (у Ñекундама):" + +#: src/crossfade/plugin.c:135 src/crossfade/plugin.c:141 +msgid "Crossfade Error" +msgstr "Грешка поÑтепеног прелаза" + +#: src/crossfade/plugin.c:135 +msgid "" +"Crossfading failed because the songs had a different number of channels." +msgstr "ПоÑтепени прелаз није уÑпео јер је пеÑма имала различит број канала." + +#: src/crossfade/plugin.c:143 +msgid "" +"Crossfading failed because the songs had different sample rates.\n" +"\n" +"You can use the Sample Rate Converter effect to resample the songs to the same rate." +msgstr "" +"ПоÑтепени прелаз није уÑпео јер је пеÑма имала различит проток узорка.\n" +"\n" +"Можете да кориÑтите ефекат претварача протока узорка да поново узоркујете пеÑме на иÑти проток узорка." + +#: src/crystalizer/crystalizer.c:100 +msgid "Configure Crystalizer" +msgstr "Подешавање криÑтализатора" + +#: src/crystalizer/crystalizer.c:102 src/stereo_plugin/stereo.c:97 +msgid "Effect intensity:" +msgstr "Јачина дејÑтва:" + +#: src/crystalizer/crystalizer.c:136 src/echo_plugin/gui.c:131 +#: src/stereo_plugin/stereo.c:131 +msgid "Apply" +msgstr "Примени" + +#: src/echo_plugin/gui.c:15 +msgid "" +"Echo Plugin\n" +"By Johan Levin 1999.\n" +"\n" +"Surround echo by Carl van Schaik 1999" +msgstr "" +"Ехо прикључак\n" +"Ðутор Јохан Левин 1999.\n" +"\n" +"Ехо окружења је напиÑао Карл ван Шаик 1999" + +#: src/echo_plugin/gui.c:27 +msgid "About Echo Plugin" +msgstr "О Ехо прикључку" + +#: src/echo_plugin/gui.c:67 +msgid "Configure Echo" +msgstr "Ехо подешавања" + +#: src/echo_plugin/gui.c:83 +msgid "Delay: (ms)" +msgstr "Кашњење: (ms)" + +#: src/echo_plugin/gui.c:88 +msgid "Feedback: (%)" +msgstr "Повратни ток: (%)" + +#: src/echo_plugin/gui.c:93 +msgid "Volume: (%)" +msgstr "Јачина: (%)" + +#: src/ffaudio/ffaudio-core.c:798 +#, c-format +msgid "" +"Multi-format audio decoding plugin for Audacious based on\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious plugin by:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" +msgstr "" +"Прикључак декодирања звука више формата за Безочника заÑнован на\n" +"радном оквиру ФФмпег мултимедија (http://www.ffmpeg.org/)\n" +"ÐуторÑка права (c) 2000-2009 Ð¤Ð°Ð±Ñ€Ð¸Ñ Ð‘ÐµÐ»Ð°Ñ€Ð´, и оÑ.\n" +"\n" +"Прикључак за Безочника приредили:\n" +" Вилијам Питкок ,\n" +" Матиј Хамалаинен \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" + +#: src/ffaudio/ffaudio-core.c:812 +msgid "About FFaudio Plugin" +msgstr "О ФФаудио прикључку" + +#: src/filewriter/filewriter.c:166 +msgid "About FileWriter-Plugin" +msgstr "О прикључку ПиÑац датотека" + +#: src/filewriter/filewriter.c:461 +msgid "File Writer Configuration" +msgstr "Подешавања ПиÑца датотека" + +#: src/filewriter/filewriter.c:473 +msgid "Output file format:" +msgstr "Формат излазне датотеке:" + +#: src/filewriter/filewriter.c:491 +msgid "Configure" +msgstr "ПодеÑи" + +#: src/filewriter/filewriter.c:506 +msgid "Save into original directory" +msgstr "Сачувај у оригиналном директоријуму" + +#: src/filewriter/filewriter.c:511 +msgid "Save into custom directory" +msgstr "Сачувај у произвољном директоријуму" + +#: src/filewriter/filewriter.c:521 +msgid "Output file folder:" +msgstr "ФаÑцикла излазне датотеке:" + +#: src/filewriter/filewriter.c:525 +msgid "Pick a folder" +msgstr "Изаберите фаÑциклу" + +#: src/filewriter/filewriter.c:544 +msgid "Get filename from:" +msgstr "Ðабави име датотеке из:" + +#: src/filewriter/filewriter.c:547 +msgid "original file tags" +msgstr "ознаке оригиналне датотеке" + +#: src/filewriter/filewriter.c:553 +msgid "original filename" +msgstr "назива оригиналне датотеке" + +#: src/filewriter/filewriter.c:563 +msgid "Don't strip file name extension" +msgstr "Ðе одузимај проширење назива датотеке" + +#: src/filewriter/filewriter.c:578 +msgid "Prepend track number to filename" +msgstr "Придодај број нумере називу датотеке" + +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:765 +msgid "Auto" +msgstr "СамоÑтално" + +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" +msgstr "Удружени Ñтерео" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Stereo" +msgstr "Стерео" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Mono" +msgstr "Моно" + +#: src/filewriter/mp3.c:706 +msgid "MP3 Configuration" +msgstr "МП3 подешавања" + +#: src/filewriter/mp3.c:729 +msgid "Algorithm Quality:" +msgstr "Квалитет алгоритма:" + +#: src/filewriter/mp3.c:754 +msgid "Output Samplerate:" +msgstr "Проток узорка излаза:" + +#: src/filewriter/mp3.c:782 +msgid "(Hz)" +msgstr "(Hz)" + +#: src/filewriter/mp3.c:789 +msgid "Bitrate / Compression ratio:" +msgstr "Проток бита / ÐžÐ´Ð½Ð¾Ñ Ñажимања:" + +#: src/filewriter/mp3.c:813 +msgid "Bitrate (kbps):" +msgstr "Проток бита (kbps):" + +#: src/filewriter/mp3.c:846 +msgid "Compression ratio:" +msgstr "ÐžÐ´Ð½Ð¾Ñ Ñажимања:" + +#: src/filewriter/mp3.c:870 +msgid "Audio Mode:" +msgstr "Режим звука:" + +#: src/filewriter/mp3.c:895 +msgid "Misc:" +msgstr "Разно:" + +#: src/filewriter/mp3.c:906 +msgid "Enforce strict ISO complience" +msgstr "ПриÑили Ñтрого ИСО поштовање" + +#: src/filewriter/mp3.c:917 +msgid "Error protection" +msgstr "Грешка заштите" + +#: src/filewriter/mp3.c:929 src/filewriter/vorbis.c:247 +msgid "Quality" +msgstr "Квалитет" + +#: src/filewriter/mp3.c:939 +msgid "Enable VBR/ABR" +msgstr "Укључи ВБР/ÐБР" + +#: src/filewriter/mp3.c:949 +msgid "Type:" +msgstr "Ð’Ñ€Ñта:" + +#: src/filewriter/mp3.c:982 +msgid "VBR Options:" +msgstr "ВБР опције:" + +#: src/filewriter/mp3.c:998 +msgid "Minimum bitrate (kbps):" +msgstr "Ðајмањи проток бита (kb/s):" + +#: src/filewriter/mp3.c:1025 +msgid "Maximum bitrate (kbps):" +msgstr "Ðајвећи проток бита (kb/s):" + +#: src/filewriter/mp3.c:1048 +msgid "Strictly enforce minimum bitrate" +msgstr "Строго Ñпроведи најмањи проток бита" + +#: src/filewriter/mp3.c:1060 +msgid "ABR Options:" +msgstr "ÐБР опције:" + +#: src/filewriter/mp3.c:1070 +msgid "Average bitrate (kbps):" +msgstr "ПроÑечни проток бита (kb/s):" + +#: src/filewriter/mp3.c:1098 +msgid "VBR quality level:" +msgstr "Ðиво ВБР квалитета:" + +#: src/filewriter/mp3.c:1117 +msgid "Don't write Xing VBR header" +msgstr "Ðе запиÑуј Хинг ВБР заглавље" + +#: src/filewriter/mp3.c:1131 +msgid "VBR/ABR" +msgstr "ВБР/ÐБР" + +#: src/filewriter/mp3.c:1141 +msgid "Frame params:" +msgstr "Параметри кадра:" + +#: src/filewriter/mp3.c:1153 +msgid "Mark as copyright" +msgstr "Означи као ауторÑко право" + +#: src/filewriter/mp3.c:1164 +msgid "Mark as original" +msgstr "Означи као оригинал" + +#: src/filewriter/mp3.c:1176 +msgid "ID3 params:" +msgstr "ИД3 параметри:" + +#: src/filewriter/mp3.c:1187 +msgid "Force addition of version 2 tag" +msgstr "ПриÑили додавање ознаке издања 2" + +#: src/filewriter/mp3.c:1197 +msgid "Only add v1 tag" +msgstr "Додај Ñамо в1 ознаку" + +#: src/filewriter/mp3.c:1204 +msgid "Only add v2 tag" +msgstr "Додај Ñамо в2 ознаку" + +#: src/filewriter/mp3.c:1225 +msgid "Tags" +msgstr "Ознаке" + +#: src/filewriter/vorbis.c:240 +msgid "Vorbis Encoder Configuration" +msgstr "Подешавање Ð’Ð¾Ñ€Ð±Ð¸Ñ ÑˆÐ¸Ñ„Ñ€ÐµÑ€Ð°" + +#: src/filewriter/vorbis.c:260 +msgid "Quality level (0 - 10):" +msgstr "Ðиво квалитета (0 — 10):" + +#: src/flacng/plugin.c:380 +msgid "About FLAC Audio Plugin" +msgstr "О ФЛÐЦ аудио прикључку" + +#: src/flacng/plugin.c:381 +msgid "" +"\n" +"\n" +"Original code by\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" +msgstr "" +"\n" +"\n" +"Оригинални кôд је напиÑао\n" +"Ралф Ерцингер \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" + +#: src/gnomeshortcuts/gnomeshortcuts.c:303 +msgid "About Gnome Shortcut Plugin" +msgstr "О прикључку Гномове пречице" + +#: src/gnomeshortcuts/gnomeshortcuts.c:304 +msgid "" +"Gnome Shortcut Plugin\n" +"Let's you control the player with Gnome's shortcuts.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +msgstr "" +"Прикључак Гномове пречице\n" +"Омогућава вам да управљате програмом кориÑтећи Гномове пречице.\n" +"\n" +"ÐуторÑка права (C) 2007-2008 Саша ХлаÑјак \n" +"\n" + +#: src/gtkui/columns.c:36 +msgid "Entry number" +msgstr "Број Ñтавке" + +#: src/gtkui/columns.c:36 src/search-tool/search-tool.c:43 +msgid "Title" +msgstr "ÐаÑлов" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:42 +msgid "Artist" +msgstr "Извођач" + +#: src/gtkui/columns.c:37 +msgid "Year" +msgstr "Година" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:43 +msgid "Album" +msgstr "Ðлбум" + +#: src/gtkui/columns.c:37 +msgid "Track" +msgstr "Ðумера" + +#: src/gtkui/columns.c:37 +msgid "Queue position" +msgstr "Положај колоне" + +#: src/gtkui/columns.c:38 +msgid "Length" +msgstr "Трајање" + +#: src/gtkui/columns.c:38 +msgid "File path" +msgstr "Путања датотеке" + +#: src/gtkui/columns.c:38 +msgid "File name" +msgstr "Ðазив датотеке" + +#: src/gtkui/columns.c:38 +msgid "Custom title" +msgstr "Произвољан наÑлов" + +#: src/gtkui/columns.c:39 +msgid "Bitrate" +msgstr "БитÑки проток" + +#: src/gtkui/columns.c:278 +msgid "Choose Columns" +msgstr "Изабери колоне" + +#: src/gtkui/columns.c:292 +msgid "Available:" +msgstr "ДоÑтупно:" + +#: src/gtkui/columns.c:326 +msgid "Chosen:" +msgstr "Изабрано:" + +#: src/gtkui/layout.c:122 +msgid "Dock at Left" +msgstr "УÑидри на лево" + +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "УÑидри на деÑно" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "УÑидри на врх" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "УÑидри на дно" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "Откачи" + +#: src/gtkui/layout.c:123 src/ladspa/plugin.c:644 +msgid "Disable" +msgstr "ИÑкључи" + +#: src/gtkui/menus.c:131 +msgid "_Open Files ..." +msgstr "Отвори _датотеке ..." + +#: src/gtkui/menus.c:132 +msgid "Open _URL ..." +msgstr "Отвори _адреÑу ..." + +#: src/gtkui/menus.c:133 +msgid "_Add Files ..." +msgstr "Додај да_тотеке ..." + +#: src/gtkui/menus.c:134 +msgid "Add U_RL ..." +msgstr "Додај ад_реÑу ..." + +#: src/gtkui/menus.c:136 +msgid "A_bout ..." +msgstr "О _програму ..." + +#: src/gtkui/menus.c:137 +msgid "_Preferences ..." +msgstr "_ПоÑтавке ..." + +#: src/gtkui/menus.c:138 src/skins/ui_manager.c:406 +msgid "_Quit" +msgstr "_Изађи" + +#: src/gtkui/menus.c:141 +msgid "_Play" +msgstr "Пу_Ñти" + +#: src/gtkui/menus.c:142 +msgid "Paus_e" +msgstr "Па_узирај" + +#: src/gtkui/menus.c:143 +msgid "_Stop" +msgstr "_ЗауÑтави" + +#: src/gtkui/menus.c:144 +msgid "Pre_vious" +msgstr "_Претходно" + +#: src/gtkui/menus.c:145 +msgid "_Next" +msgstr "С_ледеће" + +#: src/gtkui/menus.c:147 +msgid "_Repeat" +msgstr "_Понови" + +#: src/gtkui/menus.c:148 +msgid "S_huffle" +msgstr "_ÐаÑумично" + +#: src/gtkui/menus.c:149 +msgid "N_o Playlist Advance" +msgstr "Ð_е напредуј у ÑпиÑку нумера" + +#: src/gtkui/menus.c:150 +msgid "Stop _After This Song" +msgstr "ЗауÑтави _након ове пеÑме" + +#: src/gtkui/menus.c:152 src/gtkui/menus.c:212 +msgid "Song _Info ..." +msgstr "Подаци о _пеÑми ..." + +#: src/gtkui/menus.c:153 +msgid "Jump to _Time ..." +msgstr "Пређи на _време ..." + +#: src/gtkui/menus.c:154 +msgid "_Jump to Song ..." +msgstr "Пређи на _пеÑму ..." + +#: src/gtkui/menus.c:157 +msgid "By Track _Number" +msgstr "Према броју _нумере" + +#: src/gtkui/menus.c:158 +msgid "By _Title" +msgstr "Према _наÑлову" + +#: src/gtkui/menus.c:159 +msgid "By _Artist" +msgstr "Према _извођачу" + +#: src/gtkui/menus.c:160 +msgid "By A_lbum" +msgstr "Према _албуму" + +#: src/gtkui/menus.c:161 +msgid "By Release _Date" +msgstr "Према _датуму издавања" + +#: src/gtkui/menus.c:162 +msgid "By _File Path" +msgstr "Према _путањи датотеке" + +#: src/gtkui/menus.c:163 +msgid "By _Custom Title" +msgstr "Према п_роизвољном наÑлову" + +#: src/gtkui/menus.c:165 +msgid "R_everse Order" +msgstr "Преокрени п_оредак" + +#: src/gtkui/menus.c:166 +msgid "_Random Order" +msgstr "_Случајан поредак" + +#: src/gtkui/menus.c:169 src/gtkui/menus.c:214 +msgid "_Refresh" +msgstr "_ОÑвежи" + +#: src/gtkui/menus.c:170 +msgid "Remove _Unavailable Files" +msgstr "Уклони _недоÑтупне датотеке" + +#: src/gtkui/menus.c:172 +msgid "_Sort" +msgstr "Пор_еђај" + +#: src/gtkui/menus.c:174 +msgid "_New" +msgstr "_Ðово" + +#: src/gtkui/menus.c:175 src/gtkui/menus.c:225 +msgid "_Close" +msgstr "_Затвори" + +#: src/gtkui/menus.c:177 +msgid "_Import ..." +msgstr "Ув_ези ..." + +#: src/gtkui/menus.c:178 +msgid "_Export ..." +msgstr "Из_вези ..." + +#: src/gtkui/menus.c:180 +msgid "_Playlist Manager ..." +msgstr "_Управник ÑпиÑка нумера ..." + +#: src/gtkui/menus.c:181 +msgid "_Queue Manager ..." +msgstr "Управник _редоÑледа ..." + +#: src/gtkui/menus.c:184 +msgid "Volume _Up" +msgstr "По_јачај" + +#: src/gtkui/menus.c:185 +msgid "Volume _Down" +msgstr "У_тишај" + +#: src/gtkui/menus.c:187 +msgid "_Equalizer" +msgstr "Ује_дначавач" + +#: src/gtkui/menus.c:189 +msgid "E_ffects" +msgstr "Е_фекти" + +#: src/gtkui/menus.c:192 +msgid "_Interface" +msgstr "Су_чеље" + +#: src/gtkui/menus.c:193 +msgid "_Visualizations" +msgstr "_Визуализације" + +#: src/gtkui/menus.c:195 +msgid "Show _Menu Bar" +msgstr "Прикажи линију _изборника" + +#: src/gtkui/menus.c:196 +msgid "Show I_nfo Bar" +msgstr "Прикажи линију _података" + +#: src/gtkui/menus.c:197 +msgid "Show _Status Bar" +msgstr "Прикажи линију _Ñтања" + +#: src/gtkui/menus.c:199 +msgid "Show Column _Headers" +msgstr "Прикажи _наÑлове колона" + +#: src/gtkui/menus.c:200 +msgid "Choose _Columns ..." +msgstr "Изабери _колоне ..." + +#: src/gtkui/menus.c:201 +msgid "Scrol_l on Song Change" +msgstr "_Клизај при промени пеÑме" + +#: src/gtkui/menus.c:204 +msgid "_File" +msgstr "_Датотека" + +#: src/gtkui/menus.c:205 +msgid "_Playback" +msgstr "_Извођење" + +#: src/gtkui/menus.c:206 +msgid "P_laylist" +msgstr "_СпиÑак нумера" + +#: src/gtkui/menus.c:207 src/gtkui/menus.c:221 +msgid "_Services" +msgstr "_УÑлуге" + +#: src/gtkui/menus.c:208 +msgid "_Output" +msgstr "_Излаз" + +#: src/gtkui/menus.c:209 +msgid "_View" +msgstr "_Преглед" + +#: src/gtkui/menus.c:213 +msgid "_Queue/Unqueue" +msgstr "_Стави у ред/Избаци из реда" + +#: src/gtkui/menus.c:216 +msgid "Cu_t" +msgstr "_ИÑеци" + +#: src/gtkui/menus.c:217 +msgid "_Copy" +msgstr "У_множи" + +#: src/gtkui/menus.c:218 +msgid "_Paste" +msgstr "У_баци" + +#: src/gtkui/menus.c:219 +msgid "Select _All" +msgstr "_Изабери Ñве" + +#: src/gtkui/menus.c:224 +msgid "_Rename" +msgstr "_Преименуј" + +#: src/gtkui/ui_gtk.c:95 +msgid "GTK Interface" +msgstr "ГТК Ñучеље" + +#: src/gtkui/ui_gtk.c:156 src/skins/ui_main.c:303 +#, c-format +msgid "%s - Audacious" +msgstr "%s — Безочник" + +#: src/gtkui/ui_gtk.c:162 +msgid "Buffering ..." +msgstr "Баферујем ..." + +#: src/gtkui/ui_gtk.c:165 src/skins/ui_main.c:305 src/skins/ui_main.c:1504 +msgid "Audacious" +msgstr "Безочник" + +#: src/gtkui/ui_gtk.c:216 src/skins/plugin.c:190 +msgid "Error" +msgstr "Грешка" + +#: src/gtkui/ui_statusbar.c:105 src/skins/ui_main.c:460 +msgid "mono" +msgstr "моно" + +#: src/gtkui/ui_statusbar.c:107 src/skins/ui_main.c:459 +msgid "stereo" +msgstr "Ñтерео" + +#: src/gtkui/ui_statusbar.c:109 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d канал" +msgstr[1] "%d канала" +msgstr[2] "%d канала" + +#: src/gtkui/ui_statusbar.c:124 +#, c-format +msgid "%d kbps" +msgstr "%d kb/s" + +#: src/hotkey/gui.c:71 +msgid "Previous Track" +msgstr "Претходна нумера" + +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "ПуÑти" + +#: src/hotkey/gui.c:73 +msgid "Pause/Resume" +msgstr "Паузирај/наÑтави" + +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +msgid "Stop" +msgstr "ЗауÑтави" + +#: src/hotkey/gui.c:75 +msgid "Next Track" +msgstr "Следећа нумера" + +#: src/hotkey/gui.c:76 +msgid "Forward 5 Seconds" +msgstr "Унапред 5 Ñекунде" + +#: src/hotkey/gui.c:77 +msgid "Rewind 5 Seconds" +msgstr "Уназад 5 Ñекунде" + +#: src/hotkey/gui.c:78 +msgid "Mute" +msgstr "ИÑкључи звук" + +#: src/hotkey/gui.c:79 +msgid "Volume Up" +msgstr "Појачај" + +#: src/hotkey/gui.c:80 +msgid "Volume Down" +msgstr "Утишај" + +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Jump to File" +msgstr "Скочи до датотеке" + +#: src/hotkey/gui.c:82 +msgid "Toggle Player Windows" +msgstr "Укључи/иÑкључи главни прозор" + +#: src/hotkey/gui.c:83 +msgid "Show On-Screen-Display" +msgstr "Прикажи приказ на екрану" + +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "Укључи/иÑкључи понављање" + +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "Укључи/иÑкључи премештање" + +#: src/hotkey/gui.c:95 +msgid "(none)" +msgstr "(ништа)" + +#: src/hotkey/gui.c:232 +msgid "" +"It is not recommended to bind the primary mouse buttons without modificators.\n" +"\n" +"Do you want to continue?" +msgstr "" +"Ðије препоручљиво повезати главну дугмад миша без измењивача.\n" +"\n" +"Да ли желите да наÑтавите?" + +#: src/hotkey/gui.c:234 +msgid "Binding mouse buttons" +msgstr "Повезујем дугмад миша" + +#: src/hotkey/gui.c:384 +msgid "Global Hotkey Plugin Configuration" +msgstr "Подешавања прикључка општих пречица" + +#: src/hotkey/gui.c:400 +msgid "" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." +msgstr "" +"ПритиÑните комбинацију таÑтера унутар поља за текÑÑ‚.\n" +"Можете такође да повежете дугмад миша." + +#: src/hotkey/gui.c:405 +msgid "Hotkeys:" +msgstr "Пречице:" + +#: src/hotkey/gui.c:424 +msgid "Action:" +msgstr "Радња:" + +#: src/hotkey/gui.c:432 +msgid "Key Binding:" +msgstr "Свезе таÑтера:" + +#: src/hotkey/gui.c:663 +msgid "About Global Hotkey Plugin" +msgstr "О прикључку општих пречица" + +#: src/hotkey/gui.c:664 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributers include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä \n" +"\t\t\tBryn Davies \n" +"\t\t\tJonathan A. Davis \n" +"\t\t\tJeremy Tan \n" +"\n" +msgstr "" +"Прикључак општих пречица\n" +"Управљајте програмом кориÑтећи комбинације општих таÑтера или мултимедијалних таÑтера.\n" +"\n" +"ÐуторÑка права (C) 2007-2008 Саша ХлаÑјак \n" +"\n" +"ОÑтали Ñарадници:\n" +"ÐуторÑка права (C) 2006-2007 Владимир ПаÑков \n" +"ÐуторÑка права (C) 2000-2002 Вил Сирјала \n" +"\t\t\tБрајан Ð”ÐµÐ²Ð¸Ñ \n" +"\t\t\tÐонатан Ð. Ð”Ð°Ð²Ð¸Ñ \n" +"\t\t\tÐереми Тан \n" +"\n" + +#: src/jack/configure.c:66 +msgid "Connect to all available jack ports" +msgstr "Повежи Ñа Ñвим раÑположивим портовима утичница" + +#: src/jack/configure.c:73 +msgid "Connect only the output ports" +msgstr "Повежи Ñамо излазне портове" + +#: src/jack/configure.c:80 +msgid "Connect to no ports" +msgstr "Ðе повезуј Ñе на портове" + +#: src/jack/configure.c:98 +msgid "jack Plugin configuration" +msgstr "Подешавање прикључка утичнице" + +#: src/jack/configure.c:116 +msgid "Connection mode:" +msgstr "Режим повезивања:" + +#: src/jack/configure.c:128 +msgid "Enable debug printing" +msgstr "Укључи штампање уклањања грешака" + +#: src/jack/jack.c:435 +msgid "" +"XMMS jack Driver 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" +"\n" +"Audacious port by\n" +"Giacomo Lozito from develia.org" +msgstr "" +"Управљачки програм ХММС утичнице 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"ÐšÑ€Ð¸Ñ ÐœÐ¾Ñ€Ð³Ð°Ð½\n" +"\n" +"Прилагођавање Безочнику\n" +"Ђакомо Лоцито Ñа „develia.org“" + +#: src/jack/jack.c:440 +msgid "About JACK Output Plugin 0.17" +msgstr "О прикључку ЈÐЦК излаза 0.17" + +#: src/ladspa/plugin.c:415 +msgid "About LADSPA Host" +msgstr "О ЛÐДСПРдомаћину" + +#: src/ladspa/plugin.c:516 +#, c-format +msgid "%s Settings" +msgstr "Подешавања за %s" + +#: src/ladspa/plugin.c:584 +msgid "LADSPA Host Settings" +msgstr "Подешавања ЛÐДСПРдомаћину" + +#: src/ladspa/plugin.c:593 +msgid "Module paths:" +msgstr "Путање модула:" + +#: src/ladspa/plugin.c:598 +msgid "" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." +msgstr "" +"Раздвојте више путања Ñа две тачке.\n" +"Те путање Ñу тражене као додатне уз „ЛÐДСПРПУТÐЊÐ“.\n" +"Ðакон додавања нових путања, притиÑните УнеÑи да потражите нове прикључке." + +#: src/ladspa/plugin.c:614 +msgid "Available plugins:" +msgstr "ДоÑтупни прикључци:" + +#: src/ladspa/plugin.c:626 +msgid "Enable" +msgstr "Укључи" + +#: src/ladspa/plugin.c:632 +msgid "Enabled plugins:" +msgstr "Укључени прикључци:" + +#: src/ladspa/plugin.c:647 +msgid "Settings" +msgstr "Подешавања" + +#: src/lyricwiki/lyricwiki.c:267 +msgid "" +"\n" +"Looking for lyrics..." +msgstr "" +"\n" +"Тражим текÑÑ‚ пеÑме..." + +#: src/lyricwiki/lyricwiki.c:304 +msgid "" +"\n" +"Connecting to lyrics.wikia.com..." +msgstr "" +"\n" +"Повезујем Ñе на lyrics.wikia.com..." + +#: src/lyricwiki/lyricwiki.c:377 +msgid "" +"\n" +"No lyrics were found." +msgstr "" +"\n" +" ÐиÑам пронашао текÑтове пеÑама." + +#: src/metronom/metronom.c:86 +msgid "About Metronom" +msgstr "О Метроному" + +#: src/metronom/metronom.c:87 +msgid "" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +msgstr "" +"Генератор такта је напиÑао Мартин Ð¨Ñ‚Ñ€Ð°ÑƒÑ \n" +"\n" +"Да га кориÑтите, додајте адреÑу: „tact://beats*num/den“\n" +"нпр.: „tact://77“ да добијете 77 откуцаја у минуту\n" +"или: „tact://60*3/4“ да добијете 60 отк./мин у 3/4 такту" + +#: src/metronom/metronom.c:144 +#, c-format +msgid "Tact generator: %d bpm" +msgstr "Генератор такта: %d отк/мин" + +#: src/metronom/metronom.c:146 +#, c-format +msgid "Tact generator: %d bpm %d/%d" +msgstr "Генератор такта: %d отк/мин %d/%d" + +#: src/mixer/plugin.c:64 +msgid "About Channel Mixer" +msgstr "О мешачу канала" + +#: src/mixer/plugin.c:93 +msgid "Channel Mixer Settings" +msgstr "Подешавања мешача канала" + +#: src/mixer/plugin.c:102 +msgid "Output channels:" +msgstr "Излазни канали:" + +#: src/mixer/plugin.c:112 +msgid "Changes take effect at the next song change." +msgstr "Измене ће Ñтупити на Ñнагу приликом промене Ñледеће пеÑме." + +#: src/mpg123/mpg123.c:191 +msgid "Surround" +msgstr "Окружење" + +#: src/mtp_up/mtp.c:336 +msgid "Upload in progress..." +msgstr "Слање је у току..." + +#: src/mtp_up/mtp.c:348 +msgid "Upload to MTP Device" +msgstr "Пошаљи на МТП уређај" + +#: src/mtp_up/mtp.c:349 +msgid "Disconnect MTP Device" +msgstr "ИÑкључи МТП уређај" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Stopped" +msgstr "ЗауÑтављено" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Audacious is not playing." +msgstr "Безочник не пушта пеÑме." + +#: src/null/null.c:64 +msgid "Null output plugin " +msgstr "Додатак ништавног излаза " + +#: src/null/null.c:65 +msgid "" +" by Christian Birchinger \n" +"based on the XMMS plugin by HÃ¥vard KvÃ¥l " +msgstr "" +" је напиÑао КриÑтијан Бирхингер \n" +"заÑнованом на ХММС прикључку Хаварда Квала " + +#: src/null/null.c:68 +msgid "About Null Output" +msgstr "О ништавном излазу" + +#: src/null/null.c:89 +msgid "Null output preferences" +msgstr "Подешавања ништавног излаза" + +#: src/null/null.c:100 +msgid "Run in real time" +msgstr "Покрени у реалном времену" + +#: src/oss4/configure.c:81 +msgid "1. Default device" +msgstr "1. ОÑновни уређај" + +#: src/oss4/configure.c:138 +msgid "OSS4 Output Plugin Preferences" +msgstr "ПоÑтавке прикључка излаза ОСС4" + +#: src/oss4/configure.c:150 src/OSS/configure.c:194 +msgid "Audio device:" +msgstr "Звучни уређај:" + +#: src/oss4/configure.c:178 src/OSS/configure.c:217 src/OSS/configure.c:260 +msgid "Use alternate device:" +msgstr "КориÑти алтернативни уређај:" + +#: src/oss4/configure.c:193 +msgid "Save volume between sessions" +msgstr "Сачувај јачину звука између ÑеÑија" + +#: src/oss4/configure.c:197 +msgid "Enable format conversions made by the OSS software." +msgstr "Укључује претварање формата направљено ОСС Ñофтвером." + +#: src/oss4/configure.c:201 +msgid "Enable exclusive mode to prevent virtual mixing." +msgstr "Укључује иÑкључиви режим да Ñпречи виртуално мешање." + +#: src/oss4/plugin.c:51 +msgid "About OSS4 Plugin" +msgstr "О ОСС4 прикључку" + +#: src/oss4/utils.c:211 +msgid "OSS4 error" +msgstr "Грешка ОСС4" + +#: src/OSS/configure.c:137 +#, c-format +msgid "Default (%s)" +msgstr "ОÑновно (%s)" + +#: src/OSS/configure.c:178 +msgid "OSS Driver configuration" +msgstr "Подешавања ОСС управљачког програма" + +#: src/OSS/configure.c:281 +msgid "Devices" +msgstr "Уређаји" + +#: src/OSS/configure.c:283 +msgid "Buffering:" +msgstr "Баферовање:" + +#: src/OSS/configure.c:296 +msgid "Pre-buffer (percent):" +msgstr "Пред-бафер (у процентима):" + +#: src/OSS/configure.c:307 +msgid "Buffering" +msgstr "Баферовање" + +#: src/OSS/configure.c:308 +msgid "Mixer Settings:" +msgstr "Подешавања микÑера:" + +#: src/OSS/configure.c:314 +msgid "Volume controls Master not PCM" +msgstr "Главна контрола јачине звука није ПЦМ" + +#: src/OSS/configure.c:320 +msgid "Mixer" +msgstr "МикÑер" + +#: src/OSS/OSS.c:41 +msgid "About OSS Driver" +msgstr "О ОСС управљачком програму" + +#: src/pulse_audio/pulse_audio.c:669 +msgid "About Audacious PulseAudio Output Plugin" +msgstr "О ПулÑеÐудио излазном прикључку Безочника" + +#: src/resample/plugin.c:89 +msgid "About Sample Rate Converter Plugin" +msgstr "О прикључку претварача протока узорка" + +#: src/resample/plugin.c:144 +msgid "Sample Rate Converter Preferences" +msgstr "ПоÑтавке претварача протока узорка" + +#: src/resample/plugin.c:156 +msgid "Rate mappings:" +msgstr "Мапирања протока:" + +#: src/resample/plugin.c:179 +msgid "All others:" +msgstr "Сви оÑтали:" + +#: src/resample/plugin.c:191 +msgid "Method:" +msgstr "Метод:" + +#: src/scrobbler/configure.c:123 src/scrobbler/configure.c:198 +msgid "Change password" +msgstr "Промените лозинку" + +#: src/scrobbler/configure.c:144 +msgid "Services" +msgstr "УÑлуге" + +#: src/scrobbler/configure.c:166 +msgid "Username:" +msgstr "КориÑничко име:" + +#: src/scrobbler/configure.c:172 +msgid "Password:" +msgstr "Лозинка:" + +#: src/scrobbler/configure.c:180 +msgid "Scrobbler URL:" +msgstr "ÐдреÑа Скроблера:" + +#: src/scrobbler/configure.c:212 +msgid "Last.FM" +msgstr "ЛаÑÑ‚.ФМ" + +#: src/scrobbler/configure.c:239 +msgid "Scrobbler" +msgstr "Скроблер" + +#: src/scrobbler/plugin.c:194 +msgid "" +"Audacious AudioScrobbler Plugin\n" +"\n" +"Originally created by Audun Hove and Pipian \n" +msgstr "" +"Ðудио Скроблер прикључак Безочника\n" +"\n" +"Оригинално Ñу га урадили Ðудун Хов и Пипиан \n" + +#: src/scrobbler/plugin.c:196 +msgid "About Scrobbler Plugin" +msgstr "О Скроблер прикључку" + +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" +msgstr "О прикључку СДЛ излаза" + +#: src/sdlout/plugin.c:78 +msgid "SDL error" +msgstr "Грешка СДЛ-а" + +#: src/search-tool/search-tool.c:42 +msgid "Genre" +msgstr "Жанр" + +#: src/search-tool/search-tool.c:96 src/search-tool/search-tool.c:106 +msgid "Library" +msgstr "Библиотека" + +#: src/search-tool/search-tool.c:591 +msgid "_Create Playlist" +msgstr "_Ðаправи ÑпиÑак нумера" + +#: src/search-tool/search-tool.c:598 +msgid "_Add to Playlist" +msgstr "_Додај у ÑпиÑак нумера" + +#: src/search-tool/search-tool.c:641 +msgid "Search library" +msgstr "Претражите библиотеку" + +#: src/search-tool/search-tool.c:645 +msgid "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." +msgstr "" +"Да увезете вашу музичку библиотеку у Безочнику, изаберите фаÑциклу и затим " +"кликните на иконицу „оÑвежи“." + +#: src/search-tool/search-tool.c:653 +msgid "Please wait ..." +msgstr "Молим Ñачекајте ..." + +#: src/search-tool/search-tool.c:675 +msgid "Choose Folder" +msgstr "Изаберите фаÑциклу" + +#: src/skins/plugin.c:167 +msgid "About Skinned GUI" +msgstr "О маÑкирном Ñучељу" + +#: src/skins/plugin.c:168 +msgid "" +"Copyright (c) 2008, by Tomasz MoÅ„ \n" +"\n" +msgstr "" +"ÐуторÑка права (c) 2008, Томаш Мон \n" +"\n" + +#: src/skins/skins_cfg.c:207 +msgid "_Player:" +msgstr "_Плејер:" + +#: src/skins/skins_cfg.c:208 +msgid "Select main player window font:" +msgstr "Изаберите Ñловни лик главног прозора плејера:" + +#: src/skins/skins_cfg.c:210 +msgid "_Playlist:" +msgstr "_СпиÑак нумера:" + +#: src/skins/skins_cfg.c:211 +msgid "Select playlist font:" +msgstr "Изабери Ñловни лик ÑпиÑка нумера:" + +#: src/skins/skins_cfg.c:215 +msgid "_Fonts" +msgstr "_Словни ликови" + +#: src/skins/skins_cfg.c:218 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "КориÑти битмап Ñловне ликове (подржава Ñамо ÐСКРИ)" + +#: src/skins/skins_cfg.c:220 +msgid "Scroll song title in both directions" +msgstr "Померај наÑлов пеÑме у оба Ñмера" + +#: src/skins/skins_cfg.c:298 +msgid "_Skin" +msgstr "_МаÑка" + +#: src/skins/skins_cfg.c:345 +msgid "Interface Preferences" +msgstr "ПоÑтавке Ñучеља" + +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "Претпојачање" + +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" +msgstr "31 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "63 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" +msgstr "125 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" +msgstr "250 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" +msgstr "500 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" +msgstr "1 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" +msgstr "2 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" +msgstr "4 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" +msgstr "8 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" +msgstr "16 kHz" + +#: src/skins/ui_equalizer.c:379 +msgid "Audacious Equalizer" +msgstr "Уједначавач Безочника" + +#: src/skins/ui_equalizer.c:887 +msgid "Presets" +msgstr "Претподешавања" + +#: src/skins/ui_equalizer.c:968 src/skins/ui_manager.c:442 +msgid "Load preset" +msgstr "Учитава претподешавање" + +#: src/skins/ui_equalizer.c:985 +msgid "Load auto-preset" +msgstr "Учитава ÑамоÑтално претподешавање" + +#: src/skins/ui_equalizer.c:1015 src/skins/ui_equalizer.c:1033 +#: src/skins/ui_equalizer.c:1049 +msgid "Load equalizer preset" +msgstr "Учитава претподешавање уједначавача" + +#: src/skins/ui_equalizer.c:1068 src/skins/ui_manager.c:463 +msgid "Save preset" +msgstr "Чува претподешавање" + +#: src/skins/ui_equalizer.c:1084 +msgid "Save auto-preset" +msgstr "Чува ÑамоÑтално претподешавање" + +#: src/skins/ui_equalizer.c:1114 src/skins/ui_equalizer.c:1150 +msgid "Save equalizer preset" +msgstr "Чува претподешавање уједначавача" + +#: src/skins/ui_equalizer.c:1169 src/skins/ui_manager.c:478 +msgid "Delete preset" +msgstr "Избриши претподешавање" + +#: src/skins/ui_equalizer.c:1186 +msgid "Delete auto-preset" +msgstr "Брише ÑамоÑтално претподешавање" + +#: src/skins/ui_main.c:444 +msgid "kbps" +msgstr "kb/s" + +#: src/skins/ui_main.c:452 +msgid "kHz" +msgstr "kHz" + +#: src/skins/ui_main.c:459 +msgid "surround" +msgstr "окружење" + +#: src/skins/ui_main.c:807 +#, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "Тражи до: %d:%-2.2d / %d:%-2.2d" + +#: src/skins/ui_main.c:828 +#, c-format +msgid "Volume: %d%%" +msgstr "Јачина звука: %d%%" + +#: src/skins/ui_main.c:851 +#, c-format +msgid "Balance: %d%% left" +msgstr "УравнотеженоÑÑ‚: %d%% леви" + +#: src/skins/ui_main.c:853 +msgid "Balance: center" +msgstr "УравнотеженоÑÑ‚: центрирано" + +#: src/skins/ui_main.c:855 +#, c-format +msgid "Balance: %d%% right" +msgstr "УравнотеженоÑÑ‚: %d%% деÑни" + +#: src/skins/ui_main.c:981 +msgid "Options Menu" +msgstr "Изборник опција" + +#: src/skins/ui_main.c:985 +msgid "Disable 'Always On Top'" +msgstr "ИÑкључи „Увек у првом плану“" + +#: src/skins/ui_main.c:987 +msgid "Enable 'Always On Top'" +msgstr "Укључи „Увек у првом плану“" + +#: src/skins/ui_main.c:990 +msgid "File Info Box" +msgstr "Поље информација о датотеци" + +#: src/skins/ui_main.c:995 +msgid "Visualization Menu" +msgstr "Изборник приказивања" + +#: src/skins/ui_main.c:1653 +msgid "Single mode." +msgstr "ЈедноÑтавни режим." + +#: src/skins/ui_main.c:1655 +msgid "Playlist mode." +msgstr "Режим ÑпиÑка нумера." + +#: src/skins/ui_main.c:1677 +msgid "Stopping after song." +msgstr "ЗауÑтавља након пеÑме." + +#: src/skins/ui_main.c:1679 +msgid "Not stopping after song." +msgstr "Ðе зауÑтавља након пеÑме." + +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 +msgid "Autoscroll Songname" +msgstr "СамоÑтално померај назив пеÑме" + +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "ЗауÑтави поÑле текуће пеÑме" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 +msgid "Peaks" +msgstr "Врхови" + +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "Понови" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "ÐаÑумично" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "Ðе напредуј у ÑпиÑку нумера" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 +msgid "Show Player" +msgstr "Прикажи плејер" + +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 +msgid "Show Playlist Editor" +msgstr "Прикажи уређивач ÑпиÑка нумера" + +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 +msgid "Show Equalizer" +msgstr "Прикажи уједначавач" + +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 +msgid "Always on Top" +msgstr "Увек у првом плану" + +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 +msgid "Put on All Workspaces" +msgstr "Стави на Ñве радне проÑторе" + +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 +msgid "Roll up Player" +msgstr "Замотај плејер" + +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 +msgid "Roll up Playlist Editor" +msgstr "Замотај уређивач ÑпиÑка нумера" + +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 +msgid "Roll up Equalizer" +msgstr "Замотај уједначавач" + +#: src/skins/ui_manager.c:115 +msgid "Analyzer" +msgstr "Ðнализатор" + +#: src/skins/ui_manager.c:116 +msgid "Scope" +msgstr "ДоÑег" + +#: src/skins/ui_manager.c:117 +msgid "Voiceprint" +msgstr "ОтиÑак глаÑа" + +#: src/skins/ui_manager.c:118 +msgid "Off" +msgstr "ИÑкључено" + +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 +msgid "Normal" +msgstr "Ðормалан" + +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 +msgid "Fire" +msgstr "Ватра" + +#: src/skins/ui_manager.c:124 +msgid "Vertical Lines" +msgstr "Вертикалне линије" + +#: src/skins/ui_manager.c:128 +msgid "Lines" +msgstr "Линије" + +#: src/skins/ui_manager.c:129 +msgid "Bars" +msgstr "Траке" + +#: src/skins/ui_manager.c:133 +msgid "Dot Scope" +msgstr "ТачкаÑти доÑег" + +#: src/skins/ui_manager.c:134 +msgid "Line Scope" +msgstr "ЛинијÑки доÑег" + +#: src/skins/ui_manager.c:135 +msgid "Solid Scope" +msgstr "ИÑпуњен доÑег" + +#: src/skins/ui_manager.c:141 +msgid "Ice" +msgstr "Лед" + +#: src/skins/ui_manager.c:146 +msgid "Smooth" +msgstr "Глатко" + +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 +msgid "Slowest" +msgstr "ÐајÑпорије" + +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 +msgid "Slow" +msgstr "Споро" + +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 +msgid "Medium" +msgstr "Средње" + +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 +msgid "Fast" +msgstr "Брзо" + +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 +msgid "Fastest" +msgstr "Ðајбрже" + +#: src/skins/ui_manager.c:166 +msgid "Time Elapsed" +msgstr "Протекло време" + +#: src/skins/ui_manager.c:167 +msgid "Time Remaining" +msgstr "ПреоÑтало време" + +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "Паузирај" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "Претходна" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "Следећа" + +#: src/skins/ui_manager.c:196 +msgid "Visualization" +msgstr "Приказивање" + +#: src/skins/ui_manager.c:197 +msgid "Visualization Mode" +msgstr "Режим приказивања" + +#: src/skins/ui_manager.c:198 +msgid "Analyzer Mode" +msgstr "Режим анализатора" + +#: src/skins/ui_manager.c:199 +msgid "Scope Mode" +msgstr "Режим доÑега" + +#: src/skins/ui_manager.c:200 +msgid "Voiceprint Mode" +msgstr "Режим отиÑка глаÑа" + +#: src/skins/ui_manager.c:201 +msgid "WindowShade VU Mode" +msgstr "ВУ режим Ñкривања прозора" + +#: src/skins/ui_manager.c:202 +msgid "Analyzer Falloff" +msgstr "Опадање анализатора" + +#: src/skins/ui_manager.c:203 +msgid "Peaks Falloff" +msgstr "Опадање врхова" + +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "СпиÑак нумера" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "Ðови ÑпиÑак нумера" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 +msgid "Select Next Playlist" +msgstr "Изабери Ñледећи ÑпиÑак нумера" + +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 +msgid "Select Previous Playlist" +msgstr "Изабери претходни ÑпиÑак нумера" + +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "Избриши ÑпиÑак нумера" + +#: src/skins/ui_manager.c:222 +msgid "Import Playlist" +msgstr "Увези ÑпиÑак нумера" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "Учитава датотеку ÑпиÑка нумера у изабрани ÑпиÑак нумера." + +#: src/skins/ui_manager.c:226 +msgid "Export Playlist" +msgstr "Извези ÑпиÑак нумера" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "Чува изабрани ÑпиÑак нумера." + +#: src/skins/ui_manager.c:229 +msgid "Refresh List" +msgstr "ОÑвежи ÑпиÑак" + +#: src/skins/ui_manager.c:230 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "ОÑвежава метаподатке придружене Ñтавци ÑпиÑка нумера." + +#: src/skins/ui_manager.c:233 +msgid "Playlist Manager" +msgstr "Управник ÑпиÑка нумера" + +#: src/skins/ui_manager.c:234 +msgid "Queue Manager" +msgstr "Управник редоÑледа" + +#: src/skins/ui_manager.c:237 +msgid "View" +msgstr "Поглед" + +#: src/skins/ui_manager.c:238 +msgid "Interface" +msgstr "Сучеље" + +#: src/skins/ui_manager.c:239 +msgid "Interface Preferences ..." +msgstr "ПоÑтавке Ñучеља ..." + +#: src/skins/ui_manager.c:243 +msgid "Add Internet Address..." +msgstr "Додај интернет адреÑу..." + +#: src/skins/ui_manager.c:244 +msgid "Adds a remote track to the playlist." +msgstr "Додаје удаљену нумеру на ÑпиÑак нумера." + +#: src/skins/ui_manager.c:247 +msgid "Add Files..." +msgstr "Додај датотеке..." + +#: src/skins/ui_manager.c:248 +msgid "Adds files to the playlist." +msgstr "Додаје датотеке на ÑпиÑак нумера." + +#: src/skins/ui_manager.c:253 +msgid "Search and Select" +msgstr "Претражи и означи" + +#: src/skins/ui_manager.c:254 +msgid "" +"Searches the playlist and selects playlist entries based on specific " +"criteria." +msgstr "" +"Претржује ÑпиÑак нумера и означава Ñтавке Ñа ÑпиÑка нумера према одређеном " +"уÑлову." + +#: src/skins/ui_manager.c:257 +msgid "Invert Selection" +msgstr "Обрни избор" + +#: src/skins/ui_manager.c:258 +msgid "Inverts the selected and unselected entries." +msgstr "Преокреће означене и неозначене Ñтавке." + +#: src/skins/ui_manager.c:261 +msgid "Select All" +msgstr "Означи Ñве" + +#: src/skins/ui_manager.c:262 +msgid "Selects all of the playlist entries." +msgstr "Означава Ñве Ñтавке Ñа ÑпиÑка нумера." + +#: src/skins/ui_manager.c:265 +msgid "Select None" +msgstr "Означи ништа" + +#: src/skins/ui_manager.c:266 +msgid "Deselects all of the playlist entries." +msgstr "Одзначава Ñве Ñтавке Ñа ÑпиÑка нумера." + +#: src/skins/ui_manager.c:271 +msgid "Remove All" +msgstr "Уклони Ñве" + +#: src/skins/ui_manager.c:272 +msgid "Removes all entries from the playlist." +msgstr "Уклања Ñве Ñтавке Ñа ÑпиÑка нумера." + +#: src/skins/ui_manager.c:275 +msgid "Clear Queue" +msgstr "Обриши заказано" + +#: src/skins/ui_manager.c:276 +msgid "Clears the queue associated with this playlist." +msgstr "Брише заказано придружено овом ÑпиÑку нумера." + +#: src/skins/ui_manager.c:279 +msgid "Remove Unavailable Files" +msgstr "Уклони недоÑтупне датотеке" + +#: src/skins/ui_manager.c:280 +msgid "Removes unavailable files from the playlist." +msgstr "Уклања недоÑтупне датотеке Ñа ÑпиÑка нумера." + +#: src/skins/ui_manager.c:283 +msgid "Remove Duplicates" +msgstr "Уклони дупликате" + +#: src/skins/ui_manager.c:285 src/skins/ui_manager.c:317 +#: src/skins/ui_manager.c:347 +msgid "By Title" +msgstr "Према наÑлову" + +#: src/skins/ui_manager.c:286 +msgid "Removes duplicate entries from the playlist by title." +msgstr "Уклања дупликате Ñа ÑпиÑка нумера према наÑлову." + +#: src/skins/ui_manager.c:289 src/skins/ui_manager.c:329 +#: src/skins/ui_manager.c:359 +msgid "By Filename" +msgstr "Према називу датотеке" + +#: src/skins/ui_manager.c:290 +msgid "Removes duplicate entries from the playlist by filename." +msgstr "Уклања дупликате Ñа ÑпиÑка нумера према називу датотеке." + +#: src/skins/ui_manager.c:293 src/skins/ui_manager.c:333 +#: src/skins/ui_manager.c:363 +msgid "By Path + Filename" +msgstr "Према путањи и називу датотеке" + +#: src/skins/ui_manager.c:294 +msgid "Removes duplicate entries from the playlist by their full path." +msgstr "Уклања дупликате Ñа ÑпиÑка нумера према њиховој пуној путањи." + +#: src/skins/ui_manager.c:297 +msgid "Remove Unselected" +msgstr "Уклони неозначене" + +#: src/skins/ui_manager.c:298 +msgid "Remove unselected entries from the playlist." +msgstr "Уклања неозначене Ñтавке Ñа ÑпиÑка нумера." + +#: src/skins/ui_manager.c:301 +msgid "Remove Selected" +msgstr "Уклони означене" + +#: src/skins/ui_manager.c:302 +msgid "Remove selected entries from the playlist." +msgstr "Уклања означене Ñтавке Ñа ÑпиÑка нумера." + +#: src/skins/ui_manager.c:307 +msgid "Randomize List" +msgstr "ÐаÑумице иÑпремештај ÑпиÑак" + +#: src/skins/ui_manager.c:308 +msgid "Randomizes the playlist." +msgstr "ÐаÑумице иÑпремешта ÑпиÑак нумера." + +#: src/skins/ui_manager.c:311 +msgid "Reverse List" +msgstr "Преокрени ÑпиÑак" + +#: src/skins/ui_manager.c:312 +msgid "Reverses the playlist." +msgstr "Преокреће ÑпиÑак нумера." + +#: src/skins/ui_manager.c:315 +msgid "Sort List" +msgstr "Поређај ÑпиÑак" + +#: src/skins/ui_manager.c:318 src/skins/ui_manager.c:348 +msgid "Sorts the list by title." +msgstr "Ређа ÑпиÑак према наÑлову." + +#: src/skins/ui_manager.c:321 src/skins/ui_manager.c:351 +msgid "By Album" +msgstr "Према албуму" + +#: src/skins/ui_manager.c:322 src/skins/ui_manager.c:352 +msgid "Sorts the list by album." +msgstr "Ређа ÑпиÑак према извођачу." + +#: src/skins/ui_manager.c:325 src/skins/ui_manager.c:355 +msgid "By Artist" +msgstr "Према извођачу" + +#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +msgid "Sorts the list by artist." +msgstr "Ређа ÑпиÑак према извођачу." + +#: src/skins/ui_manager.c:330 src/skins/ui_manager.c:360 +msgid "Sorts the list by filename." +msgstr "Ређа ÑпиÑак према имену датотеке." + +#: src/skins/ui_manager.c:334 src/skins/ui_manager.c:364 +msgid "Sorts the list by full pathname." +msgstr "Ређа ÑпиÑак према пуном имену путање." + +#: src/skins/ui_manager.c:337 src/skins/ui_manager.c:367 +msgid "By Date" +msgstr "Према датуму" + +#: src/skins/ui_manager.c:338 src/skins/ui_manager.c:368 +msgid "Sorts the list by modification time." +msgstr "Ређа ÑпиÑак према датуму измене." + +#: src/skins/ui_manager.c:341 src/skins/ui_manager.c:371 +msgid "By Track Number" +msgstr "Према броју нумере" + +#: src/skins/ui_manager.c:342 src/skins/ui_manager.c:372 +msgid "Sorts the list by track number." +msgstr "Ређа ÑпиÑак према броју нумере." + +#: src/skins/ui_manager.c:345 +msgid "Sort Selected" +msgstr "Поређај означене" + +#: src/skins/ui_manager.c:381 +msgid "File" +msgstr "Датотека" + +#: src/skins/ui_manager.c:384 +msgid "Plugin Services" +msgstr "УÑлуге прикључка" + +#: src/skins/ui_manager.c:386 src/skins/ui_manager.c:389 +msgid "View Track Details" +msgstr "Прикажи детаље нумере" + +#: src/skins/ui_manager.c:387 src/skins/ui_manager.c:390 +msgid "View track details" +msgstr "Приказује детаље нумере" + +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:393 +msgid "About Audacious" +msgstr "О Безочнику" + +#: src/skins/ui_manager.c:395 +msgid "Play File" +msgstr "ПуÑти датотеку" + +#: src/skins/ui_manager.c:396 +msgid "Load and play a file" +msgstr "Учитава и пушта датотеку" + +#: src/skins/ui_manager.c:398 +msgid "Play Location" +msgstr "ПуÑти локацију" + +#: src/skins/ui_manager.c:399 +msgid "Play media from the selected location" +msgstr "Пушта медиј Ñа изабране локације" + +#: src/skins/ui_manager.c:401 +msgid "Plugin services" +msgstr "УÑлуге додатака" + +#: src/skins/ui_manager.c:403 +msgid "Preferences" +msgstr "ПоÑтавке" + +#: src/skins/ui_manager.c:404 +msgid "Open preferences window" +msgstr "Отвара прозор поÑтавки" + +#: src/skins/ui_manager.c:407 +msgid "Quit Audacious" +msgstr "ГаÑи Безочника" + +#: src/skins/ui_manager.c:409 src/skins/ui_manager.c:410 +msgid "Set A-B" +msgstr "ПоÑтави ЗБ" + +#: src/skins/ui_manager.c:412 src/skins/ui_manager.c:413 +msgid "Clear A-B" +msgstr "Обриши ЗБ" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Jump to Time" +msgstr "Пређи на време" + +#: src/skins/ui_manager.c:421 +msgid "Queue Toggle" +msgstr "У ред/из реда" + +#: src/skins/ui_manager.c:422 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "Укључује/иÑкључује Ñтавке у/из ред(а) ÑпиÑак(а) нумера." + +#: src/skins/ui_manager.c:425 +msgid "Copy" +msgstr "Умножи" + +#: src/skins/ui_manager.c:427 +msgid "Cut" +msgstr "ИÑеци" + +#: src/skins/ui_manager.c:429 +msgid "Paste" +msgstr "Убаци" + +#: src/skins/ui_manager.c:436 +msgid "Load" +msgstr "Учитај" + +#: src/skins/ui_manager.c:437 +msgid "Import" +msgstr "Увези" + +#: src/skins/ui_manager.c:438 +msgid "Save" +msgstr "Сачувај" + +#: src/skins/ui_manager.c:439 +msgid "Delete" +msgstr "Обриши" + +#: src/skins/ui_manager.c:441 src/skins/ui_manager.c:462 +#: src/skins/ui_manager.c:477 +msgid "Preset" +msgstr "Претподешавање" + +#: src/skins/ui_manager.c:444 src/skins/ui_manager.c:465 +#: src/skins/ui_manager.c:480 +msgid "Auto-load preset" +msgstr "СамоÑтално учитај претподешавања" + +#: src/skins/ui_manager.c:445 +msgid "Load auto-load preset" +msgstr "Учитава ÑамоÑтално учитана претподешавања" + +#: src/skins/ui_manager.c:448 +msgid "Load default preset into equalizer" +msgstr "Учитава оÑновно претподешавање у уједначавачу" + +#: src/skins/ui_manager.c:450 +msgid "Zero" +msgstr "Ðула" + +#: src/skins/ui_manager.c:451 +msgid "Set equalizer preset levels to zero" +msgstr "ПоÑтавља нивое претподешавања уједначавача на нулу" + +#: src/skins/ui_manager.c:453 +msgid "From file" +msgstr "Из датотеке" + +#: src/skins/ui_manager.c:454 +msgid "Load preset from file" +msgstr "Учитава претподешавање из датотеке" + +#: src/skins/ui_manager.c:456 +msgid "From WinAMP EQF file" +msgstr "Из ВинÐМП ЕКуФ датотеке" + +#: src/skins/ui_manager.c:457 +msgid "Load preset from WinAMP EQF file" +msgstr "Учитава претподешавање из ВинÐМП ЕКуФ датотеке" + +#: src/skins/ui_manager.c:459 +msgid "WinAMP Presets" +msgstr "ВинÐМП претподешавања" + +#: src/skins/ui_manager.c:460 +msgid "Import WinAMP presets" +msgstr "Увези ВинÐМП претподешавања" + +#: src/skins/ui_manager.c:466 +msgid "Save auto-load preset" +msgstr "Чува ÑамоÑтално учитано претподешавање" + +#: src/skins/ui_manager.c:469 +msgid "Save default preset" +msgstr "Чува оÑновно претподешавање" + +#: src/skins/ui_manager.c:471 +msgid "To file" +msgstr "У датотеку" + +#: src/skins/ui_manager.c:472 +msgid "Save preset to file" +msgstr "Чува претподешавање у датотеку" + +#: src/skins/ui_manager.c:474 +msgid "To WinAMP EQF file" +msgstr "У ВинÐМП ЕКуФ датотеку" + +#: src/skins/ui_manager.c:475 +msgid "Save preset to WinAMP EQF file" +msgstr "Чува претподешавање у ВинÐМП ЕКуФ датотеку" + +#: src/skins/ui_manager.c:481 +msgid "Delete auto-load preset" +msgstr "Брише ÑамоÑтално учитано претподешавање" + +#: src/skins/ui_playlist.c:248 +msgid "Search entries in active playlist" +msgstr "Претражи Ñтавке у активном ÑпиÑку нумера" + +#: src/skins/ui_playlist.c:256 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular" +" expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Обележите Ñтавке у ÑпиÑку нумера попуњавајући једно или више поља. Поља " +"кориÑте ÑинтакÑу обичних израза, не разликују величину Ñлова. Ðко не знате " +"како обични изрази функционишу, једноÑтавно доÑловно унеÑите део онога што " +"тражите." + +#: src/skins/ui_playlist.c:264 +msgid "Title: " +msgstr "ÐаÑлов: " + +#: src/skins/ui_playlist.c:271 +msgid "Album: " +msgstr "Ðлбум: " + +#: src/skins/ui_playlist.c:278 +msgid "Artist: " +msgstr "Извођач: " + +#: src/skins/ui_playlist.c:285 +msgid "Filename: " +msgstr "Ðазив датотеке: " + +#: src/skins/ui_playlist.c:293 +msgid "Clear previous selection before searching" +msgstr "Обриши претходни избор пре претраге" + +#: src/skins/ui_playlist.c:296 +msgid "Automatically toggle queue for matching entries" +msgstr "Подударајуће Ñтавке ÑамоÑтално пребаци у ред" + +#: src/skins/ui_playlist.c:299 +msgid "Create a new playlist with matching entries" +msgstr "Ðаправи нови ÑпиÑак нумера Ñа подударајућим Ñтавкама" + +#: src/skins/ui_playlist.c:765 +msgid "Audacious Playlist Editor" +msgstr "Уређивач ÑпиÑка нумера" + +#: src/skins/ui_playlist.c:812 +#, c-format +msgid "%s (%d of %d)" +msgstr "%s (%d од %d)" + +#: src/skins/ui_skinselector.c:162 +msgid "Archived Winamp 2.x skin" +msgstr "Ðрхивирана Винамп 2.x маÑка" + +#: src/skins/ui_skinselector.c:167 +msgid "Unarchived Winamp 2.x skin" +msgstr "Ðеархивирана Винамп 2.x маÑка" + +#: src/skins/util.c:774 +#, c-format +msgid "Could not create directory (%s): %s\n" +msgstr "Ðе могу да направим фаÑциклу (%s): %s\n" + +#: src/sndfile/plugin.c:456 +msgid "About sndfile plugin" +msgstr "О прикључку датотеке звука" + +#: src/sndstretch/sndstretch_xmms.c:155 +msgid "About SndStretch" +msgstr "О РаÑтезању звука" + +#: src/sndstretch/sndstretch_xmms.c:308 +msgid "Volume corr." +msgstr "Поправка јачине" + +#: src/sndstretch/sndstretch_xmms.c:309 +msgid "Short Overlap" +msgstr "Кратко преклапање" + +#: src/sndstretch/sndstretch_xmms.c:355 +msgid "Speed" +msgstr "Брзина" + +#: src/sndstretch/sndstretch_xmms.c:356 +msgid "Pitch" +msgstr "Корак" + +#: src/sndstretch/sndstretch_xmms.c:357 +msgid "Scale" +msgstr "Скала" + +#: src/sndstretch/sndstretch_xmms.c:377 +msgid "SndStretch - Configuration" +msgstr "Подешавања РаÑтезања звука" + +#: src/song_change/song_change.c:437 +msgid "Command to run when Audacious starts a new song." +msgstr "Ðаредба за покретање када Безочник започиње нову пеÑму." + +#: src/song_change/song_change.c:439 src/song_change/song_change.c:445 +#: src/song_change/song_change.c:451 src/song_change/song_change.c:457 +msgid "Command:" +msgstr "Ðаредба:" + +#: src/song_change/song_change.c:443 +msgid "Command to run toward the end of a song." +msgstr "Ðаредба за покретање при крају пеÑме." + +#: src/song_change/song_change.c:449 +msgid "Command to run when Audacious reaches the end of the playlist." +msgstr "Ðаредба за покретање када Безочник Ñтигне на крај ÑпиÑка нумера." + +#: src/song_change/song_change.c:455 +msgid "" +"Command to run when title changes for a song (i.e. network streams titles)." +msgstr "" +"Ðаредба за покретање када Ñе промени наÑлов пеÑме (тј. наÑлови мрежних " +"токова)." + +#: src/song_change/song_change.c:461 +msgid "" +"You can use the following format strings which\n" +"will be substituted before calling the command\n" +"(not all are useful for the end-of-playlist command).\n" +"\n" +"%F: Frequency (in hertz)\n" +"%c: Number of channels\n" +"%f: filename (full path)\n" +"%l: length (in milliseconds)\n" +"%n or %s: Song name\n" +"%r: Rate (in bits per second)\n" +"%t: Playlist position (%02d)\n" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" +msgstr "" +"Можете да кориÑтите Ñледеће ниÑке формата које\n" +"ће бити замењене пре позивања наредбе\n" +"(ниÑу Ñве кориÑне за наредбу крај-ÑпиÑка-нумера).\n" +"\n" +"%F: УчеÑталоÑÑ‚ (у херцима)\n" +"%c: Број канала\n" +"%f: Ðазив датотеке (пуна путања)\n" +"%l: Трајање (у милиÑекундама)\n" +"%n или %s: Ðазив пеÑме\n" +"%r: Проток (у битима у Ñекунди)\n" +"%t: Позиција ÑпиÑка нумера (%%02d)\n" +"%p: Тренутно пуштена (1 или 0)\n" +"%a: Уметник\n" +"%b: Ðлбум\n" +"%T: ÐаÑлов нумере" + +#: src/song_change/song_change.c:488 +msgid "" +"Parameters passed to the shell should be encapsulated in " +"quotes. Doing otherwise is a security risk." +msgstr "" +"Параметри проÑлеђени љуÑци би требало да буду у " +"наводницима. Све другачије је безбедноÑни ризик." + +#: src/song_change/song_change.c:499 +msgid "Commands" +msgstr "Ðаредбе" + +#: src/song_change/song_change.c:529 +msgid "Song Change" +msgstr "Промена пеÑме" + +#: src/statusicon/statusicon.c:379 +msgid "About Status Icon Plugin" +msgstr "О прикључку иконице Ñтања" + +#: src/statusicon/statusicon.c:380 +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager.\n" +msgstr "" +"Прикључак иконице Ñтања\n" +"\n" +"ÐуторÑка права 2005-2007 Ђакомо Лоцито < james@develia.org >\n" +"ÐуторÑка права 2010 Михал ЛипÑки \n" +"\n" +"Овај додатак обезбеђује иконицу Ñтања, Ñмештену\n" +"у облаÑти фиоке ÑиÑтема управника прозора.\n" + +#: src/statusicon/statusicon.c:451 +msgid "Status Icon Plugin - Preferences" +msgstr "Подешавања прикључка иконице Ñтања" + +#: src/statusicon/statusicon.c:461 +msgid "Right-Click Menu" +msgstr "Изборник деÑног клика" + +#: src/statusicon/statusicon.c:466 +msgid "Small playback menu #1" +msgstr "Мали изборник репродукције #1" + +#: src/statusicon/statusicon.c:469 +msgid "Small playback menu #2" +msgstr "Мали изборник репродукције #2" + +#: src/statusicon/statusicon.c:485 +msgid "Mouse Scroll Action" +msgstr "Радња клизања мишем" + +#: src/statusicon/statusicon.c:489 +msgid "Change volume" +msgstr "Промени јачину звука" + +#: src/statusicon/statusicon.c:491 +msgid "Change playing song" +msgstr "Промени пеÑму" + +#: src/statusicon/statusicon.c:504 +msgid "Other settings" +msgstr "ОÑтала подешавања" + +#: src/statusicon/statusicon.c:509 +msgid "Disable the popup window" +msgstr "ИÑкључи прозор облачића" + +#: src/statusicon/statusicon.c:516 +msgid "Close to the notification area (system tray)" +msgstr "Затвори у обавештајној зони (ÑиÑтемÑка фиока)" + +#: src/statusicon/statusicon.c:524 +msgid "Advance in playlist when scrolling upward" +msgstr "Ðапредује у ÑпиÑку нумера када клиза унапред" + +#: src/stereo_plugin/stereo.c:45 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin 1999." +msgstr "" +"ЕкÑтра прикључак Ñтереа\n" +"\n" +"ÐапиÑао Ðон Левин 1999." + +#: src/stereo_plugin/stereo.c:64 +msgid "About Extra Stereo Plugin" +msgstr "О екÑтра прикључку Ñтереа" + +#: src/stereo_plugin/stereo.c:95 +msgid "Configure Extra Stereo" +msgstr "Подешавање екÑтра Ñтереа" + +#: src/tonegen/tonegen.c:49 +msgid "About Tone Generator" +msgstr "О ТонÑком генератору" + +#: src/tonegen/tonegen.c:51 +msgid "" +"Sinus tone generator by Haavard Kvaalen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" +msgstr "" +"СинуÑни тонÑки генератор је напиÑао Хавард Квален \n" +"Прерадио га је Данијел Ј. Пенг \n" +"\n" +"Да га кориÑтите, додајте адреÑу: tone://учеÑталоÑÑ‚1;учеÑталоÑÑ‚2;учеÑталоÑÑ‚3;...\n" +"нпр.: tone://2000;2005 да пуÑтите тонове 2000Hz и 2005Hz." + +#: src/tonegen/tonegen.c:101 +#, c-format +msgid "%s %.1f Hz" +msgstr "%s %.1f Hz" + +#: src/tonegen/tonegen.c:101 +msgid "Tone Generator: " +msgstr "ТонÑки генератор: " + +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" +msgstr "О прикључку У/И датотеке" + +#: src/vorbis/vorbis.c:573 +msgid "About Ogg Vorbis Audio Plugin" +msgstr "О Огг Ð’Ð¾Ñ€Ð±Ð¸Ñ Ð°ÑƒÐ´Ð¸Ð¾ прикључку" + +#: src/vorbis/vorbis.c:578 +msgid "" +"Ogg Vorbis Plugin by the Xiph.org Foundation\n" +"\n" +"Original code by\n" +"Tony Arcieri \n" +"Contributions from\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visit the Xiph.org Foundation at http://www.xiph.org/\n" +msgstr "" +"Огг Ð’Ð¾Ñ€Ð±Ð¸Ñ Ð¿Ñ€Ð¸ÐºÑ™ÑƒÑ‡Ð°Ðº — Xiph.орг задужбина\n" +"\n" +"Оригинални кôд је напиÑао:\n" +"Тони Ðрћери \n" +"Допринели Ñу:\n" +"ÐšÑ€Ð¸Ñ ÐœÐ¾Ð½Ñ‚Ð³Ð¾Ð¼ÐµÑ€Ð¸ \n" +"Питер Ðлм \n" +"Мајкл Смит \n" +"Ðек Мофит \n" +"Јорн Бајен \n" +"Хавард Квален \n" +"Ђанкарло ПаÑкуто \n" +"Евгениј Загидулин \n" +"\n" +"ПоÑетите Xiph.org задужбину на: http://www.xiph.org/\n" + +#: src/vtx/about.c:14 +msgid "About Vortex Player" +msgstr "О програму ВортекÑ" + +#: src/vtx/about.c:15 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"\n" +"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" +"and other AY/YM music sites.\n" +"\n" +"Audacious implementation by Pavel Vymetalek " +msgstr "" +"Програм за датотеке Ð’Ð¾Ñ€Ñ‚ÐµÐºÑ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° је напиÑао Сашнов ÐлекÑандер \n" +"ЗаÑновано на оригиналном извору „in_vtx.dll“ Романа Шербакова \n" +"\n" +"Музику у втх формату можете пронаћи на: http://vtx.microfor.ru/music.htm\n" +"и другим AY/YM Ñајтовима музике.\n" +"\n" +"Применио у Безочнику Павел Вимталек " + +#: src/wavpack/wavpack.c:353 +#, c-format +msgid "Wavpack Decoder Plugin %s" +msgstr "Прикључак декодера Вејвпака %s" + +#: src/wavpack/wavpack.c:354 +msgid "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan\n" +"Visit the Wavpack site at http://www.wavpack.com/\n" +msgstr "" +"ÐуторÑка права (c) 2006 Вилијам Питкок \n" +"\n" +"Ðешто кôда прикључка је урадио ÐœÐ°Ñ˜Ð»Ñ Ð•Ð³Ð°Ð½\n" +"ПоÑетите Ñајт Вејвпака на: http://www.wavpack.com/\n" + + diff -Nru audacious-plugins-2.4.4/po/tr.po audacious-plugins-3.2/po/tr.po --- audacious-plugins-2.4.4/po/tr.po 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/tr.po 2012-01-20 19:48:30.000000000 +0000 @@ -15,7 +15,7 @@ msgstr "" "Project-Id-Version: audacious-plugins\n" "Report-Msgid-Bugs-To: http://jira.atheme.org/\n" -"POT-Creation-Date: 2010-08-03 17:55-0400\n" +"POT-Creation-Date: 2011-07-17 18:49-0400\n" "PO-Revision-Date: 2007-12-22 23:09+0200\n" "Last-Translator: Onur Küçük \n" "Language-Team: Turkish\n" @@ -25,7 +25,7 @@ "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" -#: src/aac/libmp4.c:291 +#: src/aac/libmp4.c:256 #, fuzzy, c-format msgid "" "Using libfaad2-%s for decoding.\n" @@ -36,613 +36,55 @@ "FAAD2 AAC/HE-AAC/HE-AACv2/DRM çözücüsü (c) Nero AG, www.nero.com\n" "Telif Hakkı (c) 2005-2006 Audacious ekibi" -#: src/aac/libmp4.c:296 +#: src/aac/libmp4.c:261 #, fuzzy msgid "About MP4 AAC decoder plugin" msgstr "MP4 AAC oynatıcı eklentisi hakkında" -#: src/adplug/adplug-xmms.cc:153 -msgid "About " -msgstr "Hakkında" - -#: src/adplug/adplug-xmms.cc:157 -msgid "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"This plugin is released under the terms and conditions of the GNU LGPL.\n" -"See http://www.gnu.org/licenses/lgpl.html for details.\n" -"\n" -"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et " -"al.\n" -"Linked AdPlug library version: " -msgstr "" -"\n" -"Telif Hakkı (C) 2002, 2003 Simon Peter \n" -"\n" -"Bu eklenti, GNU LGPL ÅŸartları altında yayınlanmaktadır.\n" -"Daha fazla bilgi için http://www.gnu.org/licenses/lgpl.html adresine " -"bakınız.\n" -"\n" -"Bu eklenti tüm hakları (C) Simon Peter, et al'a ait olan AdPlug " -"kütüphanesini kullanmaktadır.\n" -"AdPlug kitaplık sürümü: " - -#: src/adplug/adplug-xmms.cc:234 -msgid "AdPlug :: Configuration" -msgstr "AdPlug :: Yapılandırması" - -#: src/adplug/adplug-xmms.cc:243 src/adplug/adplug-xmms.cc:504 -#: src/cdaudio-ng/configure.c:258 src/crystalizer/crystalizer.c:127 -#: src/echo_plugin/gui.c:122 src/jack/configure.c:146 src/null/null.c:109 -#: src/stereo_plugin/stereo.c:123 src/sun/configure.c:557 -msgid "Ok" -msgstr "Tamam" - -#: src/adplug/adplug-xmms.cc:253 src/alarm/interface.c:1398 -#: src/cdaudio-ng/configure.c:263 src/crystalizer/crystalizer.c:136 -#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 -#: src/modplug/gui/interface.cxx:715 src/null/null.c:110 -#: src/stereo_plugin/stereo.c:132 src/sun/configure.c:565 -msgid "Cancel" -msgstr "Ä°ptal" - -#: src/adplug/adplug-xmms.cc:269 src/console/configure.c:154 -#: src/modplug/gui/interface.cxx:629 src/modplug/gui/interface.cxx:888 -msgid "General" -msgstr "Genel" - -#: src/adplug/adplug-xmms.cc:281 -msgid "Sound quality" -msgstr "Ses kalitesi" - -#: src/adplug/adplug-xmms.cc:286 src/modplug/gui/interface.cxx:188 -msgid "Resolution" -msgstr "Çözünürlük" - -#: src/adplug/adplug-xmms.cc:288 -msgid "8bit" -msgstr "8bit" - -#: src/adplug/adplug-xmms.cc:293 -msgid "16bit" -msgstr "16bit" - -#: src/adplug/adplug-xmms.cc:301 src/modplug/gui/interface.cxx:219 -msgid "Channels" -msgstr "Kanallar" - -#: src/adplug/adplug-xmms.cc:303 src/filewriter/mp3.c:934 -#: src/mpg123/mpg123.c:174 src/sid/xs_interface.c:301 -msgid "Mono" -msgstr "Mono" - -#: src/adplug/adplug-xmms.cc:308 src/filewriter/mp3.c:929 -#: src/modplug/gui/interface.cxx:205 src/mpg123/mpg123.c:174 -#: src/sid/xs_interface.c:308 -msgid "Stereo" -msgstr "Stereo" - -#: src/adplug/adplug-xmms.cc:312 -msgid "" -"Setting stereo is not recommended, unless you need to. This won't add any " -"stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!" -msgstr "" -"EÄŸer, ihtyacınız yoksa, stereoyu seçmeyin. Çünkü, sese stereo etkisi " -"eklenmeyecektir. OPL2 sadece mono kullanır fakat daha fazla CPU gücü harcar!" - -#: src/adplug/adplug-xmms.cc:320 -msgid "Frequency" -msgstr "Sıklık" - -#: src/adplug/adplug-xmms.cc:356 src/adplug/adplug-xmms.cc:560 -#: src/console/configure.c:156 src/gtkui/ui_manager.c:64 -#: src/skins/ui_manager.c:165 -msgid "Playback" -msgstr "Çal" - -#: src/adplug/adplug-xmms.cc:360 -msgid "Detect songend" -msgstr "Åžarkı sonunu tespit et" - -#: src/adplug/adplug-xmms.cc:364 -msgid "" -"If enabled, XMMS will detect a song's ending, stop it and advance in the " -"playlist. If disabled, XMMS won't take notice of a song's ending and loop it " -"all over again and again." -msgstr "" -"EÄŸer etkinleÅŸtirilirse, Audacious ÅŸarkının sonunu tespit edecek, ÅŸarkıyı " -"durduracak ve parça listesinde ilerleyecek. Bu özellik etkin deÄŸilse, " -"Audacious ÅŸarkı sonunu tespit edemeyecek ve ÅŸarkıyı tekrar tekrar çalmaya " -"devam edecek." - -#: src/adplug/adplug-xmms.cc:375 -msgid "Formats" -msgstr "Biçimler" - -#: src/adplug/adplug-xmms.cc:382 -msgid "Format selection" -msgstr "Biçim seçimi" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Format" -msgstr "Biçim" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Extension" -msgstr "Dosya uzantısı" - -#: src/adplug/adplug-xmms.cc:425 -msgid "" -"Selected file types will be recognized and played back by this plugin. " -"Deselected types will be ignored to make room for other plugins to play " -"these files." -msgstr "" -"Seçili dosya türleri, bu eklenti tarafından tanınacak ve çalınacak. " -"SeçilmemiÅŸ türler, diÄŸer eklentilerin bu dosyaları çalması için, dikkate " -"alınmayacak." - -#: src/adplug/adplug-xmms.cc:511 -msgid "AdPlug :: File Info" -msgstr "AdPlug :: Dosya Bilgisi" - -#: src/adplug/adplug-xmms.cc:533 src/amidi-plug/i_configure-fluidsynth.c:348 -msgid "Filename" -msgstr "Dosya adı" - -#: src/adplug/adplug-xmms.cc:537 src/skins/ui_playlist.c:390 -msgid "Title: " -msgstr "BaÅŸlık: " - -#: src/adplug/adplug-xmms.cc:538 -msgid "Author: " -msgstr "Yazar: " - -#: src/adplug/adplug-xmms.cc:539 -msgid "File Type: " -msgstr "Dosya Türü: " - -#: src/adplug/adplug-xmms.cc:540 -msgid "Subsongs: " -msgstr "Alt ÅŸarkılar: " - -#: src/adplug/adplug-xmms.cc:541 -msgid "Instruments: " -msgstr "Enstrumanlar: " - -#: src/adplug/adplug-xmms.cc:546 -msgid "Orders: " -msgstr "Sıralar: " - -#: src/adplug/adplug-xmms.cc:547 -msgid "Patterns: " -msgstr "Örnekler: " - -#: src/adplug/adplug-xmms.cc:551 -msgid "Song" -msgstr "Åžarkı" - -#: src/adplug/adplug-xmms.cc:577 -msgid "Instrument name" -msgstr "Enstruman adı" - -#: src/adplug/adplug-xmms.cc:619 -msgid "Song message" -msgstr "Åžarkı mesajı" - -#: src/adplug/adplug-xmms.cc:641 -msgid "Subsong selection" -msgstr "Arkayüz bölümü" - -#: src/adplug/adplug-xmms.cc:707 -msgid "Order: " -msgstr "Sıra: " - -#: src/adplug/adplug-xmms.cc:708 -msgid "Pattern: " -msgstr "Örnek: " - -#: src/adplug/adplug-xmms.cc:710 -msgid "Row: " -msgstr "Satır: " - -#: src/adplug/adplug-xmms.cc:711 -msgid "Speed: " -msgstr "Hız: " - -#: src/adplug/adplug-xmms.cc:712 -msgid "Timer: " -msgstr "Sayaç: " - -#: src/adplug/adplug-xmms.cc:713 src/console/configure.c:234 -#: src/sid/xs_interface.c:354 -msgid "Hz" -msgstr "Hz" - -#: src/alarm/interface.c:34 -msgid "About XMMS Alarm" -msgstr "XMMS Alarm Hakkında" - -#: src/alarm/interface.c:47 -msgid "XMMS Alarm" -msgstr "XMMS Alarm" - -#: src/alarm/interface.c:56 -msgid "" -"An XMMS plugin which can be used\n" -"to start playing at a certain time.\n" -"\n" -"Send all complaints to:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" -msgstr "" -"Audacious'un belli bir zamanda çalmaya baÅŸlaması\n" -"için bir XMMS eklentisi.\n" -"\n" -"Åžikayetleriniz için:\n" -"Adam Feakin \n" -"Daniel Stodden \n" -"\n" -"http://www.snika.uklinux.net/xmms-alarm/" - -#: src/alarm/interface.c:71 src/bluetooth/scan_gui.c:149 src/lirc/about.c:115 -#: src/modplug/gui/interface.cxx:972 src/sid/xs_about.c:214 -#: src/sid/xs_interface.c:1825 -msgid "Close" -msgstr "Kapat" - -#: src/alarm/interface.c:101 -msgid "Alarm" -msgstr "Alarm" - -#: src/alarm/interface.c:109 -msgid "This is your wakeup call." -msgstr "Bu sizin uyandırma çaÄŸrınız." - -#: src/alarm/interface.c:124 src/alarm/interface.c:1389 -#: src/modplug/gui/interface.cxx:703 src/sid/xs_config.c:322 -msgid "OK" -msgstr "Tamam" - -#: src/alarm/interface.c:152 -msgid "Select Playlist" -msgstr "Parça Listesini Seç" - -#: src/alarm/interface.c:196 -msgid "Sorry" -msgstr "Ãœzgünüm" - -#: src/alarm/interface.c:204 -msgid "Warning" -msgstr "Uyarı" - -#: src/alarm/interface.c:213 -msgid "" -"For safety reasons the \"quiet\" time must be at least 65 seconds longer " -"than the fading time, it must also be more than 10 seconds. This basically " -"means that there is a bug in the code and until I find a way of really " -"fixing it this message will appear :)\n" -"\n" -"Your fading settings have NOT been saved\n" -"\n" -"--\n" -"Adam" -msgstr "" -"Güvenlik nedenlerinden dolayı, \"sessiz\" zaman en az 10 saniye ve yavaÅŸ " -"geçiÅŸ zamanından da en az 65 saniye daha uzun olmalıdır." - -#: src/alarm/interface.c:229 -msgid "Oh Well" -msgstr "Oh Peki" - -#: src/alarm/interface.c:388 -msgid "Alarm Settings" -msgstr "Alarm Ayarları" - -#: src/alarm/interface.c:404 src/alarm/interface.c:576 -#: src/alarm/interface.c:948 -msgid "Time" -msgstr "Zaman" - -#: src/alarm/interface.c:445 -msgid "hours" -msgstr "saat" - -#: src/alarm/interface.c:506 -msgid "h" -msgstr "s" - -#: src/alarm/interface.c:536 -msgid "minutes" -msgstr "dakika" - -#: src/alarm/interface.c:554 -msgid "Quiet after:" -msgstr "Sonra çık:" - -#: src/alarm/interface.c:564 -msgid "Alarm at (default):" -msgstr "Alarmı çal (öntanımlı):" - -#: src/alarm/interface.c:584 -msgid "Choose the days for the alarm to come on" -msgstr "Alarmın çalacağı günleri seçiniz" - -#: src/alarm/interface.c:612 src/alarm/interface.c:660 -#: src/alarm/interface.c:708 src/alarm/interface.c:756 -#: src/alarm/interface.c:804 src/alarm/interface.c:852 -#: src/alarm/interface.c:900 src/OSS/configure.c:166 -#: src/skins/ui_manager.c:439 src/skins/ui_manager.c:460 -msgid "Default" -msgstr "Öntanımlı" - -#: src/alarm/interface.c:938 -msgid "Day" -msgstr "Gün" - -#: src/alarm/interface.c:958 -msgid "Tuesday" -msgstr "Salı" - -#: src/alarm/interface.c:969 -msgid "Wednesday" -msgstr "ÇarÅŸamba" - -#: src/alarm/interface.c:980 -msgid "Thursday" -msgstr "PerÅŸembe" - -#: src/alarm/interface.c:991 -msgid "Friday" -msgstr "Cuma" - -#: src/alarm/interface.c:1002 -msgid "Saturday" -msgstr "Cumartesi" - -#: src/alarm/interface.c:1013 -msgid "Sunday" -msgstr "Pazar" - -#: src/alarm/interface.c:1023 -msgid "Monday" -msgstr "Pazartesi" - -#: src/alarm/interface.c:1034 -msgid "Days" -msgstr "Günler" - -#: src/alarm/interface.c:1050 -msgid "Fading" -msgstr "YavaÅŸ geçiÅŸ" - -#: src/alarm/interface.c:1087 src/sid/xs_interface.c:921 -#: src/sid/xs_interface.c:975 src/sid/xs_interface.c:1155 -msgid "seconds" -msgstr "saniye" - -#: src/alarm/interface.c:1095 src/alarm/interface.c:1211 -#: src/modplug/gui/interface.cxx:550 -msgid "Volume" -msgstr "Ses" - -#: src/alarm/interface.c:1121 -msgid "Current" -msgstr "Güncel" - -#: src/alarm/interface.c:1128 -msgid "reset to current output volume" -msgstr "güncel çıktı sesine dön" - -#: src/alarm/interface.c:1130 -msgid "Start at" -msgstr "BaÅŸlat" - -#: src/alarm/interface.c:1158 src/alarm/interface.c:1202 -msgid "%" -msgstr "%" - -#: src/alarm/interface.c:1174 -msgid "Final" -msgstr "Sonlandır" - -#: src/alarm/interface.c:1227 -msgid "Additional Command" -msgstr "Ek Komutlar" - -#: src/alarm/interface.c:1253 -msgid "enable" -msgstr "etkinleÅŸtir" - -#: src/alarm/interface.c:1261 -msgid "Playlist (optional)" -msgstr "Parça listesi (seçmeli)" - -#: src/alarm/interface.c:1287 -msgid "Browse..." -msgstr "Gözat..." - -#: src/alarm/interface.c:1295 src/alarm/interface.c:1460 -msgid "Reminder" -msgstr "Hatırlatıcı" - -#: src/alarm/interface.c:1312 -msgid "Use reminder" -msgstr "Hatırlatıcıyı kullan" - -#: src/alarm/interface.c:1328 src/sndstretch/sndstretch_xmms.c:394 -msgid "Options" -msgstr "Seçenekler" - -#: src/alarm/interface.c:1336 -msgid "What do these options mean?" -msgstr "Bu seçenekler ne anlama geliyor?" - -#: src/alarm/interface.c:1364 -msgid "" -"\n" -"Time\n" -" Alarm at: \n" -" The time for the alarm to come on.\n" -"\n" -" Quiet After: \n" -" Stop alarm after this amount of time.\n" -" (if the wakeup dialog is not closed)\n" -"\n" -"\n" -"Days\n" -" Day:\n" -" Select the days for the alarm to activate.\n" -"\n" -" Time:\n" -" Choose the time for the alarm on each day,\n" -" or select the toggle button to use the default\n" -" time.\n" -"\n" -"\n" -"Volume\n" -" Fading: \n" -" Fade the volume up to the chosen volume \n" -" for this amount of time.\n" -"\n" -" Start at: \n" -" Start fading from this volume.\n" -"\n" -" Final: \n" -" The volume to stop fading at. If the fading\n" -" time is 0 then set volume to this and start\n" -" playing.\n" -"\n" -"\n" -"Options:\n" -" Additional Command:\n" -" Run this command at the alarm time.\n" -"\n" -" Playlist: \n" -" Load this playlist for playing songs from \n" -" (must have .m3u extension). If no playlist\n" -" is given then the songs which are currently\n" -" in the list will be used.\n" -" The URL of an mp3/ogg stream can also be\n" -" entered here, but loading of playlists from\n" -" URLs is not currently supported by xmms.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off,\n" -" type the reminder in the box and turn on the\n" -" toggle button if you want it to be shown.\n" -msgstr "" -"\n" -"Zaman\n" -" Alarmı çal: \n" -" Alarmın çalma zamanı.\n" -"\n" -" Sonra çık: \n" -" Belirtilen süreden sonra alarmı kapat.\n" -" (eÄŸer uyandırma penceresi kapatılmamışsa)\n" -"\n" -"\n" -"Günler\n" -" Gün:\n" -" Alarmın etkin olacağı günleri seçin.\n" -"\n" -" Zaman:\n" -" Her bir gün için alarm zamanını seçin,\n" -" veya önanımlı zamanı kullanmak için\n" -" deÄŸiÅŸtirme düğmesini seçin.\n" -"\n" -"\n" -"Ses\n" -" YavaÅŸ geçiÅŸ: \n" -" Belirtilen sürede sesi istenen ses seviyesine\n" -" çıkarır.\n" -"\n" -" BaÅŸlat: \n" -" Bu ses seviyesinden sesi yükseltmeye baÅŸlar.\n" -"\n" -" Sonlandır: \n" -" Yükseltmenin durdurulacaÄŸu ses düzeyi. EÄŸer\n" -" yavaÅŸ geçiÅŸ süresi 0 ise, sesi bu düzeye ayarlar\n" -" ve çalmaya baÅŸlar.\n" -"\n" -"\n" -"Seçenekler:\n" -" El Lomutlar:\n" -" Alarm zamanında bu komutu çalıştırır.\n" -"\n" -" Parça listesi: \n" -" Load this playlist for playing songs from \n" -" (must have .m3u extension). If no playlist\n" -" is given then the songs which are currently\n" -" in the list will be used.\n" -" The URL of an mp3/ogg stream can also be\n" -" entered here, but loading of playlists from\n" -" URLs is not currently supported by xmms.\n" -"\n" -" Reminder:\n" -" Display a reminder when the alarm goes off,\n" -" type the reminder in the box and turn on the\n" -" toggle button if you want it to be shown.\n" - -#: src/alarm/interface.c:1366 src/gtkui/ui_manager.c:165 -#: src/skins/ui_manager.c:371 -msgid "Help" -msgstr "Yardım" - -#: src/alarm/interface.c:1468 -msgid "Your reminder for today is.." -msgstr "Bugün için hatırlatıcınız.." - -#: src/alarm/interface.c:1493 -msgid "Thankyou" -msgstr "TeÅŸekkürler" - -#: src/alsa/config.c:209 +#: src/alsa/config.c:210 #, fuzzy msgid "Default PCM device" msgstr "Varsayılan PCM aygıtı (%s)" -#: src/alsa/config.c:234 +#: src/alsa/config.c:235 #, fuzzy msgid "Default mixer device" msgstr "Varsayılan PCM aygıtı (%s)" -#: src/alsa/config.c:438 +#: src/alsa/config.c:447 #, fuzzy msgid "ALSA Output Plugin Preferences" msgstr "Durum Simgesi Eklentisi - Tercihler" -#: src/alsa/config.c:445 +#: src/alsa/config.c:454 #, fuzzy msgid "PCM device:" msgstr "Karıştırıcı aygıt:" -#: src/alsa/config.c:447 src/OSS/configure.c:256 src/sun/configure.c:218 +#: src/alsa/config.c:456 src/OSS/configure.c:246 msgid "Mixer device:" msgstr "Karıştırıcı aygıt:" -#: src/alsa/config.c:449 +#: src/alsa/config.c:458 #, fuzzy msgid "Mixer element:" msgstr "Karıştırıcı aygıt:" -#: src/alsa/config.c:452 +#: src/alsa/config.c:461 msgid "Work around drain hangup" msgstr "" -#: src/alsa/plugin.c:61 +#: src/alsa/plugin.c:59 #, fuzzy msgid "About ALSA Output Plugin" msgstr "JACK Çıkış Eklentisi 0.17 Hakkında" -#: src/alsa/plugin.c:83 +#: src/alsa/plugin.c:81 #, fuzzy msgid "ALSA error" msgstr "Terör" -#: src/amidi-plug/amidi-plug.c:323 +#: src/amidi-plug/amidi-plug.c:335 msgid "" "You have not selected any sequencer ports for MIDI playback. You can do so " "in the MIDI plugin preferences." @@ -671,11 +113,11 @@ "bulunan bir MIDI sesini donanımsal olarak elde etmekiçin kullanılır.\n" "Arkayüzü yazan, Giacomo Lozito" -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:41 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 msgid "FluidSynth Backend " msgstr "FluidSynth Arkayüzü " -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:43 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 msgid "" "This backend produces audio by sending MIDI events to FluidSynth, a real-" "time software synthesizer based on the SoundFont2 specification (www." @@ -690,85 +132,43 @@ "eklentisi tarafından iÅŸlem yapılır.\n" "Arkayüzü yazan, Giacomo Lozito." -#: src/amidi-plug/i_configure-alsa.c:221 +#: src/amidi-plug/i_configure-alsa.c:228 msgid "ALSA BACKEND CONFIGURATION" msgstr "ALSA BACKEND AYARLARI" -#: src/amidi-plug/i_configure-alsa.c:326 +#: src/amidi-plug/i_configure-alsa.c:331 msgid "Port" msgstr "Port" -#: src/amidi-plug/i_configure-alsa.c:328 +#: src/amidi-plug/i_configure-alsa.c:333 msgid "Client name" msgstr "Ä°stemci adı" -#: src/amidi-plug/i_configure-alsa.c:330 +#: src/amidi-plug/i_configure-alsa.c:335 msgid "Port name" msgstr "Port adı" -#: src/amidi-plug/i_configure-alsa.c:341 +#: src/amidi-plug/i_configure-alsa.c:346 msgid "ALSA output ports" msgstr "ALSA çıkış portları" -#: src/amidi-plug/i_configure-alsa.c:394 +#: src/amidi-plug/i_configure-alsa.c:399 msgid "Soundcard: " msgstr "Ses kartı: " -#: src/amidi-plug/i_configure-alsa.c:396 +#: src/amidi-plug/i_configure-alsa.c:401 msgid "Mixer control: " msgstr "Karıştırıcı kontrolü: " -#: src/amidi-plug/i_configure-alsa.c:408 +#: src/amidi-plug/i_configure-alsa.c:413 msgid "Mixer settings" msgstr "Karıştırıcı ayarları" -#: src/amidi-plug/i_configure-alsa.c:421 -msgid "" -"* Select ALSA output ports *\n" -"MIDI events will be sent to the ports selected here. In example, if your " -"audio card provides a hardware synth and you want to play MIDI with it, " -"you'll probably want to select the wavetable synthesizer ports." -msgstr "" -"* ALSA çıkış portlarını seçin *\n" -"Midi olayları burada seçtiÄŸiniz portlara gönderilecekler. ÖrneÄŸin, eÄŸer ses " -"kartınız donanımsal bir ses iÅŸleme sunuyorsa ve siz bununla midi çalmak " -"istiyorsanız, wavetable sentezleyici portlarını seçmeniz gerekecektir." - -#: src/amidi-plug/i_configure-alsa.c:426 -msgid "" -"* Select ALSA mixer card *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volumeslider will " -"manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" -"* ALSA karıştırıcı kartı seç *\n" -"ALSA çıkış eklentileri direkt ALSA kullanarak çalışır, oynatıcılardan gelen " -"çıkış eklentilerini kullanmaz. Yürütme yaparken, oynatıcı ses seviyesini " -"iÅŸleyen karıştırıcı kontrolünü buradan seçebilirsiniz. EÄŸer wavetable " -"sentezleme portlarını kullanıyorsanız, buradan Sentez seçimini " -"yapabilirsiniz." - -#: src/amidi-plug/i_configure-alsa.c:433 -msgid "" -"* Select ALSA mixer control *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volume slider " -"will manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" -"* ALSA karıştırıcı kartı seç *\n" -"ALSA çıkış eklentileri direkt ALSA kullanarak çalışır, oynatıcılardan gelen " -"çıkış eklentilerini kullanmaz. Yürütme yaparken, oynatıcı ses seviyesini " -"iÅŸleyen karıştırıcı kontrolünü buradan seçebilirsiniz. EÄŸer wavetable " -"sentezleme portlarını kullanıyorsanız, buradan Sentez seçimini " -"yapabilirsiniz." - -#: src/amidi-plug/i_configure-alsa.c:444 +#: src/amidi-plug/i_configure-alsa.c:429 msgid "ALSA Backend not loaded or not available" msgstr "ALSA Arkayüzü yüklü deÄŸil veya eriÅŸilemiyor." -#: src/amidi-plug/i_configure-alsa.c:463 +#: src/amidi-plug/i_configure-alsa.c:448 msgid "" "ALSA\n" "backend" @@ -776,145 +176,51 @@ "ALSA\n" "arkayüzü" -#: src/amidi-plug/i_configure-ap.c:56 +#: src/amidi-plug/i_configure-ap.c:59 msgid "AMIDI-Plug - backend information" msgstr "AMIDI-Plug - arkayüz bilgisi" -#: src/amidi-plug/i_configure-ap.c:194 +#: src/amidi-plug/i_configure-ap.c:196 msgid "AMIDI-PLUG PREFERENCES" msgstr "AMIDI-PLUG AYARLARI" -#: src/amidi-plug/i_configure-ap.c:221 +#: src/amidi-plug/i_configure-ap.c:223 msgid "Backend selection" msgstr "Arkayüz seçimi" -#: src/amidi-plug/i_configure-ap.c:225 +#: src/amidi-plug/i_configure-ap.c:227 msgid "Available backends" msgstr "Kullanılabilir arkayüzler" -#: src/amidi-plug/i_configure-ap.c:255 +#: src/amidi-plug/i_configure-ap.c:257 msgid "Playback settings" msgstr "Oynatma ayarları" -#: src/amidi-plug/i_configure-ap.c:260 +#: src/amidi-plug/i_configure-ap.c:262 msgid "Transpose: " msgstr "Transpose: " -#: src/amidi-plug/i_configure-ap.c:269 +#: src/amidi-plug/i_configure-ap.c:271 msgid "Drum shift: " msgstr "Davul tonlaması:" -#: src/amidi-plug/i_configure-ap.c:287 +#: src/amidi-plug/i_configure-ap.c:289 msgid "Advanced settings" msgstr "GeliÅŸmiÅŸ ayarlar" -#: src/amidi-plug/i_configure-ap.c:291 +#: src/amidi-plug/i_configure-ap.c:293 msgid "pre-calculate length of MIDI files in playlist" msgstr "parça listesindeki MIDI dosyalarının uzunluklarının ön hesaplaması" -#: src/amidi-plug/i_configure-ap.c:296 +#: src/amidi-plug/i_configure-ap.c:298 msgid "extract comments from MIDI file (if available)" msgstr "MIDI dosyalarından yorumları aktar (eÄŸer varsa)" -#: src/amidi-plug/i_configure-ap.c:301 +#: src/amidi-plug/i_configure-ap.c:303 msgid "extract lyrics from MIDI file (if available)" msgstr "MIDI dosyalarından ÅŸarkı sözlerini aktar (eÄŸer varsa)" -#: src/amidi-plug/i_configure-ap.c:320 -msgid "" -"* Backend selection *\n" -"AMIDI-Plug works with backends, in a modular fashion; here you should select " -"your backend; that is, the way MIDI events are going to be handled and " -"played.\n" -"If you have a hardware synthesizer on your audio card, and ALSA supports it, " -"you'll want to use the ALSA backend. It can also be used with anything that " -"provides an interface to the ALSA sequencer, including software synths or " -"external devices.\n" -"If you want to rely on a software synthesizer and/or want to pipe audio into " -"effect and output plugins of the player you'll want to use the good " -"FluidSynth backend.\n" -"Press the info button to read specific information about each backend." -msgstr "" -"* Backend Seçimi *\n" -"AMIDI-Plug 'ın çalışması için bir ses sunucusuna ihtiyacınız vardır ve ses " -"sunucunuzu seçtikten sonra MIDI olaylarını ele alabilir ve çalabilirsiniz.\n" -"EÄŸer ses kartınızda donanımsal ses iÅŸleme özelliÄŸi var ise ve ALSA bunu " -"destekliyorsa ALSA ses sunucusunu kullanmak isteyebilirsiniz. ALSA ses " -"sunucusu desteklediÄŸi tüm donanımsal ve yazılımsal araçları, onun " -"arayüzünden kullanabilirsiniz.\n" -"EÄŸer yazılımsal ses iÅŸleme kullanmak ve/veya efektinize ses enjekte etmek ve " -"oynatıcınızın çıkış eklentisini eklemek isterseniz, FluidSynth sunucusunu " -"kullanabilirsiniz. \n" -"Daha detaylı bilgi için her bir sunucunun dökümanlarına göz atın." - -#: src/amidi-plug/i_configure-ap.c:331 -#, fuzzy -msgid "" -"* Transpose function *\n" -"This option allows you to play the midi file transposed in a different key, " -"by shifting of the desired number of semitones all its notes (excepting " -"those on midi channel 10, reserved for percussions). Especially useful if " -"you wish to sing or play along with another instrument." -msgstr "" -"* Transpose fonksiyonu *\n" -"Bu özellik midi dosyasının baÅŸka bir tonda çalınmasını saÄŸlar.Bu ayarda her " -"bir numara bir yarım tonu temsil eder. Tüm notalar belirlenen tona aktarılır." -"(10. kanal vurmalı çalgılara ayrılmıştır.)" - -#: src/amidi-plug/i_configure-ap.c:337 -msgid "" -"* Drumshift function *\n" -"This option allows you to shift notes on midi channel 10 (the standard " -"percussions channel) of the desired number of semitones. This results in " -"different drumset and percussions being used during midi playback, so if you " -"wish to enhance (or reduce, or alter) percussion sounds, try to play with " -"this value." -msgstr "" -"* Davul tonlama fonksiyonu *\n" -"Bu özellik 10. kanal üzerindeki notaları (vurmalı çalgılar kanalı) yarımÅŸar " -"ses olarak ayarlamanızı saÄŸlar. Bu özelliÄŸi kullanarak farklı davul " -"setleriyle farklı sesler elde edip çaldırabilirsiniz." - -#: src/amidi-plug/i_configure-ap.c:344 -msgid "" -"* Pre-calculate MIDI length *\n" -"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as " -"soon as the player requests it, instead of doing that only when the MIDI " -"file is being played. In example, MIDI length will be calculated straight " -"after adding MIDI files in a playlist. Disable this option if you want " -"faster playlist loading (when a lot of MIDI files are added), enable it to " -"display more information in the playlist straight after loading." -msgstr "" -"* MIDI uzunluÄŸunun ön hesaplaması *\n" -"EÄŸer bu seçeneÄŸi iÅŸaretlerseniz, AMIDI-Plug parça listesinde olan MIDI lerin " -"uzunluklarını hesaplayacakdır aksi takdirde sadece çalma/oynatma esnasında " -"hesaplama yapılır. EÄŸer çalma listesinin daha hızlı yüklenmesini " -"istiyorsanızbu özelliÄŸi devre dışı bırakın." - -#: src/amidi-plug/i_configure-ap.c:353 -msgid "" -"* Extract comments from MIDI files *\n" -"Some MIDI files contain text comments (author, copyright, instrument notes, " -"etc.). If this option is enabled, AMIDI-Plug will extract and display " -"comments (if available) in the file information dialog." -msgstr "" -"*MIDI dosyalarından yorumları çıkar*\n" -"Bazı MIDI dosyaları metin biçeminde yorumlar içerir (yazar, telif hakkı, " -"çalgı notları, vs.). Bu seçenek açılırsa, AMIDI-Plug (varsa) yorumları " -"çıkarır ve dosya bilgisi ekranında gösterir." - -#: src/amidi-plug/i_configure-ap.c:358 -msgid "" -"* Extract lyrics from MIDI files *\n" -"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug " -"will extract and display song lyrics (if available) in the file information " -"dialog." -msgstr "" -"*MIDI dosyalarından ÅŸarkı sözlerini çıkar*\n" -"Bazı MIDI dosyaları ÅŸarkı sözleri içerir. Bu seçenek açılırsa, AMIDI-Plug " -"(varsa) ÅŸarkı sözlerini çıkarır ve dosya bilgisi ekranında gösterir." - -#: src/amidi-plug/i_configure-ap.c:375 +#: src/amidi-plug/i_configure-ap.c:333 msgid "" "AMIDI\n" "Plug" @@ -922,233 +228,113 @@ "AMIDI\n" "Eklentisi" -#: src/amidi-plug/i_configure.c:73 +#: src/amidi-plug/i_configure.c:76 msgid "AMIDI-Plug - select file" msgstr "AMIDI-Plug - dosya seç" -#: src/amidi-plug/i_configure.c:126 +#: src/amidi-plug/i_configure.c:129 msgid "AMIDI-Plug - configuration" msgstr "AMIDI-Plug - Yapılandırması" -#: src/amidi-plug/i_configure-fluidsynth.c:52 +#: src/amidi-plug/i_configure-fluidsynth.c:55 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - SoundFont dosyası seç" -#: src/amidi-plug/i_configure-fluidsynth.c:268 +#: src/amidi-plug/i_configure-fluidsynth.c:270 msgid "FLUIDSYNTH BACKEND CONFIGURATION" msgstr "FLUIDSYNTH ARKAYÃœZ AYARLARI" -#: src/amidi-plug/i_configure-fluidsynth.c:316 +#: src/amidi-plug/i_configure-fluidsynth.c:313 msgid "SoundFont settings" msgstr "SoundFont ayarları" -#: src/amidi-plug/i_configure-fluidsynth.c:352 +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Dosya adı" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 msgid "Size (bytes)" msgstr "Boyut (bayt)" -#: src/amidi-plug/i_configure-fluidsynth.c:401 +#: src/amidi-plug/i_configure-fluidsynth.c:398 msgid "Load SF on player start" msgstr "Çalıcı baÅŸladığında SF'yi yükle" -#: src/amidi-plug/i_configure-fluidsynth.c:405 +#: src/amidi-plug/i_configure-fluidsynth.c:402 msgid "Load SF on first midifile play" msgstr "Ä°lk midi dosyasını çaldığında SF'yu yükle" -#: src/amidi-plug/i_configure-fluidsynth.c:420 +#: src/amidi-plug/i_configure-fluidsynth.c:417 msgid "Synthesizer settings" msgstr "Sentezleyici ayarları" -#: src/amidi-plug/i_configure-fluidsynth.c:429 +#: src/amidi-plug/i_configure-fluidsynth.c:426 msgid "gain" msgstr "kazanç" -#: src/amidi-plug/i_configure-fluidsynth.c:435 -#: src/amidi-plug/i_configure-fluidsynth.c:463 -#: src/amidi-plug/i_configure-fluidsynth.c:491 -#: src/amidi-plug/i_configure-fluidsynth.c:522 +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 msgid "use default" msgstr "öntanımlıyı kullan" -#: src/amidi-plug/i_configure-fluidsynth.c:438 -#: src/amidi-plug/i_configure-fluidsynth.c:466 +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 msgid "value:" msgstr "deÄŸer:" -#: src/amidi-plug/i_configure-fluidsynth.c:457 +#: src/amidi-plug/i_configure-fluidsynth.c:454 msgid "poliphony" msgstr "çokseslilik" -#: src/amidi-plug/i_configure-fluidsynth.c:485 +#: src/amidi-plug/i_configure-fluidsynth.c:482 msgid "reverb" msgstr "derinlik" -#: src/amidi-plug/i_configure-fluidsynth.c:494 -#: src/amidi-plug/i_configure-fluidsynth.c:525 +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 msgid "yes" msgstr "evet" -#: src/amidi-plug/i_configure-fluidsynth.c:496 -#: src/amidi-plug/i_configure-fluidsynth.c:527 +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 msgid "no" msgstr "hayır" -#: src/amidi-plug/i_configure-fluidsynth.c:516 +#: src/amidi-plug/i_configure-fluidsynth.c:513 msgid "chorus" msgstr "koro" -#: src/amidi-plug/i_configure-fluidsynth.c:547 +#: src/amidi-plug/i_configure-fluidsynth.c:544 msgid "sample rate" msgstr "örnekleme oranı" -#: src/amidi-plug/i_configure-fluidsynth.c:553 +#: src/amidi-plug/i_configure-fluidsynth.c:550 msgid "22050 Hz " msgstr "22050 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:556 +#: src/amidi-plug/i_configure-fluidsynth.c:553 msgid "44100 Hz " msgstr "44100 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:559 +#: src/amidi-plug/i_configure-fluidsynth.c:556 msgid "96000 Hz " msgstr "96000 Hz " -#: src/amidi-plug/i_configure-fluidsynth.c:562 +#: src/amidi-plug/i_configure-fluidsynth.c:559 msgid "custom " msgstr "custom " -#: src/amidi-plug/i_configure-fluidsynth.c:571 +#: src/amidi-plug/i_configure-fluidsynth.c:568 msgid "Hz " msgstr "Hz " #: src/amidi-plug/i_configure-fluidsynth.c:621 -msgid "" -"* Select SoundFont files *\n" -"In order to play MIDI with FluidSynth, you need to specify at least one " -"valid SoundFont file here (use absolute paths). The loading order is from " -"the top (first) to the bottom (last)." -msgstr "" -"* SoundFont dosyası seç *\n" -"FluidSynth ile MIDI çalmak için geçerli SoundFont dosyasını seçmelisiniz." -"(tam yolu kullanın). Yükleme seçeneklerini yukarıdan, aÅŸağıya doÄŸru " -"görebilirsiniz." - -#: src/amidi-plug/i_configure-fluidsynth.c:626 -msgid "" -"* Load SoundFont on player start *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" -"* Oynatıcı baÅŸlangıcında SoundFont yükle *\n" -"FluidSynth içerisinde SoundFont yükleme süresi sisteminizin hızına göre " -"birkaç saniye sürecektir. Bu iÅŸlem bir kereliÄŸine oynatıcı açılışında ya da " -"ilk MIDI dosyası oynatılmadan önce yapılabilir. SoundFont bilgisi " -"deÄŸiÅŸtirilene ya da uygulama hafızadan çıkarılana kadar kullanılabilir " -"kalacaktır. Oynatıcınızı sadece MIDI dosyaları için kullanmıyorsanız " -"SoundFont yüklemesini MIDI oynatılmadan önce yapılmasını tavsiye ederiz." - -#: src/amidi-plug/i_configure-fluidsynth.c:634 -msgid "" -"* Load SoundFont on first midifile play *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" -"*Ä°lk MIDI dosyasını çaldığında SF'u yükle *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." - -#: src/amidi-plug/i_configure-fluidsynth.c:642 -msgid "" -"* Synthesizer gain *\n" -"From FluidSynth docs: the gain is applied to the final or master output of " -"the synthesizer; it is set to a low value by default to avoid the saturation " -"of the output when random MIDI files are played." -msgstr "" -"* Sentezleyici kazancı *\n" -"FluidSynth belgelerinden: kazanç sentezleyicinin final ya da ana çıkışına " -"uygulanır; rastgele MIDI dosyaları oynatıldığında çıktı doygunluÄŸu " -"oluÅŸmaması için öntanımlı olarak düşük bir deÄŸere ayarlanır." - -#: src/amidi-plug/i_configure-fluidsynth.c:647 -msgid "" -"* Synthesizer polyphony *\n" -"From FluidSynth docs: the polyphony defines how many voices can be played in " -"parallel; the number of voices is not necessarily equivalent to the number " -"of notes played simultaneously; indeed, when a note is struck on a specific " -"MIDI channel, the preset on that channel may create several voices, for " -"example, one for the left audio channel and one for the right audio " -"channels; the number of voices activated depends on the number of instrument " -"zones that fall in the correspond to the velocity and key of the played note." -msgstr "" -"* Sentezleyici polifoni *\n" -"FluidSynth belgelerinden: polifoni aynı anda paralel olarak kaç sesin " -"oynatılabileceÄŸini belirler; seslerin adedinin aynı anda çalınan nota " -"adedine eÅŸit olması gerekmemektedir; belirli bir MIDI kanalında bir nota " -"basıldığında kanal ayarlarına göre birden fazla ses çalınabilir, örneÄŸin sol " -"kanal için bir ses ve saÄŸ kanal için baÅŸka bir ses; kullanılan ses adedi " -"çalınan notanın hızı ve anahtarına baÄŸlı olarak enstrüman bölgelerinin " -"sayısına baÄŸlıdır." - -#: src/amidi-plug/i_configure-fluidsynth.c:657 -#: src/amidi-plug/i_configure-fluidsynth.c:663 -msgid "" -"* Synthesizer reverb *\n" -"From FluidSynth docs: when set to \"yes\" the reverb effects module is " -"activated; note that when the reverb module is active, the amount of signal " -"sent to the reverb module depends on the \"reverb send\" generator defined " -"in the SoundFont." -msgstr "" -"* Sentezleyici reverb *\n" -"FluidSynth belgelerinden: \"evet\" olarak ayarlandığında reverb efekt modülü " -"çalışır; reverb modülü çalışırken reverb modülüne yollanan sinyal miktarı " -"Soundfont içerisinde tanımlanan \"reverb send\" üreticisi tarafından " -"belirlenir." - -#: src/amidi-plug/i_configure-fluidsynth.c:669 -#: src/amidi-plug/i_configure-fluidsynth.c:675 -msgid "" -"* Synthesizer chorus *\n" -"From FluidSynth docs: when set to \"yes\" the chorus effects module is " -"activated; note that when the chorus module is active, the amount of signal " -"sent to the chorus module depends on the \"chorus send\" generator defined " -"in the SoundFont." -msgstr "" -"* Senteleyici koro *\n" -"FluidSynth belgelerinden: \"evet\" olarak ayarlandığında koro modülü " -"çalışır; koro modülü çalışırken koro modülüne yollanan sinyal miktarı " -"Soundfont içerisinde tanımlanan \"chorus send\" üreticisi tarafından " -"belirlenir." - -#: src/amidi-plug/i_configure-fluidsynth.c:681 -#: src/amidi-plug/i_configure-fluidsynth.c:685 -#: src/amidi-plug/i_configure-fluidsynth.c:689 -#: src/amidi-plug/i_configure-fluidsynth.c:693 -#, fuzzy -msgid "" -"* Synthesizer samplerate *\n" -"The sample rate of the audio generated by the synthesizer. You can also " -"specify a custom value in the interval 22050Hz-96000Hz." -msgstr "" -"* Sentezleyici örnekleme oranı *\n" -"Sentezleyici tarafından üretilen sesin örnekleme oranı. Ayrıca isterseniz " -"22050Hz-96000Hz aralığından özel bir deÄŸer de atayabilirsiniz.\n" -"NOT: öntanımlı tampon parametreleri 44100Hz için hazırlanmıştır; ses " -"kalitesinikaybetmemek için örnekleme oranı deÄŸiÅŸince tampon parametrelerini " -"deÄŸiÅŸtirmeniz gerekebilir" - -#: src/amidi-plug/i_configure-fluidsynth.c:701 msgid "FluidSynth Backend not loaded or not available" msgstr "FluidSynth Arkayüzü yüklü deÄŸil veya eriÅŸilemiyor" -#: src/amidi-plug/i_configure-fluidsynth.c:720 +#: src/amidi-plug/i_configure-fluidsynth.c:640 msgid "" "FluidSynth\n" "backend" @@ -1172,8 +358,7 @@ "TiMidity\n" "arkayüzü" -#: src/amidi-plug/i_fileinfo.c:169 src/bluetooth/gui.c:271 -#: src/sid/xs_interface.c:1769 +#: src/amidi-plug/i_fileinfo.c:169 src/sid/xs_interface.c:1769 msgid "Name:" msgstr "Ä°sim:" @@ -1345,119 +530,119 @@ msgid "Triggers OSD when playback is unpaused." msgstr "Çalmaya yeniden baÅŸladığında OSD'yi baÅŸlatır." -#: src/aosd/aosd_ui.c:168 +#: src/aosd/aosd_ui.c:180 msgid "Placement" msgstr "YerleÅŸtirme" -#: src/aosd/aosd_ui.c:202 +#: src/aosd/aosd_ui.c:219 msgid "Relative X offset:" msgstr "DeÄŸiÅŸken X deÄŸeri:" -#: src/aosd/aosd_ui.c:211 +#: src/aosd/aosd_ui.c:228 msgid "Relative Y offset:" msgstr "DeÄŸiÅŸken Y deÄŸeri:" -#: src/aosd/aosd_ui.c:220 +#: src/aosd/aosd_ui.c:237 msgid "Max OSD width:" msgstr "Maksimum OSD geniÅŸliÄŸi:" -#: src/aosd/aosd_ui.c:233 +#: src/aosd/aosd_ui.c:250 msgid "Multi-Monitor options" msgstr "Çoklu Ekran seçenekleri" -#: src/aosd/aosd_ui.c:237 +#: src/aosd/aosd_ui.c:254 msgid "Display OSD using:" msgstr "OSD kullanımını göster:" -#: src/aosd/aosd_ui.c:239 +#: src/aosd/aosd_ui.c:265 msgid "all monitors" msgstr "tüm ekranlar" -#: src/aosd/aosd_ui.c:242 +#: src/aosd/aosd_ui.c:268 #, c-format msgid "monitor %i" msgstr "ekran %i" -#: src/aosd/aosd_ui.c:295 +#: src/aosd/aosd_ui.c:323 msgid "Timing (ms)" msgstr "Zamanlama (ms)" -#: src/aosd/aosd_ui.c:300 +#: src/aosd/aosd_ui.c:328 msgid "Display:" msgstr "Görüntü:" -#: src/aosd/aosd_ui.c:305 +#: src/aosd/aosd_ui.c:333 msgid "Fade in:" msgstr "Gecikme:" -#: src/aosd/aosd_ui.c:310 +#: src/aosd/aosd_ui.c:338 msgid "Fade out:" msgstr "Kaybolma:" -#: src/aosd/aosd_ui.c:391 +#: src/aosd/aosd_ui.c:419 msgid "Fonts" msgstr "Yazı Tipleri" -#: src/aosd/aosd_ui.c:399 +#: src/aosd/aosd_ui.c:427 #, c-format msgid "Font %i:" msgstr "Yazı tipi %i:" -#: src/aosd/aosd_ui.c:416 +#: src/aosd/aosd_ui.c:444 msgid "Shadow" msgstr "Gölge" -#: src/aosd/aosd_ui.c:451 +#: src/aosd/aosd_ui.c:479 msgid "Internationalization" msgstr "UluslararasılaÅŸtırma" -#: src/aosd/aosd_ui.c:457 +#: src/aosd/aosd_ui.c:485 msgid "Disable UTF-8 conversion of text (in aosd)" msgstr "Metnin UTF-8 dönüşümünü iptal et (aosd)" -#: src/aosd/aosd_ui.c:475 +#: src/aosd/aosd_ui.c:503 msgid "Select Skin File" msgstr "Deri Dosyasını Seçin" -#: src/aosd/aosd_ui.c:586 +#: src/aosd/aosd_ui.c:614 msgid "Render Style" msgstr "Tarama Biçemi" -#: src/aosd/aosd_ui.c:602 +#: src/aosd/aosd_ui.c:630 msgid "Colors" msgstr "Renkler" -#: src/aosd/aosd_ui.c:615 +#: src/aosd/aosd_ui.c:643 #, c-format msgid "Color %i:" msgstr "Renkler %i:" -#: src/aosd/aosd_ui.c:635 +#: src/aosd/aosd_ui.c:663 msgid "Custom Skin" msgstr "Özel Deri" -#: src/aosd/aosd_ui.c:641 +#: src/aosd/aosd_ui.c:669 msgid "Skin file:" msgstr "Deri dosyası:" -#: src/aosd/aosd_ui.c:644 src/sid/xs_interface.c:1044 +#: src/aosd/aosd_ui.c:672 src/sid/xs_interface.c:1044 #: src/sid/xs_interface.c:1236 src/sid/xs_interface.c:1292 msgid "Browse" msgstr "Gözat" -#: src/aosd/aosd_ui.c:746 +#: src/aosd/aosd_ui.c:774 msgid "Enable trigger" msgstr "Tetikleyiciyi etkinleÅŸtir" -#: src/aosd/aosd_ui.c:773 +#: src/aosd/aosd_ui.c:801 msgid "Event" msgstr "Olay" -#: src/aosd/aosd_ui.c:801 +#: src/aosd/aosd_ui.c:829 msgid "Composite manager detected" msgstr "Composite yöneticisi tespit edildi" -#: src/aosd/aosd_ui.c:808 +#: src/aosd/aosd_ui.c:836 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -1467,73 +652,73 @@ "Çalışan bir Composite yöneticisinin olduÄŸundan emin deÄŸilseniz lütfen " "OSD'nin düzgün çalışması için bir Composite yöneticisi çalıştırınız" -#: src/aosd/aosd_ui.c:816 +#: src/aosd/aosd_ui.c:844 msgid "Composite manager not required for fake transparency" msgstr "Sahte ÅŸeffaflık için composite yöneticisi gerekli deÄŸil" -#: src/aosd/aosd_ui.c:854 +#: src/aosd/aosd_ui.c:882 msgid "Transparency" msgstr "Åžeffaflık" -#: src/aosd/aosd_ui.c:860 +#: src/aosd/aosd_ui.c:888 msgid "Fake transparency" msgstr "Sahte ÅŸeffaflık" -#: src/aosd/aosd_ui.c:862 +#: src/aosd/aosd_ui.c:890 msgid "Real transparency (requires X Composite Ext.)" msgstr "Gerçek Åžeffaflık (X Composite Eklentisi gerekli)" -#: src/aosd/aosd_ui.c:904 +#: src/aosd/aosd_ui.c:932 msgid "Composite extension not loaded" msgstr "Composite eklentisi yüklü deÄŸil" -#: src/aosd/aosd_ui.c:912 +#: src/aosd/aosd_ui.c:940 msgid "Composite extension not available" msgstr "Composite eklentisi eriÅŸilebilir deÄŸil" -#: src/aosd/aosd_ui.c:931 +#: src/aosd/aosd_ui.c:959 #, c-format msgid "Audacious OSD" msgstr "Audacious OSD" -#: src/aosd/aosd_ui.c:1012 +#: src/aosd/aosd_ui.c:1040 msgid "Audacious OSD - configuration" msgstr "Audacious OSD - yapılandırması" -#: src/aosd/aosd_ui.c:1033 +#: src/aosd/aosd_ui.c:1061 msgid "Test" msgstr "Test" -#: src/aosd/aosd_ui.c:1048 +#: src/aosd/aosd_ui.c:1076 msgid "Position" msgstr "Konum" -#: src/aosd/aosd_ui.c:1053 +#: src/aosd/aosd_ui.c:1081 msgid "Animation" msgstr "Canlandırma" -#: src/aosd/aosd_ui.c:1058 +#: src/aosd/aosd_ui.c:1086 msgid "Text" msgstr "Metin" -#: src/aosd/aosd_ui.c:1063 +#: src/aosd/aosd_ui.c:1091 msgid "Decoration" msgstr "Dekorasyon" -#: src/aosd/aosd_ui.c:1068 +#: src/aosd/aosd_ui.c:1096 msgid "Trigger" msgstr "BaÅŸlat" -#: src/aosd/aosd_ui.c:1073 src/cdaudio-ng/configure.c:178 -#: src/modplug/gui/interface.cxx:689 src/sid/xs_interface.c:1302 +#: src/aosd/aosd_ui.c:1101 src/cdaudio-ng/configure.c:171 +#: src/sid/xs_interface.c:1302 msgid "Misc" msgstr "ÇeÅŸitli" -#: src/aosd/aosd_ui.c:1110 +#: src/aosd/aosd_ui.c:1138 msgid "Audacious OSD - about" msgstr "Audacius OSD - hakkında" -#: src/aosd/aosd_ui.c:1140 +#: src/aosd/aosd_ui.c:1168 msgid "" "\n" "Audacious OSD " @@ -1541,7 +726,7 @@ "\n" "Audacious OSD " -#: src/aosd/aosd_ui.c:1141 +#: src/aosd/aosd_ui.c:1169 msgid "" "\n" "http://www.develia.org/projects.php?p=audacious#aosd\n" @@ -1564,133 +749,6 @@ "Ghosd kütüphanesini hazırlayan Evan Martin\n" "\n" -#: src/bluetooth/agent.c:356 src/bluetooth/agent.c:397 -#, c-format -msgid "Pairing request for '%s'" -msgstr "" - -#: src/bluetooth/agent.c:544 -#, c-format -msgid "Authorization request for %s" -msgstr "" - -#: src/bluetooth/agent.c:728 -#, c-format -msgid "Created bonding with %s" -msgstr "" - -#: src/bluetooth/agent.c:756 -#, c-format -msgid "Removed bonding with %s" -msgstr "" - -#: src/bluetooth/agent.c:808 -msgid "Device has been switched off" -msgstr "" - -#: src/bluetooth/agent.c:811 -msgid "Device has been made non-discoverable" -msgstr "" - -#: src/bluetooth/agent.c:813 -msgid "Device has been made connectable" -msgstr "" - -#: src/bluetooth/agent.c:815 -msgid "Device has been made discoverable" -msgstr "" - -#: src/bluetooth/agent.c:817 -msgid "Device has been made limited discoverable" -msgstr "" - -#: src/bluetooth/agent.c:819 -msgid "Device has been switched into pairing mode" -msgstr "" - -#: src/bluetooth/bluetooth.c:117 -msgid "Bluetooth headset support plugin" -msgstr "" - -#: src/bluetooth/bluetooth.c:118 -msgid "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the " -"Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" -msgstr "" - -#: src/bluetooth/gui.c:148 -msgid "Producer" -msgstr "" - -#: src/bluetooth/gui.c:221 -#, fuzzy -msgid "Available Headsets" -msgstr "Kullanılabilir arkayüzler" - -#: src/bluetooth/gui.c:224 -#, fuzzy -msgid "Current Headset" -msgstr "Güncel" - -#: src/bluetooth/gui.c:227 -msgid "_Refresh" -msgstr "" - -#: src/bluetooth/gui.c:231 -#, fuzzy -msgid "_Connect" -msgstr "BaÄŸlantı modu:" - -#: src/bluetooth/gui.c:237 -#, fuzzy -msgid "_Close" -msgstr "Kapat" - -#: src/bluetooth/gui.c:274 -#, fuzzy -msgid "Class" -msgstr "Klasik" - -#: src/bluetooth/gui.c:278 -#, fuzzy -msgid "Address:" -msgstr "Aygıt Adresi" - -#: src/bluetooth/scan_gui.c:69 -msgid "Bonding finish!" -msgstr "" - -#: src/bluetooth/scan_gui.c:76 -msgid "No devices found!" -msgstr "" - -#: src/bluetooth/scan_gui.c:119 -msgid "Scanning..." -msgstr "" - -#: src/bluetooth/scan_gui.c:122 -msgid "Pairing..." -msgstr "" - -#: src/bluetooth/scan_gui.c:138 -#, fuzzy -msgid "Rescan" -msgstr "Dikdörtgen" - -#: src/bluetooth/scan_gui.c:142 src/gtkui/ui_manager.c:66 -#: src/gtkui/ui_manager.c:67 src/hotkey/gui.c:71 src/skins/ui_manager.c:167 -#: src/skins/ui_manager.c:168 -#, fuzzy -msgid "Play" -msgstr "Oynatma süresi:" - #: src/blur_scope/config.c:73 msgid "Blur Scope: Color selection" msgstr "Bulanık alan: Renk seçimi" @@ -1699,12 +757,12 @@ msgid "Options:" msgstr "Seçenekler:" -#: src/cdaudio-ng/cdaudio-ng.c:278 +#: src/cdaudio-ng/cdaudio-ng.c:264 #, fuzzy msgid "About Audio CD Plugin" msgstr "FLAC Ses Eklentisi Hakkında" -#: src/cdaudio-ng/cdaudio-ng.c:279 +#: src/cdaudio-ng/cdaudio-ng.c:265 #, fuzzy msgid "" "Copyright (c) 2007, by Calin Crisan and The Audacious " @@ -1731,129 +789,164 @@ "\n" "Bu bir Google Summer of Code 2007 projesidir." -#: src/cdaudio-ng/configure.c:155 +#: src/cdaudio-ng/cdaudio-ng.c:558 +#, fuzzy +msgid "Audio CD" +msgstr "Ses" + +#: src/cdaudio-ng/cdaudio-ng.c:913 +msgid "Drive is empty." +msgstr "" + +#: src/cdaudio-ng/cdaudio-ng.c:915 +msgid "Unsupported disk type." +msgstr "" + +#: src/cdaudio-ng/configure.c:148 msgid "CD Audio Plugin Configuration" msgstr "CD Audio Eklentisi Yapılandırması" -#: src/cdaudio-ng/configure.c:167 +#: src/cdaudio-ng/configure.c:160 msgid "Digital audio extraction" msgstr "Sayısal ses elde etme" -#: src/cdaudio-ng/configure.c:172 +#: src/cdaudio-ng/configure.c:165 msgid "Title information" msgstr "BaÅŸlık bilgisi" -#: src/cdaudio-ng/configure.c:190 +#: src/cdaudio-ng/configure.c:176 #, fuzzy msgid "Disc speed:" msgstr "Saat hızı:" -#: src/cdaudio-ng/configure.c:198 +#: src/cdaudio-ng/configure.c:184 msgid "Use cd-text if available" msgstr "Varsa CD Bilgisini kullan" -#: src/cdaudio-ng/configure.c:205 +#: src/cdaudio-ng/configure.c:191 msgid "Use CDDB if available" msgstr "Varsa CDDB kullan" -#: src/cdaudio-ng/configure.c:211 +#: src/cdaudio-ng/configure.c:197 msgid "Server: " msgstr "Sunucu: " -#: src/cdaudio-ng/configure.c:215 +#: src/cdaudio-ng/configure.c:201 #, fuzzy msgid "Path: " msgstr "Örnek: " -#: src/cdaudio-ng/configure.c:219 +#: src/cdaudio-ng/configure.c:205 msgid "Port: " msgstr "Port: " -#: src/cdaudio-ng/configure.c:232 +#: src/cdaudio-ng/configure.c:218 msgid "Use HTTP instead of CDDBP" msgstr "" -#: src/cdaudio-ng/configure.c:244 +#: src/cdaudio-ng/configure.c:230 msgid "Override default device: " msgstr "Öntanımlı aygıtın üstüne yaz: " -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:131 +#: src/echo_plugin/gui.c:123 src/jack/configure.c:146 src/null/null.c:112 +#: src/stereo_plugin/stereo.c:125 +msgid "Ok" +msgstr "Tamam" + +#: src/cdaudio-ng/configure.c:249 src/crystalizer/crystalizer.c:138 +#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 src/null/null.c:113 +#: src/stereo_plugin/stereo.c:132 +msgid "Cancel" +msgstr "Ä°ptal" + +#: src/cd-menu-items/cd-menu-items.c:34 #, fuzzy msgid "Play CD" msgstr "Oynatma süresi:" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Add CD" msgstr "CD Ekle" -#: src/compressor/plugin.c:58 +#: src/compressor/plugin.c:67 #, fuzzy msgid "About Dynamic Range Compression Plugin" msgstr "Ekstra Stereo Eklentisi Hakkında" -#: src/compressor/plugin.c:91 +#: src/compressor/plugin.c:99 #, fuzzy msgid "Dynamic Range Compressor Preferences" msgstr "AudioCompress seçenekleri" -#: src/compressor/plugin.c:103 +#: src/compressor/plugin.c:111 #, fuzzy -msgid "Target volume:" +msgid "Center volume:" msgstr "Ses seviyesini deÄŸiÅŸtir" -#: src/compressor/plugin.c:116 -#, fuzzy -msgid "Effect strength:" -msgstr "Efekt yoÄŸunluÄŸu:" +#: src/compressor/plugin.c:124 +msgid "Dynamic range:" +msgstr "" -#: src/console/configure.c:137 +#: src/console/configure.c:138 #, fuzzy msgid "Game Console Music Decoder" msgstr "Konsol Müzik Çözücüsü" -#: src/console/configure.c:171 -msgid "Bass:" -msgstr "Bas:" +#: src/console/configure.c:155 +msgid "General" +msgstr "Genel" + +#: src/console/configure.c:157 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "Çal" + +#: src/console/configure.c:172 +msgid "Bass:" +msgstr "Bas:" -#: src/console/configure.c:175 src/console/configure.c:186 -#: src/console/configure.c:207 +#: src/console/configure.c:176 src/console/configure.c:187 +#: src/console/configure.c:208 msgid "secs" msgstr "saniye" -#: src/console/configure.c:182 +#: src/console/configure.c:183 msgid "Treble:" msgstr "Tiz:" -#: src/console/configure.c:203 +#: src/console/configure.c:204 msgid "Default song length:" msgstr "Varsayılan ÅŸarkı uzunluÄŸu:" -#: src/console/configure.c:209 src/modplug/gui/interface.cxx:269 -#: src/sid/xs_interface.c:666 +#: src/console/configure.c:210 src/sid/xs_interface.c:666 msgid "Resampling" msgstr "Yeniden örnekleme" -#: src/console/configure.c:215 +#: src/console/configure.c:216 msgid "Enable audio resampling" msgstr "Ses örneklemesini etkinleÅŸtir" -#: src/console/configure.c:230 +#: src/console/configure.c:231 msgid "Resampling rate:" msgstr "Örnekleme oranı:" -#: src/console/configure.c:245 +#: src/console/configure.c:235 src/sid/xs_interface.c:354 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:246 msgid "SPC" msgstr "SPC" -#: src/console/configure.c:246 +#: src/console/configure.c:247 msgid "Ignore length from SPC tags" msgstr "SPC etiketlerindeki uzunluÄŸu gözardı et" -#: src/console/configure.c:247 +#: src/console/configure.c:248 msgid "Increase reverb" msgstr "DerinliÄŸi artır" -#: src/console/configure.c:272 +#: src/console/configure.c:273 msgid "" "The default song length, expressed in seconds, is used for songs that do not " "provide length information (i.e. looping tracks)." @@ -1879,31 +972,31 @@ "Audacious için uyarlayan: William Pitcock , \n" " Shay Green " -#: src/crossfade/plugin.c:51 +#: src/crossfade/plugin.c:65 #, fuzzy msgid "About Crossfade" msgstr "Scrobbler Eklentisi Hakkında" -#: src/crossfade/plugin.c:84 +#: src/crossfade/plugin.c:97 #, fuzzy msgid "Crossfade Preferences" msgstr "AudioCompress seçenekleri" -#: src/crossfade/plugin.c:95 +#: src/crossfade/plugin.c:109 msgid "Overlap (in seconds):" msgstr "" -#: src/crossfade/plugin.c:129 src/crossfade/plugin.c:137 +#: src/crossfade/plugin.c:140 src/crossfade/plugin.c:146 #, fuzzy msgid "Crossfade Error" msgstr "Crossover" -#: src/crossfade/plugin.c:130 +#: src/crossfade/plugin.c:140 msgid "" "Crossfading failed because the songs had a different number of channels." msgstr "" -#: src/crossfade/plugin.c:138 +#: src/crossfade/plugin.c:148 msgid "" "Crossfading failed because the songs had different sample rates.\n" "\n" @@ -1911,21 +1004,25 @@ "same rate." msgstr "" -#: src/crystalizer/crystalizer.c:104 +#: src/crystalizer/crystalizer.c:108 #, fuzzy msgid "Configure Crystalizer" msgstr "Ekstra Stereo Eklentisini Yapılandır" -#: src/crystalizer/crystalizer.c:106 src/stereo_plugin/stereo.c:102 +#: src/crystalizer/crystalizer.c:110 src/stereo_plugin/stereo.c:104 msgid "Effect intensity:" msgstr "Efekt yoÄŸunluÄŸu:" -#: src/crystalizer/crystalizer.c:143 src/echo_plugin/gui.c:137 -#: src/modplug/gui/interface.cxx:709 src/stereo_plugin/stereo.c:139 +#: src/crystalizer/crystalizer.c:144 src/echo_plugin/gui.c:136 +#: src/stereo_plugin/stereo.c:138 msgid "Apply" msgstr "Uygula" -#: src/echo_plugin/gui.c:14 +#: src/daemon/daemon.c:58 +msgid "Daemon Interface (like old headless mode)" +msgstr "" + +#: src/echo_plugin/gui.c:15 msgid "" "Echo Plugin\n" "By Johan Levin 1999.\n" @@ -1937,414 +1034,52 @@ "\n" "Surround Eko - Carl van Schaik 1999" -#: src/echo_plugin/gui.c:26 +#: src/echo_plugin/gui.c:27 msgid "About Echo Plugin" msgstr "Yankı (Eko) Eklentisi Hakkında" -#: src/echo_plugin/gui.c:69 +#: src/echo_plugin/gui.c:72 msgid "Configure Echo" msgstr "Yankı (Eko) Eklentisini Yapılandır" -#: src/echo_plugin/gui.c:82 +#: src/echo_plugin/gui.c:88 msgid "Delay: (ms)" msgstr "Gecikme: (ms )" -#: src/echo_plugin/gui.c:87 +#: src/echo_plugin/gui.c:93 msgid "Feedback: (%)" msgstr "Geribesleme: (%)" -#: src/echo_plugin/gui.c:92 +#: src/echo_plugin/gui.c:98 msgid "Volume: (%)" msgstr "Ses: (%)" -#: src/evdev-plug/ed.c:60 -msgid "Playback->Play" -msgstr "Çal" - -#: src/evdev-plug/ed.c:61 -msgid "Playback->Stop" -msgstr "Dur" - -#: src/evdev-plug/ed.c:62 -msgid "Playback->Pause" -msgstr "Durakla" - -#: src/evdev-plug/ed.c:63 -msgid "Playback->Prev" -msgstr "Geri Sar" - -#: src/evdev-plug/ed.c:64 -msgid "Playback->Next" -msgstr "Playback->Ä°leri" - -#: src/evdev-plug/ed.c:65 -msgid "Playback->Eject" -msgstr "Playback->Çıkart" - -#: src/evdev-plug/ed.c:67 -msgid "Playlist->Repeat" -msgstr "Tekrarla" - -#: src/evdev-plug/ed.c:68 -msgid "Playlist->Shuffle" -msgstr "Rastgele" - -#: src/evdev-plug/ed.c:70 -msgid "Volume->Up_5" -msgstr "Sesi 5 Birim Artır" - -#: src/evdev-plug/ed.c:71 -msgid "Volume->Down_5" -msgstr "Sesi 5 Birim Azalt" - -#: src/evdev-plug/ed.c:72 -msgid "Volume->Up_10" -msgstr "Sesi 10 Birim Artır" - -#: src/evdev-plug/ed.c:73 -msgid "Volume->Down_10" -msgstr "Sesi 10 Birim Azalt" - -#: src/evdev-plug/ed.c:74 -msgid "Volume->Mute" -msgstr "Sessiz" - -#: src/evdev-plug/ed.c:76 -msgid "Window->Main" -msgstr "Ana Ekran" - -#: src/evdev-plug/ed.c:77 -msgid "Window->Playlist" -msgstr "Çalma Listesi" - -#: src/evdev-plug/ed.c:78 -msgid "Window->Equalizer" -msgstr "Ekolayzır" - -#: src/evdev-plug/ed.c:79 -msgid "Window->JumpToFile" -msgstr "Dosya Çal" - -#: src/evdev-plug/ed_internals.c:94 -#, c-format -msgid "" -"event-device-plugin: unable to open device file %s , skipping this device; " -"check that the file exists and that you have read permission for it\n" -msgstr "" -"event-device-plugin: %s diye belirtilen dosya açılamıyor.\n" -"Cihaz durduruldu. Dosya yolunun, adının doÄŸruluÄŸunu\n" -"ve eriÅŸim haklarınızı kontrol edin.\n" - -#: src/evdev-plug/ed_internals.c:103 -#, c-format -msgid "" -"event-device-plugin: unable to create a io_channel for device file %s ," -"skipping this device\n" -msgstr "" -"event-device-plugin: %s aygıt dosyası okunurken giriÅŸ-çıkış hatası\n" -"meydana geldi. Aygıt okuma iÅŸlemi durduruldu.\n" - -#: src/evdev-plug/ed_internals.c:342 -msgid "" -"event-device-plugin: unable to open /proc/bus/input/devices , automatic " -"detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: /proc/bus/input/devices açılamıyor.\n" -"Otomatik baÅŸlatma yapılamıyor.\n" - -#: src/evdev-plug/ed_internals.c:351 -msgid "" -"event-device-plugin: unable to open a io_channel for /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: /proc/bus/input/devices için girdi-çıktı hatası, " -"otomatik tanımlama yapılamıyor.\n" - -#: src/evdev-plug/ed_internals.c:361 -msgid "" -"event-device-plugin: an error occurred while reading /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" -"event-device-plugin: /proc/bus/input/devices okunurken hata oluÅŸtu, otomatik " -"tanımlama çalışmayacak.\n" - -#: src/evdev-plug/ed_internals.c:424 -#, c-format -msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" -msgstr "" -"event-device-plugin: /dev/input içerisinde aygıt %s bulunamadı, es " -"geçiliyor.\n" - -#: src/evdev-plug/ed_internals.c:489 src/evdev-plug/ed_internals.c:583 -#, c-format -msgid "" -"event-device-plugin: unable to load config file %s , default settings will " -"be used.\n" -msgstr "" -"event-device-plugin: ayar dosyası %s yüklenemiyor, öntanımlı ayarlar " -"kullanılacak.\n" - -#: src/evdev-plug/ed_internals.c:535 -#, c-format -msgid "" -"event-device-plugin: incomplete information in config file for device \"%s" -"\" , skipping.\n" -msgstr "" -"event-device-plugin: ayar dosyasında \"%s\" aygıtı için yetersiz bilgi " -"bulundu, es geçiliyor.\n" - -#: src/evdev-plug/ed_internals.c:604 src/evdev-plug/ed_internals.c:936 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_active value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: ayarlar, \"%s\" aygıtının çalıştığı bilgisine " -"ulaşılamadı, es geçiliyor.\n" - -#: src/evdev-plug/ed_internals.c:840 -#, c-format -msgid "" -"event-device-plugin: unable to access local directory %s , settings will not " -"be saved.\n" -msgstr "" -"event-device-plugin: yerel dizin %s eriÅŸilemiyor, ayarlar kaydedilmeyecek.\n" - -#: src/evdev-plug/ed_internals.c:890 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get filename value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugn: ayarlar, aygıt \"%s\" için filename deÄŸeri alınamıyor, " -"es geçiliyor.\n" - -#: src/evdev-plug/ed_internals.c:906 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get phys value for device \"%s" -"\", skipping it.\n" -msgstr "" -"event-device-plugin: ayarlar, aygıt \"%s\" için phys deÄŸeri alınamıyor, es " -"geçiliyor.\n" - -#: src/evdev-plug/ed_internals.c:922 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_custom value for device " -"\"%s\", skipping it.\n" -msgstr "" -"event-device-plugin: ayarlar, aygıt \"%s\" için is_custom deÄŸeri alınamıyor, " -"es geçiliyor.\n" - -#: src/evdev-plug/ed_internals.c:946 -#, c-format -msgid "" -"event-device-plugin: configuration, unexpected value for device \"%s\", " -"skipping it.\n" -msgstr "" -"event-device-plugin: ayarlar, aygıt \"%s\" için beklenmeyen bir deÄŸer " -"alındı, es geçiliyor.\n" - -#: src/evdev-plug/ed_ui.c:212 -#, fuzzy -msgid "Detected" -msgstr "Åžarkı sonunu tespit et" - -#: src/evdev-plug/ed_ui.c:217 -#, fuzzy -msgid "Custom" -msgstr "custom " - -#: src/evdev-plug/ed_ui.c:223 -#, fuzzy -msgid "Not Detected" -msgstr "Biçim seçimi" - -#: src/evdev-plug/ed_ui.c:275 src/evdev-plug/ed_ui.c:411 -#: src/evdev-plug/ed_ui.c:874 -msgid "Information" -msgstr "Bilgi" - -#: src/evdev-plug/ed_ui.c:276 -msgid "" -"Cannot open bindings window for a not-detected device.\n" -"Ensure that the device has been correctly plugged in." -msgstr "" -"Tanınmamış bir aygıt için iliÅŸkilendirme penceresi açılamıyor.\n" -"Aygıtın düzgün bir ÅŸekilde sisteme takılı olduÄŸundan emin olun." - -#: src/evdev-plug/ed_ui.c:319 -msgid "Error" -msgstr "Hata" - -#: src/evdev-plug/ed_ui.c:320 -msgid "" -"Unable to open selected device.\n" -"Please check read permissions on device file." -msgstr "" -"Seçili aygıt açılamıyor.\n" -"Aygıt dosyasına okuma hakkınız olduÄŸundan emin olun." - -#: src/evdev-plug/ed_ui.c:341 -msgid "EvDev-Plug - Add custom device" -msgstr "EvDev-Plug - Özel aygıt ekle" - -#: src/evdev-plug/ed_ui.c:353 -msgid "" -"EvDev-Plug tries to automatically detect and update information about\n" -"event devices available on the system.\n" -"However, if auto-detect doesn't work for your system, or you have event\n" -"devices in a non-standard location (currently they're only searched in\n" -"/dev/input/ ), you may want to add a custom device, explicitly specifying\n" -"name and device file." -msgstr "" -"EvDev-Plug otomatik olarak sisteminizde olay üreten aygıtları tanımaya\n" -"ve hakkında bilgi toplamaya çalışır.\n" -"Yine de otomatik tanıma baÅŸarısız olursa ya da sizin standart dışında bir " -"yerde\n" -"olay üreten bir aygıtınız varsa (öntanımlı olarak /dev/input/ altında " -"aranırlar)\n" -"elle aygıt adını ve aygıt dosyasını tanımlayarak özel bir aygıt tanımlamak\n" -"isteyebilirsiniz." - -#: src/evdev-plug/ed_ui.c:361 -msgid "Device name:" -msgstr "Aygıt ismi:" - -#: src/evdev-plug/ed_ui.c:365 -msgid "Device file:" -msgstr "Aygıt dosyası:" - -#: src/evdev-plug/ed_ui.c:404 -#, fuzzy -msgid "(custom)" -msgstr "custom " - -#: src/evdev-plug/ed_ui.c:412 -msgid "" -"Please specify both name and filename.\n" -"Filename must be specified with absolute path." -msgstr "" -"Lütfen hem isim hem de dosya ismi belirleyiniz.\n" -"Dosya ismi tam dizin bilgisi ile belirlenmelidir." - -#: src/evdev-plug/ed_ui.c:447 -msgid "Do you want to remove the existing configuration for selected device?\n" -msgstr "Seçilen aygıt için mevcut olan ayarları kaldırmak istiyor musunuz?\n" - -#: src/evdev-plug/ed_ui.c:466 -msgid "Do you want to remove the selected custom device?\n" -msgstr "Seçili olan özel aygıtı kaldırmak istiyor musunuz?\n" - -#: src/evdev-plug/ed_ui.c:612 -msgid "EvDev-Plug - Configuration" -msgstr "EvDev-Plug - Yapılandırması" - -#: src/evdev-plug/ed_ui.c:651 -msgid "Active" -msgstr "Etkin" - -#: src/evdev-plug/ed_ui.c:655 src/sun/configure.c:486 -msgid "Status" -msgstr "Durum" - -#: src/evdev-plug/ed_ui.c:664 -msgid "Device Name" -msgstr "Aygıt Ä°smi" - -#: src/evdev-plug/ed_ui.c:668 -msgid "Device File" -msgstr "Aygıt Dosyası" - -#: src/evdev-plug/ed_ui.c:672 -msgid "Device Address" -msgstr "Aygıt Adresi" - -#: src/evdev-plug/ed_ui.c:689 -msgid "_Bindings" -msgstr "_BaÄŸlantılar" - -#: src/evdev-plug/ed_ui.c:838 -msgid "" -"Press a key of your device to bind it;\n" -"if no key is pressed in five seconds, this window\n" -"will close without binding changes." -msgstr "" -"BaÄŸlamak için aygıtınızda bir tuÅŸa basınız;\n" -"BeÅŸ saniye içerisinde herhangi bir tuÅŸa basılmazsa\n" -"bu pencere baÄŸlama iÅŸlemi yapmadan kapanacaktır." - -#: src/evdev-plug/ed_ui.c:875 -msgid "" -"This input event has been already assigned.\n" -"\n" -"It's not possible to assign multiple actions to the same input event " -"(although it's possible to assign the same action to multiple events)." -msgstr "" -"Bu girdi olayı önceden atanmış.\n" -"\n" -"Aynı girdi olayına birden fazla eylem atanamaz (ama aynı eylem birden fazla " -"olaya atanabilir)." - -#: src/evdev-plug/ed_ui.c:1323 -msgid "EvDev-Plug - Bindings Configuration" -msgstr "EvDev-Plug - BaÄŸlayıcı Yapılandırması" - -#: src/evdev-plug/ed_ui.c:1363 -msgid "Name: " -msgstr "Ä°sim: " - -#: src/evdev-plug/ed_ui.c:1372 -msgid "Filename: " -msgstr "Dosya ismi: " - -#: src/evdev-plug/ed_ui.c:1381 -msgid "Phys.Address: " -msgstr "Fiziksel Adres: " - -#: src/evdev-plug/ed_ui.c:1460 -msgid "EvDev-Plug - about" -msgstr "EvDev-Plug hakkında" - -#: src/evdev-plug/ed_ui.c:1491 -msgid "" -"\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"written by Giacomo Lozito\n" -msgstr "" -"\n" -"olay aygıtları ile oynatıcı uzakten yöneticisi\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"Giacomo Lozito tarafından yazılmıştır\n" - -#: src/ffaudio/ffaudio-core.c:662 +#: src/ffaudio/ffaudio-core.c:763 #, c-format msgid "" "Multi-format audio decoding plugin for Audacious based on\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" "Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" "\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" "Audacious plugin by:\n" " William Pitcock ,\n" " Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" msgstr "" -#: src/ffaudio/ffaudio-core.c:675 +#: src/ffaudio/ffaudio-core.c:777 #, fuzzy msgid "About FFaudio Plugin" msgstr "FLAC Ses Eklentisi Hakkında" -#: src/filewriter/filewriter.c:180 +#: src/filewriter/filewriter.c:155 msgid "About FileWriter-Plugin" msgstr "FileWriter Eklentisi Hakkında" -#: src/filewriter/filewriter.c:181 +#: src/filewriter/filewriter.c:156 #, fuzzy msgid "" "FileWriter-Plugin\n" @@ -2383,250 +1118,208 @@ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" "USA." -#: src/filewriter/filewriter.c:466 +#: src/filewriter/filewriter.c:450 msgid "File Writer Configuration" msgstr "File Writer Ayarları" -#: src/filewriter/filewriter.c:478 +#: src/filewriter/filewriter.c:462 msgid "Output file format:" msgstr "Çıktı dosya biçimi:" -#: src/filewriter/filewriter.c:496 src/ladspa/ladspa.c:1058 +#: src/filewriter/filewriter.c:480 msgid "Configure" msgstr "Yapılandır" -#: src/filewriter/filewriter.c:511 +#: src/filewriter/filewriter.c:495 msgid "Save into original directory" msgstr "Orjinal dizine kaydet" -#: src/filewriter/filewriter.c:516 +#: src/filewriter/filewriter.c:500 msgid "Save into custom directory" msgstr "Özel dizine kaydet" -#: src/filewriter/filewriter.c:528 +#: src/filewriter/filewriter.c:510 msgid "Output file folder:" msgstr "Çıktı dosya klasörü:" -#: src/filewriter/filewriter.c:532 +#: src/filewriter/filewriter.c:514 msgid "Pick a folder" msgstr "Dizin seçimi" -#: src/filewriter/filewriter.c:551 +#: src/filewriter/filewriter.c:533 msgid "Get filename from:" msgstr "Dosya adı kaynağı:" -#: src/filewriter/filewriter.c:554 +#: src/filewriter/filewriter.c:536 msgid "original file tags" msgstr "orijinal dosya iÅŸaretleri" -#: src/filewriter/filewriter.c:560 +#: src/filewriter/filewriter.c:542 msgid "original filename" msgstr "özgün dosya adı" -#: src/filewriter/filewriter.c:570 +#: src/filewriter/filewriter.c:552 msgid "Don't strip file name extension" msgstr "Dosya ismi uzantılarını daraltma" -#: src/filewriter/filewriter.c:574 -msgid "" -"If enabled, the extension from the original filename will not be stripped " -"before adding the new file extension to the end." -msgstr "" -"SeçildiÄŸinde, yeni oluÅŸturulan dosyaya yeni uzantı eklenirken eski dosyanın " -"uzantısı dosya adından çıkarılmaz." - -#: src/filewriter/filewriter.c:588 +#: src/filewriter/filewriter.c:567 msgid "Prepend track number to filename" msgstr "Parça numarısını dosya adına ekle" -#: src/filewriter/mp3.c:710 +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:783 +msgid "Auto" +msgstr "Otomatik" + +#: src/filewriter/mp3.c:38 +#, fuzzy +msgid "Joint Stereo" +msgstr "BirleÅŸik Stereo" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 src/sid/xs_interface.c:308 +msgid "Stereo" +msgstr "Stereo" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 src/sid/xs_interface.c:301 +msgid "Mono" +msgstr "Mono" + +#: src/filewriter/mp3.c:724 msgid "MP3 Configuration" msgstr "MP3 Yapılandırması" -#: src/filewriter/mp3.c:737 +#: src/filewriter/mp3.c:747 msgid "Algorithm Quality:" msgstr "Algoritma Kalitesi:" -#: src/filewriter/mp3.c:759 -msgid "" -"best/slowest:0;\n" -"worst/fastest:9;\n" -"recommended:2;\n" -"default:5;" -msgstr "" -"en iyi/en yavaÅŸ:0;\n" -"en kötü/en hızlı:9;\n" -"önerilen:2;\n" -"öntanımlı:5;" - -#: src/filewriter/mp3.c:767 +#: src/filewriter/mp3.c:772 msgid "Output Samplerate:" msgstr "Çıktı Örnekleme Oranı:" -#: src/filewriter/mp3.c:778 src/filewriter/mp3.c:919 -msgid "Auto" -msgstr "Otomatik" - #: src/filewriter/mp3.c:800 msgid "(Hz)" msgstr "(Hz)" -#: src/filewriter/mp3.c:812 +#: src/filewriter/mp3.c:807 msgid "Bitrate / Compression ratio:" msgstr "Bit oranı / Sıkıştırma oranı:" -#: src/filewriter/mp3.c:838 +#: src/filewriter/mp3.c:831 msgid "Bitrate (kbps):" msgstr "Bit oranı (kbps):" -#: src/filewriter/mp3.c:879 +#: src/filewriter/mp3.c:864 msgid "Compression ratio:" msgstr "Sıkıştırma oranı:" -#: src/filewriter/mp3.c:909 +#: src/filewriter/mp3.c:888 msgid "Audio Mode:" msgstr "Ses Kipi:" -#: src/filewriter/mp3.c:924 -msgid "Joint-Stereo" -msgstr "BirleÅŸik Stereo" - -#: src/filewriter/mp3.c:967 +#: src/filewriter/mp3.c:913 msgid "Misc:" msgstr "ÇeÅŸitli" -#: src/filewriter/mp3.c:978 +#: src/filewriter/mp3.c:924 msgid "Enforce strict ISO complience" msgstr "ISO standartlarına mutlak uyum gözetmeye zorla" -#: src/filewriter/mp3.c:989 +#: src/filewriter/mp3.c:935 msgid "Error protection" msgstr "Hata koruması" -#: src/filewriter/mp3.c:1001 -msgid "Adds 16 bit checksum to every frame" -msgstr "Her çerçeveye 16 bit checksum ekler" - -#: src/filewriter/mp3.c:1006 src/filewriter/vorbis.c:247 -#: src/modplug/gui/interface.cxx:320 +#: src/filewriter/mp3.c:947 src/filewriter/vorbis.c:245 msgid "Quality" msgstr "Kalite" -#: src/filewriter/mp3.c:1018 +#: src/filewriter/mp3.c:957 msgid "Enable VBR/ABR" msgstr "VBR/ABR etkinleÅŸtir" -#: src/filewriter/mp3.c:1030 +#: src/filewriter/mp3.c:967 msgid "Type:" msgstr "Tür:" -#: src/filewriter/mp3.c:1041 -msgid "Variable bitrate" -msgstr "DeÄŸiÅŸken bit oranı" - -#: src/filewriter/mp3.c:1053 -msgid "Average bitrate" -msgstr "Ortalama bit oranı" - -#: src/filewriter/mp3.c:1067 +#: src/filewriter/mp3.c:1000 msgid "VBR Options:" msgstr "VBR Seçenekleri:" -#: src/filewriter/mp3.c:1083 +#: src/filewriter/mp3.c:1016 msgid "Minimum bitrate (kbps):" msgstr "En düşük bit oranı (kbps):" -#: src/filewriter/mp3.c:1119 +#: src/filewriter/mp3.c:1043 msgid "Maximum bitrate (kbps):" msgstr "En yüksek bit oranı (kbps):" -#: src/filewriter/mp3.c:1151 +#: src/filewriter/mp3.c:1066 msgid "Strictly enforce minimum bitrate" msgstr "En düşük bit oranını tam olarak zorla" -#: src/filewriter/mp3.c:1153 -msgid "" -"For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/" -"mp3 player)" -msgstr "" -"Düşük bit oranlı mp3'leri desteklemeyen çalıcılarla kullanılması için (Apex " -"AD600-A DVD/mp3 player)" - -#: src/filewriter/mp3.c:1166 +#: src/filewriter/mp3.c:1078 msgid "ABR Options:" msgstr "ABR Seçenekleri:" -#: src/filewriter/mp3.c:1176 +#: src/filewriter/mp3.c:1088 msgid "Average bitrate (kbps):" msgstr "Ortalama bit oranı (kbps):" -#: src/filewriter/mp3.c:1213 +#: src/filewriter/mp3.c:1116 msgid "VBR quality level:" msgstr "VBR kalite seviyesi:" -#: src/filewriter/mp3.c:1228 -msgid "" -"highest:0;\n" -"lowest:9;\n" -"default:4;" -msgstr "" -"yüksek:0;\n" -"alçak:9;\n" -"öntanımlı:4;" - -#: src/filewriter/mp3.c:1236 +#: src/filewriter/mp3.c:1135 msgid "Don't write Xing VBR header" msgstr "Xing VBR baÅŸlığını yazma" -#: src/filewriter/mp3.c:1250 +#: src/filewriter/mp3.c:1149 msgid "VBR/ABR" msgstr "VBR/ABR" -#: src/filewriter/mp3.c:1262 +#: src/filewriter/mp3.c:1159 msgid "Frame params:" msgstr "Çerçeve parametreleri:" -#: src/filewriter/mp3.c:1274 +#: src/filewriter/mp3.c:1171 msgid "Mark as copyright" msgstr "Telif hakkı olarak iÅŸaretle" -#: src/filewriter/mp3.c:1285 +#: src/filewriter/mp3.c:1182 msgid "Mark as original" msgstr "Orijinal olarak iÅŸaretle" -#: src/filewriter/mp3.c:1297 +#: src/filewriter/mp3.c:1194 msgid "ID3 params:" msgstr "ID3 parametreleri:" -#: src/filewriter/mp3.c:1308 +#: src/filewriter/mp3.c:1205 msgid "Force addition of version 2 tag" msgstr "sürüm 2 etkiketin eklenmesini zorla" -#: src/filewriter/mp3.c:1318 +#: src/filewriter/mp3.c:1215 msgid "Only add v1 tag" msgstr "Sadece v1 etiketini ekle" -#: src/filewriter/mp3.c:1325 +#: src/filewriter/mp3.c:1222 msgid "Only add v2 tag" msgstr "Sadece v2 etiketini ekle" -#: src/filewriter/mp3.c:1346 +#: src/filewriter/mp3.c:1243 msgid "Tags" msgstr "Etiketler:" -#: src/filewriter/vorbis.c:240 +#: src/filewriter/vorbis.c:238 msgid "Vorbis Encoder Configuration" msgstr "Vorbis Kodlayıcı Ayarları" -#: src/filewriter/vorbis.c:260 +#: src/filewriter/vorbis.c:258 msgid "Quality level (0 - 10):" msgstr "Kalite seviyesi (0 - 10):" -#: src/flacng/plugin.c:457 -msgid "FLAC Audio Plugin " -msgstr "FLAC Ses Eklentisi " +#: src/flacng/plugin.c:379 +msgid "About FLAC Audio Plugin" +msgstr "FLAC Ses Eklentisi Hakkında" -#: src/flacng/plugin.c:458 +#: src/flacng/plugin.c:380 msgid "" "\n" "\n" @@ -2642,15 +1335,11 @@ "\n" "http://www.skytale.net/projects/bmp-flac2/" -#: src/flacng/plugin.c:464 -msgid "About FLAC Audio Plugin" -msgstr "FLAC Ses Eklentisi Hakkında" - -#: src/gnomeshortcuts/gnomeshortcuts.c:306 +#: src/gnomeshortcuts/gnomeshortcuts.c:303 msgid "About Gnome Shortcut Plugin" msgstr "Gnome Kısayol Eklentisi Hakkında" -#: src/gnomeshortcuts/gnomeshortcuts.c:307 +#: src/gnomeshortcuts/gnomeshortcuts.c:304 #, fuzzy msgid "" "Gnome Shortcut Plugin\n" @@ -2665,527 +1354,510 @@ "Telif Hakkı (C) 2007 Sascha Hlusiak \n" "\n" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:273 +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 msgid "Open Files" msgstr "" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:271 #, fuzzy msgid "Add Files" msgstr "Filtreler" -#: src/gntui/gntui.c:271 +#: src/gntui/gntui.c:270 #, fuzzy msgid "Audacious2" msgstr "%s - Audacious" -#: src/gntui/gntui.c:312 +#: src/gntui/gntui.c:311 msgid "gnt interface" msgstr "" -#: src/gtkui/actions.c:257 src/skins/ui_main.c:818 -msgid "Can't jump to time when no track is being played.\n" -msgstr "" +#: src/gtkui/columns.c:36 +#, fuzzy +msgid "Entry number" +msgstr "Parça numarası:" + +#: src/gtkui/columns.c:36 src/sid/xs_interface.c:1103 +msgid "Title" +msgstr "BaÅŸlık" -#: src/gtkui/actions.c:272 src/gtkui/ui_manager.c:204 -#: src/gtkui/ui_manager.c:205 src/skins/ui_main.c:833 -#: src/skins/ui_manager.c:410 src/skins/ui_manager.c:411 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "Jump to Time" -msgstr "Dosyaya Atla:" +msgid "Artist" +msgstr "Sanatçı:" -#: src/gtkui/actions.c:289 src/skins/ui_main.c:854 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "minutes:seconds" -msgstr "dakika" +msgid "Year" +msgstr "Yıl:" -#: src/gtkui/actions.c:299 src/skins/ui_main.c:864 +#: src/gtkui/columns.c:37 #, fuzzy -msgid "Track length:" -msgstr "Parça ses yüksekliÄŸi:" +msgid "Album" +msgstr "Albüm:" -#: src/gtkui/actions.c:610 src/skins/ui_playlist.c:648 -#, c-format -msgid "Error writing playlist \"%s\": %s" -msgstr "" +#: src/gtkui/columns.c:37 +#, fuzzy +msgid "Track" +msgstr "Parça:" -#: src/gtkui/actions.c:625 src/skins/ui_playlist.c:670 -#, c-format -msgid "%s already exist. Continue?" -msgstr "" +#: src/gtkui/columns.c:37 +#, fuzzy +msgid "Queue position" +msgstr "Konum" -#: src/gtkui/actions.c:651 src/skins/ui_manager.c:214 +#: src/gtkui/columns.c:38 #, fuzzy -msgid "Export Playlist" -msgstr "Hızlı Parça Listesi Bilgisi" +msgid "Length" +msgstr "Uzunluk:" -#: src/gtkui/actions.c:723 src/skins/ui_manager.c:211 +#: src/gtkui/columns.c:38 #, fuzzy -msgid "Import Playlist" -msgstr "Hızlı Parça Listesi Bilgisi" +msgid "File path" +msgstr "Dosya adı" -#: src/gtkui/ui_gtk.c:72 -msgid "GTK Interface" -msgstr "" +#: src/gtkui/columns.c:38 +#, fuzzy +msgid "File name" +msgstr "Dosya adı" -#: src/gtkui/ui_gtk.c:281 src/skins/ui_main.c:388 -#, c-format -msgid "%s - Audacious" -msgstr "%s - Audacious" +#: src/gtkui/columns.c:38 +#, fuzzy +msgid "Custom title" +msgstr "Özel Deri" -#: src/gtkui/ui_gtk.c:287 src/skins/ui_main.c:390 src/skins/ui_main.c:2166 +#: src/gtkui/columns.c:39 #, fuzzy -msgid "Audacious" -msgstr "%s - Audacious" +msgid "Bitrate" +msgstr "Bit oranı:" -#: src/gtkui/ui_manager.c:35 src/gtkui/ui_manager.c:36 -#: src/skins/ui_manager.c:53 src/skins/ui_manager.c:54 -msgid "Stop after Current Song" +#: src/gtkui/columns.c:286 +msgid "Choose Columns" msgstr "" -#: src/gtkui/ui_manager.c:38 src/gtkui/ui_manager.c:39 -#: src/skins/ui_manager.c:59 src/skins/ui_manager.c:60 +#: src/gtkui/columns.c:300 #, fuzzy -msgid "Repeat" -msgstr "Beat" +msgid "Available:" +msgstr "deÄŸiÅŸken" -#: src/gtkui/ui_manager.c:41 src/gtkui/ui_manager.c:42 -#: src/skins/ui_manager.c:62 src/skins/ui_manager.c:63 -msgid "Shuffle" +#: src/gtkui/columns.c:334 +msgid "Chosen:" msgstr "" -#: src/gtkui/ui_manager.c:44 src/gtkui/ui_manager.c:45 -#: src/skins/ui_manager.c:65 src/skins/ui_manager.c:66 -msgid "No Playlist Advance" +#: src/gtkui/layout.c:122 +msgid "Dock at Left" msgstr "" -#: src/gtkui/ui_manager.c:47 -#, fuzzy -msgid "Show playlists" -msgstr "Parça Listesini Seç" - -#: src/gtkui/ui_manager.c:48 -#, fuzzy -msgid "Show/hide playlists" -msgstr "Parça Listesini Seç" - -#: src/gtkui/ui_manager.c:50 -msgid "Show infoarea" +#: src/gtkui/layout.c:122 +msgid "Dock at Right" msgstr "" -#: src/gtkui/ui_manager.c:51 -msgid "Show/hide infoarea" +#: src/gtkui/layout.c:123 +msgid "Dock at Top" msgstr "" -#: src/gtkui/ui_manager.c:53 -msgid "Show main menu" +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" msgstr "" -#: src/gtkui/ui_manager.c:54 -msgid "Show/hide main menu" +#: src/gtkui/layout.c:123 +msgid "Undock" msgstr "" -#: src/gtkui/ui_manager.c:56 +#: src/gtkui/layout.c:123 #, fuzzy -msgid "Show statusbar" -msgstr "Durum" +msgid "Disable" +msgstr "deÄŸiÅŸken" -#: src/gtkui/ui_manager.c:57 +#: src/gtkui/menus.c:132 #, fuzzy -msgid "Show/hide statusbar" -msgstr "Parça Listesini Seç" +msgid "_Open Files ..." +msgstr "Filtreler" -#: src/gtkui/ui_manager.c:69 src/gtkui/ui_manager.c:70 -#: src/skins/ui_manager.c:170 src/skins/ui_manager.c:171 -#, fuzzy -msgid "Pause" -msgstr "Bekletme Açık" +#: src/gtkui/menus.c:133 +msgid "Open _URL ..." +msgstr "" -#: src/gtkui/ui_manager.c:72 src/gtkui/ui_manager.c:73 src/hotkey/gui.c:73 -#: src/skins/ui_manager.c:173 src/skins/ui_manager.c:174 +#: src/gtkui/menus.c:134 #, fuzzy -msgid "Stop" -msgstr "Durdur:" +msgid "_Add File ..." +msgstr "Filtreler" -#: src/gtkui/ui_manager.c:75 src/gtkui/ui_manager.c:76 -#: src/skins/ui_manager.c:176 src/skins/ui_manager.c:177 +#: src/gtkui/menus.c:135 #, fuzzy -msgid "Previous" -msgstr "Önceki Parça:" +msgid "Add U_RL ..." +msgstr "Filtreler" -#: src/gtkui/ui_manager.c:78 src/gtkui/ui_manager.c:79 -#: src/skins/ui_manager.c:179 src/skins/ui_manager.c:180 +#: src/gtkui/menus.c:137 #, fuzzy -msgid "Next" -msgstr "Metin" +msgid "A_bout ..." +msgstr "Hakkında" -#: src/gtkui/ui_manager.c:84 src/skins/ui_manager.c:197 +#: src/gtkui/menus.c:138 #, fuzzy -msgid "Playlist" -msgstr "Parça Listesini Seç" +msgid "_Preferences ..." +msgstr "AudioCompress seçenekleri" -#: src/gtkui/ui_manager.c:86 src/gtkui/ui_manager.c:87 -#: src/skins/ui_manager.c:199 src/skins/ui_manager.c:200 +#: src/gtkui/menus.c:139 src/skins/ui_manager.c:412 #, fuzzy -msgid "New Playlist" -msgstr "Parça Listesini Seç" +msgid "_Quit" +msgstr "Kalite" -#: src/gtkui/ui_manager.c:89 src/gtkui/ui_manager.c:90 -#: src/skins/ui_manager.c:208 src/skins/ui_manager.c:209 +#: src/gtkui/menus.c:142 #, fuzzy -msgid "Delete Playlist" -msgstr "Parça Listesini Seç" +msgid "_Play" +msgstr "Oynatma süresi:" -#: src/gtkui/ui_manager.c:92 +#: src/gtkui/menus.c:143 #, fuzzy -msgid "Import Playlist ..." -msgstr "Hızlı Parça Listesi Bilgisi" - -#: src/gtkui/ui_manager.c:93 src/skins/ui_manager.c:212 -msgid "Loads a playlist file into the selected playlist." -msgstr "" +msgid "Paus_e" +msgstr "Bekletme Açık" -#: src/gtkui/ui_manager.c:95 +#: src/gtkui/menus.c:144 #, fuzzy -msgid "Export Playlist ..." -msgstr "Hızlı Parça Listesi Bilgisi" +msgid "_Stop" +msgstr "Durdur:" -#: src/gtkui/ui_manager.c:96 src/skins/ui_manager.c:215 +#: src/gtkui/menus.c:145 #, fuzzy -msgid "Saves the selected playlist." -msgstr "Parça Listesini Seç" +msgid "Pre_vious" +msgstr "Önceki Parça:" -#: src/gtkui/ui_manager.c:98 src/skins/ui_manager.c:217 +#: src/gtkui/menus.c:146 #, fuzzy -msgid "Save All Playlists" -msgstr "Parça Listesini Seç" - -#: src/gtkui/ui_manager.c:99 src/skins/ui_manager.c:218 -msgid "" -"Saves all the playlists that are open. Note that this is done automatically " -"when Audacious quits." -msgstr "" +msgid "_Next" +msgstr "Metin" -#: src/gtkui/ui_manager.c:103 -msgid "Refresh" -msgstr "" +#: src/gtkui/menus.c:148 +#, fuzzy +msgid "_Repeat" +msgstr "Beat" -#: src/gtkui/ui_manager.c:104 src/skins/ui_manager.c:223 -msgid "Refreshes metadata associated with a playlist entry." +#: src/gtkui/menus.c:149 +msgid "S_huffle" msgstr "" -#: src/gtkui/ui_manager.c:107 +#: src/gtkui/menus.c:150 #, fuzzy -msgid "Playlist Manager" +msgid "N_o Playlist Advance" msgstr "Parça Listesini Seç" -#: src/gtkui/ui_manager.c:108 src/skins/ui_manager.c:227 -msgid "Opens the playlist manager." -msgstr "" - -#: src/gtkui/ui_manager.c:111 -msgid "Add URL ..." +#: src/gtkui/menus.c:151 +msgid "Stop _After This Song" msgstr "" -#: src/gtkui/ui_manager.c:112 src/skins/ui_manager.c:237 -msgid "Adds a remote track to the playlist." +#: src/gtkui/menus.c:153 src/gtkui/menus.c:210 +msgid "Song _Info ..." msgstr "" -#: src/gtkui/ui_manager.c:115 -#, fuzzy -msgid "Add Files ..." -msgstr "Filtreler" - -#: src/gtkui/ui_manager.c:116 src/skins/ui_manager.c:241 -#, fuzzy -msgid "Adds files to the playlist." -msgstr "Parça listesine alttınılar ekle" - -#: src/gtkui/ui_manager.c:119 src/skins/ui_manager.c:264 +#: src/gtkui/menus.c:154 #, fuzzy -msgid "Remove All" -msgstr "Kaldır" - -#: src/gtkui/ui_manager.c:120 src/skins/ui_manager.c:265 -msgid "Removes all entries from the playlist." -msgstr "" - -#: src/gtkui/ui_manager.c:123 src/skins/ui_manager.c:290 -msgid "Remove Unselected" -msgstr "" - -#: src/gtkui/ui_manager.c:124 src/skins/ui_manager.c:291 -msgid "Remove unselected entries from the playlist." -msgstr "" - -#: src/gtkui/ui_manager.c:127 src/skins/ui_manager.c:294 -msgid "Remove Selected" -msgstr "" +msgid "Jump to _Time ..." +msgstr "Dosyaya Atla:" -#: src/gtkui/ui_manager.c:128 src/skins/ui_manager.c:295 -msgid "Remove selected entries from the playlist." +#: src/gtkui/menus.c:155 +msgid "_Jump to Song ..." msgstr "" -#: src/gtkui/ui_manager.c:131 -#, fuzzy -msgid "Sort" -msgstr "Port" - -#: src/gtkui/ui_manager.c:132 src/skins/ui_manager.c:330 -#: src/skins/ui_manager.c:360 +#: src/gtkui/menus.c:158 #, fuzzy -msgid "By Track Number" +msgid "By Track _Number" msgstr "Parça numarası:" -#: src/gtkui/ui_manager.c:134 src/skins/ui_manager.c:278 -#: src/skins/ui_manager.c:306 src/skins/ui_manager.c:336 +#: src/gtkui/menus.c:159 #, fuzzy -msgid "By Title" +msgid "By _Title" msgstr "BaÅŸlık" -#: src/gtkui/ui_manager.c:136 src/skins/ui_manager.c:314 -#: src/skins/ui_manager.c:344 +#: src/gtkui/menus.c:160 #, fuzzy -msgid "By Artist" +msgid "By _Artist" msgstr "Sanatçı:" -#: src/gtkui/ui_manager.c:138 src/skins/ui_manager.c:310 -#: src/skins/ui_manager.c:340 +#: src/gtkui/menus.c:161 #, fuzzy -msgid "By Album" +msgid "By A_lbum" msgstr "Albüm:" -#: src/gtkui/ui_manager.c:140 +#: src/gtkui/menus.c:162 +#, fuzzy +msgid "By Release _Date" +msgstr "Tarih:" + +#: src/gtkui/menus.c:163 #, fuzzy -msgid "By File Path" +msgid "By _File Path" msgstr "Dosya adı" -#: src/gtkui/ui_manager.c:142 -msgid "Reverse Order" +#: src/gtkui/menus.c:164 +#, fuzzy +msgid "By _Custom Title" +msgstr "Özel Deri" + +#: src/gtkui/menus.c:166 +msgid "R_everse Order" msgstr "" -#: src/gtkui/ui_manager.c:147 -msgid "Output" +#: src/gtkui/menus.c:167 +msgid "_Random Order" msgstr "" -#: src/gtkui/ui_manager.c:149 src/modplug/gui/interface.cxx:572 -msgid "Effects" -msgstr "Efektler" +#: src/gtkui/menus.c:170 src/gtkui/menus.c:212 +msgid "_Refresh" +msgstr "" -#: src/gtkui/ui_manager.c:151 +#: src/gtkui/menus.c:172 #, fuzzy -msgid "Equalizer" -msgstr "Ekolayzır" +msgid "_Sort" +msgstr "Port" -#: src/gtkui/ui_manager.c:156 src/skins/ui_manager.c:232 -msgid "View" +#: src/gtkui/menus.c:174 +msgid "_New" msgstr "" -#: src/gtkui/ui_manager.c:157 src/skins/ui_manager.c:233 -msgid "Interface" -msgstr "" +#: src/gtkui/menus.c:175 +#, fuzzy +msgid "_Close" +msgstr "Kapat" -#: src/gtkui/ui_manager.c:164 src/skins/ui_manager.c:370 +#: src/gtkui/menus.c:177 #, fuzzy -msgid "File" -msgstr "Filtreler" +msgid "_Import ..." +msgstr "İçe aktar" -#: src/gtkui/ui_manager.c:167 +#: src/gtkui/menus.c:178 #, fuzzy -msgid "Components" -msgstr "Yorum:" +msgid "_Export ..." +msgstr "Dışa aktar" -#: src/gtkui/ui_manager.c:169 src/gtkui/ui_manager.c:172 -#: src/skins/ui_manager.c:375 src/skins/ui_manager.c:378 +#: src/gtkui/menus.c:180 #, fuzzy -msgid "View Track Details" -msgstr "Parça Kazancı Kullan" +msgid "_Playlist Manager ..." +msgstr "Parça Listesini Seç" -#: src/gtkui/ui_manager.c:170 src/gtkui/ui_manager.c:173 -#: src/skins/ui_manager.c:376 src/skins/ui_manager.c:379 -msgid "View track details" -msgstr "" +#: src/gtkui/menus.c:183 +#, fuzzy +msgid "Volume _Up" +msgstr "Sesi yükselt:" -#: src/gtkui/ui_manager.c:175 src/gtkui/ui_manager.c:176 -#: src/skins/ui_manager.c:381 src/skins/ui_manager.c:382 +#: src/gtkui/menus.c:184 #, fuzzy -msgid "About Audacious" -msgstr "LIRC Audacious Eklentisi Hakkında" +msgid "Volume _Down" +msgstr "Sesi alçalt:" -#: src/gtkui/ui_manager.c:178 -msgid "Open Files ..." -msgstr "" +#: src/gtkui/menus.c:186 +#, fuzzy +msgid "_Equalizer" +msgstr "Ekolayzır" -#: src/gtkui/ui_manager.c:179 src/skins/ui_manager.c:385 +#: src/gtkui/menus.c:188 #, fuzzy -msgid "Load and play a file" -msgstr "Çalıcı baÅŸladığında SF'yi yükle" +msgid "E_ffects" +msgstr "Efektler" -#: src/gtkui/ui_manager.c:181 -msgid "Open URL ..." +#: src/gtkui/menus.c:191 +msgid "_Interface" msgstr "" -#: src/gtkui/ui_manager.c:182 src/skins/ui_manager.c:388 -#, fuzzy -msgid "Play media from the selected location" -msgstr "Seçilen eylemi onayla" +#: src/gtkui/menus.c:193 +msgid "Show _Menu Bar" +msgstr "" -#: src/gtkui/ui_manager.c:184 src/skins/ui_manager.c:390 -msgid "Plugin services" +#: src/gtkui/menus.c:194 +msgid "Show I_nfo Bar" msgstr "" -#: src/gtkui/ui_manager.c:186 src/skins/ui_manager.c:392 -msgid "Preferences" +#: src/gtkui/menus.c:195 +#, fuzzy +msgid "Show _Status Bar" +msgstr "Durum" + +#: src/gtkui/menus.c:197 +msgid "Show Column _Headers" msgstr "" -#: src/gtkui/ui_manager.c:187 src/skins/ui_manager.c:393 -msgid "Open preferences window" +#: src/gtkui/menus.c:198 +msgid "Choose _Columns ..." msgstr "" -#: src/gtkui/ui_manager.c:189 src/skins/ui_manager.c:395 +#: src/gtkui/menus.c:199 #, fuzzy -msgid "_Quit" -msgstr "Kalite" +msgid "Scrol_l on Song Change" +msgstr "Åžarkı mesajı" -#: src/gtkui/ui_manager.c:190 src/skins/ui_manager.c:396 +#: src/gtkui/menus.c:202 #, fuzzy -msgid "Quit Audacious" -msgstr "%s - Audacious" +msgid "_File" +msgstr "Filtreler" -#: src/gtkui/ui_manager.c:192 src/gtkui/ui_manager.c:193 -#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 -msgid "Set A-B" -msgstr "" +#: src/gtkui/menus.c:203 +#, fuzzy +msgid "_Playback" +msgstr "Çal" -#: src/gtkui/ui_manager.c:195 src/gtkui/ui_manager.c:196 -#: src/skins/ui_manager.c:401 src/skins/ui_manager.c:402 -msgid "Clear A-B" -msgstr "" +#: src/gtkui/menus.c:204 +#, fuzzy +msgid "P_laylist" +msgstr "Parça Listesini Seç" -#: src/gtkui/ui_manager.c:198 src/gtkui/ui_manager.c:199 -#: src/skins/ui_manager.c:404 src/skins/ui_manager.c:405 -msgid "Jump to Playlist Start" -msgstr "" +#: src/gtkui/menus.c:205 src/gtkui/menus.c:219 +#, fuzzy +msgid "_Services" +msgstr "Aygıtlar" -#: src/gtkui/ui_manager.c:201 src/gtkui/ui_manager.c:202 src/hotkey/gui.c:80 -#: src/skins/ui_manager.c:407 src/skins/ui_manager.c:408 +#: src/gtkui/menus.c:206 #, fuzzy -msgid "Jump to File" -msgstr "Dosyaya Atla:" +msgid "_Output" +msgstr "Çıktı eklentisi hatası\n" -#: src/gtkui/ui_manager.c:207 src/skins/ui_manager.c:413 -msgid "Queue Toggle" +#: src/gtkui/menus.c:207 +msgid "_View" msgstr "" -#: src/gtkui/ui_manager.c:208 src/skins/ui_manager.c:414 -msgid "Enables/disables the entry in the playlist's queue." +#: src/gtkui/menus.c:211 +msgid "_Queue/Unqueue" msgstr "" -#: src/gtkui/ui_manager.c:211 src/skins/ui_manager.c:417 -msgid "Copy" +#: src/gtkui/menus.c:214 +msgid "Cu_t" msgstr "" -#: src/gtkui/ui_manager.c:214 src/skins/ui_manager.c:419 -#, fuzzy -msgid "Cut" -msgstr "Kült" +#: src/gtkui/menus.c:215 +msgid "_Copy" +msgstr "" -#: src/gtkui/ui_manager.c:217 src/skins/ui_manager.c:421 -msgid "Paste" +#: src/gtkui/menus.c:216 +msgid "_Paste" msgstr "" -#: src/gtkui/ui_manager.c:220 src/skins/ui_manager.c:254 +#: src/gtkui/menus.c:217 #, fuzzy -msgid "Select All" +msgid "Select _All" msgstr "Parça Listesini Seç" -#: src/gtkui/ui_manager.c:221 src/skins/ui_manager.c:255 -msgid "Selects all of the playlist entries." +#: src/gtkui/menus.c:222 +#, fuzzy +msgid "_Rename" +msgstr "Dosya adı" + +#: src/gtkui/ui_gtk.c:75 +msgid "GTK Interface" msgstr "" -#: src/gtkui/ui_manager.c:224 src/skins/ui_manager.c:258 +#: src/gtkui/ui_gtk.c:132 src/skins/ui_main.c:303 +#, c-format +msgid "%s - Audacious" +msgstr "%s - Audacious" + +#: src/gtkui/ui_gtk.c:138 src/skins/ui_main.c:305 src/skins/ui_main.c:1498 #, fuzzy -msgid "Select None" -msgstr "Deri Dosyasını Seçin" +msgid "Audacious" +msgstr "%s - Audacious" -#: src/gtkui/ui_manager.c:225 src/skins/ui_manager.c:259 -msgid "Deselects all of the playlist entries." -msgstr "" +#: src/gtkui/ui_gtk.c:177 src/skins/plugin.c:185 +msgid "Error" +msgstr "Hata" -#: src/gtkui/ui_statusbar.c:91 src/skins/ui_main.c:609 +#: src/gtkui/ui_statusbar.c:102 src/skins/ui_main.c:460 #, fuzzy msgid "mono" msgstr "Mono" -#: src/gtkui/ui_statusbar.c:94 src/skins/ui_main.c:608 +#: src/gtkui/ui_statusbar.c:104 src/skins/ui_main.c:459 #, fuzzy msgid "stereo" msgstr "Stereo" -#: src/gtkui/ui_statusbar.c:97 +#: src/gtkui/ui_statusbar.c:106 #, fuzzy, c-format -msgid "%d channels" -msgstr "Kanallar" +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "Kanallar" +msgstr[1] "Kanallar" -#: src/gtkui/ui_statusbar.c:101 +#: src/gtkui/ui_statusbar.c:121 #, c-format -msgid "%s: %d kbps, %d Hz, %s" +msgid "%d kbps" msgstr "" -#: src/hotkey/gui.c:70 +#: src/hotkey/gui.c:71 #, fuzzy msgid "Previous Track" msgstr "Önceki Parça:" -#: src/hotkey/gui.c:72 +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +#, fuzzy +msgid "Play" +msgstr "Oynatma süresi:" + +#: src/hotkey/gui.c:73 #, fuzzy msgid "Pause/Resume" msgstr "Beklet:" -#: src/hotkey/gui.c:74 +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +#, fuzzy +msgid "Stop" +msgstr "Durdur:" + +#: src/hotkey/gui.c:75 #, fuzzy msgid "Next Track" msgstr "Sonraki Parça:" -#: src/hotkey/gui.c:75 +#: src/hotkey/gui.c:76 #, fuzzy msgid "Forward 5 Seconds" msgstr "5 sn ileri:" -#: src/hotkey/gui.c:76 +#: src/hotkey/gui.c:77 #, fuzzy msgid "Rewind 5 Seconds" msgstr "5 sn geri:" -#: src/hotkey/gui.c:77 +#: src/hotkey/gui.c:78 #, fuzzy msgid "Mute" msgstr "Sessiz:" -#: src/hotkey/gui.c:78 +#: src/hotkey/gui.c:79 #, fuzzy msgid "Volume Up" msgstr "Sesi yükselt:" -#: src/hotkey/gui.c:79 +#: src/hotkey/gui.c:80 #, fuzzy msgid "Volume Down" msgstr "Sesi alçalt:" -#: src/hotkey/gui.c:81 +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:424 src/skins/ui_manager.c:425 +#, fuzzy +msgid "Jump to File" +msgstr "Dosyaya Atla:" + +#: src/hotkey/gui.c:82 #, fuzzy msgid "Toggle Player Windows" msgstr "Oynatıcı Pencereleri Arasında GeçiÅŸ:" -#: src/hotkey/gui.c:82 +#: src/hotkey/gui.c:83 msgid "Show On-Screen-Display" msgstr "" -#: src/hotkey/gui.c:92 +#: src/hotkey/gui.c:84 +#, fuzzy +msgid "Toggle Repeat" +msgstr "Beat" + +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "" + +#: src/hotkey/gui.c:95 msgid "(none)" msgstr "(hiçbiri)" -#: src/hotkey/gui.c:229 +#: src/hotkey/gui.c:232 msgid "" "It is not recommended to bind the primary mouse buttons without " "modificators.\n" @@ -3193,40 +1865,40 @@ "Do you want to continue?" msgstr "" -#: src/hotkey/gui.c:231 +#: src/hotkey/gui.c:234 msgid "Binding mouse buttons" msgstr "" -#: src/hotkey/gui.c:381 +#: src/hotkey/gui.c:384 msgid "Global Hotkey Plugin Configuration" msgstr "Genel Kısayol Eklentisi Ayarları" -#: src/hotkey/gui.c:397 +#: src/hotkey/gui.c:400 #, fuzzy msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." msgstr "Metin alanı içinde bir tuÅŸ kombinasyonu girin" -#: src/hotkey/gui.c:402 +#: src/hotkey/gui.c:405 #, fuzzy msgid "Hotkeys:" msgstr "Makine:" -#: src/hotkey/gui.c:421 +#: src/hotkey/gui.c:424 #, fuzzy msgid "Action:" msgstr "Dosya ismi: " -#: src/hotkey/gui.c:429 +#: src/hotkey/gui.c:432 msgid "Key Binding:" msgstr "" -#: src/hotkey/gui.c:660 +#: src/hotkey/gui.c:663 msgid "About Global Hotkey Plugin" msgstr "Genel Kısayol Eklentisi Hakkında" -#: src/hotkey/gui.c:661 +#: src/hotkey/gui.c:664 #, fuzzy msgid "" "Global Hotkey Plugin\n" @@ -3280,7 +1952,7 @@ msgid "Enable debug printing" msgstr "Hata ayıklama yazdırmasını etkinleÅŸtir" -#: src/jack/jack.c:437 +#: src/jack/jack.c:438 msgid "" "XMMS jack Driver 0.17\n" "\n" @@ -3298,136 +1970,20 @@ "Audacious uyarlaması\n" "develia.org'tan Giacomo Lozito" -#: src/jack/jack.c:442 +#: src/jack/jack.c:443 msgid "About JACK Output Plugin 0.17" msgstr "JACK Çıkış Eklentisi 0.17 Hakkında" -#: src/ladspa/ladspa.c:824 -msgid "This LADSPA plugin has no user controls" -msgstr "Bu LADSPA eklentisi kullanıcı ayarı içermiyor" - -#: src/ladspa/ladspa.c:865 src/ladspa/ladspa.c:952 -msgid "Name" -msgstr "Ä°sim" - -#: src/ladspa/ladspa.c:952 -msgid "UID" -msgstr "UID" - -#: src/ladspa/ladspa.c:1029 -msgid "Installed plugins" -msgstr "Yüklü eklentiler" - -#: src/ladspa/ladspa.c:1037 -msgid "Running plugins" -msgstr "Çalışan eklentiler" - -#: src/ladspa/ladspa.c:1052 -msgid "Add" -msgstr "Ekle" - -#: src/ladspa/ladspa.c:1055 -msgid "Remove" -msgstr "Kaldır" - -#: src/ladspa/ladspa.c:1066 -msgid "LADSPA Plugin Catalog" -msgstr "LADSPA Eklenti KataloÄŸu" - -#: src/lirc/about.c:63 -msgid "About LIRC Audacious Plugin" -msgstr "LIRC Audacious Eklentisi Hakkında" - -#: src/lirc/about.c:90 -msgid "LIRC Plugin " -msgstr "LIRC Eklentisi" - -#: src/lirc/about.c:92 -#, fuzzy +#: src/lyricwiki/lyricwiki.c:226 msgid "" "\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" -"\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" -msgstr "" -"\n" -"LIRC uzaktan kontrol sunucusunu kullanarak\n" -"Audacious'u kontrol etmenizi saÄŸlayan bir eklenti\n" -"\n" -"Audacious kullanımı için uyarlandı - Tony Vroon \n" -"XMMS LIRC eklentisinden:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"LIRC hakkında bilgi almak için:\n" -"http://fsinfo.cs.uni-sb.de/~columbus/lirc/index.html" - -#: src/lirc/interface.c:37 -#, fuzzy -msgid "LIRC plugin settings" -msgstr "LIRC Eklentisi" - -#: src/lirc/interface.c:61 -msgid "Reconnect to LIRC server" -msgstr "" - -#: src/lirc/interface.c:68 -msgid "Timeout before reconnecting (seconds): " -msgstr "" - -#: src/lirc/interface.c:75 -msgid "Reconnect" +"Looking for lyrics..." msgstr "" -#: src/lirc/interface.c:79 -#, fuzzy -msgid "Connection" -msgstr "BaÄŸlantı modu:" - -#: src/lirc/lirc.c:82 -#, c-format -msgid "%s: could not init LIRC support\n" -msgstr "%s: LIRC desteÄŸi baÅŸlatılamadı\n" - -#: src/lirc/lirc.c:90 -#, c-format +#: src/lyricwiki/lyricwiki.c:249 msgid "" -"%s: could not read LIRC config file\n" -"%s: please read the documentation of LIRC\n" -"%s: how to create a proper config file\n" -msgstr "" -"%s: LIRC yapılandırma dosyası okunamadı\n" -"%s: lütfen LIRC belgelerini okuyun\n" -"%s: uygun yapılandırma dosyası nasıl oluÅŸturulur\n" - -#: src/lirc/lirc.c:117 -#, c-format -msgid "%s: trying to reconnect...\n" -msgstr "" - -#: src/lirc/lirc.c:332 -#, c-format -msgid "%s: unknown command \"%s\"\n" -msgstr "%s: bilinmeyen komut \"%s\"\n" - -#: src/lirc/lirc.c:342 -#, c-format -msgid "%s: disconnected from LIRC\n" -msgstr "%s: LIRC baÄŸlantısı kesildi\n" - -#: src/lirc/lirc.c:346 -#, c-format -msgid "%s: will try reconnect every %d seconds...\n" -msgstr "" - -#: src/lyricwiki/lyricwiki.c:244 -msgid "LyricWiki" +"\n" +"Connecting to lyrics.wikia.com..." msgstr "" #: src/lyricwiki/lyricwiki.c:337 @@ -3436,11 +1992,11 @@ "No lyrics were found." msgstr "" -#: src/metronom/metronom.c:90 +#: src/metronom/metronom.c:85 msgid "About Metronom" msgstr "Metronom Hakkında" -#: src/metronom/metronom.c:91 +#: src/metronom/metronom.c:86 msgid "" "A Tact Generator by Martin Strauss \n" "\n" @@ -3454,304 +2010,81 @@ "örneÄŸin tact://77 ile dakikada 77 vurgu ya da\n" "tact://60*3/4 ile 60 bpm yi 3/4 tact ile" -#: src/metronom/metronom.c:145 +#: src/metronom/metronom.c:143 #, c-format msgid "Tact generator: %d bpm" msgstr "Takt oluÅŸturucu: %d bpm" -#: src/metronom/metronom.c:147 +#: src/metronom/metronom.c:145 #, c-format msgid "Tact generator: %d bpm %d/%d" msgstr "Takt oluÅŸturucu: %d bpm %d/%d" -#: src/modplug/gui/interface.cxx:137 -msgid "ModPlug Configuration" -msgstr "ModPlug Yapılandırması" - -#: src/modplug/gui/interface.cxx:174 -msgid "16 bit" -msgstr "16 bit" - -#: src/modplug/gui/interface.cxx:181 -msgid "8 bit" -msgstr "8 bit" - -#: src/modplug/gui/interface.cxx:212 -msgid "Mono (downmix)" -msgstr "Mono (aÅŸağıkarıştırma)" - -#: src/modplug/gui/interface.cxx:241 -msgid "Nearest (fastest)" -msgstr "En yakın (en hızlı)" +#: src/mpg123/mpg123.c:183 +msgid "Surround" +msgstr "Surround" -#: src/modplug/gui/interface.cxx:248 -msgid "Linear (fast)" -msgstr "DoÄŸrusal (hızlı)" +#: src/mtp_up/mtp.c:298 +msgid "Upload in progress..." +msgstr "" -#: src/modplug/gui/interface.cxx:255 -msgid "Spline (good quality)" -msgstr "Spline (iyi kalite)" +#: src/mtp_up/mtp.c:310 +msgid "Upload to MTP Device" +msgstr "" -#: src/modplug/gui/interface.cxx:262 -msgid "8-tap Fir (extremely high quality)" -msgstr "8-tap FIR (fazla iyi kalite)" +#: src/mtp_up/mtp.c:311 +msgid "Disconnect MTP Device" +msgstr "" -#: src/modplug/gui/interface.cxx:286 +#: src/notify/libnotify-aosd_event.c:47 #, fuzzy -msgid "96 kHz" -msgstr "44 kHz" +msgid "Stopped" +msgstr "Durdur:" -#: src/modplug/gui/interface.cxx:293 +#: src/notify/libnotify-aosd_event.c:47 #, fuzzy -msgid "48 kHz" -msgstr "44 kHz" - -#: src/modplug/gui/interface.cxx:300 -msgid "44 kHz" -msgstr "44 kHz" - -#: src/modplug/gui/interface.cxx:307 -msgid "22 kHz" -msgstr "22 kHz" - -#: src/modplug/gui/interface.cxx:315 -msgid "Sampling Rate" -msgstr "Örnekleme Oranı" - -#: src/modplug/gui/interface.cxx:349 src/modplug/gui/interface.cxx:411 -#: src/modplug/gui/interface.cxx:477 src/modplug/gui/interface.cxx:539 -msgid "Enable" -msgstr "EtkinleÅŸtir" - -#: src/modplug/gui/interface.cxx:378 src/modplug/gui/interface.cxx:506 -msgid "Depth" -msgstr "Derinlik" - -#: src/modplug/gui/interface.cxx:386 src/modplug/gui/interface.cxx:514 -msgid "Delay" -msgstr "Gecikme" - -#: src/modplug/gui/interface.cxx:394 -msgid "Reverb" -msgstr "Derinlik" - -#: src/modplug/gui/interface.cxx:440 -msgid "Amount" -msgstr "Miktar" - -#: src/modplug/gui/interface.cxx:448 -msgid "Range" -msgstr "Aralık" - -#: src/modplug/gui/interface.cxx:456 -msgid "Bass Boost" -msgstr "Bass Güçlendirme" +msgid "Audacious is not playing." +msgstr "Parça listesine alttınılar ekle" -#: src/modplug/gui/interface.cxx:522 src/mpg123/mpg123.c:174 -msgid "Surround" -msgstr "Surround" +#: src/null/null.c:64 +msgid "Null output plugin " +msgstr "Null Çıkış eklentisi" -#: src/modplug/gui/interface.cxx:561 +#: src/null/null.c:65 msgid "" -"Note: Setting the preamp\n" -"too high may cause clipping\n" -"(annoying clicks and pops)!" -msgstr "" -"Not: Preamp deÄŸerini\n" -"yüksek ayarlamak sesde\n" -"cızırtı ve patlamalara sebep olur!" - -#: src/modplug/gui/interface.cxx:567 -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "Preamp" -msgstr "Preamp" +" by Christian Birchinger \n" +"based on the XMMS plugin by HÃ¥vard KvÃ¥l " +msgstr "" +"Christian Birchinger \n" +"Esinlenilen XMMS eklentisi - HÃ¥vard KvÃ¥l " -#: src/modplug/gui/interface.cxx:601 -msgid "Use Filename as Song Title" -msgstr "Åžarkı Adı için Dosya Adı kullan" +#: src/null/null.c:68 +msgid "About Null Output" +msgstr "Null Çıkışı Hakkında" -#: src/modplug/gui/interface.cxx:606 -msgid "Fast Playlist Info" -msgstr "Hızlı Parça Listesi Bilgisi" +#: src/null/null.c:94 +msgid "Null output preferences" +msgstr "BoÅŸl çıktı eklentisi" -#: src/modplug/gui/interface.cxx:617 -msgid "Noise Reduction" -msgstr "Gürültü Azaltma" - -#: src/modplug/gui/interface.cxx:623 -msgid "Play Amiga MOD" -msgstr "Amiga MOD Oynat" +#: src/null/null.c:105 +msgid "Run in real time" +msgstr "Gerçekzamanlı çalış" -#: src/modplug/gui/interface.cxx:646 -msgid "Don't loop" -msgstr "Tekrarlama yapma" - -#: src/modplug/gui/interface.cxx:658 -msgid "Loop" -msgstr "Tekrar" - -#: src/modplug/gui/interface.cxx:671 -msgid "time(s)" -msgstr "süre(ler)" - -#: src/modplug/gui/interface.cxx:677 -msgid "Loop forever" -msgstr "Sonsuz kere tekrarla" - -#: src/modplug/gui/interface.cxx:684 -msgid "Looping" -msgstr "Tekrarlama" - -#: src/modplug/gui/interface.cxx:859 -msgid "MOD Info" -msgstr "MOD Bilgisi" - -#: src/modplug/gui/interface.cxx:878 -msgid "" -"Filename:\n" -"Title:\n" -"Type:\n" -"Length:\n" -"Speed:\n" -"Tempo:\n" -"Samples:\n" -"Instruments:\n" -"Patterns:\n" -"Channels:" -msgstr "" -"Dosya adı:\n" -"BaÅŸlık:\n" -"Tip:\n" -"Uzunluk:\n" -"Hız:\n" -"Tempo:\n" -"Örnekler:\n" -"Enstrümanlar:\n" -"Paternler:\n" -"Kanallar:" - -#: src/modplug/gui/interface.cxx:883 -msgid "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" -msgstr "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" - -#: src/modplug/gui/interface.cxx:913 -msgid "Samples" -msgstr "Örnekler" - -#: src/modplug/gui/interface.cxx:938 -msgid "Instruments" -msgstr "Enstrumanlar" - -#: src/modplug/gui/interface.cxx:959 -msgid "Message" -msgstr "Mesaj" - -#: src/modplug/gui/main.cxx:51 -msgid "Modplug Input Plugin for Audacious ver" -msgstr "Modplug Girdi Eklentisi Audacious sürüm" - -#: src/modplug/gui/main.cxx:52 -#, fuzzy -msgid "" -"\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." -msgstr "" -"\n" -"Modplug ses motoru Olivier Lapicque tarafından yazılmıştır.\n" -"Modplug için XMMS arayüzü Kenton Varda.\n" -"(c)2000 Olivier Lapicque ve Kenton Varda.\n" -"Güncelleme ve bakım Konstanty Bialkowski.\n" -"BMP uyarlaması Theofilos Intzoglou." - -#: src/modplug/gui/main.cxx:55 -msgid "About Modplug" -msgstr "Modplug Hakkında" - -#: src/modplug/gui/support.cxx:90 src/modplug/gui/support.cxx:114 -#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 -#, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "Resim dosyası bulunamadı: %s" - -#: src/mtp_up/mtp.c:35 -msgid "Upload selected track(s)" -msgstr "" - -#: src/mtp_up/mtp.c:291 -msgid "Upload in progress..." -msgstr "" - -#: src/mtp_up/mtp.c:300 -msgid "MTP device handler" -msgstr "" - -#: src/mtp_up/mtp.c:304 -msgid "Disconnect the device" -msgstr "" - -#: src/null/null.c:63 -msgid "Null output plugin " -msgstr "Null Çıkış eklentisi" - -#: src/null/null.c:64 -msgid "" -" by Christian Birchinger \n" -"based on the XMMS plugin by HÃ¥vard KvÃ¥l " -msgstr "" -"Christian Birchinger \n" -"Esinlenilen XMMS eklentisi - HÃ¥vard KvÃ¥l " - -#: src/null/null.c:67 -msgid "About Null Output" -msgstr "Null Çıkışı Hakkında" - -#: src/null/null.c:93 -msgid "Null output preferences" -msgstr "BoÅŸl çıktı eklentisi" - -#: src/null/null.c:102 -msgid "Run in real time" -msgstr "Gerçekzamanlı çalış" - -#: src/oss4/configure.c:89 -#, fuzzy -msgid "1. Default device" -msgstr "Varsayılan PCM aygıtı (%s)" +#: src/oss4/configure.c:89 +#, fuzzy +msgid "1. Default device" +msgstr "Varsayılan PCM aygıtı (%s)" #: src/oss4/configure.c:151 #, fuzzy msgid "OSS4 Output Plugin Preferences" msgstr "Durum Simgesi Eklentisi - Tercihler" -#: src/oss4/configure.c:163 src/OSS/configure.c:213 src/sun/configure.c:181 +#: src/oss4/configure.c:163 src/OSS/configure.c:203 msgid "Audio device:" msgstr "Ses aygıtı:" -#: src/oss4/configure.c:189 src/OSS/configure.c:235 src/OSS/configure.c:276 +#: src/oss4/configure.c:189 src/OSS/configure.c:226 src/OSS/configure.c:269 msgid "Use alternate device:" msgstr "Farklı aygıt kullan:" @@ -3764,12 +2097,12 @@ msgid "Enable format conversions made by the OSS software." msgstr "" -#: src/oss4/plugin.c:54 +#: src/oss4/plugin.c:51 #, fuzzy msgid "About OSS4 Plugin" msgstr "ESounD Eklentisi Hakkında" -#: src/oss4/plugin.c:55 +#: src/oss4/plugin.c:52 #, fuzzy msgid "" "OSS4 Output Plugin for Audacious\n" @@ -3815,40 +2148,45 @@ msgid "OSS4 error" msgstr "Terör" -#: src/OSS/configure.c:148 +#: src/OSS/configure.c:146 #, c-format msgid "Default (%s)" msgstr "Varsayılan (%s)" -#: src/OSS/configure.c:197 +#: src/OSS/configure.c:162 src/skins/ui_manager.c:456 +#: src/skins/ui_manager.c:477 +msgid "Default" +msgstr "Öntanımlı" + +#: src/OSS/configure.c:187 msgid "OSS Driver configuration" msgstr "OSS Sürücüsü ayarları" -#: src/OSS/configure.c:298 src/sun/configure.c:246 +#: src/OSS/configure.c:290 msgid "Devices" msgstr "Aygıtlar" -#: src/OSS/configure.c:300 src/sun/configure.c:257 +#: src/OSS/configure.c:292 msgid "Buffering:" msgstr "Tamponlama:" -#: src/OSS/configure.c:313 src/sun/configure.c:288 +#: src/OSS/configure.c:305 msgid "Pre-buffer (percent):" msgstr "Ön tampon (yüzde):" -#: src/OSS/configure.c:324 src/sun/configure.c:302 +#: src/OSS/configure.c:316 msgid "Buffering" msgstr "Tamponlanıyor" -#: src/OSS/configure.c:325 +#: src/OSS/configure.c:317 msgid "Mixer Settings:" msgstr "Karıştırıcı Ayarları:" -#: src/OSS/configure.c:331 +#: src/OSS/configure.c:323 msgid "Volume controls Master not PCM" msgstr "Ses ayarı PCM deÄŸil, ana kanalı ayarlasın" -#: src/OSS/configure.c:337 src/sun/configure.c:392 +#: src/OSS/configure.c:329 msgid "Mixer" msgstr "Karıştırıcı" @@ -3894,11 +2232,11 @@ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" "USA." -#: src/pulse_audio/pulse_audio.c:691 +#: src/pulse_audio/pulse_audio.c:687 msgid "About Audacious PulseAudio Output Plugin" msgstr "Audacious PulseAudio Çıktı Eklentisi Hakkında" -#: src/pulse_audio/pulse_audio.c:692 +#: src/pulse_audio/pulse_audio.c:688 msgid "" "Audacious PulseAudio Output Plugin\n" "\n" @@ -3936,54 +2274,54 @@ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" "USA." -#: src/resample/plugin.c:78 +#: src/resample/plugin.c:91 #, fuzzy msgid "About Sample Rate Converter Plugin" msgstr "Durum Simgesi Eklentisi Hakkında" -#: src/resample/plugin.c:134 +#: src/resample/plugin.c:146 msgid "Sample Rate Converter Preferences" msgstr "" -#: src/resample/plugin.c:146 +#: src/resample/plugin.c:158 msgid "Rate mappings:" msgstr "" -#: src/resample/plugin.c:169 +#: src/resample/plugin.c:181 msgid "All others:" msgstr "" -#: src/resample/plugin.c:181 +#: src/resample/plugin.c:193 msgid "Method:" msgstr "" -#: src/scrobbler/configure.c:152 src/scrobbler/configure.c:228 +#: src/scrobbler/configure.c:128 src/scrobbler/configure.c:204 #, fuzzy msgid "Change password" msgstr "Çalan ÅŸarkıyı deÄŸiÅŸtir" -#: src/scrobbler/configure.c:174 +#: src/scrobbler/configure.c:150 msgid "Services" msgstr "Hizmetler" -#: src/scrobbler/configure.c:196 +#: src/scrobbler/configure.c:172 msgid "Username:" msgstr "Kullanıcı adı:" -#: src/scrobbler/configure.c:202 +#: src/scrobbler/configure.c:178 msgid "Password:" msgstr "Åžifre:" -#: src/scrobbler/configure.c:210 +#: src/scrobbler/configure.c:186 #, fuzzy msgid "Scrobbler URL:" msgstr "Scrobbler Hatası" -#: src/scrobbler/configure.c:242 +#: src/scrobbler/configure.c:218 msgid "Last.FM" msgstr "Last.FM" -#: src/scrobbler/configure.c:287 +#: src/scrobbler/configure.c:262 #, fuzzy msgid "Scrobbler" msgstr "Scrobbler Hatası" @@ -4003,16 +2341,34 @@ msgid "About Scrobbler Plugin" msgstr "Scrobbler Eklentisi Hakkında" +#: src/sdlout/plugin.c:58 +#, fuzzy +msgid "About SDL Output Plugin" +msgstr "JACK Çıkış Eklentisi 0.17 Hakkında" + +#: src/sdlout/plugin.c:78 +#, fuzzy +msgid "SDL error" +msgstr "Terör" + #: src/sid/xs_about.c:84 #, c-format msgid "About %s" msgstr "%s Hakkında" -#: src/sid/xs_config.c:322 +#: src/sid/xs_about.c:214 src/sid/xs_interface.c:1825 +msgid "Close" +msgstr "Kapat" + +#: src/sid/xs_config.c:326 #, fuzzy msgid " Error" msgstr "Hata" +#: src/sid/xs_config.c:326 +msgid "OK" +msgstr "Tamam" + #: src/sid/xs_fileinfo.c:151 msgid "General info" msgstr "Genel bilgi" @@ -4022,6 +2378,11 @@ msgid "Tune #%i: " msgstr "Tını #%i: " +#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 +#, c-format +msgid "Couldn't find pixmap file: %s" +msgstr "Resim dosyası bulunamadı: %s" + #: src/sid/xs_interface.c:234 msgid "Audacious-SID configuration" msgstr "Audacious-SID - yapılandırması" @@ -4334,15 +2695,15 @@ msgid "Use" msgstr "Kullan" -#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:430 +#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:447 msgid "Save" msgstr "Kaydet" -#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:429 +#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:446 msgid "Import" msgstr "İçe aktar" -#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:431 +#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:448 msgid "Delete" msgstr "Sil" @@ -4375,6 +2736,11 @@ msgid "Playtime:" msgstr "Oynatma süresi:" +#: src/sid/xs_interface.c:921 src/sid/xs_interface.c:975 +#: src/sid/xs_interface.c:1155 +msgid "seconds" +msgstr "saniye" + #: src/sid/xs_interface.c:928 msgid "Minimum playtime:" msgstr "En az oynatma süresi:" @@ -4474,10 +2840,6 @@ msgid "Song title format:" msgstr "Åžarkı adı biçimi:" -#: src/sid/xs_interface.c:1103 -msgid "Title" -msgstr "BaÅŸlık" - #: src/sid/xs_interface.c:1125 msgid "Add sub-tunes to playlist" msgstr "Parça listesine alttınılar ekle" @@ -4628,716 +2990,895 @@ msgid "No" msgstr "Hayır" -#: src/skins/plugin.c:179 +#: src/skins/plugin.c:167 msgid "About Skinned GUI" msgstr "" -#: src/skins/plugin.c:180 +#: src/skins/plugin.c:168 msgid "" "Copyright (c) 2008, by Tomasz MoÅ„ \n" "\n" msgstr "" -#: src/skins/plugin.c:196 -msgid "Skinned Interface" -msgstr "" - -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:254 #, fuzzy msgid "_Player:" msgstr "Oynatma süresi:" -#: src/skins/skins_cfg.c:316 +#: src/skins/skins_cfg.c:254 msgid "Select main player window font:" msgstr "" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:255 #, fuzzy msgid "_Playlist:" msgstr "Parça Listesini Seç" -#: src/skins/skins_cfg.c:317 +#: src/skins/skins_cfg.c:255 #, fuzzy msgid "Select playlist font:" msgstr "Parça Listesini Seç" -#: src/skins/skins_cfg.c:321 +#: src/skins/skins_cfg.c:259 #, fuzzy msgid "_Fonts" msgstr "Dosya ismi: " -#: src/skins/skins_cfg.c:323 -#, fuzzy -msgid "Use Bitmap fonts if available" -msgstr "Varsa CDDB kullan" - -#: src/skins/skins_cfg.c:323 -msgid "" -"Use bitmap fonts if they are available. Bitmap fonts do not support Unicode " -"strings." -msgstr "" - -#: src/skins/skins_cfg.c:324 -#, fuzzy -msgid "_Miscellaneous" -msgstr "Hizmetler" - -#: src/skins/skins_cfg.c:325 -msgid "Show separators in playlist" -msgstr "" - -#: src/skins/skins_cfg.c:327 -msgid "Show window manager decoration" +#: src/skins/skins_cfg.c:261 +msgid "Use bitmap fonts (supports ASCII only)" msgstr "" -#: src/skins/skins_cfg.c:328 -msgid "This enables the window manager to show decorations for windows." +#: src/skins/skins_cfg.c:263 +msgid "Scroll song title in both directions" msgstr "" -#: src/skins/skins_cfg.c:329 -msgid "Use two-way text scroller" -msgstr "" +#: src/skins/skins_cfg.c:346 +#, fuzzy +msgid "_Skin" +msgstr "Dosya ismi: " -#: src/skins/skins_cfg.c:330 -msgid "" -"If selected, the file information text in the main window will scroll back " -"and forth. If not selected, the text will only scroll in one direction." -msgstr "" +#: src/skins/skins_cfg.c:393 +#, fuzzy +msgid "Interface Preferences" +msgstr "AudioCompress seçenekleri" -#: src/skins/skins_cfg.c:331 -msgid "Disable inline gtk theme" -msgstr "" +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "Preamp" -#: src/skins/skins_cfg.c:333 -msgid "Random skin on play" +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" msgstr "" -#: src/skins/skins_cfg.c:334 -msgid "Allow loading incomplete skins" +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" msgstr "" -#: src/skins/skins_cfg.c:335 -msgid "" -"If selected, audacious won't refuse loading broken skins. Use only if your " -"favourite skin doesn't work" +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" msgstr "" -#: src/skins/skins_cfg.c:401 -msgid "Color Adjustment" -msgstr "" +#: src/skins/ui_equalizer.c:335 +#, fuzzy +msgid "250 Hz" +msgstr "22050 Hz " -#: src/skins/skins_cfg.c:407 -msgid "" -"Audacious allows you to alter the color balance of the skinned UI. The " -"sliders below will allow you to do this." -msgstr "" +#: src/skins/ui_equalizer.c:335 +#, fuzzy +msgid "500 Hz" +msgstr "11000 Hz" -#: src/skins/skins_cfg.c:417 +#: src/skins/ui_equalizer.c:335 #, fuzzy -msgid "Blue" -msgstr "Blues" +msgid "1 kHz" +msgstr "11 kHz" -#: src/skins/skins_cfg.c:424 -msgid "Green" -msgstr "" +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "2 kHz" +msgstr "22 kHz" -#: src/skins/skins_cfg.c:431 -msgid "Red" -msgstr "" +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "4 kHz" +msgstr "44 kHz" -#: src/skins/skins_cfg.c:569 +#: src/skins/ui_equalizer.c:336 #, fuzzy -msgid "_Skin" -msgstr "Dosya ismi: " +msgid "8 kHz" +msgstr "44 kHz" -#: src/skins/skins_cfg.c:574 -msgid "Color adjustment ..." -msgstr "" +#: src/skins/ui_equalizer.c:336 +#, fuzzy +msgid "16 kHz" +msgstr "44 kHz" -#: src/skins/ui_equalizer.c:463 +#: src/skins/ui_equalizer.c:378 #, fuzzy msgid "Audacious Equalizer" msgstr "Ekolayzır" -#: src/skins/ui_equalizer.c:991 +#: src/skins/ui_equalizer.c:884 msgid "Presets" msgstr "" -#: src/skins/ui_main.c:593 +#: src/skins/ui_main.c:444 msgid "kbps" msgstr "" -#: src/skins/ui_main.c:601 +#: src/skins/ui_main.c:452 #, fuzzy msgid "kHz" msgstr "Hz" -#: src/skins/ui_main.c:608 +#: src/skins/ui_main.c:459 #, fuzzy msgid "surround" msgstr "Surround" -#: src/skins/ui_main.c:981 -msgid "Audacious - visibility warning" -msgstr "" - -#: src/skins/ui_main.c:984 -msgid "Show main player window" -msgstr "" - -#: src/skins/ui_main.c:985 -msgid "Ignore" -msgstr "" - -#: src/skins/ui_main.c:991 -msgid "" -"Audacious has been started with all of its windows hidden.\n" -"You may want to show the player window again to control Audacious; " -"otherwise, you'll have to control it remotely via audtool or enabled plugins " -"(such as the statusicon plugin)." -msgstr "" - -#: src/skins/ui_main.c:997 -msgid "Always ignore, show/hide is controlled remotely" -msgstr "" - -#: src/skins/ui_main.c:1042 -msgid "Audacious - broken GTK engine usage warning" -msgstr "" - -#: src/skins/ui_main.c:1050 -#, c-format -msgid "" -"Broken GTK engine in use\n" -"\n" -"Audacious has detected that you are using a broken GTK engine.\n" -"\n" -"The theme engine you are using, %s, is incompatible with some of the " -"features used by modern skins. The incompatible features have been disabled " -"for this session.\n" -"\n" -"To use these features, please consider using a different GTK theme engine." -msgstr "" - -#: src/skins/ui_main.c:1061 -msgid "Do not display this warning again" -msgstr "" - -#: src/skins/ui_main.c:1269 +#: src/skins/ui_main.c:807 #, c-format -msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)" +msgid "Seek to %d:%-2.2d / %d:%-2.2d" msgstr "" -#: src/skins/ui_main.c:1299 +#: src/skins/ui_main.c:828 #, fuzzy, c-format msgid "Volume: %d%%" msgstr "Ses: (%)" -#: src/skins/ui_main.c:1322 +#: src/skins/ui_main.c:851 #, c-format msgid "Balance: %d%% left" msgstr "" -#: src/skins/ui_main.c:1324 +#: src/skins/ui_main.c:853 msgid "Balance: center" msgstr "" -#: src/skins/ui_main.c:1326 +#: src/skins/ui_main.c:855 #, c-format msgid "Balance: %d%% right" msgstr "" -#: src/skins/ui_main.c:1618 +#: src/skins/ui_main.c:981 #, fuzzy msgid "Options Menu" msgstr "Seçenekler" -#: src/skins/ui_main.c:1622 +#: src/skins/ui_main.c:985 msgid "Disable 'Always On Top'" msgstr "" -#: src/skins/ui_main.c:1624 +#: src/skins/ui_main.c:987 msgid "Enable 'Always On Top'" msgstr "" -#: src/skins/ui_main.c:1627 +#: src/skins/ui_main.c:990 #, fuzzy msgid "File Info Box" msgstr "Dosya Bilgisi" -#: src/skins/ui_main.c:1631 -msgid "Disable 'GUI Scaling'" -msgstr "" - -#: src/skins/ui_main.c:1633 -#, fuzzy -msgid "Enable 'GUI Scaling'" -msgstr "Ses örneklemesini etkinleÅŸtir" - -#: src/skins/ui_main.c:1636 +#: src/skins/ui_main.c:995 msgid "Visualization Menu" msgstr "" -#: src/skins/ui_main.c:2348 +#: src/skins/ui_main.c:1645 msgid "Single mode." msgstr "" -#: src/skins/ui_main.c:2350 +#: src/skins/ui_main.c:1647 #, fuzzy msgid "Playlist mode." msgstr "Parça Listesini Seç" -#: src/skins/ui_main.c:2374 +#: src/skins/ui_main.c:1669 msgid "Stopping after song." msgstr "" -#: src/skins/ui_main.c:2376 +#: src/skins/ui_main.c:1671 msgid "Not stopping after song." msgstr "" -#: src/skins/ui_manager.c:50 src/skins/ui_manager.c:51 +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 msgid "Autoscroll Songname" msgstr "" -#: src/skins/ui_manager.c:56 src/skins/ui_manager.c:57 +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 #, fuzzy msgid "Peaks" msgstr "Pranks" -#: src/skins/ui_manager.c:68 src/skins/ui_manager.c:69 +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +#, fuzzy +msgid "Repeat" +msgstr "Beat" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 msgid "Show Player" msgstr "" -#: src/skins/ui_manager.c:71 src/skins/ui_manager.c:72 +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 msgid "Show Playlist Editor" msgstr "" -#: src/skins/ui_manager.c:74 src/skins/ui_manager.c:75 +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 #, fuzzy msgid "Show Equalizer" msgstr "Ekolayzır" -#: src/skins/ui_manager.c:77 src/skins/ui_manager.c:78 +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 msgid "Always on Top" msgstr "" -#: src/skins/ui_manager.c:80 src/skins/ui_manager.c:81 +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 msgid "Put on All Workspaces" msgstr "" -#: src/skins/ui_manager.c:83 src/skins/ui_manager.c:84 +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 msgid "Roll up Player" msgstr "" -#: src/skins/ui_manager.c:86 src/skins/ui_manager.c:87 +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 msgid "Roll up Playlist Editor" msgstr "" -#: src/skins/ui_manager.c:89 src/skins/ui_manager.c:90 +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 msgid "Roll up Equalizer" msgstr "" -#: src/skins/ui_manager.c:92 src/sndstretch/sndstretch_xmms.c:393 -msgid "Scale" -msgstr "Yayılma" - -#: src/skins/ui_manager.c:93 -msgid "DoubleSize" -msgstr "" - -#: src/skins/ui_manager.c:95 src/skins/ui_manager.c:96 -msgid "Easy Move" -msgstr "" - -#: src/skins/ui_manager.c:104 +#: src/skins/ui_manager.c:115 #, fuzzy msgid "Analyzer" msgstr "Spektrum Analizi" -#: src/skins/ui_manager.c:105 +#: src/skins/ui_manager.c:116 #, fuzzy msgid "Scope" msgstr "Durdur:" -#: src/skins/ui_manager.c:106 +#: src/skins/ui_manager.c:117 msgid "Voiceprint" msgstr "" -#: src/skins/ui_manager.c:107 +#: src/skins/ui_manager.c:118 msgid "Off" msgstr "" -#: src/skins/ui_manager.c:111 src/skins/ui_manager.c:128 -#: src/skins/ui_manager.c:134 +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 #, fuzzy msgid "Normal" msgstr "Biçim" -#: src/skins/ui_manager.c:112 src/skins/ui_manager.c:129 +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 #, fuzzy msgid "Fire" msgstr "TaÅŸlama" -#: src/skins/ui_manager.c:113 +#: src/skins/ui_manager.c:124 msgid "Vertical Lines" msgstr "" -#: src/skins/ui_manager.c:117 +#: src/skins/ui_manager.c:128 #, fuzzy msgid "Lines" msgstr "dakika" -#: src/skins/ui_manager.c:118 +#: src/skins/ui_manager.c:129 #, fuzzy msgid "Bars" msgstr "Bas" -#: src/skins/ui_manager.c:122 +#: src/skins/ui_manager.c:133 #, fuzzy msgid "Dot Scope" msgstr "Tekrarlama yapma" -#: src/skins/ui_manager.c:123 +#: src/skins/ui_manager.c:134 msgid "Line Scope" msgstr "" -#: src/skins/ui_manager.c:124 +#: src/skins/ui_manager.c:135 msgid "Solid Scope" msgstr "" -#: src/skins/ui_manager.c:130 +#: src/skins/ui_manager.c:141 msgid "Ice" msgstr "" -#: src/skins/ui_manager.c:135 +#: src/skins/ui_manager.c:146 msgid "Smooth" msgstr "" -#: src/skins/ui_manager.c:139 src/skins/ui_manager.c:147 +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 #, fuzzy msgid "Slowest" msgstr "Showtunes" -#: src/skins/ui_manager.c:140 src/skins/ui_manager.c:148 +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 #, fuzzy msgid "Slow" msgstr "Slow Jam" -#: src/skins/ui_manager.c:141 src/skins/ui_manager.c:149 +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 msgid "Medium" msgstr "" -#: src/skins/ui_manager.c:142 src/skins/ui_manager.c:150 +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 #, fuzzy msgid "Fast" msgstr "Biçim" -#: src/skins/ui_manager.c:143 src/skins/ui_manager.c:151 +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 msgid "Fastest" msgstr "" -#: src/skins/ui_manager.c:155 +#: src/skins/ui_manager.c:166 msgid "Time Elapsed" msgstr "" -#: src/skins/ui_manager.c:156 +#: src/skins/ui_manager.c:167 msgid "Time Remaining" msgstr "" -#: src/skins/ui_manager.c:185 +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +#, fuzzy +msgid "Pause" +msgstr "Bekletme Açık" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +#, fuzzy +msgid "Previous" +msgstr "Önceki Parça:" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +#, fuzzy +msgid "Next" +msgstr "Metin" + +#: src/skins/ui_manager.c:196 #, fuzzy msgid "Visualization" msgstr "Kurum:" -#: src/skins/ui_manager.c:186 +#: src/skins/ui_manager.c:197 msgid "Visualization Mode" msgstr "" -#: src/skins/ui_manager.c:187 +#: src/skins/ui_manager.c:198 msgid "Analyzer Mode" msgstr "" -#: src/skins/ui_manager.c:188 +#: src/skins/ui_manager.c:199 msgid "Scope Mode" msgstr "" -#: src/skins/ui_manager.c:189 +#: src/skins/ui_manager.c:200 msgid "Voiceprint Mode" msgstr "" -#: src/skins/ui_manager.c:190 +#: src/skins/ui_manager.c:201 msgid "WindowShade VU Mode" msgstr "" -#: src/skins/ui_manager.c:191 +#: src/skins/ui_manager.c:202 msgid "Analyzer Falloff" msgstr "" -#: src/skins/ui_manager.c:192 +#: src/skins/ui_manager.c:203 msgid "Peaks Falloff" msgstr "" -#: src/skins/ui_manager.c:202 src/skins/ui_manager.c:203 +#: src/skins/ui_manager.c:208 +#, fuzzy +msgid "Playlist" +msgstr "Parça Listesini Seç" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +#, fuzzy +msgid "New Playlist" +msgstr "Parça Listesini Seç" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 #, fuzzy msgid "Select Next Playlist" msgstr "Parça Listesini Seç" -#: src/skins/ui_manager.c:205 src/skins/ui_manager.c:206 +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 #, fuzzy msgid "Select Previous Playlist" msgstr "Parça Listesini Seç" +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +#, fuzzy +msgid "Delete Playlist" +msgstr "Parça Listesini Seç" + #: src/skins/ui_manager.c:222 -msgid "Refresh List" -msgstr "" +#, fuzzy +msgid "Import Playlist" +msgstr "Hızlı Parça Listesi Bilgisi" -#: src/skins/ui_manager.c:226 -msgid "List Manager" +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." msgstr "" -#: src/skins/ui_manager.c:236 -msgid "Add Internet Address..." -msgstr "" +#: src/skins/ui_manager.c:226 +#, fuzzy +msgid "Export Playlist" +msgstr "Hızlı Parça Listesi Bilgisi" -#: src/skins/ui_manager.c:240 -msgid "Add Files..." -msgstr "" +#: src/skins/ui_manager.c:227 +#, fuzzy +msgid "Saves the selected playlist." +msgstr "Parça Listesini Seç" -#: src/skins/ui_manager.c:246 -msgid "Search and Select" -msgstr "" +#: src/skins/ui_manager.c:229 +#, fuzzy +msgid "Save All Playlists" +msgstr "Parça Listesini Seç" -#: src/skins/ui_manager.c:247 +#: src/skins/ui_manager.c:230 msgid "" -"Searches the playlist and selects playlist entries based on specific " -"criteria." +"Saves all the playlists that are open. Note that this is done automatically " +"when Audacious quits." msgstr "" -#: src/skins/ui_manager.c:250 -#, fuzzy -msgid "Invert Selection" -msgstr "Biçim seçimi" +#: src/skins/ui_manager.c:234 +msgid "Refresh List" +msgstr "" -#: src/skins/ui_manager.c:251 -msgid "Inverts the selected and unselected entries." +#: src/skins/ui_manager.c:235 +msgid "Refreshes metadata associated with a playlist entry." msgstr "" -#: src/skins/ui_manager.c:268 -msgid "Clear Queue" +#: src/skins/ui_manager.c:238 +msgid "List Manager" msgstr "" -#: src/skins/ui_manager.c:269 -msgid "Clears the queue associated with this playlist." +#: src/skins/ui_manager.c:239 +msgid "Opens the playlist manager." msgstr "" -#: src/skins/ui_manager.c:272 -msgid "Remove Unavailable Files" +#: src/skins/ui_manager.c:243 +msgid "View" msgstr "" -#: src/skins/ui_manager.c:273 -msgid "Removes unavailable files from the playlist." +#: src/skins/ui_manager.c:244 +msgid "Interface" msgstr "" -#: src/skins/ui_manager.c:276 +#: src/skins/ui_manager.c:245 +#, fuzzy +msgid "Interface Preferences ..." +msgstr "AudioCompress seçenekleri" + +#: src/skins/ui_manager.c:249 +msgid "Add Internet Address..." +msgstr "" + +#: src/skins/ui_manager.c:250 +msgid "Adds a remote track to the playlist." +msgstr "" + +#: src/skins/ui_manager.c:253 +msgid "Add Files..." +msgstr "" + +#: src/skins/ui_manager.c:254 +#, fuzzy +msgid "Adds files to the playlist." +msgstr "Parça listesine alttınılar ekle" + +#: src/skins/ui_manager.c:259 +msgid "Search and Select" +msgstr "" + +#: src/skins/ui_manager.c:260 +msgid "" +"Searches the playlist and selects playlist entries based on specific " +"criteria." +msgstr "" + +#: src/skins/ui_manager.c:263 +#, fuzzy +msgid "Invert Selection" +msgstr "Biçim seçimi" + +#: src/skins/ui_manager.c:264 +msgid "Inverts the selected and unselected entries." +msgstr "" + +#: src/skins/ui_manager.c:267 +#, fuzzy +msgid "Select All" +msgstr "Parça Listesini Seç" + +#: src/skins/ui_manager.c:268 +msgid "Selects all of the playlist entries." +msgstr "" + +#: src/skins/ui_manager.c:271 +#, fuzzy +msgid "Select None" +msgstr "Deri Dosyasını Seçin" + +#: src/skins/ui_manager.c:272 +msgid "Deselects all of the playlist entries." +msgstr "" + +#: src/skins/ui_manager.c:277 +#, fuzzy +msgid "Remove All" +msgstr "Kaldır" + +#: src/skins/ui_manager.c:278 +msgid "Removes all entries from the playlist." +msgstr "" + +#: src/skins/ui_manager.c:281 +msgid "Clear Queue" +msgstr "" + +#: src/skins/ui_manager.c:282 +msgid "Clears the queue associated with this playlist." +msgstr "" + +#: src/skins/ui_manager.c:285 +msgid "Remove Unavailable Files" +msgstr "" + +#: src/skins/ui_manager.c:286 +msgid "Removes unavailable files from the playlist." +msgstr "" + +#: src/skins/ui_manager.c:289 msgid "Remove Duplicates" msgstr "" -#: src/skins/ui_manager.c:279 +#: src/skins/ui_manager.c:291 src/skins/ui_manager.c:323 +#: src/skins/ui_manager.c:353 +#, fuzzy +msgid "By Title" +msgstr "BaÅŸlık" + +#: src/skins/ui_manager.c:292 msgid "Removes duplicate entries from the playlist by title." msgstr "" -#: src/skins/ui_manager.c:282 src/skins/ui_manager.c:318 -#: src/skins/ui_manager.c:348 +#: src/skins/ui_manager.c:295 src/skins/ui_manager.c:335 +#: src/skins/ui_manager.c:365 #, fuzzy msgid "By Filename" msgstr "Dosya adı" -#: src/skins/ui_manager.c:283 +#: src/skins/ui_manager.c:296 msgid "Removes duplicate entries from the playlist by filename." msgstr "" -#: src/skins/ui_manager.c:286 src/skins/ui_manager.c:322 -#: src/skins/ui_manager.c:352 +#: src/skins/ui_manager.c:299 src/skins/ui_manager.c:339 +#: src/skins/ui_manager.c:369 #, fuzzy msgid "By Path + Filename" msgstr "Dosya adı" -#: src/skins/ui_manager.c:287 +#: src/skins/ui_manager.c:300 msgid "Removes duplicate entries from the playlist by their full path." msgstr "" -#: src/skins/ui_manager.c:300 +#: src/skins/ui_manager.c:303 +msgid "Remove Unselected" +msgstr "" + +#: src/skins/ui_manager.c:304 +msgid "Remove unselected entries from the playlist." +msgstr "" + +#: src/skins/ui_manager.c:307 +msgid "Remove Selected" +msgstr "" + +#: src/skins/ui_manager.c:308 +msgid "Remove selected entries from the playlist." +msgstr "" + +#: src/skins/ui_manager.c:313 +#, fuzzy +msgid "Randomize List" +msgstr "Kaydet" + +#: src/skins/ui_manager.c:314 +#, fuzzy +msgid "Randomizes the playlist." +msgstr "Parça listesine alttınılar ekle" + +#: src/skins/ui_manager.c:317 msgid "Reverse List" msgstr "" -#: src/skins/ui_manager.c:301 +#: src/skins/ui_manager.c:318 msgid "Reverses the playlist." msgstr "" -#: src/skins/ui_manager.c:304 +#: src/skins/ui_manager.c:321 #, fuzzy msgid "Sort List" msgstr "Sanatçı:" -#: src/skins/ui_manager.c:307 src/skins/ui_manager.c:337 +#: src/skins/ui_manager.c:324 src/skins/ui_manager.c:354 msgid "Sorts the list by title." msgstr "" -#: src/skins/ui_manager.c:311 src/skins/ui_manager.c:341 +#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +#, fuzzy +msgid "By Album" +msgstr "Albüm:" + +#: src/skins/ui_manager.c:328 src/skins/ui_manager.c:358 msgid "Sorts the list by album." msgstr "" -#: src/skins/ui_manager.c:315 src/skins/ui_manager.c:345 +#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +#, fuzzy +msgid "By Artist" +msgstr "Sanatçı:" + +#: src/skins/ui_manager.c:332 src/skins/ui_manager.c:362 msgid "Sorts the list by artist." msgstr "" -#: src/skins/ui_manager.c:319 src/skins/ui_manager.c:349 +#: src/skins/ui_manager.c:336 src/skins/ui_manager.c:366 msgid "Sorts the list by filename." msgstr "" -#: src/skins/ui_manager.c:323 src/skins/ui_manager.c:353 +#: src/skins/ui_manager.c:340 src/skins/ui_manager.c:370 msgid "Sorts the list by full pathname." msgstr "" -#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +#: src/skins/ui_manager.c:343 src/skins/ui_manager.c:373 #, fuzzy msgid "By Date" msgstr "Tarih:" -#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 +#: src/skins/ui_manager.c:344 src/skins/ui_manager.c:374 msgid "Sorts the list by modification time." msgstr "" -#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 +#: src/skins/ui_manager.c:347 src/skins/ui_manager.c:377 +#, fuzzy +msgid "By Track Number" +msgstr "Parça numarası:" + +#: src/skins/ui_manager.c:348 src/skins/ui_manager.c:378 msgid "Sorts the list by track number." msgstr "" -#: src/skins/ui_manager.c:334 +#: src/skins/ui_manager.c:351 #, fuzzy msgid "Sort Selected" msgstr "Biçim seçimi" -#: src/skins/ui_manager.c:373 +#: src/skins/ui_manager.c:387 +#, fuzzy +msgid "File" +msgstr "Filtreler" + +#: src/skins/ui_manager.c:388 +msgid "Help" +msgstr "Yardım" + +#: src/skins/ui_manager.c:390 msgid "Plugin Services" msgstr "" -#: src/skins/ui_manager.c:384 +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:395 +#, fuzzy +msgid "View Track Details" +msgstr "Parça Kazancı Kullan" + +#: src/skins/ui_manager.c:393 src/skins/ui_manager.c:396 +msgid "View track details" +msgstr "" + +#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 +#, fuzzy +msgid "About Audacious" +msgstr "LIRC Audacious Eklentisi Hakkında" + +#: src/skins/ui_manager.c:401 #, fuzzy msgid "Play File" msgstr "Oynatma süresi:" -#: src/skins/ui_manager.c:387 +#: src/skins/ui_manager.c:402 +#, fuzzy +msgid "Load and play a file" +msgstr "Çalıcı baÅŸladığında SF'yi yükle" + +#: src/skins/ui_manager.c:404 #, fuzzy msgid "Play Location" msgstr "Yer:" -#: src/skins/ui_manager.c:428 +#: src/skins/ui_manager.c:405 +#, fuzzy +msgid "Play media from the selected location" +msgstr "Seçilen eylemi onayla" + +#: src/skins/ui_manager.c:407 +msgid "Plugin services" +msgstr "" + +#: src/skins/ui_manager.c:409 +msgid "Preferences" +msgstr "" + +#: src/skins/ui_manager.c:410 +msgid "Open preferences window" +msgstr "" + +#: src/skins/ui_manager.c:413 +#, fuzzy +msgid "Quit Audacious" +msgstr "%s - Audacious" + +#: src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Set A-B" +msgstr "" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Clear A-B" +msgstr "" + +#: src/skins/ui_manager.c:421 src/skins/ui_manager.c:422 +msgid "Jump to Playlist Start" +msgstr "" + +#: src/skins/ui_manager.c:427 src/skins/ui_manager.c:428 +#, fuzzy +msgid "Jump to Time" +msgstr "Dosyaya Atla:" + +#: src/skins/ui_manager.c:430 +msgid "Queue Toggle" +msgstr "" + +#: src/skins/ui_manager.c:431 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "" + +#: src/skins/ui_manager.c:434 +msgid "Copy" +msgstr "" + +#: src/skins/ui_manager.c:436 +#, fuzzy +msgid "Cut" +msgstr "Kült" + +#: src/skins/ui_manager.c:438 +msgid "Paste" +msgstr "" + +#: src/skins/ui_manager.c:445 msgid "Load" msgstr "" -#: src/skins/ui_manager.c:433 src/skins/ui_manager.c:454 -#: src/skins/ui_manager.c:469 +#: src/skins/ui_manager.c:450 src/skins/ui_manager.c:471 +#: src/skins/ui_manager.c:486 #, fuzzy msgid "Preset" msgstr "Port" -#: src/skins/ui_manager.c:434 +#: src/skins/ui_manager.c:451 msgid "Load preset" msgstr "" -#: src/skins/ui_manager.c:436 src/skins/ui_manager.c:457 -#: src/skins/ui_manager.c:472 +#: src/skins/ui_manager.c:453 src/skins/ui_manager.c:474 +#: src/skins/ui_manager.c:489 msgid "Auto-load preset" msgstr "" -#: src/skins/ui_manager.c:437 +#: src/skins/ui_manager.c:454 msgid "Load auto-load preset" msgstr "" -#: src/skins/ui_manager.c:440 +#: src/skins/ui_manager.c:457 #, fuzzy msgid "Load default preset into equalizer" msgstr "Öntanımlı deÄŸerleri yükle" -#: src/skins/ui_manager.c:442 +#: src/skins/ui_manager.c:459 #, fuzzy msgid "Zero" msgstr "Retro" -#: src/skins/ui_manager.c:443 +#: src/skins/ui_manager.c:460 msgid "Set equalizer preset levels to zero" msgstr "" -#: src/skins/ui_manager.c:445 +#: src/skins/ui_manager.c:462 #, fuzzy msgid "From file" msgstr "Profil: %s" -#: src/skins/ui_manager.c:446 +#: src/skins/ui_manager.c:463 #, fuzzy msgid "Load preset from file" msgstr "Dosya okunamıyor\n" -#: src/skins/ui_manager.c:448 +#: src/skins/ui_manager.c:465 msgid "From WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:449 +#: src/skins/ui_manager.c:466 msgid "Load preset from WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:451 +#: src/skins/ui_manager.c:468 msgid "WinAMP Presets" msgstr "" -#: src/skins/ui_manager.c:452 +#: src/skins/ui_manager.c:469 msgid "Import WinAMP presets" msgstr "" -#: src/skins/ui_manager.c:455 +#: src/skins/ui_manager.c:472 msgid "Save preset" msgstr "" -#: src/skins/ui_manager.c:458 +#: src/skins/ui_manager.c:475 msgid "Save auto-load preset" msgstr "" -#: src/skins/ui_manager.c:461 +#: src/skins/ui_manager.c:478 #, fuzzy msgid "Save default preset" msgstr "Öntanımlı deÄŸerleri yükle" -#: src/skins/ui_manager.c:463 +#: src/skins/ui_manager.c:480 #, fuzzy msgid "To file" msgstr "STIL dosyası:" -#: src/skins/ui_manager.c:464 +#: src/skins/ui_manager.c:481 msgid "Save preset to file" msgstr "" -#: src/skins/ui_manager.c:466 +#: src/skins/ui_manager.c:483 msgid "To WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:467 +#: src/skins/ui_manager.c:484 msgid "Save preset to WinAMP EQF file" msgstr "" -#: src/skins/ui_manager.c:470 +#: src/skins/ui_manager.c:487 #, fuzzy msgid "Delete preset" msgstr "Sil" -#: src/skins/ui_manager.c:473 +#: src/skins/ui_manager.c:490 msgid "Delete auto-load preset" msgstr "" -#: src/skins/ui_playlist.c:374 +#: src/skins/ui_playlist.c:244 msgid "Search entries in active playlist" msgstr "" -#: src/skins/ui_playlist.c:382 +#: src/skins/ui_playlist.c:252 msgid "" "Select entries in playlist by filling one or more fields. Fields use regular " "expressions syntax, case-insensitive. If you don't know how regular " @@ -5345,128 +3886,66 @@ "for." msgstr "" -#: src/skins/ui_playlist.c:397 +#: src/skins/ui_playlist.c:260 +msgid "Title: " +msgstr "BaÅŸlık: " + +#: src/skins/ui_playlist.c:267 #, fuzzy msgid "Album: " msgstr "Albüm:" -#: src/skins/ui_playlist.c:404 +#: src/skins/ui_playlist.c:274 #, fuzzy msgid "Artist: " msgstr "Sanatçı:" -#: src/skins/ui_playlist.c:411 +#: src/skins/ui_playlist.c:281 #, fuzzy msgid "Filename: " msgstr "Dosya adı:" -#: src/skins/ui_playlist.c:419 +#: src/skins/ui_playlist.c:289 msgid "Clear previous selection before searching" msgstr "" -#: src/skins/ui_playlist.c:422 +#: src/skins/ui_playlist.c:292 msgid "Automatically toggle queue for matching entries" msgstr "" -#: src/skins/ui_playlist.c:425 +#: src/skins/ui_playlist.c:295 msgid "Create a new playlist with matching entries" msgstr "" -#: src/skins/ui_playlist.c:772 -#, fuzzy -msgid "Save as Static Playlist" -msgstr "Parça Listesini Seç" - -#: src/skins/ui_playlist.c:779 -msgid "Use Relative Path" -msgstr "" - -#: src/skins/ui_playlist.c:802 -#, fuzzy -msgid "Load Playlist" -msgstr "Hızlı Parça Listesi Bilgisi" - -#: src/skins/ui_playlist.c:815 -#, fuzzy -msgid "Save Playlist" -msgstr "Parça Listesini Seç" - -#: src/skins/ui_playlist.c:1146 +#: src/skins/ui_playlist.c:762 #, fuzzy msgid "Audacious Playlist Editor" msgstr "Hızlı Parça Listesi Bilgisi" -#: src/skins/ui_playlist.c:1206 +#: src/skins/ui_playlist.c:809 #, c-format msgid "%s (%d of %d)" msgstr "" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "31 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "63 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "125 Hz" -msgstr "" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "250 Hz" -msgstr "22050 Hz " - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "500 Hz" -msgstr "11000 Hz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "1 kHz" -msgstr "11 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:436 -#, fuzzy -msgid "2 kHz" -msgstr "22 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "4 kHz" -msgstr "44 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "8 kHz" -msgstr "44 kHz" - -#: src/skins/ui_skinned_equalizer_slider.c:437 -#, fuzzy -msgid "16 kHz" -msgstr "44 kHz" - -#: src/skins/ui_skinselector.c:179 +#: src/skins/ui_skinselector.c:162 msgid "Archived Winamp 2.x skin" msgstr "" -#: src/skins/ui_skinselector.c:184 +#: src/skins/ui_skinselector.c:167 msgid "Unarchived Winamp 2.x skin" msgstr "" -#: src/skins/util.c:834 +#: src/skins/util.c:773 #, fuzzy, c-format msgid "Could not create directory (%s): %s\n" msgstr "sidFilename ('%s') ayrılamadı\n" -#: src/sndfile/plugin.c:531 +#: src/sndfile/plugin.c:438 #, fuzzy msgid "About sndfile plugin" msgstr "sndfile WAV eklentisi" -#: src/sndfile/plugin.c:532 +#: src/sndfile/plugin.c:439 msgid "" "Adapted for Audacious usage by Tony Vroon \n" "from the xmms_sndfile plugin which is:\n" @@ -5509,55 +3988,63 @@ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" "USA." -#: src/sndstretch/sndstretch_xmms.c:175 +#: src/sndstretch/sndstretch_xmms.c:155 msgid "About SndStretch" msgstr "SndStretch Hakkında" -#: src/sndstretch/sndstretch_xmms.c:336 +#: src/sndstretch/sndstretch_xmms.c:313 msgid "Volume corr." msgstr "Ses düzeltme" -#: src/sndstretch/sndstretch_xmms.c:337 +#: src/sndstretch/sndstretch_xmms.c:314 msgid "Short Overlap" msgstr "Kısa Bindirme" -#: src/sndstretch/sndstretch_xmms.c:391 +#: src/sndstretch/sndstretch_xmms.c:360 msgid "Speed" msgstr "Hız" -#: src/sndstretch/sndstretch_xmms.c:392 +#: src/sndstretch/sndstretch_xmms.c:361 msgid "Pitch" msgstr "Tizlik" -#: src/sndstretch/sndstretch_xmms.c:413 +#: src/sndstretch/sndstretch_xmms.c:362 +msgid "Scale" +msgstr "Yayılma" + +#: src/sndstretch/sndstretch_xmms.c:363 +msgid "Options" +msgstr "Seçenekler" + +#: src/sndstretch/sndstretch_xmms.c:382 msgid "SndStretch - Configuration" msgstr "SndStretch Ayarları" -#: src/song_change/song_change.c:397 +#: src/song_change/song_change.c:464 msgid "Command to run when Audacious starts a new song." msgstr "Audacious yeni bir ÅŸarkı baÅŸlattığında çalışacak komut." -#: src/song_change/song_change.c:398 src/song_change/song_change.c:402 -#: src/song_change/song_change.c:406 src/song_change/song_change.c:410 +#: src/song_change/song_change.c:465 src/song_change/song_change.c:469 +#: src/song_change/song_change.c:473 src/song_change/song_change.c:477 msgid "Command:" msgstr "Komut:" -#: src/song_change/song_change.c:401 +#: src/song_change/song_change.c:468 msgid "Command to run toward the end of a song." msgstr "Bir ÅŸarkının sonuna doÄŸru çalışacak komut." -#: src/song_change/song_change.c:405 +#: src/song_change/song_change.c:472 msgid "Command to run when Audacious reaches the end of the playlist." msgstr "Audacious parça listesinin sonuna ulaÅŸtığında çalıştırılacak komut." -#: src/song_change/song_change.c:409 +#: src/song_change/song_change.c:476 msgid "" "Command to run when title changes for a song (i.e. network streams titles)." msgstr "" "Bir ÅŸarkı için baÅŸlık deÄŸiÅŸtiÄŸinde çalıştırılacak komut (örneÄŸin aÄŸ yayını " "baÅŸlıkları)." -#: src/song_change/song_change.c:413 +#: src/song_change/song_change.c:480 #, fuzzy msgid "" "You can use the following format strings which\n" @@ -5571,7 +4058,10 @@ "%n or %s: Song name\n" "%r: Rate (in bits per second)\n" "%t: Playlist position (%02d)\n" -"%p: Currently playing (1 or 0)" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" msgstr "" "Komut vermeden önce deÄŸiÅŸtirilecek olan alttaki\n" " biçimi kullanabilirsiniz\n" @@ -5586,7 +4076,7 @@ "%%t: Çalma listesi durumu (%%02d)\n" "%%p: Åžu an oynatılan (1 or 0)" -#: src/song_change/song_change.c:437 +#: src/song_change/song_change.c:507 msgid "" "Parameters passed to the shell should be encapsulated in " "quotes. Doing otherwise is a security risk." @@ -5594,312 +4084,1661 @@ "KabuÄŸa yollanan parametreler tırnak içinde belirtilmeli. " "Aksi takdirde güvenlik sorunu yaratır. " -#: src/song_change/song_change.c:448 -msgid "Commands" -msgstr "Komutlar" +#: src/song_change/song_change.c:518 +msgid "Commands" +msgstr "Komutlar" + +#: src/song_change/song_change.c:555 +#, fuzzy +msgid "Song Change" +msgstr "Åžarkı mesajı" + +#: src/statusicon/statusicon.c:378 +msgid "About Status Icon Plugin" +msgstr "Durum Simgesi Eklentisi Hakkında" + +#: src/statusicon/statusicon.c:379 +#, fuzzy +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager.\n" +msgstr "" +"\n" +"Yazan Giacomo Lozito < james@develia.org >\n" +"\n" +"Bu eklenti durum simgesinin sistem araç cubuÄŸunda görüntülenmesini saÄŸlar.\n" + +#: src/statusicon/statusicon.c:447 +msgid "Status Icon Plugin - Preferences" +msgstr "Durum Simgesi Eklentisi - Tercihler" + +#: src/statusicon/statusicon.c:457 +msgid "Right-Click Menu" +msgstr "SaÄŸ-Tık Menüsü" + +#: src/statusicon/statusicon.c:462 +msgid "Small playback menu #1" +msgstr "Küçük oynatma menüsü #1" + +#: src/statusicon/statusicon.c:465 +msgid "Small playback menu #2" +msgstr "Küçük oynatma menüsü #2" + +#: src/statusicon/statusicon.c:481 +msgid "Mouse Scroll Action" +msgstr "Fare TekerleÄŸi Eylemi" + +#: src/statusicon/statusicon.c:485 +msgid "Change volume" +msgstr "Ses seviyesini deÄŸiÅŸtir" + +#: src/statusicon/statusicon.c:487 +msgid "Change playing song" +msgstr "Çalan ÅŸarkıyı deÄŸiÅŸtir" + +#: src/statusicon/statusicon.c:500 +#, fuzzy +msgid "Other settings" +msgstr "Karıştırıcı ayarları" + +#: src/statusicon/statusicon.c:505 +msgid "Disable the popup window" +msgstr "" + +#: src/statusicon/statusicon.c:512 +msgid "Close to the notification area (system tray)" +msgstr "" + +#: src/stereo_plugin/stereo.c:41 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin 1999." +msgstr "" +"Ekstra Stereo Eklentisi\n" +"\n" +"Johan Levin 1999." + +#: src/stereo_plugin/stereo.c:65 +msgid "About Extra Stereo Plugin" +msgstr "Ekstra Stereo Eklentisi Hakkında" + +#: src/stereo_plugin/stereo.c:102 +msgid "Configure Extra Stereo" +msgstr "Ekstra Stereo Eklentisini Yapılandır" + +#: src/tonegen/tonegen.c:48 +msgid "About Tone Generator" +msgstr "Ton OluÅŸturucusu Hakkında" + +#: src/tonegen/tonegen.c:50 +msgid "" +"Sinus tone generator by Haavard Kvaalen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" +msgstr "" +"Sinus tonu oluÅŸturucusu - Haavard Kvaalen \n" +"Düzenleyen - Daniel J. Peng \n" +"\n" +"Kullanmak için bir URL ekleyin: tone://frequency1;frequency2;frequency3;...\n" +"ör: 2000Hz ton ve 2005Hz ton çalmak için tone://2000;2005" + +#: src/tonegen/tonegen.c:100 +#, c-format +msgid "%s %.1f Hz" +msgstr "%s %.1f Hz" + +#: src/tonegen/tonegen.c:100 +msgid "Tone Generator: " +msgstr "Ton OluÅŸturucu: " + +#: src/unix-io/gtk.c:34 +#, fuzzy +msgid "About File I/O Plugin" +msgstr "ESounD Eklentisi Hakkında" + +#: src/vorbis/configure.c:31 +msgid "Override generic titles" +msgstr "Genel baÅŸlıkları geçersiz kıl" + +#: src/vorbis/configure.c:32 +msgid "Title format:" +msgstr "BaÅŸlık biçimi:" + +#: src/vorbis/configure.c:36 +#, fuzzy +msgid "Ogg Vorbis Tags" +msgstr "Ogg Vorbis Etiketleri:" + +#: src/vorbis/configure.c:69 +msgid "Ogg Vorbis Audio Plugin Configuration" +msgstr "Ogg Vorbis Ses Eklentisi Yapılandırması" + +#: src/vorbis/vorbis.c:581 +msgid "About Ogg Vorbis Audio Plugin" +msgstr "OGG Vorbis Ses Eklentisi Hakkında" + +#: src/vorbis/vorbis.c:586 +#, fuzzy +msgid "" +"Ogg Vorbis Plugin by the Xiph.org Foundation\n" +"\n" +"Original code by\n" +"Tony Arcieri \n" +"Contributions from\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visit the Xiph.org Foundation at http://www.xiph.org/\n" +msgstr "" +"Xiph.org Kurumu tarafından hazırlanan Ogg Vorbis Eklentisi\n" +"\n" +"Orjinal Kod\n" +"Tony Arcieri \n" +"Dağıtıma Hazırlayanlar\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"\n" +"Xiph.org Vakfını buradan ziyaret edebilirsiniz http://www.xiph.org/\n" + +#: src/vtx/about.c:14 +msgid "About Vortex Player" +msgstr "Vortex Player Hakkında" + +#: src/vtx/about.c:15 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"\n" +"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" +"and other AY/YM music sites.\n" +"\n" +"Audacious implementation by Pavel Vymetalek " +msgstr "" +"Vortex dosya formatı oynatıcısı geliÅŸtiricisi Sashnov Alexander \n" +"Roman Sherbakov tarafından geliÅŸtirilen in_vtx.dll " +"kaynak kodundan esinlenilmiÅŸtir\n" +"\n" +"VTX biçiminde müzik dosyalarına http://vtx.microfor.ru/music.htm\n" +"ve diÄŸer AY/YM müzik sitelerinden eriÅŸebilirsiniz.\n" +"\n" +"Audacious desteÄŸi Pavel Vymetalek " + +#: src/wavpack/wavpack.c:353 +#, c-format +msgid "Wavpack Decoder Plugin %s" +msgstr "Wavpack Dekoder Eklentisi %s" + +#: src/wavpack/wavpack.c:354 +msgid "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan\n" +"Visit the Wavpack site at http://www.wavpack.com/\n" +msgstr "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Eklenti kodunun bir kısmı Miles Egan tarafından hazırlanmıştır\n" +"Wavpack sitesine http://www.wavpack.com/ adresinden ulaÅŸabilirsiniz\n" + +#, fuzzy +#~ msgid "Use Bitmap fonts if available" +#~ msgstr "Varsa CDDB kullan" + +#, fuzzy +#~ msgid "_Miscellaneous" +#~ msgstr "Hizmetler" + +#~ msgid "About " +#~ msgstr "Hakkında" + +#~ msgid "" +#~ "\n" +#~ "Copyright (C) 2002, 2003 Simon Peter \n" +#~ "\n" +#~ "This plugin is released under the terms and conditions of the GNU LGPL.\n" +#~ "See http://www.gnu.org/licenses/lgpl.html for details.\n" +#~ "\n" +#~ "This plugin uses the AdPlug library, which is copyright (C) Simon Peter, " +#~ "et al.\n" +#~ "Linked AdPlug library version: " +#~ msgstr "" +#~ "\n" +#~ "Telif Hakkı (C) 2002, 2003 Simon Peter \n" +#~ "\n" +#~ "Bu eklenti, GNU LGPL ÅŸartları altında yayınlanmaktadır.\n" +#~ "Daha fazla bilgi için http://www.gnu.org/licenses/lgpl.html adresine " +#~ "bakınız.\n" +#~ "\n" +#~ "Bu eklenti tüm hakları (C) Simon Peter, et al'a ait olan AdPlug " +#~ "kütüphanesini kullanmaktadır.\n" +#~ "AdPlug kitaplık sürümü: " + +#~ msgid "AdPlug :: Configuration" +#~ msgstr "AdPlug :: Yapılandırması" + +#~ msgid "Sound quality" +#~ msgstr "Ses kalitesi" + +#~ msgid "Resolution" +#~ msgstr "Çözünürlük" + +#~ msgid "8bit" +#~ msgstr "8bit" + +#~ msgid "16bit" +#~ msgstr "16bit" + +#~ msgid "Channels" +#~ msgstr "Kanallar" + +#~ msgid "" +#~ "Setting stereo is not recommended, unless you need to. This won't add any " +#~ "stereo effects to the sound - OPL2 is just mono - but eats up more CPU " +#~ "power!" +#~ msgstr "" +#~ "EÄŸer, ihtyacınız yoksa, stereoyu seçmeyin. Çünkü, sese stereo etkisi " +#~ "eklenmeyecektir. OPL2 sadece mono kullanır fakat daha fazla CPU gücü " +#~ "harcar!" + +#~ msgid "Frequency" +#~ msgstr "Sıklık" + +#~ msgid "Detect songend" +#~ msgstr "Åžarkı sonunu tespit et" + +#~ msgid "" +#~ "If enabled, XMMS will detect a song's ending, stop it and advance in the " +#~ "playlist. If disabled, XMMS won't take notice of a song's ending and loop " +#~ "it all over again and again." +#~ msgstr "" +#~ "EÄŸer etkinleÅŸtirilirse, Audacious ÅŸarkının sonunu tespit edecek, ÅŸarkıyı " +#~ "durduracak ve parça listesinde ilerleyecek. Bu özellik etkin deÄŸilse, " +#~ "Audacious ÅŸarkı sonunu tespit edemeyecek ve ÅŸarkıyı tekrar tekrar çalmaya " +#~ "devam edecek." + +#~ msgid "Formats" +#~ msgstr "Biçimler" + +#~ msgid "Format selection" +#~ msgstr "Biçim seçimi" + +#~ msgid "Format" +#~ msgstr "Biçim" + +#~ msgid "Extension" +#~ msgstr "Dosya uzantısı" + +#~ msgid "" +#~ "Selected file types will be recognized and played back by this plugin. " +#~ "Deselected types will be ignored to make room for other plugins to play " +#~ "these files." +#~ msgstr "" +#~ "Seçili dosya türleri, bu eklenti tarafından tanınacak ve çalınacak. " +#~ "SeçilmemiÅŸ türler, diÄŸer eklentilerin bu dosyaları çalması için, dikkate " +#~ "alınmayacak." + +#~ msgid "AdPlug :: File Info" +#~ msgstr "AdPlug :: Dosya Bilgisi" + +#~ msgid "Author: " +#~ msgstr "Yazar: " + +#~ msgid "File Type: " +#~ msgstr "Dosya Türü: " + +#~ msgid "Subsongs: " +#~ msgstr "Alt ÅŸarkılar: " + +#~ msgid "Instruments: " +#~ msgstr "Enstrumanlar: " + +#~ msgid "Orders: " +#~ msgstr "Sıralar: " + +#~ msgid "Patterns: " +#~ msgstr "Örnekler: " + +#~ msgid "Song" +#~ msgstr "Åžarkı" + +#~ msgid "Instrument name" +#~ msgstr "Enstruman adı" + +#~ msgid "Song message" +#~ msgstr "Åžarkı mesajı" + +#~ msgid "Subsong selection" +#~ msgstr "Arkayüz bölümü" + +#~ msgid "Order: " +#~ msgstr "Sıra: " + +#~ msgid "Pattern: " +#~ msgstr "Örnek: " + +#~ msgid "Row: " +#~ msgstr "Satır: " + +#~ msgid "Speed: " +#~ msgstr "Hız: " + +#~ msgid "Timer: " +#~ msgstr "Sayaç: " + +#~ msgid "About XMMS Alarm" +#~ msgstr "XMMS Alarm Hakkında" + +#~ msgid "XMMS Alarm" +#~ msgstr "XMMS Alarm" + +#~ msgid "" +#~ "An XMMS plugin which can be used\n" +#~ "to start playing at a certain time.\n" +#~ "\n" +#~ "Send all complaints to:\n" +#~ "Adam Feakin \n" +#~ "Daniel Stodden \n" +#~ "\n" +#~ "http://www.snika.uklinux.net/xmms-alarm/" +#~ msgstr "" +#~ "Audacious'un belli bir zamanda çalmaya baÅŸlaması\n" +#~ "için bir XMMS eklentisi.\n" +#~ "\n" +#~ "Åžikayetleriniz için:\n" +#~ "Adam Feakin \n" +#~ "Daniel Stodden \n" +#~ "\n" +#~ "http://www.snika.uklinux.net/xmms-alarm/" + +#~ msgid "Alarm" +#~ msgstr "Alarm" + +#~ msgid "This is your wakeup call." +#~ msgstr "Bu sizin uyandırma çaÄŸrınız." + +#~ msgid "Select Playlist" +#~ msgstr "Parça Listesini Seç" + +#~ msgid "Sorry" +#~ msgstr "Ãœzgünüm" + +#~ msgid "Warning" +#~ msgstr "Uyarı" + +#~ msgid "" +#~ "For safety reasons the \"quiet\" time must be at least 65 seconds longer " +#~ "than the fading time, it must also be more than 10 seconds. This " +#~ "basically means that there is a bug in the code and until I find a way of " +#~ "really fixing it this message will appear :)\n" +#~ "\n" +#~ "Your fading settings have NOT been saved\n" +#~ "\n" +#~ "--\n" +#~ "Adam" +#~ msgstr "" +#~ "Güvenlik nedenlerinden dolayı, \"sessiz\" zaman en az 10 saniye ve yavaÅŸ " +#~ "geçiÅŸ zamanından da en az 65 saniye daha uzun olmalıdır." + +#~ msgid "Oh Well" +#~ msgstr "Oh Peki" + +#~ msgid "Alarm Settings" +#~ msgstr "Alarm Ayarları" + +#~ msgid "Time" +#~ msgstr "Zaman" + +#~ msgid "hours" +#~ msgstr "saat" + +#~ msgid "h" +#~ msgstr "s" + +#~ msgid "minutes" +#~ msgstr "dakika" + +#~ msgid "Quiet after:" +#~ msgstr "Sonra çık:" + +#~ msgid "Alarm at (default):" +#~ msgstr "Alarmı çal (öntanımlı):" + +#~ msgid "Choose the days for the alarm to come on" +#~ msgstr "Alarmın çalacağı günleri seçiniz" + +#~ msgid "Day" +#~ msgstr "Gün" + +#~ msgid "Tuesday" +#~ msgstr "Salı" + +#~ msgid "Wednesday" +#~ msgstr "ÇarÅŸamba" + +#~ msgid "Thursday" +#~ msgstr "PerÅŸembe" + +#~ msgid "Friday" +#~ msgstr "Cuma" + +#~ msgid "Saturday" +#~ msgstr "Cumartesi" + +#~ msgid "Sunday" +#~ msgstr "Pazar" + +#~ msgid "Monday" +#~ msgstr "Pazartesi" + +#~ msgid "Days" +#~ msgstr "Günler" + +#~ msgid "Fading" +#~ msgstr "YavaÅŸ geçiÅŸ" + +#~ msgid "Volume" +#~ msgstr "Ses" + +#~ msgid "Current" +#~ msgstr "Güncel" + +#~ msgid "reset to current output volume" +#~ msgstr "güncel çıktı sesine dön" + +#~ msgid "Start at" +#~ msgstr "BaÅŸlat" + +#~ msgid "%" +#~ msgstr "%" + +#~ msgid "Final" +#~ msgstr "Sonlandır" + +#~ msgid "Additional Command" +#~ msgstr "Ek Komutlar" + +#~ msgid "enable" +#~ msgstr "etkinleÅŸtir" + +#~ msgid "Playlist (optional)" +#~ msgstr "Parça listesi (seçmeli)" + +#~ msgid "Browse..." +#~ msgstr "Gözat..." + +#~ msgid "Reminder" +#~ msgstr "Hatırlatıcı" + +#~ msgid "Use reminder" +#~ msgstr "Hatırlatıcıyı kullan" + +#~ msgid "What do these options mean?" +#~ msgstr "Bu seçenekler ne anlama geliyor?" + +#~ msgid "" +#~ "\n" +#~ "Time\n" +#~ " Alarm at: \n" +#~ " The time for the alarm to come on.\n" +#~ "\n" +#~ " Quiet After: \n" +#~ " Stop alarm after this amount of time.\n" +#~ " (if the wakeup dialog is not closed)\n" +#~ "\n" +#~ "\n" +#~ "Days\n" +#~ " Day:\n" +#~ " Select the days for the alarm to activate.\n" +#~ "\n" +#~ " Time:\n" +#~ " Choose the time for the alarm on each day,\n" +#~ " or select the toggle button to use the default\n" +#~ " time.\n" +#~ "\n" +#~ "\n" +#~ "Volume\n" +#~ " Fading: \n" +#~ " Fade the volume up to the chosen volume \n" +#~ " for this amount of time.\n" +#~ "\n" +#~ " Start at: \n" +#~ " Start fading from this volume.\n" +#~ "\n" +#~ " Final: \n" +#~ " The volume to stop fading at. If the fading\n" +#~ " time is 0 then set volume to this and start\n" +#~ " playing.\n" +#~ "\n" +#~ "\n" +#~ "Options:\n" +#~ " Additional Command:\n" +#~ " Run this command at the alarm time.\n" +#~ "\n" +#~ " Playlist: \n" +#~ " Load this playlist for playing songs from \n" +#~ " (must have .m3u extension). If no playlist\n" +#~ " is given then the songs which are currently\n" +#~ " in the list will be used.\n" +#~ " The URL of an mp3/ogg stream can also be\n" +#~ " entered here, but loading of playlists from\n" +#~ " URLs is not currently supported by xmms.\n" +#~ "\n" +#~ " Reminder:\n" +#~ " Display a reminder when the alarm goes off,\n" +#~ " type the reminder in the box and turn on the\n" +#~ " toggle button if you want it to be shown.\n" +#~ msgstr "" +#~ "\n" +#~ "Zaman\n" +#~ " Alarmı çal: \n" +#~ " Alarmın çalma zamanı.\n" +#~ "\n" +#~ " Sonra çık: \n" +#~ " Belirtilen süreden sonra alarmı kapat.\n" +#~ " (eÄŸer uyandırma penceresi kapatılmamışsa)\n" +#~ "\n" +#~ "\n" +#~ "Günler\n" +#~ " Gün:\n" +#~ " Alarmın etkin olacağı günleri seçin.\n" +#~ "\n" +#~ " Zaman:\n" +#~ " Her bir gün için alarm zamanını seçin,\n" +#~ " veya önanımlı zamanı kullanmak için\n" +#~ " deÄŸiÅŸtirme düğmesini seçin.\n" +#~ "\n" +#~ "\n" +#~ "Ses\n" +#~ " YavaÅŸ geçiÅŸ: \n" +#~ " Belirtilen sürede sesi istenen ses seviyesine\n" +#~ " çıkarır.\n" +#~ "\n" +#~ " BaÅŸlat: \n" +#~ " Bu ses seviyesinden sesi yükseltmeye baÅŸlar.\n" +#~ "\n" +#~ " Sonlandır: \n" +#~ " Yükseltmenin durdurulacaÄŸu ses düzeyi. EÄŸer\n" +#~ " yavaÅŸ geçiÅŸ süresi 0 ise, sesi bu düzeye ayarlar\n" +#~ " ve çalmaya baÅŸlar.\n" +#~ "\n" +#~ "\n" +#~ "Seçenekler:\n" +#~ " El Lomutlar:\n" +#~ " Alarm zamanında bu komutu çalıştırır.\n" +#~ "\n" +#~ " Parça listesi: \n" +#~ " Load this playlist for playing songs from \n" +#~ " (must have .m3u extension). If no playlist\n" +#~ " is given then the songs which are currently\n" +#~ " in the list will be used.\n" +#~ " The URL of an mp3/ogg stream can also be\n" +#~ " entered here, but loading of playlists from\n" +#~ " URLs is not currently supported by xmms.\n" +#~ "\n" +#~ " Reminder:\n" +#~ " Display a reminder when the alarm goes off,\n" +#~ " type the reminder in the box and turn on the\n" +#~ " toggle button if you want it to be shown.\n" + +#~ msgid "Your reminder for today is.." +#~ msgstr "Bugün için hatırlatıcınız.." + +#~ msgid "Thankyou" +#~ msgstr "TeÅŸekkürler" + +#, fuzzy +#~ msgid "Available Headsets" +#~ msgstr "Kullanılabilir arkayüzler" + +#, fuzzy +#~ msgid "Current Headset" +#~ msgstr "Güncel" + +#, fuzzy +#~ msgid "_Connect" +#~ msgstr "BaÄŸlantı modu:" + +#, fuzzy +#~ msgid "Class" +#~ msgstr "Klasik" + +#, fuzzy +#~ msgid "Address:" +#~ msgstr "Aygıt Adresi" + +#, fuzzy +#~ msgid "Rescan" +#~ msgstr "Dikdörtgen" + +#~ msgid "Playback->Play" +#~ msgstr "Çal" + +#~ msgid "Playback->Stop" +#~ msgstr "Dur" + +#~ msgid "Playback->Pause" +#~ msgstr "Durakla" + +#~ msgid "Playback->Prev" +#~ msgstr "Geri Sar" + +#~ msgid "Playback->Next" +#~ msgstr "Playback->Ä°leri" + +#~ msgid "Playback->Eject" +#~ msgstr "Playback->Çıkart" + +#~ msgid "Playlist->Repeat" +#~ msgstr "Tekrarla" + +#~ msgid "Playlist->Shuffle" +#~ msgstr "Rastgele" + +#~ msgid "Volume->Up_5" +#~ msgstr "Sesi 5 Birim Artır" + +#~ msgid "Volume->Down_5" +#~ msgstr "Sesi 5 Birim Azalt" + +#~ msgid "Volume->Up_10" +#~ msgstr "Sesi 10 Birim Artır" + +#~ msgid "Volume->Down_10" +#~ msgstr "Sesi 10 Birim Azalt" + +#~ msgid "Volume->Mute" +#~ msgstr "Sessiz" + +#~ msgid "Window->Main" +#~ msgstr "Ana Ekran" + +#~ msgid "Window->Playlist" +#~ msgstr "Çalma Listesi" + +#~ msgid "Window->Equalizer" +#~ msgstr "Ekolayzır" + +#~ msgid "Window->JumpToFile" +#~ msgstr "Dosya Çal" + +#~ msgid "" +#~ "event-device-plugin: unable to open device file %s , skipping this " +#~ "device; check that the file exists and that you have read permission for " +#~ "it\n" +#~ msgstr "" +#~ "event-device-plugin: %s diye belirtilen dosya açılamıyor.\n" +#~ "Cihaz durduruldu. Dosya yolunun, adının doÄŸruluÄŸunu\n" +#~ "ve eriÅŸim haklarınızı kontrol edin.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to create a io_channel for device file %s ," +#~ "skipping this device\n" +#~ msgstr "" +#~ "event-device-plugin: %s aygıt dosyası okunurken giriÅŸ-çıkış hatası\n" +#~ "meydana geldi. Aygıt okuma iÅŸlemi durduruldu.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to open /proc/bus/input/devices , automatic " +#~ "detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: /proc/bus/input/devices açılamıyor.\n" +#~ "Otomatik baÅŸlatma yapılamıyor.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to open a io_channel for /proc/bus/input/" +#~ "devices , automatic detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: /proc/bus/input/devices için girdi-çıktı hatası, " +#~ "otomatik tanımlama yapılamıyor.\n" + +#~ msgid "" +#~ "event-device-plugin: an error occurred while reading /proc/bus/input/" +#~ "devices , automatic detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: /proc/bus/input/devices okunurken hata oluÅŸtu, " +#~ "otomatik tanımlama çalışmayacak.\n" + +#~ msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" +#~ msgstr "" +#~ "event-device-plugin: /dev/input içerisinde aygıt %s bulunamadı, es " +#~ "geçiliyor.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to load config file %s , default settings " +#~ "will be used.\n" +#~ msgstr "" +#~ "event-device-plugin: ayar dosyası %s yüklenemiyor, öntanımlı ayarlar " +#~ "kullanılacak.\n" + +#~ msgid "" +#~ "event-device-plugin: incomplete information in config file for device \"%s" +#~ "\" , skipping.\n" +#~ msgstr "" +#~ "event-device-plugin: ayar dosyasında \"%s\" aygıtı için yetersiz bilgi " +#~ "bulundu, es geçiliyor.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get is_active value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: ayarlar, \"%s\" aygıtının çalıştığı bilgisine " +#~ "ulaşılamadı, es geçiliyor.\n" + +#~ msgid "" +#~ "event-device-plugin: unable to access local directory %s , settings will " +#~ "not be saved.\n" +#~ msgstr "" +#~ "event-device-plugin: yerel dizin %s eriÅŸilemiyor, ayarlar " +#~ "kaydedilmeyecek.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get filename value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugn: ayarlar, aygıt \"%s\" için filename deÄŸeri " +#~ "alınamıyor, es geçiliyor.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get phys value for device " +#~ "\"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: ayarlar, aygıt \"%s\" için phys deÄŸeri alınamıyor, " +#~ "es geçiliyor.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get is_custom value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: ayarlar, aygıt \"%s\" için is_custom deÄŸeri " +#~ "alınamıyor, es geçiliyor.\n" + +#~ msgid "" +#~ "event-device-plugin: configuration, unexpected value for device \"%s\", " +#~ "skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: ayarlar, aygıt \"%s\" için beklenmeyen bir deÄŸer " +#~ "alındı, es geçiliyor.\n" + +#, fuzzy +#~ msgid "Detected" +#~ msgstr "Åžarkı sonunu tespit et" + +#, fuzzy +#~ msgid "Custom" +#~ msgstr "custom " + +#, fuzzy +#~ msgid "Not Detected" +#~ msgstr "Biçim seçimi" + +#~ msgid "Information" +#~ msgstr "Bilgi" + +#~ msgid "" +#~ "Cannot open bindings window for a not-detected device.\n" +#~ "Ensure that the device has been correctly plugged in." +#~ msgstr "" +#~ "Tanınmamış bir aygıt için iliÅŸkilendirme penceresi açılamıyor.\n" +#~ "Aygıtın düzgün bir ÅŸekilde sisteme takılı olduÄŸundan emin olun." + +#~ msgid "" +#~ "Unable to open selected device.\n" +#~ "Please check read permissions on device file." +#~ msgstr "" +#~ "Seçili aygıt açılamıyor.\n" +#~ "Aygıt dosyasına okuma hakkınız olduÄŸundan emin olun." + +#~ msgid "EvDev-Plug - Add custom device" +#~ msgstr "EvDev-Plug - Özel aygıt ekle" + +#~ msgid "" +#~ "EvDev-Plug tries to automatically detect and update information about\n" +#~ "event devices available on the system.\n" +#~ "However, if auto-detect doesn't work for your system, or you have event\n" +#~ "devices in a non-standard location (currently they're only searched in\n" +#~ "/dev/input/ ), you may want to add a custom device, explicitly " +#~ "specifying\n" +#~ "name and device file." +#~ msgstr "" +#~ "EvDev-Plug otomatik olarak sisteminizde olay üreten aygıtları tanımaya\n" +#~ "ve hakkında bilgi toplamaya çalışır.\n" +#~ "Yine de otomatik tanıma baÅŸarısız olursa ya da sizin standart dışında bir " +#~ "yerde\n" +#~ "olay üreten bir aygıtınız varsa (öntanımlı olarak /dev/input/ altında " +#~ "aranırlar)\n" +#~ "elle aygıt adını ve aygıt dosyasını tanımlayarak özel bir aygıt " +#~ "tanımlamak\n" +#~ "isteyebilirsiniz." + +#~ msgid "Device name:" +#~ msgstr "Aygıt ismi:" + +#~ msgid "Device file:" +#~ msgstr "Aygıt dosyası:" + +#, fuzzy +#~ msgid "(custom)" +#~ msgstr "custom " + +#~ msgid "" +#~ "Please specify both name and filename.\n" +#~ "Filename must be specified with absolute path." +#~ msgstr "" +#~ "Lütfen hem isim hem de dosya ismi belirleyiniz.\n" +#~ "Dosya ismi tam dizin bilgisi ile belirlenmelidir." + +#~ msgid "" +#~ "Do you want to remove the existing configuration for selected device?\n" +#~ msgstr "" +#~ "Seçilen aygıt için mevcut olan ayarları kaldırmak istiyor musunuz?\n" + +#~ msgid "Do you want to remove the selected custom device?\n" +#~ msgstr "Seçili olan özel aygıtı kaldırmak istiyor musunuz?\n" + +#~ msgid "EvDev-Plug - Configuration" +#~ msgstr "EvDev-Plug - Yapılandırması" + +#~ msgid "Active" +#~ msgstr "Etkin" + +#~ msgid "Status" +#~ msgstr "Durum" + +#~ msgid "Device Name" +#~ msgstr "Aygıt Ä°smi" + +#~ msgid "Device File" +#~ msgstr "Aygıt Dosyası" + +#~ msgid "Device Address" +#~ msgstr "Aygıt Adresi" + +#~ msgid "_Bindings" +#~ msgstr "_BaÄŸlantılar" + +#~ msgid "" +#~ "Press a key of your device to bind it;\n" +#~ "if no key is pressed in five seconds, this window\n" +#~ "will close without binding changes." +#~ msgstr "" +#~ "BaÄŸlamak için aygıtınızda bir tuÅŸa basınız;\n" +#~ "BeÅŸ saniye içerisinde herhangi bir tuÅŸa basılmazsa\n" +#~ "bu pencere baÄŸlama iÅŸlemi yapmadan kapanacaktır." + +#~ msgid "" +#~ "This input event has been already assigned.\n" +#~ "\n" +#~ "It's not possible to assign multiple actions to the same input event " +#~ "(although it's possible to assign the same action to multiple events)." +#~ msgstr "" +#~ "Bu girdi olayı önceden atanmış.\n" +#~ "\n" +#~ "Aynı girdi olayına birden fazla eylem atanamaz (ama aynı eylem birden " +#~ "fazla olaya atanabilir)." + +#~ msgid "EvDev-Plug - Bindings Configuration" +#~ msgstr "EvDev-Plug - BaÄŸlayıcı Yapılandırması" + +#~ msgid "Name: " +#~ msgstr "Ä°sim: " + +#~ msgid "Filename: " +#~ msgstr "Dosya ismi: " + +#~ msgid "Phys.Address: " +#~ msgstr "Fiziksel Adres: " + +#~ msgid "EvDev-Plug - about" +#~ msgstr "EvDev-Plug hakkında" + +#~ msgid "" +#~ "\n" +#~ "player remote control via event devices\n" +#~ "http://www.develia.org/projects.php?p=audacious#evdevplug\n" +#~ "\n" +#~ "written by Giacomo Lozito\n" +#~ msgstr "" +#~ "\n" +#~ "olay aygıtları ile oynatıcı uzakten yöneticisi\n" +#~ "http://www.develia.org/projects.php?p=audacious#evdevplug\n" +#~ "\n" +#~ "Giacomo Lozito tarafından yazılmıştır\n" + +#~ msgid "This LADSPA plugin has no user controls" +#~ msgstr "Bu LADSPA eklentisi kullanıcı ayarı içermiyor" + +#~ msgid "Name" +#~ msgstr "Ä°sim" + +#~ msgid "UID" +#~ msgstr "UID" + +#~ msgid "Installed plugins" +#~ msgstr "Yüklü eklentiler" + +#~ msgid "Running plugins" +#~ msgstr "Çalışan eklentiler" + +#~ msgid "Add" +#~ msgstr "Ekle" + +#~ msgid "Remove" +#~ msgstr "Kaldır" + +#~ msgid "LADSPA Plugin Catalog" +#~ msgstr "LADSPA Eklenti KataloÄŸu" + +#~ msgid "About LIRC Audacious Plugin" +#~ msgstr "LIRC Audacious Eklentisi Hakkında" + +#~ msgid "LIRC Plugin " +#~ msgstr "LIRC Eklentisi" + +#, fuzzy +#~ msgid "" +#~ "\n" +#~ "A simple plugin that lets you control\n" +#~ "Audacious using the LIRC remote control daemon\n" +#~ "\n" +#~ "Adapted for Audacious usage by Tony Vroon \n" +#~ "from the XMMS LIRC plugin by:\n" +#~ "Carl van Schaik \n" +#~ "Christoph Bartelmus \n" +#~ "Andrew O. Shadoura \n" +#~ "You can get LIRC information at:\n" +#~ "http://lirc.org" +#~ msgstr "" +#~ "\n" +#~ "LIRC uzaktan kontrol sunucusunu kullanarak\n" +#~ "Audacious'u kontrol etmenizi saÄŸlayan bir eklenti\n" +#~ "\n" +#~ "Audacious kullanımı için uyarlandı - Tony Vroon \n" +#~ "XMMS LIRC eklentisinden:\n" +#~ "Carl van Schaik \n" +#~ "Christoph Bartelmus \n" +#~ "LIRC hakkında bilgi almak için:\n" +#~ "http://fsinfo.cs.uni-sb.de/~columbus/lirc/index.html" + +#, fuzzy +#~ msgid "LIRC plugin settings" +#~ msgstr "LIRC Eklentisi" + +#, fuzzy +#~ msgid "Connection" +#~ msgstr "BaÄŸlantı modu:" + +#~ msgid "%s: could not init LIRC support\n" +#~ msgstr "%s: LIRC desteÄŸi baÅŸlatılamadı\n" + +#~ msgid "" +#~ "%s: could not read LIRC config file\n" +#~ "%s: please read the documentation of LIRC\n" +#~ "%s: how to create a proper config file\n" +#~ msgstr "" +#~ "%s: LIRC yapılandırma dosyası okunamadı\n" +#~ "%s: lütfen LIRC belgelerini okuyun\n" +#~ "%s: uygun yapılandırma dosyası nasıl oluÅŸturulur\n" + +#~ msgid "%s: unknown command \"%s\"\n" +#~ msgstr "%s: bilinmeyen komut \"%s\"\n" + +#~ msgid "%s: disconnected from LIRC\n" +#~ msgstr "%s: LIRC baÄŸlantısı kesildi\n" + +#~ msgid "ModPlug Configuration" +#~ msgstr "ModPlug Yapılandırması" + +#~ msgid "16 bit" +#~ msgstr "16 bit" + +#~ msgid "8 bit" +#~ msgstr "8 bit" + +#~ msgid "Mono (downmix)" +#~ msgstr "Mono (aÅŸağıkarıştırma)" + +#~ msgid "Nearest (fastest)" +#~ msgstr "En yakın (en hızlı)" + +#~ msgid "Linear (fast)" +#~ msgstr "DoÄŸrusal (hızlı)" + +#~ msgid "Spline (good quality)" +#~ msgstr "Spline (iyi kalite)" + +#~ msgid "8-tap Fir (extremely high quality)" +#~ msgstr "8-tap FIR (fazla iyi kalite)" + +#, fuzzy +#~ msgid "96 kHz" +#~ msgstr "44 kHz" + +#, fuzzy +#~ msgid "48 kHz" +#~ msgstr "44 kHz" + +#~ msgid "44 kHz" +#~ msgstr "44 kHz" + +#~ msgid "22 kHz" +#~ msgstr "22 kHz" + +#~ msgid "Sampling Rate" +#~ msgstr "Örnekleme Oranı" + +#~ msgid "Enable" +#~ msgstr "EtkinleÅŸtir" + +#~ msgid "Depth" +#~ msgstr "Derinlik" + +#~ msgid "Delay" +#~ msgstr "Gecikme" + +#~ msgid "Reverb" +#~ msgstr "Derinlik" + +#~ msgid "Amount" +#~ msgstr "Miktar" + +#~ msgid "Range" +#~ msgstr "Aralık" + +#~ msgid "Bass Boost" +#~ msgstr "Bass Güçlendirme" + +#~ msgid "" +#~ "Note: Setting the preamp\n" +#~ "too high may cause clipping\n" +#~ "(annoying clicks and pops)!" +#~ msgstr "" +#~ "Not: Preamp deÄŸerini\n" +#~ "yüksek ayarlamak sesde\n" +#~ "cızırtı ve patlamalara sebep olur!" + +#~ msgid "Effects" +#~ msgstr "Efektler" + +#~ msgid "Use Filename as Song Title" +#~ msgstr "Åžarkı Adı için Dosya Adı kullan" + +#~ msgid "Fast Playlist Info" +#~ msgstr "Hızlı Parça Listesi Bilgisi" + +#~ msgid "Noise Reduction" +#~ msgstr "Gürültü Azaltma" + +#~ msgid "Play Amiga MOD" +#~ msgstr "Amiga MOD Oynat" + +#~ msgid "Don't loop" +#~ msgstr "Tekrarlama yapma" + +#~ msgid "Loop" +#~ msgstr "Tekrar" + +#~ msgid "time(s)" +#~ msgstr "süre(ler)" + +#~ msgid "Loop forever" +#~ msgstr "Sonsuz kere tekrarla" + +#~ msgid "Looping" +#~ msgstr "Tekrarlama" + +#~ msgid "MOD Info" +#~ msgstr "MOD Bilgisi" + +#~ msgid "" +#~ "Filename:\n" +#~ "Title:\n" +#~ "Type:\n" +#~ "Length:\n" +#~ "Speed:\n" +#~ "Tempo:\n" +#~ "Samples:\n" +#~ "Instruments:\n" +#~ "Patterns:\n" +#~ "Channels:" +#~ msgstr "" +#~ "Dosya adı:\n" +#~ "BaÅŸlık:\n" +#~ "Tip:\n" +#~ "Uzunluk:\n" +#~ "Hız:\n" +#~ "Tempo:\n" +#~ "Örnekler:\n" +#~ "Enstrümanlar:\n" +#~ "Paternler:\n" +#~ "Kanallar:" + +#~ msgid "" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---" +#~ msgstr "" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---\n" +#~ "---" + +#~ msgid "Samples" +#~ msgstr "Örnekler" + +#~ msgid "Instruments" +#~ msgstr "Enstrumanlar" + +#~ msgid "Message" +#~ msgstr "Mesaj" + +#~ msgid "Modplug Input Plugin for Audacious ver" +#~ msgstr "Modplug Girdi Eklentisi Audacious sürüm" + +#, fuzzy +#~ msgid "" +#~ "\n" +#~ "Modplug sound engine written by Olivier Lapicque.\n" +#~ "XMMS interface for Modplug by Kenton Varda.\n" +#~ "(c)2000 Olivier Lapicque and Kenton Varda.\n" +#~ "Updates and maintenance by Konstanty Bialkowski.\n" +#~ "Ported to BMP by Theofilos Intzoglou." +#~ msgstr "" +#~ "\n" +#~ "Modplug ses motoru Olivier Lapicque tarafından yazılmıştır.\n" +#~ "Modplug için XMMS arayüzü Kenton Varda.\n" +#~ "(c)2000 Olivier Lapicque ve Kenton Varda.\n" +#~ "Güncelleme ve bakım Konstanty Bialkowski.\n" +#~ "BMP uyarlaması Theofilos Intzoglou." + +#~ msgid "About Modplug" +#~ msgstr "Modplug Hakkında" + +#, fuzzy +#~ msgid "Blue" +#~ msgstr "Blues" + +#, fuzzy +#~ msgid "Enable 'GUI Scaling'" +#~ msgstr "Ses örneklemesini etkinleÅŸtir" + +#~ msgid "Spectrum Analyzer" +#~ msgstr "Spektrum Analizi" + +#, fuzzy +#~ msgid "Search:" +#~ msgstr "Yıl:" + +#, fuzzy +#~ msgid "Stream name" +#~ msgstr "Enstruman adı" + +#, fuzzy +#~ msgid "Now playing" +#~ msgstr "Parça Listesini Seç" + +#, fuzzy +#~ msgid "Remove Bookmark" +#~ msgstr "Etiketi kaldır" + +#, fuzzy +#~ msgid "About Stream Browser" +#~ msgstr "OSS Sürücüsü Hakkında" + +#, fuzzy +#~ msgid "" +#~ "Copyright (c) 2008, by Calin Crisan and The Audacious " +#~ "Team.\n" +#~ "\n" +#~ "This is a simple stream browser that includes the most popular streaming " +#~ "directories.\n" +#~ "Many thanks to the Streamtuner developers ,\n" +#~ "\tand of course to the whole Audacious community.\n" +#~ "\n" +#~ "Also thank you Tony Vroon for mentoring & guiding me, again.\n" +#~ "\n" +#~ "This was a Google Summer of Code 2008 project." +#~ msgstr "" +#~ "Copyright (c) 2007, Calin Crisan ve The Audacious " +#~ "Takımı.\n" +#~ "\n" +#~ "libcdio geliÅŸtiricilerine \n" +#~ "\t ve libcddb geliÅŸtiricilerine " +#~ "teÅŸekkürler.\n" +#~ "\n" +#~ "Ayrıca Tony Vroon'a beni yönlendirdiÄŸi ve danışmanım olduÄŸu için " +#~ "teÅŸekkürler.\n" +#~ "\n" +#~ "Bu bir Google Summer of Code 2007 projesidir." + +#, fuzzy +#~ msgid "minutes:seconds" +#~ msgstr "dakika" + +#, fuzzy +#~ msgid "Track length:" +#~ msgstr "Parça ses yüksekliÄŸi:" + +#, fuzzy +#~ msgid "Show/hide statusbar" +#~ msgstr "Parça Listesini Seç" + +#, fuzzy +#~ msgid "Import Playlist ..." +#~ msgstr "Hızlı Parça Listesi Bilgisi" + +#, fuzzy +#~ msgid "Export Playlist ..." +#~ msgstr "Hızlı Parça Listesi Bilgisi" + +#, fuzzy +#~ msgid "Refresh Selected" +#~ msgstr "Biçim seçimi" -#: src/song_change/song_change.c:484 #, fuzzy -msgid "Song Change" -msgstr "Åžarkı mesajı" +#~ msgid "Edit the playlist title." +#~ msgstr "Parça listesine alttınılar ekle" -#: src/spectrum/spectrum.c:89 -msgid "Spectrum Analyzer" -msgstr "Spektrum Analizi" +#, fuzzy +#~ msgid "By Formatted Title" +#~ msgstr "BaÅŸlık" -#: src/statusicon/statusicon.c:355 -msgid "About Status Icon Plugin" -msgstr "Durum Simgesi Eklentisi Hakkında" +#, fuzzy +#~ msgid "Components" +#~ msgstr "Yorum:" -#: src/statusicon/statusicon.c:356 #, fuzzy -msgid "" -"Status Icon Plugin\n" -"\n" -"Copyright 2005-2007 Giacomo Lozito \n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"This plugin provides a status icon, placed in\n" -"the system tray area of the window manager.\n" -msgstr "" -"\n" -"Yazan Giacomo Lozito < james@develia.org >\n" -"\n" -"Bu eklenti durum simgesinin sistem araç cubuÄŸunda görüntülenmesini saÄŸlar.\n" +#~ msgid "Save as Static Playlist" +#~ msgstr "Parça Listesini Seç" -#: src/statusicon/statusicon.c:418 -msgid "Status Icon Plugin - Preferences" -msgstr "Durum Simgesi Eklentisi - Tercihler" +#, fuzzy +#~ msgid "Load Playlist" +#~ msgstr "Hızlı Parça Listesi Bilgisi" -#: src/statusicon/statusicon.c:428 -msgid "Right-Click Menu" -msgstr "SaÄŸ-Tık Menüsü" +#, fuzzy +#~ msgid "Save Playlist" +#~ msgstr "Parça Listesini Seç" -#: src/statusicon/statusicon.c:433 -msgid "Small playback menu #1" -msgstr "Küçük oynatma menüsü #1" +#~ msgid "" +#~ "* Select ALSA output ports *\n" +#~ "MIDI events will be sent to the ports selected here. In example, if your " +#~ "audio card provides a hardware synth and you want to play MIDI with it, " +#~ "you'll probably want to select the wavetable synthesizer ports." +#~ msgstr "" +#~ "* ALSA çıkış portlarını seçin *\n" +#~ "Midi olayları burada seçtiÄŸiniz portlara gönderilecekler. ÖrneÄŸin, eÄŸer " +#~ "ses kartınız donanımsal bir ses iÅŸleme sunuyorsa ve siz bununla midi " +#~ "çalmak istiyorsanız, wavetable sentezleyici portlarını seçmeniz " +#~ "gerekecektir." -#: src/statusicon/statusicon.c:436 -msgid "Small playback menu #2" -msgstr "Küçük oynatma menüsü #2" +#~ msgid "" +#~ "* Select ALSA mixer card *\n" +#~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +#~ "ouput plugins from the player. During playback, the player volumeslider " +#~ "will manipulate the mixer control you select here. If you're using " +#~ "wavetable synthesizer ports, you'll probably want to select the Synth " +#~ "control here." +#~ msgstr "" +#~ "* ALSA karıştırıcı kartı seç *\n" +#~ "ALSA çıkış eklentileri direkt ALSA kullanarak çalışır, oynatıcılardan " +#~ "gelen çıkış eklentilerini kullanmaz. Yürütme yaparken, oynatıcı ses " +#~ "seviyesini iÅŸleyen karıştırıcı kontrolünü buradan seçebilirsiniz. EÄŸer " +#~ "wavetable sentezleme portlarını kullanıyorsanız, buradan Sentez seçimini " +#~ "yapabilirsiniz." -#: src/statusicon/statusicon.c:452 -msgid "Mouse Scroll Action" -msgstr "Fare TekerleÄŸi Eylemi" +#~ msgid "" +#~ "* Select ALSA mixer control *\n" +#~ "The ALSA backend outputs directly through ALSA, it doesn't use effect and " +#~ "ouput plugins from the player. During playback, the player volume slider " +#~ "will manipulate the mixer control you select here. If you're using " +#~ "wavetable synthesizer ports, you'll probably want to select the Synth " +#~ "control here." +#~ msgstr "" +#~ "* ALSA karıştırıcı kartı seç *\n" +#~ "ALSA çıkış eklentileri direkt ALSA kullanarak çalışır, oynatıcılardan " +#~ "gelen çıkış eklentilerini kullanmaz. Yürütme yaparken, oynatıcı ses " +#~ "seviyesini iÅŸleyen karıştırıcı kontrolünü buradan seçebilirsiniz. EÄŸer " +#~ "wavetable sentezleme portlarını kullanıyorsanız, buradan Sentez seçimini " +#~ "yapabilirsiniz." -#: src/statusicon/statusicon.c:456 -msgid "Change volume" -msgstr "Ses seviyesini deÄŸiÅŸtir" +#~ msgid "" +#~ "* Backend selection *\n" +#~ "AMIDI-Plug works with backends, in a modular fashion; here you should " +#~ "select your backend; that is, the way MIDI events are going to be handled " +#~ "and played.\n" +#~ "If you have a hardware synthesizer on your audio card, and ALSA supports " +#~ "it, you'll want to use the ALSA backend. It can also be used with " +#~ "anything that provides an interface to the ALSA sequencer, including " +#~ "software synths or external devices.\n" +#~ "If you want to rely on a software synthesizer and/or want to pipe audio " +#~ "into effect and output plugins of the player you'll want to use the good " +#~ "FluidSynth backend.\n" +#~ "Press the info button to read specific information about each backend." +#~ msgstr "" +#~ "* Backend Seçimi *\n" +#~ "AMIDI-Plug 'ın çalışması için bir ses sunucusuna ihtiyacınız vardır ve " +#~ "ses sunucunuzu seçtikten sonra MIDI olaylarını ele alabilir ve " +#~ "çalabilirsiniz.\n" +#~ "EÄŸer ses kartınızda donanımsal ses iÅŸleme özelliÄŸi var ise ve ALSA bunu " +#~ "destekliyorsa ALSA ses sunucusunu kullanmak isteyebilirsiniz. ALSA ses " +#~ "sunucusu desteklediÄŸi tüm donanımsal ve yazılımsal araçları, onun " +#~ "arayüzünden kullanabilirsiniz.\n" +#~ "EÄŸer yazılımsal ses iÅŸleme kullanmak ve/veya efektinize ses enjekte etmek " +#~ "ve oynatıcınızın çıkış eklentisini eklemek isterseniz, FluidSynth " +#~ "sunucusunu kullanabilirsiniz. \n" +#~ "Daha detaylı bilgi için her bir sunucunun dökümanlarına göz atın." -#: src/statusicon/statusicon.c:458 -msgid "Change playing song" -msgstr "Çalan ÅŸarkıyı deÄŸiÅŸtir" +#, fuzzy +#~ msgid "" +#~ "* Transpose function *\n" +#~ "This option allows you to play the midi file transposed in a different " +#~ "key, by shifting of the desired number of semitones all its notes " +#~ "(excepting those on midi channel 10, reserved for percussions). " +#~ "Especially useful if you wish to sing or play along with another " +#~ "instrument." +#~ msgstr "" +#~ "* Transpose fonksiyonu *\n" +#~ "Bu özellik midi dosyasının baÅŸka bir tonda çalınmasını saÄŸlar.Bu ayarda " +#~ "her bir numara bir yarım tonu temsil eder. Tüm notalar belirlenen tona " +#~ "aktarılır.(10. kanal vurmalı çalgılara ayrılmıştır.)" -#: src/stereo_plugin/stereo.c:40 -msgid "" -"Extra Stereo Plugin\n" -"\n" -"By Johan Levin 1999." -msgstr "" -"Ekstra Stereo Eklentisi\n" -"\n" -"Johan Levin 1999." +#~ msgid "" +#~ "* Drumshift function *\n" +#~ "This option allows you to shift notes on midi channel 10 (the standard " +#~ "percussions channel) of the desired number of semitones. This results in " +#~ "different drumset and percussions being used during midi playback, so if " +#~ "you wish to enhance (or reduce, or alter) percussion sounds, try to play " +#~ "with this value." +#~ msgstr "" +#~ "* Davul tonlama fonksiyonu *\n" +#~ "Bu özellik 10. kanal üzerindeki notaları (vurmalı çalgılar kanalı) " +#~ "yarımÅŸar ses olarak ayarlamanızı saÄŸlar. Bu özelliÄŸi kullanarak farklı " +#~ "davul setleriyle farklı sesler elde edip çaldırabilirsiniz." -#: src/stereo_plugin/stereo.c:64 -msgid "About Extra Stereo Plugin" -msgstr "Ekstra Stereo Eklentisi Hakkında" +#~ msgid "" +#~ "* Pre-calculate MIDI length *\n" +#~ "If this option is enabled, AMIDI-Plug will calculate the MIDI file length " +#~ "as soon as the player requests it, instead of doing that only when the " +#~ "MIDI file is being played. In example, MIDI length will be calculated " +#~ "straight after adding MIDI files in a playlist. Disable this option if " +#~ "you want faster playlist loading (when a lot of MIDI files are added), " +#~ "enable it to display more information in the playlist straight after " +#~ "loading." +#~ msgstr "" +#~ "* MIDI uzunluÄŸunun ön hesaplaması *\n" +#~ "EÄŸer bu seçeneÄŸi iÅŸaretlerseniz, AMIDI-Plug parça listesinde olan MIDI " +#~ "lerin uzunluklarını hesaplayacakdır aksi takdirde sadece çalma/oynatma " +#~ "esnasında hesaplama yapılır. EÄŸer çalma listesinin daha hızlı " +#~ "yüklenmesini istiyorsanızbu özelliÄŸi devre dışı bırakın." -#: src/stereo_plugin/stereo.c:100 -msgid "Configure Extra Stereo" -msgstr "Ekstra Stereo Eklentisini Yapılandır" +#~ msgid "" +#~ "* Extract comments from MIDI files *\n" +#~ "Some MIDI files contain text comments (author, copyright, instrument " +#~ "notes, etc.). If this option is enabled, AMIDI-Plug will extract and " +#~ "display comments (if available) in the file information dialog." +#~ msgstr "" +#~ "*MIDI dosyalarından yorumları çıkar*\n" +#~ "Bazı MIDI dosyaları metin biçeminde yorumlar içerir (yazar, telif hakkı, " +#~ "çalgı notları, vs.). Bu seçenek açılırsa, AMIDI-Plug (varsa) yorumları " +#~ "çıkarır ve dosya bilgisi ekranında gösterir." -#: src/streambrowser/gui/streambrowser_win.c:62 -#, fuzzy -msgid "Search:" -msgstr "Yıl:" +#~ msgid "" +#~ "* Extract lyrics from MIDI files *\n" +#~ "Some MIDI files contain song lyrics. If this option is enabled, AMIDI-" +#~ "Plug will extract and display song lyrics (if available) in the file " +#~ "information dialog." +#~ msgstr "" +#~ "*MIDI dosyalarından ÅŸarkı sözlerini çıkar*\n" +#~ "Bazı MIDI dosyaları ÅŸarkı sözleri içerir. Bu seçenek açılırsa, AMIDI-" +#~ "Plug (varsa) ÅŸarkı sözlerini çıkarır ve dosya bilgisi ekranında gösterir." -#: src/streambrowser/gui/streambrowser_win.c:81 -#: src/streambrowser/gui/streambrowser_win.c:370 -msgid "Add Bookmark" -msgstr "" +#~ msgid "" +#~ "* Select SoundFont files *\n" +#~ "In order to play MIDI with FluidSynth, you need to specify at least one " +#~ "valid SoundFont file here (use absolute paths). The loading order is from " +#~ "the top (first) to the bottom (last)." +#~ msgstr "" +#~ "* SoundFont dosyası seç *\n" +#~ "FluidSynth ile MIDI çalmak için geçerli SoundFont dosyasını seçmelisiniz." +#~ "(tam yolu kullanın). Yükleme seçeneklerini yukarıdan, aÅŸağıya doÄŸru " +#~ "görebilirsiniz." -#: src/streambrowser/gui/streambrowser_win.c:95 -#, fuzzy -msgid "Stream browser" -msgstr "gözat" +#~ msgid "" +#~ "* Load SoundFont on player start *\n" +#~ "Depending on your system speed, SoundFont loading in FluidSynth will " +#~ "require up to a few seconds. This is a one-time task (the soundfont will " +#~ "stay loaded until it is changed or the backend is unloaded) that can be " +#~ "done at player start, or before the first MIDI file is played (the latter " +#~ "is a better choice if you don't use your player to listen MIDI files " +#~ "only)." +#~ msgstr "" +#~ "* Oynatıcı baÅŸlangıcında SoundFont yükle *\n" +#~ "FluidSynth içerisinde SoundFont yükleme süresi sisteminizin hızına göre " +#~ "birkaç saniye sürecektir. Bu iÅŸlem bir kereliÄŸine oynatıcı açılışında ya " +#~ "da ilk MIDI dosyası oynatılmadan önce yapılabilir. SoundFont bilgisi " +#~ "deÄŸiÅŸtirilene ya da uygulama hafızadan çıkarılana kadar kullanılabilir " +#~ "kalacaktır. Oynatıcınızı sadece MIDI dosyaları için kullanmıyorsanız " +#~ "SoundFont yüklemesini MIDI oynatılmadan önce yapılmasını tavsiye ederiz." -#: src/streambrowser/gui/streambrowser_win.c:319 -#, fuzzy -msgid "Stream name" -msgstr "Enstruman adı" +#~ msgid "" +#~ "* Load SoundFont on first midifile play *\n" +#~ "Depending on your system speed, SoundFont loading in FluidSynth will " +#~ "require up to a few seconds. This is a one-time task (the soundfont will " +#~ "stay loaded until it is changed or the backend is unloaded) that can be " +#~ "done at player start, or before the first MIDI file is played (the latter " +#~ "is a better choice if you don't use your player to listen MIDI files " +#~ "only)." +#~ msgstr "" +#~ "*Ä°lk MIDI dosyasını çaldığında SF'u yükle *\n" +#~ "Depending on your system speed, SoundFont loading in FluidSynth will " +#~ "require up to a few seconds. This is a one-time task (the soundfont will " +#~ "stay loaded until it is changed or the backend is unloaded) that can be " +#~ "done at player start, or before the first MIDI file is played (the latter " +#~ "is a better choice if you don't use your player to listen MIDI files " +#~ "only)." -#: src/streambrowser/gui/streambrowser_win.c:326 -#, fuzzy -msgid "Now playing" -msgstr "Parça Listesini Seç" +#~ msgid "" +#~ "* Synthesizer gain *\n" +#~ "From FluidSynth docs: the gain is applied to the final or master output " +#~ "of the synthesizer; it is set to a low value by default to avoid the " +#~ "saturation of the output when random MIDI files are played." +#~ msgstr "" +#~ "* Sentezleyici kazancı *\n" +#~ "FluidSynth belgelerinden: kazanç sentezleyicinin final ya da ana çıkışına " +#~ "uygulanır; rastgele MIDI dosyaları oynatıldığında çıktı doygunluÄŸu " +#~ "oluÅŸmaması için öntanımlı olarak düşük bir deÄŸere ayarlanır." -#: src/streambrowser/gui/streambrowser_win.c:367 -#, fuzzy -msgid "Remove Bookmark" -msgstr "Etiketi kaldır" +#~ msgid "" +#~ "* Synthesizer polyphony *\n" +#~ "From FluidSynth docs: the polyphony defines how many voices can be played " +#~ "in parallel; the number of voices is not necessarily equivalent to the " +#~ "number of notes played simultaneously; indeed, when a note is struck on a " +#~ "specific MIDI channel, the preset on that channel may create several " +#~ "voices, for example, one for the left audio channel and one for the right " +#~ "audio channels; the number of voices activated depends on the number of " +#~ "instrument zones that fall in the correspond to the velocity and key of " +#~ "the played note." +#~ msgstr "" +#~ "* Sentezleyici polifoni *\n" +#~ "FluidSynth belgelerinden: polifoni aynı anda paralel olarak kaç sesin " +#~ "oynatılabileceÄŸini belirler; seslerin adedinin aynı anda çalınan nota " +#~ "adedine eÅŸit olması gerekmemektedir; belirli bir MIDI kanalında bir nota " +#~ "basıldığında kanal ayarlarına göre birden fazla ses çalınabilir, örneÄŸin " +#~ "sol kanal için bir ses ve saÄŸ kanal için baÅŸka bir ses; kullanılan ses " +#~ "adedi çalınan notanın hızı ve anahtarına baÄŸlı olarak enstrüman " +#~ "bölgelerinin sayısına baÄŸlıdır." -#: src/streambrowser/streambrowser.c:331 -#, fuzzy -msgid "About Stream Browser" -msgstr "OSS Sürücüsü Hakkında" +#~ msgid "" +#~ "* Synthesizer reverb *\n" +#~ "From FluidSynth docs: when set to \"yes\" the reverb effects module is " +#~ "activated; note that when the reverb module is active, the amount of " +#~ "signal sent to the reverb module depends on the \"reverb send\" generator " +#~ "defined in the SoundFont." +#~ msgstr "" +#~ "* Sentezleyici reverb *\n" +#~ "FluidSynth belgelerinden: \"evet\" olarak ayarlandığında reverb efekt " +#~ "modülü çalışır; reverb modülü çalışırken reverb modülüne yollanan sinyal " +#~ "miktarı Soundfont içerisinde tanımlanan \"reverb send\" üreticisi " +#~ "tarafından belirlenir." -#: src/streambrowser/streambrowser.c:332 -#, fuzzy -msgid "" -"Copyright (c) 2008, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming " -"directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" -"\n" -"This was a Google Summer of Code 2008 project." -msgstr "" -"Copyright (c) 2007, Calin Crisan ve The Audacious " -"Takımı.\n" -"\n" -"libcdio geliÅŸtiricilerine \n" -"\t ve libcddb geliÅŸtiricilerine " -"teÅŸekkürler.\n" -"\n" -"Ayrıca Tony Vroon'a beni yönlendirdiÄŸi ve danışmanım olduÄŸu için " -"teÅŸekkürler.\n" -"\n" -"Bu bir Google Summer of Code 2007 projesidir." +#~ msgid "" +#~ "* Synthesizer chorus *\n" +#~ "From FluidSynth docs: when set to \"yes\" the chorus effects module is " +#~ "activated; note that when the chorus module is active, the amount of " +#~ "signal sent to the chorus module depends on the \"chorus send\" generator " +#~ "defined in the SoundFont." +#~ msgstr "" +#~ "* Senteleyici koro *\n" +#~ "FluidSynth belgelerinden: \"evet\" olarak ayarlandığında koro modülü " +#~ "çalışır; koro modülü çalışırken koro modülüne yollanan sinyal miktarı " +#~ "Soundfont içerisinde tanımlanan \"chorus send\" üreticisi tarafından " +#~ "belirlenir." -#: src/streambrowser/streambrowser.c:357 src/streambrowser/streambrowser.c:367 #, fuzzy -msgid "Streambrowser" -msgstr "gözat" +#~ msgid "" +#~ "* Synthesizer samplerate *\n" +#~ "The sample rate of the audio generated by the synthesizer. You can also " +#~ "specify a custom value in the interval 22050Hz-96000Hz." +#~ msgstr "" +#~ "* Sentezleyici örnekleme oranı *\n" +#~ "Sentezleyici tarafından üretilen sesin örnekleme oranı. Ayrıca isterseniz " +#~ "22050Hz-96000Hz aralığından özel bir deÄŸer de atayabilirsiniz.\n" +#~ "NOT: öntanımlı tampon parametreleri 44100Hz için hazırlanmıştır; ses " +#~ "kalitesinikaybetmemek için örnekleme oranı deÄŸiÅŸince tampon " +#~ "parametrelerini deÄŸiÅŸtirmeniz gerekebilir" -#: src/sun/about.c:30 -msgid "About the Sun Driver" -msgstr "Sun Sürücüsü Hakkında" +#~ msgid "" +#~ "If enabled, the extension from the original filename will not be stripped " +#~ "before adding the new file extension to the end." +#~ msgstr "" +#~ "SeçildiÄŸinde, yeni oluÅŸturulan dosyaya yeni uzantı eklenirken eski " +#~ "dosyanın uzantısı dosya adından çıkarılmaz." -#: src/sun/about.c:31 -msgid "" -"XMMS BSD Sun Driver\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" -msgstr "" -"XMMS BSD Sun Sürücüsü\n" -"\n" -"Telif Hakkı (c) 2001 CubeSoft Communications, Inc.\n" -"Sorumlu: .\n" +#~ msgid "" +#~ "best/slowest:0;\n" +#~ "worst/fastest:9;\n" +#~ "recommended:2;\n" +#~ "default:5;" +#~ msgstr "" +#~ "en iyi/en yavaÅŸ:0;\n" +#~ "en kötü/en hızlı:9;\n" +#~ "önerilen:2;\n" +#~ "öntanımlı:5;" -#: src/sun/configure.c:199 -msgid "Audio control device:" -msgstr "Ses kontrol aygıtı:" +#~ msgid "Adds 16 bit checksum to every frame" +#~ msgstr "Her çerçeveye 16 bit checksum ekler" -#: src/sun/configure.c:270 -msgid "Buffer size (ms):" -msgstr "Tampon boyutu (ms):" +#~ msgid "Variable bitrate" +#~ msgstr "DeÄŸiÅŸken bit oranı" -#: src/sun/configure.c:348 -msgid "Volume controls device:" -msgstr "Ses kontrolleri aygıtı:" +#~ msgid "Average bitrate" +#~ msgstr "Ortalama bit oranı" -#: src/sun/configure.c:361 -msgid "XMMS uses mixer exclusively." -msgstr "XMMS, sadece karıştırıcıyı kullanıyor." +#~ msgid "" +#~ "For use with players that do not support low bitrate mp3 (Apex AD600-A " +#~ "DVD/mp3 player)" +#~ msgstr "" +#~ "Düşük bit oranlı mp3'leri desteklemeyen çalıcılarla kullanılması için " +#~ "(Apex AD600-A DVD/mp3 player)" -#: src/sun/configure.c:536 -msgid "Sun driver configuration" -msgstr "Sun sürücüsü yapılandırması" +#~ msgid "" +#~ "highest:0;\n" +#~ "lowest:9;\n" +#~ "default:4;" +#~ msgstr "" +#~ "yüksek:0;\n" +#~ "alçak:9;\n" +#~ "öntanımlı:4;" -#: src/tonegen/tonegen.c:53 -msgid "About Tone Generator" -msgstr "Ton OluÅŸturucusu Hakkında" +#, fuzzy +#~ msgid "Show playlists" +#~ msgstr "Parça Listesini Seç" -#: src/tonegen/tonegen.c:55 -msgid "" -"Sinus tone generator by Haavard Kvaalen \n" -"Modified by Daniel J. Peng \n" -"\n" -"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" -"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" -msgstr "" -"Sinus tonu oluÅŸturucusu - Haavard Kvaalen \n" -"Düzenleyen - Daniel J. Peng \n" -"\n" -"Kullanmak için bir URL ekleyin: tone://frequency1;frequency2;frequency3;...\n" -"ör: 2000Hz ton ve 2005Hz ton çalmak için tone://2000;2005" +#, fuzzy +#~ msgid "Show/hide playlists" +#~ msgstr "Parça Listesini Seç" -#: src/tonegen/tonegen.c:105 -#, c-format -msgid "%s %.1f Hz" -msgstr "%s %.1f Hz" +#~ msgid "About the Sun Driver" +#~ msgstr "Sun Sürücüsü Hakkında" -#: src/tonegen/tonegen.c:105 -msgid "Tone Generator: " -msgstr "Ton OluÅŸturucu: " +#~ msgid "" +#~ "XMMS BSD Sun Driver\n" +#~ "\n" +#~ "Copyright (c) 2001 CubeSoft Communications, Inc.\n" +#~ "Maintainer: .\n" +#~ msgstr "" +#~ "XMMS BSD Sun Sürücüsü\n" +#~ "\n" +#~ "Telif Hakkı (c) 2001 CubeSoft Communications, Inc.\n" +#~ "Sorumlu: .\n" -#: src/vorbis/configure.c:31 -msgid "Override generic titles" -msgstr "Genel baÅŸlıkları geçersiz kıl" +#~ msgid "Audio control device:" +#~ msgstr "Ses kontrol aygıtı:" -#: src/vorbis/configure.c:32 -msgid "Title format:" -msgstr "BaÅŸlık biçimi:" +#~ msgid "Buffer size (ms):" +#~ msgstr "Tampon boyutu (ms):" -#: src/vorbis/configure.c:36 -#, fuzzy -msgid "Ogg Vorbis Tags" -msgstr "Ogg Vorbis Etiketleri:" +#~ msgid "Volume controls device:" +#~ msgstr "Ses kontrolleri aygıtı:" -#: src/vorbis/configure.c:68 -msgid "Ogg Vorbis Audio Plugin Configuration" -msgstr "Ogg Vorbis Ses Eklentisi Yapılandırması" +#~ msgid "XMMS uses mixer exclusively." +#~ msgstr "XMMS, sadece karıştırıcıyı kullanıyor." -#: src/vorbis/vorbis.c:549 -msgid "About Ogg Vorbis Audio Plugin" -msgstr "OGG Vorbis Ses Eklentisi Hakkında" +#~ msgid "Sun driver configuration" +#~ msgstr "Sun sürücüsü yapılandırması" -#: src/vorbis/vorbis.c:554 #, fuzzy -msgid "" -"Ogg Vorbis Plugin by the Xiph.org Foundation\n" -"\n" -"Original code by\n" -"Tony Arcieri \n" -"Contributions from\n" -"Chris Montgomery \n" -"Peter Alm \n" -"Michael Smith \n" -"Jack Moffitt \n" -"Jorn Baayen \n" -"Haavard Kvaalen \n" -"Gian-Carlo Pascutto \n" -"Eugene Zagidullin \n" -"\n" -"Visit the Xiph.org Foundation at http://www.xiph.org/\n" -msgstr "" -"Xiph.org Kurumu tarafından hazırlanan Ogg Vorbis Eklentisi\n" -"\n" -"Orjinal Kod\n" -"Tony Arcieri \n" -"Dağıtıma Hazırlayanlar\n" -"Chris Montgomery \n" -"Peter Alm \n" -"Michael Smith \n" -"Jack Moffitt \n" -"Jorn Baayen \n" -"Haavard Kvaalen \n" -"Gian-Carlo Pascutto \n" -"\n" -"Xiph.org Vakfını buradan ziyaret edebilirsiniz http://www.xiph.org/\n" +#~ msgid "Target volume:" +#~ msgstr "Ses seviyesini deÄŸiÅŸtir" -#: src/vtx/about.c:14 -msgid "About Vortex Player" -msgstr "Vortex Player Hakkında" +#, fuzzy +#~ msgid "Effect strength:" +#~ msgstr "Efekt yoÄŸunluÄŸu:" -#: src/vtx/about.c:15 -msgid "" -"Vortex file format player by Sashnov Alexander \n" -"Founded on original source in_vtx.dll by Roman Sherbakov \n" -"\n" -"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" -"and other AY/YM music sites.\n" -"\n" -"Audacious implementation by Pavel Vymetalek " -msgstr "" -"Vortex dosya formatı oynatıcısı geliÅŸtiricisi Sashnov Alexander \n" -"Roman Sherbakov tarafından geliÅŸtirilen in_vtx.dll " -"kaynak kodundan esinlenilmiÅŸtir\n" -"\n" -"VTX biçiminde müzik dosyalarına http://vtx.microfor.ru/music.htm\n" -"ve diÄŸer AY/YM müzik sitelerinden eriÅŸebilirsiniz.\n" -"\n" -"Audacious desteÄŸi Pavel Vymetalek " +#~ msgid "FLAC Audio Plugin " +#~ msgstr "FLAC Ses Eklentisi " -#: src/wavpack/wavpack.c:371 -#, c-format -msgid "Wavpack Decoder Plugin %s" -msgstr "Wavpack Dekoder Eklentisi %s" +#, fuzzy +#~ msgid "Stream browser" +#~ msgstr "gözat" -#: src/wavpack/wavpack.c:372 -msgid "" -"Copyright (c) 2006 William Pitcock \n" -"\n" -"Some of the plugin code was by Miles Egan\n" -"Visit the Wavpack site at http://www.wavpack.com/\n" -msgstr "" -"Copyright (c) 2006 William Pitcock \n" -"\n" -"Eklenti kodunun bir kısmı Miles Egan tarafından hazırlanmıştır\n" -"Wavpack sitesine http://www.wavpack.com/ adresinden ulaÅŸabilirsiniz\n" +#, fuzzy +#~ msgid "Streambrowser" +#~ msgstr "gözat" #~ msgid "Audacious standard menu" #~ msgstr "Audacious standart menü" @@ -5969,10 +5808,6 @@ #~ msgstr "Sunucu" #, fuzzy -#~ msgid "Save List" -#~ msgstr "Kaydet" - -#, fuzzy #~ msgid "About RoarAudio Plugin" #~ msgstr "FLAC Ses Eklentisi Hakkında" @@ -6333,10 +6168,6 @@ #~ msgstr "Hakkında" #, fuzzy -#~ msgid "Output plugin" -#~ msgstr "Çıktı eklentisi hatası\n" - -#, fuzzy #~ msgid "Throttle Output" #~ msgstr "aRts Çıkışı Hakkında" @@ -6457,10 +6288,6 @@ #~ msgstr "Varsayılan (%s)" #, fuzzy -#~ msgid "_Rename" -#~ msgstr "Dosya adı" - -#, fuzzy #~ msgid "About Icecast-Plugin" #~ msgstr "Yankı (Eko) Eklentisi Hakkında" @@ -6703,21 +6530,9 @@ #~ msgid "Title:" #~ msgstr "BaÅŸlık:" -#~ msgid "Artist:" -#~ msgstr "Sanatçı:" - -#~ msgid "Album:" -#~ msgstr "Albüm:" - #~ msgid "Comment:" #~ msgstr "Yorum:" -#~ msgid "Year:" -#~ msgstr "Yıl:" - -#~ msgid "Track number:" -#~ msgstr "Parça numarası:" - #~ msgid "Genre:" #~ msgstr "Tür:" @@ -6948,9 +6763,6 @@ #~ msgid "Musepack Tag" #~ msgstr "Musepack Etiketi" -#~ msgid "Track:" -#~ msgstr "Parça:" - #~ msgid "Musepack Info" #~ msgstr "Musepack Bilgi" @@ -7827,12 +7639,6 @@ #~ msgid " Ogg Vorbis Info " #~ msgstr " Ogg Vorbis Bilgisi " -#~ msgid "Bit rate:" -#~ msgstr "Bit oranı:" - -#~ msgid "Length:" -#~ msgstr "Uzunluk:" - #~ msgid "File size:" #~ msgstr "Dosya boyutu:" diff -Nru audacious-plugins-2.4.4/po/uk.po audacious-plugins-3.2/po/uk.po --- audacious-plugins-2.4.4/po/uk.po 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/po/uk.po 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,3659 @@ +# Ukrainian translation for Audacious Plugins +# Copyright (C) Audacious translators +# This file is distributed under the same license as the Audacious Plugins package. +# +# Translators: +# fedenko , 2011. +# Kostyantyn Fedenko , 2011. +# NaiLi Rootaerc , 2012. +# Rax Garfield (http://biokillaz.com/), 2012. +# Rax Garfield (http://biokillaz.com)/, 2012. +msgid "" +msgstr "" +"Project-Id-Version: Audacious Plugins\n" +"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2012-01-11 09:01-0500\n" +"PO-Revision-Date: 2012-01-13 11:37+0000\n" +"Last-Translator: NaiLi Rootaerc \n" +"Language-Team: Ukrainian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uk\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" + +#: src/aac/libmp4.c:256 +#, c-format +msgid "" +"Using libfaad2-%s for decoding.\n" +"FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com\n" +"Copyright (c) 2005-2006 Audacious team" +msgstr "" +"(c) 2005-2006, Команда Audacious.\n" +"\n" +"Ð”Ð»Ñ Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑтовуєтьÑÑ libfaad2-%s.\n" +"Декодер FAAD2 AAC/HE-AAC/HE-AACv2/DRM: (c) Nero AG, www.nero.com" + +#: src/aac/libmp4.c:261 +msgid "About MP4 AAC decoder plugin" +msgstr "Про плаґін Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ MP4 AAC" + +#: src/alarm/alarm.c:312 +msgid "About Alarm" +msgstr "Про Будильник" + +#: src/alarm/alarm.c:313 +msgid "" +"A plugin that can be used to start playing at a certain time.\n" +"\n" +"Originally written by Adam Feakin and Daniel Stodden." +msgstr "" +"Модуль, що починає й закінчує Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð° розкладом.\n" +"\n" +"Ðвторами Ñ” Adam Feakin та Daniel Stodden." + +#: src/alarm/interface.c:33 +msgid "Alarm" +msgstr "Будильник" + +#: src/alarm/interface.c:40 +msgid "This is your wakeup call." +msgstr "Ð’Ñтавай, Україно! Ð’Ñтавай, рідна ненько! МоÑкаль вже годину не Ñпить!" + +#: src/alarm/interface.c:55 src/alarm/interface.c:1213 +msgid "OK" +msgstr "Гаразд" + +#: src/alarm/interface.c:214 +msgid "Alarm Settings" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð±ÑƒÐ´Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ°" + +#: src/alarm/interface.c:229 src/alarm/interface.c:401 +#: src/alarm/interface.c:773 +msgid "Time" +msgstr "ЧаÑ" + +#: src/alarm/interface.c:270 +msgid "hours" +msgstr "год" + +#: src/alarm/interface.c:331 +msgid "h" +msgstr " " + +#: src/alarm/interface.c:361 +msgid "minutes" +msgstr "хв" + +#: src/alarm/interface.c:379 +msgid "Quiet after:" +msgstr "Закінчити через:" + +#: src/alarm/interface.c:389 +msgid "Alarm at (default):" +msgstr "Починати о (типово):" + +#: src/alarm/interface.c:409 +msgid "Choose the days for the alarm to come on" +msgstr "Ðалаштуйте дні тижнÑ, в Ñкі працюватиме будильник." + +#: src/alarm/interface.c:437 src/alarm/interface.c:485 +#: src/alarm/interface.c:533 src/alarm/interface.c:581 +#: src/alarm/interface.c:629 src/alarm/interface.c:677 +#: src/alarm/interface.c:725 src/bs2b/plugin.c:198 src/OSS/configure.c:153 +#: src/skins/ui_equalizer.c:1104 src/skins/ui_manager.c:447 +#: src/skins/ui_manager.c:468 +msgid "Default" +msgstr "Як типово" + +#: src/alarm/interface.c:763 +msgid "Day" +msgstr "День" + +#: src/alarm/interface.c:783 +msgid "Tuesday" +msgstr "Вівторок" + +#: src/alarm/interface.c:794 +msgid "Wednesday" +msgstr "Середа" + +#: src/alarm/interface.c:805 +msgid "Thursday" +msgstr "Четвер" + +#: src/alarm/interface.c:816 +msgid "Friday" +msgstr "П’ÑтницÑ" + +#: src/alarm/interface.c:827 +msgid "Saturday" +msgstr "Субота" + +#: src/alarm/interface.c:838 +msgid "Sunday" +msgstr "ÐеділÑ" + +#: src/alarm/interface.c:848 +msgid "Monday" +msgstr "Понеділок" + +#: src/alarm/interface.c:859 +msgid "Days" +msgstr "Дні" + +#: src/alarm/interface.c:875 +msgid "Fading" +msgstr "ÐароÑтаннÑ" + +#: src/alarm/interface.c:912 +msgid "seconds" +msgstr "Ñек" + +#: src/alarm/interface.c:920 src/alarm/interface.c:1035 +msgid "Volume" +msgstr "ГучніÑÑ‚ÑŒ" + +#: src/alarm/interface.c:946 +msgid "Current" +msgstr "Як зараз" + +#: src/alarm/interface.c:954 +msgid "Start at" +msgstr "Ðа початку:" + +#: src/alarm/interface.c:982 src/alarm/interface.c:1026 +msgid "%" +msgstr "%" + +#: src/alarm/interface.c:998 +msgid "Final" +msgstr "По закінченню:" + +#: src/alarm/interface.c:1051 +msgid "Additional Command" +msgstr "Виконувати команду" + +#: src/alarm/interface.c:1077 +msgid "enable" +msgstr "увімкнути" + +#: src/alarm/interface.c:1085 +msgid "Playlist (optional)" +msgstr "СпиÑок Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ (необов’Ñзково)" + +#: src/alarm/interface.c:1111 +msgid "Browse..." +msgstr "ОглÑд..." + +#: src/alarm/interface.c:1119 src/alarm/interface.c:1283 +msgid "Reminder" +msgstr "ПовідомленнÑ" + +#: src/alarm/interface.c:1136 +msgid "Use reminder" +msgstr "ВикориÑтовувати:" + +#: src/alarm/interface.c:1152 src/sndstretch/sndstretch_xmms.c:358 +msgid "Options" +msgstr "Опції" + +#: src/alarm/interface.c:1160 +msgid "What do these options mean?" +msgstr "Як це вÑе налаштувати?" + +#: src/alarm/interface.c:1188 +msgid "" +"\n" +"Time\n" +" Alarm at: \n" +" The time for the alarm to come on.\n" +"\n" +" Quiet After: \n" +" Stop alarm after this amount of time.\n" +" (if the wakeup dialog is not closed)\n" +"\n" +"\n" +"Days\n" +" Day:\n" +" Select the days for the alarm to activate.\n" +"\n" +" Time:\n" +" Choose the time for the alarm on each day,\n" +" or select the toggle button to use the default\n" +" time.\n" +"\n" +"\n" +"Volume\n" +" Fading: \n" +" Fade the volume up to the chosen volume \n" +" for this amount of time.\n" +"\n" +" Start at: \n" +" Start fading from this volume.\n" +"\n" +" Final: \n" +" The volume to stop fading at. If the fading\n" +" time is 0 then set volume to this and start\n" +" playing.\n" +"\n" +"\n" +"Options:\n" +" Additional Command:\n" +" Run this command at the alarm time.\n" +"\n" +" Playlist: \n" +" Load this playlist for playing songs from \n" +" (must have .m3u extension). If no playlist\n" +" is given then the songs which are currently\n" +" in the list will be used.\n" +" The URL of an mp3/ogg stream can also be\n" +" entered here, but loading of playlists from\n" +" URLs is not currently supported by xmms.\n" +"\n" +" Reminder:\n" +" Display a reminder when the alarm goes off,\n" +" type the reminder in the box and turn on the\n" +" toggle button if you want it to be shown.\n" +msgstr "" +"\n" +"ЧаÑ\n" +" Починати о: \n" +" ЧаÑ, коли починатиметьÑÑ Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ.\n" +"\n" +" Закінчити через: \n" +" Закінчити Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· заданий тут проміжок чаÑу піÑÐ»Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÑƒ.\n" +" (Ñкщо діалогове вікно Ð¿Ñ€Ð¾Ð±ÑƒÐ´Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ закрито)\n" +"\n" +"\n" +"Дні\n" +" День:\n" +" День тижнÑ, в Ñкий працюватиме будильник.\n" +"\n" +" ЧаÑ:\n" +" ЧаÑ, коли будильник Ñпрацьовуватиме в обраний день.\n" +" Якщо вибрано \"Як типово\", будильник Ñпрацює в типовий\n" +" Ñ‡Ð°Ñ (вкладка \"ЧаÑ\").\n" +"\n" +"\n" +"ГучніÑÑ‚ÑŒ\n" +" ÐароÑтаннÑ: \n" +" Під Ñ‡Ð°Ñ Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð° розкладом гучніÑÑ‚ÑŒ\n" +" нарощуватиметьÑÑ Ð¿Ñ€Ð¾Ñ‚Ñгом вказаного.\n" +" тут періоду чаÑу.\n" +"\n" +" Ðа початку: \n" +" Почати Ð½Ð°Ñ€Ð¾Ñ‰ÐµÐ½Ð½Ñ Ð· цієї гучноÑÑ‚Ñ–.\n" +"\n" +" По закінченню: \n" +" Ðарощувати до цієї гучноÑÑ‚Ñ–. Якщо чаÑом\n" +" нароÑÑ‚Ð°Ð½Ð½Ñ Ñ” 0, то вÑе Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¹Ñ‚Ð¸Ð¼Ðµ\n" +" з цією гучніÑÑ‚ÑŽ.\n" +"\n" +"\n" +"Опції:\n" +" Виконувати команду:\n" +" ЗапуÑкати цю команду під Ñ‡Ð°Ñ ÑпрацьовуваннÑ.\n" +"\n" +" СпиÑок Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ (необов’Ñзково): \n" +" Відтворювати цей ÑпиÑок Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ (лише \n" +" з ÑуфікÑом .m3u). Якщо не вказано, то\n" +" відтворюватимутьÑÑ Ð¾Ñтанні відкриті\n" +" доріжки.\n" +" Можна ввеÑти Ñюди URL mp3- чи ogg-потоку.\n" +" Поки що Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ ÑпиÑків відтвореннÑ\n" +" за URL не підтримуєтьÑÑ.\n" +"\n" +" ПовідомленнÑ:\n" +" Показувати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸ Ñпрацьовуванні.\n" +" Ð”Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ð²Ð²ÐµÐ´Ñ–Ñ‚ÑŒ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð² поле\n" +" й увімкніть \"ВикориÑтовувати:\".\n" + +#: src/alarm/interface.c:1190 src/skins/ui_manager.c:382 +msgid "Help" +msgstr "Як налаштувати?" + +#: src/alarm/interface.c:1222 src/cdaudio-ng/configure.c:249 +#: src/crystalizer/crystalizer.c:130 src/echo_plugin/gui.c:125 +#: src/jack/configure.c:148 src/null/null.c:108 src/stereo_plugin/stereo.c:125 +msgid "Cancel" +msgstr "СкаÑувати" + +#: src/alarm/interface.c:1290 +msgid "Your reminder for today is.." +msgstr "Ðагадую:" + +#: src/alarm/interface.c:1315 +msgid "Thankyou" +msgstr "ДÑкую" + +#: src/alsa/config.c:210 +msgid "Default PCM device" +msgstr "Типовий PCM-прилад" + +#: src/alsa/config.c:235 +msgid "Default mixer device" +msgstr "Типовий мікшер" + +#: src/alsa/config.c:438 +msgid "ALSA Output Plugin Preferences" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ ALSA" + +#: src/alsa/config.c:445 +msgid "PCM device:" +msgstr "PCM-приÑтрій:" + +#: src/alsa/config.c:447 src/OSS/configure.c:237 +msgid "Mixer device:" +msgstr "Мікшер:" + +#: src/alsa/config.c:449 +msgid "Mixer element:" +msgstr "Елемент мікшера:" + +#: src/alsa/config.c:452 +msgid "Work around drain hangup" +msgstr "Ðе завиÑати через \"drain\"-ваду ALSA" + +#: src/alsa/plugin.c:59 +msgid "About ALSA Output Plugin" +msgstr "Про плаґін виводу ALSA" + +#: src/alsa/plugin.c:81 +msgid "ALSA error" +msgstr "Збій ALSA" + +#: src/amidi-plug/amidi-plug.c:326 +msgid "" +"You have not selected any sequencer ports for MIDI playback. You can do so " +"in the MIDI plugin preferences." +msgstr "" +"Ви не вибрали портів ÑеквенÑера Ð´Ð»Ñ Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ MIDI. Виберіть Ñ—Ñ… у " +"налаштуваннÑÑ… AMIDI-Plug. " + +#: src/amidi-plug/backend-alsa/b-alsa.c:35 +msgid "ALSA Backend " +msgstr "ПоÑтпроцеÑор ALSA" + +#: src/amidi-plug/backend-alsa/b-alsa.c:37 +msgid "" +"This backend sends MIDI events to a group of user-chosen ALSA sequencer ports. The ALSA sequencer interface is very versatile, it can provide ports for audio cards hardware synthesizers (i.e. emu10k1) but also for software synths, external devices, etc.\n" +"This backend does not produce audio, MIDI events are handled directly from devices/programs behind the ALSA ports; in example, MIDI events sent to the hardware synth will be directly played.\n" +"Backend written by Giacomo Lozito." +msgstr "" +"Цей поÑтпроцеÑор поÑилає MIDI-Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð³Ñ€ÑƒÐ¿Ñ– портів ÑеквенÑера ALSA, обраних кориÑтувачем. Ð†Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ ÑеквенÑера ALSA дуже гнучкий, він може надавати порти Ð´Ð»Ñ Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð¸Ñ… Ñинтезаторів аудіокарт (наприклад, emu10k1), програмних Ñинтезаторів, зовнішніх приладів тощо.\n" +"Цей поÑтпроцеÑор не генерує звук. MIDI-Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÐºÐµÑ€ÑƒÑŽÑ‚ÑŒÑÑ Ð½Ð°Ð¿Ñ€Ñму приладами та програмами за портами ALSA. Ðаприклад, MIDI-повідомленнÑ, надіÑлані апаратному Ñинтезатору, будуть відтворені напрÑму.\n" +"Ðвтором поÑтпроцеÑора Ñ” Giacomo Lozito." + +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 +msgid "FluidSynth Backend " +msgstr "ПоÑтпроцеÑор FluidSynth" + +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 +msgid "" +"This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" +"Backend written by Giacomo Lozito." +msgstr "" +"Цей поÑтпроцеÑор утворює звук унаÑлідок відÑÐ¸Ð»Ð°Ð½Ð½Ñ MIDI-повідомлень до FluidSynth, програмного Ñинтезатора реального чаÑу, котрий базуєтьÑÑ Ð½Ð° Ñпецифікації SoundFont2 (www.fluidsynth.org).\n" +"Утвореним звуком можна керувати через плаґіни ефектів програвача. Звук виводитьÑÑ Ñ‡ÐµÑ€ÐµÐ· обраний плаґін виводу.\n" +"Ðвтором поÑтпроцеÑора Ñ” Giacomo Lozito." + +#: src/amidi-plug/i_configure-alsa.c:228 +msgid "ALSA BACKEND CONFIGURATION" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾ÑтпроцеÑора ALSA" + +#: src/amidi-plug/i_configure-alsa.c:331 +msgid "Port" +msgstr "Порт" + +#: src/amidi-plug/i_configure-alsa.c:333 +msgid "Client name" +msgstr "Ðазва клієнта" + +#: src/amidi-plug/i_configure-alsa.c:335 +msgid "Port name" +msgstr "Ðазва порта" + +#: src/amidi-plug/i_configure-alsa.c:346 +msgid "ALSA output ports" +msgstr "Порти виводу ALSA" + +#: src/amidi-plug/i_configure-alsa.c:399 +msgid "Soundcard: " +msgstr "Звукова карта:" + +#: src/amidi-plug/i_configure-alsa.c:401 +msgid "Mixer control: " +msgstr "Елемент мікшера:" + +#: src/amidi-plug/i_configure-alsa.c:413 +msgid "Mixer settings" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ñ–ÐºÑˆÐµÑ€Ð°" + +#: src/amidi-plug/i_configure-alsa.c:429 +msgid "ALSA Backend not loaded or not available" +msgstr "ПоÑтпроцеÑор ALSA вимкнений або недоÑтупний." + +#: src/amidi-plug/i_configure-alsa.c:448 +msgid "" +"ALSA\n" +"backend" +msgstr "" +"ПоÑтпроцеÑор\n" +"ALSA" + +#: src/amidi-plug/i_configure-ap.c:59 +msgid "AMIDI-Plug - backend information" +msgstr "AMIDI-Plug - Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ поÑтпроцеÑор" + +#: src/amidi-plug/i_configure-ap.c:196 +msgid "AMIDI-PLUG PREFERENCES" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ AMIDI-Plug" + +#: src/amidi-plug/i_configure-ap.c:223 +msgid "Backend selection" +msgstr "Вибір поÑтпроцеÑора" + +#: src/amidi-plug/i_configure-ap.c:227 +msgid "Available backends" +msgstr "ÐаÑвні поÑтпроцеÑори" + +#: src/amidi-plug/i_configure-ap.c:257 +msgid "Playback settings" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ" + +#: src/amidi-plug/i_configure-ap.c:262 +msgid "Transpose: " +msgstr "ТранÑпозиціÑ: " + +#: src/amidi-plug/i_configure-ap.c:271 +msgid "Drum shift: " +msgstr "ЗÑув ударних: " + +#: src/amidi-plug/i_configure-ap.c:289 +msgid "Advanced settings" +msgstr "Додаткові налаштуваннÑ" + +#: src/amidi-plug/i_configure-ap.c:293 +msgid "pre-calculate length of MIDI files in playlist" +msgstr "ОбчиÑлювати триваліÑÑ‚ÑŒ MIDI-файлів у ÑпиÑку Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð°Ð¿ÐµÑ€ÐµÐ´" + +#: src/amidi-plug/i_configure-ap.c:298 +msgid "extract comments from MIDI file (if available)" +msgstr "ВитÑгувати коментарі (Ñкщо Ñ”) з MIDI-файлу" + +#: src/amidi-plug/i_configure-ap.c:303 +msgid "extract lyrics from MIDI file (if available)" +msgstr "ВитÑгувати текÑÑ‚ піÑні (Ñкщо Ñ”) з MIDI-файлу" + +#: src/amidi-plug/i_configure-ap.c:333 +msgid "" +"AMIDI\n" +"Plug" +msgstr "" +"AMIDI-\n" +"Plug" + +#: src/amidi-plug/i_configure.c:76 +msgid "AMIDI-Plug - select file" +msgstr "AMIDI-Plug - вибір файлу" + +#: src/amidi-plug/i_configure.c:129 +msgid "AMIDI-Plug - configuration" +msgstr "AMIDI-Plug - налаштуваннÑ" + +#: src/amidi-plug/i_configure-fluidsynth.c:55 +msgid "AMIDI-Plug - select SoundFont file" +msgstr "AMIDI-Plug - вибір файлу SoundFont" + +#: src/amidi-plug/i_configure-fluidsynth.c:270 +msgid "FLUIDSYNTH BACKEND CONFIGURATION" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾ÑтпроцеÑора FluidSynth" + +#: src/amidi-plug/i_configure-fluidsynth.c:313 +msgid "SoundFont settings" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ SoundFont" + +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Ð†Ð¼â€™Ñ Ñ„Ð°Ð¹Ð»Ñƒ" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 +msgid "Size (bytes)" +msgstr "Розмір (у байтах)" + +#: src/amidi-plug/i_configure-fluidsynth.c:398 +msgid "Load SF on player start" +msgstr "Завантажувати з програвачем" + +#: src/amidi-plug/i_configure-fluidsynth.c:402 +msgid "Load SF on first midifile play" +msgstr "Завантажувати при відтворенні MIDI" + +#: src/amidi-plug/i_configure-fluidsynth.c:417 +msgid "Synthesizer settings" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñинтезатора" + +#: src/amidi-plug/i_configure-fluidsynth.c:426 +msgid "gain" +msgstr "ПідÑиленнÑ" + +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 +msgid "use default" +msgstr "Ñк типово" + +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 +msgid "value:" +msgstr "значеннÑ:" + +#: src/amidi-plug/i_configure-fluidsynth.c:454 +msgid "poliphony" +msgstr "ПоліфоніÑ" + +#: src/amidi-plug/i_configure-fluidsynth.c:482 +msgid "reverb" +msgstr "РевербераціÑ" + +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 +msgid "yes" +msgstr "так" + +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 +msgid "no" +msgstr "ні" + +#: src/amidi-plug/i_configure-fluidsynth.c:513 +msgid "chorus" +msgstr "ХоруÑ" + +#: src/amidi-plug/i_configure-fluidsynth.c:544 +msgid "sample rate" +msgstr "ЧаÑтота диÑкретизації" + +#: src/amidi-plug/i_configure-fluidsynth.c:550 +msgid "22050 Hz " +msgstr "22050 Гц" + +#: src/amidi-plug/i_configure-fluidsynth.c:553 +msgid "44100 Hz " +msgstr "44100 Гц" + +#: src/amidi-plug/i_configure-fluidsynth.c:556 +msgid "96000 Hz " +msgstr "96000 Гц" + +#: src/amidi-plug/i_configure-fluidsynth.c:559 +msgid "custom " +msgstr "Задана:" + +#: src/amidi-plug/i_configure-fluidsynth.c:568 +msgid "Hz " +msgstr "Гц" + +#: src/amidi-plug/i_configure-fluidsynth.c:621 +msgid "FluidSynth Backend not loaded or not available" +msgstr "ПоÑтпроцеÑор FluidSynth вимкнений або недоÑтупний." + +#: src/amidi-plug/i_configure-fluidsynth.c:640 +msgid "" +"FluidSynth\n" +"backend" +msgstr "" +"ПоÑтпроцеÑор\n" +"FluidSynth" + +#: src/amidi-plug/i_configure-timidity.c:39 +msgid "TIMIDITY BACKEND CONFIGURATION" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾ÑтпроцеÑора TiMidity" + +#: src/amidi-plug/i_configure-timidity.c:64 +msgid "TiMidity Backend not loaded or not available" +msgstr "ПоÑтпроцеÑор TiMidity вимкнений або недоÑтупний." + +#: src/amidi-plug/i_configure-timidity.c:83 +msgid "" +"TiMidity\n" +"backend" +msgstr "" +"ПоÑтпроцеÑор\n" +"TiMidity" + +#: src/amidi-plug/i_fileinfo.c:169 +msgid "Name:" +msgstr "Ðазва:" + +#: src/amidi-plug/i_fileinfo.c:193 +msgid " MIDI Info " +msgstr " Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ MIDI " + +#: src/amidi-plug/i_fileinfo.c:205 +msgid "Format:" +msgstr "Ðазва:" + +#: src/amidi-plug/i_fileinfo.c:208 +msgid "Length (msec):" +msgstr "ТриваліÑÑ‚ÑŒ (мÑ):" + +#: src/amidi-plug/i_fileinfo.c:211 +msgid "Num of Tracks:" +msgstr "КількіÑÑ‚ÑŒ доріжок:" + +#: src/amidi-plug/i_fileinfo.c:216 +msgid "variable" +msgstr "змінна" + +#: src/amidi-plug/i_fileinfo.c:217 +msgid "BPM:" +msgstr "Темп (BMP):" + +#: src/amidi-plug/i_fileinfo.c:223 +msgid "BPM (wavg):" +msgstr "BPM (wavg):" + +#: src/amidi-plug/i_fileinfo.c:226 +msgid "Time Div:" +msgstr "ЧаÑовий код MIDI:" + +#: src/amidi-plug/i_fileinfo.c:237 +msgid " MIDI Comments and Lyrics " +msgstr " Коментарі й Ñлова піÑні в MIDI " + +#: src/amidi-plug/i_fileinfo.c:288 +msgid "* no comments available in this MIDI file *" +msgstr "* у цьому MIDI-файлі немає коментарів *" + +#: src/amidi-plug/i_fileinfo.c:301 +msgid "* no lyrics available in this MIDI file *" +msgstr "* у цьому MIDI-файлі немає Ñлів піÑні *" + +#: src/amidi-plug/i_fileinfo.c:349 +msgid " (invalid UTF-8)" +msgstr " (недійÑний UTF-8)" + +#: src/amidi-plug/i_utils.c:43 +msgid "AMIDI-Plug - about" +msgstr "Про AMIDI-Plug" + +#: src/amidi-plug/i_utils.c:68 +msgid "" +"\n" +"AMIDI-Plug " +msgstr "" +"\n" +"AMIDI-Plug " + +#: src/amidi-plug/i_utils.c:69 +msgid "" +"\n" +"modular MIDI music player\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"\n" +"special thanks to...\n" +"\n" +"Clemens Ladisch and Jaroslav Kysela\n" +"for their cool programs aplaymidi and amixer; those\n" +"were really useful, along with alsa-lib docs, in order\n" +"to learn more about the ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"for the nice midi keyboard logo\n" +"\n" +"Tony Vroon\n" +"for the good help with alpha testing\n" +"\n" +msgstr "" +"\n" +"модульний MIDI-програвач\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"напиÑаний Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"ОÑоблива подÑка:\n" +"\n" +"Clemens Ladisch та Jaroslav Kysela\n" +"за їхні клаÑні програми aplaymidi й amixer, котрі були \n" +"дуже кориÑними, разом із документацією alsa-lib,\n" +"у вивченні ALSA API;\n" +"\n" +"Alfredo Spadafina\n" +"за гарненький логотип MIDI-клавіатури;\n" +"\n" +"Tony Vroon\n" +"за допомогу з альфа-теÑтуваннÑм.\n" +"\n" + +#: src/aosd/aosd_style.c:75 +msgid "Rectangle" +msgstr "ПрÑмокутник" + +#: src/aosd/aosd_style.c:79 +msgid "Rounded Rectangle" +msgstr "Заокруглений прÑмокутник" + +#: src/aosd/aosd_style.c:83 +msgid "Concave Rectangle" +msgstr "Увігнутий прÑмокутник" + +#: src/aosd/aosd_style.c:87 +msgid "None" +msgstr "Тільки текÑÑ‚" + +#: src/aosd/aosd_trigger.c:78 +msgid "Playback Start" +msgstr "ВідтвореннÑ" + +#: src/aosd/aosd_trigger.c:79 +msgid "Triggers OSD when a playlist entry is played." +msgstr "Показує Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ð° початку відтвореннÑ." + +#: src/aosd/aosd_trigger.c:83 +msgid "Title Change" +msgstr "Зміна назви" + +#: src/aosd/aosd_trigger.c:84 +msgid "" +"Triggers OSD when, during playback, the song title changes but the filename " +"is the same. This is mostly useful to display title changes in internet " +"streams." +msgstr "" +"Показує повідомленнÑ, коли під Ñ‡Ð°Ñ Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½ÑŽÑ”Ñ‚ÑŒÑÑ Ð½Ð°Ð·Ð²Ð° доріжки, а " +"Ñ–Ð¼â€™Ñ Ñ„Ð°Ð¹Ð»Ñƒ залишаєтьÑÑ Ñтарим. Це кориÑно при відтворенні потоків." + +#: src/aosd/aosd_trigger.c:90 +msgid "Volume Change" +msgstr "Зміна гучноÑÑ‚Ñ–" + +#: src/aosd/aosd_trigger.c:91 +msgid "Triggers OSD when volume is changed." +msgstr "Показує Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸ зміні гучноÑÑ‚Ñ–." + +#: src/aosd/aosd_trigger.c:95 +msgid "Pause On" +msgstr "Пауза" + +#: src/aosd/aosd_trigger.c:96 +msgid "Triggers OSD when playback is paused." +msgstr "Показує Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸ призупиненні відтвореннÑ." + +#: src/aosd/aosd_trigger.c:100 +msgid "Pause Off" +msgstr "ПродовженнÑ" + +#: src/aosd/aosd_trigger.c:101 +msgid "Triggers OSD when playback is unpaused." +msgstr "Показує Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸ продовженні відтвореннÑ." + +#: src/aosd/aosd_ui.c:179 +msgid "Placement" +msgstr "РозташуваннÑ" + +#: src/aosd/aosd_ui.c:218 +msgid "Relative X offset:" +msgstr "ВідноÑний горизонтальний зÑув:" + +#: src/aosd/aosd_ui.c:227 +msgid "Relative Y offset:" +msgstr "ВідноÑний вертикальний зÑув:" + +#: src/aosd/aosd_ui.c:236 +msgid "Max OSD width:" +msgstr "МакÑимальна ширина повідомленнÑ:" + +#: src/aosd/aosd_ui.c:249 +msgid "Multi-Monitor options" +msgstr "Опції Ð´Ð»Ñ ÐºÑ–Ð»ÑŒÐºÐ¾Ñ… моніторів" + +#: src/aosd/aosd_ui.c:253 +msgid "Display OSD using:" +msgstr "Показувати на:" + +#: src/aosd/aosd_ui.c:264 +msgid "all monitors" +msgstr "вÑÑ–Ñ… моніторах" + +#: src/aosd/aosd_ui.c:267 +#, c-format +msgid "monitor %i" +msgstr "моніторі %i" + +#: src/aosd/aosd_ui.c:322 +msgid "Timing (ms)" +msgstr "ЧаÑова витримка (мÑ)" + +#: src/aosd/aosd_ui.c:327 +msgid "Display:" +msgstr "Показ:" + +#: src/aosd/aosd_ui.c:332 +msgid "Fade in:" +msgstr "ПоÑва:" + +#: src/aosd/aosd_ui.c:337 +msgid "Fade out:" +msgstr "ЗникненнÑ:" + +#: src/aosd/aosd_ui.c:418 +msgid "Fonts" +msgstr "Шрифти" + +#: src/aosd/aosd_ui.c:426 +#, c-format +msgid "Font %i:" +msgstr "Шрифт %i:" + +#: src/aosd/aosd_ui.c:443 +msgid "Shadow" +msgstr "Тінь" + +#: src/aosd/aosd_ui.c:478 +msgid "Internationalization" +msgstr "ІнтернаціоналізаціÑ" + +#: src/aosd/aosd_ui.c:484 +msgid "Disable UTF-8 conversion of text (in aosd)" +msgstr "Вимкнути Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚ÐµÐºÑту в UTF-8 в повідомленнÑÑ…" + +#: src/aosd/aosd_ui.c:502 +msgid "Select Skin File" +msgstr "Вибрати файл жупана" + +#: src/aosd/aosd_ui.c:613 +msgid "Render Style" +msgstr "Показати Ñтиль" + +#: src/aosd/aosd_ui.c:629 +msgid "Colors" +msgstr "Кольори" + +#: src/aosd/aosd_ui.c:642 +#, c-format +msgid "Color %i:" +msgstr "Колір %i:" + +#: src/aosd/aosd_ui.c:662 +msgid "Custom Skin" +msgstr "ВлаÑний жупан" + +#: src/aosd/aosd_ui.c:668 +msgid "Skin file:" +msgstr "Файл жупана:" + +#: src/aosd/aosd_ui.c:671 +msgid "Browse" +msgstr "ОглÑд..." + +#: src/aosd/aosd_ui.c:773 +msgid "Enable trigger" +msgstr "ЗадіÑти ÑпуÑковий гачок" + +#: src/aosd/aosd_ui.c:800 +msgid "Event" +msgstr "ПодіÑ" + +#: src/aosd/aosd_ui.c:828 +msgid "Composite manager detected" +msgstr "Композитний " + +#: src/aosd/aosd_ui.c:835 +msgid "" +"Composite manager not detected;\n" +"unless you know that you have one running, please activate a composite manager otherwise the OSD won't work properly" +msgstr "" +"Композитного менеджера не знайдено.\n" +"Якщо він не запущений, увімкніть його, інакше екранне меню працюватиме неправильно." + +#: src/aosd/aosd_ui.c:843 +msgid "Composite manager not required for fake transparency" +msgstr "Композитний менеджер не потрібен Ð´Ð»Ñ Ñ„Ð°Ð»ÑŒÑˆÐ¸Ð²Ð¾Ñ— прозороÑÑ‚Ñ–" + +#: src/aosd/aosd_ui.c:881 +msgid "Transparency" +msgstr "ПрозоріÑÑ‚ÑŒ" + +#: src/aosd/aosd_ui.c:887 +msgid "Fake transparency" +msgstr "Фальшива прозоріÑÑ‚ÑŒ" + +#: src/aosd/aosd_ui.c:889 +msgid "Real transparency (requires X Composite Ext.)" +msgstr "Ð¡Ð¿Ñ€Ð°Ð²Ð¶Ð½Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€Ñ–ÑÑ‚ÑŒ (потребує композитні Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ X)" + +#: src/aosd/aosd_ui.c:931 +msgid "Composite extension not loaded" +msgstr "Композитне Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ðµ" + +#: src/aosd/aosd_ui.c:939 +msgid "Composite extension not available" +msgstr "Композитне Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð½ÐµÐ´Ð¾Ñтупне" + +#: src/aosd/aosd_ui.c:958 +#, c-format +msgid "Audacious OSD" +msgstr "OSD-Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Audacious" + +#: src/aosd/aosd_ui.c:1039 +msgid "Audacious OSD - configuration" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½ÑŒ на екрані" + +#: src/aosd/aosd_ui.c:1060 +msgid "Test" +msgstr "Перевірка" + +#: src/aosd/aosd_ui.c:1075 +msgid "Position" +msgstr "РозташуваннÑ" + +#: src/aosd/aosd_ui.c:1080 +msgid "Animation" +msgstr "ÐнімаціÑ" + +#: src/aosd/aosd_ui.c:1085 +msgid "Text" +msgstr "ТекÑÑ‚" + +#: src/aosd/aosd_ui.c:1090 +msgid "Decoration" +msgstr "ОздобленнÑ" + +#: src/aosd/aosd_ui.c:1095 +msgid "Trigger" +msgstr "СпуÑковий гачок" + +#: src/aosd/aosd_ui.c:1100 src/cdaudio-ng/configure.c:171 +msgid "Misc" +msgstr "Різне" + +#: src/aosd/aosd_ui.c:1137 +msgid "Audacious OSD - about" +msgstr "Про плаґін повідомлень на екрані" + +#: src/aosd/aosd_ui.c:1167 +msgid "" +"\n" +"Audacious OSD " +msgstr "" +"\n" +"Audacious OSD " + +#: src/aosd/aosd_ui.c:1168 +msgid "" +"\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"On-Screen-Display is based on Ghosd library\n" +"written by Evan Martin\n" +"http://neugierig.org/software/ghosd/\n" +"\n" +msgstr "" +"\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"Ðвтором Ñ” Giacomo Lozito\n" +"\n" +"\n" +"БазуєтьÑÑ Ð½Ð° бібліотеці Ghosd,\n" +"автором Ñкої Ñ” Evan Martin,\n" +"http://neugierig.org/software/ghosd/\n" +"\n" + +#: src/blur_scope/config.c:73 +msgid "Blur Scope: Color selection" +msgstr "РозпливчаÑтий оÑцилограф: вибір кольору" + +#: src/blur_scope/config.c:83 src/jack/configure.c:106 +msgid "Options:" +msgstr "Опції:" + +#: src/bs2b/plugin.c:157 +msgid "Bauer stereophonic-to-binaural Preferences" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñтереозвуку в бінауральний за Бауером" + +#: src/bs2b/plugin.c:168 +msgid "Feed level:" +msgstr "Рівень Ð·Ð¼Ñ–ÑˆÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ð½Ð°Ð»Ñ–Ð²:" + +#: src/bs2b/plugin.c:182 +msgid "Cut frequency:" +msgstr "ЧаÑтота зрізу:" + +#: src/bs2b/plugin.c:196 +msgid "Presets:" +msgstr "ПреÑети:" + +#: src/cdaudio-ng/cdaudio-ng.c:242 +msgid "About Audio CD Plugin" +msgstr "Про плаґін аудіо-компакт-диÑків" + +#: src/cdaudio-ng/cdaudio-ng.c:243 +msgid "" +"Copyright (c) 2007, by Calin Crisan and The Audacious Team.\n" +"\n" +"Many thanks to libcdio developers \n" +"\tand to libcddb developers .\n" +"\n" +"Also thank you Tony Vroon for mentoring & guiding me.\n" +"\n" +"This was a Google Summer of Code 2007 project.\n" +"\n" +"Copyright 2009 John Lindgren" +msgstr "" +"(c) 2007, Calin Crisan Ñ– Команда Audacious.\n" +"\n" +"(c) 2009, John Lindgren.\n" +"\n" +"Велике ÑпаÑибі розробникам libcdio \n" +"Ñ– розробникам libcddb .\n" +"\n" +"Також дÑкую Tony Vroon за наÑтавництво й ÑпрÑмовуваннÑ.\n" +"\n" +"Це був проект \"Google Summer of Code 2007\"." + +#: src/cdaudio-ng/cdaudio-ng.c:552 +msgid "Audio CD" +msgstr "Ðудіо-CD" + +#: src/cdaudio-ng/cdaudio-ng.c:924 +msgid "Drive is empty." +msgstr "Привід порожній." + +#: src/cdaudio-ng/cdaudio-ng.c:926 +msgid "Unsupported disk type." +msgstr "Ðепідтримуваний тип диÑку." + +#: src/cdaudio-ng/configure.c:148 +msgid "CD Audio Plugin Configuration" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð»Ð°Ò‘Ñ–Ð½Ñƒ Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ CD" + +#: src/cdaudio-ng/configure.c:160 +msgid "Digital audio extraction" +msgstr "Цифрове Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ð°ÑƒÐ´Ñ–Ð¾" + +#: src/cdaudio-ng/configure.c:165 +msgid "Title information" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ назви" + +#: src/cdaudio-ng/configure.c:176 +msgid "Disc speed:" +msgstr "ШвидкіÑÑ‚ÑŒ Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð´Ð¸Ñка:" + +#: src/cdaudio-ng/configure.c:184 +msgid "Use cd-text if available" +msgstr "ВикориÑтовувати CD-Text за наÑвноÑÑ‚Ñ–" + +#: src/cdaudio-ng/configure.c:191 +msgid "Use CDDB if available" +msgstr "ВикориÑтовувати CDDB за можливоÑÑ‚Ñ–" + +#: src/cdaudio-ng/configure.c:197 +msgid "Server: " +msgstr "Сервер: " + +#: src/cdaudio-ng/configure.c:201 +msgid "Path: " +msgstr "ШлÑÑ…: " + +#: src/cdaudio-ng/configure.c:205 +msgid "Port: " +msgstr "Порт: " + +#: src/cdaudio-ng/configure.c:218 +msgid "Use HTTP instead of CDDBP" +msgstr "ВикориÑтовувати HTTP заміÑÑ‚ÑŒ CDDBP" + +#: src/cdaudio-ng/configure.c:230 +msgid "Override default device: " +msgstr "ПримуÑово вÑтановити приÑтрій: " + +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:123 +#: src/echo_plugin/gui.c:118 src/jack/configure.c:141 src/null/null.c:107 +#: src/stereo_plugin/stereo.c:118 +msgid "Ok" +msgstr "Гаразд" + +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Play CD" +msgstr "Відтворити CD" + +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Add CD" +msgstr "Додати CD" + +#: src/compressor/plugin.c:63 +msgid "About Dynamic Range Compression Plugin" +msgstr "Про плаґін-компреÑор звукового діапазону" + +#: src/compressor/plugin.c:95 +msgid "Dynamic Range Compressor Preferences" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð¿Ñ€ÐµÑора звукового діапазону" + +#: src/compressor/plugin.c:107 +msgid "Center volume:" +msgstr "ГучніÑÑ‚ÑŒ центру:" + +#: src/compressor/plugin.c:120 +msgid "Dynamic range:" +msgstr "Динамічний діапазон:" + +#: src/console/configure.c:136 +msgid "Game Console Music Decoder" +msgstr "Декодер ігроконÑольної музики" + +#: src/console/configure.c:153 +msgid "General" +msgstr "Загальне" + +#: src/console/configure.c:155 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "ВідтвореннÑ" + +#: src/console/configure.c:170 +msgid "Bass:" +msgstr "ÐЧ:" + +#: src/console/configure.c:174 src/console/configure.c:185 +#: src/console/configure.c:206 +msgid "secs" +msgstr "Ñек" + +#: src/console/configure.c:181 +msgid "Treble:" +msgstr "ВЧ:" + +#: src/console/configure.c:202 +msgid "Default song length:" +msgstr "Типова триваліÑÑ‚ÑŒ піÑні:" + +#: src/console/configure.c:208 +msgid "Resampling" +msgstr "ПередиÑкретизаціÑ" + +#: src/console/configure.c:214 +msgid "Enable audio resampling" +msgstr "ПримуÑова передиÑкретизаціÑ" + +#: src/console/configure.c:229 +msgid "Resampling rate:" +msgstr "ЧаÑтота диÑкретизації:" + +#: src/console/configure.c:233 +msgid "Hz" +msgstr "Гц" + +#: src/console/configure.c:244 +msgid "SPC" +msgstr "SPC700" + +#: src/console/configure.c:245 +msgid "Ignore length from SPC tags" +msgstr "Ігнорувати триваліÑÑ‚ÑŒ із теґів SPC" + +#: src/console/configure.c:246 +msgid "Increase reverb" +msgstr "ПоÑилити реверберацію" + +#: src/console/configure.c:271 +msgid "" +"The default song length, expressed in seconds, is used for songs that do not" +" provide length information (i.e. looping tracks)." +msgstr "" +"Типова триваліÑÑ‚ÑŒ піÑні, вказана в Ñекундах, викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð´Ð¾Ñ€Ñ–Ð¶Ð¾Ðº, " +"що не мають інформації про триваліÑÑ‚ÑŒ (наприклад, повторювані доріжки)." + +#: src/console/plugin.c:33 +msgid "About the Game Console Music Decoder" +msgstr "Про декодер ігроконÑольної музики" + +#: src/console/plugin.c:34 +msgid "" +"Console music decoder engine based on Game_Music_Emu 0.5.2.\n" +"Supported formats: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Audacious implementation by: William Pitcock , \n" +" Shay Green \n" +msgstr "" +"Двигунець Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð³Ñ€Ð¾ÐºÐ¾Ð½Ñольної музики базуєтьÑÑ Ð½Ð° Game_Music_Emu 0.5.2.\n" +"Підтримувані формати: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Ð”Ð»Ñ Audacious імплементували William Pitcock та Shay Green \n" + +#: src/crossfade/plugin.c:60 +msgid "About Crossfade" +msgstr "Про плаґін перехреÑного затиханнÑ-нароÑтаннÑ" + +#: src/crossfade/plugin.c:92 +msgid "Crossfade Preferences" +msgstr "ПерехреÑне затиханнÑ" + +#: src/crossfade/plugin.c:104 +msgid "Overlap (in seconds):" +msgstr "Охоплювати (Ñекунд):" + +#: src/crossfade/plugin.c:135 src/crossfade/plugin.c:141 +msgid "Crossfade Error" +msgstr "Збій при перехреÑному затиханні" + +#: src/crossfade/plugin.c:135 +msgid "" +"Crossfading failed because the songs had a different number of channels." +msgstr "" +"ПерехреÑне Ð·Ð°Ñ‚Ð¸Ñ…Ð°Ð½Ð½Ñ Ñ‚ÑƒÑ‚ неможливе, бо доріжки мають різну кількіÑÑ‚ÑŒ " +"каналів." + +#: src/crossfade/plugin.c:143 +msgid "" +"Crossfading failed because the songs had different sample rates.\n" +"\n" +"You can use the Sample Rate Converter effect to resample the songs to the same rate." +msgstr "" +"ПерехреÑне Ð·Ð°Ñ‚Ð¸Ñ…Ð°Ð½Ð½Ñ Ñ‚ÑƒÑ‚ неможливе, бо доріжки мають різну чаÑтоту диÑкретизації.\n" +"\n" +"Можна викориÑтовувати ефект \"Sample Rate Converter\" Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÑƒÑового вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð°Ñтоти диÑкретизації." + +#: src/crystalizer/crystalizer.c:100 +msgid "Configure Crystalizer" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐšÑ€Ð¸Ñталізатора" + +#: src/crystalizer/crystalizer.c:102 src/stereo_plugin/stereo.c:97 +msgid "Effect intensity:" +msgstr "ІнтенÑивніÑÑ‚ÑŒ ефекту:" + +#: src/crystalizer/crystalizer.c:136 src/echo_plugin/gui.c:131 +#: src/stereo_plugin/stereo.c:131 +msgid "Apply" +msgstr "ЗаÑтоÑувати" + +#: src/echo_plugin/gui.c:15 +msgid "" +"Echo Plugin\n" +"By Johan Levin 1999.\n" +"\n" +"Surround echo by Carl van Schaik 1999" +msgstr "" +"Плаґін відлуннÑ\n" +"Johan Levin Ñтворив 1999 року.\n" +"\n" +"Ð’Ñ–Ð´Ð»ÑƒÐ½Ð½Ñ Ð¾Ð±â€™Ñ”Ð¼Ð½Ð¾Ð³Ð¾ звуку напиÑав 1999 року Carl van Schaik." + +#: src/echo_plugin/gui.c:27 +msgid "About Echo Plugin" +msgstr "Про плаґін відлуннÑ" + +#: src/echo_plugin/gui.c:67 +msgid "Configure Echo" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð»ÑƒÐ½Ð½Ñ" + +#: src/echo_plugin/gui.c:83 +msgid "Delay: (ms)" +msgstr "Затримка (мÑ):" + +#: src/echo_plugin/gui.c:88 +msgid "Feedback: (%)" +msgstr "Зворотній зв’Ñзок (%):" + +#: src/echo_plugin/gui.c:93 +msgid "Volume: (%)" +msgstr "ГучніÑÑ‚ÑŒ (%): " + +#: src/ffaudio/ffaudio-core.c:725 +#, c-format +msgid "" +"Multi-format audio decoding plugin for Audacious based on\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious plugin by:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" +msgstr "" +"Плаґін Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð²ÑƒÐºÑƒ багатьох форматів Ð´Ð»Ñ Audacious, базуєтьÑÑ\n" +"на інтегрованому мультимедіа-Ñередовищі FFmpeg (http://www.ffmpeg.org/).\n" +"(c) 2000-2009 Fabrice Bellard та інші.\n" +"\n" +"Ðвтори плаґіна Ð´Ð»Ñ Audacious:\n" +" William Pitcock ,\n" +" Matti Hämäläinen .\n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" + +#: src/ffaudio/ffaudio-core.c:739 +msgid "About FFaudio Plugin" +msgstr "Про плаґін FFaudio" + +#: src/filewriter/filewriter.c:166 +msgid "About FileWriter-Plugin" +msgstr "Про плаґін FileWriter" + +#: src/filewriter/filewriter.c:461 +msgid "File Writer Configuration" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ в файл" + +#: src/filewriter/filewriter.c:473 +msgid "Output file format:" +msgstr "Тип файлу виводу:" + +#: src/filewriter/filewriter.c:491 +msgid "Configure" +msgstr "ÐалаштуваннÑ..." + +#: src/filewriter/filewriter.c:506 +msgid "Save into original directory" +msgstr "Зберігати в теку оригіналу" + +#: src/filewriter/filewriter.c:511 +msgid "Save into custom directory" +msgstr "Обрати теку ÑамоÑтійно" + +#: src/filewriter/filewriter.c:521 +msgid "Output file folder:" +msgstr "Зберігати вивід до:" + +#: src/filewriter/filewriter.c:525 +msgid "Pick a folder" +msgstr "Вибір теки виводу" + +#: src/filewriter/filewriter.c:544 +msgid "Get filename from:" +msgstr "Ðазва файла:" + +#: src/filewriter/filewriter.c:547 +msgid "original file tags" +msgstr "за тегами доріжки" + +#: src/filewriter/filewriter.c:553 +msgid "original filename" +msgstr "за назвою файлу оригіналу" + +#: src/filewriter/filewriter.c:563 +msgid "Don't strip file name extension" +msgstr "Ðе вирізати Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð¾Ñ€Ð¸Ð³Ñ–Ð½Ð°Ð»Ñƒ" + +#: src/filewriter/filewriter.c:578 +msgid "Prepend track number to filename" +msgstr "Ðомер доріжки на початку назви файлу" + +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:765 +msgid "Auto" +msgstr "Ðвто" + +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" +msgstr "Об’єднане Ñтерео" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Stereo" +msgstr "Стерео" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Mono" +msgstr "Моно" + +#: src/filewriter/mp3.c:706 +msgid "MP3 Configuration" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ MP3" + +#: src/filewriter/mp3.c:729 +msgid "Algorithm Quality:" +msgstr "ШвидкіÑÑ‚ÑŒ ÑтиÑненнÑ:" + +#: src/filewriter/mp3.c:754 +msgid "Output Samplerate:" +msgstr "ЧаÑтота диÑкретизації виводу:" + +#: src/filewriter/mp3.c:782 +msgid "(Hz)" +msgstr "Гц" + +#: src/filewriter/mp3.c:789 +msgid "Bitrate / Compression ratio:" +msgstr "Сила ÑтиÑканнÑ" + +#: src/filewriter/mp3.c:813 +msgid "Bitrate (kbps):" +msgstr "Бітрейт (Кбіт/Ñ)" + +#: src/filewriter/mp3.c:846 +msgid "Compression ratio:" +msgstr "Коефіцієнт ÑтиÑненнÑ:" + +#: src/filewriter/mp3.c:870 +msgid "Audio Mode:" +msgstr "Тип звуку:" + +#: src/filewriter/mp3.c:895 +msgid "Misc:" +msgstr "Різне:" + +#: src/filewriter/mp3.c:906 +msgid "Enforce strict ISO complience" +msgstr "" +"ПримуÑова відповідніÑÑ‚ÑŒ до ISO (Ð´Ð»Ñ Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð¸Ñ… програвачів, більший розмір)" + +#: src/filewriter/mp3.c:917 +msgid "Error protection" +msgstr "CRC-захиÑÑ‚ від збоїв (дещо менша ÑкіÑÑ‚ÑŒ)" + +#: src/filewriter/mp3.c:929 src/filewriter/vorbis.c:247 +msgid "Quality" +msgstr "ЯкіÑÑ‚ÑŒ" + +#: src/filewriter/mp3.c:939 +msgid "Enable VBR/ABR" +msgstr "Увімкнути змінний чи уÑереднений бітрейт" + +#: src/filewriter/mp3.c:949 +msgid "Type:" +msgstr "Тип бітрейту:" + +#: src/filewriter/mp3.c:982 +msgid "VBR Options:" +msgstr "Опції VBR (змінний бітрейт):" + +#: src/filewriter/mp3.c:998 +msgid "Minimum bitrate (kbps):" +msgstr "Мінімальний бітрейт (Кбіт/c):" + +#: src/filewriter/mp3.c:1025 +msgid "Maximum bitrate (kbps):" +msgstr "МакÑимальний бітрейт (Кбіт/c):" + +#: src/filewriter/mp3.c:1048 +msgid "Strictly enforce minimum bitrate" +msgstr "ПримуÑово вÑтановити мінімальний бітрейт" + +#: src/filewriter/mp3.c:1060 +msgid "ABR Options:" +msgstr "Опції ABR (уÑереднений бітрейт):" + +#: src/filewriter/mp3.c:1070 +msgid "Average bitrate (kbps):" +msgstr "Середній бітрейт (Кбіт/Ñ):" + +#: src/filewriter/mp3.c:1098 +msgid "VBR quality level:" +msgstr "Рівень ÑкоÑÑ‚Ñ– VBR (менше - краще):" + +#: src/filewriter/mp3.c:1117 +msgid "Don't write Xing VBR header" +msgstr "Ðе пиÑати VBR-заголовок (\"Xing\")" + +#: src/filewriter/mp3.c:1131 +msgid "VBR/ABR" +msgstr "VBR/ABR" + +#: src/filewriter/mp3.c:1141 +msgid "Frame params:" +msgstr "Позначки:" + +#: src/filewriter/mp3.c:1153 +msgid "Mark as copyright" +msgstr "\"Під авторÑькими правами\"" + +#: src/filewriter/mp3.c:1164 +msgid "Mark as original" +msgstr "\"Є оригіналом\"" + +#: src/filewriter/mp3.c:1176 +msgid "ID3 params:" +msgstr "Параметри ID3:" + +#: src/filewriter/mp3.c:1187 +msgid "Force addition of version 2 tag" +msgstr "ПримуÑово додавати теґ другої верÑÑ–Ñ—" + +#: src/filewriter/mp3.c:1197 +msgid "Only add v1 tag" +msgstr "Додавати лише v1-теґ" + +#: src/filewriter/mp3.c:1204 +msgid "Only add v2 tag" +msgstr "Додавати лише v2-теґ" + +#: src/filewriter/mp3.c:1225 +msgid "Tags" +msgstr "Теґи" + +#: src/filewriter/vorbis.c:240 +msgid "Vorbis Encoder Configuration" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð´ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° Vorbis" + +#: src/filewriter/vorbis.c:260 +msgid "Quality level (0 - 10):" +msgstr "Рівень ÑкоÑÑ‚Ñ– (0-10, менше - краще):" + +#: src/flacng/plugin.c:380 +msgid "About FLAC Audio Plugin" +msgstr "Про плаґін вводу з FLAC" + +#: src/flacng/plugin.c:381 +msgid "" +"\n" +"\n" +"Original code by\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" +msgstr "" +"\n" +"Ðвтором оригіналу Ñ”\n" +"Ralf Ertzinger .\n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" + +#: src/gnomeshortcuts/gnomeshortcuts.c:303 +msgid "About Gnome Shortcut Plugin" +msgstr "Про плаґін Ñкорочень GNOME" + +#: src/gnomeshortcuts/gnomeshortcuts.c:304 +msgid "" +"Gnome Shortcut Plugin\n" +"Let's you control the player with Gnome's shortcuts.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +msgstr "" +"Плаґін Ñкорочень GNOME\n" +"дозволÑÑ” керувати Audacious за допомогою Ñкорочень GNOME.\n" +"\n" +"(c) 2007-2008, Sascha Hlusiak \n" +"\n" + +#: src/gtkui/columns.c:36 +msgid "Entry number" +msgstr "Ðомер у ÑпиÑку" + +#: src/gtkui/columns.c:36 src/search-tool/search-tool.c:43 +msgid "Title" +msgstr "Ðазва" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:42 +msgid "Artist" +msgstr "Виконавець" + +#: src/gtkui/columns.c:37 +msgid "Year" +msgstr "Рік" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:43 +msgid "Album" +msgstr "Ðльбом" + +#: src/gtkui/columns.c:37 +msgid "Track" +msgstr "Доріжка" + +#: src/gtkui/columns.c:37 +msgid "Queue position" +msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ñƒ черзі" + +#: src/gtkui/columns.c:38 +msgid "Length" +msgstr "ТриваліÑÑ‚ÑŒ" + +#: src/gtkui/columns.c:38 +msgid "File path" +msgstr "ШлÑÑ… до файлу" + +#: src/gtkui/columns.c:38 +msgid "File name" +msgstr "Ðазва файлу" + +#: src/gtkui/columns.c:38 +msgid "Custom title" +msgstr "Ðазва файлу" + +#: src/gtkui/columns.c:39 +msgid "Bitrate" +msgstr "Бітова швидкіÑÑ‚ÑŒ" + +#: src/gtkui/columns.c:278 +msgid "Choose Columns" +msgstr "Вибрати Ñтовпчики" + +#: src/gtkui/columns.c:292 +msgid "Available:" +msgstr "ДоÑтупні:" + +#: src/gtkui/columns.c:326 +msgid "Chosen:" +msgstr "Вибрані:" + +#: src/gtkui/layout.c:122 +msgid "Dock at Left" +msgstr "Прикріпити зліва" + +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "Прикріпити Ñправа" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "Прикріпити вгорі" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "Прикріпити внизу" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "Відкріпити" + +#: src/gtkui/layout.c:123 src/ladspa/plugin.c:644 +msgid "Disable" +msgstr "Вимкнути" + +#: src/gtkui/menus.c:131 +msgid "_Open Files ..." +msgstr "Відтворити _файли..." + +#: src/gtkui/menus.c:132 +msgid "Open _URL ..." +msgstr "Відтворити файли за _поÑиланнÑм..." + +#: src/gtkui/menus.c:133 +msgid "_Add Files ..." +msgstr "_Додати файли..." + +#: src/gtkui/menus.c:134 +msgid "Add U_RL ..." +msgstr "Додати файли _за поÑиланнÑм..." + +#: src/gtkui/menus.c:136 +msgid "A_bout ..." +msgstr "П_ро Audacious..." + +#: src/gtkui/menus.c:137 +msgid "_Preferences ..." +msgstr "_ÐалаштуваннÑ..." + +#: src/gtkui/menus.c:138 src/skins/ui_manager.c:406 +msgid "_Quit" +msgstr "_Вихід" + +#: src/gtkui/menus.c:141 +msgid "_Play" +msgstr "_Відтворити" + +#: src/gtkui/menus.c:142 +msgid "Paus_e" +msgstr "_Призупинити" + +#: src/gtkui/menus.c:143 +msgid "_Stop" +msgstr "_Зупинити" + +#: src/gtkui/menus.c:144 +msgid "Pre_vious" +msgstr "П_опереднÑ" + +#: src/gtkui/menus.c:145 +msgid "_Next" +msgstr "_ÐаÑтупна" + +#: src/gtkui/menus.c:147 +msgid "_Repeat" +msgstr "Повто_рювати" + +#: src/gtkui/menus.c:148 +msgid "S_huffle" +msgstr "Ð’_ипадково" + +#: src/gtkui/menus.c:149 +msgid "N_o Playlist Advance" +msgstr "Ð_е проÑуватиÑÑ ÑпиÑком" + +#: src/gtkui/menus.c:150 +msgid "Stop _After This Song" +msgstr "Зупинити піÑÐ»Ñ _цієї піÑні" + +#: src/gtkui/menus.c:152 src/gtkui/menus.c:212 +msgid "Song _Info ..." +msgstr "_Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ доріжку..." + +#: src/gtkui/menus.c:153 +msgid "Jump to _Time ..." +msgstr "Перейти до _чаÑу..." + +#: src/gtkui/menus.c:154 +msgid "_Jump to Song ..." +msgstr "Перейти до _доріжки..." + +#: src/gtkui/menus.c:157 +msgid "By Track _Number" +msgstr "_За номером доріжки" + +#: src/gtkui/menus.c:158 +msgid "By _Title" +msgstr "За _назвою" + +#: src/gtkui/menus.c:159 +msgid "By _Artist" +msgstr "За _виконавцем" + +#: src/gtkui/menus.c:160 +msgid "By A_lbum" +msgstr "За _альбомом" + +#: src/gtkui/menus.c:161 +msgid "By Release _Date" +msgstr "За _датою виданнÑ" + +#: src/gtkui/menus.c:162 +msgid "By _File Path" +msgstr "За _шлÑхом до файлу" + +#: src/gtkui/menus.c:163 +msgid "By _Custom Title" +msgstr "За назвою _файлу" + +#: src/gtkui/menus.c:165 +msgid "R_everse Order" +msgstr "_У зворотньому порÑдку" + +#: src/gtkui/menus.c:166 +msgid "_Random Order" +msgstr "У випадковому по_Ñ€Ñдку" + +#: src/gtkui/menus.c:169 src/gtkui/menus.c:214 +msgid "_Refresh" +msgstr "_Оновити" + +#: src/gtkui/menus.c:170 +msgid "Remove _Unavailable Files" +msgstr "Прибрати _недоÑтупні файли" + +#: src/gtkui/menus.c:172 +msgid "_Sort" +msgstr "_Сортувати" + +#: src/gtkui/menus.c:174 +msgid "_New" +msgstr "_Ðовий" + +#: src/gtkui/menus.c:175 src/gtkui/menus.c:225 +msgid "_Close" +msgstr "_Закрити" + +#: src/gtkui/menus.c:177 +msgid "_Import ..." +msgstr "_Імпортувати..." + +#: src/gtkui/menus.c:178 +msgid "_Export ..." +msgstr "_ЕкÑпортувати..." + +#: src/gtkui/menus.c:180 +msgid "_Playlist Manager ..." +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÑпиÑками _відтвореннÑ..." + +#: src/gtkui/menus.c:181 +msgid "_Queue Manager ..." +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ _чергою..." + +#: src/gtkui/menus.c:184 +msgid "Volume _Up" +msgstr "З_більшити гучніÑÑ‚ÑŒ" + +#: src/gtkui/menus.c:185 +msgid "Volume _Down" +msgstr "З_меншити гучніÑÑ‚ÑŒ" + +#: src/gtkui/menus.c:187 +msgid "_Equalizer" +msgstr "_Еквалайзер" + +#: src/gtkui/menus.c:189 +msgid "E_ffects" +msgstr "Е_фекти" + +#: src/gtkui/menus.c:192 +msgid "_Interface" +msgstr "_ІнтерфейÑ" + +#: src/gtkui/menus.c:193 +msgid "_Visualizations" +msgstr "_ВізуалізаціÑ" + +#: src/gtkui/menus.c:195 +msgid "Show _Menu Bar" +msgstr "Показувати панель _меню" + +#: src/gtkui/menus.c:196 +msgid "Show I_nfo Bar" +msgstr "Показувати панель Ñ–_нформації" + +#: src/gtkui/menus.c:197 +msgid "Show _Status Bar" +msgstr "Показувати Ñ€Ñдок _Ñтану" + +#: src/gtkui/menus.c:199 +msgid "Show Column _Headers" +msgstr "Показувати _заголовки Ñтовпчиків " + +#: src/gtkui/menus.c:200 +msgid "Choose _Columns ..." +msgstr "Вибрати Ñ_товпчики..." + +#: src/gtkui/menus.c:201 +msgid "Scrol_l on Song Change" +msgstr "_Прокручувати при зміні доріжки" + +#: src/gtkui/menus.c:204 +msgid "_File" +msgstr "_Файл" + +#: src/gtkui/menus.c:205 +msgid "_Playback" +msgstr "_ВідтвореннÑ" + +#: src/gtkui/menus.c:206 +msgid "P_laylist" +msgstr "_СпиÑок відтвореннÑ" + +#: src/gtkui/menus.c:207 src/gtkui/menus.c:221 +msgid "_Services" +msgstr "С_лужби" + +#: src/gtkui/menus.c:208 +msgid "_Output" +msgstr "Ð’_ивід" + +#: src/gtkui/menus.c:209 +msgid "_View" +msgstr "Ви_глÑд" + +#: src/gtkui/menus.c:213 +msgid "_Queue/Unqueue" +msgstr "_Елемент черги" + +#: src/gtkui/menus.c:216 +msgid "Cu_t" +msgstr "_Вирізати" + +#: src/gtkui/menus.c:217 +msgid "_Copy" +msgstr "_Копіювати" + +#: src/gtkui/menus.c:218 +msgid "_Paste" +msgstr "Ð’ÑÑ‚_авити" + +#: src/gtkui/menus.c:219 +msgid "Select _All" +msgstr "Виді_лити вÑе" + +#: src/gtkui/menus.c:224 +msgid "_Rename" +msgstr "Перей_менувати" + +#: src/gtkui/ui_gtk.c:95 +msgid "GTK Interface" +msgstr "Ð†Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ GTK" + +#: src/gtkui/ui_gtk.c:156 src/skins/ui_main.c:303 +#, c-format +msgid "%s - Audacious" +msgstr "%s - Audacious" + +#: src/gtkui/ui_gtk.c:162 +msgid "Buffering ..." +msgstr "Буферую..." + +#: src/gtkui/ui_gtk.c:165 src/skins/ui_main.c:305 src/skins/ui_main.c:1504 +msgid "Audacious" +msgstr "Audacious" + +#: src/gtkui/ui_gtk.c:216 src/skins/plugin.c:190 +msgid "Error" +msgstr "Помилка" + +#: src/gtkui/ui_playlist_notebook.c:97 +msgid "Close" +msgstr "Закрити" + +#: src/gtkui/ui_statusbar.c:105 src/skins/ui_main.c:460 +msgid "mono" +msgstr "моно" + +#: src/gtkui/ui_statusbar.c:107 src/skins/ui_main.c:459 +msgid "stereo" +msgstr "Ñтерео" + +#: src/gtkui/ui_statusbar.c:109 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d канал" +msgstr[1] "%d канали" +msgstr[2] "%d каналів" + +#: src/gtkui/ui_statusbar.c:124 +#, c-format +msgid "%d kbps" +msgstr "%d кб/Ñ" + +#: src/hotkey/gui.c:71 +msgid "Previous Track" +msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ð´Ð¾Ñ€Ñ–Ð¶ÐºÐ°" + +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "Відтворити" + +#: src/hotkey/gui.c:73 +msgid "Pause/Resume" +msgstr "Призупинити/продовжити" + +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +msgid "Stop" +msgstr "Зупинити" + +#: src/hotkey/gui.c:75 +msgid "Next Track" +msgstr "ÐаÑтупна доріжка" + +#: src/hotkey/gui.c:76 +msgid "Forward 5 Seconds" +msgstr "Ðа 5 Ñекунд вперед" + +#: src/hotkey/gui.c:77 +msgid "Rewind 5 Seconds" +msgstr "Ðа 5 Ñекунд назад" + +#: src/hotkey/gui.c:78 +msgid "Mute" +msgstr "Вимкнути звук" + +#: src/hotkey/gui.c:79 +msgid "Volume Up" +msgstr "Збільшити гучніÑÑ‚ÑŒ" + +#: src/hotkey/gui.c:80 +msgid "Volume Down" +msgstr "Зменшити гучніÑÑ‚ÑŒ" + +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Jump to File" +msgstr "Перейти до файлу" + +#: src/hotkey/gui.c:82 +msgid "Toggle Player Windows" +msgstr "Перемкнути Ñтан вікон програвача" + +#: src/hotkey/gui.c:83 +msgid "Show On-Screen-Display" +msgstr "Показати OSD-повідомленнÑ" + +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "Перемкнути повтор" + +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "Перемкнути таÑуваннÑ" + +#: src/hotkey/gui.c:95 +msgid "(none)" +msgstr "(немає)" + +#: src/hotkey/gui.c:232 +msgid "" +"It is not recommended to bind the primary mouse buttons without modificators.\n" +"\n" +"Do you want to continue?" +msgstr "" +"Ðе раджу пов’Ñзувати головні кнопки миші без модифікаторів.\n" +"\n" +"Продовжувати попри це?" + +#: src/hotkey/gui.c:234 +msgid "Binding mouse buttons" +msgstr "Пов’ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ½Ð¾Ð¿Ð¾Ðº миші" + +#: src/hotkey/gui.c:384 +msgid "Global Hotkey Plugin Configuration" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð³Ð°Ñ€Ñчих клавіш" + +#: src/hotkey/gui.c:400 +msgid "" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." +msgstr "" +"Маючи курÑор на полі, натиÑніть необхідну клавішу чи комбінацію вÑередині полÑ.\n" +"Можна також прив’Ñзувати кнопки миші." + +#: src/hotkey/gui.c:405 +msgid "Hotkeys:" +msgstr "ГарÑчі клавіші:" + +#: src/hotkey/gui.c:424 +msgid "Action:" +msgstr "ДіÑ:" + +#: src/hotkey/gui.c:432 +msgid "Key Binding:" +msgstr "Прив’Ñзка до клавіш:" + +#: src/hotkey/gui.c:663 +msgid "About Global Hotkey Plugin" +msgstr "Про плаґін гарÑчих клавіш" + +#: src/hotkey/gui.c:664 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributers include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä \n" +"\t\t\tBryn Davies \n" +"\t\t\tJonathan A. Davis \n" +"\t\t\tJeremy Tan \n" +"\n" +msgstr "" +"Плаґін гарÑчих клавіш\n" +"дозволÑÑ” керувати Audacious за допомогою клавіш чи Ñ—Ñ… комбінацій.\n" +"\n" +"(c) 2007-2008, Sascha Hlusiak \n" +"\n" +"Також брали учаÑÑ‚ÑŒ:\n" +"(c) 2006-2007, Vladimir Paskov ,\n" +"(c) 2000-2002, Ville Syrjälä ,\n" +"\t\tBryn Davies ,\n" +"\t\tJonathan A. Davis ,\n" +"\t\tJeremy Tan ,\n" +"\n" + +#: src/jack/configure.c:66 +msgid "Connect to all available jack ports" +msgstr "Ð’Ñтановити зв’Ñзок із уÑіма доÑтупними JACK-портами" + +#: src/jack/configure.c:73 +msgid "Connect only the output ports" +msgstr "Ð’Ñтановити зв’Ñзок лише з портами виводу" + +#: src/jack/configure.c:80 +msgid "Connect to no ports" +msgstr "Ðе вÑтановлювати зв’Ñзка з портами" + +#: src/jack/configure.c:98 +msgid "jack Plugin configuration" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð»Ð°Ò‘Ñ–Ð½Ð° JACK" + +#: src/jack/configure.c:116 +msgid "Connection mode:" +msgstr "Режим з’єднаннÑ:" + +#: src/jack/configure.c:128 +msgid "Enable debug printing" +msgstr "Виводити налагоджувальну інформацію" + +#: src/jack/jack.c:435 +msgid "" +"XMMS jack Driver 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" +"\n" +"Audacious port by\n" +"Giacomo Lozito from develia.org" +msgstr "" +"Драйвер JACK до XMMS 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"Ðвтор: Chris Morgan \n" +"\n" +"Giacomo Lozito із develia.org\n" +"Ñпортував під Audacious" + +#: src/jack/jack.c:440 +msgid "About JACK Output Plugin 0.17" +msgstr "Про плаґін виводу JACK" + +#: src/ladspa/plugin.c:415 +msgid "About LADSPA Host" +msgstr "Про хоÑÑ‚ LADSPA" + +#: src/ladspa/plugin.c:516 +#, c-format +msgid "%s Settings" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ %s" + +#: src/ladspa/plugin.c:584 +msgid "LADSPA Host Settings" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ…Ð¾Ñту LADSPA" + +#: src/ladspa/plugin.c:593 +msgid "Module paths:" +msgstr "ШлÑхи до модулів:" + +#: src/ladspa/plugin.c:598 +msgid "" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." +msgstr "" +"Якщо шлÑхів кілька, розділÑйте Ñ—Ñ… двокрапками.\n" +"Пошук відбуваєтьÑÑ Ð·Ð° вказаними шлÑхами та змінною LADSPA_PATH.\n" +"Вказавши шлÑхи, натиÑніть Enter Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ плаґінів." + +#: src/ladspa/plugin.c:614 +msgid "Available plugins:" +msgstr "ÐаÑвні плаґіни:" + +#: src/ladspa/plugin.c:626 +msgid "Enable" +msgstr "Увімкнути" + +#: src/ladspa/plugin.c:632 +msgid "Enabled plugins:" +msgstr "Увімкнені плаґіни:" + +#: src/ladspa/plugin.c:647 +msgid "Settings" +msgstr "ÐалаштуваннÑ" + +#: src/lyricwiki/lyricwiki.c:267 +msgid "" +"\n" +"Looking for lyrics..." +msgstr "" +"\n" +"Шукаю Ñлова..." + +#: src/lyricwiki/lyricwiki.c:304 +msgid "" +"\n" +"Connecting to lyrics.wikia.com..." +msgstr "" +"\n" +"З’єднуюÑÑ Ð· lyrics.wikia.com..." + +#: src/lyricwiki/lyricwiki.c:377 +msgid "" +"\n" +"No lyrics were found." +msgstr "" +"\n" +"Ðе знайдено Ñлів піÑні." + +#: src/metronom/metronom.c:86 +msgid "About Metronom" +msgstr "Про плаґін-метроном" + +#: src/metronom/metronom.c:87 +msgid "" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +msgstr "" +"Генератор такту, напиÑаний Martin Strauss ,\n" +"\n" +"можна викориÑтовувати за URL: tact://beats*num/den\n" +"(наприклад, tact://77 генерує такт із темпом 77 BPM,\n" +"tact://60*3/4 - такт із темпом 60 BPM Ñ– розміром 3/4)" + +#: src/metronom/metronom.c:144 +#, c-format +msgid "Tact generator: %d bpm" +msgstr "Генератор такту: %d BPM" + +#: src/metronom/metronom.c:146 +#, c-format +msgid "Tact generator: %d bpm %d/%d" +msgstr "Генератор такту: %d BPM, %d/%d" + +#: src/mixer/plugin.c:64 +msgid "About Channel Mixer" +msgstr "Про змішувач каналів" + +#: src/mixer/plugin.c:93 +msgid "Channel Mixer Settings" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–ÑˆÑƒÐ²Ð°Ñ‡Ð° каналів" + +#: src/mixer/plugin.c:102 +msgid "Output channels:" +msgstr "Каналів на виході:" + +#: src/mixer/plugin.c:112 +msgid "Changes take effect at the next song change." +msgstr "Зміни здійÑнюютьÑÑ Ð¿Ñ€Ð¸ зміні відтворюваної доріжки." + +#: src/mpg123/mpg123.c:191 +msgid "Surround" +msgstr "Об’ємний звук" + +#: src/mtp_up/mtp.c:340 +msgid "Upload in progress..." +msgstr "Завантажую..." + +#: src/mtp_up/mtp.c:352 +msgid "Upload to MTP Device" +msgstr "Завантажити на MTP-прилад" + +#: src/mtp_up/mtp.c:353 +msgid "Disconnect MTP Device" +msgstr "Від’єднати MTP-прилад" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Stopped" +msgstr "Зупинено" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Audacious is not playing." +msgstr "Audacious нічого не відтворює." + +#: src/null/null.c:64 +msgid "Null output plugin " +msgstr "Плаґін виводу в null" + +#: src/null/null.c:65 +msgid "" +" by Christian Birchinger \n" +"based on the XMMS plugin by HÃ¥vard KvÃ¥l " +msgstr "" +" напиÑаний Christian Birchinger \n" +"на оÑнові плаґіну XMMS, напиÑаного HÃ¥vard KvÃ¥l " + +#: src/null/null.c:68 +msgid "About Null Output" +msgstr "Про вивід у нікуди" + +#: src/null/null.c:89 +msgid "Null output preferences" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ в нікуди" + +#: src/null/null.c:100 +msgid "Run in real time" +msgstr "Ð’ реальному чаÑÑ–" + +#: src/oss4/configure.c:81 +msgid "1. Default device" +msgstr "1. Типовий прилад" + +#: src/oss4/configure.c:138 +msgid "OSS4 Output Plugin Preferences" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð»Ð°Ò‘Ñ–Ð½Ñƒ виводу в OSS4" + +#: src/oss4/configure.c:150 src/OSS/configure.c:194 +msgid "Audio device:" +msgstr "Ðудіоприлад:" + +#: src/oss4/configure.c:178 src/OSS/configure.c:217 src/OSS/configure.c:260 +msgid "Use alternate device:" +msgstr "ВикориÑтати інший прилад:" + +#: src/oss4/configure.c:193 +msgid "Save volume between sessions" +msgstr "Зберігати гучніÑÑ‚ÑŒ між ÑеÑÑ–Ñми" + +#: src/oss4/configure.c:197 +msgid "Enable format conversions made by the OSS software." +msgstr "ЗадіÑти зміни формату, здійÑнені програмами OSS." + +#: src/oss4/configure.c:201 +msgid "Enable exclusive mode to prevent virtual mixing." +msgstr "ДіÑти в екÑклюзивному режимі, уникаючи віртуального мікшуваннÑ." + +#: src/oss4/plugin.c:51 +msgid "About OSS4 Plugin" +msgstr "Про плаґін виводу в OSS4" + +#: src/oss4/utils.c:211 +msgid "OSS4 error" +msgstr "Збій OSS4" + +#: src/OSS/configure.c:137 +#, c-format +msgid "Default (%s)" +msgstr "Типово (%s)" + +#: src/OSS/configure.c:178 +msgid "OSS Driver configuration" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ð° OSS" + +#: src/OSS/configure.c:281 +msgid "Devices" +msgstr "Прилади" + +#: src/OSS/configure.c:283 +msgid "Buffering:" +msgstr "БуферуваннÑ:" + +#: src/OSS/configure.c:296 +msgid "Pre-buffer (percent):" +msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ð±ÑƒÑ„ÐµÑ€Ð¸Ð·Ð°Ñ†Ñ–Ñ (%):" + +#: src/OSS/configure.c:307 +msgid "Buffering" +msgstr "БуферуваннÑ" + +#: src/OSS/configure.c:308 +msgid "Mixer Settings:" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ñ–ÐºÑˆÐµÑ€Ð°:" + +#: src/OSS/configure.c:314 +msgid "Volume controls Master not PCM" +msgstr "ГучніÑÑ‚ÑŒ контролює Master, не PCM." + +#: src/OSS/configure.c:320 +msgid "Mixer" +msgstr "Мікшер" + +#: src/OSS/OSS.c:41 +msgid "About OSS Driver" +msgstr "Про драйвер OSS" + +#: src/pulse_audio/pulse_audio.c:669 +msgid "About Audacious PulseAudio Output Plugin" +msgstr "Про плаґін виводу в PulseAudio" + +#: src/resample/plugin.c:89 +msgid "About Sample Rate Converter Plugin" +msgstr "Про плаґін-перетворювач чаÑтоти диÑкретизації" + +#: src/resample/plugin.c:144 +msgid "Sample Rate Converter Preferences" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‡Ð°Ñтоти диÑкретизації" + +#: src/resample/plugin.c:156 +msgid "Rate mappings:" +msgstr "ВідповідніÑÑ‚ÑŒ чаÑтот:" + +#: src/resample/plugin.c:179 +msgid "All others:" +msgstr "УÑÑ– інші:" + +#: src/resample/plugin.c:191 +msgid "Method:" +msgstr "Метод:" + +#: src/scrobbler/configure.c:123 src/scrobbler/configure.c:198 +msgid "Change password" +msgstr "Змінити пароль" + +#: src/scrobbler/configure.c:144 +msgid "Services" +msgstr "Служби" + +#: src/scrobbler/configure.c:166 +msgid "Username:" +msgstr "Ð†Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸Ñтувача:" + +#: src/scrobbler/configure.c:172 +msgid "Password:" +msgstr "Пароль:" + +#: src/scrobbler/configure.c:180 +msgid "Scrobbler URL:" +msgstr "URL Scrobbler:" + +#: src/scrobbler/configure.c:212 +msgid "Last.FM" +msgstr "Last.FM" + +#: src/scrobbler/configure.c:239 +msgid "Scrobbler" +msgstr "Scrobbler" + +#: src/scrobbler/plugin.c:194 +msgid "" +"Audacious AudioScrobbler Plugin\n" +"\n" +"Originally created by Audun Hove and Pipian \n" +msgstr "" +"Плаґін AudioScrobbler Ð´Ð»Ñ Audacious\n" +"\n" +"Оригінал Ñтворили Audun Hove та Pipian \n" + +#: src/scrobbler/plugin.c:196 +msgid "About Scrobbler Plugin" +msgstr "Про плаґін Scrobbler" + +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" +msgstr "Про плаґін виводу SDL" + +#: src/sdlout/plugin.c:78 +msgid "SDL error" +msgstr "Збій SDL" + +#: src/search-tool/search-tool.c:42 +msgid "Genre" +msgstr "Жанр" + +#: src/search-tool/search-tool.c:96 src/search-tool/search-tool.c:106 +msgid "Library" +msgstr "Бібліотека" + +#: src/search-tool/search-tool.c:591 +msgid "_Create Playlist" +msgstr "_Створити ÑпиÑок відтвореннÑ" + +#: src/search-tool/search-tool.c:598 +msgid "_Add to Playlist" +msgstr "_Додати до ÑпиÑку відтвореннÑ" + +#: src/search-tool/search-tool.c:641 +msgid "Search library" +msgstr "Шукати в бібліотеці" + +#: src/search-tool/search-tool.c:645 +msgid "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." +msgstr "" +"Щоб імпортувати Ñвою музичну бібліотеку до Audacious, виберіть теку й " +"натиÑніть на значок оновленнÑ." + +#: src/search-tool/search-tool.c:653 +msgid "Please wait ..." +msgstr "Зачекайте..." + +#: src/search-tool/search-tool.c:675 +msgid "Choose Folder" +msgstr "Вибрати теку" + +#: src/skins/plugin.c:167 +msgid "About Skinned GUI" +msgstr "Про GUI \"Skinned\"" + +#: src/skins/plugin.c:168 +msgid "" +"Copyright (c) 2008, by Tomasz MoÅ„ \n" +"\n" +msgstr "" +"(c) 2008, Tomasz MoÅ„ \n" +"\n" + +#: src/skins/skins_cfg.c:207 +msgid "_Player:" +msgstr "_Програвач" + +#: src/skins/skins_cfg.c:208 +msgid "Select main player window font:" +msgstr "Шрифт оÑновного вікна програвача" + +#: src/skins/skins_cfg.c:210 +msgid "_Playlist:" +msgstr "_СпиÑок відтвореннÑ" + +#: src/skins/skins_cfg.c:211 +msgid "Select playlist font:" +msgstr "Шрифт ÑпиÑку відтвореннÑ:" + +#: src/skins/skins_cfg.c:215 +msgid "_Fonts" +msgstr "Шрифти" + +#: src/skins/skins_cfg.c:218 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "ВикориÑтовувати раÑтрові шрифти (підтримуєтьÑÑ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ ASCII)" + +#: src/skins/skins_cfg.c:220 +msgid "Scroll song title in both directions" +msgstr "Прокручувати назву піÑні в обох напрÑмках" + +#: src/skins/skins_cfg.c:298 +msgid "_Skin" +msgstr "Жупан" + +#: src/skins/skins_cfg.c:345 +msgid "Interface Preferences" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñу" + +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "Попередній підÑилювач" + +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" +msgstr "31 Гц" + +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "63 Гц" + +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" +msgstr "125 Гц" + +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" +msgstr "250 Гц" + +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" +msgstr "500 Гц" + +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" +msgstr "1 кГц" + +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" +msgstr "2 кГц" + +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" +msgstr "4 кГц" + +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" +msgstr "8 кГц" + +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" +msgstr "16 кГц" + +#: src/skins/ui_equalizer.c:379 +msgid "Audacious Equalizer" +msgstr "Еквалайзер Audacious" + +#: src/skins/ui_equalizer.c:887 +msgid "Presets" +msgstr "Типові налаштуваннÑ" + +#: src/skins/ui_equalizer.c:968 src/skins/ui_manager.c:442 +msgid "Load preset" +msgstr "Вибір преÑету" + +#: src/skins/ui_equalizer.c:985 +msgid "Load auto-preset" +msgstr "Завантажити відповідний доріжці преÑет" + +#: src/skins/ui_equalizer.c:1015 src/skins/ui_equalizer.c:1033 +#: src/skins/ui_equalizer.c:1049 +msgid "Load equalizer preset" +msgstr "Завантажити еквалайзерний преÑет" + +#: src/skins/ui_equalizer.c:1068 src/skins/ui_manager.c:463 +msgid "Save preset" +msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð¿Ñ€ÐµÑету" + +#: src/skins/ui_equalizer.c:1084 +msgid "Save auto-preset" +msgstr "Зберегти преÑет Ñк відповідний доріжці" + +#: src/skins/ui_equalizer.c:1114 src/skins/ui_equalizer.c:1150 +msgid "Save equalizer preset" +msgstr "Зберегти еквалайзерний преÑет" + +#: src/skins/ui_equalizer.c:1169 src/skins/ui_manager.c:478 +msgid "Delete preset" +msgstr "Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€ÐµÑету" + +#: src/skins/ui_equalizer.c:1186 +msgid "Delete auto-preset" +msgstr "Видалити відповідний доріжці преÑет" + +#: src/skins/ui_main.c:444 +msgid "kbps" +msgstr "кб/Ñ" + +#: src/skins/ui_main.c:452 +msgid "kHz" +msgstr "кГц" + +#: src/skins/ui_main.c:459 +msgid "surround" +msgstr "об'ємний" + +#: src/skins/ui_main.c:807 +#, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "Перехід до %d:%-2.2d / %d:%-2.2d" + +#: src/skins/ui_main.c:828 +#, c-format +msgid "Volume: %d%%" +msgstr "ГучніÑÑ‚ÑŒ: %d%%" + +#: src/skins/ui_main.c:851 +#, c-format +msgid "Balance: %d%% left" +msgstr "БаланÑ: %d%% вліво" + +#: src/skins/ui_main.c:853 +msgid "Balance: center" +msgstr "БаланÑ: центр" + +#: src/skins/ui_main.c:855 +#, c-format +msgid "Balance: %d%% right" +msgstr "БаланÑ: %d%% вправо" + +#: src/skins/ui_main.c:981 +msgid "Options Menu" +msgstr "Меню опцій" + +#: src/skins/ui_main.c:985 +msgid "Disable 'Always On Top'" +msgstr "Вимкнути Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð°Ð´ іншими вікнами" + +#: src/skins/ui_main.c:987 +msgid "Enable 'Always On Top'" +msgstr "Відображати над іншими вікнами" + +#: src/skins/ui_main.c:990 +msgid "File Info Box" +msgstr "Редактор інформації про доріжку" + +#: src/skins/ui_main.c:995 +msgid "Visualization Menu" +msgstr "Меню візуалізації" + +#: src/skins/ui_main.c:1653 +msgid "Single mode." +msgstr "Однодоріжковий режим." + +#: src/skins/ui_main.c:1655 +msgid "Playlist mode." +msgstr "Режим ÑпиÑка відтвореннÑ." + +#: src/skins/ui_main.c:1677 +msgid "Stopping after song." +msgstr "Зупинити піÑÐ»Ñ Ñ†Ñ–Ñ”Ñ— доріжки." + +#: src/skins/ui_main.c:1679 +msgid "Not stopping after song." +msgstr "Продовжити піÑÐ»Ñ Ñ†Ñ–Ñ”Ñ— доріжки." + +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 +msgid "Autoscroll Songname" +msgstr "Прокручувати назву доріжки" + +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "Зупинити піÑÐ»Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ— доріжки" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 +msgid "Peaks" +msgstr "Затримувати піки" + +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "Повторювати" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "Випадково" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "Ðе проÑуватиÑÑ Ñƒ ÑпиÑку відтвореннÑ" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 +msgid "Show Player" +msgstr "Показати програвач" + +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 +msgid "Show Playlist Editor" +msgstr "Показати редактор ÑпиÑків відтвореннÑ" + +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 +msgid "Show Equalizer" +msgstr "Показати еквалайзер" + +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 +msgid "Always on Top" +msgstr "Завжди згори" + +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 +msgid "Put on All Workspaces" +msgstr "Ðа вÑÑ–Ñ… робочих облаÑÑ‚ÑÑ…" + +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 +msgid "Roll up Player" +msgstr "Згорнути програвач" + +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 +msgid "Roll up Playlist Editor" +msgstr "Згорнути ÑпиÑок відтвореннÑ" + +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 +msgid "Roll up Equalizer" +msgstr "Згорнути еквалайзер" + +#: src/skins/ui_manager.c:115 +msgid "Analyzer" +msgstr "Ðналізатор" + +#: src/skins/ui_manager.c:116 +msgid "Scope" +msgstr "ОÑцилограф" + +#: src/skins/ui_manager.c:117 +msgid "Voiceprint" +msgstr "Спектрограма" + +#: src/skins/ui_manager.c:118 +msgid "Off" +msgstr "Вимкнено" + +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 +msgid "Normal" +msgstr "Звичайний" + +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 +msgid "Fire" +msgstr "Вогонь" + +#: src/skins/ui_manager.c:124 +msgid "Vertical Lines" +msgstr "Монотонні лінії" + +#: src/skins/ui_manager.c:128 +msgid "Lines" +msgstr "Лінії" + +#: src/skins/ui_manager.c:129 +msgid "Bars" +msgstr "Стовпчики" + +#: src/skins/ui_manager.c:133 +msgid "Dot Scope" +msgstr "Крапковий" + +#: src/skins/ui_manager.c:134 +msgid "Line Scope" +msgstr "Лінійний" + +#: src/skins/ui_manager.c:135 +msgid "Solid Scope" +msgstr "Суцільний" + +#: src/skins/ui_manager.c:141 +msgid "Ice" +msgstr "Лід" + +#: src/skins/ui_manager.c:146 +msgid "Smooth" +msgstr "Плавний" + +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 +msgid "Slowest" +msgstr "Дуже повільне" + +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 +msgid "Slow" +msgstr "Повільне" + +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 +msgid "Medium" +msgstr "Помірне" + +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 +msgid "Fast" +msgstr "Швидке" + +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 +msgid "Fastest" +msgstr "Дуже швидке" + +#: src/skins/ui_manager.c:166 +msgid "Time Elapsed" +msgstr "Скільки чаÑу пройшло" + +#: src/skins/ui_manager.c:167 +msgid "Time Remaining" +msgstr "Скільки чаÑу залишаєтьÑÑ" + +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "Призупинити відтвореннÑ" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ð´Ð¾Ñ€Ñ–Ð¶ÐºÐ°" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "ÐаÑтупна доріжка" + +#: src/skins/ui_manager.c:196 +msgid "Visualization" +msgstr "ВізуалізаціÑ" + +#: src/skins/ui_manager.c:197 +msgid "Visualization Mode" +msgstr "Режим візуалізації" + +#: src/skins/ui_manager.c:198 +msgid "Analyzer Mode" +msgstr "Тип аналізатора" + +#: src/skins/ui_manager.c:199 +msgid "Scope Mode" +msgstr "Тип оÑцилографа" + +#: src/skins/ui_manager.c:200 +msgid "Voiceprint Mode" +msgstr "Тип Ñпектрограми" + +#: src/skins/ui_manager.c:201 +msgid "WindowShade VU Mode" +msgstr "Режим WindowShade VU" + +#: src/skins/ui_manager.c:202 +msgid "Analyzer Falloff" +msgstr "Ð¡Ð¿Ð°Ð´Ð°Ð½Ð½Ñ Ñтовпчиків аналізатора" + +#: src/skins/ui_manager.c:203 +msgid "Peaks Falloff" +msgstr "Ð¡Ð¿Ð°Ð´Ð°Ð½Ð½Ñ Ð¿Ñ–ÐºÑ–Ð² аналізатора" + +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "СпиÑок відтвореннÑ" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "Ðовий ÑпиÑок відтвореннÑ" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 +msgid "Select Next Playlist" +msgstr "Виділити наÑтупний ÑпиÑок відтвореннÑ" + +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 +msgid "Select Previous Playlist" +msgstr "Виділити попередній ÑпиÑок відтвореннÑ" + +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "Вилучити ÑпиÑок відтвореннÑ" + +#: src/skins/ui_manager.c:222 +msgid "Import Playlist" +msgstr "Імпортувати ÑпиÑок відтвореннÑ" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "Завантажити ÑпиÑок Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð· файлу до виділеного ÑпиÑку." + +#: src/skins/ui_manager.c:226 +msgid "Export Playlist" +msgstr "ЕкÑпортувати ÑпиÑок відтвореннÑ" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "Зберегти виділений ÑпиÑок відтвореннÑ." + +#: src/skins/ui_manager.c:229 +msgid "Refresh List" +msgstr "Оновити ÑпиÑок" + +#: src/skins/ui_manager.c:230 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "Оновити метадані, пов'Ñзані з доріжками ÑпиÑку відтвореннÑ." + +#: src/skins/ui_manager.c:233 +msgid "Playlist Manager" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÑпиÑками відтвореннÑ" + +#: src/skins/ui_manager.c:234 +msgid "Queue Manager" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€Ð³Ð¾ÑŽ" + +#: src/skins/ui_manager.c:237 +msgid "View" +msgstr "ПереглÑд" + +#: src/skins/ui_manager.c:238 +msgid "Interface" +msgstr "ІнтерфейÑ" + +#: src/skins/ui_manager.c:239 +msgid "Interface Preferences ..." +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¸Ì†Ñу ..." + +#: src/skins/ui_manager.c:243 +msgid "Add Internet Address..." +msgstr "Додати інтернет адреÑу ..." + +#: src/skins/ui_manager.c:244 +msgid "Adds a remote track to the playlist." +msgstr "Додає віддалену доріжку до ÑпиÑку відтвореннÑ." + +#: src/skins/ui_manager.c:247 +msgid "Add Files..." +msgstr "Додати файли ..." + +#: src/skins/ui_manager.c:248 +msgid "Adds files to the playlist." +msgstr "Додає файли до ÑпиÑку відтвореннÑ." + +#: src/skins/ui_manager.c:253 +msgid "Search and Select" +msgstr "Пошук Ñ– виділеннÑ" + +#: src/skins/ui_manager.c:254 +msgid "" +"Searches the playlist and selects playlist entries based on specific " +"criteria." +msgstr "Виділити елементи ÑпиÑка за вказаними критеріÑми." + +#: src/skins/ui_manager.c:257 +msgid "Invert Selection" +msgstr "Інвертувати виділеннÑ" + +#: src/skins/ui_manager.c:258 +msgid "Inverts the selected and unselected entries." +msgstr "Виділити доÑÑ– невиділене й знÑти поточне виділеннÑ." + +#: src/skins/ui_manager.c:261 +msgid "Select All" +msgstr "Виділити вÑе" + +#: src/skins/ui_manager.c:262 +msgid "Selects all of the playlist entries." +msgstr "Виділити вÑÑ– елементи ÑпиÑка." + +#: src/skins/ui_manager.c:265 +msgid "Select None" +msgstr "ЗнÑти виділеннÑ" + +#: src/skins/ui_manager.c:266 +msgid "Deselects all of the playlist entries." +msgstr "ЗнÑти Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ Ð· уÑÑ–Ñ… елементів ÑпиÑка." + +#: src/skins/ui_manager.c:271 +msgid "Remove All" +msgstr "Вилучити вÑÑ–" + +#: src/skins/ui_manager.c:272 +msgid "Removes all entries from the playlist." +msgstr "Вилучає вÑÑ– елементи зі ÑпиÑку відтвореннÑ." + +#: src/skins/ui_manager.c:275 +msgid "Clear Queue" +msgstr "ОчиÑтити чергу" + +#: src/skins/ui_manager.c:276 +msgid "Clears the queue associated with this playlist." +msgstr "Видалити з черги елементи цього ÑпиÑку." + +#: src/skins/ui_manager.c:279 +msgid "Remove Unavailable Files" +msgstr "Прибрати недоÑтупні файли." + +#: src/skins/ui_manager.c:280 +msgid "Removes unavailable files from the playlist." +msgstr "Видалити зі ÑпиÑку Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½ÐµÐ´Ð¾Ñтупні файли." + +#: src/skins/ui_manager.c:283 +msgid "Remove Duplicates" +msgstr "Видалити дублікати" + +#: src/skins/ui_manager.c:285 src/skins/ui_manager.c:317 +#: src/skins/ui_manager.c:347 +msgid "By Title" +msgstr "За назвою" + +#: src/skins/ui_manager.c:286 +msgid "Removes duplicate entries from the playlist by title." +msgstr "Видалити зі ÑпиÑку Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ‚Ð¸ за назвою." + +#: src/skins/ui_manager.c:289 src/skins/ui_manager.c:329 +#: src/skins/ui_manager.c:359 +msgid "By Filename" +msgstr "За ім’Ñм файлу" + +#: src/skins/ui_manager.c:290 +msgid "Removes duplicate entries from the playlist by filename." +msgstr "Видалити зі ÑпиÑку Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ‚Ð¸ за ім’Ñм файла." + +#: src/skins/ui_manager.c:293 src/skins/ui_manager.c:333 +#: src/skins/ui_manager.c:363 +msgid "By Path + Filename" +msgstr "За шлÑхом та ім’Ñм файлу" + +#: src/skins/ui_manager.c:294 +msgid "Removes duplicate entries from the playlist by their full path." +msgstr "Видалити зі ÑпиÑку Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ‚Ð¸ за повним шлÑхом до них." + +#: src/skins/ui_manager.c:297 +msgid "Remove Unselected" +msgstr "Вилучити невідмічені " + +#: src/skins/ui_manager.c:298 +msgid "Remove unselected entries from the playlist." +msgstr "Вилучити невиділені елементи зі ÑпиÑку відтвореннÑ." + +#: src/skins/ui_manager.c:301 +msgid "Remove Selected" +msgstr "Вилучити виділені" + +#: src/skins/ui_manager.c:302 +msgid "Remove selected entries from the playlist." +msgstr "Вилучити виділені елементи зі ÑпиÑку відтвореннÑ" + +#: src/skins/ui_manager.c:307 +msgid "Randomize List" +msgstr "Порушити порÑдок" + +#: src/skins/ui_manager.c:308 +msgid "Randomizes the playlist." +msgstr "Розміщує елементи ÑпиÑка в довільному порÑдку." + +#: src/skins/ui_manager.c:311 +msgid "Reverse List" +msgstr "Обернути ÑпиÑок" + +#: src/skins/ui_manager.c:312 +msgid "Reverses the playlist." +msgstr "РозміÑтити доріжки ÑпиÑка в протилежному порÑдку." + +#: src/skins/ui_manager.c:315 +msgid "Sort List" +msgstr "Сортувати ÑпиÑок..." + +#: src/skins/ui_manager.c:318 src/skins/ui_manager.c:348 +msgid "Sorts the list by title." +msgstr "Сортувати ÑпиÑок за назвами доріжок." + +#: src/skins/ui_manager.c:321 src/skins/ui_manager.c:351 +msgid "By Album" +msgstr "За альбомом" + +#: src/skins/ui_manager.c:322 src/skins/ui_manager.c:352 +msgid "Sorts the list by album." +msgstr "Сортувати ÑпиÑок за назвами альбомів." + +#: src/skins/ui_manager.c:325 src/skins/ui_manager.c:355 +msgid "By Artist" +msgstr "За виконавцем" + +#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +msgid "Sorts the list by artist." +msgstr "Сортувати ÑпиÑок за іменами виконавців." + +#: src/skins/ui_manager.c:330 src/skins/ui_manager.c:360 +msgid "Sorts the list by filename." +msgstr "Сортувати ÑпиÑок за іменами файлів." + +#: src/skins/ui_manager.c:334 src/skins/ui_manager.c:364 +msgid "Sorts the list by full pathname." +msgstr "Сортувати ÑпиÑок за повним шлÑхом." + +#: src/skins/ui_manager.c:337 src/skins/ui_manager.c:367 +msgid "By Date" +msgstr "За датою" + +#: src/skins/ui_manager.c:338 src/skins/ui_manager.c:368 +msgid "Sorts the list by modification time." +msgstr "Сортувати ÑпиÑок за чаÑом оÑтанньої модифікації файлів." + +#: src/skins/ui_manager.c:341 src/skins/ui_manager.c:371 +msgid "By Track Number" +msgstr "За номером доріжки" + +#: src/skins/ui_manager.c:342 src/skins/ui_manager.c:372 +msgid "Sorts the list by track number." +msgstr "Сортувати ÑпиÑок за номерами доріжок." + +#: src/skins/ui_manager.c:345 +msgid "Sort Selected" +msgstr "Сортувати виділене" + +#: src/skins/ui_manager.c:381 +msgid "File" +msgstr "Файл" + +#: src/skins/ui_manager.c:384 +msgid "Plugin Services" +msgstr "МожливоÑÑ‚Ñ– плаґінів" + +#: src/skins/ui_manager.c:386 src/skins/ui_manager.c:389 +msgid "View Track Details" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ доріжку" + +#: src/skins/ui_manager.c:387 src/skins/ui_manager.c:390 +msgid "View track details" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ доріжку" + +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:393 +msgid "About Audacious" +msgstr "Про Audacious" + +#: src/skins/ui_manager.c:395 +msgid "Play File" +msgstr "Відтворити файл..." + +#: src/skins/ui_manager.c:396 +msgid "Load and play a file" +msgstr "Завантажити та відтворити файл" + +#: src/skins/ui_manager.c:398 +msgid "Play Location" +msgstr "Відтворити за поÑиланнÑм..." + +#: src/skins/ui_manager.c:399 +msgid "Play media from the selected location" +msgstr "Відтворити за обраним шлÑхом" + +#: src/skins/ui_manager.c:401 +msgid "Plugin services" +msgstr "МожливоÑÑ‚Ñ– плаґінів" + +#: src/skins/ui_manager.c:403 +msgid "Preferences" +msgstr "ÐалаштуваннÑ" + +#: src/skins/ui_manager.c:404 +msgid "Open preferences window" +msgstr "Відчинити вікно налаштувань" + +#: src/skins/ui_manager.c:407 +msgid "Quit Audacious" +msgstr "Завершити Audacious" + +#: src/skins/ui_manager.c:409 src/skins/ui_manager.c:410 +msgid "Set A-B" +msgstr "Ð’Ñтановити початок/кінець повтору" + +#: src/skins/ui_manager.c:412 src/skins/ui_manager.c:413 +msgid "Clear A-B" +msgstr "ПереÑтати повторювати" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Jump to Time" +msgstr "Перейти до чаÑу" + +#: src/skins/ui_manager.c:421 +msgid "Queue Toggle" +msgstr "Перемкнути Ñтан черги" + +#: src/skins/ui_manager.c:422 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "Вмикати/вимикати елемент черги ÑпиÑку відтвореннÑ." + +#: src/skins/ui_manager.c:425 +msgid "Copy" +msgstr "Копіювати" + +#: src/skins/ui_manager.c:427 +msgid "Cut" +msgstr "Вирізати" + +#: src/skins/ui_manager.c:429 +msgid "Paste" +msgstr "Ð’Ñтавити" + +#: src/skins/ui_manager.c:436 +msgid "Load" +msgstr "Завантажити" + +#: src/skins/ui_manager.c:437 +msgid "Import" +msgstr "Імпортувати" + +#: src/skins/ui_manager.c:438 +msgid "Save" +msgstr "Зберегти" + +#: src/skins/ui_manager.c:439 +msgid "Delete" +msgstr "Вилучити" + +#: src/skins/ui_manager.c:441 src/skins/ui_manager.c:462 +#: src/skins/ui_manager.c:477 +msgid "Preset" +msgstr "ПреÑет" + +#: src/skins/ui_manager.c:444 src/skins/ui_manager.c:465 +#: src/skins/ui_manager.c:480 +msgid "Auto-load preset" +msgstr "Відповідний доріжці преÑет" + +#: src/skins/ui_manager.c:445 +msgid "Load auto-load preset" +msgstr "Завантажити відповідний доріжці преÑет" + +#: src/skins/ui_manager.c:448 +msgid "Load default preset into equalizer" +msgstr "Відновити типові значеннÑ" + +#: src/skins/ui_manager.c:450 +msgid "Zero" +msgstr "Ðулі" + +#: src/skins/ui_manager.c:451 +msgid "Set equalizer preset levels to zero" +msgstr "Обнулити рівні еквалайзера" + +#: src/skins/ui_manager.c:453 +msgid "From file" +msgstr "З файлу" + +#: src/skins/ui_manager.c:454 +msgid "Load preset from file" +msgstr "Завантажити преÑет із файлу" + +#: src/skins/ui_manager.c:456 +msgid "From WinAMP EQF file" +msgstr "Із файлу WinAMP EQF" + +#: src/skins/ui_manager.c:457 +msgid "Load preset from WinAMP EQF file" +msgstr "Завантажити преÑет із файлу WinAMP EQF" + +#: src/skins/ui_manager.c:459 +msgid "WinAMP Presets" +msgstr "ПреÑети WinAMP" + +#: src/skins/ui_manager.c:460 +msgid "Import WinAMP presets" +msgstr "Імпортувати преÑети WinAMP" + +#: src/skins/ui_manager.c:466 +msgid "Save auto-load preset" +msgstr "Зберегти преÑет Ñк відповідний доріжці" + +#: src/skins/ui_manager.c:469 +msgid "Save default preset" +msgstr "Зберегти Ñк типові значеннÑ" + +#: src/skins/ui_manager.c:471 +msgid "To file" +msgstr "До файлу" + +#: src/skins/ui_manager.c:472 +msgid "Save preset to file" +msgstr "Зберегти преÑет до файлу" + +#: src/skins/ui_manager.c:474 +msgid "To WinAMP EQF file" +msgstr "До файлу WinAMP EQF" + +#: src/skins/ui_manager.c:475 +msgid "Save preset to WinAMP EQF file" +msgstr "Зберегти преÑет до файлу WinAMP EQF" + +#: src/skins/ui_manager.c:481 +msgid "Delete auto-load preset" +msgstr "Видалити відповідний доріжці преÑет" + +#: src/skins/ui_playlist.c:248 +msgid "Search entries in active playlist" +msgstr "Пошук в активному ÑпиÑку відтвореннÑ" + +#: src/skins/ui_playlist.c:256 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular" +" expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"Щоб шукати доріжки в ÑпиÑку відтвореннÑ, заповніть одне чи більше полів. " +"Можна викориÑтовувати літери, цифри, інші знаки, регулÑрні вирази. ÐŸÐ¾Ð»Ñ " +"нечутливі до регіÑтру." + +#: src/skins/ui_playlist.c:264 +msgid "Title: " +msgstr "Ðазва: " + +#: src/skins/ui_playlist.c:271 +msgid "Album: " +msgstr "Ðльбом: " + +#: src/skins/ui_playlist.c:278 +msgid "Artist: " +msgstr "Виконавець: " + +#: src/skins/ui_playlist.c:285 +msgid "Filename: " +msgstr "Ð†Ð¼â€™Ñ Ñ„Ð°Ð¹Ð»Ñƒ: " + +#: src/skins/ui_playlist.c:293 +msgid "Clear previous selection before searching" +msgstr "ЗнÑти попереднє Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ´ пошуком" + +#: src/skins/ui_playlist.c:296 +msgid "Automatically toggle queue for matching entries" +msgstr "Ðвтоматично перемикати Ñтан черги знайдених елементів" + +#: src/skins/ui_playlist.c:299 +msgid "Create a new playlist with matching entries" +msgstr "Виділити знайдене в новий ÑпиÑок відтвореннÑ" + +#: src/skins/ui_playlist.c:765 +msgid "Audacious Playlist Editor" +msgstr "Редактор ÑпиÑків Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Audacious" + +#: src/skins/ui_playlist.c:812 +#, c-format +msgid "%s (%d of %d)" +msgstr "%s (%d із %d)" + +#: src/skins/ui_skinselector.c:162 +msgid "Archived Winamp 2.x skin" +msgstr "Заархівований жупан Winamp 2.x" + +#: src/skins/ui_skinselector.c:167 +msgid "Unarchived Winamp 2.x skin" +msgstr "Ðеархівований жупан Winamp 2.x" + +#: src/skins/util.c:774 +#, c-format +msgid "Could not create directory (%s): %s\n" +msgstr "Ðеможливо Ñтворити теку (%s): %s\n" + +#: src/sndfile/plugin.c:456 +msgid "About sndfile plugin" +msgstr "Про плаґін sndfile" + +#: src/sndstretch/sndstretch_xmms.c:155 +msgid "About SndStretch" +msgstr "Про SndStretch" + +#: src/sndstretch/sndstretch_xmms.c:308 +msgid "Volume corr." +msgstr "Коригувати гучніÑÑ‚ÑŒ" + +#: src/sndstretch/sndstretch_xmms.c:309 +msgid "Short Overlap" +msgstr "Придушувати відлуннÑ" + +#: src/sndstretch/sndstretch_xmms.c:355 +msgid "Speed" +msgstr "Темп" + +#: src/sndstretch/sndstretch_xmms.c:356 +msgid "Pitch" +msgstr "ВиÑота" + +#: src/sndstretch/sndstretch_xmms.c:357 +msgid "Scale" +msgstr "МаÑштаб" + +#: src/sndstretch/sndstretch_xmms.c:377 +msgid "SndStretch - Configuration" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ SndStretch" + +#: src/song_change/song_change.c:437 +msgid "Command to run when Audacious starts a new song." +msgstr "Виконувати на початку Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð¾Ñ€Ñ–Ð¶ÐºÐ¸:" + +#: src/song_change/song_change.c:439 src/song_change/song_change.c:445 +#: src/song_change/song_change.c:451 src/song_change/song_change.c:457 +msgid "Command:" +msgstr " " + +#: src/song_change/song_change.c:443 +msgid "Command to run toward the end of a song." +msgstr "Виконувати наприкінці Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð¾Ñ€Ñ–Ð¶ÐºÐ¸:" + +#: src/song_change/song_change.c:449 +msgid "Command to run when Audacious reaches the end of the playlist." +msgstr "Виконувати при доÑÑгненні ÐºÑ–Ð½Ñ†Ñ ÑпиÑка відтвореннÑ." + +#: src/song_change/song_change.c:455 +msgid "" +"Command to run when title changes for a song (i.e. network streams titles)." +msgstr "Виконувати при зміні назви доріжки (онлайн-потоки тощо)." + +#: src/song_change/song_change.c:461 +msgid "" +"You can use the following format strings which\n" +"will be substituted before calling the command\n" +"(not all are useful for the end-of-playlist command).\n" +"\n" +"%F: Frequency (in hertz)\n" +"%c: Number of channels\n" +"%f: filename (full path)\n" +"%l: length (in milliseconds)\n" +"%n or %s: Song name\n" +"%r: Rate (in bits per second)\n" +"%t: Playlist position (%02d)\n" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" +msgstr "" +"ÐаÑтупні змінні Audacious надає Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ð² командах\n" +"(не вÑÑ– можна викориfor the end-of-playlist command):\n" +"\n" +"%F: Frequency (in hertz)\n" +"%c: Number of channels\n" +"%f: filename (full path)\n" +"%l: length (in milliseconds)\n" +"%n or %s: Song name\n" +"%r: Rate (in bits per second)\n" +"%t: Playlist position (%02d)\n" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" + +#: src/song_change/song_change.c:488 +msgid "" +"Parameters passed to the shell should be encapsulated in " +"quotes. Doing otherwise is a security risk." +msgstr "" +"Параметри подавати Ñлід у лапках. Робити інакше " +"небезпечно Ð´Ð»Ñ ÑиÑтеми." + +#: src/song_change/song_change.c:499 +msgid "Commands" +msgstr "Команди" + +#: src/song_change/song_change.c:529 +msgid "Song Change" +msgstr "Зміна доріжки" + +#: src/statusicon/statusicon.c:379 +msgid "About Status Icon Plugin" +msgstr "Про плаґін значка Ñтану" + +#: src/statusicon/statusicon.c:380 +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager.\n" +msgstr "" +"Плаґін значка в лотку,\n" +"\n" +"2005-2007, Giacomo Lozito ,\n" +"2010, MichaÅ‚ Lipski \n" +"\n" +"розміщує значок Audacious у ÑиÑтемному\n" +"лотку, наданому віконним менеджером.\n" + +#: src/statusicon/statusicon.c:451 +msgid "Status Icon Plugin - Preferences" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐºÐ° в лотку" + +#: src/statusicon/statusicon.c:461 +msgid "Right-Click Menu" +msgstr "Меню за правою кнопкою миші" + +#: src/statusicon/statusicon.c:466 +msgid "Small playback menu #1" +msgstr "Мале меню Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ #1" + +#: src/statusicon/statusicon.c:469 +msgid "Small playback menu #2" +msgstr "Мале меню Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ #2 (+ \"Вийти\")" + +#: src/statusicon/statusicon.c:485 +msgid "Mouse Scroll Action" +msgstr "Ð”Ñ–Ñ ÐºÐ¾Ð»Ñ–Ñ‰Ð°Ñ‚ÐºÐ° миші" + +#: src/statusicon/statusicon.c:489 +msgid "Change volume" +msgstr "Зміна гучноÑÑ‚Ñ–" + +#: src/statusicon/statusicon.c:491 +msgid "Change playing song" +msgstr "Зміна поточної доріжки" + +#: src/statusicon/statusicon.c:504 +msgid "Other settings" +msgstr "Інші налаштуваннÑ" + +#: src/statusicon/statusicon.c:509 +msgid "Disable the popup window" +msgstr "Вимкнути Ñпливне вікно" + +#: src/statusicon/statusicon.c:516 +msgid "Close to the notification area (system tray)" +msgstr "ЗаміÑÑ‚ÑŒ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ñ‚Ð¸ до лотка" + +#: src/statusicon/statusicon.c:524 +msgid "Advance in playlist when scrolling upward" +msgstr "ПроÑуватиÑÑ ÑпиÑком Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸ прокручуванні догори" + +#: src/stereo_plugin/stereo.c:45 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin 1999." +msgstr "" +"Плаґін розширеного Ñтерео\n" +"\n" +"Ñтворив 1999 року Johan Levin." + +#: src/stereo_plugin/stereo.c:64 +msgid "About Extra Stereo Plugin" +msgstr "Про плаґін розширеного Ñтерео" + +#: src/stereo_plugin/stereo.c:95 +msgid "Configure Extra Stereo" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ð³Ð¾ Ñтерео" + +#: src/tonegen/tonegen.c:49 +msgid "About Tone Generator" +msgstr "Про генератор тону" + +#: src/tonegen/tonegen.c:51 +msgid "" +"Sinus tone generator by Haavard Kvaalen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" +msgstr "" +"Генератор ÑинуÑоїдного тону, Ñтворений Haavard Kvaalen \n" +"Ñ– модифікований Daniel J. Peng ,\n" +"\n" +"можна викориÑтовувати за URL: tone://frequency1;frequency2;frequency3;...\n" +"(наприклад, tone://2000;2005 Ð´Ð»Ñ Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð¾Ð½Ñƒ 2000 Гц й тону 2005 Гц." + +#: src/tonegen/tonegen.c:101 +#, c-format +msgid "%s %.1f Hz" +msgstr "%s %.1f Гц" + +#: src/tonegen/tonegen.c:101 +msgid "Tone Generator: " +msgstr "Генератор тону: " + +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" +msgstr "Про плаґін файлового вводу-виводу" + +#: src/vorbis/vorbis.c:573 +msgid "About Ogg Vorbis Audio Plugin" +msgstr "Про плаґін вводу з Ogg Vorbis" + +#: src/vorbis/vorbis.c:578 +msgid "" +"Ogg Vorbis Plugin by the Xiph.org Foundation\n" +"\n" +"Original code by\n" +"Tony Arcieri \n" +"Contributions from\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visit the Xiph.org Foundation at http://www.xiph.org/\n" +msgstr "" +"Плаґін вводу з Ogg Vorbis Ñтворений Xiph.org Foundation\n" +"\n" +"Ðвтор оригіналу:\n" +"Tony Arcieri \n" +"\n" +"ДопиÑувачі:\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Відвідайте Фонд Xiph.org: http://www.xiph.org/\n" + +#: src/vtx/about.c:14 +msgid "About Vortex Player" +msgstr "Про плаґін вводу з Vortex" + +#: src/vtx/about.c:15 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"\n" +"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" +"and other AY/YM music sites.\n" +"\n" +"Audacious implementation by Pavel Vymetalek " +msgstr "" +"Програвач файлів формату Vortex напиÑаний ОлекÑандром Сашновим \n" +"на оÑнові джерела оригінального in_vtx.dll, напиÑаного Романом Щербаковим \n" +"\n" +"Музику в форматі VTX можна знайти на http://vtx.microfor.ru/music.htm (вже немає),\n" +"http://bulba.untergrund.net/ та інших Ñайтах про AY/YM.\n" +"\n" +"Імплементацію Ð´Ð»Ñ Audacious напиÑав Pavel Vymetalek " + +#: src/wavpack/wavpack.c:353 +#, c-format +msgid "Wavpack Decoder Plugin %s" +msgstr "Декодер Wavpack %s" + +#: src/wavpack/wavpack.c:354 +msgid "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan\n" +"Visit the Wavpack site at http://www.wavpack.com/\n" +msgstr "" +"(c) 2006 William Pitcock \n" +"\n" +"ДеÑкий код напиÑав Miles Egan.\n" +"Відвідайте Ñайт Wavpack: http://www.wavpack.com/\n" + + diff -Nru audacious-plugins-2.4.4/po/vi.po audacious-plugins-3.2/po/vi.po --- audacious-plugins-2.4.4/po/vi.po 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/po/vi.po 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,3423 @@ +# Vietnamese translation for Audacious Plugins +# Copyright (C) Audacious Translators +# This file is distributed under the same license as the Audacious Plugins package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Audacious\n" +"Report-Msgid-Bugs-To: http://jira.atheme.org/browse/AUD\n" +"POT-Creation-Date: 2011-10-24 16:38-0400\n" +"PO-Revision-Date: 2011-11-04 08:14+0000\n" +"Last-Translator: anix \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: vi\n" +"Plural-Forms: nplurals=1; plural=0\n" + +#: src/aac/libmp4.c:256 +#, c-format +msgid "" +"Using libfaad2-%s for decoding.\n" +"FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com\n" +"Copyright (c) 2005-2006 Audacious team" +msgstr "" +"Sá»­ dụng libfaad2-%s để giải mã.\n" +"FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com\n" +"Copyright (c) 2005-2006 Audacious team" + +#: src/aac/libmp4.c:261 +msgid "About MP4 AAC decoder plugin" +msgstr "" + +#: src/alarm/interface.c:34 +msgid "About XMMS Alarm" +msgstr "" + +#: src/alarm/interface.c:41 +msgid "XMMS Alarm" +msgstr "" + +#: src/alarm/interface.c:50 +msgid "" +"An XMMS plugin which can be used\n" +"to start playing at a certain time.\n" +"\n" +"Send all complaints to:\n" +"Adam Feakin \n" +"Daniel Stodden \n" +"\n" +"http://www.snika.uklinux.net/xmms-alarm/" +msgstr "" + +#: src/alarm/interface.c:65 +msgid "Close" +msgstr "Äóng" + +#: src/alarm/interface.c:95 +msgid "Alarm" +msgstr "" + +#: src/alarm/interface.c:102 +msgid "This is your wakeup call." +msgstr "" + +#: src/alarm/interface.c:117 src/alarm/interface.c:1338 +msgid "OK" +msgstr "OK" + +#: src/alarm/interface.c:151 +msgid "Sorry" +msgstr "Thật tiếc" + +#: src/alarm/interface.c:158 +msgid "Warning" +msgstr "Cảnh báo" + +#: src/alarm/interface.c:167 +msgid "" +"For safety reasons the \"quiet\" time must be at least 65 seconds longer than the fading time, it must also be more than 10 seconds. This basically means that there is a bug in the code and until I find a way of really fixing it this message will appear :)\n" +"\n" +"Your fading settings have NOT been saved\n" +"\n" +"--\n" +"Adam" +msgstr "" + +#: src/alarm/interface.c:183 +msgid "Oh Well" +msgstr "Tốt lắm" + +#: src/alarm/interface.c:339 +msgid "Alarm Settings" +msgstr "" + +#: src/alarm/interface.c:354 src/alarm/interface.c:526 +#: src/alarm/interface.c:898 +msgid "Time" +msgstr "" + +#: src/alarm/interface.c:395 +msgid "hours" +msgstr "giá»" + +#: src/alarm/interface.c:456 +msgid "h" +msgstr "" + +#: src/alarm/interface.c:486 +msgid "minutes" +msgstr "phút" + +#: src/alarm/interface.c:504 +msgid "Quiet after:" +msgstr "" + +#: src/alarm/interface.c:514 +msgid "Alarm at (default):" +msgstr "" + +#: src/alarm/interface.c:534 +msgid "Choose the days for the alarm to come on" +msgstr "Chá»n ngày cho chuông báo hoạt Ä‘á»™ng" + +#: src/alarm/interface.c:562 src/alarm/interface.c:610 +#: src/alarm/interface.c:658 src/alarm/interface.c:706 +#: src/alarm/interface.c:754 src/alarm/interface.c:802 +#: src/alarm/interface.c:850 src/bs2b/plugin.c:198 src/OSS/configure.c:153 +#: src/skins/ui_manager.c:450 src/skins/ui_manager.c:471 +msgid "Default" +msgstr "Mặc định" + +#: src/alarm/interface.c:888 +msgid "Day" +msgstr "Ngày" + +#: src/alarm/interface.c:908 +msgid "Tuesday" +msgstr "Thứ ba" + +#: src/alarm/interface.c:919 +msgid "Wednesday" +msgstr "Thứ tÆ°" + +#: src/alarm/interface.c:930 +msgid "Thursday" +msgstr "Thứ năm" + +#: src/alarm/interface.c:941 +msgid "Friday" +msgstr "Thứ sáu" + +#: src/alarm/interface.c:952 +msgid "Saturday" +msgstr "Thứ bảy" + +#: src/alarm/interface.c:963 +msgid "Sunday" +msgstr "Chủ nhật" + +#: src/alarm/interface.c:973 +msgid "Monday" +msgstr "Thứ hai" + +#: src/alarm/interface.c:984 +msgid "Days" +msgstr "Ngày" + +#: src/alarm/interface.c:1000 +msgid "Fading" +msgstr "" + +#: src/alarm/interface.c:1037 +msgid "seconds" +msgstr "giây" + +#: src/alarm/interface.c:1045 src/alarm/interface.c:1160 +msgid "Volume" +msgstr "Âm lượng" + +#: src/alarm/interface.c:1071 +msgid "Current" +msgstr "Hiện tại" + +#: src/alarm/interface.c:1079 +msgid "Start at" +msgstr "" + +#: src/alarm/interface.c:1107 src/alarm/interface.c:1151 +msgid "%" +msgstr "%" + +#: src/alarm/interface.c:1123 +msgid "Final" +msgstr "" + +#: src/alarm/interface.c:1176 +msgid "Additional Command" +msgstr "" + +#: src/alarm/interface.c:1202 +msgid "enable" +msgstr "bật" + +#: src/alarm/interface.c:1210 +msgid "Playlist (optional)" +msgstr "Danh sách (tùy chỉnh)" + +#: src/alarm/interface.c:1236 +msgid "Browse..." +msgstr "Duyệt..." + +#: src/alarm/interface.c:1244 src/alarm/interface.c:1408 +msgid "Reminder" +msgstr "" + +#: src/alarm/interface.c:1261 +msgid "Use reminder" +msgstr "" + +#: src/alarm/interface.c:1277 src/sndstretch/sndstretch_xmms.c:358 +msgid "Options" +msgstr "Tùy chá»n" + +#: src/alarm/interface.c:1285 +msgid "What do these options mean?" +msgstr "Những tùy chá»n này có nghÄ©a là gì?" + +#: src/alarm/interface.c:1313 +msgid "" +"\n" +"Time\n" +" Alarm at: \n" +" The time for the alarm to come on.\n" +"\n" +" Quiet After: \n" +" Stop alarm after this amount of time.\n" +" (if the wakeup dialog is not closed)\n" +"\n" +"\n" +"Days\n" +" Day:\n" +" Select the days for the alarm to activate.\n" +"\n" +" Time:\n" +" Choose the time for the alarm on each day,\n" +" or select the toggle button to use the default\n" +" time.\n" +"\n" +"\n" +"Volume\n" +" Fading: \n" +" Fade the volume up to the chosen volume \n" +" for this amount of time.\n" +"\n" +" Start at: \n" +" Start fading from this volume.\n" +"\n" +" Final: \n" +" The volume to stop fading at. If the fading\n" +" time is 0 then set volume to this and start\n" +" playing.\n" +"\n" +"\n" +"Options:\n" +" Additional Command:\n" +" Run this command at the alarm time.\n" +"\n" +" Playlist: \n" +" Load this playlist for playing songs from \n" +" (must have .m3u extension). If no playlist\n" +" is given then the songs which are currently\n" +" in the list will be used.\n" +" The URL of an mp3/ogg stream can also be\n" +" entered here, but loading of playlists from\n" +" URLs is not currently supported by xmms.\n" +"\n" +" Reminder:\n" +" Display a reminder when the alarm goes off,\n" +" type the reminder in the box and turn on the\n" +" toggle button if you want it to be shown.\n" +msgstr "" + +#: src/alarm/interface.c:1315 src/skins/ui_manager.c:382 +msgid "Help" +msgstr "Trợ giúp" + +#: src/alarm/interface.c:1347 src/cdaudio-ng/configure.c:249 +#: src/crystalizer/crystalizer.c:130 src/echo_plugin/gui.c:125 +#: src/jack/configure.c:148 src/null/null.c:108 src/stereo_plugin/stereo.c:125 +msgid "Cancel" +msgstr "Thôi" + +#: src/alarm/interface.c:1415 +msgid "Your reminder for today is.." +msgstr "" + +#: src/alarm/interface.c:1440 +msgid "Thankyou" +msgstr "" + +#: src/alsa/config.c:210 +msgid "Default PCM device" +msgstr "" + +#: src/alsa/config.c:235 +msgid "Default mixer device" +msgstr "" + +#: src/alsa/config.c:438 +msgid "ALSA Output Plugin Preferences" +msgstr "" + +#: src/alsa/config.c:445 +msgid "PCM device:" +msgstr "" + +#: src/alsa/config.c:447 src/OSS/configure.c:237 +msgid "Mixer device:" +msgstr "" + +#: src/alsa/config.c:449 +msgid "Mixer element:" +msgstr "" + +#: src/alsa/config.c:452 +msgid "Work around drain hangup" +msgstr "" + +#: src/alsa/plugin.c:59 +msgid "About ALSA Output Plugin" +msgstr "" + +#: src/alsa/plugin.c:81 +msgid "ALSA error" +msgstr "" + +#: src/amidi-plug/amidi-plug.c:335 +msgid "" +"You have not selected any sequencer ports for MIDI playback. You can do so " +"in the MIDI plugin preferences." +msgstr "" + +#: src/amidi-plug/backend-alsa/b-alsa.c:35 +msgid "ALSA Backend " +msgstr "" + +#: src/amidi-plug/backend-alsa/b-alsa.c:37 +msgid "" +"This backend sends MIDI events to a group of user-chosen ALSA sequencer ports. The ALSA sequencer interface is very versatile, it can provide ports for audio cards hardware synthesizers (i.e. emu10k1) but also for software synths, external devices, etc.\n" +"This backend does not produce audio, MIDI events are handled directly from devices/programs behind the ALSA ports; in example, MIDI events sent to the hardware synth will be directly played.\n" +"Backend written by Giacomo Lozito." +msgstr "" + +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 +msgid "FluidSynth Backend " +msgstr "" + +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 +msgid "" +"This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n" +"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n" +"Backend written by Giacomo Lozito." +msgstr "" + +#: src/amidi-plug/i_configure-alsa.c:228 +msgid "ALSA BACKEND CONFIGURATION" +msgstr "" + +#: src/amidi-plug/i_configure-alsa.c:331 +msgid "Port" +msgstr "Cổng" + +#: src/amidi-plug/i_configure-alsa.c:333 +msgid "Client name" +msgstr "" + +#: src/amidi-plug/i_configure-alsa.c:335 +msgid "Port name" +msgstr "Tên cổng" + +#: src/amidi-plug/i_configure-alsa.c:346 +msgid "ALSA output ports" +msgstr "" + +#: src/amidi-plug/i_configure-alsa.c:399 +msgid "Soundcard: " +msgstr "" + +#: src/amidi-plug/i_configure-alsa.c:401 +msgid "Mixer control: " +msgstr "" + +#: src/amidi-plug/i_configure-alsa.c:413 +msgid "Mixer settings" +msgstr "" + +#: src/amidi-plug/i_configure-alsa.c:429 +msgid "ALSA Backend not loaded or not available" +msgstr "" + +#: src/amidi-plug/i_configure-alsa.c:448 +msgid "" +"ALSA\n" +"backend" +msgstr "" + +#: src/amidi-plug/i_configure-ap.c:59 +msgid "AMIDI-Plug - backend information" +msgstr "" + +#: src/amidi-plug/i_configure-ap.c:196 +msgid "AMIDI-PLUG PREFERENCES" +msgstr "" + +#: src/amidi-plug/i_configure-ap.c:223 +msgid "Backend selection" +msgstr "" + +#: src/amidi-plug/i_configure-ap.c:227 +msgid "Available backends" +msgstr "" + +#: src/amidi-plug/i_configure-ap.c:257 +msgid "Playback settings" +msgstr "" + +#: src/amidi-plug/i_configure-ap.c:262 +msgid "Transpose: " +msgstr "" + +#: src/amidi-plug/i_configure-ap.c:271 +msgid "Drum shift: " +msgstr "" + +#: src/amidi-plug/i_configure-ap.c:289 +msgid "Advanced settings" +msgstr "Thiết lập nâng cao" + +#: src/amidi-plug/i_configure-ap.c:293 +msgid "pre-calculate length of MIDI files in playlist" +msgstr "" + +#: src/amidi-plug/i_configure-ap.c:298 +msgid "extract comments from MIDI file (if available)" +msgstr "" + +#: src/amidi-plug/i_configure-ap.c:303 +msgid "extract lyrics from MIDI file (if available)" +msgstr "trích xuất lá»i từ tập tin MIDI (nếu có)" + +#: src/amidi-plug/i_configure-ap.c:333 +msgid "" +"AMIDI\n" +"Plug" +msgstr "" + +#: src/amidi-plug/i_configure.c:76 +msgid "AMIDI-Plug - select file" +msgstr "" + +#: src/amidi-plug/i_configure.c:129 +msgid "AMIDI-Plug - configuration" +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:55 +msgid "AMIDI-Plug - select SoundFont file" +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:270 +msgid "FLUIDSYNTH BACKEND CONFIGURATION" +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:313 +msgid "SoundFont settings" +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "Tên tập tin" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 +msgid "Size (bytes)" +msgstr "Dung lượng (byte)" + +#: src/amidi-plug/i_configure-fluidsynth.c:398 +msgid "Load SF on player start" +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:402 +msgid "Load SF on first midifile play" +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:417 +msgid "Synthesizer settings" +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:426 +msgid "gain" +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 +msgid "use default" +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 +msgid "value:" +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:454 +msgid "poliphony" +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:482 +msgid "reverb" +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 +msgid "yes" +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 +msgid "no" +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:513 +msgid "chorus" +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:544 +msgid "sample rate" +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:550 +msgid "22050 Hz " +msgstr "22050 Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:553 +msgid "44100 Hz " +msgstr "44100 Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:556 +msgid "96000 Hz " +msgstr "96000 Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:559 +msgid "custom " +msgstr "tùy chá»n" + +#: src/amidi-plug/i_configure-fluidsynth.c:568 +msgid "Hz " +msgstr "Hz " + +#: src/amidi-plug/i_configure-fluidsynth.c:621 +msgid "FluidSynth Backend not loaded or not available" +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:640 +msgid "" +"FluidSynth\n" +"backend" +msgstr "" + +#: src/amidi-plug/i_configure-timidity.c:39 +msgid "TIMIDITY BACKEND CONFIGURATION" +msgstr "" + +#: src/amidi-plug/i_configure-timidity.c:64 +msgid "TiMidity Backend not loaded or not available" +msgstr "" + +#: src/amidi-plug/i_configure-timidity.c:83 +msgid "" +"TiMidity\n" +"backend" +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:169 +msgid "Name:" +msgstr "Tên:" + +#: src/amidi-plug/i_fileinfo.c:193 +msgid " MIDI Info " +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:205 +msgid "Format:" +msgstr "Äịnh dạng:" + +#: src/amidi-plug/i_fileinfo.c:208 +msgid "Length (msec):" +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:211 +msgid "Num of Tracks:" +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:216 +msgid "variable" +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:217 +msgid "BPM:" +msgstr "BPM:" + +#: src/amidi-plug/i_fileinfo.c:223 +msgid "BPM (wavg):" +msgstr "BPM (wavg):" + +#: src/amidi-plug/i_fileinfo.c:226 +msgid "Time Div:" +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:237 +msgid " MIDI Comments and Lyrics " +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:288 +msgid "* no comments available in this MIDI file *" +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:301 +msgid "* no lyrics available in this MIDI file *" +msgstr "* không có lá»i bài hát trong tập tin MIDI này *" + +#: src/amidi-plug/i_fileinfo.c:349 +msgid " (invalid UTF-8)" +msgstr "" + +#: src/amidi-plug/i_utils.c:43 +msgid "AMIDI-Plug - about" +msgstr "" + +#: src/amidi-plug/i_utils.c:68 +msgid "" +"\n" +"AMIDI-Plug " +msgstr "" + +#: src/amidi-plug/i_utils.c:69 +msgid "" +"\n" +"modular MIDI music player\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"\n" +"special thanks to...\n" +"\n" +"Clemens Ladisch and Jaroslav Kysela\n" +"for their cool programs aplaymidi and amixer; those\n" +"were really useful, along with alsa-lib docs, in order\n" +"to learn more about the ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"for the nice midi keyboard logo\n" +"\n" +"Tony Vroon\n" +"for the good help with alpha testing\n" +"\n" +msgstr "" + +#: src/aosd/aosd_style.c:75 +msgid "Rectangle" +msgstr "" + +#: src/aosd/aosd_style.c:79 +msgid "Rounded Rectangle" +msgstr "" + +#: src/aosd/aosd_style.c:83 +msgid "Concave Rectangle" +msgstr "" + +#: src/aosd/aosd_style.c:87 +msgid "None" +msgstr "" + +#: src/aosd/aosd_trigger.c:77 +msgid "Playback Start" +msgstr "" + +#: src/aosd/aosd_trigger.c:78 +msgid "Triggers OSD when a playlist entry is played." +msgstr "Hiện OSD khi má»™t bài hát được phát." + +#: src/aosd/aosd_trigger.c:82 +msgid "Title Change" +msgstr "" + +#: src/aosd/aosd_trigger.c:83 +msgid "" +"Triggers OSD when, during playback, the song title changes but the filename " +"is the same. This is mostly useful to display title changes in internet " +"streams." +msgstr "" + +#: src/aosd/aosd_trigger.c:89 +msgid "Volume Change" +msgstr "" + +#: src/aosd/aosd_trigger.c:90 +msgid "Triggers OSD when volume is changed." +msgstr "" + +#: src/aosd/aosd_trigger.c:94 +msgid "Pause On" +msgstr "" + +#: src/aosd/aosd_trigger.c:95 +msgid "Triggers OSD when playback is paused." +msgstr "" + +#: src/aosd/aosd_trigger.c:99 +msgid "Pause Off" +msgstr "" + +#: src/aosd/aosd_trigger.c:100 +msgid "Triggers OSD when playback is unpaused." +msgstr "" + +#: src/aosd/aosd_ui.c:180 +msgid "Placement" +msgstr "Vị trí" + +#: src/aosd/aosd_ui.c:219 +msgid "Relative X offset:" +msgstr "Dịch theo chiá»u ngang:" + +#: src/aosd/aosd_ui.c:228 +msgid "Relative Y offset:" +msgstr "Dịch theo chiá»u dá»c:" + +#: src/aosd/aosd_ui.c:237 +msgid "Max OSD width:" +msgstr "Bá» ngang tối Ä‘a của OSD:" + +#: src/aosd/aosd_ui.c:250 +msgid "Multi-Monitor options" +msgstr "Tùy chá»n nhiá»u màn hình" + +#: src/aosd/aosd_ui.c:254 +msgid "Display OSD using:" +msgstr "Hiện OSD trên:" + +#: src/aosd/aosd_ui.c:265 +msgid "all monitors" +msgstr "tất cả màn hình" + +#: src/aosd/aosd_ui.c:268 +#, c-format +msgid "monitor %i" +msgstr "màn hình %i" + +#: src/aosd/aosd_ui.c:323 +msgid "Timing (ms)" +msgstr "Thá»i gian (ms)" + +#: src/aosd/aosd_ui.c:328 +msgid "Display:" +msgstr "" + +#: src/aosd/aosd_ui.c:333 +msgid "Fade in:" +msgstr "Tốc Ä‘á»™ hiện:" + +#: src/aosd/aosd_ui.c:338 +msgid "Fade out:" +msgstr "Tốc Ä‘á»™ ẩn:" + +#: src/aosd/aosd_ui.c:419 +msgid "Fonts" +msgstr "Phông chữ" + +#: src/aosd/aosd_ui.c:427 +#, c-format +msgid "Font %i:" +msgstr "Phông %i:" + +#: src/aosd/aosd_ui.c:444 +msgid "Shadow" +msgstr "Bóng má»" + +#: src/aosd/aosd_ui.c:479 +msgid "Internationalization" +msgstr "Ngôn ngữ quốc tế" + +#: src/aosd/aosd_ui.c:485 +msgid "Disable UTF-8 conversion of text (in aosd)" +msgstr "Không chuyển đổi văn bản sang mã UTF-8 (trong aosd)" + +#: src/aosd/aosd_ui.c:503 +msgid "Select Skin File" +msgstr "" + +#: src/aosd/aosd_ui.c:614 +msgid "Render Style" +msgstr "" + +#: src/aosd/aosd_ui.c:630 +msgid "Colors" +msgstr "Màu sắc" + +#: src/aosd/aosd_ui.c:643 +#, c-format +msgid "Color %i:" +msgstr "Màu %i:" + +#: src/aosd/aosd_ui.c:663 +msgid "Custom Skin" +msgstr "" + +#: src/aosd/aosd_ui.c:669 +msgid "Skin file:" +msgstr "Tập tin giao diện:" + +#: src/aosd/aosd_ui.c:672 +msgid "Browse" +msgstr "Duyệt" + +#: src/aosd/aosd_ui.c:774 +msgid "Enable trigger" +msgstr "" + +#: src/aosd/aosd_ui.c:801 +msgid "Event" +msgstr "" + +#: src/aosd/aosd_ui.c:829 +msgid "Composite manager detected" +msgstr "" + +#: src/aosd/aosd_ui.c:836 +msgid "" +"Composite manager not detected;\n" +"unless you know that you have one running, please activate a composite manager otherwise the OSD won't work properly" +msgstr "" + +#: src/aosd/aosd_ui.c:844 +msgid "Composite manager not required for fake transparency" +msgstr "" + +#: src/aosd/aosd_ui.c:882 +msgid "Transparency" +msgstr "" + +#: src/aosd/aosd_ui.c:888 +msgid "Fake transparency" +msgstr "Giả trong suốt" + +#: src/aosd/aosd_ui.c:890 +msgid "Real transparency (requires X Composite Ext.)" +msgstr "Trong suốt thá»±c (yêu cầu X Composite)" + +#: src/aosd/aosd_ui.c:932 +msgid "Composite extension not loaded" +msgstr "" + +#: src/aosd/aosd_ui.c:940 +msgid "Composite extension not available" +msgstr "" + +#: src/aosd/aosd_ui.c:959 +#, c-format +msgid "Audacious OSD" +msgstr "" + +#: src/aosd/aosd_ui.c:1040 +msgid "Audacious OSD - configuration" +msgstr "Audacious OSD - cấu hình" + +#: src/aosd/aosd_ui.c:1061 +msgid "Test" +msgstr "Xem thá»­" + +#: src/aosd/aosd_ui.c:1076 +msgid "Position" +msgstr "Vị trí" + +#: src/aosd/aosd_ui.c:1081 +msgid "Animation" +msgstr "Hiệu ứng" + +#: src/aosd/aosd_ui.c:1086 +msgid "Text" +msgstr "Văn bản" + +#: src/aosd/aosd_ui.c:1091 +msgid "Decoration" +msgstr "" + +#: src/aosd/aosd_ui.c:1096 +msgid "Trigger" +msgstr "" + +#: src/aosd/aosd_ui.c:1101 src/cdaudio-ng/configure.c:171 +msgid "Misc" +msgstr "Khác" + +#: src/aosd/aosd_ui.c:1138 +msgid "Audacious OSD - about" +msgstr "" + +#: src/aosd/aosd_ui.c:1168 +msgid "" +"\n" +"Audacious OSD " +msgstr "" +"\n" +"Audacious OSD " + +#: src/aosd/aosd_ui.c:1169 +msgid "" +"\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"On-Screen-Display is based on Ghosd library\n" +"written by Evan Martin\n" +"http://neugierig.org/software/ghosd/\n" +"\n" +msgstr "" + +#: src/blur_scope/config.c:73 +msgid "Blur Scope: Color selection" +msgstr "" + +#: src/blur_scope/config.c:83 src/jack/configure.c:106 +msgid "Options:" +msgstr "" + +#: src/bs2b/plugin.c:157 +msgid "Bauer stereophonic-to-binaural Preferences" +msgstr "" + +#: src/bs2b/plugin.c:168 +msgid "Feed level:" +msgstr "" + +#: src/bs2b/plugin.c:182 +msgid "Cut frequency:" +msgstr "" + +#: src/bs2b/plugin.c:196 +msgid "Presets:" +msgstr "" + +#: src/cdaudio-ng/cdaudio-ng.c:241 +msgid "About Audio CD Plugin" +msgstr "" + +#: src/cdaudio-ng/cdaudio-ng.c:242 +msgid "" +"Copyright (c) 2007, by Calin Crisan and The Audacious Team.\n" +"\n" +"Many thanks to libcdio developers \n" +"\tand to libcddb developers .\n" +"\n" +"Also thank you Tony Vroon for mentoring & guiding me.\n" +"\n" +"This was a Google Summer of Code 2007 project.\n" +"\n" +"Copyright 2009 John Lindgren" +msgstr "" + +#: src/cdaudio-ng/cdaudio-ng.c:550 +msgid "Audio CD" +msgstr "" + +#: src/cdaudio-ng/cdaudio-ng.c:922 +msgid "Drive is empty." +msgstr "" + +#: src/cdaudio-ng/cdaudio-ng.c:924 +msgid "Unsupported disk type." +msgstr "" + +#: src/cdaudio-ng/configure.c:148 +msgid "CD Audio Plugin Configuration" +msgstr "" + +#: src/cdaudio-ng/configure.c:160 +msgid "Digital audio extraction" +msgstr "" + +#: src/cdaudio-ng/configure.c:165 +msgid "Title information" +msgstr "" + +#: src/cdaudio-ng/configure.c:176 +msgid "Disc speed:" +msgstr "" + +#: src/cdaudio-ng/configure.c:184 +msgid "Use cd-text if available" +msgstr "" + +#: src/cdaudio-ng/configure.c:191 +msgid "Use CDDB if available" +msgstr "" + +#: src/cdaudio-ng/configure.c:197 +msgid "Server: " +msgstr "" + +#: src/cdaudio-ng/configure.c:201 +msgid "Path: " +msgstr "ÄÆ°á»ng dẫn: " + +#: src/cdaudio-ng/configure.c:205 +msgid "Port: " +msgstr "Cổng: " + +#: src/cdaudio-ng/configure.c:218 +msgid "Use HTTP instead of CDDBP" +msgstr "Dùng HTTP thay cho CDDBP" + +#: src/cdaudio-ng/configure.c:230 +msgid "Override default device: " +msgstr "" + +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:123 +#: src/echo_plugin/gui.c:118 src/jack/configure.c:141 src/null/null.c:107 +#: src/stereo_plugin/stereo.c:118 +msgid "Ok" +msgstr "Ok" + +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Play CD" +msgstr "Phát Ä‘Ä©a CD" + +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Add CD" +msgstr "Thêm CD" + +#: src/compressor/plugin.c:63 +msgid "About Dynamic Range Compression Plugin" +msgstr "" + +#: src/compressor/plugin.c:95 +msgid "Dynamic Range Compressor Preferences" +msgstr "" + +#: src/compressor/plugin.c:107 +msgid "Center volume:" +msgstr "" + +#: src/compressor/plugin.c:120 +msgid "Dynamic range:" +msgstr "" + +#: src/console/configure.c:136 +msgid "Game Console Music Decoder" +msgstr "" + +#: src/console/configure.c:153 +msgid "General" +msgstr "Tổng quát" + +#: src/console/configure.c:155 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "" + +#: src/console/configure.c:170 +msgid "Bass:" +msgstr "" + +#: src/console/configure.c:174 src/console/configure.c:185 +#: src/console/configure.c:206 +msgid "secs" +msgstr "giây" + +#: src/console/configure.c:181 +msgid "Treble:" +msgstr "" + +#: src/console/configure.c:202 +msgid "Default song length:" +msgstr "" + +#: src/console/configure.c:208 +msgid "Resampling" +msgstr "" + +#: src/console/configure.c:214 +msgid "Enable audio resampling" +msgstr "" + +#: src/console/configure.c:229 +msgid "Resampling rate:" +msgstr "" + +#: src/console/configure.c:233 +msgid "Hz" +msgstr "Hz" + +#: src/console/configure.c:244 +msgid "SPC" +msgstr "SPC" + +#: src/console/configure.c:245 +msgid "Ignore length from SPC tags" +msgstr "" + +#: src/console/configure.c:246 +msgid "Increase reverb" +msgstr "" + +#: src/console/configure.c:271 +msgid "" +"The default song length, expressed in seconds, is used for songs that do not" +" provide length information (i.e. looping tracks)." +msgstr "" + +#: src/console/plugin.c:33 +msgid "About the Game Console Music Decoder" +msgstr "" + +#: src/console/plugin.c:34 +msgid "" +"Console music decoder engine based on Game_Music_Emu 0.5.2.\n" +"Supported formats: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Audacious implementation by: William Pitcock , \n" +" Shay Green \n" +msgstr "" + +#: src/crossfade/plugin.c:60 +msgid "About Crossfade" +msgstr "" + +#: src/crossfade/plugin.c:92 +msgid "Crossfade Preferences" +msgstr "" + +#: src/crossfade/plugin.c:104 +msgid "Overlap (in seconds):" +msgstr "" + +#: src/crossfade/plugin.c:135 src/crossfade/plugin.c:141 +msgid "Crossfade Error" +msgstr "" + +#: src/crossfade/plugin.c:135 +msgid "" +"Crossfading failed because the songs had a different number of channels." +msgstr "" + +#: src/crossfade/plugin.c:143 +msgid "" +"Crossfading failed because the songs had different sample rates.\n" +"\n" +"You can use the Sample Rate Converter effect to resample the songs to the same rate." +msgstr "" + +#: src/crystalizer/crystalizer.c:100 +msgid "Configure Crystalizer" +msgstr "" + +#: src/crystalizer/crystalizer.c:102 src/stereo_plugin/stereo.c:97 +msgid "Effect intensity:" +msgstr "" + +#: src/crystalizer/crystalizer.c:136 src/echo_plugin/gui.c:131 +#: src/stereo_plugin/stereo.c:131 +msgid "Apply" +msgstr "Ãp dụng" + +#: src/echo_plugin/gui.c:15 +msgid "" +"Echo Plugin\n" +"By Johan Levin 1999.\n" +"\n" +"Surround echo by Carl van Schaik 1999" +msgstr "" + +#: src/echo_plugin/gui.c:27 +msgid "About Echo Plugin" +msgstr "" + +#: src/echo_plugin/gui.c:67 +msgid "Configure Echo" +msgstr "" + +#: src/echo_plugin/gui.c:83 +msgid "Delay: (ms)" +msgstr "" + +#: src/echo_plugin/gui.c:88 +msgid "Feedback: (%)" +msgstr "" + +#: src/echo_plugin/gui.c:93 +msgid "Volume: (%)" +msgstr "Âm lượng: (%)" + +#: src/ffaudio/ffaudio-core.c:795 +#, c-format +msgid "" +"Multi-format audio decoding plugin for Audacious based on\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious plugin by:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" +msgstr "" + +#: src/ffaudio/ffaudio-core.c:809 +msgid "About FFaudio Plugin" +msgstr "" + +#: src/filewriter/filewriter.c:166 +msgid "About FileWriter-Plugin" +msgstr "" + +#: src/filewriter/filewriter.c:455 +msgid "File Writer Configuration" +msgstr "" + +#: src/filewriter/filewriter.c:467 +msgid "Output file format:" +msgstr "" + +#: src/filewriter/filewriter.c:485 +msgid "Configure" +msgstr "Cấu hình" + +#: src/filewriter/filewriter.c:500 +msgid "Save into original directory" +msgstr "" + +#: src/filewriter/filewriter.c:505 +msgid "Save into custom directory" +msgstr "" + +#: src/filewriter/filewriter.c:515 +msgid "Output file folder:" +msgstr "" + +#: src/filewriter/filewriter.c:519 +msgid "Pick a folder" +msgstr "" + +#: src/filewriter/filewriter.c:538 +msgid "Get filename from:" +msgstr "" + +#: src/filewriter/filewriter.c:541 +msgid "original file tags" +msgstr "" + +#: src/filewriter/filewriter.c:547 +msgid "original filename" +msgstr "tên gốc của tập tin" + +#: src/filewriter/filewriter.c:557 +msgid "Don't strip file name extension" +msgstr "" + +#: src/filewriter/filewriter.c:572 +msgid "Prepend track number to filename" +msgstr "" + +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:771 +msgid "Auto" +msgstr "" + +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" +msgstr "" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 +msgid "Stereo" +msgstr "" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 +msgid "Mono" +msgstr "" + +#: src/filewriter/mp3.c:712 +msgid "MP3 Configuration" +msgstr "Cấu hình MP3" + +#: src/filewriter/mp3.c:735 +msgid "Algorithm Quality:" +msgstr "" + +#: src/filewriter/mp3.c:760 +msgid "Output Samplerate:" +msgstr "" + +#: src/filewriter/mp3.c:788 +msgid "(Hz)" +msgstr "(Hz)" + +#: src/filewriter/mp3.c:795 +msgid "Bitrate / Compression ratio:" +msgstr "" + +#: src/filewriter/mp3.c:819 +msgid "Bitrate (kbps):" +msgstr "" + +#: src/filewriter/mp3.c:852 +msgid "Compression ratio:" +msgstr "" + +#: src/filewriter/mp3.c:876 +msgid "Audio Mode:" +msgstr "" + +#: src/filewriter/mp3.c:901 +msgid "Misc:" +msgstr "" + +#: src/filewriter/mp3.c:912 +msgid "Enforce strict ISO complience" +msgstr "" + +#: src/filewriter/mp3.c:923 +msgid "Error protection" +msgstr "" + +#: src/filewriter/mp3.c:935 src/filewriter/vorbis.c:243 +msgid "Quality" +msgstr "Chất lượng:" + +#: src/filewriter/mp3.c:945 +msgid "Enable VBR/ABR" +msgstr "" + +#: src/filewriter/mp3.c:955 +msgid "Type:" +msgstr "" + +#: src/filewriter/mp3.c:988 +msgid "VBR Options:" +msgstr "" + +#: src/filewriter/mp3.c:1004 +msgid "Minimum bitrate (kbps):" +msgstr "" + +#: src/filewriter/mp3.c:1031 +msgid "Maximum bitrate (kbps):" +msgstr "" + +#: src/filewriter/mp3.c:1054 +msgid "Strictly enforce minimum bitrate" +msgstr "" + +#: src/filewriter/mp3.c:1066 +msgid "ABR Options:" +msgstr "" + +#: src/filewriter/mp3.c:1076 +msgid "Average bitrate (kbps):" +msgstr "" + +#: src/filewriter/mp3.c:1104 +msgid "VBR quality level:" +msgstr "" + +#: src/filewriter/mp3.c:1123 +msgid "Don't write Xing VBR header" +msgstr "" + +#: src/filewriter/mp3.c:1137 +msgid "VBR/ABR" +msgstr "VBR/ABR" + +#: src/filewriter/mp3.c:1147 +msgid "Frame params:" +msgstr "" + +#: src/filewriter/mp3.c:1159 +msgid "Mark as copyright" +msgstr "" + +#: src/filewriter/mp3.c:1170 +msgid "Mark as original" +msgstr "" + +#: src/filewriter/mp3.c:1182 +msgid "ID3 params:" +msgstr "" + +#: src/filewriter/mp3.c:1193 +msgid "Force addition of version 2 tag" +msgstr "" + +#: src/filewriter/mp3.c:1203 +msgid "Only add v1 tag" +msgstr "" + +#: src/filewriter/mp3.c:1210 +msgid "Only add v2 tag" +msgstr "" + +#: src/filewriter/mp3.c:1231 +msgid "Tags" +msgstr "" + +#: src/filewriter/vorbis.c:236 +msgid "Vorbis Encoder Configuration" +msgstr "" + +#: src/filewriter/vorbis.c:256 +msgid "Quality level (0 - 10):" +msgstr "" + +#: src/flacng/plugin.c:379 +msgid "About FLAC Audio Plugin" +msgstr "" + +#: src/flacng/plugin.c:380 +msgid "" +"\n" +"\n" +"Original code by\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" +msgstr "" + +#: src/gnomeshortcuts/gnomeshortcuts.c:303 +msgid "About Gnome Shortcut Plugin" +msgstr "Thông tin trình cắm Dùng phím tắt của GNOME" + +#: src/gnomeshortcuts/gnomeshortcuts.c:304 +msgid "" +"Gnome Shortcut Plugin\n" +"Let's you control the player with Gnome's shortcuts.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +msgstr "" +"Gnome Shortcut Plugin\n" +"Cho phép bạn Ä‘iá»u khiển Audacious bằng phím tắt của Gnome.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" + +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 +msgid "Open Files" +msgstr "Mở tập tin" + +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:271 +msgid "Add Files" +msgstr "Thêm tập tin" + +#: src/gntui/gntui.c:270 +msgid "Audacious2" +msgstr "Audacious2" + +#: src/gntui/gntui.c:311 +msgid "gnt interface" +msgstr "" + +#: src/gtkui/columns.c:36 +msgid "Entry number" +msgstr "" + +#: src/gtkui/columns.c:36 +msgid "Title" +msgstr "Tá»±a Ä‘á»" + +#: src/gtkui/columns.c:37 +msgid "Artist" +msgstr "Nghệ sÄ©" + +#: src/gtkui/columns.c:37 +msgid "Year" +msgstr "Năm" + +#: src/gtkui/columns.c:37 +msgid "Album" +msgstr "Album" + +#: src/gtkui/columns.c:37 +msgid "Track" +msgstr "" + +#: src/gtkui/columns.c:37 +msgid "Queue position" +msgstr "" + +#: src/gtkui/columns.c:38 +msgid "Length" +msgstr "Thá»i lượng" + +#: src/gtkui/columns.c:38 +msgid "File path" +msgstr "ÄÆ°á»ng dẫn" + +#: src/gtkui/columns.c:38 +msgid "File name" +msgstr "Tên tập tin" + +#: src/gtkui/columns.c:38 +msgid "Custom title" +msgstr "" + +#: src/gtkui/columns.c:39 +msgid "Bitrate" +msgstr "" + +#: src/gtkui/columns.c:278 +msgid "Choose Columns" +msgstr "Chá»n cá»™t" + +#: src/gtkui/columns.c:292 +msgid "Available:" +msgstr "Có thể dùng:" + +#: src/gtkui/columns.c:326 +msgid "Chosen:" +msgstr "Äang hiện:" + +#: src/gtkui/layout.c:122 +msgid "Dock at Left" +msgstr "" + +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "" + +#: src/gtkui/layout.c:123 src/ladspa/plugin.c:643 +msgid "Disable" +msgstr "" + +#: src/gtkui/menus.c:130 +msgid "_Open Files ..." +msgstr "Mở tậ_p tin ..." + +#: src/gtkui/menus.c:131 +msgid "Open _URL ..." +msgstr "Mở _URL ..." + +#: src/gtkui/menus.c:132 +msgid "_Add File ..." +msgstr "Thêm tập ti_n ..." + +#: src/gtkui/menus.c:133 +msgid "Add U_RL ..." +msgstr "Thêm U_RL ..." + +#: src/gtkui/menus.c:135 +msgid "A_bout ..." +msgstr "_Giá»›i thiệu ..." + +#: src/gtkui/menus.c:136 +msgid "_Preferences ..." +msgstr "Tù_y chỉnh ..." + +#: src/gtkui/menus.c:137 src/skins/ui_manager.c:406 +msgid "_Quit" +msgstr "_Thoát" + +#: src/gtkui/menus.c:140 +msgid "_Play" +msgstr "_Phát" + +#: src/gtkui/menus.c:141 +msgid "Paus_e" +msgstr "Tạm _dừng" + +#: src/gtkui/menus.c:142 +msgid "_Stop" +msgstr "_NgÆ°ng" + +#: src/gtkui/menus.c:143 +msgid "Pre_vious" +msgstr "_Bài trÆ°á»›c" + +#: src/gtkui/menus.c:144 +msgid "_Next" +msgstr "Tiếp the_o" + +#: src/gtkui/menus.c:146 +msgid "_Repeat" +msgstr "_Lặp lại" + +#: src/gtkui/menus.c:147 +msgid "S_huffle" +msgstr "T_rá»™n bài" + +#: src/gtkui/menus.c:148 +msgid "N_o Playlist Advance" +msgstr "_Không tá»± Ä‘á»™ng phát bài kế tiếp" + +#: src/gtkui/menus.c:149 +msgid "Stop _After This Song" +msgstr "Dừng lại sa_u bài này" + +#: src/gtkui/menus.c:151 src/gtkui/menus.c:209 +msgid "Song _Info ..." +msgstr "Thông t_in bài hát ..." + +#: src/gtkui/menus.c:152 +msgid "Jump to _Time ..." +msgstr "_Xác định thá»i gian ..." + +#: src/gtkui/menus.c:153 +msgid "_Jump to Song ..." +msgstr "C_há»n bài hát ..." + +#: src/gtkui/menus.c:156 +msgid "By Track _Number" +msgstr "" + +#: src/gtkui/menus.c:157 +msgid "By _Title" +msgstr "" + +#: src/gtkui/menus.c:158 +msgid "By _Artist" +msgstr "" + +#: src/gtkui/menus.c:159 +msgid "By A_lbum" +msgstr "" + +#: src/gtkui/menus.c:160 +msgid "By Release _Date" +msgstr "" + +#: src/gtkui/menus.c:161 +msgid "By _File Path" +msgstr "" + +#: src/gtkui/menus.c:162 +msgid "By _Custom Title" +msgstr "" + +#: src/gtkui/menus.c:164 +msgid "R_everse Order" +msgstr "" + +#: src/gtkui/menus.c:165 +msgid "_Random Order" +msgstr "" + +#: src/gtkui/menus.c:168 src/gtkui/menus.c:211 +msgid "_Refresh" +msgstr "" + +#: src/gtkui/menus.c:170 +msgid "_Sort" +msgstr "" + +#: src/gtkui/menus.c:172 +msgid "_New" +msgstr "" + +#: src/gtkui/menus.c:173 src/gtkui/menus.c:222 +msgid "_Close" +msgstr "" + +#: src/gtkui/menus.c:175 +msgid "_Import ..." +msgstr "" + +#: src/gtkui/menus.c:176 +msgid "_Export ..." +msgstr "" + +#: src/gtkui/menus.c:178 +msgid "_Playlist Manager ..." +msgstr "" + +#: src/gtkui/menus.c:179 +msgid "_Queue Manager ..." +msgstr "" + +#: src/gtkui/menus.c:182 +msgid "Volume _Up" +msgstr "" + +#: src/gtkui/menus.c:183 +msgid "Volume _Down" +msgstr "" + +#: src/gtkui/menus.c:185 +msgid "_Equalizer" +msgstr "" + +#: src/gtkui/menus.c:187 +msgid "E_ffects" +msgstr "" + +#: src/gtkui/menus.c:190 +msgid "_Interface" +msgstr "" + +#: src/gtkui/menus.c:192 +msgid "Show _Menu Bar" +msgstr "" + +#: src/gtkui/menus.c:193 +msgid "Show I_nfo Bar" +msgstr "" + +#: src/gtkui/menus.c:194 +msgid "Show _Status Bar" +msgstr "" + +#: src/gtkui/menus.c:196 +msgid "Show Column _Headers" +msgstr "" + +#: src/gtkui/menus.c:197 +msgid "Choose _Columns ..." +msgstr "" + +#: src/gtkui/menus.c:198 +msgid "Scrol_l on Song Change" +msgstr "" + +#: src/gtkui/menus.c:201 +msgid "_File" +msgstr "_Tập tin" + +#: src/gtkui/menus.c:202 +msgid "_Playback" +msgstr "Äiá»u _khiển" + +#: src/gtkui/menus.c:203 +msgid "P_laylist" +msgstr "_Danh sách" + +#: src/gtkui/menus.c:204 src/gtkui/menus.c:218 +msgid "_Services" +msgstr "Dịch _vụ" + +#: src/gtkui/menus.c:205 +msgid "_Output" +msgstr "Â_m thanh" + +#: src/gtkui/menus.c:206 +msgid "_View" +msgstr "_Hiển thị" + +#: src/gtkui/menus.c:210 +msgid "_Queue/Unqueue" +msgstr "" + +#: src/gtkui/menus.c:213 +msgid "Cu_t" +msgstr "" + +#: src/gtkui/menus.c:214 +msgid "_Copy" +msgstr "" + +#: src/gtkui/menus.c:215 +msgid "_Paste" +msgstr "" + +#: src/gtkui/menus.c:216 +msgid "Select _All" +msgstr "" + +#: src/gtkui/menus.c:221 +msgid "_Rename" +msgstr "" + +#: src/gtkui/ui_gtk.c:95 +msgid "GTK Interface" +msgstr "Giao diện GTK" + +#: src/gtkui/ui_gtk.c:156 src/skins/ui_main.c:302 +#, c-format +msgid "%s - Audacious" +msgstr "" + +#: src/gtkui/ui_gtk.c:162 +msgid "Buffering ..." +msgstr "" + +#: src/gtkui/ui_gtk.c:165 src/skins/ui_main.c:304 src/skins/ui_main.c:1499 +msgid "Audacious" +msgstr "Audacious" + +#: src/gtkui/ui_gtk.c:211 src/skins/plugin.c:183 +msgid "Error" +msgstr "Lá»—i" + +#: src/gtkui/ui_statusbar.c:102 src/skins/ui_main.c:459 +msgid "mono" +msgstr "" + +#: src/gtkui/ui_statusbar.c:104 src/skins/ui_main.c:458 +msgid "stereo" +msgstr "" + +#: src/gtkui/ui_statusbar.c:106 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d kênh" + +#: src/gtkui/ui_statusbar.c:121 +#, c-format +msgid "%d kbps" +msgstr "%d kbps" + +#: src/hotkey/gui.c:71 +msgid "Previous Track" +msgstr "" + +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "Phát" + +#: src/hotkey/gui.c:73 +msgid "Pause/Resume" +msgstr "Tạm dừng/Tiếp tục" + +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +msgid "Stop" +msgstr "NgÆ°ng" + +#: src/hotkey/gui.c:75 +msgid "Next Track" +msgstr "" + +#: src/hotkey/gui.c:76 +msgid "Forward 5 Seconds" +msgstr "Xả tá»›i 5 giây" + +#: src/hotkey/gui.c:77 +msgid "Rewind 5 Seconds" +msgstr "Lùi lại 5 giây" + +#: src/hotkey/gui.c:78 +msgid "Mute" +msgstr "Tắt âm" + +#: src/hotkey/gui.c:79 +msgid "Volume Up" +msgstr "Tăng âm lượng" + +#: src/hotkey/gui.c:80 +msgid "Volume Down" +msgstr "Giảm âm lượng" + +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Jump to File" +msgstr "Chá»n tập tin" + +#: src/hotkey/gui.c:82 +msgid "Toggle Player Windows" +msgstr "" + +#: src/hotkey/gui.c:83 +msgid "Show On-Screen-Display" +msgstr "" + +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "" + +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "" + +#: src/hotkey/gui.c:95 +msgid "(none)" +msgstr "" + +#: src/hotkey/gui.c:232 +msgid "" +"It is not recommended to bind the primary mouse buttons without modificators.\n" +"\n" +"Do you want to continue?" +msgstr "" + +#: src/hotkey/gui.c:234 +msgid "Binding mouse buttons" +msgstr "" + +#: src/hotkey/gui.c:384 +msgid "Global Hotkey Plugin Configuration" +msgstr "Cấu hình trình cắm phím tắt chung" + +#: src/hotkey/gui.c:400 +msgid "" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." +msgstr "" + +#: src/hotkey/gui.c:405 +msgid "Hotkeys:" +msgstr "Phím tắt:" + +#: src/hotkey/gui.c:424 +msgid "Action:" +msgstr "Hành Ä‘á»™ng:" + +#: src/hotkey/gui.c:432 +msgid "Key Binding:" +msgstr "" + +#: src/hotkey/gui.c:663 +msgid "About Global Hotkey Plugin" +msgstr "Thông tin trình cắm phím tắt chung" + +#: src/hotkey/gui.c:664 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributers include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä \n" +"\t\t\tBryn Davies \n" +"\t\t\tJonathan A. Davis \n" +"\t\t\tJeremy Tan \n" +"\n" +msgstr "" + +#: src/jack/configure.c:66 +msgid "Connect to all available jack ports" +msgstr "" + +#: src/jack/configure.c:73 +msgid "Connect only the output ports" +msgstr "" + +#: src/jack/configure.c:80 +msgid "Connect to no ports" +msgstr "" + +#: src/jack/configure.c:98 +msgid "jack Plugin configuration" +msgstr "" + +#: src/jack/configure.c:116 +msgid "Connection mode:" +msgstr "" + +#: src/jack/configure.c:128 +msgid "Enable debug printing" +msgstr "" + +#: src/jack/jack.c:422 +msgid "" +"XMMS jack Driver 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" +"\n" +"Audacious port by\n" +"Giacomo Lozito from develia.org" +msgstr "" + +#: src/jack/jack.c:427 +msgid "About JACK Output Plugin 0.17" +msgstr "" + +#: src/ladspa/plugin.c:414 +msgid "About LADSPA Host" +msgstr "" + +#: src/ladspa/plugin.c:515 +#, c-format +msgid "%s Settings" +msgstr "" + +#: src/ladspa/plugin.c:583 +msgid "LADSPA Host Settings" +msgstr "" + +#: src/ladspa/plugin.c:592 +msgid "Module paths:" +msgstr "" + +#: src/ladspa/plugin.c:597 +msgid "" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." +msgstr "" + +#: src/ladspa/plugin.c:613 +msgid "Available plugins:" +msgstr "" + +#: src/ladspa/plugin.c:625 +msgid "Enable" +msgstr "" + +#: src/ladspa/plugin.c:631 +msgid "Enabled plugins:" +msgstr "" + +#: src/ladspa/plugin.c:646 +msgid "Settings" +msgstr "" + +#: src/lyricwiki/lyricwiki.c:227 +msgid "" +"\n" +"Looking for lyrics..." +msgstr "" +"\n" +"Äang tìm lá»i bài hát..." + +#: src/lyricwiki/lyricwiki.c:250 +msgid "" +"\n" +"Connecting to lyrics.wikia.com..." +msgstr "" +"\n" +"Äang kết nối đến lyrics.wikia.com..." + +#: src/lyricwiki/lyricwiki.c:338 +msgid "" +"\n" +"No lyrics were found." +msgstr "" +"\n" +"Không tìm thấy lá»i bài hát." + +#: src/metronom/metronom.c:85 +msgid "About Metronom" +msgstr "" + +#: src/metronom/metronom.c:86 +msgid "" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +msgstr "" + +#: src/metronom/metronom.c:143 +#, c-format +msgid "Tact generator: %d bpm" +msgstr "" + +#: src/metronom/metronom.c:145 +#, c-format +msgid "Tact generator: %d bpm %d/%d" +msgstr "" + +#: src/mixer/plugin.c:64 +msgid "About Channel Mixer" +msgstr "" + +#: src/mixer/plugin.c:93 +msgid "Channel Mixer Settings" +msgstr "" + +#: src/mixer/plugin.c:102 +msgid "Output channels:" +msgstr "" + +#: src/mixer/plugin.c:112 +msgid "Changes take effect at the next song change." +msgstr "" + +#: src/mpg123/mpg123.c:183 +msgid "Surround" +msgstr "" + +#: src/mtp_up/mtp.c:298 +msgid "Upload in progress..." +msgstr "Äang tải lên..." + +#: src/mtp_up/mtp.c:310 +msgid "Upload to MTP Device" +msgstr "" + +#: src/mtp_up/mtp.c:311 +msgid "Disconnect MTP Device" +msgstr "" + +#: src/notify/libnotify-aosd_event.c:47 +msgid "Stopped" +msgstr "Äã dừng" + +#: src/notify/libnotify-aosd_event.c:47 +msgid "Audacious is not playing." +msgstr "" + +#: src/null/null.c:64 +msgid "Null output plugin " +msgstr "" + +#: src/null/null.c:65 +msgid "" +" by Christian Birchinger \n" +"based on the XMMS plugin by HÃ¥vard KvÃ¥l " +msgstr "" + +#: src/null/null.c:68 +msgid "About Null Output" +msgstr "" + +#: src/null/null.c:89 +msgid "Null output preferences" +msgstr "" + +#: src/null/null.c:100 +msgid "Run in real time" +msgstr "" + +#: src/oss4/configure.c:76 +msgid "1. Default device" +msgstr "1. Thiết bị măc định" + +#: src/oss4/configure.c:132 +msgid "OSS4 Output Plugin Preferences" +msgstr "" + +#: src/oss4/configure.c:144 src/OSS/configure.c:194 +msgid "Audio device:" +msgstr "Thiết bị âm thanh:" + +#: src/oss4/configure.c:172 src/OSS/configure.c:217 src/OSS/configure.c:260 +msgid "Use alternate device:" +msgstr "Dùng thiết bị thay thế:" + +#: src/oss4/configure.c:187 +msgid "Save volume between sessions" +msgstr "" + +#: src/oss4/configure.c:191 +msgid "Enable format conversions made by the OSS software." +msgstr "" + +#: src/oss4/plugin.c:51 +msgid "About OSS4 Plugin" +msgstr "" + +#: src/oss4/utils.c:211 +msgid "OSS4 error" +msgstr "" + +#: src/OSS/configure.c:137 +#, c-format +msgid "Default (%s)" +msgstr "Mặc định (%s)" + +#: src/OSS/configure.c:178 +msgid "OSS Driver configuration" +msgstr "" + +#: src/OSS/configure.c:281 +msgid "Devices" +msgstr "Thiết bị" + +#: src/OSS/configure.c:283 +msgid "Buffering:" +msgstr "" + +#: src/OSS/configure.c:296 +msgid "Pre-buffer (percent):" +msgstr "" + +#: src/OSS/configure.c:307 +msgid "Buffering" +msgstr "" + +#: src/OSS/configure.c:308 +msgid "Mixer Settings:" +msgstr "" + +#: src/OSS/configure.c:314 +msgid "Volume controls Master not PCM" +msgstr "" + +#: src/OSS/configure.c:320 +msgid "Mixer" +msgstr "" + +#: src/OSS/OSS.c:40 +msgid "About OSS Driver" +msgstr "" + +#: src/pulse_audio/pulse_audio.c:687 +msgid "About Audacious PulseAudio Output Plugin" +msgstr "" + +#: src/resample/plugin.c:89 +msgid "About Sample Rate Converter Plugin" +msgstr "" + +#: src/resample/plugin.c:144 +msgid "Sample Rate Converter Preferences" +msgstr "" + +#: src/resample/plugin.c:156 +msgid "Rate mappings:" +msgstr "" + +#: src/resample/plugin.c:179 +msgid "All others:" +msgstr "" + +#: src/resample/plugin.c:191 +msgid "Method:" +msgstr "" + +#: src/scrobbler/configure.c:122 src/scrobbler/configure.c:197 +msgid "Change password" +msgstr "Äổi mật khẩu" + +#: src/scrobbler/configure.c:143 +msgid "Services" +msgstr "Dịch vụ" + +#: src/scrobbler/configure.c:165 +msgid "Username:" +msgstr "Tên ngÆ°á»i dùng:" + +#: src/scrobbler/configure.c:171 +msgid "Password:" +msgstr "Mật khẩu:" + +#: src/scrobbler/configure.c:179 +msgid "Scrobbler URL:" +msgstr "" + +#: src/scrobbler/configure.c:211 +msgid "Last.FM" +msgstr "Last.FM" + +#: src/scrobbler/configure.c:238 +msgid "Scrobbler" +msgstr "Scrobbler" + +#: src/scrobbler/plugin.c:194 +msgid "" +"Audacious AudioScrobbler Plugin\n" +"\n" +"Originally created by Audun Hove and Pipian \n" +msgstr "" + +#: src/scrobbler/plugin.c:196 +msgid "About Scrobbler Plugin" +msgstr "" + +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" +msgstr "" + +#: src/sdlout/plugin.c:78 +msgid "SDL error" +msgstr "" + +#: src/skins/plugin.c:165 +msgid "About Skinned GUI" +msgstr "" + +#: src/skins/plugin.c:166 +msgid "" +"Copyright (c) 2008, by Tomasz MoÅ„ \n" +"\n" +msgstr "" + +#: src/skins/skins_cfg.c:207 +msgid "_Player:" +msgstr "" + +#: src/skins/skins_cfg.c:208 +msgid "Select main player window font:" +msgstr "" + +#: src/skins/skins_cfg.c:210 +msgid "_Playlist:" +msgstr "" + +#: src/skins/skins_cfg.c:211 +msgid "Select playlist font:" +msgstr "" + +#: src/skins/skins_cfg.c:215 +msgid "_Fonts" +msgstr "" + +#: src/skins/skins_cfg.c:218 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "" + +#: src/skins/skins_cfg.c:220 +msgid "Scroll song title in both directions" +msgstr "" + +#: src/skins/skins_cfg.c:298 +msgid "_Skin" +msgstr "" + +#: src/skins/skins_cfg.c:345 +msgid "Interface Preferences" +msgstr "Tùy chỉnh giao diện" + +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "" + +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" +msgstr "31 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "63 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" +msgstr "125 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" +msgstr "250 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" +msgstr "500 Hz" + +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" +msgstr "1 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" +msgstr "2 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" +msgstr "4 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" +msgstr "8 kHz" + +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" +msgstr "16 kHz" + +#: src/skins/ui_equalizer.c:379 +msgid "Audacious Equalizer" +msgstr "" + +#: src/skins/ui_equalizer.c:896 +msgid "Presets" +msgstr "" + +#: src/skins/ui_main.c:443 +msgid "kbps" +msgstr "kbps" + +#: src/skins/ui_main.c:451 +msgid "kHz" +msgstr "kHz" + +#: src/skins/ui_main.c:458 +msgid "surround" +msgstr "" + +#: src/skins/ui_main.c:806 +#, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "" + +#: src/skins/ui_main.c:827 +#, c-format +msgid "Volume: %d%%" +msgstr "" + +#: src/skins/ui_main.c:850 +#, c-format +msgid "Balance: %d%% left" +msgstr "" + +#: src/skins/ui_main.c:852 +msgid "Balance: center" +msgstr "" + +#: src/skins/ui_main.c:854 +#, c-format +msgid "Balance: %d%% right" +msgstr "" + +#: src/skins/ui_main.c:980 +msgid "Options Menu" +msgstr "" + +#: src/skins/ui_main.c:984 +msgid "Disable 'Always On Top'" +msgstr "" + +#: src/skins/ui_main.c:986 +msgid "Enable 'Always On Top'" +msgstr "" + +#: src/skins/ui_main.c:989 +msgid "File Info Box" +msgstr "" + +#: src/skins/ui_main.c:994 +msgid "Visualization Menu" +msgstr "" + +#: src/skins/ui_main.c:1648 +msgid "Single mode." +msgstr "" + +#: src/skins/ui_main.c:1650 +msgid "Playlist mode." +msgstr "" + +#: src/skins/ui_main.c:1672 +msgid "Stopping after song." +msgstr "" + +#: src/skins/ui_main.c:1674 +msgid "Not stopping after song." +msgstr "" + +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 +msgid "Autoscroll Songname" +msgstr "" + +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 +msgid "Peaks" +msgstr "" + +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "Lặp lại" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "Trá»™n bài" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 +msgid "Show Player" +msgstr "" + +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 +msgid "Show Playlist Editor" +msgstr "" + +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 +msgid "Show Equalizer" +msgstr "" + +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 +msgid "Always on Top" +msgstr "" + +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 +msgid "Put on All Workspaces" +msgstr "" + +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 +msgid "Roll up Player" +msgstr "" + +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 +msgid "Roll up Playlist Editor" +msgstr "" + +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 +msgid "Roll up Equalizer" +msgstr "" + +#: src/skins/ui_manager.c:115 +msgid "Analyzer" +msgstr "" + +#: src/skins/ui_manager.c:116 +msgid "Scope" +msgstr "" + +#: src/skins/ui_manager.c:117 +msgid "Voiceprint" +msgstr "" + +#: src/skins/ui_manager.c:118 +msgid "Off" +msgstr "Tắt" + +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 +msgid "Normal" +msgstr "Bình thÆ°á»ng" + +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 +msgid "Fire" +msgstr "" + +#: src/skins/ui_manager.c:124 +msgid "Vertical Lines" +msgstr "" + +#: src/skins/ui_manager.c:128 +msgid "Lines" +msgstr "" + +#: src/skins/ui_manager.c:129 +msgid "Bars" +msgstr "" + +#: src/skins/ui_manager.c:133 +msgid "Dot Scope" +msgstr "" + +#: src/skins/ui_manager.c:134 +msgid "Line Scope" +msgstr "" + +#: src/skins/ui_manager.c:135 +msgid "Solid Scope" +msgstr "" + +#: src/skins/ui_manager.c:141 +msgid "Ice" +msgstr "" + +#: src/skins/ui_manager.c:146 +msgid "Smooth" +msgstr "Mượt" + +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 +msgid "Slowest" +msgstr "Rất chậm" + +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 +msgid "Slow" +msgstr "Chậm" + +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 +msgid "Medium" +msgstr "Vừa phải" + +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 +msgid "Fast" +msgstr "Nhanh" + +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 +msgid "Fastest" +msgstr "Rất nhanh" + +#: src/skins/ui_manager.c:166 +msgid "Time Elapsed" +msgstr "" + +#: src/skins/ui_manager.c:167 +msgid "Time Remaining" +msgstr "" + +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "Tạm dừng" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "" + +#: src/skins/ui_manager.c:196 +msgid "Visualization" +msgstr "" + +#: src/skins/ui_manager.c:197 +msgid "Visualization Mode" +msgstr "" + +#: src/skins/ui_manager.c:198 +msgid "Analyzer Mode" +msgstr "" + +#: src/skins/ui_manager.c:199 +msgid "Scope Mode" +msgstr "" + +#: src/skins/ui_manager.c:200 +msgid "Voiceprint Mode" +msgstr "" + +#: src/skins/ui_manager.c:201 +msgid "WindowShade VU Mode" +msgstr "" + +#: src/skins/ui_manager.c:202 +msgid "Analyzer Falloff" +msgstr "" + +#: src/skins/ui_manager.c:203 +msgid "Peaks Falloff" +msgstr "" + +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "Danh sách" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 +msgid "Select Next Playlist" +msgstr "" + +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 +msgid "Select Previous Playlist" +msgstr "" + +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "Xóa danh sách" + +#: src/skins/ui_manager.c:222 +msgid "Import Playlist" +msgstr "Nhập danh sách" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "Nạp má»™t tập tin danh sách vào trong danh sách đã chá»n." + +#: src/skins/ui_manager.c:226 +msgid "Export Playlist" +msgstr "Xuất danh sách" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "" + +#: src/skins/ui_manager.c:229 +msgid "Refresh List" +msgstr "" + +#: src/skins/ui_manager.c:230 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "" + +#: src/skins/ui_manager.c:233 +msgid "Playlist Manager" +msgstr "" + +#: src/skins/ui_manager.c:234 +msgid "Queue Manager" +msgstr "" + +#: src/skins/ui_manager.c:237 +msgid "View" +msgstr "Hiển thị" + +#: src/skins/ui_manager.c:238 +msgid "Interface" +msgstr "Giao diện" + +#: src/skins/ui_manager.c:239 +msgid "Interface Preferences ..." +msgstr "Tùy chỉnh giao diện ..." + +#: src/skins/ui_manager.c:243 +msgid "Add Internet Address..." +msgstr "Thêm địa chỉ Internet..." + +#: src/skins/ui_manager.c:244 +msgid "Adds a remote track to the playlist." +msgstr "" + +#: src/skins/ui_manager.c:247 +msgid "Add Files..." +msgstr "Thêm tập tin..." + +#: src/skins/ui_manager.c:248 +msgid "Adds files to the playlist." +msgstr "Thêm tập tin vào danh sách." + +#: src/skins/ui_manager.c:253 +msgid "Search and Select" +msgstr "Tìm và lá»±a chá»n" + +#: src/skins/ui_manager.c:254 +msgid "" +"Searches the playlist and selects playlist entries based on specific " +"criteria." +msgstr "" + +#: src/skins/ui_manager.c:257 +msgid "Invert Selection" +msgstr "" + +#: src/skins/ui_manager.c:258 +msgid "Inverts the selected and unselected entries." +msgstr "" + +#: src/skins/ui_manager.c:261 +msgid "Select All" +msgstr "Chá»n hết" + +#: src/skins/ui_manager.c:262 +msgid "Selects all of the playlist entries." +msgstr "" + +#: src/skins/ui_manager.c:265 +msgid "Select None" +msgstr "" + +#: src/skins/ui_manager.c:266 +msgid "Deselects all of the playlist entries." +msgstr "" + +#: src/skins/ui_manager.c:271 +msgid "Remove All" +msgstr "Loại bá» hết" + +#: src/skins/ui_manager.c:272 +msgid "Removes all entries from the playlist." +msgstr "" + +#: src/skins/ui_manager.c:275 +msgid "Clear Queue" +msgstr "" + +#: src/skins/ui_manager.c:276 +msgid "Clears the queue associated with this playlist." +msgstr "" + +#: src/skins/ui_manager.c:279 +msgid "Remove Unavailable Files" +msgstr "" + +#: src/skins/ui_manager.c:280 +msgid "Removes unavailable files from the playlist." +msgstr "" + +#: src/skins/ui_manager.c:283 +msgid "Remove Duplicates" +msgstr "" + +#: src/skins/ui_manager.c:285 src/skins/ui_manager.c:317 +#: src/skins/ui_manager.c:347 +msgid "By Title" +msgstr "Theo tá»±a Ä‘á»" + +#: src/skins/ui_manager.c:286 +msgid "Removes duplicate entries from the playlist by title." +msgstr "" + +#: src/skins/ui_manager.c:289 src/skins/ui_manager.c:329 +#: src/skins/ui_manager.c:359 +msgid "By Filename" +msgstr "Theo tên tập tin" + +#: src/skins/ui_manager.c:290 +msgid "Removes duplicate entries from the playlist by filename." +msgstr "" + +#: src/skins/ui_manager.c:293 src/skins/ui_manager.c:333 +#: src/skins/ui_manager.c:363 +msgid "By Path + Filename" +msgstr "Theo Ä‘Æ°á»ng dẫn + Tên" + +#: src/skins/ui_manager.c:294 +msgid "Removes duplicate entries from the playlist by their full path." +msgstr "" + +#: src/skins/ui_manager.c:297 +msgid "Remove Unselected" +msgstr "" + +#: src/skins/ui_manager.c:298 +msgid "Remove unselected entries from the playlist." +msgstr "" + +#: src/skins/ui_manager.c:301 +msgid "Remove Selected" +msgstr "" + +#: src/skins/ui_manager.c:302 +msgid "Remove selected entries from the playlist." +msgstr "" + +#: src/skins/ui_manager.c:307 +msgid "Randomize List" +msgstr "" + +#: src/skins/ui_manager.c:308 +msgid "Randomizes the playlist." +msgstr "" + +#: src/skins/ui_manager.c:311 +msgid "Reverse List" +msgstr "Äảo danh sách" + +#: src/skins/ui_manager.c:312 +msgid "Reverses the playlist." +msgstr "Äảo ngược danh sách" + +#: src/skins/ui_manager.c:315 +msgid "Sort List" +msgstr "Sắp xếp danh sách" + +#: src/skins/ui_manager.c:318 src/skins/ui_manager.c:348 +msgid "Sorts the list by title." +msgstr "" + +#: src/skins/ui_manager.c:321 src/skins/ui_manager.c:351 +msgid "By Album" +msgstr "Theo album" + +#: src/skins/ui_manager.c:322 src/skins/ui_manager.c:352 +msgid "Sorts the list by album." +msgstr "" + +#: src/skins/ui_manager.c:325 src/skins/ui_manager.c:355 +msgid "By Artist" +msgstr "Theo nghệ sÄ©" + +#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +msgid "Sorts the list by artist." +msgstr "" + +#: src/skins/ui_manager.c:330 src/skins/ui_manager.c:360 +msgid "Sorts the list by filename." +msgstr "" + +#: src/skins/ui_manager.c:334 src/skins/ui_manager.c:364 +msgid "Sorts the list by full pathname." +msgstr "" + +#: src/skins/ui_manager.c:337 src/skins/ui_manager.c:367 +msgid "By Date" +msgstr "Theo ngày" + +#: src/skins/ui_manager.c:338 src/skins/ui_manager.c:368 +msgid "Sorts the list by modification time." +msgstr "" + +#: src/skins/ui_manager.c:341 src/skins/ui_manager.c:371 +msgid "By Track Number" +msgstr "" + +#: src/skins/ui_manager.c:342 src/skins/ui_manager.c:372 +msgid "Sorts the list by track number." +msgstr "" + +#: src/skins/ui_manager.c:345 +msgid "Sort Selected" +msgstr "" + +#: src/skins/ui_manager.c:381 +msgid "File" +msgstr "Tập tin" + +#: src/skins/ui_manager.c:384 +msgid "Plugin Services" +msgstr "" + +#: src/skins/ui_manager.c:386 src/skins/ui_manager.c:389 +msgid "View Track Details" +msgstr "" + +#: src/skins/ui_manager.c:387 src/skins/ui_manager.c:390 +msgid "View track details" +msgstr "" + +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:393 +msgid "About Audacious" +msgstr "" + +#: src/skins/ui_manager.c:395 +msgid "Play File" +msgstr "Phát tập tin" + +#: src/skins/ui_manager.c:396 +msgid "Load and play a file" +msgstr "" + +#: src/skins/ui_manager.c:398 +msgid "Play Location" +msgstr "" + +#: src/skins/ui_manager.c:399 +msgid "Play media from the selected location" +msgstr "" + +#: src/skins/ui_manager.c:401 +msgid "Plugin services" +msgstr "" + +#: src/skins/ui_manager.c:403 +msgid "Preferences" +msgstr "Tùy chỉnh" + +#: src/skins/ui_manager.c:404 +msgid "Open preferences window" +msgstr "" + +#: src/skins/ui_manager.c:407 +msgid "Quit Audacious" +msgstr "" + +#: src/skins/ui_manager.c:409 src/skins/ui_manager.c:410 +msgid "Set A-B" +msgstr "" + +#: src/skins/ui_manager.c:412 src/skins/ui_manager.c:413 +msgid "Clear A-B" +msgstr "" + +#: src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Jump to Playlist Start" +msgstr "" + +#: src/skins/ui_manager.c:421 src/skins/ui_manager.c:422 +msgid "Jump to Time" +msgstr "" + +#: src/skins/ui_manager.c:424 +msgid "Queue Toggle" +msgstr "" + +#: src/skins/ui_manager.c:425 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "" + +#: src/skins/ui_manager.c:428 +msgid "Copy" +msgstr "Chép" + +#: src/skins/ui_manager.c:430 +msgid "Cut" +msgstr "Cắt" + +#: src/skins/ui_manager.c:432 +msgid "Paste" +msgstr "Dán" + +#: src/skins/ui_manager.c:439 +msgid "Load" +msgstr "Nạp" + +#: src/skins/ui_manager.c:440 +msgid "Import" +msgstr "Nhập" + +#: src/skins/ui_manager.c:441 +msgid "Save" +msgstr "LÆ°u" + +#: src/skins/ui_manager.c:442 +msgid "Delete" +msgstr "Xóa" + +#: src/skins/ui_manager.c:444 src/skins/ui_manager.c:465 +#: src/skins/ui_manager.c:480 +msgid "Preset" +msgstr "Thiết lập" + +#: src/skins/ui_manager.c:445 +msgid "Load preset" +msgstr "Nạp thiết lập" + +#: src/skins/ui_manager.c:447 src/skins/ui_manager.c:468 +#: src/skins/ui_manager.c:483 +msgid "Auto-load preset" +msgstr "Thiết lập tá»± nạp" + +#: src/skins/ui_manager.c:448 +msgid "Load auto-load preset" +msgstr "Nạp thiết lập tá»± nạp" + +#: src/skins/ui_manager.c:451 +msgid "Load default preset into equalizer" +msgstr "Nạp thiết lập mặc định cho bá»™ cân chỉnh âm" + +#: src/skins/ui_manager.c:453 +msgid "Zero" +msgstr "Không" + +#: src/skins/ui_manager.c:454 +msgid "Set equalizer preset levels to zero" +msgstr "Äặt các mức thiết lập của bá»™ cân chỉnh âm vá» không" + +#: src/skins/ui_manager.c:456 +msgid "From file" +msgstr "Từ tập tin" + +#: src/skins/ui_manager.c:457 +msgid "Load preset from file" +msgstr "Nạp thiết lập từ tập tin" + +#: src/skins/ui_manager.c:459 +msgid "From WinAMP EQF file" +msgstr "Từ tập tin EQF của WinAMP" + +#: src/skins/ui_manager.c:460 +msgid "Load preset from WinAMP EQF file" +msgstr "Nạp thiết lập từ tập tin EQF của WinAMP" + +#: src/skins/ui_manager.c:462 +msgid "WinAMP Presets" +msgstr "Thiết lập WinAMP" + +#: src/skins/ui_manager.c:463 +msgid "Import WinAMP presets" +msgstr "Nhập thiết lập WinAMP" + +#: src/skins/ui_manager.c:466 +msgid "Save preset" +msgstr "LÆ°u thiết lập" + +#: src/skins/ui_manager.c:469 +msgid "Save auto-load preset" +msgstr "LÆ°u thiết lập tá»± nạp" + +#: src/skins/ui_manager.c:472 +msgid "Save default preset" +msgstr "LÆ°u thiết lập mặc định" + +#: src/skins/ui_manager.c:474 +msgid "To file" +msgstr "Vào tập tin" + +#: src/skins/ui_manager.c:475 +msgid "Save preset to file" +msgstr "LÆ°u thiết lập vào tập tin" + +#: src/skins/ui_manager.c:477 +msgid "To WinAMP EQF file" +msgstr "Vào tập tin EQF của WinAMP" + +#: src/skins/ui_manager.c:478 +msgid "Save preset to WinAMP EQF file" +msgstr "LÆ°u thiết lập vào tập tin EQF của WinAMP" + +#: src/skins/ui_manager.c:481 +msgid "Delete preset" +msgstr "Xóa thiết lập" + +#: src/skins/ui_manager.c:484 +msgid "Delete auto-load preset" +msgstr "Xóa thiết lập tá»± nạp" + +#: src/skins/ui_playlist.c:244 +msgid "Search entries in active playlist" +msgstr "Tìm trong danh sách Ä‘ang được kích hoạt" + +#: src/skins/ui_playlist.c:252 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular" +" expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" + +#: src/skins/ui_playlist.c:260 +msgid "Title: " +msgstr "Tá»±a Ä‘á»:" + +#: src/skins/ui_playlist.c:267 +msgid "Album: " +msgstr "Album: " + +#: src/skins/ui_playlist.c:274 +msgid "Artist: " +msgstr "Nghệ sÄ©:" + +#: src/skins/ui_playlist.c:281 +msgid "Filename: " +msgstr "Tên tập tin:" + +#: src/skins/ui_playlist.c:289 +msgid "Clear previous selection before searching" +msgstr "" + +#: src/skins/ui_playlist.c:292 +msgid "Automatically toggle queue for matching entries" +msgstr "" + +#: src/skins/ui_playlist.c:295 +msgid "Create a new playlist with matching entries" +msgstr "" + +#: src/skins/ui_playlist.c:762 +msgid "Audacious Playlist Editor" +msgstr "" + +#: src/skins/ui_playlist.c:809 +#, c-format +msgid "%s (%d of %d)" +msgstr "%s (%d trong số %d)" + +#: src/skins/ui_skinselector.c:162 +msgid "Archived Winamp 2.x skin" +msgstr "" + +#: src/skins/ui_skinselector.c:167 +msgid "Unarchived Winamp 2.x skin" +msgstr "" + +#: src/skins/util.c:773 +#, c-format +msgid "Could not create directory (%s): %s\n" +msgstr "" + +#: src/sndfile/plugin.c:454 +msgid "About sndfile plugin" +msgstr "" + +#: src/sndstretch/sndstretch_xmms.c:155 +msgid "About SndStretch" +msgstr "" + +#: src/sndstretch/sndstretch_xmms.c:308 +msgid "Volume corr." +msgstr "" + +#: src/sndstretch/sndstretch_xmms.c:309 +msgid "Short Overlap" +msgstr "" + +#: src/sndstretch/sndstretch_xmms.c:355 +msgid "Speed" +msgstr "Tốc Ä‘á»™" + +#: src/sndstretch/sndstretch_xmms.c:356 +msgid "Pitch" +msgstr "" + +#: src/sndstretch/sndstretch_xmms.c:357 +msgid "Scale" +msgstr "" + +#: src/sndstretch/sndstretch_xmms.c:377 +msgid "SndStretch - Configuration" +msgstr "" + +#: src/song_change/song_change.c:447 +msgid "Command to run when Audacious starts a new song." +msgstr "" + +#: src/song_change/song_change.c:449 src/song_change/song_change.c:455 +#: src/song_change/song_change.c:461 src/song_change/song_change.c:467 +msgid "Command:" +msgstr "" + +#: src/song_change/song_change.c:453 +msgid "Command to run toward the end of a song." +msgstr "" + +#: src/song_change/song_change.c:459 +msgid "Command to run when Audacious reaches the end of the playlist." +msgstr "" + +#: src/song_change/song_change.c:465 +msgid "" +"Command to run when title changes for a song (i.e. network streams titles)." +msgstr "" + +#: src/song_change/song_change.c:471 +msgid "" +"You can use the following format strings which\n" +"will be substituted before calling the command\n" +"(not all are useful for the end-of-playlist command).\n" +"\n" +"%F: Frequency (in hertz)\n" +"%c: Number of channels\n" +"%f: filename (full path)\n" +"%l: length (in milliseconds)\n" +"%n or %s: Song name\n" +"%r: Rate (in bits per second)\n" +"%t: Playlist position (%02d)\n" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" +msgstr "" + +#: src/song_change/song_change.c:498 +msgid "" +"Parameters passed to the shell should be encapsulated in " +"quotes. Doing otherwise is a security risk." +msgstr "" + +#: src/song_change/song_change.c:509 +msgid "Commands" +msgstr "Lệnh" + +#: src/song_change/song_change.c:539 +msgid "Song Change" +msgstr "Song Change" + +#: src/statusicon/statusicon.c:378 +msgid "About Status Icon Plugin" +msgstr "" + +#: src/statusicon/statusicon.c:379 +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager.\n" +msgstr "" + +#: src/statusicon/statusicon.c:447 +msgid "Status Icon Plugin - Preferences" +msgstr "" + +#: src/statusicon/statusicon.c:457 +msgid "Right-Click Menu" +msgstr "Trình Ä‘Æ¡n chuá»™t phải" + +#: src/statusicon/statusicon.c:462 +msgid "Small playback menu #1" +msgstr "" + +#: src/statusicon/statusicon.c:465 +msgid "Small playback menu #2" +msgstr "" + +#: src/statusicon/statusicon.c:481 +msgid "Mouse Scroll Action" +msgstr "" + +#: src/statusicon/statusicon.c:485 +msgid "Change volume" +msgstr "Thay đổi âm lượng" + +#: src/statusicon/statusicon.c:487 +msgid "Change playing song" +msgstr "" + +#: src/statusicon/statusicon.c:500 +msgid "Other settings" +msgstr "Thiết lập khác" + +#: src/statusicon/statusicon.c:505 +msgid "Disable the popup window" +msgstr "" + +#: src/statusicon/statusicon.c:512 +msgid "Close to the notification area (system tray)" +msgstr "" + +#: src/stereo_plugin/stereo.c:45 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin 1999." +msgstr "" + +#: src/stereo_plugin/stereo.c:64 +msgid "About Extra Stereo Plugin" +msgstr "" + +#: src/stereo_plugin/stereo.c:95 +msgid "Configure Extra Stereo" +msgstr "" + +#: src/streambrowser/gui/streambrowser_win.c:78 +msgid "Search:" +msgstr "Tìm:" + +#: src/streambrowser/gui/streambrowser_win.c:97 +#: src/streambrowser/gui/streambrowser_win.c:372 +msgid "Add Bookmark" +msgstr "" + +#: src/streambrowser/gui/streambrowser_win.c:324 +msgid "Stream name" +msgstr "" + +#: src/streambrowser/gui/streambrowser_win.c:331 +msgid "Now playing" +msgstr "" + +#: src/streambrowser/gui/streambrowser_win.c:369 +msgid "Remove Bookmark" +msgstr "" + +#: src/streambrowser/streambrowser.c:330 +msgid "About Stream Browser" +msgstr "" + +#: src/streambrowser/streambrowser.c:331 +msgid "" +"Copyright (c) 2008, by Calin Crisan and The Audacious Team.\n" +"\n" +"This is a simple stream browser that includes the most popular streaming directories.\n" +"Many thanks to the Streamtuner developers ,\n" +"\tand of course to the whole Audacious community.\n" +"\n" +"Also thank you Tony Vroon for mentoring & guiding me, again.\n" +"\n" +"This was a Google Summer of Code 2008 project." +msgstr "" + +#: src/tonegen/tonegen.c:48 +msgid "About Tone Generator" +msgstr "" + +#: src/tonegen/tonegen.c:50 +msgid "" +"Sinus tone generator by Haavard Kvaalen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" +msgstr "" + +#: src/tonegen/tonegen.c:100 +#, c-format +msgid "%s %.1f Hz" +msgstr "%s %.1f Hz" + +#: src/tonegen/tonegen.c:100 +msgid "Tone Generator: " +msgstr "" + +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" +msgstr "" + +#: src/vorbis/vorbis.c:572 +msgid "About Ogg Vorbis Audio Plugin" +msgstr "" + +#: src/vorbis/vorbis.c:577 +msgid "" +"Ogg Vorbis Plugin by the Xiph.org Foundation\n" +"\n" +"Original code by\n" +"Tony Arcieri \n" +"Contributions from\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visit the Xiph.org Foundation at http://www.xiph.org/\n" +msgstr "" + +#: src/vtx/about.c:14 +msgid "About Vortex Player" +msgstr "" + +#: src/vtx/about.c:15 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"\n" +"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" +"and other AY/YM music sites.\n" +"\n" +"Audacious implementation by Pavel Vymetalek " +msgstr "" + +#: src/wavpack/wavpack.c:353 +#, c-format +msgid "Wavpack Decoder Plugin %s" +msgstr "" + +#: src/wavpack/wavpack.c:354 +msgid "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan\n" +"Visit the Wavpack site at http://www.wavpack.com/\n" +msgstr "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Má»™t phần mã nguồn trình cắm do Miles Egan viết\n" +"Xem trang Wavpack tại http://www.wavpack.com/\n" + + diff -Nru audacious-plugins-2.4.4/po/zh_CN.po audacious-plugins-3.2/po/zh_CN.po --- audacious-plugins-2.4.4/po/zh_CN.po 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/po/zh_CN.po 2012-01-20 19:48:30.000000000 +0000 @@ -6,18 +6,19 @@ # msgid "" msgstr "" -"Project-Id-Version: Audacious-plugins 2.4\n" +"Project-Id-Version: Audacious-plugins\n" "Report-Msgid-Bugs-To: http://jira.atheme.org/\n" -"POT-Creation-Date: 2010-08-03 17:55-0400\n" -"PO-Revision-Date: 2010-07-18 01:47+0800\n" +"POT-Creation-Date: 2011-10-10 13:39-0400\n" +"PO-Revision-Date: 2011-10-16 18:53+0800\n" "Last-Translator: Chasye \n" "Language-Team: Chinese (simplified)\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: src/aac/libmp4.c:291 +#: src/aac/libmp4.c:256 #, c-format msgid "" "Using libfaad2-%s for decoding.\n" @@ -26,227 +27,21 @@ msgstr "" "正在使用libfaad2-%s进行解ç ã€‚\n" "FAAD2 AAC/HE-AAC/HE-AACv2/DRM解ç å™¨ (c) Nero AG, www.nero.com\n" -"版æƒæ‰€æœ‰ (c) 2005-2006 Audacious团队" +"版æƒæ‰€æœ‰ (c) 2005-2006 Audaciouså°ç»„" -#: src/aac/libmp4.c:296 +#: src/aac/libmp4.c:261 msgid "About MP4 AAC decoder plugin" msgstr "关于MP4 ACC解ç æ’件" -#: src/adplug/adplug-xmms.cc:153 -msgid "About " -msgstr "关于" - -#: src/adplug/adplug-xmms.cc:157 -msgid "" -"\n" -"Copyright (C) 2002, 2003 Simon Peter \n" -"\n" -"This plugin is released under the terms and conditions of the GNU LGPL.\n" -"See http://www.gnu.org/licenses/lgpl.html for details.\n" -"\n" -"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et " -"al.\n" -"Linked AdPlug library version: " -msgstr "" - -#: src/adplug/adplug-xmms.cc:234 -msgid "AdPlug :: Configuration" -msgstr "AdPlug :: 设置" - -#: src/adplug/adplug-xmms.cc:243 src/adplug/adplug-xmms.cc:504 -#: src/cdaudio-ng/configure.c:258 src/crystalizer/crystalizer.c:127 -#: src/echo_plugin/gui.c:122 src/jack/configure.c:146 src/null/null.c:109 -#: src/stereo_plugin/stereo.c:123 src/sun/configure.c:557 -msgid "Ok" -msgstr "确定" - -#: src/adplug/adplug-xmms.cc:253 src/alarm/interface.c:1398 -#: src/cdaudio-ng/configure.c:263 src/crystalizer/crystalizer.c:136 -#: src/echo_plugin/gui.c:130 src/jack/configure.c:153 -#: src/modplug/gui/interface.cxx:715 src/null/null.c:110 -#: src/stereo_plugin/stereo.c:132 src/sun/configure.c:565 -msgid "Cancel" -msgstr "å–消" - -#: src/adplug/adplug-xmms.cc:269 src/console/configure.c:154 -#: src/modplug/gui/interface.cxx:629 src/modplug/gui/interface.cxx:888 -msgid "General" -msgstr "常规" - -#: src/adplug/adplug-xmms.cc:281 -msgid "Sound quality" -msgstr "音质" - -#: src/adplug/adplug-xmms.cc:286 src/modplug/gui/interface.cxx:188 -msgid "Resolution" -msgstr "分辨率" - -#: src/adplug/adplug-xmms.cc:288 -msgid "8bit" -msgstr "" - -#: src/adplug/adplug-xmms.cc:293 -msgid "16bit" -msgstr "" - -#: src/adplug/adplug-xmms.cc:301 src/modplug/gui/interface.cxx:219 -msgid "Channels" -msgstr "声é“" - -#: src/adplug/adplug-xmms.cc:303 src/filewriter/mp3.c:934 -#: src/mpg123/mpg123.c:174 src/sid/xs_interface.c:301 -msgid "Mono" -msgstr "å•å£°é“" - -#: src/adplug/adplug-xmms.cc:308 src/filewriter/mp3.c:929 -#: src/modplug/gui/interface.cxx:205 src/mpg123/mpg123.c:174 -#: src/sid/xs_interface.c:308 -msgid "Stereo" -msgstr "立体音" - -#: src/adplug/adplug-xmms.cc:312 -msgid "" -"Setting stereo is not recommended, unless you need to. This won't add any " -"stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!" -msgstr "" -"设置为立体音是ä¸æŽ¨èçš„åšæ³•ï¼Œé™¤éžä½ çŸ¥é“自己在åšä»€ä¹ˆã€‚此选项ä¸ä¼šå¸¦æ¥ä»»ä½•ç«‹ä½“音" -"效果(OPL2åªèƒ½æ˜¯å•å£°é“的),相ååªä¼šå ç”¨æ›´å¤šçš„CPU!" - -#: src/adplug/adplug-xmms.cc:320 -msgid "Frequency" -msgstr "频率" - -#: src/adplug/adplug-xmms.cc:356 src/adplug/adplug-xmms.cc:560 -#: src/console/configure.c:156 src/gtkui/ui_manager.c:64 -#: src/skins/ui_manager.c:165 -msgid "Playback" -msgstr "回放" - -#: src/adplug/adplug-xmms.cc:360 -msgid "Detect songend" -msgstr "检测歌曲结尾" - -#: src/adplug/adplug-xmms.cc:364 -msgid "" -"If enabled, XMMS will detect a song's ending, stop it and advance in the " -"playlist. If disabled, XMMS won't take notice of a song's ending and loop it " -"all over again and again." -msgstr "" -"如果å¯ç”¨ï¼ŒXMMSå°†å°è¯•æµ‹è¯•æ­Œæ›²çš„结尾,并在结æŸæ—¶ï¼Œè‡ªåŠ¨æ’­æ”¾åˆ—表中的下一首歌" -"曲。\n" -"如果ç¦ç”¨ï¼ŒXMMS将无法得知歌曲是å¦åˆ°è¾¾ç»“尾而ä¸æ–­é‡å¤æ’­æ”¾åŒä¸€é¦–歌曲。" - -#: src/adplug/adplug-xmms.cc:375 -msgid "Formats" -msgstr "æ ¼å¼" - -#: src/adplug/adplug-xmms.cc:382 -msgid "Format selection" -msgstr "æ ¼å¼é€‰é¡¹" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Format" -msgstr "æ ¼å¼" - -#: src/adplug/adplug-xmms.cc:385 -msgid "Extension" -msgstr "åŽç¼€" - -#: src/adplug/adplug-xmms.cc:425 -msgid "" -"Selected file types will be recognized and played back by this plugin. " -"Deselected types will be ignored to make room for other plugins to play " -"these files." -msgstr "" -"被选中文件类型会被识别并被此æ’件播放。\n" -"未选中的,则会被忽略并由其它æ’件播放" - -#: src/adplug/adplug-xmms.cc:511 -msgid "AdPlug :: File Info" -msgstr "AdPlug :: 文件信æ¯" - -#: src/adplug/adplug-xmms.cc:533 src/amidi-plug/i_configure-fluidsynth.c:348 -msgid "Filename" -msgstr "文件å" - -#: src/adplug/adplug-xmms.cc:537 src/skins/ui_playlist.c:390 -msgid "Title: " -msgstr "标题:" - -#: src/adplug/adplug-xmms.cc:538 -msgid "Author: " -msgstr "作者:" - -#: src/adplug/adplug-xmms.cc:539 -msgid "File Type: " -msgstr "文件类型:" - -#: src/adplug/adplug-xmms.cc:540 -msgid "Subsongs: " -msgstr "å­æ­Œæ›²ï¼š" - -#: src/adplug/adplug-xmms.cc:541 -msgid "Instruments: " -msgstr "ä¹å™¨ï¼š" - -#: src/adplug/adplug-xmms.cc:546 -msgid "Orders: " -msgstr "顺åºï¼š" - -#: src/adplug/adplug-xmms.cc:547 -msgid "Patterns: " -msgstr "模å¼ï¼š" - -#: src/adplug/adplug-xmms.cc:551 -msgid "Song" -msgstr "歌曲" - -#: src/adplug/adplug-xmms.cc:577 -msgid "Instrument name" -msgstr "ä¹å™¨å" - -#: src/adplug/adplug-xmms.cc:619 -msgid "Song message" -msgstr "歌曲信æ¯" - -#: src/adplug/adplug-xmms.cc:641 -msgid "Subsong selection" -msgstr "å­æ­Œæ›²é€‰é¡¹" - -#: src/adplug/adplug-xmms.cc:707 -msgid "Order: " -msgstr "顺åºï¼š" - -#: src/adplug/adplug-xmms.cc:708 -msgid "Pattern: " -msgstr "模å¼ï¼š" - -#: src/adplug/adplug-xmms.cc:710 -msgid "Row: " -msgstr "行:" - -#: src/adplug/adplug-xmms.cc:711 -msgid "Speed: " -msgstr "速度:" - -#: src/adplug/adplug-xmms.cc:712 -msgid "Timer: " -msgstr "计时:" - -#: src/adplug/adplug-xmms.cc:713 src/console/configure.c:234 -#: src/sid/xs_interface.c:354 -msgid "Hz" -msgstr "" - -#: src/alarm/interface.c:34 +#: src/alarm/interface.c:33 msgid "About XMMS Alarm" msgstr "关于XMMS闹钟" -#: src/alarm/interface.c:47 +#: src/alarm/interface.c:40 msgid "XMMS Alarm" msgstr "XMMS闹钟" -#: src/alarm/interface.c:56 +#: src/alarm/interface.c:49 msgid "" "An XMMS plugin which can be used\n" "to start playing at a certain time.\n" @@ -259,44 +54,37 @@ msgstr "" "用于在设定时间å¯åŠ¨æ’­æ”¾çš„XMMSæ’件\n" "\n" -"有问题,请找:\n" +"问题å馈:\n" "Adam Feakin \n" "Daniel Stodden \n" "\n" "http://www.snika.uklinux.net/xmms-alarm/" -#: src/alarm/interface.c:71 src/bluetooth/scan_gui.c:149 src/lirc/about.c:115 -#: src/modplug/gui/interface.cxx:972 src/sid/xs_about.c:214 -#: src/sid/xs_interface.c:1825 +#: src/alarm/interface.c:64 msgid "Close" msgstr "关闭" -#: src/alarm/interface.c:101 +#: src/alarm/interface.c:94 msgid "Alarm" msgstr "闹钟" -#: src/alarm/interface.c:109 +#: src/alarm/interface.c:101 msgid "This is your wakeup call." -msgstr "此起床闹钟" +msgstr "此为起床闹钟" -#: src/alarm/interface.c:124 src/alarm/interface.c:1389 -#: src/modplug/gui/interface.cxx:703 src/sid/xs_config.c:322 +#: src/alarm/interface.c:116 src/alarm/interface.c:1337 msgid "OK" msgstr "确定" -#: src/alarm/interface.c:152 -msgid "Select Playlist" -msgstr "选择播放列表" - -#: src/alarm/interface.c:196 +#: src/alarm/interface.c:150 msgid "Sorry" msgstr "抱歉" -#: src/alarm/interface.c:204 +#: src/alarm/interface.c:157 msgid "Warning" msgstr "警告" -#: src/alarm/interface.c:213 +#: src/alarm/interface.c:166 msgid "" "For safety reasons the \"quiet\" time must be at least 65 seconds longer " "than the fading time, it must also be more than 10 seconds. This basically " @@ -308,155 +96,156 @@ "--\n" "Adam" msgstr "" +"鉴于安全ç†ç”±ï¼Œ\"é™éŸ³\"时间至少è¦æ¯”æ¸é€€æ—¶é—´é•¿65秒,其本身亦至少大于10秒。\n" +"这基本上是代ç çš„问题,åŒæ—¶åœ¨æˆ‘找到解决方法å‰æ­¤ä¿¡æ¯è¿˜ä¼šå‡ºçŽ°çš„ :)\n" +"\n" +"ä½ çš„æ¸é€€è®¾ç½®æœªä¿å­˜\n" +"\n" +"--\n" +"Adam" -#: src/alarm/interface.c:229 +#: src/alarm/interface.c:182 msgid "Oh Well" msgstr "ä¸é”™å˜›" -#: src/alarm/interface.c:388 +#: src/alarm/interface.c:338 msgid "Alarm Settings" msgstr "闹钟设置" -#: src/alarm/interface.c:404 src/alarm/interface.c:576 -#: src/alarm/interface.c:948 +#: src/alarm/interface.c:353 src/alarm/interface.c:525 +#: src/alarm/interface.c:897 msgid "Time" msgstr "时间" -#: src/alarm/interface.c:445 +#: src/alarm/interface.c:394 msgid "hours" msgstr "å°æ—¶" -#: src/alarm/interface.c:506 +#: src/alarm/interface.c:455 msgid "h" msgstr "点" -#: src/alarm/interface.c:536 +#: src/alarm/interface.c:485 msgid "minutes" msgstr "分" -#: src/alarm/interface.c:554 +#: src/alarm/interface.c:503 msgid "Quiet after:" msgstr "é™éŸ³æ—¶é—´ï¼š" -#: src/alarm/interface.c:564 +#: src/alarm/interface.c:513 msgid "Alarm at (default):" msgstr "å“闹钟(默认):" -#: src/alarm/interface.c:584 +#: src/alarm/interface.c:533 msgid "Choose the days for the alarm to come on" msgstr "选择å“闹钟的日期" -#: src/alarm/interface.c:612 src/alarm/interface.c:660 -#: src/alarm/interface.c:708 src/alarm/interface.c:756 -#: src/alarm/interface.c:804 src/alarm/interface.c:852 -#: src/alarm/interface.c:900 src/OSS/configure.c:166 -#: src/skins/ui_manager.c:439 src/skins/ui_manager.c:460 +#: src/alarm/interface.c:561 src/alarm/interface.c:609 +#: src/alarm/interface.c:657 src/alarm/interface.c:705 +#: src/alarm/interface.c:753 src/alarm/interface.c:801 +#: src/alarm/interface.c:849 src/OSS/configure.c:153 +#: src/skins/ui_manager.c:450 src/skins/ui_manager.c:471 msgid "Default" msgstr "默认" -#: src/alarm/interface.c:938 +#: src/alarm/interface.c:887 msgid "Day" msgstr "日期" -#: src/alarm/interface.c:958 +#: src/alarm/interface.c:907 msgid "Tuesday" msgstr "週二" -#: src/alarm/interface.c:969 +#: src/alarm/interface.c:918 msgid "Wednesday" msgstr "週三" -#: src/alarm/interface.c:980 +#: src/alarm/interface.c:929 msgid "Thursday" msgstr "週四" -#: src/alarm/interface.c:991 +#: src/alarm/interface.c:940 msgid "Friday" msgstr "週五" -#: src/alarm/interface.c:1002 +#: src/alarm/interface.c:951 msgid "Saturday" msgstr "週末" -#: src/alarm/interface.c:1013 +#: src/alarm/interface.c:962 msgid "Sunday" msgstr "週日" -#: src/alarm/interface.c:1023 +#: src/alarm/interface.c:972 msgid "Monday" msgstr "週一" -#: src/alarm/interface.c:1034 +#: src/alarm/interface.c:983 msgid "Days" msgstr "日期" -#: src/alarm/interface.c:1050 +#: src/alarm/interface.c:999 msgid "Fading" msgstr "æ¸é€€" -#: src/alarm/interface.c:1087 src/sid/xs_interface.c:921 -#: src/sid/xs_interface.c:975 src/sid/xs_interface.c:1155 +#: src/alarm/interface.c:1036 msgid "seconds" msgstr "秒" -#: src/alarm/interface.c:1095 src/alarm/interface.c:1211 -#: src/modplug/gui/interface.cxx:550 +#: src/alarm/interface.c:1044 src/alarm/interface.c:1159 msgid "Volume" msgstr "音é‡" -#: src/alarm/interface.c:1121 +#: src/alarm/interface.c:1070 msgid "Current" msgstr "当å‰" -#: src/alarm/interface.c:1128 -msgid "reset to current output volume" -msgstr "é‡ç½®å½“å‰éŸ³é‡" - -#: src/alarm/interface.c:1130 +#: src/alarm/interface.c:1078 msgid "Start at" msgstr "开始于" -#: src/alarm/interface.c:1158 src/alarm/interface.c:1202 +#: src/alarm/interface.c:1106 src/alarm/interface.c:1150 msgid "%" msgstr "%" -#: src/alarm/interface.c:1174 +#: src/alarm/interface.c:1122 msgid "Final" msgstr "完æˆäºŽ" -#: src/alarm/interface.c:1227 +#: src/alarm/interface.c:1175 msgid "Additional Command" msgstr "附加指令" -#: src/alarm/interface.c:1253 +#: src/alarm/interface.c:1201 msgid "enable" msgstr "å¯ç”¨" -#: src/alarm/interface.c:1261 +#: src/alarm/interface.c:1209 msgid "Playlist (optional)" msgstr "播放列表(å¯é€‰)" -#: src/alarm/interface.c:1287 +#: src/alarm/interface.c:1235 msgid "Browse..." msgstr "æµè§ˆ..." -#: src/alarm/interface.c:1295 src/alarm/interface.c:1460 +#: src/alarm/interface.c:1243 src/alarm/interface.c:1407 msgid "Reminder" msgstr "æ醒器" -#: src/alarm/interface.c:1312 +#: src/alarm/interface.c:1260 msgid "Use reminder" msgstr "使用æ醒器" -#: src/alarm/interface.c:1328 src/sndstretch/sndstretch_xmms.c:394 +#: src/alarm/interface.c:1276 src/sndstretch/sndstretch_xmms.c:358 msgid "Options" msgstr "选项" -#: src/alarm/interface.c:1336 +#: src/alarm/interface.c:1284 msgid "What do these options mean?" -msgstr "此选项什么æ„æ€ï¼Ÿ" +msgstr "这些选项有什么用?" -#: src/alarm/interface.c:1364 +#: src/alarm/interface.c:1312 msgid "" "\n" "Time\n" @@ -555,24 +344,29 @@ " 当闹钟åœæ­¢åŽæ˜¾ç¤ºæ醒器,\n" " 如果你想显示æ醒器,输出è¦ç”¨çš„æ醒器并打开相应的开关按钮\n" -#: src/alarm/interface.c:1366 src/gtkui/ui_manager.c:165 -#: src/skins/ui_manager.c:371 +#: src/alarm/interface.c:1314 src/skins/ui_manager.c:382 msgid "Help" msgstr "帮助" -#: src/alarm/interface.c:1468 +#: src/alarm/interface.c:1346 src/cdaudio-ng/configure.c:249 +#: src/crystalizer/crystalizer.c:130 src/echo_plugin/gui.c:125 +#: src/jack/configure.c:148 src/null/null.c:108 src/stereo_plugin/stereo.c:125 +msgid "Cancel" +msgstr "å–消" + +#: src/alarm/interface.c:1414 msgid "Your reminder for today is.." -msgstr "你今天的æ醒器是" +msgstr "你今天的æ醒器是.." -#: src/alarm/interface.c:1493 +#: src/alarm/interface.c:1439 msgid "Thankyou" msgstr "谢谢" -#: src/alsa/config.c:209 +#: src/alsa/config.c:210 msgid "Default PCM device" msgstr "默认PCM设备" -#: src/alsa/config.c:234 +#: src/alsa/config.c:235 msgid "Default mixer device" msgstr "默认混音设备" @@ -582,9 +376,9 @@ #: src/alsa/config.c:445 msgid "PCM device:" -msgstr "PCM设备" +msgstr "PCM设备:" -#: src/alsa/config.c:447 src/OSS/configure.c:256 src/sun/configure.c:218 +#: src/alsa/config.c:447 src/OSS/configure.c:237 msgid "Mixer device:" msgstr "混音设备" @@ -596,15 +390,15 @@ msgid "Work around drain hangup" msgstr "" -#: src/alsa/plugin.c:61 +#: src/alsa/plugin.c:59 msgid "About ALSA Output Plugin" msgstr "关于ALSA输出æ’件" -#: src/alsa/plugin.c:83 +#: src/alsa/plugin.c:81 msgid "ALSA error" msgstr "ALSA错误" -#: src/amidi-plug/amidi-plug.c:323 +#: src/amidi-plug/amidi-plug.c:335 msgid "" "You have not selected any sequencer ports for MIDI playback. You can do so " "in the MIDI plugin preferences." @@ -625,12 +419,18 @@ "hardware synth will be directly played.\n" "Backend written by Giacomo Lozito." msgstr "" +"æ­¤åŽç«¯å°†å‘é€MIDI事件到用户选中的ALSAåˆæˆå™¨ç«¯å£ã€‚ALSAåˆæˆå™¨æŽ¥å£æ˜¯ç›¸å½“多用途" +"的,它å¯ä»¥ä½¿ç”¨å£°å¡ä¸Šçš„硬件åˆæˆå™¨(如:emu10k1),åŒæ—¶äº¦å¯ä»¥ä½¿ç”¨è½¯åˆæˆå™¨ï¼Œå¤–置设" +"备等。\n" +"æ­¤åŽç«¯å¹¶ä¸ç”ŸæˆéŸ³é¢‘,MIDI事件会直接由ALSA端å£åŽé¢çš„设备或程åºå¤„ç†ã€‚å‡å¦‚,MIDI" +"事件å‘é€åˆ°ç¡¬ä»¶åˆæˆå™¨ä¼šè¢«ç›´æŽ¥æ’­æ”¾ã€‚\n" +"作者:Giacomo Lozito." -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:41 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 msgid "FluidSynth Backend " msgstr "FluidSynthåŽç«¯" -#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:43 +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 msgid "" "This backend produces audio by sending MIDI events to FluidSynth, a real-" "time software synthesizer based on the SoundFont2 specification (www." @@ -639,370 +439,210 @@ "by chosen ouput plugin.\n" "Backend written by Giacomo Lozito." msgstr "" +"æ­¤åŽç«¯é€šè¿‡æŠŠMIDI事件å‘é€åˆ°FluidSynth生æˆéŸ³é¢‘,FluidSynth是符åˆSoundFont2标准" +"的实时软件åˆæˆå™¨(www.fluidsynth.org).\n" +"音频将由播放器效果æ’件生æˆå¹¶ç”±é€‰ä¸­çš„输出æ’件播放。\n" +"作者:Giacomo Lozito." -#: src/amidi-plug/i_configure-alsa.c:221 +#: src/amidi-plug/i_configure-alsa.c:228 msgid "ALSA BACKEND CONFIGURATION" msgstr "ALSAåŽç«¯è®¾ç½®" -#: src/amidi-plug/i_configure-alsa.c:326 +#: src/amidi-plug/i_configure-alsa.c:331 msgid "Port" msgstr "端å£" -#: src/amidi-plug/i_configure-alsa.c:328 +#: src/amidi-plug/i_configure-alsa.c:333 msgid "Client name" msgstr "客户端å" -#: src/amidi-plug/i_configure-alsa.c:330 +#: src/amidi-plug/i_configure-alsa.c:335 msgid "Port name" msgstr "端å£å" -#: src/amidi-plug/i_configure-alsa.c:341 +#: src/amidi-plug/i_configure-alsa.c:346 msgid "ALSA output ports" msgstr "ALSA输出端å£" -#: src/amidi-plug/i_configure-alsa.c:394 +#: src/amidi-plug/i_configure-alsa.c:399 msgid "Soundcard: " msgstr "声å¡ï¼š" -#: src/amidi-plug/i_configure-alsa.c:396 +#: src/amidi-plug/i_configure-alsa.c:401 msgid "Mixer control: " -msgstr "混音控制:" +msgstr "混音控制器:" -#: src/amidi-plug/i_configure-alsa.c:408 +#: src/amidi-plug/i_configure-alsa.c:413 msgid "Mixer settings" msgstr "混音器设置" -#: src/amidi-plug/i_configure-alsa.c:421 -msgid "" -"* Select ALSA output ports *\n" -"MIDI events will be sent to the ports selected here. In example, if your " -"audio card provides a hardware synth and you want to play MIDI with it, " -"you'll probably want to select the wavetable synthesizer ports." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:426 -msgid "" -"* Select ALSA mixer card *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volumeslider will " -"manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:433 -msgid "" -"* Select ALSA mixer control *\n" -"The ALSA backend outputs directly through ALSA, it doesn't use effect and " -"ouput plugins from the player. During playback, the player volume slider " -"will manipulate the mixer control you select here. If you're using wavetable " -"synthesizer ports, you'll probably want to select the Synth control here." -msgstr "" - -#: src/amidi-plug/i_configure-alsa.c:444 +#: src/amidi-plug/i_configure-alsa.c:429 msgid "ALSA Backend not loaded or not available" msgstr "ALSAåŽç«¯æœªèƒ½åŠ è½½æˆ–者ä¸å¯ç”¨" -#: src/amidi-plug/i_configure-alsa.c:463 +#: src/amidi-plug/i_configure-alsa.c:448 msgid "" "ALSA\n" "backend" msgstr "ALSAåŽç«¯" -#: src/amidi-plug/i_configure-ap.c:56 +#: src/amidi-plug/i_configure-ap.c:59 msgid "AMIDI-Plug - backend information" msgstr "AMIDI-Plug - åŽç«¯ä¿¡æ¯" -#: src/amidi-plug/i_configure-ap.c:194 +#: src/amidi-plug/i_configure-ap.c:196 msgid "AMIDI-PLUG PREFERENCES" msgstr "AMIDI-PLUG首选项" -#: src/amidi-plug/i_configure-ap.c:221 +#: src/amidi-plug/i_configure-ap.c:223 msgid "Backend selection" msgstr "选择åŽç«¯" -#: src/amidi-plug/i_configure-ap.c:225 +#: src/amidi-plug/i_configure-ap.c:227 msgid "Available backends" msgstr "å¯ç”¨åŽç«¯" -#: src/amidi-plug/i_configure-ap.c:255 +#: src/amidi-plug/i_configure-ap.c:257 msgid "Playback settings" msgstr "回放设置" -#: src/amidi-plug/i_configure-ap.c:260 +#: src/amidi-plug/i_configure-ap.c:262 msgid "Transpose: " msgstr "" -#: src/amidi-plug/i_configure-ap.c:269 +#: src/amidi-plug/i_configure-ap.c:271 msgid "Drum shift: " msgstr "" -#: src/amidi-plug/i_configure-ap.c:287 +#: src/amidi-plug/i_configure-ap.c:289 msgid "Advanced settings" msgstr "高级选项" -#: src/amidi-plug/i_configure-ap.c:291 +#: src/amidi-plug/i_configure-ap.c:293 msgid "pre-calculate length of MIDI files in playlist" msgstr "预先计算在播放列表中的MIDI文件长度" -#: src/amidi-plug/i_configure-ap.c:296 +#: src/amidi-plug/i_configure-ap.c:298 msgid "extract comments from MIDI file (if available)" msgstr "如果å¯ç”¨ï¼Œä»ŽMIDI文件释放备注" -#: src/amidi-plug/i_configure-ap.c:301 +#: src/amidi-plug/i_configure-ap.c:303 msgid "extract lyrics from MIDI file (if available)" msgstr "如果å¯ç”¨ï¼Œä»ŽMIDI文件释放歌è¯" -#: src/amidi-plug/i_configure-ap.c:320 -msgid "" -"* Backend selection *\n" -"AMIDI-Plug works with backends, in a modular fashion; here you should select " -"your backend; that is, the way MIDI events are going to be handled and " -"played.\n" -"If you have a hardware synthesizer on your audio card, and ALSA supports it, " -"you'll want to use the ALSA backend. It can also be used with anything that " -"provides an interface to the ALSA sequencer, including software synths or " -"external devices.\n" -"If you want to rely on a software synthesizer and/or want to pipe audio into " -"effect and output plugins of the player you'll want to use the good " -"FluidSynth backend.\n" -"Press the info button to read specific information about each backend." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:331 -msgid "" -"* Transpose function *\n" -"This option allows you to play the midi file transposed in a different key, " -"by shifting of the desired number of semitones all its notes (excepting " -"those on midi channel 10, reserved for percussions). Especially useful if " -"you wish to sing or play along with another instrument." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:337 -msgid "" -"* Drumshift function *\n" -"This option allows you to shift notes on midi channel 10 (the standard " -"percussions channel) of the desired number of semitones. This results in " -"different drumset and percussions being used during midi playback, so if you " -"wish to enhance (or reduce, or alter) percussion sounds, try to play with " -"this value." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:344 -msgid "" -"* Pre-calculate MIDI length *\n" -"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as " -"soon as the player requests it, instead of doing that only when the MIDI " -"file is being played. In example, MIDI length will be calculated straight " -"after adding MIDI files in a playlist. Disable this option if you want " -"faster playlist loading (when a lot of MIDI files are added), enable it to " -"display more information in the playlist straight after loading." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:353 -msgid "" -"* Extract comments from MIDI files *\n" -"Some MIDI files contain text comments (author, copyright, instrument notes, " -"etc.). If this option is enabled, AMIDI-Plug will extract and display " -"comments (if available) in the file information dialog." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:358 -msgid "" -"* Extract lyrics from MIDI files *\n" -"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug " -"will extract and display song lyrics (if available) in the file information " -"dialog." -msgstr "" - -#: src/amidi-plug/i_configure-ap.c:375 +#: src/amidi-plug/i_configure-ap.c:333 msgid "" "AMIDI\n" "Plug" msgstr "" -#: src/amidi-plug/i_configure.c:73 +#: src/amidi-plug/i_configure.c:76 msgid "AMIDI-Plug - select file" msgstr "AMIDI-Plug - 选择文件" -#: src/amidi-plug/i_configure.c:126 +#: src/amidi-plug/i_configure.c:129 msgid "AMIDI-Plug - configuration" msgstr "AMIDI-Plug - 设置" -#: src/amidi-plug/i_configure-fluidsynth.c:52 +#: src/amidi-plug/i_configure-fluidsynth.c:55 msgid "AMIDI-Plug - select SoundFont file" msgstr "AMIDI-Plug - 选择SoundFont文件" -#: src/amidi-plug/i_configure-fluidsynth.c:268 +#: src/amidi-plug/i_configure-fluidsynth.c:270 msgid "FLUIDSYNTH BACKEND CONFIGURATION" msgstr "FLUIDSYNTHåŽç«¯è®¾ç½®" -#: src/amidi-plug/i_configure-fluidsynth.c:316 +#: src/amidi-plug/i_configure-fluidsynth.c:313 msgid "SoundFont settings" msgstr "SoundFont设置" -#: src/amidi-plug/i_configure-fluidsynth.c:352 +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "文件å" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 msgid "Size (bytes)" msgstr "大å°(bytes)" -#: src/amidi-plug/i_configure-fluidsynth.c:401 +#: src/amidi-plug/i_configure-fluidsynth.c:398 msgid "Load SF on player start" msgstr "播放器å¯åŠ¨æ—¶åŠ è½½SF" -#: src/amidi-plug/i_configure-fluidsynth.c:405 +#: src/amidi-plug/i_configure-fluidsynth.c:402 msgid "Load SF on first midifile play" msgstr "在播放第一个midi文件时加载" -#: src/amidi-plug/i_configure-fluidsynth.c:420 +#: src/amidi-plug/i_configure-fluidsynth.c:417 msgid "Synthesizer settings" msgstr "åˆæˆå™¨è®¾ç½®" -#: src/amidi-plug/i_configure-fluidsynth.c:429 +#: src/amidi-plug/i_configure-fluidsynth.c:426 msgid "gain" msgstr "增益" -#: src/amidi-plug/i_configure-fluidsynth.c:435 -#: src/amidi-plug/i_configure-fluidsynth.c:463 -#: src/amidi-plug/i_configure-fluidsynth.c:491 -#: src/amidi-plug/i_configure-fluidsynth.c:522 +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 msgid "use default" msgstr "使用默认设置" -#: src/amidi-plug/i_configure-fluidsynth.c:438 -#: src/amidi-plug/i_configure-fluidsynth.c:466 +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 msgid "value:" msgstr "值:" -#: src/amidi-plug/i_configure-fluidsynth.c:457 +#: src/amidi-plug/i_configure-fluidsynth.c:454 msgid "poliphony" -msgstr "" +msgstr "å¤éŸ³" -#: src/amidi-plug/i_configure-fluidsynth.c:485 +#: src/amidi-plug/i_configure-fluidsynth.c:482 msgid "reverb" -msgstr "" +msgstr "回音" -#: src/amidi-plug/i_configure-fluidsynth.c:494 -#: src/amidi-plug/i_configure-fluidsynth.c:525 +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 msgid "yes" msgstr "是" -#: src/amidi-plug/i_configure-fluidsynth.c:496 -#: src/amidi-plug/i_configure-fluidsynth.c:527 +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 msgid "no" msgstr "å¦" -#: src/amidi-plug/i_configure-fluidsynth.c:516 +#: src/amidi-plug/i_configure-fluidsynth.c:513 msgid "chorus" -msgstr "" +msgstr "åˆå”±" -#: src/amidi-plug/i_configure-fluidsynth.c:547 +#: src/amidi-plug/i_configure-fluidsynth.c:544 msgid "sample rate" msgstr "å–样率" -#: src/amidi-plug/i_configure-fluidsynth.c:553 +#: src/amidi-plug/i_configure-fluidsynth.c:550 msgid "22050 Hz " msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:556 +#: src/amidi-plug/i_configure-fluidsynth.c:553 msgid "44100 Hz " msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:559 +#: src/amidi-plug/i_configure-fluidsynth.c:556 msgid "96000 Hz " msgstr "" -#: src/amidi-plug/i_configure-fluidsynth.c:562 +#: src/amidi-plug/i_configure-fluidsynth.c:559 msgid "custom " -msgstr "定制" +msgstr "自定" -#: src/amidi-plug/i_configure-fluidsynth.c:571 +#: src/amidi-plug/i_configure-fluidsynth.c:568 msgid "Hz " msgstr "" #: src/amidi-plug/i_configure-fluidsynth.c:621 -msgid "" -"* Select SoundFont files *\n" -"In order to play MIDI with FluidSynth, you need to specify at least one " -"valid SoundFont file here (use absolute paths). The loading order is from " -"the top (first) to the bottom (last)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:626 -msgid "" -"* Load SoundFont on player start *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:634 -msgid "" -"* Load SoundFont on first midifile play *\n" -"Depending on your system speed, SoundFont loading in FluidSynth will require " -"up to a few seconds. This is a one-time task (the soundfont will stay loaded " -"until it is changed or the backend is unloaded) that can be done at player " -"start, or before the first MIDI file is played (the latter is a better " -"choice if you don't use your player to listen MIDI files only)." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:642 -msgid "" -"* Synthesizer gain *\n" -"From FluidSynth docs: the gain is applied to the final or master output of " -"the synthesizer; it is set to a low value by default to avoid the saturation " -"of the output when random MIDI files are played." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:647 -msgid "" -"* Synthesizer polyphony *\n" -"From FluidSynth docs: the polyphony defines how many voices can be played in " -"parallel; the number of voices is not necessarily equivalent to the number " -"of notes played simultaneously; indeed, when a note is struck on a specific " -"MIDI channel, the preset on that channel may create several voices, for " -"example, one for the left audio channel and one for the right audio " -"channels; the number of voices activated depends on the number of instrument " -"zones that fall in the correspond to the velocity and key of the played note." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:657 -#: src/amidi-plug/i_configure-fluidsynth.c:663 -msgid "" -"* Synthesizer reverb *\n" -"From FluidSynth docs: when set to \"yes\" the reverb effects module is " -"activated; note that when the reverb module is active, the amount of signal " -"sent to the reverb module depends on the \"reverb send\" generator defined " -"in the SoundFont." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:669 -#: src/amidi-plug/i_configure-fluidsynth.c:675 -msgid "" -"* Synthesizer chorus *\n" -"From FluidSynth docs: when set to \"yes\" the chorus effects module is " -"activated; note that when the chorus module is active, the amount of signal " -"sent to the chorus module depends on the \"chorus send\" generator defined " -"in the SoundFont." -msgstr "" - -#: src/amidi-plug/i_configure-fluidsynth.c:681 -#: src/amidi-plug/i_configure-fluidsynth.c:685 -#: src/amidi-plug/i_configure-fluidsynth.c:689 -#: src/amidi-plug/i_configure-fluidsynth.c:693 -msgid "" -"* Synthesizer samplerate *\n" -"The sample rate of the audio generated by the synthesizer. You can also " -"specify a custom value in the interval 22050Hz-96000Hz." -msgstr "" -"* åˆæˆå™¨å–样率 *\n" -"此为åˆæˆå™¨ç”Ÿæˆçš„音频å–样率,你å¯ä»¥å®šåˆ¶ä¸€ä¸ªèŒƒå›´åœ¨(22050Hz-96000Hz)的值。" - -#: src/amidi-plug/i_configure-fluidsynth.c:701 msgid "FluidSynth Backend not loaded or not available" msgstr "FluidSynthåŽç«¯æœªèƒ½åŠ è½½æˆ–者ä¸å¯ç”¨" -#: src/amidi-plug/i_configure-fluidsynth.c:720 +#: src/amidi-plug/i_configure-fluidsynth.c:640 msgid "" "FluidSynth\n" "backend" @@ -1022,8 +662,7 @@ "backend" msgstr "TiMidityåŽç«¯" -#: src/amidi-plug/i_fileinfo.c:169 src/bluetooth/gui.c:271 -#: src/sid/xs_interface.c:1769 +#: src/amidi-plug/i_fileinfo.c:169 msgid "Name:" msgstr "å称:" @@ -1109,10 +748,31 @@ "for the good help with alpha testing\n" "\n" msgstr "" +"\n" +"模å—化的MIDI音ä¹æ’­æ”¾å™¨\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"作者:Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"\n" +"特别鸣谢:\n" +"\n" +"Clemens Ladisch and Jaroslav Kysela\n" +"for their cool programs aplaymidi and amixer; those\n" +"were really useful, along with alsa-lib docs, in order\n" +"to learn more about the ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"for the nice midi keyboard logo\n" +"\n" +"Tony Vroon\n" +"for the good help with alpha testing\n" +"\n" #: src/aosd/aosd_style.c:75 msgid "Rectangle" -msgstr "矩形" +msgstr "方角矩形" #: src/aosd/aosd_style.c:79 msgid "Rounded Rectangle" @@ -1171,119 +831,118 @@ msgid "Triggers OSD when playback is unpaused." msgstr "æ¢å¤æ’­æ”¾æ—¶è§¦å‘OSD" -#: src/aosd/aosd_ui.c:168 +#: src/aosd/aosd_ui.c:180 msgid "Placement" msgstr "ä½ç½®" -#: src/aosd/aosd_ui.c:202 +#: src/aosd/aosd_ui.c:219 msgid "Relative X offset:" msgstr "X相对ä½ç§»ï¼š" -#: src/aosd/aosd_ui.c:211 +#: src/aosd/aosd_ui.c:228 msgid "Relative Y offset:" msgstr "Y相对ä½ç§»ï¼š" -#: src/aosd/aosd_ui.c:220 +#: src/aosd/aosd_ui.c:237 msgid "Max OSD width:" msgstr "最大OSD宽度:" -#: src/aosd/aosd_ui.c:233 +#: src/aosd/aosd_ui.c:250 msgid "Multi-Monitor options" msgstr "多å±é€‰é¡¹" -#: src/aosd/aosd_ui.c:237 +#: src/aosd/aosd_ui.c:254 msgid "Display OSD using:" -msgstr "用于显示OSD:" +msgstr "OSD显示于:" -#: src/aosd/aosd_ui.c:239 +#: src/aosd/aosd_ui.c:265 msgid "all monitors" msgstr "所有显示器" -#: src/aosd/aosd_ui.c:242 +#: src/aosd/aosd_ui.c:268 #, c-format msgid "monitor %i" msgstr "显示器%i" -#: src/aosd/aosd_ui.c:295 +#: src/aosd/aosd_ui.c:323 msgid "Timing (ms)" msgstr "延时(ms)" -#: src/aosd/aosd_ui.c:300 +#: src/aosd/aosd_ui.c:328 msgid "Display:" msgstr "显示:" -#: src/aosd/aosd_ui.c:305 +#: src/aosd/aosd_ui.c:333 msgid "Fade in:" -msgstr "æ¸å…¥ï¼š" +msgstr "淡入:" -#: src/aosd/aosd_ui.c:310 +#: src/aosd/aosd_ui.c:338 msgid "Fade out:" -msgstr "æ¸å‡ºï¼š" +msgstr "淡出:" -#: src/aosd/aosd_ui.c:391 +#: src/aosd/aosd_ui.c:419 msgid "Fonts" msgstr "字体" -#: src/aosd/aosd_ui.c:399 +#: src/aosd/aosd_ui.c:427 #, c-format msgid "Font %i:" msgstr "字体 %i:" -#: src/aosd/aosd_ui.c:416 +#: src/aosd/aosd_ui.c:444 msgid "Shadow" msgstr "阴影" -#: src/aosd/aosd_ui.c:451 +#: src/aosd/aosd_ui.c:479 msgid "Internationalization" msgstr "国际化" -#: src/aosd/aosd_ui.c:457 +#: src/aosd/aosd_ui.c:485 msgid "Disable UTF-8 conversion of text (in aosd)" msgstr "ç¦ç”¨UTF-8转æ¢(在aosd中)" -#: src/aosd/aosd_ui.c:475 +#: src/aosd/aosd_ui.c:503 msgid "Select Skin File" msgstr "选择主题文件" -#: src/aosd/aosd_ui.c:586 +#: src/aosd/aosd_ui.c:614 msgid "Render Style" msgstr "渲染风格" -#: src/aosd/aosd_ui.c:602 +#: src/aosd/aosd_ui.c:630 msgid "Colors" msgstr "颜色" -#: src/aosd/aosd_ui.c:615 +#: src/aosd/aosd_ui.c:643 #, c-format msgid "Color %i:" msgstr "颜色 %i:" -#: src/aosd/aosd_ui.c:635 +#: src/aosd/aosd_ui.c:663 msgid "Custom Skin" msgstr "自定义主题" -#: src/aosd/aosd_ui.c:641 +#: src/aosd/aosd_ui.c:669 msgid "Skin file:" msgstr "主题文件:" -#: src/aosd/aosd_ui.c:644 src/sid/xs_interface.c:1044 -#: src/sid/xs_interface.c:1236 src/sid/xs_interface.c:1292 +#: src/aosd/aosd_ui.c:672 msgid "Browse" msgstr "æµè§ˆ" -#: src/aosd/aosd_ui.c:746 +#: src/aosd/aosd_ui.c:774 msgid "Enable trigger" msgstr "å¯ç”¨è§¦å‘器" -#: src/aosd/aosd_ui.c:773 +#: src/aosd/aosd_ui.c:801 msgid "Event" msgstr "事件" -#: src/aosd/aosd_ui.c:801 +#: src/aosd/aosd_ui.c:829 msgid "Composite manager detected" msgstr "检测到混åˆç®¡ç†å™¨" -#: src/aosd/aosd_ui.c:808 +#: src/aosd/aosd_ui.c:836 msgid "" "Composite manager not detected;\n" "unless you know that you have one running, please activate a composite " @@ -1292,79 +951,78 @@ "未检测到混åˆç®¡ç†å™¨ï¼›\n" "OSD无法正常工作,除éžä½ æ¿€æ´»æ··åˆç®¡ç†å™¨ã€‚" -#: src/aosd/aosd_ui.c:816 +#: src/aosd/aosd_ui.c:844 msgid "Composite manager not required for fake transparency" msgstr "å‡é€æ˜Žæ— éœ€æ··åˆç®¡ç†æ”¯æŒ" -#: src/aosd/aosd_ui.c:854 +#: src/aosd/aosd_ui.c:882 msgid "Transparency" msgstr "é€æ˜Ž" -#: src/aosd/aosd_ui.c:860 +#: src/aosd/aosd_ui.c:888 msgid "Fake transparency" msgstr "å‡é€æ˜Ž" -#: src/aosd/aosd_ui.c:862 +#: src/aosd/aosd_ui.c:890 msgid "Real transparency (requires X Composite Ext.)" msgstr "真é€æ˜Ž(需è¦X Composite扩展)" -#: src/aosd/aosd_ui.c:904 +#: src/aosd/aosd_ui.c:932 msgid "Composite extension not loaded" msgstr "X Composite扩展未加载" -#: src/aosd/aosd_ui.c:912 +#: src/aosd/aosd_ui.c:940 msgid "Composite extension not available" msgstr "X Composite扩展ä¸å¯ç”¨" -#: src/aosd/aosd_ui.c:931 +#: src/aosd/aosd_ui.c:959 #, c-format msgid "Audacious OSD" -msgstr "" +msgstr "Audacious OSD" -#: src/aosd/aosd_ui.c:1012 +#: src/aosd/aosd_ui.c:1040 msgid "Audacious OSD - configuration" msgstr "Audacious OSD - 设置" -#: src/aosd/aosd_ui.c:1033 +#: src/aosd/aosd_ui.c:1061 msgid "Test" msgstr "测试" -#: src/aosd/aosd_ui.c:1048 +#: src/aosd/aosd_ui.c:1076 msgid "Position" msgstr "ä½ç½®" -#: src/aosd/aosd_ui.c:1053 +#: src/aosd/aosd_ui.c:1081 msgid "Animation" msgstr "动画" -#: src/aosd/aosd_ui.c:1058 +#: src/aosd/aosd_ui.c:1086 msgid "Text" msgstr "字体" -#: src/aosd/aosd_ui.c:1063 +#: src/aosd/aosd_ui.c:1091 msgid "Decoration" msgstr "装饰器" -#: src/aosd/aosd_ui.c:1068 +#: src/aosd/aosd_ui.c:1096 msgid "Trigger" msgstr "触å‘器" -#: src/aosd/aosd_ui.c:1073 src/cdaudio-ng/configure.c:178 -#: src/modplug/gui/interface.cxx:689 src/sid/xs_interface.c:1302 +#: src/aosd/aosd_ui.c:1101 src/cdaudio-ng/configure.c:171 msgid "Misc" msgstr "其它" -#: src/aosd/aosd_ui.c:1110 +#: src/aosd/aosd_ui.c:1138 msgid "Audacious OSD - about" msgstr "Audacious OSD - 关于" -#: src/aosd/aosd_ui.c:1140 +#: src/aosd/aosd_ui.c:1168 msgid "" "\n" "Audacious OSD " msgstr "" -#: src/aosd/aosd_ui.c:1141 +#: src/aosd/aosd_ui.c:1169 msgid "" "\n" "http://www.develia.org/projects.php?p=audacious#aosd\n" @@ -1376,139 +1034,28 @@ "http://neugierig.org/software/ghosd/\n" "\n" msgstr "" - -#: src/bluetooth/agent.c:356 src/bluetooth/agent.c:397 -#, c-format -msgid "Pairing request for '%s'" -msgstr "正在为'%s'é…对请求" - -#: src/bluetooth/agent.c:544 -#, c-format -msgid "Authorization request for %s" -msgstr "'%s'è¦æ±‚认è¯" - -#: src/bluetooth/agent.c:728 -#, c-format -msgid "Created bonding with %s" -msgstr "正在绑定%s" - -#: src/bluetooth/agent.c:756 -#, c-format -msgid "Removed bonding with %s" -msgstr "正在解除%s" - -#: src/bluetooth/agent.c:808 -msgid "Device has been switched off" -msgstr "设备已关闭" - -#: src/bluetooth/agent.c:811 -msgid "Device has been made non-discoverable" -msgstr "" - -#: src/bluetooth/agent.c:813 -msgid "Device has been made connectable" -msgstr "" - -#: src/bluetooth/agent.c:815 -msgid "Device has been made discoverable" -msgstr "" - -#: src/bluetooth/agent.c:817 -msgid "Device has been made limited discoverable" -msgstr "" - -#: src/bluetooth/agent.c:819 -msgid "Device has been switched into pairing mode" -msgstr "" - -#: src/bluetooth/bluetooth.c:117 -msgid "Bluetooth headset support plugin" -msgstr "" - -#: src/bluetooth/bluetooth.c:118 -msgid "" -"Bluetooth headset support\n" -"Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" -"This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the " -"Audacious team\n" -" \n" -"In order to use the AVRCP you need the uinput module loaded into the kernel\n" -"The headset keys will be recognized as normal mutimedia keys and \n" -"can be configured using the Audacious Global Hotkey plugin or ohter tools \n" -"provided by your window manager\n" -msgstr "" - -#: src/bluetooth/gui.c:148 -msgid "Producer" -msgstr "生产商" - -#: src/bluetooth/gui.c:221 -msgid "Available Headsets" -msgstr "å¯ç”¨è€³æœº" - -#: src/bluetooth/gui.c:224 -msgid "Current Headset" -msgstr "当å‰è€³æœº" - -#: src/bluetooth/gui.c:227 -msgid "_Refresh" -msgstr "刷新(_R)" - -#: src/bluetooth/gui.c:231 -msgid "_Connect" -msgstr "连接(_C)" - -#: src/bluetooth/gui.c:237 -msgid "_Close" -msgstr "关闭(_C)" - -#: src/bluetooth/gui.c:274 -msgid "Class" -msgstr "类型" - -#: src/bluetooth/gui.c:278 -msgid "Address:" -msgstr "地å€ï¼š" - -#: src/bluetooth/scan_gui.c:69 -msgid "Bonding finish!" -msgstr "绑定完æˆï¼" - -#: src/bluetooth/scan_gui.c:76 -msgid "No devices found!" -msgstr "未找到设备ï¼" - -#: src/bluetooth/scan_gui.c:119 -msgid "Scanning..." -msgstr "正在扫æ..." - -#: src/bluetooth/scan_gui.c:122 -msgid "Pairing..." -msgstr "正在é…对..." - -#: src/bluetooth/scan_gui.c:138 -msgid "Rescan" -msgstr "é‡æ–°æ‰«æ" - -#: src/bluetooth/scan_gui.c:142 src/gtkui/ui_manager.c:66 -#: src/gtkui/ui_manager.c:67 src/hotkey/gui.c:71 src/skins/ui_manager.c:167 -#: src/skins/ui_manager.c:168 -msgid "Play" -msgstr "播放" +"\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"作者:Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"On-Screen-Display基于Ghosd库\n" +"作者:Evan Martin\n" +"http://neugierig.org/software/ghosd/\n" #: src/blur_scope/config.c:73 msgid "Blur Scope: Color selection" msgstr "" -#: src/blur_scope/config.c:83 src/jack/configure.c:111 +#: src/blur_scope/config.c:83 src/jack/configure.c:106 msgid "Options:" msgstr "选项" -#: src/cdaudio-ng/cdaudio-ng.c:278 +#: src/cdaudio-ng/cdaudio-ng.c:241 msgid "About Audio CD Plugin" msgstr "关于音频CDæ’件" -#: src/cdaudio-ng/cdaudio-ng.c:279 +#: src/cdaudio-ng/cdaudio-ng.c:242 msgid "" "Copyright (c) 2007, by Calin Crisan and The Audacious " "Team.\n" @@ -1522,139 +1069,167 @@ "\n" "Copyright 2009 John Lindgren" msgstr "" -"版æƒæ‰€æœ‰ (c) 2007, Calin Crisan åŠAudacious团队\n" -"在此éžå¸¸æ„Ÿè°¢libcdio \n" -"\tåŠlibcddbçš„å¼€å‘者\n" +"版æƒæ‰€æœ‰ (c)\n" +"2009 John Lindgren\n" +"2007 Calin Crisan åŠAudaciouså°ç»„\n" "\n" +"在此éžå¸¸æ„Ÿè°¢libcdio \n" +"åŠlibcddbçš„å¼€å‘者\n" "åŒæ—¶äº¦éžå¸¸æ„Ÿè°¢Tony Vroon对我的帮助和指导.\n" -"\n" -"Google Summer of Code 2007 project.\n" -"\n" -"版æƒæ‰€æœ‰ (c) 2009 John Lindgren" +"Google Summer of Code 2007 project." -#: src/cdaudio-ng/configure.c:155 +#: src/cdaudio-ng/cdaudio-ng.c:550 +msgid "Audio CD" +msgstr "音频CD" + +#: src/cdaudio-ng/cdaudio-ng.c:922 +msgid "Drive is empty." +msgstr "设备为空" + +#: src/cdaudio-ng/cdaudio-ng.c:924 +msgid "Unsupported disk type." +msgstr "未支æŒå…‰ç›˜ç±»åž‹" + +#: src/cdaudio-ng/configure.c:148 msgid "CD Audio Plugin Configuration" msgstr "CD音频æ’件设置" -#: src/cdaudio-ng/configure.c:167 +#: src/cdaudio-ng/configure.c:160 msgid "Digital audio extraction" msgstr "抽å–æ•°æ®éŸ³é¢‘" -#: src/cdaudio-ng/configure.c:172 +#: src/cdaudio-ng/configure.c:165 msgid "Title information" msgstr "标题信æ¯" -#: src/cdaudio-ng/configure.c:190 +#: src/cdaudio-ng/configure.c:176 msgid "Disc speed:" msgstr "光盘速度:" -#: src/cdaudio-ng/configure.c:198 +#: src/cdaudio-ng/configure.c:184 msgid "Use cd-text if available" msgstr "如果å¯ç”¨ï¼Œä½¿ç”¨cd-text" -#: src/cdaudio-ng/configure.c:205 +#: src/cdaudio-ng/configure.c:191 msgid "Use CDDB if available" msgstr "如果å¯ç”¨ï¼Œä½¿ç”¨CDDB" -#: src/cdaudio-ng/configure.c:211 +#: src/cdaudio-ng/configure.c:197 msgid "Server: " msgstr "æœåŠ¡å™¨ï¼š" -#: src/cdaudio-ng/configure.c:215 +#: src/cdaudio-ng/configure.c:201 msgid "Path: " msgstr "路径:" -#: src/cdaudio-ng/configure.c:219 +#: src/cdaudio-ng/configure.c:205 msgid "Port: " msgstr "端å£ï¼š" -#: src/cdaudio-ng/configure.c:232 +#: src/cdaudio-ng/configure.c:218 msgid "Use HTTP instead of CDDBP" msgstr "使用HTTP代替CDDBP" -#: src/cdaudio-ng/configure.c:244 +#: src/cdaudio-ng/configure.c:230 msgid "Override default device: " msgstr "覆蓋默设备:" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:123 +#: src/echo_plugin/gui.c:118 src/jack/configure.c:141 src/null/null.c:107 +#: src/stereo_plugin/stereo.c:118 +msgid "Ok" +msgstr "确定" + +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Play CD" msgstr "播放CD" -#: src/cd-menu-items/cd-menu-items.c:35 +#: src/cd-menu-items/cd-menu-items.c:34 msgid "Add CD" msgstr "添加CD" -#: src/compressor/plugin.c:58 +#: src/compressor/plugin.c:63 msgid "About Dynamic Range Compression Plugin" -msgstr "" +msgstr "关于Dynamic Range Compressionæ’件" -#: src/compressor/plugin.c:91 +#: src/compressor/plugin.c:95 msgid "Dynamic Range Compressor Preferences" -msgstr "" +msgstr "Dynamic Range Compressor设置" -#: src/compressor/plugin.c:103 -msgid "Target volume:" -msgstr "" +#: src/compressor/plugin.c:107 +msgid "Center volume:" +msgstr "中间音é‡ï¼š" -#: src/compressor/plugin.c:116 -msgid "Effect strength:" -msgstr "" +#: src/compressor/plugin.c:120 +msgid "Dynamic range:" +msgstr "动æ€èŒƒå›´ï¼š" -#: src/console/configure.c:137 +#: src/console/configure.c:136 msgid "Game Console Music Decoder" -msgstr "" +msgstr "游æˆæœºéŸ³ä¹è§£ç å™¨" + +#: src/console/configure.c:153 +msgid "General" +msgstr "常规" -#: src/console/configure.c:171 +#: src/console/configure.c:155 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "回放" + +#: src/console/configure.c:170 msgid "Bass:" -msgstr "" +msgstr "低音:" -#: src/console/configure.c:175 src/console/configure.c:186 -#: src/console/configure.c:207 +#: src/console/configure.c:174 src/console/configure.c:185 +#: src/console/configure.c:206 msgid "secs" -msgstr "" +msgstr "秒" -#: src/console/configure.c:182 +#: src/console/configure.c:181 msgid "Treble:" -msgstr "" +msgstr "高音:" -#: src/console/configure.c:203 +#: src/console/configure.c:202 msgid "Default song length:" -msgstr "" +msgstr "默认歌曲长度:" -#: src/console/configure.c:209 src/modplug/gui/interface.cxx:269 -#: src/sid/xs_interface.c:666 +#: src/console/configure.c:208 msgid "Resampling" -msgstr "" +msgstr "é‡é‡‡æ ·" -#: src/console/configure.c:215 +#: src/console/configure.c:214 msgid "Enable audio resampling" -msgstr "" +msgstr "å¯ç”¨éŸ³é¢‘é‡é‡‡æ ·" -#: src/console/configure.c:230 +#: src/console/configure.c:229 msgid "Resampling rate:" +msgstr "采样率:" + +#: src/console/configure.c:233 +msgid "Hz" msgstr "" -#: src/console/configure.c:245 +#: src/console/configure.c:244 msgid "SPC" msgstr "" -#: src/console/configure.c:246 +#: src/console/configure.c:245 msgid "Ignore length from SPC tags" -msgstr "" +msgstr "忽略SPC标签显示的长度" -#: src/console/configure.c:247 +#: src/console/configure.c:246 msgid "Increase reverb" -msgstr "" +msgstr "延长余å“" -#: src/console/configure.c:272 +#: src/console/configure.c:271 msgid "" "The default song length, expressed in seconds, is used for songs that do not " "provide length information (i.e. looping tracks)." -msgstr "" +msgstr "默认歌曲长度(å•ä½ï¼šç§’),用于本身ä¸æ供长度信æ¯çš„文件(如:循环音轨)" #: src/console/plugin.c:33 msgid "About the Game Console Music Decoder" -msgstr "" +msgstr "关于游æˆæœºéŸ³ä¹è§£ç å™¨" #: src/console/plugin.c:34 msgid "" @@ -1663,658 +1238,328 @@ "Audacious implementation by: William Pitcock , \n" " Shay Green \n" msgstr "" +"游æˆæœºéŸ³ä¹è§£ç å¼•æ“ŽåŸºæœ¬äºŽGame_Music_Emu 0.5.2.\n" +"支æŒæ ¼å¼ï¼š AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Audacious上的实现由:\n" +"William Pitcock , \n" +"Shay Green \n" +"完æˆã€‚\n" -#: src/crossfade/plugin.c:51 +#: src/crossfade/plugin.c:60 msgid "About Crossfade" -msgstr "" +msgstr "关于淡出音效" -#: src/crossfade/plugin.c:84 +#: src/crossfade/plugin.c:92 msgid "Crossfade Preferences" -msgstr "" +msgstr "淡出设置" -#: src/crossfade/plugin.c:95 +#: src/crossfade/plugin.c:104 msgid "Overlap (in seconds):" -msgstr "" +msgstr "é‡å æ—¶é—´(å•ä½ï¼šç§’):" -#: src/crossfade/plugin.c:129 src/crossfade/plugin.c:137 +#: src/crossfade/plugin.c:135 src/crossfade/plugin.c:141 msgid "Crossfade Error" -msgstr "" +msgstr "淡出错误" -#: src/crossfade/plugin.c:130 +#: src/crossfade/plugin.c:135 msgid "" "Crossfading failed because the songs had a different number of channels." -msgstr "" +msgstr "淡出失败, 原因:歌曲的声é“æ•°ä¸ä¸€æ ·" -#: src/crossfade/plugin.c:138 +#: src/crossfade/plugin.c:143 msgid "" "Crossfading failed because the songs had different sample rates.\n" "\n" "You can use the Sample Rate Converter effect to resample the songs to the " "same rate." msgstr "" +"淡出失败, 原因:歌曲的采样ä¸ä¸€è‡´ã€‚\n" +"\n" +"ä½ å¯ä»¥å°è¯•ä½¿ç”¨â€é‡‡æ ·çŽ‡è½¬æ¢å™¨â€œä½¿æ­Œæ›²çš„采样一致。" -#: src/crystalizer/crystalizer.c:104 +#: src/crystalizer/crystalizer.c:100 msgid "Configure Crystalizer" -msgstr "" +msgstr "设置Crystalizer" -#: src/crystalizer/crystalizer.c:106 src/stereo_plugin/stereo.c:102 +#: src/crystalizer/crystalizer.c:102 src/stereo_plugin/stereo.c:97 msgid "Effect intensity:" -msgstr "" +msgstr "效果强度:" -#: src/crystalizer/crystalizer.c:143 src/echo_plugin/gui.c:137 -#: src/modplug/gui/interface.cxx:709 src/stereo_plugin/stereo.c:139 +#: src/crystalizer/crystalizer.c:136 src/echo_plugin/gui.c:131 +#: src/stereo_plugin/stereo.c:131 msgid "Apply" -msgstr "" +msgstr "应用" -#: src/echo_plugin/gui.c:14 +#: src/echo_plugin/gui.c:15 msgid "" "Echo Plugin\n" "By Johan Levin 1999.\n" "\n" "Surround echo by Carl van Schaik 1999" msgstr "" +"回音æ’件\n" +"作者: Johan Levin 1999.\n" +"\n" +"回音环绕\n" +"作者:Carl van Schaik 1999" -#: src/echo_plugin/gui.c:26 +#: src/echo_plugin/gui.c:27 msgid "About Echo Plugin" -msgstr "" +msgstr "关于回音æ’件" -#: src/echo_plugin/gui.c:69 +#: src/echo_plugin/gui.c:67 msgid "Configure Echo" -msgstr "" +msgstr "回音设置" -#: src/echo_plugin/gui.c:82 +#: src/echo_plugin/gui.c:83 msgid "Delay: (ms)" -msgstr "" +msgstr "延迟:(ms)" -#: src/echo_plugin/gui.c:87 +#: src/echo_plugin/gui.c:88 msgid "Feedback: (%)" -msgstr "" +msgstr "å馈:(%)" -#: src/echo_plugin/gui.c:92 +#: src/echo_plugin/gui.c:93 msgid "Volume: (%)" -msgstr "" - -#: src/evdev-plug/ed.c:60 -msgid "Playback->Play" -msgstr "" - -#: src/evdev-plug/ed.c:61 -msgid "Playback->Stop" -msgstr "" - -#: src/evdev-plug/ed.c:62 -msgid "Playback->Pause" -msgstr "" - -#: src/evdev-plug/ed.c:63 -msgid "Playback->Prev" -msgstr "" - -#: src/evdev-plug/ed.c:64 -msgid "Playback->Next" -msgstr "" - -#: src/evdev-plug/ed.c:65 -msgid "Playback->Eject" -msgstr "" - -#: src/evdev-plug/ed.c:67 -msgid "Playlist->Repeat" -msgstr "" - -#: src/evdev-plug/ed.c:68 -msgid "Playlist->Shuffle" -msgstr "" - -#: src/evdev-plug/ed.c:70 -msgid "Volume->Up_5" -msgstr "" - -#: src/evdev-plug/ed.c:71 -msgid "Volume->Down_5" -msgstr "" - -#: src/evdev-plug/ed.c:72 -msgid "Volume->Up_10" -msgstr "" - -#: src/evdev-plug/ed.c:73 -msgid "Volume->Down_10" -msgstr "" - -#: src/evdev-plug/ed.c:74 -msgid "Volume->Mute" -msgstr "" - -#: src/evdev-plug/ed.c:76 -msgid "Window->Main" -msgstr "" - -#: src/evdev-plug/ed.c:77 -msgid "Window->Playlist" -msgstr "" - -#: src/evdev-plug/ed.c:78 -msgid "Window->Equalizer" -msgstr "" - -#: src/evdev-plug/ed.c:79 -msgid "Window->JumpToFile" -msgstr "" - -#: src/evdev-plug/ed_internals.c:94 -#, c-format -msgid "" -"event-device-plugin: unable to open device file %s , skipping this device; " -"check that the file exists and that you have read permission for it\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:103 -#, c-format -msgid "" -"event-device-plugin: unable to create a io_channel for device file %s ," -"skipping this device\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:342 -msgid "" -"event-device-plugin: unable to open /proc/bus/input/devices , automatic " -"detection of event devices won't work.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:351 -msgid "" -"event-device-plugin: unable to open a io_channel for /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:361 -msgid "" -"event-device-plugin: an error occurred while reading /proc/bus/input/" -"devices , automatic detection of event devices won't work.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:424 -#, c-format -msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:489 src/evdev-plug/ed_internals.c:583 -#, c-format -msgid "" -"event-device-plugin: unable to load config file %s , default settings will " -"be used.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:535 -#, c-format -msgid "" -"event-device-plugin: incomplete information in config file for device \"%s" -"\" , skipping.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:604 src/evdev-plug/ed_internals.c:936 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_active value for device " -"\"%s\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:840 -#, c-format -msgid "" -"event-device-plugin: unable to access local directory %s , settings will not " -"be saved.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:890 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get filename value for device " -"\"%s\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:906 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get phys value for device \"%s" -"\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:922 -#, c-format -msgid "" -"event-device-plugin: configuration, unable to get is_custom value for device " -"\"%s\", skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_internals.c:946 -#, c-format -msgid "" -"event-device-plugin: configuration, unexpected value for device \"%s\", " -"skipping it.\n" -msgstr "" - -#: src/evdev-plug/ed_ui.c:212 -msgid "Detected" -msgstr "" - -#: src/evdev-plug/ed_ui.c:217 -msgid "Custom" -msgstr "" - -#: src/evdev-plug/ed_ui.c:223 -msgid "Not Detected" -msgstr "" - -#: src/evdev-plug/ed_ui.c:275 src/evdev-plug/ed_ui.c:411 -#: src/evdev-plug/ed_ui.c:874 -msgid "Information" -msgstr "" - -#: src/evdev-plug/ed_ui.c:276 -msgid "" -"Cannot open bindings window for a not-detected device.\n" -"Ensure that the device has been correctly plugged in." -msgstr "" - -#: src/evdev-plug/ed_ui.c:319 -msgid "Error" -msgstr "" - -#: src/evdev-plug/ed_ui.c:320 -msgid "" -"Unable to open selected device.\n" -"Please check read permissions on device file." -msgstr "" - -#: src/evdev-plug/ed_ui.c:341 -msgid "EvDev-Plug - Add custom device" -msgstr "" - -#: src/evdev-plug/ed_ui.c:353 -msgid "" -"EvDev-Plug tries to automatically detect and update information about\n" -"event devices available on the system.\n" -"However, if auto-detect doesn't work for your system, or you have event\n" -"devices in a non-standard location (currently they're only searched in\n" -"/dev/input/ ), you may want to add a custom device, explicitly specifying\n" -"name and device file." -msgstr "" - -#: src/evdev-plug/ed_ui.c:361 -msgid "Device name:" -msgstr "" - -#: src/evdev-plug/ed_ui.c:365 -msgid "Device file:" -msgstr "" - -#: src/evdev-plug/ed_ui.c:404 -msgid "(custom)" -msgstr "" - -#: src/evdev-plug/ed_ui.c:412 -msgid "" -"Please specify both name and filename.\n" -"Filename must be specified with absolute path." -msgstr "" - -#: src/evdev-plug/ed_ui.c:447 -msgid "Do you want to remove the existing configuration for selected device?\n" -msgstr "" - -#: src/evdev-plug/ed_ui.c:466 -msgid "Do you want to remove the selected custom device?\n" -msgstr "" +msgstr "音é‡ï¼š(%)" -#: src/evdev-plug/ed_ui.c:612 -msgid "EvDev-Plug - Configuration" -msgstr "" - -#: src/evdev-plug/ed_ui.c:651 -msgid "Active" -msgstr "" - -#: src/evdev-plug/ed_ui.c:655 src/sun/configure.c:486 -msgid "Status" -msgstr "" - -#: src/evdev-plug/ed_ui.c:664 -msgid "Device Name" -msgstr "" - -#: src/evdev-plug/ed_ui.c:668 -msgid "Device File" -msgstr "" - -#: src/evdev-plug/ed_ui.c:672 -msgid "Device Address" -msgstr "" - -#: src/evdev-plug/ed_ui.c:689 -msgid "_Bindings" -msgstr "" - -#: src/evdev-plug/ed_ui.c:838 -msgid "" -"Press a key of your device to bind it;\n" -"if no key is pressed in five seconds, this window\n" -"will close without binding changes." -msgstr "" - -#: src/evdev-plug/ed_ui.c:875 -msgid "" -"This input event has been already assigned.\n" -"\n" -"It's not possible to assign multiple actions to the same input event " -"(although it's possible to assign the same action to multiple events)." -msgstr "" - -#: src/evdev-plug/ed_ui.c:1323 -msgid "EvDev-Plug - Bindings Configuration" -msgstr "" - -#: src/evdev-plug/ed_ui.c:1363 -msgid "Name: " -msgstr "" - -#: src/evdev-plug/ed_ui.c:1372 -msgid "Filename: " -msgstr "" - -#: src/evdev-plug/ed_ui.c:1381 -msgid "Phys.Address: " -msgstr "" - -#: src/evdev-plug/ed_ui.c:1460 -msgid "EvDev-Plug - about" -msgstr "" - -#: src/evdev-plug/ed_ui.c:1491 -msgid "" -"\n" -"player remote control via event devices\n" -"http://www.develia.org/projects.php?p=audacious#evdevplug\n" -"\n" -"written by Giacomo Lozito\n" -msgstr "" - -#: src/ffaudio/ffaudio-core.c:662 +#: src/ffaudio/ffaudio-core.c:795 #, c-format msgid "" "Multi-format audio decoding plugin for Audacious based on\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" "Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" "\n" -"FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" -"\n" "Audacious plugin by:\n" " William Pitcock ,\n" " Matti Hämäläinen \n" -msgstr "" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" +msgstr "" +"基于FFmepg多媒体框架(http://www.ffmpeg.org/)\n" +"çš„Audacious音频解ç æ’件\n" +"版æƒæ‰€æœ‰ (c)\n" +"2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audaciousæ’件作者:\n" +"\tWilliam Pitcock ,\n" +"\tMatti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" -#: src/ffaudio/ffaudio-core.c:675 +#: src/ffaudio/ffaudio-core.c:809 msgid "About FFaudio Plugin" -msgstr "" +msgstr "关于FFaudioæ’件" -#: src/filewriter/filewriter.c:180 +#: src/filewriter/filewriter.c:166 msgid "About FileWriter-Plugin" -msgstr "" - -#: src/filewriter/filewriter.c:181 -msgid "" -"FileWriter-Plugin\n" -"\n" -"This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" +msgstr "关于FileWriteræ’件" -#: src/filewriter/filewriter.c:466 +#: src/filewriter/filewriter.c:455 msgid "File Writer Configuration" -msgstr "" +msgstr "FileWriter设置" -#: src/filewriter/filewriter.c:478 +#: src/filewriter/filewriter.c:467 msgid "Output file format:" -msgstr "" +msgstr "输出文件格å¼ï¼š" -#: src/filewriter/filewriter.c:496 src/ladspa/ladspa.c:1058 +#: src/filewriter/filewriter.c:485 msgid "Configure" -msgstr "" +msgstr "设置" -#: src/filewriter/filewriter.c:511 +#: src/filewriter/filewriter.c:500 msgid "Save into original directory" -msgstr "" +msgstr "ä¿å­˜åˆ°åŽŸæ¥çš„目录" -#: src/filewriter/filewriter.c:516 +#: src/filewriter/filewriter.c:505 msgid "Save into custom directory" -msgstr "" +msgstr "ä¿å­˜åˆ°è‡ªå®šä¹‰ç›®å½•" -#: src/filewriter/filewriter.c:528 +#: src/filewriter/filewriter.c:515 msgid "Output file folder:" -msgstr "" +msgstr "输出文件目录:" -#: src/filewriter/filewriter.c:532 +#: src/filewriter/filewriter.c:519 msgid "Pick a folder" -msgstr "" +msgstr "选择目录" -#: src/filewriter/filewriter.c:551 +#: src/filewriter/filewriter.c:538 msgid "Get filename from:" -msgstr "" +msgstr "文件åæ¥è‡ªï¼š" -#: src/filewriter/filewriter.c:554 +#: src/filewriter/filewriter.c:541 msgid "original file tags" -msgstr "" +msgstr "原始文件标签" -#: src/filewriter/filewriter.c:560 +#: src/filewriter/filewriter.c:547 msgid "original filename" -msgstr "" +msgstr "原始文件å" -#: src/filewriter/filewriter.c:570 +#: src/filewriter/filewriter.c:557 msgid "Don't strip file name extension" -msgstr "" - -#: src/filewriter/filewriter.c:574 -msgid "" -"If enabled, the extension from the original filename will not be stripped " -"before adding the new file extension to the end." -msgstr "" +msgstr "ä¿ç•™æ–‡ä»¶åŽç¼€" -#: src/filewriter/filewriter.c:588 +#: src/filewriter/filewriter.c:572 msgid "Prepend track number to filename" -msgstr "" +msgstr "文件åå‰åŠ ä¸ŠéŸ³è½¨å·" + +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:771 +msgid "Auto" +msgstr "自动" + +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" +msgstr "è”åˆç«‹ä½“声" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 +msgid "Stereo" +msgstr "立体声" -#: src/filewriter/mp3.c:710 +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:183 +msgid "Mono" +msgstr "å•å£°é“" + +#: src/filewriter/mp3.c:712 msgid "MP3 Configuration" -msgstr "" +msgstr "MP3设置" -#: src/filewriter/mp3.c:737 +#: src/filewriter/mp3.c:735 msgid "Algorithm Quality:" -msgstr "" - -#: src/filewriter/mp3.c:759 -msgid "" -"best/slowest:0;\n" -"worst/fastest:9;\n" -"recommended:2;\n" -"default:5;" -msgstr "" +msgstr "音质" -#: src/filewriter/mp3.c:767 +#: src/filewriter/mp3.c:760 msgid "Output Samplerate:" -msgstr "" - -#: src/filewriter/mp3.c:778 src/filewriter/mp3.c:919 -msgid "Auto" -msgstr "" +msgstr "输出å–样:" -#: src/filewriter/mp3.c:800 +#: src/filewriter/mp3.c:788 msgid "(Hz)" msgstr "" -#: src/filewriter/mp3.c:812 +#: src/filewriter/mp3.c:795 msgid "Bitrate / Compression ratio:" -msgstr "" +msgstr "ç çŽ‡/压缩率:" -#: src/filewriter/mp3.c:838 +#: src/filewriter/mp3.c:819 msgid "Bitrate (kbps):" -msgstr "" +msgstr "ç çŽ‡(kbps):" -#: src/filewriter/mp3.c:879 +#: src/filewriter/mp3.c:852 msgid "Compression ratio:" -msgstr "" +msgstr "压缩率:" -#: src/filewriter/mp3.c:909 +#: src/filewriter/mp3.c:876 msgid "Audio Mode:" -msgstr "" - -#: src/filewriter/mp3.c:924 -msgid "Joint-Stereo" -msgstr "" +msgstr "音频模å¼ï¼š" -#: src/filewriter/mp3.c:967 +#: src/filewriter/mp3.c:901 msgid "Misc:" -msgstr "" +msgstr "其它:" -#: src/filewriter/mp3.c:978 +#: src/filewriter/mp3.c:912 msgid "Enforce strict ISO complience" -msgstr "" +msgstr "强制严格éµä»ŽISO" -#: src/filewriter/mp3.c:989 +#: src/filewriter/mp3.c:923 msgid "Error protection" -msgstr "" - -#: src/filewriter/mp3.c:1001 -msgid "Adds 16 bit checksum to every frame" -msgstr "" +msgstr "错误ä¿æŠ¤" -#: src/filewriter/mp3.c:1006 src/filewriter/vorbis.c:247 -#: src/modplug/gui/interface.cxx:320 +#: src/filewriter/mp3.c:935 src/filewriter/vorbis.c:243 msgid "Quality" -msgstr "" +msgstr "è´¨é‡" -#: src/filewriter/mp3.c:1018 +#: src/filewriter/mp3.c:945 msgid "Enable VBR/ABR" -msgstr "" +msgstr "å¯ç”¨VBR/ABR" -#: src/filewriter/mp3.c:1030 +#: src/filewriter/mp3.c:955 msgid "Type:" -msgstr "" +msgstr "类型:" -#: src/filewriter/mp3.c:1041 -msgid "Variable bitrate" -msgstr "" - -#: src/filewriter/mp3.c:1053 -msgid "Average bitrate" -msgstr "" - -#: src/filewriter/mp3.c:1067 +#: src/filewriter/mp3.c:988 msgid "VBR Options:" -msgstr "" +msgstr "VBR选项:" -#: src/filewriter/mp3.c:1083 +#: src/filewriter/mp3.c:1004 msgid "Minimum bitrate (kbps):" -msgstr "" +msgstr "最å°ç çŽ‡(kbps):" -#: src/filewriter/mp3.c:1119 +#: src/filewriter/mp3.c:1031 msgid "Maximum bitrate (kbps):" -msgstr "" +msgstr "最大ç çŽ‡(kbps):" -#: src/filewriter/mp3.c:1151 +#: src/filewriter/mp3.c:1054 msgid "Strictly enforce minimum bitrate" -msgstr "" +msgstr "严格执行最å°ç çŽ‡" -#: src/filewriter/mp3.c:1153 -msgid "" -"For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/" -"mp3 player)" -msgstr "" - -#: src/filewriter/mp3.c:1166 +#: src/filewriter/mp3.c:1066 msgid "ABR Options:" -msgstr "" +msgstr "ABR选项:" -#: src/filewriter/mp3.c:1176 +#: src/filewriter/mp3.c:1076 msgid "Average bitrate (kbps):" -msgstr "" +msgstr "å¹³å‡ç çŽ‡(kbps):" -#: src/filewriter/mp3.c:1213 +#: src/filewriter/mp3.c:1104 msgid "VBR quality level:" -msgstr "" - -#: src/filewriter/mp3.c:1228 -msgid "" -"highest:0;\n" -"lowest:9;\n" -"default:4;" -msgstr "" +msgstr "VBRè´¨é‡ç­‰çº§ï¼š" -#: src/filewriter/mp3.c:1236 +#: src/filewriter/mp3.c:1123 msgid "Don't write Xing VBR header" -msgstr "" +msgstr "ä¸è¦å†™å…¥Xing VBR头" -#: src/filewriter/mp3.c:1250 +#: src/filewriter/mp3.c:1137 msgid "VBR/ABR" -msgstr "" +msgstr "VBR/ABR" -#: src/filewriter/mp3.c:1262 +#: src/filewriter/mp3.c:1147 msgid "Frame params:" -msgstr "" +msgstr "帧å‚数:" -#: src/filewriter/mp3.c:1274 +#: src/filewriter/mp3.c:1159 msgid "Mark as copyright" -msgstr "" +msgstr "标记为版æƒ" -#: src/filewriter/mp3.c:1285 +#: src/filewriter/mp3.c:1170 msgid "Mark as original" -msgstr "" +msgstr "标记为原始文件" -#: src/filewriter/mp3.c:1297 +#: src/filewriter/mp3.c:1182 msgid "ID3 params:" -msgstr "" +msgstr "ID3å‚数:" -#: src/filewriter/mp3.c:1308 +#: src/filewriter/mp3.c:1193 msgid "Force addition of version 2 tag" -msgstr "" +msgstr "强制添加V2标签" -#: src/filewriter/mp3.c:1318 +#: src/filewriter/mp3.c:1203 msgid "Only add v1 tag" msgstr "仅添加v1标签" -#: src/filewriter/mp3.c:1325 +#: src/filewriter/mp3.c:1210 msgid "Only add v2 tag" msgstr "仅添加v2标签" -#: src/filewriter/mp3.c:1346 +#: src/filewriter/mp3.c:1231 msgid "Tags" msgstr "标签" -#: src/filewriter/vorbis.c:240 +#: src/filewriter/vorbis.c:236 msgid "Vorbis Encoder Configuration" msgstr "Vorbisç¼–ç å™¨è®¾ç½®" -#: src/filewriter/vorbis.c:260 +#: src/filewriter/vorbis.c:256 msgid "Quality level (0 - 10):" -msgstr "è´¨é‡ç­‰çº§(0-10):" +msgstr "è´¨é‡ç­‰çº§(0-10):" -#: src/flacng/plugin.c:457 -msgid "FLAC Audio Plugin " -msgstr "FLAC音频æ’件" +#: src/flacng/plugin.c:379 +msgid "About FLAC Audio Plugin" +msgstr "关于FLAC音频æ’件" -#: src/flacng/plugin.c:458 +#: src/flacng/plugin.c:380 msgid "" "\n" "\n" @@ -2325,19 +1570,15 @@ msgstr "" "\n" "\n" -"最åˆä½œè€…:Ralf Ertzinger \n" +"原作者:Ralf Ertzinger \n" "\n" "http://www.skytale.net/projects/bmp-flac2/" -#: src/flacng/plugin.c:464 -msgid "About FLAC Audio Plugin" -msgstr "关于FLAC音频æ’件" - -#: src/gnomeshortcuts/gnomeshortcuts.c:306 +#: src/gnomeshortcuts/gnomeshortcuts.c:303 msgid "About Gnome Shortcut Plugin" msgstr "关于Gnomeå¿«æ·é”®æ’件" -#: src/gnomeshortcuts/gnomeshortcuts.c:307 +#: src/gnomeshortcuts/gnomeshortcuts.c:304 msgid "" "Gnome Shortcut Plugin\n" "Let's you control the player with Gnome's shortcuts.\n" @@ -2348,525 +1589,485 @@ "Gnomeå¿«æ·é”®æ’件\n" "通过快æ·é”®æŽ§åˆ¶æ’­æ”¾å™¨.\n" "\n" -"版æƒæ‰€æœ‰ (C) 2007-2008 Sascha Hlusiak \n" +"版æƒæ‰€æœ‰ (C)\n" +"2007-2008 Sascha Hlusiak \n" "\n" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:273 +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 msgid "Open Files" msgstr "打开文件" -#: src/gntui/fileselector.c:75 src/gntui/gntui.c:272 +#: src/gntui/fileselector.c:75 src/gntui/gntui.c:271 msgid "Add Files" msgstr "添加文件" -#: src/gntui/gntui.c:271 +#: src/gntui/gntui.c:270 msgid "Audacious2" msgstr "Audacious2" -#: src/gntui/gntui.c:312 +#: src/gntui/gntui.c:311 msgid "gnt interface" msgstr "gntç•Œé¢" -#: src/gtkui/actions.c:257 src/skins/ui_main.c:818 -msgid "Can't jump to time when no track is being played.\n" -msgstr "未开始æ’放时无法跳到时间。\n" - -#: src/gtkui/actions.c:272 src/gtkui/ui_manager.c:204 -#: src/gtkui/ui_manager.c:205 src/skins/ui_main.c:833 -#: src/skins/ui_manager.c:410 src/skins/ui_manager.c:411 -msgid "Jump to Time" -msgstr "跳到时间" - -#: src/gtkui/actions.c:289 src/skins/ui_main.c:854 -msgid "minutes:seconds" -msgstr "分:秒" - -#: src/gtkui/actions.c:299 src/skins/ui_main.c:864 -msgid "Track length:" -msgstr "音轨长度" - -#: src/gtkui/actions.c:610 src/skins/ui_playlist.c:648 -#, c-format -msgid "Error writing playlist \"%s\": %s" -msgstr "写入播放列表\"%s\"æ—¶å‘生错误: %s" - -#: src/gtkui/actions.c:625 src/skins/ui_playlist.c:670 -#, c-format -msgid "%s already exist. Continue?" -msgstr "%s已存在,è¦ç»§ç»­å—?" - -#: src/gtkui/actions.c:651 src/skins/ui_manager.c:214 -msgid "Export Playlist" -msgstr "列出播放列表" - -#: src/gtkui/actions.c:723 src/skins/ui_manager.c:211 -msgid "Import Playlist" -msgstr "导入播放列表" - -#: src/gtkui/ui_gtk.c:72 -#, fuzzy -msgid "GTK Interface" -msgstr "gntç•Œé¢" - -#: src/gtkui/ui_gtk.c:281 src/skins/ui_main.c:388 -#, c-format -msgid "%s - Audacious" -msgstr "%s - Audacious" - -#: src/gtkui/ui_gtk.c:287 src/skins/ui_main.c:390 src/skins/ui_main.c:2166 -msgid "Audacious" -msgstr "Audacious" - -#: src/gtkui/ui_manager.c:35 src/gtkui/ui_manager.c:36 -#: src/skins/ui_manager.c:53 src/skins/ui_manager.c:54 -msgid "Stop after Current Song" -msgstr "完æˆå½“å‰æ­Œæ›²åŽåœæ­¢" - -#: src/gtkui/ui_manager.c:38 src/gtkui/ui_manager.c:39 -#: src/skins/ui_manager.c:59 src/skins/ui_manager.c:60 -msgid "Repeat" -msgstr "é‡å¤" - -#: src/gtkui/ui_manager.c:41 src/gtkui/ui_manager.c:42 -#: src/skins/ui_manager.c:62 src/skins/ui_manager.c:63 -msgid "Shuffle" -msgstr "éšæœº" - -#: src/gtkui/ui_manager.c:44 src/gtkui/ui_manager.c:45 -#: src/skins/ui_manager.c:65 src/skins/ui_manager.c:66 -msgid "No Playlist Advance" -msgstr "ç¦æ­¢è‡ªåŠ¨æ’­æ”¾ä¸‹ä¸€é¦–" - -#: src/gtkui/ui_manager.c:47 -msgid "Show playlists" -msgstr "显示播放列表" +#: src/gtkui/columns.c:36 +msgid "Entry number" +msgstr "åºå·" -#: src/gtkui/ui_manager.c:48 -msgid "Show/hide playlists" -msgstr "显示/éšè—播放列表" - -#: src/gtkui/ui_manager.c:50 -msgid "Show infoarea" -msgstr "显示信æ¯åŒºåŸŸ" - -#: src/gtkui/ui_manager.c:51 -msgid "Show/hide infoarea" -msgstr "显示/éšè—ä¿¡æ¯åŒºåŸŸ" - -#: src/gtkui/ui_manager.c:53 -msgid "Show main menu" -msgstr "显示主èœå•" - -#: src/gtkui/ui_manager.c:54 -msgid "Show/hide main menu" -msgstr "显示/éšè—主èœå•" - -#: src/gtkui/ui_manager.c:56 -msgid "Show statusbar" -msgstr "" - -#: src/gtkui/ui_manager.c:57 -#, fuzzy -msgid "Show/hide statusbar" -msgstr "显示/éšè—播放列表" - -#: src/gtkui/ui_manager.c:69 src/gtkui/ui_manager.c:70 -#: src/skins/ui_manager.c:170 src/skins/ui_manager.c:171 -msgid "Pause" -msgstr "æš‚åœ" - -#: src/gtkui/ui_manager.c:72 src/gtkui/ui_manager.c:73 src/hotkey/gui.c:73 -#: src/skins/ui_manager.c:173 src/skins/ui_manager.c:174 -msgid "Stop" -msgstr "åœæ­¢" - -#: src/gtkui/ui_manager.c:75 src/gtkui/ui_manager.c:76 -#: src/skins/ui_manager.c:176 src/skins/ui_manager.c:177 -msgid "Previous" -msgstr "å‰ä¸€é¦–" - -#: src/gtkui/ui_manager.c:78 src/gtkui/ui_manager.c:79 -#: src/skins/ui_manager.c:179 src/skins/ui_manager.c:180 -msgid "Next" -msgstr "下一首" - -#: src/gtkui/ui_manager.c:84 src/skins/ui_manager.c:197 -msgid "Playlist" -msgstr "播放列表" - -#: src/gtkui/ui_manager.c:86 src/gtkui/ui_manager.c:87 -#: src/skins/ui_manager.c:199 src/skins/ui_manager.c:200 -msgid "New Playlist" -msgstr "创建播放列表" +#: src/gtkui/columns.c:36 +msgid "Title" +msgstr "标题" -#: src/gtkui/ui_manager.c:89 src/gtkui/ui_manager.c:90 -#: src/skins/ui_manager.c:208 src/skins/ui_manager.c:209 -msgid "Delete Playlist" -msgstr "删除播放列表" +#: src/gtkui/columns.c:37 +msgid "Artist" +msgstr "艺术家" + +#: src/gtkui/columns.c:37 +msgid "Year" +msgstr "年份" + +#: src/gtkui/columns.c:37 +msgid "Album" +msgstr "专辑" + +#: src/gtkui/columns.c:37 +msgid "Track" +msgstr "音轨" + +#: src/gtkui/columns.c:37 +msgid "Queue position" +msgstr "队列ä½ç½®" + +#: src/gtkui/columns.c:38 +msgid "Length" +msgstr "长度" + +#: src/gtkui/columns.c:38 +msgid "File path" +msgstr "文件路径" -#: src/gtkui/ui_manager.c:92 -#, fuzzy -msgid "Import Playlist ..." -msgstr "导入播放列表" +#: src/gtkui/columns.c:38 +msgid "File name" +msgstr "文件å" -#: src/gtkui/ui_manager.c:93 src/skins/ui_manager.c:212 -msgid "Loads a playlist file into the selected playlist." -msgstr "把列表加载到被选中的播放列表。" +#: src/gtkui/columns.c:38 +msgid "Custom title" +msgstr "自定标题" + +#: src/gtkui/columns.c:39 +msgid "Bitrate" +msgstr "比率" + +#: src/gtkui/columns.c:278 +msgid "Choose Columns" +msgstr "æ€é€‰åˆ—" + +#: src/gtkui/columns.c:292 +msgid "Available:" +msgstr "å¯ç”¨ï¼š" + +#: src/gtkui/columns.c:326 +msgid "Chosen:" +msgstr "选项:" + +#: src/gtkui/layout.c:122 +msgid "Dock at Left" +msgstr "é¢æ¿åœ¨å·¦" + +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "é¢æ¿åœ¨å³" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "é¢æ¿åœ¨ä¸Š" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "é¢æ¿åœ¨ä¸‹" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "æ— é¢æ¿" + +#: src/gtkui/layout.c:123 src/ladspa/plugin.c:639 +msgid "Disable" +msgstr "ç¦ç”¨" + +#: src/gtkui/menus.c:130 +msgid "_Open Files ..." +msgstr "打开文件(_O) ..." + +#: src/gtkui/menus.c:131 +msgid "Open _URL ..." +msgstr "打开URL(_U)..." + +#: src/gtkui/menus.c:132 +msgid "_Add File ..." +msgstr "添加文件(_A)..." + +#: src/gtkui/menus.c:133 +msgid "Add U_RL ..." +msgstr "添加URL(_R)..." + +#: src/gtkui/menus.c:135 +msgid "A_bout ..." +msgstr "关于(_b)" + +#: src/gtkui/menus.c:136 +msgid "_Preferences ..." +msgstr "首选项(_P)..." -#: src/gtkui/ui_manager.c:95 -#, fuzzy -msgid "Export Playlist ..." -msgstr "列出播放列表" +#: src/gtkui/menus.c:137 src/skins/ui_manager.c:406 +msgid "_Quit" +msgstr "退出(_Q)" -#: src/gtkui/ui_manager.c:96 src/skins/ui_manager.c:215 -msgid "Saves the selected playlist." -msgstr "ä¿å­˜è¢«é€‰ä¸­çš„播放列表" +#: src/gtkui/menus.c:140 +msgid "_Play" +msgstr "播放(_P)" + +#: src/gtkui/menus.c:141 +msgid "Paus_e" +msgstr "æš‚åœ(_e)" + +#: src/gtkui/menus.c:142 +msgid "_Stop" +msgstr "åœæ­¢(_S)" + +#: src/gtkui/menus.c:143 +msgid "Pre_vious" +msgstr "上一首(_v)" + +#: src/gtkui/menus.c:144 +msgid "_Next" +msgstr "下一首(_N)" + +#: src/gtkui/menus.c:146 +msgid "_Repeat" +msgstr "é‡å¤(_R)" + +#: src/gtkui/menus.c:147 +msgid "S_huffle" +msgstr "éšæœº(_h)" + +#: src/gtkui/menus.c:148 +msgid "N_o Playlist Advance" +msgstr "ç¦æ­¢è‡ªåŠ¨æ’­æ”¾ä¸‹ä¸€é¦–(_o)" + +#: src/gtkui/menus.c:149 +msgid "Stop _After This Song" +msgstr "完æˆåŽåœæ­¢(_A)" + +#: src/gtkui/menus.c:151 src/gtkui/menus.c:209 +msgid "Song _Info ..." +msgstr "歌曲信æ¯(_I)..." + +#: src/gtkui/menus.c:152 +msgid "Jump to _Time ..." +msgstr "跳到时间(_T)..." + +#: src/gtkui/menus.c:153 +msgid "_Jump to Song ..." +msgstr "跳到歌曲(_J)..." + +#: src/gtkui/menus.c:156 +msgid "By Track _Number" +msgstr "按音轨åºå·(_N)" + +#: src/gtkui/menus.c:157 +msgid "By _Title" +msgstr "按标题(_T)" + +#: src/gtkui/menus.c:158 +msgid "By _Artist" +msgstr "按艺术家(_A)" + +#: src/gtkui/menus.c:159 +msgid "By A_lbum" +msgstr "按专辑(_l)" + +#: src/gtkui/menus.c:160 +msgid "By Release _Date" +msgstr "按å‘表日期(_D)" + +#: src/gtkui/menus.c:161 +msgid "By _File Path" +msgstr "按文件路径(_F)" + +#: src/gtkui/menus.c:162 +msgid "By _Custom Title" +msgstr "按自定义标题(_C)" + +#: src/gtkui/menus.c:164 +msgid "R_everse Order" +msgstr "å转(_e)" + +#: src/gtkui/menus.c:165 +msgid "_Random Order" +msgstr "éšæœº(_R)" -#: src/gtkui/ui_manager.c:98 src/skins/ui_manager.c:217 -msgid "Save All Playlists" -msgstr "ä¿å­˜æ‰€æœ‰æ’­æ”¾åˆ—表" - -#: src/gtkui/ui_manager.c:99 src/skins/ui_manager.c:218 -msgid "" -"Saves all the playlists that are open. Note that this is done automatically " -"when Audacious quits." -msgstr "ä¿å­˜æ‰€æœ‰å·²æ‰“开的播放列表(其实Audacious退出时是会自动ä¿å­˜çš„)。" - -#: src/gtkui/ui_manager.c:103 -#, fuzzy -msgid "Refresh" +#: src/gtkui/menus.c:168 src/gtkui/menus.c:211 +msgid "_Refresh" msgstr "刷新(_R)" -#: src/gtkui/ui_manager.c:104 src/skins/ui_manager.c:223 -msgid "Refreshes metadata associated with a playlist entry." -msgstr "刷新播放列表的歌曲信æ¯" - -#: src/gtkui/ui_manager.c:107 -#, fuzzy -msgid "Playlist Manager" -msgstr "列表管ç†å™¨" - -#: src/gtkui/ui_manager.c:108 src/skins/ui_manager.c:227 -msgid "Opens the playlist manager." -msgstr "打开播放列表管ç†å™¨" - -#: src/gtkui/ui_manager.c:111 -#, fuzzy -msgid "Add URL ..." -msgstr "添加文件..." - -#: src/gtkui/ui_manager.c:112 src/skins/ui_manager.c:237 -msgid "Adds a remote track to the playlist." -msgstr "添加远程文件到播放列表" - -#: src/gtkui/ui_manager.c:115 -#, fuzzy -msgid "Add Files ..." -msgstr "添加文件..." - -#: src/gtkui/ui_manager.c:116 src/skins/ui_manager.c:241 -msgid "Adds files to the playlist." -msgstr "添加文件到播放列表。" - -#: src/gtkui/ui_manager.c:119 src/skins/ui_manager.c:264 -msgid "Remove All" -msgstr "删除全部" - -#: src/gtkui/ui_manager.c:120 src/skins/ui_manager.c:265 -msgid "Removes all entries from the playlist." -msgstr "从播放列表中删除所有æ¡ç›®ã€‚" - -#: src/gtkui/ui_manager.c:123 src/skins/ui_manager.c:290 -msgid "Remove Unselected" -msgstr "删除未被选中的" - -#: src/gtkui/ui_manager.c:124 src/skins/ui_manager.c:291 -msgid "Remove unselected entries from the playlist." -msgstr "从播放列表中删除未被选中的æ¡ç›®ã€‚" - -#: src/gtkui/ui_manager.c:127 src/skins/ui_manager.c:294 -msgid "Remove Selected" -msgstr "删除被选中的" - -#: src/gtkui/ui_manager.c:128 src/skins/ui_manager.c:295 -msgid "Remove selected entries from the playlist." -msgstr "从播放列表中删除被选中的æ¡ç›®ã€‚" - -#: src/gtkui/ui_manager.c:131 -#, fuzzy -msgid "Sort" -msgstr "端å£" - -#: src/gtkui/ui_manager.c:132 src/skins/ui_manager.c:330 -#: src/skins/ui_manager.c:360 -msgid "By Track Number" -msgstr "æ ¹æ®éŸ³è½¨å·ç " - -#: src/gtkui/ui_manager.c:134 src/skins/ui_manager.c:278 -#: src/skins/ui_manager.c:306 src/skins/ui_manager.c:336 -msgid "By Title" -msgstr "æ ¹æ®æ ‡é¢˜" - -#: src/gtkui/ui_manager.c:136 src/skins/ui_manager.c:314 -#: src/skins/ui_manager.c:344 -msgid "By Artist" -msgstr "æ ¹æ®è‰ºæœ¯å®¶" - -#: src/gtkui/ui_manager.c:138 src/skins/ui_manager.c:310 -#: src/skins/ui_manager.c:340 -msgid "By Album" -msgstr "æ ¹æ®ä¸“辑" - -#: src/gtkui/ui_manager.c:140 -#, fuzzy -msgid "By File Path" -msgstr "æ ¹æ®æ–‡ä»¶å" - -#: src/gtkui/ui_manager.c:142 -#, fuzzy -msgid "Reverse Order" -msgstr "å转列表" - -#: src/gtkui/ui_manager.c:147 -msgid "Output" -msgstr "输出" - -#: src/gtkui/ui_manager.c:149 src/modplug/gui/interface.cxx:572 -msgid "Effects" -msgstr "音效" - -#: src/gtkui/ui_manager.c:151 -msgid "Equalizer" -msgstr "å‡è¡¡å™¨" - -#: src/gtkui/ui_manager.c:156 src/skins/ui_manager.c:232 -msgid "View" -msgstr "外观" - -#: src/gtkui/ui_manager.c:157 src/skins/ui_manager.c:233 -#, fuzzy -msgid "Interface" -msgstr "gntç•Œé¢" - -#: src/gtkui/ui_manager.c:164 src/skins/ui_manager.c:370 -msgid "File" -msgstr "文件" - -#: src/gtkui/ui_manager.c:167 -msgid "Components" -msgstr "组件" - -#: src/gtkui/ui_manager.c:169 src/gtkui/ui_manager.c:172 -#: src/skins/ui_manager.c:375 src/skins/ui_manager.c:378 -msgid "View Track Details" -msgstr "查看音轨信æ¯" - -#: src/gtkui/ui_manager.c:170 src/gtkui/ui_manager.c:173 -#: src/skins/ui_manager.c:376 src/skins/ui_manager.c:379 -msgid "View track details" -msgstr "查看音轨信æ¯" - -#: src/gtkui/ui_manager.c:175 src/gtkui/ui_manager.c:176 -#: src/skins/ui_manager.c:381 src/skins/ui_manager.c:382 -msgid "About Audacious" -msgstr "关于Audacious" - -#: src/gtkui/ui_manager.c:178 -#, fuzzy -msgid "Open Files ..." -msgstr "打开文件" - -#: src/gtkui/ui_manager.c:179 src/skins/ui_manager.c:385 -msgid "Load and play a file" -msgstr "加载并播放文件" - -#: src/gtkui/ui_manager.c:181 -msgid "Open URL ..." -msgstr "" - -#: src/gtkui/ui_manager.c:182 src/skins/ui_manager.c:388 -msgid "Play media from the selected location" -msgstr "播放被选中ä½ç½®çš„文件" - -#: src/gtkui/ui_manager.c:184 src/skins/ui_manager.c:390 -msgid "Plugin services" -msgstr "æ’件æœåŠ¡" - -#: src/gtkui/ui_manager.c:186 src/skins/ui_manager.c:392 -msgid "Preferences" -msgstr "首选项" +#: src/gtkui/menus.c:170 +msgid "_Sort" +msgstr "排åº(_S)" + +#: src/gtkui/menus.c:172 +msgid "_New" +msgstr "新建(_N)" -#: src/gtkui/ui_manager.c:187 src/skins/ui_manager.c:393 -msgid "Open preferences window" -msgstr "打开首选项窗å£" +#: src/gtkui/menus.c:173 src/gtkui/menus.c:222 +msgid "_Close" +msgstr "关闭(_C)" -#: src/gtkui/ui_manager.c:189 src/skins/ui_manager.c:395 -msgid "_Quit" -msgstr "退出(_Q)" +#: src/gtkui/menus.c:175 +msgid "_Import ..." +msgstr "导入(_I)..." + +#: src/gtkui/menus.c:176 +msgid "_Export ..." +msgstr "导出(_E)..." + +#: src/gtkui/menus.c:178 +msgid "_Playlist Manager ..." +msgstr "播放列表管ç†å™¨(_P)..." + +#: src/gtkui/menus.c:179 +msgid "_Queue Manager ..." +msgstr "队列管ç†å™¨(_Q)..." + +#: src/gtkui/menus.c:182 +msgid "Volume _Up" +msgstr "调高音é‡(_U)" + +#: src/gtkui/menus.c:183 +msgid "Volume _Down" +msgstr "调低音é‡(_D)" + +#: src/gtkui/menus.c:185 +msgid "_Equalizer" +msgstr "å‡è¡¡å™¨(_E)" + +#: src/gtkui/menus.c:187 +msgid "E_ffects" +msgstr "音效(_f)" + +#: src/gtkui/menus.c:190 +msgid "_Interface" +msgstr "ç•Œé¢(_I)" + +#: src/gtkui/menus.c:192 +msgid "Show _Menu Bar" +msgstr "显示èœå•(_M)" + +#: src/gtkui/menus.c:193 +msgid "Show I_nfo Bar" +msgstr "显示信æ¯åŒºåŸŸ(_n)" + +#: src/gtkui/menus.c:194 +msgid "Show _Status Bar" +msgstr "显示状æ€æ (_S)" + +#: src/gtkui/menus.c:196 +msgid "Show Column _Headers" +msgstr "显示表头(_H)" + +#: src/gtkui/menus.c:197 +msgid "Choose _Columns ..." +msgstr "æ€é€‰åˆ—(_C)..." + +#: src/gtkui/menus.c:198 +msgid "Scrol_l on Song Change" +msgstr "歌曲改å˜æ—¶æ»šåŠ¨(_l)" + +#: src/gtkui/menus.c:201 +msgid "_File" +msgstr "文件(_F)" + +#: src/gtkui/menus.c:202 +msgid "_Playback" +msgstr "回放(_P)" + +#: src/gtkui/menus.c:203 +msgid "P_laylist" +msgstr "播放列表(_l)" + +#: src/gtkui/menus.c:204 src/gtkui/menus.c:218 +msgid "_Services" +msgstr "æœåŠ¡(_S)" + +#: src/gtkui/menus.c:205 +msgid "_Output" +msgstr "输出(_O)" + +#: src/gtkui/menus.c:206 +msgid "_View" +msgstr "外观(_V)" + +#: src/gtkui/menus.c:210 +msgid "_Queue/Unqueue" +msgstr "入队ï¼å‡ºåˆ—(_Q)" + +#: src/gtkui/menus.c:213 +msgid "Cu_t" +msgstr "剪切(_t)" + +#: src/gtkui/menus.c:214 +msgid "_Copy" +msgstr "å¤åˆ¶(_C)" + +#: src/gtkui/menus.c:215 +msgid "_Paste" +msgstr "粘贴(_P)" + +#: src/gtkui/menus.c:216 +msgid "Select _All" +msgstr "选中全部(_A)" + +#: src/gtkui/menus.c:221 +msgid "_Rename" +msgstr "é‡å‘½å(_R)" -#: src/gtkui/ui_manager.c:190 src/skins/ui_manager.c:396 -msgid "Quit Audacious" -msgstr "退出Audacious" +#: src/gtkui/ui_gtk.c:95 +msgid "GTK Interface" +msgstr "GTKç•Œé¢" -#: src/gtkui/ui_manager.c:192 src/gtkui/ui_manager.c:193 -#: src/skins/ui_manager.c:398 src/skins/ui_manager.c:399 -msgid "Set A-B" +#: src/gtkui/ui_gtk.c:154 src/skins/ui_main.c:302 +#, c-format +msgid "%s - Audacious" msgstr "" -#: src/gtkui/ui_manager.c:195 src/gtkui/ui_manager.c:196 -#: src/skins/ui_manager.c:401 src/skins/ui_manager.c:402 -msgid "Clear A-B" +#: src/gtkui/ui_gtk.c:160 src/skins/ui_main.c:304 src/skins/ui_main.c:1499 +msgid "Audacious" msgstr "" -#: src/gtkui/ui_manager.c:198 src/gtkui/ui_manager.c:199 -#: src/skins/ui_manager.c:404 src/skins/ui_manager.c:405 -msgid "Jump to Playlist Start" -msgstr "跳到被选中列表并播放" - -#: src/gtkui/ui_manager.c:201 src/gtkui/ui_manager.c:202 src/hotkey/gui.c:80 -#: src/skins/ui_manager.c:407 src/skins/ui_manager.c:408 -msgid "Jump to File" -msgstr "跳到文件" - -#: src/gtkui/ui_manager.c:207 src/skins/ui_manager.c:413 -msgid "Queue Toggle" -msgstr "队列切æ¢" - -#: src/gtkui/ui_manager.c:208 src/skins/ui_manager.c:414 -msgid "Enables/disables the entry in the playlist's queue." -msgstr "å¯ç”¨/ç¦ç”¨æ’­æ”¾é˜Ÿåˆ—çš„æ¡ç›®" - -#: src/gtkui/ui_manager.c:211 src/skins/ui_manager.c:417 -msgid "Copy" -msgstr "å¤åˆ¶" - -#: src/gtkui/ui_manager.c:214 src/skins/ui_manager.c:419 -msgid "Cut" -msgstr "剪切" - -#: src/gtkui/ui_manager.c:217 src/skins/ui_manager.c:421 -msgid "Paste" -msgstr "粘贴" - -#: src/gtkui/ui_manager.c:220 src/skins/ui_manager.c:254 -msgid "Select All" -msgstr "选中全部" - -#: src/gtkui/ui_manager.c:221 src/skins/ui_manager.c:255 -msgid "Selects all of the playlist entries." -msgstr "选中播放列表中的所有æ¡ç›®ã€‚" - -#: src/gtkui/ui_manager.c:224 src/skins/ui_manager.c:258 -msgid "Select None" -msgstr "å–消选中" - -#: src/gtkui/ui_manager.c:225 src/skins/ui_manager.c:259 -msgid "Deselects all of the playlist entries." -msgstr "å–消对播放列表的选择" +#: src/gtkui/ui_gtk.c:206 src/skins/plugin.c:185 +msgid "Error" +msgstr "错误" -#: src/gtkui/ui_statusbar.c:91 src/skins/ui_main.c:609 +#: src/gtkui/ui_statusbar.c:102 src/skins/ui_main.c:459 msgid "mono" msgstr "å•å£°é“" -#: src/gtkui/ui_statusbar.c:94 src/skins/ui_main.c:608 +#: src/gtkui/ui_statusbar.c:104 src/skins/ui_main.c:458 msgid "stereo" -msgstr "å•ä½“声" +msgstr "立体声" -#: src/gtkui/ui_statusbar.c:97 -#, fuzzy, c-format -msgid "%d channels" -msgstr "声é“" +#: src/gtkui/ui_statusbar.c:106 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "%d声é“" -#: src/gtkui/ui_statusbar.c:101 +#: src/gtkui/ui_statusbar.c:121 #, c-format -msgid "%s: %d kbps, %d Hz, %s" +msgid "%d kbps" msgstr "" -#: src/hotkey/gui.c:70 +#: src/hotkey/gui.c:71 msgid "Previous Track" -msgstr "å‰ä¸€é¦–" +msgstr "上一首" + +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "播放" -#: src/hotkey/gui.c:72 +#: src/hotkey/gui.c:73 msgid "Pause/Resume" msgstr "æš‚åœ/继续" -#: src/hotkey/gui.c:74 +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +msgid "Stop" +msgstr "åœæ­¢" + +#: src/hotkey/gui.c:75 msgid "Next Track" msgstr "下一首" -#: src/hotkey/gui.c:75 +#: src/hotkey/gui.c:76 msgid "Forward 5 Seconds" msgstr "å¿«è¿›5秒" -#: src/hotkey/gui.c:76 +#: src/hotkey/gui.c:77 msgid "Rewind 5 Seconds" msgstr "快退5秒" -#: src/hotkey/gui.c:77 +#: src/hotkey/gui.c:78 msgid "Mute" msgstr "é™éŸ³" -#: src/hotkey/gui.c:78 +#: src/hotkey/gui.c:79 msgid "Volume Up" msgstr "调高音é‡" -#: src/hotkey/gui.c:79 +#: src/hotkey/gui.c:80 msgid "Volume Down" msgstr "调低音é‡" -#: src/hotkey/gui.c:81 +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Jump to File" +msgstr "跳到文件" + +#: src/hotkey/gui.c:82 msgid "Toggle Player Windows" msgstr "播放窗å£åˆ‡æ¢" -#: src/hotkey/gui.c:82 +#: src/hotkey/gui.c:83 msgid "Show On-Screen-Display" msgstr "显示On-Screen-Display" -#: src/hotkey/gui.c:92 +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "é‡å¤" + +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "éšæœº" + +#: src/hotkey/gui.c:95 msgid "(none)" msgstr "(æ— )" -#: src/hotkey/gui.c:229 +#: src/hotkey/gui.c:232 msgid "" "It is not recommended to bind the primary mouse buttons without " "modificators.\n" "\n" "Do you want to continue?" -msgstr "" -"绑定主鼠标键是ä¸æŽ¨èçš„åšæ³•ã€‚\n" -"è¦ç»§ç»­å—?" +msgstr "并ä¸å»ºè®®ç»‘定鼠标主键。è¦ç»§ç»­å—?" -#: src/hotkey/gui.c:231 +#: src/hotkey/gui.c:234 msgid "Binding mouse buttons" -msgstr "鼠标键绑定" +msgstr "绑定鼠标按键" -#: src/hotkey/gui.c:381 +#: src/hotkey/gui.c:384 msgid "Global Hotkey Plugin Configuration" msgstr "全局热键æ’件设置" -#: src/hotkey/gui.c:397 +#: src/hotkey/gui.c:400 msgid "" "Press a key combination inside a text field.\n" "You can also bind mouse buttons." msgstr "请在文本区按下è¦ç»‘定的组åˆé”®ï¼Œä½ äº¦å¯ä»¥ç»‘定鼠标键" -#: src/hotkey/gui.c:402 +#: src/hotkey/gui.c:405 msgid "Hotkeys:" msgstr "热键:" -#: src/hotkey/gui.c:421 +#: src/hotkey/gui.c:424 msgid "Action:" msgstr "动作:" -#: src/hotkey/gui.c:429 +#: src/hotkey/gui.c:432 msgid "Key Binding:" -msgstr "é”®ä½ç»‘定:" +msgstr "é”®ä½ç»‘定:" -#: src/hotkey/gui.c:660 +#: src/hotkey/gui.c:663 msgid "About Global Hotkey Plugin" msgstr "关于全局热键æ’件" -#: src/hotkey/gui.c:661 +#: src/hotkey/gui.c:664 msgid "" "Global Hotkey Plugin\n" "Control the player with global key combinations or multimedia keys.\n" @@ -2883,41 +2084,46 @@ msgstr "" "全局热键æ’件\n" "通过组åˆé”®æˆ–多媒体键控制播放器。\n" -"版æƒæ‰€æœ‰ (C) 2007-2008 Sascha Hlusiak \n" +"版æƒæ‰€æœ‰ (C)\n" +"2007-2008\n" +"Sascha Hlusiak \n" "\n" "其它贡献者:\n" -"版æƒæ‰€æœ‰ (C) 2006-2007 Vladimir Paskov \n" -"版æƒæ‰€æœ‰ (C) 2000-2002 Ville Syrjälä \n" -"\t\t\tBryn Davies \n" -"\t\t\tJonathan A. Davis \n" -"\t\t\tJeremy Tan \n" +"版æƒæ‰€æœ‰ (C)\n" +"2006-2007\n" +"Vladimir Paskov \n" +"2000-2002\n" +"Ville Syrjälä \n" +"Bryn Davies \n" +"Jonathan A. Davis \n" +"Jeremy Tan \n" "\n" -#: src/jack/configure.c:71 +#: src/jack/configure.c:66 msgid "Connect to all available jack ports" msgstr "连接到所有å¯ç”¨çš„Jack端å£" -#: src/jack/configure.c:78 +#: src/jack/configure.c:73 msgid "Connect only the output ports" msgstr "仅连接到输出端å£" -#: src/jack/configure.c:85 +#: src/jack/configure.c:80 msgid "Connect to no ports" msgstr "ä¸è¿žæŽ¥åˆ°ä»»ä½•ç«¯å£" -#: src/jack/configure.c:103 +#: src/jack/configure.c:98 msgid "jack Plugin configuration" msgstr "Jackæ’件设置" -#: src/jack/configure.c:121 +#: src/jack/configure.c:116 msgid "Connection mode:" msgstr "连接模å¼ï¼š" -#: src/jack/configure.c:133 +#: src/jack/configure.c:128 msgid "Enable debug printing" msgstr "å¯ç”¨è°ƒè¯•è¾“出" -#: src/jack/jack.c:437 +#: src/jack/jack.c:422 msgid "" "XMMS jack Driver 0.17\n" "\n" @@ -2934,145 +2140,79 @@ "\n" "Audacious版由Giacomo Lozito(develia.org)移æ¤" -#: src/jack/jack.c:442 +#: src/jack/jack.c:427 msgid "About JACK Output Plugin 0.17" msgstr "关于JACK输出æ’件0.17" -#: src/ladspa/ladspa.c:824 -msgid "This LADSPA plugin has no user controls" -msgstr "LADSPAæ’件未被其它人所用" - -#: src/ladspa/ladspa.c:865 src/ladspa/ladspa.c:952 -msgid "Name" -msgstr "åå­—" - -#: src/ladspa/ladspa.c:952 -msgid "UID" -msgstr "UID" - -#: src/ladspa/ladspa.c:1029 -msgid "Installed plugins" -msgstr "已安装æ’件" - -#: src/ladspa/ladspa.c:1037 -msgid "Running plugins" -msgstr "è¿è¡Œä¸­çš„æ’件" - -#: src/ladspa/ladspa.c:1052 -msgid "Add" -msgstr "添加" +#: src/ladspa/plugin.c:410 +msgid "About LADSPA Host" +msgstr "" -#: src/ladspa/ladspa.c:1055 -msgid "Remove" -msgstr "删除" +#: src/ladspa/plugin.c:511 +#, c-format +msgid "%s Settings" +msgstr "%s 设置" -#: src/ladspa/ladspa.c:1066 -msgid "LADSPA Plugin Catalog" -msgstr "LDASPAæ’件分类" - -#: src/lirc/about.c:63 -msgid "About LIRC Audacious Plugin" -msgstr "关于LIRC Audaciousæ’件" - -#: src/lirc/about.c:90 -msgid "LIRC Plugin " -msgstr "LIRCæ’件" - -#: src/lirc/about.c:92 -msgid "" -"\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n" -"\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org" -msgstr "" -"\n" -"一个让你通过LIRC控制Audaciousçš„å°æ’件。\n" -"ç”±Tony Vroon 用XMMS LIRCæ’件为Audacious进行移æ¤ã€‚\n" -"XMMS LIRCæ’件作者:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"ä½ å¯ä»¥åœ¨http://lirc.org上找到更多关于LIRCçš„ä¿¡æ¯" - -#: src/lirc/interface.c:37 -msgid "LIRC plugin settings" -msgstr "LIRCæ’件设置" - -#: src/lirc/interface.c:61 -msgid "Reconnect to LIRC server" -msgstr "é‡æ–°è¿žæŽ¥åˆ°LIRCæœåŠ¡å™¨" - -#: src/lirc/interface.c:68 -msgid "Timeout before reconnecting (seconds): " -msgstr "超时åŽå°è¯•é‡æ–°è¿žæŽ¥(秒):" - -#: src/lirc/interface.c:75 -msgid "Reconnect" -msgstr "é‡æ–°è¿žæŽ¥" - -#: src/lirc/interface.c:79 -msgid "Connection" -msgstr "连接" +#: src/ladspa/plugin.c:579 +msgid "LADSPA Host Settings" +msgstr "LADSPA主机设置" -#: src/lirc/lirc.c:82 -#, c-format -msgid "%s: could not init LIRC support\n" -msgstr "%s: 无法åˆå§‹åŒ–LIRCæœåŠ¡\n" +#: src/ladspa/plugin.c:588 +msgid "Module paths:" +msgstr "模å—路径:" -#: src/lirc/lirc.c:90 -#, c-format +#: src/ladspa/plugin.c:593 msgid "" -"%s: could not read LIRC config file\n" -"%s: please read the documentation of LIRC\n" -"%s: how to create a proper config file\n" -msgstr "" -"%s: 未能读å–LIRC的设置文件\n" -"%s: 请阅读LIRC相关文档\n" -"%s: 并创建正确的设置文件\n" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." +msgstr "" -#: src/lirc/lirc.c:117 -#, c-format -msgid "%s: trying to reconnect...\n" -msgstr "%s: æ­£å°è¯•é‡æ–°è¿žæŽ¥...\n" +#: src/ladspa/plugin.c:609 +msgid "Available plugins:" +msgstr "å¯ç”¨æ’件:" -#: src/lirc/lirc.c:332 -#, c-format -msgid "%s: unknown command \"%s\"\n" -msgstr "%s: 未知指令 \"%s\"\n" +#: src/ladspa/plugin.c:621 +msgid "Enable" +msgstr "å¯ç”¨" -#: src/lirc/lirc.c:342 -#, c-format -msgid "%s: disconnected from LIRC\n" -msgstr "%s: 已从LIRC上断开连接\n" +#: src/ladspa/plugin.c:627 +msgid "Enabled plugins:" +msgstr "å·²å¯ç”¨æ’件:" -#: src/lirc/lirc.c:346 -#, c-format -msgid "%s: will try reconnect every %d seconds...\n" -msgstr "%s: å°è¯•æ¯%d秒é‡æ–°è¿žæŽ¥ä¸€æ¬¡...\n" +#: src/ladspa/plugin.c:642 +msgid "Settings" +msgstr "设置" + +#: src/lyricwiki/lyricwiki.c:227 +msgid "" +"\n" +"Looking for lyrics..." +msgstr "" +"\n" +"正在æœç´¢æ­Œè¯..." -#: src/lyricwiki/lyricwiki.c:244 -msgid "LyricWiki" +#: src/lyricwiki/lyricwiki.c:250 +msgid "" +"\n" +"Connecting to lyrics.wikia.com..." msgstr "" +"\n" +"正在连接到lyrics.wikia.com..." -#: src/lyricwiki/lyricwiki.c:337 -#, fuzzy +#: src/lyricwiki/lyricwiki.c:338 msgid "" "\n" "No lyrics were found." -msgstr "未找到设备ï¼" +msgstr "" +"\n" +"未找到相关歌è¯ã€‚" -#: src/metronom/metronom.c:90 +#: src/metronom/metronom.c:85 msgid "About Metronom" msgstr "关于Metronom" -#: src/metronom/metronom.c:91 +#: src/metronom/metronom.c:86 msgid "" "A Tact Generator by Martin Strauss \n" "\n" @@ -3081,345 +2221,146 @@ "or tact://60*3/4 to play 60 bpm in 3/4 tacts" msgstr "" -#: src/metronom/metronom.c:145 +#: src/metronom/metronom.c:143 #, c-format msgid "Tact generator: %d bpm" msgstr "" -#: src/metronom/metronom.c:147 +#: src/metronom/metronom.c:145 #, c-format msgid "Tact generator: %d bpm %d/%d" msgstr "" -#: src/modplug/gui/interface.cxx:137 -msgid "ModPlug Configuration" -msgstr "ModPlug设置" - -#: src/modplug/gui/interface.cxx:174 -msgid "16 bit" -msgstr "" +#: src/mixer/plugin.c:63 +msgid "About Channel Mixer" +msgstr "关于通é“æ··åˆå™¨" + +#: src/mixer/plugin.c:92 +msgid "Channel Mixer Settings" +msgstr "通é“æ··åˆå™¨è®¾ç½®" + +#: src/mixer/plugin.c:101 +msgid "Output channels:" +msgstr "输出通é“:" + +#: src/mixer/plugin.c:111 +msgid "Changes take effect at the next song change." +msgstr "修改将在下一首歌生效。" -#: src/modplug/gui/interface.cxx:181 -msgid "8 bit" -msgstr "" +#: src/mpg123/mpg123.c:183 +msgid "Surround" +msgstr "环绕音" -#: src/modplug/gui/interface.cxx:212 -msgid "Mono (downmix)" -msgstr "å•éŸ³é“(downmix)" +#: src/mtp_up/mtp.c:298 +msgid "Upload in progress..." +msgstr "正在上传..." -#: src/modplug/gui/interface.cxx:241 -msgid "Nearest (fastest)" -msgstr "最接近(最快)" +#: src/mtp_up/mtp.c:310 +msgid "Upload to MTP Device" +msgstr "正上传到MTP设备 " + +#: src/mtp_up/mtp.c:311 +msgid "Disconnect MTP Device" +msgstr "断开与MTP设备的连接" + +#: src/notify/libnotify-aosd_event.c:47 +msgid "Stopped" +msgstr "å·²åœæ­¢" + +#: src/notify/libnotify-aosd_event.c:47 +msgid "Audacious is not playing." +msgstr "Audacious未开始播放" -#: src/modplug/gui/interface.cxx:248 -msgid "Linear (fast)" -msgstr "线性(快速)" +#: src/null/null.c:64 +msgid "Null output plugin " +msgstr "Null Outputæ’件 " -#: src/modplug/gui/interface.cxx:255 -msgid "Spline (good quality)" -msgstr "" - -#: src/modplug/gui/interface.cxx:262 -msgid "8-tap Fir (extremely high quality)" -msgstr "" - -#: src/modplug/gui/interface.cxx:286 -msgid "96 kHz" -msgstr "" - -#: src/modplug/gui/interface.cxx:293 -msgid "48 kHz" -msgstr "" - -#: src/modplug/gui/interface.cxx:300 -msgid "44 kHz" -msgstr "" - -#: src/modplug/gui/interface.cxx:307 -msgid "22 kHz" -msgstr "" - -#: src/modplug/gui/interface.cxx:315 -msgid "Sampling Rate" -msgstr "å–样率" - -#: src/modplug/gui/interface.cxx:349 src/modplug/gui/interface.cxx:411 -#: src/modplug/gui/interface.cxx:477 src/modplug/gui/interface.cxx:539 -msgid "Enable" -msgstr "å¯ç”¨" - -#: src/modplug/gui/interface.cxx:378 src/modplug/gui/interface.cxx:506 -msgid "Depth" -msgstr "" - -#: src/modplug/gui/interface.cxx:386 src/modplug/gui/interface.cxx:514 -msgid "Delay" -msgstr "延时" - -#: src/modplug/gui/interface.cxx:394 -msgid "Reverb" -msgstr "" - -#: src/modplug/gui/interface.cxx:440 -msgid "Amount" -msgstr "" - -#: src/modplug/gui/interface.cxx:448 -msgid "Range" -msgstr "范围" - -#: src/modplug/gui/interface.cxx:456 -msgid "Bass Boost" -msgstr "" - -#: src/modplug/gui/interface.cxx:522 src/mpg123/mpg123.c:174 -msgid "Surround" -msgstr "围绕音" - -#: src/modplug/gui/interface.cxx:561 -msgid "" -"Note: Setting the preamp\n" -"too high may cause clipping\n" -"(annoying clicks and pops)!" -msgstr "" - -#: src/modplug/gui/interface.cxx:567 -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "Preamp" -msgstr "å‰ç½®æ”¾å¤§" - -#: src/modplug/gui/interface.cxx:601 -msgid "Use Filename as Song Title" -msgstr "用文件å作为歌曲标题" - -#: src/modplug/gui/interface.cxx:606 -msgid "Fast Playlist Info" -msgstr "快速播放列表信æ¯" - -#: src/modplug/gui/interface.cxx:617 -msgid "Noise Reduction" -msgstr "é™å™ª" - -#: src/modplug/gui/interface.cxx:623 -msgid "Play Amiga MOD" -msgstr "播放Amiga MOD" - -#: src/modplug/gui/interface.cxx:646 -msgid "Don't loop" -msgstr "ä¸è¦å¾ªçŽ¯" - -#: src/modplug/gui/interface.cxx:658 -msgid "Loop" -msgstr "循环" - -#: src/modplug/gui/interface.cxx:671 -msgid "time(s)" -msgstr "时间(s)" - -#: src/modplug/gui/interface.cxx:677 -msgid "Loop forever" -msgstr "æ— é™å¾ªçŽ¯" - -#: src/modplug/gui/interface.cxx:684 -msgid "Looping" -msgstr "循环" - -#: src/modplug/gui/interface.cxx:859 -msgid "MOD Info" -msgstr "MODä¿¡æ¯" - -#: src/modplug/gui/interface.cxx:878 -msgid "" -"Filename:\n" -"Title:\n" -"Type:\n" -"Length:\n" -"Speed:\n" -"Tempo:\n" -"Samples:\n" -"Instruments:\n" -"Patterns:\n" -"Channels:" -msgstr "" - -#: src/modplug/gui/interface.cxx:883 -msgid "" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---\n" -"---" -msgstr "" - -#: src/modplug/gui/interface.cxx:913 -msgid "Samples" -msgstr "å–æ ·" - -#: src/modplug/gui/interface.cxx:938 -msgid "Instruments" -msgstr "ä¹å™¨" - -#: src/modplug/gui/interface.cxx:959 -msgid "Message" -msgstr "ä¿¡æ¯" - -#: src/modplug/gui/main.cxx:51 -msgid "Modplug Input Plugin for Audacious ver" -msgstr "Audaciousçš„Modplug输入æ’件" - -#: src/modplug/gui/main.cxx:52 -msgid "" -"\n" -"Modplug sound engine written by Olivier Lapicque.\n" -"XMMS interface for Modplug by Kenton Varda.\n" -"(c)2000 Olivier Lapicque and Kenton Varda.\n" -"Updates and maintenance by Konstanty Bialkowski.\n" -"Ported to BMP by Theofilos Intzoglou." -msgstr "" - -#: src/modplug/gui/main.cxx:55 -msgid "About Modplug" -msgstr "关于Modplug" - -#: src/modplug/gui/support.cxx:90 src/modplug/gui/support.cxx:114 -#: src/sid/xs_glade.c:90 src/sid/xs_glade.c:114 -#, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "无法找到pixmap文件: %s" - -#: src/mtp_up/mtp.c:35 -msgid "Upload selected track(s)" -msgstr "上传选中的文件" - -#: src/mtp_up/mtp.c:291 -msgid "Upload in progress..." -msgstr "正在上传..." - -#: src/mtp_up/mtp.c:300 -msgid "MTP device handler" -msgstr "MTP设备å¥æŸ„" - -#: src/mtp_up/mtp.c:304 -msgid "Disconnect the device" -msgstr "正在断开与设备的连接" - -#: src/null/null.c:63 -msgid "Null output plugin " -msgstr "Null输出æ’件" - -#: src/null/null.c:64 +#: src/null/null.c:65 msgid "" " by Christian Birchinger \n" "based on the XMMS plugin by HÃ¥vard KvÃ¥l " msgstr "" "Christian Birchinger \n" -"基于HÃ¥vard KvÃ¥l çš„XMMSæ’件生æˆ" +"基于HÃ¥vard KvÃ¥l çš„XMMSæ’件" -#: src/null/null.c:67 +#: src/null/null.c:68 msgid "About Null Output" msgstr "关于Null Output" -#: src/null/null.c:93 +#: src/null/null.c:89 msgid "Null output preferences" msgstr "Null输出设置" -#: src/null/null.c:102 +#: src/null/null.c:100 msgid "Run in real time" -msgstr "以实时方å¼è¿è¡Œ" +msgstr "以实时模å¼è¿è¡Œ" -#: src/oss4/configure.c:89 +#: src/oss4/configure.c:84 msgid "1. Default device" msgstr "1. 默认设备" -#: src/oss4/configure.c:151 +#: src/oss4/configure.c:142 msgid "OSS4 Output Plugin Preferences" msgstr "OSS4输出æ’件首选项" -#: src/oss4/configure.c:163 src/OSS/configure.c:213 src/sun/configure.c:181 +#: src/oss4/configure.c:154 src/OSS/configure.c:194 msgid "Audio device:" msgstr "音频设备:" -#: src/oss4/configure.c:189 src/OSS/configure.c:235 src/OSS/configure.c:276 +#: src/oss4/configure.c:182 src/OSS/configure.c:217 src/OSS/configure.c:260 msgid "Use alternate device:" msgstr "使用其它设备" -#: src/oss4/configure.c:202 +#: src/oss4/configure.c:197 msgid "Save volume between sessions" msgstr "会è¯ä¸­ä¿å­˜éŸ³é‡" -#: src/oss4/configure.c:206 +#: src/oss4/configure.c:201 msgid "Enable format conversions made by the OSS software." msgstr "使用OSSçš„æ ¼å¼è½¬æ¢ã€‚" -#: src/oss4/plugin.c:54 +#: src/oss4/plugin.c:51 msgid "About OSS4 Plugin" msgstr "关于OSS4æ’件" -#: src/oss4/plugin.c:55 -msgid "" -"OSS4 Output Plugin for Audacious\n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"I would like to thank people on #audacious, especially Tony Vroon and John " -"Lindgren and of course the authors of the previous OSS plugin.\n" -"\n" -"This program is free software: you can redistribute it and/or modify it " -"under the terms of the GNU General Public License as published by the Free " -"Software Foundation, either version 3 of the License, or (at your option) " -"any later version.\n" -"\n" -"This program 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 General Public License for " -"more details.\n" -"\n" -"You should have received a copy of the GNU General Public License along with " -"this program. If not, see .\n" -msgstr "" - #: src/oss4/utils.c:204 msgid "OSS4 error" msgstr "OSS4错误" -#: src/OSS/configure.c:148 +#: src/OSS/configure.c:137 #, c-format msgid "Default (%s)" msgstr "默认(%s)" -#: src/OSS/configure.c:197 +#: src/OSS/configure.c:178 msgid "OSS Driver configuration" msgstr "OSS驱动设置" -#: src/OSS/configure.c:298 src/sun/configure.c:246 +#: src/OSS/configure.c:281 msgid "Devices" msgstr "设备" -#: src/OSS/configure.c:300 src/sun/configure.c:257 +#: src/OSS/configure.c:283 msgid "Buffering:" msgstr "缓存:" -#: src/OSS/configure.c:313 src/sun/configure.c:288 +#: src/OSS/configure.c:296 msgid "Pre-buffer (percent):" msgstr "预缓存(百分之):" -#: src/OSS/configure.c:324 src/sun/configure.c:302 +#: src/OSS/configure.c:307 msgid "Buffering" msgstr "缓存" -#: src/OSS/configure.c:325 +#: src/OSS/configure.c:308 msgid "Mixer Settings:" msgstr "混音设置" -#: src/OSS/configure.c:331 +#: src/OSS/configure.c:314 msgid "Volume controls Master not PCM" msgstr "音é‡æŽ§åˆ¶çš„是Master,而éžPCM" -#: src/OSS/configure.c:337 src/sun/configure.c:392 +#: src/OSS/configure.c:320 msgid "Mixer" msgstr "混音器" @@ -3427,99 +2368,59 @@ msgid "About OSS Driver" msgstr "关于OSS驱动" -#: src/OSS/OSS.c:41 -msgid "" -"Audacious OSS Driver\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" - -#: src/pulse_audio/pulse_audio.c:691 +#: src/pulse_audio/pulse_audio.c:687 msgid "About Audacious PulseAudio Output Plugin" msgstr "关于Audacious PulseAudio输出æ’件" -#: src/pulse_audio/pulse_audio.c:692 -msgid "" -"Audacious PulseAudio Output Plugin\n" -"\n" -" This program is free software; you can redistribute it and/or modify\n" -"it under the terms of the GNU General Public License as published by\n" -"the Free Software Foundation; either version 2 of the License, or\n" -"(at your option) any later version.\n" -"\n" -"This program is distributed in the hope that it will be useful,\n" -"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -"GNU General Public License for more details.\n" -"\n" -"You should have received a copy of the GNU General Public License\n" -"along with this program; if not, write to the Free Software\n" -"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" -"USA." -msgstr "" - -#: src/resample/plugin.c:78 +#: src/resample/plugin.c:89 msgid "About Sample Rate Converter Plugin" -msgstr "关于Sample Rate转æ¢æ’件" +msgstr "关于å–样率转æ¢æ’件" -#: src/resample/plugin.c:134 +#: src/resample/plugin.c:144 msgid "Sample Rate Converter Preferences" -msgstr "Sample Rate转æ¢å™¨é¦–选项" +msgstr "å–样转æ¢è®¾ç½®" -#: src/resample/plugin.c:146 +#: src/resample/plugin.c:156 msgid "Rate mappings:" msgstr "比率映射:" -#: src/resample/plugin.c:169 +#: src/resample/plugin.c:179 msgid "All others:" msgstr "其它:" -#: src/resample/plugin.c:181 +#: src/resample/plugin.c:191 msgid "Method:" msgstr "方法:" -#: src/scrobbler/configure.c:152 src/scrobbler/configure.c:228 +#: src/scrobbler/configure.c:122 src/scrobbler/configure.c:197 msgid "Change password" msgstr "修改密ç " -#: src/scrobbler/configure.c:174 +#: src/scrobbler/configure.c:143 msgid "Services" msgstr "æœåŠ¡" -#: src/scrobbler/configure.c:196 +#: src/scrobbler/configure.c:165 msgid "Username:" msgstr "用户å:" -#: src/scrobbler/configure.c:202 +#: src/scrobbler/configure.c:171 msgid "Password:" msgstr "密ç ï¼š" -#: src/scrobbler/configure.c:210 +#: src/scrobbler/configure.c:179 msgid "Scrobbler URL:" msgstr "" -#: src/scrobbler/configure.c:242 +#: src/scrobbler/configure.c:211 msgid "Last.FM" msgstr "" -#: src/scrobbler/configure.c:287 +#: src/scrobbler/configure.c:238 msgid "Scrobbler" msgstr "" -#: src/scrobbler/plugin.c:213 +#: src/scrobbler/plugin.c:194 msgid "" "Audacious AudioScrobbler Plugin\n" "\n" @@ -3528,1797 +2429,2412 @@ msgstr "" "Audacious AudioScrobbleræ’件\n" "\n" -"最åˆä½œè€…:Audun Hove å’ŒPipian 。\n" +"原作者:\n" +"Audun Hove \n" +"Pipian \n" -#: src/scrobbler/plugin.c:215 +#: src/scrobbler/plugin.c:196 msgid "About Scrobbler Plugin" msgstr "关于Scorbbleræ’件" -#: src/sid/xs_about.c:84 -#, c-format -msgid "About %s" -msgstr "关于 %s" - -#: src/sid/xs_config.c:322 -msgid " Error" -msgstr "错误" - -#: src/sid/xs_fileinfo.c:151 -msgid "General info" -msgstr "一般信æ¯" +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" +msgstr "关于SDL输出æ’件" + +#: src/sdlout/plugin.c:78 +msgid "SDL error" +msgstr "SDL错误" -#: src/sid/xs_fileinfo.c:164 -#, c-format -msgid "Tune #%i: " -msgstr "" +#: src/skins/plugin.c:167 +msgid "About Skinned GUI" +msgstr "关于主题化界é¢" -#: src/sid/xs_interface.c:234 -msgid "Audacious-SID configuration" +#: src/skins/plugin.c:168 +msgid "" +"Copyright (c) 2008, by Tomasz MoÅ„ \n" +"\n" msgstr "" +"版æƒæ‰€æœ‰ (c)\n" +"2008, Tomasz MoÅ„ \n" +"\n" -#: src/sid/xs_interface.c:270 -msgid "8-bit" -msgstr "" +#: src/skins/skins_cfg.c:207 +msgid "_Player:" +msgstr "播放器(_P):" -#: src/sid/xs_interface.c:277 -msgid "16-bit" -msgstr "" +#: src/skins/skins_cfg.c:208 +msgid "Select main player window font:" +msgstr "选择主界é¢å­—体" -#: src/sid/xs_interface.c:284 -msgid "Resolution:" -msgstr "" +#: src/skins/skins_cfg.c:210 +msgid "_Playlist:" +msgstr "播放列表(_P):" -#: src/sid/xs_interface.c:315 -msgid "Autopanning" -msgstr "" +#: src/skins/skins_cfg.c:211 +msgid "Select playlist font:" +msgstr "选择播放列表字体:" -#: src/sid/xs_interface.c:322 -msgid "Channels:" -msgstr "" +#: src/skins/skins_cfg.c:215 +msgid "_Fonts" +msgstr "字体(_F)" -#: src/sid/xs_interface.c:366 -msgid "Samplerate:" -msgstr "" +#: src/skins/skins_cfg.c:218 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "使用点阵字体(仅支æŒASCII字符)" + +#: src/skins/skins_cfg.c:220 +msgid "Scroll song title in both directions" +msgstr "æ¥å›žæ»šåŠ¨æ­Œæ›²æ ‡é¢˜" -#: src/sid/xs_interface.c:383 -msgid "Use oversampling" -msgstr "" +#: src/skins/skins_cfg.c:298 +msgid "_Skin" +msgstr "主题(_S)" -#: src/sid/xs_interface.c:394 -msgid "Factor:" -msgstr "" +#: src/skins/skins_cfg.c:345 +msgid "Interface Preferences" +msgstr "ç•Œé¢è®¾ç½®" -#: src/sid/xs_interface.c:406 -msgid "Large factors require more CPU-power" -msgstr "" +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "å‰ç½®æ”¾å¤§" -#: src/sid/xs_interface.c:412 -msgid "Oversampling:" +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" msgstr "" -#: src/sid/xs_interface.c:417 -msgid "Audio" +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" msgstr "" -#: src/sid/xs_interface.c:445 -msgid "Force speed" +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" msgstr "" -#: src/sid/xs_interface.c:449 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"clock speed/frequency. Otherwise the speed is determined from played file " -"itself." +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" msgstr "" -#: src/sid/xs_interface.c:451 -msgid "PAL (50 Hz)" +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" msgstr "" -#: src/sid/xs_interface.c:455 -msgid "" -"PAL is the european TV standard, which uses 50Hz vertical refresh frequency. " -"Most of SID-tunes have been made for PAL computers." +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" msgstr "" -#: src/sid/xs_interface.c:459 -msgid "NTSC (60 Hz)" +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" msgstr "" -#: src/sid/xs_interface.c:463 -msgid "" -"NTSC is the TV standard with 60Hz vertical refresh rate (and other features " -"that differ from PAL). It is mainly used in United States, Japan and certain " -"other countries." +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" msgstr "" -#: src/sid/xs_interface.c:467 -msgid "Clock speed:" +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" msgstr "" -#: src/sid/xs_interface.c:484 -msgid "Force model" +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" msgstr "" -#: src/sid/xs_interface.c:488 -msgid "" -"If enabled, this option \"forces\" the emulation engine to use the selected " -"SID-chip model. Otherwise the preferred SID model is determined from the " -"file (if PSIDv2NG type) or if not available, this setting is used." -msgstr "" +#: src/skins/ui_equalizer.c:379 +msgid "Audacious Equalizer" +msgstr "Audaciouså‡è¡¡å™¨" -#: src/sid/xs_interface.c:490 -msgid "MOS 6581" -msgstr "" +#: src/skins/ui_equalizer.c:896 +msgid "Presets" +msgstr "预设" -#: src/sid/xs_interface.c:494 -msgid "" -"MOS/CSG 6581 is the earlier major version of SID chip. It differs from 8580 " -"in few ways, having much fuller filter (which, due to design error, is never " -"same between two different SID-chips) and has the \"volume adjustment bug\", " -"which enables playing of digital samples." +#: src/skins/ui_main.c:443 +msgid "kbps" msgstr "" -#: src/sid/xs_interface.c:498 -msgid "MOS 8580" +#: src/skins/ui_main.c:451 +msgid "kHz" msgstr "" -#: src/sid/xs_interface.c:505 -msgid "SID model:" -msgstr "" +#: src/skins/ui_main.c:458 +msgid "surround" +msgstr "环绕声" -#: src/sid/xs_interface.c:522 -msgid "SIDPlay 1 (frame-based)" -msgstr "" +#: src/skins/ui_main.c:806 +#, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "查找: %d:%-2.2d/%d:%-2.2d" -#: src/sid/xs_interface.c:526 -msgid "" -"Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most " -"cases, though." -msgstr "" +#: src/skins/ui_main.c:827 +#, c-format +msgid "Volume: %d%%" +msgstr "音é‡ï¼š%d%%" -#: src/sid/xs_interface.c:530 -msgid "SIDPlay 2 (cycle-based)" -msgstr "" +#: src/skins/ui_main.c:850 +#, c-format +msgid "Balance: %d%% left" +msgstr "平衡:%d%% å·¦" -#: src/sid/xs_interface.c:534 -msgid "" -"Use libSIDPlay 2.x emulation, which requires powerful CPU due to more exact " -"emulation." -msgstr "" +#: src/skins/ui_main.c:852 +msgid "Balance: center" +msgstr "平衡:中间" -#: src/sid/xs_interface.c:538 -msgid "Emulation library selection:" -msgstr "" +#: src/skins/ui_main.c:854 +#, c-format +msgid "Balance: %d%% right" +msgstr "平衡:%d%% å³" -#: src/sid/xs_interface.c:555 -msgid "Real C64 (SIDPlay 2 only)" -msgstr "" +#: src/skins/ui_main.c:980 +msgid "Options Menu" +msgstr "选项èœå•" -#: src/sid/xs_interface.c:562 -msgid "Bank switching" -msgstr "" +#: src/skins/ui_main.c:984 +msgid "Disable 'Always On Top'" +msgstr "ç¦ç”¨â€œé¡¶ç½®çª—å£â€" -#: src/sid/xs_interface.c:569 -msgid "Transparent ROM" -msgstr "" +#: src/skins/ui_main.c:986 +msgid "Enable 'Always On Top'" +msgstr "å¯ç”¨â€œé¡¶ç½®çª—å£â€" -#: src/sid/xs_interface.c:576 -msgid "PlaySID environment" -msgstr "" +#: src/skins/ui_main.c:989 +msgid "File Info Box" +msgstr "文件信æ¯" -#: src/sid/xs_interface.c:583 -msgid "Memory mode:" -msgstr "" +#: src/skins/ui_main.c:994 +msgid "Visualization Menu" +msgstr "å¯è§†åŒ–èœå•" -#: src/sid/xs_interface.c:588 -msgid "Emu#1" -msgstr "" +#: src/skins/ui_main.c:1646 +msgid "Single mode." +msgstr "å•ä¸€çª—å£æ¨¡å¼" -#: src/sid/xs_interface.c:611 -msgid "Optimization mode (faster, inaccurate)" -msgstr "" +#: src/skins/ui_main.c:1648 +msgid "Playlist mode." +msgstr "播放列表模å¼" -#: src/sid/xs_interface.c:615 -msgid "" -"This setting can be used to enable libSIDPlay2's \"optimization mode\", " -"which in downgrades the emulation from cycle-exact to something similar to " -"frame-exact. The result is lower CPU usage, but worse accuracy." -msgstr "" +#: src/skins/ui_main.c:1670 +msgid "Stopping after song." +msgstr "完æˆåŽåœæ­¢" -#: src/sid/xs_interface.c:617 -msgid "reSID-emulation" -msgstr "" +#: src/skins/ui_main.c:1672 +msgid "Not stopping after song." +msgstr "完æˆåŽä¸åœæ­¢" -#: src/sid/xs_interface.c:621 -msgid "" -"reSID is the software SID-chip simulator based on SID reverse-engineering, " -"created by Dag Lem. It is probably the closest thing to real SID available " -"as software-only emulation." -msgstr "" +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 +msgid "Autoscroll Songname" +msgstr "自动滚动歌曲å" -#: src/sid/xs_interface.c:625 -msgid "HardSID" -msgstr "" +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "完æˆå½“å‰æ­Œæ›²åŽåœæ­¢" -#: src/sid/xs_interface.c:629 -msgid "" -"HardSID is a EISA/PCI card for PC-compatibles, which can be fitted with a " -"real SID-chip. Software can be used to control the HardSID and combined with " -"software emulation of rest of C64 via libSIDPlay2 HardSID can be used to " -"achieve \"near 100%\" similarity to real C64. For more information, see " -"http://www.hardsid.com/" -msgstr "" +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 +msgid "Peaks" +msgstr "峰值" -#: src/sid/xs_interface.c:633 -msgid "SIDPlay 2 options:" -msgstr "" +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "é‡å¤" -#: src/sid/xs_interface.c:650 -msgid "Fast (nearest neighbour)" -msgstr "" +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "éšæœº" -#: src/sid/xs_interface.c:654 -msgid "" -"Fastest and also worst sounding sampling method, simply picks nearest " -"neighbouring sample." -msgstr "" +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "ç¦æ­¢è‡ªåŠ¨æ’­æ”¾ä¸‹ä¸€é¦–" -#: src/sid/xs_interface.c:658 -msgid "Linear interpolation" -msgstr "" +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 +msgid "Show Player" +msgstr "显示播放器" -#: src/sid/xs_interface.c:662 -msgid "" -"Uses linear interpolation between samples, yielding higher audio quality " -"with less sampling noise." -msgstr "" +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 +msgid "Show Playlist Editor" +msgstr "显示播放列表编辑器" -#: src/sid/xs_interface.c:673 -msgid "Resampling (FIR)" -msgstr "" +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 +msgid "Show Equalizer" +msgstr "显示å‡è¡¡å™¨" -#: src/sid/xs_interface.c:680 -msgid "reSID sampling options:" -msgstr "" +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 +msgid "Always on Top" +msgstr "顶置窗å£" -#: src/sid/xs_interface.c:685 -msgid "Emu#2" -msgstr "" +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 +msgid "Put on All Workspaces" +msgstr "所有工作区å¯è§" -#: src/sid/xs_interface.c:697 -msgid "Emulate filters" -msgstr "" +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 +msgid "Roll up Player" +msgstr "收起播放器" -#: src/sid/xs_interface.c:701 -msgid "" -"This option enables emulation of SID filter. The filter is an essential part " -"of SID's sound capacity, but accurate emulation of it may require quite much " -"CPU power. However, if filter emulation is disabled, tunes won't sound " -"authentic at all if they utilize the filter." -msgstr "" +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 +msgid "Roll up Playlist Editor" +msgstr "收起播放列表编辑器" -#: src/sid/xs_interface.c:726 -msgid "FS" -msgstr "" +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 +msgid "Roll up Equalizer" +msgstr "收起å‡è¡¡å™¨" -#: src/sid/xs_interface.c:743 -msgid "FM" -msgstr "" +#: src/skins/ui_manager.c:115 +msgid "Analyzer" +msgstr "分æžå™¨" -#: src/sid/xs_interface.c:760 -msgid "FT" -msgstr "" +#: src/skins/ui_manager.c:116 +msgid "Scope" +msgstr "示波器" -#: src/sid/xs_interface.c:771 -msgid "Reset values" -msgstr "" +#: src/skins/ui_manager.c:117 +msgid "Voiceprint" +msgstr "声纹" -#: src/sid/xs_interface.c:776 -msgid "SIDPlay1" -msgstr "" +#: src/skins/ui_manager.c:118 +msgid "Off" +msgstr "关闭" -#: src/sid/xs_interface.c:817 -msgid "Export" -msgstr "" +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 +msgid "Normal" +msgstr "一般" -#: src/sid/xs_interface.c:825 -msgid "Use" -msgstr "" +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 +msgid "Fire" +msgstr "ç«ç‚Ž" -#: src/sid/xs_interface.c:833 src/skins/ui_manager.c:430 -msgid "Save" -msgstr "" +#: src/skins/ui_manager.c:124 +msgid "Vertical Lines" +msgstr "垂线" -#: src/sid/xs_interface.c:841 src/skins/ui_manager.c:429 -msgid "Import" -msgstr "" +#: src/skins/ui_manager.c:128 +msgid "Lines" +msgstr "细线" -#: src/sid/xs_interface.c:849 src/skins/ui_manager.c:431 -msgid "Delete" -msgstr "" +#: src/skins/ui_manager.c:129 +msgid "Bars" +msgstr "柱状" -#: src/sid/xs_interface.c:863 -msgid "Filter curve:" -msgstr "" +#: src/skins/ui_manager.c:133 +msgid "Dot Scope" +msgstr "点状" -#: src/sid/xs_interface.c:868 -msgid "SIDPlay2" -msgstr "" +#: src/skins/ui_manager.c:134 +msgid "Line Scope" +msgstr "线状" -#: src/sid/xs_interface.c:874 -msgid "Filters" -msgstr "" +#: src/skins/ui_manager.c:135 +msgid "Solid Scope" +msgstr "å—状" -#: src/sid/xs_interface.c:897 -msgid "Play at least for specified time" -msgstr "" +#: src/skins/ui_manager.c:141 +msgid "Ice" +msgstr "冷è“" -#: src/sid/xs_interface.c:901 -msgid "" -"If enabled, the tune is played at least for the specified time, adding " -"silence to the end if necessary." -msgstr "" +#: src/skins/ui_manager.c:146 +msgid "Smooth" +msgstr "平滑" -#: src/sid/xs_interface.c:908 src/sid/xs_interface.c:962 -#: src/sid/xs_interface.c:1142 -msgid "Playtime:" -msgstr "" +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 +msgid "Slowest" +msgstr "最慢" -#: src/sid/xs_interface.c:928 -msgid "Minimum playtime:" -msgstr "" +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 +msgid "Slow" +msgstr "æ…¢" -#: src/sid/xs_interface.c:945 -msgid "Play for specified time maximum" -msgstr "" +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 +msgid "Medium" +msgstr "中速" -#: src/sid/xs_interface.c:949 -msgid "" -"If enabled, tune is played until specified duration is reached (aka maximum " -"playtime)." -msgstr "" +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 +msgid "Fast" +msgstr "å¿«" -#: src/sid/xs_interface.c:951 -msgid "Only when song length is unknown" -msgstr "" +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 +msgid "Fastest" +msgstr "最快" -#: src/sid/xs_interface.c:955 -msgid "" -"If enabled, the maximum playtime is applied only if song/tune length is not " -"known." -msgstr "" +#: src/skins/ui_manager.c:166 +msgid "Time Elapsed" +msgstr "已用时间" -#: src/sid/xs_interface.c:982 -msgid "Maximum playtime:" -msgstr "" +#: src/skins/ui_manager.c:167 +msgid "Time Remaining" +msgstr "剩余时间" -#: src/sid/xs_interface.c:999 -msgid "Use XSIDPLAY-compatible database" -msgstr "" +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "æš‚åœ" -#: src/sid/xs_interface.c:1003 -msgid "" -"This option enables using of XSIDPLAY compatible song length database. " -"(Refer to Audacious-SID documentation for more information)" -msgstr "" +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "上一首" -#: src/sid/xs_interface.c:1010 -msgid "DB-file:" -msgstr "" +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "下一首" -#: src/sid/xs_interface.c:1020 -msgid "Database path and filename" -msgstr "" +#: src/skins/ui_manager.c:196 +msgid "Visualization" +msgstr "å¯è§†åŒ–效果" -#: src/sid/xs_interface.c:1027 -msgid "Browse for song length-database file" -msgstr "" +#: src/skins/ui_manager.c:197 +msgid "Visualization Mode" +msgstr "å¯è§†åŒ–模å¼" -#: src/sid/xs_interface.c:1049 -msgid "Song length database:" -msgstr "" +#: src/skins/ui_manager.c:198 +msgid "Analyzer Mode" +msgstr "分æžå™¨æ¨¡å¼" -#: src/sid/xs_interface.c:1054 -msgid "Songlength" -msgstr "" +#: src/skins/ui_manager.c:199 +msgid "Scope Mode" +msgstr "示波器模å¼" -#: src/sid/xs_interface.c:1072 -msgid "Override generic Tuplez format string" -msgstr "" +#: src/skins/ui_manager.c:200 +msgid "Voiceprint Mode" +msgstr "声纹模å¼" -#: src/sid/xs_interface.c:1076 -msgid "" -"By enabling this option you can specify a custom Tuplez formatting string " -"for SID-files. The SID-plugin specific Tuplez tags are described shortly " -"below." -msgstr "" +#: src/skins/ui_manager.c:201 +msgid "WindowShade VU Mode" +msgstr "窗å£æ¸²æŸ“VU模å¼" -#: src/sid/xs_interface.c:1087 -msgid "Tuplez format string for SID-files" -msgstr "" +#: src/skins/ui_manager.c:202 +msgid "Analyzer Falloff" +msgstr "分æžå™¨å‡é€€é€Ÿåº¦" -#: src/sid/xs_interface.c:1090 -msgid "" -"SID-specific Tuplez fields:\n" -"\n" -"sid-format\t\t- Specific fileformat\n" -"sid-model\t\t- 6581 or 8580\n" -"sid-speed\t\t- Timing or speed: PAL/NTSC/etc.\n" -"\n" -"Other \"special\" fields set:\n" -"\n" -"subsong-num, subsong-id" -msgstr "" +#: src/skins/ui_manager.c:203 +msgid "Peaks Falloff" +msgstr "峰值å‡é€€é€Ÿåº¦" -#: src/sid/xs_interface.c:1098 -msgid "Song title format:" -msgstr "" +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "播放列表" -#: src/sid/xs_interface.c:1103 -msgid "Title" -msgstr "" +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "新建播放列表" -#: src/sid/xs_interface.c:1125 -msgid "Add sub-tunes to playlist" -msgstr "" +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 +msgid "Select Next Playlist" +msgstr "å‰ä¸€ä¸ªæ’­æ”¾åˆ—表" -#: src/sid/xs_interface.c:1129 -msgid "" -"If enabled, sub-tunes of each file will be added to playlist. If disabled, " -"only the default sub-tune will be added." -msgstr "" +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 +msgid "Select Previous Playlist" +msgstr "下一下播放列表" -#: src/sid/xs_interface.c:1131 -msgid "Only tunes with specified minimum duration" -msgstr "" +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "删除播放列表" -#: src/sid/xs_interface.c:1135 -msgid "Only add sub-tunes that have a duration of at least specified time." -msgstr "" +#: src/skins/ui_manager.c:222 +msgid "Import Playlist" +msgstr "导入播放列表" -#: src/sid/xs_interface.c:1162 -msgid "Sub-tune handling:" -msgstr "" +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "把列表加载到被选中的播放列表。" -#: src/sid/xs_interface.c:1179 -msgid "Use STIL database" -msgstr "" +#: src/skins/ui_manager.c:226 +msgid "Export Playlist" +msgstr "导出播放列表" -#: src/sid/xs_interface.c:1183 -msgid "" -"If this option is enabled (and the database & HVSC settings below are " -"correctly set), Audacious-SID will use and display additional information " -"from STIL database when HVSC SIDs are played." -msgstr "" +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "ä¿å­˜è¢«é€‰ä¸­çš„播放列表" -#: src/sid/xs_interface.c:1190 -msgid "STIL file:" -msgstr "" +#: src/skins/ui_manager.c:229 +msgid "Refresh List" +msgstr "刷新列表" -#: src/sid/xs_interface.c:1206 -msgid "" -"Path and filename of STIL database file (STIL.txt), usually found from " -"HVSC's DOCUMENTS-subdirectory." -msgstr "" +#: src/skins/ui_manager.c:230 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "刷新播放列表的歌曲信æ¯" -#: src/sid/xs_interface.c:1219 -msgid "Browse for STIL-database file" -msgstr "" +#: src/skins/ui_manager.c:233 +msgid "Playlist Manager" +msgstr "播放列表管ç†å™¨" -#: src/sid/xs_interface.c:1246 -msgid "HVSC path:" -msgstr "" +#: src/skins/ui_manager.c:234 +msgid "Queue Manager" +msgstr "列表管ç†å™¨" -#: src/sid/xs_interface.c:1262 -msgid "" -"Path to base-directory of your High Voltage SID Collection (HVSC), for " -"example /media/C64Music/" -msgstr "" +#: src/skins/ui_manager.c:237 +msgid "View" +msgstr "外观" -#: src/sid/xs_interface.c:1275 -msgid "Browse for HVSC path" -msgstr "æµè§ˆHVSC路径" +#: src/skins/ui_manager.c:238 +msgid "Interface" +msgstr "ç•Œé¢" -#: src/sid/xs_interface.c:1297 -msgid "SID Tune Information List (STIL) database:" -msgstr "" +#: src/skins/ui_manager.c:239 +msgid "Interface Preferences ..." +msgstr "ç•Œé¢è®¾ç½®..." -#: src/sid/xs_interface.c:1321 -msgid "Cancel any changes" -msgstr "å–消所有å˜æ›´" +#: src/skins/ui_manager.c:243 +msgid "Add Internet Address..." +msgstr "添加网络地å€..." -#: src/sid/xs_interface.c:1328 -msgid "Accept and update changes" -msgstr "åŒæ„并更新" +#: src/skins/ui_manager.c:244 +msgid "Adds a remote track to the playlist." +msgstr "添加远程文件到播放列表" -#: src/sid/xs_interface.c:1628 -msgid "Audacious-SID Fileinfo" -msgstr "Audacious-SID文件信æ¯" +#: src/skins/ui_manager.c:247 +msgid "Add Files..." +msgstr "添加文件..." -#: src/sid/xs_interface.c:1649 -msgid "Filename:" -msgstr "文件å:" +#: src/skins/ui_manager.c:248 +msgid "Adds files to the playlist." +msgstr "添加文件到播放列表。" -#: src/sid/xs_interface.c:1657 -msgid "Songname:" -msgstr "歌曲å:" +#: src/skins/ui_manager.c:253 +msgid "Search and Select" +msgstr "æœç´¢/选择" -#: src/sid/xs_interface.c:1665 -msgid "Composer:" -msgstr "作曲家:" +#: src/skins/ui_manager.c:254 +msgid "" +"Searches the playlist and selects playlist entries based on specific " +"criteria." +msgstr "在列表中æœç´¢å¹¶é€‰æ‹©ç¬¦åˆæ¡ä»¶çš„æ¡ç›®" -#: src/sid/xs_interface.c:1673 -msgid "Copyright:" -msgstr "版æƒï¼š" +#: src/skins/ui_manager.c:257 +msgid "Invert Selection" +msgstr "å选" -#: src/sid/xs_interface.c:1717 -msgid "Song Information:" -msgstr "歌曲信æ¯ï¼š" +#: src/skins/ui_manager.c:258 +msgid "Inverts the selected and unselected entries." +msgstr "å转被选中与未被选中的æ¡ç›®" -#: src/sid/xs_interface.c:1752 -msgid "Author:" -msgstr "作者:" +#: src/skins/ui_manager.c:261 +msgid "Select All" +msgstr "选中全部" -#: src/sid/xs_interface.c:1786 -msgid "Duration:" -msgstr "æŒç»­æ—¶é—´ï¼š" +#: src/skins/ui_manager.c:262 +msgid "Selects all of the playlist entries." +msgstr "选中播放列表中的所有æ¡ç›®ã€‚" -#: src/sid/xs_interface.c:1820 -msgid "Sub-tune Information:" -msgstr "Sub-tuneä¿¡æ¯ï¼š" +#: src/skins/ui_manager.c:265 +msgid "Select None" +msgstr "å–消选中" -#: src/sid/xs_interface.c:1881 -msgid "Select HVSC song length database" -msgstr "" +#: src/skins/ui_manager.c:266 +msgid "Deselects all of the playlist entries." +msgstr "å–消对播放列表的选择" -#: src/sid/xs_interface.c:1922 -msgid "Select STIL-database" -msgstr "" +#: src/skins/ui_manager.c:271 +msgid "Remove All" +msgstr "清空" -#: src/sid/xs_interface.c:1963 -msgid "Select HVSC location prefix" -msgstr "" +#: src/skins/ui_manager.c:272 +msgid "Removes all entries from the playlist." +msgstr "清空播放列表中的所有æ¡ç›®ã€‚" -#: src/sid/xs_interface.c:2004 -msgid "Select SIDPlay2 filters file for importing" -msgstr "" +#: src/skins/ui_manager.c:275 +msgid "Clear Queue" +msgstr "清空队列" -#: src/sid/xs_interface.c:2045 -msgid "Select SIDPlay2 filters file for exporting" -msgstr "" +#: src/skins/ui_manager.c:276 +msgid "Clears the queue associated with this playlist." +msgstr "清空此列表中的队列" -#: src/sid/xs_interface.c:2093 src/sid/xs_interface.c:2106 -msgid "Confirm selected action" -msgstr "确认选中的动作" +#: src/skins/ui_manager.c:279 +msgid "Remove Unavailable Files" +msgstr "删除ä¸å¯ç”¨æ–‡ä»¶" -#: src/sid/xs_interface.c:2123 -msgid "Yes" -msgstr "是" +#: src/skins/ui_manager.c:280 +msgid "Removes unavailable files from the playlist." +msgstr "从播放列表中删除ä¸å¯ç”¨æ–‡ä»¶" -#: src/sid/xs_interface.c:2129 -msgid "No" -msgstr "å¦" +#: src/skins/ui_manager.c:283 +msgid "Remove Duplicates" +msgstr "删除é‡å¤çš„æ¡ç›®" -#: src/skins/plugin.c:179 -msgid "About Skinned GUI" -msgstr "关于主题化界é¢" +#: src/skins/ui_manager.c:285 src/skins/ui_manager.c:317 +#: src/skins/ui_manager.c:347 +msgid "By Title" +msgstr "按标题" -#: src/skins/plugin.c:180 -msgid "" -"Copyright (c) 2008, by Tomasz MoÅ„ \n" -"\n" -msgstr "" -"版æƒæ‰€æœ‰ (c) 2008, Tomasz MoÅ„ \n" -"\n" +#: src/skins/ui_manager.c:286 +msgid "Removes duplicate entries from the playlist by title." +msgstr "æ ¹æ®æ ‡é¢˜åˆ é™¤é‡å¤çš„æ¡ç›®" -#: src/skins/plugin.c:196 -msgid "Skinned Interface" -msgstr "主题化界é¢" +#: src/skins/ui_manager.c:289 src/skins/ui_manager.c:329 +#: src/skins/ui_manager.c:359 +msgid "By Filename" +msgstr "æ ¹æ®æ–‡ä»¶å" -#: src/skins/skins_cfg.c:316 -msgid "_Player:" -msgstr "播放器(_P):" +#: src/skins/ui_manager.c:290 +msgid "Removes duplicate entries from the playlist by filename." +msgstr "æ ¹æ®æ–‡ä»¶å删除é‡å¤çš„æ¡ç›®" -#: src/skins/skins_cfg.c:316 -msgid "Select main player window font:" -msgstr "选择主界é¢å­—体" +#: src/skins/ui_manager.c:293 src/skins/ui_manager.c:333 +#: src/skins/ui_manager.c:363 +msgid "By Path + Filename" +msgstr "æ ¹æ®è·¯å¾„和文件å" -#: src/skins/skins_cfg.c:317 -msgid "_Playlist:" -msgstr "播放列表(_P):" +#: src/skins/ui_manager.c:294 +msgid "Removes duplicate entries from the playlist by their full path." +msgstr "æ ¹æ®æ–‡ä»¶çš„完整路径删除é‡å¤æ¡ç›®" -#: src/skins/skins_cfg.c:317 -msgid "Select playlist font:" -msgstr "选择播放列表字体:" +#: src/skins/ui_manager.c:297 +msgid "Remove Unselected" +msgstr "删除未被选中的" -#: src/skins/skins_cfg.c:321 -msgid "_Fonts" -msgstr "字体(_F)" +#: src/skins/ui_manager.c:298 +msgid "Remove unselected entries from the playlist." +msgstr "删除播放列表中未被选中的æ¡ç›®ã€‚" -#: src/skins/skins_cfg.c:323 -msgid "Use Bitmap fonts if available" -msgstr "å°½å¯èƒ½ä½¿ç”¨ç‚¹é˜µå­—体" +#: src/skins/ui_manager.c:301 +msgid "Remove Selected" +msgstr "删除已选中的" -#: src/skins/skins_cfg.c:323 -msgid "" -"Use bitmap fonts if they are available. Bitmap fonts do not support Unicode " -"strings." -msgstr "å°½å¯èƒ½ä½¿ç”¨ç‚¹é˜µå­—体,点阵字体ä¸æ”¯æŒUnicode设置" +#: src/skins/ui_manager.c:302 +msgid "Remove selected entries from the playlist." +msgstr "删除播放列表中已选中的æ¡ç›®ã€‚" -#: src/skins/skins_cfg.c:324 -msgid "_Miscellaneous" -msgstr "其它(_M)" +#: src/skins/ui_manager.c:307 +msgid "Randomize List" +msgstr "打乱列表" -#: src/skins/skins_cfg.c:325 -msgid "Show separators in playlist" -msgstr "在播放列表中显示分隔符" +#: src/skins/ui_manager.c:308 +msgid "Randomizes the playlist." +msgstr "播放列表éšæœº" -#: src/skins/skins_cfg.c:327 -msgid "Show window manager decoration" -msgstr "显示窗å£ç®¡ç†å™¨çš„装饰" +#: src/skins/ui_manager.c:311 +msgid "Reverse List" +msgstr "å转列表" -#: src/skins/skins_cfg.c:328 -msgid "This enables the window manager to show decorations for windows." -msgstr "此选项将å…许显示窗å£ç®¡ç†å™¨çš„装饰" +#: src/skins/ui_manager.c:312 +msgid "Reverses the playlist." +msgstr "å转播放列表" -#: src/skins/skins_cfg.c:329 -msgid "Use two-way text scroller" -msgstr "使用åŒå‘字符滚动" +#: src/skins/ui_manager.c:315 +msgid "Sort List" +msgstr "排åºåˆ—表" -#: src/skins/skins_cfg.c:330 -msgid "" -"If selected, the file information text in the main window will scroll back " -"and forth. If not selected, the text will only scroll in one direction." -msgstr "如果å¯ç”¨ï¼Œä¸»ç•Œé¢ä¸Šçš„文件信æ¯å°†æ¥å›žæ»šåŠ¨ï¼Œå¦åˆ™åªèƒ½å‘一个方å‘滚动。" +#: src/skins/ui_manager.c:318 src/skins/ui_manager.c:348 +msgid "Sorts the list by title." +msgstr "按标题" -#: src/skins/skins_cfg.c:331 -msgid "Disable inline gtk theme" -msgstr "ç¦ç”¨å†…部gtk主题" +#: src/skins/ui_manager.c:321 src/skins/ui_manager.c:351 +msgid "By Album" +msgstr "按专辑" -#: src/skins/skins_cfg.c:333 -msgid "Random skin on play" -msgstr "å¯åŠ¨æ—¶éšæœºé€‰æ‹©ä¸»é¢˜" +#: src/skins/ui_manager.c:322 src/skins/ui_manager.c:352 +msgid "Sorts the list by album." +msgstr "按专辑" -#: src/skins/skins_cfg.c:334 -msgid "Allow loading incomplete skins" -msgstr "å…许加载ä¸å®Œæ•´çš„主题" +#: src/skins/ui_manager.c:325 src/skins/ui_manager.c:355 +msgid "By Artist" +msgstr "按艺术家" -#: src/skins/skins_cfg.c:335 -msgid "" -"If selected, audacious won't refuse loading broken skins. Use only if your " -"favourite skin doesn't work" -msgstr "" -"如果å¯ç”¨ï¼Œaudaciouså°†å…许加载破æŸçš„主题。如果你喜欢的主题无法使用,å¯è¯•è¯•å¯ç”¨" -"此选项" +#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +msgid "Sorts the list by artist." +msgstr "按艺术家" -#: src/skins/skins_cfg.c:401 -msgid "Color Adjustment" -msgstr "颜色调整" +#: src/skins/ui_manager.c:330 src/skins/ui_manager.c:360 +msgid "Sorts the list by filename." +msgstr "按文件å" -#: src/skins/skins_cfg.c:407 -msgid "" -"Audacious allows you to alter the color balance of the skinned UI. The " -"sliders below will allow you to do this." -msgstr "Audaciouså…许你修改主题界é¢çš„颜色平衡。调整滑动æ¡å³å¯" +#: src/skins/ui_manager.c:334 src/skins/ui_manager.c:364 +msgid "Sorts the list by full pathname." +msgstr "按完整路径" -#: src/skins/skins_cfg.c:417 -msgid "Blue" -msgstr "è“" +#: src/skins/ui_manager.c:337 src/skins/ui_manager.c:367 +msgid "By Date" +msgstr "按日期" -#: src/skins/skins_cfg.c:424 -msgid "Green" -msgstr "绿" +#: src/skins/ui_manager.c:338 src/skins/ui_manager.c:368 +msgid "Sorts the list by modification time." +msgstr "按修改时间" -#: src/skins/skins_cfg.c:431 -msgid "Red" -msgstr "红" +#: src/skins/ui_manager.c:341 src/skins/ui_manager.c:371 +msgid "By Track Number" +msgstr "按音轨å·ç " -#: src/skins/skins_cfg.c:569 -msgid "_Skin" -msgstr "主题(_S)" +#: src/skins/ui_manager.c:342 src/skins/ui_manager.c:372 +msgid "Sorts the list by track number." +msgstr "按音轨åºå·" -#: src/skins/skins_cfg.c:574 -#, fuzzy -msgid "Color adjustment ..." -msgstr "颜色调整" +#: src/skins/ui_manager.c:345 +msgid "Sort Selected" +msgstr "排åºå·²é€‰ä¸­çš„" -#: src/skins/ui_equalizer.c:463 -msgid "Audacious Equalizer" -msgstr "Audaciouså‡è¡¡å™¨" +#: src/skins/ui_manager.c:381 +msgid "File" +msgstr "文件" -#: src/skins/ui_equalizer.c:991 -msgid "Presets" -msgstr "预设" +#: src/skins/ui_manager.c:384 +msgid "Plugin Services" +msgstr "æ’件æœåŠ¡" -#: src/skins/ui_main.c:593 -msgid "kbps" -msgstr "" +#: src/skins/ui_manager.c:386 src/skins/ui_manager.c:389 +msgid "View Track Details" +msgstr "查看音轨信æ¯" -#: src/skins/ui_main.c:601 -msgid "kHz" -msgstr "" +#: src/skins/ui_manager.c:387 src/skins/ui_manager.c:390 +msgid "View track details" +msgstr "查看音轨信æ¯" -#: src/skins/ui_main.c:608 -msgid "surround" -msgstr "环绕声" +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:393 +msgid "About Audacious" +msgstr "关于Audacious" -#: src/skins/ui_main.c:981 -msgid "Audacious - visibility warning" -msgstr "Audacious - å¯è§æ€§è­¦å‘Š" +#: src/skins/ui_manager.c:395 +msgid "Play File" +msgstr "播放文件" -#: src/skins/ui_main.c:984 -msgid "Show main player window" -msgstr "显示主界é¢" +#: src/skins/ui_manager.c:396 +msgid "Load and play a file" +msgstr "加载并播放文件" -#: src/skins/ui_main.c:985 -msgid "Ignore" -msgstr "忽略" +#: src/skins/ui_manager.c:398 +msgid "Play Location" +msgstr "播放ä½ç½®" -#: src/skins/ui_main.c:991 -msgid "" -"Audacious has been started with all of its windows hidden.\n" -"You may want to show the player window again to control Audacious; " -"otherwise, you'll have to control it remotely via audtool or enabled plugins " -"(such as the statusicon plugin)." -msgstr "" +#: src/skins/ui_manager.c:399 +msgid "Play media from the selected location" +msgstr "播放被选中ä½ç½®çš„文件" -#: src/skins/ui_main.c:997 -msgid "Always ignore, show/hide is controlled remotely" -msgstr "总是忽略,远程控制“显示/éšè—â€" +#: src/skins/ui_manager.c:401 +msgid "Plugin services" +msgstr "æ’件æœåŠ¡" -#: src/skins/ui_main.c:1042 -msgid "Audacious - broken GTK engine usage warning" -msgstr "Audacious - æŸåçš„GTK引擎警告" +#: src/skins/ui_manager.c:403 +msgid "Preferences" +msgstr "首选项" -#: src/skins/ui_main.c:1050 -#, c-format -msgid "" -"Broken GTK engine in use\n" -"\n" -"Audacious has detected that you are using a broken GTK engine.\n" -"\n" -"The theme engine you are using, %s, is incompatible with some of the " -"features used by modern skins. The incompatible features have been disabled " -"for this session.\n" -"\n" -"To use these features, please consider using a different GTK theme engine." -msgstr "" +#: src/skins/ui_manager.c:404 +msgid "Open preferences window" +msgstr "打开首选项窗å£" -#: src/skins/ui_main.c:1061 -msgid "Do not display this warning again" -msgstr "ä¸è¦å†æ示" +#: src/skins/ui_manager.c:407 +msgid "Quit Audacious" +msgstr "退出Audacious" + +#: src/skins/ui_manager.c:409 src/skins/ui_manager.c:410 +msgid "Set A-B" +msgstr "设置A-B" + +#: src/skins/ui_manager.c:412 src/skins/ui_manager.c:413 +msgid "Clear A-B" +msgstr "清空A-B" + +#: src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Jump to Playlist Start" +msgstr "跳到被选中列表并播放" + +#: src/skins/ui_manager.c:421 src/skins/ui_manager.c:422 +msgid "Jump to Time" +msgstr "跳到时间" + +#: src/skins/ui_manager.c:424 +msgid "Queue Toggle" +msgstr "队列切æ¢" + +#: src/skins/ui_manager.c:425 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "å¯ç”¨/ç¦ç”¨æ’­æ”¾é˜Ÿåˆ—çš„æ¡ç›®" + +#: src/skins/ui_manager.c:428 +msgid "Copy" +msgstr "å¤åˆ¶" + +#: src/skins/ui_manager.c:430 +msgid "Cut" +msgstr "剪切" + +#: src/skins/ui_manager.c:432 +msgid "Paste" +msgstr "粘贴" + +#: src/skins/ui_manager.c:439 +msgid "Load" +msgstr "载入" + +#: src/skins/ui_manager.c:440 +msgid "Import" +msgstr "导入" + +#: src/skins/ui_manager.c:441 +msgid "Save" +msgstr "ä¿å­˜" + +#: src/skins/ui_manager.c:442 +msgid "Delete" +msgstr "删除" + +#: src/skins/ui_manager.c:444 src/skins/ui_manager.c:465 +#: src/skins/ui_manager.c:480 +msgid "Preset" +msgstr "预设" + +#: src/skins/ui_manager.c:445 +msgid "Load preset" +msgstr "载入预设" + +#: src/skins/ui_manager.c:447 src/skins/ui_manager.c:468 +#: src/skins/ui_manager.c:483 +msgid "Auto-load preset" +msgstr "自动载入预设" + +#: src/skins/ui_manager.c:448 +msgid "Load auto-load preset" +msgstr "载入自动载入预设" + +#: src/skins/ui_manager.c:451 +msgid "Load default preset into equalizer" +msgstr "将默认预设载入到å‡è¡¡å™¨" + +#: src/skins/ui_manager.c:453 +msgid "Zero" +msgstr "零" + +#: src/skins/ui_manager.c:454 +msgid "Set equalizer preset levels to zero" +msgstr "å°†å‡è¡¡å™¨çš„预设等级设置为零" + +#: src/skins/ui_manager.c:456 +msgid "From file" +msgstr "从文件加载" + +#: src/skins/ui_manager.c:457 +msgid "Load preset from file" +msgstr "从文件加载预设" + +#: src/skins/ui_manager.c:459 +msgid "From WinAMP EQF file" +msgstr "从WinAMP EQF文件加载" + +#: src/skins/ui_manager.c:460 +msgid "Load preset from WinAMP EQF file" +msgstr "从WinAMP EQF文件加载预设" + +#: src/skins/ui_manager.c:462 +msgid "WinAMP Presets" +msgstr "WinAMP 预设" + +#: src/skins/ui_manager.c:463 +msgid "Import WinAMP presets" +msgstr "导入WinAMP预设" + +#: src/skins/ui_manager.c:466 +msgid "Save preset" +msgstr "ä¿å­˜é¢„设" + +#: src/skins/ui_manager.c:469 +msgid "Save auto-load preset" +msgstr "ä¿å­˜è‡ªåŠ¨åŠ è½½é¢„设" + +#: src/skins/ui_manager.c:472 +msgid "Save default preset" +msgstr "ä¿å­˜é»˜è®¤é¢„设" + +#: src/skins/ui_manager.c:474 +msgid "To file" +msgstr "ä¿å­˜åˆ°æ–‡ä»¶" + +#: src/skins/ui_manager.c:475 +msgid "Save preset to file" +msgstr "ä¿å­˜é¢„设到文件" + +#: src/skins/ui_manager.c:477 +msgid "To WinAMP EQF file" +msgstr "ä¿å­˜åˆ°WinAMP EQF文件" + +#: src/skins/ui_manager.c:478 +msgid "Save preset to WinAMP EQF file" +msgstr "ä¿å­˜é¢„设到WinAMP EQF文件" + +#: src/skins/ui_manager.c:481 +msgid "Delete preset" +msgstr "删除预设" + +#: src/skins/ui_manager.c:484 +msgid "Delete auto-load preset" +msgstr "删除自动加载预设" + +#: src/skins/ui_playlist.c:244 +msgid "Search entries in active playlist" +msgstr "从当å‰æ’­æ”¾åˆ—表中æœç´¢æ¡ç›®" + +#: src/skins/ui_playlist.c:252 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" +"按部分字段æœç´¢æ’­æ”¾åˆ—表中的æ¡ç›®ã€‚å„个字段都å¯ä»¥ä½¿ç”¨æ­£åˆ™è¡¨è¾¾å¼ï¼Œè€Œä¸”是ä¸åˆ†å¤§å°" +"字的。如果你ä¸çŸ¥é“何为正则表达å¼ï¼Œç®€å•çš„输入部分你想æœç´¢çš„文字亦å¯ã€‚" + +#: src/skins/ui_playlist.c:260 +msgid "Title: " +msgstr "标题:" + +#: src/skins/ui_playlist.c:267 +msgid "Album: " +msgstr "专辑:" + +#: src/skins/ui_playlist.c:274 +msgid "Artist: " +msgstr "艺术家:" + +#: src/skins/ui_playlist.c:281 +msgid "Filename: " +msgstr "文件å" + +#: src/skins/ui_playlist.c:289 +msgid "Clear previous selection before searching" +msgstr "æœç´¢å‰æ¸…空之å‰çš„结果" + +#: src/skins/ui_playlist.c:292 +msgid "Automatically toggle queue for matching entries" +msgstr "自动为区é…æ¡ç›®åˆ‡æ¢é˜Ÿåˆ—" + +#: src/skins/ui_playlist.c:295 +msgid "Create a new playlist with matching entries" +msgstr "用匹é…çš„æ¡ç›®åˆ›å»ºæ–°çš„播放列表" + +#: src/skins/ui_playlist.c:762 +msgid "Audacious Playlist Editor" +msgstr "Audacious播放列表编辑器" + +#: src/skins/ui_playlist.c:809 +#, c-format +msgid "%s (%d of %d)" +msgstr "" + +#: src/skins/ui_skinselector.c:162 +msgid "Archived Winamp 2.x skin" +msgstr "已打包的Winamp 2.x主题" + +#: src/skins/ui_skinselector.c:167 +msgid "Unarchived Winamp 2.x skin" +msgstr "未打包的Winamp 2.x主题" + +#: src/skins/util.c:773 +#, c-format +msgid "Could not create directory (%s): %s\n" +msgstr "无法创建目录(%s):%s\n" + +#: src/sndfile/plugin.c:454 +msgid "About sndfile plugin" +msgstr "关于sndfileæ’件" + +#: src/sndstretch/sndstretch_xmms.c:155 +msgid "About SndStretch" +msgstr "关于SndStretch" + +#: src/sndstretch/sndstretch_xmms.c:308 +msgid "Volume corr." +msgstr "" + +#: src/sndstretch/sndstretch_xmms.c:309 +msgid "Short Overlap" +msgstr "" + +#: src/sndstretch/sndstretch_xmms.c:355 +msgid "Speed" +msgstr "速度" + +#: src/sndstretch/sndstretch_xmms.c:356 +msgid "Pitch" +msgstr "音调" + +#: src/sndstretch/sndstretch_xmms.c:357 +msgid "Scale" +msgstr "缩放" + +#: src/sndstretch/sndstretch_xmms.c:377 +msgid "SndStretch - Configuration" +msgstr "SndStretch - 设置" + +#: src/song_change/song_change.c:447 +msgid "Command to run when Audacious starts a new song." +msgstr "歌曲开始播放时执行指令。" + +#: src/song_change/song_change.c:449 src/song_change/song_change.c:455 +#: src/song_change/song_change.c:461 src/song_change/song_change.c:467 +msgid "Command:" +msgstr "指令:" + +#: src/song_change/song_change.c:453 +msgid "Command to run toward the end of a song." +msgstr "歌曲å³å°†å®Œæˆæ—¶æ‰§è¡ŒæŒ‡ä»¤ã€‚" + +#: src/song_change/song_change.c:459 +msgid "Command to run when Audacious reaches the end of the playlist." +msgstr "当Audacious播放到列表结尾时执行指令。" + +#: src/song_change/song_change.c:465 +msgid "" +"Command to run when title changes for a song (i.e. network streams titles)." +msgstr "歌曲的标题改å˜æ—¶æ‰§è¡ŒæŒ‡ä»¤(如:网络媒体的标题)。" + +#: src/song_change/song_change.c:471 +msgid "" +"You can use the following format strings which\n" +"will be substituted before calling the command\n" +"(not all are useful for the end-of-playlist command).\n" +"\n" +"%F: Frequency (in hertz)\n" +"%c: Number of channels\n" +"%f: filename (full path)\n" +"%l: length (in milliseconds)\n" +"%n or %s: Song name\n" +"%r: Rate (in bits per second)\n" +"%t: Playlist position (%02d)\n" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" +msgstr "" +"ä½ å¯ä»¥ä½¿ç”¨ä»¥ä¸‹çš„æ ¼å¼ç¬¦å·ï¼Œåœ¨æ‰§è¡Œå‘½ä»¤æ—¶ï¼Œ\n" +"它们会被转æ¢ä¸ºç›¸åº”的值。\n" +"部分符å·åœ¨end-of-playlist命令中无效)\n" +"\n" +"%F: 频率 (å•ä½ï¼šHz)\n" +"%c: 声é“æ•°\n" +"%f: 文件å (完整路径)\n" +"%l: 长度 (å•ä½ï¼šæ¯«ç§’)\n" +"%n 或 %s: 歌曲å\n" +"%r: 比率 (å•ä½ï¼š bit/秒)\n" +"%t: 播放列表ä½ç½® (%02d)\n" +"%p: 当å‰æ’­æ”¾æ›²ç›® (1 or 0)\n" +"%a: 艺术家\n" +"%b: 专辑\n" +"%T: 音轨标题" + +#: src/song_change/song_change.c:498 +msgid "" +"Parameters passed to the shell should be encapsulated in " +"quotes. Doing otherwise is a security risk." +msgstr "" +"传递到Shellçš„å‚数一定è¦ç”¨å¼•å·åŒ…围,å¦åˆ™ä¼šæ˜¯ä¸€ä»¶ç›¸å½“å±é™©çš„" +"事。" + +#: src/song_change/song_change.c:509 +msgid "Commands" +msgstr "指令" + +#: src/song_change/song_change.c:539 +msgid "Song Change" +msgstr "歌曲改å˜" + +#: src/statusicon/statusicon.c:378 +msgid "About Status Icon Plugin" +msgstr "关于状æ€å›¾æ ‡æ’件" + +#: src/statusicon/statusicon.c:379 +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager.\n" +msgstr "" +"状æ€å›¾æ ‡æ’件\n" +"\n" +"版æƒæ‰€æœ‰ (c)\n" +"2005-2007 Giacomo Lozito \n" +"2010 MichaÅ‚ Lipski \n" +"\n" +"æ­¤æ’件会在系统托盘上生æˆçŠ¶æ€å›¾æ ‡ã€‚\n" + +#: src/statusicon/statusicon.c:447 +msgid "Status Icon Plugin - Preferences" +msgstr "状æ€å›¾æ ‡æ’件 - 首选项" + +#: src/statusicon/statusicon.c:457 +msgid "Right-Click Menu" +msgstr "å³é”®èœå•" + +#: src/statusicon/statusicon.c:462 +msgid "Small playback menu #1" +msgstr "迷你播放èœå•#1" + +#: src/statusicon/statusicon.c:465 +msgid "Small playback menu #2" +msgstr "迷你播放èœå•#2" + +#: src/statusicon/statusicon.c:481 +msgid "Mouse Scroll Action" +msgstr "鼠标滚轮动作" + +#: src/statusicon/statusicon.c:485 +msgid "Change volume" +msgstr "调整音é‡" + +#: src/statusicon/statusicon.c:487 +msgid "Change playing song" +msgstr "改å˜æ­Œæ›²" + +#: src/statusicon/statusicon.c:500 +msgid "Other settings" +msgstr "其它设置" + +#: src/statusicon/statusicon.c:505 +msgid "Disable the popup window" +msgstr "ç¦ç”¨å¼¹å‡ºçª—å£" + +#: src/statusicon/statusicon.c:512 +msgid "Close to the notification area (system tray)" +msgstr "关闭æ示区域(系统托盘)" + +#: src/stereo_plugin/stereo.c:45 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin 1999." +msgstr "" +"Extra Stereoæ’件\n" +"\n" +"作者: Johan Levin 1999." + +#: src/stereo_plugin/stereo.c:64 +msgid "About Extra Stereo Plugin" +msgstr "About Extra Stereoæ’件" + +#: src/stereo_plugin/stereo.c:95 +msgid "Configure Extra Stereo" +msgstr "设置Extra Stereo" + +#: src/streambrowser/gui/streambrowser_win.c:78 +msgid "Search:" +msgstr "æœç´¢ï¼š" + +#: src/streambrowser/gui/streambrowser_win.c:97 +#: src/streambrowser/gui/streambrowser_win.c:372 +msgid "Add Bookmark" +msgstr "添加书签" + +#: src/streambrowser/gui/streambrowser_win.c:324 +msgid "Stream name" +msgstr "æµå称" + +#: src/streambrowser/gui/streambrowser_win.c:331 +msgid "Now playing" +msgstr "正在播放" + +#: src/streambrowser/gui/streambrowser_win.c:369 +msgid "Remove Bookmark" +msgstr "删除书签" + +#: src/streambrowser/streambrowser.c:330 +msgid "About Stream Browser" +msgstr "关于æµæŸ¥çœ‹å™¨" -#: src/skins/ui_main.c:1269 -#, c-format -msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)" +#: src/streambrowser/streambrowser.c:331 +msgid "" +"Copyright (c) 2008, by Calin Crisan and The Audacious " +"Team.\n" +"\n" +"This is a simple stream browser that includes the most popular streaming " +"directories.\n" +"Many thanks to the Streamtuner developers ,\n" +"\tand of course to the whole Audacious community.\n" +"\n" +"Also thank you Tony Vroon for mentoring & guiding me, again.\n" +"\n" +"This was a Google Summer of Code 2008 project." msgstr "" +"版æƒæ‰€æœ‰ (c)\n" +"2008, Calin Crisan åŠAudaciouså¼€å‘å°ç»„。\n" +"\n" +"This is a simple stream browser that includes the most popular streaming " +"directories.\n" +"éžå¸¸æ„Ÿè°¢Streamtunerçš„å¼€å‘者,\n" +"åŠAudacious社区全体。\n" +"åŒæ—¶äº¦éžå¸¸æ„Ÿè°¢Tony Vroon对我的帮助和指导。\n" +"\n" +"Google Summer of Code 2008 project." -#: src/skins/ui_main.c:1299 -#, c-format -msgid "Volume: %d%%" +#: src/tonegen/tonegen.c:48 +msgid "About Tone Generator" +msgstr "关于Tone Generator" + +#: src/tonegen/tonegen.c:50 +msgid "" +"Sinus tone generator by Haavard Kvaalen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" msgstr "" -#: src/skins/ui_main.c:1322 +#: src/tonegen/tonegen.c:100 #, c-format -msgid "Balance: %d%% left" -msgstr "平衡: %d%% å·¦" +msgid "%s %.1f Hz" +msgstr "" -#: src/skins/ui_main.c:1324 -msgid "Balance: center" -msgstr "平衡: 中间" +#: src/tonegen/tonegen.c:100 +msgid "Tone Generator: " +msgstr "" + +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" +msgstr "关于文件I/Oæ’件" + +#: src/vorbis/vorbis.c:572 +msgid "About Ogg Vorbis Audio Plugin" +msgstr "关于Ogg Vorbis音频æ’件" + +#: src/vorbis/vorbis.c:577 +msgid "" +"Ogg Vorbis Plugin by the Xiph.org Foundation\n" +"\n" +"Original code by\n" +"Tony Arcieri \n" +"Contributions from\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visit the Xiph.org Foundation at http://www.xiph.org/\n" +msgstr "" +"Xiph.org基金会的Ogg Vorbisæ’件\n" +"\n" +"原作者:\n" +"Tony Arcieri \n" +"贡献者:\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"马上登录Xiph.org基金会的网站http://www.xiph.org/\n" + +#: src/vtx/about.c:14 +msgid "About Vortex Player" +msgstr "关于Vortex播放器" + +#: src/vtx/about.c:15 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"\n" +"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" +"and other AY/YM music sites.\n" +"\n" +"Audacious implementation by Pavel Vymetalek " +msgstr "" +"Sashnov Alexander çš„Vortex文件播放器\n" +"程åºåŸºäºŽRoman Sherbakovçš„in_vtx.dllæºç \n" +"vtx音ä¹æ–‡ä»¶å¯åœ¨http://vtx.microfor.ru/music.htm或者其它AY/YM音ä¹ç½‘站上找" +"到。\n" +"Audacious的实现由Pavel Vymetalek完æˆ" -#: src/skins/ui_main.c:1326 +#: src/wavpack/wavpack.c:353 #, c-format -msgid "Balance: %d%% right" -msgstr "平衡: %d%% å³" +msgid "Wavpack Decoder Plugin %s" +msgstr "Wavpack解ç æ’件 %s" -#: src/skins/ui_main.c:1618 -msgid "Options Menu" -msgstr "选项èœå•" +#: src/wavpack/wavpack.c:354 +msgid "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan\n" +"Visit the Wavpack site at http://www.wavpack.com/\n" +msgstr "" +"版æƒæ‰€æœ‰ (c)\n" +"2006 William Pitcock \n" +"\n" +"æ’件部分代ç æ¥è‡ªMiles Egan\n" +"登录Wavpack网站http://www.wavpack.com/\n" -#: src/skins/ui_main.c:1622 -msgid "Disable 'Always On Top'" -msgstr "ç¦ç”¨â€œé¡¶ç½®çª—å£â€" +#~ msgid "Daemon Interface (like old headless mode)" +#~ msgstr "Daemon模å¼" -#: src/skins/ui_main.c:1624 -msgid "Enable 'Always On Top'" -msgstr "å¯ç”¨â€œé¡¶ç½®çª—å£â€" +#~ msgid "About %s" +#~ msgstr "关于 %s" -#: src/skins/ui_main.c:1627 -msgid "File Info Box" -msgstr "文件信æ¯" +#~ msgid " Error" +#~ msgstr "错误" -#: src/skins/ui_main.c:1631 -msgid "Disable 'GUI Scaling'" -msgstr "ç¦ç”¨â€œç•Œé¢ç¼©æ”¾â€" - -#: src/skins/ui_main.c:1633 -msgid "Enable 'GUI Scaling'" -msgstr "å¯ç”¨â€œç•Œé¢ç¼©æ”¾â€" +#~ msgid "General info" +#~ msgstr "一般信æ¯" -#: src/skins/ui_main.c:1636 -msgid "Visualization Menu" -msgstr "å¯è§†åŒ–èœå•" +#~ msgid "Couldn't find pixmap file: %s" +#~ msgstr "无法找到pixmap文件: %s" -#: src/skins/ui_main.c:2348 -msgid "Single mode." -msgstr "å•ä¸€çª—å£æ¨¡å¼" +#~ msgid "Audacious-SID configuration" +#~ msgstr "Audacious-SID设置" -#: src/skins/ui_main.c:2350 -msgid "Playlist mode." -msgstr "播放列表模å¼" +#~ msgid "Resolution:" +#~ msgstr "分辨率:" -#: src/skins/ui_main.c:2374 -msgid "Stopping after song." -msgstr "完æˆåŽåœæ­¢" +#~ msgid "Samplerate:" +#~ msgstr "å–样率:" -#: src/skins/ui_main.c:2376 -msgid "Not stopping after song." -msgstr "完æˆåŽä¸åœæ­¢" +#~ msgid "Use oversampling" +#~ msgstr "使用超å–æ ·" -#: src/skins/ui_manager.c:50 src/skins/ui_manager.c:51 -msgid "Autoscroll Songname" -msgstr "自动滚动歌曲å" +#~ msgid "Factor:" +#~ msgstr "系数:" -#: src/skins/ui_manager.c:56 src/skins/ui_manager.c:57 -msgid "Peaks" -msgstr "峰值" +#~ msgid "Large factors require more CPU-power" +#~ msgstr "系数越大使用的CPU越多" -#: src/skins/ui_manager.c:68 src/skins/ui_manager.c:69 -msgid "Show Player" -msgstr "显示播放器" +#~ msgid "Oversampling:" +#~ msgstr "超å–æ ·" -#: src/skins/ui_manager.c:71 src/skins/ui_manager.c:72 -msgid "Show Playlist Editor" -msgstr "显示播放列表编辑器" +#~ msgid "Audio" +#~ msgstr "音频" -#: src/skins/ui_manager.c:74 src/skins/ui_manager.c:75 -msgid "Show Equalizer" -msgstr "显示å‡è¡¡å™¨" +#~ msgid "Force speed" +#~ msgstr "强制速度" -#: src/skins/ui_manager.c:77 src/skins/ui_manager.c:78 -msgid "Always on Top" -msgstr "顶置窗å£" +#~ msgid "" +#~ "If enabled, this option \"forces\" the emulation engine to use the " +#~ "selected clock speed/frequency. Otherwise the speed is determined from " +#~ "played file itself." +#~ msgstr "如果å¯ç”¨ï¼Œå°†å¼ºåˆ¶æ¨¡æ‹Ÿå™¨å¼•æ“Žä½¿ç”¨æŒ‡å®šçš„时频速度。å¦åˆ™åˆ™è‡ªå·±æ£€æµ‹ã€‚" -#: src/skins/ui_manager.c:80 src/skins/ui_manager.c:81 -msgid "Put on All Workspaces" -msgstr "所有工作区å¯è§" +#~ msgid "" +#~ "PAL is the european TV standard, which uses 50Hz vertical refresh " +#~ "frequency. Most of SID-tunes have been made for PAL computers." +#~ msgstr "" +#~ "PAL是欧洲的电视标准,它使用的垂直刷新率是50Hz。大部分的SID-tunes都是为PAL" +#~ "电脑制作的。" -#: src/skins/ui_manager.c:83 src/skins/ui_manager.c:84 -msgid "Roll up Player" -msgstr "收起播放器" +#~ msgid "" +#~ "NTSC is the TV standard with 60Hz vertical refresh rate (and other " +#~ "features that differ from PAL). It is mainly used in United States, Japan " +#~ "and certain other countries." +#~ msgstr "" +#~ "NTSC则是使用垂直刷新率为50Hz的电视标准(除此以外,还包å«å…¶å®ƒä¸åŒäºŽPAL的特" +#~ "性)。主è¦åœ¨ç¾Žå›½ï¼Œæ—¥æœ¬è¿˜å…¶å®ƒçš„部分国家使用。" + +#~ msgid "Clock speed:" +#~ msgstr "时频速度:" + +#~ msgid "Force model" +#~ msgstr "强制型å·" + +#~ msgid "SID model:" +#~ msgstr "SIDåž‹å·ï¼š" + +#~ msgid "SIDPlay 1 (frame-based)" +#~ msgstr "SIDPlay 1(基于帧)" + +#~ msgid "" +#~ "Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most " +#~ "cases, though." +#~ msgstr "" +#~ "使用libSIDPlay 1.x模拟器,速度更快,但并ä¸å‡†ç¡®ã€‚大部分情况都工作良好。" + +#~ msgid "SIDPlay 2 (cycle-based)" +#~ msgstr "SIDPlay 2(基于周期)" + +#~ msgid "" +#~ "Use libSIDPlay 2.x emulation, which requires powerful CPU due to more " +#~ "exact emulation." +#~ msgstr "使用libSIDPlay 2.x模拟器,将使用更多CPU以获得更准确的模拟。" + +#~ msgid "Emulation library selection:" +#~ msgstr "选择模拟器使用的库:" + +#~ msgid "Real C64 (SIDPlay 2 only)" +#~ msgstr "Real C64 (仅SIDPlay 2å¯ç”¨ï¼‰" + +#~ msgid "Bank switching" +#~ msgstr "Bank切æ¢" + +#~ msgid "Transparent ROM" +#~ msgstr "é€æ˜ŽROM" + +#~ msgid "PlaySID environment" +#~ msgstr "PlaySID环境" + +#~ msgid "Memory mode:" +#~ msgstr "内存模å¼ï¼š" + +#~ msgid "Optimization mode (faster, inaccurate)" +#~ msgstr "优化模å¼ï¼ˆæ›´å¿«ï¼Œä¸å‡†ç¡®ï¼‰" + +#~ msgid "reSID-emulation" +#~ msgstr "reSID模拟" + +#~ msgid "SIDPlay 2 options:" +#~ msgstr "SIDPlay2 选项:" + +#~ msgid "Resampling (FIR)" +#~ msgstr "å–æ ·(FIR)" + +#~ msgid "reSID sampling options:" +#~ msgstr "reSIDå–样选项:" + +#~ msgid "Emulate filters" +#~ msgstr "模拟过滤器" + +#~ msgid "Reset values" +#~ msgstr "é‡ç½®" + +#~ msgid "Export" +#~ msgstr "导出" + +#~ msgid "Use" +#~ msgstr "使用" + +#~ msgid "Filter curve:" +#~ msgstr "过滤器曲线:" + +#~ msgid "Filters" +#~ msgstr "过滤器" + +#~ msgid "Play at least for specified time" +#~ msgstr "至少播放指定的时间" + +#~ msgid "Playtime:" +#~ msgstr "播放时间:" + +#~ msgid "Minimum playtime:" +#~ msgstr "最å°æ’­æ”¾æ—¶é—´ï¼š" + +#~ msgid "Play for specified time maximum" +#~ msgstr "最长播放指定时间" + +#~ msgid "Only when song length is unknown" +#~ msgstr "仅当歌曲长度未知" + +#~ msgid "" +#~ "If enabled, the maximum playtime is applied only if song/tune length is " +#~ "not known." +#~ msgstr "如果å¯ç”¨ï¼Œæœ€é•¿æ’­æ”¾æ—¶é—´ä»…当歌曲长度未知时使用" + +#~ msgid "Maximum playtime:" +#~ msgstr "最长播放时间:" + +#~ msgid "Use XSIDPLAY-compatible database" +#~ msgstr "使用XSIDPLAY兼容的数æ®åº“" + +#~ msgid "DB-file:" +#~ msgstr "æ•°æ®åº“文件:" + +#~ msgid "Database path and filename" +#~ msgstr "æ•°æ®åº“文件路径åŠå称" + +#~ msgid "Browse for song length-database file" +#~ msgstr "æµè§ˆ" + +#~ msgid "Song length database:" +#~ msgstr "歌曲长度数æ®åº“:" + +#~ msgid "Songlength" +#~ msgstr "歌曲长度" + +#~ msgid "Override generic Tuplez format string" +#~ msgstr "覆盖常规Tuplezæ ¼å¼å­—串" + +#~ msgid "Tuplez format string for SID-files" +#~ msgstr "SID文件Tuplezæ ¼å¼å­—串" + +#~ msgid "Song title format:" +#~ msgstr "歌曲标题格å¼ï¼š" + +#~ msgid "Use STIL database" +#~ msgstr "使用STILæ•°æ®åº“" + +#~ msgid "STIL file:" +#~ msgstr "STIL文件:" + +#~ msgid "" +#~ "Path and filename of STIL database file (STIL.txt), usually found from " +#~ "HVSC's DOCUMENTS-subdirectory." +#~ msgstr "" +#~ "STILæ•°æ®åº“文件的路径åŠå称(STIL.txt)。通常å¯ä»¥åœ¨HVSC文档å­ç›®å½•ä¸‹æ‰¾åˆ°ã€‚" + +#~ msgid "Browse for STIL-database file" +#~ msgstr "æµè§ˆSTILæ•°æ®åº“文件" + +#~ msgid "HVSC path:" +#~ msgstr "HVSC路径:" + +#~ msgid "Browse for HVSC path" +#~ msgstr "æµè§ˆHVSC路径" + +#~ msgid "SID Tune Information List (STIL) database:" +#~ msgstr "SID音调信æ¯åˆ—表(STIL)数æ®åº“" + +#~ msgid "Cancel any changes" +#~ msgstr "å–消所有å˜æ›´" + +#~ msgid "Accept and update changes" +#~ msgstr "åŒæ„并更新" + +#~ msgid "Audacious-SID Fileinfo" +#~ msgstr "Audacious-SID文件信æ¯" + +#~ msgid "Filename:" +#~ msgstr "文件å:" + +#~ msgid "Songname:" +#~ msgstr "歌曲å:" + +#~ msgid "Composer:" +#~ msgstr "作曲家:" + +#~ msgid "Copyright:" +#~ msgstr "版æƒï¼š" + +#~ msgid "Song Information:" +#~ msgstr "歌曲信æ¯ï¼š" + +#~ msgid "Author:" +#~ msgstr "作者:" + +#~ msgid "Duration:" +#~ msgstr "æŒç»­æ—¶é—´ï¼š" + +#~ msgid "Sub-tune Information:" +#~ msgstr "Sub-tuneä¿¡æ¯ï¼š" + +#~ msgid "Select HVSC song length database" +#~ msgstr "选择HVSC歌曲长度数æ®åº“" + +#~ msgid "Select STIL-database" +#~ msgstr "选择STILæ•°æ®åº“" + +#~ msgid "Select HVSC location prefix" +#~ msgstr "选择HVSC路径å‰ç¼€" + +#~ msgid "Select SIDPlay2 filters file for importing" +#~ msgstr "选择è¦å¯¼å…¥çš„SIDPlay2过滤文件" + +#~ msgid "Select SIDPlay2 filters file for exporting" +#~ msgstr "选择è¦å¯¼å‡ºçš„SIDplay2过滤文件" + +#~ msgid "Confirm selected action" +#~ msgstr "确认选中的动作" + +#~ msgid "Yes" +#~ msgstr "是" + +#~ msgid "No" +#~ msgstr "å¦" + +#~ msgid "Save All Playlists" +#~ msgstr "ä¿å­˜æ‰€æœ‰æ’­æ”¾åˆ—表" + +#~ msgid "" +#~ "Saves all the playlists that are open. Note that this is done " +#~ "automatically when Audacious quits." +#~ msgstr "ä¿å­˜æ‰€æœ‰å·²æ‰“开的播放列表(其实Audacious退出时是会自动ä¿å­˜çš„)。" + +#~ msgid "Opens the playlist manager." +#~ msgstr "打开播放列表管ç†å™¨" + +#~ msgid "Override generic titles" +#~ msgstr "覆蓋常规标题" + +#~ msgid "Title format:" +#~ msgstr "标题格å¼" + +#~ msgid "Ogg Vorbis Tags" +#~ msgstr "Ogg Vorbis标签" + +#~ msgid "Ogg Vorbis Audio Plugin Configuration" +#~ msgstr "Ogg Vorbis音频播放设置" + +#~ msgid "Use Bitmap fonts if available" +#~ msgstr "å°½å¯èƒ½ä½¿ç”¨ç‚¹é˜µå­—体" + +#~ msgid "" +#~ "Use bitmap fonts if they are available. Bitmap fonts do not support " +#~ "Unicode strings." +#~ msgstr "å°½å¯èƒ½ä½¿ç”¨ç‚¹é˜µå­—体,点阵字体ä¸æ”¯æŒUnicode设置" + +#~ msgid "_Miscellaneous" +#~ msgstr "其它(_M)" + +#~ msgid "Use two-way text scroller" +#~ msgstr "使用åŒå‘字符滚动" + +#~ msgid "About " +#~ msgstr "关于" + +#~ msgid "" +#~ "\n" +#~ "Copyright (C) 2002, 2003 Simon Peter \n" +#~ "\n" +#~ "This plugin is released under the terms and conditions of the GNU LGPL.\n" +#~ "See http://www.gnu.org/licenses/lgpl.html for details.\n" +#~ "\n" +#~ "This plugin uses the AdPlug library, which is copyright (C) Simon Peter, " +#~ "et al.\n" +#~ "Linked AdPlug library version: " +#~ msgstr "" +#~ "\n" +#~ "版æƒæ‰€æœ‰ (C) 2002, 2003 Simon Peter \n" +#~ "\n" +#~ "This plugin is released under the terms and conditions of the GNU LGPL.\n" +#~ "详情请登录http://www.gnu.org/licenses/lgpl.html.\n" +#~ "\n" +#~ "æ­¤æ’件基于AdPlug库, 版æƒæ‰€æœ‰ (C) Simon Peter, et al.\n" +#~ "当å‰AdPlug版本: " + +#~ msgid "AdPlug :: Configuration" +#~ msgstr "AdPlug :: 设置" + +#~ msgid "Sound quality" +#~ msgstr "音质" + +#~ msgid "Resolution" +#~ msgstr "分辨率" + +#~ msgid "Channels" +#~ msgstr "声é“" + +#~ msgid "" +#~ "Setting stereo is not recommended, unless you need to. This won't add any " +#~ "stereo effects to the sound - OPL2 is just mono - but eats up more CPU " +#~ "power!" +#~ msgstr "" +#~ "设置为立体音是ä¸æŽ¨èçš„åšæ³•ï¼Œé™¤éžä½ çŸ¥é“自己在åšä»€ä¹ˆã€‚此选项ä¸ä¼šå¸¦æ¥ä»»ä½•ç«‹ä½“" +#~ "音效果(OPL2åªèƒ½æ˜¯å•å£°é“的),相ååªä¼šå ç”¨æ›´å¤šçš„CPU!" + +#~ msgid "Frequency" +#~ msgstr "频率" + +#~ msgid "Detect songend" +#~ msgstr "检测歌曲结尾" + +#~ msgid "" +#~ "If enabled, XMMS will detect a song's ending, stop it and advance in the " +#~ "playlist. If disabled, XMMS won't take notice of a song's ending and loop " +#~ "it all over again and again." +#~ msgstr "" +#~ "如果å¯ç”¨ï¼ŒXMMSå°†å°è¯•æµ‹è¯•æ­Œæ›²çš„结尾,并在结æŸæ—¶ï¼Œè‡ªåŠ¨æ’­æ”¾åˆ—表中的下一首歌" +#~ "曲。\n" +#~ "如果ç¦ç”¨ï¼ŒXMMS将因无法得知歌曲的结尾而ä¸æ–­é‡å¤æ’­æ”¾åŒä¸€é¦–歌曲。" + +#~ msgid "Formats" +#~ msgstr "æ ¼å¼" + +#~ msgid "Format selection" +#~ msgstr "æ ¼å¼é€‰æ‹©" + +#~ msgid "Format" +#~ msgstr "æ ¼å¼" + +#~ msgid "Extension" +#~ msgstr "åŽç¼€" + +#~ msgid "" +#~ "Selected file types will be recognized and played back by this plugin. " +#~ "Deselected types will be ignored to make room for other plugins to play " +#~ "these files." +#~ msgstr "" +#~ "被选中文件类型会被识别并被此æ’件播放。\n" +#~ "未选中的,则会被忽略并由其它æ’件播放" + +#~ msgid "AdPlug :: File Info" +#~ msgstr "AdPlug :: 文件信æ¯" + +#~ msgid "Author: " +#~ msgstr "作者:" + +#~ msgid "File Type: " +#~ msgstr "文件类型:" -#: src/skins/ui_manager.c:86 src/skins/ui_manager.c:87 -msgid "Roll up Playlist Editor" -msgstr "收起播放列表编辑器" +#~ msgid "Subsongs: " +#~ msgstr "å­æ­Œæ›²ï¼š" -#: src/skins/ui_manager.c:89 src/skins/ui_manager.c:90 -msgid "Roll up Equalizer" -msgstr "收起å‡è¡¡å™¨" +#~ msgid "Instruments: " +#~ msgstr "ä¹å™¨ï¼š" -#: src/skins/ui_manager.c:92 src/sndstretch/sndstretch_xmms.c:393 -msgid "Scale" -msgstr "缩放" +#~ msgid "Orders: " +#~ msgstr "顺åºï¼š" -#: src/skins/ui_manager.c:93 -msgid "DoubleSize" -msgstr "åŒå€å¤§å°" - -#: src/skins/ui_manager.c:95 src/skins/ui_manager.c:96 -msgid "Easy Move" -msgstr "简易移动" +#~ msgid "Patterns: " +#~ msgstr "格调:" -#: src/skins/ui_manager.c:104 -msgid "Analyzer" -msgstr "分æžå™¨" +#~ msgid "Song" +#~ msgstr "歌曲" -#: src/skins/ui_manager.c:105 -msgid "Scope" -msgstr "范围" +#~ msgid "Instrument name" +#~ msgstr "ä¹å™¨å" -#: src/skins/ui_manager.c:106 -msgid "Voiceprint" -msgstr "声波纹" +#~ msgid "Song message" +#~ msgstr "歌曲信æ¯" -#: src/skins/ui_manager.c:107 -msgid "Off" -msgstr "关闭" +#~ msgid "Subsong selection" +#~ msgstr "å­æ­Œæ›²é€‰é¡¹" -#: src/skins/ui_manager.c:111 src/skins/ui_manager.c:128 -#: src/skins/ui_manager.c:134 -msgid "Normal" -msgstr "一般" +#~ msgid "Order: " +#~ msgstr "顺åºï¼š" -#: src/skins/ui_manager.c:112 src/skins/ui_manager.c:129 -msgid "Fire" -msgstr "" +#~ msgid "Pattern: " +#~ msgstr "格调:" -#: src/skins/ui_manager.c:113 -msgid "Vertical Lines" -msgstr "" +#~ msgid "Row: " +#~ msgstr "行:" -#: src/skins/ui_manager.c:117 -msgid "Lines" -msgstr "" +#~ msgid "Speed: " +#~ msgstr "速度:" -#: src/skins/ui_manager.c:118 -msgid "Bars" -msgstr "" +#~ msgid "Timer: " +#~ msgstr "计时:" -#: src/skins/ui_manager.c:122 -msgid "Dot Scope" -msgstr "" +#~ msgid "Select Playlist" +#~ msgstr "选择播放列表" -#: src/skins/ui_manager.c:123 -msgid "Line Scope" -msgstr "" +#~ msgid "reset to current output volume" +#~ msgstr "é‡ç½®å½“å‰è¾“出音é‡" -#: src/skins/ui_manager.c:124 -msgid "Solid Scope" -msgstr "" +#~ msgid "Pairing request for '%s'" +#~ msgstr "正在为'%s'é…对请求" -#: src/skins/ui_manager.c:130 -msgid "Ice" -msgstr "" +#~ msgid "Authorization request for %s" +#~ msgstr "'%s'è¦æ±‚认è¯" -#: src/skins/ui_manager.c:135 -msgid "Smooth" -msgstr "平滑" +#~ msgid "Created bonding with %s" +#~ msgstr "正在绑定%s" -#: src/skins/ui_manager.c:139 src/skins/ui_manager.c:147 -msgid "Slowest" -msgstr "最慢" +#~ msgid "Removed bonding with %s" +#~ msgstr "正在解除%s" -#: src/skins/ui_manager.c:140 src/skins/ui_manager.c:148 -msgid "Slow" -msgstr "æ…¢" +#~ msgid "Device has been switched off" +#~ msgstr "设备已关闭" -#: src/skins/ui_manager.c:141 src/skins/ui_manager.c:149 -msgid "Medium" -msgstr "中速" +#~ msgid "Device has been made non-discoverable" +#~ msgstr "设备ä¸å¯è¿žæŽ¥" -#: src/skins/ui_manager.c:142 src/skins/ui_manager.c:150 -msgid "Fast" -msgstr "å¿«" +#~ msgid "Device has been made connectable" +#~ msgstr "设备å¯è¿žæŽ¥" -#: src/skins/ui_manager.c:143 src/skins/ui_manager.c:151 -msgid "Fastest" -msgstr "最快" +#~ msgid "Device has been made discoverable" +#~ msgstr "设备无法æ¢å¤" -#: src/skins/ui_manager.c:155 -msgid "Time Elapsed" -msgstr "已用时间" +#~ msgid "Device has been made limited discoverable" +#~ msgstr "设备部分å¯æ¢å¤" -#: src/skins/ui_manager.c:156 -msgid "Time Remaining" -msgstr "剩余时间" +#~ msgid "Device has been switched into pairing mode" +#~ msgstr "设备已切转é…对模å¼" -#: src/skins/ui_manager.c:185 -msgid "Visualization" -msgstr "å¯è§†åŒ–效果" +#~ msgid "Bluetooth headset support plugin" +#~ msgstr "è“牙耳机支æŒæ’件" -#: src/skins/ui_manager.c:186 -msgid "Visualization Mode" -msgstr "å¯è§†åŒ–模å¼" +#~ msgid "" +#~ "Bluetooth headset support\n" +#~ "Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" +#~ "This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and " +#~ "the Audacious team\n" +#~ " \n" +#~ "In order to use the AVRCP you need the uinput module loaded into the " +#~ "kernel\n" +#~ "The headset keys will be recognized as normal mutimedia keys and \n" +#~ "can be configured using the Audacious Global Hotkey plugin or ohter " +#~ "tools \n" +#~ "provided by your window manager\n" +#~ msgstr "" +#~ "Bluetooth耳机支æŒ\n" +#~ "版æƒæ‰€æœ‰ (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" +#~ "GSoC 2008 Project - éžå¸¸æ„Ÿè°¢æˆ‘的导师Tony VroonåŠAudaciouså¼€å‘å°ç»„\n" +#~ " \n" +#~ "è¦ä½¿ç”¨AVRCP,你必需为内核加载uinput模å—。\n" +#~ "耳机上的键将会被识别为一般的多媒体键,\n" +#~ "ä½ å¯ä»¥é€šè¿‡Audacious全局热键æ’件或窗å£ç®¡ç†å™¨æ供的工具进行é…置。\n" -#: src/skins/ui_manager.c:187 -msgid "Analyzer Mode" -msgstr "分æžå™¨æ¨¡å¼" +#~ msgid "Producer" +#~ msgstr "生产商" -#: src/skins/ui_manager.c:188 -msgid "Scope Mode" -msgstr "" +#~ msgid "Available Headsets" +#~ msgstr "å¯ç”¨è€³æœº" -#: src/skins/ui_manager.c:189 -msgid "Voiceprint Mode" -msgstr "" +#~ msgid "Current Headset" +#~ msgstr "当å‰è€³æœº" -#: src/skins/ui_manager.c:190 -msgid "WindowShade VU Mode" -msgstr "" +#~ msgid "_Connect" +#~ msgstr "连接(_C)" -#: src/skins/ui_manager.c:191 -msgid "Analyzer Falloff" -msgstr "" +#~ msgid "Class" +#~ msgstr "类型" -#: src/skins/ui_manager.c:192 -msgid "Peaks Falloff" -msgstr "" +#~ msgid "Address:" +#~ msgstr "地å€ï¼š" -#: src/skins/ui_manager.c:202 src/skins/ui_manager.c:203 -msgid "Select Next Playlist" -msgstr "å‰ä¸€ä¸ªæ’­æ”¾åˆ—表" +#~ msgid "Bonding finish!" +#~ msgstr "绑定完æˆï¼" -#: src/skins/ui_manager.c:205 src/skins/ui_manager.c:206 -msgid "Select Previous Playlist" -msgstr "下一下播放列表" +#~ msgid "No devices found!" +#~ msgstr "未找到设备ï¼" -#: src/skins/ui_manager.c:222 -msgid "Refresh List" -msgstr "刷新列表" +#~ msgid "Scanning..." +#~ msgstr "正在扫æ..." -#: src/skins/ui_manager.c:226 -msgid "List Manager" -msgstr "列表管ç†å™¨" +#~ msgid "Pairing..." +#~ msgstr "正在é…对..." -#: src/skins/ui_manager.c:236 -msgid "Add Internet Address..." -msgstr "添加网络地å€..." +#~ msgid "Rescan" +#~ msgstr "é‡æ–°æ‰«æ" -#: src/skins/ui_manager.c:240 -msgid "Add Files..." -msgstr "添加文件..." +#~ msgid "Playback->Play" +#~ msgstr "回放->播放" -#: src/skins/ui_manager.c:246 -msgid "Search and Select" -msgstr "æœç´¢/选择" +#~ msgid "Playback->Stop" +#~ msgstr "回放->åœæ­¢" -#: src/skins/ui_manager.c:247 -msgid "" -"Searches the playlist and selects playlist entries based on specific " -"criteria." -msgstr "æœç´¢å¹¶é€‰æ‹©åˆ—表中符åˆæ¡ä»¶çš„æ¡ç›®" +#~ msgid "Playback->Pause" +#~ msgstr "回放->æš‚åœ" -#: src/skins/ui_manager.c:250 -msgid "Invert Selection" -msgstr "å选" +#~ msgid "Playback->Prev" +#~ msgstr "回放->å‰ä¸€é¦–" -#: src/skins/ui_manager.c:251 -msgid "Inverts the selected and unselected entries." -msgstr "å转被选中与未被选中的æ¡ç›®" +#~ msgid "Playback->Next" +#~ msgstr "回放->下一首" -#: src/skins/ui_manager.c:268 -msgid "Clear Queue" -msgstr "清空队列" +#~ msgid "Playback->Eject" +#~ msgstr "回放->弹出" -#: src/skins/ui_manager.c:269 -msgid "Clears the queue associated with this playlist." -msgstr "清空此列表中的队列" +#~ msgid "Playlist->Repeat" +#~ msgstr "列表->é‡å¤" -#: src/skins/ui_manager.c:272 -msgid "Remove Unavailable Files" -msgstr "删除ä¸å¯ç”¨æ–‡ä»¶" +#~ msgid "Playlist->Shuffle" +#~ msgstr "列表->éšæœº" -#: src/skins/ui_manager.c:273 -msgid "Removes unavailable files from the playlist." -msgstr "从播放列表中删除ä¸å¯ç”¨æ–‡ä»¶" +#~ msgid "Volume->Up_5" +#~ msgstr "音é‡->+5" -#: src/skins/ui_manager.c:276 -msgid "Remove Duplicates" -msgstr "删除é‡å¤çš„æ¡ç›®" +#~ msgid "Volume->Down_5" +#~ msgstr "音é‡->-5" -#: src/skins/ui_manager.c:279 -msgid "Removes duplicate entries from the playlist by title." -msgstr "æ ¹æ®æ ‡é¢˜åˆ é™¤é‡å¤çš„æ¡ç›®" +#~ msgid "Volume->Up_10" +#~ msgstr "音é‡->+10" -#: src/skins/ui_manager.c:282 src/skins/ui_manager.c:318 -#: src/skins/ui_manager.c:348 -msgid "By Filename" -msgstr "æ ¹æ®æ–‡ä»¶å" +#~ msgid "Volume->Down_10" +#~ msgstr "音é‡->-10" -#: src/skins/ui_manager.c:283 -msgid "Removes duplicate entries from the playlist by filename." -msgstr "æ ¹æ®æ–‡ä»¶å删除é‡å¤çš„æ¡ç›®" +#~ msgid "Volume->Mute" +#~ msgstr "音é‡->é™éŸ³" -#: src/skins/ui_manager.c:286 src/skins/ui_manager.c:322 -#: src/skins/ui_manager.c:352 -msgid "By Path + Filename" -msgstr "æ ¹æ®è·¯å¾„和文件å" +#~ msgid "Window->Main" +#~ msgstr "窗å£->主界é¢" -#: src/skins/ui_manager.c:287 -msgid "Removes duplicate entries from the playlist by their full path." -msgstr "æ ¹æ®æ–‡ä»¶çš„完整路径删除é‡å¤æ¡ç›®" +#~ msgid "Window->Playlist" +#~ msgstr "窗å£->播放列表" -#: src/skins/ui_manager.c:300 -msgid "Reverse List" -msgstr "å转列表" +#~ msgid "Window->Equalizer" +#~ msgstr "窗å£->å‡è¡¡å™¨" -#: src/skins/ui_manager.c:301 -msgid "Reverses the playlist." -msgstr "å转播放列表" +#~ msgid "Window->JumpToFile" +#~ msgstr "窗å£->跳到文件" -#: src/skins/ui_manager.c:304 -msgid "Sort List" -msgstr "排åºåˆ—表" +#~ msgid "" +#~ "event-device-plugin: unable to open device file %s , skipping this " +#~ "device; check that the file exists and that you have read permission for " +#~ "it\n" +#~ msgstr "" +#~ "event-device-plugin: 无法打开设备文件 %s,忽略此设备;请检查文件是å¦å­˜åœ¨åŠ" +#~ "你是å¦å¯¹å…¶æœ‰è¯»å–æƒé™\n" -#: src/skins/ui_manager.c:307 src/skins/ui_manager.c:337 -msgid "Sorts the list by title." -msgstr "æ ¹æ®æ ‡é¢˜æŽ’åºåˆ—表" +#~ msgid "" +#~ "event-device-plugin: unable to create a io_channel for device file %s ," +#~ "skipping this device\n" +#~ msgstr "event-device-plugin: 无法为设备文件 %s 创建io_channel,忽略此设备\n" -#: src/skins/ui_manager.c:311 src/skins/ui_manager.c:341 -msgid "Sorts the list by album." -msgstr "æ ¹æ®ä¸“辑排åºåˆ—表" +#~ msgid "" +#~ "event-device-plugin: unable to open /proc/bus/input/devices , automatic " +#~ "detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: 无法打开/proc/bus/input/devices, 自动检测event设备无" +#~ "法工作。\n" -#: src/skins/ui_manager.c:315 src/skins/ui_manager.c:345 -msgid "Sorts the list by artist." -msgstr "æ ¹æ®è‰ºæœ¯å®¶æŽ’åºåˆ—表" +#~ msgid "" +#~ "event-device-plugin: unable to open a io_channel for /proc/bus/input/" +#~ "devices , automatic detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: 无法为/proc/bus/input/devices打开io_channel,自动检测" +#~ "event设备无法工作。\n" -#: src/skins/ui_manager.c:319 src/skins/ui_manager.c:349 -msgid "Sorts the list by filename." -msgstr "æ ¹æ®æ–‡ä»¶å排åºåˆ—表" +#~ msgid "" +#~ "event-device-plugin: an error occurred while reading /proc/bus/input/" +#~ "devices , automatic detection of event devices won't work.\n" +#~ msgstr "" +#~ "event-device-plugin: 读å–/proc/bus/input/devicesæ—¶å‘生错误,自动检测event" +#~ "设备无法工作。\n" -#: src/skins/ui_manager.c:323 src/skins/ui_manager.c:353 -msgid "Sorts the list by full pathname." -msgstr "æ ¹æ®å®Œæ•´è·¯å¾„排åºåˆ—表" +#~ msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n" +#~ msgstr "event-device-plugin: /dev/input中ä¸å­˜åœ¨è®¾å¤‡%s,已忽略。\n" -#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 -msgid "By Date" -msgstr "æ ¹æ®æ—¥æœŸ" +#~ msgid "" +#~ "event-device-plugin: unable to load config file %s , default settings " +#~ "will be used.\n" +#~ msgstr "event-device-plugin: 无法加载é…置文件 %s , 将使用默认设置。\n" -#: src/skins/ui_manager.c:327 src/skins/ui_manager.c:357 -msgid "Sorts the list by modification time." -msgstr "æ ¹æ®ä¿®æ”¹æ—¶é—´æŽ’åºåˆ—表" +#~ msgid "" +#~ "event-device-plugin: incomplete information in config file for device \"%s" +#~ "\" , skipping.\n" +#~ msgstr "event-device-plugin: 设备\"%s\"在é…置文件中的信æ¯ä¸å®Œæ•´ï¼Œå·²å¿½ç•¥ã€‚\n" -#: src/skins/ui_manager.c:331 src/skins/ui_manager.c:361 -msgid "Sorts the list by track number." -msgstr "æ ¹æ®éŸ³è½¨å·ç æŽ’åºåˆ—表" +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get is_active value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: é…置文件,无法å–得设备\"%s\" is_active的值, 已忽略.\n" -#: src/skins/ui_manager.c:334 -msgid "Sort Selected" -msgstr "排åºå·²é€‰ä¸­çš„" +#~ msgid "" +#~ "event-device-plugin: unable to access local directory %s , settings will " +#~ "not be saved.\n" +#~ msgstr "event-device-plugin: 无法访问目录 %s , 设置无法ä¿å­˜ã€‚\n" -#: src/skins/ui_manager.c:373 -msgid "Plugin Services" -msgstr "æ’件æœåŠ¡" +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get filename value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: é…置文件,无法å–得设备\"%s\"的文件å, 已忽略。\n" -#: src/skins/ui_manager.c:384 -msgid "Play File" -msgstr "播放文件" +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get phys value for device " +#~ "\"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: é…置文件, 无法å–得设备\"%s\"çš„phys值,已忽略。\n" -#: src/skins/ui_manager.c:387 -msgid "Play Location" -msgstr "播放ä½ç½®" +#~ msgid "" +#~ "event-device-plugin: configuration, unable to get is_custom value for " +#~ "device \"%s\", skipping it.\n" +#~ msgstr "" +#~ "event-device-plugin: é…置文件,无法å–得设备\"%s\" is_custon的值, 已忽" +#~ "略。\n" -#: src/skins/ui_manager.c:428 -msgid "Load" -msgstr "载入" +#~ msgid "" +#~ "event-device-plugin: configuration, unexpected value for device \"%s\", " +#~ "skipping it.\n" +#~ msgstr "event-device-plugin: é…置文件, 设备\"%s\"的值éžæ³•, 已忽略。\n" -#: src/skins/ui_manager.c:433 src/skins/ui_manager.c:454 -#: src/skins/ui_manager.c:469 -msgid "Preset" -msgstr "预设" +#~ msgid "Detected" +#~ msgstr "检测到" -#: src/skins/ui_manager.c:434 -msgid "Load preset" -msgstr "载入预设" +#~ msgid "Custom" +#~ msgstr "自定" -#: src/skins/ui_manager.c:436 src/skins/ui_manager.c:457 -#: src/skins/ui_manager.c:472 -msgid "Auto-load preset" -msgstr "自动载入预设" +#~ msgid "Not Detected" +#~ msgstr "未检测到" -#: src/skins/ui_manager.c:437 -msgid "Load auto-load preset" -msgstr "载入自动载入预设" +#~ msgid "Information" +#~ msgstr "ä¿¡æ¯" -#: src/skins/ui_manager.c:440 -msgid "Load default preset into equalizer" -msgstr "将默认预设载入到å‡è¡¡å™¨" +#~ msgid "" +#~ "Cannot open bindings window for a not-detected device.\n" +#~ "Ensure that the device has been correctly plugged in." +#~ msgstr "" +#~ "无法为未检测到的设备打开绑定窗å£ã€‚\n" +#~ "请é‡æ–°ç¡®è®¤è®¾å¤‡å·²æ­£ç¡®è¿žæŽ¥ã€‚" -#: src/skins/ui_manager.c:442 -msgid "Zero" -msgstr "零" +#~ msgid "" +#~ "Unable to open selected device.\n" +#~ "Please check read permissions on device file." +#~ msgstr "" +#~ "无法打开选中的设备。\n" +#~ "请检查设备文件的æƒé™ã€‚" -#: src/skins/ui_manager.c:443 -msgid "Set equalizer preset levels to zero" -msgstr "å°†å‡è¡¡å™¨çš„预设等级设置为零" +#~ msgid "EvDev-Plug - Add custom device" +#~ msgstr "EvDev-Plug - 添加自定义设备" -#: src/skins/ui_manager.c:445 -msgid "From file" -msgstr "从文件加载" +#~ msgid "" +#~ "EvDev-Plug tries to automatically detect and update information about\n" +#~ "event devices available on the system.\n" +#~ "However, if auto-detect doesn't work for your system, or you have event\n" +#~ "devices in a non-standard location (currently they're only searched in\n" +#~ "/dev/input/ ), you may want to add a custom device, explicitly " +#~ "specifying\n" +#~ "name and device file." +#~ msgstr "" +#~ "EvDev-Plug正在å°è¯•è‡ªåŠ¨æ£€æµ‹å’Œæ›´æ–°ç³»ç»Ÿä¸Šå¯ç”¨çš„event设备信æ¯\n" +#~ "如果自动检测失败,或者你的event设备ä¸åœ¨æ ‡å‡†ä½ç½®ï¼ˆçŽ°åœ¨åªåœ¨/dev/input/中æœ" +#~ "索,\n" +#~ "ä½ å°±è¦æ‰‹åŠ¨æ·»åŠ è®¾å¤‡ï¼Œå¹¶æ˜Žç¡®æŒ‡å®šå称åŠè®¾å¤‡æ–‡ä»¶ã€‚" -#: src/skins/ui_manager.c:446 -msgid "Load preset from file" -msgstr "从文件加载预设" +#~ msgid "Device name:" +#~ msgstr "设备å:" -#: src/skins/ui_manager.c:448 -msgid "From WinAMP EQF file" -msgstr "从WinAMP EQF文件加载" +#~ msgid "Device file:" +#~ msgstr "设备文件:" -#: src/skins/ui_manager.c:449 -msgid "Load preset from WinAMP EQF file" -msgstr "从WinAMP EQF文件加载预设" +#~ msgid "(custom)" +#~ msgstr "(定制)" -#: src/skins/ui_manager.c:451 -msgid "WinAMP Presets" -msgstr "WinAMP 预设" +#~ msgid "" +#~ "Please specify both name and filename.\n" +#~ "Filename must be specified with absolute path." +#~ msgstr "" +#~ "请指定å称åŠæ–‡ä»¶å。\n" +#~ "文件å必需为ç»å¯¹è·¯å¾„。" -#: src/skins/ui_manager.c:452 -msgid "Import WinAMP presets" -msgstr "导入WinAMP预设" +#~ msgid "" +#~ "Do you want to remove the existing configuration for selected device?\n" +#~ msgstr "ä½ è¦åˆ é™¤é€‰ä¸­è®¾å¤‡çŽ°æœ‰çš„é…置文件å—?\n" -#: src/skins/ui_manager.c:455 -msgid "Save preset" -msgstr "ä¿å­˜é¢„设" +#~ msgid "Do you want to remove the selected custom device?\n" +#~ msgstr "ä½ è¦åˆ é™¤é€‰ä¸­çš„自定义设备å—?\n" -#: src/skins/ui_manager.c:458 -msgid "Save auto-load preset" -msgstr "ä¿å­˜è‡ªåŠ¨åŠ è½½é¢„设" +#~ msgid "EvDev-Plug - Configuration" +#~ msgstr "EvDev-Plug - 设置" -#: src/skins/ui_manager.c:461 -msgid "Save default preset" -msgstr "ä¿å­˜é»˜è®¤é¢„设" +#~ msgid "Active" +#~ msgstr "已激活" -#: src/skins/ui_manager.c:463 -msgid "To file" -msgstr "ä¿å­˜åˆ°æ–‡ä»¶" +#~ msgid "Status" +#~ msgstr "状æ€" -#: src/skins/ui_manager.c:464 -msgid "Save preset to file" -msgstr "ä¿å­˜é¢„设到文件" +#~ msgid "Device Name" +#~ msgstr "设备å" -#: src/skins/ui_manager.c:466 -msgid "To WinAMP EQF file" -msgstr "ä¿å­˜åˆ°WinAMP EQF文件" +#~ msgid "Device File" +#~ msgstr "设备文件" -#: src/skins/ui_manager.c:467 -msgid "Save preset to WinAMP EQF file" -msgstr "ä¿å­˜é¢„设到WinAMP EQF文件" +#~ msgid "Device Address" +#~ msgstr "设备地å€" -#: src/skins/ui_manager.c:470 -msgid "Delete preset" -msgstr "删除预设" +#~ msgid "_Bindings" +#~ msgstr "绑定(_B)" -#: src/skins/ui_manager.c:473 -msgid "Delete auto-load preset" -msgstr "删除自动加载预设" +#~ msgid "" +#~ "Press a key of your device to bind it;\n" +#~ "if no key is pressed in five seconds, this window\n" +#~ "will close without binding changes." +#~ msgstr "" +#~ "请在设备上按下你è¦ç»‘定的键;如果5秒内未无æ“作,窗å£å°†è‡ªåŠ¨å…³é—­å¹¶å–消绑定。" -#: src/skins/ui_playlist.c:374 -msgid "Search entries in active playlist" -msgstr "从当å‰æ’­æ”¾åˆ—表中æœç´¢æ¡ç›®" +#~ msgid "EvDev-Plug - Bindings Configuration" +#~ msgstr "EvDev-Plug - 绑定设置" -#: src/skins/ui_playlist.c:382 -msgid "" -"Select entries in playlist by filling one or more fields. Fields use regular " -"expressions syntax, case-insensitive. If you don't know how regular " -"expressions work, simply insert a literal portion of what you're searching " -"for." -msgstr "" -"按部分字段æœç´¢æ’­æ”¾åˆ—表中的æ¡ç›®ã€‚å„个字段都å¯ä»¥ä½¿ç”¨æ­£åˆ™è¡¨è¾¾å¼ï¼Œè€Œä¸”是ä¸åˆ†å¤§å°" -"字的。如果你ä¸çŸ¥é“何为正则表达å¼ï¼Œç®€å•çš„输入部分你想æœç´¢çš„文字亦å¯ã€‚" +#~ msgid "Name: " +#~ msgstr "å称:" -#: src/skins/ui_playlist.c:397 -msgid "Album: " -msgstr "专辑:" +#~ msgid "Filename: " +#~ msgstr "文件å:" -#: src/skins/ui_playlist.c:404 -msgid "Artist: " -msgstr "艺术家:" +#~ msgid "Phys.Address: " +#~ msgstr "物ç†åœ°å€ï¼š" -#: src/skins/ui_playlist.c:411 -msgid "Filename: " -msgstr "文件å" +#~ msgid "EvDev-Plug - about" +#~ msgstr "EvDev-Plug - 关于" -#: src/skins/ui_playlist.c:419 -msgid "Clear previous selection before searching" -msgstr "æœç´¢å‰æ¸…空之å‰çš„结果" +#~ msgid "" +#~ "\n" +#~ "player remote control via event devices\n" +#~ "http://www.develia.org/projects.php?p=audacious#evdevplug\n" +#~ "\n" +#~ "written by Giacomo Lozito\n" +#~ msgstr "" +#~ "\n" +#~ "event设备远程控制播放器\n" +#~ "http://www.develia.org/projects.php?p=audacious#evdevplug\n" +#~ "\n" +#~ "作者: Giacomo Lozito\n" -#: src/skins/ui_playlist.c:422 -msgid "Automatically toggle queue for matching entries" -msgstr "自动为区é…æ¡ç›®åˆ‡æ¢é˜Ÿåˆ—" +#~ msgid "This LADSPA plugin has no user controls" +#~ msgstr "LADSPAæ’件未被其它人所用" + +#~ msgid "Name" +#~ msgstr "åå­—" -#: src/skins/ui_playlist.c:425 -msgid "Create a new playlist with matching entries" -msgstr "用匹é…çš„æ¡ç›®åˆ›å»ºæ–°çš„播放列表" +#~ msgid "UID" +#~ msgstr "UID" -#: src/skins/ui_playlist.c:772 -msgid "Save as Static Playlist" -msgstr "ä¿å­˜åˆ°é™æ€æ’­æ”¾åˆ—表" - -#: src/skins/ui_playlist.c:779 -msgid "Use Relative Path" -msgstr "使用相对路径" - -#: src/skins/ui_playlist.c:802 -msgid "Load Playlist" -msgstr "加载播放列表" - -#: src/skins/ui_playlist.c:815 -msgid "Save Playlist" -msgstr "ä¿å­˜æ’­æ”¾åˆ—表" +#~ msgid "Running plugins" +#~ msgstr "è¿è¡Œä¸­çš„æ’件" -#: src/skins/ui_playlist.c:1146 -msgid "Audacious Playlist Editor" -msgstr "Audacious播放列表编辑器" +#~ msgid "Add" +#~ msgstr "添加" -#: src/skins/ui_playlist.c:1206 -#, c-format -msgid "%s (%d of %d)" -msgstr "" +#~ msgid "Remove" +#~ msgstr "删除" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "31 Hz" -msgstr "" +#~ msgid "LADSPA Plugin Catalog" +#~ msgstr "LDASPAæ’件分类" -#: src/skins/ui_skinned_equalizer_slider.c:435 -msgid "63 Hz" -msgstr "" +#~ msgid "About LIRC Audacious Plugin" +#~ msgstr "关于LIRC Audaciousæ’件" -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "125 Hz" -msgstr "" +#~ msgid "LIRC Plugin " +#~ msgstr "LIRCæ’件" -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "250 Hz" -msgstr "" +#~ msgid "" +#~ "\n" +#~ "A simple plugin that lets you control\n" +#~ "Audacious using the LIRC remote control daemon\n" +#~ "\n" +#~ "Adapted for Audacious usage by Tony Vroon \n" +#~ "from the XMMS LIRC plugin by:\n" +#~ "Carl van Schaik \n" +#~ "Christoph Bartelmus \n" +#~ "Andrew O. Shadoura \n" +#~ "You can get LIRC information at:\n" +#~ "http://lirc.org" +#~ msgstr "" +#~ "\n" +#~ "让你能够通过LIRC控制Audaciousçš„å°æ’件。\n" +#~ "ç”±Tony Vroon 用XMMS LIRCæ’件为Audacious进行移æ¤ã€‚\n" +#~ "XMMS LIRCæ’件作者:\n" +#~ "Carl van Schaik \n" +#~ "Christoph Bartelmus \n" +#~ "Andrew O. Shadoura \n" +#~ "ä½ å¯ä»¥åœ¨http://lirc.org上找到更多关于LIRCçš„ä¿¡æ¯" + +#~ msgid "LIRC plugin settings" +#~ msgstr "LIRCæ’件设置" + +#~ msgid "Reconnect to LIRC server" +#~ msgstr "é‡æ–°è¿žæŽ¥åˆ°LIRCæœåŠ¡å™¨" + +#~ msgid "Timeout before reconnecting (seconds): " +#~ msgstr "超时åŽå°è¯•é‡æ–°è¿žæŽ¥(秒):" -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "500 Hz" -msgstr "" +#~ msgid "Reconnect" +#~ msgstr "é‡æ–°è¿žæŽ¥" -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "1 kHz" -msgstr "" +#~ msgid "Connection" +#~ msgstr "连接" -#: src/skins/ui_skinned_equalizer_slider.c:436 -msgid "2 kHz" -msgstr "" +#~ msgid "%s: could not init LIRC support\n" +#~ msgstr "%s: 无法åˆå§‹åŒ–LIRCæœåŠ¡\n" -#: src/skins/ui_skinned_equalizer_slider.c:437 -msgid "4 kHz" -msgstr "" +#~ msgid "" +#~ "%s: could not read LIRC config file\n" +#~ "%s: please read the documentation of LIRC\n" +#~ "%s: how to create a proper config file\n" +#~ msgstr "" +#~ "%s: 未能读å–LIRC的设置文件\n" +#~ "%s: 请阅读LIRC相关文档\n" +#~ "%s: 并创建正确的设置文件\n" -#: src/skins/ui_skinned_equalizer_slider.c:437 -msgid "8 kHz" -msgstr "" +#~ msgid "%s: trying to reconnect...\n" +#~ msgstr "%s: æ­£å°è¯•é‡æ–°è¿žæŽ¥...\n" -#: src/skins/ui_skinned_equalizer_slider.c:437 -msgid "16 kHz" -msgstr "" +#~ msgid "%s: unknown command \"%s\"\n" +#~ msgstr "%s: 未知指令 \"%s\"\n" -#: src/skins/ui_skinselector.c:179 -msgid "Archived Winamp 2.x skin" -msgstr "已打包的Winamp 2.x主题" +#~ msgid "%s: disconnected from LIRC\n" +#~ msgstr "%s: 已从LIRC上断开连接\n" -#: src/skins/ui_skinselector.c:184 -msgid "Unarchived Winamp 2.x skin" -msgstr "未打包的Winamp 2.x主题" +#~ msgid "%s: will try reconnect every %d seconds...\n" +#~ msgstr "%s: å°è¯•æ¯%d秒é‡æ–°è¿žæŽ¥ä¸€æ¬¡...\n" -#: src/skins/util.c:834 -#, c-format -msgid "Could not create directory (%s): %s\n" -msgstr "无法创建目录(%s): %s\n" +#~ msgid "ModPlug Configuration" +#~ msgstr "ModPlug设置" -#: src/sndfile/plugin.c:531 -msgid "About sndfile plugin" -msgstr "关于sndfileæ’件" +#~ msgid "Mono (downmix)" +#~ msgstr "å•éŸ³é“(downmix)" -#: src/sndfile/plugin.c:532 -msgid "" -"Adapted for Audacious usage by Tony Vroon \n" -"from the xmms_sndfile plugin which is:\n" -"Copyright (C) 2000, 2002 Erik de Castro Lopo\n" -"\n" -"This program is free software ; you can redistribute it and/or modify \n" -"it under the terms of the GNU General Public License as published by \n" -"the Free Software Foundation ; either version 2 of the License, or \n" -"(at your option) any later version. \n" -" \n" -"This program is distributed in the hope that it will be useful, \n" -"but WITHOUT ANY WARRANTY ; without even the implied warranty of \n" -"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \n" -"See the GNU General Public License for more details. \n" -"\n" -"You should have received a copy of the GNU General Public \n" -"License along with this program ; if not, write to \n" -"the Free Software Foundation, Inc., \n" -"51 Franklin Street, Fifth Floor, \n" -"Boston, MA 02110-1301 USA" -msgstr "" +#~ msgid "Nearest (fastest)" +#~ msgstr "最接近(最快)" -#: src/sndstretch/sndstretch_xmms.c:175 -msgid "About SndStretch" -msgstr "关于SndStretch" +#~ msgid "Linear (fast)" +#~ msgstr "线性(快速)" -#: src/sndstretch/sndstretch_xmms.c:336 -msgid "Volume corr." -msgstr "" +#~ msgid "Spline (good quality)" +#~ msgstr "Spline(高质é‡)" -#: src/sndstretch/sndstretch_xmms.c:337 -msgid "Short Overlap" -msgstr "" +#~ msgid "8-tap Fir (extremely high quality)" +#~ msgstr "8-tap Fir(最高质é‡)" -#: src/sndstretch/sndstretch_xmms.c:391 -msgid "Speed" -msgstr "速度" +#~ msgid "Sampling Rate" +#~ msgstr "å–样率" -#: src/sndstretch/sndstretch_xmms.c:392 -msgid "Pitch" -msgstr "音调" +#~ msgid "Depth" +#~ msgstr "深度" -#: src/sndstretch/sndstretch_xmms.c:413 -msgid "SndStretch - Configuration" -msgstr "SndStretch - 设置" +#~ msgid "Delay" +#~ msgstr "延时" -#: src/song_change/song_change.c:397 -msgid "Command to run when Audacious starts a new song." -msgstr "歌曲开始播放时执行指令。" +#~ msgid "Reverb" +#~ msgstr "ä½™å“" -#: src/song_change/song_change.c:398 src/song_change/song_change.c:402 -#: src/song_change/song_change.c:406 src/song_change/song_change.c:410 -msgid "Command:" -msgstr "指令:" +#~ msgid "Amount" +#~ msgstr "总é‡" -#: src/song_change/song_change.c:401 -msgid "Command to run toward the end of a song." -msgstr "歌曲å³å°†å®Œæˆæ—¶æ‰§è¡ŒæŒ‡ä»¤ã€‚" +#~ msgid "Range" +#~ msgstr "范围" -#: src/song_change/song_change.c:405 -msgid "Command to run when Audacious reaches the end of the playlist." -msgstr "当Audacious播放到列表结尾时执行指令。" +#~ msgid "Bass Boost" +#~ msgstr "低音增强" -#: src/song_change/song_change.c:409 -msgid "" -"Command to run when title changes for a song (i.e. network streams titles)." -msgstr "歌曲的标题改å˜æ—¶æ‰§è¡ŒæŒ‡ä»¤(如: 网络媒体的标题)。" +#~ msgid "" +#~ "Note: Setting the preamp\n" +#~ "too high may cause clipping\n" +#~ "(annoying clicks and pops)!" +#~ msgstr "注æ„: å‰ç½®æ”¾å¤§å™¨çš„值太高会导致削波!" -#: src/song_change/song_change.c:413 -msgid "" -"You can use the following format strings which\n" -"will be substituted before calling the command\n" -"(not all are useful for the end-of-playlist command).\n" -"\n" -"%F: Frequency (in hertz)\n" -"%c: Number of channels\n" -"%f: filename (full path)\n" -"%l: length (in milliseconds)\n" -"%n or %s: Song name\n" -"%r: Rate (in bits per second)\n" -"%t: Playlist position (%02d)\n" -"%p: Currently playing (1 or 0)" -msgstr "" +#~ msgid "Effects" +#~ msgstr "音效" -#: src/song_change/song_change.c:437 -msgid "" -"Parameters passed to the shell should be encapsulated in " -"quotes. Doing otherwise is a security risk." -msgstr "" -"传递到Shellçš„å‚数一定è¦ç”¨å¼•å·åŒ…围,å¦åˆ™ä¼šæ˜¯ä¸€ä»¶ç›¸å½“å±é™©çš„" -"事。" +#~ msgid "Use Filename as Song Title" +#~ msgstr "用文件å作为歌曲标题" -#: src/song_change/song_change.c:448 -msgid "Commands" -msgstr "指令" +#~ msgid "Fast Playlist Info" +#~ msgstr "快速播放列表信æ¯" -#: src/song_change/song_change.c:484 -msgid "Song Change" -msgstr "歌曲改å˜" +#~ msgid "Noise Reduction" +#~ msgstr "é™å™ª" -#: src/spectrum/spectrum.c:89 -msgid "Spectrum Analyzer" -msgstr "光谱分æžå™¨" +#~ msgid "Play Amiga MOD" +#~ msgstr "播放Amiga MOD" -#: src/statusicon/statusicon.c:355 -msgid "About Status Icon Plugin" -msgstr "关于状æ€å›¾æ ‡æ’件" +#~ msgid "Don't loop" +#~ msgstr "ä¸è¦å¾ªçŽ¯" -#: src/statusicon/statusicon.c:356 -msgid "" -"Status Icon Plugin\n" -"\n" -"Copyright 2005-2007 Giacomo Lozito \n" -"Copyright 2010 MichaÅ‚ Lipski \n" -"\n" -"This plugin provides a status icon, placed in\n" -"the system tray area of the window manager.\n" -msgstr "" -"状æ€å›¾æ ‡æ’件\n" -"\n" -"版æƒæ‰€æœ‰ (c) 2005-2007 Giacomo Lozito \n" -"版æƒæ‰€æœ‰ (c) 2010 MichaÅ‚ Lipski \n" -"\n" -"æ­¤æ’件会在系统托盘上生æˆçŠ¶æ€å›¾æ ‡ã€‚\n" +#~ msgid "Loop" +#~ msgstr "循环" -#: src/statusicon/statusicon.c:418 -msgid "Status Icon Plugin - Preferences" -msgstr "状æ€å›¾æ ‡æ’件 - 首选项" +#~ msgid "time(s)" +#~ msgstr "时间(s)" -#: src/statusicon/statusicon.c:428 -msgid "Right-Click Menu" -msgstr "å³é”®èœå•" +#~ msgid "Loop forever" +#~ msgstr "æ— é™å¾ªçŽ¯" -#: src/statusicon/statusicon.c:433 -msgid "Small playback menu #1" -msgstr "迷你播放èœå•#1" +#~ msgid "Looping" +#~ msgstr "循环" -#: src/statusicon/statusicon.c:436 -msgid "Small playback menu #2" -msgstr "迷你播放èœå•#2" +#~ msgid "MOD Info" +#~ msgstr "MODä¿¡æ¯" -#: src/statusicon/statusicon.c:452 -msgid "Mouse Scroll Action" -msgstr "鼠标滚轮动作" +#~ msgid "" +#~ "Filename:\n" +#~ "Title:\n" +#~ "Type:\n" +#~ "Length:\n" +#~ "Speed:\n" +#~ "Tempo:\n" +#~ "Samples:\n" +#~ "Instruments:\n" +#~ "Patterns:\n" +#~ "Channels:" +#~ msgstr "" +#~ "文件å:\n" +#~ "标题:\n" +#~ "类型:\n" +#~ "长度:\n" +#~ "速度:\n" +#~ "节å¥:\n" +#~ "å–æ ·:\n" +#~ "ä¹å™¨:\n" +#~ "格调:\n" +#~ "声é“:" + +#~ msgid "Samples" +#~ msgstr "å–æ ·" -#: src/statusicon/statusicon.c:456 -msgid "Change volume" -msgstr "改å˜éŸ³é‡" +#~ msgid "Instruments" +#~ msgstr "ä¹å™¨" -#: src/statusicon/statusicon.c:458 -msgid "Change playing song" -msgstr "改å˜æ’­æ”¾ä¸­æ­Œæ›²" +#~ msgid "Message" +#~ msgstr "ä¿¡æ¯" -#: src/stereo_plugin/stereo.c:40 -msgid "" -"Extra Stereo Plugin\n" -"\n" -"By Johan Levin 1999." -msgstr "" +#~ msgid "Modplug Input Plugin for Audacious ver" +#~ msgstr "Audaciousçš„Modplug输入æ’件" -#: src/stereo_plugin/stereo.c:64 -msgid "About Extra Stereo Plugin" -msgstr "About Extra Stereoæ’件" +#~ msgid "" +#~ "\n" +#~ "Modplug sound engine written by Olivier Lapicque.\n" +#~ "XMMS interface for Modplug by Kenton Varda.\n" +#~ "(c)2000 Olivier Lapicque and Kenton Varda.\n" +#~ "Updates and maintenance by Konstanty Bialkowski.\n" +#~ "Ported to BMP by Theofilos Intzoglou." +#~ msgstr "" +#~ "\n" +#~ "Modplug声音引擎作者:Olivier Lapicque。\n" +#~ "Modplugçš„XMMS接å£ä½œè€…是:Kenton Varda.\n" +#~ "版æƒæ‰€æœ‰ (c) 2000 Olivier LapicqueåŠKenton Varda.\n" +#~ "æ›´æ–°åŠç»´æŠ¤ï¼šKonstanty Bialkowski.\n" +#~ "BMP的移æ¤ï¼šTheofilos Intzoglou." + +#~ msgid "About Modplug" +#~ msgstr "关于Modplug" -#: src/stereo_plugin/stereo.c:100 -msgid "Configure Extra Stereo" -msgstr "设置Extra Stereo" +#~ msgid "Show separators in playlist" +#~ msgstr "在播放列表中显示分隔符" -#: src/streambrowser/gui/streambrowser_win.c:62 -msgid "Search:" -msgstr "æœç´¢ï¼š" +#~ msgid "Show window manager decoration" +#~ msgstr "显示窗å£ç®¡ç†å™¨çš„装饰" -#: src/streambrowser/gui/streambrowser_win.c:81 -#: src/streambrowser/gui/streambrowser_win.c:370 -msgid "Add Bookmark" -msgstr "添加书签" +#~ msgid "This enables the window manager to show decorations for windows." +#~ msgstr "此选项将å…许显示窗å£ç®¡ç†å™¨çš„装饰" -#: src/streambrowser/gui/streambrowser_win.c:95 -msgid "Stream browser" -msgstr "æµæŸ¥çœ‹å™¨" +#~ msgid "" +#~ "If selected, the file information text in the main window will scroll " +#~ "back and forth. If not selected, the text will only scroll in one " +#~ "direction." +#~ msgstr "如果å¯ç”¨ï¼Œä¸»ç•Œé¢ä¸Šçš„文件信æ¯å°†æ¥å›žæ»šåŠ¨ï¼Œå¦åˆ™åªèƒ½å‘一个方å‘滚动。" -#: src/streambrowser/gui/streambrowser_win.c:319 -msgid "Stream name" -msgstr "æµå称" +#~ msgid "Disable inline gtk theme" +#~ msgstr "ç¦ç”¨å†…部gtk主题" -#: src/streambrowser/gui/streambrowser_win.c:326 -msgid "Now playing" -msgstr "正在播放" +#~ msgid "Random skin on play" +#~ msgstr "å¯åŠ¨æ—¶éšæœºé€‰æ‹©ä¸»é¢˜" -#: src/streambrowser/gui/streambrowser_win.c:367 -msgid "Remove Bookmark" -msgstr "删除书签" +#~ msgid "Allow loading incomplete skins" +#~ msgstr "å…许加载ä¸å®Œæ•´çš„主题" -#: src/streambrowser/streambrowser.c:331 -msgid "About Stream Browser" -msgstr "关于æµæŸ¥çœ‹å™¨" +#~ msgid "" +#~ "If selected, audacious won't refuse loading broken skins. Use only if " +#~ "your favourite skin doesn't work" +#~ msgstr "" +#~ "如果å¯ç”¨ï¼Œaudaciouså°†å…许加载破æŸçš„主题。如果你喜欢的主题无法使用,å¯è¯•è¯•" +#~ "å¯ç”¨æ­¤é€‰é¡¹" -#: src/streambrowser/streambrowser.c:332 -msgid "" -"Copyright (c) 2008, by Calin Crisan and The Audacious " -"Team.\n" -"\n" -"This is a simple stream browser that includes the most popular streaming " -"directories.\n" -"Many thanks to the Streamtuner developers ,\n" -"\tand of course to the whole Audacious community.\n" -"\n" -"Also thank you Tony Vroon for mentoring & guiding me, again.\n" -"\n" -"This was a Google Summer of Code 2008 project." -msgstr "" +#~ msgid "Color Adjustment" +#~ msgstr "颜色调整" -#: src/streambrowser/streambrowser.c:357 src/streambrowser/streambrowser.c:367 -msgid "Streambrowser" -msgstr "æµæµè§ˆå™¨" +#~ msgid "" +#~ "Audacious allows you to alter the color balance of the skinned UI. The " +#~ "sliders below will allow you to do this." +#~ msgstr "Audaciouså…许你修改主题界é¢çš„颜色平衡。调整滑动æ¡å³å¯" -#: src/sun/about.c:30 -msgid "About the Sun Driver" -msgstr "关于Sun驱动" +#~ msgid "Blue" +#~ msgstr "è“" -#: src/sun/about.c:31 -msgid "" -"XMMS BSD Sun Driver\n" -"\n" -"Copyright (c) 2001 CubeSoft Communications, Inc.\n" -"Maintainer: .\n" -msgstr "" -"XMMS BSD Sun驱动\n" -"\n" -"版æƒæ‰€æœ‰ (c) 2001 CubeSoft Communications, Inc.\n" -"维护者: .\n" +#~ msgid "Green" +#~ msgstr "绿" -#: src/sun/configure.c:199 -msgid "Audio control device:" -msgstr "音频控制设备:" +#~ msgid "Red" +#~ msgstr "红" -#: src/sun/configure.c:270 -msgid "Buffer size (ms):" -msgstr "" +#~ msgid "Color adjustment ..." +#~ msgstr "颜色调整..." -#: src/sun/configure.c:348 -msgid "Volume controls device:" -msgstr "音é‡æŽ§åˆ¶è®¾å¤‡ï¼š" +#~ msgid "Disable 'GUI Scaling'" +#~ msgstr "ç¦ç”¨â€œç•Œé¢ç¼©æ”¾â€" -#: src/sun/configure.c:361 -msgid "XMMS uses mixer exclusively." -msgstr "XMMS独å æ··éŸ³å™¨ã€‚" +#~ msgid "Enable 'GUI Scaling'" +#~ msgstr "å¯ç”¨â€œç•Œé¢ç¼©æ”¾â€" -#: src/sun/configure.c:536 -msgid "Sun driver configuration" -msgstr "Sun驱动设置" +#~ msgid "DoubleSize" +#~ msgstr "åŒå€å¤§å°" -#: src/tonegen/tonegen.c:53 -msgid "About Tone Generator" -msgstr "关于Tone Generator" +#~ msgid "Easy Move" +#~ msgstr "简易移动" -#: src/tonegen/tonegen.c:55 -msgid "" -"Sinus tone generator by Haavard Kvaalen \n" -"Modified by Daniel J. Peng \n" -"\n" -"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" -"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" -msgstr "" +#~ msgid "Spectrum Analyzer" +#~ msgstr "光谱分æžå™¨" -#: src/tonegen/tonegen.c:105 -#, c-format -msgid "%s %.1f Hz" -msgstr "" +#~ msgid "Can't jump to time when no track is being played.\n" +#~ msgstr "未开始æ’放时无法跳到时间。\n" -#: src/tonegen/tonegen.c:105 -msgid "Tone Generator: " -msgstr "" +#~ msgid "minutes:seconds" +#~ msgstr "分:秒" -#: src/vorbis/configure.c:31 -msgid "Override generic titles" -msgstr "覆蓋常规标题" - -#: src/vorbis/configure.c:32 -msgid "Title format:" -msgstr "标题格å¼" - -#: src/vorbis/configure.c:36 -msgid "Ogg Vorbis Tags" -msgstr "Ogg Vorbis标签" - -#: src/vorbis/configure.c:68 -msgid "Ogg Vorbis Audio Plugin Configuration" -msgstr "Ogg Vorbis音频播放设置" +#~ msgid "Track length:" +#~ msgstr "音轨长度" -#: src/vorbis/vorbis.c:549 -msgid "About Ogg Vorbis Audio Plugin" -msgstr "关于Ogg Vorbis音频æ’件" +#~ msgid "Error writing playlist \"%s\": %s" +#~ msgstr "写入播放列表\"%s\"æ—¶å‘生错误: %s" -#: src/vorbis/vorbis.c:554 -msgid "" -"Ogg Vorbis Plugin by the Xiph.org Foundation\n" -"\n" -"Original code by\n" -"Tony Arcieri \n" -"Contributions from\n" -"Chris Montgomery \n" -"Peter Alm \n" -"Michael Smith \n" -"Jack Moffitt \n" -"Jorn Baayen \n" -"Haavard Kvaalen \n" -"Gian-Carlo Pascutto \n" -"Eugene Zagidullin \n" -"\n" -"Visit the Xiph.org Foundation at http://www.xiph.org/\n" -msgstr "" -"Xiph.org基金会的Ogg Vorbisæ’件\n" -"\n" -"最åˆä½œè€…:\n" -"Tony Arcieri \n" -"Contributions from\n" -"Chris Montgomery \n" -"Peter Alm \n" -"Michael Smith \n" -"Jack Moffitt \n" -"Jorn Baayen \n" -"Haavard Kvaalen \n" -"Gian-Carlo Pascutto \n" -"Eugene Zagidullin \n" -"\n" -"马上登录Xiph.org基金会的网站http://www.xiph.org/\n" +#~ msgid "%s already exist. Continue?" +#~ msgstr "%s已存在,è¦ç»§ç»­å—?" -#: src/vtx/about.c:14 -msgid "About Vortex Player" -msgstr "关于Vortex播放器" +#~ msgid "Show/hide infoarea" +#~ msgstr "显示/éšè—ä¿¡æ¯åŒºåŸŸ" -#: src/vtx/about.c:15 -msgid "" -"Vortex file format player by Sashnov Alexander \n" -"Founded on original source in_vtx.dll by Roman Sherbakov \n" -"\n" -"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" -"and other AY/YM music sites.\n" -"\n" -"Audacious implementation by Pavel Vymetalek " -msgstr "" -"Sashnov Alexander çš„Vortex文件播放器\n" -"ç”±Roman Sherbakov çš„in_vtx.dllæºç å‘展而æˆ\n" -"vtx音ä¹æ–‡ä»¶å¯åœ¨http://vtx.microfor.ru/music.htm或者其它AY/YM音ä¹ç½‘站上找到\n" -"Audacious上的实现由Pavel Vymetalek 完æˆ" +#~ msgid "Show main menu" +#~ msgstr "显示主èœå•" -#: src/wavpack/wavpack.c:371 -#, c-format -msgid "Wavpack Decoder Plugin %s" -msgstr "Wavpack解ç æ’件 %s" +#~ msgid "Show/hide main menu" +#~ msgstr "显示/éšè—主èœå•" -#: src/wavpack/wavpack.c:372 -msgid "" -"Copyright (c) 2006 William Pitcock \n" -"\n" -"Some of the plugin code was by Miles Egan\n" -"Visit the Wavpack site at http://www.wavpack.com/\n" -msgstr "" -"版æƒæ‰€æœ‰ (c) 2006 William Pitcock \n" -"\n" -"部分æ’件代ç æ¥è‡ªMiles Egan\n" -"登录Wavpack网站http://www.wavpack.com/\n" +#~ msgid "Show/hide statusbar" +#~ msgstr "显示/éšè—状æ€æ " -#~ msgid "PREAMP" -#~ msgstr "å‰ç½®æ”¾å¤§å™¨" +#~ msgid "Import Playlist ..." +#~ msgstr "导入播放列表..." -#~ msgid "" -#~ "Unable to save playlist.\n" -#~ "\n" -#~ "Unknown file type for '%s'.\n" -#~ msgstr "" -#~ "无法ä¿å­˜åˆ—表。\n" -#~ "\n" -#~ "未知的'%s'文件类型\n" +#~ msgid "Export Playlist ..." +#~ msgstr "导出播放列表..." -#~ msgid "GTK Foobar-like Interface" -#~ msgstr "基于GTKçš„ç±»Foobarç•Œé¢" +#~ msgid "Refresh" +#~ msgstr "刷新" -#~ msgid "Load List" -#~ msgstr "加载列表" +#~ msgid "Refresh Selected" +#~ msgstr "刷新已选中的" -#~ msgid "Save List" -#~ msgstr "ä¿å­˜åˆ—表" +#~ msgid "Refreshes metadata associated with selected entries." +#~ msgstr "刷新已选中的歌曲信æ¯" -#~ msgid "About RoarAudio Plugin" -#~ msgstr "关于RoarAudioæ’件" +#~ msgid "Edit title" +#~ msgstr "编辑标题" -#~ msgid "RoarAudio Audacious Plugin..." -#~ msgstr "RoarAudio Audaciousæ’件..." +#~ msgid "Edit the playlist title." +#~ msgstr "æ ¹æ®æ’­æ”¾åˆ—表标题" -#~ msgid "RoarAudio Plugin - Configuration" -#~ msgstr "RoarAudioæ’件 - 设置" +#~ msgid "By Formatted Title" +#~ msgstr "按标题" -#~ msgid "Server Type:" -#~ msgstr "æœåŠ¡å™¨ç±»åž‹ï¼š" +#~ msgid "Components" +#~ msgstr "组件" -#~ msgid "Host or Path:" -#~ msgstr "主机或路径:" +#~ msgid "Upload selected track(s)" +#~ msgstr "上传选中的文件" -#~ msgid "Host:" -#~ msgstr "Host:" +#~ msgid "MTP device handler" +#~ msgstr "MTP设备å¥æŸ„" -#~ msgid "Server & Network" -#~ msgstr "æœåŠ¡å™¨ä¸Žç½‘络" +#~ msgid "Show main player window" +#~ msgstr "显示主界é¢" -#~ msgid "Proxy Address" -#~ msgstr "代ç†æœåŠ¡å™¨è®¾ç½®" +#~ msgid "Ignore" +#~ msgstr "忽略" + +#~ msgid "" +#~ "Audacious has been started with all of its windows hidden.\n" +#~ "You may want to show the player window again to control Audacious; " +#~ "otherwise, you'll have to control it remotely via audtool or enabled " +#~ "plugins (such as the statusicon plugin)." +#~ msgstr "" +#~ "Audaciouså¯åŠ¨æ—¶å·²ç»éšè—所有的窗å£ã€‚\n" +#~ "ä½ å¯èƒ½å¸Œæœ›é€šè¿‡æ’­æ”¾çª—å£æ¥æŽ§åˆ¶Audaciousï¼›å¦åˆ™ä½ åªèƒ½é€šè¿‡audtool或其它æ’件" +#~ "(如:状æ€å›¾æ ‡æ’件)进行控制。" -#~ msgid "Proxy" -#~ msgstr "代ç†æœåŠ¡å™¨" +#~ msgid "Always ignore, show/hide is controlled remotely" +#~ msgstr "总是忽略,显示/éšè—远程控制状æ€" -#~ msgid "Proxy" -#~ msgstr "代ç†æœåŠ¡å™¨" +#~ msgid "Audacious - broken GTK engine usage warning" +#~ msgstr "Audacious - ç ´æŸçš„GTK引擎警告" -#~ msgid "Player Name:" -#~ msgstr "播放器å称:" +#~ msgid "" +#~ "Broken GTK engine in use\n" +#~ "\n" +#~ "Audacious has detected that you are using a broken GTK engine.\n" +#~ "\n" +#~ "The theme engine you are using, %s, is incompatible with some of " +#~ "the features used by modern skins. The incompatible features have been " +#~ "disabled for this session.\n" +#~ "\n" +#~ "To use these features, please consider using a different GTK theme engine." +#~ msgstr "" +#~ "正在使用æŸåçš„GTK引擎\n" +#~ "\n" +#~ "Audacious检测到你正在使用一个已ç»æŸåçš„GTK引擎。\n" +#~ "\n" +#~ "你正在使用的GTK引擎%s, 与现在主题的部分特性并ä¸å…¼å®¹ã€‚当å‰ä¼šè¯å·²ç¦ç”¨" +#~ "ä¸å…¼å®¹éƒ¨åˆ†çš„特性。\n" +#~ " \n" +#~ "è¦ä½¿ç”¨æ­¤ç‰¹æ€§ï¼Œè¯·è€ƒè™‘使用其它的GTK引擎。" -#~ msgid "Player" -#~ msgstr "播放器" +#~ msgid "Do not display this warning again" +#~ msgstr "ä¸è¦å†æ示" -#~ msgid "Current Song" -#~ msgstr "当å‰æ­Œæ›²" +#~ msgid "Save as Static Playlist" +#~ msgstr "ä¿å­˜åˆ°é™æ€æ’­æ”¾åˆ—表" -#~ msgid "Meta Data" -#~ msgstr "元数æ®" +#~ msgid "Use Relative Path" +#~ msgstr "使用相对路径" -#~ msgid "Randomize List" -#~ msgstr "打乱列表" +#~ msgid "Load Playlist" +#~ msgstr "加载播放列表" -#~ msgid "Randomizes the playlist." -#~ msgstr "打乱播放列表" +#~ msgid "Save Playlist" +#~ msgstr "ä¿å­˜æ’­æ”¾åˆ—表" -#~ msgid "Audacious standard menu" -#~ msgstr "Audacious标准èœå•" +#~ msgid "Skinned Interface" +#~ msgstr "主题化界é¢" diff -Nru audacious-plugins-2.4.4/po/zh_TW.po audacious-plugins-3.2/po/zh_TW.po --- audacious-plugins-2.4.4/po/zh_TW.po 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/po/zh_TW.po 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,3517 @@ +# Chinese translations for audacious-plugins package. +# Copyright (C) 2011 THE audacious-plugins'S COPYRIGHT HOLDER +# This file is distributed under the same license as the audacious-plugins package. +# Ruei-Yuan Lu , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: audacious-plugins 3.1\n" +"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n" +"POT-Creation-Date: 2011-12-29 19:29-0500\n" +"PO-Revision-Date: 2011-11-10 11:53+0800\n" +"Last-Translator: Ruei-Yuan Lu \n" +"Language-Team: Chinese (traditional)\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/aac/libmp4.c:256 +#, c-format +msgid "" +"Using libfaad2-%s for decoding.\n" +"FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com\n" +"Copyright (c) 2005-2006 Audacious team" +msgstr "" +"使用 libfaad2-%s 進行解碼。\n" +"FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com\n" +"Copyright (c) 2005-2006 Audacious team" + +#: src/aac/libmp4.c:261 +msgid "About MP4 AAC decoder plugin" +msgstr "關於 MP4 AAC 解碼器外掛" + +#: src/alarm/alarm.c:312 +msgid "About Alarm" +msgstr "關於鬧é˜" + +#: src/alarm/alarm.c:313 +msgid "" +"A plugin that can be used to start playing at a certain time.\n" +"\n" +"Originally written by Adam Feakin and Daniel Stodden." +msgstr "" + +#: src/alarm/interface.c:33 +msgid "Alarm" +msgstr "鬧é˜" + +#: src/alarm/interface.c:40 +msgid "This is your wakeup call." +msgstr "" + +#: src/alarm/interface.c:55 src/alarm/interface.c:1213 +msgid "OK" +msgstr "確èª" + +#: src/alarm/interface.c:214 +msgid "Alarm Settings" +msgstr "鬧é˜è¨­å®š" + +#: src/alarm/interface.c:229 src/alarm/interface.c:401 +#: src/alarm/interface.c:773 +msgid "Time" +msgstr "時間" + +#: src/alarm/interface.c:270 +msgid "hours" +msgstr "å°æ™‚" + +#: src/alarm/interface.c:331 +msgid "h" +msgstr "" + +#: src/alarm/interface.c:361 +msgid "minutes" +msgstr "分é˜" + +#: src/alarm/interface.c:379 +msgid "Quiet after:" +msgstr "多久後éœéŸ³:" + +#: src/alarm/interface.c:389 +msgid "Alarm at (default):" +msgstr "鈴響於 (é è¨­)" + +#: src/alarm/interface.c:409 +msgid "Choose the days for the alarm to come on" +msgstr "é¸æ“‡æƒ³è¦åœ¨å“ªå¹¾å¤©å•Ÿç”¨é¬§é˜" + +#: src/alarm/interface.c:437 src/alarm/interface.c:485 +#: src/alarm/interface.c:533 src/alarm/interface.c:581 +#: src/alarm/interface.c:629 src/alarm/interface.c:677 +#: src/alarm/interface.c:725 src/bs2b/plugin.c:198 src/OSS/configure.c:153 +#: src/skins/ui_equalizer.c:1104 src/skins/ui_manager.c:447 +#: src/skins/ui_manager.c:468 +msgid "Default" +msgstr "é è¨­" + +#: src/alarm/interface.c:763 +msgid "Day" +msgstr "æ—¥å­" + +#: src/alarm/interface.c:783 +msgid "Tuesday" +msgstr "星期二" + +#: src/alarm/interface.c:794 +msgid "Wednesday" +msgstr "星期三" + +#: src/alarm/interface.c:805 +msgid "Thursday" +msgstr "星期四" + +#: src/alarm/interface.c:816 +msgid "Friday" +msgstr "星期五" + +#: src/alarm/interface.c:827 +msgid "Saturday" +msgstr "星期六" + +#: src/alarm/interface.c:838 +msgid "Sunday" +msgstr "星期日" + +#: src/alarm/interface.c:848 +msgid "Monday" +msgstr "星期一" + +#: src/alarm/interface.c:859 +msgid "Days" +msgstr "週排程" + +#: src/alarm/interface.c:875 +msgid "Fading" +msgstr "淡出" + +#: src/alarm/interface.c:912 +msgid "seconds" +msgstr "秒" + +#: src/alarm/interface.c:920 src/alarm/interface.c:1035 +msgid "Volume" +msgstr "音é‡" + +#: src/alarm/interface.c:946 +msgid "Current" +msgstr "ç›®å‰éŸ³é‡" + +#: src/alarm/interface.c:954 +msgid "Start at" +msgstr "åˆå§‹éŸ³é‡" + +#: src/alarm/interface.c:982 src/alarm/interface.c:1026 +msgid "%" +msgstr "" + +#: src/alarm/interface.c:998 +msgid "Final" +msgstr "最終音é‡" + +#: src/alarm/interface.c:1051 +msgid "Additional Command" +msgstr "é¡å¤–命令" + +#: src/alarm/interface.c:1077 +msgid "enable" +msgstr "啟用" + +#: src/alarm/interface.c:1085 +msgid "Playlist (optional)" +msgstr "播放清單 (é¸ç”¨)" + +#: src/alarm/interface.c:1111 +msgid "Browse..." +msgstr "ç€è¦½..." + +#: src/alarm/interface.c:1119 src/alarm/interface.c:1283 +msgid "Reminder" +msgstr "æ醒" + +#: src/alarm/interface.c:1136 +msgid "Use reminder" +msgstr "æ醒命令" + +#: src/alarm/interface.c:1152 src/sndstretch/sndstretch_xmms.c:358 +msgid "Options" +msgstr "é¸é …" + +#: src/alarm/interface.c:1160 +msgid "What do these options mean?" +msgstr "這些é¸é …代表什麼æ„æ€ï¼Ÿ" + +#: src/alarm/interface.c:1188 +msgid "" +"\n" +"Time\n" +" Alarm at: \n" +" The time for the alarm to come on.\n" +"\n" +" Quiet After: \n" +" Stop alarm after this amount of time.\n" +" (if the wakeup dialog is not closed)\n" +"\n" +"\n" +"Days\n" +" Day:\n" +" Select the days for the alarm to activate.\n" +"\n" +" Time:\n" +" Choose the time for the alarm on each day,\n" +" or select the toggle button to use the default\n" +" time.\n" +"\n" +"\n" +"Volume\n" +" Fading: \n" +" Fade the volume up to the chosen volume \n" +" for this amount of time.\n" +"\n" +" Start at: \n" +" Start fading from this volume.\n" +"\n" +" Final: \n" +" The volume to stop fading at. If the fading\n" +" time is 0 then set volume to this and start\n" +" playing.\n" +"\n" +"\n" +"Options:\n" +" Additional Command:\n" +" Run this command at the alarm time.\n" +"\n" +" Playlist: \n" +" Load this playlist for playing songs from \n" +" (must have .m3u extension). If no playlist\n" +" is given then the songs which are currently\n" +" in the list will be used.\n" +" The URL of an mp3/ogg stream can also be\n" +" entered here, but loading of playlists from\n" +" URLs is not currently supported by xmms.\n" +"\n" +" Reminder:\n" +" Display a reminder when the alarm goes off,\n" +" type the reminder in the box and turn on the\n" +" toggle button if you want it to be shown.\n" +msgstr "" +"\n" +"時間\n" +" 鈴響於: \n" +" 鬧é˜åœ¨æŒ‡å®šæ™‚間鈴響。\n" +"\n" +" 多久後éœéŸ³: \n" +" 經éŽæŒ‡å®šé•·åº¦çš„時間後åœæ­¢éˆ´éŸ¿ã€‚\n" +" (如果喚醒的å°è©±è¦–窗沒有被關掉的話)\n" +"\n" +"\n" +"週排程\n" +" æ—¥å­:\n" +" é¸æ“‡å“ªå¹¾å¤©è¦å•Ÿç”¨é¬§é˜ã€‚\n" +"\n" +" 時間:\n" +" 設定å„天的鈴響時間,\n" +" 或者按切æ›éˆ•é¸æ“‡é è¨­å€¼ã€‚\n" +"\n" +"\n" +"音é‡\n" +" 淡出: \n" +" 在時間內將音é‡æ高到一定程度。\n" +"\n" +" åˆå§‹éŸ³é‡: \n" +" 音é‡è®ŠåŒ–的起始值。\n" +"\n" +" 最終音é‡: \n" +" 音é‡è®ŠåŒ–的終點值。若淡出時間為 0\n" +" 則直接使用最終音é‡ã€‚\n" +"\n" +"\n" +"é¸é …:\n" +" é¡å¤–命令:\n" +" 在鈴響時間執行此命令。\n" +"\n" +" 播放清單: \n" +" 載入此播放清單以播放音樂\n" +" (必須為 .m3u 副檔å)。 若無指定播放清單\n" +" 則使用目å‰æ¸…單中的歌曲。\n" +" 你也å¯ä»¥åœ¨é€™è£¡è¼¸å…¥ mp3/ogg 串æµçš„ URL,\n" +" 但從 URL 載入播放清單目å‰å°šæœªè¢« xmms 支æ´ã€‚\n" +"\n" +" æ醒:\n" +" 在鈴響éŽå¾Œé¡¯ç¤ºæ醒,\n" +" 在文字輸入欄ä½ä¸­è¼¸å…¥ä½ æƒ³è¦çš„æ醒訊æ¯ã€‚\n" + +#: src/alarm/interface.c:1190 src/skins/ui_manager.c:382 +msgid "Help" +msgstr "說明" + +#: src/alarm/interface.c:1222 src/cdaudio-ng/configure.c:249 +#: src/crystalizer/crystalizer.c:130 src/echo_plugin/gui.c:125 +#: src/jack/configure.c:148 src/null/null.c:108 src/stereo_plugin/stereo.c:125 +msgid "Cancel" +msgstr "å–消" + +#: src/alarm/interface.c:1290 +msgid "Your reminder for today is.." +msgstr "您今天的æ醒" + +#: src/alarm/interface.c:1315 +msgid "Thankyou" +msgstr "è¬è¬" + +#: src/alsa/config.c:210 +msgid "Default PCM device" +msgstr "é è¨­ PCM è£ç½®" + +#: src/alsa/config.c:235 +msgid "Default mixer device" +msgstr "é è¨­æ··éŸ³å™¨è£ç½®" + +#: src/alsa/config.c:438 +msgid "ALSA Output Plugin Preferences" +msgstr "ALSA 輸出外掛å好設定" + +#: src/alsa/config.c:445 +msgid "PCM device:" +msgstr "PCM è£ç½®:" + +#: src/alsa/config.c:447 src/OSS/configure.c:237 +msgid "Mixer device:" +msgstr "混音器è£ç½®:" + +#: src/alsa/config.c:449 +msgid "Mixer element:" +msgstr "混音器元件:" + +#: src/alsa/config.c:452 +msgid "Work around drain hangup" +msgstr "處ç†æ¬ è¼‰éŽ–æ­»" + +#: src/alsa/plugin.c:59 +msgid "About ALSA Output Plugin" +msgstr "關於 ALSA 輸出外掛" + +#: src/alsa/plugin.c:81 +msgid "ALSA error" +msgstr "ALSA 錯誤" + +#: src/amidi-plug/amidi-plug.c:326 +msgid "" +"You have not selected any sequencer ports for MIDI playback. You can do so " +"in the MIDI plugin preferences." +msgstr "" +"您尚未é¸æ“‡ä»»ä½•ç”¨æ–¼æ’­æ”¾ MIDI 的編曲機連接埠。請到 MIDI 外掛å好設定中設定。" + +#: src/amidi-plug/backend-alsa/b-alsa.c:35 +msgid "ALSA Backend " +msgstr "ALSA 後端" + +#: src/amidi-plug/backend-alsa/b-alsa.c:37 +msgid "" +"This backend sends MIDI events to a group of user-chosen ALSA sequencer " +"ports. The ALSA sequencer interface is very versatile, it can provide ports " +"for audio cards hardware synthesizers (i.e. emu10k1) but also for software " +"synths, external devices, etc.\n" +"This backend does not produce audio, MIDI events are handled directly from " +"devices/programs behind the ALSA ports; in example, MIDI events sent to the " +"hardware synth will be directly played.\n" +"Backend written by Giacomo Lozito." +msgstr "" +"é€™å€‹å¾Œç«¯æœƒå‚³é€ MIDI 事件到一組由使用者指定的 ALSA 編曲機連接埠。ALSA 編曲機介" +"é¢æœ‰å¾ˆå¤šåŠŸèƒ½ï¼Œå®ƒä¸ä½†å¯ä»¥æ供連接埠給音效å¡ä¸Šçš„硬體編曲機 (如 emu10k1) é‚„å¯ä»¥" +"給軟體åˆæˆå™¨èˆ‡å¤–接è£ç½®ç­‰ã€‚\n" +"\n" +"這個後端本身並ä¸ç”¢ç”ŸéŸ³æ•ˆï¼ŒMIDI 事件直接由 ALSA 連接埠後的è£ç½®æˆ–程å¼ä¾†è™•ç†ï¼›èˆ‰" +"例來說,MIDI 事件被é€åˆ°ç¡¬é«”åˆæˆå™¨ä»¥å¾Œå°‡æœƒè¢«ç›´æŽ¥æ’­æ”¾ã€‚\n" +"\n" +"作者:Giacomo Lozito" + +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:38 +msgid "FluidSynth Backend " +msgstr "FluidSynth 後端" + +#: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:40 +msgid "" +"This backend produces audio by sending MIDI events to FluidSynth, a real-" +"time software synthesizer based on the SoundFont2 specification (www." +"fluidsynth.org).\n" +"Produced audio can be manipulated via player effect plugins and is processed " +"by chosen ouput plugin.\n" +"Backend written by Giacomo Lozito." +msgstr "" +"這個後端會將 MIDI 事件傳é€çµ¦ FluidSynth 並產生音效,FluidSynth 是一個基於 " +"SoundFont2 è¦æ ¼ (www.fluidsynth.org) çš„å³æ™‚軟體åˆæˆå™¨ã€‚\n" +"\n" +"產生的音效會被播放器的特效外掛與輸出外掛影響。\n" +"\n" +"作者:Giacomo Lozito" + +#: src/amidi-plug/i_configure-alsa.c:228 +msgid "ALSA BACKEND CONFIGURATION" +msgstr "ALSA 後端設定" + +#: src/amidi-plug/i_configure-alsa.c:331 +msgid "Port" +msgstr "連接埠" + +#: src/amidi-plug/i_configure-alsa.c:333 +msgid "Client name" +msgstr "客戶端å稱" + +#: src/amidi-plug/i_configure-alsa.c:335 +msgid "Port name" +msgstr "連接埠å稱" + +#: src/amidi-plug/i_configure-alsa.c:346 +msgid "ALSA output ports" +msgstr "ALSA 輸出埠" + +#: src/amidi-plug/i_configure-alsa.c:399 +msgid "Soundcard: " +msgstr "音效å¡:" + +#: src/amidi-plug/i_configure-alsa.c:401 +msgid "Mixer control: " +msgstr "混音器控制器:" + +#: src/amidi-plug/i_configure-alsa.c:413 +msgid "Mixer settings" +msgstr "混音器設定" + +#: src/amidi-plug/i_configure-alsa.c:429 +msgid "ALSA Backend not loaded or not available" +msgstr "ALSA 後端未載入或ä¸å­˜åœ¨" + +#: src/amidi-plug/i_configure-alsa.c:448 +msgid "" +"ALSA\n" +"backend" +msgstr "" +"ALSA\n" +"後端" + +#: src/amidi-plug/i_configure-ap.c:59 +msgid "AMIDI-Plug - backend information" +msgstr "AMIDI-Plug - 後端資訊" + +#: src/amidi-plug/i_configure-ap.c:196 +msgid "AMIDI-PLUG PREFERENCES" +msgstr "AMIDI-PLUG å好設定" + +#: src/amidi-plug/i_configure-ap.c:223 +msgid "Backend selection" +msgstr "é¸æ“‡å¾Œç«¯" + +#: src/amidi-plug/i_configure-ap.c:227 +msgid "Available backends" +msgstr "å¯ç”¨çš„後端" + +#: src/amidi-plug/i_configure-ap.c:257 +msgid "Playback settings" +msgstr "播放設定" + +#: src/amidi-plug/i_configure-ap.c:262 +msgid "Transpose: " +msgstr "移調: " + +#: src/amidi-plug/i_configure-ap.c:271 +msgid "Drum shift: " +msgstr "鼓移: " + +#: src/amidi-plug/i_configure-ap.c:289 +msgid "Advanced settings" +msgstr "進階設定" + +#: src/amidi-plug/i_configure-ap.c:293 +msgid "pre-calculate length of MIDI files in playlist" +msgstr "事先計算在播放清單中 MIDI 檔的長度" + +#: src/amidi-plug/i_configure-ap.c:298 +msgid "extract comments from MIDI file (if available)" +msgstr "æå– MIDI 檔的備註資料 (è‹¥å¯ç”¨çš„話)" + +#: src/amidi-plug/i_configure-ap.c:303 +msgid "extract lyrics from MIDI file (if available)" +msgstr "æå– MIDI 檔的歌詞資料 (è‹¥å¯ç”¨çš„話)" + +#: src/amidi-plug/i_configure-ap.c:333 +msgid "" +"AMIDI\n" +"Plug" +msgstr "" + +#: src/amidi-plug/i_configure.c:76 +msgid "AMIDI-Plug - select file" +msgstr "AMIDI-Plug - é¸æ“‡æª”案" + +#: src/amidi-plug/i_configure.c:129 +msgid "AMIDI-Plug - configuration" +msgstr "AMIDI-Plug - 設定" + +#: src/amidi-plug/i_configure-fluidsynth.c:55 +msgid "AMIDI-Plug - select SoundFont file" +msgstr "AMIDI-Plug - é¸æ“‡ SoundFont 檔案" + +#: src/amidi-plug/i_configure-fluidsynth.c:270 +msgid "FLUIDSYNTH BACKEND CONFIGURATION" +msgstr "FLUIDSYNTH 後端設定" + +#: src/amidi-plug/i_configure-fluidsynth.c:313 +msgid "SoundFont settings" +msgstr "SoundFont 設定" + +#: src/amidi-plug/i_configure-fluidsynth.c:345 +msgid "Filename" +msgstr "檔案å稱" + +#: src/amidi-plug/i_configure-fluidsynth.c:349 +msgid "Size (bytes)" +msgstr "å¤§å° (ä½å…ƒçµ„)" + +#: src/amidi-plug/i_configure-fluidsynth.c:398 +msgid "Load SF on player start" +msgstr "播放器啟動時載入 SF 檔" + +#: src/amidi-plug/i_configure-fluidsynth.c:402 +msgid "Load SF on first midifile play" +msgstr "在第一次播放 MIDI 檔案時載入 SF 檔" + +#: src/amidi-plug/i_configure-fluidsynth.c:417 +msgid "Synthesizer settings" +msgstr "åˆæˆå™¨è¨­å®š" + +#: src/amidi-plug/i_configure-fluidsynth.c:426 +msgid "gain" +msgstr "增益" + +#: src/amidi-plug/i_configure-fluidsynth.c:432 +#: src/amidi-plug/i_configure-fluidsynth.c:460 +#: src/amidi-plug/i_configure-fluidsynth.c:488 +#: src/amidi-plug/i_configure-fluidsynth.c:519 +msgid "use default" +msgstr "使用é è¨­å€¼" + +#: src/amidi-plug/i_configure-fluidsynth.c:435 +#: src/amidi-plug/i_configure-fluidsynth.c:463 +msgid "value:" +msgstr "數值:" + +#: src/amidi-plug/i_configure-fluidsynth.c:454 +msgid "poliphony" +msgstr "複調" + +#: src/amidi-plug/i_configure-fluidsynth.c:482 +msgid "reverb" +msgstr "迴響" + +#: src/amidi-plug/i_configure-fluidsynth.c:491 +#: src/amidi-plug/i_configure-fluidsynth.c:522 +msgid "yes" +msgstr "是" + +#: src/amidi-plug/i_configure-fluidsynth.c:493 +#: src/amidi-plug/i_configure-fluidsynth.c:524 +msgid "no" +msgstr "å¦" + +#: src/amidi-plug/i_configure-fluidsynth.c:513 +msgid "chorus" +msgstr "åˆå”±" + +#: src/amidi-plug/i_configure-fluidsynth.c:544 +msgid "sample rate" +msgstr "å–樣率" + +#: src/amidi-plug/i_configure-fluidsynth.c:550 +msgid "22050 Hz " +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:553 +msgid "44100 Hz " +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:556 +msgid "96000 Hz " +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:559 +msgid "custom " +msgstr "自訂" + +#: src/amidi-plug/i_configure-fluidsynth.c:568 +msgid "Hz " +msgstr "" + +#: src/amidi-plug/i_configure-fluidsynth.c:621 +msgid "FluidSynth Backend not loaded or not available" +msgstr "FluidSynth 後端未載入或ä¸å¯ç”¨" + +#: src/amidi-plug/i_configure-fluidsynth.c:640 +msgid "" +"FluidSynth\n" +"backend" +msgstr "" +"FluidSynth\n" +" 後端" + + +#: src/amidi-plug/i_configure-timidity.c:39 +msgid "TIMIDITY BACKEND CONFIGURATION" +msgstr "TIMIDITY 後端設定" + +#: src/amidi-plug/i_configure-timidity.c:64 +msgid "TiMidity Backend not loaded or not available" +msgstr "TiMidity 後端未載入或ä¸å¯ç”¨" + +#: src/amidi-plug/i_configure-timidity.c:83 +msgid "" +"TiMidity\n" +"backend" +msgstr "" +"TiMidity\n" +" 後端" + + + +#: src/amidi-plug/i_fileinfo.c:169 +msgid "Name:" +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:193 +msgid " MIDI Info " +msgstr " MIDI 資訊 " + +#: src/amidi-plug/i_fileinfo.c:205 +msgid "Format:" +msgstr "æ ¼å¼:" + +#: src/amidi-plug/i_fileinfo.c:208 +msgid "Length (msec):" +msgstr "長度 (毫秒):" + +#: src/amidi-plug/i_fileinfo.c:211 +msgid "Num of Tracks:" +msgstr "音軌編號:" + +#: src/amidi-plug/i_fileinfo.c:216 +msgid "variable" +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:217 +msgid "BPM:" +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:223 +msgid "BPM (wavg):" +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:226 +msgid "Time Div:" +msgstr "" + +#: src/amidi-plug/i_fileinfo.c:237 +msgid " MIDI Comments and Lyrics " +msgstr " MIDI 備註與歌詞 " + +#: src/amidi-plug/i_fileinfo.c:288 +msgid "* no comments available in this MIDI file *" +msgstr "* 這個 MIDI 檔ä¸åŒ…å«å‚™è¨»è³‡æ–™ *" + +#: src/amidi-plug/i_fileinfo.c:301 +msgid "* no lyrics available in this MIDI file *" +msgstr "* 這個 MIDI 檔ä¸åŒ…å«æ­Œè©žè³‡æ–™ *" + +#: src/amidi-plug/i_fileinfo.c:349 +msgid " (invalid UTF-8)" +msgstr " (無效的 UTF-8 字串)" + +#: src/amidi-plug/i_utils.c:43 +msgid "AMIDI-Plug - about" +msgstr "關於 - AMIDI-Plug" + +#: src/amidi-plug/i_utils.c:68 +msgid "" +"\n" +"AMIDI-Plug " +msgstr "" + +#: src/amidi-plug/i_utils.c:69 +msgid "" +"\n" +"modular MIDI music player\n" +"http://www.develia.org/projects.php?p=amidiplug\n" +"\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"\n" +"special thanks to...\n" +"\n" +"Clemens Ladisch and Jaroslav Kysela\n" +"for their cool programs aplaymidi and amixer; those\n" +"were really useful, along with alsa-lib docs, in order\n" +"to learn more about the ALSA API\n" +"\n" +"Alfredo Spadafina\n" +"for the nice midi keyboard logo\n" +"\n" +"Tony Vroon\n" +"for the good help with alpha testing\n" +"\n" +msgstr "" + +#: src/aosd/aosd_style.c:75 +msgid "Rectangle" +msgstr "矩形" + +#: src/aosd/aosd_style.c:79 +msgid "Rounded Rectangle" +msgstr "圓角矩形" + +#: src/aosd/aosd_style.c:83 +msgid "Concave Rectangle" +msgstr "角è½å‡¹é™·çš„矩形" + +#: src/aosd/aosd_style.c:87 +msgid "None" +msgstr "ç„¡" + +#: src/aosd/aosd_trigger.c:78 +msgid "Playback Start" +msgstr "開始播放" + +#: src/aosd/aosd_trigger.c:79 +msgid "Triggers OSD when a playlist entry is played." +msgstr "當播放清單中的項目被播放時觸發 OSD" + +#: src/aosd/aosd_trigger.c:83 +msgid "Title Change" +msgstr "標題變更" + +#: src/aosd/aosd_trigger.c:84 +msgid "" +"Triggers OSD when, during playback, the song title changes but the filename " +"is the same. This is mostly useful to display title changes in internet " +"streams." +msgstr "" +"當播放中歌曲標題改變但檔åä¸è®Šæ™‚觸發 OSD。這å°é¡¯ç¤ºç¶²è·¯ä¸²æµçš„標題很有用。" + +#: src/aosd/aosd_trigger.c:90 +msgid "Volume Change" +msgstr "音é‡æ”¹è®Š" + +#: src/aosd/aosd_trigger.c:91 +msgid "Triggers OSD when volume is changed." +msgstr "當音é‡æ”¹è®Šæ™‚觸發 OSD" + +#: src/aosd/aosd_trigger.c:95 +msgid "Pause On" +msgstr "æš«åœæ’­æ”¾" + +#: src/aosd/aosd_trigger.c:96 +msgid "Triggers OSD when playback is paused." +msgstr "當播放暫åœæ™‚觸發 OSD" + +#: src/aosd/aosd_trigger.c:100 +msgid "Pause Off" +msgstr "解除暫åœ" + +#: src/aosd/aosd_trigger.c:101 +msgid "Triggers OSD when playback is unpaused." +msgstr "當解除暫åœæ™‚觸發 OSD" + +#: src/aosd/aosd_ui.c:179 +msgid "Placement" +msgstr "放置ä½ç½®" + +#: src/aosd/aosd_ui.c:218 +msgid "Relative X offset:" +msgstr "X 軸相å°ä½ç§»:" + +#: src/aosd/aosd_ui.c:227 +msgid "Relative Y offset:" +msgstr "Y 軸相å°ä½ç§»:" + +#: src/aosd/aosd_ui.c:236 +msgid "Max OSD width:" +msgstr "最大 OSD 寬度:" + +#: src/aosd/aosd_ui.c:249 +msgid "Multi-Monitor options" +msgstr "多螢幕é¸é …" + +#: src/aosd/aosd_ui.c:253 +msgid "Display OSD using:" +msgstr "顯示 OSD:" + +#: src/aosd/aosd_ui.c:264 +msgid "all monitors" +msgstr "所有螢幕" + +#: src/aosd/aosd_ui.c:267 +#, c-format +msgid "monitor %i" +msgstr "螢幕 %i" + +#: src/aosd/aosd_ui.c:322 +msgid "Timing (ms)" +msgstr "計時 (毫秒)" + +#: src/aosd/aosd_ui.c:327 +msgid "Display:" +msgstr "顯示:" + +#: src/aosd/aosd_ui.c:332 +msgid "Fade in:" +msgstr "æ·¡å…¥:" + +#: src/aosd/aosd_ui.c:337 +msgid "Fade out:" +msgstr "淡出:" + +#: src/aosd/aosd_ui.c:418 +msgid "Fonts" +msgstr "å­—åž‹" + +#: src/aosd/aosd_ui.c:426 +#, c-format +msgid "Font %i:" +msgstr "å­—åž‹ %i:" + +#: src/aosd/aosd_ui.c:443 +msgid "Shadow" +msgstr "é™°å½±" + +#: src/aosd/aosd_ui.c:478 +msgid "Internationalization" +msgstr "國際化" + +#: src/aosd/aosd_ui.c:484 +msgid "Disable UTF-8 conversion of text (in aosd)" +msgstr "關閉文字的 UTF-8 è½‰æ› (僅在 asod)" + +#: src/aosd/aosd_ui.c:502 +msgid "Select Skin File" +msgstr "é¸æ“‡é¢æ¿æª”案" + +#: src/aosd/aosd_ui.c:613 +msgid "Render Style" +msgstr "呈ç¾æ¨£å¼" + +#: src/aosd/aosd_ui.c:629 +msgid "Colors" +msgstr "é¡è‰²" + +#: src/aosd/aosd_ui.c:642 +#, c-format +msgid "Color %i:" +msgstr "é¡è‰² %i:" + +#: src/aosd/aosd_ui.c:662 +msgid "Custom Skin" +msgstr "自訂é¢æ¿" + +#: src/aosd/aosd_ui.c:668 +msgid "Skin file:" +msgstr "é¢æ¿æª”案:" + +#: src/aosd/aosd_ui.c:671 +msgid "Browse" +msgstr "ç€è¦½" + +#: src/aosd/aosd_ui.c:773 +msgid "Enable trigger" +msgstr "啟用觸發器" + +#: src/aosd/aosd_ui.c:800 +msgid "Event" +msgstr "事件" + +#: src/aosd/aosd_ui.c:828 +msgid "Composite manager detected" +msgstr "å·²åµæ¸¬åˆ°åˆæˆç‰¹æ•ˆç®¡ç†ç¨‹å¼" + +#: src/aosd/aosd_ui.c:835 +msgid "" +"Composite manager not detected;\n" +"unless you know that you have one running, please activate a composite " +"manager otherwise the OSD won't work properly" +msgstr "" +"未åµæ¸¬åˆ°åˆæˆç‰¹æ•ˆç®¡ç†ç¨‹å¼ï¼›\n" +"除éžæ‚¨ç¢ºå®šå·²ç¶“執行,å¦å‰‡ OSD 將無法正確啟用。" + +#: src/aosd/aosd_ui.c:843 +msgid "Composite manager not required for fake transparency" +msgstr "å‡çš„é€æ˜Žç‰¹æ•ˆä¸éœ€è¦ Composite manager" + +#: src/aosd/aosd_ui.c:881 +msgid "Transparency" +msgstr "é€æ˜Ž" + +#: src/aosd/aosd_ui.c:887 +msgid "Fake transparency" +msgstr "å‡çš„é€æ˜Žç‰¹æ•ˆ" + +#: src/aosd/aosd_ui.c:889 +msgid "Real transparency (requires X Composite Ext.)" +msgstr "真的é€æ˜Žç‰¹æ•ˆ (éœ€è¦ X Composite 延伸功能)" + +#: src/aosd/aosd_ui.c:931 +msgid "Composite extension not loaded" +msgstr "Composite 延伸功能未載入" + +#: src/aosd/aosd_ui.c:939 +msgid "Composite extension not available" +msgstr "Composite 延伸功能ä¸å­˜åœ¨" + +#: src/aosd/aosd_ui.c:958 +#, c-format +msgid "Audacious OSD" +msgstr "" + +#: src/aosd/aosd_ui.c:1039 +msgid "Audacious OSD - configuration" +msgstr "Audacious OSD - 設定" + +#: src/aosd/aosd_ui.c:1060 +msgid "Test" +msgstr "測試" + +#: src/aosd/aosd_ui.c:1075 +msgid "Position" +msgstr "ä½ç½®" + +#: src/aosd/aosd_ui.c:1080 +msgid "Animation" +msgstr "å‹•ç•«" + +#: src/aosd/aosd_ui.c:1085 +msgid "Text" +msgstr "文字" + +#: src/aosd/aosd_ui.c:1090 +msgid "Decoration" +msgstr "è£é£¾" + +#: src/aosd/aosd_ui.c:1095 +msgid "Trigger" +msgstr "觸發" + +#: src/aosd/aosd_ui.c:1100 src/cdaudio-ng/configure.c:171 +msgid "Misc" +msgstr "雜項" + +#: src/aosd/aosd_ui.c:1137 +msgid "Audacious OSD - about" +msgstr "關於 - Audacious OSD" + +#: src/aosd/aosd_ui.c:1167 +msgid "" +"\n" +"Audacious OSD " +msgstr "" + +#: src/aosd/aosd_ui.c:1168 +msgid "" +"\n" +"http://www.develia.org/projects.php?p=audacious#aosd\n" +"written by Giacomo Lozito\n" +"< james@develia.org >\n" +"\n" +"On-Screen-Display is based on Ghosd library\n" +"written by Evan Martin\n" +"http://neugierig.org/software/ghosd/\n" +"\n" +msgstr "" + +#: src/blur_scope/config.c:73 +msgid "Blur Scope: Color selection" +msgstr "" + +#: src/blur_scope/config.c:83 src/jack/configure.c:106 +msgid "Options:" +msgstr "é¸é …:" + +#: src/bs2b/plugin.c:157 +msgid "Bauer stereophonic-to-binaural Preferences" +msgstr "" + +#: src/bs2b/plugin.c:168 +msgid "Feed level:" +msgstr "" + +#: src/bs2b/plugin.c:182 +msgid "Cut frequency:" +msgstr "" + +#: src/bs2b/plugin.c:196 +msgid "Presets:" +msgstr "樣å¼" + +#: src/cdaudio-ng/cdaudio-ng.c:242 +msgid "About Audio CD Plugin" +msgstr "關於音樂 CD 外掛" + +#: src/cdaudio-ng/cdaudio-ng.c:243 +msgid "" +"Copyright (c) 2007, by Calin Crisan and The Audacious " +"Team.\n" +"\n" +"Many thanks to libcdio developers \n" +"\tand to libcddb developers .\n" +"\n" +"Also thank you Tony Vroon for mentoring & guiding me.\n" +"\n" +"This was a Google Summer of Code 2007 project.\n" +"\n" +"Copyright 2009 John Lindgren" +msgstr "" + +#: src/cdaudio-ng/cdaudio-ng.c:552 +msgid "Audio CD" +msgstr "音樂 CD" + +#: src/cdaudio-ng/cdaudio-ng.c:924 +msgid "Drive is empty." +msgstr "光碟機是空的。" + +#: src/cdaudio-ng/cdaudio-ng.c:926 +msgid "Unsupported disk type." +msgstr "未支æ´çš„光碟類型" + +#: src/cdaudio-ng/configure.c:148 +msgid "CD Audio Plugin Configuration" +msgstr "CD 音訊外掛設定" + +#: src/cdaudio-ng/configure.c:160 +msgid "Digital audio extraction" +msgstr "數ä½éŸ³è¨Š" + +#: src/cdaudio-ng/configure.c:165 +msgid "Title information" +msgstr "歌曲資訊" + +#: src/cdaudio-ng/configure.c:176 +msgid "Disc speed:" +msgstr "光碟機讀å–速度:" + +#: src/cdaudio-ng/configure.c:184 +msgid "Use cd-text if available" +msgstr "å¯ä»¥çš„話使用 CD-TEXT" + +#: src/cdaudio-ng/configure.c:191 +msgid "Use CDDB if available" +msgstr "å¯ä»¥çš„話使用 CDDB" + +#: src/cdaudio-ng/configure.c:197 +msgid "Server: " +msgstr "伺æœå™¨: " + +#: src/cdaudio-ng/configure.c:201 +msgid "Path: " +msgstr "路徑: " + +#: src/cdaudio-ng/configure.c:205 +msgid "Port: " +msgstr "連接埠: " + +#: src/cdaudio-ng/configure.c:218 +msgid "Use HTTP instead of CDDBP" +msgstr "使用 HTTP è€Œéž CDDBP" + +#: src/cdaudio-ng/configure.c:230 +msgid "Override default device: " +msgstr "覆載é è¨­è£ç½®: " + +#: src/cdaudio-ng/configure.c:244 src/crystalizer/crystalizer.c:123 +#: src/echo_plugin/gui.c:118 src/jack/configure.c:141 src/null/null.c:107 +#: src/stereo_plugin/stereo.c:118 +msgid "Ok" +msgstr "確èª" + +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Play CD" +msgstr "播放 CD" + +#: src/cd-menu-items/cd-menu-items.c:34 +msgid "Add CD" +msgstr "加入 CD" + +#: src/compressor/plugin.c:63 +msgid "About Dynamic Range Compression Plugin" +msgstr "關於動態範åœå£“縮外掛" + +#: src/compressor/plugin.c:95 +msgid "Dynamic Range Compressor Preferences" +msgstr "動態範åœå£“縮å好設定" + +#: src/compressor/plugin.c:107 +msgid "Center volume:" +msgstr "中央音é‡:" + +#: src/compressor/plugin.c:120 +msgid "Dynamic range:" +msgstr "動態範åœ:" + +#: src/console/configure.c:136 +msgid "Game Console Music Decoder" +msgstr "éŠæˆ²ä¸»æ©ŸéŸ³æ¨‚解碼器" + +#: src/console/configure.c:153 +msgid "General" +msgstr "一般" + +#: src/console/configure.c:155 src/skins/ui_manager.c:176 +msgid "Playback" +msgstr "播放" + +#: src/console/configure.c:170 +msgid "Bass:" +msgstr "低音" + +#: src/console/configure.c:174 src/console/configure.c:185 +#: src/console/configure.c:206 +msgid "secs" +msgstr "秒" + +#: src/console/configure.c:181 +msgid "Treble:" +msgstr "高音" + +#: src/console/configure.c:202 +msgid "Default song length:" +msgstr "é è¨­æ­Œæ›²é•·åº¦:" + +#: src/console/configure.c:208 +msgid "Resampling" +msgstr "é‡å–樣" + +#: src/console/configure.c:214 +msgid "Enable audio resampling" +msgstr "啟用è²éŸ³é‡å–樣" + +#: src/console/configure.c:229 +msgid "Resampling rate:" +msgstr "é‡å–樣率" + +#: src/console/configure.c:233 +msgid "Hz" +msgstr "" + +#: src/console/configure.c:244 +msgid "SPC" +msgstr "" + +#: src/console/configure.c:245 +msgid "Ignore length from SPC tags" +msgstr "忽略 SPC 標籤裡記錄的長度" + +#: src/console/configure.c:246 +msgid "Increase reverb" +msgstr "增加回音" + +#: src/console/configure.c:271 +msgid "" +"The default song length, expressed in seconds, is used for songs that do not " +"provide length information (i.e. looping tracks)." +msgstr "" +"é è¨­çš„歌曲長度,以秒表示。用於沒有æ供長度資訊的歌曲 (åƒæœƒç„¡é™æ’­æ”¾çš„音軌)" + +#: src/console/plugin.c:33 +msgid "About the Game Console Music Decoder" +msgstr "關於éŠæˆ²ä¸»æ©ŸéŸ³æ¨‚解碼器" + +#: src/console/plugin.c:34 +msgid "" +"Console music decoder engine based on Game_Music_Emu 0.5.2.\n" +"Supported formats: AY, GBS, GYM, HES, KSS, NSF, NSFE, SAP, SPC, VGM, VGZ\n" +"Audacious implementation by: William Pitcock , \n" +" Shay Green \n" +msgstr "" + +#: src/crossfade/plugin.c:60 +msgid "About Crossfade" +msgstr "關於 Crossfade" + +#: src/crossfade/plugin.c:92 +msgid "Crossfade Preferences" +msgstr "Crossfade å好設定" + +#: src/crossfade/plugin.c:104 +msgid "Overlap (in seconds):" +msgstr "é‡ç–Š (秒):" + +#: src/crossfade/plugin.c:135 src/crossfade/plugin.c:141 +msgid "Crossfade Error" +msgstr "Crossfade 錯誤" + +#: src/crossfade/plugin.c:135 +msgid "" +"Crossfading failed because the songs had a different number of channels." +msgstr "因為歌曲間的è²é“數ä¸åŒï¼Œç„¡æ³•ä½¿ç”¨ Crossfade。" + +#: src/crossfade/plugin.c:143 +msgid "" +"Crossfading failed because the songs had different sample rates.\n" +"\n" +"You can use the Sample Rate Converter effect to resample the songs to the " +"same rate." +msgstr "" + +#: src/crystalizer/crystalizer.c:100 +msgid "Configure Crystalizer" +msgstr "" + +#: src/crystalizer/crystalizer.c:102 src/stereo_plugin/stereo.c:97 +msgid "Effect intensity:" +msgstr "效果強度:" + +#: src/crystalizer/crystalizer.c:136 src/echo_plugin/gui.c:131 +#: src/stereo_plugin/stereo.c:131 +msgid "Apply" +msgstr "套用" + +#: src/echo_plugin/gui.c:15 +msgid "" +"Echo Plugin\n" +"By Johan Levin 1999.\n" +"\n" +"Surround echo by Carl van Schaik 1999" +msgstr "" + +#: src/echo_plugin/gui.c:27 +msgid "About Echo Plugin" +msgstr "關於回音外掛" + +#: src/echo_plugin/gui.c:67 +msgid "Configure Echo" +msgstr "設定回音" + +#: src/echo_plugin/gui.c:83 +msgid "Delay: (ms)" +msgstr "延é²: (毫秒)" + +#: src/echo_plugin/gui.c:88 +msgid "Feedback: (%)" +msgstr "å饋: (%)" + +#: src/echo_plugin/gui.c:93 +msgid "Volume: (%)" +msgstr "音é‡: (%)" + +#: src/ffaudio/ffaudio-core.c:798 +#, c-format +msgid "" +"Multi-format audio decoding plugin for Audacious based on\n" +"FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" +"Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" +"\n" +"Audacious plugin by:\n" +" William Pitcock ,\n" +" Matti Hämäläinen \n" +"\n" +"libavcodec %s (%s)\n" +"libavformat %s (%s)\n" +"libavutil %s (%s)\n" +msgstr "" + +#: src/ffaudio/ffaudio-core.c:812 +msgid "About FFaudio Plugin" +msgstr "" + +#: src/filewriter/filewriter.c:166 +msgid "About FileWriter-Plugin" +msgstr "" + +#: src/filewriter/filewriter.c:461 +msgid "File Writer Configuration" +msgstr "檔案輸出設定" + +#: src/filewriter/filewriter.c:473 +msgid "Output file format:" +msgstr "輸出檔案格å¼:" + +#: src/filewriter/filewriter.c:491 +msgid "Configure" +msgstr "設定" + +#: src/filewriter/filewriter.c:506 +msgid "Save into original directory" +msgstr "儲存到原始資料夾" + +#: src/filewriter/filewriter.c:511 +msgid "Save into custom directory" +msgstr "儲存到自訂資料夾" + +#: src/filewriter/filewriter.c:521 +msgid "Output file folder:" +msgstr "輸出檔案資料夾:" + +#: src/filewriter/filewriter.c:525 +msgid "Pick a folder" +msgstr "é¸æ“‡ä¸€å€‹è³‡æ–™å¤¾" + +#: src/filewriter/filewriter.c:544 +msgid "Get filename from:" +msgstr "檔å來æº:" + +#: src/filewriter/filewriter.c:547 +msgid "original file tags" +msgstr "原始檔案標籤" + +#: src/filewriter/filewriter.c:553 +msgid "original filename" +msgstr "原始檔å" + +#: src/filewriter/filewriter.c:563 +msgid "Don't strip file name extension" +msgstr "ä¸è¦åŽ»æŽ‰å‰¯æª”å" + +#: src/filewriter/filewriter.c:578 +msgid "Prepend track number to filename" +msgstr "在檔åå‰é¢åŠ ä¸ŠéŸ³è»Œè™Ÿç¢¼" + +#: src/filewriter/mp3.c:38 src/filewriter/mp3.c:765 +msgid "Auto" +msgstr "自動" + +#: src/filewriter/mp3.c:38 +msgid "Joint Stereo" +msgstr "è¯åˆç«‹é«”è²" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Stereo" +msgstr "ç«‹é«”è²" + +#: src/filewriter/mp3.c:39 src/mpg123/mpg123.c:191 +msgid "Mono" +msgstr "å–®è²é“" + +#: src/filewriter/mp3.c:706 +msgid "MP3 Configuration" +msgstr "MP3 設定" + +#: src/filewriter/mp3.c:729 +msgid "Algorithm Quality:" +msgstr "演算法å“質:" + +#: src/filewriter/mp3.c:754 +msgid "Output Samplerate:" +msgstr "輸出å–樣率:" + +#: src/filewriter/mp3.c:782 +msgid "(Hz)" +msgstr "" + +#: src/filewriter/mp3.c:789 +msgid "Bitrate / Compression ratio:" +msgstr "ä½å…ƒçŽ‡ / 壓縮比率:" + +#: src/filewriter/mp3.c:813 +msgid "Bitrate (kbps):" +msgstr "ä½å…ƒçŽ‡ (kbps):" + +#: src/filewriter/mp3.c:846 +msgid "Compression ratio:" +msgstr "壓縮比率:" + +#: src/filewriter/mp3.c:870 +msgid "Audio Mode:" +msgstr "音訊模å¼:" + +#: src/filewriter/mp3.c:895 +msgid "Misc:" +msgstr "雜項:" + +#: src/filewriter/mp3.c:906 +msgid "Enforce strict ISO complience" +msgstr "強制嚴格相容於 ISO" + +#: src/filewriter/mp3.c:917 +msgid "Error protection" +msgstr "錯誤ä¿è­·" + +#: src/filewriter/mp3.c:929 src/filewriter/vorbis.c:247 +msgid "Quality" +msgstr "å“質" + +#: src/filewriter/mp3.c:939 +msgid "Enable VBR/ABR" +msgstr "啟用 VBR/ABR" + +#: src/filewriter/mp3.c:949 +msgid "Type:" +msgstr "é¡žåž‹:" + +#: src/filewriter/mp3.c:982 +msgid "VBR Options:" +msgstr "VBR é¸é …:" + +#: src/filewriter/mp3.c:998 +msgid "Minimum bitrate (kbps):" +msgstr "最å°ä½å…ƒçŽ‡ (kbps):" + +#: src/filewriter/mp3.c:1025 +msgid "Maximum bitrate (kbps):" +msgstr "最大ä½å…ƒçŽ‡ (kbps):" + +#: src/filewriter/mp3.c:1048 +msgid "Strictly enforce minimum bitrate" +msgstr "強制使用最å°ä½å…ƒçŽ‡" + +#: src/filewriter/mp3.c:1060 +msgid "ABR Options:" +msgstr "ABR é¸é …:" + +#: src/filewriter/mp3.c:1070 +msgid "Average bitrate (kbps):" +msgstr "å¹³å‡ä½å…ƒçŽ‡ (kbps):" + +#: src/filewriter/mp3.c:1098 +msgid "VBR quality level:" +msgstr "VBR å“質等級:" + +#: src/filewriter/mp3.c:1117 +msgid "Don't write Xing VBR header" +msgstr "ä¸è¦å¯«å…¥ Xing VBR 檔頭" + +#: src/filewriter/mp3.c:1131 +msgid "VBR/ABR" +msgstr "" + +#: src/filewriter/mp3.c:1141 +msgid "Frame params:" +msgstr "音框åƒæ•¸:" + +#: src/filewriter/mp3.c:1153 +msgid "Mark as copyright" +msgstr "標示為版權" + +#: src/filewriter/mp3.c:1164 +msgid "Mark as original" +msgstr "標示為原創" + +#: src/filewriter/mp3.c:1176 +msgid "ID3 params:" +msgstr "ID3 åƒæ•¸:" + +#: src/filewriter/mp3.c:1187 +msgid "Force addition of version 2 tag" +msgstr "強制加入第二版標籤" + +#: src/filewriter/mp3.c:1197 +msgid "Only add v1 tag" +msgstr "åªåŠ å…¥ç¬¬ä¸€ç‰ˆæ¨™ç±¤" + +#: src/filewriter/mp3.c:1204 +msgid "Only add v2 tag" +msgstr "åªåŠ å…¥ç¬¬äºŒç‰ˆæ¨™ç±¤" + +#: src/filewriter/mp3.c:1225 +msgid "Tags" +msgstr "標籤" + +#: src/filewriter/vorbis.c:240 +msgid "Vorbis Encoder Configuration" +msgstr "Vorbis 編碼器設定" + +#: src/filewriter/vorbis.c:260 +msgid "Quality level (0 - 10):" +msgstr "å“質等級 (0 - 10):" + +#: src/flacng/plugin.c:380 +msgid "About FLAC Audio Plugin" +msgstr "關於 FLAC 音訊外掛" + +#: src/flacng/plugin.c:381 +msgid "" +"\n" +"\n" +"Original code by\n" +"Ralf Ertzinger \n" +"\n" +"http://www.skytale.net/projects/bmp-flac2/" +msgstr "" + +#: src/gnomeshortcuts/gnomeshortcuts.c:303 +msgid "About Gnome Shortcut Plugin" +msgstr "" + +#: src/gnomeshortcuts/gnomeshortcuts.c:304 +msgid "" +"Gnome Shortcut Plugin\n" +"Let's you control the player with Gnome's shortcuts.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +msgstr "" + +#: src/gtkui/columns.c:36 +msgid "Entry number" +msgstr "項目編號" + +#: src/gtkui/columns.c:36 src/search-tool/search-tool.c:43 +msgid "Title" +msgstr "標題" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:42 +msgid "Artist" +msgstr "è—人" + +#: src/gtkui/columns.c:37 +msgid "Year" +msgstr "年份" + +#: src/gtkui/columns.c:37 src/search-tool/search-tool.c:43 +msgid "Album" +msgstr "專輯" + +#: src/gtkui/columns.c:37 +msgid "Track" +msgstr "音軌" + +#: src/gtkui/columns.c:37 +msgid "Queue position" +msgstr "佇列ä½ç½®" + +#: src/gtkui/columns.c:38 +msgid "Length" +msgstr "長度" + +#: src/gtkui/columns.c:38 +msgid "File path" +msgstr "檔案路徑" + +#: src/gtkui/columns.c:38 +msgid "File name" +msgstr "檔案å稱" + +#: src/gtkui/columns.c:38 +msgid "Custom title" +msgstr "自訂標題" + +#: src/gtkui/columns.c:39 +msgid "Bitrate" +msgstr "ä½å…ƒçŽ‡" + +#: src/gtkui/columns.c:278 +msgid "Choose Columns" +msgstr "é¸æ“‡æ¬„ä½" + +#: src/gtkui/columns.c:292 +msgid "Available:" +msgstr "å¯ç”¨çš„:" + +#: src/gtkui/columns.c:326 +msgid "Chosen:" +msgstr "å·²é¸æ“‡:" + +#: src/gtkui/layout.c:122 +msgid "Dock at Left" +msgstr "嵌入左方" + +#: src/gtkui/layout.c:122 +msgid "Dock at Right" +msgstr "嵌入å³æ–¹" + +#: src/gtkui/layout.c:123 +msgid "Dock at Top" +msgstr "嵌入頂端" + +#: src/gtkui/layout.c:123 +msgid "Dock at Bottom" +msgstr "嵌入底端" + +#: src/gtkui/layout.c:123 +msgid "Undock" +msgstr "解除嵌入" + +#: src/gtkui/layout.c:123 src/ladspa/plugin.c:644 +msgid "Disable" +msgstr "關閉" + +#: src/gtkui/menus.c:131 +msgid "_Open Files ..." +msgstr "開啟檔案(_O) ..." + +#: src/gtkui/menus.c:132 +msgid "Open _URL ..." +msgstr "é–‹å•Ÿ _URL ..." + +#: src/gtkui/menus.c:133 +msgid "_Add Files ..." +msgstr "加入檔案(_A) ... " + +#: src/gtkui/menus.c:134 +msgid "Add U_RL ..." +msgstr "加入 U_RL ..." + +#: src/gtkui/menus.c:136 +msgid "A_bout ..." +msgstr "關於(_B) ..." + +#: src/gtkui/menus.c:137 +msgid "_Preferences ..." +msgstr "å好設定(_P) ..." + +#: src/gtkui/menus.c:138 src/skins/ui_manager.c:406 +msgid "_Quit" +msgstr "離開(_Q)" + +#: src/gtkui/menus.c:141 +msgid "_Play" +msgstr "播放(_P)" + +#: src/gtkui/menus.c:142 +msgid "Paus_e" +msgstr "æš«åœ(_E)" + +#: src/gtkui/menus.c:143 +msgid "_Stop" +msgstr "åœæ­¢(_S)" + +#: src/gtkui/menus.c:144 +msgid "Pre_vious" +msgstr "上一個(_V)" + +#: src/gtkui/menus.c:145 +msgid "_Next" +msgstr "下一個(_N)" + +#: src/gtkui/menus.c:147 +msgid "_Repeat" +msgstr "é‡è¤‡" + +#: src/gtkui/menus.c:148 +msgid "S_huffle" +msgstr "隨機" + +#: src/gtkui/menus.c:149 +msgid "N_o Playlist Advance" +msgstr "ä¸è¦åˆ‡æ›æ’­æ”¾æ¸…å–®" + +#: src/gtkui/menus.c:150 +msgid "Stop _After This Song" +msgstr "播放完目å‰æ­Œæ›²å¾Œåœæ­¢" + +#: src/gtkui/menus.c:152 src/gtkui/menus.c:212 +msgid "Song _Info ..." +msgstr "歌曲資訊(_I) ..." + +#: src/gtkui/menus.c:153 +msgid "Jump to _Time ..." +msgstr "跳至時間(_T) ..." + +#: src/gtkui/menus.c:154 +msgid "_Jump to Song ..." +msgstr "跳至歌曲(_J) ..." + +#: src/gtkui/menus.c:157 +msgid "By Track _Number" +msgstr "音軌編號(_N)" + +#: src/gtkui/menus.c:158 +msgid "By _Title" +msgstr "標題(_T)" + +#: src/gtkui/menus.c:159 +msgid "By _Artist" +msgstr "è—人(_A)" + +#: src/gtkui/menus.c:160 +msgid "By A_lbum" +msgstr "專輯(_L)" + +#: src/gtkui/menus.c:161 +msgid "By Release _Date" +msgstr "發行日期(_D)" + +#: src/gtkui/menus.c:162 +msgid "By _File Path" +msgstr "檔案路徑(_F)" + +#: src/gtkui/menus.c:163 +msgid "By _Custom Title" +msgstr "自訂標題(_C)" + +#: src/gtkui/menus.c:165 +msgid "R_everse Order" +msgstr "åå‘é †åº(_E)" + +#: src/gtkui/menus.c:166 +msgid "_Random Order" +msgstr "隨機順åº(_R)" + +#: src/gtkui/menus.c:169 src/gtkui/menus.c:214 +msgid "_Refresh" +msgstr "é‡æ–°æ•´ç†(_R)" + +#: src/gtkui/menus.c:170 +msgid "Remove _Unavailable Files" +msgstr "移除ä¸å­˜åœ¨çš„檔案(_U)" + +#: src/gtkui/menus.c:172 +msgid "_Sort" +msgstr "排åº(_S)" + +#: src/gtkui/menus.c:174 +msgid "_New" +msgstr "新增(_N)" + +#: src/gtkui/menus.c:175 src/gtkui/menus.c:225 +msgid "_Close" +msgstr "關閉(_C)" + +#: src/gtkui/menus.c:177 +msgid "_Import ..." +msgstr "匯入(_I) ..." + +#: src/gtkui/menus.c:178 +msgid "_Export ..." +msgstr "匯出 (_E) ..." + +#: src/gtkui/menus.c:180 +msgid "_Playlist Manager ..." +msgstr "播放清單管ç†(_P) ..." + +#: src/gtkui/menus.c:181 +msgid "_Queue Manager ..." +msgstr "佇列管ç†(_Q) ..." + +#: src/gtkui/menus.c:184 +msgid "Volume _Up" +msgstr "æ高音é‡(_U)" + +#: src/gtkui/menus.c:185 +msgid "Volume _Down" +msgstr "é™ä½ŽéŸ³é‡(_D)" + +#: src/gtkui/menus.c:187 +msgid "_Equalizer" +msgstr "等化器(_E)" + +#: src/gtkui/menus.c:189 +msgid "E_ffects" +msgstr "特效(_F)" + +#: src/gtkui/menus.c:192 +msgid "_Interface" +msgstr "介é¢(_I)" + +#: src/gtkui/menus.c:193 +msgid "_Visualizations" +msgstr "視覺化(_V)" + +#: src/gtkui/menus.c:195 +msgid "Show _Menu Bar" +msgstr "顯示é¸å–®åˆ—(_M)" + +#: src/gtkui/menus.c:196 +msgid "Show I_nfo Bar" +msgstr "顯示資訊列(_N)" + +#: src/gtkui/menus.c:197 +msgid "Show _Status Bar" +msgstr "顯示狀態列(_S)" + +#: src/gtkui/menus.c:199 +msgid "Show Column _Headers" +msgstr "顯示欄ä½æ¨™é ­(_H)" + +#: src/gtkui/menus.c:200 +msgid "Choose _Columns ..." +msgstr "é¸æ“‡æ¬„ä½ (_C) ..." + +#: src/gtkui/menus.c:201 +msgid "Scrol_l on Song Change" +msgstr "切æ›æ­Œæ›²æ™‚æ²å‹•(_L)" + +#: src/gtkui/menus.c:204 +msgid "_File" +msgstr "檔案(_F)" + +#: src/gtkui/menus.c:205 +msgid "_Playback" +msgstr "播放(_P)" + +#: src/gtkui/menus.c:206 +msgid "P_laylist" +msgstr "播放清單(_L)" + +#: src/gtkui/menus.c:207 src/gtkui/menus.c:221 +msgid "_Services" +msgstr "æœå‹™(_S)" + +#: src/gtkui/menus.c:208 +msgid "_Output" +msgstr "輸出(_O)" + +#: src/gtkui/menus.c:209 +msgid "_View" +msgstr "檢視(_V)" + +#: src/gtkui/menus.c:213 +msgid "_Queue/Unqueue" +msgstr "排入/移出佇列(_Q)" + +#: src/gtkui/menus.c:216 +msgid "Cu_t" +msgstr "剪下(_T)" + +#: src/gtkui/menus.c:217 +msgid "_Copy" +msgstr "複製(_C)" + +#: src/gtkui/menus.c:218 +msgid "_Paste" +msgstr "貼上(_P)" + +#: src/gtkui/menus.c:219 +msgid "Select _All" +msgstr "é¸æ“‡å…¨éƒ¨(_A)" + +#: src/gtkui/menus.c:224 +msgid "_Rename" +msgstr "é‡æ–°å‘½å(_R)" + +#: src/gtkui/ui_gtk.c:95 +msgid "GTK Interface" +msgstr "GTK 介é¢" + +#: src/gtkui/ui_gtk.c:156 src/skins/ui_main.c:303 +#, c-format +msgid "%s - Audacious" +msgstr "" + +#: src/gtkui/ui_gtk.c:162 +msgid "Buffering ..." +msgstr "ç·©è¡ä¸­ ..." + +#: src/gtkui/ui_gtk.c:165 src/skins/ui_main.c:305 src/skins/ui_main.c:1504 +msgid "Audacious" +msgstr "" + +#: src/gtkui/ui_gtk.c:216 src/skins/plugin.c:190 +msgid "Error" +msgstr "錯誤" + +#: src/gtkui/ui_statusbar.c:105 src/skins/ui_main.c:460 +msgid "mono" +msgstr "å–®è²é“" + +#: src/gtkui/ui_statusbar.c:107 src/skins/ui_main.c:459 +msgid "stereo" +msgstr "ç«‹é«”è²" + +#: src/gtkui/ui_statusbar.c:109 +#, c-format +msgid "%d channel" +msgid_plural "%d channels" +msgstr[0] "" + +#: src/gtkui/ui_statusbar.c:124 +#, c-format +msgid "%d kbps" +msgstr "" + +#: src/hotkey/gui.c:71 +msgid "Previous Track" +msgstr "上一個音軌" + +#: src/hotkey/gui.c:72 src/skins/ui_manager.c:178 src/skins/ui_manager.c:179 +msgid "Play" +msgstr "播放" + +#: src/hotkey/gui.c:73 +msgid "Pause/Resume" +msgstr "æš«åœ/回復" + +#: src/hotkey/gui.c:74 src/skins/ui_manager.c:184 src/skins/ui_manager.c:185 +msgid "Stop" +msgstr "åœæ­¢" + +#: src/hotkey/gui.c:75 +msgid "Next Track" +msgstr "下一個音軌" + +#: src/hotkey/gui.c:76 +msgid "Forward 5 Seconds" +msgstr "快轉五秒" + +#: src/hotkey/gui.c:77 +msgid "Rewind 5 Seconds" +msgstr "倒轉五秒" + +#: src/hotkey/gui.c:78 +msgid "Mute" +msgstr "éœéŸ³" + +#: src/hotkey/gui.c:79 +msgid "Volume Up" +msgstr "æ高音é‡" + +#: src/hotkey/gui.c:80 +msgid "Volume Down" +msgstr "é™ä½ŽéŸ³é‡" + +#: src/hotkey/gui.c:81 src/skins/ui_manager.c:415 src/skins/ui_manager.c:416 +msgid "Jump to File" +msgstr "跳至檔案" + +#: src/hotkey/gui.c:82 +msgid "Toggle Player Windows" +msgstr "切æ›é¡¯ç¤ºæ’­æ”¾å™¨è¦–窗" + +#: src/hotkey/gui.c:83 +msgid "Show On-Screen-Display" +msgstr "顯示 OSD" + +#: src/hotkey/gui.c:84 +msgid "Toggle Repeat" +msgstr "切æ›é‡è¤‡æ’­æ”¾" + +#: src/hotkey/gui.c:85 +msgid "Toggle Shuffle" +msgstr "切æ›éš¨æ©Ÿæ’­æ”¾" + +#: src/hotkey/gui.c:95 +msgid "(none)" +msgstr "(ç„¡)" + +#: src/hotkey/gui.c:232 +msgid "" +"It is not recommended to bind the primary mouse buttons without " +"modificators.\n" +"\n" +"Do you want to continue?" +msgstr "" + +#: src/hotkey/gui.c:234 +msgid "Binding mouse buttons" +msgstr "ç¶å®šæ»‘鼠按鈕" + +#: src/hotkey/gui.c:384 +msgid "Global Hotkey Plugin Configuration" +msgstr "全域熱éµå¤–掛設定" + +#: src/hotkey/gui.c:400 +msgid "" +"Press a key combination inside a text field.\n" +"You can also bind mouse buttons." +msgstr "" +"請在輸入欄ä½ä¸­æŒ‰ä¸‹æƒ³è¦çš„按éµçµ„åˆã€‚\n" +"你也å¯ä»¥ç¶å®šæ»‘鼠按鈕。" + +#: src/hotkey/gui.c:405 +msgid "Hotkeys:" +msgstr "熱éµ:" + +#: src/hotkey/gui.c:424 +msgid "Action:" +msgstr "動作:" + +#: src/hotkey/gui.c:432 +msgid "Key Binding:" +msgstr "按éµç¶å®š:" + +#: src/hotkey/gui.c:663 +msgid "About Global Hotkey Plugin" +msgstr "關於全域熱éµå¤–掛" + +#: src/hotkey/gui.c:664 +msgid "" +"Global Hotkey Plugin\n" +"Control the player with global key combinations or multimedia keys.\n" +"\n" +"Copyright (C) 2007-2008 Sascha Hlusiak \n" +"\n" +"Contributers include:\n" +"Copyright (C) 2006-2007 Vladimir Paskov \n" +"Copyright (C) 2000-2002 Ville Syrjälä \n" +"\t\t\tBryn Davies \n" +"\t\t\tJonathan A. Davis \n" +"\t\t\tJeremy Tan \n" +"\n" +msgstr "" + +#: src/jack/configure.c:66 +msgid "Connect to all available jack ports" +msgstr "" + +#: src/jack/configure.c:73 +msgid "Connect only the output ports" +msgstr "" + +#: src/jack/configure.c:80 +msgid "Connect to no ports" +msgstr "" + +#: src/jack/configure.c:98 +msgid "jack Plugin configuration" +msgstr "" + +#: src/jack/configure.c:116 +msgid "Connection mode:" +msgstr "" + +#: src/jack/configure.c:128 +msgid "Enable debug printing" +msgstr "" + +#: src/jack/jack.c:435 +msgid "" +"XMMS jack Driver 0.17\n" +"\n" +"xmms-jack.sf.net\n" +"Chris Morgan\n" +"\n" +"Audacious port by\n" +"Giacomo Lozito from develia.org" +msgstr "" + +#: src/jack/jack.c:440 +msgid "About JACK Output Plugin 0.17" +msgstr "" + +#: src/ladspa/plugin.c:415 +msgid "About LADSPA Host" +msgstr "" + +#: src/ladspa/plugin.c:516 +#, c-format +msgid "%s Settings" +msgstr "%s 設定" + +#: src/ladspa/plugin.c:584 +msgid "LADSPA Host Settings" +msgstr "LADSPA 主控端設定" + +#: src/ladspa/plugin.c:593 +msgid "Module paths:" +msgstr "模組路徑:" + +#: src/ladspa/plugin.c:598 +msgid "" +"Separate multiple paths with a colon.\n" +"These paths are searched in addition to LADSPA_PATH.\n" +"After adding new paths, press Enter to scan for new plugins." +msgstr "" +"用逗點å€éš”ä¸åŒçš„路徑。\n" +"系統除了 LADSPA_PATH 之外也會æœå°‹é€™äº›è·¯å¾‘。\n" +"加入新路徑之後請按 Enter 掃æ新的外掛。" + +#: src/ladspa/plugin.c:614 +msgid "Available plugins:" +msgstr "å¯ç”¨çš„外掛:" + +#: src/ladspa/plugin.c:626 +msgid "Enable" +msgstr "啟用" + +#: src/ladspa/plugin.c:632 +msgid "Enabled plugins:" +msgstr "啟用外掛:" + +#: src/ladspa/plugin.c:647 +msgid "Settings" +msgstr "設定" + +#: src/lyricwiki/lyricwiki.c:267 +msgid "" +"\n" +"Looking for lyrics..." +msgstr "" +"\n" +"尋找歌詞中 ..." + +#: src/lyricwiki/lyricwiki.c:304 +msgid "" +"\n" +"Connecting to lyrics.wikia.com..." +msgstr "" +"\n" +"連線到 lyrics.wikia.com..." + +#: src/lyricwiki/lyricwiki.c:377 +msgid "" +"\n" +"No lyrics were found." +msgstr "" +"\n" +"找ä¸åˆ°æ­Œè©žã€‚" + +#: src/metronom/metronom.c:86 +msgid "About Metronom" +msgstr "" + +#: src/metronom/metronom.c:87 +msgid "" +"A Tact Generator by Martin Strauss \n" +"\n" +"To use it, add a URL: tact://beats*num/den\n" +"e.g. tact://77 to play 77 beats per minute\n" +"or tact://60*3/4 to play 60 bpm in 3/4 tacts" +msgstr "" + +#: src/metronom/metronom.c:144 +#, c-format +msgid "Tact generator: %d bpm" +msgstr "" + +#: src/metronom/metronom.c:146 +#, c-format +msgid "Tact generator: %d bpm %d/%d" +msgstr "" + +#: src/mixer/plugin.c:64 +msgid "About Channel Mixer" +msgstr "" + +#: src/mixer/plugin.c:93 +msgid "Channel Mixer Settings" +msgstr "è²é“混音器設定:" + +#: src/mixer/plugin.c:102 +msgid "Output channels:" +msgstr "輸出è²é“數目:" + +#: src/mixer/plugin.c:112 +msgid "Changes take effect at the next song change." +msgstr "下一首歌播放時æ‰æœƒç”Ÿæ•ˆã€‚" + +#: src/mpg123/mpg123.c:191 +msgid "Surround" +msgstr "環繞" + +#: src/mtp_up/mtp.c:336 +msgid "Upload in progress..." +msgstr "上傳處ç†ä¸­..." + +#: src/mtp_up/mtp.c:348 +msgid "Upload to MTP Device" +msgstr "上傳至 MTP è£ç½®" + +#: src/mtp_up/mtp.c:349 +msgid "Disconnect MTP Device" +msgstr "從 MTP è£ç½®é›¢ç·š" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Stopped" +msgstr "å·²åœæ­¢" + +#: src/notify/libnotify-aosd_event.c:48 +msgid "Audacious is not playing." +msgstr "" + +#: src/null/null.c:64 +msgid "Null output plugin " +msgstr "ç„¡è²è¼¸å‡ºå¤–掛" + +#: src/null/null.c:65 +msgid "" +" by Christian Birchinger \n" +"based on the XMMS plugin by HÃ¥vard KvÃ¥l " +msgstr "" + +#: src/null/null.c:68 +msgid "About Null Output" +msgstr "" + +#: src/null/null.c:89 +msgid "Null output preferences" +msgstr "ç„¡è²è¼¸å‡ºå好設定" + +#: src/null/null.c:100 +msgid "Run in real time" +msgstr "以å³æ™‚優先權執行" + +#: src/oss4/configure.c:81 +msgid "1. Default device" +msgstr "1. é è¨­è£ç½®" + +#: src/oss4/configure.c:138 +msgid "OSS4 Output Plugin Preferences" +msgstr "OSS4 輸出外掛å好設定" + +#: src/oss4/configure.c:150 src/OSS/configure.c:194 +msgid "Audio device:" +msgstr "音訊è£ç½®:" + +#: src/oss4/configure.c:178 src/OSS/configure.c:217 src/OSS/configure.c:260 +msgid "Use alternate device:" +msgstr "使用替代è£ç½®:" + +#: src/oss4/configure.c:193 +msgid "Save volume between sessions" +msgstr "儲存ä¸åŒå·¥ä½œéšŽæ®µçš„音é‡" + +#: src/oss4/configure.c:197 +msgid "Enable format conversions made by the OSS software." +msgstr "" + +#: src/oss4/configure.c:201 +msgid "Enable exclusive mode to prevent virtual mixing." +msgstr "" + +#: src/oss4/plugin.c:51 +msgid "About OSS4 Plugin" +msgstr "關於 OSS4 外掛" + +#: src/oss4/utils.c:211 +msgid "OSS4 error" +msgstr "OSS4 錯誤" + +#: src/OSS/configure.c:137 +#, c-format +msgid "Default (%s)" +msgstr "é è¨­ (%s)" + +#: src/OSS/configure.c:178 +msgid "OSS Driver configuration" +msgstr "OSS 驅動程å¼è¨­å®š" + +#: src/OSS/configure.c:281 +msgid "Devices" +msgstr "è£ç½®" + +#: src/OSS/configure.c:283 +msgid "Buffering:" +msgstr "ç·©è¡ä¸­:" + +#: src/OSS/configure.c:296 +msgid "Pre-buffer (percent):" +msgstr "é ç·©è¡ (百分比):" + +#: src/OSS/configure.c:307 +msgid "Buffering" +msgstr "ç·©è¡ä¸­" + +#: src/OSS/configure.c:308 +msgid "Mixer Settings:" +msgstr "混音器設定:" + +#: src/OSS/configure.c:314 +msgid "Volume controls Master not PCM" +msgstr "音é‡æŽ§åˆ¶èª¿æ•´ä¸»éŸ³é‡è€Œä¸æ˜¯ PCM" + +#: src/OSS/configure.c:320 +msgid "Mixer" +msgstr "混音器" + +#: src/OSS/OSS.c:41 +msgid "About OSS Driver" +msgstr "關於 OSS é©…å‹•" + +#: src/pulse_audio/pulse_audio.c:669 +msgid "About Audacious PulseAudio Output Plugin" +msgstr "關於 Audacious PulseAudio 輸出外掛" + +#: src/resample/plugin.c:89 +msgid "About Sample Rate Converter Plugin" +msgstr "" + +#: src/resample/plugin.c:144 +msgid "Sample Rate Converter Preferences" +msgstr "" + +#: src/resample/plugin.c:156 +msgid "Rate mappings:" +msgstr "å–樣率映射:" + +#: src/resample/plugin.c:179 +msgid "All others:" +msgstr "其他:" + +#: src/resample/plugin.c:191 +msgid "Method:" +msgstr "演算法:" + +#: src/scrobbler/configure.c:123 src/scrobbler/configure.c:198 +msgid "Change password" +msgstr "變更密碼" + +#: src/scrobbler/configure.c:144 +msgid "Services" +msgstr "æœå‹™" + +#: src/scrobbler/configure.c:166 +msgid "Username:" +msgstr "使用者å稱:" + +#: src/scrobbler/configure.c:172 +msgid "Password:" +msgstr "密碼:" + +#: src/scrobbler/configure.c:180 +msgid "Scrobbler URL:" +msgstr "" + +#: src/scrobbler/configure.c:212 +msgid "Last.FM" +msgstr "" + +#: src/scrobbler/configure.c:239 +msgid "Scrobbler" +msgstr "" + +#: src/scrobbler/plugin.c:194 +msgid "" +"Audacious AudioScrobbler Plugin\n" +"\n" +"Originally created by Audun Hove and Pipian \n" +msgstr "" + +#: src/scrobbler/plugin.c:196 +msgid "About Scrobbler Plugin" +msgstr "" + +#: src/sdlout/plugin.c:58 +msgid "About SDL Output Plugin" +msgstr "" + +#: src/sdlout/plugin.c:78 +msgid "SDL error" +msgstr "" + +#: src/search-tool/search-tool.c:42 +msgid "Genre" +msgstr "é¡žåž‹" + +#: src/search-tool/search-tool.c:96 src/search-tool/search-tool.c:106 +msgid "Library" +msgstr "媒體櫃" + +#: src/search-tool/search-tool.c:591 +msgid "_Create Playlist" +msgstr "建立播放清單(_C)" + +#: src/search-tool/search-tool.c:598 +msgid "_Add to Playlist" +msgstr "加入至播放清單(_A):" + +#: src/search-tool/search-tool.c:641 +msgid "Search library" +msgstr "æœå°‹åª’體櫃" + +#: src/search-tool/search-tool.c:645 +msgid "" +"To import your music library into Audacious, choose a folder and then click " +"the \"refresh\" icon." +msgstr "" +"è¦å°‡æ‚¨çš„媒體櫃匯入至 Audacious,請é¸æ“‡ç›®æ¨™è³‡æ–™å¤¾ä¸¦ä¸”按下 \"é‡æ–°æ•´ç†\" 圖示。" + +#: src/search-tool/search-tool.c:653 +msgid "Please wait ..." +msgstr "è«‹ç¨å€™ ..." + +#: src/search-tool/search-tool.c:675 +msgid "Choose Folder" +msgstr "é¸æ“‡è³‡æ–™å¤¾" + +#: src/skins/plugin.c:167 +msgid "About Skinned GUI" +msgstr "" + +#: src/skins/plugin.c:168 +msgid "" +"Copyright (c) 2008, by Tomasz MoÅ„ \n" +"\n" +msgstr "" + +#: src/skins/skins_cfg.c:207 +msgid "_Player:" +msgstr "播放器(_P):" + +#: src/skins/skins_cfg.c:208 +msgid "Select main player window font:" +msgstr "é¸æ“‡æ’­æ”¾å™¨ä¸»è¦–窗字型:" + +#: src/skins/skins_cfg.c:210 +msgid "_Playlist:" +msgstr "播放清單(_P):" + +#: src/skins/skins_cfg.c:211 +msgid "Select playlist font:" +msgstr "é¸æ“‡æ’­æ”¾æ¸…單字型:" + +#: src/skins/skins_cfg.c:215 +msgid "_Fonts" +msgstr "å­—åž‹(_F)" + +#: src/skins/skins_cfg.c:218 +msgid "Use bitmap fonts (supports ASCII only)" +msgstr "使用點陣字型 (åªæ”¯æ´ ASCII)" + +#: src/skins/skins_cfg.c:220 +msgid "Scroll song title in both directions" +msgstr "é›™å‘æ²å‹•æ­Œæ›²æ¨™é¡Œ" + +#: src/skins/skins_cfg.c:298 +msgid "_Skin" +msgstr "é¢æ¿" + +#: src/skins/skins_cfg.c:345 +msgid "Interface Preferences" +msgstr "介é¢å好設定" + +#: src/skins/ui_equalizer.c:330 +msgid "Preamp" +msgstr "å‰ç½®æ”¾å¤§" + +#: src/skins/ui_equalizer.c:334 +msgid "31 Hz" +msgstr "" + +#: src/skins/ui_equalizer.c:335 +msgid "63 Hz" +msgstr "" + +#: src/skins/ui_equalizer.c:335 +msgid "125 Hz" +msgstr "" + +#: src/skins/ui_equalizer.c:335 +msgid "250 Hz" +msgstr "" + +#: src/skins/ui_equalizer.c:335 +msgid "500 Hz" +msgstr "" + +#: src/skins/ui_equalizer.c:335 +msgid "1 kHz" +msgstr "" + +#: src/skins/ui_equalizer.c:336 +msgid "2 kHz" +msgstr "" + +#: src/skins/ui_equalizer.c:336 +msgid "4 kHz" +msgstr "" + +#: src/skins/ui_equalizer.c:336 +msgid "8 kHz" +msgstr "" + +#: src/skins/ui_equalizer.c:336 +msgid "16 kHz" +msgstr "" + +#: src/skins/ui_equalizer.c:379 +msgid "Audacious Equalizer" +msgstr "Audacious 等化器" + +#: src/skins/ui_equalizer.c:887 +msgid "Presets" +msgstr "樣å¼" + +#: src/skins/ui_equalizer.c:968 src/skins/ui_manager.c:442 +msgid "Load preset" +msgstr "載入樣å¼" + +#: src/skins/ui_equalizer.c:985 +msgid "Load auto-preset" +msgstr "讀å–自動載入樣å¼" + +#: src/skins/ui_equalizer.c:1015 src/skins/ui_equalizer.c:1033 +#: src/skins/ui_equalizer.c:1049 +msgid "Load equalizer preset" +msgstr "載入等化器樣å¼" + +#: src/skins/ui_equalizer.c:1068 src/skins/ui_manager.c:463 +msgid "Save preset" +msgstr "儲存樣å¼" + +#: src/skins/ui_equalizer.c:1084 +msgid "Save auto-preset" +msgstr "儲存自動載入樣å¼" + +#: src/skins/ui_equalizer.c:1114 src/skins/ui_equalizer.c:1150 +msgid "Save equalizer preset" +msgstr "儲存等化器樣å¼" + +#: src/skins/ui_equalizer.c:1169 src/skins/ui_manager.c:478 +msgid "Delete preset" +msgstr "刪除樣å¼" + +#: src/skins/ui_equalizer.c:1186 +msgid "Delete auto-preset" +msgstr "刪除自動載入樣å¼" + +#: src/skins/ui_main.c:444 +msgid "kbps" +msgstr "" + +#: src/skins/ui_main.c:452 +msgid "kHz" +msgstr "" + +#: src/skins/ui_main.c:459 +msgid "surround" +msgstr "環繞" + +#: src/skins/ui_main.c:807 +#, c-format +msgid "Seek to %d:%-2.2d / %d:%-2.2d" +msgstr "" + +#: src/skins/ui_main.c:828 +#, c-format +msgid "Volume: %d%%" +msgstr "音é‡: %d%%" + +#: src/skins/ui_main.c:851 +#, c-format +msgid "Balance: %d%% left" +msgstr "平衡: %d%% åå·¦" + +#: src/skins/ui_main.c:853 +msgid "Balance: center" +msgstr "平衡: 中間" + +#: src/skins/ui_main.c:855 +#, c-format +msgid "Balance: %d%% right" +msgstr "平衡: %d%% åå³" + +#: src/skins/ui_main.c:981 +msgid "Options Menu" +msgstr "" + +#: src/skins/ui_main.c:985 +msgid "Disable 'Always On Top'" +msgstr "關閉置頂" + +#: src/skins/ui_main.c:987 +msgid "Enable 'Always On Top'" +msgstr "啟用置頂" + +#: src/skins/ui_main.c:990 +msgid "File Info Box" +msgstr "" + +#: src/skins/ui_main.c:995 +msgid "Visualization Menu" +msgstr "視覺化é¸å–®" + +#: src/skins/ui_main.c:1653 +msgid "Single mode." +msgstr "" + +#: src/skins/ui_main.c:1655 +msgid "Playlist mode." +msgstr "" + +#: src/skins/ui_main.c:1677 +msgid "Stopping after song." +msgstr "" + +#: src/skins/ui_main.c:1679 +msgid "Not stopping after song." +msgstr "" + +#: src/skins/ui_manager.c:67 src/skins/ui_manager.c:68 +msgid "Autoscroll Songname" +msgstr "自動æ²å‹•æ­Œå" + +#: src/skins/ui_manager.c:70 src/skins/ui_manager.c:71 +msgid "Stop after Current Song" +msgstr "播放完目å‰æ­Œæ›²å¾Œåœæ­¢" + +#: src/skins/ui_manager.c:73 src/skins/ui_manager.c:74 +msgid "Peaks" +msgstr "峰值" + +#: src/skins/ui_manager.c:76 src/skins/ui_manager.c:77 +msgid "Repeat" +msgstr "é‡è¤‡" + +#: src/skins/ui_manager.c:79 src/skins/ui_manager.c:80 +msgid "Shuffle" +msgstr "隨機" + +#: src/skins/ui_manager.c:82 src/skins/ui_manager.c:83 +msgid "No Playlist Advance" +msgstr "ä¸è¦åˆ‡æ›æ’­æ”¾æ¸…å–®" + +#: src/skins/ui_manager.c:85 src/skins/ui_manager.c:86 +msgid "Show Player" +msgstr "顯示播放器" + +#: src/skins/ui_manager.c:88 src/skins/ui_manager.c:89 +msgid "Show Playlist Editor" +msgstr "顯示播放清單編輯器" + +#: src/skins/ui_manager.c:91 src/skins/ui_manager.c:92 +msgid "Show Equalizer" +msgstr "顯示等化器" + +#: src/skins/ui_manager.c:94 src/skins/ui_manager.c:95 +msgid "Always on Top" +msgstr "æ°¸é åœ¨æœ€ä¸Šå±¤" + +#: src/skins/ui_manager.c:97 src/skins/ui_manager.c:98 +msgid "Put on All Workspaces" +msgstr "在所有工作å€é¡¯ç¤º" + +#: src/skins/ui_manager.c:100 src/skins/ui_manager.c:101 +msgid "Roll up Player" +msgstr "æ²èµ·æ’­æ”¾å™¨" + +#: src/skins/ui_manager.c:103 src/skins/ui_manager.c:104 +msgid "Roll up Playlist Editor" +msgstr "æ²èµ·æ’­æ”¾æ¸…單編輯器" + +#: src/skins/ui_manager.c:106 src/skins/ui_manager.c:107 +msgid "Roll up Equalizer" +msgstr "æ²èµ·ç­‰åŒ–器" + +#: src/skins/ui_manager.c:115 +msgid "Analyzer" +msgstr "分æžå„€" + +#: src/skins/ui_manager.c:116 +msgid "Scope" +msgstr "示波器" + +#: src/skins/ui_manager.c:117 +msgid "Voiceprint" +msgstr "è²ç´‹" + +#: src/skins/ui_manager.c:118 +msgid "Off" +msgstr "關閉" + +#: src/skins/ui_manager.c:122 src/skins/ui_manager.c:139 +#: src/skins/ui_manager.c:145 +msgid "Normal" +msgstr "標準" + +#: src/skins/ui_manager.c:123 src/skins/ui_manager.c:140 +msgid "Fire" +msgstr "ç«ç„°" + +#: src/skins/ui_manager.c:124 +msgid "Vertical Lines" +msgstr "åž‚ç›´ç·šæ¢" + +#: src/skins/ui_manager.c:128 +msgid "Lines" +msgstr "ç·šæ¢" + +#: src/skins/ui_manager.c:129 +msgid "Bars" +msgstr "棒狀" + +#: src/skins/ui_manager.c:133 +msgid "Dot Scope" +msgstr "點狀" + +#: src/skins/ui_manager.c:134 +msgid "Line Scope" +msgstr "ç·šç‹€" + +#: src/skins/ui_manager.c:135 +msgid "Solid Scope" +msgstr "實心" + +#: src/skins/ui_manager.c:141 +msgid "Ice" +msgstr "冰霜" + +#: src/skins/ui_manager.c:146 +msgid "Smooth" +msgstr "平滑" + +#: src/skins/ui_manager.c:150 src/skins/ui_manager.c:158 +msgid "Slowest" +msgstr "最慢" + +#: src/skins/ui_manager.c:151 src/skins/ui_manager.c:159 +msgid "Slow" +msgstr "æ…¢" + +#: src/skins/ui_manager.c:152 src/skins/ui_manager.c:160 +msgid "Medium" +msgstr "中等" + +#: src/skins/ui_manager.c:153 src/skins/ui_manager.c:161 +msgid "Fast" +msgstr "å¿«" + +#: src/skins/ui_manager.c:154 src/skins/ui_manager.c:162 +msgid "Fastest" +msgstr "最快" + +#: src/skins/ui_manager.c:166 +msgid "Time Elapsed" +msgstr "經éŽæ™‚é–“" + +#: src/skins/ui_manager.c:167 +msgid "Time Remaining" +msgstr "剩餘時間" + +#: src/skins/ui_manager.c:181 src/skins/ui_manager.c:182 +msgid "Pause" +msgstr "æš«åœ" + +#: src/skins/ui_manager.c:187 src/skins/ui_manager.c:188 +msgid "Previous" +msgstr "上一個" + +#: src/skins/ui_manager.c:190 src/skins/ui_manager.c:191 +msgid "Next" +msgstr "下一個" + +#: src/skins/ui_manager.c:196 +msgid "Visualization" +msgstr "視覺化" + +#: src/skins/ui_manager.c:197 +msgid "Visualization Mode" +msgstr "視覺化模å¼" + +#: src/skins/ui_manager.c:198 +msgid "Analyzer Mode" +msgstr "分æžå„€æ¨¡å¼" + +#: src/skins/ui_manager.c:199 +msgid "Scope Mode" +msgstr "示波器模å¼" + +#: src/skins/ui_manager.c:200 +msgid "Voiceprint Mode" +msgstr "è²ç´‹æ¨¡å¼" + +#: src/skins/ui_manager.c:201 +msgid "WindowShade VU Mode" +msgstr "百葉窗音é‡è¨ˆæ¨¡å¼" + +#: src/skins/ui_manager.c:202 +msgid "Analyzer Falloff" +msgstr "分æžå„€é™·è½" + +#: src/skins/ui_manager.c:203 +msgid "Peaks Falloff" +msgstr "峰值陷è½" + +#: src/skins/ui_manager.c:208 +msgid "Playlist" +msgstr "播放清單" + +#: src/skins/ui_manager.c:210 src/skins/ui_manager.c:211 +msgid "New Playlist" +msgstr "新增播放清單" + +#: src/skins/ui_manager.c:213 src/skins/ui_manager.c:214 +msgid "Select Next Playlist" +msgstr "é¸æ“‡ä¸‹ä¸€å€‹æ’­æ”¾æ¸…å–®" + +#: src/skins/ui_manager.c:216 src/skins/ui_manager.c:217 +msgid "Select Previous Playlist" +msgstr "é¸æ“‡ä¸Šä¸€å€‹æ’­æ”¾æ¸…å–®" + +#: src/skins/ui_manager.c:219 src/skins/ui_manager.c:220 +msgid "Delete Playlist" +msgstr "刪除播放清單" + +#: src/skins/ui_manager.c:222 +msgid "Import Playlist" +msgstr "匯入播放清單" + +#: src/skins/ui_manager.c:223 +msgid "Loads a playlist file into the selected playlist." +msgstr "" + +#: src/skins/ui_manager.c:226 +msgid "Export Playlist" +msgstr "匯出播放清單" + +#: src/skins/ui_manager.c:227 +msgid "Saves the selected playlist." +msgstr "儲存é¸æ“‡çš„播放清單。" + +#: src/skins/ui_manager.c:229 +msgid "Refresh List" +msgstr "é‡æ•´æ¸…å–®" + +#: src/skins/ui_manager.c:230 +msgid "Refreshes metadata associated with a playlist entry." +msgstr "" + +#: src/skins/ui_manager.c:233 +msgid "Playlist Manager" +msgstr "播放清單管ç†" + +#: src/skins/ui_manager.c:234 +msgid "Queue Manager" +msgstr "佇列管ç†" + +#: src/skins/ui_manager.c:237 +msgid "View" +msgstr "檢視" + +#: src/skins/ui_manager.c:238 +msgid "Interface" +msgstr "介é¢" + +#: src/skins/ui_manager.c:239 +msgid "Interface Preferences ..." +msgstr "介é¢å好設定 ..." + +#: src/skins/ui_manager.c:243 +msgid "Add Internet Address..." +msgstr "加入網路ä½å€..." + +#: src/skins/ui_manager.c:244 +msgid "Adds a remote track to the playlist." +msgstr "加入一個é ç«¯éŸ³è»Œåˆ°æ’­æ”¾æ¸…單。" + +#: src/skins/ui_manager.c:247 +msgid "Add Files..." +msgstr "加入檔案..." + +#: src/skins/ui_manager.c:248 +msgid "Adds files to the playlist." +msgstr "加入檔案到播放清單。" + +#: src/skins/ui_manager.c:253 +msgid "Search and Select" +msgstr "æœå°‹ä¸¦é¸æ“‡" + +#: src/skins/ui_manager.c:254 +msgid "" +"Searches the playlist and selects playlist entries based on specific " +"criteria." +msgstr "" + +#: src/skins/ui_manager.c:257 +msgid "Invert Selection" +msgstr "åå‘é¸æ“‡" + +#: src/skins/ui_manager.c:258 +msgid "Inverts the selected and unselected entries." +msgstr "" + +#: src/skins/ui_manager.c:261 +msgid "Select All" +msgstr "é¸æ“‡å…¨éƒ¨" + +#: src/skins/ui_manager.c:262 +msgid "Selects all of the playlist entries." +msgstr "" + +#: src/skins/ui_manager.c:265 +msgid "Select None" +msgstr "å–消é¸æ“‡" + +#: src/skins/ui_manager.c:266 +msgid "Deselects all of the playlist entries." +msgstr "" + +#: src/skins/ui_manager.c:271 +msgid "Remove All" +msgstr "全部移除" + +#: src/skins/ui_manager.c:272 +msgid "Removes all entries from the playlist." +msgstr "" + +#: src/skins/ui_manager.c:275 +msgid "Clear Queue" +msgstr "清除佇列" + +#: src/skins/ui_manager.c:276 +msgid "Clears the queue associated with this playlist." +msgstr "" + +#: src/skins/ui_manager.c:279 +msgid "Remove Unavailable Files" +msgstr "移除ä¸å­˜åœ¨çš„檔案" + +#: src/skins/ui_manager.c:280 +msgid "Removes unavailable files from the playlist." +msgstr "" + +#: src/skins/ui_manager.c:283 +msgid "Remove Duplicates" +msgstr "移除é‡è¤‡çš„é …ç›®" + +#: src/skins/ui_manager.c:285 src/skins/ui_manager.c:317 +#: src/skins/ui_manager.c:347 +msgid "By Title" +msgstr "標題" + +#: src/skins/ui_manager.c:286 +msgid "Removes duplicate entries from the playlist by title." +msgstr "" + +#: src/skins/ui_manager.c:289 src/skins/ui_manager.c:329 +#: src/skins/ui_manager.c:359 +msgid "By Filename" +msgstr "檔案å稱" + +#: src/skins/ui_manager.c:290 +msgid "Removes duplicate entries from the playlist by filename." +msgstr "" + +#: src/skins/ui_manager.c:293 src/skins/ui_manager.c:333 +#: src/skins/ui_manager.c:363 +msgid "By Path + Filename" +msgstr "路徑 + 檔案å稱" + +#: src/skins/ui_manager.c:294 +msgid "Removes duplicate entries from the playlist by their full path." +msgstr "" + +#: src/skins/ui_manager.c:297 +msgid "Remove Unselected" +msgstr "移除未é¸æ“‡çš„é …ç›®" + +#: src/skins/ui_manager.c:298 +msgid "Remove unselected entries from the playlist." +msgstr "" + +#: src/skins/ui_manager.c:301 +msgid "Remove Selected" +msgstr "移除é¸æ“‡çš„é …ç›®" + +#: src/skins/ui_manager.c:302 +msgid "Remove selected entries from the playlist." +msgstr "" + +#: src/skins/ui_manager.c:307 +msgid "Randomize List" +msgstr "清單隨機排åº" + +#: src/skins/ui_manager.c:308 +msgid "Randomizes the playlist." +msgstr "" + +#: src/skins/ui_manager.c:311 +msgid "Reverse List" +msgstr "清單åå‘排åº" + +#: src/skins/ui_manager.c:312 +msgid "Reverses the playlist." +msgstr "" + +#: src/skins/ui_manager.c:315 +msgid "Sort List" +msgstr "排åºæ¸…å–®" + +#: src/skins/ui_manager.c:318 src/skins/ui_manager.c:348 +msgid "Sorts the list by title." +msgstr "" + +#: src/skins/ui_manager.c:321 src/skins/ui_manager.c:351 +msgid "By Album" +msgstr "專輯" + +#: src/skins/ui_manager.c:322 src/skins/ui_manager.c:352 +msgid "Sorts the list by album." +msgstr "" + +#: src/skins/ui_manager.c:325 src/skins/ui_manager.c:355 +msgid "By Artist" +msgstr "è—人" + +#: src/skins/ui_manager.c:326 src/skins/ui_manager.c:356 +msgid "Sorts the list by artist." +msgstr "" + +#: src/skins/ui_manager.c:330 src/skins/ui_manager.c:360 +msgid "Sorts the list by filename." +msgstr "" + +#: src/skins/ui_manager.c:334 src/skins/ui_manager.c:364 +msgid "Sorts the list by full pathname." +msgstr "" + +#: src/skins/ui_manager.c:337 src/skins/ui_manager.c:367 +msgid "By Date" +msgstr "日期" + +#: src/skins/ui_manager.c:338 src/skins/ui_manager.c:368 +msgid "Sorts the list by modification time." +msgstr "" + +#: src/skins/ui_manager.c:341 src/skins/ui_manager.c:371 +msgid "By Track Number" +msgstr "音軌編號" + +#: src/skins/ui_manager.c:342 src/skins/ui_manager.c:372 +msgid "Sorts the list by track number." +msgstr "" + +#: src/skins/ui_manager.c:345 +msgid "Sort Selected" +msgstr "排åºé¸æ“‡çš„é …ç›®" + +#: src/skins/ui_manager.c:381 +msgid "File" +msgstr "檔案" + +#: src/skins/ui_manager.c:384 +msgid "Plugin Services" +msgstr "外掛æœå‹™" + +#: src/skins/ui_manager.c:386 src/skins/ui_manager.c:389 +msgid "View Track Details" +msgstr "檢視音軌詳細資料" + +#: src/skins/ui_manager.c:387 src/skins/ui_manager.c:390 +msgid "View track details" +msgstr "檢視音軌詳細資料" + +#: src/skins/ui_manager.c:392 src/skins/ui_manager.c:393 +msgid "About Audacious" +msgstr "關於 Audacious" + +#: src/skins/ui_manager.c:395 +msgid "Play File" +msgstr "播放檔案" + +#: src/skins/ui_manager.c:396 +msgid "Load and play a file" +msgstr "載入並播放檔案" + +#: src/skins/ui_manager.c:398 +msgid "Play Location" +msgstr "播放ä½å€" + +#: src/skins/ui_manager.c:399 +msgid "Play media from the selected location" +msgstr "從é¸å®šçš„ä½å€æ’­æ”¾åª’é«”" + +#: src/skins/ui_manager.c:401 +msgid "Plugin services" +msgstr "外掛æœå‹™" + +#: src/skins/ui_manager.c:403 +msgid "Preferences" +msgstr "å好設定" + +#: src/skins/ui_manager.c:404 +msgid "Open preferences window" +msgstr "é–‹å•Ÿå好設定視窗" + +#: src/skins/ui_manager.c:407 +msgid "Quit Audacious" +msgstr "離開 Audacious" + +#: src/skins/ui_manager.c:409 src/skins/ui_manager.c:410 +msgid "Set A-B" +msgstr "設定 A-B" + +#: src/skins/ui_manager.c:412 src/skins/ui_manager.c:413 +msgid "Clear A-B" +msgstr "清除 A-B" + +#: src/skins/ui_manager.c:418 src/skins/ui_manager.c:419 +msgid "Jump to Time" +msgstr "跳至時間" + +#: src/skins/ui_manager.c:421 +msgid "Queue Toggle" +msgstr "切æ›ä½‡åˆ—" + +#: src/skins/ui_manager.c:422 +msgid "Enables/disables the entry in the playlist's queue." +msgstr "" + +#: src/skins/ui_manager.c:425 +msgid "Copy" +msgstr "複製" + +#: src/skins/ui_manager.c:427 +msgid "Cut" +msgstr "剪下" + +#: src/skins/ui_manager.c:429 +msgid "Paste" +msgstr "貼上" + +#: src/skins/ui_manager.c:436 +msgid "Load" +msgstr "載入" + +#: src/skins/ui_manager.c:437 +msgid "Import" +msgstr "匯入" + +#: src/skins/ui_manager.c:438 +msgid "Save" +msgstr "儲存" + +#: src/skins/ui_manager.c:439 +msgid "Delete" +msgstr "刪除" + +#: src/skins/ui_manager.c:441 src/skins/ui_manager.c:462 +#: src/skins/ui_manager.c:477 +msgid "Preset" +msgstr "樣å¼" + +#: src/skins/ui_manager.c:444 src/skins/ui_manager.c:465 +#: src/skins/ui_manager.c:480 +msgid "Auto-load preset" +msgstr "自動載入樣å¼" + +#: src/skins/ui_manager.c:445 +msgid "Load auto-load preset" +msgstr "讀å–自動載入樣å¼" + +#: src/skins/ui_manager.c:448 +msgid "Load default preset into equalizer" +msgstr "載入é è¨­ç­‰åŒ–器樣å¼" + +#: src/skins/ui_manager.c:450 +msgid "Zero" +msgstr "歸零" + +#: src/skins/ui_manager.c:451 +msgid "Set equalizer preset levels to zero" +msgstr "將等化器é‡ç½®" + +#: src/skins/ui_manager.c:453 +msgid "From file" +msgstr "從檔案" + +#: src/skins/ui_manager.c:454 +msgid "Load preset from file" +msgstr "從檔案載入樣å¼" + +#: src/skins/ui_manager.c:456 +msgid "From WinAMP EQF file" +msgstr "從 WinAMP EQF 檔" + +#: src/skins/ui_manager.c:457 +msgid "Load preset from WinAMP EQF file" +msgstr "從 WinAMP EQF 檔載入樣å¼" + +#: src/skins/ui_manager.c:459 +msgid "WinAMP Presets" +msgstr "WinAMP 樣å¼" + +#: src/skins/ui_manager.c:460 +msgid "Import WinAMP presets" +msgstr "匯入 WinAMP 樣å¼" + +#: src/skins/ui_manager.c:466 +msgid "Save auto-load preset" +msgstr "儲存自動載入樣å¼" + +#: src/skins/ui_manager.c:469 +msgid "Save default preset" +msgstr "儲存é è¨­æ¨£å¼" + +#: src/skins/ui_manager.c:471 +msgid "To file" +msgstr "至檔案" + +#: src/skins/ui_manager.c:472 +msgid "Save preset to file" +msgstr "儲存樣å¼åˆ°æª”案" + +#: src/skins/ui_manager.c:474 +msgid "To WinAMP EQF file" +msgstr "至 WinAMP EQF 檔" + +#: src/skins/ui_manager.c:475 +msgid "Save preset to WinAMP EQF file" +msgstr "儲存樣å¼åˆ° WinAMP EQF 檔" + +#: src/skins/ui_manager.c:481 +msgid "Delete auto-load preset" +msgstr "刪除自動載入樣å¼" + +#: src/skins/ui_playlist.c:248 +msgid "Search entries in active playlist" +msgstr "" + +#: src/skins/ui_playlist.c:256 +msgid "" +"Select entries in playlist by filling one or more fields. Fields use regular " +"expressions syntax, case-insensitive. If you don't know how regular " +"expressions work, simply insert a literal portion of what you're searching " +"for." +msgstr "" + +#: src/skins/ui_playlist.c:264 +msgid "Title: " +msgstr "標題: " + +#: src/skins/ui_playlist.c:271 +msgid "Album: " +msgstr "專輯: " + +#: src/skins/ui_playlist.c:278 +msgid "Artist: " +msgstr "è—人: " + +#: src/skins/ui_playlist.c:285 +msgid "Filename: " +msgstr "檔å: " + +#: src/skins/ui_playlist.c:293 +msgid "Clear previous selection before searching" +msgstr "" + +#: src/skins/ui_playlist.c:296 +msgid "Automatically toggle queue for matching entries" +msgstr "" + +#: src/skins/ui_playlist.c:299 +msgid "Create a new playlist with matching entries" +msgstr "" + +#: src/skins/ui_playlist.c:765 +msgid "Audacious Playlist Editor" +msgstr "" + +#: src/skins/ui_playlist.c:812 +#, c-format +msgid "%s (%d of %d)" +msgstr "" + +#: src/skins/ui_skinselector.c:162 +msgid "Archived Winamp 2.x skin" +msgstr "壓縮的 Winamp 2.x é¢æ¿" + +#: src/skins/ui_skinselector.c:167 +msgid "Unarchived Winamp 2.x skin" +msgstr "未壓縮的 Winamp 2.x skin" + +#: src/skins/util.c:774 +#, c-format +msgid "Could not create directory (%s): %s\n" +msgstr "無法建立資料夾 (%s): %s\n" + +#: src/sndfile/plugin.c:456 +msgid "About sndfile plugin" +msgstr "" + +#: src/sndstretch/sndstretch_xmms.c:155 +msgid "About SndStretch" +msgstr "關於 SndStretch" + +#: src/sndstretch/sndstretch_xmms.c:308 +msgid "Volume corr." +msgstr "修正音é‡" + +#: src/sndstretch/sndstretch_xmms.c:309 +msgid "Short Overlap" +msgstr "短暫é‡ç–Š" + +#: src/sndstretch/sndstretch_xmms.c:355 +msgid "Speed" +msgstr "速度" + +#: src/sndstretch/sndstretch_xmms.c:356 +msgid "Pitch" +msgstr "音高" + +#: src/sndstretch/sndstretch_xmms.c:357 +msgid "Scale" +msgstr "音階" + +#: src/sndstretch/sndstretch_xmms.c:377 +msgid "SndStretch - Configuration" +msgstr "SndStretch - 設定" + +#: src/song_change/song_change.c:437 +msgid "Command to run when Audacious starts a new song." +msgstr "當 Audacious 開始播放新的歌曲時執行的指令。" + +#: src/song_change/song_change.c:439 src/song_change/song_change.c:445 +#: src/song_change/song_change.c:451 src/song_change/song_change.c:457 +msgid "Command:" +msgstr "命令:" + +#: src/song_change/song_change.c:443 +msgid "Command to run toward the end of a song." +msgstr "æ¯ç•¶ä¸€é¦–歌曲播放完時執行命令" + +#: src/song_change/song_change.c:449 +msgid "Command to run when Audacious reaches the end of the playlist." +msgstr "æ¯ç•¶ Audacious 播放é”到清單尾端時執行命令" + +#: src/song_change/song_change.c:455 +msgid "" +"Command to run when title changes for a song (i.e. network streams titles)." +msgstr "當一首歌的標題改變時執行命令。(網路串æµçš„標題)" + +#: src/song_change/song_change.c:461 +msgid "" +"You can use the following format strings which\n" +"will be substituted before calling the command\n" +"(not all are useful for the end-of-playlist command).\n" +"\n" +"%F: Frequency (in hertz)\n" +"%c: Number of channels\n" +"%f: filename (full path)\n" +"%l: length (in milliseconds)\n" +"%n or %s: Song name\n" +"%r: Rate (in bits per second)\n" +"%t: Playlist position (%02d)\n" +"%p: Currently playing (1 or 0)\n" +"%a: Artist\n" +"%b: Album\n" +"%T: Track title" +msgstr "" +"ä½ å¯ä»¥åœ¨å‘½ä»¤ä¸­ä½¿ç”¨ä¸‹åˆ—çš„æ ¼å¼å­—串。\n" +"它們會在執行命令å‰è¢«å¯¦éš›å€¼å–代。\n" +"(ä¸æ˜¯å…¨éƒ¨éƒ½èƒ½åœ¨æ’­æ”¾æ¸…å–®çµæŸå‘½ä»¤ä¸­ä½¿ç”¨)\n" +"\n" +"%F: 頻率 (赫茲)\n" +"%c: è²é“數目\n" +"%f: 檔å (完整路徑)\n" +"%l: 長度 (毫秒)\n" +"%n 或 %s: 歌曲å稱\n" +"%r: ä½å…ƒçŽ‡ (bps)\n" +"%t: 播放清單ä½ç½® (%02d)\n" +"%p: 播放中 (1 或 0)\n" +"%a: è—人\n" +"%b: 專輯\n" +"%T: 音軌標題" + +#: src/song_change/song_change.c:488 +msgid "" +"Parameters passed to the shell should be encapsulated in " +"quotes. Doing otherwise is a security risk." +msgstr "" +"傳給 shell çš„åƒæ•¸æ‡‰è©²ç”¨é›™å¼•è™ŸåŒ…起來,å¦å‰‡æœƒæœ‰å®‰å…¨é¢¨éšªã€‚" + +#: src/song_change/song_change.c:499 +msgid "Commands" +msgstr "命令" + +#: src/song_change/song_change.c:529 +msgid "Song Change" +msgstr "" + +#: src/statusicon/statusicon.c:379 +msgid "About Status Icon Plugin" +msgstr "關於狀態圖示外掛" + +#: src/statusicon/statusicon.c:380 +msgid "" +"Status Icon Plugin\n" +"\n" +"Copyright 2005-2007 Giacomo Lozito \n" +"Copyright 2010 MichaÅ‚ Lipski \n" +"\n" +"This plugin provides a status icon, placed in\n" +"the system tray area of the window manager.\n" +msgstr "" + +#: src/statusicon/statusicon.c:451 +msgid "Status Icon Plugin - Preferences" +msgstr "狀態圖示外掛 - å好設定" + +#: src/statusicon/statusicon.c:461 +msgid "Right-Click Menu" +msgstr "å³éµé¸å–®" + +#: src/statusicon/statusicon.c:466 +msgid "Small playback menu #1" +msgstr "å°åž‹æ’­æ”¾é¸å–® #1" + +#: src/statusicon/statusicon.c:469 +msgid "Small playback menu #2" +msgstr "å°åž‹æ’­æ”¾é¸å–® #2" + +#: src/statusicon/statusicon.c:485 +msgid "Mouse Scroll Action" +msgstr "滑鼠滾輪動作" + +#: src/statusicon/statusicon.c:489 +msgid "Change volume" +msgstr "調整音é‡" + +#: src/statusicon/statusicon.c:491 +msgid "Change playing song" +msgstr "切æ›æ’­æ”¾æ­Œæ›²" + +#: src/statusicon/statusicon.c:504 +msgid "Other settings" +msgstr "其他設定" + +#: src/statusicon/statusicon.c:509 +msgid "Disable the popup window" +msgstr "關閉彈出å¼è¦–窗" + +#: src/statusicon/statusicon.c:516 +msgid "Close to the notification area (system tray)" +msgstr "關閉視窗時縮到通知å€åŸŸ (系統列)" + +#: src/statusicon/statusicon.c:524 +msgid "Advance in playlist when scrolling upward" +msgstr "以與滑鼠滾輪的åæ–¹å‘切æ›æ­Œæ›²" + +#: src/stereo_plugin/stereo.c:45 +msgid "" +"Extra Stereo Plugin\n" +"\n" +"By Johan Levin 1999." +msgstr "" + +#: src/stereo_plugin/stereo.c:64 +msgid "About Extra Stereo Plugin" +msgstr "" + +#: src/stereo_plugin/stereo.c:95 +msgid "Configure Extra Stereo" +msgstr "" + +#: src/tonegen/tonegen.c:49 +msgid "About Tone Generator" +msgstr "" + +#: src/tonegen/tonegen.c:51 +msgid "" +"Sinus tone generator by Haavard Kvaalen \n" +"Modified by Daniel J. Peng \n" +"\n" +"To use it, add a URL: tone://frequency1;frequency2;frequency3;...\n" +"e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone" +msgstr "" + +#: src/tonegen/tonegen.c:101 +#, c-format +msgid "%s %.1f Hz" +msgstr "" + +#: src/tonegen/tonegen.c:101 +msgid "Tone Generator: " +msgstr "" + +#: src/unix-io/gtk.c:34 +msgid "About File I/O Plugin" +msgstr "" + +#: src/vorbis/vorbis.c:573 +msgid "About Ogg Vorbis Audio Plugin" +msgstr "關於 Ogg Vorbis 音訊外掛" + +#: src/vorbis/vorbis.c:578 +msgid "" +"Ogg Vorbis Plugin by the Xiph.org Foundation\n" +"\n" +"Original code by\n" +"Tony Arcieri \n" +"Contributions from\n" +"Chris Montgomery \n" +"Peter Alm \n" +"Michael Smith \n" +"Jack Moffitt \n" +"Jorn Baayen \n" +"Haavard Kvaalen \n" +"Gian-Carlo Pascutto \n" +"Eugene Zagidullin \n" +"\n" +"Visit the Xiph.org Foundation at http://www.xiph.org/\n" +msgstr "" + +#: src/vtx/about.c:14 +msgid "About Vortex Player" +msgstr "" + +#: src/vtx/about.c:15 +msgid "" +"Vortex file format player by Sashnov Alexander \n" +"Founded on original source in_vtx.dll by Roman Sherbakov \n" +"\n" +"Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n" +"and other AY/YM music sites.\n" +"\n" +"Audacious implementation by Pavel Vymetalek " +msgstr "" + +#: src/wavpack/wavpack.c:353 +#, c-format +msgid "Wavpack Decoder Plugin %s" +msgstr "" + +#: src/wavpack/wavpack.c:354 +msgid "" +"Copyright (c) 2006 William Pitcock \n" +"\n" +"Some of the plugin code was by Miles Egan\n" +"Visit the Wavpack site at http://www.wavpack.com/\n" +msgstr "" + +#~ msgid "Close" +#~ msgstr "關閉" + +#~ msgid "Sorry" +#~ msgstr "抱歉" + +#~ msgid "Warning" +#~ msgstr "警告" + +#~ msgid "Jump to Playlist Start" +#~ msgstr "跳至播放清單開頭" + +#~ msgid "Stream name" +#~ msgstr "串æµå稱" + +#~ msgid "About Stream Browser" +#~ msgstr "關於串æµç€è¦½å™¨" diff -Nru audacious-plugins-2.4.4/src/aac/aac_utils.c audacious-plugins-3.2/src/aac/aac_utils.c --- audacious-plugins-2.4.4/src/aac/aac_utils.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/aac/aac_utils.c 2012-01-20 19:48:30.000000000 +0000 @@ -15,85 +15,103 @@ // Read ADTS header, the file descriptor must be at // the begining of the aac frame not at the id3tag -int getAacInfo(FILE *fd) +int getAacInfo (FILE * fd) { - unsigned char header[ADTS_HEADER_SIZE]; - unsigned int id; - unsigned long originPosition; - - originPosition = ftell(fd); - if(fread(header, 1, ADTS_HEADER_SIZE, fd) != ADTS_HEADER_SIZE){ - fseek(fd, originPosition, SEEK_SET); - return(-1); - } - if(!((header[0]==0xFF)&&((header[1]& 0xF6)==0xF0))){ - printf("Bad header\n"); - return(-1); - } - id = header[1]&0x08; - if(id==0){//MPEG-4 AAC - fseek(fd, originPosition, SEEK_SET); - return(MPEG4_TYPE); - }else{ - fseek(fd, originPosition, SEEK_SET); - return(MPEG2_TYPE); - } - fseek(fd, originPosition, SEEK_SET); - return(-1); + unsigned char header[ADTS_HEADER_SIZE]; + unsigned int id; + unsigned long originPosition; + + originPosition = ftell (fd); + if (fread (header, 1, ADTS_HEADER_SIZE, fd) != ADTS_HEADER_SIZE) + { + fseek (fd, originPosition, SEEK_SET); + return (-1); + } + if (!((header[0] == 0xFF) && ((header[1] & 0xF6) == 0xF0))) + { + printf ("Bad header\n"); + return (-1); + } + id = header[1] & 0x08; + if (id == 0) + { //MPEG-4 AAC + fseek (fd, originPosition, SEEK_SET); + return (MPEG4_TYPE); + } + else + { + fseek (fd, originPosition, SEEK_SET); + return (MPEG2_TYPE); + } + fseek (fd, originPosition, SEEK_SET); + return (-1); } // as AAC is VBR we need to check all ADTS header // to enable seeking... // there is no other solution -void checkADTSForSeeking(FILE *fd, - unsigned long **seekTable, - unsigned long *seekTableLength) +void checkADTSForSeeking (FILE * fd, + unsigned long **seekTable, unsigned long *seekTableLength) { - unsigned long originPosition; - unsigned long position; - unsigned int frameCount, frameLength, frameInsec; - unsigned int id=0, seconds=0; - char header[ADTS_HEADER_SIZE]; - - originPosition = ftell(fd); - - for(frameCount=0,frameInsec=0;; frameCount++,frameInsec++){ - position = ftell(fd); - if(fread(header, 1, ADTS_HEADER_SIZE, fd)!=ADTS_HEADER_SIZE){ - break; - } - if(!g_strncasecmp(header, "ID3", 3)){ - break; - } - if(!frameCount){ - id=header[1]&0x08; - if(((*seekTable) = malloc(SEEK_TABLE_CHUNK * sizeof(unsigned long)))==0){ - printf("malloc error\n"); - return; - } - (*seekTableLength) = SEEK_TABLE_CHUNK; - } + unsigned long originPosition; + unsigned long position; + unsigned int frameCount, frameLength, frameInsec; + unsigned int /* id = 0, */ seconds = 0; + char header[ADTS_HEADER_SIZE]; - //if(id==0){//MPEG-4 - //frameLength = ((unsigned int)header[4]<<5)|((unsigned int)header[5]>>3); - //}else{//MPEG-2 - frameLength = (((unsigned int)header[3]&0x3)<<11)|((unsigned int)header[4]<<3)|(header[5]>>5); - //} - if(frameInsec==43){//??? - frameInsec=0; - } - if(frameInsec==0){ - if(seconds == (*seekTableLength)){ - (*seekTable) = realloc((*seekTable), (seconds+SEEK_TABLE_CHUNK)*sizeof(unsigned long)); - (*seekTableLength) = seconds+SEEK_TABLE_CHUNK; - } - (*seekTable)[seconds] = position; - seconds++; + originPosition = ftell (fd); + + for (frameCount = 0, frameInsec = 0;; frameCount++, frameInsec++) + { + position = ftell (fd); + if (fread (header, 1, ADTS_HEADER_SIZE, fd) != ADTS_HEADER_SIZE) + { + break; + } + if (!g_strncasecmp (header, "ID3", 3)) + { + break; + } + if (!frameCount) + { + /* id = header[1] & 0x08; */ + if (((*seekTable) = + malloc (SEEK_TABLE_CHUNK * sizeof (unsigned long))) == 0) + { + printf ("malloc error\n"); + return; + } + (*seekTableLength) = SEEK_TABLE_CHUNK; + } + + //if(id==0){//MPEG-4 + //frameLength = ((unsigned int)header[4]<<5)|((unsigned int)header[5]>>3); + //}else{//MPEG-2 + frameLength = + (((unsigned int) header[3] & 0x3) << 11) | ((unsigned int) header[4] << + 3) | (header[5] >> 5); + //} + if (frameInsec == 43) + { //??? + frameInsec = 0; + } + if (frameInsec == 0) + { + if (seconds == (*seekTableLength)) + { + (*seekTable) = + realloc ((*seekTable), + (seconds + SEEK_TABLE_CHUNK) * sizeof (unsigned long)); + (*seekTableLength) = seconds + SEEK_TABLE_CHUNK; + } + (*seekTable)[seconds] = position; + seconds++; + } + if (fseek (fd, frameLength - ADTS_HEADER_SIZE, SEEK_CUR) == -1) + { + break; + } } - if(fseek(fd, frameLength-ADTS_HEADER_SIZE, SEEK_CUR)==-1){ - break; - } - } - (*seekTableLength) = seconds; - fseek(fd, originPosition, SEEK_SET); + (*seekTableLength) = seconds; + fseek (fd, originPosition, SEEK_SET); } diff -Nru audacious-plugins-2.4.4/src/aac/itunes-cover.c audacious-plugins-3.2/src/aac/itunes-cover.c --- audacious-plugins-2.4.4/src/aac/itunes-cover.c 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/aac/itunes-cover.c 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,88 @@ +/* + * itunes-cover.c + * John Lindgren, 2010 + * + * The author hereby releases this code into the public domain. + * + * Reference: + * http://atomicparsley.sourceforge.net/mpeg-4files.html + */ + +#include +#include +#include +#include + +static const gchar * const hier[] = {"moov", "udta", "meta", "ilst", "covr", + "data"}; +static const gint skip[] = {0, 0, 4, 0, 0, 8}; + +gboolean read_itunes_cover (const gchar * filename, VFSFile * file, void * * + data, gint64 * size) +{ + guchar b[8]; + gint bsize; + + /* Check for ftyp frame. */ + + if (vfs_fread (b, 1, 8, file) != 8) + return FALSE; + if ((bsize = (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3]) < 8) + return FALSE; + if (strncmp ((gchar *) b + 4, "ftyp", 4)) + return FALSE; + if (vfs_fseek (file, bsize - 8, SEEK_CUR)) + return FALSE; + + AUDDBG ("Found ftyp frame, size = %d.\n", bsize); + + gint64 stop = G_MAXINT64; + gint64 at = bsize; + + /* Descend into frame hierarchy. */ + + for (gint h = 0; h < G_N_ELEMENTS (hier); h ++) + { + while (1) + { + if (vfs_fread (b, 1, 8, file) != 8) + return FALSE; + if ((bsize = (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3]) < 8 + || at + bsize > stop) + return FALSE; + if (! strncmp ((gchar *) b + 4, hier[h], 4)) + break; + if (vfs_fseek (file, bsize - 8, SEEK_CUR)) + return FALSE; + + at += bsize; + } + + AUDDBG ("Found %s frame at %d, size = %d.\n", hier[h], (gint) at, bsize); + + stop = at + bsize; + at += 8; + + /* Skip leading bytes in some frames. */ + + if (skip[h]) + { + if (vfs_fseek (file, skip[h], SEEK_CUR)) + return FALSE; + at += skip[h]; + } + } + + /* We're there. */ + + * size = stop - at; + * data = g_malloc (stop - at); + + if (vfs_fread (* data, 1, stop - at, file) != stop - at) + { + g_free (* data); + return FALSE; + } + + return TRUE; +} diff -Nru audacious-plugins-2.4.4/src/aac/libmp4.c audacious-plugins-3.2/src/aac/libmp4.c --- audacious-plugins-2.4.4/src/aac/libmp4.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/aac/libmp4.c 2012-01-20 19:48:30.000000000 +0000 @@ -24,111 +24,88 @@ */ #define BUFFER_SIZE (FAAD_MIN_STREAMSIZE * 16) -static const guchar M4A_MAGIC[11] = {0x00, 0x00, 0x00, 0x20, 0x66, 0x74, 0x79, - 0x70, 0x4D, 0x34, 0x41}; - -static void mp4_init(void); -static void mp4_about(void); -static gboolean mp4_play(InputPlayback * playback, const gchar * filename, - VFSFile * file, gint start_time, gint stop_time, gboolean pause); -static void mp4_cleanup(void); -static gint mp4_is_our_fd(const char *, VFSFile *); +static void mp4_about (void); +static void mp4_cleanup (void); +static gint mp4_is_our_fd (const char *, VFSFile *); static const gchar *fmts[] = { "m4a", "mp4", "aac", NULL }; -static void * mp4_decode(void *); - -static GMutex * seek_mutex; -static GCond * seek_cond; -static gboolean pause_flag; +static GMutex *seek_mutex; +static GCond *seek_cond; static gint seek_value; +static gboolean stop_flag; -typedef struct _mp4cfg +typedef struct _mp4cfg { -#define FILE_UNKNOWN 0 +#define FILE_OTHER 0 #define FILE_MP4 1 #define FILE_AAC 2 - gshort file_type; + gshort file_type; } Mp4Config; static Mp4Config mp4cfg; -void getMP4info(char*); -int getAACTrack(mp4ff_t *); +void getMP4info (char *); +int getAACTrack (mp4ff_t *); -static guint32 mp4_read_callback(void *data, void *buffer, guint32 len) +static guint32 mp4_read_callback (void *data, void *buffer, guint32 len) { if (data == NULL || buffer == NULL) return -1; - return vfs_fread(buffer, 1, len, (VFSFile *) data); + return vfs_fread (buffer, 1, len, (VFSFile *) data); } -static guint32 mp4_seek_callback (void * data, guint64 pos) +static guint32 mp4_seek_callback (void *data, guint64 pos) { g_return_val_if_fail (data != NULL, -1); g_return_val_if_fail (pos <= G_MAXINT64, -1); - return vfs_fseek((VFSFile *) data, pos, SEEK_SET); + return vfs_fseek ((VFSFile *) data, pos, SEEK_SET); } -static void mp4_init(void) +static gboolean mp4_init (void) { - mp4cfg.file_type = FILE_UNKNOWN; + mp4cfg.file_type = FILE_OTHER; seek_mutex = g_mutex_new (); seek_cond = g_cond_new (); + return TRUE; } -static gboolean mp4_play(InputPlayback * playback, const gchar * filename, -VFSFile * file, gint start_time, gint stop_time, gboolean pause) -{ - seek_value = (start_time > 0) ? start_time : -1; - pause_flag = pause; - playback->playing = TRUE; - - playback->set_pb_ready(playback); - mp4_decode(playback); - return ! playback->error; -} - -static void mp4_stop (InputPlayback * playback) +static void mp4_stop (InputPlayback * p) { g_mutex_lock (seek_mutex); - if (playback->playing) + if (! stop_flag) { - playback->playing = FALSE; + stop_flag = TRUE; + p->output->abort_write (); g_cond_signal (seek_cond); - g_mutex_unlock (seek_mutex); - g_thread_join (playback->thread); - playback->thread = NULL; + g_cond_wait (seek_cond, seek_mutex); } - else - g_mutex_unlock (seek_mutex); + + g_mutex_unlock (seek_mutex); } -static void mp4_pause (InputPlayback * playback, gshort p) +static void mp4_pause (InputPlayback * p, gboolean pause) { g_mutex_lock (seek_mutex); - if (playback->playing) - { - pause_flag = p; - g_cond_signal (seek_cond); - g_cond_wait (seek_cond, seek_mutex); - } + if (! stop_flag) + p->output->pause (pause); g_mutex_unlock (seek_mutex); } -static void mp4_seek (InputPlayback * playback, gulong time) +static void mp4_seek (InputPlayback * p, gint time) { g_mutex_lock (seek_mutex); - if (playback->playing) + if (! stop_flag) { seek_value = time; + p->output->abort_write(); g_cond_signal (seek_cond); g_cond_wait (seek_cond, seek_mutex); } @@ -144,26 +121,30 @@ /// \param num (out) number of audio frames in this ADTS frame /// \return size of the ADTS frame in bytes /// aac_parse_frames needs a buffer at least 8 bytes long -int aac_parse_frame(guchar *buf, int *srate, int *num) +int aac_parse_frame (guchar * buf, int *srate, int *num) { - int i = 0, sr, fl = 0; - static int srates[] = {96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 0, 0, 0}; + int i = 0, sr, fl = 0; + static int srates[] = + { 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, + 11025, 8000, 0, 0, 0 }; - if((buf[i] != 0xFF) || ((buf[i+1] & 0xF6) != 0xF0)) - return 0; + if ((buf[i] != 0xFF) || ((buf[i + 1] & 0xF6) != 0xF0)) + return 0; /* We currently have no use for the id below. id = (buf[i+1] >> 3) & 0x01; //id=1 mpeg2, 0: mpeg4 */ - sr = (buf[i+2] >> 2) & 0x0F; - if(sr > 11) - return 0; - *srate = srates[sr]; + sr = (buf[i + 2] >> 2) & 0x0F; + if (sr > 11) + return 0; + *srate = srates[sr]; + + fl = + ((buf[i + 3] & 0x03) << 11) | (buf[i + 4] << 3) | ((buf[i + + 5] >> 5) & 0x07); + *num = (buf[i + 6] & 0x02) + 1; - fl = ((buf[i+3] & 0x03) << 11) | (buf[i+4] << 3) | ((buf[i+5] >> 5) & 0x07); - *num = (buf[i+6] & 0x02) + 1; - - return fl; + return fl; } #define PROBE_DEBUG(...) @@ -175,14 +156,14 @@ { gint offset, a, b; - for (offset = 0; offset <= length - 8; offset ++) + for (offset = 0; offset <= length - 8; offset++) { if (data[offset] != 255) continue; - * size = aac_parse_frame (data + offset, & a, & b); + *size = aac_parse_frame (data + offset, &a, &b); - if (* size < 8) + if (*size < 8) continue; return offset; @@ -196,7 +177,7 @@ guchar data[8192]; gint offset, found, inner, size; - size = 0; /* avoid bogus uninitialized variable warning */ + size = 0; /* avoid bogus uninitialized variable warning */ if (vfs_fread (data, 1, sizeof data, stream) != sizeof data) { @@ -206,11 +187,11 @@ offset = 0; - for (found = 0; found < 3; found ++) + for (found = 0; found < 3; found++) { - inner = find_aac_header (data + offset, sizeof data - offset, & size); + inner = find_aac_header (data + offset, sizeof data - offset, &size); - if (! (inner == 0 || (found == 0 && inner > 0))) + if (!(inner == 0 || (found == 0 && inner > 0))) { PROBE_DEBUG ("Only %d ADTS headers.\n", found); return FALSE; @@ -223,37 +204,27 @@ return TRUE; } -static int aac_probe(unsigned char *buffer, int len) +/* Quick search for an ADTS or ADIF header in the first bytes of . + * Returns the byte offset of the header or if none is found. */ + +static gint aac_probe (guchar * buf, gint len) { - int i = 0, pos = 0; -#ifdef DEBUG - g_print("\nAAC_PROBE: %d bytes\n", len); -#endif - while(i <= len-4) { - if( - ((buffer[i] == 0xff) && ((buffer[i+1] & 0xf6) == 0xf0)) || - (buffer[i] == 'A' && buffer[i+1] == 'D' && buffer[i+2] == 'I' && buffer[i+3] == 'F') - ) { - pos = i; - break; - } -#ifdef DEBUG - g_print("AUDIO PAYLOAD: %x %x %x %x\n", - buffer[i], buffer[i+1], buffer[i+2], buffer[i+3]); -#endif - i++; - } -#ifdef DEBUG - g_print("\nAAC_PROBE: ret %d\n", pos); -#endif - return pos; + for (gint i = 0; i <= len - 4; i ++) + { + if ((buf[i] == 0xff && (buf[i + 1] & 0xf6) == 0xf0) || ! strncmp + ((gchar *) buf + i, "ADIF", 4)) + return i; + } + + return len; } static gboolean is_mp4_aac_file (VFSFile * handle) { - mp4ff_callback_t mp4_data = {.read = mp4_read_callback, .seek = - mp4_seek_callback, .user_data = handle}; - mp4ff_t * mp4_handle = mp4ff_open_read (& mp4_data); + mp4ff_callback_t mp4_data = {.read = mp4_read_callback,.seek = + mp4_seek_callback,.user_data = handle + }; + mp4ff_t *mp4_handle = mp4ff_open_read (&mp4_data); gboolean success; if (mp4_handle == NULL) @@ -267,42 +238,33 @@ static gboolean mp4_is_our_fd (const gchar * filename, VFSFile * file) { - gchar magic[sizeof M4A_MAGIC]; - - if (vfs_fread (magic, 1, sizeof magic, file) != sizeof magic) - return FALSE; - if (! memcmp (magic, M4A_MAGIC, sizeof magic)) + if (is_mp4_aac_file (file)) return TRUE; if (vfs_fseek (file, 0, SEEK_SET)) return FALSE; - if (parse_aac_stream (file)) - return TRUE; - - if (vfs_fseek (file, 0, SEEK_SET)) - return FALSE; - return is_mp4_aac_file (file); + return parse_aac_stream (file); } -static void mp4_about(void) +static void mp4_about (void) { static GtkWidget *aboutbox = NULL; if (aboutbox == NULL) { - gchar *about_text = g_strdup_printf( - _("Using libfaad2-%s for decoding.\n" - "FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com\n" - "Copyright (c) 2005-2006 Audacious team"), FAAD2_VERSION); + gchar *about_text = + g_strdup_printf (_("Using libfaad2-%s for decoding.\n" + "FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com\n" + "Copyright (c) 2005-2006 Audacious team"), FAAD2_VERSION); - audgui_simple_message (& aboutbox, GTK_MESSAGE_INFO, + audgui_simple_message (&aboutbox, GTK_MESSAGE_INFO, _("About MP4 AAC decoder plugin"), about_text); - g_free(about_text); + g_free (about_text); } } -static void mp4_cleanup(void) +static void mp4_cleanup (void) { g_mutex_free (seek_mutex); g_cond_free (seek_cond); @@ -322,18 +284,18 @@ gint offset = 0, filled = 0; gint found, bytes_used = 0, time_used = 0; - decoder = NULL; /* avoid bogus uninitialized variable warning */ + decoder = NULL; /* avoid bogus uninitialized variable warning */ - * length = -1; - * bitrate = -1; - * samplerate = -1; - * channels = -1; + *length = -1; + *bitrate = -1; + *samplerate = -1; + *channels = -1; /* look for a representative bitrate in the middle of the file */ if (size > 0 && vfs_fseek (handle, size / 2, SEEK_SET)) goto DONE; - for (found = 0; found < 32; found ++) + for (found = 0; found < 32; found++) { if (filled < BUFFER_SIZE / 2) { @@ -350,13 +312,13 @@ filled = BUFFER_SIZE; } - if (! initted) + if (!initted) { gint inner, a; gulong r; guchar ch; - inner = find_aac_header (buffer + offset, filled, & a); + inner = find_aac_header (buffer + offset, filled, &a); if (inner < 0) { @@ -368,7 +330,7 @@ filled -= inner; decoder = NeAACDecOpen (); - inner = NeAACDecInit (decoder, buffer + offset, filled, & r, & ch); + inner = NeAACDecInit (decoder, buffer + offset, filled, &r, &ch); if (inner < 0) { @@ -381,18 +343,18 @@ filled -= inner; bytes_used += inner; - * samplerate = r; - * channels = ch; + *samplerate = r; + *channels = ch; initted = TRUE; } - if (NeAACDecDecode (decoder, & frame, buffer + offset, filled) == NULL) + if (NeAACDecDecode (decoder, &frame, buffer + offset, filled) == NULL) { PROBE_DEBUG ("Decode failed.\n"); goto DONE; } - if (frame.samplerate != * samplerate || frame.channels != * channels) + if (frame.samplerate != *samplerate || frame.channels != *channels) { PROBE_DEBUG ("Parameter mismatch.\n"); goto DONE; @@ -406,53 +368,53 @@ } /* bits per millisecond = kilobits per second */ - * bitrate = bytes_used * 8 / time_used; + *bitrate = bytes_used * 8 / time_used; if (size > 0) - * length = size * (gint64) time_used / bytes_used; + *length = size * (gint64) time_used / bytes_used; -DONE: + DONE: if (initted) NeAACDecClose (decoder); } -static Tuple * aac_get_tuple (const gchar * filename, VFSFile * handle) +static Tuple *aac_get_tuple (const gchar * filename, VFSFile * handle) { - Tuple * tuple = tuple_new_from_filename (filename); - gchar * temp; + Tuple *tuple = tuple_new_from_filename (filename); + gchar *temp; gint length, bitrate, samplerate, channels; - tuple_associate_string (tuple, FIELD_CODEC, NULL, "MPEG-2/4 AAC"); + tuple_set_str (tuple, FIELD_CODEC, NULL, "MPEG-2/4 AAC"); - if (! vfs_is_remote (filename)) + if (!vfs_is_remote (filename)) { - calc_aac_info (handle, & length, & bitrate, & samplerate, & channels); + calc_aac_info (handle, &length, &bitrate, &samplerate, &channels); if (length > 0) - tuple_associate_int (tuple, FIELD_LENGTH, NULL, length); + tuple_set_int (tuple, FIELD_LENGTH, NULL, length); if (bitrate > 0) - tuple_associate_int (tuple, FIELD_BITRATE, NULL, bitrate); + tuple_set_int (tuple, FIELD_BITRATE, NULL, bitrate); } temp = vfs_get_metadata (handle, "track-name"); if (temp != NULL) { - tuple_associate_string (tuple, FIELD_TITLE, NULL, temp); + tuple_set_str (tuple, FIELD_TITLE, NULL, temp); g_free (temp); } temp = vfs_get_metadata (handle, "stream-name"); if (temp != NULL) { - tuple_associate_string (tuple, FIELD_ALBUM, NULL, temp); + tuple_set_str (tuple, FIELD_ALBUM, NULL, temp); g_free (temp); } temp = vfs_get_metadata (handle, "content-bitrate"); if (temp != NULL) { - tuple_associate_int (tuple, FIELD_BITRATE, NULL, atoi (temp) / 1000); + tuple_set_int (tuple, FIELD_BITRATE, NULL, atoi (temp) / 1000); g_free (temp); } @@ -462,46 +424,47 @@ static gboolean aac_title_changed (const gchar * filename, VFSFile * handle, Tuple * tuple) { - const gchar * old = tuple_get_string (tuple, FIELD_TITLE, NULL); - gchar * new = vfs_get_metadata (handle, "track-name"); + gchar *old = tuple_get_str (tuple, FIELD_TITLE, NULL); + gchar *new = vfs_get_metadata (handle, "track-name"); gboolean changed = FALSE; changed = (new != NULL && (old == NULL || strcmp (old, new))); if (changed) - tuple_associate_string (tuple, FIELD_TITLE, NULL, new); + tuple_set_str (tuple, FIELD_TITLE, NULL, new); g_free (new); + str_unref(old); return changed; } -static void read_and_set_string (mp4ff_t * mp4, gint (* func) (const mp4ff_t * - mp4, gchar * * string), Tuple * tuple, gint field) +static void read_and_set_string (mp4ff_t * mp4, gint (*func) (const mp4ff_t * + mp4, gchar * *string), Tuple * tuple, gint field) { - gchar * string = NULL; + gchar *string = NULL; - func (mp4, & string); + func (mp4, &string); if (string != NULL) - tuple_associate_string (tuple, field, NULL, string); + tuple_set_str (tuple, field, NULL, string); free (string); } -static Tuple * generate_tuple (const gchar * filename, mp4ff_t * mp4, gint track) +static Tuple *generate_tuple (const gchar * filename, mp4ff_t * mp4, gint track) { - Tuple * tuple = tuple_new_from_filename (filename); + Tuple *tuple = tuple_new_from_filename (filename); gint64 length; gint scale, rate, channels, bitrate; - gchar * year = NULL, * cd_track = NULL; - gchar scratch [32]; + gchar *year = NULL, *cd_track = NULL; + gchar scratch[32]; - tuple_associate_string (tuple, FIELD_CODEC, NULL, "MPEG-2/4 AAC"); + tuple_set_str (tuple, FIELD_CODEC, NULL, "MPEG-2/4 AAC"); length = mp4ff_get_track_duration (mp4, track); scale = mp4ff_time_scale (mp4, track); if (length > 0 && scale > 0) - tuple_associate_int (tuple, FIELD_LENGTH, NULL, length * 1000 / scale); + tuple_set_int (tuple, FIELD_LENGTH, NULL, length * 1000 / scale); rate = mp4ff_get_sample_rate (mp4, track); channels = mp4ff_get_channel_count (mp4, track); @@ -510,13 +473,13 @@ { snprintf (scratch, sizeof scratch, "%d kHz, %s", rate / 1000, channels == 1 ? "mono" : channels == 2 ? "stereo" : "surround"); - tuple_associate_string (tuple, FIELD_QUALITY, NULL, scratch); + tuple_set_str (tuple, FIELD_QUALITY, NULL, scratch); } bitrate = mp4ff_get_avg_bitrate (mp4, track); if (bitrate > 0) - tuple_associate_int (tuple, FIELD_BITRATE, NULL, bitrate / 1000); + tuple_set_int (tuple, FIELD_BITRATE, NULL, bitrate / 1000); read_and_set_string (mp4, mp4ff_meta_get_title, tuple, FIELD_TITLE); read_and_set_string (mp4, mp4ff_meta_get_album, tuple, FIELD_ALBUM); @@ -524,41 +487,40 @@ read_and_set_string (mp4, mp4ff_meta_get_comment, tuple, FIELD_COMMENT); read_and_set_string (mp4, mp4ff_meta_get_genre, tuple, FIELD_GENRE); - mp4ff_meta_get_date (mp4, & year); + mp4ff_meta_get_date (mp4, &year); if (year != NULL) - tuple_associate_int (tuple, FIELD_YEAR, NULL, atoi (year)); + tuple_set_int (tuple, FIELD_YEAR, NULL, atoi (year)); free (year); - mp4ff_meta_get_track (mp4, & cd_track); + mp4ff_meta_get_track (mp4, &cd_track); if (cd_track != NULL) - tuple_associate_int (tuple, FIELD_TRACK_NUMBER, NULL, atoi (cd_track)); + tuple_set_int (tuple, FIELD_TRACK_NUMBER, NULL, atoi (cd_track)); free (cd_track); return tuple; } -static Tuple * mp4_get_tuple (const gchar * filename, VFSFile * handle) +static Tuple *mp4_get_tuple (const gchar * filename, VFSFile * handle) { mp4ff_callback_t mp4cb; - mp4ff_t * mp4; + mp4ff_t *mp4; gint track; - Tuple * tuple; + Tuple *tuple; if (parse_aac_stream (handle)) return aac_get_tuple (filename, handle); - if (vfs_fseek (handle, 0, SEEK_SET)) - return NULL; + vfs_rewind (handle); mp4cb.read = mp4_read_callback; mp4cb.seek = mp4_seek_callback; mp4cb.user_data = handle; - mp4 = mp4ff_open_read (& mp4cb); + mp4 = mp4ff_open_read (&mp4cb); if (mp4 == NULL) return NULL; @@ -576,295 +538,337 @@ return tuple; } -static int my_decode_mp4( InputPlayback *playback, char *filename, mp4ff_t *mp4file ) +static gboolean my_decode_mp4 (InputPlayback * playback, const char * filename, + mp4ff_t * mp4file) { // We are reading an MP4 file - gint mp4track= getAACTrack(mp4file); - NeAACDecHandle decoder; - guchar *buffer = NULL; - guint bufferSize = 0; - gulong samplerate = 0; - guchar channels = 0; - guint numSamples; - gulong sampleID = 1; - guint framesize = 0; - gboolean paused = FALSE; + gint mp4track = getAACTrack (mp4file); + NeAACDecHandle decoder; + NeAACDecConfigurationPtr decoder_config; + guchar *buffer = NULL; + guint bufferSize = 0; + gulong samplerate = 0; + guchar channels = 0; + guint numSamples; + gulong sampleID = 1; + guint framesize = 0; if (mp4track < 0) { - g_print("Unsupported Audio track type\n"); + g_print ("Unsupported Audio track type\n"); return TRUE; } - decoder = NeAACDecOpen(); - mp4ff_get_decoder_config(mp4file, mp4track, &buffer, &bufferSize); - if ( !buffer ) { - NeAACDecClose(decoder); + // Open decoder + decoder = NeAACDecOpen (); + + // Configure for floating point output + decoder_config = NeAACDecGetCurrentConfiguration (decoder); + decoder_config->outputFormat = FAAD_FMT_FLOAT; + NeAACDecSetConfiguration (decoder, decoder_config); + + mp4ff_get_decoder_config (mp4file, mp4track, &buffer, &bufferSize); + if (!buffer) + { + NeAACDecClose (decoder); return FALSE; } - if ( NeAACDecInit2(decoder, buffer, bufferSize, - &samplerate, &channels) < 0 ) { - NeAACDecClose(decoder); + if (NeAACDecInit2 (decoder, buffer, bufferSize, &samplerate, &channels) < 0) + { + NeAACDecClose (decoder); return FALSE; } - g_free(buffer); - if( !channels ) { - NeAACDecClose(decoder); + g_free (buffer); + if (!channels) + { + NeAACDecClose (decoder); return FALSE; } - numSamples = mp4ff_num_samples(mp4file, mp4track); + numSamples = mp4ff_num_samples (mp4file, mp4track); - if (! playback->output->open_audio (FMT_S16_NE, samplerate, channels)) + if (!playback->output->open_audio (FMT_FLOAT, samplerate, channels)) { NeAACDecClose (decoder); - playback->playing = FALSE; - playback->error = TRUE; return FALSE; } - playback->set_tuple (playback, generate_tuple (filename, mp4file, mp4track)); - playback->set_params(playback, NULL, 0, - mp4ff_get_avg_bitrate( mp4file, mp4track ), - samplerate,channels); - - while (playback->playing) - { - void* sampleBuffer; - NeAACDecFrameInfo frameInfo; - gint rc; + playback->set_tuple (playback, generate_tuple (filename, mp4file, + mp4track)); + playback->set_params (playback, mp4ff_get_avg_bitrate (mp4file, mp4track), + samplerate, channels); + playback->set_pb_ready (playback); + + while (1) + { + void *sampleBuffer; + NeAACDecFrameInfo frameInfo; + gint rc; - buffer=NULL; - bufferSize=0; + buffer = NULL; + bufferSize = 0; /* If we've run to the end of the file, we're done. */ - if(sampleID >= numSamples){ + if (sampleID >= numSamples) + { /* Finish playing before we close the output. */ - while ( playback->output->buffer_playing() ) { - g_usleep(10000); + while (playback->output->buffer_playing ()) + { + g_usleep (10000); } - playback->output->close_audio(); - NeAACDecClose(decoder); - - playback->playing = FALSE; - return FALSE; + break; } - rc= mp4ff_read_sample(mp4file, mp4track, - sampleID++, &buffer, &bufferSize); - /*g_print(":: %d/%d\n", sampleID-1, numSamples);*/ + rc = mp4ff_read_sample (mp4file, mp4track, + sampleID++, &buffer, &bufferSize); + + /*g_print(":: %d/%d\n", sampleID-1, numSamples); */ /* If we can't read the file, we're done. */ - if((rc == 0) || (buffer== NULL) || (bufferSize == 0) || (bufferSize > BUFFER_SIZE)){ - g_print("MP4: read error\n"); + if ((rc == 0) || (buffer == NULL) || (bufferSize == 0) + || (bufferSize > BUFFER_SIZE)) + { + g_print ("MP4: read error\n"); sampleBuffer = NULL; - playback->output->close_audio(); + playback->output->close_audio (); - NeAACDecClose(decoder); + NeAACDecClose (decoder); return FALSE; } /* g_print(" :: %d/%d\n", bufferSize, BUFFER_SIZE); */ - sampleBuffer= NeAACDecDecode(decoder, - &frameInfo, - buffer, - bufferSize); + sampleBuffer = NeAACDecDecode (decoder, &frameInfo, buffer, bufferSize); /* If there was an error decoding, we're done. */ - if(frameInfo.error > 0){ - g_print("MP4: %s\n", - NeAACDecGetErrorMessage(frameInfo.error)); - playback->output->close_audio(); - NeAACDecClose(decoder); + if (frameInfo.error > 0) + { + g_print ("MP4: %s\n", NeAACDecGetErrorMessage (frameInfo.error)); + playback->output->close_audio (); + NeAACDecClose (decoder); return FALSE; } - if(buffer){ - g_free(buffer); - buffer=NULL; - bufferSize=0; + if (buffer) + { + g_free (buffer); + buffer = NULL; + bufferSize = 0; } /* Calculate frame size from the first (non-blank) frame. This needs to * be done before we try to seek. */ - if (! framesize) + if (!framesize) { framesize = frameInfo.samples / frameInfo.channels; - if (! framesize) + if (!framesize) continue; } - /* Respond to seek/pause requests. This needs to be done after we + /* Respond to seek/stop requests. This needs to be done after we * calculate frame size but of course before we write any audio. */ g_mutex_lock (seek_mutex); - if (seek_value >= 0) + if (stop_flag) { - sampleID = (gint64) seek_value * samplerate / 1000 / framesize; - playback->output->flush (seek_value); - seek_value = -1; - g_cond_signal (seek_cond); + g_mutex_unlock (seek_mutex); + break; } - if (pause_flag != paused) + if (seek_value >= 0) { - playback->output->pause (pause_flag); - paused = pause_flag; + sampleID = (gint64) seek_value *samplerate / 1000 / framesize; + playback->output->flush (seek_value); + seek_value = -1; g_cond_signal (seek_cond); } - if (paused) - { - g_cond_wait (seek_cond, seek_mutex); - g_mutex_unlock (seek_mutex); - continue; - } - g_mutex_unlock (seek_mutex); - playback->output->write_audio (sampleBuffer, 2 * frameInfo.samples); + playback->output->write_audio (sampleBuffer, + sizeof (gfloat) * frameInfo.samples); } - playback->output->close_audio(); - NeAACDecClose(decoder); + g_mutex_lock (seek_mutex); + stop_flag = TRUE; + g_cond_signal (seek_cond); + g_mutex_unlock (seek_mutex); + + playback->output->close_audio (); + NeAACDecClose (decoder); return TRUE; } static void aac_seek (VFSFile * file, NeAACDecHandle dec, gint time, gint len, - void * buf, gint size, gint * fill, gint * used) + void * buf, gint size, gint * buflen) { AUDDBG ("Seeking to millisecond %d of %d.\n", time, len); + /* == ESTIMATE BYTE OFFSET == */ + gint64 total = vfs_fsize (file); if (total < 0) { - fprintf (stderr, "aac: File size unknown; cannot seek.\n"); + fprintf (stderr, "aac: File is not seekable.\n"); return; } AUDDBG ("That means byte %d of %d.\n", (gint) (total * time / len), (gint) total); - if (vfs_fseek (file, total * time / len, SEEK_SET) < 0) - { - fprintf (stderr, "aac: Error seeking in file.\n"); + /* == SEEK == */ + + if (vfs_fseek (file, total * time / len, SEEK_SET)) return; - } - * fill = vfs_fread (buf, 1, size, file); - * used = aac_probe (buf, * fill); + * buflen = vfs_fread (buf, 1, size, file); + + /* == FIND FRAME HEADER == */ - AUDDBG ("Used %d of %d bytes probing.\n", * used, * fill); + gint used = aac_probe (buf, * buflen); - if (* used == * fill) + if (used == * buflen) { - AUDDBG ("No data left!\n"); + fprintf (stderr, "aac: No valid frame header found.\n"); + * buflen = 0; return; } + if (used) + { + * buflen -= used; + memmove (buf, buf + used, * buflen); + * buflen += vfs_fread (buf + * buflen, 1, size - * buflen, file); + } + + /* == START DECODING == */ + guchar chan; gulong rate; - * used += NeAACDecInit (dec, buf + * used, * fill - * used, & rate, & chan); - AUDDBG ("After init, used %d of %d bytes.\n", * used, * fill); + if ((used = NeAACDecInit (dec, buf, * buflen, & rate, & chan))) + { + * buflen -= used; + memmove (buf, buf + used, * buflen); + * buflen += vfs_fread (buf + * buflen, 1, size - * buflen, file); + } } -void my_decode_aac( InputPlayback *playback, char *filename, VFSFile *file ) +static gboolean my_decode_aac (InputPlayback * playback, const char * filename, + VFSFile * file) { - NeAACDecHandle decoder = 0; - guchar streambuffer[BUFFER_SIZE]; - gint bufferconsumed = 0; - gulong samplerate = 0; - guchar channels = 0; - gint buffervalid = 0; - gulong ret = 0; - gboolean remote = str_has_prefix_nocase(filename, "http:") || - str_has_prefix_nocase(filename, "https:"); - gboolean paused = FALSE; - Tuple * tuple; + NeAACDecHandle decoder = 0; + NeAACDecConfigurationPtr decoder_config; + gulong samplerate = 0; + guchar channels = 0; + Tuple *tuple; gint bitrate = 0; tuple = aac_get_tuple (filename, file); if (tuple != NULL) { - mowgli_object_ref (tuple); + tuple_ref (tuple); playback->set_tuple (playback, tuple); bitrate = tuple_get_int (tuple, FIELD_BITRATE, NULL); bitrate = 1000 * MAX (0, bitrate); } - vfs_rewind(file); - if((decoder = NeAACDecOpen()) == NULL){ - g_print("AAC: Open Decoder Error\n"); - vfs_fclose(file); + vfs_rewind (file); + if ((decoder = NeAACDecOpen ()) == NULL) + { + g_print ("AAC: Open Decoder Error\n"); + return FALSE; + } + + decoder_config = NeAACDecGetCurrentConfiguration (decoder); + decoder_config->outputFormat = FAAD_FMT_FLOAT; + NeAACDecSetConfiguration (decoder, decoder_config); - playback->playing = FALSE; - return; + /* == FILL BUFFER == */ + + guchar buf[BUFFER_SIZE]; + gint buflen = vfs_fread (buf, 1, sizeof buf, file); + + /* == SKIP ID3 TAG == */ + + if (buflen >= 10 && ! strncmp ((char *) buf, "ID3", 3)) + { + if (vfs_fseek (file, 10 + (buf[6] << 21) + (buf[7] << 14) + (buf[8] << + 7) + buf[9], SEEK_SET)) + { + fprintf (stderr, "aac: Failed to seek past ID3v2 tag.\n"); + goto ERR_CLOSE_DECODER; + } + + buflen = vfs_fread (buf, 1, sizeof buf, file); } - if((buffervalid = vfs_fread(streambuffer, 1, BUFFER_SIZE, file))==0){ - g_print("AAC: Error reading file\n"); - vfs_fclose(file); - NeAACDecClose(decoder); - playback->playing = FALSE; - return; + /* == FIND FRAME HEADER == */ + + gint used = aac_probe (buf, buflen); + + if (used == buflen) + { + fprintf (stderr, "aac: No valid frame header found.\n"); + goto ERR_CLOSE_DECODER; } - if(!strncmp((char*)streambuffer, "ID3", 3)){ - if (vfs_fseek (file, 10 + (streambuffer[6] << 21) + (streambuffer[7] << - 14) + (streambuffer[8] << 7) + streambuffer[9], SEEK_SET)) - { - playback->playing = FALSE; - playback->error = TRUE; - return; - } - - buffervalid = vfs_fread(streambuffer, 1, BUFFER_SIZE, file); - } - - bufferconsumed = aac_probe(streambuffer, buffervalid); - if(bufferconsumed) { - buffervalid -= bufferconsumed; - memmove(streambuffer, &streambuffer[bufferconsumed], buffervalid); - buffervalid += vfs_fread(&streambuffer[buffervalid], 1, - BUFFER_SIZE-buffervalid, file); - } - - bufferconsumed = NeAACDecInit(decoder, - streambuffer, - buffervalid, - &samplerate, - &channels); -#ifdef DEBUG - g_print("samplerate: %lu, channels: %d\n", samplerate, channels); -#endif - if(playback->output->open_audio(FMT_S16_NE,samplerate,channels) == FALSE){ - NeAACDecClose(decoder); - vfs_fclose(file); - playback->playing = FALSE; - playback->error = TRUE; - return; + + if (used) + { + buflen -= used; + memmove (buf, buf + used, buflen); + buflen += vfs_fread (buf + buflen, 1, sizeof buf - buflen, file); + } + + /* == START DECODING == */ + + if ((used = NeAACDecInit (decoder, buf, buflen, & samplerate, & channels))) + { + buflen -= used; + memmove (buf, buf + used, buflen); + buflen += vfs_fread (buf + buflen, 1, sizeof buf - buflen, file); } - playback->set_params (playback, NULL, 0, bitrate, samplerate, channels); - playback->output->flush(0); + /* == CHECK FOR METADATA == */ - while (playback->playing && buffervalid > 0 && streambuffer != NULL) + if (tuple && aac_title_changed (filename, file, tuple)) { - NeAACDecFrameInfo finfo; - unsigned long samplesdecoded; - char* sample_buffer = NULL; + tuple_ref (tuple); + playback->set_tuple (playback, tuple); + } + + /* == START PLAYBACK == */ + + if (! playback->output->open_audio (FMT_FLOAT, samplerate, channels)) + goto ERR_CLOSE_DECODER; + playback->set_params (playback, bitrate, samplerate, channels); + playback->set_pb_ready (playback); + + /* == MAIN LOOP == */ + + while (1) + { g_mutex_lock (seek_mutex); + /* == HANDLE STOP REQUESTS == */ + + if (stop_flag) + { + g_mutex_unlock (seek_mutex); + break; + } + + /* == HANDLE SEEK REQUESTS == */ + if (seek_value >= 0) { gint length = (tuple != NULL) ? tuple_get_int (tuple, FIELD_LENGTH, @@ -872,8 +876,8 @@ if (length > 0) { - aac_seek (file, decoder, seek_value, length, streambuffer, - sizeof streambuffer, & buffervalid, & bufferconsumed); + aac_seek (file, decoder, seek_value, length, buf, sizeof buf, + & buflen); playback->output->flush (seek_value); } @@ -881,129 +885,117 @@ g_cond_signal (seek_cond); } - if (pause_flag != paused) - { - playback->output->pause (pause_flag); - paused = pause_flag; - g_cond_signal (seek_cond); - } + g_mutex_unlock (seek_mutex); + + /* == CHECK FOR END OF FILE == */ - if (paused) + if (! buflen) { - g_cond_wait (seek_cond, seek_mutex); - g_mutex_unlock (seek_mutex); - continue; + while (playback->output->buffer_playing ()) + g_usleep (20000); + + break; } - g_mutex_unlock (seek_mutex); + /* == CHECK FOR METADATA == */ - if(bufferconsumed > 0) + if (tuple && aac_title_changed (filename, file, tuple)) { - buffervalid -= bufferconsumed; - memmove(streambuffer, &streambuffer[bufferconsumed], buffervalid); - ret = vfs_fread(&streambuffer[buffervalid], 1, - BUFFER_SIZE-buffervalid, file); - buffervalid += ret; - bufferconsumed = 0; - - /* XXX: buffer underrun on a shoutcast stream, well this is unpleasant. --nenolod */ - if (ret == 0 && remote == TRUE) - break; - - if (tuple != NULL && aac_title_changed (filename, file, tuple)) - { - mowgli_object_ref (tuple); - playback->set_tuple (playback, tuple); - } + tuple_ref (tuple); + playback->set_tuple (playback, tuple); } - sample_buffer = NeAACDecDecode(decoder, &finfo, streambuffer, buffervalid); + /* == DECODE A FRAME == */ - bufferconsumed += finfo.bytesconsumed; - samplesdecoded = finfo.samples; + NeAACDecFrameInfo info; + void * audio = NeAACDecDecode (decoder, & info, buf, buflen); - if(finfo.error > 0 && remote != FALSE) + if (info.error) { - buffervalid--; - memmove(streambuffer, &streambuffer[1], buffervalid); - if(buffervalid < BUFFER_SIZE) { - buffervalid += - vfs_fread(&streambuffer[buffervalid], 1, BUFFER_SIZE-buffervalid, file); - } - bufferconsumed = aac_probe(streambuffer, buffervalid); - if(bufferconsumed) { - buffervalid -= bufferconsumed; - memmove(streambuffer, &streambuffer[bufferconsumed], buffervalid); - bufferconsumed = 0; + fprintf (stderr, "aac: %s.\n", NeAACDecGetErrorMessage (info.error)); + + if (buflen) + { + used = 1 + aac_probe (buf + 1, buflen - 1); + buflen -= used; + memmove (buf, buf + used, buflen); + buflen += vfs_fread (buf + buflen, 1, sizeof buf - buflen, file); } + continue; } - if((samplesdecoded <= 0) && !sample_buffer){ -#ifdef DEBUG - g_print("AAC: decoded %lu samples!\n", samplesdecoded); -#endif - continue; + if ((used = info.bytesconsumed)) + { + buflen -= used; + memmove (buf, buf + used, buflen); + buflen += vfs_fread (buf + buflen, 1, sizeof buf - buflen, file); } - playback->output->write_audio (sample_buffer, 2 * samplesdecoded); + /* == PLAY THE SOUND == */ + + if (audio && info.samples) + playback->output->write_audio (audio, sizeof (gfloat) * info.samples); } - playback->output->close_audio(); - NeAACDecClose(decoder); - vfs_fclose(file); - if (tuple != NULL) - mowgli_object_unref (tuple); + g_mutex_lock (seek_mutex); + stop_flag = TRUE; + g_cond_signal (seek_cond); + g_mutex_unlock (seek_mutex); - playback->playing = FALSE; -} + playback->output->close_audio (); + NeAACDecClose (decoder); -static void *mp4_decode( void *args ) -{ - mp4ff_callback_t *mp4cb = g_malloc0(sizeof(mp4ff_callback_t)); - VFSFile *mp4fh; - mp4ff_t *mp4file; - gboolean ret; + if (tuple) + tuple_unref (tuple); - InputPlayback *playback = args; - char *filename = playback->filename; + return TRUE; - mp4fh = vfs_fopen (filename, "r"); +ERR_CLOSE_DECODER: + NeAACDecClose (decoder); - if (mp4fh == NULL) - return NULL; + if (tuple) + tuple_unref (tuple); - ret = parse_aac_stream(mp4fh); + return FALSE; +} - if( ret == TRUE ) - { - if (vfs_fseek (mp4fh, 0, SEEK_SET)) - ; /* errors here are normal for streaming */ - } - else { - vfs_fclose(mp4fh); - mp4fh = vfs_fopen(filename, "rb"); - } +static gboolean mp4_play (InputPlayback * playback, const gchar * filename, + VFSFile * file, gint start_time, gint stop_time, gboolean pause) +{ + g_return_val_if_fail (file != NULL, FALSE); + + mp4ff_callback_t *mp4cb = g_malloc0 (sizeof (mp4ff_callback_t)); + mp4ff_t *mp4file; + gboolean ret; + + ret = parse_aac_stream (file); + vfs_rewind (file); mp4cb->read = mp4_read_callback; mp4cb->seek = mp4_seek_callback; - mp4cb->user_data = mp4fh; + mp4cb->user_data = file; - mp4file= mp4ff_open_read(mp4cb); + mp4file = mp4ff_open_read (mp4cb); - if( ret == TRUE ) { - g_free(mp4cb); - my_decode_aac( playback, filename, mp4fh ); + seek_value = (start_time > 0) ? start_time : -1; + stop_flag = FALSE; + + if (ret == TRUE) + { + g_free (mp4cb); + return my_decode_aac (playback, filename, file); } - else /* I think there's a file descriptor leak here? -jlindgren */ - my_decode_mp4( playback, filename, mp4file ); - return NULL; + return my_decode_mp4 (playback, filename, mp4file); } -InputPlugin mp4_ip = -{ - .description = "MP4 AAC decoder", +gboolean read_itunes_cover (const gchar * filename, VFSFile * file, void * * + data, gint64 * size); + +AUD_INPUT_PLUGIN +( + .name = "MP4 AAC decoder", .init = mp4_init, .about = mp4_about, .play = mp4_play, @@ -1013,9 +1005,6 @@ .cleanup = mp4_cleanup, .is_our_file_from_vfs = mp4_is_our_fd, .probe_for_tuple = mp4_get_tuple, - .vfs_extensions = fmts, -}; - -InputPlugin * mp4_iplist[] = {& mp4_ip, NULL}; - -SIMPLE_INPUT_PLUGIN (mp4, mp4_iplist) + .get_song_image = read_itunes_cover, + .extensions = fmts, +) diff -Nru audacious-plugins-2.4.4/src/aac/Makefile audacious-plugins-3.2/src/aac/Makefile --- audacious-plugins-2.4.4/src/aac/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/aac/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ PLUGIN = aac${PLUGIN_SUFFIX} -SRCS = libmp4.c \ +SRCS = itunes-cover.c \ + libmp4.c \ mp4_utils.c \ aac_utils.c \ tagging_mp4.c \ @@ -17,5 +18,5 @@ plugindir := ${plugindir}/${INPUT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${FAAD_CFLAGS} -I../.. -I. -Imp4ff -DUSE_TAGGING=1 -LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${MOWGLI_LIBS} ${FAAD_LIBS} -lm +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${FAAD_CFLAGS} -I../.. -I. -Imp4ff -DUSE_TAGGING=1 +LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${FAAD_LIBS} -lm diff -Nru audacious-plugins-2.4.4/src/aac/mp4ff/mp4atom.c audacious-plugins-3.2/src/aac/mp4ff/mp4atom.c --- audacious-plugins-2.4.4/src/aac/mp4ff/mp4atom.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/aac/mp4ff/mp4atom.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,19 +1,19 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding ** Copyright (C) 2003-2005 M. Bakker, Nero AG, http://www.nero.com -** +** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. -** +** ** This program 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 General Public License for more details. -** +** ** You should have received a copy of the GNU General Public License -** along with this program; if not, write to the Free Software +** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ** ** Any non-GPL usage of this software or parts of this software is strictly @@ -330,7 +330,6 @@ static int32_t mp4ff_read_mp4a(mp4ff_t *f) { - uint64_t size; int32_t i; uint8_t atom_type = 0; uint8_t header_size = 0; @@ -354,7 +353,7 @@ mp4ff_read_int16(f); - size = mp4ff_atom_read_header(f, &atom_type, &header_size); + mp4ff_atom_read_header(f, &atom_type, &header_size); if (atom_type == ATOM_ESDS) { mp4ff_read_esds(f); diff -Nru audacious-plugins-2.4.4/src/aac/mp4ff/mp4ff_int_types.h audacious-plugins-3.2/src/aac/mp4ff/mp4ff_int_types.h --- audacious-plugins-2.4.4/src/aac/mp4ff/mp4ff_int_types.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/aac/mp4ff/mp4ff_int_types.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,11 +1,7 @@ #ifndef _MP4FF_INT_TYPES_H_ #define _MP4FF_INT_TYPES_H_ -#if defined (_WIN32) - -#ifdef __MINGW32__ -#include -#endif /* #ifdef __MINGW32__ */ +#if defined _WIN32 && ! defined __MINGW32__ typedef signed char int8_t; typedef unsigned char uint8_t; diff -Nru audacious-plugins-2.4.4/src/aac/mp4_utils.c audacious-plugins-3.2/src/aac/mp4_utils.c --- audacious-plugins-2.4.4/src/aac/mp4_utils.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/aac/mp4_utils.c 2012-01-20 19:48:30.000000000 +0000 @@ -2,7 +2,9 @@ * some functions for MP4 files */ -#include "config.h" +#include +#include + #include "mp4ff.h" #include "neaacdec.h" #include @@ -35,21 +37,22 @@ }; -gint getAACTrack(mp4ff_t *infile) +gint getAACTrack (mp4ff_t * infile) { - gint i, rc, numTracks = mp4ff_total_tracks(infile); + gint i, rc, numTracks = mp4ff_total_tracks (infile); for (i = 0; i < numTracks; i++) { guint8 *buff = NULL; guint32 buff_size = 0; mp4AudioSpecificConfig mp4ASC; - mp4ff_get_decoder_config(infile, i, &buff, &buff_size); + mp4ff_get_decoder_config (infile, i, &buff, &buff_size); if (buff != NULL) { - rc = AudioSpecificConfig(buff, buff_size, &mp4ASC); - free(buff); - if (rc < 0) continue; + rc = AudioSpecificConfig (buff, buff_size, &mp4ASC); + free (buff); + if (rc < 0) + continue; return i; } } diff -Nru audacious-plugins-2.4.4/src/aac/tagging.h audacious-plugins-3.2/src/aac/tagging.h --- audacious-plugins-2.4.4/src/aac/tagging.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/aac/tagging.h 2012-01-20 19:48:30.000000000 +0000 @@ -24,15 +24,14 @@ #include #include -#include "config.h" #include "mp4ff.h" /* XXX: We will need the same for AAC eventually */ -extern gchar *audmp4_get_artist(mp4ff_t *); -extern gchar *audmp4_get_title(mp4ff_t *); -extern gchar *audmp4_get_album(mp4ff_t *); -extern gchar *audmp4_get_genre(mp4ff_t *); -extern gint audmp4_get_year(mp4ff_t *); +extern gchar *audmp4_get_artist (mp4ff_t *); +extern gchar *audmp4_get_title (mp4ff_t *); +extern gchar *audmp4_get_album (mp4ff_t *); +extern gchar *audmp4_get_genre (mp4ff_t *); +extern gint audmp4_get_year (mp4ff_t *); #define GENRE_MAX 0x94 extern const char *audmp4_id3_genres[GENRE_MAX]; diff -Nru audacious-plugins-2.4.4/src/aac/tagging_mp4.c audacious-plugins-3.2/src/aac/tagging_mp4.c --- audacious-plugins-2.4.4/src/aac/tagging_mp4.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/aac/tagging_mp4.c 2012-01-20 19:48:30.000000000 +0000 @@ -24,50 +24,50 @@ #include "tagging.h" -gchar *audmp4_get_artist(mp4ff_t *file) +gchar *audmp4_get_artist (mp4ff_t * file) { - gchar *value; + gchar *value; - mp4ff_meta_get_artist(file, &value); + mp4ff_meta_get_artist (file, &value); - return value; + return value; } -gchar *audmp4_get_title(mp4ff_t *file) +gchar *audmp4_get_title (mp4ff_t * file) { - gchar *value; + gchar *value; - mp4ff_meta_get_title(file, &value); + mp4ff_meta_get_title (file, &value); - return value; + return value; } -gchar *audmp4_get_album(mp4ff_t *file) +gchar *audmp4_get_album (mp4ff_t * file) { - gchar *value; + gchar *value; - mp4ff_meta_get_album(file, &value); + mp4ff_meta_get_album (file, &value); - return value; + return value; } -gchar *audmp4_get_genre(mp4ff_t *file) +gchar *audmp4_get_genre (mp4ff_t * file) { - gchar *value; + gchar *value; - mp4ff_meta_get_genre(file, &value); + mp4ff_meta_get_genre (file, &value); - return value; + return value; } -gint audmp4_get_year(mp4ff_t *file) +gint audmp4_get_year (mp4ff_t * file) { - gchar *value; + gchar *value; - mp4ff_meta_get_date(file, &value); + mp4ff_meta_get_date (file, &value); - if (!value) - return 0; + if (!value) + return 0; - return atoi(value); + return atoi (value); } diff -Nru audacious-plugins-2.4.4/src/adplug/adplug-xmms.cc audacious-plugins-3.2/src/adplug/adplug-xmms.cc --- audacious-plugins-2.4.4/src/adplug/adplug-xmms.cc 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/adplug-xmms.cc 2012-01-20 19:48:30.000000000 +0000 @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include "adplug.h" @@ -31,14 +32,13 @@ #include "players.h" extern "C" { -#include #include #include #include -#include -#include #include #include + +#include "adplug-xmms.h" } @@ -62,12 +62,11 @@ /***** Global variables *****/ -extern "C" InputPlugin adplug_ip; static gboolean audio_error = FALSE; GtkWidget *about_win = NULL; static GMutex * control_mutex; static GCond * control_cond; -static gboolean pause_flag; +static gboolean stop_flag; // Configuration (and defaults) static struct @@ -86,14 +85,10 @@ CAdPlugDatabase *db; unsigned int subsong, songlength; int seek; - char filename[PATH_MAX]; - char *songtitle; - float time_ms; + char * filename; GtkLabel *infobox; GtkDialog *infodlg; -} plr = -{ -0, 0, 0, 0, -1, "", NULL, 0.0f, NULL, NULL}; +} plr = {0, 0, 0, 0, -1, NULL, NULL, NULL}; static InputPlayback *playback; @@ -122,337 +117,9 @@ #endif -/***** [Dialog]: Utility functions *****/ - -static GtkWidget * -make_framed (GtkWidget * what, const gchar * label) -{ - GtkWidget *framebox = gtk_frame_new (label); - - gtk_container_add (GTK_CONTAINER (framebox), what); - return framebox; -} - -static GtkWidget * -print_left (const gchar * text) -{ - GtkLabel *label = GTK_LABEL (gtk_label_new (text)); - - gtk_label_set_justify (label, GTK_JUSTIFY_LEFT); - gtk_misc_set_padding (GTK_MISC (label), 2, 2); - return GTK_WIDGET (label); -} - -/***** Dialog boxes *****/ - -extern "C" void -adplug_about (void) -{ - if (!about_win) - { - gchar *about_title = g_strjoin ("", _("About "), ADPLUG_NAME, NULL); - const gchar *version_text = CAdPlug::get_version ().c_str (); - gchar *about_text = g_strjoin ("", ADPLUG_NAME, - _ - ("\nCopyright (C) 2002, 2003 Simon Peter \n\n" - "This plugin is released under the terms and conditions of the GNU LGPL.\n" - "See http://www.gnu.org/licenses/lgpl.html for details." - "\n\nThis plugin uses the AdPlug library, which is copyright (C) Simon Peter, et al.\n" - "Linked AdPlug library version: "), - version_text, NULL); - audgui_simple_message (& about_win, GTK_MESSAGE_INFO, about_title, about_text); - g_free (about_text); - g_free (about_title); - } -} - -static void -close_config_box_ok (GtkButton * button, GPtrArray * rblist) -{ - // Apply configuration settings - conf.bit16 = - gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON - (g_ptr_array_index (rblist, 0))); - conf.stereo = - gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON - (g_ptr_array_index (rblist, 1))); - - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (g_ptr_array_index (rblist, 2)))) - conf.freq = 11025; - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (g_ptr_array_index (rblist, 3)))) - conf.freq = 22050; - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (g_ptr_array_index (rblist, 4)))) - conf.freq = 44100; - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (g_ptr_array_index (rblist, 5)))) - conf.freq = 48000; - - conf.endless = - !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON - (g_ptr_array_index (rblist, 6))); - - conf.players = *(CPlayers *) g_ptr_array_index (rblist, 7); - delete (CPlayers *) g_ptr_array_index (rblist, 7); - - g_ptr_array_free (rblist, FALSE); -} - -static void -close_config_box_cancel (GtkButton * button, GPtrArray * rblist) -{ - delete (CPlayers *) g_ptr_array_index (rblist, 7); - g_ptr_array_free (rblist, FALSE); -} - -static void -config_fl_row_select (GtkCList * fl, gint row, gint col, - GdkEventButton * event, CPlayers * pl) -{ - pl->push_back ((CPlayerDesc *) gtk_clist_get_row_data (fl, row)); - pl->unique (); -} - -static void -config_fl_row_unselect (GtkCList * fl, gint row, gint col, - GdkEventButton * event, CPlayers * pl) -{ - pl->remove ((CPlayerDesc *) gtk_clist_get_row_data (fl, row)); -} - -extern "C" void -adplug_config (void) -{ - GtkDialog *config_dlg = GTK_DIALOG (gtk_dialog_new ()); - GtkNotebook *notebook = GTK_NOTEBOOK (gtk_notebook_new ()); - GtkTable *table; - GtkTooltips *tooltips = gtk_tooltips_new (); - GPtrArray *rblist = g_ptr_array_new (); - - gtk_window_set_title (GTK_WINDOW (config_dlg), _("AdPlug :: Configuration")); - gtk_window_set_policy (GTK_WINDOW (config_dlg), FALSE, FALSE, TRUE); // Window is auto sized - gtk_window_set_modal (GTK_WINDOW (config_dlg), TRUE); - gtk_container_add (GTK_CONTAINER (config_dlg->vbox), GTK_WIDGET (notebook)); - - // Add Ok & Cancel buttons - { - GtkWidget *button; - - button = gtk_button_new_with_label (_("Ok")); - g_signal_connect (G_OBJECT (button), "clicked", - G_CALLBACK (close_config_box_ok), (gpointer) rblist); - g_signal_connect_data (G_OBJECT (button), "clicked", - G_CALLBACK (gtk_widget_destroy), - GTK_OBJECT (config_dlg), NULL, - (GConnectFlags) (G_CONNECT_AFTER | - G_CONNECT_SWAPPED)); - gtk_container_add (GTK_CONTAINER (config_dlg->action_area), button); - - button = gtk_button_new_with_label (_("Cancel")); - g_signal_connect (G_OBJECT (button), "clicked", - G_CALLBACK (close_config_box_cancel), - (gpointer) rblist); - g_signal_connect_swapped (G_OBJECT (button), "clicked", - G_CALLBACK (gtk_widget_destroy), - GTK_OBJECT (config_dlg)); - gtk_container_add (GTK_CONTAINER (config_dlg->action_area), button); - } - - /***** Page 1: General *****/ - - table = GTK_TABLE (gtk_table_new (1, 2, TRUE)); - gtk_table_set_row_spacings (table, 5); - gtk_table_set_col_spacings (table, 5); - gtk_notebook_append_page (notebook, GTK_WIDGET (table), - print_left (_("General"))); - - // Add "Sound quality" section - { - GtkTable *sqt = GTK_TABLE (gtk_table_new (2, 2, FALSE)); - GtkVBox *fvb; - GtkRadioButton *rb; - - gtk_table_set_row_spacings (sqt, 5); - gtk_table_set_col_spacings (sqt, 5); - gtk_table_attach_defaults (table, - make_framed (GTK_WIDGET (sqt), - _("Sound quality")), 0, 1, 0, 1); - - // Add "Resolution" section - fvb = GTK_VBOX (gtk_vbox_new (TRUE, 0)); - gtk_table_attach_defaults (sqt, - make_framed (GTK_WIDGET (fvb), _("Resolution")), - 0, 1, 0, 1); - rb = GTK_RADIO_BUTTON (gtk_radio_button_new_with_label (NULL, _("8bit"))); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rb), !conf.bit16); - gtk_container_add (GTK_CONTAINER (fvb), GTK_WIDGET (rb)); - rb = - GTK_RADIO_BUTTON (gtk_radio_button_new_with_label_from_widget - (rb, _("16bit"))); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rb), conf.bit16); - gtk_container_add (GTK_CONTAINER (fvb), GTK_WIDGET (rb)); - g_ptr_array_add (rblist, (gpointer) rb); - - // Add "Channels" section - fvb = GTK_VBOX (gtk_vbox_new (TRUE, 0)); - gtk_table_attach_defaults (sqt, - make_framed (GTK_WIDGET (fvb), _("Channels")), 0, - 1, 1, 2); - rb = GTK_RADIO_BUTTON (gtk_radio_button_new_with_label (NULL, _("Mono"))); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rb), !conf.stereo); - gtk_container_add (GTK_CONTAINER (fvb), GTK_WIDGET (rb)); - rb = - GTK_RADIO_BUTTON (gtk_radio_button_new_with_label_from_widget - (rb, _("Stereo"))); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rb), conf.stereo); - gtk_container_add (GTK_CONTAINER (fvb), GTK_WIDGET (rb)); - gtk_tooltips_set_tip (tooltips, GTK_WIDGET (rb), - _("Setting stereo is not recommended, unless you need to. " - "This won't add any stereo effects to the sound - OPL2 " - "is just mono - but eats up more CPU power!"), NULL); - g_ptr_array_add (rblist, (gpointer) rb); - - // Add "Frequency" section - fvb = GTK_VBOX (gtk_vbox_new (TRUE, 0)); - gtk_table_attach_defaults (sqt, - make_framed (GTK_WIDGET (fvb), _("Frequency")), 1, - 2, 0, 2); - rb = GTK_RADIO_BUTTON (gtk_radio_button_new_with_label (NULL, "11025")); - if (conf.freq == 11025) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rb), TRUE); - gtk_container_add (GTK_CONTAINER (fvb), GTK_WIDGET (rb)); - g_ptr_array_add (rblist, (gpointer) rb); - rb = - GTK_RADIO_BUTTON (gtk_radio_button_new_with_label_from_widget - (rb, "22050")); - if (conf.freq == 22050) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rb), TRUE); - gtk_container_add (GTK_CONTAINER (fvb), GTK_WIDGET (rb)); - g_ptr_array_add (rblist, (gpointer) rb); - rb = - GTK_RADIO_BUTTON (gtk_radio_button_new_with_label_from_widget - (rb, "44100")); - if (conf.freq == 44100) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rb), TRUE); - gtk_container_add (GTK_CONTAINER (fvb), GTK_WIDGET (rb)); - g_ptr_array_add (rblist, (gpointer) rb); - rb = - GTK_RADIO_BUTTON (gtk_radio_button_new_with_label_from_widget - (rb, "48000")); - if (conf.freq == 48000) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rb), TRUE); - gtk_container_add (GTK_CONTAINER (fvb), GTK_WIDGET (rb)); - g_ptr_array_add (rblist, (gpointer) rb); - } - - // Add "Playback" section - { - GtkVBox *vb = GTK_VBOX (gtk_vbox_new (FALSE, 0)); - GtkCheckButton *cb; - - gtk_table_attach_defaults (table, - make_framed (GTK_WIDGET (vb), _("Playback")), 1, - 2, 0, 1); - - cb = - GTK_CHECK_BUTTON (gtk_check_button_new_with_label (_("Detect songend"))); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cb), !conf.endless); - gtk_container_add (GTK_CONTAINER (vb), GTK_WIDGET (cb)); - gtk_tooltips_set_tip (tooltips, GTK_WIDGET (cb), - _("If enabled, XMMS will detect a song's ending, stop " - "it and advance in the playlist. If disabled, XMMS " - "won't take notice of a song's ending and loop it all " - "over again and again."), NULL); - g_ptr_array_add (rblist, (gpointer) cb); - } - - /***** Page 2: Formats *****/ - - table = GTK_TABLE (gtk_table_new (1, 1, TRUE)); - gtk_notebook_append_page (notebook, GTK_WIDGET (table), - print_left (_("Formats"))); - - // Add "Format selection" section - { - GtkHBox *vb = GTK_HBOX (gtk_hbox_new (FALSE, 0)); - gtk_table_attach_defaults (table, - make_framed (GTK_WIDGET (vb), - _("Format selection")), 0, 1, 0, 1); - // Add scrollable list - { - const gchar *rowstr[] = { _("Format"), _("Extension") }; - GtkEventBox *eventbox = GTK_EVENT_BOX (gtk_event_box_new ()); - GtkScrolledWindow *formatswnd = - GTK_SCROLLED_WINDOW (gtk_scrolled_window_new (NULL, NULL)); - GtkCList *fl = GTK_CLIST (gtk_clist_new_with_titles (2, (gchar **)rowstr)); - CPlayers::const_iterator i; - unsigned int j; - gtk_clist_set_selection_mode (fl, GTK_SELECTION_MULTIPLE); - - // Build list - for (i = CAdPlug::getPlayers().begin (); i != CAdPlug::getPlayers().end (); i++) - { - gint rownum; - - gchar *rws[2]; - rws[0] = g_strdup ((*i)->filetype.c_str ()); - rws[1] = g_strdup ((*i)->get_extension (0)); - for (j = 1; (*i)->get_extension (j); j++) - rws[1] = g_strjoin (", ", rws[1], (*i)->get_extension (j), NULL); - rownum = gtk_clist_append (fl, rws); - g_free (rws[0]); - g_free (rws[1]); - gtk_clist_set_row_data (fl, rownum, (gpointer) (*i)); - if (find (conf.players.begin (), conf.players.end (), *i) != - conf.players.end ()) - gtk_clist_select_row (fl, rownum, 0); - } - - gtk_clist_columns_autosize (fl); - gtk_scrolled_window_set_policy (formatswnd, GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - gpointer pl = (gpointer) new CPlayers (conf.players); - g_signal_connect (G_OBJECT (fl), "select-row", - G_CALLBACK (config_fl_row_select), pl); - g_signal_connect (G_OBJECT (fl), "unselect-row", - G_CALLBACK (config_fl_row_unselect), pl); - gtk_container_add (GTK_CONTAINER (formatswnd), GTK_WIDGET (fl)); - gtk_container_add (GTK_CONTAINER (eventbox), GTK_WIDGET (formatswnd)); - gtk_container_add (GTK_CONTAINER (vb), GTK_WIDGET (eventbox)); - gtk_tooltips_set_tip (tooltips, GTK_WIDGET (eventbox), - _("Selected file types will be recognized and played " - "back by this plugin. Deselected types will be " - "ignored to make room for other plugins to play " - "these files."), NULL); - g_ptr_array_add (rblist, pl); - } - } - - // Show window - gtk_widget_show_all (GTK_WIDGET (config_dlg)); -} - -static void -add_instlist (GtkCList * instlist, const char *t1, const char *t2) -{ - gchar *rowstr[2]; - - rowstr[0] = g_strdup (t1); - rowstr[1] = g_strdup (t2); - gtk_clist_append (instlist, rowstr); - g_free (rowstr[0]); - g_free (rowstr[1]); -} - static CPlayer * factory (VFSFile * fd, Copl * newopl) { - CPlayers::const_iterator i; - - dbg_printf ("factory(%p<%s>,opl): ", fd, - fd->uri != NULL ? fd->uri : "unknown"); return CAdPlug::factory (fd, newopl, conf.players); } @@ -461,205 +128,12 @@ gboolean adplug_play(InputPlayback * data, const gchar * filename, VFSFile * file, gint start_time, gint stop_time, gboolean pause); } -static void -subsong_slider (GtkAdjustment * adj) -{ - adplug_stop (NULL); - plr.subsong = (unsigned int) adj->value - 1; - adplug_play (playback, playback->filename, NULL, 0, 0, FALSE); -} - -static void -close_infobox (GtkDialog * infodlg) -{ - // Forget our references to the instance of the "currently playing song" info - // box. But only if we're really destroying that one... ;) - if (infodlg == plr.infodlg) - { - plr.infobox = NULL; - plr.infodlg = NULL; - } -} - -extern "C" void -adplug_info_box (const gchar *filename) -{ - CSilentopl tmpopl; - VFSFile *fd = vfs_buffered_file_new_from_uri (filename); - - if (!fd) - return; - - CPlayer *p = (strcmp (filename, plr.filename) || !plr.p) ? - factory (fd, &tmpopl) : plr.p; - - if (!p) - return; // bail out if no player could be created - if (p == plr.p && plr.infodlg) - return; // only one info box for active song - - std::ostringstream infotext; - unsigned int i; - GtkDialog *infobox = GTK_DIALOG (gtk_dialog_new ()); - GtkButton *okay_button = GTK_BUTTON (gtk_button_new_with_label (_("Ok"))); - - GtkVBox *box = GTK_VBOX (gtk_vbox_new (TRUE, 2)); - GtkHBox *hbox = GTK_HBOX (gtk_hbox_new (TRUE, 2)); - GtkHBox *hbox2 = GTK_HBOX (gtk_hbox_new (TRUE, 2)); - - // Build file info box - gtk_window_set_title (GTK_WINDOW (infobox), _("AdPlug :: File Info")); - gtk_window_set_policy (GTK_WINDOW (infobox), FALSE, FALSE, TRUE); // Window is auto sized - - gtk_container_add (GTK_CONTAINER (infobox->vbox), GTK_WIDGET (box)); -// Former packer layout, for future reproduction -// gtk_packer_set_default_border_width(packer, 2); - - gtk_box_set_homogeneous (GTK_BOX (hbox), FALSE); - g_signal_connect_swapped (G_OBJECT (okay_button), "clicked", - G_CALLBACK (gtk_widget_destroy), - GTK_OBJECT (infobox)); - g_signal_connect (G_OBJECT (infobox), "destroy", - G_CALLBACK (close_infobox), 0); - gtk_container_add (GTK_CONTAINER (infobox->action_area), - GTK_WIDGET (okay_button)); - - // Add filename section -// Former packer layout, for future reproduction -// gtk_packer_add_defaults(packer, make_framed(print_left(filename), "Filename"), -// GTK_SIDE_TOP, GTK_ANCHOR_CENTER, GTK_FILL_X); - gtk_box_pack_end (GTK_BOX (box), GTK_WIDGET (hbox2), TRUE, TRUE, 2); - gtk_box_pack_end (GTK_BOX (box), - make_framed (print_left (filename), _("Filename")), TRUE, - TRUE, 2); - - // Add "Song info" section - infotext << _("Title: ") << p->gettitle () << std::endl << - _("Author: ") << p->getauthor () << std::endl << - _("File Type: ") << p->gettype () << std::endl << - _("Subsongs: ") << p->getsubsongs () << std::endl << - _("Instruments: ") << p->getinstruments (); - if (plr.p == p) - infotext << std::ends; - else - { - infotext << std::endl << _("Orders: ") << p->getorders () << std::endl << - _("Patterns: ") << p->getpatterns () << std::ends; - } - gtk_container_add (GTK_CONTAINER (hbox), - make_framed (print_left (infotext.str ().c_str ()), - _("Song"))); - - // Add "Playback info" section if currently playing - if (plr.p == p) - { - plr.infobox = GTK_LABEL (gtk_label_new ("")); - gtk_label_set_justify (plr.infobox, GTK_JUSTIFY_LEFT); - gtk_misc_set_padding (GTK_MISC (plr.infobox), 2, 2); - gtk_container_add (GTK_CONTAINER (hbox), - make_framed (GTK_WIDGET (plr.infobox), _("Playback"))); - } - -// Former packer layout, for future reproduction -// gtk_packer_add_defaults(packer, GTK_WIDGET(hbox), GTK_SIDE_TOP, -// GTK_ANCHOR_CENTER, GTK_FILL_X); - gtk_box_pack_end (GTK_BOX (hbox2), GTK_WIDGET (hbox), TRUE, TRUE, 2); - - // Add instrument names section - if (p->getinstruments ()) - { - GtkScrolledWindow *instwnd = - GTK_SCROLLED_WINDOW (gtk_scrolled_window_new (NULL, NULL)); - GtkCList *instnames; - gchar tmpstr[10]; - - { - const gchar *rowstr[] = { "#", _("Instrument name") }; - instnames = GTK_CLIST (gtk_clist_new_with_titles (2, (gchar **)rowstr)); - } - gtk_clist_set_column_justification (instnames, 0, GTK_JUSTIFY_RIGHT); - - for (i = 0; i < p->getinstruments (); i++) - { - sprintf (tmpstr, "%d", i + 1); - add_instlist (instnames, tmpstr, p->getinstrument (i).c_str ()); - } - - gtk_clist_columns_autosize (instnames); - gtk_scrolled_window_set_policy (instwnd, GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - gtk_container_add (GTK_CONTAINER (instwnd), GTK_WIDGET (instnames)); -// Former packer layout, for future reproduction -// gtk_packer_add(packer, GTK_WIDGET(instwnd), GTK_SIDE_TOP, -// GTK_ANCHOR_CENTER, GTK_FILL_X, 0, 0, 0, 0, 50); - gtk_box_pack_end (GTK_BOX (hbox2), GTK_WIDGET (instwnd), TRUE, TRUE, 2); - } - - // Add "Song message" section - if (!p->getdesc ().empty ()) - { - GtkScrolledWindow *msgwnd = - GTK_SCROLLED_WINDOW (gtk_scrolled_window_new (NULL, NULL)); - GtkTextView *msg = GTK_TEXT_VIEW (gtk_text_view_new ()); - - gtk_scrolled_window_set_policy (msgwnd, GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - gtk_text_view_set_editable (msg, FALSE); - gtk_text_view_set_wrap_mode (msg, GTK_WRAP_WORD_CHAR); - - gtk_text_buffer_set_text (gtk_text_view_get_buffer (msg), - p->getdesc ().c_str (), - p->getdesc ().length ()); - gtk_container_add (GTK_CONTAINER (msgwnd), GTK_WIDGET (msg)); - -// Former packer layout, for future reproduction -// gtk_packer_add(packer, make_framed(GTK_WIDGET(msgwnd), "Song message"), -// GTK_SIDE_TOP, GTK_ANCHOR_CENTER, GTK_FILL_X, 2, 0, 0, 200, 50); - gtk_box_pack_end (GTK_BOX (hbox2), - make_framed (GTK_WIDGET (msgwnd), _("Song message")), TRUE, - TRUE, 2); - } - - // Add subsong slider section - if (p == plr.p && p->getsubsongs () > 1) - { - GtkAdjustment *adj = - GTK_ADJUSTMENT (gtk_adjustment_new (plr.subsong + 1, 1, - p->getsubsongs () + 1, - 1, 5, 1)); - GtkHScale *slider = GTK_HSCALE (gtk_hscale_new (adj)); - - g_signal_connect (G_OBJECT (adj), "value_changed", - G_CALLBACK (subsong_slider), NULL); - gtk_range_set_update_policy (GTK_RANGE (slider), - GTK_UPDATE_DISCONTINUOUS); - gtk_scale_set_digits (GTK_SCALE (slider), 0); -// Former packer layout, for future reproduction -// gtk_packer_add_defaults(packer, make_framed(GTK_WIDGET(slider), "Subsong selection"), -// GTK_SIDE_TOP, GTK_ANCHOR_CENTER, GTK_FILL_X); - gtk_box_pack_end (GTK_BOX (hbox2), - make_framed (GTK_WIDGET (slider), _("Subsong selection")), - TRUE, TRUE, 2); - } - - // Show dialog box - gtk_widget_show_all (GTK_WIDGET (infobox)); - if (p == plr.p) - { // Remember widget, so we could destroy it later - plr.infodlg = infobox; - } - else // Delete temporary player - delete p; -} - /***** Main player (!! threaded !!) *****/ -extern "C" Tuple* -adplug_get_tuple (const gchar *filename) +extern "C" Tuple * adplug_get_tuple (const gchar * filename, VFSFile * fd) { Tuple * ti = NULL; CSilentopl tmpopl; - VFSFile *fd = vfs_buffered_file_new_from_uri (filename); if (!fd) return NULL; @@ -671,79 +145,40 @@ ti = tuple_new_from_filename (filename); if (! p->getauthor().empty()) - tuple_associate_string(ti, FIELD_ARTIST, NULL, p->getauthor().c_str()); + tuple_set_str(ti, FIELD_ARTIST, NULL, p->getauthor().c_str()); if (! p->gettitle().empty()) - tuple_associate_string(ti, FIELD_TITLE, NULL, p->gettitle().c_str()); + tuple_set_str(ti, FIELD_TITLE, NULL, p->gettitle().c_str()); else if (! p->getdesc().empty()) - tuple_associate_string(ti, FIELD_TITLE, NULL, p->getdesc().c_str()); + tuple_set_str(ti, FIELD_TITLE, NULL, p->getdesc().c_str()); else - tuple_associate_string(ti, FIELD_TITLE, NULL, g_path_get_basename(filename)); - tuple_associate_string(ti, FIELD_CODEC, NULL, p->gettype().c_str()); - tuple_associate_string(ti, FIELD_QUALITY, NULL, "sequenced"); - tuple_associate_int(ti, FIELD_LENGTH, NULL, p->songlength (plr.subsong)); + tuple_set_str(ti, FIELD_TITLE, NULL, g_path_get_basename(filename)); + tuple_set_str(ti, FIELD_CODEC, NULL, p->gettype().c_str()); + tuple_set_str(ti, FIELD_QUALITY, NULL, "sequenced"); + tuple_set_int(ti, FIELD_LENGTH, NULL, p->songlength (plr.subsong)); delete p; } - vfs_fclose (fd); return ti; } -static char* format_and_free_ti( Tuple* ti, int* length ) -{ - char* result = tuple_formatter_make_title_string(ti, aud_get_gentitle_format()); - if ( result ) - *length = tuple_get_int(ti, FIELD_LENGTH, NULL); - tuple_free((void *) ti); - - return result; -} - -static void -update_infobox (void) -{ - std::ostringstream infotext; - - // Recreate info string - infotext << _("Order: ") << plr.p->getorder () << " / " << plr.p-> - getorders () << std::endl << _("Pattern: ") << plr.p-> - getpattern () << " / " << plr.p-> - getpatterns () << std::endl << _("Row: ") << plr.p-> - getrow () << std::endl << _("Speed: ") << plr.p-> - getspeed () << std::endl << _("Timer: ") << plr.p-> - getrefresh () << _("Hz") << std::ends; - - GDK_THREADS_ENTER (); - gtk_label_set_text (plr.infobox, infotext.str ().c_str ()); - GDK_THREADS_LEAVE (); -} - // Define sampsize macro (only usable inside play_loop()!) #define sampsize ((bit16 ? 2 : 1) * (stereo ? 2 : 1)) -static void * -play_loop (void *data) +static gboolean play_loop (InputPlayback * playback, const gchar * filename, + VFSFile * fd) /* Main playback thread. Takes the filename to play as argument. */ { - InputPlayback *playback = (InputPlayback *) data; - char *filename = (char *) playback->filename; dbg_printf ("play_loop(\"%s\"): ", filename); CEmuopl opl (conf.freq, conf.bit16, conf.stereo); long toadd = 0, i, towrite; char *sndbuf, *sndbufpos; - int songlength = 0; bool playing = true, // Song self-end indicator. bit16 = conf.bit16, // Duplicate config, so it doesn't affect us if stereo = conf.stereo; // the user changes it while we're playing. unsigned long freq = conf.freq; - gboolean paused = FALSE; - - // we use VfsBufferedFile class here because adplug does a lot of - // probing. a short delay before probing begins is better than - // a lot of delay during probing. - VFSFile *fd = vfs_buffered_file_new_from_uri (playback->filename); if (!fd) - return (NULL); + return FALSE; // Try to load module dbg_printf ("factory, "); @@ -751,23 +186,15 @@ { dbg_printf ("error!\n"); // MessageBox("AdPlug :: Error", "File could not be opened!", "Ok"); - return (NULL); - } - - // cache song title & length from tuple - dbg_printf ("title, "); - Tuple* ti = adplug_get_tuple(filename); - if (ti) - { - plr.songtitle = format_and_free_ti( ti, &songlength ); + return FALSE; } - plr.songlength = songlength; // reset to first subsong on new file dbg_printf ("subsong, "); - if (strcmp (filename, plr.filename)) + if (! plr.filename || strcmp (filename, plr.filename)) { - strcpy (plr.filename, filename); + g_free (plr.filename); + plr.filename = g_strdup (filename); plr.subsong = 0; } @@ -777,18 +204,15 @@ // Set XMMS main window information dbg_printf ("xmms, "); - playback->set_params (playback, NULL, 0, freq * sampsize * 8, - freq, stereo ? 2 : 1); + playback->set_params (playback, freq * sampsize * 8, freq, stereo ? 2 : 1); // Rewind player to right subsong dbg_printf ("rewind, "); plr.p->rewind (plr.subsong); - plr.time_ms = 0; g_mutex_lock (control_mutex); plr.seek = -1; - pause_flag = FALSE; - playback->playing = TRUE; + stop_flag = FALSE; playback->set_pb_ready (playback); g_mutex_unlock (control_mutex); @@ -798,7 +222,7 @@ { g_mutex_lock (control_mutex); - if (! playback->playing) + if (stop_flag) { g_mutex_unlock (control_mutex); break; @@ -807,37 +231,25 @@ // seek requested ? if (plr.seek != -1) { + gint time = playback->output->written_time (); + // backward seek ? - if (plr.seek < plr.time_ms) + if (plr.seek < time) { plr.p->rewind (plr.subsong); - plr.time_ms = 0.0f; + time = 0; } // seek to requested position - while ((plr.time_ms < plr.seek) && plr.p->update ()) - plr.time_ms += 1000 / plr.p->getrefresh (); + while (time < plr.seek && plr.p->update ()) + time += (gint) (1000 / plr.p->getrefresh ()); // Reset output plugin and some values - playback->output->flush ((int) plr.time_ms); + playback->output->flush (time); plr.seek = -1; g_cond_signal (control_cond); } - if (pause_flag != paused) - { - playback->output->pause (pause_flag); - paused = pause_flag; - g_cond_signal (control_cond); - } - - if (paused) - { - g_cond_wait (control_cond, control_mutex); - g_mutex_unlock (control_mutex); - continue; - } - g_mutex_unlock (control_mutex); // fill sound buffer @@ -849,7 +261,6 @@ { toadd += freq; playing = plr.p->update (); - plr.time_ms += 1000 / plr.p->getrefresh (); } i = MIN (towrite, (long) (toadd / plr.p->getrefresh () + 4) & ~3); opl.update ((short *) sndbufpos, i); @@ -859,18 +270,13 @@ } playback->output->write_audio (sndbuf, SNDBUFSIZE * sampsize); - - // update infobox, if necessary - if (plr.infobox) - update_infobox (); } - g_mutex_lock (control_mutex); - - while (playback->playing && playback->output->buffer_playing ()) + while (playback->output->buffer_playing ()) g_usleep (10000); - playback->playing = FALSE; + g_mutex_lock (control_mutex); + stop_flag = FALSE; g_cond_signal (control_cond); /* wake up any waiting request */ g_mutex_unlock (control_mutex); @@ -878,15 +284,9 @@ dbg_printf ("free"); delete plr.p; plr.p = 0; - if (plr.songtitle) - { - free (plr.songtitle); - plr.songtitle = NULL; - } free (sndbuf); dbg_printf (".\n"); - vfs_fclose (fd); - return (NULL); + return TRUE; } // sampsize macro not useful anymore. @@ -925,7 +325,7 @@ // On new song, re-open "Song info" dialog, if open dbg_printf ("dialog, "); - if (plr.infobox && strcmp (filename, plr.filename)) + if (plr.infobox && (! plr.filename || strcmp (filename, plr.filename))) gtk_widget_destroy (GTK_WIDGET (plr.infodlg)); // open output plugin @@ -938,48 +338,44 @@ return TRUE; } - play_loop (playback); + play_loop (playback, filename, file); playback->output->close_audio (); return FALSE; } -extern "C" void adplug_stop (InputPlayback * playback) +extern "C" void adplug_stop (InputPlayback * p) { g_mutex_lock (control_mutex); - if (playback->playing) + if (! stop_flag) { - playback->playing = FALSE; + stop_flag = TRUE; + p->output->abort_write (); g_cond_signal (control_cond); - g_mutex_unlock (control_mutex); - g_thread_join (playback->thread); - playback->thread = NULL; + g_cond_wait (control_cond, control_mutex); } - else - g_mutex_unlock (control_mutex); + + g_mutex_unlock (control_mutex); } -extern "C" void adplug_pause (InputPlayback * playback, gshort paused) +extern "C" void adplug_pause (InputPlayback * p, gboolean pause) { g_mutex_lock (control_mutex); - if (playback->playing) - { - pause_flag = paused; - g_cond_signal (control_cond); - g_cond_wait (control_cond, control_mutex); - } + if (! stop_flag) + p->output->pause (pause); g_mutex_unlock (control_mutex); } -extern "C" void adplug_mseek (InputPlayback * data, gulong time) +extern "C" void adplug_mseek (InputPlayback * p, gint time) { g_mutex_lock (control_mutex); - if (playback->playing) + if (! stop_flag) { plr.seek = time; + p->output->abort_write(); g_cond_signal (control_cond); g_cond_wait (control_cond, control_mutex); } @@ -991,38 +387,40 @@ #define CFG_VERSION "AdPlug" -extern "C" void -adplug_init (void) -{ - dbg_printf ("adplug_init(): open, "); - mcs_handle_t *db = aud_cfg_db_open (); - - // Read configuration - dbg_printf ("read, "); - aud_cfg_db_get_bool (db, CFG_VERSION, "16bit", (gboolean *) & conf.bit16); - aud_cfg_db_get_bool (db, CFG_VERSION, "Stereo", (gboolean *) & conf.stereo); - aud_cfg_db_get_int (db, CFG_VERSION, "Frequency", (gint *) & conf.freq); - aud_cfg_db_get_bool (db, CFG_VERSION, "Endless", - (gboolean *) & conf.endless); +static const gchar * const adplug_defaults[] = { + "16bit", "TRUE", + "Stereo", "FALSE", + "Frequency", "44100", + "Endless", "FALSE", + NULL}; + +extern "C" gboolean adplug_init (void) +{ + aud_config_set_defaults (CFG_VERSION, adplug_defaults); + + conf.bit16 = aud_get_bool (CFG_VERSION, "16bit"); + conf.stereo = aud_get_bool (CFG_VERSION, "Stereo"); + conf.freq = aud_get_int (CFG_VERSION, "Frequency"); + conf.endless = aud_get_bool (CFG_VERSION, "Endless"); // Read file type exclusion list dbg_printf ("exclusion, "); { - gchar *cfgstr = NULL, *exclude = NULL; - gboolean cfgread; + gchar * cfgstr = aud_get_string (CFG_VERSION, "Exclude"); - cfgread = aud_cfg_db_get_string (db, CFG_VERSION, "Exclude", &cfgstr); - if (cfgread) { - exclude = (char *) malloc (strlen (cfgstr) + 2); + if (cfgstr[0]) + { + gchar * exclude = (gchar *) malloc (strlen (cfgstr) + 2); strcpy (exclude, cfgstr); exclude[strlen (exclude) + 1] = '\0'; g_strdelimit (exclude, ":", '\0'); for (gchar * p = exclude; *p; p += strlen (p) + 1) conf.players.remove (conf.players.lookup_filetype (p)); - free (exclude); free (cfgstr); + free (exclude); } + + g_free (cfgstr); } - aud_cfg_db_close (db); // Load database from disk and hand it to AdPlug dbg_printf ("database"); @@ -1046,25 +444,24 @@ control_mutex = g_mutex_new (); control_cond = g_cond_new (); + return TRUE; } extern "C" void adplug_quit (void) { - dbg_printf ("adplug_quit(): open, "); - mcs_handle_t *db = aud_cfg_db_open (); - // Close database dbg_printf ("db, "); if (plr.db) delete plr.db; - // Write configuration - dbg_printf ("write, "); - aud_cfg_db_set_bool (db, CFG_VERSION, "16bit", conf.bit16); - aud_cfg_db_set_bool (db, CFG_VERSION, "Stereo", conf.stereo); - aud_cfg_db_set_int (db, CFG_VERSION, "Frequency", conf.freq); - aud_cfg_db_set_bool (db, CFG_VERSION, "Endless", conf.endless); + g_free (plr.filename); + plr.filename = NULL; + + aud_set_bool (CFG_VERSION, "16bit", conf.bit16); + aud_set_bool (CFG_VERSION, "Stereo", conf.stereo); + aud_set_int (CFG_VERSION, "Frequency", conf.freq); + aud_set_bool (CFG_VERSION, "Endless", conf.endless); dbg_printf ("exclude, "); std::string exclude; @@ -1077,13 +474,8 @@ exclude += ":"; exclude += (*i)->filetype; } - gchar *cfgval = g_strdup (exclude.c_str ()); - aud_cfg_db_set_string (db, CFG_VERSION, "Exclude", cfgval); - free (cfgval); - dbg_printf ("close"); - aud_cfg_db_close (db); - dbg_printf (".\n"); + aud_set_string (CFG_VERSION, "Exclude", exclude.c_str ()); g_mutex_free (control_mutex); g_cond_free (control_cond); diff -Nru audacious-plugins-2.4.4/src/adplug/adplug-xmms.h audacious-plugins-3.2/src/adplug/adplug-xmms.h --- audacious-plugins-2.4.4/src/adplug/adplug-xmms.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/adplug-xmms.h 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,39 @@ +/* + * AdPlug/XMMS - AdPlug XMMS Plugin + * Copyright (C) 2002, 2003 Simon Peter + * + * AdPlug/XMMS 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. + * + * This plugin 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 this plugin; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef ADPLUG_XMMS_H +#define ADPLUG_XMMS_H + +#include +#include + +gboolean adplug_init (void); +void adplug_quit (void); +void adplug_about (void); +void adplug_config (void); +void adplug_stop (InputPlayback * p); +gboolean adplug_play (InputPlayback * p, const gchar * filename, VFSFile * file, + gint start_time, gint stop_time, gboolean pause); +void adplug_pause (InputPlayback * p, gboolean pause); +void adplug_mseek (InputPlayback * p, gint time); +void adplug_info_box (const gchar * filename); +Tuple * adplug_get_tuple (const gchar * filename, VFSFile * file); +gboolean adplug_is_our_fd (const gchar * filename, VFSFile * file); + +#endif diff -Nru audacious-plugins-2.4.4/src/adplug/core/a2m.cxx audacious-plugins-3.2/src/adplug/core/a2m.cxx --- audacious-plugins-2.4.4/src/adplug/core/a2m.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/a2m.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -41,8 +41,8 @@ Ca2mLoader::CODESPERRANGE = ADPLUG_A2M_CODESPERRANGE, Ca2mLoader::TERMINATE = 256, Ca2mLoader::FIRSTCODE = ADPLUG_A2M_FIRSTCODE, - Ca2mLoader::MAXCHAR = FIRSTCODE + COPYRANGES * CODESPERRANGE - 1, - Ca2mLoader::SUCCMAX = MAXCHAR + 1, + Ca2mLoader::MAXCODE = FIRSTCODE + COPYRANGES * CODESPERRANGE - 1, + Ca2mLoader::SUCCMAX = MAXCODE + 1, Ca2mLoader::TWICEMAX = ADPLUG_A2M_TWICEMAX, Ca2mLoader::ROOT = 1, Ca2mLoader::MAXBUF = 42 * 1024, Ca2mLoader::MAXDISTANCE = 21389, Ca2mLoader::MAXSIZE = 21389 + MAXCOPY; @@ -73,7 +73,7 @@ int i, j, k, t; unsigned int l; unsigned char *org = NULL, *orgptr, flags = 0, numpats, version; - unsigned long crc, alength; + unsigned long alength; unsigned short len[9], *secdata, *secptr; const unsigned char convfx[16] = { 0, 1, 2, 23, 24, 3, 5, 4, 6, 9, 17, 13, 11, 19, 7, 14 }; @@ -87,7 +87,7 @@ // read header f->readString (id, 10); - crc = f->readInt (4); + f->readInt (4); version = f->readInt (1); numpats = f->readInt (1); @@ -370,7 +370,7 @@ freq[i] = 1; } - for (i = 1; i <= MAXCHAR; i++) + for (i = 1; i <= MAXCODE; i++) { leftc[i] = 2 * i; rghtc[i] = 2 * i + 1; @@ -499,7 +499,7 @@ else a = leftc[a]; ibitbuffer <<= 1; - } while (a <= MAXCHAR); + } while (a <= MAXCODE); a -= SUCCMAX; updatemodel (a); diff -Nru audacious-plugins-2.4.4/src/adplug/core/a2m.h audacious-plugins-3.2/src/adplug/core/a2m.h --- audacious-plugins-2.4.4/src/adplug/core/a2m.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/a2m.h 2012-01-20 19:48:30.000000000 +0000 @@ -59,7 +59,7 @@ #define ADPLUG_A2M_TWICEMAX (2 * ADPLUG_A2M_MAXCHAR + 1) static const unsigned int MAXFREQ, MINCOPY, MAXCOPY, COPYRANGES, - CODESPERRANGE, TERMINATE, FIRSTCODE, MAXCHAR, SUCCMAX, TWICEMAX, ROOT, + CODESPERRANGE, TERMINATE, FIRSTCODE, MAXCODE, SUCCMAX, TWICEMAX, ROOT, MAXBUF, MAXDISTANCE, MAXSIZE; static const unsigned short bitvalue[14]; diff -Nru audacious-plugins-2.4.4/src/adplug/core/adl.cxx audacious-plugins-3.2/src/adplug/core/adl.cxx --- audacious-plugins-2.4.4/src/adplug/core/adl.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/adl.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -2751,7 +2751,7 @@ CadlPlayer::load (VFSFile * fd, const CFileProvider & fp) { binistream *f = fp.open (fd); - std::string filename (fd->uri); + std::string filename (vfs_get_filename (fd)); // file validation section if (!f || !fp.extension (filename, ".adl")) diff -Nru audacious-plugins-2.4.4/src/adplug/core/adplug.cxx audacious-plugins-3.2/src/adplug/core/adplug.cxx --- audacious-plugins-2.4.4/src/adplug/core/adplug.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/adplug.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,17 +1,17 @@ /* * Adplug - Replayer for many OPL2/OPL3 audio file formats. * Copyright (C) 1999 - 2008 Simon Peter , et al. - * + * * This library 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. - * + * * This library 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 this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA @@ -199,7 +199,7 @@ // Try a direct hit by file extension for (i = pl.begin (); i != pl.end (); i++) for (j = 0; (*i)->get_extension (j); j++) - if (fp.extension (fd->uri, (*i)->get_extension (j))) + if (fp.extension (vfs_get_filename (fd), (*i)->get_extension (j))) { AdPlug_LogWrite ("Trying direct hit: %s\n", (*i)->filetype.c_str ()); vfs_rewind (fd); diff -Nru audacious-plugins-2.4.4/src/adplug/core/adtrack.cxx audacious-plugins-3.2/src/adplug/core/adtrack.cxx --- audacious-plugins-2.4.4/src/adplug/core/adtrack.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/adtrack.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,17 +1,17 @@ /* * Adplug - Replayer for many OPL2/OPL3 audio file formats. * Copyright (C) 1999 - 2003 Simon Peter , et al. - * + * * This library 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. - * + * * This library 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 this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA @@ -55,7 +55,7 @@ unsigned char chp, octave, pnote = 0; int i, j; AdTrackInst myinst; - std::string filename (fd->uri); + std::string filename (vfs_get_filename (fd)); // file validation if (!fp.extension (filename, ".sng") || fp.filesize (f) != 36000) diff -Nru audacious-plugins-2.4.4/src/adplug/core/binio_virtual.h audacious-plugins-3.2/src/adplug/core/binio_virtual.h --- audacious-plugins-2.4.4/src/adplug/core/binio_virtual.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/binio_virtual.h 2012-01-20 19:48:30.000000000 +0000 @@ -7,55 +7,37 @@ #define __BINIO_VIRTUAL__ #include +#include extern "C" { +#include #include }; class vfsistream : public binistream { private: - VFSFile *fd; + VFSFile *fd; bool own; public: - vfsistream() { - this->fd = 0; - }; - - ~vfsistream() { - if (this->fd) { - vfs_fclose(this->fd); - this->fd = 0; - } - }; - - vfsistream(VFSFile *fd) { - this->fd = fd; - }; - - vfsistream(const char *file) { - this->fd = vfs_fopen(file, "r"); - if (!this->fd) - err |= NotFound; - }; - - vfsistream(std::string &file) { - this->fd = vfs_fopen(file.c_str(), "r"); - if (!this->fd) - err |= NotFound; - }; + vfsistream(VFSFile *fd = 0) { this->fd = fd; this->own = false; }; void open(const char *file) { g_return_if_fail(!this->fd); - this->fd = vfs_fopen(file, "r"); - if (!this->fd) + if ((this->fd = vfs_fopen(file, "r"))) + this->own = true; + else err |= NotFound; }; - void open(std::string &file) { - g_return_if_fail(!this->fd); - this->fd = vfs_fopen(file.c_str(), "r"); - if (!this->fd) - err |= NotFound; + void open(std::string &file) { open(file.c_str()); }; + + vfsistream(const char *file) { this->fd = 0; this->own = false; open(file); }; + vfsistream(std::string &file) { this->fd = 0; this->own = false; open(file); }; + + ~vfsistream() { + if (this->own) + vfs_fclose(this->fd); + this->fd = 0; this->own = false; }; Byte getByte(void) { @@ -81,48 +63,28 @@ class vfsostream : public binostream { private: - VFSFile *fd; + VFSFile *fd; bool own; public: - vfsostream() { - this->fd = 0; - }; - - ~vfsostream() { - if (this->fd) { - vfs_fclose(this->fd); - this->fd = 0; - } - }; - - vfsostream(VFSFile *fd) { - this->fd = fd; - }; - - vfsostream(const char *file) { - this->fd = vfs_fopen(file, "w"); - if (!this->fd) - err |= Denied; - }; - - vfsostream(std::string &file) { - this->fd = vfs_fopen(file.c_str(), "w"); - if (!this->fd) - err |= Denied; - }; + vfsostream(VFSFile *fd = 0) { this->fd = fd; this->own = false; }; void open(const char *file) { g_return_if_fail(!this->fd); - this->fd = vfs_fopen(file, "w"); - if (!this->fd) + if ((this->fd = vfs_fopen(file, "w"))) + this->own = true; + else err |= Denied; }; - void open(std::string &file) { - g_return_if_fail(!this->fd); - this->fd = vfs_fopen(file.c_str(), "w"); - if (!this->fd) - err |= Denied; + void open(std::string &file) { open(file.c_str()); }; + + vfsostream(const char *file) { this->fd = 0; this->own = false; open(file); }; + vfsostream(std::string &file) { this->fd = 0; this->own = false; open(file); }; + + ~vfsostream() { + if (this->own) + vfs_fclose(this->fd); + this->fd = 0; this->own = false; }; void putByte(Byte b) { diff -Nru audacious-plugins-2.4.4/src/adplug/core/cff.cxx audacious-plugins-3.2/src/adplug/core/cff.cxx --- audacious-plugins-2.4.4/src/adplug/core/cff.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/cff.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -396,7 +396,10 @@ } for (unsigned int i = 0; i < repeat_counter * repeat_length; i++) - output[output_length++] = output[output_length - repeat_length]; + { + output[output_length] = output[output_length - repeat_length]; + output_length++; + } code_length = old_code_length; diff -Nru audacious-plugins-2.4.4/src/adplug/core/d00.cxx audacious-plugins-3.2/src/adplug/core/d00.cxx --- audacious-plugins-2.4.4/src/adplug/core/d00.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/d00.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,17 +1,17 @@ /* * Adplug - Replayer for many OPL2/OPL3 audio file formats. * Copyright (C) 1999 - 2007 Simon Peter, , et al. - * + * * This library 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. - * + * * This library 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 this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA @@ -66,7 +66,7 @@ unsigned long filesize; int i, ver1 = 0; char *str; - std::string filename (fd->uri); + std::string filename (vfs_get_filename (fd)); // file validation section checkhead = new d00header; diff -Nru audacious-plugins-2.4.4/src/adplug/core/debug.h audacious-plugins-3.2/src/adplug/core/debug.h --- audacious-plugins-2.4.4/src/adplug/core/debug.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/debug.h 2012-01-20 19:48:30.000000000 +0000 @@ -32,6 +32,8 @@ #ifndef H_DEBUG #define H_DEBUG +#define ADL_DEBUG + extern "C" { void AdPlug_LogFile(const char *filename); diff -Nru audacious-plugins-2.4.4/src/adplug/core/dmo.cxx audacious-plugins-3.2/src/adplug/core/dmo.cxx --- audacious-plugins-2.4.4/src/adplug/core/dmo.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/dmo.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -55,7 +55,7 @@ { int i, j; binistream *f; - std::string filename (fd->uri); + std::string filename (vfs_get_filename (fd)); // check header dmo_unpacker *unpacker = new dmo_unpacker; @@ -63,9 +63,15 @@ f = fp.open (fd); if (!f) + { + delete unpacker; return false; + } if (!fp.extension (filename, ".dmo")) + { + delete unpacker; return false; + } f->readString ((char *) chkhdr, 16); diff -Nru audacious-plugins-2.4.4/src/adplug/core/fmopl.c audacious-plugins-3.2/src/adplug/core/fmopl.c --- audacious-plugins-2.4.4/src/adplug/core/fmopl.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/fmopl.c 2012-01-20 19:48:30.000000000 +0000 @@ -31,7 +31,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#define INLINE __inline #define HAS_YM3812 1 #include @@ -244,7 +243,7 @@ /* --------------------- subroutines --------------------- */ -INLINE int Limit( int val, int max, int min ) { +static inline int Limit( int val, int max, int min ) { if ( val > max ) val = max; else if ( val < min ) @@ -254,7 +253,7 @@ } /* status set and IRQ handling */ -INLINE void OPL_STATUS_SET(FM_OPL *OPL,int flag) +static inline void OPL_STATUS_SET(FM_OPL *OPL,int flag) { /* set status flag */ OPL->status |= flag; @@ -270,7 +269,7 @@ } /* status reset and IRQ handling */ -INLINE void OPL_STATUS_RESET(FM_OPL *OPL,int flag) +static inline void OPL_STATUS_RESET(FM_OPL *OPL,int flag) { /* reset status flag */ OPL->status &=~flag; @@ -286,7 +285,7 @@ } /* IRQ mask set */ -INLINE void OPL_STATUSMASK_SET(FM_OPL *OPL,int flag) +static inline void OPL_STATUSMASK_SET(FM_OPL *OPL,int flag) { OPL->statusmask = flag; /* IRQ handling check */ @@ -295,7 +294,7 @@ } /* ----- key on ----- */ -INLINE void OPL_KEYON(OPL_SLOT *SLOT) +static inline void OPL_KEYON(OPL_SLOT *SLOT) { /* sin wave restart */ SLOT->Cnt = 0; @@ -306,7 +305,7 @@ SLOT->eve = EG_AED; } /* ----- key off ----- */ -INLINE void OPL_KEYOFF(OPL_SLOT *SLOT) +static inline void OPL_KEYOFF(OPL_SLOT *SLOT) { if( SLOT->evm > ENV_MOD_RR) { @@ -322,7 +321,7 @@ /* ---------- calcrate Envelope Generator & Phase Generator ---------- */ /* return : envelope output */ -INLINE UINT32 OPL_CALC_SLOT( OPL_SLOT *SLOT ) +static inline UINT32 OPL_CALC_SLOT( OPL_SLOT *SLOT ) { /* calcrate envelope generator */ if( (SLOT->evc+=SLOT->evs) >= SLOT->eve ) @@ -368,7 +367,7 @@ } /* ---------- frequency counter for operater update ---------- */ -INLINE void CALC_FCSLOT(OPL_CH *CH,OPL_SLOT *SLOT) +static inline void CALC_FCSLOT(OPL_CH *CH,OPL_SLOT *SLOT) { int ksr; @@ -388,7 +387,7 @@ } /* set multi,am,vib,EG-TYP,KSR,mul */ -INLINE void set_mul(FM_OPL *OPL,int slot,int v) +static inline void set_mul(FM_OPL *OPL,int slot,int v) { OPL_CH *CH = &OPL->P_CH[slot/2]; OPL_SLOT *SLOT = &CH->SLOT[slot&1]; @@ -402,7 +401,7 @@ } /* set ksl & tl */ -INLINE void set_ksl_tl(FM_OPL *OPL,int slot,int v) +static inline void set_ksl_tl(FM_OPL *OPL,int slot,int v) { OPL_CH *CH = &OPL->P_CH[slot/2]; OPL_SLOT *SLOT = &CH->SLOT[slot&1]; @@ -418,7 +417,7 @@ } /* set attack rate & decay rate */ -INLINE void set_ar_dr(FM_OPL *OPL,int slot,int v) +static inline void set_ar_dr(FM_OPL *OPL,int slot,int v) { OPL_CH *CH = &OPL->P_CH[slot/2]; OPL_SLOT *SLOT = &CH->SLOT[slot&1]; @@ -435,7 +434,7 @@ } /* set sustain level & release rate */ -INLINE void set_sl_rr(FM_OPL *OPL,int slot,int v) +static inline void set_sl_rr(FM_OPL *OPL,int slot,int v) { OPL_CH *CH = &OPL->P_CH[slot/2]; OPL_SLOT *SLOT = &CH->SLOT[slot&1]; @@ -452,7 +451,7 @@ /* operator output calcrator */ #define OP_OUT(slot,env,con) slot->wavetable[((slot->Cnt+con)/(0x1000000/SIN_ENT))&(SIN_ENT-1)][env] /* ---------- calcrate one of channel ---------- */ -INLINE void OPL_CALC_CH( OPL_CH *CH ) +static inline void OPL_CALC_CH( OPL_CH *CH ) { UINT32 env_out; OPL_SLOT *SLOT; @@ -497,7 +496,7 @@ /* ---------- calcrate rythm block ---------- */ #define WHITE_NOISE_db 6.0 -INLINE void OPL_CALC_RH( OPL_CH *CH ) +static inline void OPL_CALC_RH( OPL_CH *CH ) { UINT32 env_tam,env_sd,env_top,env_hh; int whitenoise = (rand()&1)*(WHITE_NOISE_db/EG_STEP); @@ -713,7 +712,7 @@ } /* CSM Key Controll */ -INLINE void CSMKeyControll(OPL_CH *CH) +static inline void CSMKeyControll(OPL_CH *CH) { OPL_SLOT *slot1 = &CH->SLOT[SLOT1]; OPL_SLOT *slot2 = &CH->SLOT[SLOT2]; diff -Nru audacious-plugins-2.4.4/src/adplug/core/hsc.cxx audacious-plugins-3.2/src/adplug/core/hsc.cxx --- audacious-plugins-2.4.4/src/adplug/core/hsc.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/hsc.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,17 +1,17 @@ /* * Adplug - Replayer for many OPL2/OPL3 audio file formats. * Copyright (C) 1999 - 2004 Simon Peter, , et al. - * + * * This library 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. - * + * * This library 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 this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA @@ -39,9 +39,10 @@ int i; // file validation section - if (!f || !fp.extension (fd->uri, ".hsc") || fp.filesize (f) > 59187) + if (!f || !fp.extension (vfs_get_filename (fd), ".hsc") || fp.filesize (f) > 59187) { - AdPlug_LogWrite ("ChscPlayer::load(\"%s\"): Not a HSC file!\n", fd->uri); + AdPlug_LogWrite ("ChscPlayer::load(\"%s\"): Not a HSC file!\n", + vfs_get_filename (fd)); fp.close (f); return false; } diff -Nru audacious-plugins-2.4.4/src/adplug/core/hsp.cxx audacious-plugins-3.2/src/adplug/core/hsp.cxx --- audacious-plugins-2.4.4/src/adplug/core/hsp.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/hsp.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,17 +1,17 @@ /* * Adplug - Replayer for many OPL2/OPL3 audio file formats. * Copyright (C) 1999 - 2004 Simon Peter, , et al. - * + * * This library 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. - * + * * This library 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 this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA @@ -37,7 +37,7 @@ return false; unsigned long i, j, orgsize, filesize; unsigned char *cmp, *org; - std::string filename (fd->uri); + std::string filename (vfs_get_filename (fd)); // file validation section if (!fp.extension (filename, ".hsp")) diff -Nru audacious-plugins-2.4.4/src/adplug/core/imf.cxx audacious-plugins-3.2/src/adplug/core/imf.cxx --- audacious-plugins-2.4.4/src/adplug/core/imf.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/imf.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,17 +1,17 @@ /* * Adplug - Replayer for many OPL2/OPL3 audio file formats. * Copyright (C) 1999 - 2006 Simon Peter , et al. - * + * * This library 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. - * + * * This library 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 this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA @@ -73,7 +73,7 @@ if (strncmp (header, "ADLIB", 5) || version != 1) { - if (!fp.extension (fd->uri, ".imf") && !fp.extension (fd->uri, ".wlf")) + if (!fp.extension (vfs_get_filename (fd), ".imf") && !fp.extension (vfs_get_filename (fd), ".wlf")) { // It's no IMF file at all fp.close (f); @@ -138,7 +138,7 @@ } } - rate = getrate (fd->uri, fp, f); + rate = getrate (vfs_get_filename (fd), fp, f); fp.close (f); rewind (0); return true; diff -Nru audacious-plugins-2.4.4/src/adplug/core/jbm.cxx audacious-plugins-3.2/src/adplug/core/jbm.cxx --- audacious-plugins-2.4.4/src/adplug/core/jbm.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/jbm.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,17 +1,17 @@ /* * Adplug - Replayer for many OPL2/OPL3 audio file formats. * Copyright (C) 1999 - 2007 Simon Peter, , et al. - * + * * This library 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. - * + * * This library 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 this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -24,7 +24,7 @@ * * This version doesn't use the binstr.h functions (coded with custom func.) * This is my first attempt on writing a musicplayer for AdPlug, and i'm not - * coding C++ very often.. + * coding C++ very often.. * * Released under the terms of the GNU General Public License. */ @@ -66,7 +66,7 @@ bool CjbmPlayer::load(VFSFile * fd, const CFileProvider & fp) { binistream *f = fp.open (fd); - std::string filename (fd->uri); + std::string filename (vfs_get_filename (fd)); int filelen = fp.filesize(f); int i; @@ -97,7 +97,7 @@ flags = GET_WORD(m, 8); - // Instrument datas are directly addressed with m[] + // Instrument datas are directly addressed with m[] inscount = (filelen - instable) >> 4; @@ -111,7 +111,7 @@ } seqcount = (seqcount - seqtable) >> 1; sequences = new unsigned short[seqcount]; - for (i = 0; i < seqcount; i++) + for (i = 0; i < seqcount; i++) sequences[i] = GET_WORD(m, seqtable + (i<<1)); rewind(0); @@ -289,6 +289,6 @@ // FEEDBACK/FM mode opl->write(0xc0 + channel, m[i+8]&15); - + return; } diff -Nru audacious-plugins-2.4.4/src/adplug/core/ksm.cxx audacious-plugins-3.2/src/adplug/core/ksm.cxx --- audacious-plugins-2.4.4/src/adplug/core/ksm.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/ksm.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,17 +1,17 @@ /* * Adplug - Replayer for many OPL2/OPL3 audio file formats. * Copyright (C) 1999 - 2006 Simon Peter, , et al. - * + * * This library 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. - * + * * This library 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 this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA @@ -48,7 +48,7 @@ { binistream *f; int i; - std::string filename (fd->uri); + std::string filename (vfs_get_filename (fd)); char *fn = new char[filename.length () + 9]; // file validation section @@ -56,6 +56,7 @@ { AdPlug_LogWrite ("CksmPlayer::load(,\"%s\"): File doesn't have '.ksm' " "extension! Rejected!\n", filename.c_str ()); + delete[]fn; return false; } AdPlug_LogWrite ("*** CksmPlayer::load(,\"%s\") ***\n", filename.c_str ()); diff -Nru audacious-plugins-2.4.4/src/adplug/core/lds.cxx audacious-plugins-3.2/src/adplug/core/lds.cxx --- audacious-plugins-2.4.4/src/adplug/core/lds.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/lds.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,17 +1,17 @@ /* * Adplug - Replayer for many OPL2/OPL3 audio file formats. * Copyright (C) 1999 - 2004 Simon Peter, , et al. - * + * * This library 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. - * + * * This library 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 this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA @@ -96,7 +96,7 @@ binistream *f; unsigned int i, j; SoundBank *sb; - std::string filename (fd->uri); + std::string filename (vfs_get_filename (fd)); // file validation section (actually just an extension check) f = fp.open (fd); diff -Nru audacious-plugins-2.4.4/src/adplug/core/mid.cxx audacious-plugins-3.2/src/adplug/core/mid.cxx --- audacious-plugins-2.4.4/src/adplug/core/mid.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/mid.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,17 +1,17 @@ /* * Adplug - Replayer for many OPL2/OPL3 audio file formats. * Copyright (C) 1999 - 2005 Simon Peter, , et al. - * + * * This library 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. - * + * * This library 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 this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA @@ -280,7 +280,7 @@ return false; int good; unsigned char s[6]; - std::string filename (fd->uri); + std::string filename (vfs_get_filename (fd)); f->readString ((char *) s, 6); good = 0; @@ -818,7 +818,7 @@ if (w!=0) { midiprintf("\n<%d>",w); - f = + f = ((float)w/(float)deltas)*((float)msqtr/(float)1000000); if (doing==1) f=0; //not playing yet. don't wait yet } diff -Nru audacious-plugins-2.4.4/src/adplug/core/mkj.cxx audacious-plugins-3.2/src/adplug/core/mkj.cxx --- audacious-plugins-2.4.4/src/adplug/core/mkj.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/mkj.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -82,7 +82,7 @@ AdPlug_LogWrite ("CmkjPlayer::load(\"%s\"): loaded file ver %.2f, %d channels," - " %d notes/channel.\n", fd->uri, ver, maxchannel, maxnotes); + " %d notes/channel.\n", vfs_get_filename (fd), ver, maxchannel, maxnotes); fp.close (f); rewind (0); return true; diff -Nru audacious-plugins-2.4.4/src/adplug/core/rix.cxx audacious-plugins-3.2/src/adplug/core/rix.cxx --- audacious-plugins-2.4.4/src/adplug/core/rix.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/rix.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -89,7 +89,7 @@ if (!f) return false; unsigned long i = 0; - std::string filename (fd->uri); + std::string filename (vfs_get_filename (fd)); if (stricmp (filename.substr (filename.length () - 4, 4).c_str (), ".mkf") == 0) diff -Nru audacious-plugins-2.4.4/src/adplug/core/rol.cxx audacious-plugins-3.2/src/adplug/core/rol.cxx --- audacious-plugins-2.4.4/src/adplug/core/rol.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/rol.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -95,7 +95,7 @@ bool CrolPlayer::load(VFSFile *fd, const CFileProvider &fp) { binistream *f = fp.open(fd); if(!f) return false; - std::string filename(fd->uri); + std::string filename(vfs_get_filename (fd)); char *fn = new char[filename.length()+12]; int i; diff -Nru audacious-plugins-2.4.4/src/adplug/core/sa2.cxx audacious-plugins-3.2/src/adplug/core/sa2.cxx --- audacious-plugins-2.4.4/src/adplug/core/sa2.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/core/sa2.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -190,7 +190,7 @@ AdPlug_LogWrite ("Csa2Loader::load(\"%s\"): sat_type = %x, nop = %d, " "length = %d, restartpos = %d, activechan = %x, bpm = %d\n", - fd->uri, sat_type, nop, length, restartpos, activechan, + vfs_get_filename (fd), sat_type, nop, length, restartpos, activechan, bpm); // track data diff -Nru audacious-plugins-2.4.4/src/adplug/Makefile audacious-plugins-3.2/src/adplug/Makefile --- audacious-plugins-2.4.4/src/adplug/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -63,5 +63,5 @@ LD = ${CXX} CFLAGS += ${PLUGIN_CFLAGS} CXXFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${BINIO_CFLAGS} -I../.. -I./core -Dstricmp=strcasecmp -LIBS += ${BINIO_LIBS} ${GTK_LIBS} ${GLIB_LIBS} ${MOWGLI_LIBS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${BINIO_CFLAGS} -I../.. -I./core -Dstricmp=strcasecmp +LIBS += ${BINIO_LIBS} ${GTK_LIBS} ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/adplug/plugin.c audacious-plugins-3.2/src/adplug/plugin.c --- audacious-plugins-2.4.4/src/adplug/plugin.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/adplug/plugin.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,16 +1,6 @@ #include -void adplug_init(void); -void adplug_quit(void); -void adplug_about(void); -void adplug_config(void); -void adplug_stop(InputPlayback * data); -gboolean adplug_play(InputPlayback * data, const gchar * filename, VFSFile * file, gint start_time, gint stop_time, gboolean pause); -void adplug_pause(InputPlayback * playback, gshort paused); -void adplug_mseek (InputPlayback * playback, gulong time); -void adplug_info_box(const gchar *filename); -Tuple* adplug_get_tuple(const gchar *filename); -int adplug_is_our_fd(const gchar * filename, VFSFile * fd); +#include "adplug-xmms.h" static const gchar *fmts[] = { "a2m", "adl", "amd", "bam", "cff", "cmf", "d00", "dfm", "dmo", "dro", @@ -19,22 +9,16 @@ "sng", "wlf", "xad", "xsm", NULL }; -InputPlugin adplug_ip = { - .description = "AdPlug (AdLib Sound Player)", +AUD_INPUT_PLUGIN +( + .name = "AdPlug (AdLib Sound Player)", .init = adplug_init, .cleanup = adplug_quit, - .about = adplug_about, - .configure = adplug_config, .play = adplug_play, .stop = adplug_stop, .pause = adplug_pause, .mseek = adplug_mseek, - .file_info_box = adplug_info_box, - .get_song_tuple = adplug_get_tuple, + .probe_for_tuple = adplug_get_tuple, .is_our_file_from_vfs = adplug_is_our_fd, - .vfs_extensions = fmts, -}; - -InputPlugin *adplug_iplist[] = { &adplug_ip, NULL }; - -DECLARE_PLUGIN(adplug, NULL, NULL, adplug_iplist, NULL, NULL, NULL, NULL,NULL); + .extensions = fmts, +) diff -Nru audacious-plugins-2.4.4/src/alarm/alarm.c audacious-plugins-3.2/src/alarm/alarm.c --- audacious-plugins-2.4.4/src/alarm/alarm.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/alarm/alarm.c 2012-01-20 19:48:30.000000000 +0000 @@ -24,12 +24,7 @@ * the next time I get bored */ -/* this file really should get split/cleaned up sometime ;) */ -#include "config.h" - -#if STDC_HEADERS -# include -#endif +#include #include #if TM_IN_SYS_TIME @@ -45,17 +40,64 @@ #include #include -#include #include #include +#include +#include #include +#include #include "alarm.h" +#include "config.h" #include "interface.h" #include "callbacks.h" -static pthread_t start_tid; /* thread id of alarm loop */ -static pthread_t stop_tid; /* thread id of stop loop */ +static const gchar * const alarm_defaults[] = { + /* general */ + "alarm_h", "6", + "alarm_m", "30", + "cmd_on", "FALSE", + "fading", "60", + "quietvol", "25", + "reminder_on", "FALSE", + "stop_h", "1", + "stop_m", "0", + "stop_on", "TRUE", + "volume", "80", + + /* days */ + "sun_flags", "3", + "sun_h", "6", + "sun_m", "30", + "mon_flags", "2", + "mon_h", "6", + "mon_m", "30", + "tue_flags", "2", + "tue_h", "6", + "tue_m", "30", + "wed_flags", "2", + "wed_h", "6", + "wed_m", "30", + "thu_flags", "2", + "thu_h", "6", + "thu_m", "30", + "fri_flags", "2", + "fri_h", "6", + "fri_m", "30", + "sat_flags", "2", + "sat_h", "6", + "sat_m", "30", + NULL}; + +typedef struct { + pthread_t tid; + volatile gboolean is_valid; +} alarm_thread_t; + +static gint timeout_source; +static time_t play_start; + +static alarm_thread_t stop; /* thread id of stop loop */ static pthread_mutex_t fader_lock = PTHREAD_MUTEX_INITIALIZER; static GeneralPlugin alarm_plugin; @@ -128,47 +170,12 @@ static GtkWidget *lookup_widget(GtkWidget *w, const gchar *name) { - GtkWidget *widget; - - widget = (GtkWidget*) gtk_object_get_data(GTK_OBJECT(w), - name); + GtkWidget * widget = g_object_get_data ((GObject *) w, name); g_return_val_if_fail(widget != NULL, NULL); return widget; } -static void dialog_destroyed(GtkWidget *dialog, gpointer data) -{ - AUDDBG("dialog destroyed\n"); - *(GtkObject**)data = NULL; -} - -static inline gboolean dialog_visible(GtkWidget *dialog) -{ - return(((dialog != NULL) && GTK_WIDGET_VISIBLE(dialog))); -} - -/* - * tell the user about that bug - */ -static void alarm_warning(void) -{ - - static GtkWidget *warning_dialog = NULL; - - if(dialog_visible(warning_dialog)) - return; - - warning_dialog = create_warning_dialog(); - - gtk_signal_connect(GTK_OBJECT(warning_dialog), "destroy", - GTK_SIGNAL_FUNC(dialog_destroyed), &warning_dialog); - - gtk_widget_show_all(warning_dialog); - - return; -} - /* * the callback function that is called when the save button is * pressed saves configuration to ~/.bmp/alarmconfig @@ -176,32 +183,19 @@ void alarm_save(GtkButton *w, gpointer data) { int daynum = 0; // used to identify day number - mcs_handle_t *conf; - - AUDDBG("alarm_save\n"); - - conf = aud_cfg_db_open(); /* * update the live values and write them out */ - alarm_h = alarm_conf.default_hour = - gtk_spin_button_get_value_as_int(alarm_conf.alarm_h); - aud_cfg_db_set_int(conf, "alarm", "alarm_h", alarm_h); - - alarm_m = alarm_conf.default_min = - gtk_spin_button_get_value_as_int(alarm_conf.alarm_m); - aud_cfg_db_set_int(conf, "alarm", "alarm_m", alarm_m); - + alarm_h = alarm_conf.default_hour = gtk_spin_button_get_value_as_int (alarm_conf.alarm_h); + aud_set_int ("alarm", "alarm_h", alarm_h); - stop_h = - gtk_spin_button_get_value_as_int( alarm_conf.stop_h); + alarm_m = alarm_conf.default_min = gtk_spin_button_get_value_as_int (alarm_conf.alarm_m); + aud_set_int ("alarm", "alarm_m", alarm_m); - stop_m = - gtk_spin_button_get_value_as_int(alarm_conf.stop_m); - - stop_on = - gtk_toggle_button_get_active(alarm_conf.stop_on); + stop_h = gtk_spin_button_get_value_as_int (alarm_conf.stop_h); + stop_m = gtk_spin_button_get_value_as_int (alarm_conf.stop_m); + stop_on = gtk_toggle_button_get_active (alarm_conf.stop_on); /* days of the week */ for(; daynum < 7; daynum++) @@ -219,210 +213,105 @@ alarm_conf.day[daynum].min = gtk_spin_button_get_value_as_int(alarm_conf.day[daynum].spin_min); - aud_cfg_db_set_int(conf, "alarm", day_flags[daynum], alarm_conf.day[daynum].flags); - aud_cfg_db_set_int(conf, "alarm", day_h[daynum], alarm_conf.day[daynum].hour); - aud_cfg_db_set_int(conf, "alarm", day_m[daynum], alarm_conf.day[daynum].min); + aud_set_int ("alarm", day_flags[daynum], alarm_conf.day[daynum].flags); + aud_set_int ("alarm", day_h[daynum], alarm_conf.day[daynum].hour); + aud_set_int ("alarm", day_m[daynum], alarm_conf.day[daynum].min); } /* END: days of week */ - volume = - gtk_range_get_adjustment(alarm_conf.volume)->value; - aud_cfg_db_set_int(conf, "alarm", "volume", volume); - - quietvol = - gtk_range_get_adjustment(alarm_conf.quietvol)->value; - aud_cfg_db_set_int(conf, "alarm", "quietvol", quietvol); - - fading = - gtk_spin_button_get_value_as_int(alarm_conf.fading); - //xmms_cfg_write_int(conf, "alarm", "fading", fading); - - /* lets check to see if we need to show the bug warning */ - if((stop_on == TRUE) && - ((((stop_h * 60) + stop_m) * 60) < (fading + 65))) - { - AUDDBG("Displaying bug warning, stop %dh %dm, fade %d\n", - stop_h, stop_m, fading); - alarm_warning(); - } - else if((stop_on == TRUE) && (fading < 10)) - { - AUDDBG("Displaying bug warning, stop %dh %dm, fade %d\n", - stop_h, stop_m, fading); - alarm_warning(); - } - else - { - /* write the new values */ - aud_cfg_db_set_int(conf, "alarm", "stop_h", stop_h); - aud_cfg_db_set_int(conf, "alarm", "stop_m", stop_m); - aud_cfg_db_set_int(conf, "alarm", "fading", fading); - aud_cfg_db_set_bool(conf, "alarm", "stop_on", stop_on); - } + volume = gtk_range_get_value (alarm_conf.volume); + aud_set_int ("alarm", "volume", volume); + quietvol = gtk_range_get_value (alarm_conf.quietvol); + aud_set_int ("alarm", "quietvol", quietvol); - g_free(cmdstr); - cmdstr = gtk_editable_get_chars(GTK_EDITABLE(alarm_conf.cmdstr), - 0, -1); - aud_cfg_db_set_string(conf, "alarm", "cmdstr", cmdstr); - - cmd_on = - gtk_toggle_button_get_active(alarm_conf.cmd_on); - aud_cfg_db_set_bool(conf, "alarm", "cmd_on", cmd_on); + fading = gtk_spin_button_get_value_as_int (alarm_conf.fading); - g_free(playlist); - playlist = gtk_editable_get_chars(GTK_EDITABLE(alarm_conf.playlist), - 0, -1); - aud_cfg_db_set_string(conf, "alarm", "playlist", playlist); + /* write the new values */ + aud_set_int ("alarm", "stop_h", stop_h); + aud_set_int ("alarm", "stop_m", stop_m); + aud_set_int ("alarm", "fading", fading); + aud_set_bool ("alarm", "stop_on", stop_on); + + g_free (cmdstr); + cmdstr = gtk_editable_get_chars ((GtkEditable *) alarm_conf.cmdstr, 0, -1); + aud_set_string ("alarm", "cmdstr", cmdstr); + + cmd_on = gtk_toggle_button_get_active (alarm_conf.cmd_on); + aud_set_bool ("alarm", "cmd_on", cmd_on); + + g_free (playlist); + playlist = gtk_editable_get_chars ((GtkEditable *) alarm_conf.playlist, 0, -1); + aud_set_string ("alarm", "playlist", playlist); /* reminder */ - g_free(alarm_conf.reminder_msg); - alarm_conf.reminder_msg = gtk_editable_get_chars(GTK_EDITABLE(alarm_conf.reminder), - 0, -1); - aud_cfg_db_set_string(conf, "alarm", "reminder_msg", alarm_conf.reminder_msg); - - alarm_conf.reminder_on = - gtk_toggle_button_get_active(alarm_conf.reminder_cb); - aud_cfg_db_set_bool(conf, "alarm", "reminder_on", alarm_conf.reminder_on); + g_free (alarm_conf.reminder_msg); + alarm_conf.reminder_msg = gtk_editable_get_chars ((GtkEditable *) alarm_conf.reminder, 0, -1); + aud_set_string ("alarm", "reminder_msg", alarm_conf.reminder_msg); - aud_cfg_db_close(conf); + alarm_conf.reminder_on = gtk_toggle_button_get_active (alarm_conf.reminder_cb); + aud_set_bool ("alarm", "reminder_on", alarm_conf.reminder_on); } /* * read the current configuration from the file */ -static void alarm_read_config() +static void alarm_read_config(void) { int daynum = 0; // used for day number - mcs_handle_t *conf; - AUDDBG("alarm_read_config\n"); + aud_config_set_defaults ("alarm", alarm_defaults); - conf = aud_cfg_db_open(); - - if(!aud_cfg_db_get_int(conf, "alarm", "alarm_h", &alarm_h)) - alarm_h = DEFAULT_ALARM_HOUR; - if(!aud_cfg_db_get_int(conf, "alarm", "alarm_m", &alarm_m)) - alarm_m = DEFAULT_ALARM_MIN; + alarm_h = aud_get_int ("alarm", "alarm_h"); + alarm_m = aud_get_int ("alarm", "alarm_m"); /* save them here too */ alarm_conf.default_hour = alarm_h; alarm_conf.default_min = alarm_m; - if(!aud_cfg_db_get_int( conf, "alarm", "stop_h", &stop_h)) - stop_h = DEFAULT_STOP_HOURS; - if(!aud_cfg_db_get_int( conf, "alarm", "stop_m", &stop_m)) - stop_m = DEFAULT_STOP_MINS; - if(!aud_cfg_db_get_bool(conf, "alarm", "stop_on", &stop_on)) - stop_on = TRUE; - - if(!aud_cfg_db_get_int(conf, "alarm", "volume", &volume)) - volume = DEFAULT_VOLUME; - if(!aud_cfg_db_get_int(conf, "alarm", "quietvol", &quietvol)) - quietvol = DEFAULT_QUIET_VOL; + stop_h = aud_get_int ("alarm", "stop_h"); + stop_m = aud_get_int ("alarm", "stop_m"); + stop_on = aud_get_bool ("alarm", "stop_on"); - if(!aud_cfg_db_get_int(conf, "alarm", "fading", &fading)) - fading = DEFAULT_FADING; + volume = aud_get_int ("alarm", "volume"); + quietvol = aud_get_int ("alarm", "quietvol"); - g_free(cmdstr); - if(!aud_cfg_db_get_string(conf, "alarm", "cmdstr", &cmdstr)) - cmdstr = g_strdup(""); - if(!aud_cfg_db_get_bool(conf, "alarm", "cmd_on", &cmd_on)) - cmd_on = FALSE; + fading = aud_get_int ("alarm", "fading"); - g_free(playlist); - if(!aud_cfg_db_get_string(conf, "alarm", "playlist", &playlist)) - playlist = g_strdup(""); + g_free (cmdstr); + cmdstr = aud_get_string ("alarm", "cmdstr"); + cmd_on = aud_get_bool ("alarm", "cmd_on"); - g_free(alarm_conf.reminder_msg); - if(!aud_cfg_db_get_string(conf, "alarm", "reminder_msg", &alarm_conf.reminder_msg)) - alarm_conf.reminder_msg = g_strdup(""); - if(!aud_cfg_db_get_bool(conf, "alarm", "reminder_on", &alarm_conf.reminder_on)) - alarm_conf.reminder_on = FALSE; + g_free (playlist); + playlist = aud_get_string ("alarm", "playlist"); + + g_free (alarm_conf.reminder_msg); + alarm_conf.reminder_msg = aud_get_string ("alarm", "reminder_msg"); + alarm_conf.reminder_on = aud_get_bool ("alarm", "reminder_on"); /* day flags and times */ for(; daynum < 7; daynum++) { /* read the flags */ - if(!aud_cfg_db_get_int(conf, "alarm", day_flags[daynum], &alarm_conf.day[daynum].flags)) { - // only turn alarm off by default on a sunday - if(daynum != 0) - alarm_conf.day[daynum].flags = DEFAULT_FLAGS; - else - alarm_conf.day[daynum].flags = DEFAULT_FLAGS | ALARM_OFF; - } + alarm_conf.day[daynum].flags = aud_get_int ("alarm", day_flags[daynum]); /* read the times */ - if(!aud_cfg_db_get_int(conf, "alarm", day_h[daynum], &alarm_conf.day[daynum].hour)) - alarm_conf.day[daynum].hour = DEFAULT_ALARM_HOUR; - - if(!aud_cfg_db_get_int(conf, "alarm", day_m[daynum], &alarm_conf.day[daynum].min)) - alarm_conf.day[daynum].min = DEFAULT_ALARM_MIN; + alarm_conf.day[daynum].hour = aud_get_int ("alarm", day_h[daynum]); + alarm_conf.day[daynum].min = aud_get_int ("alarm", day_m[daynum]); } - - aud_cfg_db_close(conf); - AUDDBG("END alarm_read_config\n"); } /* * display an about box */ -static void alarm_about() +static void alarm_about(void) { static GtkWidget *about_dialog = NULL; - AUDDBG("alarm_about\n"); - - if(dialog_visible(about_dialog)) - return; - - about_dialog = create_about_dialog(); - - gtk_signal_connect(GTK_OBJECT(about_dialog), "destroy", - GTK_SIGNAL_FUNC(dialog_destroyed), &about_dialog); - - gtk_widget_show_all(about_dialog); - - return; -} - -/* - * create a playlist file selection dialog - */ -static void alarm_playlist_browse(GtkButton *button, gpointer data) -{ - GtkWidget *fs; - gchar *dirname, *path; - - dirname = g_dirname(playlist); - AUDDBG("dirname = %s\n", dirname); - path = g_strdup_printf("%s/", dirname); - AUDDBG("path = %s\n", path); - g_free(dirname); - - fs = create_playlist_fileselection(); - - gtk_file_selection_set_filename(GTK_FILE_SELECTION(fs), path); - g_free(path); - - gtk_widget_show_all(fs); -} - -/* - * save selected playlist to the corresponding text entry - */ -void alarm_store_playlistname(GtkButton *button, gpointer data) -{ - GtkFileSelection *fs = GTK_FILE_SELECTION(data); - gchar *plist; - - AUDDBG("alarm_store_playlistname\n"); - - plist = g_strdup(gtk_file_selection_get_filename(fs)); - - gtk_entry_set_text(alarm_conf.playlist, plist); - g_free(plist); + audgui_simple_message (& about_dialog, GTK_MESSAGE_INFO, _("About Alarm"), + _("A plugin that can be used to start playing at a certain time.\n\n" + "Originally written by Adam Feakin and Daniel Stodden.")); } /* @@ -433,12 +322,7 @@ int daynum = 0; // used to loop days GtkWidget *w; - AUDDBG("alarm_configure\n"); - - /* - * dont want to show more than one config window - */ - if(dialog_visible(config_dialog)) + if (config_dialog) return; alarm_read_config(); @@ -471,18 +355,18 @@ w = lookup_widget(config_dialog, "vol_scale"); alarm_conf.volume = GTK_RANGE(w); gtk_range_set_adjustment(alarm_conf.volume, - GTK_ADJUSTMENT(gtk_adjustment_new(volume, - 0, - 100, 1, - 5, 0))); + GTK_ADJUSTMENT(gtk_adjustment_new(volume, + 0, + 100, 1, + 5, 0))); w = lookup_widget(config_dialog, "quiet_vol_scale"); alarm_conf.quietvol = GTK_RANGE(w); gtk_range_set_adjustment(alarm_conf.quietvol, - GTK_ADJUSTMENT(gtk_adjustment_new(quietvol, - 0, - 100, 1, - 5, 0))); + GTK_ADJUSTMENT(gtk_adjustment_new(quietvol, + 0, + 100, 1, + 5, 0))); /* days of week */ for(; daynum < 7; daynum++) @@ -490,7 +374,7 @@ w = lookup_widget(config_dialog, day_cb[daynum]); alarm_conf.day[daynum].cb = GTK_CHECK_BUTTON(w); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(alarm_conf.day[daynum].cb), - !(alarm_conf.day[daynum].flags & ALARM_OFF)); + !(alarm_conf.day[daynum].flags & ALARM_OFF)); w = lookup_widget(config_dialog, day_def[daynum]); alarm_conf.day[daynum].cb_def = GTK_CHECK_BUTTON(w); @@ -563,12 +447,8 @@ alarm_conf.reminder_cb = GTK_TOGGLE_BUTTON(w); gtk_toggle_button_set_active(alarm_conf.reminder_cb, alarm_conf.reminder_on); - w = lookup_widget(config_dialog, "playlist_browse_button"); - gtk_signal_connect(GTK_OBJECT(w), "clicked", - GTK_SIGNAL_FUNC(alarm_playlist_browse), NULL); - - gtk_signal_connect(GTK_OBJECT(config_dialog), "destroy", - GTK_SIGNAL_FUNC(dialog_destroyed), &config_dialog); + g_signal_connect (config_dialog, "destroy", (GCallback) gtk_widget_destroyed, + & config_dialog); gtk_widget_show_all(config_dialog); @@ -672,9 +552,9 @@ return; } -static inline pthread_t alarm_thread_create(void *(*start_routine)(void *), void *args, unsigned int detach) +static inline alarm_thread_t alarm_thread_create(void *(*start_routine)(void *), void *args, unsigned int detach) { - pthread_t tid; + alarm_thread_t thrd; pthread_attr_t attr; pthread_attr_init(&attr); @@ -686,9 +566,9 @@ pthread_attr_setschedpolicy(&attr, SCHED_OTHER); pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); - pthread_create(&tid, &attr, start_routine, args); + thrd.is_valid = (pthread_create(&thrd.tid, &attr, start_routine, args) == 0); - return(tid); + return thrd; } static void *alarm_fade(void *arg) @@ -744,7 +624,7 @@ { gint currvol; fader fade_vols; - pthread_t f_tid; + alarm_thread_t f; AUDDBG("alarm_stop_thread\n"); @@ -756,7 +636,7 @@ AUDDBG("alarm_stop triggered\n"); - if (dialog_visible(alarm_dialog)) + if (alarm_dialog) gtk_widget_destroy(alarm_dialog); aud_drct_get_volume_main(&currvol), @@ -766,9 +646,9 @@ fade_vols.end = 0; /* The fader thread locks the fader_mutex now */ - f_tid = alarm_thread_create(alarm_fade, &fade_vols, 0); + f = alarm_thread_create(alarm_fade, &fade_vols, 0); - pthread_join(f_tid, NULL); + pthread_join(f.tid, NULL); aud_drct_stop(); /* might as well set the volume to something higher than zero so we @@ -784,46 +664,30 @@ void alarm_stop_cancel(GtkButton *w, gpointer data) { AUDDBG("alarm_stop_cancel\n"); - pthread_cancel(stop_tid); + if (pthread_cancel(stop.tid) == 0) { + stop.is_valid = FALSE; + } } /* the main alarm thread */ -static void *alarm_start_thread(void *args) +static gboolean alarm_timeout (void * unused) { struct tm *currtime; time_t timenow; - unsigned int play_start = 0; guint today; - /* give it time to set start_tid to something */ - threadsleep(1); - - while(start_tid != 0) - { - /* sit around and wait for the faders to not be doing anything */ - AUDDBG("Waiting for fader to be unlocked.."); - pthread_mutex_lock(&fader_lock); - AUDDBG("Ok\n"); - pthread_mutex_unlock(&fader_lock); - AUDDBG("Getting time\n"); timenow = time(NULL); currtime = localtime(&timenow); today = currtime->tm_wday; AUDDBG("Today is %d\n", today); - /* see if its time to do something */ - AUDDBG("Checking Day\n"); - - /* Had to put something here so I put the hour string. - ** Its only debug stuff anyway */ - AUDDBG("%s",day_h[today]); + /* already went off? */ + if (timenow < play_start + 60) + return TRUE; if(alarm_conf.day[today].flags & ALARM_OFF) - { - threadsleep(8.5); - continue; - } + return TRUE; else { /* set the alarm_h and alarm_m for today, if not default */ @@ -844,10 +708,7 @@ AUDDBG("Checking time (%d:%d)\n", currtime->tm_hour, currtime->tm_min); if((currtime->tm_hour != alarm_h) || (currtime->tm_min != alarm_m)) - { - threadsleep(8.5); - continue; - } + return TRUE; if(cmd_on == TRUE) { @@ -858,17 +719,12 @@ } } - AUDDBG("strcmp playlist, playlist is [%s]\n", playlist); - if(strcmp(playlist, "")) - { - AUDDBG("playlist is not blank, aparently\n"); - GList list; - - list.prev = list.next = NULL; - list.data = playlist; + bool_t started = FALSE; - aud_drct_pl_clear(); - aud_drct_pl_add_list (& list, -1); + if (playlist[0]) + { + aud_drct_pl_open (playlist); + started = TRUE; } if(fading) @@ -880,7 +736,9 @@ /* start playing */ play_start = time(NULL); - aud_drct_play(); + + if (! started) + aud_drct_play (); /* fade volume */ fade_vols.start = quietvol; @@ -906,12 +764,10 @@ GtkWidget *reminder_dialog; AUDDBG("Showing reminder '%s'\n", alarm_conf.reminder_msg); - GDK_THREADS_ENTER(); reminder_dialog = (GtkWidget*) create_reminder_dialog(alarm_conf.reminder_msg); - gtk_signal_connect(GTK_OBJECT(reminder_dialog), "destroy", - GTK_SIGNAL_FUNC(dialog_destroyed), &reminder_dialog); + g_signal_connect (reminder_dialog, "destroy", (GCallback) + gtk_widget_destroyed, & reminder_dialog); gtk_widget_show_all(reminder_dialog); - GDK_THREADS_LEAVE(); } /* bring up the wakeup call dialog if stop_on is set TRUE, this @@ -923,50 +779,18 @@ */ if(stop_on == TRUE) { - /* ok, so when we want to open dialogs in threaded programs - * we use this do we? - * anyone? - */ - GDK_THREADS_ENTER(); - { - AUDDBG("stop_on is true\n"); alarm_dialog = create_alarm_dialog(); - AUDDBG("created alarm dialog, %p\n", alarm_dialog); + g_signal_connect (alarm_dialog, "destroy", (GCallback) + gtk_widget_destroyed, & alarm_dialog); - gtk_signal_connect(GTK_OBJECT(alarm_dialog), "destroy", - GTK_SIGNAL_FUNC(dialog_destroyed), &alarm_dialog); - AUDDBG("attached destroy signal to alarm dialog, %p\n", alarm_dialog); gtk_widget_show_all(alarm_dialog); - AUDDBG("dialog now showing\n"); AUDDBG("now starting stop thread\n"); - stop_tid = alarm_thread_create(alarm_stop_thread, NULL, 0); - AUDDBG("Created wakeup dialog and started stop thread(%d)\n", (int)stop_tid); - - } - GDK_THREADS_LEAVE(); - - /* now wait for the stop thread */ - AUDDBG("Waiting for stop to stop.... (%d)", (int)stop_tid); - pthread_join(stop_tid, NULL); - /* loop until we are out of the starting minute */ - while(time(NULL) < (play_start + 61)) - { - AUDDBG("Waiting until out of starting minute\n"); - threadsleep(5.0); - } - AUDDBG("OK\n"); + stop = alarm_thread_create(alarm_stop_thread, NULL, 0); + AUDDBG("Created wakeup dialog and started stop thread\n"); } - /* loop until we are out of the starting minute */ - while(time(NULL) < (play_start + 61)) - { - threadsleep(5.0); - } - threadsleep(fading); - } - AUDDBG("Main thread has gone...\n"); - return NULL; + return TRUE; } /* @@ -974,30 +798,35 @@ * opens the config file and reads the value, creates a new * config in memory if the file doesnt exist and sets default vals */ -static void alarm_init() +static gboolean alarm_init (void) { AUDDBG("alarm_init\n"); alarm_conf.reminder_msg = NULL; alarm_read_config(); - /* start the main thread running */ - start_tid = alarm_thread_create(alarm_start_thread, NULL, 1); + timeout_source = g_timeout_add_seconds (10, alarm_timeout, NULL); + + return TRUE; } /* * kill the main thread */ -static void alarm_cleanup() +static void alarm_cleanup(void) { AUDDBG("alarm_cleanup\n"); - if (start_tid) - pthread_cancel(start_tid); - start_tid = 0; - if(stop_tid) - pthread_cancel(stop_tid); - stop_tid = 0; + if (timeout_source) + { + g_source_remove (timeout_source); + timeout_source = 0; + } + + if (stop.is_valid) { + pthread_cancel(stop.tid); + stop.is_valid = FALSE; + } g_free(alarm_conf.reminder_msg); alarm_conf.reminder_msg = NULL; @@ -1007,14 +836,11 @@ cmdstr = NULL; } -static GeneralPlugin alarm_plugin = -{ - .description = "Alarm "VERSION, +AUD_GENERAL_PLUGIN +( + .name = "Alarm", .init = alarm_init, .about = alarm_about, .configure = alarm_configure, .cleanup = alarm_cleanup, -}; - -GeneralPlugin *alarm_gplist[] = { &alarm_plugin, NULL }; -SIMPLE_GENERAL_PLUGIN(alarm, alarm_gplist); +) diff -Nru audacious-plugins-2.4.4/src/alarm/alarm.h audacious-plugins-3.2/src/alarm/alarm.h --- audacious-plugins-2.4.4/src/alarm/alarm.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/alarm/alarm.h 2012-01-20 19:48:30.000000000 +0000 @@ -18,16 +18,6 @@ #define ALARM_OFF (1 << 0) #define ALARM_DEFAULT (1 << 1) -/* defaults */ -#define DEFAULT_ALARM_HOUR 06 -#define DEFAULT_ALARM_MIN 30 -#define DEFAULT_STOP_HOURS 01 -#define DEFAULT_STOP_MINS 00 -#define DEFAULT_VOLUME 80 -#define DEFAULT_FADING 60 -#define DEFAULT_QUIET_VOL 25 -#define DEFAULT_FLAGS ALARM_DEFAULT - typedef struct AlarmDay { GtkCheckButton *cb; GtkCheckButton *cb_def; @@ -45,6 +35,3 @@ #endif /* __ALARM_H */ -/* - * vi:ai:expandtab:ts=2 sts=2 shiftwidth=2:nowrap: - */ diff -Nru audacious-plugins-2.4.4/src/alarm/callbacks.h audacious-plugins-3.2/src/alarm/callbacks.h --- audacious-plugins-2.4.4/src/alarm/callbacks.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/alarm/callbacks.h 2012-01-20 19:48:30.000000000 +0000 @@ -14,10 +14,6 @@ gpointer user_data); void -alarm_store_playlistname (GtkButton *button, - gpointer user_data); - -void on_mon_def_toggled (GtkToggleButton *togglebutton, gpointer user_data); diff -Nru audacious-plugins-2.4.4/src/alarm/interface.c audacious-plugins-3.2/src/alarm/interface.c --- audacious-plugins-2.4.4/src/alarm/interface.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/alarm/interface.c 2012-01-20 19:48:30.000000000 +0000 @@ -14,77 +14,9 @@ #include "callbacks.h" #include "interface.h" -#include "support.h" #include - -GtkWidget* -create_about_dialog (void) -{ - GtkWidget *about_dialog; - GtkWidget *dialog_vbox2; - GtkWidget *frame6; - GtkWidget *label18; - GtkWidget *dialog_action_area2; - GtkWidget *close; - - about_dialog = gtk_dialog_new (); - gtk_widget_set_name (about_dialog, "about_dialog"); - gtk_object_set_data (GTK_OBJECT (about_dialog), "about_dialog", about_dialog); - gtk_window_set_title (GTK_WINDOW (about_dialog), _("About XMMS Alarm")); -/* - * GTK2 hack - * GTK_WINDOW (about_dialog)->type = GTK_WINDOW_DIALOG; - */ - GTK_WINDOW (about_dialog)->type = GTK_WINDOW_TOPLEVEL; - gtk_window_set_policy (GTK_WINDOW (about_dialog), FALSE, FALSE, TRUE); - - dialog_vbox2 = GTK_DIALOG (about_dialog)->vbox; - gtk_widget_set_name (dialog_vbox2, "dialog_vbox2"); - gtk_object_set_data (GTK_OBJECT (about_dialog), "dialog_vbox2", dialog_vbox2); - gtk_widget_show (dialog_vbox2); - - frame6 = gtk_frame_new (_("XMMS Alarm")); - gtk_widget_set_name (frame6, "frame6"); - gtk_widget_ref (frame6); - gtk_object_set_data_full (GTK_OBJECT (about_dialog), "frame6", frame6, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (frame6); - gtk_box_pack_start (GTK_BOX (dialog_vbox2), frame6, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame6), 10); - - label18 = gtk_label_new (_("An XMMS plugin which can be used\nto start playing at a certain time.\n\nSend all complaints to:\nAdam Feakin \nDaniel Stodden \n\nhttp://www.snika.uklinux.net/xmms-alarm/")); - gtk_widget_set_name (label18, "label18"); - gtk_widget_ref (label18); - gtk_object_set_data_full (GTK_OBJECT (about_dialog), "label18", label18, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (label18); - gtk_container_add (GTK_CONTAINER (frame6), label18); - gtk_misc_set_padding (GTK_MISC (label18), 10, 20); - - dialog_action_area2 = GTK_DIALOG (about_dialog)->action_area; - gtk_widget_set_name (dialog_action_area2, "dialog_action_area2"); - gtk_object_set_data (GTK_OBJECT (about_dialog), "dialog_action_area2", dialog_action_area2); - gtk_widget_show (dialog_action_area2); - gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area2), 10); - - close = gtk_button_new_with_label (_("Close")); - gtk_widget_set_name (close, "close"); - gtk_widget_ref (close); - gtk_object_set_data_full (GTK_OBJECT (about_dialog), "close", close, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (close); - gtk_box_pack_start (GTK_BOX (dialog_action_area2), close, FALSE, TRUE, 0); - GTK_WIDGET_SET_FLAGS (close, GTK_CAN_DEFAULT); - - gtk_signal_connect_object (GTK_OBJECT (close), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), - GTK_OBJECT (about_dialog)); - - gtk_widget_grab_focus (close); - gtk_widget_grab_default (close); - return about_dialog; -} +#include GtkWidget* create_alarm_dialog (void) @@ -97,45 +29,44 @@ alarm_dialog = gtk_dialog_new (); gtk_widget_set_name (alarm_dialog, "alarm_dialog"); - gtk_object_set_data (GTK_OBJECT (alarm_dialog), "alarm_dialog", alarm_dialog); + g_object_set_data (G_OBJECT (alarm_dialog), "alarm_dialog", alarm_dialog); gtk_window_set_title (GTK_WINDOW (alarm_dialog), _("Alarm")); - gtk_window_set_policy (GTK_WINDOW (alarm_dialog), FALSE, FALSE, FALSE); - dialog_vbox3 = GTK_DIALOG (alarm_dialog)->vbox; + dialog_vbox3 = gtk_dialog_get_content_area ((GtkDialog *) alarm_dialog); gtk_widget_set_name (dialog_vbox3, "dialog_vbox3"); - gtk_object_set_data (GTK_OBJECT (alarm_dialog), "dialog_vbox3", dialog_vbox3); + g_object_set_data (G_OBJECT (alarm_dialog), "dialog_vbox3", dialog_vbox3); gtk_widget_show (dialog_vbox3); label19 = gtk_label_new (_("This is your wakeup call.")); gtk_widget_set_name (label19, "label19"); - gtk_widget_ref (label19); - gtk_object_set_data_full (GTK_OBJECT (alarm_dialog), "label19", label19, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label19); + g_object_set_data_full (G_OBJECT (alarm_dialog), "label19", label19, + (GDestroyNotify) g_object_unref); gtk_widget_show (label19); gtk_box_pack_start (GTK_BOX (dialog_vbox3), label19, FALSE, TRUE, 0); gtk_misc_set_padding (GTK_MISC (label19), 10, 10); - dialog_action_area3 = GTK_DIALOG (alarm_dialog)->action_area; + dialog_action_area3 = gtk_dialog_get_action_area ((GtkDialog *) alarm_dialog); gtk_widget_set_name (dialog_action_area3, "dialog_action_area3"); - gtk_object_set_data (GTK_OBJECT (alarm_dialog), "dialog_action_area3", dialog_action_area3); + g_object_set_data (G_OBJECT (alarm_dialog), "dialog_action_area3", dialog_action_area3); gtk_widget_show (dialog_action_area3); gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area3), 10); button9 = gtk_button_new_with_label (_("OK")); gtk_widget_set_name (button9, "button9"); - gtk_widget_ref (button9); - gtk_object_set_data_full (GTK_OBJECT (alarm_dialog), "button9", button9, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (button9); + g_object_set_data_full (G_OBJECT (alarm_dialog), "button9", button9, + (GDestroyNotify) g_object_unref); gtk_widget_show (button9); gtk_box_pack_start (GTK_BOX (dialog_action_area3), button9, FALSE, TRUE, 0); - GTK_WIDGET_SET_FLAGS (button9, GTK_CAN_DEFAULT); + gtk_widget_set_can_default (button9, TRUE); - gtk_signal_connect (GTK_OBJECT (button9), "clicked", - GTK_SIGNAL_FUNC (alarm_stop_cancel), + g_signal_connect (G_OBJECT (button9), "clicked", + G_CALLBACK (alarm_stop_cancel), NULL); - gtk_signal_connect_object (GTK_OBJECT (button9), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), - GTK_OBJECT (alarm_dialog)); + g_signal_connect_swapped (G_OBJECT (button9), "clicked", + G_CALLBACK (gtk_widget_destroy), + G_OBJECT (alarm_dialog)); gtk_widget_grab_focus (button9); gtk_widget_grab_default (button9); @@ -143,108 +74,6 @@ } GtkWidget* -create_playlist_fileselection (void) -{ - GtkWidget *playlist_fileselection; - GtkWidget *ok_button1; - GtkWidget *cancel_button1; - - playlist_fileselection = gtk_file_selection_new (_("Select Playlist")); - gtk_widget_set_name (playlist_fileselection, "playlist_fileselection"); - gtk_object_set_data (GTK_OBJECT (playlist_fileselection), "playlist_fileselection", playlist_fileselection); - gtk_container_set_border_width (GTK_CONTAINER (playlist_fileselection), 10); - gtk_window_set_modal (GTK_WINDOW (playlist_fileselection), TRUE); - - ok_button1 = GTK_FILE_SELECTION (playlist_fileselection)->ok_button; - gtk_widget_set_name (ok_button1, "ok_button1"); - gtk_object_set_data (GTK_OBJECT (playlist_fileselection), "ok_button1", ok_button1); - gtk_widget_show (ok_button1); - GTK_WIDGET_SET_FLAGS (ok_button1, GTK_CAN_DEFAULT); - - cancel_button1 = GTK_FILE_SELECTION (playlist_fileselection)->cancel_button; - gtk_widget_set_name (cancel_button1, "cancel_button1"); - gtk_object_set_data (GTK_OBJECT (playlist_fileselection), "cancel_button1", cancel_button1); - gtk_widget_show (cancel_button1); - GTK_WIDGET_SET_FLAGS (cancel_button1, GTK_CAN_DEFAULT); - - gtk_signal_connect (GTK_OBJECT (ok_button1), "clicked", - GTK_SIGNAL_FUNC (alarm_store_playlistname), - playlist_fileselection); - gtk_signal_connect_object (GTK_OBJECT (ok_button1), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), - GTK_OBJECT (playlist_fileselection)); - gtk_signal_connect_object (GTK_OBJECT (cancel_button1), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), - GTK_OBJECT (playlist_fileselection)); - - return playlist_fileselection; -} - -GtkWidget* -create_warning_dialog (void) -{ - GtkWidget *warning_dialog; - GtkWidget *dialog_vbox4; - GtkWidget *frame9; - GtkWidget *label70; - GtkWidget *dialog_action_area4; - GtkWidget *button10; - - warning_dialog = gtk_dialog_new (); - gtk_widget_set_name (warning_dialog, "warning_dialog"); - gtk_object_set_data (GTK_OBJECT (warning_dialog), "warning_dialog", warning_dialog); - gtk_window_set_title (GTK_WINDOW (warning_dialog), _("Sorry")); - gtk_window_set_policy (GTK_WINDOW (warning_dialog), FALSE, FALSE, FALSE); - - dialog_vbox4 = GTK_DIALOG (warning_dialog)->vbox; - gtk_widget_set_name (dialog_vbox4, "dialog_vbox4"); - gtk_object_set_data (GTK_OBJECT (warning_dialog), "dialog_vbox4", dialog_vbox4); - gtk_widget_show (dialog_vbox4); - - frame9 = gtk_frame_new (_("Warning")); - gtk_widget_set_name (frame9, "frame9"); - gtk_widget_ref (frame9); - gtk_object_set_data_full (GTK_OBJECT (warning_dialog), "frame9", frame9, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (frame9); - gtk_box_pack_start (GTK_BOX (dialog_vbox4), frame9, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame9), 10); - - label70 = gtk_label_new (_("For safety reasons the \"quiet\" time must be at least 65 seconds longer than the fading time, it must also be more than 10 seconds. This basically means that there is a bug in the code and until I find a way of really fixing it this message will appear :)\n\nYour fading settings have NOT been saved\n\n--\nAdam")); - gtk_widget_set_name (label70, "label70"); - gtk_widget_ref (label70); - gtk_object_set_data_full (GTK_OBJECT (warning_dialog), "label70", label70, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (label70); - gtk_container_add (GTK_CONTAINER (frame9), label70); - gtk_label_set_line_wrap (GTK_LABEL (label70), TRUE); - gtk_misc_set_padding (GTK_MISC (label70), 10, 20); - - dialog_action_area4 = GTK_DIALOG (warning_dialog)->action_area; - gtk_widget_set_name (dialog_action_area4, "dialog_action_area4"); - gtk_object_set_data (GTK_OBJECT (warning_dialog), "dialog_action_area4", dialog_action_area4); - gtk_widget_show (dialog_action_area4); - gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area4), 10); - - button10 = gtk_button_new_with_label (_("Oh Well")); - gtk_widget_set_name (button10, "button10"); - gtk_widget_ref (button10); - gtk_object_set_data_full (GTK_OBJECT (warning_dialog), "button10", button10, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (button10); - gtk_box_pack_start (GTK_BOX (dialog_action_area4), button10, FALSE, TRUE, 0); - GTK_WIDGET_SET_FLAGS (button10, GTK_CAN_DEFAULT); - - gtk_signal_connect_object (GTK_OBJECT (button10), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), - GTK_OBJECT (warning_dialog)); - - gtk_widget_grab_focus (button10); - gtk_widget_grab_default (button10); - return warning_dialog; -} - -GtkWidget* create_config_dialog (void) { GtkWidget *config_dialog; @@ -253,19 +82,19 @@ GtkWidget *frame10; GtkWidget *table3; GtkWidget *hbox21; - GtkObject *stop_h_spin_adj; + GtkAdjustment *stop_h_spin_adj; GtkWidget *stop_h_spin; GtkWidget *label75; GtkWidget *hbox22; - GtkObject *alarm_h_spin_adj; + GtkAdjustment *alarm_h_spin_adj; GtkWidget *alarm_h_spin; GtkWidget *label76; GtkWidget *hbox23; - GtkObject *alarm_m_spin_adj; + GtkAdjustment *alarm_m_spin_adj; GtkWidget *alarm_m_spin; GtkWidget *label77; GtkWidget *hbox24; - GtkObject *stop_m_spin_adj; + GtkAdjustment *stop_m_spin_adj; GtkWidget *stop_m_spin; GtkWidget *label78; GtkWidget *stop_checkb; @@ -276,52 +105,52 @@ GtkWidget *table4; GtkWidget *hbox31; GtkWidget *mon_def; - GtkObject *mon_h_adj; + GtkAdjustment *mon_h_adj; GtkWidget *mon_h; GtkWidget *label89; - GtkObject *mon_m_adj; + GtkAdjustment *mon_m_adj; GtkWidget *mon_m; GtkWidget *hbox32; GtkWidget *tue_def; - GtkObject *tue_h_adj; + GtkAdjustment *tue_h_adj; GtkWidget *tue_h; GtkWidget *label90; - GtkObject *tue_m_adj; + GtkAdjustment *tue_m_adj; GtkWidget *tue_m; GtkWidget *hbox33; GtkWidget *wed_def; - GtkObject *wed_h_adj; + GtkAdjustment *wed_h_adj; GtkWidget *wed_h; GtkWidget *label91; - GtkObject *wed_m_adj; + GtkAdjustment *wed_m_adj; GtkWidget *wed_m; GtkWidget *hbox34; GtkWidget *thu_def; - GtkObject *thu_h_adj; + GtkAdjustment *thu_h_adj; GtkWidget *thu_h; GtkWidget *label92; - GtkObject *thu_m_adj; + GtkAdjustment *thu_m_adj; GtkWidget *thu_m; GtkWidget *hbox35; GtkWidget *fri_def; - GtkObject *fri_h_adj; + GtkAdjustment *fri_h_adj; GtkWidget *fri_h; GtkWidget *label93; - GtkObject *fri_m_adj; + GtkAdjustment *fri_m_adj; GtkWidget *fri_m; GtkWidget *hbox36; GtkWidget *sat_def; - GtkObject *sat_h_adj; + GtkAdjustment *sat_h_adj; GtkWidget *sat_h; GtkWidget *label94; - GtkObject *sat_m_adj; + GtkAdjustment *sat_m_adj; GtkWidget *sat_m; GtkWidget *hbox37; GtkWidget *sun_def; - GtkObject *sun_h_adj; + GtkAdjustment *sun_h_adj; GtkWidget *sun_h; GtkWidget *label95; - GtkObject *sun_m_adj; + GtkAdjustment *sun_m_adj; GtkWidget *sun_m; GtkWidget *label87; GtkWidget *label88; @@ -337,7 +166,7 @@ GtkWidget *frame11; GtkWidget *alignment10; GtkWidget *hbox25; - GtkObject *fading_spin_adj; + GtkAdjustment *fading_spin_adj; GtkWidget *fading_spin; GtkWidget *label81; GtkWidget *frame12; @@ -378,43 +207,39 @@ GtkWidget *hbox20; GtkWidget *ok_button; GtkWidget *cancel_button; - GtkTooltips *tooltips; - - tooltips = gtk_tooltips_new (); config_dialog = gtk_dialog_new (); gtk_widget_set_name (config_dialog, "config_dialog"); - gtk_object_set_data (GTK_OBJECT (config_dialog), "config_dialog", config_dialog); + g_object_set_data (G_OBJECT (config_dialog), "config_dialog", config_dialog); gtk_window_set_title (GTK_WINDOW (config_dialog), _("Alarm Settings")); - gtk_window_set_policy (GTK_WINDOW (config_dialog), FALSE, FALSE, FALSE); - dialog_vbox5 = GTK_DIALOG (config_dialog)->vbox; + dialog_vbox5 = gtk_dialog_get_content_area ((GtkDialog *) config_dialog); gtk_widget_set_name (dialog_vbox5, "dialog_vbox5"); - gtk_object_set_data (GTK_OBJECT (config_dialog), "dialog_vbox5", dialog_vbox5); + g_object_set_data (G_OBJECT (config_dialog), "dialog_vbox5", dialog_vbox5); gtk_widget_show (dialog_vbox5); notebook1 = gtk_notebook_new (); gtk_widget_set_name (notebook1, "notebook1"); - gtk_widget_ref (notebook1); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "notebook1", notebook1, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (notebook1); + g_object_set_data_full (G_OBJECT (config_dialog), "notebook1", notebook1, + (GDestroyNotify) g_object_unref); gtk_widget_show (notebook1); gtk_box_pack_start (GTK_BOX (dialog_vbox5), notebook1, TRUE, TRUE, 0); frame10 = gtk_frame_new (_("Time")); gtk_widget_set_name (frame10, "frame10"); - gtk_widget_ref (frame10); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "frame10", frame10, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (frame10); + g_object_set_data_full (G_OBJECT (config_dialog), "frame10", frame10, + (GDestroyNotify) g_object_unref); gtk_widget_show (frame10); gtk_container_add (GTK_CONTAINER (notebook1), frame10); gtk_container_set_border_width (GTK_CONTAINER (frame10), 10); table3 = gtk_table_new (2, 3, FALSE); gtk_widget_set_name (table3, "table3"); - gtk_widget_ref (table3); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "table3", table3, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (table3); + g_object_set_data_full (G_OBJECT (config_dialog), "table3", table3, + (GDestroyNotify) g_object_unref); gtk_widget_show (table3); gtk_container_add (GTK_CONTAINER (frame10), table3); gtk_container_set_border_width (GTK_CONTAINER (table3), 8); @@ -423,20 +248,20 @@ hbox21 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox21, "hbox21"); - gtk_widget_ref (hbox21); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hbox21", hbox21, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hbox21); + g_object_set_data_full (G_OBJECT (config_dialog), "hbox21", hbox21, + (GDestroyNotify) g_object_unref); gtk_widget_show (hbox21); gtk_table_attach (GTK_TABLE (table3), hbox21, 1, 2, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); - stop_h_spin_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 0); + stop_h_spin_adj = (GtkAdjustment *) gtk_adjustment_new (0, 0, 100, 1, 10, 0); stop_h_spin = gtk_spin_button_new (GTK_ADJUSTMENT (stop_h_spin_adj), 1, 0); gtk_widget_set_name (stop_h_spin, "stop_h_spin"); - gtk_widget_ref (stop_h_spin); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "stop_h_spin", stop_h_spin, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (stop_h_spin); + g_object_set_data_full (G_OBJECT (config_dialog), "stop_h_spin", stop_h_spin, + (GDestroyNotify) g_object_unref); gtk_widget_show (stop_h_spin); gtk_box_pack_start (GTK_BOX (hbox21), stop_h_spin, FALSE, FALSE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (stop_h_spin), TRUE); @@ -444,28 +269,28 @@ label75 = gtk_label_new (_("hours")); gtk_widget_set_name (label75, "label75"); - gtk_widget_ref (label75); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label75", label75, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label75); + g_object_set_data_full (G_OBJECT (config_dialog), "label75", label75, + (GDestroyNotify) g_object_unref); gtk_widget_show (label75); gtk_box_pack_start (GTK_BOX (hbox21), label75, FALSE, FALSE, 0); hbox22 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox22, "hbox22"); - gtk_widget_ref (hbox22); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hbox22", hbox22, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hbox22); + g_object_set_data_full (G_OBJECT (config_dialog), "hbox22", hbox22, + (GDestroyNotify) g_object_unref); gtk_widget_show (hbox22); gtk_table_attach (GTK_TABLE (table3), hbox22, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); - alarm_h_spin_adj = gtk_adjustment_new (6, 0, 23, 1, 10, 0); + alarm_h_spin_adj = (GtkAdjustment *) gtk_adjustment_new (6, 0, 23, 1, 10, 0); alarm_h_spin = gtk_spin_button_new (GTK_ADJUSTMENT (alarm_h_spin_adj), 1, 0); gtk_widget_set_name (alarm_h_spin, "alarm_h_spin"); - gtk_widget_ref (alarm_h_spin); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "alarm_h_spin", alarm_h_spin, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (alarm_h_spin); + g_object_set_data_full (G_OBJECT (config_dialog), "alarm_h_spin", alarm_h_spin, + (GDestroyNotify) g_object_unref); gtk_widget_show (alarm_h_spin); gtk_box_pack_start (GTK_BOX (hbox22), alarm_h_spin, FALSE, FALSE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (alarm_h_spin), TRUE); @@ -474,29 +299,29 @@ label76 = gtk_label_new (":"); gtk_widget_set_name (label76, "label76"); - gtk_widget_ref (label76); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label76", label76, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label76); + g_object_set_data_full (G_OBJECT (config_dialog), "label76", label76, + (GDestroyNotify) g_object_unref); gtk_widget_show (label76); gtk_box_pack_start (GTK_BOX (hbox22), label76, FALSE, FALSE, 0); gtk_misc_set_padding (GTK_MISC (label76), 5, 0); hbox23 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox23, "hbox23"); - gtk_widget_ref (hbox23); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hbox23", hbox23, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hbox23); + g_object_set_data_full (G_OBJECT (config_dialog), "hbox23", hbox23, + (GDestroyNotify) g_object_unref); gtk_widget_show (hbox23); gtk_table_attach (GTK_TABLE (table3), hbox23, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); - alarm_m_spin_adj = gtk_adjustment_new (30, 0, 59, 1, 10, 0); + alarm_m_spin_adj = (GtkAdjustment *) gtk_adjustment_new (30, 0, 59, 1, 10, 0); alarm_m_spin = gtk_spin_button_new (GTK_ADJUSTMENT (alarm_m_spin_adj), 1, 0); gtk_widget_set_name (alarm_m_spin, "alarm_m_spin"); - gtk_widget_ref (alarm_m_spin); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "alarm_m_spin", alarm_m_spin, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (alarm_m_spin); + g_object_set_data_full (G_OBJECT (config_dialog), "alarm_m_spin", alarm_m_spin, + (GDestroyNotify) g_object_unref); gtk_widget_show (alarm_m_spin); gtk_box_pack_start (GTK_BOX (hbox23), alarm_m_spin, FALSE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (alarm_m_spin), TRUE); @@ -505,28 +330,28 @@ label77 = gtk_label_new (_("h")); gtk_widget_set_name (label77, "label77"); - gtk_widget_ref (label77); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label77", label77, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label77); + g_object_set_data_full (G_OBJECT (config_dialog), "label77", label77, + (GDestroyNotify) g_object_unref); gtk_widget_show (label77); gtk_box_pack_start (GTK_BOX (hbox23), label77, FALSE, FALSE, 0); hbox24 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox24, "hbox24"); - gtk_widget_ref (hbox24); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hbox24", hbox24, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hbox24); + g_object_set_data_full (G_OBJECT (config_dialog), "hbox24", hbox24, + (GDestroyNotify) g_object_unref); gtk_widget_show (hbox24); gtk_table_attach (GTK_TABLE (table3), hbox24, 2, 3, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); - stop_m_spin_adj = gtk_adjustment_new (0, 0, 59, 1, 10, 0); + stop_m_spin_adj = (GtkAdjustment *) gtk_adjustment_new (0, 0, 59, 1, 10, 0); stop_m_spin = gtk_spin_button_new (GTK_ADJUSTMENT (stop_m_spin_adj), 1, 0); gtk_widget_set_name (stop_m_spin, "stop_m_spin"); - gtk_widget_ref (stop_m_spin); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "stop_m_spin", stop_m_spin, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (stop_m_spin); + g_object_set_data_full (G_OBJECT (config_dialog), "stop_m_spin", stop_m_spin, + (GDestroyNotify) g_object_unref); gtk_widget_show (stop_m_spin); gtk_box_pack_start (GTK_BOX (hbox24), stop_m_spin, FALSE, FALSE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (stop_m_spin), TRUE); @@ -535,17 +360,17 @@ label78 = gtk_label_new (_("minutes")); gtk_widget_set_name (label78, "label78"); - gtk_widget_ref (label78); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label78", label78, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label78); + g_object_set_data_full (G_OBJECT (config_dialog), "label78", label78, + (GDestroyNotify) g_object_unref); gtk_widget_show (label78); gtk_box_pack_start (GTK_BOX (hbox24), label78, FALSE, FALSE, 0); stop_checkb = gtk_check_button_new (); gtk_widget_set_name (stop_checkb, "stop_checkb"); - gtk_widget_ref (stop_checkb); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "stop_checkb", stop_checkb, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (stop_checkb); + g_object_set_data_full (G_OBJECT (config_dialog), "stop_checkb", stop_checkb, + (GDestroyNotify) g_object_unref); gtk_widget_show (stop_checkb); gtk_table_attach (GTK_TABLE (table3), stop_checkb, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), @@ -553,9 +378,9 @@ label79 = gtk_label_new (_("Quiet after:")); gtk_widget_set_name (label79, "label79"); - gtk_widget_ref (label79); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label79", label79, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label79); + g_object_set_data_full (G_OBJECT (config_dialog), "label79", label79, + (GDestroyNotify) g_object_unref); gtk_widget_show (label79); gtk_container_add (GTK_CONTAINER (stop_checkb), label79); gtk_label_set_justify (GTK_LABEL (label79), GTK_JUSTIFY_LEFT); @@ -563,9 +388,9 @@ label80 = gtk_label_new (_("Alarm at (default):")); gtk_widget_set_name (label80, "label80"); - gtk_widget_ref (label80); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label80", label80, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label80); + g_object_set_data_full (G_OBJECT (config_dialog), "label80", label80, + (GDestroyNotify) g_object_unref); gtk_widget_show (label80); gtk_table_attach (GTK_TABLE (table3), label80, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), @@ -575,35 +400,35 @@ label71 = gtk_label_new (_("Time")); gtk_widget_set_name (label71, "label71"); - gtk_widget_ref (label71); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label71", label71, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label71); + g_object_set_data_full (G_OBJECT (config_dialog), "label71", label71, + (GDestroyNotify) g_object_unref); gtk_widget_show (label71); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label71); frame15 = gtk_frame_new (_("Choose the days for the alarm to come on")); gtk_widget_set_name (frame15, "frame15"); - gtk_widget_ref (frame15); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "frame15", frame15, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (frame15); + g_object_set_data_full (G_OBJECT (config_dialog), "frame15", frame15, + (GDestroyNotify) g_object_unref); gtk_widget_show (frame15); gtk_container_add (GTK_CONTAINER (notebook1), frame15); gtk_container_set_border_width (GTK_CONTAINER (frame15), 10); table4 = gtk_table_new (8, 2, FALSE); gtk_widget_set_name (table4, "table4"); - gtk_widget_ref (table4); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "table4", table4, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (table4); + g_object_set_data_full (G_OBJECT (config_dialog), "table4", table4, + (GDestroyNotify) g_object_unref); gtk_widget_show (table4); gtk_container_add (GTK_CONTAINER (frame15), table4); gtk_container_set_border_width (GTK_CONTAINER (table4), 5); hbox31 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox31, "hbox31"); - gtk_widget_ref (hbox31); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hbox31", hbox31, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hbox31); + g_object_set_data_full (G_OBJECT (config_dialog), "hbox31", hbox31, + (GDestroyNotify) g_object_unref); gtk_widget_show (hbox31); gtk_table_attach (GTK_TABLE (table4), hbox31, 1, 2, 1, 2, (GtkAttachOptions) (GTK_FILL), @@ -611,37 +436,37 @@ mon_def = gtk_check_button_new_with_label (_("Default")); gtk_widget_set_name (mon_def, "mon_def"); - gtk_widget_ref (mon_def); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "mon_def", mon_def, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (mon_def); + g_object_set_data_full (G_OBJECT (config_dialog), "mon_def", mon_def, + (GDestroyNotify) g_object_unref); gtk_widget_show (mon_def); gtk_box_pack_start (GTK_BOX (hbox31), mon_def, FALSE, FALSE, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (mon_def), TRUE); - mon_h_adj = gtk_adjustment_new (6, 0, 23, 1, 10, 0); + mon_h_adj = (GtkAdjustment *) gtk_adjustment_new (6, 0, 23, 1, 10, 0); mon_h = gtk_spin_button_new (GTK_ADJUSTMENT (mon_h_adj), 1, 0); gtk_widget_set_name (mon_h, "mon_h"); - gtk_widget_ref (mon_h); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "mon_h", mon_h, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (mon_h); + g_object_set_data_full (G_OBJECT (config_dialog), "mon_h", mon_h, + (GDestroyNotify) g_object_unref); gtk_widget_show (mon_h); gtk_box_pack_start (GTK_BOX (hbox31), mon_h, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (mon_h), TRUE); label89 = gtk_label_new (":"); gtk_widget_set_name (label89, "label89"); - gtk_widget_ref (label89); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label89", label89, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label89); + g_object_set_data_full (G_OBJECT (config_dialog), "label89", label89, + (GDestroyNotify) g_object_unref); gtk_widget_show (label89); gtk_box_pack_start (GTK_BOX (hbox31), label89, FALSE, FALSE, 0); - mon_m_adj = gtk_adjustment_new (30, 0, 59, 1, 10, 0); + mon_m_adj = (GtkAdjustment *) gtk_adjustment_new (30, 0, 59, 1, 10, 0); mon_m = gtk_spin_button_new (GTK_ADJUSTMENT (mon_m_adj), 1, 0); gtk_widget_set_name (mon_m, "mon_m"); - gtk_widget_ref (mon_m); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "mon_m", mon_m, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (mon_m); + g_object_set_data_full (G_OBJECT (config_dialog), "mon_m", mon_m, + (GDestroyNotify) g_object_unref); gtk_widget_show (mon_m); gtk_box_pack_start (GTK_BOX (hbox31), mon_m, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (mon_m), TRUE); @@ -649,9 +474,9 @@ hbox32 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox32, "hbox32"); - gtk_widget_ref (hbox32); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hbox32", hbox32, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hbox32); + g_object_set_data_full (G_OBJECT (config_dialog), "hbox32", hbox32, + (GDestroyNotify) g_object_unref); gtk_widget_show (hbox32); gtk_table_attach (GTK_TABLE (table4), hbox32, 1, 2, 2, 3, (GtkAttachOptions) (GTK_FILL), @@ -659,37 +484,37 @@ tue_def = gtk_check_button_new_with_label (_("Default")); gtk_widget_set_name (tue_def, "tue_def"); - gtk_widget_ref (tue_def); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "tue_def", tue_def, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (tue_def); + g_object_set_data_full (G_OBJECT (config_dialog), "tue_def", tue_def, + (GDestroyNotify) g_object_unref); gtk_widget_show (tue_def); gtk_box_pack_start (GTK_BOX (hbox32), tue_def, FALSE, FALSE, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tue_def), TRUE); - tue_h_adj = gtk_adjustment_new (6, 0, 23, 1, 10, 0); + tue_h_adj = (GtkAdjustment *) gtk_adjustment_new (6, 0, 23, 1, 10, 0); tue_h = gtk_spin_button_new (GTK_ADJUSTMENT (tue_h_adj), 1, 0); gtk_widget_set_name (tue_h, "tue_h"); - gtk_widget_ref (tue_h); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "tue_h", tue_h, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (tue_h); + g_object_set_data_full (G_OBJECT (config_dialog), "tue_h", tue_h, + (GDestroyNotify) g_object_unref); gtk_widget_show (tue_h); gtk_box_pack_start (GTK_BOX (hbox32), tue_h, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (tue_h), TRUE); label90 = gtk_label_new (":"); gtk_widget_set_name (label90, "label90"); - gtk_widget_ref (label90); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label90", label90, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label90); + g_object_set_data_full (G_OBJECT (config_dialog), "label90", label90, + (GDestroyNotify) g_object_unref); gtk_widget_show (label90); gtk_box_pack_start (GTK_BOX (hbox32), label90, FALSE, FALSE, 0); - tue_m_adj = gtk_adjustment_new (30, 0, 59, 1, 10, 0); + tue_m_adj = (GtkAdjustment *) gtk_adjustment_new (30, 0, 59, 1, 10, 0); tue_m = gtk_spin_button_new (GTK_ADJUSTMENT (tue_m_adj), 1, 0); gtk_widget_set_name (tue_m, "tue_m"); - gtk_widget_ref (tue_m); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "tue_m", tue_m, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (tue_m); + g_object_set_data_full (G_OBJECT (config_dialog), "tue_m", tue_m, + (GDestroyNotify) g_object_unref); gtk_widget_show (tue_m); gtk_box_pack_start (GTK_BOX (hbox32), tue_m, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (tue_m), TRUE); @@ -697,9 +522,9 @@ hbox33 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox33, "hbox33"); - gtk_widget_ref (hbox33); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hbox33", hbox33, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hbox33); + g_object_set_data_full (G_OBJECT (config_dialog), "hbox33", hbox33, + (GDestroyNotify) g_object_unref); gtk_widget_show (hbox33); gtk_table_attach (GTK_TABLE (table4), hbox33, 1, 2, 3, 4, (GtkAttachOptions) (GTK_FILL), @@ -707,37 +532,37 @@ wed_def = gtk_check_button_new_with_label (_("Default")); gtk_widget_set_name (wed_def, "wed_def"); - gtk_widget_ref (wed_def); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "wed_def", wed_def, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (wed_def); + g_object_set_data_full (G_OBJECT (config_dialog), "wed_def", wed_def, + (GDestroyNotify) g_object_unref); gtk_widget_show (wed_def); gtk_box_pack_start (GTK_BOX (hbox33), wed_def, FALSE, FALSE, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wed_def), TRUE); - wed_h_adj = gtk_adjustment_new (6, 0, 23, 1, 10, 0); + wed_h_adj = (GtkAdjustment *) gtk_adjustment_new (6, 0, 23, 1, 10, 0); wed_h = gtk_spin_button_new (GTK_ADJUSTMENT (wed_h_adj), 1, 0); gtk_widget_set_name (wed_h, "wed_h"); - gtk_widget_ref (wed_h); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "wed_h", wed_h, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (wed_h); + g_object_set_data_full (G_OBJECT (config_dialog), "wed_h", wed_h, + (GDestroyNotify) g_object_unref); gtk_widget_show (wed_h); gtk_box_pack_start (GTK_BOX (hbox33), wed_h, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (wed_h), TRUE); label91 = gtk_label_new (":"); gtk_widget_set_name (label91, "label91"); - gtk_widget_ref (label91); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label91", label91, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label91); + g_object_set_data_full (G_OBJECT (config_dialog), "label91", label91, + (GDestroyNotify) g_object_unref); gtk_widget_show (label91); gtk_box_pack_start (GTK_BOX (hbox33), label91, FALSE, FALSE, 0); - wed_m_adj = gtk_adjustment_new (30, 0, 59, 1, 10, 0); + wed_m_adj = (GtkAdjustment *) gtk_adjustment_new (30, 0, 59, 1, 10, 0); wed_m = gtk_spin_button_new (GTK_ADJUSTMENT (wed_m_adj), 1, 0); gtk_widget_set_name (wed_m, "wed_m"); - gtk_widget_ref (wed_m); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "wed_m", wed_m, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (wed_m); + g_object_set_data_full (G_OBJECT (config_dialog), "wed_m", wed_m, + (GDestroyNotify) g_object_unref); gtk_widget_show (wed_m); gtk_box_pack_start (GTK_BOX (hbox33), wed_m, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (wed_m), TRUE); @@ -745,9 +570,9 @@ hbox34 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox34, "hbox34"); - gtk_widget_ref (hbox34); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hbox34", hbox34, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hbox34); + g_object_set_data_full (G_OBJECT (config_dialog), "hbox34", hbox34, + (GDestroyNotify) g_object_unref); gtk_widget_show (hbox34); gtk_table_attach (GTK_TABLE (table4), hbox34, 1, 2, 4, 5, (GtkAttachOptions) (GTK_FILL), @@ -755,37 +580,37 @@ thu_def = gtk_check_button_new_with_label (_("Default")); gtk_widget_set_name (thu_def, "thu_def"); - gtk_widget_ref (thu_def); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "thu_def", thu_def, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (thu_def); + g_object_set_data_full (G_OBJECT (config_dialog), "thu_def", thu_def, + (GDestroyNotify) g_object_unref); gtk_widget_show (thu_def); gtk_box_pack_start (GTK_BOX (hbox34), thu_def, FALSE, FALSE, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (thu_def), TRUE); - thu_h_adj = gtk_adjustment_new (6, 0, 23, 1, 10, 0); + thu_h_adj = (GtkAdjustment *) gtk_adjustment_new (6, 0, 23, 1, 10, 0); thu_h = gtk_spin_button_new (GTK_ADJUSTMENT (thu_h_adj), 1, 0); gtk_widget_set_name (thu_h, "thu_h"); - gtk_widget_ref (thu_h); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "thu_h", thu_h, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (thu_h); + g_object_set_data_full (G_OBJECT (config_dialog), "thu_h", thu_h, + (GDestroyNotify) g_object_unref); gtk_widget_show (thu_h); gtk_box_pack_start (GTK_BOX (hbox34), thu_h, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (thu_h), TRUE); label92 = gtk_label_new (":"); gtk_widget_set_name (label92, "label92"); - gtk_widget_ref (label92); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label92", label92, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label92); + g_object_set_data_full (G_OBJECT (config_dialog), "label92", label92, + (GDestroyNotify) g_object_unref); gtk_widget_show (label92); gtk_box_pack_start (GTK_BOX (hbox34), label92, FALSE, FALSE, 0); - thu_m_adj = gtk_adjustment_new (30, 0, 59, 1, 10, 0); + thu_m_adj = (GtkAdjustment *) gtk_adjustment_new (30, 0, 59, 1, 10, 0); thu_m = gtk_spin_button_new (GTK_ADJUSTMENT (thu_m_adj), 1, 0); gtk_widget_set_name (thu_m, "thu_m"); - gtk_widget_ref (thu_m); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "thu_m", thu_m, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (thu_m); + g_object_set_data_full (G_OBJECT (config_dialog), "thu_m", thu_m, + (GDestroyNotify) g_object_unref); gtk_widget_show (thu_m); gtk_box_pack_start (GTK_BOX (hbox34), thu_m, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (thu_m), TRUE); @@ -793,9 +618,9 @@ hbox35 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox35, "hbox35"); - gtk_widget_ref (hbox35); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hbox35", hbox35, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hbox35); + g_object_set_data_full (G_OBJECT (config_dialog), "hbox35", hbox35, + (GDestroyNotify) g_object_unref); gtk_widget_show (hbox35); gtk_table_attach (GTK_TABLE (table4), hbox35, 1, 2, 5, 6, (GtkAttachOptions) (GTK_FILL), @@ -803,37 +628,37 @@ fri_def = gtk_check_button_new_with_label (_("Default")); gtk_widget_set_name (fri_def, "fri_def"); - gtk_widget_ref (fri_def); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "fri_def", fri_def, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (fri_def); + g_object_set_data_full (G_OBJECT (config_dialog), "fri_def", fri_def, + (GDestroyNotify) g_object_unref); gtk_widget_show (fri_def); gtk_box_pack_start (GTK_BOX (hbox35), fri_def, FALSE, FALSE, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fri_def), TRUE); - fri_h_adj = gtk_adjustment_new (6, 0, 23, 1, 10, 0); + fri_h_adj = (GtkAdjustment *) gtk_adjustment_new (6, 0, 23, 1, 10, 0); fri_h = gtk_spin_button_new (GTK_ADJUSTMENT (fri_h_adj), 1, 0); gtk_widget_set_name (fri_h, "fri_h"); - gtk_widget_ref (fri_h); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "fri_h", fri_h, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (fri_h); + g_object_set_data_full (G_OBJECT (config_dialog), "fri_h", fri_h, + (GDestroyNotify) g_object_unref); gtk_widget_show (fri_h); gtk_box_pack_start (GTK_BOX (hbox35), fri_h, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (fri_h), TRUE); label93 = gtk_label_new (":"); gtk_widget_set_name (label93, "label93"); - gtk_widget_ref (label93); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label93", label93, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label93); + g_object_set_data_full (G_OBJECT (config_dialog), "label93", label93, + (GDestroyNotify) g_object_unref); gtk_widget_show (label93); gtk_box_pack_start (GTK_BOX (hbox35), label93, FALSE, FALSE, 0); - fri_m_adj = gtk_adjustment_new (30, 0, 59, 1, 10, 0); + fri_m_adj = (GtkAdjustment *) gtk_adjustment_new (30, 0, 59, 1, 10, 0); fri_m = gtk_spin_button_new (GTK_ADJUSTMENT (fri_m_adj), 1, 0); gtk_widget_set_name (fri_m, "fri_m"); - gtk_widget_ref (fri_m); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "fri_m", fri_m, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (fri_m); + g_object_set_data_full (G_OBJECT (config_dialog), "fri_m", fri_m, + (GDestroyNotify) g_object_unref); gtk_widget_show (fri_m); gtk_box_pack_start (GTK_BOX (hbox35), fri_m, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (fri_m), TRUE); @@ -841,9 +666,9 @@ hbox36 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox36, "hbox36"); - gtk_widget_ref (hbox36); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hbox36", hbox36, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hbox36); + g_object_set_data_full (G_OBJECT (config_dialog), "hbox36", hbox36, + (GDestroyNotify) g_object_unref); gtk_widget_show (hbox36); gtk_table_attach (GTK_TABLE (table4), hbox36, 1, 2, 6, 7, (GtkAttachOptions) (GTK_FILL), @@ -851,37 +676,37 @@ sat_def = gtk_check_button_new_with_label (_("Default")); gtk_widget_set_name (sat_def, "sat_def"); - gtk_widget_ref (sat_def); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "sat_def", sat_def, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (sat_def); + g_object_set_data_full (G_OBJECT (config_dialog), "sat_def", sat_def, + (GDestroyNotify) g_object_unref); gtk_widget_show (sat_def); gtk_box_pack_start (GTK_BOX (hbox36), sat_def, FALSE, FALSE, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sat_def), TRUE); - sat_h_adj = gtk_adjustment_new (6, 0, 23, 1, 10, 0); + sat_h_adj = (GtkAdjustment *) gtk_adjustment_new (6, 0, 23, 1, 10, 0); sat_h = gtk_spin_button_new (GTK_ADJUSTMENT (sat_h_adj), 1, 0); gtk_widget_set_name (sat_h, "sat_h"); - gtk_widget_ref (sat_h); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "sat_h", sat_h, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (sat_h); + g_object_set_data_full (G_OBJECT (config_dialog), "sat_h", sat_h, + (GDestroyNotify) g_object_unref); gtk_widget_show (sat_h); gtk_box_pack_start (GTK_BOX (hbox36), sat_h, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (sat_h), TRUE); label94 = gtk_label_new (":"); gtk_widget_set_name (label94, "label94"); - gtk_widget_ref (label94); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label94", label94, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label94); + g_object_set_data_full (G_OBJECT (config_dialog), "label94", label94, + (GDestroyNotify) g_object_unref); gtk_widget_show (label94); gtk_box_pack_start (GTK_BOX (hbox36), label94, FALSE, FALSE, 0); - sat_m_adj = gtk_adjustment_new (30, 0, 59, 1, 10, 0); + sat_m_adj = (GtkAdjustment *) gtk_adjustment_new (30, 0, 59, 1, 10, 0); sat_m = gtk_spin_button_new (GTK_ADJUSTMENT (sat_m_adj), 1, 0); gtk_widget_set_name (sat_m, "sat_m"); - gtk_widget_ref (sat_m); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "sat_m", sat_m, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (sat_m); + g_object_set_data_full (G_OBJECT (config_dialog), "sat_m", sat_m, + (GDestroyNotify) g_object_unref); gtk_widget_show (sat_m); gtk_box_pack_start (GTK_BOX (hbox36), sat_m, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (sat_m), TRUE); @@ -889,9 +714,9 @@ hbox37 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox37, "hbox37"); - gtk_widget_ref (hbox37); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hbox37", hbox37, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hbox37); + g_object_set_data_full (G_OBJECT (config_dialog), "hbox37", hbox37, + (GDestroyNotify) g_object_unref); gtk_widget_show (hbox37); gtk_table_attach (GTK_TABLE (table4), hbox37, 1, 2, 7, 8, (GtkAttachOptions) (GTK_FILL), @@ -899,37 +724,37 @@ sun_def = gtk_check_button_new_with_label (_("Default")); gtk_widget_set_name (sun_def, "sun_def"); - gtk_widget_ref (sun_def); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "sun_def", sun_def, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (sun_def); + g_object_set_data_full (G_OBJECT (config_dialog), "sun_def", sun_def, + (GDestroyNotify) g_object_unref); gtk_widget_show (sun_def); gtk_box_pack_start (GTK_BOX (hbox37), sun_def, FALSE, FALSE, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sun_def), TRUE); - sun_h_adj = gtk_adjustment_new (6, 0, 23, 1, 10, 0); + sun_h_adj = (GtkAdjustment *) gtk_adjustment_new (6, 0, 23, 1, 10, 0); sun_h = gtk_spin_button_new (GTK_ADJUSTMENT (sun_h_adj), 1, 0); gtk_widget_set_name (sun_h, "sun_h"); - gtk_widget_ref (sun_h); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "sun_h", sun_h, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (sun_h); + g_object_set_data_full (G_OBJECT (config_dialog), "sun_h", sun_h, + (GDestroyNotify) g_object_unref); gtk_widget_show (sun_h); gtk_box_pack_start (GTK_BOX (hbox37), sun_h, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (sun_h), TRUE); label95 = gtk_label_new (":"); gtk_widget_set_name (label95, "label95"); - gtk_widget_ref (label95); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label95", label95, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label95); + g_object_set_data_full (G_OBJECT (config_dialog), "label95", label95, + (GDestroyNotify) g_object_unref); gtk_widget_show (label95); gtk_box_pack_start (GTK_BOX (hbox37), label95, FALSE, FALSE, 0); - sun_m_adj = gtk_adjustment_new (30, 0, 59, 1, 10, 0); + sun_m_adj = (GtkAdjustment *) gtk_adjustment_new (30, 0, 59, 1, 10, 0); sun_m = gtk_spin_button_new (GTK_ADJUSTMENT (sun_m_adj), 1, 0); gtk_widget_set_name (sun_m, "sun_m"); - gtk_widget_ref (sun_m); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "sun_m", sun_m, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (sun_m); + g_object_set_data_full (G_OBJECT (config_dialog), "sun_m", sun_m, + (GDestroyNotify) g_object_unref); gtk_widget_show (sun_m); gtk_box_pack_start (GTK_BOX (hbox37), sun_m, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (sun_m), TRUE); @@ -937,9 +762,9 @@ label87 = gtk_label_new (_("Day")); gtk_widget_set_name (label87, "label87"); - gtk_widget_ref (label87); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label87", label87, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label87); + g_object_set_data_full (G_OBJECT (config_dialog), "label87", label87, + (GDestroyNotify) g_object_unref); gtk_widget_show (label87); gtk_table_attach (GTK_TABLE (table4), label87, 0, 1, 0, 1, (GtkAttachOptions) (0), @@ -947,9 +772,9 @@ label88 = gtk_label_new (_("Time")); gtk_widget_set_name (label88, "label88"); - gtk_widget_ref (label88); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label88", label88, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label88); + g_object_set_data_full (G_OBJECT (config_dialog), "label88", label88, + (GDestroyNotify) g_object_unref); gtk_widget_show (label88); gtk_table_attach (GTK_TABLE (table4), label88, 1, 2, 0, 1, (GtkAttachOptions) (0), @@ -957,9 +782,9 @@ tue_cb = gtk_check_button_new_with_label (_("Tuesday")); gtk_widget_set_name (tue_cb, "tue_cb"); - gtk_widget_ref (tue_cb); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "tue_cb", tue_cb, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (tue_cb); + g_object_set_data_full (G_OBJECT (config_dialog), "tue_cb", tue_cb, + (GDestroyNotify) g_object_unref); gtk_widget_show (tue_cb); gtk_table_attach (GTK_TABLE (table4), tue_cb, 0, 1, 2, 3, (GtkAttachOptions) (0), @@ -968,9 +793,9 @@ wed_cb = gtk_check_button_new_with_label (_("Wednesday")); gtk_widget_set_name (wed_cb, "wed_cb"); - gtk_widget_ref (wed_cb); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "wed_cb", wed_cb, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (wed_cb); + g_object_set_data_full (G_OBJECT (config_dialog), "wed_cb", wed_cb, + (GDestroyNotify) g_object_unref); gtk_widget_show (wed_cb); gtk_table_attach (GTK_TABLE (table4), wed_cb, 0, 1, 3, 4, (GtkAttachOptions) (0), @@ -979,9 +804,9 @@ thu_cb = gtk_check_button_new_with_label (_("Thursday")); gtk_widget_set_name (thu_cb, "thu_cb"); - gtk_widget_ref (thu_cb); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "thu_cb", thu_cb, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (thu_cb); + g_object_set_data_full (G_OBJECT (config_dialog), "thu_cb", thu_cb, + (GDestroyNotify) g_object_unref); gtk_widget_show (thu_cb); gtk_table_attach (GTK_TABLE (table4), thu_cb, 0, 1, 4, 5, (GtkAttachOptions) (0), @@ -990,9 +815,9 @@ fri_cb = gtk_check_button_new_with_label (_("Friday")); gtk_widget_set_name (fri_cb, "fri_cb"); - gtk_widget_ref (fri_cb); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "fri_cb", fri_cb, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (fri_cb); + g_object_set_data_full (G_OBJECT (config_dialog), "fri_cb", fri_cb, + (GDestroyNotify) g_object_unref); gtk_widget_show (fri_cb); gtk_table_attach (GTK_TABLE (table4), fri_cb, 0, 1, 5, 6, (GtkAttachOptions) (0), @@ -1001,9 +826,9 @@ sat_cb = gtk_check_button_new_with_label (_("Saturday")); gtk_widget_set_name (sat_cb, "sat_cb"); - gtk_widget_ref (sat_cb); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "sat_cb", sat_cb, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (sat_cb); + g_object_set_data_full (G_OBJECT (config_dialog), "sat_cb", sat_cb, + (GDestroyNotify) g_object_unref); gtk_widget_show (sat_cb); gtk_table_attach (GTK_TABLE (table4), sat_cb, 0, 1, 6, 7, (GtkAttachOptions) (0), @@ -1012,9 +837,9 @@ sun_cb = gtk_check_button_new_with_label (_("Sunday")); gtk_widget_set_name (sun_cb, "sun_cb"); - gtk_widget_ref (sun_cb); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "sun_cb", sun_cb, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (sun_cb); + g_object_set_data_full (G_OBJECT (config_dialog), "sun_cb", sun_cb, + (GDestroyNotify) g_object_unref); gtk_widget_show (sun_cb); gtk_table_attach (GTK_TABLE (table4), sun_cb, 0, 1, 7, 8, (GtkAttachOptions) (0), @@ -1022,9 +847,9 @@ mon_cb = gtk_check_button_new_with_label (_("Monday")); gtk_widget_set_name (mon_cb, "mon_cb"); - gtk_widget_ref (mon_cb); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "mon_cb", mon_cb, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (mon_cb); + g_object_set_data_full (G_OBJECT (config_dialog), "mon_cb", mon_cb, + (GDestroyNotify) g_object_unref); gtk_widget_show (mon_cb); gtk_table_attach (GTK_TABLE (table4), mon_cb, 0, 1, 1, 2, (GtkAttachOptions) (0), @@ -1033,52 +858,52 @@ label72 = gtk_label_new (_("Days")); gtk_widget_set_name (label72, "label72"); - gtk_widget_ref (label72); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label72", label72, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label72); + g_object_set_data_full (G_OBJECT (config_dialog), "label72", label72, + (GDestroyNotify) g_object_unref); gtk_widget_show (label72); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), label72); vbox8 = gtk_vbox_new (FALSE, 0); gtk_widget_set_name (vbox8, "vbox8"); - gtk_widget_ref (vbox8); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "vbox8", vbox8, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (vbox8); + g_object_set_data_full (G_OBJECT (config_dialog), "vbox8", vbox8, + (GDestroyNotify) g_object_unref); gtk_widget_show (vbox8); gtk_container_add (GTK_CONTAINER (notebook1), vbox8); frame11 = gtk_frame_new (_("Fading")); gtk_widget_set_name (frame11, "frame11"); - gtk_widget_ref (frame11); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "frame11", frame11, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (frame11); + g_object_set_data_full (G_OBJECT (config_dialog), "frame11", frame11, + (GDestroyNotify) g_object_unref); gtk_widget_show (frame11); gtk_box_pack_start (GTK_BOX (vbox8), frame11, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (frame11), 10); alignment10 = gtk_alignment_new (0, 0.5, 0.1, 1); gtk_widget_set_name (alignment10, "alignment10"); - gtk_widget_ref (alignment10); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "alignment10", alignment10, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (alignment10); + g_object_set_data_full (G_OBJECT (config_dialog), "alignment10", alignment10, + (GDestroyNotify) g_object_unref); gtk_widget_show (alignment10); gtk_container_add (GTK_CONTAINER (frame11), alignment10); gtk_container_set_border_width (GTK_CONTAINER (alignment10), 8); hbox25 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox25, "hbox25"); - gtk_widget_ref (hbox25); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hbox25", hbox25, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hbox25); + g_object_set_data_full (G_OBJECT (config_dialog), "hbox25", hbox25, + (GDestroyNotify) g_object_unref); gtk_widget_show (hbox25); gtk_container_add (GTK_CONTAINER (alignment10), hbox25); - fading_spin_adj = gtk_adjustment_new (120, 0, 3600, 1, 10, 10); + fading_spin_adj = (GtkAdjustment *) gtk_adjustment_new (120, 0, 3600, 1, 10, 0); fading_spin = gtk_spin_button_new (GTK_ADJUSTMENT (fading_spin_adj), 1, 0); gtk_widget_set_name (fading_spin, "fading_spin"); - gtk_widget_ref (fading_spin); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "fading_spin", fading_spin, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (fading_spin); + g_object_set_data_full (G_OBJECT (config_dialog), "fading_spin", fading_spin, + (GDestroyNotify) g_object_unref); gtk_widget_show (fading_spin); gtk_box_pack_start (GTK_BOX (hbox25), fading_spin, TRUE, TRUE, 0); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (fading_spin), TRUE); @@ -1086,52 +911,51 @@ label81 = gtk_label_new (_("seconds")); gtk_widget_set_name (label81, "label81"); - gtk_widget_ref (label81); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label81", label81, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label81); + g_object_set_data_full (G_OBJECT (config_dialog), "label81", label81, + (GDestroyNotify) g_object_unref); gtk_widget_show (label81); gtk_box_pack_start (GTK_BOX (hbox25), label81, FALSE, TRUE, 0); frame12 = gtk_frame_new (_("Volume")); gtk_widget_set_name (frame12, "frame12"); - gtk_widget_ref (frame12); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "frame12", frame12, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (frame12); + g_object_set_data_full (G_OBJECT (config_dialog), "frame12", frame12, + (GDestroyNotify) g_object_unref); gtk_widget_show (frame12); gtk_box_pack_start (GTK_BOX (vbox8), frame12, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (frame12), 10); vbox9 = gtk_vbox_new (FALSE, 10); gtk_widget_set_name (vbox9, "vbox9"); - gtk_widget_ref (vbox9); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "vbox9", vbox9, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (vbox9); + g_object_set_data_full (G_OBJECT (config_dialog), "vbox9", vbox9, + (GDestroyNotify) g_object_unref); gtk_widget_show (vbox9); gtk_container_add (GTK_CONTAINER (frame12), vbox9); gtk_container_set_border_width (GTK_CONTAINER (vbox9), 8); alignment11 = gtk_alignment_new (1, 0.5, 0.1, 1); gtk_widget_set_name (alignment11, "alignment11"); - gtk_widget_ref (alignment11); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "alignment11", alignment11, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (alignment11); + g_object_set_data_full (G_OBJECT (config_dialog), "alignment11", alignment11, + (GDestroyNotify) g_object_unref); gtk_widget_show (alignment11); gtk_box_pack_end (GTK_BOX (vbox9), alignment11, FALSE, FALSE, 0); current_button = gtk_button_new_with_label (_("Current")); gtk_widget_set_name (current_button, "current_button"); - gtk_widget_ref (current_button); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "current_button", current_button, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (current_button); + g_object_set_data_full (G_OBJECT (config_dialog), "current_button", current_button, + (GDestroyNotify) g_object_unref); gtk_widget_show (current_button); gtk_container_add (GTK_CONTAINER (alignment11), current_button); - gtk_tooltips_set_tip (tooltips, current_button, _("reset to current output volume"), NULL); label82 = gtk_label_new (_("Start at")); gtk_widget_set_name (label82, "label82"); - gtk_widget_ref (label82); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label82", label82, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label82); + g_object_set_data_full (G_OBJECT (config_dialog), "label82", label82, + (GDestroyNotify) g_object_unref); gtk_widget_show (label82); gtk_box_pack_start (GTK_BOX (vbox9), label82, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (label82), GTK_JUSTIFY_LEFT); @@ -1139,17 +963,17 @@ hbox26 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox26, "hbox26"); - gtk_widget_ref (hbox26); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hbox26", hbox26, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hbox26); + g_object_set_data_full (G_OBJECT (config_dialog), "hbox26", hbox26, + (GDestroyNotify) g_object_unref); gtk_widget_show (hbox26); gtk_box_pack_start (GTK_BOX (vbox9), hbox26, TRUE, TRUE, 0); quiet_vol_scale = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (20, 0, 100, 1, 5, 0))); gtk_widget_set_name (quiet_vol_scale, "quiet_vol_scale"); - gtk_widget_ref (quiet_vol_scale); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "quiet_vol_scale", quiet_vol_scale, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (quiet_vol_scale); + g_object_set_data_full (G_OBJECT (config_dialog), "quiet_vol_scale", quiet_vol_scale, + (GDestroyNotify) g_object_unref); gtk_widget_show (quiet_vol_scale); gtk_box_pack_start (GTK_BOX (hbox26), quiet_vol_scale, TRUE, TRUE, 0); gtk_scale_set_value_pos (GTK_SCALE (quiet_vol_scale), GTK_POS_RIGHT); @@ -1157,25 +981,25 @@ label83 = gtk_label_new (_("%")); gtk_widget_set_name (label83, "label83"); - gtk_widget_ref (label83); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label83", label83, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label83); + g_object_set_data_full (G_OBJECT (config_dialog), "label83", label83, + (GDestroyNotify) g_object_unref); gtk_widget_show (label83); gtk_box_pack_start (GTK_BOX (hbox26), label83, FALSE, FALSE, 0); hseparator2 = gtk_hseparator_new (); gtk_widget_set_name (hseparator2, "hseparator2"); - gtk_widget_ref (hseparator2); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hseparator2", hseparator2, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hseparator2); + g_object_set_data_full (G_OBJECT (config_dialog), "hseparator2", hseparator2, + (GDestroyNotify) g_object_unref); gtk_widget_show (hseparator2); gtk_box_pack_start (GTK_BOX (vbox9), hseparator2, TRUE, TRUE, 0); label84 = gtk_label_new (_("Final")); gtk_widget_set_name (label84, "label84"); - gtk_widget_ref (label84); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label84", label84, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label84); + g_object_set_data_full (G_OBJECT (config_dialog), "label84", label84, + (GDestroyNotify) g_object_unref); gtk_widget_show (label84); gtk_box_pack_start (GTK_BOX (vbox9), label84, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (label84), GTK_JUSTIFY_LEFT); @@ -1183,17 +1007,17 @@ hbox27 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox27, "hbox27"); - gtk_widget_ref (hbox27); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hbox27", hbox27, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hbox27); + g_object_set_data_full (G_OBJECT (config_dialog), "hbox27", hbox27, + (GDestroyNotify) g_object_unref); gtk_widget_show (hbox27); gtk_box_pack_start (GTK_BOX (vbox9), hbox27, TRUE, TRUE, 0); vol_scale = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (80, 0, 100, 1, 5, 0))); gtk_widget_set_name (vol_scale, "vol_scale"); - gtk_widget_ref (vol_scale); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "vol_scale", vol_scale, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (vol_scale); + g_object_set_data_full (G_OBJECT (config_dialog), "vol_scale", vol_scale, + (GDestroyNotify) g_object_unref); gtk_widget_show (vol_scale); gtk_box_pack_start (GTK_BOX (hbox27), vol_scale, TRUE, TRUE, 0); gtk_scale_set_value_pos (GTK_SCALE (vol_scale), GTK_POS_RIGHT); @@ -1201,152 +1025,152 @@ label85 = gtk_label_new (_("%")); gtk_widget_set_name (label85, "label85"); - gtk_widget_ref (label85); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label85", label85, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label85); + g_object_set_data_full (G_OBJECT (config_dialog), "label85", label85, + (GDestroyNotify) g_object_unref); gtk_widget_show (label85); gtk_box_pack_start (GTK_BOX (hbox27), label85, FALSE, TRUE, 0); gtk_label_set_justify (GTK_LABEL (label85), GTK_JUSTIFY_FILL); label73 = gtk_label_new (_("Volume")); gtk_widget_set_name (label73, "label73"); - gtk_widget_ref (label73); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label73", label73, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label73); + g_object_set_data_full (G_OBJECT (config_dialog), "label73", label73, + (GDestroyNotify) g_object_unref); gtk_widget_show (label73); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 2), label73); vbox10 = gtk_vbox_new (FALSE, 0); gtk_widget_set_name (vbox10, "vbox10"); - gtk_widget_ref (vbox10); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "vbox10", vbox10, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (vbox10); + g_object_set_data_full (G_OBJECT (config_dialog), "vbox10", vbox10, + (GDestroyNotify) g_object_unref); gtk_widget_show (vbox10); gtk_container_add (GTK_CONTAINER (notebook1), vbox10); frame13 = gtk_frame_new (_("Additional Command")); gtk_widget_set_name (frame13, "frame13"); - gtk_widget_ref (frame13); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "frame13", frame13, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (frame13); + g_object_set_data_full (G_OBJECT (config_dialog), "frame13", frame13, + (GDestroyNotify) g_object_unref); gtk_widget_show (frame13); gtk_box_pack_start (GTK_BOX (vbox10), frame13, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (frame13), 10); hbox28 = gtk_hbox_new (FALSE, 5); gtk_widget_set_name (hbox28, "hbox28"); - gtk_widget_ref (hbox28); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hbox28", hbox28, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hbox28); + g_object_set_data_full (G_OBJECT (config_dialog), "hbox28", hbox28, + (GDestroyNotify) g_object_unref); gtk_widget_show (hbox28); gtk_container_add (GTK_CONTAINER (frame13), hbox28); gtk_container_set_border_width (GTK_CONTAINER (hbox28), 8); cmd_entry = gtk_entry_new (); gtk_widget_set_name (cmd_entry, "cmd_entry"); - gtk_widget_ref (cmd_entry); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "cmd_entry", cmd_entry, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (cmd_entry); + g_object_set_data_full (G_OBJECT (config_dialog), "cmd_entry", cmd_entry, + (GDestroyNotify) g_object_unref); gtk_widget_show (cmd_entry); gtk_box_pack_start (GTK_BOX (hbox28), cmd_entry, TRUE, TRUE, 0); cmd_checkb = gtk_check_button_new_with_label (_("enable")); gtk_widget_set_name (cmd_checkb, "cmd_checkb"); - gtk_widget_ref (cmd_checkb); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "cmd_checkb", cmd_checkb, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (cmd_checkb); + g_object_set_data_full (G_OBJECT (config_dialog), "cmd_checkb", cmd_checkb, + (GDestroyNotify) g_object_unref); gtk_widget_show (cmd_checkb); gtk_box_pack_start (GTK_BOX (hbox28), cmd_checkb, FALSE, FALSE, 0); frame14 = gtk_frame_new (_("Playlist (optional)")); gtk_widget_set_name (frame14, "frame14"); - gtk_widget_ref (frame14); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "frame14", frame14, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (frame14); + g_object_set_data_full (G_OBJECT (config_dialog), "frame14", frame14, + (GDestroyNotify) g_object_unref); gtk_widget_show (frame14); gtk_box_pack_start (GTK_BOX (vbox10), frame14, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (frame14), 10); hbox29 = gtk_hbox_new (FALSE, 5); gtk_widget_set_name (hbox29, "hbox29"); - gtk_widget_ref (hbox29); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hbox29", hbox29, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hbox29); + g_object_set_data_full (G_OBJECT (config_dialog), "hbox29", hbox29, + (GDestroyNotify) g_object_unref); gtk_widget_show (hbox29); gtk_container_add (GTK_CONTAINER (frame14), hbox29); gtk_container_set_border_width (GTK_CONTAINER (hbox29), 8); playlist = gtk_entry_new (); gtk_widget_set_name (playlist, "playlist"); - gtk_widget_ref (playlist); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "playlist", playlist, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (playlist); + g_object_set_data_full (G_OBJECT (config_dialog), "playlist", playlist, + (GDestroyNotify) g_object_unref); gtk_widget_show (playlist); gtk_box_pack_start (GTK_BOX (hbox29), playlist, TRUE, TRUE, 0); playlist_browse_button = gtk_button_new_with_label (_("Browse...")); gtk_widget_set_name (playlist_browse_button, "playlist_browse_button"); - gtk_widget_ref (playlist_browse_button); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "playlist_browse_button", playlist_browse_button, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (playlist_browse_button); + g_object_set_data_full (G_OBJECT (config_dialog), "playlist_browse_button", playlist_browse_button, + (GDestroyNotify) g_object_unref); gtk_widget_show (playlist_browse_button); gtk_box_pack_start (GTK_BOX (hbox29), playlist_browse_button, FALSE, FALSE, 0); frame18 = gtk_frame_new (_("Reminder")); gtk_widget_set_name (frame18, "frame18"); - gtk_widget_ref (frame18); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "frame18", frame18, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (frame18); + g_object_set_data_full (G_OBJECT (config_dialog), "frame18", frame18, + (GDestroyNotify) g_object_unref); gtk_widget_show (frame18); gtk_box_pack_start (GTK_BOX (vbox10), frame18, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (frame18), 10); hbox38 = gtk_hbox_new (FALSE, 0); gtk_widget_set_name (hbox38, "hbox38"); - gtk_widget_ref (hbox38); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hbox38", hbox38, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hbox38); + g_object_set_data_full (G_OBJECT (config_dialog), "hbox38", hbox38, + (GDestroyNotify) g_object_unref); gtk_widget_show (hbox38); gtk_container_add (GTK_CONTAINER (frame18), hbox38); reminder_cb = gtk_check_button_new_with_label (_("Use reminder")); gtk_widget_set_name (reminder_cb, "reminder_cb"); - gtk_widget_ref (reminder_cb); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "reminder_cb", reminder_cb, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (reminder_cb); + g_object_set_data_full (G_OBJECT (config_dialog), "reminder_cb", reminder_cb, + (GDestroyNotify) g_object_unref); gtk_widget_show (reminder_cb); gtk_box_pack_start (GTK_BOX (hbox38), reminder_cb, FALSE, FALSE, 0); reminder_text = gtk_entry_new (); gtk_widget_set_name (reminder_text, "reminder_text"); - gtk_widget_ref (reminder_text); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "reminder_text", reminder_text, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (reminder_text); + g_object_set_data_full (G_OBJECT (config_dialog), "reminder_text", reminder_text, + (GDestroyNotify) g_object_unref); gtk_widget_show (reminder_text); gtk_box_pack_start (GTK_BOX (hbox38), reminder_text, TRUE, TRUE, 5); label74 = gtk_label_new (_("Options")); gtk_widget_set_name (label74, "label74"); - gtk_widget_ref (label74); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label74", label74, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label74); + g_object_set_data_full (G_OBJECT (config_dialog), "label74", label74, + (GDestroyNotify) g_object_unref); gtk_widget_show (label74); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 3), label74); frame16 = gtk_frame_new (_("What do these options mean?")); gtk_widget_set_name (frame16, "frame16"); - gtk_widget_ref (frame16); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "frame16", frame16, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (frame16); + g_object_set_data_full (G_OBJECT (config_dialog), "frame16", frame16, + (GDestroyNotify) g_object_unref); gtk_widget_show (frame16); gtk_container_add (GTK_CONTAINER (notebook1), frame16); gtk_container_set_border_width (GTK_CONTAINER (frame16), 10); scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_set_name (scrolledwindow1, "scrolledwindow1"); - gtk_widget_ref (scrolledwindow1); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "scrolledwindow1", scrolledwindow1, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (scrolledwindow1); + g_object_set_data_full (G_OBJECT (config_dialog), "scrolledwindow1", scrolledwindow1, + (GDestroyNotify) g_object_unref); gtk_widget_show (scrolledwindow1); gtk_container_add (GTK_CONTAINER (frame16), scrolledwindow1); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); @@ -1355,9 +1179,9 @@ text1buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW (text1)); gtk_text_buffer_get_iter_at_offset (text1buffer, &iter, 0); gtk_widget_set_name (text1, "text1"); - gtk_widget_ref (text1); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "text1", text1, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (text1); + g_object_set_data_full (G_OBJECT (config_dialog), "text1", text1, + (GDestroyNotify) g_object_unref); gtk_widget_show (text1); gtk_container_add (GTK_CONTAINER (scrolledwindow1), text1); gtk_text_buffer_insert (text1buffer, &iter, @@ -1365,81 +1189,80 @@ label86 = gtk_label_new (_("Help")); gtk_widget_set_name (label86, "label86"); - gtk_widget_ref (label86); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "label86", label86, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (label86); + g_object_set_data_full (G_OBJECT (config_dialog), "label86", label86, + (GDestroyNotify) g_object_unref); gtk_widget_show (label86); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 4), label86); - dialog_action_area5 = GTK_DIALOG (config_dialog)->action_area; + dialog_action_area5 = gtk_dialog_get_action_area ((GtkDialog *) config_dialog); gtk_widget_set_name (dialog_action_area5, "dialog_action_area5"); - gtk_object_set_data (GTK_OBJECT (config_dialog), "dialog_action_area5", dialog_action_area5); + g_object_set_data (G_OBJECT (config_dialog), "dialog_action_area5", dialog_action_area5); gtk_widget_show (dialog_action_area5); gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area5), 10); hbox20 = gtk_hbox_new (TRUE, 5); gtk_widget_set_name (hbox20, "hbox20"); - gtk_widget_ref (hbox20); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "hbox20", hbox20, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (hbox20); + g_object_set_data_full (G_OBJECT (config_dialog), "hbox20", hbox20, + (GDestroyNotify) g_object_unref); gtk_widget_show (hbox20); gtk_box_pack_start (GTK_BOX (dialog_action_area5), hbox20, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (hbox20), 10); ok_button = gtk_button_new_with_label (_("OK")); gtk_widget_set_name (ok_button, "ok_button"); - gtk_widget_ref (ok_button); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "ok_button", ok_button, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (ok_button); + g_object_set_data_full (G_OBJECT (config_dialog), "ok_button", ok_button, + (GDestroyNotify) g_object_unref); gtk_widget_show (ok_button); gtk_box_pack_start (GTK_BOX (hbox20), ok_button, FALSE, TRUE, 0); - GTK_WIDGET_SET_FLAGS (ok_button, GTK_CAN_DEFAULT); + gtk_widget_set_can_default (ok_button, TRUE); cancel_button = gtk_button_new_with_label (_("Cancel")); gtk_widget_set_name (cancel_button, "cancel_button"); - gtk_widget_ref (cancel_button); - gtk_object_set_data_full (GTK_OBJECT (config_dialog), "cancel_button", cancel_button, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (cancel_button); + g_object_set_data_full (G_OBJECT (config_dialog), "cancel_button", cancel_button, + (GDestroyNotify) g_object_unref); gtk_widget_show (cancel_button); gtk_box_pack_start (GTK_BOX (hbox20), cancel_button, FALSE, TRUE, 0); - GTK_WIDGET_SET_FLAGS (cancel_button, GTK_CAN_DEFAULT); + gtk_widget_set_can_default (cancel_button, TRUE); - gtk_signal_connect (GTK_OBJECT (mon_def), "toggled", - GTK_SIGNAL_FUNC (on_mon_def_toggled), + g_signal_connect (G_OBJECT (mon_def), "toggled", + G_CALLBACK (on_mon_def_toggled), NULL); - gtk_signal_connect (GTK_OBJECT (tue_def), "toggled", - GTK_SIGNAL_FUNC (on_tue_def_toggled), + g_signal_connect (G_OBJECT (tue_def), "toggled", + G_CALLBACK (on_tue_def_toggled), NULL); - gtk_signal_connect (GTK_OBJECT (wed_def), "toggled", - GTK_SIGNAL_FUNC (on_wed_def_toggled), + g_signal_connect (G_OBJECT (wed_def), "toggled", + G_CALLBACK (on_wed_def_toggled), NULL); - gtk_signal_connect (GTK_OBJECT (thu_def), "toggled", - GTK_SIGNAL_FUNC (on_thu_def_toggled), + g_signal_connect (G_OBJECT (thu_def), "toggled", + G_CALLBACK (on_thu_def_toggled), NULL); - gtk_signal_connect (GTK_OBJECT (fri_def), "toggled", - GTK_SIGNAL_FUNC (on_fri_def_toggled), + g_signal_connect (G_OBJECT (fri_def), "toggled", + G_CALLBACK (on_fri_def_toggled), NULL); - gtk_signal_connect (GTK_OBJECT (sat_def), "toggled", - GTK_SIGNAL_FUNC (on_sat_def_toggled), + g_signal_connect (G_OBJECT (sat_def), "toggled", + G_CALLBACK (on_sat_def_toggled), NULL); - gtk_signal_connect (GTK_OBJECT (sun_def), "toggled", - GTK_SIGNAL_FUNC (on_sun_def_toggled), + g_signal_connect (G_OBJECT (sun_def), "toggled", + G_CALLBACK (on_sun_def_toggled), NULL); - gtk_signal_connect (GTK_OBJECT (current_button), "clicked", - GTK_SIGNAL_FUNC (alarm_current_volume), + g_signal_connect (G_OBJECT (current_button), "clicked", + G_CALLBACK (alarm_current_volume), NULL); - gtk_signal_connect (GTK_OBJECT (ok_button), "clicked", - GTK_SIGNAL_FUNC (alarm_save), + g_signal_connect (G_OBJECT (ok_button), "clicked", + G_CALLBACK (alarm_save), NULL); - gtk_signal_connect_object (GTK_OBJECT (ok_button), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), - GTK_OBJECT (config_dialog)); - gtk_signal_connect_object (GTK_OBJECT (cancel_button), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), - GTK_OBJECT (config_dialog)); + g_signal_connect_swapped (G_OBJECT (ok_button), "clicked", + G_CALLBACK (gtk_widget_destroy), + G_OBJECT (config_dialog)); + g_signal_connect_swapped (G_OBJECT (cancel_button), "clicked", + G_CALLBACK (gtk_widget_destroy), + G_OBJECT (config_dialog)); gtk_widget_grab_default (ok_button); - gtk_object_set_data (GTK_OBJECT (config_dialog), "tooltips", tooltips); return config_dialog; } @@ -1456,51 +1279,50 @@ reminder_dialog = gtk_dialog_new (); gtk_widget_set_name (reminder_dialog, "reminder_dialog"); - gtk_object_set_data (GTK_OBJECT (reminder_dialog), "reminder_dialog", reminder_dialog); + g_object_set_data (G_OBJECT (reminder_dialog), "reminder_dialog", reminder_dialog); gtk_window_set_title (GTK_WINDOW (reminder_dialog), _("Reminder")); - gtk_window_set_policy (GTK_WINDOW (reminder_dialog), TRUE, TRUE, FALSE); - dialog_vbox6 = GTK_DIALOG (reminder_dialog)->vbox; + dialog_vbox6 = gtk_dialog_get_content_area ((GtkDialog *) reminder_dialog); gtk_widget_set_name (dialog_vbox6, "dialog_vbox6"); - gtk_object_set_data (GTK_OBJECT (reminder_dialog), "dialog_vbox6", dialog_vbox6); + g_object_set_data (G_OBJECT (reminder_dialog), "dialog_vbox6", dialog_vbox6); gtk_widget_show (dialog_vbox6); frame19 = gtk_frame_new (_("Your reminder for today is..")); gtk_widget_set_name (frame19, "frame19"); - gtk_widget_ref (frame19); - gtk_object_set_data_full (GTK_OBJECT (reminder_dialog), "frame19", frame19, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (frame19); + g_object_set_data_full (G_OBJECT (reminder_dialog), "frame19", frame19, + (GDestroyNotify) g_object_unref); gtk_widget_show (frame19); gtk_box_pack_start (GTK_BOX (dialog_vbox6), frame19, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (frame19), 10); reminder_entry = gtk_entry_new (); gtk_widget_set_name (reminder_entry, "reminder_entry"); - gtk_widget_ref (reminder_entry); - gtk_object_set_data_full (GTK_OBJECT (reminder_dialog), "reminder_entry", reminder_entry, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (reminder_entry); + g_object_set_data_full (G_OBJECT (reminder_dialog), "reminder_entry", reminder_entry, + (GDestroyNotify) g_object_unref); gtk_widget_show (reminder_entry); gtk_container_add (GTK_CONTAINER (frame19), reminder_entry); - gtk_entry_set_editable (GTK_ENTRY (reminder_entry), FALSE); + gtk_editable_set_editable ((GtkEditable *) reminder_entry, FALSE); gtk_entry_set_text (GTK_ENTRY (reminder_entry), reminder_msg); - dialog_action_area6 = GTK_DIALOG (reminder_dialog)->action_area; + dialog_action_area6 = gtk_dialog_get_action_area ((GtkDialog *) reminder_dialog); gtk_widget_set_name (dialog_action_area6, "dialog_action_area6"); - gtk_object_set_data (GTK_OBJECT (reminder_dialog), "dialog_action_area6", dialog_action_area6); + g_object_set_data (G_OBJECT (reminder_dialog), "dialog_action_area6", dialog_action_area6); gtk_widget_show (dialog_action_area6); gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area6), 10); button11 = gtk_button_new_with_label (_("Thankyou")); gtk_widget_set_name (button11, "button11"); - gtk_widget_ref (button11); - gtk_object_set_data_full (GTK_OBJECT (reminder_dialog), "button11", button11, - (GtkDestroyNotify) gtk_widget_unref); + g_object_ref (button11); + g_object_set_data_full (G_OBJECT (reminder_dialog), "button11", button11, + (GDestroyNotify) g_object_unref); gtk_widget_show (button11); gtk_box_pack_start (GTK_BOX (dialog_action_area6), button11, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (button11), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), - GTK_OBJECT(reminder_dialog)); + g_signal_connect_swapped (G_OBJECT (button11), "clicked", + G_CALLBACK (gtk_widget_destroy), + G_OBJECT(reminder_dialog)); return reminder_dialog; } diff -Nru audacious-plugins-2.4.4/src/alarm/interface.h audacious-plugins-3.2/src/alarm/interface.h --- audacious-plugins-2.4.4/src/alarm/interface.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/alarm/interface.h 2012-01-20 19:48:30.000000000 +0000 @@ -2,10 +2,7 @@ * DO NOT EDIT THIS FILE - it is generated by Glade. */ -GtkWidget* create_about_dialog (void); GtkWidget* create_alarm_dialog (void); -GtkWidget* create_playlist_fileselection (void); -GtkWidget* create_warning_dialog (void); GtkWidget* create_config_dialog (void); GtkWidget* create_reminder_dialog (gchar *reminder_msg); diff -Nru audacious-plugins-2.4.4/src/alarm/Makefile audacious-plugins-3.2/src/alarm/Makefile --- audacious-plugins-2.4.4/src/alarm/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/alarm/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -9,5 +9,5 @@ plugindir := ${plugindir}/${GENERAL_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${BEEP_DEFINES} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${PTHREAD_CFLAGS} -I../.. +LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${PTHREAD_LIBS} diff -Nru audacious-plugins-2.4.4/src/alarm/support.h audacious-plugins-3.2/src/alarm/support.h --- audacious-plugins-2.4.4/src/alarm/support.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/alarm/support.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -/* - * needed for glade - */ - -/* - * vi:ai:expandtab:ts=2 sts=2 shiftwidth=2:nowrap: - */ diff -Nru audacious-plugins-2.4.4/src/albumart/albumart.c audacious-plugins-3.2/src/albumart/albumart.c --- audacious-plugins-2.4.4/src/albumart/albumart.c 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/albumart/albumart.c 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2011 William Pitcock . + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +static gint width; +static gint height; + +static void draw_albumart(GtkWidget *widget, cairo_t *cr) +{ + GdkPixbuf *album = NULL; + + if (aud_drct_get_playing() && album == NULL) + { + album = audgui_pixbuf_for_current (); + g_return_if_fail (album != NULL); + if (gdk_pixbuf_get_width(album) > width || + gdk_pixbuf_get_height(album) > height) + audgui_pixbuf_scale_within(&album, width < height ? width : height); + } + + if (album != NULL) + { + double x = (width - gdk_pixbuf_get_width(album)) / 2; + double y = (height - gdk_pixbuf_get_height(album)) / 2; + + gdk_cairo_set_source_pixbuf(cr, album, x, y); + cairo_paint_with_alpha(cr, 1.0); + } + +#if ! GTK_CHECK_VERSION (3, 0, 0) + cairo_destroy(cr); +#endif + + if (album != NULL) + g_object_unref(album); +} + +#if GTK_CHECK_VERSION (3, 0, 0) +static gboolean draw_event (GtkWidget * widget, cairo_t * cr, gpointer unused) +{ +#else +static gboolean expose_event (GtkWidget * widget, GdkEventExpose * event, gpointer unused) +{ + cairo_t * cr = gdk_cairo_create (gtk_widget_get_window (widget)); +#endif + + draw_albumart(widget, cr); + + return TRUE; +} + +static gboolean configure_event (GtkWidget * widget, GdkEventConfigure * event) +{ + width = event->width; + height = event->height; + gtk_widget_queue_draw(widget); + + return TRUE; +} + +static void playback_start (gpointer data, GtkWidget *area) +{ + gtk_widget_queue_draw(area); +} + +static /* GtkWidget * */ gpointer get_widget (void) +{ + GtkWidget *area = gtk_drawing_area_new(); + +#if GTK_CHECK_VERSION (3, 0, 0) + g_signal_connect(area, "draw", (GCallback) draw_event, NULL); +#else + g_signal_connect(area, "expose-event", (GCallback) expose_event, NULL); +#endif + g_signal_connect(area, "configure-event", (GCallback) configure_event, NULL); + + hook_associate("playback begin", (HookFunction) playback_start, area); + + gtk_widget_set_size_request(area, 128, 128); + + return area; +} + +static void cleanup(void) +{ + hook_dissociate("playback begin", (HookFunction) playback_start); +} + +AUD_GENERAL_PLUGIN +( + .name = "Album Art", + .cleanup = cleanup, + .get_widget = get_widget +) diff -Nru audacious-plugins-2.4.4/src/albumart/Makefile audacious-plugins-3.2/src/albumart/Makefile --- audacious-plugins-2.4.4/src/albumart/Makefile 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/albumart/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,12 @@ +PLUGIN = albumart${PLUGIN_SUFFIX} + +SRCS = albumart.c + +include ../../buildsys.mk +include ../../extra.mk + +plugindir := ${plugindir}/${GENERAL_PLUGIN_DIR} + +CFLAGS += ${PLUGIN_CFLAGS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} -I../.. ${GTK_CFLAGS} +LIBS += ${GTK_LIBS} diff -Nru audacious-plugins-2.4.4/src/alsa/alsa.c audacious-plugins-3.2/src/alsa/alsa.c --- audacious-plugins-2.4.4/src/alsa/alsa.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/alsa/alsa.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ /* * ALSA Output Plugin for Audacious - * Copyright 2009-2010 John Lindgren + * Copyright 2009-2011 John Lindgren * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -48,8 +48,9 @@ #include #include -#include #include +#include +#include #include "alsa.h" @@ -82,7 +83,7 @@ static int64_t alsa_written; /* frames */ static char alsa_prebuffer, alsa_paused; -static int alsa_paused_time; /* milliseconds */ +static int alsa_paused_delay; /* frames */ static int poll_pipe[2]; static int poll_count; @@ -155,8 +156,9 @@ pthread_mutex_lock (& alsa_mutex); pthread_cond_broadcast (& alsa_cond); /* signal thread started */ - gboolean workaround = FALSE; - gint slept = 0; + char failed = 0; + char workaround = 0; + int slept = 0; while (! pump_quit) { @@ -184,6 +186,8 @@ CHECK_VAL_RECOVER (written, snd_pcm_writei, alsa_handle, (char *) alsa_buffer + alsa_buffer_data_start, length); + failed = 0; + written = snd_pcm_frames_to_bytes (alsa_handle, written); alsa_buffer_data_start += written; alsa_buffer_data_length -= written; @@ -204,17 +208,8 @@ if (slept > 4) { - static gboolean warned = FALSE; - if (! warned) - { - fprintf (stderr, "\n** WARNING **\nAudacious has detected that " - "your ALSA device has a broken timer. A workaround\nis being " - "used to prevent CPU overload. Please report this problem to " - "your\nLinux distributor or to the ALSA developers.\n\n"); - warned = TRUE; - } - - workaround = TRUE; + AUDDBG ("Activating timer workaround.\n"); + workaround = 1; } if (workaround && slept) @@ -230,9 +225,16 @@ } pthread_mutex_lock (& alsa_mutex); + continue; + + FAILED: + if (failed) + break; + + failed = 1; + CHECK (snd_pcm_prepare, alsa_handle); } -FAILED: pthread_mutex_unlock (& alsa_mutex); return NULL; } @@ -276,17 +278,11 @@ return delay; } -static int get_output_time (void) -{ - return (int64_t) (alsa_written - snd_pcm_bytes_to_frames (alsa_handle, - alsa_buffer_data_length) - get_delay ()) * 1000 / alsa_rate; -} - -OutputPluginInitStatus alsa_init (void) +int alsa_init (void) { alsa_handle = NULL; alsa_initted = 0; - return OUTPUT_PLUGIN_INIT_FOUND_DEVICES; + return 1; } void alsa_soft_init (void) @@ -375,7 +371,8 @@ alsa_channels = channels; alsa_rate = rate; - unsigned int useconds = 1000 * MIN (1000, aud_cfg->output_buffer_size / 2); + int total_buffer = aud_get_int (NULL, "output_buffer_size"); + unsigned int useconds = 1000 * MIN (1000, total_buffer / 2); int direction = 0; CHECK_NOISY (snd_pcm_hw_params_set_buffer_time_near, alsa_handle, params, & useconds, & direction); @@ -389,8 +386,7 @@ CHECK_NOISY (snd_pcm_hw_params, alsa_handle, params); - int soft_buffer = MAX (aud_cfg->output_buffer_size / 2, - aud_cfg->output_buffer_size - hard_buffer); + int soft_buffer = MAX (total_buffer / 2, total_buffer - hard_buffer); AUDDBG ("Buffer: hardware %d ms, software %d ms, period %d ms.\n", hard_buffer, soft_buffer, alsa_period); @@ -403,7 +399,7 @@ alsa_written = 0; alsa_prebuffer = 1; alsa_paused = 0; - alsa_paused_time = 0; + alsa_paused_delay = 0; if (! poll_setup ()) goto FAILED; @@ -567,8 +563,17 @@ int alsa_output_time (void) { pthread_mutex_lock (& alsa_mutex); - int time = (alsa_prebuffer || alsa_paused) ? alsa_paused_time : - get_output_time (); + + int64_t frames = alsa_written - snd_pcm_bytes_to_frames (alsa_handle, + alsa_buffer_data_length); + + if (alsa_prebuffer || alsa_paused) + frames -= alsa_paused_delay; + else + frames -= get_delay (); + + int time = frames * 1000 / alsa_rate; + pthread_mutex_unlock (& alsa_mutex); return time; } @@ -587,7 +592,7 @@ alsa_written = (int64_t) time * alsa_rate / 1000; alsa_prebuffer = 1; - alsa_paused_time = time; + alsa_paused_delay = 0; pthread_cond_broadcast (& alsa_cond); /* interrupt period wait */ @@ -596,7 +601,7 @@ pthread_mutex_unlock (& alsa_mutex); } -void alsa_pause (short pause) +void alsa_pause (int pause) { AUDDBG ("%sause.\n", pause ? "P" : "Unp"); pthread_mutex_lock (& alsa_mutex); @@ -606,7 +611,7 @@ if (! alsa_prebuffer) { if (pause) - alsa_paused_time = get_output_time (); + alsa_paused_delay = get_delay (); CHECK (snd_pcm_pause, alsa_handle, pause); } @@ -688,6 +693,16 @@ CHECK (snd_mixer_selem_get_playback_volume, alsa_mixer_element, SND_MIXER_SCHN_MONO, & left_l); right_l = left_l; + + if (snd_mixer_selem_has_playback_switch (alsa_mixer_element)) + { + int on = 0; + CHECK (snd_mixer_selem_get_playback_switch, alsa_mixer_element, + SND_MIXER_SCHN_MONO, & on); + + if (! on) + left_l = right_l = 0; + } } else { @@ -695,6 +710,20 @@ SND_MIXER_SCHN_FRONT_LEFT, & left_l); CHECK (snd_mixer_selem_get_playback_volume, alsa_mixer_element, SND_MIXER_SCHN_FRONT_RIGHT, & right_l); + + if (snd_mixer_selem_has_playback_switch (alsa_mixer_element)) + { + int left_on = 0, right_on = 0; + CHECK (snd_mixer_selem_get_playback_switch, alsa_mixer_element, + SND_MIXER_SCHN_FRONT_LEFT, & left_on); + CHECK (snd_mixer_selem_get_playback_switch, alsa_mixer_element, + SND_MIXER_SCHN_FRONT_RIGHT, & right_on); + + if (! left_on) + left_l = 0; + if (! right_on) + right_l = 0; + } } FAILED: diff -Nru audacious-plugins-2.4.4/src/alsa/alsa.h audacious-plugins-3.2/src/alsa/alsa.h --- audacious-plugins-2.4.4/src/alsa/alsa.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/alsa/alsa.h 2012-01-20 19:48:30.000000000 +0000 @@ -20,12 +20,8 @@ #ifndef AUDACIOUS_ALSA_H #define AUDACIOUS_ALSA_H -#include "../../config.h" - #include -#include - #define ERROR(...) fprintf (stderr, "alsa: " __VA_ARGS__) #define ERROR_NOISY alsa_error @@ -54,7 +50,7 @@ } while (0) /* alsa.c */ -OutputPluginInitStatus alsa_init (void); +int alsa_init (void); void alsa_soft_init (void); void alsa_cleanup (void); int alsa_open_audio (gint aud_format, int rate, int channels); @@ -67,7 +63,7 @@ int alsa_written_time (void); int alsa_output_time (void); void alsa_flush (int time); -void alsa_pause (short pause); +void alsa_pause (int pause); void alsa_open_mixer (void); void alsa_close_mixer (void); void alsa_get_volume (int * left, int * right); diff -Nru audacious-plugins-2.4.4/src/alsa/config.c audacious-plugins-3.2/src/alsa/config.c --- audacious-plugins-2.4.4/src/alsa/config.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/alsa/config.c 2012-01-20 19:48:30.000000000 +0000 @@ -20,12 +20,13 @@ #include #include -#include #include +#include #include #include #include "alsa.h" +#include "config.h" char * alsa_config_pcm = NULL, * alsa_config_mixer = NULL, * alsa_config_mixer_element = NULL; @@ -69,7 +70,6 @@ static void get_defined_devices (const char * type, int capture, void (* found) (const char * name, const char * description)) { -#ifdef HAVE_SND_DEVICE_NAME_HINT void * * hints = NULL; int count; @@ -95,7 +95,6 @@ FAILED: if (hints != NULL) snd_device_name_free_hint (hints); -#endif } static char * get_card_description (int card) @@ -277,24 +276,37 @@ get_mixer_elements (alsa_config_mixer, mixer_element_found); } -static void guess_mixer_element (void) +static void fill_lists (void) { - static const char * guesses[] = {"PCM", "Wave", "Master"}; - int count; + if (! pcm_list) + { + pcm_list = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); + pcm_list_fill (); + } - if (alsa_config_mixer_element != NULL) + if (! mixer_list) { - if (list_has_member (mixer_element_list, alsa_config_mixer_element)) - return; + mixer_list = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); + mixer_list_fill (); + } - free (alsa_config_mixer_element); - alsa_config_mixer_element = NULL; + if (! mixer_element_list) + { + mixer_element_list = gtk_list_store_new (1, G_TYPE_STRING); + mixer_element_list_fill (); } +} - for (count = 0; count < G_N_ELEMENTS (guesses); count ++) +static void guess_mixer_element (void) +{ + fill_lists (); + + static const char * guesses[] = {"Master", "PCM", "Wave"}; + for (int count = 0; count < G_N_ELEMENTS (guesses); count ++) { if (list_has_member (mixer_element_list, guesses[count])) { + free (alsa_config_mixer_element); alsa_config_mixer_element = strdup (guesses[count]); return; } @@ -303,70 +315,56 @@ ERROR_NOISY ("No suitable mixer element found.\n"); } +static const gchar * const alsa_defaults[] = { + "pcm", "default", + "mixer", "default", + "drain-workaround", "TRUE", + NULL}; + void alsa_config_load (void) { - mcs_handle_t * database = aud_cfg_db_open (); + aud_config_set_defaults ("alsa", alsa_defaults); - pcm_list = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); - mixer_list = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); - mixer_element_list = gtk_list_store_new (1, G_TYPE_STRING); + alsa_config_pcm = aud_get_string ("alsa", "pcm"); + alsa_config_mixer = aud_get_string ("alsa", "mixer"); + alsa_config_mixer_element = aud_get_string ("alsa", "mixer-element"); + alsa_config_drain_workaround = aud_get_bool ("alsa", "drain-workaround"); - pcm_list_fill (); - aud_cfg_db_get_string (database, "alsa", "pcm", & alsa_config_pcm); + if (! alsa_config_mixer_element[0]) + guess_mixer_element (); +} - if (alsa_config_pcm == NULL) - alsa_config_pcm = strdup ("default"); - else if (strcmp (alsa_config_pcm, "default") && ! list_has_member (pcm_list, - alsa_config_pcm)) +void alsa_config_save (void) +{ + if (pcm_list) { - free (alsa_config_pcm); - alsa_config_pcm = strdup ("default"); + g_object_unref (pcm_list); + pcm_list = NULL; } - mixer_list_fill (); - aud_cfg_db_get_string (database, "alsa", "mixer", - & alsa_config_mixer); - - if (alsa_config_mixer == NULL) - alsa_config_mixer = strdup ("default"); - else if (strcmp (alsa_config_mixer, "default") && ! list_has_member - (mixer_list, alsa_config_mixer)) + if (mixer_list) { - free (alsa_config_mixer); - alsa_config_mixer = strdup ("default"); + g_object_unref (mixer_list); + mixer_list = NULL; } - mixer_element_list_fill (); - aud_cfg_db_get_string (database, "alsa", "mixer-element", - & alsa_config_mixer_element); - guess_mixer_element (); - - aud_cfg_db_get_bool (database, "alsa", "drain-workaround", & - alsa_config_drain_workaround); - - aud_cfg_db_close (database); -} - -void alsa_config_save (void) -{ - mcs_handle_t * database = aud_cfg_db_open (); + if (mixer_element_list) + { + g_object_unref (mixer_element_list); + mixer_element_list = NULL; + } - g_object_unref (pcm_list); - g_object_unref (mixer_list); - g_object_unref (mixer_element_list); - - aud_cfg_db_set_string (database, "alsa", "pcm", alsa_config_pcm); - aud_cfg_db_set_string (database, "alsa", "mixer", alsa_config_mixer); - aud_cfg_db_set_string (database, "alsa", "mixer-element", - alsa_config_mixer_element); - aud_cfg_db_set_bool (database, "alsa", "drain-workaround", - alsa_config_drain_workaround); + aud_set_string ("alsa", "pcm", alsa_config_pcm); + aud_set_string ("alsa", "mixer", alsa_config_mixer); + aud_set_string ("alsa", "mixer-element", alsa_config_mixer_element); + aud_set_bool ("alsa", "drain-workaround", alsa_config_drain_workaround); free (alsa_config_pcm); + alsa_config_pcm = NULL; free (alsa_config_mixer); + alsa_config_mixer = NULL; free (alsa_config_mixer_element); - - aud_cfg_db_close (database); + alsa_config_mixer_element = NULL; } static GtkWidget * combo_new (const char * title, GtkListStore * list, @@ -546,6 +544,7 @@ return; } + fill_lists (); create_window (); combo_select_by_text (pcm_combo, pcm_list, alsa_config_pcm); combo_select_by_text (mixer_combo, mixer_list, alsa_config_mixer); diff -Nru audacious-plugins-2.4.4/src/alsa/Makefile audacious-plugins-3.2/src/alsa/Makefile --- audacious-plugins-2.4.4/src/alsa/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/alsa/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -9,6 +9,6 @@ plugindir := ${plugindir}/${OUTPUT_PLUGIN_DIR} -CFLAGS += -std=gnu99 ${PLUGIN_CFLAGS} ${GTK_CFLAGS} ${ALSA_CFLAGS} -CPPFLAGS += -I../.. -LIBS += ${GTK_LIBS} ${ALSA_LIBS} +CFLAGS += ${PLUGIN_CFLAGS} +CPPFLAGS += ${PTHREAD_CFLAGS} ${GTK_CFLAGS} ${ALSA_CFLAGS} -I../.. +LIBS += ${PTHREAD_LIBS} ${GTK_LIBS} ${ALSA_LIBS} diff -Nru audacious-plugins-2.4.4/src/alsa/plugin.c audacious-plugins-3.2/src/alsa/plugin.c --- audacious-plugins-2.4.4/src/alsa/plugin.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/alsa/plugin.c 2012-01-20 19:48:30.000000000 +0000 @@ -22,15 +22,17 @@ #include #include +#include #include #include #include "alsa.h" +#include "config.h" -static OutputPlugin plugin = -{ - .description = "ALSA Output Plugin", - .probe_priority = 2, +AUD_OUTPUT_PLUGIN +( + .name = "ALSA", + .probe_priority = 5, .init = alsa_init, .cleanup = alsa_cleanup, .open_audio = alsa_open_audio, @@ -48,11 +50,7 @@ .get_volume = alsa_get_volume, .about = alsa_about, .configure = alsa_configure, -}; - -static OutputPlugin * list[] = {& plugin, NULL}; - -SIMPLE_OUTPUT_PLUGIN (alsa, list) +) void alsa_about (void) { @@ -82,7 +80,7 @@ audgui_simple_message (& window, GTK_MESSAGE_ERROR, _("ALSA error"), message); - free (message); + g_free (message); return 0; } diff -Nru audacious-plugins-2.4.4/src/amidi-plug/amidi-plug.c audacious-plugins-3.2/src/amidi-plug/amidi-plug.c --- audacious-plugins-2.4.4/src/amidi-plug/amidi-plug.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/amidi-plug/amidi-plug.c 2012-01-20 19:48:30.000000000 +0000 @@ -19,14 +19,40 @@ */ #include +#include #include -#include +#include #include "amidi-plug.h" -InputPlugin *amidiplug_iplist[] = { &amidiplug_ip, NULL }; +static void amidiplug_play_loop (InputPlayback * playback); -SIMPLE_INPUT_PLUGIN (amidi-plug, amidiplug_iplist) +static gboolean amidiplug_play (InputPlayback * playback, const gchar * + filename_uri, VFSFile * file, gint start_time, gint stop_time, gboolean pause); +static void amidiplug_pause (InputPlayback * playback, gboolean paused); +static void amidiplug_mseek (InputPlayback * playback, gint time); +static Tuple * amidiplug_get_song_tuple (const gchar * filename_uri, VFSFile * + file); + +AUD_INPUT_PLUGIN +( + .name = "AMIDI-Plug (MIDI Player)", + .init = amidiplug_init, + .about = amidiplug_aboutbox, + .configure = amidiplug_configure, + .play = amidiplug_play, + .stop = amidiplug_stop, + .pause = amidiplug_pause, + .mseek = amidiplug_mseek, + .get_time = amidiplug_get_time, + .get_volume = amidiplug_get_volume, + .set_volume = amidiplug_set_volume, + .cleanup = amidiplug_cleanup, + .probe_for_tuple = amidiplug_get_song_tuple, + .file_info_box = amidiplug_file_info_box, + .is_our_file_from_vfs = amidiplug_is_our_file_from_vfs, + .extensions = amidiplug_vfs_extensions, +) static GMutex * init_mutex; static gboolean initted; @@ -40,10 +66,11 @@ static gboolean audio_stop_flag, audio_pause_flag; static gint audio_seek_time; -static void amidiplug_init (void) +static gboolean amidiplug_init (void) { init_mutex = g_mutex_new (); initted = FALSE; + return TRUE; } static void soft_init (void) @@ -151,24 +178,9 @@ amidiplug_playing_status = AMIDIPLUG_STOP; g_cond_signal (control_cond); g_mutex_unlock( amidiplug_playing_mutex ); - - g_thread_join (playback->thread); - playback->thread = NULL; - - /* kill the sequencer (while it may have been already killed if coming - from pause, it's safe to do anyway since it checks for multiple calls) */ - if ( backend.gmodule != NULL ) - backend.seq_off(); - - /* call seq_stop */ - if ( backend.gmodule != NULL ) - backend.seq_stop(); - - /* free midi data (if it has not been freed yet) */ - i_midi_free( &midifile ); } -static void amidiplug_pause (InputPlayback * playback, gshort paused) +static void amidiplug_pause (InputPlayback * playback, gboolean paused) { g_mutex_lock (amidiplug_playing_mutex); amidiplug_playing_status = paused ? AMIDIPLUG_PAUSE : AMIDIPLUG_PLAY; @@ -177,7 +189,7 @@ g_mutex_unlock (amidiplug_playing_mutex); } -static void amidiplug_mseek (InputPlayback * playback, gulong time) +static void amidiplug_mseek (InputPlayback * playback, gint time) { g_mutex_lock (amidiplug_playing_mutex); amidiplug_playing_status = AMIDIPLUG_SEEK; @@ -252,26 +264,17 @@ } -static Tuple * amidiplug_get_song_tuple( const gchar *filename_uri ) +static Tuple * amidiplug_get_song_tuple (const gchar * filename_uri, VFSFile * + file) { /* song title, get it from the filename */ Tuple *tuple = tuple_new_from_filename(filename_uri); - gchar *title, *filename = g_filename_from_uri(filename_uri, NULL, NULL); midifile_t mf; soft_init (); - if (filename != NULL) - title = g_path_get_basename(filename); - else - title = g_strdup(filename_uri); - - tuple_associate_string(tuple, FIELD_TITLE, NULL, title); - g_free(title); - g_free(filename); - if ( i_midi_parse_from_filename( filename_uri , &mf ) ) - tuple_associate_int(tuple, FIELD_LENGTH, NULL, mf.length / 1000); + tuple_set_int(tuple, FIELD_LENGTH, NULL, mf.length / 1000); i_midi_free( &mf ); @@ -279,13 +282,13 @@ } -static void amidiplug_play( InputPlayback * playback ) +static gboolean amidiplug_play (InputPlayback * playback, const gchar * + filename_uri, VFSFile * file, gint start_time, gint stop_time, gboolean pause) { - gchar * filename_uri = playback->filename; - gchar * filename = NULL; + g_return_val_if_fail (file != NULL, FALSE); + gint port_count = 0; gint au_samplerate = -1, au_bitdepth = -1, au_channels = -1; - Tuple *tu; soft_init (); @@ -298,7 +301,7 @@ AMIDIPLUG_MESSAGE_WARN , NULL , TRUE ); */ amidiplug_playing_status = AMIDIPLUG_ERR; - return; + return FALSE; } /* get information about audio from backend, if available */ @@ -320,21 +323,14 @@ port_count = backend.seq_get_port_count(); if ( port_count < 1 ) { - event_queue ("interface show error", _("You have not selected any " - "sequencer ports for MIDI playback. You can do so in the MIDI plugin " - "preferences.")); + aud_interface_show_error (_("You have not selected any sequencer ports for " + "MIDI playback. You can do so in the MIDI plugin preferences.")); amidiplug_playing_status = AMIDIPLUG_ERR; - return; + return FALSE; } DEBUGMSG( "PLAY requested, opening file: %s\n" , filename_uri ); - midifile.file_pointer = VFS_FOPEN( filename_uri , "rb" ); - if (!midifile.file_pointer) - { - g_warning( "Cannot open %s\n" , filename_uri ); - amidiplug_playing_status = AMIDIPLUG_ERR; - return; - } + midifile.file_pointer = file; midifile.file_name = g_strdup(filename_uri); switch( i_midi_file_read_id( &midifile ) ) @@ -385,20 +381,10 @@ i_midi_setget_length( &midifile ); DEBUGMSG( "PLAY requested, song length calculated: %i msec\n" , (gint)(midifile.length / 1000) ); - - /* our length is in microseconds, but the player wants milliseconds */ - filename = g_filename_from_uri( filename_uri , NULL , NULL ); - if ( !filename ) filename = g_strdup( filename_uri ); - tu = amidiplug_get_song_tuple(filename_uri); - - playback->set_tuple( playback , tu ); - playback->set_params( playback , NULL , 0 , - au_bitdepth * au_samplerate * au_channels / 8 , - au_samplerate , au_channels ); - g_free( filename ); + playback->set_params (playback, au_bitdepth * au_samplerate * au_channels + / 8, au_samplerate, au_channels); /* done with file */ - VFS_FCLOSE( midifile.file_pointer ); midifile.file_pointer = NULL; /* play play play! */ @@ -408,7 +394,6 @@ g_mutex_unlock( amidiplug_playing_mutex ); seek_time = -1; - playback->playing = TRUE; playback->set_pb_ready(playback); amidiplug_play_loop(playback); break; @@ -425,12 +410,7 @@ if (! backend.autonomous_audio) playback->output->close_audio (); - if ( midifile.file_pointer ) - { - /* done with file */ - VFS_FCLOSE( midifile.file_pointer ); - midifile.file_pointer = NULL; - } + return TRUE; } static void * audio_loop (void * arg) @@ -482,8 +462,7 @@ g_mutex_unlock (audio_control_mutex); if (backend.seq_output (& buffer, & buffer_size)) - playback->pass_audio (playback, FMT_S16_NE, 2, buffer_size, buffer, - NULL); + playback->output->write_audio (buffer, buffer_size); } g_free (buffer); @@ -495,7 +474,7 @@ audio_stop_flag = FALSE; audio_pause_flag = FALSE; audio_seek_time = -1; - audio_thread = g_thread_create (audio_loop, playback, TRUE, NULL); + audio_thread = g_thread_create (audio_loop, (void *) playback, TRUE, NULL); } static void audio_seek (gint time) @@ -546,10 +525,8 @@ } } - -gpointer amidiplug_play_loop( gpointer arg ) +static void amidiplug_play_loop (InputPlayback * playback) { - InputPlayback *playback = arg; gint j = 0; gboolean rewind = TRUE, paused = FALSE, stopped = FALSE; @@ -730,7 +707,9 @@ } } - return NULL; + backend.seq_off (); + backend.seq_stop (); + i_midi_free (& midifile); } diff -Nru audacious-plugins-2.4.4/src/amidi-plug/amidi-plug.h audacious-plugins-3.2/src/amidi-plug/amidi-plug.h --- audacious-plugins-2.4.4/src/amidi-plug/amidi-plug.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/amidi-plug/amidi-plug.h 2012-01-20 19:48:30.000000000 +0000 @@ -59,41 +59,16 @@ static const gchar * const amidiplug_vfs_extensions[] = {"mid", "midi", "rmi", "rmid", NULL}; -gpointer amidiplug_play_loop( gpointer ); void amidiplug_skipto( gint ); -static void amidiplug_init( void ); +static gboolean amidiplug_init (void); static void amidiplug_cleanup( void ); static void amidiplug_aboutbox( void ); static void amidiplug_configure( void ); static gint amidiplug_is_our_file_from_vfs( const gchar * , VFSFile * ); -static void amidiplug_play( InputPlayback * ); static void amidiplug_stop( InputPlayback * ); -static void amidiplug_pause( InputPlayback *, gshort ); -static void amidiplug_mseek (InputPlayback * playback, gulong time); static gint amidiplug_get_time( InputPlayback * ); static gint amidiplug_get_volume( gint * , gint * ); static gint amidiplug_set_volume( gint , gint ); -static Tuple *amidiplug_get_song_tuple( const gchar * ); static void amidiplug_file_info_box( const gchar * ); -InputPlugin amidiplug_ip = -{ - .description = "AMIDI-Plug " AMIDIPLUG_VERSION " (MIDI Player)", /* description */ - .init = amidiplug_init, /* init */ - .about = amidiplug_aboutbox, /* aboutbox */ - .configure = amidiplug_configure, /* configure */ - .play_file = amidiplug_play, /* play_file */ - .stop = amidiplug_stop, /* stop */ - .pause = amidiplug_pause, /* pause */ - .mseek = amidiplug_mseek, /* seek */ - .get_time = amidiplug_get_time, /* get_time */ - .get_volume = amidiplug_get_volume, /* get_volume */ - .set_volume = amidiplug_set_volume, /* set_volume */ - .cleanup = amidiplug_cleanup, /* cleanup */ - .get_song_tuple = amidiplug_get_song_tuple, /* get_song_info */ - .file_info_box = amidiplug_file_info_box, /* file_info_box */ - .is_our_file_from_vfs = amidiplug_is_our_file_from_vfs, /* is_our_file_from_vfs */ - .vfs_extensions = amidiplug_vfs_extensions /* vfs_extensions */ -}; - #endif /* !_I_AMIDIPLUG_H */ diff -Nru audacious-plugins-2.4.4/src/amidi-plug/backend-alsa/b-alsa.c audacious-plugins-3.2/src/amidi-plug/backend-alsa/b-alsa.c --- audacious-plugins-2.4.4/src/amidi-plug/backend-alsa/b-alsa.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/amidi-plug/backend-alsa/b-alsa.c 2012-01-20 19:48:30.000000000 +0000 @@ -333,6 +333,8 @@ gint sequencer_output_shut( guint max_tick , gint skip_offset ) { + g_return_val_if_fail (sc.seq != NULL, 0); + gint i = 0 , c = 0; /* time to shutdown playback! */ /* send "ALL SOUNDS OFF" to all channels on all ports */ diff -Nru audacious-plugins-2.4.4/src/amidi-plug/backend-alsa/Makefile audacious-plugins-3.2/src/amidi-plug/backend-alsa/Makefile --- audacious-plugins-2.4.4/src/amidi-plug/backend-alsa/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/amidi-plug/backend-alsa/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -9,4 +9,4 @@ CFLAGS += ${PLUGIN_CFLAGS} ${ALSA_CFLAGS} CPPFLAGS += ${PLUGIN_CPPFLAGS} ${ALSA_CFLAGS} ${GLIB_CFLAGS} -I../../.. -LIBS += ${ALSA_LIBS} ${GLIB_LIBS} ../pcfg/libpcfg.a +LIBS += ${ALSA_LIBS} ../pcfg/libpcfg.a ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/amidi-plug/backend-fluidsynth/Makefile audacious-plugins-3.2/src/amidi-plug/backend-fluidsynth/Makefile --- audacious-plugins-2.4.4/src/amidi-plug/backend-fluidsynth/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/amidi-plug/backend-fluidsynth/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -9,4 +9,4 @@ CFLAGS += ${PLUGIN_CFLAGS} ${FLUIDSYNTH_CFLAGS} CPPFLAGS += ${PLUGIN_CPPFLAGS} ${FLUIDSYNTH_CFLAGS} ${GLIB_CFLAGS} -I../../.. -LIBS += ${FLUIDSYNTH_LIBS} ${GLIB_LIBS} ../pcfg/libpcfg.a +LIBS += ${FLUIDSYNTH_LIBS} ../pcfg/libpcfg.a ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/amidi-plug/i_backend.h audacious-plugins-3.2/src/amidi-plug/i_backend.h --- audacious-plugins-2.4.4/src/amidi-plug/i_backend.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/amidi-plug/i_backend.h 2012-01-20 19:48:30.000000000 +0000 @@ -48,7 +48,7 @@ gint (*audio_info_get)( gint * , gint * , gint * ); gint (*audio_volume_get)( gint * , gint * ); gint (*audio_volume_set)( gint , gint ); - gint (*seq_start)( gchar * ); + gint (* seq_start) (const gchar * filename); gint (*seq_stop)( void ); gint (*seq_on)( void ); gint (*seq_off)( void ); diff -Nru audacious-plugins-2.4.4/src/amidi-plug/i_configure-alsa.c audacious-plugins-3.2/src/amidi-plug/i_configure-alsa.c --- audacious-plugins-2.4.4/src/amidi-plug/i_configure-alsa.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/amidi-plug/i_configure-alsa.c 2012-01-20 19:48:30.000000000 +0000 @@ -256,7 +256,6 @@ GtkCellRenderer *mixer_card_cmb_text_rndr, *mixer_ctl_cmb_text_rndr; GtkWidget *mixer_card_cmb_evbox, *mixer_card_cmb, *mixer_card_label; GtkWidget *mixer_ctl_cmb_evbox, *mixer_ctl_cmb, *mixer_ctl_label; - GtkTooltips *tips; amidiplug_cfg_alsa_t * alsacfg = amidiplug_cfg_backend->alsa; @@ -272,9 +271,6 @@ if ( strlen( alsacfg->alsa_seq_wports ) > 0 ) portstring_from_cfg = g_strsplit( alsacfg->alsa_seq_wports , "," , 0 ); - tips = gtk_tooltips_new(); - g_object_set_data_full( G_OBJECT(alsa_page_alignment) , "tt" , tips , g_object_unref ); - /* it's legit to assume that this can't fail, since the module is present in the backend_list */ alsa_module = g_module_open( alsa_module_pathfilename , 0 ); @@ -425,26 +421,6 @@ free_card_list( scards_h ); free_port_list( wports_h ); g_module_close( alsa_module ); - - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , port_lv , - _("* Select ALSA output ports *\n" - "MIDI events will be sent to the ports selected here. In example, if your " - "audio card provides a hardware synth and you want to play MIDI with it, " - "you'll probably want to select the wavetable synthesizer ports.") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , mixer_card_cmb_evbox , - _("* Select ALSA mixer card *\n" - "The ALSA backend outputs directly through ALSA, it doesn't use effect " - "and ouput plugins from the player. During playback, the player volume" - "slider will manipulate the mixer control you select here. " - "If you're using wavetable synthesizer ports, you'll probably want to " - "select the Synth control here.") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , mixer_ctl_cmb_evbox , - _("* Select ALSA mixer control *\n" - "The ALSA backend outputs directly through ALSA, it doesn't use effect " - "and ouput plugins from the player. During playback, the player volume " - "slider will manipulate the mixer control you select here. " - "If you're using wavetable synthesizer ports, you'll probably want to " - "select the Synth control here.") , "" ); } else { diff -Nru audacious-plugins-2.4.4/src/amidi-plug/i_configure-ap.c audacious-plugins-3.2/src/amidi-plug/i_configure-ap.c --- audacious-plugins-2.4.4/src/amidi-plug/i_configure-ap.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/amidi-plug/i_configure-ap.c 2012-01-20 19:48:30.000000000 +0000 @@ -18,6 +18,9 @@ * */ +#include + +#include #include "i_configure-ap.h" #include "amidi-plug-icon.xpm" @@ -67,7 +70,8 @@ gtk_label_set_markup( GTK_LABEL(title_label) , longname_title ); g_free( longname_title ); g_free( longname ); gtk_container_add( GTK_CONTAINER(title_frame) , title_label ); - gtk_box_pack_start( GTK_BOX(GTK_DIALOG(bidialog)->vbox) , title_frame , FALSE , FALSE , 0 ); + gtk_box_pack_start ((GtkBox *) gtk_dialog_get_content_area ((GtkDialog *) + bidialog), title_frame, FALSE, FALSE, 0); filename_frame = gtk_frame_new( NULL ); filename_entry = gtk_entry_new(); @@ -77,7 +81,8 @@ gtk_entry_set_has_frame( GTK_ENTRY(filename_entry) , FALSE ); g_free( filename ); gtk_container_add( GTK_CONTAINER(filename_frame) , filename_entry ); - gtk_box_pack_start( GTK_BOX(GTK_DIALOG(bidialog)->vbox) , filename_frame , FALSE , FALSE , 0 ); + gtk_box_pack_start ((GtkBox *) gtk_dialog_get_content_area ((GtkDialog *) + bidialog), filename_frame, FALSE, FALSE, 0); description_frame = gtk_frame_new( NULL ); description_label = gtk_label_new( description ); @@ -85,7 +90,8 @@ gtk_label_set_line_wrap( GTK_LABEL(description_label) , TRUE ); g_free( description ); gtk_container_add( GTK_CONTAINER(description_frame) , description_label ); - gtk_box_pack_start( GTK_BOX(GTK_DIALOG(bidialog)->vbox) , description_frame , TRUE , TRUE , 0 ); + gtk_box_pack_start ((GtkBox *) gtk_dialog_get_content_area ((GtkDialog *) + bidialog), description_frame, FALSE, FALSE, 0); gtk_widget_show_all( bidialog ); gtk_window_set_focus( GTK_WINDOW(bidialog) , NULL ); @@ -183,12 +189,8 @@ GtkTreeIter backend_lv_iter_selected; GtkTreeSelection *backend_lv_sel; GtkTreeIter iter; - GtkTooltips *tips; GSList * backend_list = backend_list_p; - tips = gtk_tooltips_new(); - g_object_set_data_full( G_OBJECT(ap_page_alignment) , "tt" , tips , g_object_unref ); - ap_page_vbox = gtk_vbox_new( FALSE , 0 ); title_widget = i_configure_gui_draw_title( _("AMIDI-PLUG PREFERENCES") ); @@ -315,50 +317,6 @@ gtk_box_pack_start( GTK_BOX(content_vbox) , settings_vbox , TRUE , TRUE , 0 ); gtk_box_pack_start( GTK_BOX(ap_page_vbox) , content_vbox , TRUE , TRUE , 2 ); gtk_container_add( GTK_CONTAINER(ap_page_alignment) , ap_page_vbox ); - - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , backend_lv , - _("* Backend selection *\n" - "AMIDI-Plug works with backends, in a modular fashion; here you should " - "select your backend; that is, the way MIDI events are going to be handled " - "and played.\nIf you have a hardware synthesizer on your audio card, and ALSA " - "supports it, you'll want to use the ALSA backend. It can also be " - "used with anything that provides an interface to the ALSA sequencer, including " - "software synths or external devices.\nIf you want to rely on a software " - "synthesizer and/or want to pipe audio into effect and output plugins of the " - "player you'll want to use the good FluidSynth backend.\nPress the info " - "button to read specific information about each backend.") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , settplay_transpose_spinbt , - _("* Transpose function *\n" - "This option allows you to play the midi file transposed in a different key, " - "by shifting of the desired number of semitones all its notes (excepting those " - "on midi channel 10, reserved for percussions). Especially useful if you wish " - "to sing or play along with another instrument.") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , settplay_drumshift_spinbt , - _("* Drumshift function *\n" - "This option allows you to shift notes on midi channel 10 (the standard " - "percussions channel) of the desired number of semitones. This results in " - "different drumset and percussions being used during midi playback, so if " - "you wish to enhance (or reduce, or alter) percussion sounds, try to play " - "with this value.") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , settadva_precalc_checkbt , - _("* Pre-calculate MIDI length *\n" - "If this option is enabled, AMIDI-Plug will calculate the MIDI file " - "length as soon as the player requests it, instead of doing that only " - "when the MIDI file is being played. In example, MIDI length " - "will be calculated straight after adding MIDI files in a playlist. " - "Disable this option if you want faster playlist loading (when a lot " - "of MIDI files are added), enable it to display more information " - "in the playlist straight after loading.") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , settadva_extractcomm_checkbt , - _("* Extract comments from MIDI files *\n" - "Some MIDI files contain text comments (author, copyright, instrument notes, " - "etc.). If this option is enabled, AMIDI-Plug will extract and display comments " - "(if available) in the file information dialog.") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , settadva_extractlyr_checkbt , - _("* Extract lyrics from MIDI files *\n" - "Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug " - "will extract and display song lyrics (if available) in the file " - "information dialog.") , "" ); } diff -Nru audacious-plugins-2.4.4/src/amidi-plug/i_configure.c audacious-plugins-3.2/src/amidi-plug/i_configure.c --- audacious-plugins-2.4.4/src/amidi-plug/i_configure.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/amidi-plug/i_configure.c 2012-01-20 19:48:30.000000000 +0000 @@ -18,7 +18,10 @@ * */ +#include + #include +#include #include #include @@ -68,7 +71,7 @@ { GtkWidget *parent_window = gtk_widget_get_toplevel( target_entry ); GtkFileChooserAction act = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(target_entry),"fc-act")); - if ( GTK_WIDGET_TOPLEVEL(parent_window) ) + if (gtk_widget_is_toplevel (parent_window)) { GtkWidget *browse_dialog = gtk_file_chooser_dialog_new( _("AMIDI-Plug - select file") , GTK_WINDOW(parent_window) , act , @@ -128,12 +131,10 @@ g_signal_connect( G_OBJECT(configwin) , "destroy" , G_CALLBACK(gtk_widget_destroyed) , &configwin ); button_ok = gtk_button_new_from_stock( GTK_STOCK_OK ); - if ( g_signal_lookup( "ap-commit" , GTK_WIDGET_TYPE(button_ok) ) == 0 ) - { - g_signal_new( "ap-commit" , GTK_WIDGET_TYPE(button_ok) , - G_SIGNAL_ACTION , 0 , NULL , NULL , - g_cclosure_marshal_VOID__VOID , G_TYPE_NONE , 0 ); - } + + if (! g_signal_lookup ("ap-commit", G_OBJECT_TYPE (button_ok))) + g_signal_new ("ap-commit", G_OBJECT_TYPE (button_ok), G_SIGNAL_ACTION, 0, + NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); g_signal_connect (button_ok, "clicked", (GCallback) commit_cb, NULL); @@ -380,8 +381,5 @@ gchar * i_configure_cfg_get_file( void ) { - gchar * config_datadir = (gchar*)aud_util_get_localdir(); - gchar * config_pathfilename = g_build_filename( config_datadir , "amidi-plug.conf" , NULL ); - g_free( config_datadir ); - return config_pathfilename; + return g_build_filename (aud_get_path (AUD_PATH_USER_DIR), "amidi-plug.conf", NULL); } diff -Nru audacious-plugins-2.4.4/src/amidi-plug/i_configure-fluidsynth.c audacious-plugins-3.2/src/amidi-plug/i_configure-fluidsynth.c --- audacious-plugins-2.4.4/src/amidi-plug/i_configure-fluidsynth.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/amidi-plug/i_configure-fluidsynth.c 2012-01-20 19:48:30.000000000 +0000 @@ -18,6 +18,9 @@ * */ +#include + +#include #include "i_configure-fluidsynth.h" #include "backend-fluidsynth/b-fluidsynth-config.h" @@ -45,7 +48,7 @@ void i_configure_ev_sflist_add( gpointer sfont_lv ) { GtkWidget *parent_window = gtk_widget_get_toplevel( sfont_lv ); - if ( GTK_WIDGET_TOPLEVEL(parent_window) ) + if (gtk_widget_is_toplevel (parent_window)) { GtkTreeSelection *listsel = gtk_tree_view_get_selection( GTK_TREE_VIEW(sfont_lv) ); GtkTreeIter itersel, iterapp; @@ -171,7 +174,7 @@ void i_configure_ev_sygain_commit( gpointer gain_spinbt ) { amidiplug_cfg_fsyn_t * fsyncfg = amidiplug_cfg_backend->fsyn; - if ( GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(gain_spinbt)) ) + if (gtk_widget_get_sensitive (gain_spinbt)) fsyncfg->fsyn_synth_gain = (gint)(gtk_spin_button_get_value(GTK_SPIN_BUTTON(gain_spinbt)) * 10); else fsyncfg->fsyn_synth_gain = -1; @@ -181,7 +184,7 @@ void i_configure_ev_sypoly_commit( gpointer poly_spinbt ) { amidiplug_cfg_fsyn_t * fsyncfg = amidiplug_cfg_backend->fsyn; - if ( GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(poly_spinbt)) ) + if (gtk_widget_get_sensitive (poly_spinbt)) fsyncfg->fsyn_synth_poliphony = (gint)(gtk_spin_button_get_value(GTK_SPIN_BUTTON(poly_spinbt))); else fsyncfg->fsyn_synth_poliphony = -1; @@ -191,7 +194,7 @@ void i_configure_ev_syreverb_commit( gpointer reverb_yes_radiobt ) { amidiplug_cfg_fsyn_t * fsyncfg = amidiplug_cfg_backend->fsyn; - if ( GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(reverb_yes_radiobt)) ) + if (gtk_widget_get_sensitive (reverb_yes_radiobt)) { if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(reverb_yes_radiobt) ) ) fsyncfg->fsyn_synth_reverb = 1; @@ -206,7 +209,7 @@ void i_configure_ev_sychorus_commit( gpointer chorus_yes_radiobt ) { amidiplug_cfg_fsyn_t * fsyncfg = amidiplug_cfg_backend->fsyn; - if ( GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(chorus_yes_radiobt)) ) + if (gtk_widget_get_sensitive (chorus_yes_radiobt)) { if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(chorus_yes_radiobt) ) ) fsyncfg->fsyn_synth_chorus = 1; @@ -261,7 +264,6 @@ GtkWidget *content_vbox; /* this vbox will contain the various frames for config sections */ GSList * backend_list = backend_list_p; gboolean fsyn_module_ok = FALSE; - gchar * fsyn_module_pathfilename; fsyn_page_vbox = gtk_vbox_new( FALSE , 0 ); @@ -277,7 +279,6 @@ if ( !strcmp( mn->name , "fluidsynth" ) ) { fsyn_module_ok = TRUE; - fsyn_module_pathfilename = mn->filename; break; } backend_list = backend_list->next; @@ -305,13 +306,9 @@ GtkWidget *synth_reverb_value_option[2], *synth_reverb_defcheckbt; GtkWidget *synth_chorus_frame, *synth_chorus_hbox, *synth_chorus_value_hbox; GtkWidget *synth_chorus_value_option[2], *synth_chorus_defcheckbt; - GtkTooltips *tips; amidiplug_cfg_fsyn_t * fsyncfg = amidiplug_cfg_backend->fsyn; - tips = gtk_tooltips_new(); - g_object_set_data_full( G_OBJECT(fsyn_page_alignment) , "tt" , tips , g_object_unref ); - /* soundfont settings */ soundfont_frame = gtk_frame_new( _("SoundFont settings") ); soundfont_vbox = gtk_vbox_new( FALSE , 2 ); @@ -616,83 +613,6 @@ G_CALLBACK(i_configure_ev_sychorus_commit) , synth_chorus_value_option[0] ); g_signal_connect_swapped( G_OBJECT(commit_button) , "ap-commit" , G_CALLBACK(i_configure_ev_sysamplerate_commit) , synth_samplerate_option[3] ); - - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , soundfont_file_lv , - _("* Select SoundFont files *\n" - "In order to play MIDI with FluidSynth, you need to specify at " - "least one valid SoundFont file here (use absolute paths). The " - "loading order is from the top (first) to the bottom (last).") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , soundfont_load_option[0] , - _("* Load SoundFont on player start *\n" - "Depending on your system speed, SoundFont loading in FluidSynth will " - "require up to a few seconds. This is a one-time task (the soundfont " - "will stay loaded until it is changed or the backend is unloaded) that " - "can be done at player start, or before the first MIDI file is played " - "(the latter is a better choice if you don't use your player to listen " - "MIDI files only).") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , soundfont_load_option[1] , - _("* Load SoundFont on first midifile play *\n" - "Depending on your system speed, SoundFont loading in FluidSynth will " - "require up to a few seconds. This is a one-time task (the soundfont " - "will stay loaded until it is changed or the backend is unloaded) that " - "can be done at player start, or before the first MIDI file is played " - "(the latter is a better choice if you don't use your player to listen " - "MIDI files only).") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , synth_gain_value_spin , - _("* Synthesizer gain *\n" - "From FluidSynth docs: the gain is applied to the final or master output " - "of the synthesizer; it is set to a low value by default to avoid the " - "saturation of the output when random MIDI files are played.") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , synth_poly_value_spin , - _("* Synthesizer polyphony *\n" - "From FluidSynth docs: the polyphony defines how many voices can be played " - "in parallel; the number of voices is not necessarily equivalent to the " - "number of notes played simultaneously; indeed, when a note is struck on a " - "specific MIDI channel, the preset on that channel may create several voices, " - "for example, one for the left audio channel and one for the right audio " - "channels; the number of voices activated depends on the number of instrument " - "zones that fall in the correspond to the velocity and key of the played " - "note.") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , synth_reverb_value_option[0] , - _("* Synthesizer reverb *\n" - "From FluidSynth docs: when set to \"yes\" the reverb effects module is " - "activated; note that when the reverb module is active, the amount of " - "signal sent to the reverb module depends on the \"reverb send\" generator " - "defined in the SoundFont.") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , synth_reverb_value_option[1] , - _("* Synthesizer reverb *\n" - "From FluidSynth docs: when set to \"yes\" the reverb effects module is " - "activated; note that when the reverb module is active, the amount of " - "signal sent to the reverb module depends on the \"reverb send\" generator " - "defined in the SoundFont.") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , synth_chorus_value_option[0] , - _("* Synthesizer chorus *\n" - "From FluidSynth docs: when set to \"yes\" the chorus effects module is " - "activated; note that when the chorus module is active, the amount of " - "signal sent to the chorus module depends on the \"chorus send\" generator " - "defined in the SoundFont.") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , synth_chorus_value_option[1] , - _("* Synthesizer chorus *\n" - "From FluidSynth docs: when set to \"yes\" the chorus effects module is " - "activated; note that when the chorus module is active, the amount of " - "signal sent to the chorus module depends on the \"chorus send\" generator " - "defined in the SoundFont.") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , synth_samplerate_option[0] , - _("* Synthesizer samplerate *\n" - "The sample rate of the audio generated by the synthesizer. You can also specify " - "a custom value in the interval 22050Hz-96000Hz.") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , synth_samplerate_option[1] , - _("* Synthesizer samplerate *\n" - "The sample rate of the audio generated by the synthesizer. You can also specify " - "a custom value in the interval 22050Hz-96000Hz.") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , synth_samplerate_option[2] , - _("* Synthesizer samplerate *\n" - "The sample rate of the audio generated by the synthesizer. You can also specify " - "a custom value in the interval 22050Hz-96000Hz.") , "" ); - gtk_tooltips_set_tip( GTK_TOOLTIPS(tips) , synth_samplerate_option[3] , - _("* Synthesizer samplerate *\n" - "The sample rate of the audio generated by the synthesizer. You can also specify " - "a custom value in the interval 22050Hz-96000Hz.") , "" ); } else { diff -Nru audacious-plugins-2.4.4/src/amidi-plug/Makefile audacious-plugins-3.2/src/amidi-plug/Makefile --- audacious-plugins-2.4.4/src/amidi-plug/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/amidi-plug/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -19,6 +19,6 @@ plugindir := ${plugindir}/${INPUT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${PANGO_CFLAGS} ${GMODULE_CFLAGS} ${MOWGLI_CFLAGS} \ - -DAMIDIPLUGBACKENDDIR=\"${plugindir}/${AMIDIPLUG_BACKEND_DIR}\" -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${PANGO_LIBS} ${GMODULE_LIBS} -lpthread ./pcfg/libpcfg.a +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${PANGO_CFLAGS} ${GMODULE_CFLAGS} \ + -DAMIDIPLUGBACKENDDIR=\"${plugindir}/${AMIDIPLUG_BACKEND_DIR}\" ${PTHREAD_CFLAGS} -I../.. +LIBS += ${GTK_LIBS} ${PANGO_LIBS} ${GMODULE_LIBS} ${PTHREAD_LIBS} ./pcfg/libpcfg.a ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/aosd/aosd.c audacious-plugins-3.2/src/aosd/aosd.c --- audacious-plugins-2.4.4/src/aosd/aosd.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/aosd/aosd.c 2012-01-20 19:48:30.000000000 +0000 @@ -25,9 +25,14 @@ #include "aosd_trigger.h" #include - -GeneralPlugin *aosd_gplist[] = { &aosd_gp, NULL }; -SIMPLE_GENERAL_PLUGIN(aosd, aosd_gplist); +AUD_GENERAL_PLUGIN +( + .name = "Audacious OSD", + .init = aosd_init, + .about = aosd_about, + .configure = aosd_configure, + .cleanup = aosd_cleanup +) aosd_cfg_t * global_config = NULL; gboolean plugin_is_active = FALSE; @@ -36,8 +41,7 @@ /* ***************** */ /* plug-in functions */ -void -aosd_init ( void ) +gboolean aosd_init (void) { plugin_is_active = TRUE; g_log_set_handler( NULL , G_LOG_LEVEL_WARNING , g_log_default_handler , NULL ); @@ -49,7 +53,7 @@ aosd_trigger_start( &global_config->osd->trigger ); - return; + return TRUE; } diff -Nru audacious-plugins-2.4.4/src/aosd/aosd_cfg.c audacious-plugins-3.2/src/aosd/aosd_cfg.c --- audacious-plugins-2.4.4/src/aosd/aosd_cfg.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/aosd/aosd_cfg.c 2012-01-20 19:48:30.000000000 +0000 @@ -22,8 +22,9 @@ #include "aosd_style.h" #include #include +#include -#include +#include #include static gint @@ -218,84 +219,77 @@ } #endif +static const gchar * const aosd_defaults[] = { + "position_placement", "1", /* AOSD_POSITION_PLACEMENT_TOPLEFT */ + "position_offset_x", "0", + "position_offset_y", "0", + "position_maxsize_width", "0", + "position_multimon_id", "-1", + "animation_timing_display", "3000", + "animation_timing_fadein", "300", + "animation_timing_fadeout", "300", + "text_fonts_name_0", "Sans 26", + "text_fonts_color_0", "65535,65535,65535,65535", + "text_fonts_draw_shadow_0", "TRUE", + "text_fonts_shadow_color_0", "0,0,0,32767", + "text_utf8conv_disable", "FALSE", + "decoration_code", "0", + "decoration_color_0", "0,0,65535,32767", + "decoration_color_1", "65535,65535,65535,65535", + "trigger_active", "0", + "transparency_mode", "0", + NULL}; gint aosd_cfg_load ( aosd_cfg_t * cfg ) { - mcs_handle_t *cfgfile = aud_cfg_db_open(); gint i = 0; gint max_numcol; gchar *trig_active_str; /* position */ - if ( !aud_cfg_db_get_int( cfgfile , "aosd" , - "position_placement" , &(cfg->osd->position.placement) ) ) - cfg->osd->position.placement = AOSD_POSITION_PLACEMENT_TOPLEFT; - - if ( !aud_cfg_db_get_int( cfgfile , "aosd" , - "position_offset_x" , &(cfg->osd->position.offset_x) ) ) - cfg->osd->position.offset_x = 0; - - if ( !aud_cfg_db_get_int( cfgfile , "aosd" , - "position_offset_y" , &(cfg->osd->position.offset_y) ) ) - cfg->osd->position.offset_y = 0; - - if ( !aud_cfg_db_get_int( cfgfile , "aosd" , - "position_maxsize_width" , &(cfg->osd->position.maxsize_width) ) ) - cfg->osd->position.maxsize_width = 0; - - if ( !aud_cfg_db_get_int( cfgfile , "aosd" , - "position_multimon_id" , &(cfg->osd->position.multimon_id) ) ) - cfg->osd->position.multimon_id = -1; + cfg->osd->position.placement = aud_get_int ("aosd", "position_placement"); + cfg->osd->position.offset_x = aud_get_int ("aosd", "position_offset_x"); + cfg->osd->position.offset_y = aud_get_int ("aosd", "position_offset_y"); + cfg->osd->position.maxsize_width = aud_get_int ("aosd", "position_maxsize_width"); + cfg->osd->position.multimon_id = aud_get_int ("aosd", "position_multimon_id"); /* animation */ - if ( !aud_cfg_db_get_int( cfgfile , "aosd" , - "animation_timing_display" , &(cfg->osd->animation.timing_display) ) ) - cfg->osd->animation.timing_display = 3000; - - if ( !aud_cfg_db_get_int( cfgfile , "aosd" , - "animation_timing_fadein" , &(cfg->osd->animation.timing_fadein) ) ) - cfg->osd->animation.timing_fadein = 300; - - if ( !aud_cfg_db_get_int( cfgfile , "aosd" , - "animation_timing_fadeout" , &(cfg->osd->animation.timing_fadeout) ) ) - cfg->osd->animation.timing_fadeout = 300; + cfg->osd->animation.timing_display = aud_get_int ("aosd", "animation_timing_display"); + cfg->osd->animation.timing_fadein = aud_get_int ("aosd", "animation_timing_fadein"); + cfg->osd->animation.timing_fadeout = aud_get_int ("aosd", "animation_timing_fadeout"); /* text */ for ( i = 0 ; i < AOSD_TEXT_FONTS_NUM ; i++ ) { gchar *color_str = NULL; gchar *key_str = NULL; + key_str = g_strdup_printf( "text_fonts_name_%i" , i ); - if ( !aud_cfg_db_get_string( cfgfile , "aosd" , key_str , &(cfg->osd->text.fonts_name[i]) ) ) - cfg->osd->text.fonts_name[i] = g_strdup( "Sans 26" ); + cfg->osd->text.fonts_name[i] = aud_get_string ("aosd", key_str); g_free( key_str ); + key_str = g_strdup_printf( "text_fonts_color_%i" , i ); - if ( !aud_cfg_db_get_string( cfgfile , "aosd" , key_str , &color_str ) ) - color_str = g_strdup( "65535,65535,65535,65535" ); /* white , alpha 100% */ + color_str = aud_get_string ("aosd", key_str); aosd_cfg_util_str_to_color( color_str , &(cfg->osd->text.fonts_color[i]) ); g_free( key_str ); g_free( color_str ); + key_str = g_strdup_printf( "text_fonts_draw_shadow_%i" , i ); - if ( !aud_cfg_db_get_bool( cfgfile , "aosd" , key_str , &(cfg->osd->text.fonts_draw_shadow[i]) ) ) - cfg->osd->text.fonts_draw_shadow[i] = TRUE; + cfg->osd->text.fonts_draw_shadow[i] = aud_get_bool ("aosd", key_str); g_free( key_str ); + key_str = g_strdup_printf( "text_fonts_shadow_color_%i" , i ); - if ( !aud_cfg_db_get_string( cfgfile , "aosd" , key_str , &color_str ) ) - color_str = g_strdup( "0,0,0,32767" ); /* black , alpha 50% */ + color_str = aud_get_string ("aosd", key_str); aosd_cfg_util_str_to_color( color_str , &(cfg->osd->text.fonts_shadow_color[i]) ); g_free( key_str ); g_free( color_str ); } - if ( !aud_cfg_db_get_bool( cfgfile , "aosd" , - "text_utf8conv_disable" , &(cfg->osd->text.utf8conv_disable) ) ) - cfg->osd->text.utf8conv_disable = FALSE; + cfg->osd->text.utf8conv_disable = aud_get_bool ("aosd", "text_utf8conv_disable"); /* decoration */ - if ( !aud_cfg_db_get_int( cfgfile , "aosd" , - "decoration_code" , &(cfg->osd->decoration.code) ) ) - cfg->osd->decoration.code = aosd_deco_style_get_first_code(); + cfg->osd->decoration.code = aud_get_int ("aosd", "decoration_code"); /* TODO not implemented yet if ( !aud_cfg_db_get_string( cfgfile , "aosd" , @@ -311,36 +305,15 @@ gchar *color_str = NULL; aosd_color_t color; key_str = g_strdup_printf( "decoration_color_%i" , i ); - if ( !aud_cfg_db_get_string( cfgfile , "aosd" , key_str , &color_str ) ) - { - /* we have different default values for the decoration colors */ - switch ( i ) - { - case 0: - color_str = g_strdup( "0,0,65535,32767" ); /* blue , alpha 50% */ - break; - case 1: - color_str = g_strdup( "65535,65535,65535,65535" ); /* white , alpha 100% */ - break; - case 2: - color_str = g_strdup( "51400,51400,51400,65535" ); /* gray , alpha 100% */ - break; - default: - color_str = g_strdup( "51400,51400,51400,65535" ); /* gray , alpha 100% */ - break; - } - } + color_str = aud_get_string ("aosd", key_str); aosd_cfg_util_str_to_color( color_str , &color ); g_array_insert_val( cfg->osd->decoration.colors , i , color ); } /* trigger */ - if ( !aud_cfg_db_get_string( cfgfile , "aosd" , "trigger_active" , &trig_active_str ) ) - { - gint trig_active_defval = 0; - g_array_append_val( cfg->osd->trigger.active , trig_active_defval ); - } - else if ( strcmp("x",trig_active_str) ) + trig_active_str = aud_get_string ("aosd", "trigger_active"); + + if (strcmp (trig_active_str, "x")) { gchar **trig_active_strv = g_strsplit( trig_active_str , "," , 0 ); gint j = 0; @@ -353,12 +326,10 @@ g_strfreev( trig_active_strv ); } - /* miscellanous */ - if ( !aud_cfg_db_get_int( cfgfile , "aosd" , - "transparency_mode" , &(cfg->osd->misc.transparency_mode) ) ) - cfg->osd->misc.transparency_mode = AOSD_MISC_TRANSPARENCY_FAKE; + g_free (trig_active_str); - aud_cfg_db_close( cfgfile ); + /* miscellanous */ + cfg->osd->misc.transparency_mode = aud_get_int ("aosd", "transparency_mode"); /* the config object has been filled with information */ cfg->set = TRUE; @@ -370,7 +341,6 @@ gint aosd_cfg_save ( aosd_cfg_t * cfg ) { - mcs_handle_t *cfgfile = aud_cfg_db_open(); gint i = 0; gint max_numcol; GString *string = g_string_new( "" ); @@ -379,67 +349,52 @@ return -1; /* position */ - aud_cfg_db_set_int( cfgfile , "aosd" , - "position_placement" , cfg->osd->position.placement ); - - aud_cfg_db_set_int( cfgfile , "aosd" , - "position_offset_x" , cfg->osd->position.offset_x ); - - aud_cfg_db_set_int( cfgfile , "aosd" , - "position_offset_y" , cfg->osd->position.offset_y ); - - aud_cfg_db_set_int( cfgfile , "aosd" , - "position_maxsize_width" , cfg->osd->position.maxsize_width ); - - aud_cfg_db_set_int( cfgfile , "aosd" , - "position_multimon_id" , cfg->osd->position.multimon_id ); + aud_set_int ("aosd", "position_placement", cfg->osd->position.placement); + aud_set_int ("aosd", "position_offset_x", cfg->osd->position.offset_x); + aud_set_int ("aosd", "position_offset_y", cfg->osd->position.offset_y); + aud_set_int ("aosd", "position_maxsize_width", cfg->osd->position.maxsize_width); + aud_set_int ("aosd", "position_multimon_id", cfg->osd->position.multimon_id); /* animation */ - aud_cfg_db_set_int( cfgfile , "aosd" , - "animation_timing_display" , cfg->osd->animation.timing_display ); - - aud_cfg_db_set_int( cfgfile , "aosd" , - "animation_timing_fadein" , cfg->osd->animation.timing_fadein ); - - aud_cfg_db_set_int( cfgfile , "aosd" , - "animation_timing_fadeout" , cfg->osd->animation.timing_fadeout ); + aud_set_int ("aosd", "animation_timing_display", cfg->osd->animation.timing_display); + aud_set_int ("aosd", "animation_timing_fadein", cfg->osd->animation.timing_fadein); + aud_set_int ("aosd", "animation_timing_fadeout", cfg->osd->animation.timing_fadeout); /* text */ for ( i = 0 ; i < AOSD_TEXT_FONTS_NUM ; i++ ) { gchar *color_str = NULL; gchar *key_str = NULL; + key_str = g_strdup_printf( "text_fonts_name_%i" , i ); - aud_cfg_db_set_string( cfgfile , "aosd" , - key_str , cfg->osd->text.fonts_name[i] ); + aud_set_string ("aosd", key_str, cfg->osd->text.fonts_name[i]); g_free( key_str ); + key_str = g_strdup_printf( "text_fonts_color_%i" , i ); aosd_cfg_util_color_to_str( cfg->osd->text.fonts_color[i] , &color_str ); - aud_cfg_db_set_string( cfgfile , "aosd" , - key_str , color_str ); + aud_set_string ("aosd", key_str, color_str); g_free( key_str ); g_free( color_str ); + key_str = g_strdup_printf( "text_fonts_draw_shadow_%i" , i ); - aud_cfg_db_set_bool( cfgfile , "aosd" , - key_str , cfg->osd->text.fonts_draw_shadow[i] ); + aud_set_bool ("aosd", key_str, cfg->osd->text.fonts_draw_shadow[i]); g_free( key_str ); + key_str = g_strdup_printf( "text_fonts_shadow_color_%i" , i ); aosd_cfg_util_color_to_str( cfg->osd->text.fonts_shadow_color[i] , &color_str ); - aud_cfg_db_set_string( cfgfile , "aosd" , - key_str , color_str ); + aud_set_string ("aosd", key_str, color_str); g_free( key_str ); g_free( color_str ); } - aud_cfg_db_set_bool( cfgfile , "aosd" , - "text_utf8conv_disable" , cfg->osd->text.utf8conv_disable ); + aud_set_bool ("aosd", "text_utf8conv_disable", cfg->osd->text.utf8conv_disable); /* decoration */ - aud_cfg_db_set_int( cfgfile , "aosd" , + aud_set_int ("aosd" , "decoration_code" , cfg->osd->decoration.code ); /* TODO skip this since it's not implemented yet - aud_cfg_db_set_string( cfgfile , "aosd" , + aud_set_string ("aosd" , "decoration_skin_file" , cfg->osd->decoration.skin_file ); */ /* decoration - colors */ @@ -451,8 +406,7 @@ aosd_color_t color = g_array_index( cfg->osd->decoration.colors , aosd_color_t , i ); key_str = g_strdup_printf( "decoration_color_%i" , i ); aosd_cfg_util_color_to_str( color , &color_str ); - aud_cfg_db_set_string( cfgfile , "aosd" , - key_str , color_str ); + aud_set_string ("aosd", key_str, color_str); g_free( key_str ); g_free( color_str ); } @@ -464,14 +418,11 @@ g_string_truncate( string , string->len - 1 ); else g_string_assign( string , "x" ); - aud_cfg_db_set_string( cfgfile , "aosd" , "trigger_active" , string->str ); + aud_set_string ("aosd", "trigger_active", string->str); g_string_free( string , TRUE ); /* miscellaneous */ - aud_cfg_db_set_int( cfgfile , "aosd" , - "transparency_mode" , cfg->osd->misc.transparency_mode ); - - aud_cfg_db_close( cfgfile ); + aud_set_int ("aosd", "transparency_mode", cfg->osd->misc.transparency_mode); return 0; } diff -Nru audacious-plugins-2.4.4/src/aosd/aosd.h audacious-plugins-3.2/src/aosd/aosd.h --- audacious-plugins-2.4.4/src/aosd/aosd.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/aosd/aosd.h 2012-01-20 19:48:30.000000000 +0000 @@ -28,18 +28,9 @@ #include #include -void aosd_init ( void ); +gboolean aosd_init (void); void aosd_cleanup ( void ); void aosd_configure ( void ); void aosd_about ( void ); -GeneralPlugin aosd_gp = -{ - .description= "Audacious OSD " AOSD_VERSION_PLUGIN, - .init = aosd_init, - .about = aosd_about, - .configure = aosd_configure, - .cleanup = aosd_cleanup -}; - #endif /* !_I_AOSD_H */ diff -Nru audacious-plugins-2.4.4/src/aosd/aosd_trigger.c audacious-plugins-3.2/src/aosd/aosd_trigger.c --- audacious-plugins-2.4.4/src/aosd/aosd_trigger.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/aosd/aosd_trigger.c 2012-01-20 19:48:30.000000000 +0000 @@ -19,6 +19,7 @@ */ #include +#include #include #include @@ -140,7 +141,6 @@ } /* When called, this hook will display the text of the user pointer or the current playing song, if NULL */ - hook_register("aosd toggle"); hook_associate( "aosd toggle" , aosd_trigger_func_hook_cb , NULL ); return; } @@ -186,7 +186,7 @@ static void aosd_trigger_func_pb_start_cb(gpointer hook_data, gpointer user_data) { - gchar *title = aud_drct_pl_get_title(aud_drct_pl_get_pos()); + char * title = aud_drct_get_title (); if (title != NULL) { @@ -200,8 +200,8 @@ g_free(utf8_title_markup); } g_free(utf8_title); + str_unref (title); } - return; } typedef struct @@ -245,10 +245,8 @@ aosd_pb_titlechange_prevs_t *prevs = prevs_gp; gint playlist = aud_playlist_get_playing(); gint pl_entry = aud_playlist_get_position(playlist); - const gchar * pl_entry_filename = aud_playlist_entry_get_filename (playlist, - pl_entry); - const gchar * pl_entry_title = aud_playlist_entry_get_title (playlist, - pl_entry, FALSE); + gchar * pl_entry_filename = aud_playlist_entry_get_filename (playlist, pl_entry); + gchar * pl_entry_title = aud_playlist_entry_get_title (playlist, pl_entry, FALSE); /* same filename but title changed, useful to detect http stream song changes */ @@ -291,6 +289,9 @@ g_free(prevs->filename); prevs->filename = g_strdup(pl_entry_filename); } + + str_unref (pl_entry_filename); + str_unref (pl_entry_title); } } @@ -387,7 +388,6 @@ { gint active = aud_playlist_get_active(); gint pos = aud_playlist_get_position(active); - const gchar * title; gchar *utf8_title, *utf8_title_markup; gint time_cur, time_tot; gint time_cur_m, time_cur_s, time_tot_m, time_tot_s; @@ -399,14 +399,13 @@ time_tot_s = time_tot % 60; time_tot_m = (time_tot - time_tot_s) / 60; - title = aud_playlist_entry_get_title (active, pos, FALSE); - utf8_title = aosd_trigger_utf8convert( title ); + utf8_title = aud_playlist_entry_get_title (active, pos, FALSE); utf8_title_markup = g_markup_printf_escaped( "%s (%i:%02i/%i:%02i)" , global_config->osd->text.fonts_name[0] , utf8_title , time_cur_m , time_cur_s , time_tot_m , time_tot_s ); aosd_osd_display( utf8_title_markup , global_config->osd , FALSE ); g_free( utf8_title_markup ); - g_free( utf8_title ); + str_unref (utf8_title); return; } @@ -423,7 +422,7 @@ aosd_osd_display( markup_text , global_config->osd , FALSE ); } else { /* Display currently playing song */ - aosd_trigger_func_pb_start_cb ( GINT_TO_POINTER(aud_drct_pl_get_pos()), NULL ); + aosd_trigger_func_pb_start_cb (NULL, NULL); } return; } diff -Nru audacious-plugins-2.4.4/src/aosd/aosd_ui.c audacious-plugins-3.2/src/aosd/aosd_ui.c --- audacious-plugins-2.4.4/src/aosd/aosd_ui.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/aosd/aosd_ui.c 2012-01-20 19:48:30.000000000 +0000 @@ -18,17 +18,16 @@ * */ +#include +#include +#include + #include "aosd_ui.h" #include "aosd_style.h" #include "aosd_trigger.h" #include "aosd_cfg.h" #include "aosd_osd.h" #include "aosd_common.h" -#include -#include -#include -#include - extern aosd_cfg_t * global_config; extern gboolean plugin_is_active; @@ -85,13 +84,25 @@ static gboolean aosd_cb_configure_position_expose ( GtkWidget * darea , +#if GTK_CHECK_VERSION (3, 0, 0) + cairo_t * cr , +#else GdkEventExpose * event , +#endif gpointer coord_gp ) { gint coord = GPOINTER_TO_INT(coord_gp); - gdk_draw_rectangle( GDK_DRAWABLE(darea->window) , - darea->style->black_gc , TRUE , + +#if GTK_CHECK_VERSION (3, 0, 0) + cairo_set_source_rgb ( cr , 0 , 0 , 0 ); + cairo_rectangle ( cr , (coord % 3) * 10 , (coord / 3) * 16 , 20 , 8 ); + cairo_fill ( cr ); +#else + gdk_draw_rectangle( GDK_DRAWABLE(gtk_widget_get_window (darea)) , + gtk_widget_get_style (darea)->black_gc , TRUE , (coord % 3) * 10 , (coord / 3) * 16 , 20 , 8 ); +#endif + return FALSE; } @@ -182,8 +193,13 @@ pos_placement_bt_darea[i] = gtk_drawing_area_new(); gtk_widget_set_size_request( pos_placement_bt_darea[i] , 40 , 40 ); gtk_container_add( GTK_CONTAINER(pos_placement_bt[i]) , pos_placement_bt_darea[i] ); +#if GTK_CHECK_VERSION (3, 0, 0) + g_signal_connect( G_OBJECT(pos_placement_bt_darea[i]) , "draw" , + G_CALLBACK(aosd_cb_configure_position_expose) , GINT_TO_POINTER(i) ); +#else g_signal_connect( G_OBJECT(pos_placement_bt_darea[i]) , "expose-event" , G_CALLBACK(aosd_cb_configure_position_expose) , GINT_TO_POINTER(i) ); +#endif gtk_table_attach( GTK_TABLE(pos_placement_table) , pos_placement_bt[i] , (i % 3) , (i % 3) + 1 , (i / 3) , (i / 3) + 1 , GTK_FILL , GTK_FILL , 0 , 0 ); @@ -235,14 +251,25 @@ gtk_container_set_border_width( GTK_CONTAINER(pos_multimon_hbox) , 6 ); gtk_container_add( GTK_CONTAINER(pos_multimon_frame), pos_multimon_hbox ); pos_multimon_label = gtk_label_new( _("Display OSD using:") ); - pos_multimon_combobox = gtk_combo_box_new_text(); - gtk_combo_box_append_text( GTK_COMBO_BOX(pos_multimon_combobox) , _("all monitors") ); +#if GTK_CHECK_VERSION (3, 0, 0) + #define CBT_NEW gtk_combo_box_text_new + #define CBT_ADD(widget, text) \ + gtk_combo_box_text_append( GTK_COMBO_BOX_TEXT(widget) , NULL , text ) +#else + #define CBT_NEW gtk_combo_box_new_text + #define CBT_ADD(widget, text) \ + gtk_combo_box_append_text( GTK_COMBO_BOX(widget) , text ) +#endif + pos_multimon_combobox = CBT_NEW(); + CBT_ADD( pos_multimon_combobox , _("all monitors") ); for ( i = 0 ; i < monitors_num ; i++ ) { gchar *mon_str = g_strdup_printf( _("monitor %i") , i + 1 ); - gtk_combo_box_append_text( GTK_COMBO_BOX(pos_multimon_combobox) , mon_str ); + CBT_ADD( pos_multimon_combobox , mon_str ); g_free( mon_str ); } +#undef CBT_NEW +#undef CBT_ADD gtk_combo_box_set_active( GTK_COMBO_BOX(pos_multimon_combobox) , (cfg->osd->position.multimon_id + 1) ); aosd_callback_list_add( cb_list , pos_multimon_combobox , aosd_cb_configure_position_multimon_commit ); gtk_box_pack_start( GTK_BOX(pos_multimon_hbox) , pos_multimon_label , FALSE , FALSE , 0 ); diff -Nru audacious-plugins-2.4.4/src/aosd/aosd_ui.c.old audacious-plugins-3.2/src/aosd/aosd_ui.c.old --- audacious-plugins-2.4.4/src/aosd/aosd_ui.c.old 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/aosd/aosd_ui.c.old 1970-01-01 00:00:00.000000000 +0000 @@ -1,159 +0,0 @@ -/* -* -* Author: Giacomo Lozito , (C) 2005-2007 -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2 of the License, or (at your -* option) any later version. -* -* This program 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 -* General Public License for more details. -* -* You should have received a copy of the GNU General Public License along -* with this program; if not, write to the Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* -*/ - -#include "aosd_ui.h" -#include -#include -#include - - -gint -aosd_display_osd ( void ) -{ - GtkWidget *osd_win; - GtkWidget *osd_darea; - PangoLayout *osd_layout; - PangoFontDescription *osd_fontdesc; - GdkPixmap *osd_darea_pixmap, *osd_darea_bitmap; - GdkGC *osd_darea_gc; - GdkColor fg_color, bg_color, bitmap_color; - GdkColormap *bitmap_colormap; - gint max_width = 0, border_width = 1; - gint width = 0, height = 0; - gint off_x = 0, off_y = 0; - PangoAlignment osd_alignment = PANGO_ALIGN_CENTER; - gboolean translucent_bg = TRUE; - - osd_win = gtk_window_new( GTK_WINDOW_POPUP ); - gtk_widget_add_events( osd_win , GDK_ENTER_NOTIFY_MASK ); - gtk_widget_realize( osd_win ); - - osd_darea = gtk_drawing_area_new(); - gtk_container_add( GTK_CONTAINER(osd_win) , osd_darea ); - gtk_widget_show( osd_darea ); - - osd_fontdesc = pango_font_description_from_string("Courier,Mono 28"); - - osd_layout = gtk_widget_create_pango_layout( osd_darea , "AUDACIOUS OSD 0.1 by Giacomo" ); - pango_layout_set_ellipsize( osd_layout , PANGO_ELLIPSIZE_NONE ); - pango_layout_set_justify( osd_layout , FALSE ); - pango_layout_set_alignment( osd_layout , osd_alignment ); - pango_layout_set_font_description( osd_layout , osd_fontdesc ); - - max_width = gdk_screen_get_width( gdk_screen_get_default() ) - 8; - pango_layout_set_width( osd_layout , PANGO_SCALE * max_width ); - pango_layout_get_pixel_size( osd_layout , &width , &height ); - - off_x = border_width * 2; - off_y = border_width * 2; - - if ( osd_alignment == PANGO_ALIGN_CENTER ) - off_x -= max_width/2 - width/2; - else if ( osd_alignment == PANGO_ALIGN_RIGHT ) - off_x -= max_width - width; - - width += border_width * 4; - height += border_width * 4; - - gtk_widget_set_size_request( osd_darea , width , height ); - gtk_widget_realize( osd_darea ); - - osd_darea_pixmap = gdk_pixmap_new( GDK_DRAWABLE(osd_darea->window) , width , height , -1 ); - - osd_darea_gc = gdk_gc_new( GDK_DRAWABLE(osd_darea_pixmap) ); - gdk_gc_copy( osd_darea_gc , osd_darea->style->fg_gc[GTK_STATE_NORMAL] ); - - gdk_color_parse( "Blue" , &fg_color ); /* TODO pass color as function param */ - gdk_color_parse( "White" , &bg_color ); /* TODO pass color as function param */ - - gdk_gc_set_rgb_fg_color( osd_darea_gc , &bg_color ); - gdk_draw_rectangle( GDK_DRAWABLE(osd_darea_pixmap) , osd_darea_gc , TRUE , - 0 , 0 , width , height ); - gdk_gc_set_rgb_fg_color( osd_darea_gc , &fg_color ); - gdk_draw_layout( GDK_DRAWABLE(osd_darea_pixmap) , osd_darea_gc , off_x , off_y , osd_layout ); - g_object_unref( osd_darea_gc ); - - osd_darea_bitmap = gdk_pixmap_new( GDK_DRAWABLE(osd_darea->window) , width , height , 1 ); - osd_darea_gc = gdk_gc_new( GDK_DRAWABLE(osd_darea_bitmap) ); - - /* gdk will complain if we don't pass a colormap to osd_darea_gc */ - gdk_gc_set_colormap( osd_darea_gc , gdk_colormap_get_system() ); - - bitmap_color.pixel = 0; - gdk_gc_set_foreground( osd_darea_gc , &bitmap_color ); - - if ( translucent_bg == TRUE ) - { - gint w = 2, h = 2; - GdkPixmap *stipple_bitmap; - - stipple_bitmap = gdk_pixmap_new( NULL , w , h , 1 ); - bitmap_color.pixel = 0; gdk_gc_set_foreground( osd_darea_gc , &bitmap_color ); - gdk_draw_rectangle( GDK_DRAWABLE(stipple_bitmap) , osd_darea_gc , TRUE , 0 , 0 , w , h ); - bitmap_color.pixel = 1; gdk_gc_set_foreground( osd_darea_gc , &bitmap_color ); - gdk_draw_point( GDK_DRAWABLE(stipple_bitmap) , osd_darea_gc , 0 , 0 ); - gdk_draw_point( GDK_DRAWABLE(stipple_bitmap) , osd_darea_gc , 1 , 1 ); - bitmap_color.pixel = 0; gdk_gc_set_foreground( osd_darea_gc , &bitmap_color ); - gdk_draw_rectangle( GDK_DRAWABLE(osd_darea_bitmap) , osd_darea_gc , TRUE , - 0 , 0 , width , height ); - gdk_gc_set_stipple( osd_darea_gc , stipple_bitmap ); - gdk_gc_set_fill( osd_darea_gc , GDK_STIPPLED ); - bitmap_color.pixel = 1; gdk_gc_set_foreground( osd_darea_gc , &bitmap_color ); - gdk_draw_rectangle( GDK_DRAWABLE(osd_darea_bitmap) , osd_darea_gc , TRUE , - 0 , 0 , width , height ); - gdk_gc_set_fill( osd_darea_gc , GDK_SOLID ); - } - else - gdk_draw_rectangle( GDK_DRAWABLE(osd_darea_bitmap) , osd_darea_gc , TRUE , - 0 , 0 , width , height ); - - bitmap_color.pixel = 1; - gdk_gc_set_foreground( osd_darea_gc , &bitmap_color ); - - gdk_draw_layout( GDK_DRAWABLE(osd_darea_bitmap) , osd_darea_gc , - off_x , off_y , osd_layout ); - gdk_draw_layout( GDK_DRAWABLE(osd_darea_bitmap) , osd_darea_gc , - off_x + border_width , off_y , osd_layout ); - gdk_draw_layout( GDK_DRAWABLE(osd_darea_bitmap) , osd_darea_gc , - off_x + border_width , off_y + border_width , osd_layout ); - gdk_draw_layout( GDK_DRAWABLE(osd_darea_bitmap) , osd_darea_gc , - off_x , off_y + border_width , osd_layout ); - gdk_draw_layout( GDK_DRAWABLE(osd_darea_bitmap) , osd_darea_gc , - off_x - border_width , off_y + border_width , osd_layout ); - gdk_draw_layout( GDK_DRAWABLE(osd_darea_bitmap) , osd_darea_gc , - off_x - border_width , off_y , osd_layout ); - gdk_draw_layout( GDK_DRAWABLE(osd_darea_bitmap) , osd_darea_gc , - off_x - border_width , off_y - border_width , osd_layout ); - gdk_draw_layout( GDK_DRAWABLE(osd_darea_bitmap) , osd_darea_gc , - off_x , off_y - border_width , osd_layout ); - gdk_draw_layout( GDK_DRAWABLE(osd_darea_bitmap) , osd_darea_gc , - off_x + border_width , off_y - border_width , osd_layout ); - - g_object_unref( osd_darea_gc ); - - gdk_window_set_back_pixmap( GDK_WINDOW(osd_darea->window) , osd_darea_pixmap , FALSE ); - gdk_window_shape_combine_mask( GDK_WINDOW(osd_win->window) , osd_darea_bitmap , 0 , 0 ); - - gtk_widget_show( osd_win ); - - pango_font_description_free( osd_fontdesc ); - g_object_unref( osd_layout ); - return 0; -} diff -Nru audacious-plugins-2.4.4/src/aosd/Makefile audacious-plugins-3.2/src/aosd/Makefile --- audacious-plugins-2.4.4/src/aosd/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/aosd/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -15,5 +15,5 @@ plugindir := ${plugindir}/${GENERAL_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${PANGO_CFLAGS} ${CAIRO_CFLAGS} ${PANGOCAIRO_CFLAGS} ${XRENDER_CFLAGS} ${XCOMPOSITE_CFLAGS} -I../.. +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${PANGO_CFLAGS} ${CAIRO_CFLAGS} ${PANGOCAIRO_CFLAGS} ${XRENDER_CFLAGS} ${XCOMPOSITE_CFLAGS} -I../.. LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${PANGO_LIBS} ${CAIRO_LIBS} ${PANGOCAIRO_LIBS} ${XRENDER_LIBS} ${XCOMPOSITE_LIBS} diff -Nru audacious-plugins-2.4.4/src/asx/asx.c audacious-plugins-3.2/src/asx/asx.c --- audacious-plugins-2.4.4/src/asx/asx.c 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/asx/asx.c 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,99 @@ +/* + * Audacious: A cross-platform multimedia player + * Copyright (c) 2006 William Pitcock, Tony Vroon, George Averill, + * Giacomo Lozito, Derek Pomery and Yoshiki Yazawa. + * Copyright (c) 2011 John Lindgren + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include + +#include +#include +#include + +#include "util.h" + +static gboolean playlist_load_asx (const gchar * filename, VFSFile * file, + gchar * * title, Index * filenames, Index * tuples) +{ + gint i; + gchar line_key[16]; + gchar * line; + + INIFile * inifile = open_ini_file (file); + + * title = NULL; + + for (i = 1; ; i++) { + g_snprintf(line_key, sizeof(line_key), "Ref%d", i); + if ((line = read_ini_string(inifile, "Reference", line_key))) + { + gchar *uri; + + uri = aud_construct_uri(line, filename); + g_free(line); + + if (!g_ascii_strncasecmp("http://", uri, 7)) + uri = str_replace_fragment(uri, strlen(uri), "http://", "mms://"); + + if (uri != NULL) + index_append (filenames, str_get (uri)); + + g_free (uri); + } + else + break; + } + + close_ini_file(inifile); + return TRUE; +} + +static gboolean playlist_save_asx (const gchar * filename, VFSFile * file, + const gchar * title, Index * filenames, Index * tuples) +{ + gint entries = index_count (filenames); + gint count; + + vfs_fprintf(file, "[Reference]\r\n"); + + for (count = 0; count < entries; count ++) + { + const gchar * filename = index_get (filenames, count); + gchar *fn; + + if (vfs_is_remote (filename)) + fn = g_strdup (filename); + else + fn = g_filename_from_uri (filename, NULL, NULL); + + vfs_fprintf (file, "Ref%d=%s\r\n", 1 + count, fn); + g_free(fn); + } + + return TRUE; +} + +static const gchar * const asx_exts[] = {"asx", NULL}; + +AUD_PLAYLIST_PLUGIN +( + .name = "ASXv1/ASXv2 Playlist Format", + .extensions = asx_exts, + .load = playlist_load_asx, + .save = playlist_save_asx +) diff -Nru audacious-plugins-2.4.4/src/asx/Makefile audacious-plugins-3.2/src/asx/Makefile --- audacious-plugins-2.4.4/src/asx/Makefile 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/asx/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,11 @@ +PLUGIN = asx${PLUGIN_SUFFIX} +SRCS = asx.c util.c + +include ../../buildsys.mk +include ../../extra.mk + +plugindir := ${plugindir}/${CONTAINER_PLUGIN_DIR} + +CFLAGS += ${PLUGIN_CFLAGS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. +LIBS += ${GTK_LIBS} ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/asx/util.c audacious-plugins-3.2/src/asx/util.c --- audacious-plugins-2.4.4/src/asx/util.c 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/asx/util.c 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,243 @@ +/* Audacious - Cross-platform multimedia player + * Copyright (C) 2005-2011 Audacious development team + * + * Based on BMP: + * Copyright (C) 2003-2004 BMP development team. + * + * Based on XMMS: + * Copyright (C) 1998-2003 XMMS development team. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; under version 3 of the License. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * The Audacious team does not consider modular code linking to + * Audacious or using our public API to be a derived work. + */ + +#include +#include + +#include + +#include "util.h" + +static void strip_string(GString *string) +{ + while (string->len > 0 && string->str[0] == ' ') + g_string_erase(string, 0, 1); + + while (string->len > 0 && string->str[string->len - 1] == ' ') + g_string_erase(string, string->len - 1, 1); +} + +static void strip_lower_string(GString *string) +{ + gchar *lower; + strip_string(string); + + lower = g_ascii_strdown(string->str, -1); + g_free(string->str); + string->str = lower; +} + +static void close_ini_file_free_value(gpointer value) +{ + g_free((gchar *)value); +} + +static void close_ini_file_free_section(gpointer section) +{ + g_hash_table_destroy((GHashTable *)section); +} + +INIFile * open_ini_file (VFSFile * file) +{ + GHashTable *ini_file = NULL; + GHashTable *section = NULL; + GString *section_name, *key_name, *value; + gpointer section_hash, key_hash; + gsize off = 0; + + gint64 filesize = vfs_fsize (file); + if (filesize < 1) + return NULL; + + gchar * buffer = g_malloc (filesize); + filesize = vfs_fread (buffer, 1, filesize, file); + + section_name = g_string_new(""); + key_name = g_string_new(NULL); + value = g_string_new(NULL); + + ini_file = + g_hash_table_new_full(NULL, NULL, NULL, close_ini_file_free_section); + section = + g_hash_table_new_full(NULL, NULL, NULL, close_ini_file_free_value); + /* make a nameless section which should store all entries that are not + * embedded in a section */ + section_hash = GINT_TO_POINTER(g_string_hash(section_name)); + g_hash_table_insert(ini_file, section_hash, section); + + while (off < filesize) + { + /* ignore the following characters */ + if (buffer[off] == '\r' || buffer[off] == '\n' || buffer[off] == ' ' + || buffer[off] == '\t') + { + if (buffer[off] == '\n') + { + g_string_free(key_name, TRUE); + g_string_free(value, TRUE); + key_name = g_string_new(NULL); + value = g_string_new(NULL); + } + + off++; + continue; + } + + /* if we encounter a possible section statement */ + if (buffer[off] == '[') + { + g_string_free(section_name, TRUE); + section_name = g_string_new(NULL); + off++; + + if (off >= filesize) + goto return_sequence; + + while (buffer[off] != ']') + { + /* if the section statement has not been closed before a + * linebreak */ + if (buffer[off] == '\n') + break; + + g_string_append_c(section_name, buffer[off]); + off++; + if (off >= filesize) + goto return_sequence; + } + if (buffer[off] == '\n') + continue; + if (buffer[off] == ']') + { + off++; + if (off >= filesize) + goto return_sequence; + + strip_lower_string(section_name); + section_hash = GINT_TO_POINTER(g_string_hash(section_name)); + + /* if this section already exists, we don't make a new one, + * but reuse the old one */ + if (g_hash_table_lookup(ini_file, section_hash) != NULL) + section = g_hash_table_lookup(ini_file, section_hash); + else + { + section = + g_hash_table_new_full(NULL, NULL, NULL, + close_ini_file_free_value); + g_hash_table_insert(ini_file, section_hash, section); + } + + continue; + } + } + + if (buffer[off] == '=') + { + off++; + if (off >= filesize) + goto return_sequence; + + while (buffer[off] != '\n' && buffer[off] != '\r') + { + g_string_append_c(value, buffer[off]); + off++; + if (off >= filesize) + break; + } + + strip_lower_string(key_name); + key_hash = GINT_TO_POINTER(g_string_hash(key_name)); + strip_string(value); + + if (key_name->len > 0 && value->len > 0) + g_hash_table_insert(section, key_hash, g_strdup(value->str)); + } + else + { + g_string_append_c(key_name, buffer[off]); + off++; + if (off >= filesize) + goto return_sequence; + } + } + + return_sequence: + g_string_free(section_name, TRUE); + g_string_free(key_name, TRUE); + g_string_free(value, TRUE); + g_free(buffer); + return ini_file; +} + +/** + * Frees the memory allocated for inifile. + */ +void close_ini_file(INIFile *inifile) +{ + g_return_if_fail(inifile); + g_hash_table_destroy(inifile); +} + +/** + * Returns a string that corresponds to correct section and key in inifile. + * + * Returns NULL if value was not found in inifile. Otherwise returns a copy + * of string pointed by "section" and "key". Returned string should be freed + * after use. + */ +gchar *read_ini_string(INIFile *inifile, const gchar *section, const gchar *key) +{ + GString *section_string; + GString *key_string; + gchar *value = NULL; + gpointer section_hash, key_hash; + GHashTable *section_table; + + g_return_val_if_fail(inifile, NULL); + + section_string = g_string_new(section); + key_string = g_string_new(key); + value = NULL; + + strip_lower_string(section_string); + strip_lower_string(key_string); + section_hash = GINT_TO_POINTER(g_string_hash(section_string)); + key_hash = GINT_TO_POINTER(g_string_hash(key_string)); + section_table = g_hash_table_lookup(inifile, section_hash); + + if (section_table) + { + value = + g_strdup(g_hash_table_lookup + (section_table, GINT_TO_POINTER(key_hash))); + } + + g_string_free(section_string, TRUE); + g_string_free(key_string, TRUE); + + g_return_val_if_fail(value, NULL); + return value; +} diff -Nru audacious-plugins-2.4.4/src/asx/util.h audacious-plugins-3.2/src/asx/util.h --- audacious-plugins-2.4.4/src/asx/util.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/asx/util.h 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,39 @@ +/* Audacious - Cross-platform multimedia player + * Copyright (C) 2005-2011 Audacious development team + * + * Based on BMP: + * Copyright (C) 2003-2004 BMP development team + * + * Based on XMMS: + * Copyright (C) 1998-2003 XMMS development team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; under version 3 of the License. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * The Audacious team does not consider modular code linking to + * Audacious or using our public API to be a derived work. + */ + +#ifndef UTIL_H +#define UTIL_H + +#include +#include + +typedef GHashTable INIFile; + +INIFile * open_ini_file (VFSFile * file); +void close_ini_file(INIFile *key_file); +gchar *read_ini_string(INIFile *key_file, const gchar *section, + const gchar *key); + +#endif diff -Nru audacious-plugins-2.4.4/src/audpl/audpl.c audacious-plugins-3.2/src/audpl/audpl.c --- audacious-plugins-2.4.4/src/audpl/audpl.c 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/audpl/audpl.c 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,225 @@ +/* + * Audacious playlist format plugin + * Copyright 2011 John Lindgren + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions, and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions, and the following disclaimer in the documentation + * provided with the distribution. + * + * This software is provided "as is" and without any warranty, express or + * implied. In no event shall the authors be liable for any damages arising from + * the use of this software. + */ + +#include +#include +#include + +#include +#include + +typedef struct { + VFSFile * file; + char * cur; + int len; + char buf[65536]; +} ReadState; + +static bool_t read_key_raw (ReadState * state, char * * keyp, char * * valp) +{ + char * newline = memchr (state->cur, '\n', state->len); + + if (! newline) + { + memmove (state->buf, state->cur, state->len); + state->cur = state->buf; + state->len += vfs_fread (state->buf + state->len, 1, + sizeof state->buf - state->len, state->file); + + newline = memchr (state->cur, '\n', state->len); + + if (! newline) + return FALSE; + } + + * newline = 0; + + char * equals = strchr (state->cur, '='); + + if (! equals) + return FALSE; + + * equals = 0; + + * keyp = state->cur; + * valp = equals + 1; + + state->len -= newline + 1 - state->cur; + state->cur = newline + 1; + + return TRUE; +} + +static bool_t read_key (ReadState * state, char * * keyp, char * * valp) +{ + if (! read_key_raw (state, keyp, valp)) + return FALSE; + + if (strcmp (* keyp, "uri")) + str_decode_percent (* valp, -1, * valp); + + return TRUE; +} + +static bool_t write_key_raw (VFSFile * file, const char * key, const char * val) +{ + int keylen = strlen (key); + int vallen = strlen (val); + char buf[keylen + vallen + 2]; + + memcpy (buf, key, keylen); + buf[keylen] = '='; + memcpy (buf + keylen + 1, val, vallen); + buf[keylen + vallen + 1] = '\n'; + + return (vfs_fwrite (buf, 1, keylen + vallen + 2, file) == keylen + vallen + 2); +} + +static bool_t write_key (VFSFile * file, const char * key, const char * val) +{ + if (! strcmp (key, "uri")) + return write_key_raw (file, key, val); + + char buf[3 * strlen (val) + 1]; + str_encode_percent (val, -1, buf); + return write_key_raw (file, key, buf); +} + +static bool_t audpl_load (const char * path, VFSFile * file, char * * title, + Index * filenames, Index * tuples) +{ + ReadState * state = malloc (sizeof (ReadState)); + state->file = file; + state->cur = state->buf; + state->len = 0; + + char * key, * val; + + if (! read_key (state, & key, & val) || strcmp (key, "title")) + { + free (state); + return FALSE; + } + + * title = str_get (val); + + bool_t readed = read_key (state, & key, & val); + + while (readed && ! strcmp (key, "uri")) + { + char * uri = str_get (val); + Tuple * tuple = NULL; + + while ((readed = read_key (state, & key, & val)) && strcmp (key, "uri")) + { + if (! tuple) + tuple = tuple_new_from_filename (uri); + + if (! strcmp (key, "empty")) + continue; + + int field = tuple_field_by_name (key); + TupleValueType type = tuple_field_get_type (field); + + if (field < 0) + break; + + if (type == TUPLE_STRING) + tuple_set_str (tuple, field, NULL, val); + else if (type == TUPLE_INT) + tuple_set_int (tuple, field, NULL, atoi (val)); + } + + index_append (filenames, uri); + index_append (tuples, tuple); + } + + free (state); + return TRUE; +} + +static bool_t audpl_save (const char * path, VFSFile * file, + const char * title, Index * filenames, Index * tuples) +{ + if (! write_key (file, "title", title)) + return FALSE; + + int count = index_count (filenames); + + for (int i = 0; i < count; i ++) + { + if (! write_key (file, "uri", index_get (filenames, i))) + return FALSE; + + const Tuple * tuple = tuples ? index_get (tuples, i) : NULL; + + if (tuple) + { + int keys = 0; + + for (int f = 0; f < TUPLE_FIELDS; f ++) + { + if (f == FIELD_FILE_PATH || f == FIELD_FILE_NAME || f == FIELD_FILE_EXT) + continue; + + TupleValueType type = tuple_get_value_type (tuple, f, NULL); + + if (type == TUPLE_STRING) + { + char * str = tuple_get_str (tuple, f, NULL); + + if (! write_key (file, tuple_field_get_name (f), str)) + { + str_unref (str); + return FALSE; + } + + str_unref (str); + keys ++; + } + else if (type == TUPLE_INT) + { + char buf[32]; + snprintf (buf, sizeof buf, "%d", tuple_get_int (tuple, f, NULL)); + + if (! write_key (file, tuple_field_get_name (f), buf)) + return FALSE; + + keys ++; + } + } + + /* distinguish between an empty tuple and no tuple at all */ + if (! keys && ! write_key (file, "empty", "1")) + return FALSE; + } + } + + return TRUE; +} + +static const char * const audpl_exts[] = {"audpl", NULL}; + +AUD_PLAYLIST_PLUGIN +( + .name = "Audacious playlist format", + .extensions = audpl_exts, + .load = audpl_load, + .save = audpl_save +) diff -Nru audacious-plugins-2.4.4/src/audpl/Makefile audacious-plugins-3.2/src/audpl/Makefile --- audacious-plugins-2.4.4/src/audpl/Makefile 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/audpl/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,10 @@ +PLUGIN = audpl${PLUGIN_SUFFIX} + +SRCS = audpl.c + +include ../../buildsys.mk +include ../../extra.mk + +plugindir := ${plugindir}/${CONTAINER_PLUGIN_DIR} + +CFLAGS += ${PLUGIN_CFLAGS} diff -Nru audacious-plugins-2.4.4/src/bluetooth/agent.c audacious-plugins-3.2/src/bluetooth/agent.c --- audacious-plugins-2.4.4/src/bluetooth/agent.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/bluetooth/agent.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1029 +0,0 @@ -/* - * Audacious Bluetooth headset suport plugin - * - * Copyright (c) 2008 Paula Stanciu - * Copyright (C) 2005-2008 Marcel Holtmann - * Copyright (C) 2006-2007 Bastien Nocera - * - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -#include -#include "bluetooth.h" -#include "agent.h" -#include "gui.h" - -#define PASSKEY_AGENT_PATH "/org/bluez/passkey_agent" -#define AUTH_AGENT_PATH "/org/bluez/auth_agent" - -static GtkWidget *agent_window = NULL; -static GtkWidget *window_box = NULL; -static GtkWidget *top_box = NULL; -static GtkWidget *middle_box = NULL; -static GtkWidget *bottom_box = NULL; -static GtkWidget *pair_label = NULL; -static GtkWidget *device_label = NULL; -static GtkWidget *passkey_entry = NULL; -static GtkWidget *ok_button = NULL; -static GtkWidget *cancel_button = NULL; -static const char* passkey; -static GList *adapter_list = NULL; -DBusGProxy *pair_obj = NULL; - -static DBusGConnection *connection; - -struct adapter_data { - char *path; - int attached; - char *old_mode; -}; - -void ok_button_call() -{ - passkey = gtk_entry_get_text(GTK_ENTRY(passkey_entry)); - printf("Key entered : %s\n",passkey); -} - -void cancel_button_call() -{ - gtk_widget_destroy (agent_window); - agent_window = NULL; -} - -void gui_agent() -{ - if (!agent_window) - { - agent_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - g_signal_connect (agent_window, "destroy",G_CALLBACK (gtk_widget_destroyed), &agent_window); - window_box = gtk_vbox_new(FALSE,2); - top_box = gtk_vbox_new(FALSE,2); - middle_box = gtk_hbox_new(FALSE,2); - bottom_box = gtk_hbox_new(FALSE,2); - - gtk_container_add(GTK_CONTAINER(agent_window),window_box); - gtk_container_add(GTK_CONTAINER(window_box),top_box); - gtk_container_set_border_width (GTK_CONTAINER(middle_box), 20); - gtk_container_add(GTK_CONTAINER(window_box),middle_box); - gtk_container_add(GTK_CONTAINER(window_box),bottom_box); - - pair_label = gtk_label_new_with_mnemonic("Enter passkey for pairing"); - device_label = gtk_label_new_with_mnemonic(((DeviceData*)(selected_dev->data))->name); - - gtk_container_add(GTK_CONTAINER(top_box),pair_label); - gtk_container_add(GTK_CONTAINER(top_box),device_label); - - passkey_entry = gtk_entry_new(); - gtk_container_add(GTK_CONTAINER(middle_box),passkey_entry); - - ok_button = gtk_button_new_with_mnemonic("OK"); - cancel_button = gtk_button_new_with_mnemonic("Cancel"); - gtk_container_add(GTK_CONTAINER(bottom_box),ok_button); - g_signal_connect(ok_button,"clicked",G_CALLBACK(ok_button_call),NULL); - - gtk_container_add(GTK_CONTAINER(bottom_box),cancel_button); - g_signal_connect(cancel_button,"clicked",G_CALLBACK (cancel_button_call),NULL); - - - gtk_window_set_title(GTK_WINDOW(agent_window),"Pairing passkey request"); - if (!GTK_WIDGET_VISIBLE (agent_window)) - gtk_widget_show_all (agent_window); - else - { - gtk_widget_destroy (agent_window); - agent_window = NULL; - } - - } - - -} -static DBusGConnection *connection; - -static int volatile registered_passkey = 0; -static int volatile registered_auth = 0; - -static gboolean auto_authorize = FALSE; - -typedef enum { - AGENT_ERROR_REJECT -} AgentError; - -#define AGENT_ERROR (agent_error_quark()) - -#define AGENT_ERROR_TYPE (agent_error_get_type()) - -static GQuark agent_error_quark(void) -{ - static GQuark quark = 0; - if (!quark) - quark = g_quark_from_static_string("agent"); - - return quark; -} - -#define ENUM_ENTRY(NAME, DESC) { NAME, "" #NAME "", DESC } - -static GType agent_error_get_type(void) -{ - static GType etype = 0; - if (etype == 0) { - static const GEnumValue values[] = { - ENUM_ENTRY(AGENT_ERROR_REJECT, "Rejected"), - { 0, 0, 0 } - }; - - etype = g_enum_register_static("agent", values); - } - - return etype; -} - -static GList *input_list = NULL; - -struct input_data { - char *path; - char *address; - char *service; - char *uuid; - DBusGMethodInvocation *context; -}; - -static gint input_compare(gconstpointer a, gconstpointer b) -{ - struct input_data *a_data = (struct input_data *) a; - struct input_data *b_data = (struct input_data *) b; - - return g_ascii_strcasecmp(a_data->address, b_data->address); -} - -static void input_free(struct input_data *input) -{ - - input_list = g_list_remove(input_list, input); - - g_free(input->uuid); - g_free(input->service); - g_free(input->address); - g_free(input->path); - g_free(input); - - // if (g_list_length(input_list) == 0) - // disable_blinking(); -} - -static void passkey_callback(gint response, gpointer user_data) -{ - struct input_data *input = user_data; - - if (response == GTK_RESPONSE_ACCEPT) { - const char *passkey; - /*!!!!!!!!! hardcoded passkey !!!!!!!!!!!!! to modify*/ - passkey ="0000"; - dbus_g_method_return(input->context, passkey); - } else { - GError *error; - error = g_error_new(AGENT_ERROR, AGENT_ERROR_REJECT, - "Pairing request rejected"); - printf("passkey error\n"); - dbus_g_method_return_error(input->context, error); - } - - input_free(input); - printf("return\n"); - } - - -static void passkey_dialog(const char *path, const char *address, - const gchar *device, DBusGMethodInvocation *context) -{ - struct input_data *input; - - input = g_try_malloc0(sizeof(*input)); - if (!input) - return; - - input->path = g_strdup(path); - input->address = g_strdup(address); - - input->context = context; - - passkey_callback(GTK_RESPONSE_ACCEPT,input); - - -} - -static void confirm_dialog(const char *path, const char *address, - const char *value, const gchar *device, - DBusGMethodInvocation *context) -{ - printf("confirm dialog \n"); - struct input_data *input; - - input = g_try_malloc0(sizeof(*input)); - if (!input) - return; - - input->path = g_strdup(path); - input->address = g_strdup(address); - - input->context = context; - // g_signal_connect(G_OBJECT(dialog), "response", - // G_CALLBACK(confirm_callback), input); - - //enable_blinking(); -} - -static void auth_dialog(const char *path, const char *address, - const char *service, const char *uuid, const gchar *device, - const gchar *profile, DBusGMethodInvocation *context) -{ - struct input_data *input; - - input = g_try_malloc0(sizeof(*input)); - if (!input) - return; - - input->path = g_strdup(path); - input->address = g_strdup(address); - input->service = g_strdup(service); - input->uuid = g_strdup(uuid); - - input->context = context; - - - /* translators: Whether to grant access to a particular service - * to the device mentioned */ - - /* g_signal_connect(G_OBJECT(dialog), "response", - G_CALLBACK(auth_callback), input); - - enable_blinking(); - */ -} - -typedef struct { - GObject parent; -} PasskeyAgent; - -typedef struct { - GObjectClass parent; -} PasskeyAgentClass; - -static GObjectClass *passkey_agent_parent; - -G_DEFINE_TYPE(PasskeyAgent, passkey_agent, G_TYPE_OBJECT) - -#define PASSKEY_AGENT_OBJECT_TYPE (passkey_agent_get_type()) - -#define PASSKEY_AGENT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \ - PASSKEY_AGENT_OBJECT_TYPE, PasskeyAgent)) - -static void passkey_agent_finalize(GObject *obj) -{ - passkey_agent_parent->finalize(obj); -} - -static void passkey_agent_init(PasskeyAgent *obj) -{ - g_printf("passkeyagent init\n"); -} - -static void passkey_agent_class_init(PasskeyAgentClass *klass) -{ - GObjectClass *gobject_class; - - passkey_agent_parent = g_type_class_peek_parent(klass); - - gobject_class = G_OBJECT_CLASS(klass); - gobject_class->finalize = passkey_agent_finalize; -} - -static PasskeyAgent *passkey_agent_new(const char *path) -{ - PasskeyAgent *agent; - - agent = g_object_new(PASSKEY_AGENT_OBJECT_TYPE, NULL); - - dbus_g_connection_register_g_object(connection, path, G_OBJECT(agent)); - g_printf("new passkey agent \n"); - return agent; -} -static gboolean passkey_agent_request(PasskeyAgent *agent, - const char *path, const char *address, - DBusGMethodInvocation *context) -{ - printf("passkey_agent request\n"); - DBusGProxy *object; - const char *adapter = NULL, *name = NULL; - gchar *device, *line; - - object = dbus_g_proxy_new_for_name(connection, "org.bluez", - path, "org.bluez.Adapter"); - - dbus_g_proxy_call(object, "GetName", NULL, G_TYPE_INVALID, - G_TYPE_STRING, &adapter, G_TYPE_INVALID); - - dbus_g_proxy_call(object, "GetRemoteName", NULL, - G_TYPE_STRING, address, G_TYPE_INVALID, - G_TYPE_STRING, &name, G_TYPE_INVALID); - - if (name) { - if (g_strrstr(name, address)) - device = g_strdup(name); - else - device = g_strdup_printf("%s (%s)", name, address); - } else - device = g_strdup(address); - - passkey_dialog(path, address, device, context); - /* translators: this is a popup telling you a particular device - * has asked for pairing */ - line = g_strdup_printf(_("Pairing request for '%s'"), device); - g_free(device); - - /*show_notification(adapter ? adapter : _("Bluetooth device"), - line, _("Enter passkey"), 0, - G_CALLBACK(notification_closed)); - */ - g_free(line); - - return TRUE; -} - -static gboolean passkey_agent_confirm(PasskeyAgent *agent, - const char *path, const char *address, - const char *value, DBusGMethodInvocation *context) -{ - printf("passkey agent confirm \n"); - DBusGProxy *object; - const char *adapter = NULL, *name = NULL; - gchar *device, *line; - - object = dbus_g_proxy_new_for_name(connection, "org.bluez", - path, "org.bluez.Adapter"); - - dbus_g_proxy_call(object, "GetName", NULL, G_TYPE_INVALID, - G_TYPE_STRING, &adapter, G_TYPE_INVALID); - - dbus_g_proxy_call(object, "GetRemoteName", NULL, - G_TYPE_STRING, address, G_TYPE_INVALID, - G_TYPE_STRING, &name, G_TYPE_INVALID); - - if (name) { - if (g_strrstr(name, address)) - device = g_strdup(name); - else - device = g_strdup_printf("%s (%s)", name, address); - } else - device = g_strdup(address); - - confirm_dialog(path, address, value, device, context); - - line = g_strdup_printf(_("Pairing request for '%s'"), device); - g_free(device); - - /*show_notification(adapter ? adapter : _("Bluetooth device"), - line, _("Confirm pairing"), 0, - G_CALLBACK(notification_closed)); - */ - g_free (line); - - return TRUE; -} - -static gboolean passkey_agent_cancel(PasskeyAgent *agent, - const char *path, const char *address, GError **error) -{ - printf("passkey agent cancel \n"); - GList *list; - GError *result; - struct input_data *input; - - input = g_try_malloc0(sizeof(*input)); - if (!input) - return FALSE; - - input->path = g_strdup(path); - input->address = g_strdup(address); - - list = g_list_find_custom(input_list, input, input_compare); - - g_free(input->address); - g_free(input->path); - g_free(input); - - if (!list || !list->data) - return FALSE; - - input = list->data; - - //close_notification(); - - result = g_error_new(AGENT_ERROR, AGENT_ERROR_REJECT, - "Agent callback canceled"); - - dbus_g_method_return_error(input->context, result); - - input_free(input); - - return TRUE; -} - -static gboolean passkey_agent_release(PasskeyAgent *agent, GError **error) -{ - printf("pass agent release \n"); - registered_passkey = 0; - - return TRUE; -} - -#include "passkey-agent-glue.h" - -typedef struct { - GObject parent; -} AuthAgent; - -typedef struct { - GObjectClass parent; -} AuthAgentClass; - -static GObjectClass *auth_agent_parent; - -G_DEFINE_TYPE(AuthAgent, auth_agent, G_TYPE_OBJECT) - -#define AUTH_AGENT_OBJECT_TYPE (auth_agent_get_type()) - -#define AUTH_AGENT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \ - AUTH_AGENT_OBJECT_TYPE, AuthAgent)) - -static void auth_agent_finalize(GObject *obj) -{ - auth_agent_parent->finalize(obj); -} - -static void auth_agent_init(AuthAgent *obj) -{ -} - -static void auth_agent_class_init(AuthAgentClass *klass) -{ - GObjectClass *gobject_class; - - auth_agent_parent = g_type_class_peek_parent(klass); - - gobject_class = G_OBJECT_CLASS(klass); - gobject_class->finalize = auth_agent_finalize; -} - -static AuthAgent *auth_agent_new(const char *path) -{ - AuthAgent *agent; - - agent = g_object_new(AUTH_AGENT_OBJECT_TYPE, NULL); - - dbus_g_connection_register_g_object(connection, path, G_OBJECT(agent)); - - return agent; -} - -static gboolean auth_agent_authorize(PasskeyAgent *agent, - const char *path, const char *address, const char *service, - const char *uuid, DBusGMethodInvocation *context) -{ - printf("auth agent authorize \n"); - DBusGProxy *object; - const char *adapter = NULL, *name = NULL; - gchar *device, *profile, *line; - - if (auto_authorize == TRUE) { - dbus_g_method_return(context); - return TRUE; - } - - object = dbus_g_proxy_new_for_name(connection, "org.bluez", - path, "org.bluez.Adapter"); - - dbus_g_proxy_call(object, "GetName", NULL, G_TYPE_INVALID, - G_TYPE_STRING, &adapter, G_TYPE_INVALID); - - dbus_g_proxy_call(object, "GetRemoteName", NULL, - G_TYPE_STRING, address, G_TYPE_INVALID, - G_TYPE_STRING, &name, G_TYPE_INVALID); - - object = dbus_g_proxy_new_for_name(connection, "org.bluez", - service, "org.bluez.Service"); - - dbus_g_proxy_call(object, "GetName", NULL, G_TYPE_INVALID, - G_TYPE_STRING, &profile, G_TYPE_INVALID); - - if (name) { - if (g_strrstr(name, address)) - device = g_strdup(name); - else - device = g_strdup_printf("%s (%s)", name, address); - } else - device = g_strdup(address); - - auth_dialog(path, address, service, uuid, device, profile, context); - - line = g_strdup_printf(_("Authorization request for %s"), device); - g_free(device); - - /*show_notification(adapter ? adapter : _("Bluetooth device"), - line, _("Check authorization"), 0, - G_CALLBACK(notification_closed)); - */ - g_free(line); - - return TRUE; -} - -static gboolean auth_agent_cancel(PasskeyAgent *agent, - const char *path, const char *address, const char *service, - const char *uuid, DBusGMethodInvocation *context) -{ - GList *list; - GError *result; - struct input_data *input; - - input = g_try_malloc0(sizeof(*input)); - if (!input) - return FALSE; - - input->path = g_strdup(path); - input->address = g_strdup(address); - input->service = g_strdup(service); - input->uuid = g_strdup(uuid); - - list = g_list_find_custom(input_list, input, input_compare); - - g_free(input->uuid); - g_free(input->service); - g_free(input->address); - g_free(input->path); - g_free(input); - - if (!list || !list->data) - return FALSE; - - input = list->data; - - //close_notification(); - - result = g_error_new(AGENT_ERROR, AGENT_ERROR_REJECT, - "Agent callback canceled"); - - dbus_g_method_return_error(input->context, result); - - input_free(input); - - return TRUE; -} - -static gboolean auth_agent_release(PasskeyAgent *agent, GError **error) -{ - registered_auth = 0; - - return TRUE; -} - -#include "auth-agent-glue.h" - -int register_agents(void) -{ - DBusGProxy *object; - GError *error = NULL; - - if (registered_passkey && registered_auth) - return 0; - - object = dbus_g_proxy_new_for_name(connection, "org.bluez", - "/org/bluez", "org.bluez.Security"); - - if (!registered_passkey) { - - dbus_g_proxy_call(object, "RegisterDefaultPasskeyAgent", - &error, G_TYPE_STRING, PASSKEY_AGENT_PATH, - G_TYPE_INVALID, G_TYPE_INVALID); - - if (error != NULL) { - g_error_free(error); - return -1; - } - - registered_passkey = 1; - } - - if (!registered_auth) { - dbus_g_proxy_call(object, "RegisterDefaultAuthorizationAgent", - &error, G_TYPE_STRING, AUTH_AGENT_PATH, - G_TYPE_INVALID, G_TYPE_INVALID); - - if (error != NULL) { - g_error_free(error); - return -1; - } - - registered_auth = 1; - } - - return 0; -} - -void unregister_agents(void) -{ - registered_passkey = 0; - registered_auth = 0; -} - -int setup_agents(DBusGConnection *conn) -{ - printf("setup agents\n"); - void *agent; - - connection = dbus_g_connection_ref(conn); - - dbus_g_object_type_install_info(PASSKEY_AGENT_OBJECT_TYPE, - &dbus_glib_passkey_agent_object_info); - - dbus_g_object_type_install_info(AUTH_AGENT_OBJECT_TYPE, - &dbus_glib_auth_agent_object_info); - - dbus_g_error_domain_register(AGENT_ERROR, "org.bluez.Error", - AGENT_ERROR_TYPE); - - agent = passkey_agent_new(PASSKEY_AGENT_PATH); - - agent = auth_agent_new(AUTH_AGENT_PATH); - - return 0; -} - -void cleanup_agents(void) -{ - printf("clean up agents \n"); - unregister_agents(); - - dbus_g_connection_unref(connection); -} - -void show_agents(void) -{ - printf("show_agents\n"); - //close_notification(); - - // g_list_foreach(input_list, show_dialog, NULL); - - // disable_blinking(); -} - -void set_auto_authorize(gboolean value) -{ - auto_authorize = value; -} - -static void bonding_created(DBusGProxy *object, - const char *address, gpointer user_data) -{ - - - const char *adapter = NULL, *name = NULL; - gchar *device, *text; - - dbus_g_proxy_call(object, "GetName", NULL, G_TYPE_INVALID, - G_TYPE_STRING, &adapter, G_TYPE_INVALID); - - dbus_g_proxy_call(object, "GetRemoteName", NULL, - G_TYPE_STRING, address, G_TYPE_INVALID, - G_TYPE_STRING, &name, G_TYPE_INVALID); - mcs_handle_t *cfgfile = aud_cfg_db_open(); - aud_cfg_db_set_string(cfgfile,"BLUETOOTH_PLUGIN","bonded", address); - aud_cfg_db_close(cfgfile); - - if (name) { - if (g_strrstr(name, address)) - device = g_strdup(name); - else - device = g_strdup_printf("%s (%s)", name, address); - } else - device = g_strdup(address); - bonded_dev = g_strdup_printf(address); - - - text = g_strdup_printf(_("Created bonding with %s"), device); - bonding_finish = 1; - g_free(device); - - g_printf("%s\n",text); - g_free(text); -} - -static void bonding_removed(DBusGProxy *object, - const char *address, gpointer user_data) -{ - const char *adapter = NULL, *name = NULL; - gchar *device, *text; - dbus_g_proxy_call(object, "GetName", NULL, G_TYPE_INVALID, - G_TYPE_STRING, &adapter, G_TYPE_INVALID); - - dbus_g_proxy_call(object, "GetRemoteName", NULL, - G_TYPE_STRING, address, G_TYPE_INVALID, - G_TYPE_STRING, &name, G_TYPE_INVALID); - - if (name) { - if (g_strrstr(name, address)) - device = g_strdup(name); - else - device = g_strdup_printf("%s (%s)", name, address); - } else - device = g_strdup(address); - - text = g_strdup_printf(_("Removed bonding with %s"), device); - mcs_handle_t *cfgfile = aud_cfg_db_open(); - aud_cfg_db_set_string(cfgfile,"BLUETOOTH_PLUGIN","bonded","no"); - aud_cfg_db_close(cfgfile); - - g_free(device); - printf("bonding removed\n"); - -// show_notification(adapter ? adapter : _("Bluetooth device"), -// text, NULL, 6000, NULL); - - g_free(text); - bonding_finish =0; -} - - -static void trust_added(DBusGProxy *object, - const char *address, gpointer user_data) -{ -} - -static void trust_removed(DBusGProxy *object, - const char *address, gpointer user_data) -{ -} - -static void set_new_mode(struct adapter_data *adapter, const char *mode) -{ - g_free(adapter->old_mode); - - adapter->old_mode = g_strdup(mode); -} - -static void mode_changed(DBusGProxy *object, - const char *mode, gpointer user_data) -{ - struct adapter_data *adapter = (struct adapter_data *) user_data; - const char *adapter_name = NULL; - const char *text; - - if (g_str_equal(mode, "off") == TRUE) { - set_new_mode(adapter, mode); - return; - } - if (g_str_equal(adapter->old_mode, "off") - && g_str_equal(mode, "connectable")) { - set_new_mode(adapter, mode); - return; - } - - - if (g_str_equal(mode, "off") != FALSE) { - text = N_("Device has been switched off"); - } else if (g_str_equal(mode, "connectable") != FALSE - && g_str_equal(adapter->old_mode, "discoverable") != FALSE) { - text = N_("Device has been made non-discoverable"); - } else if (g_str_equal(mode, "connectable") != FALSE) { - text = N_("Device has been made connectable"); - } else if (g_str_equal (mode, "discoverable") != FALSE) { - text = N_("Device has been made discoverable"); - } else if (g_str_equal(mode, "limited") != FALSE) { - text = N_("Device has been made limited discoverable"); - } else if (g_str_equal(mode, "pairing") != FALSE) { - text = N_("Device has been switched into pairing mode"); - } else { - set_new_mode(adapter, mode); - return; - } - - dbus_g_proxy_call(object, "GetName", NULL, G_TYPE_INVALID, - G_TYPE_STRING, &adapter_name, G_TYPE_INVALID); - - /*show_notification(adapter_name ? adapter_name : _("Bluetooth device"), - _(text), NULL, 3000, NULL); - */ - - set_new_mode(adapter, mode); -} -/* -static void adapter_free(gpointer data, gpointer user_data) -{ - struct adapter_data *adapter = data; - - adapter_list = g_list_remove(adapter_list, adapter); - - g_free(adapter->path); - g_free(adapter->old_mode); - g_free(adapter); -} - -static void adapter_disable(gpointer data, gpointer user_data) -{ - struct adapter_data *adapter = data; - - adapter->attached = 0; -} -*/ - -static gint adapter_compare(gconstpointer a, gconstpointer b) -{ - const struct adapter_data *adapter = a; - const char *path = b; - - return g_ascii_strcasecmp(adapter->path, path); -} -/* -static void adapter_count(gpointer data, gpointer user_data) -{ - struct adapter_data *adapter = data; - int *count = user_data; - - if (adapter->attached) - (*count)++; -} - -*/ - - -void add_bonding(){ - DBusGProxy *object; - - object = dbus_g_proxy_new_for_name(bus, "org.bluez", - "/org/bluez/passkey", "org.bluez.Adapter"); - - dbus_g_proxy_add_signal(object, "BondingCreated", - G_TYPE_STRING, G_TYPE_INVALID); - - dbus_g_proxy_connect_signal(object, "BondingCreated", - G_CALLBACK(bonding_created), NULL, NULL); - - dbus_g_proxy_add_signal(object, "BondingRemoved", - G_TYPE_STRING, G_TYPE_INVALID); - - dbus_g_proxy_connect_signal(object, "BondingRemoved", - G_CALLBACK(bonding_removed), NULL, NULL); -} -static void add_adapter(const char *path) -{ - GList *list; - DBusGProxy *object; - struct adapter_data *adapter; - const char *old_mode; - - list = g_list_find_custom(adapter_list, path, adapter_compare); - if (list && list->data) { - struct adapter_data *adapter = list->data; - - adapter->attached = 1; - return; - } - - adapter = g_try_malloc0(sizeof(*adapter)); - if (!adapter) - return; - - adapter->path = g_strdup(path); - adapter->attached = 1; - - adapter_list = g_list_append(adapter_list, adapter); - - - object = dbus_g_proxy_new_for_name(bus, "org.bluez", - path, "org.bluez.Adapter"); - - dbus_g_proxy_add_signal(object, "ModeChanged", - G_TYPE_STRING, G_TYPE_INVALID); - - dbus_g_proxy_connect_signal(object, "ModeChanged", - G_CALLBACK(mode_changed), adapter, NULL); - - dbus_g_proxy_add_signal(object, "BondingCreated", - G_TYPE_STRING, G_TYPE_INVALID); - - dbus_g_proxy_connect_signal(object, "BondingCreated", - G_CALLBACK(bonding_created), NULL, NULL); - - dbus_g_proxy_add_signal(object, "BondingRemoved", - G_TYPE_STRING, G_TYPE_INVALID); - - dbus_g_proxy_connect_signal(object, "BondingRemoved", - G_CALLBACK(bonding_removed), NULL, NULL); - - dbus_g_proxy_add_signal(object, "TrustAdded", - G_TYPE_STRING, G_TYPE_INVALID); - - dbus_g_proxy_connect_signal(object, "TrustAdded", - G_CALLBACK(trust_added), NULL, NULL); - - dbus_g_proxy_add_signal(object, "TrustRemoved", - G_TYPE_STRING, G_TYPE_INVALID); - - dbus_g_proxy_connect_signal(object, "TrustRemoved", - G_CALLBACK(trust_removed), NULL, NULL); - - old_mode = NULL; - dbus_g_proxy_call(object, "GetMode", NULL, - G_TYPE_INVALID, G_TYPE_STRING, - &old_mode, G_TYPE_INVALID); - if (old_mode != NULL) - set_new_mode(adapter, old_mode); - register_agents(); -} - -static void adapter_added(DBusGProxy *object, - const char *path, gpointer user_data) -{ - printf("adapter added\n"); - register_agents(); - - add_adapter(path); -} - -static void adapter_removed(DBusGProxy *object, - const char *path, gpointer user_data) -{ - GList *list; - - list = g_list_find_custom(adapter_list, path, adapter_compare); - if (list && list->data) { - struct adapter_data *adapter = list->data; - - adapter->attached = 0; - } - -} - - -static int setup_manager(void) -{ - DBusGProxy *object; - GError *error = NULL; - const gchar **array = NULL; - - object = dbus_g_proxy_new_for_name(bus, "org.bluez", - "/org/bluez", "org.bluez.Manager"); - - dbus_g_proxy_add_signal(object, "AdapterAdded", - G_TYPE_STRING, G_TYPE_INVALID); - - dbus_g_proxy_connect_signal(object, "AdapterAdded", - G_CALLBACK(adapter_added), NULL, NULL); - - dbus_g_proxy_add_signal(object, "AdapterRemoved", - G_TYPE_STRING, G_TYPE_INVALID); - - dbus_g_proxy_connect_signal(object, "AdapterRemoved", - G_CALLBACK(adapter_removed), NULL, NULL); - - dbus_g_proxy_call(object, "ListAdapters", &error, - G_TYPE_INVALID, G_TYPE_STRV, &array, G_TYPE_INVALID); - - if (error == NULL) { - while (*array) { - printf("add adapter\n"); - add_adapter(*array); - array++; - } - } else - g_error_free(error); - - return 0; -} - - -void run_agents() -{ - bonding_finish =0; - setup_agents(bus); - //to add the bounding signals -// register_agents(); - setup_manager(); - -} - diff -Nru audacious-plugins-2.4.4/src/bluetooth/agent.h audacious-plugins-3.2/src/bluetooth/agent.h --- audacious-plugins-2.4.4/src/bluetooth/agent.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/bluetooth/agent.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -/* - * Audacious Bluetooth headset suport plugin - * - * Copyright (c) 2008 Paula Stanciu - * Copyright (C) 2005-2008 Marcel Holtmann - * Copyright (C) 2006-2007 Bastien Nocera - * - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -#include -#include -#include -gint bonding_finish; -void run_agents(void); -int setup_agents(DBusGConnection *conn); -void cleanup_agents(void); - -int register_agents(void); -void unregister_agents(void); - -void show_agents(void); -void set_auto_authorize(gboolean value); diff -Nru audacious-plugins-2.4.4/src/bluetooth/auth-agent-glue.h audacious-plugins-3.2/src/bluetooth/auth-agent-glue.h --- audacious-plugins-2.4.4/src/bluetooth/auth-agent-glue.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/bluetooth/auth-agent-glue.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,223 +0,0 @@ -/* Generated by dbus-binding-tool; do not edit! */ - - -#ifndef __dbus_glib_marshal_auth_agent_MARSHAL_H__ -#define __dbus_glib_marshal_auth_agent_MARSHAL_H__ - -#include - -G_BEGIN_DECLS - -#ifdef G_ENABLE_DEBUG -#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v) -#define g_marshal_value_peek_char(v) g_value_get_char (v) -#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v) -#define g_marshal_value_peek_int(v) g_value_get_int (v) -#define g_marshal_value_peek_uint(v) g_value_get_uint (v) -#define g_marshal_value_peek_long(v) g_value_get_long (v) -#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v) -#define g_marshal_value_peek_int64(v) g_value_get_int64 (v) -#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v) -#define g_marshal_value_peek_enum(v) g_value_get_enum (v) -#define g_marshal_value_peek_flags(v) g_value_get_flags (v) -#define g_marshal_value_peek_float(v) g_value_get_float (v) -#define g_marshal_value_peek_double(v) g_value_get_double (v) -#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v) -#define g_marshal_value_peek_param(v) g_value_get_param (v) -#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v) -#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v) -#define g_marshal_value_peek_object(v) g_value_get_object (v) -#else /* !G_ENABLE_DEBUG */ -/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API. - * Do not access GValues directly in your code. Instead, use the - * g_value_get_*() functions - */ -#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int -#define g_marshal_value_peek_char(v) (v)->data[0].v_int -#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint -#define g_marshal_value_peek_int(v) (v)->data[0].v_int -#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint -#define g_marshal_value_peek_long(v) (v)->data[0].v_long -#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong -#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64 -#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64 -#define g_marshal_value_peek_enum(v) (v)->data[0].v_long -#define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong -#define g_marshal_value_peek_float(v) (v)->data[0].v_float -#define g_marshal_value_peek_double(v) (v)->data[0].v_double -#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer -#endif /* !G_ENABLE_DEBUG */ - - -/* BOOLEAN:STRING,STRING,STRING,STRING,POINTER (/tmp/dbus-binding-tool-c-marshallers.9NIBEU:1) */ -extern void dbus_glib_marshal_auth_agent_BOOLEAN__STRING_STRING_STRING_STRING_POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); -void -dbus_glib_marshal_auth_agent_BOOLEAN__STRING_STRING_STRING_STRING_POINTER (GClosure *closure, - GValue *return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint G_GNUC_UNUSED, - gpointer marshal_data) -{ - typedef gboolean (*GMarshalFunc_BOOLEAN__STRING_STRING_STRING_STRING_POINTER) (gpointer data1, - gpointer arg_1, - gpointer arg_2, - gpointer arg_3, - gpointer arg_4, - gpointer arg_5, - gpointer data2); - register GMarshalFunc_BOOLEAN__STRING_STRING_STRING_STRING_POINTER callback; - register GCClosure *cc = (GCClosure*) closure; - register gpointer data1, data2; - gboolean v_return; - - g_return_if_fail (return_value != NULL); - g_return_if_fail (n_param_values == 6); - - if (G_CCLOSURE_SWAP_DATA (closure)) - { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } - else - { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = (GMarshalFunc_BOOLEAN__STRING_STRING_STRING_STRING_POINTER) (marshal_data ? marshal_data : cc->callback); - - v_return = callback (data1, - g_marshal_value_peek_string (param_values + 1), - g_marshal_value_peek_string (param_values + 2), - g_marshal_value_peek_string (param_values + 3), - g_marshal_value_peek_string (param_values + 4), - g_marshal_value_peek_pointer (param_values + 5), - data2); - - g_value_set_boolean (return_value, v_return); -} - -/* NONE:STRING,STRING,STRING,STRING,POINTER (/tmp/dbus-binding-tool-c-marshallers.9NIBEU:2) */ -extern void dbus_glib_marshal_auth_agent_VOID__STRING_STRING_STRING_STRING_POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); -void -dbus_glib_marshal_auth_agent_VOID__STRING_STRING_STRING_STRING_POINTER (GClosure *closure, - GValue *return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint G_GNUC_UNUSED, - gpointer marshal_data) -{ - typedef void (*GMarshalFunc_VOID__STRING_STRING_STRING_STRING_POINTER) (gpointer data1, - gpointer arg_1, - gpointer arg_2, - gpointer arg_3, - gpointer arg_4, - gpointer arg_5, - gpointer data2); - register GMarshalFunc_VOID__STRING_STRING_STRING_STRING_POINTER callback; - register GCClosure *cc = (GCClosure*) closure; - register gpointer data1, data2; - - g_return_if_fail (n_param_values == 6); - - if (G_CCLOSURE_SWAP_DATA (closure)) - { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } - else - { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = (GMarshalFunc_VOID__STRING_STRING_STRING_STRING_POINTER) (marshal_data ? marshal_data : cc->callback); - - callback (data1, - g_marshal_value_peek_string (param_values + 1), - g_marshal_value_peek_string (param_values + 2), - g_marshal_value_peek_string (param_values + 3), - g_marshal_value_peek_string (param_values + 4), - g_marshal_value_peek_pointer (param_values + 5), - data2); -} -#define dbus_glib_marshal_auth_agent_NONE__STRING_STRING_STRING_STRING_POINTER dbus_glib_marshal_auth_agent_VOID__STRING_STRING_STRING_STRING_POINTER - -/* BOOLEAN:POINTER (/tmp/dbus-binding-tool-c-marshallers.9NIBEU:3) */ -extern void dbus_glib_marshal_auth_agent_BOOLEAN__POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); -void -dbus_glib_marshal_auth_agent_BOOLEAN__POINTER (GClosure *closure, - GValue *return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint G_GNUC_UNUSED, - gpointer marshal_data) -{ - typedef gboolean (*GMarshalFunc_BOOLEAN__POINTER) (gpointer data1, - gpointer arg_1, - gpointer data2); - register GMarshalFunc_BOOLEAN__POINTER callback; - register GCClosure *cc = (GCClosure*) closure; - register gpointer data1, data2; - gboolean v_return; - - g_return_if_fail (return_value != NULL); - g_return_if_fail (n_param_values == 2); - - if (G_CCLOSURE_SWAP_DATA (closure)) - { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } - else - { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = (GMarshalFunc_BOOLEAN__POINTER) (marshal_data ? marshal_data : cc->callback); - - v_return = callback (data1, - g_marshal_value_peek_pointer (param_values + 1), - data2); - - g_value_set_boolean (return_value, v_return); -} - -G_END_DECLS - -#endif /* __dbus_glib_marshal_auth_agent_MARSHAL_H__ */ - -#include -static const DBusGMethodInfo dbus_glib_auth_agent_methods[] = { - { (GCallback) auth_agent_authorize, dbus_glib_marshal_auth_agent_NONE__STRING_STRING_STRING_STRING_POINTER, 0 }, - { (GCallback) auth_agent_cancel, dbus_glib_marshal_auth_agent_BOOLEAN__STRING_STRING_STRING_STRING_POINTER, 87 }, - { (GCallback) auth_agent_release, dbus_glib_marshal_auth_agent_BOOLEAN__POINTER, 171 }, -}; - -const DBusGObjectInfo dbus_glib_auth_agent_object_info = { - 0, - dbus_glib_auth_agent_methods, - 3, -"org.bluez.AuthorizationAgent\0Authorize\0A\0adapter\0I\0s\0address\0I\0s\0service\0I\0s\0uuid\0I\0s\0\0org.bluez.AuthorizationAgent\0Cancel\0S\0adapter\0I\0s\0address\0I\0s\0service\0I\0s\0uuid\0I\0s\0\0org.bluez.AuthorizationAgent\0Release\0S\0\0\0", -"\0", -"\0" -}; - diff -Nru audacious-plugins-2.4.4/src/bluetooth/bluetooth.c audacious-plugins-3.2/src/bluetooth/bluetooth.c --- audacious-plugins-2.4.4/src/bluetooth/bluetooth.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/bluetooth/bluetooth.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,404 +0,0 @@ -/* - * Audacious Bluetooth headset suport plugin - * - * Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include -#include -#include "bluetooth.h" -#include "marshal.h" -#include "gui.h" -#include "scan_gui.h" -#include "agent.h" -#include -#include -#include -#define DEBUG 1 -GList * current_device = NULL; -gint config = 0; -gint devices_no = 0; -gboolean pcmdev_modified = FALSE; -GStaticMutex mutex = G_STATIC_MUTEX_INIT; -static gchar *current_address=NULL; -static GThread *connect_th; -void bluetooth_init ( void ); -void bluetooth_cleanup ( void ); -void bt_cfg(void); -void bt_about(void); -static void remote_device_found(DBusGProxy *object, char *address, const unsigned int class, const int rssi, gpointer user_data); -static void discovery_started(DBusGProxy *object, gpointer user_data); -static void remote_name_updated(DBusGProxy *object, const char *address, char *name, gpointer user_data); -static void print_results(void); -static void discovery_completed(DBusGProxy *object, gpointer user_data); -void discover_devices(void); -void disconnect_dbus_signals(void); -/*static void show_restart_dialog(void); */ -static void remove_bonding(gchar* device); -GeneralPlugin bluetooth_gp = -{ - .description = "Bluetooth audio support", - .init = bluetooth_init, - .about = bt_about, - .configure = bt_cfg, - .cleanup = bluetooth_cleanup -}; -GeneralPlugin *bluetooth_gplist[] = { &bluetooth_gp, NULL }; -DECLARE_PLUGIN(bluetooth_gp, NULL, NULL, NULL, NULL, NULL, bluetooth_gplist, NULL, NULL) - -void bluetooth_init ( void ) -{ - bonded_dev = NULL; - discover_finish = 0; - pcmdev_modified = FALSE; - audio_devices = NULL; - bus = NULL; - obj = NULL; - gchar* bonded_addr = NULL; - discover_devices(); - mcs_handle_t *cfgfile ; - cfgfile = aud_cfg_db_open(); - if(!aud_cfg_db_get_string(cfgfile, "BLUETOOTH_PLUGIN", "bonded", - &bonded_addr)) { - aud_cfg_db_close(cfgfile); - return; - } - if(bonded_addr!=NULL && g_strcmp0(bonded_addr,"no")!=0) - { - remove_bonding(bonded_addr); - } - free(bonded_addr); - aud_cfg_db_close(cfgfile); - -} - -void bluetooth_cleanup ( void ) -{ - if (config ==1 ) - { - close_window(); - config =0; - } - if (bonded_dev) { - printf("bluetooth: exit\n"); - remove_bonding(bonded_dev); - } - if(discover_finish == 2) { - dbus_g_connection_flush (bus); - dbus_g_connection_unref(bus); - disconnect_dbus_signals(); - - } - if (pcmdev_modified) { - /* switching back to default pcm device at cleanup */ - mcs_handle_t *cfgfile = aud_cfg_db_open(); - aud_cfg_db_set_string(cfgfile,"alsa","pcm", "default"); - aud_cfg_db_close(cfgfile); - } -} - -void bt_about( void ) -{ - static GtkWidget *dialog = NULL; - - audgui_simple_message(&dialog, GTK_MESSAGE_INFO, _("Bluetooth headset support plugin"), - _("Bluetooth headset support\n" - "Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com\n" - "This was a GSoC 2008 Project - Many thanks to my mentor Tony Vroon and the Audacious team\n \n" - "In order to use the AVRCP you need the uinput module loaded into the kernel\n" - "The headset keys will be recognized as normal mutimedia keys and \n" - "can be configured using the Audacious Global Hotkey plugin or ohter tools \n" - "provided by your window manager\n" - )); -} - -void bt_cfg(void) -{ - printf("bt_cfg\n"); - config =1; - if(discover_finish == 2){ - if (devices_no == 0){ - printf("no devs!\n"); - show_scan(0); - show_no_devices(); - }else - results_ui(); - } - else show_scan(0); - printf("end of bt_cfg\n"); -} - -void disconnect_dbus_signals() -{ - dbus_g_proxy_disconnect_signal(obj, "RemoteDeviceFound", G_CALLBACK(remote_device_found), bus); - dbus_g_proxy_disconnect_signal(obj, "DiscoveryStarted", G_CALLBACK(discovery_started), bus); - dbus_g_proxy_disconnect_signal(obj, "DiscoveryCompleted", G_CALLBACK(discovery_completed), bus); - dbus_g_proxy_disconnect_signal(obj, "RemoteNameUpdated", G_CALLBACK(remote_name_updated), NULL); - -} - -void clean_devices_list() -{ - g_list_free(audio_devices); - dbus_g_connection_flush (bus); - dbus_g_connection_unref(bus); - audio_devices = NULL; - //g_list_free(current_device); -} -static void remove_bonding(gchar *device) -{ - printf("remove_bonding call\n"); - dbus_g_object_register_marshaller(marshal_VOID__STRING_UINT_INT, G_TYPE_NONE, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_INT, G_TYPE_INVALID); - dbus_g_proxy_call(obj,"RemoveBonding",NULL,G_TYPE_STRING,device,G_TYPE_INVALID,G_TYPE_INVALID); - -} -void refresh_call(void) -{ - printf("refresh function called\n"); - disconnect_dbus_signals(); - clean_devices_list(); - if(discover_finish == 0 ||discover_finish== 2){ - discover_finish = 0; - - discover_devices(); - close_window(); - show_scan(0); - } - else - printf("Scanning please wait!\n"); -} - -gpointer connect_call_th(void) -{ - //I will have to enable the audio service if necessary - run_agents(); - dbus_g_object_register_marshaller(marshal_VOID__STRING_UINT_INT, G_TYPE_NONE, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_INT, G_TYPE_INVALID); - dbus_g_proxy_call(obj,"CreateBonding",NULL,G_TYPE_STRING,current_address,G_TYPE_INVALID,G_TYPE_INVALID); - -return NULL; -} - -void connect_call(void) -{ - close_call(); - close_window(); - show_scan(1); - current_address = g_strdup(((DeviceData*)(selected_dev->data))->address); - connect_th = g_thread_create((GThreadFunc)connect_call_th,NULL,TRUE,NULL) ; -} - - -void play_call() -{ - - FILE *file; - FILE *temp_file; - gint prev=0; - char line[128]; - const gchar *home; - gchar *device_line; - gchar *file_name=""; - gchar *temp_file_name; - home = g_get_home_dir(); - file_name = g_strconcat(home,"/.asoundrc",NULL); - temp_file_name = g_strconcat(home,"/temp_bt",NULL); - file = fopen(file_name,"r"); - temp_file = fopen(temp_file_name,"w"); - device_line = g_strdup_printf("device %s\n",current_address); - if ( file != NULL ) - { - while ( fgets ( line, sizeof line, file ) != NULL ) - { - if(!(strcmp(line,"pcm.audacious_bt{\n"))){ - fputs(line,temp_file); - fgets ( line, sizeof line, file ); /* type bluetooth */ - fputs(line,temp_file); - fgets ( line, sizeof line, file ); /* device MAC */ - fputs(device_line,temp_file); - prev = 1; - } else - fputs(line,temp_file); - } - - fclose (file); - } - if(!prev){ - fputs("pcm.audacious_bt{\n",temp_file); - fputs("type bluetooth\n",temp_file); - fputs(device_line,temp_file); - fputs("}\n",temp_file); - prev = 0; - } - - fclose(temp_file); - int err = rename(temp_file_name,file_name); - printf("rename error : %d",err); - perror("zz"); - g_free(device_line); - g_free(file_name); - g_free(temp_file_name); - pcmdev_modified = TRUE; - mcs_handle_t *cfgfile = aud_cfg_db_open(); - aud_cfg_db_set_string(cfgfile,"alsa","pcm", "audacious_bt"); - aud_cfg_db_close(cfgfile); - - printf("play callback\n"); - close_window(); - aud_output_plugin_cleanup(); -// aud_drct_stop(); - aud_drct_play(); - - -} -/*static void show_restart_dialog() -{ - static GtkWidget *window = NULL; - GtkWidget *dialog; - dialog = gtk_message_dialog_new (GTK_WINDOW (window), - GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_INFO, - GTK_BUTTONS_OK, - "Please restart the player to apply the bluetooth audio settings!"); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); -} -*/ -static void remote_device_found(DBusGProxy *object, char *address, const unsigned int class, const int rssi, gpointer user_data) -{ - int found_in_list=FALSE; - g_static_mutex_lock(&mutex); - current_device = audio_devices; - if((class & 0x200404)==0x200404) - { - while(current_device != NULL) - { - if(g_str_equal(address,((DeviceData*)(current_device->data))->address)) - { - found_in_list = TRUE; - break; - } - current_device=g_list_next(current_device); - } - if(!found_in_list) - { - DeviceData *dev= g_new0(DeviceData, 1); - dev->class = class; - dev->address = g_strdup(address); - dev->name = NULL; - audio_devices=g_list_prepend(audio_devices, dev); - } - } - g_static_mutex_unlock(&mutex); -} - -static void discovery_started(DBusGProxy *object, gpointer user_data) -{ - g_print("Signal: DiscoveryStarted()\n"); - discover_finish = 1; -} - -static void remote_name_updated(DBusGProxy *object, const char *address, char *name, gpointer user_data) -{ - g_static_mutex_lock(&mutex); - current_device=audio_devices; - while(current_device != NULL) - { - if(g_str_equal(address,((DeviceData*)(current_device->data))->address)) - { - ((DeviceData*)(current_device->data))->name=g_strdup(name); - break; - } - current_device=g_list_next(current_device); - } - g_static_mutex_unlock(&mutex); -} - -static void print_results() -{ - int i=0; - g_print("Final Scan results:\n"); - devices_no = g_list_length(audio_devices); - g_print("Number of audio devices: %d \n",devices_no); - if(devices_no==0 ) { - if(config ==1) show_no_devices(); - } else { - current_device=audio_devices; - while(current_device != NULL) - { - g_print("Device %d: Name: %s, Class: 0x%x, Address: %s\n",++i, - ((DeviceData*)(current_device->data))-> name, - ((DeviceData*)(current_device->data))-> class, - ((DeviceData*)(current_device->data))-> address); - current_device=g_list_next(current_device); - } - destroy_scan_window(); - if(config==1) { - destroy_scan_window(); - results_ui(); - } - // refresh_tree(); - } -} - - - -static void discovery_completed(DBusGProxy *object, gpointer user_data) -{ - g_print("Signal: DiscoveryCompleted()\n"); - discover_finish =2; - print_results(); -} - - - -void discover_devices(void) -{ - GError *error = NULL; - // g_type_init(); - /* g_log_set_always_fatal (G_LOG_LEVEL_WARNING); */ /* too invasive */ - bus = dbus_g_bus_get(DBUS_BUS_SYSTEM, &error); - if (error != NULL) - { - g_printerr("Connecting to system bus failed: %s\n", error->message); - g_error_free(error); - return; - } - obj = dbus_g_proxy_new_for_name(bus, "org.bluez", "/org/bluez/hci0", "org.bluez.Adapter"); - printf("bluetooth plugin - start discovery \n"); - dbus_g_object_register_marshaller(marshal_VOID__STRING_UINT_INT, G_TYPE_NONE, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_INT, G_TYPE_INVALID); - - dbus_g_proxy_add_signal(obj, "RemoteDeviceFound", G_TYPE_STRING, G_TYPE_UINT, G_TYPE_INT, G_TYPE_INVALID); - dbus_g_proxy_connect_signal(obj, "RemoteDeviceFound", G_CALLBACK(remote_device_found), bus, NULL); - - dbus_g_proxy_add_signal(obj, "DiscoveryStarted", G_TYPE_INVALID); - dbus_g_proxy_connect_signal(obj, "DiscoveryStarted", G_CALLBACK(discovery_started), bus, NULL); - - dbus_g_proxy_add_signal(obj, "DiscoveryCompleted", G_TYPE_INVALID); - dbus_g_proxy_connect_signal(obj, "DiscoveryCompleted", G_CALLBACK(discovery_completed), bus, NULL); - - dbus_g_object_register_marshaller(marshal_VOID__STRING_STRING, G_TYPE_NONE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID); - - dbus_g_proxy_add_signal(obj, "RemoteNameUpdated", G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID); - dbus_g_proxy_connect_signal(obj, "RemoteNameUpdated", G_CALLBACK(remote_name_updated), NULL, NULL); - - dbus_g_proxy_call(obj, "DiscoverDevices", &error, G_TYPE_INVALID, G_TYPE_INVALID); - if (error != NULL) - { - g_printerr("Failed to discover devices: %s\n", error->message); - g_error_free(error); - } - -} diff -Nru audacious-plugins-2.4.4/src/bluetooth/bluetooth.h audacious-plugins-3.2/src/bluetooth/bluetooth.h --- audacious-plugins-2.4.4/src/bluetooth/bluetooth.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/bluetooth/bluetooth.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -/* - * Audacious Bluetooth headset suport plugin - * - * Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "gui.h" -typedef struct { - guint class; - gchar* address; - gchar* name; -}DeviceData; - - - -void refresh_call(void); -void connect_call(void); -void play_call(void); -GList * audio_devices; -gint discover_finish ; -DBusGConnection * bus; -DBusGProxy * obj; -gchar *bonded_dev; -GMutex *bonded_dev_mutex; - diff -Nru audacious-plugins-2.4.4/src/bluetooth/dbus-glue.h audacious-plugins-3.2/src/bluetooth/dbus-glue.h --- audacious-plugins-2.4.4/src/bluetooth/dbus-glue.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/bluetooth/dbus-glue.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,813 +0,0 @@ -/* Generated by dbus-binding-tool; do not edit! */ - -#include -#include -#include - -G_BEGIN_DECLS - -#ifndef DBUS_GLIB_CLIENT_WRAPPERS_manager -#define DBUS_GLIB_CLIENT_WRAPPERS_manager - -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -manager_default_adapter (DBusGProxy *proxy, char ** OUT_arg0, GError **error) - -{ - return dbus_g_proxy_call (proxy, "DefaultAdapter", error, G_TYPE_INVALID, G_TYPE_STRING, OUT_arg0, G_TYPE_INVALID); -} - -typedef void (*manager_default_adapter_reply) (DBusGProxy *proxy, char * OUT_arg0, GError *error, gpointer userdata); - -static void -manager_default_adapter_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - char * OUT_arg0; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_STRING, &OUT_arg0, G_TYPE_INVALID); - (*(manager_default_adapter_reply)data->cb) (proxy, OUT_arg0, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -manager_default_adapter_async (DBusGProxy *proxy, manager_default_adapter_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "DefaultAdapter", manager_default_adapter_async_callback, stuff, g_free, G_TYPE_INVALID); -} -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -manager_find_adapter (DBusGProxy *proxy, const char * IN_pattern, char ** OUT_arg1, GError **error) - -{ - return dbus_g_proxy_call (proxy, "FindAdapter", error, G_TYPE_STRING, IN_pattern, G_TYPE_INVALID, G_TYPE_STRING, OUT_arg1, G_TYPE_INVALID); -} - -typedef void (*manager_find_adapter_reply) (DBusGProxy *proxy, char * OUT_arg1, GError *error, gpointer userdata); - -static void -manager_find_adapter_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - char * OUT_arg1; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_STRING, &OUT_arg1, G_TYPE_INVALID); - (*(manager_find_adapter_reply)data->cb) (proxy, OUT_arg1, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -manager_find_adapter_async (DBusGProxy *proxy, const char * IN_pattern, manager_find_adapter_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "FindAdapter", manager_find_adapter_async_callback, stuff, g_free, G_TYPE_STRING, IN_pattern, G_TYPE_INVALID); -} -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -manager_list_adapters (DBusGProxy *proxy, char *** OUT_arg0, GError **error) - -{ - return dbus_g_proxy_call (proxy, "ListAdapters", error, G_TYPE_INVALID, G_TYPE_STRV, OUT_arg0, G_TYPE_INVALID); -} - -typedef void (*manager_list_adapters_reply) (DBusGProxy *proxy, char * *OUT_arg0, GError *error, gpointer userdata); - -static void -manager_list_adapters_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - char ** OUT_arg0; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_STRV, &OUT_arg0, G_TYPE_INVALID); - (*(manager_list_adapters_reply)data->cb) (proxy, OUT_arg0, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -manager_list_adapters_async (DBusGProxy *proxy, manager_list_adapters_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "ListAdapters", manager_list_adapters_async_callback, stuff, g_free, G_TYPE_INVALID); -} -#endif /* defined DBUS_GLIB_CLIENT_WRAPPERS_manager */ - -#ifndef DBUS_GLIB_CLIENT_WRAPPERS_security -#define DBUS_GLIB_CLIENT_WRAPPERS_security - -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -security_register_default_passkey_agent (DBusGProxy *proxy, const char * IN_path, GError **error) - -{ - return dbus_g_proxy_call (proxy, "RegisterDefaultPasskeyAgent", error, G_TYPE_STRING, IN_path, G_TYPE_INVALID, G_TYPE_INVALID); -} - -typedef void (*security_register_default_passkey_agent_reply) (DBusGProxy *proxy, GError *error, gpointer userdata); - -static void -security_register_default_passkey_agent_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_INVALID); - (*(security_register_default_passkey_agent_reply)data->cb) (proxy, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -security_register_default_passkey_agent_async (DBusGProxy *proxy, const char * IN_path, security_register_default_passkey_agent_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "RegisterDefaultPasskeyAgent", security_register_default_passkey_agent_async_callback, stuff, g_free, G_TYPE_STRING, IN_path, G_TYPE_INVALID); -} -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -security_unregister_default_passkey_agent (DBusGProxy *proxy, const char * IN_path, GError **error) - -{ - return dbus_g_proxy_call (proxy, "UnregisterDefaultPasskeyAgent", error, G_TYPE_STRING, IN_path, G_TYPE_INVALID, G_TYPE_INVALID); -} - -typedef void (*security_unregister_default_passkey_agent_reply) (DBusGProxy *proxy, GError *error, gpointer userdata); - -static void -security_unregister_default_passkey_agent_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_INVALID); - (*(security_unregister_default_passkey_agent_reply)data->cb) (proxy, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -security_unregister_default_passkey_agent_async (DBusGProxy *proxy, const char * IN_path, security_unregister_default_passkey_agent_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "UnregisterDefaultPasskeyAgent", security_unregister_default_passkey_agent_async_callback, stuff, g_free, G_TYPE_STRING, IN_path, G_TYPE_INVALID); -} -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -security_register_passkey_agent (DBusGProxy *proxy, const char * IN_path, const char * IN_address, GError **error) - -{ - return dbus_g_proxy_call (proxy, "RegisterPasskeyAgent", error, G_TYPE_STRING, IN_path, G_TYPE_STRING, IN_address, G_TYPE_INVALID, G_TYPE_INVALID); -} - -typedef void (*security_register_passkey_agent_reply) (DBusGProxy *proxy, GError *error, gpointer userdata); - -static void -security_register_passkey_agent_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_INVALID); - (*(security_register_passkey_agent_reply)data->cb) (proxy, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -security_register_passkey_agent_async (DBusGProxy *proxy, const char * IN_path, const char * IN_address, security_register_passkey_agent_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "RegisterPasskeyAgent", security_register_passkey_agent_async_callback, stuff, g_free, G_TYPE_STRING, IN_path, G_TYPE_STRING, IN_address, G_TYPE_INVALID); -} -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -security_unregister_passkey_agent (DBusGProxy *proxy, const char * IN_path, const char * IN_address, GError **error) - -{ - return dbus_g_proxy_call (proxy, "UnregisterPasskeyAgent", error, G_TYPE_STRING, IN_path, G_TYPE_STRING, IN_address, G_TYPE_INVALID, G_TYPE_INVALID); -} - -typedef void (*security_unregister_passkey_agent_reply) (DBusGProxy *proxy, GError *error, gpointer userdata); - -static void -security_unregister_passkey_agent_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_INVALID); - (*(security_unregister_passkey_agent_reply)data->cb) (proxy, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -security_unregister_passkey_agent_async (DBusGProxy *proxy, const char * IN_path, const char * IN_address, security_unregister_passkey_agent_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "UnregisterPasskeyAgent", security_unregister_passkey_agent_async_callback, stuff, g_free, G_TYPE_STRING, IN_path, G_TYPE_STRING, IN_address, G_TYPE_INVALID); -} -#endif /* defined DBUS_GLIB_CLIENT_WRAPPERS_security */ - -#ifndef DBUS_GLIB_CLIENT_WRAPPERS_adapter -#define DBUS_GLIB_CLIENT_WRAPPERS_adapter - -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -adapter_get_address (DBusGProxy *proxy, char ** OUT_arg0, GError **error) - -{ - return dbus_g_proxy_call (proxy, "GetAddress", error, G_TYPE_INVALID, G_TYPE_STRING, OUT_arg0, G_TYPE_INVALID); -} - -typedef void (*adapter_get_address_reply) (DBusGProxy *proxy, char * OUT_arg0, GError *error, gpointer userdata); - -static void -adapter_get_address_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - char * OUT_arg0; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_STRING, &OUT_arg0, G_TYPE_INVALID); - (*(adapter_get_address_reply)data->cb) (proxy, OUT_arg0, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -adapter_get_address_async (DBusGProxy *proxy, adapter_get_address_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "GetAddress", adapter_get_address_async_callback, stuff, g_free, G_TYPE_INVALID); -} -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -adapter_get_mode (DBusGProxy *proxy, char ** OUT_arg0, GError **error) - -{ - return dbus_g_proxy_call (proxy, "GetMode", error, G_TYPE_INVALID, G_TYPE_STRING, OUT_arg0, G_TYPE_INVALID); -} - -typedef void (*adapter_get_mode_reply) (DBusGProxy *proxy, char * OUT_arg0, GError *error, gpointer userdata); - -static void -adapter_get_mode_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - char * OUT_arg0; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_STRING, &OUT_arg0, G_TYPE_INVALID); - (*(adapter_get_mode_reply)data->cb) (proxy, OUT_arg0, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -adapter_get_mode_async (DBusGProxy *proxy, adapter_get_mode_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "GetMode", adapter_get_mode_async_callback, stuff, g_free, G_TYPE_INVALID); -} -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -adapter_get_name (DBusGProxy *proxy, char ** OUT_arg0, GError **error) - -{ - return dbus_g_proxy_call (proxy, "GetName", error, G_TYPE_INVALID, G_TYPE_STRING, OUT_arg0, G_TYPE_INVALID); -} - -typedef void (*adapter_get_name_reply) (DBusGProxy *proxy, char * OUT_arg0, GError *error, gpointer userdata); - -static void -adapter_get_name_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - char * OUT_arg0; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_STRING, &OUT_arg0, G_TYPE_INVALID); - (*(adapter_get_name_reply)data->cb) (proxy, OUT_arg0, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -adapter_get_name_async (DBusGProxy *proxy, adapter_get_name_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "GetName", adapter_get_name_async_callback, stuff, g_free, G_TYPE_INVALID); -} -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -adapter_get_major_class (DBusGProxy *proxy, char ** OUT_arg0, GError **error) - -{ - return dbus_g_proxy_call (proxy, "GetMajorClass", error, G_TYPE_INVALID, G_TYPE_STRING, OUT_arg0, G_TYPE_INVALID); -} - -typedef void (*adapter_get_major_class_reply) (DBusGProxy *proxy, char * OUT_arg0, GError *error, gpointer userdata); - -static void -adapter_get_major_class_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - char * OUT_arg0; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_STRING, &OUT_arg0, G_TYPE_INVALID); - (*(adapter_get_major_class_reply)data->cb) (proxy, OUT_arg0, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -adapter_get_major_class_async (DBusGProxy *proxy, adapter_get_major_class_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "GetMajorClass", adapter_get_major_class_async_callback, stuff, g_free, G_TYPE_INVALID); -} -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -adapter_get_minor_class (DBusGProxy *proxy, char ** OUT_arg0, GError **error) - -{ - return dbus_g_proxy_call (proxy, "GetMinorClass", error, G_TYPE_INVALID, G_TYPE_STRING, OUT_arg0, G_TYPE_INVALID); -} - -typedef void (*adapter_get_minor_class_reply) (DBusGProxy *proxy, char * OUT_arg0, GError *error, gpointer userdata); - -static void -adapter_get_minor_class_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - char * OUT_arg0; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_STRING, &OUT_arg0, G_TYPE_INVALID); - (*(adapter_get_minor_class_reply)data->cb) (proxy, OUT_arg0, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -adapter_get_minor_class_async (DBusGProxy *proxy, adapter_get_minor_class_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "GetMinorClass", adapter_get_minor_class_async_callback, stuff, g_free, G_TYPE_INVALID); -} -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -adapter_list_remote_devices (DBusGProxy *proxy, char *** OUT_arg0, GError **error) - -{ - return dbus_g_proxy_call (proxy, "ListRemoteDevices", error, G_TYPE_INVALID, G_TYPE_STRV, OUT_arg0, G_TYPE_INVALID); -} - -typedef void (*adapter_list_remote_devices_reply) (DBusGProxy *proxy, char * *OUT_arg0, GError *error, gpointer userdata); - -static void -adapter_list_remote_devices_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - char ** OUT_arg0; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_STRV, &OUT_arg0, G_TYPE_INVALID); - (*(adapter_list_remote_devices_reply)data->cb) (proxy, OUT_arg0, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -adapter_list_remote_devices_async (DBusGProxy *proxy, adapter_list_remote_devices_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "ListRemoteDevices", adapter_list_remote_devices_async_callback, stuff, g_free, G_TYPE_INVALID); -} -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -adapter_list_connections (DBusGProxy *proxy, char *** OUT_arg0, GError **error) - -{ - return dbus_g_proxy_call (proxy, "ListConnections", error, G_TYPE_INVALID, G_TYPE_STRV, OUT_arg0, G_TYPE_INVALID); -} - -typedef void (*adapter_list_connections_reply) (DBusGProxy *proxy, char * *OUT_arg0, GError *error, gpointer userdata); - -static void -adapter_list_connections_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - char ** OUT_arg0; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_STRV, &OUT_arg0, G_TYPE_INVALID); - (*(adapter_list_connections_reply)data->cb) (proxy, OUT_arg0, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -adapter_list_connections_async (DBusGProxy *proxy, adapter_list_connections_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "ListConnections", adapter_list_connections_async_callback, stuff, g_free, G_TYPE_INVALID); -} -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -adapter_list_bondings (DBusGProxy *proxy, char *** OUT_arg0, GError **error) - -{ - return dbus_g_proxy_call (proxy, "ListBondings", error, G_TYPE_INVALID, G_TYPE_STRV, OUT_arg0, G_TYPE_INVALID); -} - -typedef void (*adapter_list_bondings_reply) (DBusGProxy *proxy, char * *OUT_arg0, GError *error, gpointer userdata); - -static void -adapter_list_bondings_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - char ** OUT_arg0; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_STRV, &OUT_arg0, G_TYPE_INVALID); - (*(adapter_list_bondings_reply)data->cb) (proxy, OUT_arg0, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -adapter_list_bondings_async (DBusGProxy *proxy, adapter_list_bondings_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "ListBondings", adapter_list_bondings_async_callback, stuff, g_free, G_TYPE_INVALID); -} -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -adapter_list_trusts (DBusGProxy *proxy, char *** OUT_arg0, GError **error) - -{ - return dbus_g_proxy_call (proxy, "ListTrusts", error, G_TYPE_INVALID, G_TYPE_STRV, OUT_arg0, G_TYPE_INVALID); -} - -typedef void (*adapter_list_trusts_reply) (DBusGProxy *proxy, char * *OUT_arg0, GError *error, gpointer userdata); - -static void -adapter_list_trusts_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - char ** OUT_arg0; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_STRV, &OUT_arg0, G_TYPE_INVALID); - (*(adapter_list_trusts_reply)data->cb) (proxy, OUT_arg0, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -adapter_list_trusts_async (DBusGProxy *proxy, adapter_list_trusts_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "ListTrusts", adapter_list_trusts_async_callback, stuff, g_free, G_TYPE_INVALID); -} -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -adapter_disconnect_remote_device (DBusGProxy *proxy, const char * IN_address, GError **error) - -{ - return dbus_g_proxy_call (proxy, "DisconnectRemoteDevice", error, G_TYPE_STRING, IN_address, G_TYPE_INVALID, G_TYPE_INVALID); -} - -typedef void (*adapter_disconnect_remote_device_reply) (DBusGProxy *proxy, GError *error, gpointer userdata); - -static void -adapter_disconnect_remote_device_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_INVALID); - (*(adapter_disconnect_remote_device_reply)data->cb) (proxy, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -adapter_disconnect_remote_device_async (DBusGProxy *proxy, const char * IN_address, adapter_disconnect_remote_device_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "DisconnectRemoteDevice", adapter_disconnect_remote_device_async_callback, stuff, g_free, G_TYPE_STRING, IN_address, G_TYPE_INVALID); -} -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -adapter_create_bonding (DBusGProxy *proxy, const char * IN_address, GError **error) - -{ - return dbus_g_proxy_call (proxy, "CreateBonding", error, G_TYPE_STRING, IN_address, G_TYPE_INVALID, G_TYPE_INVALID); -} - -typedef void (*adapter_create_bonding_reply) (DBusGProxy *proxy, GError *error, gpointer userdata); - -static void -adapter_create_bonding_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_INVALID); - (*(adapter_create_bonding_reply)data->cb) (proxy, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -adapter_create_bonding_async (DBusGProxy *proxy, const char * IN_address, adapter_create_bonding_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "CreateBonding", adapter_create_bonding_async_callback, stuff, g_free, G_TYPE_STRING, IN_address, G_TYPE_INVALID); -} -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -adapter_remove_bonding (DBusGProxy *proxy, const char * IN_address, GError **error) - -{ - return dbus_g_proxy_call (proxy, "RemoveBonding", error, G_TYPE_STRING, IN_address, G_TYPE_INVALID, G_TYPE_INVALID); -} - -typedef void (*adapter_remove_bonding_reply) (DBusGProxy *proxy, GError *error, gpointer userdata); - -static void -adapter_remove_bonding_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_INVALID); - (*(adapter_remove_bonding_reply)data->cb) (proxy, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -adapter_remove_bonding_async (DBusGProxy *proxy, const char * IN_address, adapter_remove_bonding_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "RemoveBonding", adapter_remove_bonding_async_callback, stuff, g_free, G_TYPE_STRING, IN_address, G_TYPE_INVALID); -} -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -adapter_set_trusted (DBusGProxy *proxy, const char * IN_address, GError **error) - -{ - return dbus_g_proxy_call (proxy, "SetTrusted", error, G_TYPE_STRING, IN_address, G_TYPE_INVALID, G_TYPE_INVALID); -} - -typedef void (*adapter_set_trusted_reply) (DBusGProxy *proxy, GError *error, gpointer userdata); - -static void -adapter_set_trusted_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_INVALID); - (*(adapter_set_trusted_reply)data->cb) (proxy, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -adapter_set_trusted_async (DBusGProxy *proxy, const char * IN_address, adapter_set_trusted_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "SetTrusted", adapter_set_trusted_async_callback, stuff, g_free, G_TYPE_STRING, IN_address, G_TYPE_INVALID); -} -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -adapter_remove_trust (DBusGProxy *proxy, const char * IN_address, GError **error) - -{ - return dbus_g_proxy_call (proxy, "RemoveTrust", error, G_TYPE_STRING, IN_address, G_TYPE_INVALID, G_TYPE_INVALID); -} - -typedef void (*adapter_remove_trust_reply) (DBusGProxy *proxy, GError *error, gpointer userdata); - -static void -adapter_remove_trust_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_INVALID); - (*(adapter_remove_trust_reply)data->cb) (proxy, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -adapter_remove_trust_async (DBusGProxy *proxy, const char * IN_address, adapter_remove_trust_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "RemoveTrust", adapter_remove_trust_async_callback, stuff, g_free, G_TYPE_STRING, IN_address, G_TYPE_INVALID); -} -#endif /* defined DBUS_GLIB_CLIENT_WRAPPERS_adapter */ - -G_END_DECLS diff -Nru audacious-plugins-2.4.4/src/bluetooth/gui.c audacious-plugins-3.2/src/bluetooth/gui.c --- audacious-plugins-2.4.4/src/bluetooth/gui.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/bluetooth/gui.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,314 +0,0 @@ -/* - * Audacious Bluetooth headset suport plugin - * - * Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "gui.h" -#include "bluetooth.h" - -static GtkWidget *window = NULL; -static GtkTreeModel *model; -static GtkWidget *mainbox; -static GtkWidget *hbox_top; -static GtkWidget *hbox_bottom; -static GtkWidget *box_about; -static GtkWidget *box_about_left; -static GtkWidget *box_about_right; -static GtkWidget *headset_frame; -static GtkWidget *about_frame; -static GtkWidget *refresh; -static GtkWidget *connect_button; -static GtkWidget *close_button; -static GtkWidget *treeview; -static GtkWidget *label_p; -static GtkWidget *label_c; -static GtkWidget *label_a; -static GtkWidget *label_prod; -static GtkWidget *label_class; -static GtkWidget *label_address; -static GList * dev = NULL; -gchar *status = NULL; -enum{ - COLUMN_PRODUCER, - NUM_COLUMNS -}; - -static GtkTreeModel * create_model(void) -{ - GtkListStore *store; - GtkTreeIter iter; - /* create list store */ - store = gtk_list_store_new(NUM_COLUMNS, - G_TYPE_STRING); - dev = audio_devices; - if(dev == NULL) { - /*if we are scanning for devices now then print the Scanning message, - * else we print the "no devices found message */ - if(discover_finish == 1) - /*we are scanning*/ - status = g_strdup_printf("Scanning"); - else - status = g_strdup_printf("No devices found!"); - /* add the status to the list */ - gtk_list_store_append(store,&iter); - gtk_list_store_set(store,&iter, COLUMN_PRODUCER,status,-1); - return GTK_TREE_MODEL(store); - } - while(dev != NULL) - { - gtk_list_store_append(store,&iter); - gtk_list_store_set(store,&iter, COLUMN_PRODUCER, - ((DeviceData*)(dev->data))-> name,-1); - dev = g_list_next(dev); - } - - return GTK_TREE_MODEL(store); -} -static GtkTreeModel * rebuild_model(void) -{ - - GtkListStore *store; - GtkTreeIter iter; - gint dev_no=0; - GList *dev; - if(!window) - return NULL; - /* create list store */ - store = gtk_list_store_new(NUM_COLUMNS, - G_TYPE_STRING); - - /*add inf to test_data from audio_devices */ - dev_no = g_list_length(audio_devices); - dev = audio_devices; - if(dev == NULL || discover_finish == 0) { - /*if we are scanning for devices now then print the Scanning message, - * else we print the "no devices found message */ - printf("discover: %d\n",discover_finish); - if(discover_finish == 1) { - /*we are scanning*/ - status = g_strdup_printf("Scanning"); - } else - status = g_strdup_printf("No devices found!"); - /* add the status to the list */ - gtk_list_store_append(store,&iter); - gtk_list_store_set(store,&iter, COLUMN_PRODUCER,status,-1); - gtk_label_set_text(GTK_LABEL(label_prod),status); - return GTK_TREE_MODEL(store); - } - - /* add data to the list store */ - while(dev != NULL) - { - gtk_list_store_append(store,&iter); - gtk_list_store_set(store,&iter, COLUMN_PRODUCER, - ((DeviceData*)(dev->data))-> name,-1); - dev = g_list_next(dev); - } - /*set the labels */ - /* temp = g_strdup_printf("0x%x",((DeviceData*)(dev->data))->class); */ - gtk_label_set_text(GTK_LABEL(label_prod),((DeviceData*)(dev->data))->name); - /* gtk_label_set_text(GTK_LABEL(label_class),temp); */ - gtk_label_set_text(GTK_LABEL(label_address),((DeviceData*)(dev->data))->address); - /* g_free(temp); */ - return GTK_TREE_MODEL(store); - -} - - -void refresh_tree() -{ - if(!window) - return; - model = rebuild_model(); - gtk_tree_view_set_model(GTK_TREE_VIEW(treeview),GTK_TREE_MODEL(model)); -} - - -static void add_columns(GtkTreeView *treeview) -{ - GtkCellRenderer *renderer; - GtkTreeViewColumn *column; - // GtkTreeModel *model = gtk_tree_view_get_model (treeview); - - /* column for producer */ - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes (_("Producer"), - renderer, - "text", - COLUMN_PRODUCER, - NULL); - gtk_tree_view_column_set_sort_column_id (column,COLUMN_PRODUCER); - gtk_tree_view_append_column (treeview, column); - -} - -void close_call(void){ - printf("close callback \n"); - gtk_widget_destroy (window); - window = NULL; -} -void select_row(GtkWidget *treeview){ - - GtkTreeIter iter; - gint sel; - gchar *temp; - gint i; - printf("select\n"); - GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(treeview)); - if(gtk_tree_selection_get_selected (selection, NULL,&iter)){ - GtkTreePath *path; - path = gtk_tree_model_get_path (model, &iter); - sel = gtk_tree_path_get_indices (path)[0]; - printf("i=%d\n",sel); - selected_dev = audio_devices; - for(i=0;idata))->class); - gtk_label_set_text(GTK_LABEL(label_prod),((DeviceData*)(selected_dev->data))->name); - gtk_label_set_text(GTK_LABEL(label_class),temp); - gtk_label_set_text(GTK_LABEL(label_address),((DeviceData*)(selected_dev->data))->address); - gtk_tree_path_free (path); - g_free(temp); - }else - gtk_label_set_text(GTK_LABEL(label_prod),status); - g_free(status); - gtk_widget_set_sensitive(connect_button,TRUE); - } -} - -void refresh_resultsui(){ - gtk_widget_destroy (window); - window = NULL; -selected_dev = NULL; - refresh_call(); -} - - -void results_ui() -{ - gchar *temp; - if (!window) - { - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - g_signal_connect (window, "destroy",G_CALLBACK (gtk_widget_destroyed), &window); - - mainbox = gtk_vbox_new(FALSE,4); - gtk_container_set_border_width (GTK_CONTAINER (mainbox), 4); - gtk_container_add (GTK_CONTAINER (window), mainbox); - - hbox_top = gtk_hbox_new(FALSE,4); - gtk_container_set_border_width (GTK_CONTAINER(hbox_top), 4); - gtk_container_add (GTK_CONTAINER (mainbox), hbox_top); - - hbox_bottom = gtk_hbox_new(FALSE,4); - gtk_container_set_border_width (GTK_CONTAINER (hbox_bottom), 4); - gtk_container_add (GTK_CONTAINER (mainbox), hbox_bottom); - - headset_frame = gtk_frame_new(_("Available Headsets")); - gtk_container_add (GTK_CONTAINER (hbox_top), headset_frame); - - about_frame = gtk_frame_new(_("Current Headset")); - gtk_container_add(GTK_CONTAINER(hbox_top),about_frame); - - refresh = gtk_button_new_with_mnemonic (_("_Refresh")); - g_signal_connect (refresh, "clicked",G_CALLBACK (refresh_resultsui), NULL); - gtk_container_add(GTK_CONTAINER(hbox_bottom),refresh); - - connect_button = gtk_button_new_with_mnemonic(_("_Connect")); - g_signal_connect(connect_button,"clicked",G_CALLBACK (connect_call), NULL); - gtk_container_add(GTK_CONTAINER(hbox_bottom),connect_button); - gtk_widget_set_sensitive(connect_button,FALSE); - - - close_button = gtk_button_new_with_mnemonic(_("_Close")); - g_signal_connect(close_button,"clicked",G_CALLBACK (close_call),NULL); - gtk_container_add(GTK_CONTAINER(hbox_bottom),close_button); - /* create tree model */ - model = create_model (); - - /* create tree view */ - treeview = gtk_tree_view_new_with_model (model); - gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (treeview), TRUE); - gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),GTK_SELECTION_SINGLE); - g_object_unref (model); - gtk_container_add (GTK_CONTAINER (headset_frame), treeview); - /* add columns to the tree view */ - add_columns (GTK_TREE_VIEW (treeview)); - - g_signal_connect(treeview,"cursor-changed",G_CALLBACK(select_row),treeview); - - - box_about = gtk_hbox_new(FALSE,4); - gtk_container_set_border_width (GTK_CONTAINER (box_about), 4); - gtk_container_add (GTK_CONTAINER (about_frame), box_about); - - /*about box left - vbox */ - - box_about_left = gtk_vbox_new(FALSE,4); - gtk_container_set_border_width (GTK_CONTAINER (box_about_left), 4); - gtk_container_add (GTK_CONTAINER (box_about), box_about_left); - - /*about box right - vbox */ - box_about_right = gtk_vbox_new(TRUE,4); - gtk_container_set_border_width (GTK_CONTAINER (box_about_right), 4); - gtk_container_add (GTK_CONTAINER (box_about), box_about_right); - - /* Left labels */ - label_p = gtk_label_new(_("Name:")); - gtk_container_add(GTK_CONTAINER(box_about_left),label_p); - - label_c = gtk_label_new(_("Class")); - gtk_container_add(GTK_CONTAINER(box_about_left),label_c); - - - label_a = gtk_label_new(_("Address:")); - gtk_container_add(GTK_CONTAINER(box_about_left),label_a); - - - /*right labels */ - label_prod = gtk_label_new(" "); - gtk_container_add(GTK_CONTAINER(box_about_right),label_prod); - - label_class = gtk_label_new(" "); - gtk_container_add(GTK_CONTAINER(box_about_right),label_class); - - - label_address = gtk_label_new(" "); - gtk_container_add(GTK_CONTAINER(box_about_right),label_address); - - dev = audio_devices; - if(dev != NULL) { - temp = g_strdup_printf("0x%x",((DeviceData*)(dev->data))->class); - gtk_label_set_text(GTK_LABEL(label_prod),((DeviceData*)(dev->data))->name); - gtk_label_set_text(GTK_LABEL(label_class),temp); - gtk_label_set_text(GTK_LABEL(label_address),((DeviceData*)(dev->data))->address); - g_free(temp); - } - - gtk_window_set_default_size (GTK_WINDOW (window), 460, 150); - if (!GTK_WIDGET_VISIBLE (window)) - gtk_widget_show_all (window); - else - { - gtk_widget_destroy (window); - window = NULL; - } - // return window; - } - // return window; -} - diff -Nru audacious-plugins-2.4.4/src/bluetooth/gui.h audacious-plugins-3.2/src/bluetooth/gui.h --- audacious-plugins-2.4.4/src/bluetooth/gui.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/bluetooth/gui.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -/* - * Audacious Bluetooth headset suport plugin - * - * Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include - -GList *selected_dev ; -void refresh_tree(void); -void results_ui(); -void close_call(void); - - diff -Nru audacious-plugins-2.4.4/src/bluetooth/Makefile audacious-plugins-3.2/src/bluetooth/Makefile --- audacious-plugins-2.4.4/src/bluetooth/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/bluetooth/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -PLUGIN = bluetooth${PLUGIN_SUFFIX} - -SRCS = bluetooth.c gui.c marshal.c scan_gui.c agent.c -include ../../buildsys.mk -include ../../extra.mk - -pre-depend: marshal.h - -marshal.h: - glib-genmarshal --prefix=marshal --header marshal.list > $@ -marshal.c: - glib-genmarshal --prefix=marshal --body marshal.list > $@ - -plugindir := ${plugindir}/${GENERAL_PLUGIN_DIR} -CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${BEEP_DEFINES} ${MOWGLI_CFLAGS} ${DBUS_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${DBUS_GLIB_CFLAGS} ${PANGO_CFLAGS} -I../../intl -I../.. ${BLUEZ_CFLAGS} -LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${PANGO_LIBS} ${BLUEZ_LIBS} - diff -Nru audacious-plugins-2.4.4/src/bluetooth/marshal.list audacious-plugins-3.2/src/bluetooth/marshal.list --- audacious-plugins-2.4.4/src/bluetooth/marshal.list 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/bluetooth/marshal.list 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -VOID:STRING,UINT,INT -VOID:STRING,STRING diff -Nru audacious-plugins-2.4.4/src/bluetooth/passkey-agent-glue.h audacious-plugins-3.2/src/bluetooth/passkey-agent-glue.h --- audacious-plugins-2.4.4/src/bluetooth/passkey-agent-glue.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/bluetooth/passkey-agent-glue.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,264 +0,0 @@ -/* Generated by dbus-binding-tool; do not edit! */ - - -#ifndef __dbus_glib_marshal_passkey_agent_MARSHAL_H__ -#define __dbus_glib_marshal_passkey_agent_MARSHAL_H__ - -#include - -G_BEGIN_DECLS - -#ifdef G_ENABLE_DEBUG -#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v) -#define g_marshal_value_peek_char(v) g_value_get_char (v) -#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v) -#define g_marshal_value_peek_int(v) g_value_get_int (v) -#define g_marshal_value_peek_uint(v) g_value_get_uint (v) -#define g_marshal_value_peek_long(v) g_value_get_long (v) -#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v) -#define g_marshal_value_peek_int64(v) g_value_get_int64 (v) -#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v) -#define g_marshal_value_peek_enum(v) g_value_get_enum (v) -#define g_marshal_value_peek_flags(v) g_value_get_flags (v) -#define g_marshal_value_peek_float(v) g_value_get_float (v) -#define g_marshal_value_peek_double(v) g_value_get_double (v) -#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v) -#define g_marshal_value_peek_param(v) g_value_get_param (v) -#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v) -#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v) -#define g_marshal_value_peek_object(v) g_value_get_object (v) -#else /* !G_ENABLE_DEBUG */ -/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API. - * Do not access GValues directly in your code. Instead, use the - * g_value_get_*() functions - */ -#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int -#define g_marshal_value_peek_char(v) (v)->data[0].v_int -#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint -#define g_marshal_value_peek_int(v) (v)->data[0].v_int -#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint -#define g_marshal_value_peek_long(v) (v)->data[0].v_long -#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong -#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64 -#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64 -#define g_marshal_value_peek_enum(v) (v)->data[0].v_long -#define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong -#define g_marshal_value_peek_float(v) (v)->data[0].v_float -#define g_marshal_value_peek_double(v) (v)->data[0].v_double -#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer -#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer -#endif /* !G_ENABLE_DEBUG */ - - -/* BOOLEAN:STRING,STRING,POINTER (/tmp/dbus-binding-tool-c-marshallers.70BCEU:1) */ -extern void dbus_glib_marshal_passkey_agent_BOOLEAN__STRING_STRING_POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); -void -dbus_glib_marshal_passkey_agent_BOOLEAN__STRING_STRING_POINTER (GClosure *closure, - GValue *return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint G_GNUC_UNUSED, - gpointer marshal_data) -{ - typedef gboolean (*GMarshalFunc_BOOLEAN__STRING_STRING_POINTER) (gpointer data1, - gpointer arg_1, - gpointer arg_2, - gpointer arg_3, - gpointer data2); - register GMarshalFunc_BOOLEAN__STRING_STRING_POINTER callback; - register GCClosure *cc = (GCClosure*) closure; - register gpointer data1, data2; - gboolean v_return; - - g_return_if_fail (return_value != NULL); - g_return_if_fail (n_param_values == 4); - - if (G_CCLOSURE_SWAP_DATA (closure)) - { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } - else - { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = (GMarshalFunc_BOOLEAN__STRING_STRING_POINTER) (marshal_data ? marshal_data : cc->callback); - - v_return = callback (data1, - g_marshal_value_peek_string (param_values + 1), - g_marshal_value_peek_string (param_values + 2), - g_marshal_value_peek_pointer (param_values + 3), - data2); - - g_value_set_boolean (return_value, v_return); -} - -/* NONE:STRING,STRING,POINTER (/tmp/dbus-binding-tool-c-marshallers.70BCEU:2) */ -extern void dbus_glib_marshal_passkey_agent_VOID__STRING_STRING_POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); -void -dbus_glib_marshal_passkey_agent_VOID__STRING_STRING_POINTER (GClosure *closure, - GValue *return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint G_GNUC_UNUSED, - gpointer marshal_data) -{ - typedef void (*GMarshalFunc_VOID__STRING_STRING_POINTER) (gpointer data1, - gpointer arg_1, - gpointer arg_2, - gpointer arg_3, - gpointer data2); - register GMarshalFunc_VOID__STRING_STRING_POINTER callback; - register GCClosure *cc = (GCClosure*) closure; - register gpointer data1, data2; - - g_return_if_fail (n_param_values == 4); - - if (G_CCLOSURE_SWAP_DATA (closure)) - { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } - else - { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = (GMarshalFunc_VOID__STRING_STRING_POINTER) (marshal_data ? marshal_data : cc->callback); - - callback (data1, - g_marshal_value_peek_string (param_values + 1), - g_marshal_value_peek_string (param_values + 2), - g_marshal_value_peek_pointer (param_values + 3), - data2); -} -#define dbus_glib_marshal_passkey_agent_NONE__STRING_STRING_POINTER dbus_glib_marshal_passkey_agent_VOID__STRING_STRING_POINTER - -/* NONE:STRING,STRING,STRING,POINTER (/tmp/dbus-binding-tool-c-marshallers.70BCEU:3) */ -extern void dbus_glib_marshal_passkey_agent_VOID__STRING_STRING_STRING_POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); -void -dbus_glib_marshal_passkey_agent_VOID__STRING_STRING_STRING_POINTER (GClosure *closure, - GValue *return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint G_GNUC_UNUSED, - gpointer marshal_data) -{ - typedef void (*GMarshalFunc_VOID__STRING_STRING_STRING_POINTER) (gpointer data1, - gpointer arg_1, - gpointer arg_2, - gpointer arg_3, - gpointer arg_4, - gpointer data2); - register GMarshalFunc_VOID__STRING_STRING_STRING_POINTER callback; - register GCClosure *cc = (GCClosure*) closure; - register gpointer data1, data2; - - g_return_if_fail (n_param_values == 5); - - if (G_CCLOSURE_SWAP_DATA (closure)) - { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } - else - { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = (GMarshalFunc_VOID__STRING_STRING_STRING_POINTER) (marshal_data ? marshal_data : cc->callback); - - callback (data1, - g_marshal_value_peek_string (param_values + 1), - g_marshal_value_peek_string (param_values + 2), - g_marshal_value_peek_string (param_values + 3), - g_marshal_value_peek_pointer (param_values + 4), - data2); -} -#define dbus_glib_marshal_passkey_agent_NONE__STRING_STRING_STRING_POINTER dbus_glib_marshal_passkey_agent_VOID__STRING_STRING_STRING_POINTER - -/* BOOLEAN:POINTER (/tmp/dbus-binding-tool-c-marshallers.70BCEU:4) */ -extern void dbus_glib_marshal_passkey_agent_BOOLEAN__POINTER (GClosure *closure, - GValue *return_value, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint, - gpointer marshal_data); -void -dbus_glib_marshal_passkey_agent_BOOLEAN__POINTER (GClosure *closure, - GValue *return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue *param_values, - gpointer invocation_hint G_GNUC_UNUSED, - gpointer marshal_data) -{ - typedef gboolean (*GMarshalFunc_BOOLEAN__POINTER) (gpointer data1, - gpointer arg_1, - gpointer data2); - register GMarshalFunc_BOOLEAN__POINTER callback; - register GCClosure *cc = (GCClosure*) closure; - register gpointer data1, data2; - gboolean v_return; - - g_return_if_fail (return_value != NULL); - g_return_if_fail (n_param_values == 2); - - if (G_CCLOSURE_SWAP_DATA (closure)) - { - data1 = closure->data; - data2 = g_value_peek_pointer (param_values + 0); - } - else - { - data1 = g_value_peek_pointer (param_values + 0); - data2 = closure->data; - } - callback = (GMarshalFunc_BOOLEAN__POINTER) (marshal_data ? marshal_data : cc->callback); - - v_return = callback (data1, - g_marshal_value_peek_pointer (param_values + 1), - data2); - - g_value_set_boolean (return_value, v_return); -} - -G_END_DECLS - -#endif /* __dbus_glib_marshal_passkey_agent_MARSHAL_H__ */ - -#include -static const DBusGMethodInfo dbus_glib_passkey_agent_methods[] = { - { (GCallback) passkey_agent_request, dbus_glib_marshal_passkey_agent_NONE__STRING_STRING_POINTER, 0 }, - { (GCallback) passkey_agent_confirm, dbus_glib_marshal_passkey_agent_NONE__STRING_STRING_STRING_POINTER, 68 }, - { (GCallback) passkey_agent_cancel, dbus_glib_marshal_passkey_agent_BOOLEAN__STRING_STRING_POINTER, 133 }, - { (GCallback) passkey_agent_release, dbus_glib_marshal_passkey_agent_BOOLEAN__POINTER, 187 }, -}; - -const DBusGObjectInfo dbus_glib_passkey_agent_object_info = { - 0, - dbus_glib_passkey_agent_methods, - 4, -"org.bluez.PasskeyAgent\0Request\0A\0path\0I\0s\0address\0I\0s\0arg2\0O\0F\0N\0s\0\0org.bluez.PasskeyAgent\0Confirm\0A\0path\0I\0s\0address\0I\0s\0value\0I\0s\0\0org.bluez.PasskeyAgent\0Cancel\0S\0path\0I\0s\0address\0I\0s\0\0org.bluez.PasskeyAgent\0Release\0S\0\0\0", -"\0", -"\0" -}; - diff -Nru audacious-plugins-2.4.4/src/bluetooth/scan_gui.c audacious-plugins-3.2/src/bluetooth/scan_gui.c --- audacious-plugins-2.4.4/src/bluetooth/scan_gui.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/bluetooth/scan_gui.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,167 +0,0 @@ -/* - * Audacious Bluetooth headset suport plugin - * - * Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "scan_gui.h" -#include "bluetooth.h" -#include "agent.h" -static GtkWidget *window = NULL; -static GtkWidget *winbox; -static GtkWidget *scanbox; -static GtkWidget *buttonsbox; -static GtkWidget *progressbox; -static GtkWidget *bluetooth_img; -static GtkWidget *scan_label; -static GtkWidget *progress_bar; -static GtkWidget *rescan_buttton; -static GtkWidget *close_button; -static gint usage=0; -void show_pairing_ok(void); -gpointer progress() -{ - - for(;;){ - if(window){ - gtk_progress_bar_pulse(GTK_PROGRESS_BAR(progress_bar)); - } - sleep(1); - if(usage == 0){ - if(discover_finish == 2 ) { - if(window){ - gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress_bar),1); - gtk_widget_set_sensitive(rescan_buttton,TRUE); - } - return 0; - } - }else - { - if(bonding_finish == 1 ) { - if(window){ - gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress_bar),1); - show_pairing_ok(); - gtk_widget_set_sensitive(rescan_buttton,TRUE); - - } - return 0; - } - } - } - return 0; -} - -void show_pairing_ok() -{ - if(window ){ - gtk_label_set_text(GTK_LABEL(scan_label),_("Bonding finish!")); - } -} - -void show_no_devices() -{ - if(window ){ - gtk_label_set_text(GTK_LABEL(scan_label),_("No devices found!")); - } -} -void destroy_scan_window() -{ - gtk_widget_hide(window); -} -void close_window(void) -{ - printf("scan_gui close callback \n"); - gtk_widget_destroy (window); - window = NULL; -} -void show_scan(gint use) -{ - GThread *th1; - gchar *filename; - usage = use; - /* - * 0 - discovery - * 1 - pairing - */ - if (!window) - { - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - g_signal_connect (window, "destroy",G_CALLBACK (gtk_widget_destroyed), &window); - - winbox = gtk_vbox_new(FALSE,2); - gtk_container_set_border_width (GTK_CONTAINER (winbox), 2); - gtk_container_add (GTK_CONTAINER (window), winbox); - - scanbox = gtk_hbox_new(FALSE,2); - gtk_container_set_border_width(GTK_CONTAINER(scanbox),2); - gtk_container_add(GTK_CONTAINER(winbox),scanbox); - - progressbox = gtk_vbox_new(FALSE,2); - gtk_container_set_border_width(GTK_CONTAINER(progressbox),4); - gtk_container_add(GTK_CONTAINER(winbox),progressbox); - filename = DATA_DIR G_DIR_SEPARATOR_S "images" G_DIR_SEPARATOR_S "blue.png"; - bluetooth_img = gtk_image_new_from_file(filename); - gtk_image_set_pixel_size(GTK_IMAGE(bluetooth_img),-1); - gtk_container_add(GTK_CONTAINER(scanbox),bluetooth_img); - if(usage == 0){ - scan_label = gtk_label_new_with_mnemonic(_("Scanning...")); - }else - { - scan_label = gtk_label_new_with_mnemonic(_("Pairing...")); - } - - gtk_container_add(GTK_CONTAINER(scanbox),scan_label); - - progress_bar = gtk_progress_bar_new(); - gtk_progress_bar_pulse(GTK_PROGRESS_BAR(progress_bar)); - gtk_container_add(GTK_CONTAINER(progressbox),progress_bar); - th1 = g_thread_create((GThreadFunc)progress, NULL,TRUE,NULL); - buttonsbox = gtk_hbox_new(FALSE,2); - gtk_container_set_border_width(GTK_CONTAINER(buttonsbox),2); - gtk_container_add(GTK_CONTAINER(progressbox),buttonsbox); - /* I have to modify the rescan button with a play one - * and treat the case when the bounding is not ok - */ - if(usage == 0){ - rescan_buttton = gtk_button_new_with_mnemonic(_("Rescan")); - g_signal_connect(rescan_buttton,"clicked",G_CALLBACK (refresh_call),NULL); - gtk_widget_set_sensitive(rescan_buttton,FALSE); - }else{ - rescan_buttton = gtk_button_new_with_mnemonic(_("Play")); - g_signal_connect(rescan_buttton,"clicked",G_CALLBACK (play_call),NULL); - gtk_widget_set_sensitive(rescan_buttton,FALSE); - } - - - - close_button = gtk_button_new_with_mnemonic(_("Close")); - gtk_container_add(GTK_CONTAINER(buttonsbox),rescan_buttton); - gtk_container_add(GTK_CONTAINER(buttonsbox),close_button); - g_signal_connect(close_button,"clicked",G_CALLBACK (close_window),NULL); - - gtk_window_set_default_size (GTK_WINDOW (window), 60, 40); - gtk_window_set_resizable(GTK_WINDOW(window),FALSE); - if (!GTK_WIDGET_VISIBLE (window)) - gtk_widget_show_all (window); - else - { - gtk_widget_destroy (window); - g_free(filename); - window = NULL; - } - - } - -} diff -Nru audacious-plugins-2.4.4/src/bluetooth/scan_gui.h audacious-plugins-3.2/src/bluetooth/scan_gui.h --- audacious-plugins-2.4.4/src/bluetooth/scan_gui.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/bluetooth/scan_gui.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -/* - * Audacious Bluetooth headset suport plugin - * - * Copyright (c) 2008 Paula Stanciu paula.stanciu@gmail.com - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include -#include -#include -#include -#include - - -void show_scan(gint use); -void show_no_devices(); -void destroy_scan_window(); -void close_window(); diff -Nru audacious-plugins-2.4.4/src/blur_scope/blur_scope.c audacious-plugins-3.2/src/blur_scope/blur_scope.c --- audacious-plugins-2.4.4/src/blur_scope/blur_scope.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/blur_scope/blur_scope.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,8 @@ -/* BMP - Cross-platform multimedia player +/* + * Blur Scope plugin for Audacious + * Copyright (C) 2010-2011 John Lindgren + * + * Based on BMP - Cross-platform multimedia player: * Copyright (C) 2003-2004 BMP development team. * * Based on XMMS: @@ -19,242 +23,182 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#include "config.h" - -#include #include #include -#include -#include +#include +#include #include #include "blur_scope.h" -static GtkWidget *area = NULL; -static gboolean config_read = FALSE; +#define D_WIDTH 64 +#define D_HEIGHT 32 -static void bscope_init(void); +static gboolean bscope_init (void); static void bscope_cleanup(void); -static void bscope_playback_stop(void); -static void bscope_render_pcm(gint16 data[2][512]); -/* static GtkWidget * bscope_get_widget (void); */ -static void * bscope_get_widget (void); - -BlurScopeConfig bscope_cfg; - -enum { SCOPE_TOGGLE, SCOPE_CLOSE }; - -VisPlugin bscope_vp = { - .description = "Blur Scope", /* description */ - .num_pcm_chs_wanted = 1, /* Number of PCM channels wanted */ - .num_freq_chs_wanted = 0, /* Number of freq channels wanted */ +static void bscope_clear (void); +static void bscope_render (const gfloat * data); +static void /* GtkWidget */ * bscope_get_widget (void); + +AUD_VIS_PLUGIN +( + .name = "Blur Scope", /* description */ .init = bscope_init, /* init */ .cleanup = bscope_cleanup, /* cleanup */ .configure = bscope_configure, /* configure */ - .playback_stop = bscope_playback_stop, /* playback_stop */ - .render_pcm = bscope_render_pcm, /* render_pcm */ + .clear = bscope_clear, + .render_mono_pcm = bscope_render, .get_widget = bscope_get_widget, -}; - -VisPlugin *bscope_vplist[] = { &bscope_vp, NULL }; +) -DECLARE_PLUGIN(bscope, NULL, NULL, NULL, NULL, NULL, NULL, bscope_vplist,NULL); +static GtkWidget * area = NULL; +static gint width, height, stride, image_size; +static guint32 * image = NULL, * corner = NULL; -#define D_WIDTH 256 -#define D_HEIGHT 128 -#define min(x,y) ((x)<(y)?(x):(y)) -gint width = D_WIDTH; -gint height = D_HEIGHT; -gint bpl = (D_WIDTH + 2); +static const gchar * const bscope_defaults[] = { + "color", "16727935", /* 0xFF3F7F */ + NULL}; -static GStaticMutex rgb_buf_mutex = G_STATIC_MUTEX_INIT; -static guchar *rgb_buf = NULL; -static GdkRgbCmap *cmap = NULL; +gint color; -inline static void -draw_pixel_8(guchar * buffer, gint x, gint y, guchar c) +static gboolean bscope_init (void) { - if (buffer == NULL) - return; + aud_config_set_defaults ("BlurScope", bscope_defaults); + color = aud_get_int ("BlurScope", "color"); - buffer[((y + 1) * bpl) + (x + 1)] = c; + return TRUE; } -inline static void -bscope_resize_video(gint w, gint h) +static void bscope_cleanup (void) { - g_static_mutex_lock(&rgb_buf_mutex); - - width = w; - height = h; - bpl = (width + 2); - - if (rgb_buf != NULL) { - g_free(rgb_buf); - rgb_buf = NULL; - } - - rgb_buf = g_malloc0((w + 2) * (h + 2)); + aud_set_int ("BlurScope", "color", color); - g_static_mutex_unlock(&rgb_buf_mutex); + g_free (image); + image = NULL; } -gboolean -bscope_reconfigure(GtkWidget *widget, GdkEventConfigure *event, gpointer unused) +static void bscope_resize (gint w, gint h) { - bscope_resize_video(event->width, event->height); - - return FALSE; + width = w; + height = h; + stride = width + 2; + image_size = (stride << 2) * (height + 2); + image = g_realloc (image, image_size); + memset (image, 0, image_size); + corner = image + stride + 1; } -void -bscope_read_config(void) +static void bscope_draw_to_cairo (cairo_t * cr) { - mcs_handle_t *db; - - if (!config_read) { - bscope_cfg.color = 0xFF3F7F; - db = aud_cfg_db_open(); - - if (db) { - aud_cfg_db_get_int(db, "BlurScope", "color", - (int *) &bscope_cfg.color); - aud_cfg_db_close(db); - } - config_read = TRUE; - } + cairo_surface_t * surf = cairo_image_surface_create_for_data ((guchar *) + image, CAIRO_FORMAT_RGB24, width, height, stride << 2); + cairo_set_source_surface (cr, surf, 0, 0); + cairo_paint (cr); + cairo_surface_destroy (surf); } - -void -bscope_blur_8(guchar * ptr, gint w, gint h, gint bpl_) +static void bscope_draw (void) { - register guint i, sum; - register guchar *iptr; + if (! area || ! gtk_widget_get_window (area)) + return; - iptr = ptr + bpl_ + 1; - i = bpl_ * h; - while (i--) { - sum = (iptr[-bpl_] + iptr[-1] + iptr[1] + iptr[bpl_]) >> 2; - if (sum > 2) - sum -= 2; - *(iptr++) = sum; - } + cairo_t * cr = gdk_cairo_create (gtk_widget_get_window (area)); + bscope_draw_to_cairo (cr); + cairo_destroy (cr); } -void -generate_cmap(void) +static gboolean configure_event (GtkWidget * widget, GdkEventConfigure * event) { - guint32 colors[256], i, red, blue, green; - - red = (guint32) (bscope_cfg.color / 0x10000); - green = (guint32) ((bscope_cfg.color % 0x10000) / 0x100); - blue = (guint32) (bscope_cfg.color % 0x100); - for (i = 255; i > 0; i--) { - colors[i] = - (((guint32) (i * red / 256) << 16) | - ((guint32) (i * green / 256) << 8) | - ((guint32) (i * blue / 256))); - } - colors[0] = 0; - if (cmap) { - gdk_rgb_cmap_free(cmap); - } - cmap = gdk_rgb_cmap_new(colors, 256); + bscope_resize (event->width, event->height); + return TRUE; } -static void -bscope_init(void) +#if GTK_CHECK_VERSION (3, 0, 0) +static gboolean draw_cb (GtkWidget * widget, cairo_t * cr) { - bscope_read_config(); - generate_cmap(); + bscope_draw_to_cairo (cr); + return TRUE; } - -static gboolean bscope_draw (void) +#else +static gboolean expose_event (GtkWidget * widget) { - if (area == NULL || area->window == NULL) - return TRUE; - - gdk_draw_indexed_image (area->window, area->style->white_gc, 0, 0, width, - height, GDK_RGB_DITHER_NONE, rgb_buf + bpl + 1, width + 2, cmap); + bscope_draw (); return TRUE; } +#endif -/* static GtkWidget * bscope_get_widget (void) */ -static void * bscope_get_widget (void) +static void /* GtkWidget */ * bscope_get_widget (void) { - if (area == NULL) - { - area = gtk_drawing_area_new (); - gtk_widget_set_size_request (area, D_WIDTH, D_HEIGHT); - bscope_resize_video (D_WIDTH, D_HEIGHT); - - g_signal_connect (area, "expose-event", (GCallback) bscope_draw, NULL); - g_signal_connect (area, "configure-event", (GCallback) - bscope_reconfigure, NULL); - g_signal_connect (area, "destroy", (GCallback) gtk_widget_destroyed, - & area); - } + area = gtk_drawing_area_new (); + gtk_widget_set_size_request (area, D_WIDTH, D_HEIGHT); + bscope_resize (D_WIDTH, D_HEIGHT); + +#if GTK_CHECK_VERSION (3, 0, 0) + g_signal_connect (area, "draw", (GCallback) draw_cb, NULL); +#else + g_signal_connect (area, "expose-event", (GCallback) expose_event, NULL); +#endif + g_signal_connect (area, "configure-event", (GCallback) configure_event, NULL); + g_signal_connect (area, "destroy", (GCallback) gtk_widget_destroyed, & area); return area; } -static void -bscope_cleanup(void) +static void bscope_clear (void) { - if (cmap) { - gdk_rgb_cmap_free(cmap); - cmap = NULL; - } - - area = NULL; -} - -static void -bscope_playback_stop(void) -{ - g_return_if_fail (rgb_buf != NULL); - memset (rgb_buf, 0, (width + 2) * (height + 2)); + g_return_if_fail (image != NULL); + memset (image, 0, image_size); bscope_draw (); } -static inline void -draw_vert_line(guchar * buffer, gint x, gint y1, gint y2) +static void bscope_blur (void) { - int y; - if (y1 < y2) { - for (y = y1 + 1; y <= y2; y++) - draw_pixel_8(buffer, x, y, 0xFF); - } - else if (y2 < y1) { - for (y = y2; y < y1; y++) - draw_pixel_8(buffer, x, y, 0xFF); + for (gint y = 0; y < height; y ++) + { + guint32 * p = corner + stride * y; + guint32 * end = p + width; + guint32 * plast = p - stride; + guint32 * pnext = p + stride; + + /* We do a quick and dirty average of four color values, first masking + * off the lowest two bits. Over a large area, this masking has the net + * effect of subtracting 1.5 from each value, which by a happy chance + * is just right for a gradual fade effect. */ + for (; p < end; p ++) + * p = ((* plast ++ & 0xFCFCFC) + (p[-1] & 0xFCFCFC) + (p[1] & + 0xFCFCFC) + (* pnext ++ & 0xFCFCFC)) >> 2; } - else - draw_pixel_8(buffer, x, y1, 0xFF); } -static void -bscope_render_pcm(gint16 data[2][512]) +static inline void draw_vert_line (gint x, guint y1, gint y2) { - gint i, y, prev_y; + gint y, h; + + if (y1 < y2) {y = y1 + 1; h = y2 - y1;} + else if (y2 < y1) {y = y2; h = y1 - y2;} + else {y = y1; h = 1;} - g_static_mutex_lock(&rgb_buf_mutex); + guint32 * p = corner + y * stride + x; - bscope_blur_8(rgb_buf, width, height, bpl); - prev_y = (height / 2) + (data[0][0] >> 9); + for (; h --; p += stride) + * p = color; +} + +static void bscope_render (const gfloat * data) +{ + bscope_blur (); + + gint prev_y = (0.5 + data[0]) * height; prev_y = CLAMP (prev_y, 0, height - 1); - for (i = 0; i < width; i++) { - y = (height / 2) + (data[0][i * 512 / width] >> 9); + + for (gint i = 0; i < width; i ++) + { + gint y = (0.5 + data[i * 512 / width]) * height; y = CLAMP (y, 0, height - 1); - draw_vert_line(rgb_buf, i, prev_y, y); + draw_vert_line (i, prev_y, y); prev_y = y; } bscope_draw (); - - g_static_mutex_unlock(&rgb_buf_mutex); - - return; } diff -Nru audacious-plugins-2.4.4/src/blur_scope/blur_scope.h audacious-plugins-3.2/src/blur_scope/blur_scope.h --- audacious-plugins-2.4.4/src/blur_scope/blur_scope.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/blur_scope/blur_scope.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,15 +1,33 @@ +/* + * Blur Scope plugin for Audacious + * Copyright (C) 2010 John Lindgren + * + * Based on BMP - Cross-platform multimedia player: + * Copyright (C) 2003-2004 BMP development team. + * + * Based on XMMS: + * Copyright (C) 1998-2003 XMMS development team. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + #ifndef BLUR_SCOPE_H #define BLUR_SCOPE_H void bscope_configure(void); -void bscope_read_config(void); - -typedef struct { - guint32 color; -} BlurScopeConfig; - -extern BlurScopeConfig bscope_cfg; -void generate_cmap(void); +extern gint color; #endif diff -Nru audacious-plugins-2.4.4/src/blur_scope/config.c audacious-plugins-3.2/src/blur_scope/config.c --- audacious-plugins-2.4.4/src/blur_scope/config.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/blur_scope/config.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,14 +1,35 @@ -#include "config.h" +/* + * Blur Scope plugin for Audacious + * Copyright (C) 2010-2011 John Lindgren + * + * Based on BMP - Cross-platform multimedia player: + * Copyright (C) 2003-2004 BMP development team. + * + * Based on XMMS: + * Copyright (C) 1998-2003 XMMS development team. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ -#include #include -#include +#include #include -#include #include "blur_scope.h" - +#include "config.h" static GtkWidget *configure_win = NULL; static GtkWidget *vbox, *options_frame, *options_vbox; @@ -18,39 +39,24 @@ static void configure_ok(GtkWidget * w, gpointer data) { - mcs_handle_t *db; - gdouble color[3]; - - gtk_color_selection_get_color(GTK_COLOR_SELECTION(options_colorpicker), - color); - bscope_cfg.color = - ((guint32) (255.0 * color[0]) << 16) | - ((guint32) (255.0 * color[1]) << 8) | ((guint32) (255.0 * color[2])); - db = aud_cfg_db_open(); - aud_cfg_db_set_int(db, "BlurScope", "color", bscope_cfg.color); - aud_cfg_db_close(db); - generate_cmap(); gtk_widget_destroy(configure_win); } static void configure_cancel(GtkWidget * w, gpointer data) { - bscope_cfg.color = GPOINTER_TO_UINT(data); - generate_cmap(); + color = GPOINTER_TO_UINT(data); gtk_widget_destroy(configure_win); } static void color_changed(GtkWidget * w, gpointer data) { - gdouble color[3]; - gtk_color_selection_get_color(GTK_COLOR_SELECTION(options_colorpicker), - color); - bscope_cfg.color = - ((guint32) (255.0 * color[0]) << 16) | - ((guint32) (255.0 * color[1]) << 8) | ((guint32) (255.0 * color[2])); - generate_cmap(); + GdkColor c; + gtk_color_selection_get_current_color ((GtkColorSelection *) + options_colorpicker, & c); + color = (((guint32) c.red << 8) & 0xff0000) | ((guint32) c.green & 0xff00) | + ((guint32) c.blue >> 8); } void @@ -58,15 +64,9 @@ { /* FIXME: convert to GtkColorSelectionDialog */ - gdouble color[3]; if (configure_win) return; - bscope_read_config(); - color[0] = ((gdouble) (bscope_cfg.color / 0x10000)) / 256; - color[1] = ((gdouble) ((bscope_cfg.color % 0x10000) / 0x100)) / 256; - color[2] = ((gdouble) (bscope_cfg.color % 0x100)) / 256; - configure_win = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width(GTK_CONTAINER(configure_win), 10); gtk_window_set_title(GTK_WINDOW(configure_win), @@ -87,8 +87,12 @@ gtk_container_set_border_width(GTK_CONTAINER(options_vbox), 5); options_colorpicker = gtk_color_selection_new(); - gtk_color_selection_set_color(GTK_COLOR_SELECTION(options_colorpicker), - color); + + GdkColor c = {.red = (color & 0xff0000) >> 8, .green = color & 0xff00, .blue + = (color & 0xff) << 8}; + gtk_color_selection_set_current_color ((GtkColorSelection *) + options_colorpicker, & c); + g_signal_connect(G_OBJECT(options_colorpicker), "color_changed", G_CALLBACK(color_changed), NULL); @@ -105,20 +109,19 @@ bbox = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); - gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL); g_signal_connect(G_OBJECT(cancel), "clicked", G_CALLBACK(configure_cancel), - GUINT_TO_POINTER(bscope_cfg.color)); - GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT); + GUINT_TO_POINTER(color)); + gtk_widget_set_can_default (cancel, TRUE); gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0); gtk_widget_show(cancel); ok = gtk_button_new_from_stock(GTK_STOCK_OK); g_signal_connect(G_OBJECT(ok), "clicked", G_CALLBACK(configure_ok), NULL); - GTK_WIDGET_SET_FLAGS(ok, GTK_CAN_DEFAULT); + gtk_widget_set_can_default (ok, TRUE); gtk_box_pack_start(GTK_BOX(bbox), ok, TRUE, TRUE, 0); gtk_widget_show(ok); diff -Nru audacious-plugins-2.4.4/src/blur_scope/Makefile audacious-plugins-3.2/src/blur_scope/Makefile --- audacious-plugins-2.4.4/src/blur_scope/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/blur_scope/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -9,5 +9,5 @@ plugindir := ${plugindir}/${VISUALIZATION_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} +CPPFLAGS += -std=c99 ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} -I../.. +LIBS += ${GTK_LIBS} diff -Nru audacious-plugins-2.4.4/src/bs2b/Makefile audacious-plugins-3.2/src/bs2b/Makefile --- audacious-plugins-2.4.4/src/bs2b/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/bs2b/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -8,6 +8,5 @@ plugindir := ${plugindir}/${EFFECT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CXXFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${BS2B_CFLAGS} -LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${MOWGLI_LIBS} ${BS2B_LIBS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${BS2B_CFLAGS}-I../.. +LIBS += ${GTK_LIBS} ${BS2B_LIBS} diff -Nru audacious-plugins-2.4.4/src/bs2b/plugin.c audacious-plugins-3.2/src/bs2b/plugin.c --- audacious-plugins-2.4.4/src/bs2b/plugin.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/bs2b/plugin.c 2012-01-20 19:48:30.000000000 +0000 @@ -3,6 +3,7 @@ * Copyright (C) 2009, Sebastian Pipping * Copyright (C) 2009, Tony Vroon * Copyright (C) 2010, John Lindgren + * Copyright (C) 2011, MichaÅ‚ Lipski * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,25 +19,47 @@ * along with this program. If not, see . */ +#include "config.h" + +#include +#include #include +#include +#include +#include +#include #include -#define AB_EFFECT_LEVEL BS2B_DEFAULT_CLEVEL static t_bs2bdp bs2b = NULL; static gint bs2b_channels; +static GtkWidget *config_window, *feed_slider, *fcut_slider; +static const gchar * const bs2b_defaults[] = { + "feed", "45", + "fcut", "700", + NULL}; + +#define feed_level aud_get_int("bs2b", "feed") +#define fcut_level aud_get_int("bs2b", "fcut") -void init() { +gboolean init() +{ + aud_config_set_defaults("bs2b", bs2b_defaults); bs2b = bs2b_open(); - if (bs2b == NULL) { - return; - } - bs2b_set_level(bs2b, AB_EFFECT_LEVEL); + + if (bs2b == NULL) + return FALSE; + + bs2b_set_level_feed(bs2b, feed_level); + bs2b_set_level_fcut(bs2b, fcut_level); + + return TRUE; } -static void cleanup() { - if (bs2b == NULL) { +static void cleanup() +{ + if (bs2b == NULL) return; - } + bs2b_close(bs2b); bs2b = NULL; } @@ -81,10 +104,130 @@ return time; } -static EffectPlugin audaciousBs2b = { - .description = "Bauer stereophonic-to-binaural 1.1", +static void feed_value_changed(GtkRange *range, gpointer data) +{ + aud_set_int("bs2b", "feed", gtk_range_get_value(range)); + bs2b_set_level_feed(bs2b, feed_level); +} + +static gchar *feed_format_value(GtkScale *scale, gdouble value) +{ + return g_strdup_printf("%.1f dB", (float) value / 10); +} + +static void fcut_value_changed(GtkRange *range, gpointer data) +{ + aud_set_int("bs2b", "fcut", gtk_range_get_value(range)); + bs2b_set_level_fcut(bs2b, fcut_level); +} + +static gchar *fcut_format_value(GtkScale *scale, gdouble value) +{ + return g_strdup_printf("%d Hz, %dµs", (int) value, bs2b_level_delay((int) value)); +} + +static void preset_button_clicked(GtkButton *button, gpointer data) +{ + gint clevel = GPOINTER_TO_INT(data); + gtk_range_set_value(GTK_RANGE(feed_slider), clevel >> 16); + gtk_range_set_value(GTK_RANGE(fcut_slider), clevel & 0xffff); +} + +static GtkWidget *preset_button(const gchar *label, gint clevel) +{ + GtkWidget *button = gtk_button_new_with_label(label); + gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); + g_signal_connect(button, "clicked", (GCallback) + preset_button_clicked, GINT_TO_POINTER(clevel)); + + return button; +} + +static void configure (void) +{ + if (config_window == NULL) + { + GtkWidget *vbox, *hbox, *button; + + config_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_type_hint ((GtkWindow *) config_window, + GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_resizable ((GtkWindow *) config_window, FALSE); + gtk_window_set_title ((GtkWindow *) config_window, + _("Bauer stereophonic-to-binaural Preferences")); + gtk_container_set_border_width ((GtkContainer *) config_window, 6); + g_signal_connect (config_window, "destroy", (GCallback) + gtk_widget_destroyed, & config_window); + + vbox = gtk_vbox_new (FALSE, 6); + gtk_container_add ((GtkContainer *) config_window, vbox); + + hbox = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0); + + gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new(_("Feed level:")), TRUE, FALSE, 0); + + feed_slider = gtk_hscale_new_with_range(BS2B_MINFEED, BS2B_MAXFEED, 1.0); + gtk_range_set_value (GTK_RANGE(feed_slider), feed_level); + gtk_widget_set_size_request (feed_slider, 200, -1); + gtk_box_pack_start ((GtkBox *) hbox, feed_slider, FALSE, FALSE, 0); + g_signal_connect (feed_slider, "value-changed", (GCallback) feed_value_changed, + NULL); + g_signal_connect (feed_slider, "format-value", (GCallback) feed_format_value, + NULL); + + hbox = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0); + + gtk_box_pack_start (GTK_BOX(hbox), gtk_label_new(_("Cut frequency:")), TRUE, FALSE, 0); + + fcut_slider = gtk_hscale_new_with_range(BS2B_MINFCUT, BS2B_MAXFCUT, 1.0); + gtk_range_set_value (GTK_RANGE(fcut_slider), fcut_level); + gtk_widget_set_size_request (fcut_slider, 200, -1); + gtk_box_pack_start ((GtkBox *) hbox, fcut_slider, FALSE, FALSE, 0); + g_signal_connect (fcut_slider, "value-changed", (GCallback) fcut_value_changed, + NULL); + g_signal_connect (fcut_slider, "format-value", (GCallback) fcut_format_value, + NULL); + + hbox = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0); + + gtk_box_pack_start ((GtkBox *) hbox, gtk_label_new(_("Presets:")), TRUE, FALSE, 0); + + button = preset_button(_("Default"), BS2B_DEFAULT_CLEVEL); + gtk_box_pack_start ((GtkBox *) hbox, button, TRUE, FALSE, 0); + + button = preset_button("C. Moy", BS2B_CMOY_CLEVEL); + gtk_box_pack_start ((GtkBox *) hbox, button, TRUE, FALSE, 0); + + button = preset_button("J. Meier", BS2B_JMEIER_CLEVEL); + gtk_box_pack_start ((GtkBox *) hbox, button, TRUE, FALSE, 0); + + hbox = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0); + + button = gtk_button_new_from_stock (GTK_STOCK_CLOSE); + gtk_box_pack_end ((GtkBox *) hbox, button, FALSE, FALSE, 0); + gtk_widget_set_can_default (button, TRUE); + gtk_widget_grab_default (button); + g_signal_connect_swapped (button, "clicked", (GCallback) + gtk_widget_destroy, config_window); + + audgui_destroy_on_escape (config_window); + + gtk_widget_show_all (vbox); + } + + gtk_window_present ((GtkWindow *) config_window); +} + +AUD_EFFECT_PLUGIN +( + .name = "Bauer stereophonic-to-binaural", .init = init, .cleanup = cleanup, + .configure = configure, .start = bs2b_start, .process = bs2b_process, .flush = bs2b_flush, @@ -92,7 +235,4 @@ .decoder_to_output_time = bs2b_decoder_to_output_time, .output_to_decoder_time = bs2b_output_to_decoder_time, .preserves_format = TRUE, -}; - -static EffectPlugin * plugins[] = { &audaciousBs2b, NULL }; -SIMPLE_EFFECT_PLUGIN(audaciousBs2b, plugins); +) diff -Nru audacious-plugins-2.4.4/src/cairo-spectrum/cairo-spectrum.c audacious-plugins-3.2/src/cairo-spectrum/cairo-spectrum.c --- audacious-plugins-2.4.4/src/cairo-spectrum/cairo-spectrum.c 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/cairo-spectrum/cairo-spectrum.c 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,293 @@ +/* + * Copyright (c) 2011 William Pitcock . + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define MAX_BANDS (256) +#define VIS_DELAY 2 /* delay before falloff in frames */ +#define VIS_FALLOFF 2 /* falloff in pixels per frame */ + +static GtkWidget * spect_widget = NULL; +static gfloat xscale[MAX_BANDS + 1]; +static gint width, height, bands; +static gint bars[MAX_BANDS + 1]; +static gint delay[MAX_BANDS + 1]; + +static void calculate_bands(gint bands_) +{ + gint i; + + for (i = 0; i < bands_; i++) + xscale[i] = powf(257., ((gfloat) i / (gfloat) bands_)) - 1; +} + +static void render_cb (gfloat * freq) +{ + g_return_if_fail (spect_widget); + + calculate_bands(bands); + + for (gint i = 0; i < bands; i ++) + { + gint a = ceil (xscale[i]); + gint b = floor (xscale[i + 1]); + gfloat n = 0; + + if (b < a) + n += freq[b] * (xscale[i + 1] - xscale[i]); + else + { + if (a > 0) + n += freq[a - 1] * (a - xscale[i]); + for (; a < b; a ++) + n += freq[a]; + if (b < 256) + n += freq[b] * (xscale[i + 1] - b); + } + + /* 40 dB range */ + gint x = 20 * log10 (n * 100); + x = CLAMP (x, 0, 40); + + bars[i] -= MAX (0, VIS_FALLOFF - delay[i]); + + if (delay[i]) + delay[i]--; + + if (x > bars[i]) + { + bars[i] = x; + delay[i] = VIS_DELAY; + } + } + + gtk_widget_queue_draw (spect_widget); +} + +static void rgb_to_hsv (gfloat r, gfloat g, gfloat b, gfloat * h, gfloat * s, gfloat * v) +{ + gfloat max, min; + + max = r; + if (g > max) + max = g; + if (b > max) + max = b; + + min = r; + if (g < min) + min = g; + if (b < min) + min = b; + + * v = max; + + if (max == min) + { + * h = 0; + * s = 0; + return; + } + + if (r == max) + * h = 1 + (g - b) / (max - min); + else if (g == max) + * h = 3 + (b - r) / (max - min); + else + * h = 5 + (r - g) / (max - min); + + * s = (max - min) / max; +} + +static void hsv_to_rgb (gfloat h, gfloat s, gfloat v, gfloat * r, gfloat * g, gfloat * b) +{ + for (; h >= 2; h -= 2) + { + gfloat * p = r; + r = g; + g = b; + b = p; + } + + if (h < 1) + { + * r = 1; + * g = 0; + * b = 1 - h; + } + else + { + * r = 1; + * g = h - 1; + * b = 0; + } + + * r = v * (1 - s * (1 - * r)); + * g = v * (1 - s * (1 - * g)); + * b = v * (1 - s * (1 - * b)); +} + +static void get_color (GtkWidget * widget, gint i, gfloat * r, gfloat * g, gfloat * b) +{ + GdkColor * c = (gtk_widget_get_style (widget))->base + GTK_STATE_SELECTED; + gfloat h, s, v, n; + + rgb_to_hsv (c->red / 65535.0, c->green / 65535.0, c->blue / 65535.0, & h, & s, & v); + + if (s < 0.1) /* monochrome theme? use blue instead */ + { + h = 5; + s = 0.75; + } + + n = i / (gfloat) (bands - 1); + s = 1 - 0.9 * n; + v = 0.75 + 0.25 * n; + + hsv_to_rgb (h, s, v, r, g, b); +} + +static void draw_background (GtkWidget * area, cairo_t * cr) +{ +#if 0 + GdkColor * c = (gtk_widget_get_style (area))->bg; +#endif + GtkAllocation alloc; + gtk_widget_get_allocation (area, & alloc); + +#if 0 + gdk_cairo_set_source_color(cr, c); +#endif + cairo_rectangle(cr, 0, 0, alloc.width, alloc.height); + cairo_fill (cr); +} + +#if 0 +static void draw_grid (GtkWidget * area, cairo_t * cr) +{ + GdkColor * c = (gtk_widget_get_style (area))->bg; + GtkAllocation alloc; + gtk_widget_get_allocation (area, & alloc); + gint i; + gfloat base_s = (height / 40); + + for (i = 1; i < 41; i++) + { + gdk_cairo_set_source_color(cr, c); + cairo_move_to(cr, 0.0, i * base_s); + cairo_line_to(cr, alloc.width, i * base_s); + cairo_stroke(cr); + } +} +#endif + +static void draw_visualizer (GtkWidget *widget, cairo_t *cr) +{ + gfloat base_s = (height / 40); + + for (gint i = 0; i <= bands; i++) + { + gint x = ((width / bands) * i) + 2; + gfloat r, g, b; + + get_color (widget, i, & r, & g, & b); + cairo_set_source_rgb (cr, r, g, b); + cairo_rectangle (cr, x + 1, height - (bars[i] * base_s), (width / bands) - 1, (bars[i] * base_s)); + cairo_fill (cr); + } +} + +static gboolean configure_event (GtkWidget * widget, GdkEventConfigure * event) +{ + width = event->width; + height = event->height; + gtk_widget_queue_draw(widget); + + bands = width / 10; + bands = CLAMP(bands, 12, MAX_BANDS); + calculate_bands(bands); + + return TRUE; +} + +#if GTK_CHECK_VERSION (3, 0, 0) +static gboolean draw_event (GtkWidget * widget, cairo_t * cr, GtkWidget * area) +{ +#else +static gboolean expose_event (GtkWidget * widget, GdkEventExpose * event, GtkWidget * area) +{ + cairo_t * cr = gdk_cairo_create (gtk_widget_get_window (widget)); +#endif + + draw_background (widget, cr); + draw_visualizer (widget, cr); +#if 0 + draw_grid (widget, cr); +#endif + +#if ! GTK_CHECK_VERSION (3, 0, 0) + cairo_destroy (cr); +#endif + + return TRUE; +} + +static gboolean destroy_event (void) +{ + aud_vis_func_remove ((VisFunc) render_cb); + spect_widget = NULL; + return TRUE; +} + +static /* GtkWidget * */ gpointer get_widget(void) +{ + GtkWidget *area = gtk_drawing_area_new(); + spect_widget = area; + +#if GTK_CHECK_VERSION (3, 0, 0) + g_signal_connect(area, "draw", (GCallback) draw_event, NULL); +#else + g_signal_connect(area, "expose-event", (GCallback) expose_event, NULL); +#endif + g_signal_connect(area, "configure-event", (GCallback) configure_event, NULL); + g_signal_connect(area, "destroy", (GCallback) destroy_event, NULL); + + aud_vis_func_add (AUD_VIS_TYPE_FREQ, (VisFunc) render_cb); + + return area; +} + +AUD_VIS_PLUGIN +( + .name = "Cairo Spectrum", + .get_widget = get_widget +) diff -Nru audacious-plugins-2.4.4/src/cairo-spectrum/Makefile audacious-plugins-3.2/src/cairo-spectrum/Makefile --- audacious-plugins-2.4.4/src/cairo-spectrum/Makefile 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/cairo-spectrum/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,12 @@ +PLUGIN = cairo-spectrum${PLUGIN_SUFFIX} + +SRCS = cairo-spectrum.c + +include ../../buildsys.mk +include ../../extra.mk + +plugindir := ${plugindir}/${VISUALIZATION_PLUGIN_DIR} + +CFLAGS += ${PLUGIN_CFLAGS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} -I../.. ${GTK_CFLAGS} +LIBS += -lm ${GTK_LIBS} diff -Nru audacious-plugins-2.4.4/src/cdaudio-ng/cdaudio-ng.c audacious-plugins-3.2/src/cdaudio-ng/cdaudio-ng.c --- audacious-plugins-2.4.4/src/cdaudio-ng/cdaudio-ng.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/cdaudio-ng/cdaudio-ng.c 2012-01-20 19:48:30.000000000 +0000 @@ -36,14 +36,12 @@ #include -#include -#include #include #include #include #include #include -#include +#include #include #include @@ -65,75 +63,55 @@ } trackinfo_t; -typedef struct -{ - gint startlsn; - gint endlsn; - gint currlsn; - gint seektime; /* milliseconds */ - InputPlayback * pplayback; - GThread * thread; -} -dae_params_t; - static GMutex *mutex; -static GCond *control_cond; +static gint seek_time; +static gboolean stop_flag; /* lock mutex to read / set these variables */ cdng_cfg_t cdng_cfg; static gint firsttrackno = -1; static gint lasttrackno = -1; -static CdIo_t *pcdio = NULL; +static gint n_audio_tracks; +static cdrom_drive_t *pcdrom_drive = NULL; static trackinfo_t *trackinfo = NULL; -static volatile gboolean pause_flag = FALSE; -static gint playing_track = -1; -static dae_params_t *pdae_params = NULL; static gint monitor_source = 0; /* read / set these variables in main thread only */ -static void cdaudio_init (void); +static gboolean cdaudio_init (void); static void cdaudio_about (void); static void cdaudio_configure (void); -static gint cdaudio_is_our_file (const gchar * filename); -static void cdaudio_play_file (InputPlayback * pinputplayback); +static gint cdaudio_is_our_file (const gchar * filename, VFSFile * file); +static gboolean cdaudio_play (InputPlayback * p, const gchar * name, VFSFile * + file, gint start, gint stop, gboolean pause); static void cdaudio_stop (InputPlayback * pinputplayback); -static void cdaudio_pause (InputPlayback * pinputplayback, gshort paused); -static void cdaudio_seek (InputPlayback * pinputplayback, gint time); -static gint cdaudio_get_time (InputPlayback * pinputplayback); -static gint cdaudio_get_volume (gint * l, gint * r); -static gint cdaudio_set_volume (gint l, gint r); +static void cdaudio_pause (InputPlayback * p, gboolean paused); +static void cdaudio_mseek (InputPlayback * p, gint time); static void cdaudio_cleanup (void); -static Tuple *create_tuple_from_trackinfo_and_filename (const gchar * filename); -static void dae_play_loop (dae_params_t * pdae_params); +static Tuple * make_tuple (const gchar * filename, VFSFile * file); static void scan_cd (void); static void refresh_trackinfo (gboolean warning); static gint calculate_track_length (gint startlsn, gint endlsn); static gint find_trackno_from_filename (const gchar * filename); +static const gchar * const schemes[] = {"cdda", NULL}; -static InputPlugin inputplugin = { - .description = "Audio CD Plugin", +AUD_INPUT_PLUGIN +( + .name = "Audio CD Support", .init = cdaudio_init, .about = cdaudio_about, .configure = cdaudio_configure, - .is_our_file = cdaudio_is_our_file, - .play_file = cdaudio_play_file, + .is_our_file_from_vfs = cdaudio_is_our_file, + .play = cdaudio_play, .stop = cdaudio_stop, .pause = cdaudio_pause, - .seek = cdaudio_seek, - .get_time = cdaudio_get_time, - .get_volume = cdaudio_get_volume, - .set_volume = cdaudio_set_volume, + .mseek = cdaudio_mseek, .cleanup = cdaudio_cleanup, - .get_song_tuple = create_tuple_from_trackinfo_and_filename, + .probe_for_tuple = make_tuple, + .schemes = schemes, .have_subtune = TRUE, -}; - -InputPlugin *cdaudio_iplist[] = { &inputplugin, NULL }; - -SIMPLE_INPUT_PLUGIN (cdaudio, cdaudio_iplist) - +) static void cdaudio_error (const gchar * message_format, ...) { @@ -144,26 +122,27 @@ msg = g_markup_vprintf_escaped (message_format, args); va_end (args); - event_queue_with_data_free ("interface show error", msg); + aud_interface_show_error (msg); + g_free (msg); } /* main thread only */ static void purge_playlist (gint playlist) { gint length = aud_playlist_entry_count (playlist); - gint count; - const gchar *filename; - for (count = 0; count < length; count++) + for (gint count = 0; count < length; count ++) { - filename = aud_playlist_entry_get_filename (playlist, count); + gchar * filename = aud_playlist_entry_get_filename (playlist, count); - if (cdaudio_is_our_file (filename)) + if (cdaudio_is_our_file (filename, NULL)) { aud_playlist_entry_delete (playlist, count, 1); count--; length--; } + + str_unref (filename); } } @@ -211,72 +190,47 @@ #endif } +static const gchar * const cdaudio_defaults[] = { + "use_cdtext", "TRUE", + "use_cddb", "TRUE", + "cddbserver", "freedb.org", + "cddbport", "8880", + "cddbhttp", "FALSE", + "disc_speed", "2", + NULL}; + /* main thread only */ -static void cdaudio_init () +static gboolean cdaudio_init (void) { - mcs_handle_t *db; - mutex = g_mutex_new (); - control_cond = g_cond_new (); - cdng_cfg.use_dae = TRUE; - cdng_cfg.use_cdtext = TRUE; - cdng_cfg.use_cddb = TRUE; - cdng_cfg.cddb_port = CDDA_DEFAULT_CDDB_PORT; - cdng_cfg.cddb_http = FALSE; - cdng_cfg.disc_speed = DEFAULT_DISC_SPEED; - cdng_cfg.use_proxy = FALSE; - cdng_cfg.proxy_port = CDDA_DEFAULT_PROXY_PORT; + aud_config_set_defaults ("CDDA", cdaudio_defaults); - if ((db = aud_cfg_db_open ()) == NULL) - { - cdaudio_error ("Failed to read configuration."); - return; - } - - aud_cfg_db_get_bool (db, "CDDA", "use_dae", &cdng_cfg.use_dae); - aud_cfg_db_get_bool (db, "CDDA", "use_cdtext", &cdng_cfg.use_cdtext); - aud_cfg_db_get_bool (db, "CDDA", "use_cddb", &cdng_cfg.use_cddb); - aud_cfg_db_get_string (db, "CDDA", "device", &cdng_cfg.device); - aud_cfg_db_get_string (db, "CDDA", "cddbserver", &cdng_cfg.cddb_server); - aud_cfg_db_get_string (db, "CDDA", "cddbpath", &cdng_cfg.cddb_path); - aud_cfg_db_get_int (db, "CDDA", "cddbport", &cdng_cfg.cddb_port); - aud_cfg_db_get_bool (db, "CDDA", "cddbhttp", &cdng_cfg.cddb_http); - aud_cfg_db_get_int (db, "CDDA", "disc_speed", & cdng_cfg.disc_speed); - cdng_cfg.disc_speed = CLAMP (cdng_cfg.disc_speed, MIN_DISC_SPEED, - MAX_DISC_SPEED); - aud_cfg_db_get_bool (db, "audacious", "use_proxy", &cdng_cfg.use_proxy); - aud_cfg_db_get_string (db, "audacious", "proxy_host", &cdng_cfg.proxy_host); - aud_cfg_db_get_int (db, "audacious", "proxy_port", &cdng_cfg.proxy_port); - aud_cfg_db_get_string (db, "audacious", "proxy_user", - &cdng_cfg.proxy_username); - aud_cfg_db_get_string (db, "audacious", "proxy_pass", - &cdng_cfg.proxy_password); - - if (cdng_cfg.device == NULL) - cdng_cfg.device = g_strdup (""); - if (cdng_cfg.cddb_server == NULL) - cdng_cfg.cddb_server = g_strdup (CDDA_DEFAULT_CDDB_SERVER); - if (cdng_cfg.cddb_path == NULL) - cdng_cfg.cddb_path = g_strdup (""); - if (cdng_cfg.proxy_host == NULL) - cdng_cfg.proxy_host = g_strdup (""); - if (cdng_cfg.proxy_username == NULL) - cdng_cfg.proxy_username = g_strdup (""); - if (cdng_cfg.proxy_password == NULL) - cdng_cfg.proxy_password = g_strdup (""); - - aud_cfg_db_close (db); + cdng_cfg.use_cdtext = aud_get_bool ("CDDA", "use_cdtext"); + cdng_cfg.use_cddb = aud_get_bool ("CDDA", "use_cddb"); + cdng_cfg.device = aud_get_string ("CDDA", "device"); + cdng_cfg.cddb_server = aud_get_string ("CDDA", "cddbserver"); + cdng_cfg.cddb_path = aud_get_string ("CDDA", "cddbpath"); + cdng_cfg.cddb_port = aud_get_int ("CDDA", "cddbport"); + cdng_cfg.cddb_http = aud_get_bool ("CDDA", "cddbhttp"); + cdng_cfg.disc_speed = aud_get_int ("CDDA", "disc_speed"); + cdng_cfg.disc_speed = CLAMP (cdng_cfg.disc_speed, MIN_DISC_SPEED, MAX_DISC_SPEED); + + cdng_cfg.use_proxy = aud_get_bool (NULL, "use_proxy"); + cdng_cfg.proxy_host = aud_get_string (NULL, "proxy_host"); + cdng_cfg.proxy_port = aud_get_int (NULL, "proxy_port"); + cdng_cfg.proxy_username = aud_get_string (NULL, "proxy_user"); + cdng_cfg.proxy_password = aud_get_string (NULL, "proxy_pass"); if (!cdio_init ()) { cdaudio_error ("Failed to initialize cdio subsystem."); - return; + return FALSE; } libcddb_init (); - aud_uri_set_plugin ("cdda://", &inputplugin); + return TRUE; } /* main thread only */ @@ -301,7 +255,7 @@ } /* thread safe (mutex may be locked) */ -static gint cdaudio_is_our_file (const gchar * filename) +static gint cdaudio_is_our_file (const gchar * filename, VFSFile * file) { return !strncmp (filename, "cdda://", 7); } @@ -328,10 +282,9 @@ } /* play thread only */ -static void cdaudio_play_file (InputPlayback * pinputplayback) +static gboolean cdaudio_play (InputPlayback * p, const gchar * name, VFSFile * + file, gint start, gint stop, gboolean pause) { - gint trackno; - g_mutex_lock (mutex); if (trackinfo == NULL) @@ -340,245 +293,169 @@ if (trackinfo == NULL) { - pinputplayback->error = TRUE; - goto UNLOCK; +ERR: + g_mutex_unlock (mutex); + return FALSE; } } - trackno = find_trackno_from_filename (pinputplayback->filename); + gint trackno = find_trackno_from_filename (name); - if (trackno == -1) + if (trackno < 0) { - cdaudio_error ("Invalid URI %s.", pinputplayback->filename); - pinputplayback->error = TRUE; - goto UNLOCK; + cdaudio_error ("Invalid URI %s.", name); + goto ERR; } if (trackno < firsttrackno || trackno > lasttrackno) { cdaudio_error ("Track %d not found.", trackno); - pinputplayback->error = TRUE; - goto UNLOCK; + goto ERR; } - pinputplayback->set_params (pinputplayback, NULL, 0, 1411200, 44100, 2); - pinputplayback->playing = TRUE; - playing_track = trackno; - pause_flag = FALSE; - - if (cdng_cfg.use_dae) + /* don't play any data tracks */ + if (!cdda_track_audiop (pcdrom_drive, trackno)) { - if (pinputplayback->output->open_audio (FMT_S16_LE, 44100, 2) == 0) - { - cdaudio_error ("Failed to open audio output."); - pinputplayback->error = TRUE; - goto UNLOCK; - } - - pdae_params = (dae_params_t *) g_new (dae_params_t, 1); - pdae_params->startlsn = trackinfo[trackno].startlsn; - pdae_params->endlsn = trackinfo[trackno].endlsn; - pdae_params->pplayback = pinputplayback; - pdae_params->seektime = -1; - pdae_params->currlsn = trackinfo[trackno].startlsn; - pdae_params->thread = g_thread_self (); - pinputplayback->set_pb_ready (pinputplayback); + cdaudio_error ("Track %d is a data track.\n", trackno); + goto ERR; + } - dae_play_loop (pdae_params); + gint startlsn = trackinfo[trackno].startlsn; + gint endlsn = trackinfo[trackno].endlsn; - g_free (pdae_params); - } - else + if (! p->output->open_audio (FMT_S16_LE, 44100, 2)) { - msf_t startmsf, endmsf; - cdio_lsn_to_msf (trackinfo[trackno].startlsn, &startmsf); - cdio_lsn_to_msf (trackinfo[trackno].endlsn, &endmsf); - if (cdio_audio_play_msf (pcdio, &startmsf, &endmsf) != - DRIVER_OP_SUCCESS) - { - cdaudio_error ("Failed to play analog audio CD."); - goto UNLOCK; - } + cdaudio_error ("Failed to open audio output."); + goto ERR; } - UNLOCK: - g_mutex_unlock (mutex); -} - -/* main thread only */ -static void cdaudio_stop (InputPlayback * playback) -{ - g_mutex_lock (mutex); + seek_time = (start > 0) ? start : -1; + stop_flag = FALSE; - if (!playback->playing) - goto UNLOCK; + if (stop >= 0) + endlsn = MIN (endlsn, startlsn + stop * 75 / 1000); - playback->playing = FALSE; + if (pause) + p->output->pause (TRUE); - if (cdng_cfg.use_dae) - { - g_cond_signal (control_cond); - g_mutex_unlock (mutex); - g_thread_join (playback->thread); - playback->thread = NULL; - return; - } - else - { - if (cdio_audio_stop (pcdio) != DRIVER_OP_SUCCESS) - cdaudio_error ("Cannot stop analog CD."); - } + p->set_params (p, 1411200, 44100, 2); + p->set_pb_ready (p); - UNLOCK: g_mutex_unlock (mutex); -} -/* main thread only */ -static void cdaudio_pause (InputPlayback * pinputplayback, gshort paused) -{ - g_mutex_lock (mutex); - - pause_flag = paused; + gint buffer_size = aud_get_int (NULL, "output_buffer_size"); + gint sectors = CLAMP (buffer_size / 2, 50, 250) * cdng_cfg.disc_speed * 75 / 1000; + guchar buffer[2352 * sectors]; + gint currlsn = startlsn; + gint retry_count = 0, skip_count = 0; - if (cdng_cfg.use_dae) - { - g_cond_signal (control_cond); - g_cond_wait (control_cond, mutex); - } - else + while (1) { - if (paused) + g_mutex_lock (mutex); + + if (stop_flag) { - if (cdio_audio_pause (pcdio) != DRIVER_OP_SUCCESS) - cdaudio_error ("Cannot pause analog CD."); + g_mutex_unlock (mutex); + goto CLOSE; } - else + + if (seek_time >= 0) { - if (cdio_audio_resume (pcdio) != DRIVER_OP_SUCCESS) - cdaudio_error ("Cannot resume analog CD."); + p->output->flush (seek_time); + currlsn = startlsn + (seek_time * 75 / 1000); + seek_time = -1; } - } - g_mutex_unlock (mutex); -} + g_mutex_unlock (mutex); -/* main thread only */ -static void cdaudio_seek (InputPlayback * playback, gint time) -{ - g_mutex_lock (mutex); + sectors = MIN (sectors, endlsn + 1 - currlsn); + if (sectors < 1) + break; - if (cdng_cfg.use_dae) - { - if (pdae_params == NULL) - goto UNLOCK; + if (cdio_read_audio_sectors (pcdrom_drive->p_cdio, buffer, currlsn, sectors) == + DRIVER_OP_SUCCESS) + { + retry_count = 0; + skip_count = 0; + } + else if (sectors > 16) + { + warn ("Read failed; reducing read size.\n"); + sectors /= 2; + continue; + } + else if (retry_count < MAX_RETRIES) + { + warn ("Read failed; retrying.\n"); + retry_count ++; + continue; + } + else if (skip_count < MAX_SKIPS) + { + warn ("Read failed; skipping.\n"); + currlsn = MIN (currlsn + 75, endlsn + 1); + skip_count ++; + continue; + } + else + { + cdaudio_error ("Too many read errors; giving up."); + break; + } - pdae_params->seektime = time * 1000; - g_cond_signal (control_cond); - g_cond_wait (control_cond, mutex); + p->output->write_audio (buffer, 2352 * sectors); + currlsn += sectors; } - else - { - gint newstartlsn = trackinfo[playing_track].startlsn + time * 75; - msf_t startmsf, endmsf; - cdio_lsn_to_msf (newstartlsn, &startmsf); - cdio_lsn_to_msf (trackinfo[playing_track].endlsn, &endmsf); - if (cdio_audio_play_msf (pcdio, &startmsf, &endmsf) != - DRIVER_OP_SUCCESS) - cdaudio_error ("Failed to play analog CD"); - } + while (p->output->buffer_playing ()) + g_usleep (20000); - UNLOCK: + g_mutex_lock (mutex); + stop_flag = FALSE; g_mutex_unlock (mutex); + +CLOSE: + p->output->close_audio (); + return TRUE; } /* main thread only */ -static gint cdaudio_get_time (InputPlayback * playback) +static void cdaudio_stop (InputPlayback * p) { - int time; - g_mutex_lock (mutex); - time = 0; - - if (!playback->playing) - goto UNLOCK; - - if (cdng_cfg.use_dae) - time = -1; - else + if (! stop_flag) { - cdio_subchannel_t subchannel; - if (cdio_audio_read_subchannel (pcdio, &subchannel) != - DRIVER_OP_SUCCESS) - { - cdaudio_error ("Failed to read analog CD subchannel."); - goto UNLOCK; - } - gint currlsn = cdio_msf_to_lsn (&subchannel.abs_addr); - - time = calculate_track_length - (trackinfo[playing_track].startlsn, currlsn); + stop_flag = TRUE; + p->output->abort_write(); } - UNLOCK: g_mutex_unlock (mutex); - return time; } /* main thread only */ -static gint cdaudio_get_volume (gint * l, gint * r) +static void cdaudio_pause (InputPlayback * p, gboolean pause) { g_mutex_lock (mutex); - if (cdng_cfg.use_dae) - { - g_mutex_unlock (mutex); - return FALSE; - } - else - { - cdio_audio_volume_t volume; - if (cdio_audio_get_volume (pcdio, &volume) != DRIVER_OP_SUCCESS) - { - cdaudio_error ("Failed to retrieve analog CD volume."); - - g_mutex_unlock (mutex); - return FALSE; - } - *l = volume.level[0]; - *r = volume.level[1]; + if (! stop_flag) + p->output->pause (pause); - g_mutex_unlock (mutex); - return TRUE; - } + g_mutex_unlock (mutex); } /* main thread only */ -static gint cdaudio_set_volume (gint l, gint r) +static void cdaudio_mseek (InputPlayback * p, gint time) { g_mutex_lock (mutex); - if (cdng_cfg.use_dae) + if (! stop_flag) { - g_mutex_unlock (mutex); - return FALSE; + seek_time = time; + p->output->abort_write(); } - else - { - cdio_audio_volume_t volume = { {l, r, 0, 0} - }; - if (cdio_audio_set_volume (pcdio, &volume) != DRIVER_OP_SUCCESS) - { - cdaudio_error ("cdaudio-ng: failed to set analog cd volume"); - - g_mutex_unlock (mutex); - return FALSE; - } - g_mutex_unlock (mutex); - return TRUE; - } + g_mutex_unlock (mutex); } /* main thread only */ @@ -592,10 +469,10 @@ monitor_source = 0; } - if (pcdio != NULL) + if (pcdrom_drive != NULL) { - cdio_destroy (pcdio); - pcdio = NULL; + cdda_close (pcdrom_drive); + pcdrom_drive = NULL; } if (trackinfo != NULL) { @@ -607,17 +484,14 @@ // todo: destroy the gui - mcs_handle_t *db = aud_cfg_db_open (); - aud_cfg_db_set_bool (db, "CDDA", "use_dae", cdng_cfg.use_dae); - aud_cfg_db_set_int (db, "CDDA", "disc_speed", cdng_cfg.disc_speed); - aud_cfg_db_set_bool (db, "CDDA", "use_cdtext", cdng_cfg.use_cdtext); - aud_cfg_db_set_bool (db, "CDDA", "use_cddb", cdng_cfg.use_cddb); - aud_cfg_db_set_string (db, "CDDA", "cddbserver", cdng_cfg.cddb_server); - aud_cfg_db_set_string (db, "CDDA", "cddbpath", cdng_cfg.cddb_path); - aud_cfg_db_set_int (db, "CDDA", "cddbport", cdng_cfg.cddb_port); - aud_cfg_db_set_bool (db, "CDDA", "cddbhttp", cdng_cfg.cddb_http); - aud_cfg_db_set_string (db, "CDDA", "device", cdng_cfg.device); - aud_cfg_db_close (db); + aud_set_bool ("CDDA", "use_cdtext", cdng_cfg.use_cdtext); + aud_set_bool ("CDDA", "use_cddb", cdng_cfg.use_cddb); + aud_set_string ("CDDA", "device", cdng_cfg.device); + aud_set_string ("CDDA", "cddbserver", cdng_cfg.cddb_server); + aud_set_string ("CDDA", "cddbpath", cdng_cfg.cddb_path); + aud_set_int ("CDDA", "cddbport", cdng_cfg.cddb_port); + aud_set_bool ("CDDA", "cddbhttp", cdng_cfg.cddb_http); + aud_set_int ("CDDA", "disc_speed", cdng_cfg.disc_speed); g_free (cdng_cfg.device); g_free (cdng_cfg.cddb_server); @@ -628,11 +502,10 @@ g_mutex_unlock (mutex); g_mutex_free (mutex); - g_cond_free (control_cond); } /* thread safe */ -static Tuple *create_tuple_from_trackinfo_and_filename (const gchar * filename) +static Tuple * make_tuple (const gchar * filename, VFSFile * file) { Tuple *tuple = NULL; gint trackno; @@ -647,11 +520,16 @@ if (!strcmp (filename, "cdda://")) { tuple = tuple_new_from_filename (filename); - tuple->nsubtunes = 1 + lasttrackno - firsttrackno; - tuple->subtunes = g_malloc (sizeof *tuple->subtunes * tuple->nsubtunes); + gint subtunes[n_audio_tracks]; + gint i = 0; + + /* only add the audio tracks to the playlist */ for (trackno = firsttrackno; trackno <= lasttrackno; trackno++) - tuple->subtunes[trackno - firsttrackno] = trackno; + if (cdda_track_audiop (pcdrom_drive, trackno)) + subtunes[i ++] = trackno; + + tuple_set_subtunes (tuple, n_audio_tracks, subtunes); goto DONE; } @@ -664,27 +542,34 @@ goto DONE; } + if (!cdda_track_audiop (pcdrom_drive, trackno)) + { + warn ("Track %d is a data track.\n", trackno); + goto DONE; + } + tuple = tuple_new_from_filename (filename); + tuple_set_format (tuple, _("Audio CD"), 2, 44100, 1411); if (strlen (trackinfo[trackno].performer)) { - tuple_associate_string (tuple, FIELD_ARTIST, NULL, + tuple_set_str (tuple, FIELD_ARTIST, NULL, trackinfo[trackno].performer); } if (strlen (trackinfo[0].name)) { - tuple_associate_string (tuple, FIELD_ALBUM, NULL, + tuple_set_str (tuple, FIELD_ALBUM, NULL, trackinfo[0].name); } if (strlen (trackinfo[trackno].name)) { - tuple_associate_string (tuple, FIELD_TITLE, NULL, + tuple_set_str (tuple, FIELD_TITLE, NULL, trackinfo[trackno].name); } - tuple_associate_int (tuple, FIELD_TRACK_NUMBER, NULL, trackno); + tuple_set_int (tuple, FIELD_TRACK_NUMBER, NULL, trackno); - tuple_associate_int (tuple, FIELD_LENGTH, NULL, + tuple_set_int (tuple, FIELD_LENGTH, NULL, calculate_track_length (trackinfo[trackno]. startlsn, trackinfo[trackno]. @@ -692,7 +577,7 @@ if (strlen (trackinfo[trackno].genre)) { - tuple_associate_string (tuple, FIELD_GENRE, NULL, + tuple_set_str (tuple, FIELD_GENRE, NULL, trackinfo[trackno].genre); } @@ -701,120 +586,17 @@ return tuple; } -/* play thread only, mutex must be locked */ -static void do_seek (void) -{ - pdae_params->pplayback->output->flush (pdae_params->seektime); - pdae_params->currlsn = - pdae_params->startlsn + (pdae_params->seektime * 75 / 1000); - cdio_lseek (pcdio, pdae_params->currlsn * CDIO_CD_FRAMESIZE_RAW, SEEK_SET); - pdae_params->seektime = -1; -} - -/* play thread only, mutex must be locked */ -/* unlocks mutex temporarily */ -static void dae_play_loop (dae_params_t * pdae_params) -{ - InputPlayback * playback = pdae_params->pplayback; - gboolean paused = FALSE; - gint sectors = CLAMP (aud_cfg->output_buffer_size / 2, 50, 250) * - cdng_cfg.disc_speed * 75 / 1000; - void * buffer = g_malloc (2352 * sectors); - gint retry_count = 0, skip_count = 0; - gint count; - - while (playback->playing) - { - if (pdae_params->seektime >= 0) - { - do_seek (); - g_cond_signal (control_cond); - } - - if (pause_flag != paused) - { - playback->output->pause (pause_flag); - paused = pause_flag; - g_cond_signal (control_cond); - } - - if (paused) - { - g_cond_wait (control_cond, mutex); - continue; - } - - sectors = MIN (sectors, pdae_params->endlsn + 1 - pdae_params->currlsn); - - if (sectors < 1) - break; - - if (cdio_read_audio_sectors (pcdio, buffer, pdae_params->currlsn, - sectors) == DRIVER_OP_SUCCESS) - { - retry_count = 0; - skip_count = 0; - } - else if (sectors > 16) - { - /* warn ("Read failed; reducing read size.\n"); */ - sectors /= 2; - continue; - } - else if (retry_count < MAX_RETRIES) - { - warn ("Read failed; retrying.\n"); - retry_count ++; - continue; - } - else if (skip_count < MAX_SKIPS) - { - warn ("Read failed; skipping.\n"); - pdae_params->currlsn = MIN (pdae_params->currlsn + 75, - pdae_params->endlsn + 1); - skip_count ++; - continue; - } - else - { - cdaudio_error ("Too many read errors; giving up."); - break; - } - - g_mutex_unlock (mutex); - - for (count = 0; count < sectors; count ++) - playback->pass_audio (playback, FMT_S16_LE, 2, 2352, (gchar *) - buffer + 2352 * count, NULL); - - g_mutex_lock (mutex); - - pdae_params->currlsn += sectors; - } - - if (playback->playing) - { - while (playback->output->buffer_playing ()) - g_usleep (20000); - - playback->playing = FALSE; - } - - playback->output->close_audio (); - g_free (buffer); -} - /* mutex must be locked */ static void open_cd (void) { AUDDBG ("Opening CD drive.\n"); - g_return_if_fail (pcdio == NULL); + g_return_if_fail (pcdrom_drive == NULL); /* find an available, audio capable, cd drive */ if (cdng_cfg.device != NULL && strlen (cdng_cfg.device) > 0) { - pcdio = cdio_open (cdng_cfg.device, DRIVER_UNKNOWN); - if (pcdio == NULL) + pcdrom_drive = cdda_identify (cdng_cfg.device, 1, NULL); + if (pcdrom_drive == NULL) { cdaudio_error ("Failed to open CD device \"%s\".", cdng_cfg.device); return; @@ -827,8 +609,8 @@ if (ppcd_drives != NULL && *ppcd_drives != NULL) { /* we have at least one audio capable cd drive */ - pcdio = cdio_open (*ppcd_drives, DRIVER_UNKNOWN); - if (pcdio == NULL) + pcdrom_drive = cdda_identify (*ppcd_drives, 1, NULL); + if (pcdrom_drive == NULL) { cdaudio_error ("Failed to open CD."); return; @@ -838,7 +620,7 @@ } else { - cdaudio_error ("No audio capable CD drive found.\n"); + cdaudio_error ("No audio capable CD drive found."); return; } @@ -851,22 +633,33 @@ static void scan_cd (void) { AUDDBG ("Scanning CD drive.\n"); - g_return_if_fail (pcdio != NULL); + g_return_if_fail (pcdrom_drive != NULL); g_return_if_fail (trackinfo == NULL); gint trackno; - if (cdio_set_speed (pcdio, cdng_cfg.disc_speed) != DRIVER_OP_SUCCESS) + /* general track initialization */ + + /* skip endianness detection (because it only affects cdda_read, and we use + * cdio_read_audio_sectors instead) */ + pcdrom_drive->bigendianp = 0; + + /* finish initialization of drive/disc (performs disc TOC sanitization) */ + if (cdda_open (pcdrom_drive) != 0) + { + cdaudio_error ("Failed to finish initializing opened CD drive."); + goto ERR; + } + + if (cdda_speed_set (pcdrom_drive, cdng_cfg.disc_speed) != DRIVER_OP_SUCCESS) warn ("Cannot set drive speed.\n"); - /* general track initialization */ - cdrom_drive_t *pcdrom_drive = cdio_cddap_identify_cdio (pcdio, 1, NULL); // todo : check return / NULL firsttrackno = cdio_get_first_track_num (pcdrom_drive->p_cdio); lasttrackno = cdio_get_last_track_num (pcdrom_drive->p_cdio); if (firsttrackno == CDIO_INVALID_TRACK || lasttrackno == CDIO_INVALID_TRACK) { cdaudio_error ("Failed to retrieve first/last track number."); - goto ERROR; + goto ERR; } AUDDBG ("first track is %d and last track is %d\n", firsttrackno, lasttrackno); @@ -874,25 +667,29 @@ trackinfo = (trackinfo_t *) g_new (trackinfo_t, (lasttrackno + 1)); cdaudio_set_fullinfo (&trackinfo[0], - cdio_get_track_lsn (pcdrom_drive->p_cdio, 0), - cdio_get_track_last_lsn (pcdrom_drive->p_cdio, - CDIO_CDROM_LEADOUT_TRACK), + cdda_track_firstsector (pcdrom_drive, 0), + cdda_track_lastsector (pcdrom_drive, lasttrackno), "", "", ""); + n_audio_tracks = 0; + for (trackno = firsttrackno; trackno <= lasttrackno; trackno++) { cdaudio_set_fullinfo (&trackinfo[trackno], - cdio_get_track_lsn (pcdrom_drive->p_cdio, - trackno), - cdio_get_track_last_lsn (pcdrom_drive->p_cdio, - trackno), "", "", ""); + cdda_track_firstsector (pcdrom_drive, trackno), + cdda_track_lastsector (pcdrom_drive, trackno), + "", "", ""); if (trackinfo[trackno].startlsn == CDIO_INVALID_LSN || trackinfo[trackno].endlsn == CDIO_INVALID_LSN) { cdaudio_error ("Cannot read start/end LSN for track %d.", trackno); - goto ERROR; + goto ERR; } + + /* count how many tracks are audio tracks */ + if (cdda_track_audiop (pcdrom_drive, trackno)) + n_audio_tracks++; } /* get trackinfo[0] cdtext information (the disc) */ @@ -1000,15 +797,17 @@ pcddb_disc = cddb_disc_new (); - lba = cdio_get_track_lba (pcdio, CDIO_CDROM_LEADOUT_TRACK); + lba = cdio_get_track_lba (pcdrom_drive->p_cdio, + CDIO_CDROM_LEADOUT_TRACK); cddb_disc_set_length (pcddb_disc, FRAMES_TO_SECONDS (lba)); for (trackno = firsttrackno; trackno <= lasttrackno; trackno++) { pcddb_track = cddb_track_new (); cddb_track_set_frame_offset (pcddb_track, - cdio_get_track_lba (pcdio, - trackno)); + cdio_get_track_lba ( + pcdrom_drive->p_cdio, + trackno)); cddb_disc_add_track (pcddb_disc, pcddb_track); } @@ -1095,7 +894,7 @@ return; - ERROR: + ERR: g_free (trackinfo); trackinfo = NULL; } @@ -1105,15 +904,19 @@ { trigger_monitor (); - if (pcdio == NULL) + if (pcdrom_drive == NULL) { open_cd (); - if (pcdio == NULL) + if (pcdrom_drive == NULL) return; } - int mode = cdio_get_discmode (pcdio); + int mode = cdio_get_discmode (pcdrom_drive->p_cdio); +#ifdef _WIN32 /* cdio_get_discmode reports the wrong disk type sometimes */ + if (mode == CDIO_DISC_MODE_NO_INFO || mode == CDIO_DISC_MODE_ERROR) +#else if (mode != CDIO_DISC_MODE_CD_DA && mode != CDIO_DISC_MODE_CD_MIXED) +#endif { if (warning) { @@ -1128,7 +931,7 @@ return; } - if (trackinfo == NULL || cdio_get_media_changed (pcdio)) + if (trackinfo == NULL || cdio_get_media_changed (pcdrom_drive->p_cdio)) { g_free (trackinfo); trackinfo = NULL; diff -Nru audacious-plugins-2.4.4/src/cdaudio-ng/cdaudio-ng.h audacious-plugins-3.2/src/cdaudio-ng/cdaudio-ng.h --- audacious-plugins-2.4.4/src/cdaudio-ng/cdaudio-ng.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/cdaudio-ng/cdaudio-ng.h 2012-01-20 19:48:30.000000000 +0000 @@ -20,13 +20,8 @@ #define CDAUDIO_NG_H #define DEF_STRING_LEN 256 -#define CDDA_DUMMYPATH "cdda://" -#define CDDA_DEFAULT_CDDB_SERVER "freedb.org" -#define CDDA_DEFAULT_CDDB_PORT 8880 -#define CDDA_DEFAULT_PROXY_PORT 8080 #define MIN_DISC_SPEED 2 -#define DEFAULT_DISC_SPEED 2 #define MAX_DISC_SPEED 24 #endif // CDAUDIO_NG_H diff -Nru audacious-plugins-2.4.4/src/cdaudio-ng/configure.c audacious-plugins-3.2/src/cdaudio-ng/configure.c --- audacious-plugins-2.4.4/src/cdaudio-ng/configure.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/cdaudio-ng/configure.c 2012-01-20 19:48:30.000000000 +0000 @@ -38,8 +38,6 @@ { gchar portstr[16]; - /*gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(usedaecheckbutton), cdng_cfg.use_dae); */ - gtk_spin_button_set_value ((GtkSpinButton *) disc_speed_button, cdng_cfg.disc_speed); @@ -70,8 +68,6 @@ static void configure_gui_to_values (void) { - /*usedae = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usedaecheckbutton)); */ - cdng_cfg.disc_speed = gtk_spin_button_get_value ((GtkSpinButton *) disc_speed_button); @@ -121,9 +117,6 @@ (void) widget; (void) data; - /* gtk_widget_set_sensitive (disc_speed_button, gtk_toggle_button_get_active - ((GtkToggleButton *) usedaecheckbutton)); */ - gtk_widget_set_sensitive (cddbserverentry, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (usecddbcheckbutton))); @@ -180,13 +173,6 @@ misctable = gtk_table_new (2, 2, TRUE); gtk_container_add (GTK_CONTAINER (miscframe), misctable); - - /* - usedaecheckbutton = gtk_check_button_new_with_label(_("Use digital audio extraction")); - g_signal_connect(G_OBJECT(usedaecheckbutton), "toggled", G_CALLBACK(checkbutton_toggled), NULL); - gtk_table_attach_defaults(GTK_TABLE(daetable), usedaecheckbutton, 0, 2, 0, 1); - */ - gtk_table_attach_defaults ((GtkTable *) daetable, gtk_label_new (_("Disc " "speed:")), 0, 1, 0, 1); disc_speed_button = gtk_spin_button_new_with_range (MIN_DISC_SPEED, diff -Nru audacious-plugins-2.4.4/src/cdaudio-ng/configure.h audacious-plugins-3.2/src/cdaudio-ng/configure.h --- audacious-plugins-2.4.4/src/cdaudio-ng/configure.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/cdaudio-ng/configure.h 2012-01-20 19:48:30.000000000 +0000 @@ -4,8 +4,6 @@ typedef struct cdng_cfg_t { - - gboolean use_dae; gboolean use_cdtext; gboolean use_cddb; gchar *device; diff -Nru audacious-plugins-2.4.4/src/cdaudio-ng/Makefile audacious-plugins-3.2/src/cdaudio-ng/Makefile --- audacious-plugins-2.4.4/src/cdaudio-ng/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/cdaudio-ng/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -9,5 +9,5 @@ plugindir := ${plugindir}/${INPUT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${CDIO_CFLAGS} ${CDDB_CFLAGS} ${ARCH_DEFINES} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${CDIO_LIBS} ${CDDB_LIBS} ${MOWGLI_LIBS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${CDIO_CFLAGS} ${CDDB_CFLAGS} -I../.. +LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${CDIO_LIBS} ${CDDB_LIBS} diff -Nru audacious-plugins-2.4.4/src/cd-menu-items/cd-menu-items.c audacious-plugins-3.2/src/cd-menu-items/cd-menu-items.c --- audacious-plugins-2.4.4/src/cd-menu-items/cd-menu-items.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/cd-menu-items/cd-menu-items.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ /* * cd-menu-items.c - * Copyright 2009 John Lindgren + * Copyright 2009-2011 John Lindgren * * This file is part of Audacious. * @@ -21,7 +21,6 @@ #include "config.h" -#include #include #include @@ -33,51 +32,34 @@ #define N_MENUS 3 static const gchar * titles[N_ITEMS] = {N_("Play CD"), N_("Add CD")}; -static const gint menus[N_MENUS] = {AUDACIOUS_MENU_MAIN, - AUDACIOUS_MENU_PLAYLIST_ADD, AUDACIOUS_MENU_PLAYLIST_RCLICK}; +static const gint menus[N_MENUS] = {AUD_MENU_MAIN, AUD_MENU_PLAYLIST_ADD, + AUD_MENU_PLAYLIST_RCLICK}; -static GtkWidget * items[N_ITEMS * N_MENUS]; +static void cd_play (void) {aud_drct_pl_open ("cdda://"); } +static void cd_add (void) {aud_drct_pl_add ("cdda://", -1); } +static MenuFunc funcs[N_ITEMS] = {cd_play, cd_add}; -static void cd_play (void) +static gboolean cd_init (void) { - aud_drct_pl_open ("cdda://"); -} - -static void cd_add (void) -{ - aud_drct_pl_add ("cdda://", -1); -} + for (gint m = 0; m < N_MENUS; m ++) + for (gint i = 0; i < N_ITEMS; i ++) + aud_plugin_menu_add (menus[m], funcs[i], _(titles[i]), + GTK_STOCK_CDROM); -static void (* funcs[N_ITEMS]) (void) = {cd_play, cd_add}; - -static void cd_init (void) -{ - gint mcount, icount; - GtkWidget * menu, * item; - - for (mcount = 0; mcount < N_MENUS; mcount ++) - { - menu = aud_get_plugin_menu (menus[mcount]); - - for (icount = 0; icount < N_ITEMS; icount ++) - { - item = gtk_image_menu_item_new_with_label (_(titles[icount])); - gtk_image_menu_item_set_image ((GtkImageMenuItem *) item, - gtk_image_new_from_stock (GTK_STOCK_CDROM, GTK_ICON_SIZE_MENU)); - gtk_widget_show (item); - items[N_ITEMS * mcount + icount] = item; - gtk_menu_shell_append ((GtkMenuShell *) menu, item); - g_signal_connect (item, "activate", (GCallback) funcs[icount], NULL); - } - } + return TRUE; } void cd_cleanup (void) { - gint count; - - for (count = 0; count < N_ITEMS * N_MENUS; count ++) - gtk_widget_destroy (items[count]); + for (gint m = 0; m < N_MENUS; m ++) + for (gint i = 0; i < N_ITEMS; i ++) + aud_plugin_menu_remove (menus[m], funcs[i]); } -DECLARE_PLUGIN (cd-menu-items, cd_init, cd_cleanup) +AUD_GENERAL_PLUGIN +( + .name = "Audio CD Menu Items", + .enabled_by_default = TRUE, + .init = cd_init, + .cleanup = cd_cleanup, +) diff -Nru audacious-plugins-2.4.4/src/cd-menu-items/Makefile audacious-plugins-3.2/src/cd-menu-items/Makefile --- audacious-plugins-2.4.4/src/cd-menu-items/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/cd-menu-items/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -7,6 +7,6 @@ plugindir := ${plugindir}/${GENERAL_PLUGIN_DIR} -CPPFLAGS += -I../.. -CFLAGS += ${PLUGIN_CFLAGS} ${GTK_CFLAGS} +CPPFLAGS += -I../.. ${GTK_CFLAGS} +CFLAGS += ${PLUGIN_CFLAGS} LIBS += ${GTK_LIBS} diff -Nru audacious-plugins-2.4.4/src/compressor/compressor.c audacious-plugins-3.2/src/compressor/compressor.c --- audacious-plugins-2.4.4/src/compressor/compressor.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/compressor/compressor.c 2012-01-20 19:48:30.000000000 +0000 @@ -25,13 +25,13 @@ #include "compressor.h" -/* What is a "normal" target volume? Replay Gain stuff claims to use 89 dB, but - * what does that translate to in our PCM range? Does anybody even know? */ -float compressor_target = 0.5, compressor_range = 0.5; +double compressor_center, compressor_range; +/* Response time adjustments. Maybe this should be adjustable. Or maybe that + * would just be confusing. I don't know. */ #define CHUNK_TIME 0.2 /* seconds */ -#define CHUNKS 15 -#define DECAY 0.05 +#define CHUNKS 5 +#define DECAY 0.3 static float * buffer, * output, * peaks; static int output_size; @@ -60,25 +60,30 @@ * length -= writable; } -static inline float FMAX (float a, float b) -{ - return a > b ? a : b; -} +/* I used to find the maximum sample and take that as the peak, but that doesn't + * work well on badly clipped tracks. Now, I use the highly sophisticated + * method of averaging the absolute value of the samples and multiplying by 6, a + * number proved by experiment (on exactly three files) to best approximate the + * actual peak. */ static float calc_peak (float * data, int length) { - gfloat peak = 0.0; + if (! length) + return 0; + + float sum = 0; - while (length --) - peak = FMAX (peak, * data ++); + float * end = data + length; + while (data < end) + sum += fabsf (* data ++); - return peak; + return sum / length * 6; } static void do_ramp (float * data, int length, float peak_a, float peak_b) { - float a = powf (peak_a / compressor_target, compressor_range - 1); - float b = powf (peak_b / compressor_target, compressor_range - 1); + float a = powf (peak_a / compressor_center, compressor_range - 1); + float b = powf (peak_b / compressor_center, compressor_range - 1); int count; for (count = 0; count < length; count ++) @@ -111,6 +116,11 @@ #define IN_RING(i) ((ring_at + i) % CHUNKS) #define GET_PEAK(i) peaks[IN_RING (i)] +static inline float FMAX (float a, float b) +{ + return a > b ? a : b; +} + static void do_compress (float * * data, int * samples, char finish) { int count; @@ -175,7 +185,7 @@ * samples = output_filled; } -void compressor_init (void) +int compressor_init (void) { compressor_config_load (); @@ -183,6 +193,8 @@ output = NULL; output_size = 0; peaks = NULL; + + return 1; } void compressor_cleanup (void) diff -Nru audacious-plugins-2.4.4/src/compressor/compressor.h audacious-plugins-3.2/src/compressor/compressor.h --- audacious-plugins-2.4.4/src/compressor/compressor.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/compressor/compressor.h 2012-01-20 19:48:30.000000000 +0000 @@ -17,12 +17,12 @@ * the use of this software. */ -extern float compressor_target, compressor_range; +extern double compressor_center, compressor_range; void compressor_config_load (void); void compressor_config_save (void); -void compressor_init (void); +int compressor_init (void); void compressor_cleanup (void); void compressor_start (int * channels, int * rate); void compressor_process (float * * data, int * samples); diff -Nru audacious-plugins-2.4.4/src/compressor/plugin.c audacious-plugins-3.2/src/compressor/plugin.c --- audacious-plugins-2.4.4/src/compressor/plugin.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/compressor/plugin.c 2012-01-20 19:48:30.000000000 +0000 @@ -21,40 +21,48 @@ #include "config.h" -#include +#include #include +#include #include #include #include #include "compressor.h" -void compressor_config_load (void) -{ - mcs_handle_t * database = aud_cfg_db_open (); +/* What is a "normal" volume? Replay Gain stuff claims to use 89 dB, but what + * does that translate to in our PCM range? Does anybody even know? */ +static const gchar * const compressor_defaults[] = { + "center", "0.5", + "range", "0.5", + NULL}; - aud_cfg_db_get_float (database, "compressor", "target", & compressor_target); - aud_cfg_db_get_float (database, "compressor", "range", & compressor_range); +static GtkWidget * about_window = NULL; +static GtkWidget * config_window = NULL; - aud_cfg_db_close (database); +void compressor_config_load (void) +{ + aud_config_set_defaults ("compressor", compressor_defaults); + compressor_center = aud_get_double ("compressor", "center"); + compressor_range = aud_get_double ("compressor", "range"); } void compressor_config_save (void) { - mcs_handle_t * database = aud_cfg_db_open (); - - aud_cfg_db_set_float (database, "compressor", "target", compressor_target); - aud_cfg_db_set_float (database, "compressor", "range", compressor_range); + if (about_window != NULL) + gtk_widget_destroy (about_window); + if (config_window != NULL) + gtk_widget_destroy (config_window); - aud_cfg_db_close (database); + aud_set_double ("compressor", "center", compressor_center); + aud_set_double ("compressor", "range", compressor_range); } static void compressor_about (void) { - static GtkWidget * window = NULL; - - audgui_simple_message (& window, GTK_MESSAGE_INFO, _("About Dynamic Range " - "Compression Plugin"), "Dynamic Range Compression Plugin for Audacious\n" + audgui_simple_message (& about_window, GTK_MESSAGE_INFO, _("About Dynamic " + "Range Compression Plugin"), + "Dynamic Range Compression Plugin for Audacious\n" "Copyright 2010 John Lindgren\n\n" "Redistribution and use in source and binary forms, with or without " "modification, are permitted provided that the following conditions are " @@ -71,42 +79,40 @@ static void value_changed (GtkRange * range, void * data) { - * (float *) data = gtk_range_get_value (range); + * (double *) data = gtk_range_get_value (range); } static void compressor_configure (void) { - static GtkWidget * window = NULL; - - if (window == NULL) + if (config_window == NULL) { GtkWidget * vbox, * hbox, * slider, * button; - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_type_hint ((GtkWindow *) window, + config_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_type_hint ((GtkWindow *) config_window, GDK_WINDOW_TYPE_HINT_DIALOG); - gtk_window_set_resizable ((GtkWindow *) window, FALSE); - gtk_window_set_title ((GtkWindow *) window, _("Dynamic Range " + gtk_window_set_resizable ((GtkWindow *) config_window, FALSE); + gtk_window_set_title ((GtkWindow *) config_window, _("Dynamic Range " "Compressor Preferences")); - gtk_container_set_border_width ((GtkContainer *) window, 6); - g_signal_connect (window, "destroy", (GCallback) gtk_widget_destroyed, - & window); + gtk_container_set_border_width ((GtkContainer *) config_window, 6); + g_signal_connect (config_window, "destroy", (GCallback) + gtk_widget_destroyed, & config_window); vbox = gtk_vbox_new (FALSE, 6); - gtk_container_add ((GtkContainer *) window, vbox); + gtk_container_add ((GtkContainer *) config_window, vbox); hbox = gtk_hbox_new (FALSE, 6); gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0); - gtk_box_pack_start ((GtkBox *) hbox, gtk_label_new (_("Target " + gtk_box_pack_start ((GtkBox *) hbox, gtk_label_new (_("Center " "volume:")), FALSE, FALSE, 0); slider = gtk_hscale_new_with_range (0.1, 1.0, 0.1); - gtk_range_set_value ((GtkRange *) slider, compressor_target); + gtk_range_set_value ((GtkRange *) slider, compressor_center); gtk_widget_set_size_request (slider, 100, -1); gtk_box_pack_start ((GtkBox *) hbox, slider, FALSE, FALSE, 0); g_signal_connect (slider, "value-changed", (GCallback) value_changed, - & compressor_target); + & compressor_center); hbox = gtk_hbox_new (FALSE, 6); gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0); @@ -126,24 +132,22 @@ button = gtk_button_new_from_stock (GTK_STOCK_CLOSE); gtk_box_pack_end ((GtkBox *) hbox, button, FALSE, FALSE, 0); -#if GTK_CHECK_VERSION (2, 18, 0) gtk_widget_set_can_default (button, TRUE); -#endif gtk_widget_grab_default (button); g_signal_connect_swapped (button, "clicked", (GCallback) - gtk_widget_destroy, window); + gtk_widget_destroy, config_window); - audgui_destroy_on_escape (window); + audgui_destroy_on_escape (config_window); gtk_widget_show_all (vbox); } - gtk_window_present ((GtkWindow *) window); + gtk_window_present ((GtkWindow *) config_window); } -EffectPlugin compressor_plugin = -{ - .description = "Dynamic Range Compressor", +AUD_EFFECT_PLUGIN +( + .name = "Dynamic Range Compressor", .init = compressor_init, .cleanup = compressor_cleanup, .about = compressor_about, @@ -155,8 +159,4 @@ .decoder_to_output_time = compressor_decoder_to_output_time, .output_to_decoder_time = compressor_output_to_decoder_time, .preserves_format = TRUE, -}; - -EffectPlugin * compressor_list[] = {& compressor_plugin, NULL}; - -SIMPLE_EFFECT_PLUGIN (compressor, compressor_list) +) diff -Nru audacious-plugins-2.4.4/src/console/Audacious_Driver.cxx audacious-plugins-3.2/src/console/Audacious_Driver.cxx --- audacious-plugins-2.4.4/src/console/Audacious_Driver.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Audacious_Driver.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -8,6 +8,7 @@ #include "config.h" #include +#include extern "C" { #include @@ -21,6 +22,7 @@ static GMutex *seek_mutex = NULL; static GCond *seek_cond = NULL; static gint seek_value = -1; +static gboolean stop_flag = FALSE; static const gint fade_threshold = 10 * 1000; static const gint fade_length = 8 * 1000; @@ -71,9 +73,9 @@ m_type = 0; m_track = -1; - m_path = filename_split_subtune(path, &m_track); - if (m_path == NULL) - return; + const gchar * sub; + uri_parse (path, NULL, NULL, & sub, & m_track); + m_path = g_strndup (path, sub - path); m_track -= 1; @@ -158,26 +160,24 @@ if (ti != NULL) { gint length; - tuple_associate_string(ti, FIELD_ARTIST, NULL, info->author); - tuple_associate_string(ti, FIELD_ALBUM, NULL, info->game); - tuple_associate_string(ti, -1, "game", info->game); - tuple_associate_string(ti, FIELD_TITLE, NULL, info->song ? info->song : g_path_get_basename(path)); - tuple_associate_string(ti, FIELD_COPYRIGHT, NULL, info->copyright); - tuple_associate_string(ti, -1, "console", info->system); - tuple_associate_string(ti, FIELD_CODEC, NULL, info->system); - tuple_associate_string(ti, FIELD_QUALITY, NULL, "sequenced"); - tuple_associate_string(ti, -1, "dumper", info->dumper); - tuple_associate_string(ti, FIELD_COMMENT, NULL, info->comment); + tuple_set_str(ti, FIELD_ARTIST, NULL, info->author); + tuple_set_str(ti, FIELD_ALBUM, NULL, info->game); + tuple_set_str(ti, -1, "game", info->game); + tuple_set_str(ti, FIELD_TITLE, NULL, (info->song && info->song[0]) ? info->song : g_path_get_basename(path)); + tuple_set_str(ti, FIELD_COPYRIGHT, NULL, info->copyright); + tuple_set_str(ti, -1, "console", info->system); + tuple_set_str(ti, FIELD_CODEC, NULL, info->system); + tuple_set_str(ti, FIELD_QUALITY, NULL, "sequenced"); + tuple_set_str(ti, -1, "dumper", info->dumper); + tuple_set_str(ti, FIELD_COMMENT, NULL, info->comment); if (track >= 0) { - tuple_associate_int(ti, FIELD_TRACK_NUMBER, NULL, track + 1); - tuple_associate_int(ti, FIELD_SUBSONG_ID, NULL, track + 1); - tuple_associate_int(ti, FIELD_SUBSONG_NUM, NULL, info->track_count); + tuple_set_int(ti, FIELD_TRACK_NUMBER, NULL, track + 1); + tuple_set_int(ti, FIELD_SUBSONG_ID, NULL, track + 1); + tuple_set_int(ti, FIELD_SUBSONG_NUM, NULL, info->track_count); } else - { - ti->nsubtunes = info->track_count; - } + tuple_set_subtunes (ti, info->track_count, NULL); length = info->length; if (length <= 0) @@ -186,7 +186,7 @@ length = audcfg.loop_length * 1000; else if (length >= fade_threshold) length += fade_length; - tuple_associate_int(ti, FIELD_LENGTH, NULL, length); + tuple_set_int(ti, FIELD_LENGTH, NULL, length); } return ti; @@ -209,32 +209,17 @@ return NULL; } -extern "C" Tuple * console_get_file_tuple(const gchar *filename) -{ - ConsoleFileHandler fh(filename); - - if (!fh.m_type) - return NULL; - - if (!fh.load(gme_info_only)) - { - track_info_t info; - if (!log_err(fh.m_emu->track_info(&info, fh.m_track < 0 ? 0 : fh.m_track))) - return get_track_ti(fh.m_path, &info, fh.m_track); - } - - return NULL; -} - -extern "C" void console_play_file(InputPlayback *playback) +extern "C" gboolean console_play(InputPlayback *playback, const gchar *filename, + VFSFile *file, gint start_time, gint stop_time, gboolean pause) { gint length, end_delay, sample_rate; track_info_t info; + gboolean error = FALSE; // identify file - ConsoleFileHandler fh(playback->filename); + ConsoleFileHandler fh(filename); if (!fh.m_type) - return; + return FALSE; if (fh.m_track < 0) fh.m_track = 0; @@ -250,7 +235,7 @@ // create emulator and load file if (fh.load(sample_rate)) - return; + return FALSE; // stereo echo depth gme_set_stereo_depth(fh.m_emu, 1.0 / 100 * audcfg.echo); @@ -282,19 +267,22 @@ if (ti != NULL) { length = tuple_get_int(ti, FIELD_LENGTH, NULL); - tuple_free(ti); - playback->set_params(playback, NULL, 0, fh.m_emu->voice_count() * 1000, sample_rate, 2); + tuple_unref(ti); + playback->set_params(playback, fh.m_emu->voice_count() * 1000, sample_rate, 2); } } // start track if (log_err(fh.m_emu->start_track(fh.m_track))) - return; + return FALSE; log_warning(fh.m_emu); if (!playback->output->open_audio(FMT_S16_NE, sample_rate, 2)) - return; + return FALSE; + + if (pause) + playback->output->pause(TRUE); // set fade time if (length <= 0) @@ -303,18 +291,18 @@ length -= fade_length / 2; fh.m_emu->set_fade(length, fade_length); - playback->playing = 1; + stop_flag = FALSE; end_delay = 0; playback->set_pb_ready(playback); - while (playback->playing) + while (!stop_flag) { /* Perform seek, if requested */ g_mutex_lock(seek_mutex); if (seek_value >= 0) { - playback->output->flush(seek_value * 1000); - fh.m_emu->seek(seek_value * 1000); + playback->output->flush(seek_value); + fh.m_emu->seek(seek_value); seek_value = -1; g_cond_signal(seek_cond); } @@ -327,7 +315,7 @@ { // TODO: remove delay once host doesn't cut the end of track off if (!--end_delay) - playback->playing = 0; + stop_flag = TRUE; memset(buf, 0, sizeof(buf)); } else @@ -344,32 +332,56 @@ // stop playing playback->output->close_audio(); - playback->playing = 0; + stop_flag = TRUE; + + return !error; } -extern "C" void console_seek(InputPlayback *data, gint time) +extern "C" void console_seek(InputPlayback *playback, gint time) { g_mutex_lock(seek_mutex); - seek_value = time; - g_cond_wait(seek_cond, seek_mutex); + + if (!stop_flag) + { + seek_value = time; + playback->output->abort_write(); + g_cond_signal(seek_cond); + g_cond_wait(seek_cond, seek_mutex); + } + g_mutex_unlock(seek_mutex); } extern "C" void console_stop(InputPlayback *playback) { - playback->playing = 0; + g_mutex_lock(seek_mutex); + + if (!stop_flag) + { + stop_flag = TRUE; + playback->output->abort_write(); + g_cond_signal(seek_cond); + } + + g_mutex_unlock (seek_mutex); } -extern "C" void console_pause(InputPlayback * playback, gshort p) +extern "C" void console_pause(InputPlayback * playback, gboolean pause) { - playback->output->pause(p); + g_mutex_lock(seek_mutex); + + if (!stop_flag) + playback->output->pause(pause); + + g_mutex_unlock(seek_mutex); } -extern "C" void console_init(void) +extern "C" gboolean console_init (void) { console_cfg_load(); seek_mutex = g_mutex_new(); seek_cond = g_cond_new(); + return TRUE; } extern "C" void console_cleanup(void) diff -Nru audacious-plugins-2.4.4/src/console/Ay_Apu.cxx audacious-plugins-3.2/src/console/Ay_Apu.cxx --- audacious-plugins-2.4.4/src/console/Ay_Apu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Ay_Apu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Ay_Apu.h" @@ -123,8 +123,8 @@ if ( (unsigned) addr >= 14 ) { - #ifdef dprintf - dprintf( "Wrote to I/O port %02X\n", (int) addr ); + #ifdef debug_printf + debug_printf( "Wrote to I/O port %02X\n", (int) addr ); #endif } @@ -220,7 +220,7 @@ end_time = final_end_time; //if ( !(regs [12] | regs [11]) ) - // dprintf( "Used envelope period 0\n" ); + // debug_printf( "Used envelope period 0\n" ); } else if ( !volume ) { @@ -250,7 +250,7 @@ ntime = start_time + old_noise_delay; noise_lfsr = old_noise_lfsr; //if ( (regs [6] & 0x1F) == 0 ) - // dprintf( "Used noise period 0\n" ); + // debug_printf( "Used noise period 0\n" ); } // The following efficiently handles several cases (least demanding first): diff -Nru audacious-plugins-2.4.4/src/console/Ay_Apu.h audacious-plugins-3.2/src/console/Ay_Apu.h --- audacious-plugins-2.4.4/src/console/Ay_Apu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Ay_Apu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // AY-3-8910 sound chip emulator -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef AY_APU_H #define AY_APU_H diff -Nru audacious-plugins-2.4.4/src/console/Ay_Cpu.cxx audacious-plugins-3.2/src/console/Ay_Cpu.cxx --- audacious-plugins-2.4.4/src/console/Ay_Cpu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Ay_Cpu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ /* Last validated with zexall 2006.11.21 5:26 PM @@ -805,8 +805,6 @@ //////////////////////////////////////// CB prefix { case 0xCB: - unsigned data2; - data2 = INSTR( 1 ); pc++; switch ( data ) { @@ -1252,7 +1250,7 @@ case 0x4F: // LD R,A SET_R( rg.a ); - dprintf( "LD R,A not supported\n" ); + debug_printf( "LD R,A not supported\n" ); warning = true; goto loop; @@ -1262,7 +1260,7 @@ case 0x5F: // LD A,R rg.a = GET_R(); - dprintf( "LD A,R not supported\n" ); + debug_printf( "LD A,R not supported\n" ); warning = true; ld_ai_common: flags = (flags & C01) | SZ28( rg.a ) | (r.iff2 << 2 & V04); @@ -1285,7 +1283,7 @@ goto loop; default: - dprintf( "Opcode $ED $%02X not supported\n", data ); + debug_printf( "Opcode $ED $%02X not supported\n", data ); warning = true; goto loop; } @@ -1545,7 +1543,7 @@ } default: - dprintf( "Opcode $%02X $CB $%02X not supported\n", opcode, data2 ); + debug_printf( "Opcode $%02X $CB $%02X not supported\n", opcode, data2 ); warning = true; goto loop; } @@ -1634,7 +1632,7 @@ } default: - dprintf( "Unnecessary DD/FD prefix encountered\n" ); + debug_printf( "Unnecessary DD/FD prefix encountered\n" ); warning = true; pc--; goto loop; @@ -1643,7 +1641,7 @@ } } - dprintf( "Unhandled main opcode: $%02X\n", opcode ); + debug_printf( "Unhandled main opcode: $%02X\n", opcode ); assert( false ); halt: diff -Nru audacious-plugins-2.4.4/src/console/Ay_Cpu.h audacious-plugins-3.2/src/console/Ay_Cpu.h --- audacious-plugins-2.4.4/src/console/Ay_Cpu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Ay_Cpu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Z80 CPU emulator -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef AY_CPU_H #define AY_CPU_H diff -Nru audacious-plugins-2.4.4/src/console/Ay_Emu.cxx audacious-plugins-3.2/src/console/Ay_Emu.cxx --- audacious-plugins-2.4.4/src/console/Ay_Emu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Ay_Emu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Ay_Emu.h" @@ -116,7 +116,8 @@ static Music_Emu* new_ay_emu () { return BLARGG_NEW Ay_Emu ; } static Music_Emu* new_ay_file() { return BLARGG_NEW Ay_File; } -gme_type_t_ const gme_ay_type [1] = {{ "ZX Spectrum", 0, &new_ay_emu, &new_ay_file, "AY", 1 }}; +static gme_type_t_ const gme_ay_type_ = { "ZX Spectrum", 0, &new_ay_emu, &new_ay_file, "AY", 1 }; +gme_type_t const gme_ay_type = &gme_ay_type_; // Setup @@ -208,9 +209,9 @@ set_warning( "Missing file data" ); len = file.end - in; } - //dprintf( "addr: $%04X, len: $%04X\n", addr, len ); + //debug_printf( "addr: $%04X, len: $%04X\n", addr, len ); if ( addr < ram_start && addr >= 0x400 ) // several tracks use low data - dprintf( "Block addr in ROM\n" ); + debug_printf( "Block addr in ROM\n" ); memcpy( mem.ram + addr, in, len ); if ( file.end - blocks < 8 ) @@ -241,7 +242,7 @@ }; memcpy( mem.ram, passive, sizeof passive ); unsigned play_addr = get_be16( more_data + 4 ); - //dprintf( "Play: $%04X\n", play_addr ); + //debug_printf( "Play: $%04X\n", play_addr ); if ( play_addr ) { memcpy( mem.ram, active, sizeof active ); @@ -314,7 +315,7 @@ } } - dprintf( "Unmapped OUT: $%04X <- $%02X\n", addr, data ); + debug_printf( "Unmapped OUT: $%04X <- $%02X\n", addr, data ); return; enable_cpc: @@ -355,7 +356,7 @@ if ( (addr & 0xFF) == 0xFE ) return 0xFF; // other values break some beeper tunes - dprintf( "Unmapped IN : $%04X\n", addr ); + debug_printf( "Unmapped IN : $%04X\n", addr ); return 0xFF; } @@ -367,7 +368,7 @@ while ( time() < duration ) { - cpu::run( min( duration, next_play ) ); + cpu::run( min( duration, (blip_time_t) next_play ) ); if ( time() >= next_play ) { @@ -380,8 +381,8 @@ r.iff1 = r.iff2 = 0; - mem.ram [--r.sp] = r.pc >> 8; - mem.ram [--r.sp] = r.pc; + mem.ram [--r.sp] = uint8_t (r.pc >> 8); + mem.ram [--r.sp] = uint8_t (r.pc); r.pc = 0x38; cpu::adjust_time( 12 ); if ( r.im == 2 ) diff -Nru audacious-plugins-2.4.4/src/console/Ay_Emu.h audacious-plugins-3.2/src/console/Ay_Emu.h --- audacious-plugins-2.4.4/src/console/Ay_Emu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Ay_Emu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Sinclair Spectrum AY music file emulator -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef AY_EMU_H #define AY_EMU_H diff -Nru audacious-plugins-2.4.4/src/console/blargg_common.h audacious-plugins-3.2/src/console/blargg_common.h --- audacious-plugins-2.4.4/src/console/blargg_common.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/blargg_common.h 2012-01-20 19:48:30.000000000 +0000 @@ -15,6 +15,13 @@ #ifndef BLARGG_COMMON_H #define BLARGG_COMMON_H +// BLARGG_RESTRICT: equivalent to restrict, where supported +#if __GNUC__ >= 3 || _MSC_VER >= 1100 + #define BLARGG_RESTRICT __restrict +#else + #define BLARGG_RESTRICT +#endif + // STATIC_CAST(T,expr): Used in place of static_cast (expr) #ifndef STATIC_CAST #define STATIC_CAST(T,expr) ((T) (expr)) @@ -54,10 +61,11 @@ }; #ifndef BLARGG_DISABLE_NOTHROW - #if __cplusplus < 199711 - #define BLARGG_THROWS( spec ) - #else + // throw spec mandatory in ISO C++ if operator new can return NULL + #if __cplusplus >= 199711 || __GNUC__ >= 3 #define BLARGG_THROWS( spec ) throw spec + #else + #define BLARGG_THROWS( spec ) #endif #define BLARGG_DISABLE_NOTHROW \ void* operator new ( size_t s ) BLARGG_THROWS(()) { return malloc( s ); }\ @@ -68,6 +76,7 @@ #define BLARGG_NEW new (std::nothrow) #endif +// BLARGG_4CHAR('a','b','c','d') = 'abcd' (four character integer constant) #define BLARGG_4CHAR( a, b, c, d ) \ ((a&0xFF)*0x1000000L + (b&0xFF)*0x10000L + (c&0xFF)*0x100L + (d&0xFF)) @@ -76,7 +85,7 @@ #ifdef _MSC_VER // MSVC6 (_MSC_VER < 1300) fails for use of __LINE__ when /Zl is specified #define BOOST_STATIC_ASSERT( expr ) \ - void blargg_failed_( int (*arg) [2 / !!(expr) - 1] ) + void blargg_failed_( int (*arg) [2 / (int) !!(expr) - 1] ) #else // Some other compilers fail when declaring same function multiple times in class, // so differentiate them by line @@ -110,18 +119,17 @@ #endif // blargg_long/blargg_ulong = at least 32 bits, int if it's big enough -#include -#if INT_MAX >= 0x7FFFFFFF - typedef int blargg_long; -#else +#if INT_MAX < 0x7FFFFFFF || LONG_MAX == 0x7FFFFFFF typedef long blargg_long; +#else + typedef int blargg_long; #endif -#if UINT_MAX >= 0xFFFFFFFF - typedef unsigned blargg_ulong; -#else +#if UINT_MAX < 0xFFFFFFFF || ULONG_MAX == 0xFFFFFFFF typedef unsigned long blargg_ulong; +#else + typedef unsigned blargg_ulong; #endif // BOOST::int8_t etc. @@ -171,5 +179,18 @@ }; #endif +#if __GNUC__ >= 3 + #define BLARGG_DEPRECATED __attribute__ ((deprecated)) +#else + #define BLARGG_DEPRECATED +#endif + +// Use in place of "= 0;" for a pure virtual, since these cause calls to std C++ lib. +// During development, BLARGG_PURE( x ) expands to = 0; +// virtual int func() BLARGG_PURE( { return 0; } ) +#ifndef BLARGG_PURE + #define BLARGG_PURE( def ) def +#endif + #endif #endif diff -Nru audacious-plugins-2.4.4/src/console/blargg_endian.h audacious-plugins-3.2/src/console/blargg_endian.h --- audacious-plugins-2.4.4/src/console/blargg_endian.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/blargg_endian.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,20 +1,20 @@ // CPU Byte Order Utilities -// Game_Music_Emu 0.5.2 #ifndef BLARGG_ENDIAN #define BLARGG_ENDIAN #include "blargg_common.h" // BLARGG_CPU_CISC: Defined if CPU has very few general-purpose registers (< 16) -#if defined (_M_IX86) || defined (_M_IA64) || defined (__i486__) || \ - defined (__x86_64__) || defined (__ia64__) || defined (__i386__) +#if defined (__i386__) || defined (__x86_64__) || defined (_M_IX86) || defined (_M_X64) #define BLARGG_CPU_X86 1 #define BLARGG_CPU_CISC 1 #endif -#if defined (__powerpc__) || defined (__ppc__) || defined (__POWERPC__) || defined (__powerc) +#if defined (__powerpc__) || defined (__ppc__) || defined (__ppc64__) || \ + defined (__POWERPC__) || defined (__powerc) #define BLARGG_CPU_POWERPC 1 + #define BLARGG_CPU_RISC 1 #endif // BLARGG_BIG_ENDIAN, BLARGG_LITTLE_ENDIAN: Determined automatically, otherwise only @@ -36,10 +36,10 @@ #endif #if defined (MSB_FIRST) || defined (__BIG_ENDIAN__) || defined (WORDS_BIGENDIAN) || \ - defined (__mips__) || defined (__sparc__) || BLARGG_CPU_POWERPC || \ + defined (__sparc__) || BLARGG_CPU_POWERPC || \ (defined (BIG_ENDIAN) && BIG_ENDIAN+0 != 4321) #define BLARGG_BIG_ENDIAN 1 -#else +#elif !defined (__mips__) // No endian specified; assume little-endian, since it's most common #define BLARGG_LITTLE_ENDIAN 1 #endif @@ -64,45 +64,60 @@ #endif } -inline unsigned get_le16( void const* p ) { - return ((unsigned char const*) p) [1] * 0x100u + - ((unsigned char const*) p) [0]; -} -inline unsigned get_be16( void const* p ) { - return ((unsigned char const*) p) [0] * 0x100u + - ((unsigned char const*) p) [1]; -} -inline blargg_ulong get_le32( void const* p ) { - return ((unsigned char const*) p) [3] * 0x01000000u + - ((unsigned char const*) p) [2] * 0x00010000u + - ((unsigned char const*) p) [1] * 0x00000100u + - ((unsigned char const*) p) [0]; -} -inline blargg_ulong get_be32( void const* p ) { - return ((unsigned char const*) p) [0] * 0x01000000u + - ((unsigned char const*) p) [1] * 0x00010000u + - ((unsigned char const*) p) [2] * 0x00000100u + - ((unsigned char const*) p) [3]; +inline unsigned get_le16( void const* p ) +{ + return (unsigned) ((unsigned char const*) p) [1] << 8 | + (unsigned) ((unsigned char const*) p) [0]; +} + +inline unsigned get_be16( void const* p ) +{ + return (unsigned) ((unsigned char const*) p) [0] << 8 | + (unsigned) ((unsigned char const*) p) [1]; +} + +inline blargg_ulong get_le32( void const* p ) +{ + return (blargg_ulong) ((unsigned char const*) p) [3] << 24 | + (blargg_ulong) ((unsigned char const*) p) [2] << 16 | + (blargg_ulong) ((unsigned char const*) p) [1] << 8 | + (blargg_ulong) ((unsigned char const*) p) [0]; +} + +inline blargg_ulong get_be32( void const* p ) +{ + return (blargg_ulong) ((unsigned char const*) p) [0] << 24 | + (blargg_ulong) ((unsigned char const*) p) [1] << 16 | + (blargg_ulong) ((unsigned char const*) p) [2] << 8 | + (blargg_ulong) ((unsigned char const*) p) [3]; } -inline void set_le16( void* p, unsigned n ) { + +inline void set_le16( void* p, unsigned n ) +{ ((unsigned char*) p) [1] = (unsigned char) (n >> 8); ((unsigned char*) p) [0] = (unsigned char) n; } -inline void set_be16( void* p, unsigned n ) { + +inline void set_be16( void* p, unsigned n ) +{ ((unsigned char*) p) [0] = (unsigned char) (n >> 8); ((unsigned char*) p) [1] = (unsigned char) n; } -inline void set_le32( void* p, blargg_ulong n ) { - ((unsigned char*) p) [3] = (unsigned char) (n >> 24); - ((unsigned char*) p) [2] = (unsigned char) (n >> 16); - ((unsigned char*) p) [1] = (unsigned char) (n >> 8); + +inline void set_le32( void* p, blargg_ulong n ) +{ ((unsigned char*) p) [0] = (unsigned char) n; + ((unsigned char*) p) [1] = (unsigned char) (n >> 8); + ((unsigned char*) p) [2] = (unsigned char) (n >> 16); + ((unsigned char*) p) [3] = (unsigned char) (n >> 24); } -inline void set_be32( void* p, blargg_ulong n ) { - ((unsigned char*) p) [0] = (unsigned char) (n >> 24); - ((unsigned char*) p) [1] = (unsigned char) (n >> 16); - ((unsigned char*) p) [2] = (unsigned char) (n >> 8); + +inline void set_be32( void* p, blargg_ulong n ) +{ ((unsigned char*) p) [3] = (unsigned char) n; + ((unsigned char*) p) [2] = (unsigned char) (n >> 8); + ((unsigned char*) p) [1] = (unsigned char) (n >> 16); + ((unsigned char*) p) [0] = (unsigned char) (n >> 24); } #if BLARGG_NONPORTABLE @@ -117,30 +132,41 @@ #define GET_BE32( addr ) (*(BOOST::uint32_t*) (addr)) #define SET_BE16( addr, data ) (void) (*(BOOST::uint16_t*) (addr) = (data)) #define SET_BE32( addr, data ) (void) (*(BOOST::uint32_t*) (addr) = (data)) - #endif - - #if BLARGG_CPU_POWERPC && defined (__MWERKS__) - // PowerPC has special byte-reversed instructions - // to do: assumes that PowerPC is running in big-endian mode - // to do: implement for other compilers which don't support these macros - #define GET_LE16( addr ) (__lhbrx( (addr), 0 )) - #define GET_LE32( addr ) (__lwbrx( (addr), 0 )) - #define SET_LE16( addr, data ) (__sthbrx( (data), (addr), 0 )) - #define SET_LE32( addr, data ) (__stwbrx( (data), (addr), 0 )) + + #if BLARGG_CPU_POWERPC + // PowerPC has special byte-reversed instructions + #if defined (__MWERKS__) + #define GET_LE16( addr ) (__lhbrx( addr, 0 )) + #define GET_LE32( addr ) (__lwbrx( addr, 0 )) + #define SET_LE16( addr, in ) (__sthbrx( in, addr, 0 )) + #define SET_LE32( addr, in ) (__stwbrx( in, addr, 0 )) + #elif defined (__GNUC__) + #define GET_LE16( addr ) ({unsigned short ppc_lhbrx_; __asm__ volatile( "lhbrx %0,0,%1" : "=r" (ppc_lhbrx_) : "r" (addr) : "memory" ); ppc_lhbrx_;}) + #define GET_LE32( addr ) ({unsigned short ppc_lwbrx_; __asm__ volatile( "lwbrx %0,0,%1" : "=r" (ppc_lwbrx_) : "r" (addr) : "memory" ); ppc_lwbrx_;}) + #define SET_LE16( addr, in ) ({__asm__ volatile( "sthbrx %0,0,%1" : : "r" (in), "r" (addr) : "memory" );}) + #define SET_LE32( addr, in ) ({__asm__ volatile( "stwbrx %0,0,%1" : : "r" (in), "r" (addr) : "memory" );}) + #endif + #endif #endif #endif #ifndef GET_LE16 #define GET_LE16( addr ) get_le16( addr ) - #define GET_LE32( addr ) get_le32( addr ) #define SET_LE16( addr, data ) set_le16( addr, data ) +#endif + +#ifndef GET_LE32 + #define GET_LE32( addr ) get_le32( addr ) #define SET_LE32( addr, data ) set_le32( addr, data ) #endif #ifndef GET_BE16 #define GET_BE16( addr ) get_be16( addr ) - #define GET_BE32( addr ) get_be32( addr ) #define SET_BE16( addr, data ) set_be16( addr, data ) +#endif + +#ifndef GET_BE32 + #define GET_BE32( addr ) get_be32( addr ) #define SET_BE32( addr, data ) set_be32( addr, data ) #endif diff -Nru audacious-plugins-2.4.4/src/console/blargg_source.h audacious-plugins-3.2/src/console/blargg_source.h --- audacious-plugins-2.4.4/src/console/blargg_source.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/blargg_source.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,8 @@ -// Included at the beginning of library source files, after all other #include lines +/* Included at the beginning of library source files, after all other #include lines. +Sets up helpful macros and services used in my source code. They don't need +module an annoying module prefix on their names since they are defined after +all other #include lines. */ + #ifndef BLARGG_SOURCE_H #define BLARGG_SOURCE_H @@ -16,10 +20,10 @@ // Like printf() except output goes to debug log file. Might be defined to do // nothing (not even evaluate its arguments). -// void dprintf( const char* format, ... ); -inline void blargg_dprintf_( const char*, ... ) { } -#undef dprintf -#define dprintf (1) ? (void) 0 : blargg_dprintf_ +// void debug_printf( const char* format, ... ); +static inline void blargg_dprintf_( const char*, ... ) { } +#undef debug_printf +#define debug_printf (1) ? (void) 0 : blargg_dprintf_ // If enabled, evaluate expr and if false, make debug log entry with source file // and line. Meant for finding situations that should be examined further, but that @@ -42,9 +46,25 @@ #undef min #undef max +#define DEF_MIN_MAX( type ) \ + static inline type min( type x, type y ) { if ( x < y ) return x; return y; }\ + static inline type max( type x, type y ) { if ( y < x ) return x; return y; } + +DEF_MIN_MAX( int ) +DEF_MIN_MAX( unsigned ) +DEF_MIN_MAX( long ) +DEF_MIN_MAX( unsigned long ) +DEF_MIN_MAX( float ) +DEF_MIN_MAX( double ) + +#undef DEF_MIN_MAX + +/* // using const references generates crappy code, and I am currenly only using these // for built-in types, so they take arguments by value +// TODO: remove +inline int min( int x, int y ) template inline T min( T x, T y ) { @@ -60,17 +80,29 @@ return y; return x; } +*/ // TODO: good idea? bad idea? #undef byte #define byte byte_ typedef unsigned char byte; +// Setup compiler defines useful for exporting required public API symbols in gme.cpp +#ifndef BLARGG_EXPORT + #if defined (_WIN32) && defined(BLARGG_BUILD_DLL) + #define BLARGG_EXPORT __declspec(dllexport) + #elif defined (LIBGME_VISIBILITY) + #define BLARGG_EXPORT __attribute__((visibility ("default"))) + #else + #define BLARGG_EXPORT + #endif +#endif + // deprecated #define BLARGG_CHECK_ALLOC CHECK_ALLOC #define BLARGG_RETURN_ERR RETURN_ERR -// BLARGG_SOURCE_BEGIN: If defined, #included, allowing redefition of dprintf and check +// BLARGG_SOURCE_BEGIN: If defined, #included, allowing redefition of debug_printf and check #ifdef BLARGG_SOURCE_BEGIN #include BLARGG_SOURCE_BEGIN #endif diff -Nru audacious-plugins-2.4.4/src/console/Blip_Buffer.cxx audacious-plugins-3.2/src/console/Blip_Buffer.cxx --- audacious-plugins-2.4.4/src/console/Blip_Buffer.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Blip_Buffer.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -27,7 +27,7 @@ Blip_Buffer::Blip_Buffer() { - factor_ = UINT_MAX; + factor_ = (blip_ulong)-1 / 2; offset_ = 0; buffer_ = 0; buffer_size_ = 0; @@ -85,7 +85,7 @@ } // start with maximum length that resampled time can represent - long new_size = (ULONG_MAX >> BLIP_BUFFER_ACCURACY) - blip_buffer_extra_ - 64; + long new_size = (UINT_MAX >> BLIP_BUFFER_ACCURACY) - blip_buffer_extra_ - 64; if ( msec != blip_max_length ) { long s = (new_rate * (msec + 1) + 999) / 1000; @@ -233,18 +233,32 @@ double const to_angle = PI / 2 / maxh / oversample; for ( int i = 0; i < count; i++ ) { - double angle = ((i - count) * 2 + 1) * to_angle; - double c = rolloff * cos( (maxh - 1.0) * angle ) - cos( maxh * angle ); - double cos_nc_angle = cos( maxh * cutoff * angle ); - double cos_nc1_angle = cos( (maxh * cutoff - 1.0) * angle ); - double cos_angle = cos( angle ); - - c = c * pow_a_n - rolloff * cos_nc1_angle + cos_nc_angle; - double d = 1.0 + rolloff * (rolloff - cos_angle - cos_angle); - double b = 2.0 - cos_angle - cos_angle; - double a = 1.0 - cos_angle - cos_nc_angle + cos_nc1_angle; + double angle = ((i - count) * 2 + 1) * to_angle; + double angle_maxh = angle * maxh; + double angle_maxh_mid = angle_maxh * cutoff; - out [i] = (float) ((a * d + c * b) / (b * d)); // a / b + c / d + double y = maxh; + + // 0 to Fs/2*cutoff, flat + if ( angle_maxh_mid ) // unstable at t=0 + y *= sin( angle_maxh_mid ) / angle_maxh_mid; + + // Fs/2*cutoff to Fs/2, logarithmic rolloff + double cosa = cos( angle ); + double den = 1 + rolloff * (rolloff - cosa - cosa); + + // Becomes unstable when rolloff is near 1.0 and t is near 0, + // which is the only time den becomes small + if ( den > 1e-13 ) + { + double num = + (cos( angle_maxh - angle ) * rolloff - cos( angle_maxh )) * pow_a_n - + cos( angle_maxh_mid - angle ) * rolloff + cos( angle_maxh_mid ); + + y = y * cutoff + num / den; + } + + out [i] = (float) y; } } @@ -263,7 +277,7 @@ // apply (half of) hamming window double to_fraction = PI / (count - 1); for ( int i = count; i--; ) - out [i] *= 0.54 - 0.46 * cos( i * to_fraction ); + out [i] *= 0.54f - 0.46f * (float) cos( i * to_fraction ); } void Blip_Synth_::adjust_impulse() @@ -281,7 +295,7 @@ } if ( p == p2 ) error /= 2; // phase = 0.5 impulse uses same half for both sides - impulses [size - blip_res + p] += error; + impulses [size - blip_res + p] += (short) error; //printf( "error: %ld\n", error ); } diff -Nru audacious-plugins-2.4.4/src/console/Blip_Buffer.h audacious-plugins-3.2/src/console/Blip_Buffer.h --- audacious-plugins-2.4.4/src/console/Blip_Buffer.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Blip_Buffer.h 2012-01-20 19:48:30.000000000 +0000 @@ -6,13 +6,12 @@ // internal #include - #if INT_MAX >= 0x7FFFFFFF - typedef int blip_long; - typedef unsigned int blip_ulong; - #else - typedef long blip_long; - typedef unsigned long blip_ulong; + #if INT_MAX < 0x7FFFFFFF + #error "int must be at least 32 bits" #endif + + typedef int blip_long; + typedef unsigned blip_ulong; // Time unit at source clock rate typedef blip_long blip_time_t; @@ -121,7 +120,9 @@ friend class Blip_Reader; }; -#include "config.h" +#ifdef HAVE_CONFIG_H + #include "config.h" +#endif // Number of bits in resample ratio fraction. Higher values give a more accurate ratio // but reduce maximum buffer size. diff -Nru audacious-plugins-2.4.4/src/console/Classic_Emu.cxx audacious-plugins-3.2/src/console/Classic_Emu.cxx --- audacious-plugins-2.4.4/src/console/Classic_Emu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Classic_Emu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Classic_Emu.h" @@ -40,7 +40,7 @@ Music_Emu::set_equalizer_( eq ); update_eq( eq.treble ); if ( buf ) - buf->bass_freq( equalizer().bass ); + buf->bass_freq( (int) equalizer().bass ); } blargg_err_t Classic_Emu::set_sample_rate_( long rate ) @@ -176,9 +176,9 @@ if ( 0 ) { - dprintf( "addr: %X\n", addr ); - dprintf( "file_size: %d\n", file_size_ ); - dprintf( "rounded: %d\n", rounded ); - dprintf( "mask: $%X\n", mask ); + debug_printf( "addr: %X\n", addr ); + debug_printf( "file_size: %d\n", file_size_ ); + debug_printf( "rounded: %d\n", rounded ); + debug_printf( "mask: $%X\n", mask ); } } diff -Nru audacious-plugins-2.4.4/src/console/Classic_Emu.h audacious-plugins-3.2/src/console/Classic_Emu.h --- audacious-plugins-2.4.4/src/console/Classic_Emu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Classic_Emu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Common aspects of emulators which use Blip_Buffer for sound output -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef CLASSIC_EMU_H #define CLASSIC_EMU_H diff -Nru audacious-plugins-2.4.4/src/console/configure.c audacious-plugins-3.2/src/console/configure.c --- audacious-plugins-2.4.4/src/console/configure.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/configure.c 2012-01-20 19:48:30.000000000 +0000 @@ -13,52 +13,51 @@ #include #include -#include +#include #include +#include #include #define CON_CFGID "console" -AudaciousConsoleConfig audcfg = { - 180, - FALSE, - 32000, - 0, - 0, - FALSE, - 0, - FALSE -}; +AudaciousConsoleConfig audcfg; +static const gchar * const console_defaults[] = { + "loop_length", "180", + "resample", "FALSE", + "resample_rate", "32000", + "treble", "0", + "bass", "0", + "ignore_spc_length", "FALSE", + "echo", "0", + "inc_spc_reverb", "FALSE", + NULL}; // TODO: add UI for echo -void console_cfg_load( void ) +void console_cfg_load (void) { - mcs_handle_t *db = aud_cfg_db_open(); - aud_cfg_db_get_int(db, CON_CFGID, "loop_length", &audcfg.loop_length); - aud_cfg_db_get_bool(db, CON_CFGID, "resample", &audcfg.resample); - aud_cfg_db_get_int(db, CON_CFGID, "resample_rate", &audcfg.resample_rate); - aud_cfg_db_get_int(db, CON_CFGID, "treble", &audcfg.treble); - aud_cfg_db_get_int(db, CON_CFGID, "bass", &audcfg.bass); - aud_cfg_db_get_bool(db, CON_CFGID, "ignore_spc_length", &audcfg.ignore_spc_length); - aud_cfg_db_get_int(db, CON_CFGID, "echo", &audcfg.echo); - aud_cfg_db_get_bool(db, CON_CFGID, "inc_spc_reverb", &audcfg.inc_spc_reverb); - aud_cfg_db_close(db); -} - + aud_config_set_defaults (CON_CFGID, console_defaults); -void console_cfg_save( void ) -{ - mcs_handle_t *db = aud_cfg_db_open(); - aud_cfg_db_set_int(db, CON_CFGID, "loop_length", audcfg.loop_length); - aud_cfg_db_set_bool(db, CON_CFGID, "resample", audcfg.resample); - aud_cfg_db_set_int(db, CON_CFGID, "resample_rate", audcfg.resample_rate); - aud_cfg_db_set_int(db, CON_CFGID, "treble", audcfg.treble); - aud_cfg_db_set_int(db, CON_CFGID, "bass", audcfg.bass); - aud_cfg_db_set_bool(db, CON_CFGID, "ignore_spc_length", audcfg.ignore_spc_length); - aud_cfg_db_set_int(db, CON_CFGID, "echo", audcfg.echo); - aud_cfg_db_set_bool(db, CON_CFGID, "inc_spc_reverb", audcfg.inc_spc_reverb); - aud_cfg_db_close(db); + audcfg.loop_length = aud_get_int (CON_CFGID, "loop_length"); + audcfg.resample = aud_get_bool (CON_CFGID, "resample"); + audcfg.resample_rate = aud_get_int (CON_CFGID, "resample_rate"); + audcfg.treble = aud_get_int (CON_CFGID, "treble"); + audcfg.bass = aud_get_int (CON_CFGID, "bass"); + audcfg.ignore_spc_length = aud_get_bool (CON_CFGID, "ignore_spc_length"); + audcfg.echo = aud_get_int (CON_CFGID, "echo"); + audcfg.inc_spc_reverb = aud_get_bool (CON_CFGID, "inc_spc_reverb"); +} + +void console_cfg_save (void) +{ + aud_set_int (CON_CFGID, "loop_length", audcfg.loop_length); + aud_set_bool (CON_CFGID, "resample", audcfg.resample); + aud_set_int (CON_CFGID, "resample_rate", audcfg.resample_rate); + aud_set_int (CON_CFGID, "treble", audcfg.treble); + aud_set_int (CON_CFGID, "bass", audcfg.bass); + aud_set_bool (CON_CFGID, "ignore_spc_length", audcfg.ignore_spc_length); + aud_set_int (CON_CFGID, "echo", audcfg.echo); + aud_set_bool (CON_CFGID, "inc_spc_reverb", audcfg.inc_spc_reverb); } @@ -268,11 +267,9 @@ gtk_container_add( GTK_CONTAINER(hbuttonbox) , button_ok ); gtk_box_pack_start( GTK_BOX(configwin_vbox) , hbuttonbox , FALSE , FALSE , 0 ); -#if GTK_CHECK_VERSION (2, 12, 0) gtk_widget_set_tooltip_text( configwin_gen_playback_deflen_spbt , _("The default song length, expressed in seconds, is used for songs " "that do not provide length information (i.e. looping tracks).")); -#endif gtk_widget_show_all( configwin ); } diff -Nru audacious-plugins-2.4.4/src/console/Data_Reader.cxx audacious-plugins-3.2/src/console/Data_Reader.cxx --- audacious-plugins-2.4.4/src/console/Data_Reader.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Data_Reader.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -122,7 +122,7 @@ { long first = read_first( out, count ); long second = count - first; - if ( second <= 0 ) + if ( !second ) return 0; return in->read( (char*) out + first, second ); } diff -Nru audacious-plugins-2.4.4/src/console/Data_Reader.h audacious-plugins-3.2/src/console/Data_Reader.h --- audacious-plugins-2.4.4/src/console/Data_Reader.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Data_Reader.h 2012-01-20 19:48:30.000000000 +0000 @@ -116,7 +116,7 @@ // Invokes callback function to read data. Size of data must be specified in advance. class Callback_Reader : public Data_Reader { public: - typedef const char* (*callback_t)( void* data, void* out, long count ); + typedef const char* (*callback_t)( void* data, void* out, int count ); Callback_Reader( callback_t, long size, void* data = 0 ); public: long read_avail( void*, long ); diff -Nru audacious-plugins-2.4.4/src/console/Dual_Resampler.cxx audacious-plugins-3.2/src/console/Dual_Resampler.cxx --- audacious-plugins-2.4.4/src/console/Dual_Resampler.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Dual_Resampler.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Dual_Resampler.h" diff -Nru audacious-plugins-2.4.4/src/console/Dual_Resampler.h audacious-plugins-3.2/src/console/Dual_Resampler.h --- audacious-plugins-2.4.4/src/console/Dual_Resampler.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Dual_Resampler.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Combination of Fir_Resampler and Blip_Buffer mixing. Used by Sega FM emulators. -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef DUAL_RESAMPLER_H #define DUAL_RESAMPLER_H diff -Nru audacious-plugins-2.4.4/src/console/Effects_Buffer.cxx audacious-plugins-3.2/src/console/Effects_Buffer.cxx --- audacious-plugins-2.4.4/src/console/Effects_Buffer.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Effects_Buffer.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Effects_Buffer.h" @@ -415,8 +415,8 @@ reverb_buf [(reverb_pos + chans.reverb_delay_r) & reverb_mask]; fixed_t reverb_level = chans.reverb_level; - reverb_buf [reverb_pos] = FMUL( new_reverb_l, reverb_level ); - reverb_buf [reverb_pos + 1] = FMUL( new_reverb_r, reverb_level ); + reverb_buf [reverb_pos] = (blip_sample_t) FMUL( new_reverb_l, reverb_level ); + reverb_buf [reverb_pos + 1] = (blip_sample_t) FMUL( new_reverb_r, reverb_level ); reverb_pos = (reverb_pos + 2) & reverb_mask; int sum3_s = BLIP_READER_READ( center ); @@ -486,8 +486,8 @@ BLIP_READER_NEXT( r1, bass ); fixed_t reverb_level = chans.reverb_level; - reverb_buf [reverb_pos] = FMUL( new_reverb_l, reverb_level ); - reverb_buf [reverb_pos + 1] = FMUL( new_reverb_r, reverb_level ); + reverb_buf [reverb_pos] = (blip_sample_t) FMUL( new_reverb_l, reverb_level ); + reverb_buf [reverb_pos + 1] = (blip_sample_t) FMUL( new_reverb_r, reverb_level ); reverb_pos = (reverb_pos + 2) & reverb_mask; int sum3_s = BLIP_READER_READ( center ); diff -Nru audacious-plugins-2.4.4/src/console/Effects_Buffer.h audacious-plugins-3.2/src/console/Effects_Buffer.h --- audacious-plugins-2.4.4/src/console/Effects_Buffer.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Effects_Buffer.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Multi-channel effects buffer with panning, echo and reverb -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef EFFECTS_BUFFER_H #define EFFECTS_BUFFER_H diff -Nru audacious-plugins-2.4.4/src/console/Fir_Resampler.cxx audacious-plugins-3.2/src/console/Fir_Resampler.cxx --- audacious-plugins-2.4.4/src/console/Fir_Resampler.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Fir_Resampler.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Fir_Resampler.h" diff -Nru audacious-plugins-2.4.4/src/console/Fir_Resampler.h audacious-plugins-3.2/src/console/Fir_Resampler.h --- audacious-plugins-2.4.4/src/console/Fir_Resampler.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Fir_Resampler.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Finite impulse response (FIR) resampler with adjustable FIR size -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef FIR_RESAMPLER_H #define FIR_RESAMPLER_H diff -Nru audacious-plugins-2.4.4/src/console/Gb_Apu.cxx audacious-plugins-3.2/src/console/Gb_Apu.cxx --- audacious-plugins-2.4.4/src/console/Gb_Apu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Gb_Apu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -271,7 +271,7 @@ } else { - //dprintf( "APU powered on\n" ); + //debug_printf( "APU powered on\n" ); } } } diff -Nru audacious-plugins-2.4.4/src/console/Gb_Cpu.cxx audacious-plugins-3.2/src/console/Gb_Cpu.cxx --- audacious-plugins-2.4.4/src/console/Gb_Cpu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Gb_Cpu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Gb_Cpu.h" diff -Nru audacious-plugins-2.4.4/src/console/Gb_Cpu.h audacious-plugins-3.2/src/console/Gb_Cpu.h --- audacious-plugins-2.4.4/src/console/Gb_Cpu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Gb_Cpu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,7 +1,7 @@ // Nintendo Game Boy CPU emulator // Treats every instruction as taking 4 cycles -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef GB_CPU_H #define GB_CPU_H diff -Nru audacious-plugins-2.4.4/src/console/gb_cpu_io.h audacious-plugins-3.2/src/console/gb_cpu_io.h --- audacious-plugins-2.4.4/src/console/gb_cpu_io.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/gb_cpu_io.h 2012-01-20 19:48:30.000000000 +0000 @@ -10,9 +10,9 @@ result = apu.read_register( clock(), addr ); #ifndef NDEBUG else if ( unsigned (addr - 0x8000) < 0x2000 || unsigned (addr - 0xE000) < 0x1F00 ) - dprintf( "Read from unmapped memory $%.4x\n", (unsigned) addr ); + debug_printf( "Read from unmapped memory $%.4x\n", (unsigned) addr ); else if ( unsigned (addr - 0xFF01) < 0xFF80 - 0xFF01 ) - dprintf( "Unhandled I/O read 0x%4X\n", (unsigned) addr ); + debug_printf( "Unhandled I/O read 0x%4X\n", (unsigned) addr ); #endif return result; } @@ -38,7 +38,7 @@ ram [offset] = 0xFF; //if ( addr == 0xFFFF ) - // dprintf( "Wrote interrupt mask\n" ); + // debug_printf( "Wrote interrupt mask\n" ); } } else if ( (addr ^ 0x2000) <= 0x2000 - 1 ) @@ -48,7 +48,7 @@ #ifndef NDEBUG else if ( unsigned (addr - 0x8000) < 0x2000 || unsigned (addr - 0xE000) < 0x1F00 ) { - dprintf( "Wrote to unmapped memory $%.4x\n", (unsigned) addr ); + debug_printf( "Wrote to unmapped memory $%.4x\n", (unsigned) addr ); } #endif } @@ -59,7 +59,7 @@ #define CPU_READ_FAST_( emu, addr, time, out ) \ {\ out = READ_PROG( addr );\ - if ( unsigned (addr - Gb_Apu::start_addr) <= Gb_Apu::register_count )\ + if ( unsigned (addr - Gb_Apu::start_addr) < Gb_Apu::register_count )\ out = emu->apu.read_register( emu->cpu_time - time * clocks_per_instr, addr );\ else\ check( out == emu->cpu_read( addr ) );\ diff -Nru audacious-plugins-2.4.4/src/console/Gb_Oscs.h audacious-plugins-3.2/src/console/Gb_Oscs.h --- audacious-plugins-2.4.4/src/console/Gb_Oscs.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Gb_Oscs.h 2012-01-20 19:48:30.000000000 +0000 @@ -21,7 +21,7 @@ int last_amp; int volume; int length; - bool enabled; + int enabled; void reset(); void clock_length(); diff -Nru audacious-plugins-2.4.4/src/console/Gbs_Emu.cxx audacious-plugins-3.2/src/console/Gbs_Emu.cxx --- audacious-plugins-2.4.4/src/console/Gbs_Emu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Gbs_Emu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Gbs_Emu.h" @@ -99,7 +99,8 @@ static Music_Emu* new_gbs_emu () { return BLARGG_NEW Gbs_Emu ; } static Music_Emu* new_gbs_file() { return BLARGG_NEW Gbs_File; } -gme_type_t_ const gme_gbs_type [1] = {{ "Game Boy", 0, &new_gbs_emu, &new_gbs_file, "GBS", 1 }}; +static gme_type_t_ const gme_gbs_type_ = { "Game Boy", 0, &new_gbs_emu, &new_gbs_file, "GBS", 1 }; +gme_type_t const gme_gbs_type = &gme_gbs_type_; // Setup @@ -150,7 +151,7 @@ { // TODO: what is the correct behavior? Current Game & Watch Gallery // rip requires that this have no effect or set to bank 1. - //dprintf( "Selected ROM bank 0\n" ); + //debug_printf( "Selected ROM bank 0\n" ); return; //n = 1; } @@ -211,11 +212,11 @@ for ( int i = 0; i < (int) sizeof sound_data; i++ ) apu.write_register( 0, i + apu.start_addr, sound_data [i] ); - cpu::reset( rom.unmapped() ); - unsigned load_addr = get_le16( header_.load_addr ); - cpu::rst_base = load_addr; rom.set_addr( load_addr ); + cpu::rst_base = load_addr; + + cpu::reset( rom.unmapped() ); cpu::map_code( ram_addr, 0x10000 - ram_addr, ram ); cpu::map_code( 0, bank_size, rom.at_addr( 0 ) ); @@ -264,13 +265,13 @@ } else if ( cpu::r.pc > 0xFFFF ) { - dprintf( "PC wrapped around\n" ); + debug_printf( "PC wrapped around\n" ); cpu::r.pc &= 0xFFFF; } else { set_warning( "Emulation error (illegal/unsupported instruction)" ); - dprintf( "Bad opcode $%.2x at $%.4x\n", + debug_printf( "Bad opcode $%.2x at $%.4x\n", (int) *cpu::get_code( cpu::r.pc ), (int) cpu::r.pc ); cpu::r.pc = (cpu::r.pc + 1) & 0xFFFF; cpu_time += 6; diff -Nru audacious-plugins-2.4.4/src/console/Gbs_Emu.h audacious-plugins-3.2/src/console/Gbs_Emu.h --- audacious-plugins-2.4.4/src/console/Gbs_Emu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Gbs_Emu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Nintendo Game Boy GBS music file emulator -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef GBS_EMU_H #define GBS_EMU_H diff -Nru audacious-plugins-2.4.4/src/console/gme.cxx audacious-plugins-3.2/src/console/gme.cxx --- audacious-plugins-2.4.4/src/console/gme.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/gme.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,7 +1,8 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Music_Emu.h" +#include "gme_types.h" #if !GME_DISABLE_STEREO_DEPTH #include "Effects_Buffer.h" #endif @@ -22,33 +23,51 @@ #include "blargg_source.h" -#ifndef GME_TYPE_LIST - -// Default list of all supported game music types (copy this to blargg_config.h -// if you want to modify it) -#define GME_TYPE_LIST \ - gme_ay_type,\ - gme_gbs_type,\ - gme_gym_type,\ - gme_hes_type,\ - gme_kss_type,\ - gme_nsf_type,\ - gme_nsfe_type,\ - gme_sap_type,\ - gme_spc_type,\ - gme_vgm_type,\ - gme_vgz_type - +BLARGG_EXPORT gme_type_t const* gme_type_list() +{ + static gme_type_t const gme_type_list_ [] = { +#ifdef GME_TYPE_LIST + GME_TYPE_LIST, +#else + #ifdef USE_GME_AY + gme_ay_type, + #endif + #ifdef USE_GME_GBS + gme_gbs_type, + #endif + #ifdef USE_GME_GYM + gme_gym_type, + #endif + #ifdef USE_GME_HES + gme_hes_type, + #endif + #ifdef USE_GME_KSS + gme_kss_type, + #endif + #ifdef USE_GME_NSF + gme_nsf_type, + #endif + #ifdef USE_GME_NSFE + gme_nsfe_type, + #endif + #ifdef USE_GME_SAP + gme_sap_type, + #endif + #ifdef USE_GME_SPC + gme_spc_type, + #endif + #ifdef USE_GME_VGM + gme_vgm_type, + gme_vgz_type, + #endif #endif + 0 + }; -static gme_type_t const gme_type_list_ [] = { GME_TYPE_LIST, 0 }; - -gme_type_t const* gme_type_list() -{ return gme_type_list_; } -const char* gme_identify_header( void const* header ) +BLARGG_EXPORT const char* gme_identify_header( void const* header ) { switch ( get_be32( header ) ) { @@ -77,7 +96,7 @@ *out = 0; // extension too long } -gme_type_t gme_identify_extension( const char* extension_ ) +BLARGG_EXPORT gme_type_t gme_identify_extension( const char* extension_ ) { char const* end = strrchr( extension_, '.' ); if ( end ) @@ -86,13 +105,13 @@ char extension [6]; to_uppercase( extension_, sizeof extension, extension ); - for ( gme_type_t const* types = gme_type_list_; *types; types++ ) + for ( gme_type_t const* types = gme_type_list(); *types; types++ ) if ( !strcmp( extension, (*types)->extension_ ) ) return *types; return 0; } -gme_err_t gme_identify_file( const char* path, gme_type_t* type_out ) +BLARGG_EXPORT gme_err_t gme_identify_file( const char* path, gme_type_t* type_out ) { *type_out = gme_identify_extension( path ); // TODO: don't examine header if file has extension? @@ -107,7 +126,7 @@ return 0; } -gme_err_t gme_open_data( void const* data, long size, Music_Emu** out, long sample_rate ) +BLARGG_EXPORT gme_err_t gme_open_data( void const* data, long size, Music_Emu** out, int sample_rate ) { require( (data || !size) && out ); *out = 0; @@ -131,7 +150,7 @@ return err; } -gme_err_t gme_open_file( const char* path, Music_Emu** out, long sample_rate ) +BLARGG_EXPORT gme_err_t gme_open_file( const char* path, Music_Emu** out, int sample_rate ) { require( path && out ); *out = 0; @@ -168,7 +187,7 @@ return err; } -Music_Emu* gme_new_emu( gme_type_t type, long rate ) +BLARGG_EXPORT Music_Emu* gme_new_emu( gme_type_t type, int rate ) { if ( type ) { @@ -201,34 +220,107 @@ return 0; } -gme_err_t gme_load_file( Music_Emu* me, const char* path ) { return me->load_file( path ); } +BLARGG_EXPORT gme_err_t gme_load_file( Music_Emu* me, const char* path ) { return me->load_file( path ); } -gme_err_t gme_load_data( Music_Emu* me, void const* data, long size ) +BLARGG_EXPORT gme_err_t gme_load_data( Music_Emu* me, void const* data, long size ) { Mem_File_Reader in( data, size ); return me->load( in ); } -gme_err_t gme_load_custom( Music_Emu* me, gme_reader_t func, long size, void* data ) +BLARGG_EXPORT gme_err_t gme_load_custom( Music_Emu* me, gme_reader_t func, long size, void* data ) { Callback_Reader in( func, size, data ); return me->load( in ); } -void gme_delete( Music_Emu* me ) { delete me; } +BLARGG_EXPORT void gme_delete( Music_Emu* me ) { delete me; } -gme_type_t gme_type( Music_Emu const* me ) { return me->type(); } +BLARGG_EXPORT gme_type_t gme_type( Music_Emu const* me ) { return me->type(); } -const char* gme_warning( Music_Emu* me ) { return me->warning(); } +BLARGG_EXPORT const char* gme_warning( Music_Emu* me ) { return me->warning(); } -int gme_track_count( Music_Emu const* me ) { return me->track_count(); } +BLARGG_EXPORT int gme_track_count( Music_Emu const* me ) { return me->track_count(); } + +struct gme_info_t_ : gme_info_t +{ + track_info_t info; + + BLARGG_DISABLE_NOTHROW +}; + +BLARGG_EXPORT gme_err_t gme_track_info( Music_Emu const* me, gme_info_t** out, int track ) +{ + *out = NULL; + + gme_info_t_* info = BLARGG_NEW gme_info_t_; + CHECK_ALLOC( info ); + + gme_err_t err = me->track_info( &info->info, track ); + if ( err ) + { + gme_free_info( info ); + return err; + } + + #define COPY(name) info->name = info->info.name; + + COPY( length ); + COPY( intro_length ); + COPY( loop_length ); + + info->i4 = -1; + info->i5 = -1; + info->i6 = -1; + info->i7 = -1; + info->i8 = -1; + info->i9 = -1; + info->i10 = -1; + info->i11 = -1; + info->i12 = -1; + info->i13 = -1; + info->i14 = -1; + info->i15 = -1; + + info->s7 = ""; + info->s8 = ""; + info->s9 = ""; + info->s10 = ""; + info->s11 = ""; + info->s12 = ""; + info->s13 = ""; + info->s14 = ""; + info->s15 = ""; + + COPY( system ); + COPY( game ); + COPY( song ); + COPY( author ); + COPY( copyright ); + COPY( comment ); + COPY( dumper ); + + #undef COPY + + info->play_length = info->length; + if ( info->play_length <= 0 ) + { + info->play_length = info->intro_length + 2 * info->loop_length; // intro + 2 loops + if ( info->play_length <= 0 ) + info->play_length = 150 * 1000; // 2.5 minutes + } + + *out = info; + + return 0; +} -const char* gme_track_info( Music_Emu const* me, track_info_t* out, int track ) +BLARGG_EXPORT void gme_free_info( gme_info_t* info ) { - return me->track_info( out, track ); + delete STATIC_CAST(gme_info_t_*,info); } -void gme_set_stereo_depth( Music_Emu* me, double depth ) +BLARGG_EXPORT void gme_set_stereo_depth( Music_Emu* me, double depth ) { #if !GME_DISABLE_STEREO_DEPTH if ( me->effects_buffer ) @@ -236,21 +328,49 @@ #endif } -void* gme_user_data ( Music_Emu const* me ) { return me->user_data(); } -void gme_set_user_data ( Music_Emu* me, void* new_user_data ) { me->set_user_data( new_user_data ); } -void gme_set_user_cleanup(Music_Emu* me, gme_user_cleanup_t func ) { me->set_user_cleanup( func ); } - -gme_err_t gme_start_track ( Music_Emu* me, int index ) { return me->start_track( index ); } -gme_err_t gme_play ( Music_Emu* me, long n, short* p ) { return me->play( n, p ); } -void gme_set_fade ( Music_Emu* me, long start_msec ) { me->set_fade( start_msec ); } -int gme_track_ended ( Music_Emu const* me ) { return me->track_ended(); } -long gme_tell ( Music_Emu const* me ) { return me->tell(); } -gme_err_t gme_seek ( Music_Emu* me, long msec ) { return me->seek( msec ); } -int gme_voice_count ( Music_Emu const* me ) { return me->voice_count(); } -void gme_ignore_silence ( Music_Emu* me, int disable ) { me->ignore_silence( disable != 0 ); } -void gme_set_tempo ( Music_Emu* me, double t ) { me->set_tempo( t ); } -void gme_mute_voice ( Music_Emu* me, int index, int mute ) { me->mute_voice( index, mute != 0 ); } -void gme_mute_voices ( Music_Emu* me, int mask ) { me->mute_voices( mask ); } -void gme_set_equalizer ( Music_Emu* me, gme_equalizer_t const* eq ) { me->set_equalizer( *eq ); } -gme_equalizer_t gme_equalizer( Music_Emu const* me ) { return me->equalizer(); } -const char** gme_voice_names ( Music_Emu const* me ) { return me->voice_names(); } +BLARGG_EXPORT void* gme_user_data ( Music_Emu const* me ) { return me->user_data(); } +BLARGG_EXPORT void gme_set_user_data ( Music_Emu* me, void* new_user_data ) { me->set_user_data( new_user_data ); } +BLARGG_EXPORT void gme_set_user_cleanup(Music_Emu* me, gme_user_cleanup_t func ) { me->set_user_cleanup( func ); } + +BLARGG_EXPORT gme_err_t gme_start_track ( Music_Emu* me, int index ) { return me->start_track( index ); } +BLARGG_EXPORT gme_err_t gme_play ( Music_Emu* me, int n, short* p ) { return me->play( n, p ); } +BLARGG_EXPORT void gme_set_fade ( Music_Emu* me, int start_msec ) { me->set_fade( start_msec ); } +BLARGG_EXPORT int gme_track_ended ( Music_Emu const* me ) { return me->track_ended(); } +BLARGG_EXPORT int gme_tell ( Music_Emu const* me ) { return me->tell(); } +BLARGG_EXPORT gme_err_t gme_seek ( Music_Emu* me, int msec ) { return me->seek( msec ); } +BLARGG_EXPORT int gme_voice_count ( Music_Emu const* me ) { return me->voice_count(); } +BLARGG_EXPORT void gme_ignore_silence ( Music_Emu* me, int disable ) { me->ignore_silence( disable != 0 ); } +BLARGG_EXPORT void gme_set_tempo ( Music_Emu* me, double t ) { me->set_tempo( t ); } +BLARGG_EXPORT void gme_mute_voice ( Music_Emu* me, int index, int mute ) { me->mute_voice( index, mute != 0 ); } +BLARGG_EXPORT void gme_mute_voices ( Music_Emu* me, int mask ) { me->mute_voices( mask ); } +BLARGG_EXPORT void gme_enable_accuracy( Music_Emu* me, int enabled ) { me->enable_accuracy( enabled ); } +BLARGG_EXPORT void gme_clear_playlist ( Music_Emu* me ) { me->clear_playlist(); } +BLARGG_EXPORT int gme_type_multitrack( gme_type_t t ) { return t->track_count != 1; } + +BLARGG_EXPORT void gme_set_equalizer ( Music_Emu* me, gme_equalizer_t const* eq ) +{ + Music_Emu::equalizer_t e = me->equalizer(); + e.treble = eq->treble; + e.bass = eq->bass; + me->set_equalizer( e ); +} + +BLARGG_EXPORT void gme_equalizer( Music_Emu const* me, gme_equalizer_t* out ) +{ + gme_equalizer_t e = { }; + e.treble = me->equalizer().treble; + e.bass = me->equalizer().bass; + *out = e; +} + +BLARGG_EXPORT const char* gme_voice_name( Music_Emu const* me, int i ) +{ + assert( (unsigned) i < (unsigned) me->voice_count() ); + return me->voice_names() [i]; +} + +BLARGG_EXPORT const char* gme_type_system( gme_type_t type ) +{ + assert( type ); + return type->system; +} diff -Nru audacious-plugins-2.4.4/src/console/Gme_File.cxx audacious-plugins-3.2/src/console/Gme_File.cxx --- audacious-plugins-2.4.4/src/console/Gme_File.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Gme_File.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Gme_File.h" @@ -18,7 +18,7 @@ #include "blargg_source.h" -const char gme_wrong_file_type [] = "Wrong file type for this emulator"; +const char* const gme_wrong_file_type = "Wrong file type for this emulator"; void Gme_File::clear_playlist() { diff -Nru audacious-plugins-2.4.4/src/console/Gme_File.h audacious-plugins-3.2/src/console/Gme_File.h --- audacious-plugins-2.4.4/src/console/Gme_File.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Gme_File.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Common interface to game music file loading and information -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef GME_FILE_H #define GME_FILE_H @@ -12,6 +12,38 @@ // Error returned if file is wrong type //extern const char gme_wrong_file_type []; // declared in gme.h +struct gme_type_t_ +{ + const char* system; /* name of system this music file type is generally for */ + int track_count; /* non-zero for formats with a fixed number of tracks */ + Music_Emu* (*new_emu)(); /* Create new emulator for this type (useful in C++ only) */ + Music_Emu* (*new_info)(); /* Create new info reader for this type */ + + /* internal */ + const char* extension_; + int flags_; +}; + +struct track_info_t +{ + long track_count; + + /* times in milliseconds; -1 if unknown */ + long length; + long intro_length; + long loop_length; + + /* empty string if not available */ + char system [256]; + char game [256]; + char song [256]; + char author [256]; + char copyright [256]; + char comment [256]; + char dumper [256]; +}; +enum { gme_max_field = 255 }; + struct Gme_File { public: // File loading diff -Nru audacious-plugins-2.4.4/src/console/gme.h audacious-plugins-3.2/src/console/gme.h --- audacious-plugins-2.4.4/src/console/gme.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/gme.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ /* Game music emulator library C interface (also usable from C++) */ -/* Game_Music_Emu 0.5.2 */ +/* Game_Music_Emu 0.5.5 */ #ifndef GME_H #define GME_H @@ -18,7 +18,7 @@ /******** Basic operations ********/ /* Create emulator and load game music file/data into it. Sets *out to new emulator. */ -gme_err_t gme_open_file( const char* path, Music_Emu** out, long sample_rate ); +gme_err_t gme_open_file( const char path [], Music_Emu** out, int sample_rate ); /* Number of tracks available */ int gme_track_count( Music_Emu const* ); @@ -27,7 +27,7 @@ gme_err_t gme_start_track( Music_Emu*, int index ); /* Generate 'count' 16-bit signed samples info 'out'. Output is in stereo. */ -gme_err_t gme_play( Music_Emu*, long count, short* out ); +gme_err_t gme_play( Music_Emu*, int count, short out [] ); /* Finish using emulator and free memory */ void gme_delete( Music_Emu* ); @@ -37,16 +37,16 @@ /* Set time to start fading track out. Once fade ends track_ended() returns true. Fade time can be changed while track is playing. */ -void gme_set_fade( Music_Emu*, long start_msec ); +void gme_set_fade( Music_Emu*, int start_msec ); /* True if a track has reached its end */ int gme_track_ended( Music_Emu const* ); /* Number of milliseconds (1000 = one second) played since beginning of track */ -long gme_tell( Music_Emu const* ); +int gme_tell( Music_Emu const* ); /* Seek to new time in track. Seeking backwards or far forward can take a while. */ -gme_err_t gme_seek( Music_Emu*, long msec ); +gme_err_t gme_seek( Music_Emu*, int msec ); /******** Informational ********/ @@ -60,35 +60,44 @@ const char* gme_warning( Music_Emu* ); /* Load m3u playlist file (must be done after loading music) */ -gme_err_t gme_load_m3u( Music_Emu*, const char* path ); +gme_err_t gme_load_m3u( Music_Emu*, const char path [] ); /* Clear any loaded m3u playlist and any internal playlist that the music format supports (NSFE for example). */ void gme_clear_playlist( Music_Emu* ); -/* Get information for a particular track (length, name, author, etc.) */ -typedef struct track_info_t track_info_t; -gme_err_t gme_track_info( Music_Emu const*, track_info_t* out, int track ); +/* Gets information for a particular track (length, name, author, etc.). +Must be freed after use. */ +typedef struct gme_info_t gme_info_t; +gme_err_t gme_track_info( Music_Emu const*, gme_info_t** out, int track ); -struct track_info_t +/* Frees track information */ +void gme_free_info( gme_info_t* ); + +struct gme_info_t { - long track_count; - /* times in milliseconds; -1 if unknown */ - long length; - long intro_length; - long loop_length; + int length; /* total length, if file specifies it */ + int intro_length; /* length of song up to looping section */ + int loop_length; /* length of looping section */ + + /* Length if available, otherwise intro_length+loop_length*2 if available, + otherwise a default of 150000 (2.5 minutes). */ + int play_length; + + int i4,i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,i15; /* reserved */ - /* empty string if not available */ - char system [256]; - char game [256]; - char song [256]; - char author [256]; - char copyright [256]; - char comment [256]; - char dumper [256]; + /* empty string ("") if not available */ + const char* system; + const char* game; + const char* song; + const char* author; + const char* copyright; + const char* comment; + const char* dumper; + + const char *s7,*s8,*s9,*s10,*s11,*s12,*s13,*s14,*s15; /* reserved */ }; -enum { gme_max_field = 255 }; /******** Advanced playback ********/ @@ -108,8 +117,8 @@ /* Number of voices used by currently loaded file */ int gme_voice_count( Music_Emu const* ); -/* Names of voices */ -const char** gme_voice_names( Music_Emu const* ); +/* Name of voice i, from 0 to gme_voice_count() - 1 */ +const char* gme_voice_name( Music_Emu const*, int i ); /* Mute/unmute voice i, where voice 0 is first voice */ void gme_mute_voice( Music_Emu*, int index, int mute ); @@ -122,54 +131,61 @@ typedef struct gme_equalizer_t { double treble; /* -50.0 = muffled, 0 = flat, +5.0 = extra-crisp */ - long bass; /* 1 = full bass, 90 = average, 16000 = almost no bass */ + double bass; /* 1 = full bass, 90 = average, 16000 = almost no bass */ + + double d2,d3,d4,d5,d6,d7,d8,d9; /* reserved */ } gme_equalizer_t; /* Get current frequency equalizater parameters */ -gme_equalizer_t gme_equalizer( Music_Emu const* ); +void gme_equalizer( Music_Emu const*, gme_equalizer_t* out ); /* Change frequency equalizer parameters */ void gme_set_equalizer( Music_Emu*, gme_equalizer_t const* eq ); +/* Enables/disables most accurate sound emulation options */ +void gme_enable_accuracy( Music_Emu*, int enabled ); /******** Game music types ********/ +/* Music file type identifier. Can also hold NULL. */ +typedef const struct gme_type_t_* gme_type_t; + /* Emulator type constants for each supported file type */ -extern struct gme_type_t_ const gme_ay_type [], gme_gbs_type [], gme_gym_type [], - gme_hes_type [], gme_kss_type [], gme_nsf_type [], gme_nsfe_type [], - gme_sap_type [], gme_spc_type [], gme_vgm_type [], gme_vgz_type []; -typedef struct gme_type_t_ const* gme_type_t; +extern const gme_type_t + gme_ay_type, + gme_gbs_type, + gme_gym_type, + gme_hes_type, + gme_kss_type, + gme_nsf_type, + gme_nsfe_type, + gme_sap_type, + gme_spc_type, + gme_vgm_type, + gme_vgz_type; /* Type of this emulator */ gme_type_t gme_type( Music_Emu const* ); -/* gme_type_t is a pointer to this structure. For example, gme_nsf_type->system is -"Nintendo NES" and gme_nsf_type->new_emu() is equilvant to new Nsf_Emu (in C++). */ -struct gme_type_t_ -{ - const char* system; /* name of system this music file type is generally for */ - int track_count; /* non-zero for formats with a fixed number of tracks */ - Music_Emu* (*new_emu)(); /* Create new emulator for this type (useful in C++ only) */ - Music_Emu* (*new_info)(); /* Create new info reader for this type */ - - /* internal */ - const char* extension_; - int flags_; -}; - /* Pointer to array of all music types, with NULL entry at end. Allows a player linked to this library to support new music types without having to be updated. */ gme_type_t const* gme_type_list(); +/* Name of game system for this music file type */ +const char* gme_type_system( gme_type_t ); + +/* True if this music file type supports multiple tracks */ +int gme_type_multitrack( gme_type_t ); + /******** Advanced file loading ********/ /* Error returned if file type is not supported */ -extern const char gme_wrong_file_type []; +extern const char* const gme_wrong_file_type; /* Same as gme_open_file(), but uses file data already in memory. Makes copy of data. */ -gme_err_t gme_open_data( void const* data, long size, Music_Emu** out, long sample_rate ); +gme_err_t gme_open_data( void const* data, long size, Music_Emu** out, int sample_rate ); /* Determine likely game music type based on first four bytes of file. Returns string containing proper file suffix (i.e. "NSF", "SPC", etc.) or "" if @@ -177,25 +193,25 @@ const char* gme_identify_header( void const* header ); /* Get corresponding music type for file path or extension passed in. */ -gme_type_t gme_identify_extension( const char* path_or_extension ); +gme_type_t gme_identify_extension( const char path_or_extension [] ); /* Determine file type based on file's extension or header (if extension isn't recognized). Sets *type_out to type, or 0 if unrecognized or error. */ -gme_err_t gme_identify_file( const char* path, gme_type_t* type_out ); +gme_err_t gme_identify_file( const char path [], gme_type_t* type_out ); /* Create new emulator and set sample rate. Returns NULL if out of memory. If you only need track information, pass gme_info_only for sample_rate. */ -Music_Emu* gme_new_emu( gme_type_t, long sample_rate ); +Music_Emu* gme_new_emu( gme_type_t, int sample_rate ); /* Load music file into emulator */ -gme_err_t gme_load_file( Music_Emu*, const char* path ); +gme_err_t gme_load_file( Music_Emu*, const char path [] ); /* Load music file from memory into emulator. Makes a copy of data passed. */ gme_err_t gme_load_data( Music_Emu*, void const* data, long size ); /* Load music file using custom data reader function that will be called to read file data. Most emulators load the entire file in one read call. */ -typedef gme_err_t (*gme_reader_t)( void* your_data, void* out, long count ); +typedef gme_err_t (*gme_reader_t)( void* your_data, void* out, int count ); gme_err_t gme_load_custom( Music_Emu*, gme_reader_t, long file_size, void* your_data ); /* Load m3u playlist file from memory (must be done after loading music) */ diff -Nru audacious-plugins-2.4.4/src/console/gme_types.h audacious-plugins-3.2/src/console/gme_types.h --- audacious-plugins-2.4.4/src/console/gme_types.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/console/gme_types.h 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,21 @@ +#ifndef GME_TYPES_H +#define GME_TYPES_H + +/* + * This is a default gme_types.h for use when *not* using + * CMake. If CMake is in use gme_types.h.in will be + * processed instead. + */ +#define USE_GME_AY +#define USE_GME_GBS +#define USE_GME_GYM +#define USE_GME_HES +#define USE_GME_KSS +#define USE_GME_NSF +#define USE_GME_NSFE +#define USE_GME_SAP +#define USE_GME_SPC +/* VGM and VGZ are a package deal */ +#define USE_GME_VGM + +#endif /* GME_TYPES_H */ diff -Nru audacious-plugins-2.4.4/src/console/Gym_Emu.cxx audacious-plugins-3.2/src/console/Gym_Emu.cxx --- audacious-plugins-2.4.4/src/console/Gym_Emu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Gym_Emu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Gym_Emu.h" @@ -161,7 +161,8 @@ static Music_Emu* new_gym_emu () { return BLARGG_NEW Gym_Emu ; } static Music_Emu* new_gym_file() { return BLARGG_NEW Gym_File; } -gme_type_t_ const gme_gym_type [1] = {{ "Sega Genesis", 1, &new_gym_emu, &new_gym_file, "GYM", 0 }}; +static gme_type_t_ const gme_gym_type_ = { "Sega Genesis", 1, &new_gym_emu, &new_gym_file, "GYM", 0 }; +gme_type_t const gme_gym_type = &gme_gym_type_; // Setup @@ -203,7 +204,7 @@ { Music_Emu::mute_voices_( mask ); fm.mute_voices( mask ); - dac_muted = mask & 0x40; + dac_muted = (mask & 0x40) != 0; apu.output( (mask & 0x80) ? 0 : &blip_buf ); } diff -Nru audacious-plugins-2.4.4/src/console/Gym_Emu.h audacious-plugins-3.2/src/console/Gym_Emu.h --- audacious-plugins-2.4.4/src/console/Gym_Emu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Gym_Emu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,7 +1,7 @@ // Sega Genesis/Mega Drive GYM music file emulator // Includes with PCM timing recovery to improve sample quality. -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef GYM_EMU_H #define GYM_EMU_H diff -Nru audacious-plugins-2.4.4/src/console/Hes_Apu.cxx audacious-plugins-3.2/src/console/Hes_Apu.cxx --- audacious-plugins-2.4.4/src/console/Hes_Apu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Hes_Apu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Hes_Apu.h" @@ -158,7 +158,7 @@ //period = 0x1000 * 2; period = 1; //if ( !(volume_0 | volume_1) ) - // dprintf( "Used period 0\n" ); + // debug_printf( "Used period 0\n" ); } // maintain phase when silent @@ -295,7 +295,7 @@ case 0x809: if ( !(data & 0x80) && (data & 0x03) != 0 ) - dprintf( "HES LFO not supported\n" ); + debug_printf( "HES LFO not supported\n" ); } } } diff -Nru audacious-plugins-2.4.4/src/console/Hes_Apu.h audacious-plugins-3.2/src/console/Hes_Apu.h --- audacious-plugins-2.4.4/src/console/Hes_Apu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Hes_Apu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,6 @@ // Turbo Grafx 16 (PC Engine) PSG sound chip emulator +// Game_Music_Emu 0.5.5 #ifndef HES_APU_H #define HES_APU_H diff -Nru audacious-plugins-2.4.4/src/console/Hes_Cpu.cxx audacious-plugins-3.2/src/console/Hes_Cpu.cxx --- audacious-plugins-2.4.4/src/console/Hes_Cpu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Hes_Cpu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Hes_Cpu.h" @@ -148,7 +148,7 @@ /* static long count; if ( count == 1844 ) Debugger(); - if ( s.base != correct ) dprintf( "%ld\n", count ); + if ( s.base != correct ) debug_printf( "%ld\n", count ); count++; */ } @@ -741,7 +741,7 @@ ARITH_ADDR_MODES( 0x65 ) // ADC adc_imm: { if ( status & st_d ) - dprintf( "Decimal mode not supported\n" ); + debug_printf( "Decimal mode not supported\n" ); fint16 carry = c >> 8 & 1; fint16 ov = (a ^ 0x80) + carry + (BOOST::int8_t) data; // sign-extend status &= ~st_v; @@ -1085,7 +1085,7 @@ goto loop; } delayed_cli: - dprintf( "Delayed CLI not supported\n" ); // TODO: implement + debug_printf( "Delayed CLI not supported\n" ); // TODO: implement goto loop; } @@ -1100,7 +1100,7 @@ s_time += delta; if ( s_time < 0 ) goto loop; - dprintf( "Delayed SEI not supported\n" ); // TODO: implement + debug_printf( "Delayed SEI not supported\n" ); // TODO: implement goto loop; } @@ -1145,7 +1145,7 @@ goto loop; case 0x54: // CSL - dprintf( "CSL not supported\n" ); + debug_printf( "CSL not supported\n" ); illegal_encountered = true; goto loop; @@ -1154,10 +1154,10 @@ case 0xF4: { // SET //fuint16 operand = GET_MSB(); - dprintf( "SET not handled\n" ); - switch ( data ) - { - } + debug_printf( "SET not handled\n" ); + //switch ( data ) + //{ + //} illegal_encountered = true; goto loop; } @@ -1233,7 +1233,7 @@ default: assert( (unsigned) opcode <= 0xFF ); - dprintf( "Illegal opcode $%02X at $%04X\n", (int) opcode, (int) pc - 1 ); + debug_printf( "Illegal opcode $%02X at $%04X\n", (int) opcode, (int) pc - 1 ); illegal_encountered = true; goto loop; } diff -Nru audacious-plugins-2.4.4/src/console/Hes_Cpu.h audacious-plugins-3.2/src/console/Hes_Cpu.h --- audacious-plugins-2.4.4/src/console/Hes_Cpu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Hes_Cpu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // PC Engine CPU emulator for use with HES music files -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef HES_CPU_H #define HES_CPU_H diff -Nru audacious-plugins-2.4.4/src/console/hes_cpu_io.h audacious-plugins-3.2/src/console/hes_cpu_io.h --- audacious-plugins-2.4.4/src/console/hes_cpu_io.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/hes_cpu_io.h 2012-01-20 19:48:30.000000000 +0000 @@ -44,7 +44,7 @@ default: if ( bank != 0xFF ) - dprintf( "Unmapped bank $%02X\n", bank ); + debug_printf( "Unmapped bank $%02X\n", bank ); return rom.unmapped(); } diff -Nru audacious-plugins-2.4.4/src/console/Hes_Emu.cxx audacious-plugins-3.2/src/console/Hes_Emu.cxx --- audacious-plugins-2.4.4/src/console/Hes_Emu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Hes_Emu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Hes_Emu.h" @@ -132,7 +132,9 @@ static Music_Emu* new_hes_emu () { return BLARGG_NEW Hes_Emu ; } static Music_Emu* new_hes_file() { return BLARGG_NEW Hes_File; } -gme_type_t_ const gme_hes_type [1] = {{ "PC Engine", 256, &new_hes_emu, &new_hes_file, "HES", 1 }}; +static gme_type_t_ const gme_hes_type_ = { "PC Engine", 256, &new_hes_emu, &new_hes_file, "HES", 1 }; +gme_type_t const gme_hes_type = &gme_hes_type_; + // Setup @@ -271,12 +273,12 @@ } else { - dprintf( "VDP not supported: $%02X <- $%02X\n", vdp.latch, data ); + debug_printf( "VDP not supported: $%02X <- $%02X\n", vdp.latch, data ); } break; case 3: - dprintf( "VDP MSB not supported: $%02X <- $%02X\n", vdp.latch, data ); + debug_printf( "VDP MSB not supported: $%02X <- $%02X\n", vdp.latch, data ); break; } } @@ -323,7 +325,7 @@ run_until( time ); irq.disables = data; if ( (data & 0xF8) && (data & 0xF8) != 0xF8 ) // flag questionable values - dprintf( "Int mask: $%02X\n", data ); + debug_printf( "Int mask: $%02X\n", data ); break; case 0x1403: @@ -342,7 +344,7 @@ return; default: - dprintf( "unmapped write $%04X <- $%02X\n", addr, data ); + debug_printf( "unmapped write $%04X <- $%02X\n", addr, data ); return; #endif } @@ -366,14 +368,14 @@ case 0x0002: case 0x0003: - dprintf( "VDP read not supported: %d\n", addr ); + debug_printf( "VDP read not supported: %d\n", addr ); return 0; case 0x0C01: //return timer.enabled; // TODO: remove? case 0x0C00: run_until( time ); - dprintf( "Timer count read\n" ); + debug_printf( "Timer count read\n" ); return (unsigned) (timer.count - 1) / timer_base; case 0x1402: @@ -394,7 +396,7 @@ break; default: - dprintf( "unmapped read $%04X\n", addr ); + debug_printf( "unmapped read $%04X\n", addr ); #endif } diff -Nru audacious-plugins-2.4.4/src/console/Hes_Emu.h audacious-plugins-3.2/src/console/Hes_Emu.h --- audacious-plugins-2.4.4/src/console/Hes_Emu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Hes_Emu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // TurboGrafx-16/PC Engine HES music file emulator -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef HES_EMU_H #define HES_EMU_H diff -Nru audacious-plugins-2.4.4/src/console/Kss_Cpu.cxx audacious-plugins-3.2/src/console/Kss_Cpu.cxx --- audacious-plugins-2.4.4/src/console/Kss_Cpu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Kss_Cpu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ /* Last validated with zexall 2006.11.14 2:19 PM @@ -839,8 +839,6 @@ //////////////////////////////////////// CB prefix { case 0xCB: - unsigned data2; - data2 = instr [1]; pc++; switch ( data ) { @@ -1289,7 +1287,7 @@ case 0x4F: // LD R,A SET_R( rg.a ); - dprintf( "LD R,A not supported\n" ); + debug_printf( "LD R,A not supported\n" ); warning = true; goto loop; @@ -1299,7 +1297,7 @@ case 0x5F: // LD A,R rg.a = GET_R(); - dprintf( "LD A,R not supported\n" ); + debug_printf( "LD A,R not supported\n" ); warning = true; ld_ai_common: flags = (flags & C01) | SZ28( rg.a ) | (r.iff2 << 2 & V04); @@ -1322,7 +1320,7 @@ goto loop; default: - dprintf( "Opcode $ED $%02X not supported\n", data ); + debug_printf( "Opcode $ED $%02X not supported\n", data ); warning = true; goto loop; } @@ -1583,7 +1581,7 @@ } default: - dprintf( "Opcode $%02X $CB $%02X not supported\n", opcode, data2 ); + debug_printf( "Opcode $%02X $CB $%02X not supported\n", opcode, data2 ); warning = true; goto loop; } @@ -1672,7 +1670,7 @@ } default: - dprintf( "Unnecessary DD/FD prefix encountered\n" ); + debug_printf( "Unnecessary DD/FD prefix encountered\n" ); warning = true; pc--; goto loop; @@ -1681,7 +1679,7 @@ } } - dprintf( "Unhandled main opcode: $%02X\n", opcode ); + debug_printf( "Unhandled main opcode: $%02X\n", opcode ); assert( false ); hit_idle_addr: diff -Nru audacious-plugins-2.4.4/src/console/Kss_Cpu.h audacious-plugins-3.2/src/console/Kss_Cpu.h --- audacious-plugins-2.4.4/src/console/Kss_Cpu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Kss_Cpu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Z80 CPU emulator -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef KSS_CPU_H #define KSS_CPU_H diff -Nru audacious-plugins-2.4.4/src/console/Kss_Emu.cxx audacious-plugins-3.2/src/console/Kss_Emu.cxx --- audacious-plugins-2.4.4/src/console/Kss_Emu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Kss_Emu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Kss_Emu.h" @@ -101,7 +101,9 @@ static Music_Emu* new_kss_emu () { return BLARGG_NEW Kss_Emu ; } static Music_Emu* new_kss_file() { return BLARGG_NEW Kss_File; } -gme_type_t_ const gme_kss_type [1] = {{ "MSX", 256, &new_kss_emu, &new_kss_file, "KSS", 0x03 }}; +static gme_type_t_ const gme_kss_type_ = { "MSX", 256, &new_kss_emu, &new_kss_file, "KSS", 0x03 }; +gme_type_t const gme_kss_type = &gme_kss_type_; + // Setup @@ -228,9 +230,9 @@ bank_count = max_banks; set_warning( "Bank data missing" ); } - //dprintf( "load_size : $%X\n", load_size ); - //dprintf( "bank_size : $%X\n", bank_size ); - //dprintf( "bank_count: %d (%d claimed)\n", bank_count, header_.bank_mode & 0x7F ); + //debug_printf( "load_size : $%X\n", load_size ); + //debug_printf( "bank_size : $%X\n", bank_size ); + //debug_printf( "bank_count: %d (%d claimed)\n", bank_count, header_.bank_mode & 0x7F ); ram [idle_addr] = 0xFF; cpu::reset( unmapped_write, unmapped_read ); @@ -299,7 +301,7 @@ return; } - dprintf( "LD ($%04X),$%02X\n", addr, data ); + debug_printf( "LD ($%04X),$%02X\n", addr, data ); } void kss_cpu_write( Kss_Cpu* cpu, unsigned addr, int data ) @@ -356,17 +358,17 @@ #endif } - dprintf( "OUT $%04X,$%02X\n", addr, data ); + debug_printf( "OUT $%04X,$%02X\n", addr, data ); } int kss_cpu_in( Kss_Cpu*, cpu_time_t, unsigned addr ) { //Kss_Emu& emu = STATIC_CAST(Kss_Emu&,*cpu); - switch ( addr & 0xFF ) - { - } + //switch ( addr & 0xFF ) + //{ + //} - dprintf( "IN $%04X\n", addr ); + debug_printf( "IN $%04X\n", addr ); return 0; } diff -Nru audacious-plugins-2.4.4/src/console/Kss_Emu.h audacious-plugins-3.2/src/console/Kss_Emu.h --- audacious-plugins-2.4.4/src/console/Kss_Emu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Kss_Emu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // MSX computer KSS music file emulator -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef KSS_EMU_H #define KSS_EMU_H diff -Nru audacious-plugins-2.4.4/src/console/Kss_Scc_Apu.cxx audacious-plugins-3.2/src/console/Kss_Scc_Apu.cxx --- audacious-plugins-2.4.4/src/console/Kss_Scc_Apu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Kss_Scc_Apu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Kss_Scc_Apu.h" diff -Nru audacious-plugins-2.4.4/src/console/Kss_Scc_Apu.h audacious-plugins-3.2/src/console/Kss_Scc_Apu.h --- audacious-plugins-2.4.4/src/console/Kss_Scc_Apu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Kss_Scc_Apu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Konami SCC sound chip emulator -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef KSS_SCC_APU_H #define KSS_SCC_APU_H diff -Nru audacious-plugins-2.4.4/src/console/M3u_Playlist.cxx audacious-plugins-3.2/src/console/M3u_Playlist.cxx --- audacious-plugins-2.4.4/src/console/M3u_Playlist.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/M3u_Playlist.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "M3u_Playlist.h" #include "Music_Emu.h" @@ -52,9 +52,9 @@ blargg_err_t Gme_File::load_m3u( Data_Reader& in ) { return load_m3u_( playlist.load( in ) ); } -gme_err_t gme_load_m3u( Music_Emu* me, const char* path ) { return me->load_m3u( path ); } +BLARGG_EXPORT gme_err_t gme_load_m3u( Music_Emu* me, const char* path ) { return me->load_m3u( path ); } -gme_err_t gme_load_m3u_data( Music_Emu* me, const void* data, long size ) +BLARGG_EXPORT gme_err_t gme_load_m3u_data( Music_Emu* me, const void* data, long size ) { Mem_File_Reader in( data, size ); return me->load_m3u( in ); diff -Nru audacious-plugins-2.4.4/src/console/M3u_Playlist.h audacious-plugins-3.2/src/console/M3u_Playlist.h --- audacious-plugins-2.4.4/src/console/M3u_Playlist.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/M3u_Playlist.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // M3U playlist file parser, with support for subtrack information -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef M3U_PLAYLIST_H #define M3U_PLAYLIST_H diff -Nru audacious-plugins-2.4.4/src/console/Makefile audacious-plugins-3.2/src/console/Makefile --- audacious-plugins-2.4.4/src/console/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -42,6 +42,7 @@ Spc_Cpu.cxx \ Spc_Dsp.cxx \ Spc_Emu.cxx \ + Spc_Filter.cxx \ Vfs_File.cxx \ Vgm_Emu.cxx \ Vgm_Emu_Impl.cxx \ @@ -61,5 +62,5 @@ CFLAGS += ${PLUGIN_CFLAGS} CXXFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${ARCH_DEFINES} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} -lz ${MOWGLI_LIBS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. +LIBS += ${GTK_LIBS} ${GLIB_LIBS} -lz diff -Nru audacious-plugins-2.4.4/src/console/Multi_Buffer.cxx audacious-plugins-3.2/src/console/Multi_Buffer.cxx --- audacious-plugins-2.4.4/src/console/Multi_Buffer.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Multi_Buffer.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -114,7 +114,7 @@ if ( count ) { int bufs_used = stereo_added | was_stereo; - //dprintf( "%X\n", bufs_used ); + //debug_printf( "%X\n", bufs_used ); if ( bufs_used <= 1 ) { mix_mono( out, count ); diff -Nru audacious-plugins-2.4.4/src/console/Multi_Buffer.h audacious-plugins-3.2/src/console/Multi_Buffer.h --- audacious-plugins-2.4.4/src/console/Multi_Buffer.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Multi_Buffer.h 2012-01-20 19:48:30.000000000 +0000 @@ -126,10 +126,7 @@ channel_t chan; public: Silent_Buffer(); - blargg_err_t set_sample_rate( long rate, int msec = blip_default_length ) - { - return Multi_Buffer::set_sample_rate( rate, msec ); - } + blargg_err_t set_sample_rate( long rate, int msec = blip_default_length ); void clock_rate( long ) { } void bass_freq( int ) { } void clear() { } @@ -147,6 +144,11 @@ return 0; } +inline blargg_err_t Silent_Buffer::set_sample_rate( long rate, int msec ) +{ + return Multi_Buffer::set_sample_rate( rate, msec ); +} + inline int Multi_Buffer::samples_per_frame() const { return samples_per_frame_; } inline long Multi_Buffer::sample_rate() const { return sample_rate_; } diff -Nru audacious-plugins-2.4.4/src/console/Music_Emu.cxx audacious-plugins-3.2/src/console/Music_Emu.cxx --- audacious-plugins-2.4.4/src/console/Music_Emu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Music_Emu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Music_Emu.h" @@ -147,7 +147,7 @@ for ( long end = max_initial_silence * stereo * sample_rate(); emu_time < end; ) { fill_buf(); - if ( buf_remain | emu_track_ended_ ) + if ( buf_remain | (int) emu_track_ended_ ) break; } @@ -340,7 +340,7 @@ assert( emu_time >= out_time ); // prints nifty graph of how far ahead we are when searching for silence - //dprintf( "%*s \n", int ((emu_time - out_time) * 7 / sample_rate()), "*" ); + //debug_printf( "%*s \n", int ((emu_time - out_time) * 7 / sample_rate()), "*" ); long pos = 0; if ( silence_count ) @@ -404,6 +404,7 @@ void Gme_Info_::pre_load() { Gme_File::pre_load(); } // skip Music_Emu void Gme_Info_::post_load_() { Gme_File::post_load_(); } // skip Music_Emu void Gme_Info_::set_equalizer_( equalizer_t const& ){ check( false ); } +void Gme_Info_::enable_accuracy_( bool ) { check( false ); } void Gme_Info_::mute_voices_( int ) { check( false ); } void Gme_Info_::set_tempo_( double ) { } blargg_err_t Gme_Info_::start_track_( int ) { return "Use full emulator for playback"; } diff -Nru audacious-plugins-2.4.4/src/console/Music_Emu.h audacious-plugins-3.2/src/console/Music_Emu.h --- audacious-plugins-2.4.4/src/console/Music_Emu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Music_Emu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Common interface to game music file emulators -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef MUSIC_EMU_H #define MUSIC_EMU_H @@ -82,6 +82,10 @@ // on others this has no effect. Should be called only once *before* set_sample_rate(). virtual void set_buffer( Multi_Buffer* ) { } + // Enables/disables accurate emulation options, if any are supported. Might change + // equalizer settings. + void enable_accuracy( bool enable = true ); + // Sound equalization (treble/bass) // Frequency equalizer parameters (see gme.txt) @@ -111,7 +115,8 @@ void remute_voices(); virtual blargg_err_t set_sample_rate_( long sample_rate ) = 0; - virtual void set_equalizer_( equalizer_t const& ) { }; + virtual void set_equalizer_( equalizer_t const& ) { } + virtual void enable_accuracy_( bool enable ) { } virtual void mute_voices_( int mask ) = 0; virtual void set_tempo_( double ) = 0; virtual blargg_err_t start_track_( int ) = 0; // tempo is set before this @@ -160,7 +165,7 @@ void emu_play( long count, sample_t* out ); Multi_Buffer* effects_buffer; - friend Music_Emu* gme_new_emu( gme_type_t, long ); + friend Music_Emu* gme_new_emu( gme_type_t, int ); friend void gme_set_stereo_depth( Music_Emu*, double ); }; @@ -169,6 +174,7 @@ { virtual blargg_err_t set_sample_rate_( long sample_rate ); virtual void set_equalizer_( equalizer_t const& ); + virtual void enable_accuracy_( bool ); virtual void mute_voices_( int mask ); virtual void set_tempo_( double ); virtual blargg_err_t start_track_( int ); @@ -189,6 +195,7 @@ inline bool Music_Emu::track_ended() const { return track_ended_; } inline const Music_Emu::equalizer_t& Music_Emu::equalizer() const { return equalizer_; } +inline void Music_Emu::enable_accuracy( bool b ) { enable_accuracy_( b ); } inline void Music_Emu::set_tempo_( double t ) { tempo_ = t; } inline void Music_Emu::remute_voices() { mute_voices( mute_mask_ ); } inline void Music_Emu::ignore_silence( bool b ) { ignore_silence_ = b; } @@ -197,7 +204,7 @@ inline void Music_Emu::set_voice_names( const char* const* names ) { // Intentional removal of const, so users don't have to remember obscure const in middle - voice_names_ = (const char**) names; + voice_names_ = const_cast (names); } inline void Music_Emu::mute_voices_( int ) { } diff -Nru audacious-plugins-2.4.4/src/console/Nes_Apu.cxx audacious-plugins-3.2/src/console/Nes_Apu.cxx --- audacious-plugins-2.4.4/src/console/Nes_Apu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Nes_Apu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -385,7 +385,7 @@ irq_changed(); } - //dprintf( "%6d/%d Read $4015->$%02X\n", frame_delay, frame, result ); + //debug_printf( "%6d/%d Read $4015->$%02X\n", frame_delay, frame, result ); return result; } diff -Nru audacious-plugins-2.4.4/src/console/Nes_Cpu.cxx audacious-plugins-3.2/src/console/Nes_Cpu.cxx --- audacious-plugins-2.4.4/src/console/Nes_Cpu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Nes_Cpu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Nes_Cpu.h" @@ -921,7 +921,7 @@ goto loop; status &= ~st_i; handle_cli: { - //dprintf( "CLI at %d\n", TIME ); + //debug_printf( "CLI at %d\n", TIME ); this->r.status = status; // update externally-visible I flag blargg_long delta = s.base - irq_time_; if ( delta <= 0 ) @@ -944,7 +944,7 @@ // TODO: implement delayed_cli: - dprintf( "Delayed CLI not emulated\n" ); + debug_printf( "Delayed CLI not emulated\n" ); goto loop; } @@ -960,7 +960,7 @@ if ( s_time < 0 ) goto loop; - dprintf( "Delayed SEI not emulated\n" ); + debug_printf( "Delayed SEI not emulated\n" ); goto loop; } diff -Nru audacious-plugins-2.4.4/src/console/Nes_Cpu.h audacious-plugins-3.2/src/console/Nes_Cpu.h --- audacious-plugins-2.4.4/src/console/Nes_Cpu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Nes_Cpu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // NES 6502 CPU emulator -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef NES_CPU_H #define NES_CPU_H diff -Nru audacious-plugins-2.4.4/src/console/nes_cpu_io.h audacious-plugins-3.2/src/console/nes_cpu_io.h --- audacious-plugins-2.4.4/src/console/nes_cpu_io.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/nes_cpu_io.h 2012-01-20 19:48:30.000000000 +0000 @@ -34,7 +34,7 @@ result = addr >> 8; // simulate open bus if ( addr != 0x2002 ) - dprintf( "Read unmapped $%.4X\n", (unsigned) addr ); + debug_printf( "Read unmapped $%.4X\n", (unsigned) addr ); exit: return result; diff -Nru audacious-plugins-2.4.4/src/console/Nes_Fme7_Apu.cxx audacious-plugins-3.2/src/console/Nes_Fme7_Apu.cxx --- audacious-plugins-2.4.4/src/console/Nes_Fme7_Apu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Nes_Fme7_Apu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Nes_Fme7_Apu.h" @@ -46,7 +46,7 @@ { int mode = regs [7] >> index; int vol_mode = regs [010 + index]; - int volume = amp_table [vol_mode & 0x0f]; + int volume = amp_table [vol_mode & 0x0F]; Blip_Buffer* const osc_output = oscs [index].output; if ( !osc_output ) @@ -55,9 +55,9 @@ // check for unsupported mode #ifndef NDEBUG - if ( (mode & 011) <= 001 && vol_mode & 0x1f ) - dprintf( "FME7 used unimplemented sound mode: %02X, vol_mode: %02X\n", - mode, vol_mode & 0x1f ); + if ( (mode & 011) <= 001 && vol_mode & 0x1F ) + debug_printf( "FME7 used unimplemented sound mode: %02X, vol_mode: %02X\n", + mode, vol_mode & 0x1F ); #endif if ( (mode & 001) | (vol_mode & 0x10) ) @@ -65,7 +65,7 @@ // period int const period_factor = 16; - unsigned period = (regs [index * 2 + 1] & 0x0f) * 0x100 * period_factor + + unsigned period = (regs [index * 2 + 1] & 0x0F) * 0x100 * period_factor + regs [index * 2] * period_factor; if ( period < 50 ) // around 22 kHz { diff -Nru audacious-plugins-2.4.4/src/console/Nes_Fme7_Apu.h audacious-plugins-3.2/src/console/Nes_Fme7_Apu.h --- audacious-plugins-2.4.4/src/console/Nes_Fme7_Apu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Nes_Fme7_Apu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Sunsoft FME-7 sound emulator -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef NES_FME7_APU_H #define NES_FME7_APU_H @@ -30,9 +30,9 @@ void load_state( fme7_apu_state_t const& ); // Mask and addresses of registers - enum { addr_mask = 0xe000 }; - enum { data_addr = 0xe000 }; - enum { latch_addr = 0xc000 }; + enum { addr_mask = 0xE000 }; + enum { data_addr = 0xE000 }; + enum { latch_addr = 0xC000 }; // (addr & addr_mask) == latch_addr void write_latch( int ); @@ -97,8 +97,8 @@ { if ( (unsigned) latch >= reg_count ) { - #ifdef dprintf - dprintf( "FME7 write to %02X (past end of sound registers)\n", (int) latch ); + #ifdef debug_printf + debug_printf( "FME7 write to %02X (past end of sound registers)\n", (int) latch ); #endif return; } diff -Nru audacious-plugins-2.4.4/src/console/Nsfe_Emu.cxx audacious-plugins-3.2/src/console/Nsfe_Emu.cxx --- audacious-plugins-2.4.4/src/console/Nsfe_Emu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Nsfe_Emu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Nsfe_Emu.h" @@ -135,7 +135,7 @@ blargg_long size = get_le32( block_header [0] ); blargg_long tag = get_le32( block_header [1] ); - //dprintf( "tag: %c%c%c%c\n", char(tag), char(tag>>8), char(tag>>16), char(tag>>24) ); + //debug_printf( "tag: %c%c%c%c\n", char(tag), char(tag>>8), char(tag>>16), char(tag>>24) ); switch ( tag ) { @@ -297,7 +297,9 @@ static Music_Emu* new_nsfe_emu () { return BLARGG_NEW Nsfe_Emu ; } static Music_Emu* new_nsfe_file() { return BLARGG_NEW Nsfe_File; } -gme_type_t_ const gme_nsfe_type [1] = {{ "Nintendo NES", 0, &new_nsfe_emu, &new_nsfe_file, "NSFE", 1 }}; +static gme_type_t_ const gme_nsfe_type_ = { "Nintendo NES", 0, &new_nsfe_emu, &new_nsfe_file, "NSFE", 1 }; +gme_type_t const gme_nsfe_type = &gme_nsfe_type_; + blargg_err_t Nsfe_Emu::load_( Data_Reader& in ) { diff -Nru audacious-plugins-2.4.4/src/console/Nsfe_Emu.h audacious-plugins-3.2/src/console/Nsfe_Emu.h --- audacious-plugins-2.4.4/src/console/Nsfe_Emu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Nsfe_Emu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Nintendo NES/Famicom NSFE music file emulator -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef NSFE_EMU_H #define NSFE_EMU_H diff -Nru audacious-plugins-2.4.4/src/console/Nsf_Emu.cxx audacious-plugins-3.2/src/console/Nsf_Emu.cxx --- audacious-plugins-2.4.4/src/console/Nsf_Emu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Nsf_Emu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Nsf_Emu.h" @@ -127,7 +127,9 @@ static Music_Emu* new_nsf_emu () { return BLARGG_NEW Nsf_Emu ; } static Music_Emu* new_nsf_file() { return BLARGG_NEW Nsf_File; } -gme_type_t_ const gme_nsf_type [1] = {{ "Nintendo NES", 0, &new_nsf_emu, &new_nsf_file, "NSF", 1 }}; +static gme_type_t_ const gme_nsf_type_ = { "Nintendo NES", 0, &new_nsf_emu, &new_nsf_file, "NSF", 1 }; +gme_type_t const gme_nsf_type = &gme_nsf_type_; + // Setup @@ -440,7 +442,7 @@ // memory mapper? if ( addr == 0xFFF8 ) return; - dprintf( "write_unmapped( 0x%04X, 0x%02X )\n", (unsigned) addr, (unsigned) data ); + debug_printf( "write_unmapped( 0x%04X, 0x%02X )\n", (unsigned) addr, (unsigned) data ); } #endif } @@ -488,7 +490,7 @@ set_time( 0 ); while ( time() < duration ) { - nes_time_t end = min( next_play, duration ); + nes_time_t end = min( (blip_time_t) next_play, duration ); end = min( end, time() + 32767 ); // allows CPU to use 16-bit time delta if ( cpu::run( end ) ) { diff -Nru audacious-plugins-2.4.4/src/console/Nsf_Emu.h audacious-plugins-3.2/src/console/Nsf_Emu.h --- audacious-plugins-2.4.4/src/console/Nsf_Emu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Nsf_Emu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Nintendo NES/Famicom NSF music file emulator -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef NSF_EMU_H #define NSF_EMU_H diff -Nru audacious-plugins-2.4.4/src/console/plugin.c audacious-plugins-3.2/src/console/plugin.c --- audacious-plugins-2.4.4/src/console/plugin.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/plugin.c 2012-01-20 19:48:30.000000000 +0000 @@ -17,12 +17,12 @@ #include "configure.h" Tuple * console_probe_for_tuple(const gchar *filename, VFSFile *fd); -Tuple * console_get_file_tuple(const gchar *filename); -void console_play_file(InputPlayback *playback); +gboolean console_play(InputPlayback *playback, const gchar *filename, + VFSFile *file, gint start_time, gint stop_time, gboolean pause); void console_seek(InputPlayback *data, gint time); void console_stop(InputPlayback *playback); -void console_pause(InputPlayback * playback, gshort p); -void console_init(void); +void console_pause(InputPlayback * playback, gboolean pause); +gboolean console_init (void); void console_cleanup(void); static void console_aboutbox (void) @@ -44,23 +44,18 @@ "vgm", "vgz", NULL }; -static InputPlugin console_ip = -{ - .description = "Game Console Music Decoder", +AUD_INPUT_PLUGIN +( + .name = "Game Console Music Decoder", .init = console_init, .cleanup = console_cleanup, .about = console_aboutbox, .configure = console_cfg_ui, - .play_file = console_play_file, + .play = console_play, .stop = console_stop, .pause = console_pause, - .seek = console_seek, - .vfs_extensions = gme_fmts, - .get_song_tuple = console_get_file_tuple, + .mseek = console_seek, + .extensions = gme_fmts, .probe_for_tuple = console_probe_for_tuple, .have_subtune = TRUE -}; - -static InputPlugin *console_iplist[] = { &console_ip, NULL }; - -SIMPLE_INPUT_PLUGIN(console, console_iplist); +) diff -Nru audacious-plugins-2.4.4/src/console/Sap_Apu.cxx audacious-plugins-3.2/src/console/Sap_Apu.cxx --- audacious-plugins-2.4.4/src/console/Sap_Apu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Sap_Apu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Sap_Apu.h" @@ -66,7 +66,7 @@ blargg_ulong rev = n & 1; for ( int i = 1; i < poly5_len; i++ ) rev |= (n >> i & 1) << (poly5_len - i); - dprintf( "poly5: 0x%08lX\n", rev ); + debug_printf( "poly5: 0x%08lX\n", rev ); } } @@ -114,7 +114,7 @@ period = (period - 6) * divider; if ( (osc [-1].regs [1] & 0x1F) > 0x10 ) - dprintf( "Use of slave channel in 16-bit mode not supported\n" ); + debug_printf( "Use of slave channel in 16-bit mode not supported\n" ); } } osc->period = period; diff -Nru audacious-plugins-2.4.4/src/console/Sap_Apu.h audacious-plugins-3.2/src/console/Sap_Apu.h --- audacious-plugins-2.4.4/src/console/Sap_Apu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Sap_Apu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Atari POKEY sound chip emulator -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef SAP_APU_H #define SAP_APU_H diff -Nru audacious-plugins-2.4.4/src/console/Sap_Cpu.cxx audacious-plugins-3.2/src/console/Sap_Cpu.cxx --- audacious-plugins-2.4.4/src/console/Sap_Cpu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Sap_Cpu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Sap_Cpu.h" @@ -889,7 +889,7 @@ goto loop; } delayed_cli: - dprintf( "Delayed CLI not emulated\n" ); + debug_printf( "Delayed CLI not emulated\n" ); goto loop; } @@ -904,7 +904,7 @@ s_time += delta; if ( s_time < 0 ) goto loop; - dprintf( "Delayed SEI not emulated\n" ); + debug_printf( "Delayed SEI not emulated\n" ); goto loop; } @@ -945,7 +945,7 @@ goto idle_done; pc++; result_ = 4; - dprintf( "BRK executed\n" ); + debug_printf( "BRK executed\n" ); interrupt: { diff -Nru audacious-plugins-2.4.4/src/console/Sap_Cpu.h audacious-plugins-3.2/src/console/Sap_Cpu.h --- audacious-plugins-2.4.4/src/console/Sap_Cpu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Sap_Cpu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Atari 6502 CPU emulator -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef SAP_CPU_H #define SAP_CPU_H diff -Nru audacious-plugins-2.4.4/src/console/sap_cpu_io.h audacious-plugins-3.2/src/console/sap_cpu_io.h --- audacious-plugins-2.4.4/src/console/sap_cpu_io.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/sap_cpu_io.h 2012-01-20 19:48:30.000000000 +0000 @@ -20,7 +20,7 @@ int Sap_Emu::cpu_read( sap_addr_t addr ) { if ( (addr & 0xF900) == 0xD000 ) - dprintf( "Unmapped read $%04X\n", addr ); + debug_printf( "Unmapped read $%04X\n", addr ); return mem.ram [addr]; } #endif diff -Nru audacious-plugins-2.4.4/src/console/Sap_Emu.cxx audacious-plugins-3.2/src/console/Sap_Emu.cxx --- audacious-plugins-2.4.4/src/console/Sap_Emu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Sap_Emu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Sap_Emu.h" @@ -23,13 +23,13 @@ Sap_Emu::Sap_Emu() { set_type( gme_sap_type ); - + static const char* const names [Sap_Apu::osc_count * 2] = { "Wave 1", "Wave 2", "Wave 3", "Wave 4", "Wave 5", "Wave 6", "Wave 7", "Wave 8", }; set_voice_names( names ); - + static int const types [Sap_Apu::osc_count * 2] = { wave_type | 1, wave_type | 2, wave_type | 3, wave_type | 0, wave_type | 5, wave_type | 6, wave_type | 7, wave_type | 4, @@ -68,7 +68,7 @@ { if ( in >= end ) return -1; - + int n = 0; while ( in < end ) { @@ -104,10 +104,10 @@ out->author [0] = 0; out->name [0] = 0; out->copyright [0] = 0; - + if ( size < 16 || memcmp( in, "SAP\x0D\x0A", 5 ) ) return gme_wrong_file_type; - + byte const* file_end = in + size - 5; in += 5; while ( in < file_end && (in [0] != 0xFF || in [1] != 0xFF) ) @@ -115,14 +115,14 @@ byte const* line_end = in; while ( line_end < file_end && *line_end != 0x0D ) line_end++; - + char const* tag = (char const*) in; while ( in < line_end && *in > ' ' ) in++; int tag_len = (char const*) in - tag; - + while ( in < line_end && *in <= ' ' ) in++; - + if ( tag_len <= 0 ) { // skip line @@ -158,10 +158,10 @@ case 'C': case 'B': break; - + case 'D': return "Digimusic not supported"; - + default: return "Unsupported player type"; } @@ -188,14 +188,14 @@ { parse_string( in, line_end, sizeof out->copyright, out->copyright ); } - + in = line_end + 2; } - + if ( in [0] != 0xFF || in [1] != 0xFF ) return "ROM data missing"; out->rom_data = in + 2; - + return 0; } @@ -215,16 +215,16 @@ struct Sap_File : Gme_Info_ { Sap_Emu::info_t info; - + Sap_File() { set_type( gme_sap_type ); } - + blargg_err_t load_mem_( byte const* begin, long size ) { RETURN_ERR( parse_info( begin, size, &info ) ); set_track_count( info.track_count ); return 0; } - + blargg_err_t track_info_( track_info_t* out, int ) const { copy_sap_fields( info, out ); @@ -235,14 +235,16 @@ static Music_Emu* new_sap_emu () { return BLARGG_NEW Sap_Emu ; } static Music_Emu* new_sap_file() { return BLARGG_NEW Sap_File; } -gme_type_t_ const gme_sap_type [1] = {{ "Atari XL", 0, &new_sap_emu, &new_sap_file, "SAP", 1 }}; +static gme_type_t_ const gme_sap_type_ = { "Atari XL", 0, &new_sap_emu, &new_sap_file, "SAP", 1 }; +gme_type_t const gme_sap_type = &gme_sap_type_; + // Setup blargg_err_t Sap_Emu::load_mem_( byte const* in, long size ) { file_end = in + size; - + info.warning = 0; info.type = 'B'; info.stereo = false; @@ -251,12 +253,12 @@ info.music_addr = -1; info.fastplay = 312; RETURN_ERR( parse_info( in, size, &info ) ); - + set_warning( info.warning ); set_track_count( info.track_count ); set_voice_count( Sap_Apu::osc_count << info.stereo ); apu_impl.volume( gain() ); - + return setup_buffer( 1773447 ); } @@ -310,7 +312,7 @@ r.a = track; run_routine( info.init_addr ); break; - + case 'C': r.a = 0x70; r.x = info.music_addr&0xFF; @@ -326,7 +328,7 @@ blargg_err_t Sap_Emu::start_track_( int track ) { RETURN_ERR( Classic_Emu::start_track_( track ) ); - + memset( &mem, 0, sizeof mem ); byte const* in = info.rom_data; @@ -334,7 +336,7 @@ { unsigned start = get_le16( in ); unsigned end = get_le16( in + 2 ); - //dprintf( "Block $%04X-$%04X\n", start, end ); + //debug_printf( "Block $%04X-$%04X\n", start, end ); in += 4; if ( end < start ) { @@ -347,22 +349,22 @@ set_warning( "Invalid file data block" ); break; } - + memcpy( mem.ram + start, in, len ); in += len; if ( file_end - in >= 2 && in [0] == 0xFF && in [1] == 0xFF ) in += 2; } - + apu.reset( &apu_impl ); apu2.reset( &apu_impl ); cpu::reset( mem.ram ); time_mask = 0; // disables sound during init call_init( track ); time_mask = -1; - + next_play = play_period(); - + return 0; } @@ -378,7 +380,7 @@ apu.write_data( time() & time_mask, addr, data ); return; } - + if ( (addr ^ (Sap_Apu::start_addr + 0x10)) <= (Sap_Apu::end_addr - Sap_Apu::start_addr) && info.stereo ) { @@ -388,7 +390,7 @@ } if ( (addr & ~0x0010) != 0xD20F || data != 0x03 ) - dprintf( "Unmapped write $%04X <- $%02X\n", addr, data ); + debug_printf( "Unmapped write $%04X <- $%02X\n", addr, data ); } inline void Sap_Emu::call_play() @@ -398,7 +400,7 @@ case 'B': cpu_jsr( info.play_addr ); break; - + case 'C': cpu_jsr( info.play_addr + 6 ); break; @@ -412,7 +414,7 @@ { if ( cpu::run( duration ) || r.pc > idle_addr ) return "Emulation error (illegal instruction)"; - + if ( r.pc == idle_addr ) { if ( next_play <= duration ) @@ -428,7 +430,7 @@ } } } - + duration = time(); next_play -= duration; check( next_play >= 0 ); @@ -437,6 +439,6 @@ apu.end_frame( duration ); if ( info.stereo ) apu2.end_frame( duration ); - + return 0; } diff -Nru audacious-plugins-2.4.4/src/console/Sap_Emu.h audacious-plugins-3.2/src/console/Sap_Emu.h --- audacious-plugins-2.4.4/src/console/Sap_Emu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Sap_Emu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Atari XL/XE SAP music file emulator -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef SAP_EMU_H #define SAP_EMU_H diff -Nru audacious-plugins-2.4.4/src/console/Sms_Oscs.h audacious-plugins-3.2/src/console/Sms_Oscs.h --- audacious-plugins-2.4.4/src/console/Sms_Oscs.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Sms_Oscs.h 2012-01-20 19:48:30.000000000 +0000 @@ -4,6 +4,7 @@ #ifndef SMS_OSCS_H #define SMS_OSCS_H +#include "blargg_common.h" #include "Blip_Buffer.h" struct Sms_Osc diff -Nru audacious-plugins-2.4.4/src/console/Snes_Spc.cxx audacious-plugins-3.2/src/console/Snes_Spc.cxx --- audacious-plugins-2.4.4/src/console/Snes_Spc.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Snes_Spc.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // SPC emulation support: init, sample buffering, reset, SPC loading -// snes_spc 0.9.0. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Snes_Spc.h" diff -Nru audacious-plugins-2.4.4/src/console/Snes_Spc.h audacious-plugins-3.2/src/console/Snes_Spc.h --- audacious-plugins-2.4.4/src/console/Snes_Spc.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Snes_Spc.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // SNES SPC-700 APU emulator -// snes_spc 0.9.0 +// Game_Music_Emu 0.5.5 #ifndef SNES_SPC_H #define SNES_SPC_H @@ -66,10 +66,7 @@ // Sets tempo, where tempo_unit = normal, tempo_unit / 2 = half speed, etc. enum { tempo_unit = 0x100 }; void set_tempo( int ); - - enum { gain_unit = Spc_Dsp::gain_unit }; - void set_gain( int gain ); - + // SPC music files // Loads SPC data into emulator @@ -108,6 +105,22 @@ #endif public: + // TODO: document + struct regs_t + { + int pc; + int a; + int x; + int y; + int psw; + int sp; + }; + regs_t& smp_regs() { return m.cpu_regs; } + + uint8_t* smp_ram() { return m.ram.ram; } + + void run_until( time_t t ) { run_until_( t ); } +public: BLARGG_DISABLE_NOTHROW typedef BOOST::uint16_t uint16_t; @@ -146,15 +159,7 @@ uint8_t smp_regs [2] [reg_count]; - struct - { - int pc; - int a; - int x; - int y; - int psw; - int sp; - } cpu_regs; + regs_t cpu_regs; rel_time_t dsp_time; time_t spc_time; @@ -271,8 +276,6 @@ run_until_( t ) [0x10 + port] = data; } -inline void Snes_Spc::set_gain( int gain ) { dsp.set_gain( gain ); } - inline void Snes_Spc::mute_voices( int mask ) { dsp.mute_voices( mask ); } inline void Snes_Spc::disable_surround( bool disable ) { dsp.disable_surround( disable ); } diff -Nru audacious-plugins-2.4.4/src/console/Spc_Cpu.cxx audacious-plugins-3.2/src/console/Spc_Cpu.cxx --- audacious-plugins-2.4.4/src/console/Spc_Cpu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Spc_Cpu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Core SPC emulation: CPU, timers, SMP registers, memory -// snes_spc 0.9.0. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Snes_Spc.h" @@ -176,7 +176,7 @@ if ( REGS [r_dspaddr] <= 0x7F ) dsp.write( REGS [r_dspaddr], data ); else if ( !SPC_MORE_ACCURACY ) - dprintf( "SPC wrote to DSP register > $7F\n" ); + debug_printf( "SPC wrote to DSP register > $7F\n" ); } @@ -277,8 +277,9 @@ }; #endif -// divided into multiple functions to keep rarely-used functionality separate -// so often-used functionality can be optimized better by compiler +// Read/write handlers are divided into multiple functions to keep rarely-used +// functionality separate so often-used functionality can be optimized better +// by compiler. // If write isn't preceded by read, data has this added to it int const no_read_before_write = 0x2000; @@ -302,7 +303,7 @@ t->next_time == time + TIMER_MUL( t, 1 ) && ((period - 1) | ~0x0F) & period ) { - //dprintf( "SPC pathological timer target write\n" ); + //debug_printf( "SPC pathological timer target write\n" ); // If the period is 3, 5, or 9, there's a probability this behavior won't occur, // based on the previous period @@ -331,7 +332,7 @@ case r_t1out: case r_t2out: if ( !SPC_MORE_ACCURACY ) - dprintf( "SPC wrote to counter %d\n", (int) addr - r_t0out ); + debug_printf( "SPC wrote to counter %d\n", (int) addr - r_t0out ); if ( data < no_read_before_write / 2 ) run_timer( &m.timers [addr - r_t0out], time - 1 )->counter = 0; @@ -345,7 +346,7 @@ case r_test: if ( (uint8_t) data != 0x0A ) - dprintf( "SPC wrote to test register\n" ); + debug_printf( "SPC wrote to test register\n" ); break; case r_control: diff -Nru audacious-plugins-2.4.4/src/console/Spc_Cpu.h audacious-plugins-3.2/src/console/Spc_Cpu.h --- audacious-plugins-2.4.4/src/console/Spc_Cpu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Spc_Cpu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// snes_spc 0.9.0. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ /* Copyright (C) 2004-2007 Shay Green. This module is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser @@ -16,7 +16,7 @@ #if SPC_MORE_ACCURACY #define SUSPICIOUS_OPCODE( name ) ((void) 0) #else - #define SUSPICIOUS_OPCODE( name ) dprintf( "SPC: suspicious opcode: " name "\n" ) + #define SUSPICIOUS_OPCODE( name ) debug_printf( "SPC: suspicious opcode: " name "\n" ) #endif #define CPU_READ( time, offset, addr )\ @@ -1184,7 +1184,7 @@ { addr &= 0xFFFF; SET_PC( addr ); - dprintf( "SPC: PC wrapped around\n" ); + debug_printf( "SPC: PC wrapped around\n" ); goto loop; } } @@ -1205,7 +1205,7 @@ // Uncache registers if ( GET_PC() >= 0x10000 ) - dprintf( "SPC: PC wrapped around\n" ); + debug_printf( "SPC: PC wrapped around\n" ); m.cpu_regs.pc = (uint16_t) GET_PC(); m.cpu_regs.sp = ( uint8_t) GET_SP(); m.cpu_regs.a = ( uint8_t) a; diff -Nru audacious-plugins-2.4.4/src/console/Spc_Dsp.cxx audacious-plugins-3.2/src/console/Spc_Dsp.cxx --- audacious-plugins-2.4.4/src/console/Spc_Dsp.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Spc_Dsp.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,7 +1,4 @@ -// snes_spc 0.9.0. http://www.slack.net/~ant/ - -// TODO: we can remove this as soon as the reverb problem is fixed. -- mf0102 -#include "configure.h" +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Spc_Dsp.h" @@ -592,9 +589,8 @@ // Echo out if ( !(REG(flg) & 0x20) ) { - unsigned shift = audcfg.inc_spc_reverb ? 14 : 16; - int l = (echo_out_l >> 7) + ((echo_in_l * (int8_t) REG(efb)) >> shift); - int r = (echo_out_r >> 7) + ((echo_in_r * (int8_t) REG(efb)) >> shift); + int l = (echo_out_l >> 7) + ((echo_in_l * (int8_t) REG(efb)) >> 14); + int r = (echo_out_r >> 7) + ((echo_in_r * (int8_t) REG(efb)) >> 14); // just to help pass more validation tests #if SPC_MORE_ACCURACY @@ -610,8 +606,8 @@ } // Sound out - int l = (((main_out_l * mvoll + echo_in_l * (int8_t) REG(evoll)) >> 14) * m.gain) >> 8; - int r = (((main_out_r * mvolr + echo_in_r * (int8_t) REG(evolr)) >> 14) * m.gain) >> 8; + int l = (main_out_l * mvoll + echo_in_l * (int8_t) REG(evoll)) >> 14; + int r = (main_out_r * mvolr + echo_in_r * (int8_t) REG(evolr)) >> 14; CLAMP16( l ); CLAMP16( r ); @@ -645,7 +641,6 @@ void Spc_Dsp::init( void* ram_64k ) { m.ram = (uint8_t*) ram_64k; - set_gain( gain_unit ); mute_voices( 0 ); disable_surround( false ); set_output( 0, 0 ); diff -Nru audacious-plugins-2.4.4/src/console/Spc_Dsp.h audacious-plugins-3.2/src/console/Spc_Dsp.h --- audacious-plugins-2.4.4/src/console/Spc_Dsp.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Spc_Dsp.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,12 +1,12 @@ // Fast SNES SPC-700 DSP emulator (about 3x speed of accurate one) -// snes_spc 0.9.0 +// Game_Music_Emu 0.5.5 #ifndef SPC_DSP_H #define SPC_DSP_H #include "blargg_common.h" -class Spc_Dsp { +struct Spc_Dsp { public: typedef BOOST::uint8_t uint8_t; @@ -51,10 +51,7 @@ // If true, prevents channels and global volumes from being phase-negated void disable_surround( bool disable = true ); - - enum { gain_unit = 0x100 }; - void set_gain( int gain ); - + // State // Resets DSP and uses supplied values to initialize registers @@ -140,7 +137,6 @@ // non-emulation state uint8_t* ram; // 64K shared RAM between DSP and SMP int mute_mask; - int gain; int surround_threshold; sample_t* out; sample_t* out_end; @@ -204,8 +200,6 @@ } } -inline void Spc_Dsp::set_gain( int gain ) { m.gain = gain; } - inline void Spc_Dsp::disable_surround( bool disable ) { m.surround_threshold = disable ? 0 : -0x4000; diff -Nru audacious-plugins-2.4.4/src/console/Spc_Emu.cxx audacious-plugins-3.2/src/console/Spc_Emu.cxx --- audacious-plugins-2.4.4/src/console/Spc_Emu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Spc_Emu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Spc_Emu.h" @@ -19,6 +19,8 @@ #include "blargg_source.h" +// TODO: support Spc_Filter's bass + Spc_Emu::Spc_Emu() { set_type( gme_spc_type ); @@ -54,7 +56,7 @@ byte const* in = begin + 8; if ( end - in > info_size ) { - dprintf( "Extra data after SPC xid6 info\n" ); + debug_printf( "Extra data after SPC xid6 info\n" ); end = in + info_size; } @@ -114,7 +116,7 @@ default: if ( id < 0x01 || (id > 0x07 && id < 0x10) || (id > 0x14 && id < 0x30) || id > 0x36 ) - dprintf( "Unknown SPC xid6 block: %X\n", (int) id ); + debug_printf( "Unknown SPC xid6 block: %X\n", (int) id ); break; } if ( field ) @@ -134,7 +136,7 @@ { // ...but some files have no padding in = unaligned; - dprintf( "SPC info tag wasn't properly padded to align\n" ); + debug_printf( "SPC info tag wasn't properly padded to align\n" ); break; } } @@ -241,14 +243,16 @@ static Music_Emu* new_spc_emu () { return BLARGG_NEW Spc_Emu ; } static Music_Emu* new_spc_file() { return BLARGG_NEW Spc_File; } -gme_type_t_ const gme_spc_type [1] = {{ "Super Nintendo", 1, &new_spc_emu, &new_spc_file, "SPC", 0 }}; +static gme_type_t_ const gme_spc_type_ = { "Super Nintendo", 1, &new_spc_emu, &new_spc_file, "SPC", 0 }; +gme_type_t const gme_spc_type = &gme_spc_type_; + // Setup blargg_err_t Spc_Emu::set_sample_rate_( long sample_rate ) { RETURN_ERR( apu.init() ); - apu.set_gain( (int) (gain() * Snes_Spc::gain_unit) ); + enable_accuracy( false ); if ( sample_rate != native_sample_rate ) { RETURN_ERR( resampler.buffer_size( native_sample_rate / 20 * 2 ) ); @@ -257,6 +261,12 @@ return 0; } +void Spc_Emu::enable_accuracy_( bool b ) +{ + Music_Emu::enable_accuracy_( b ); + filter.enable( b ); +} + void Spc_Emu::mute_voices_( int m ) { Music_Emu::mute_voices_( m ); @@ -276,17 +286,29 @@ // Emulation -void Spc_Emu::set_tempo_( double t ) { apu.set_tempo( (int) (t * Snes_Spc::tempo_unit) ); } +void Spc_Emu::set_tempo_( double t ) +{ + apu.set_tempo( (int) (t * apu.tempo_unit) ); +} blargg_err_t Spc_Emu::start_track_( int track ) { RETURN_ERR( Music_Emu::start_track_( track ) ); resampler.clear(); + filter.clear(); RETURN_ERR( apu.load_spc( file_data, file_size ) ); + filter.set_gain( (int) (gain() * SPC_Filter::gain_unit) ); apu.clear_echo(); return 0; } +blargg_err_t Spc_Emu::play_and_filter( long count, sample_t out [] ) +{ + RETURN_ERR( apu.play( count, out ) ); + filter.run( out, count ); + return 0; +} + blargg_err_t Spc_Emu::skip_( long count ) { if ( sample_rate() != native_sample_rate ) @@ -298,7 +320,10 @@ // TODO: shouldn't skip be adjusted for the 64 samples read afterwards? if ( count > 0 ) + { RETURN_ERR( apu.skip( count ) ); + filter.clear(); + } // eliminate pop due to resampler const int resampler_latency = 64; @@ -309,7 +334,7 @@ blargg_err_t Spc_Emu::play_( long count, sample_t* out ) { if ( sample_rate() == native_sample_rate ) - return apu.play( count, out ); + return play_and_filter( count, out ); long remain = count; while ( remain > 0 ) @@ -318,7 +343,7 @@ if ( remain > 0 ) { long n = resampler.max_write(); - RETURN_ERR( apu.play( n, resampler.buffer() ) ); + RETURN_ERR( play_and_filter( n, resampler.buffer() ) ); resampler.write( n ); } } diff -Nru audacious-plugins-2.4.4/src/console/Spc_Emu.h audacious-plugins-3.2/src/console/Spc_Emu.h --- audacious-plugins-2.4.4/src/console/Spc_Emu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Spc_Emu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,12 +1,13 @@ // Super Nintendo SPC music file emulator -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef SPC_EMU_H #define SPC_EMU_H #include "Fir_Resampler.h" #include "Music_Emu.h" #include "Snes_Spc.h" +#include "Spc_Filter.h" class Spc_Emu : public Music_Emu { public: @@ -65,11 +66,15 @@ blargg_err_t skip_( long ); void mute_voices_( int ); void set_tempo_( double ); + void enable_accuracy_( bool ); private: byte const* file_data; long file_size; Fir_Resampler<24> resampler; + SPC_Filter filter; Snes_Spc apu; + + blargg_err_t play_and_filter( long count, sample_t out [] ); }; inline void Spc_Emu::disable_surround( bool b ) { apu.disable_surround( b ); } diff -Nru audacious-plugins-2.4.4/src/console/Spc_Filter.cxx audacious-plugins-3.2/src/console/Spc_Filter.cxx --- audacious-plugins-2.4.4/src/console/Spc_Filter.cxx 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/console/Spc_Filter.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,83 @@ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ + +#include "Spc_Filter.h" + +#include + +/* Copyright (C) 2007 Shay Green. This module 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. This +module 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 this module; if not, write to the Free Software Foundation, +Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ + +#include "blargg_source.h" + +void SPC_Filter::clear() { memset( ch, 0, sizeof ch ); } + +SPC_Filter::SPC_Filter() +{ + enabled = true; + gain = gain_unit; + bass = bass_norm; + clear(); +} + +void SPC_Filter::run( short* io, int count ) +{ + require( (count & 1) == 0 ); // must be even + + int const gain = this->gain; + if ( enabled ) + { + int const bass = this->bass; + chan_t* c = &ch [2]; + do + { + // cache in registers + int sum = (--c)->sum; + int pp1 = c->pp1; + int p1 = c->p1; + + for ( int i = 0; i < count; i += 2 ) + { + // Low-pass filter (two point FIR with coeffs 0.25, 0.75) + int f = io [i] + p1; + p1 = io [i] * 3; + + // High-pass filter ("leaky integrator") + int delta = f - pp1; + pp1 = f; + int s = sum >> (gain_bits + 2); + sum += (delta * gain) - (sum >> bass); + + // Clamp to 16 bits + if ( (short) s != s ) + s = (s >> 31) ^ 0x7FFF; + + io [i] = (short) s; + } + + c->p1 = p1; + c->pp1 = pp1; + c->sum = sum; + ++io; + } + while ( c != ch ); + } + else if ( gain != gain_unit ) + { + short* const end = io + count; + while ( io < end ) + { + int s = (*io * gain) >> gain_bits; + if ( (short) s != s ) + s = (s >> 31) ^ 0x7FFF; + *io++ = (short) s; + } + } +} diff -Nru audacious-plugins-2.4.4/src/console/Spc_Filter.h audacious-plugins-3.2/src/console/Spc_Filter.h --- audacious-plugins-2.4.4/src/console/Spc_Filter.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/console/Spc_Filter.h 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,53 @@ +// Simple low-pass and high-pass filter to better match sound output of a SNES + +// Game_Music_Emu 0.5.5 +#ifndef SPC_FILTER_H +#define SPC_FILTER_H + +#include "blargg_common.h" + +struct SPC_Filter { +public: + + // Filters count samples of stereo sound in place. Count must be a multiple of 2. + typedef short sample_t; + void run( sample_t* io, int count ); + +// Optional features + + // Clears filter to silence + void clear(); + + // Sets gain (volume), where gain_unit is normal. Gains greater than gain_unit + // are fine, since output is clamped to 16-bit sample range. + enum { gain_unit = 0x100 }; + void set_gain( int gain ); + + // Enables/disables filtering (when disabled, gain is still applied) + void enable( bool b ); + + // Sets amount of bass (logarithmic scale) + enum { bass_none = 0 }; + enum { bass_norm = 8 }; // normal amount + enum { bass_max = 31 }; + void set_bass( int bass ); + +public: + SPC_Filter(); + BLARGG_DISABLE_NOTHROW +private: + enum { gain_bits = 8 }; + int gain; + int bass; + bool enabled; + struct chan_t { int p1, pp1, sum; }; + chan_t ch [2]; +}; + +inline void SPC_Filter::enable( bool b ) { enabled = b; } + +inline void SPC_Filter::set_gain( int g ) { gain = g; } + +inline void SPC_Filter::set_bass( int b ) { bass = b; } + +#endif diff -Nru audacious-plugins-2.4.4/src/console/Vfs_File.cxx audacious-plugins-3.2/src/console/Vfs_File.cxx --- audacious-plugins-2.4.4/src/console/Vfs_File.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Vfs_File.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,54 +1,71 @@ +#include + #include "Vfs_File.h" -Vfs_File_Reader::Vfs_File_Reader() : file_( 0 ), owned_file_( 0 ) { } +extern "C" { +#include "libaudcore/vfs.h" +} -Vfs_File_Reader::~Vfs_File_Reader() { close(); } +struct reader_private { + VFSFile * file, * owned_file; +}; -void Vfs_File_Reader::reset( VFSFile* f ) +Vfs_File_Reader::Vfs_File_Reader () { - close(); - file_ = f; + p = new struct reader_private; + p->file = 0; + p->owned_file = 0; +} + +Vfs_File_Reader::~Vfs_File_Reader () +{ + close (); + delete p; +} + +void Vfs_File_Reader::reset (/* VFSFile * */ void * file) +{ + close (); + p->file = (VFSFile *) file; } Vfs_File_Reader::error_t Vfs_File_Reader::open( const char* path ) { close(); - file_ = owned_file_ = vfs_fopen( path, "rb" ); - if ( !file_ ) + p->file = p->owned_file = vfs_fopen (path, "r"); + if (! p->file) return "Couldn't open file"; return 0; } long Vfs_File_Reader::size() const { - return vfs_fsize (file_); + return vfs_fsize (p->file); } -long Vfs_File_Reader::read_avail( void* p, long s ) +long Vfs_File_Reader::read_avail (void * buf, long size) { - return (long) vfs_fread( p, 1, s, file_ ); + return (long) vfs_fread (buf, 1, size, p->file); } long Vfs_File_Reader::tell() const { - return vfs_ftell( file_ ); + return vfs_ftell (p->file); } Vfs_File_Reader::error_t Vfs_File_Reader::seek( long n ) { - if ( n == 0 ) // optimization - vfs_rewind( file_ ); - else if ( vfs_fseek( file_, n, SEEK_SET ) != 0 ) + if (vfs_fseek (p->file, n, SEEK_SET) < 0) return eof_error; return 0; } void Vfs_File_Reader::close() { - file_ = 0; - if ( owned_file_ ) + p->file = 0; + if (p->owned_file) { - vfs_fclose( owned_file_ ); - owned_file_ = 0; + vfs_fclose (p->owned_file); + p->owned_file = 0; } } diff -Nru audacious-plugins-2.4.4/src/console/Vfs_File.h audacious-plugins-3.2/src/console/Vfs_File.h --- audacious-plugins-2.4.4/src/console/Vfs_File.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Vfs_File.h 2012-01-20 19:48:30.000000000 +0000 @@ -5,15 +5,11 @@ #include "Data_Reader.h" -extern "C" { -#include -} - class Vfs_File_Reader : public File_Reader { public: - void reset( VFSFile* ); // use already-open file and doesn't close it in close() + // use already-open file and doesn't close it in close() + void reset (/* VFSFile * */ void * file); error_t open( const char* path ); - VFSFile* file() const { return file_; } void close(); public: @@ -24,8 +20,7 @@ long tell() const; error_t seek( long ); private: - VFSFile* file_; - VFSFile* owned_file_; + struct reader_private * p; }; #endif diff -Nru audacious-plugins-2.4.4/src/console/Vgm_Emu.cxx audacious-plugins-3.2/src/console/Vgm_Emu.cxx --- audacious-plugins-2.4.4/src/console/Vgm_Emu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Vgm_Emu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Vgm_Emu.h" @@ -177,7 +177,7 @@ long gd3_offset = get_le32( h.gd3_offset ) - 0x2C; long remain = file_size - Vgm_Emu::header_size - gd3_offset; byte gd3_h [gd3_header_size]; - if ( gd3_offset > 0 || remain >= gd3_header_size ) + if ( gd3_offset > 0 && remain >= gd3_header_size ) { RETURN_ERR( in.skip( gd3_offset ) ); RETURN_ERR( in.read( gd3_h, sizeof gd3_h ) ); @@ -203,8 +203,12 @@ static Music_Emu* new_vgm_emu () { return BLARGG_NEW Vgm_Emu ; } static Music_Emu* new_vgm_file() { return BLARGG_NEW Vgm_File; } -gme_type_t_ const gme_vgm_type [1] = {{ "Sega SMS/Genesis", 1, &new_vgm_emu, &new_vgm_file, "VGM", 1 }}; -gme_type_t_ const gme_vgz_type [1] = {{ "Sega SMS/Genesis", 1, &new_vgm_emu, &new_vgm_file, "VGZ", 1 }}; +static gme_type_t_ const gme_vgm_type_ = { "Sega SMS/Genesis", 1, &new_vgm_emu, &new_vgm_file, "VGM", 1 }; +gme_type_t const gme_vgm_type = &gme_vgm_type_; + +static gme_type_t_ const gme_vgz_type_ = { "Sega SMS/Genesis", 1, &new_vgm_emu, &new_vgm_file, "VGZ", 1 }; +gme_type_t const gme_vgz_type = &gme_vgz_type_; + // Setup @@ -214,8 +218,8 @@ { vgm_rate = (long) (44100 * t + 0.5); blip_time_factor = (long) floor( double (1L << blip_time_bits) / vgm_rate * psg_rate + 0.5 ); - //dprintf( "blip_time_factor: %ld\n", blip_time_factor ); - //dprintf( "vgm_rate: %ld\n", vgm_rate ); + //debug_printf( "blip_time_factor: %ld\n", blip_time_factor ); + //debug_printf( "vgm_rate: %ld\n", vgm_rate ); // TODO: remove? calculates vgm_rate more accurately (above differs at most by one Hz only) //blip_time_factor = (long) floor( double (1L << blip_time_bits) * psg_rate / 44100 / t + 0.5 ); //vgm_rate = (long) floor( double (1L << blip_time_bits) * psg_rate / blip_time_factor + 0.5 ); diff -Nru audacious-plugins-2.4.4/src/console/Vgm_Emu.h audacious-plugins-3.2/src/console/Vgm_Emu.h --- audacious-plugins-2.4.4/src/console/Vgm_Emu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Vgm_Emu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Sega Master System/Mark III, Sega Genesis/Mega Drive, BBC Micro VGM music file emulator -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef VGM_EMU_H #define VGM_EMU_H diff -Nru audacious-plugins-2.4.4/src/console/Vgm_Emu_Impl.cxx audacious-plugins-3.2/src/console/Vgm_Emu_Impl.cxx --- audacious-plugins-2.4.4/src/console/Vgm_Emu_Impl.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Vgm_Emu_Impl.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ #include "Vgm_Emu.h" @@ -244,7 +244,7 @@ int pairs = min_pairs; while ( (pairs = to_fm_time( vgm_time )) < min_pairs ) vgm_time++; - //dprintf( "pairs: %d, min_pairs: %d\n", pairs, min_pairs ); + //debug_printf( "pairs: %d, min_pairs: %d\n", pairs, min_pairs ); if ( ym2612.enabled() ) { diff -Nru audacious-plugins-2.4.4/src/console/Vgm_Emu_Impl.h audacious-plugins-3.2/src/console/Vgm_Emu_Impl.h --- audacious-plugins-2.4.4/src/console/Vgm_Emu_Impl.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Vgm_Emu_Impl.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // Low-level parts of Vgm_Emu -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef VGM_EMU_IMPL_H #define VGM_EMU_IMPL_H diff -Nru audacious-plugins-2.4.4/src/console/Ym2612_Emu.cxx audacious-plugins-3.2/src/console/Ym2612_Emu.cxx --- audacious-plugins-2.4.4/src/console/Ym2612_Emu.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Ym2612_Emu.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,4 @@ -// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ +// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ // Based on Gens 2.10 ym2612.c diff -Nru audacious-plugins-2.4.4/src/console/Ym2612_Emu.h audacious-plugins-3.2/src/console/Ym2612_Emu.h --- audacious-plugins-2.4.4/src/console/Ym2612_Emu.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/console/Ym2612_Emu.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ // YM2612 FM sound chip emulator interface -// Game_Music_Emu 0.5.2 +// Game_Music_Emu 0.5.5 #ifndef YM2612_EMU_H #define YM2612_EMU_H diff -Nru audacious-plugins-2.4.4/src/CoreAudio/about.c audacious-plugins-3.2/src/CoreAudio/about.c --- audacious-plugins-2.4.4/src/CoreAudio/about.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/CoreAudio/about.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ -/* XMMS - Cross-platform multimedia player - * Copyright (C) 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#include "coreaudio.h" - -#include -#include - -void osx_about(void) -{ - static GtkWidget *dialog = NULL; - - audgui_simple_message(&dialog, GTK_MESSAGE_INFO, - "About CoreAudio Plugin", - "Audacious CoreAudio Plugin\n\n " - "This program is free software; you can redistribute it and/or modify\n" - "it under the terms of the GNU General Public License as published by\n" - "the Free Software Foundation; either version 2 of the License, or\n" - "(at your option) any later version.\n" - "\n" - "This program is distributed in the hope that it will be useful,\n" - "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" - "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" - "GNU General Public License for more details.\n" - "\n" - "You should have received a copy of the GNU General Public License\n" - "along with this program; if not, write to the Free Software\n" - "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" - "USA."); -} diff -Nru audacious-plugins-2.4.4/src/CoreAudio/audio.c audacious-plugins-3.2/src/CoreAudio/audio.c --- audacious-plugins-2.4.4/src/CoreAudio/audio.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/CoreAudio/audio.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,678 +0,0 @@ -/* XMMS - Cross-platform multimedia player - * Copyright (C) 1998-2001 Peter Alm, Mikael Alm, Olle Hallnas, - * Thomas Nilsson and 4Front Technologies - * Copyright (C) 1999-2001 Haavard Kvaalen - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#include "coreaudio.h" -#include -#include - -AudioDeviceID device_id; -AudioStreamBasicDescription device_format; -AudioStreamBasicDescription streamDesc; - -//static gint fd = 0; -static float *buffer; -gboolean playing_flag; -static gboolean prebuffer, unpause, do_pause, remove_prebuffer; -static gint device_buffer_size; -static gint buffer_size, prebuffer_size;//, blk_size; -static gint buffer_index = 0; -static gint output_time_offset = 0; -static guint64 written = 0, output_total = 0; -static gint flush; -static gchar *device_name; - -gint sample_multiplier, sample_size; - -gboolean paused; - -static int (*osx_convert_func) (void **data, int length); - -float left_volume, right_volume; -float base_pitch = 0.0; -float user_pitch = 0.0; -int output_buf_length; // length of data in output buffer -short output_buf[OUTPUT_BUFSIZE]; /* buffer used to hold main output to dbfsd */ -short cue_buf[OUTPUT_BUFSIZE]; /* buffer used to hold cue output to dbfsd */ -short conv_buf[OUTPUT_BUFSIZE]; /* buffer used to hold format converted input */ - -/* - * The format of the data from the input plugin - * This will never change during a song. - */ -struct format_info input; - - -/* - * The format we get from the effect plugin. - * This will be different from input if the effect plugin does - * some kind of format conversion. - */ -struct format_info effect; - - -/* - * The format of the data we actually send to the soundcard. - * This might be different from effect if we need to resample or do - * some other format conversion. - */ -struct format_info output; - - -static int osx_calc_bitrate(int osx_fmt, int rate, int channels) -{ - int bitrate = rate * channels; - - // for now we know output is stereo - // fix this later - - if (osx_fmt == FMT_U16_BE || osx_fmt == FMT_U16_LE || - osx_fmt == FMT_S16_BE || osx_fmt == FMT_S16_LE) - { - bitrate *= 2; - } - - return bitrate; -} - -static gboolean osx_format_is_neutral(gint fmt) -{ - gboolean ret = FALSE; - - switch (fmt) - { - case FMT_U16_NE: - case FMT_S16_NE: - case FMT_U8: - case FMT_S8: - ret = TRUE; - break; - default: - break; - } - - return ret; -} - -static int osx_get_format(gint fmt) -{ - int format = 0; - - switch (fmt) - { - case FMT_U16_NE: -#ifdef WORDS_BIGENDIAN - format = FMT_U16_BE; -#else - format = FMT_U16_LE; -#endif - break; - case FMT_S16_NE: -#ifdef WORDS_BIGENDIAN - format = FMT_S16_BE; -#else - format = FMT_S16_LE; -#endif - break; - default: - format = fmt; - break; - } - - return format; -} - -static int osx_get_conv_format(gint fmt) -{ - int format = 0; - - switch (fmt) - { - case FMT_U16_LE: -#ifdef WORDS_BIGENDIAN - format = FMT_U16_BE; -#else - format = FMT_U16_LE; -#endif - break; - case FMT_U16_BE: -#ifdef WORDS_BIGENDIAN - format = FMT_U16_LE; -#else - format = FMT_U16_BE; -#endif - break; - case FMT_S16_LE: -#ifdef WORDS_BIGENDIAN - format = FMT_S16_BE; -#else - format = FMT_S16_LE; -#endif - break; - case FMT_S16_BE: -#ifdef WORDS_BIGENDIAN - format = FMT_S16_LE; -#else - format = FMT_S16_BE; -#endif - break; - case FMT_U16_NE: -#ifdef WORDS_BIGENDIAN - format = FMT_U16_BE; -#else - format = FMT_U16_LE; -#endif - break; - case FMT_S16_NE: -#ifdef WORDS_BIGENDIAN - format = FMT_S16_BE; -#else - format = FMT_S16_LE; -#endif - break; - default: - format = fmt; - break; - } - - return format; -} - - -OSStatus play_callback(AudioDeviceID inDevice, const AudioTimeStamp * inNow, const AudioBufferList * inInputData, const AudioTimeStamp * inInputTime, AudioBufferList * outOutputData, const AudioTimeStamp * inOutputTime, void * inClientData) -{ - int i; - long m, n, o; - float * dest, tempfloat; - float * src; - int src_size_bytes; - int src_size_float; - int num_output_samples; - int used_samples; - - src_size_bytes = outOutputData->mBuffers[0].mDataByteSize; - src_size_float = src_size_bytes / sizeof(float); - - num_output_samples = MIN(buffer_index,src_size_float); - - //printf("play_callback(): num_output_samples %d, index %d\n",num_output_samples,buffer_index); - - // if we are prebuffering, zero the buffer - if (prebuffer && (buffer_index < prebuffer_size)) - { - //printf("prebuffering... %d samples left\n",prebuffer_size-buffer_index); - num_output_samples = 0; - } - else - { - prebuffer = FALSE; - } - - src = buffer; - dest = outOutputData->mBuffers[0].mData; - - // copy available data to buffer and apply volume to each channel - for (i = 0; i < num_output_samples/2; i++) - { - //tempfloat = *src; - *dest = (*src) * left_volume; - src++; - dest++; - - *dest = (*src) * right_volume; - src++; - dest++; - } - - // if less than a buffer's worth of data is ready, zero remainder of output buffer - if (num_output_samples != src_size_float) - { - //printf("zeroing %d samples",(src_size_float - num_output_samples)); - - dest = (float*)outOutputData->mBuffers[0].mData + num_output_samples; - - memset(dest,0,(src_size_float - num_output_samples) * sizeof(float)); - } - - // move unwritten data to beginning of buffer - { - dest = buffer; - - for (i = num_output_samples; i < buffer_index; i++) - { - *dest = *src; - dest++; - src++; - } - - output_total += num_output_samples; - buffer_index -= num_output_samples; - } - - - if (flush != -1) - { - osx_set_audio_params(); - output_time_offset = flush; - written = ((guint64)flush * input.bps) / (1000 * sample_size); - buffer_index = 0; - output_total = 0; - - flush = -1; - prebuffer = TRUE; - } - - //printf("\n"); - - return 0; -} - - -static void osx_setup_format(gint fmt, int rate, int nch) -{ - //printf("osx_setup_format(): fmt %d, rate %d, nch %d\n",fmt,rate,nch); - - effect.format.xmms = osx_get_format(fmt); - effect.frequency = rate; - effect.channels = nch; - effect.bps = osx_calc_bitrate(fmt, rate, nch); - - output.format.osx = osx_get_format(fmt); - output.frequency = rate; - output.channels = nch; - - osx_set_audio_params(); - - output.bps = osx_calc_bitrate(output.format.osx, output.frequency,output.channels); -} - - -gint osx_get_written_time(void) -{ - gint retval; - - if (!playing_flag) - { - retval = 0; - } - else - { - retval = (written * sample_size * 1000) / effect.bps; - retval = (int)((float)retval / user_pitch); - } - - //printf("osx_get_written_time(): written time is %d\n",retval); - - return retval; -} - - -gint osx_get_output_time(void) -{ - gint retval; - - retval = output_time_offset + ((output_total * sample_size * 1000) / output.bps); - retval = (int)((float)retval / user_pitch); - - //printf("osx_get_output_time(): time is %d\n",retval); - - return retval; -} - - -gint osx_playing(void) -{ - gint retval; - - retval = 0; - - if (!playing_flag) - { - retval = 0; - } - else - { - if (buffer_index == 0) - { - retval = FALSE; - } - else - { - retval = TRUE; - } - } - - //printf("osx_playing(): playing is now %d\n",playing_flag); - - return retval; -} - - -gint osx_free(void) -{ - gint bytes_free; - - if (remove_prebuffer && prebuffer) - { - prebuffer = FALSE; - remove_prebuffer = FALSE; - } - - if (prebuffer) - { - remove_prebuffer = TRUE; - } - - // get number of free samples - bytes_free = buffer_size - buffer_index; - - // adjust for mono - if (input.channels == 1) - { - bytes_free /= 2; - } - - // adjust by pitch conversion; - bytes_free = (int)((float)bytes_free * base_pitch * user_pitch); - - // convert from number of samples to number of bytes - bytes_free *= sample_size; - - return bytes_free; -} - - -void osx_write(gpointer ptr, int length) -{ - int count, offset = 0; - int error; - float tempfloat; - float * dest; - short * src, * tempbuf; - int i; - int num_samples; - - //printf("oss_write(): lenght: %d \n",length); - - remove_prebuffer = FALSE; - - // //printf("written is now %d\n",(gint)written); - - // get number of samples - num_samples = length / sample_size; - - // update amount of samples received - written += num_samples; - - if (osx_convert_func != NULL) - osx_convert_func(&ptr, length); - - // step through audio - while (num_samples > 0) - { - // get # of samples to write to the buffer - count = MIN(num_samples, osx_free()/sample_size); - - src = ptr+offset; - - if (dbconvert((char*)src,count * sample_size) == -1) - { - //printf("dbconvert error %d\n",errno); - } - else - { - src = output_buf; - dest = (float*)(buffer + buffer_index); - - //printf("output_buf_length is %d\n",output_buf_length); - - for (i = 0; i < output_buf_length; i++) - { - tempfloat = ((float)*src)/32768.0; - *dest = tempfloat; - dest++; - src++; - } - - buffer_index += output_buf_length; - } - - if (buffer_index > buffer_size) - { - //printf("BUFFER_INDEX > BUFFER_SIZE!!!!\n"); - exit(0); - } - - num_samples -= count; - offset += count; - } - - //printf("buffer_index is now %d\n\n",buffer_index); -} - - -void osx_close(void) -{ - //printf("osx_close(): playing_flag is %d\n",playing_flag); - - if (!playing_flag) - { - return; - } - - playing_flag = 0; - - // close audio device - AudioDeviceStop(device_id, play_callback); - AudioDeviceRemoveIOProc(device_id, play_callback); - - g_free(device_name); - - //printf("osx_close(): playing_flag is now %d\n",playing_flag); - - /* Free audio buffer */ - g_free(buffer); -} - -void osx_flush(gint time) -{ - //printf("osx_flush(): %d\n",time); - - flush = time; - - while (flush != -1) - { - g_usleep(10000); - } -} - - -void osx_pause(short p) -{ - if (p == TRUE) - AudioDeviceStop(device_id, play_callback); - else - AudioDeviceStart(device_id, play_callback); - - paused = p; -} - - -void osx_set_audio_params(void) -{ - int stereo_multiplier, format_multiplier; - int frag, stereo, ret; - struct timeval tv; - fd_set set; - - //printf("osx_set_audio_params(): fmt %d, freq %d, nch %d\n",output.format.osx,output.frequency,output.channels); - - // set audio format - - // set num channels - - switch (input.channels) - { - case 1: stereo_multiplier = 2; break; - case 2: stereo_multiplier = 1; break; - default: stereo_multiplier = 1; break; - } - - switch (input.format.xmms) - { - case FMT_U8: - case FMT_S8: - format_multiplier = 2; - sample_size = 1; - break; - case FMT_S16_LE: - case FMT_S16_BE: - case FMT_S16_NE: - format_multiplier = 1; - sample_size = 2; - break; - default: format_multiplier = 1; break; - } - - sample_multiplier = stereo_multiplier * format_multiplier; - - base_pitch = input.frequency / device_format.mSampleRate; - - //printf("sample multiplier is now %d, base pitch %.2f\n",sample_multiplier,base_pitch); -} - - -gint osx_open(gint fmt, gint rate, gint nch) -{ - char s[32]; - long m; - long size; - char device_name[128]; - - //printf("\nosx_open(): fmt %d, rate %d, nch %d\n",fmt,rate,nch); - - // init conversion variables - base_pitch = 1.0; - user_pitch = 1.0; - - // open audio device - - size = sizeof(device_id); - - if (AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &size, &device_id)) - { - //printf("failed to open default audio device"); - return -1; - } - - //printf("opened audio device\n"); - - size = 128; - - if (AudioDeviceGetProperty(device_id,1,0,kAudioDevicePropertyDeviceName,&size,device_name)) - { - //printf("could not get device name\n"); - return -1; - } - - //printf("device name is: \"%s\"\n",device_name); - - size = sizeof(device_format); - - if (AudioDeviceGetProperty(device_id, 0, 0, kAudioDevicePropertyStreamFormat, &size, &device_format)) - { - //printf("failed to get audio format!\n"); - return -1; - } - - //fprintf(stderr, "got format: sample rate %f, %ld channels and %ld-bit sample\n", - // device_format.mSampleRate,device_format.mChannelsPerFrame,device_format.mBitsPerChannel); - - if (device_format.mFormatID != kAudioFormatLinearPCM) - { - //printf("audio format isn't PCM\n"); - return -1; - } - - //printf("format is PCM\n"); - - if (osx_format_is_neutral(fmt) == FALSE) - osx_convert_func = osx_get_convert_func(fmt, osx_get_conv_format(fmt)); - else - osx_convert_func = NULL; - - input.format.xmms = fmt; - input.frequency = rate; - input.channels = nch; - input.bps = osx_calc_bitrate(osx_get_format(fmt),rate,nch); - - osx_setup_format(osx_get_format(fmt),device_format.mSampleRate,device_format.mChannelsPerFrame); - - //set audio buffer size - { - device_buffer_size = 4096 * sizeof(float); - size = sizeof(gint); - - if (AudioDeviceSetProperty(device_id,0,0,0,kAudioDevicePropertyBufferSize,size,&device_buffer_size)) - { - //printf("failed to set device buffer size\n"); - } - - //printf("buffer size set to %d\n",device_buffer_size); - } - - buffer_size = 11 * 4096; - prebuffer_size = 4096; - - buffer = (float *) g_malloc0(buffer_size*sizeof(float)); - - //printf("created buffer of size %d, prebuffer is %d\n",buffer_size,prebuffer_size); - - flush = -1; - prebuffer = TRUE; - - buffer_index = output_time_offset = written = output_total = 0; - - paused = FALSE; - - do_pause = FALSE; - unpause = FALSE; - remove_prebuffer = FALSE; - - playing_flag = 1; - - if (AudioDeviceAddIOProc(device_id, play_callback, NULL)) - { - //printf("failed to add IO Proc callback\n"); - osx_close(); - return -1; - } - - //printf("added callback\n"); - - if (AudioDeviceStart(device_id,play_callback)) - { - osx_close(); - //printf("failed to start audio device.\n"); - exit(0); - } - - //printf("started audio device\n"); - - return 1; -} diff -Nru audacious-plugins-2.4.4/src/CoreAudio/configure.c audacious-plugins-3.2/src/CoreAudio/configure.c --- audacious-plugins-2.4.4/src/CoreAudio/configure.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/CoreAudio/configure.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,279 +0,0 @@ -/* XMMS - Cross-platform multimedia player - * Copyright (C) 1998-2001 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies - * Copyright (C) 1999-2001 Håvard Kvålen - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "coreaudio.h" -#include -#include -#include - -static GtkWidget *configure_win = NULL; -static GtkWidget *mixer_usemaster_check, *buffer_size_spin, *buffer_pre_spin; -static GtkWidget *adevice_use_alt_check, *audio_alt_device_entry; -static GtkWidget *mdevice_use_alt_check, *mixer_alt_device_entry; -static gint audio_device, mixer_device; - -static void configure_win_ok_cb(GtkWidget * w, gpointer data) -{ - mcs_handle_t *cfgfile; - - osx_cfg.audio_device = audio_device; - osx_cfg.mixer_device = mixer_device; - osx_cfg.buffer_size = - gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(buffer_size_spin)); - osx_cfg.prebuffer = - gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(buffer_pre_spin)); - osx_cfg.use_master = - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mixer_usemaster_check)); - osx_cfg.use_alt_audio_device = - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(adevice_use_alt_check)); - osx_cfg.use_alt_mixer_device = - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mdevice_use_alt_check)); - g_free(osx_cfg.alt_audio_device); - osx_cfg.alt_audio_device = - gtk_editable_get_chars(GTK_EDITABLE(audio_alt_device_entry), 0, -1); - g_strstrip(osx_cfg.alt_audio_device); - g_free(osx_cfg.alt_mixer_device); - osx_cfg.alt_mixer_device = - gtk_editable_get_chars(GTK_EDITABLE(mixer_alt_device_entry), 0, -1); - g_strstrip(osx_cfg.alt_mixer_device); - - if (osx_cfg.use_alt_audio_device) - /* do a minimum of sanity checking */ - if (osx_cfg.alt_audio_device[0] != '/') - osx_cfg.use_alt_audio_device = FALSE; - if (osx_cfg.use_alt_mixer_device) - if (osx_cfg.alt_mixer_device[0] != '/') - osx_cfg.use_alt_mixer_device = FALSE; - - cfgfile = aud_cfg_db_open(); - - aud_cfg_db_set_int(cfgfile, "OSX", "audio_device", osx_cfg.audio_device); - aud_cfg_db_set_int(cfgfile, "OSX", "mixer_device", osx_cfg.mixer_device); - aud_cfg_db_set_int(cfgfile, "OSX", "buffer_size", osx_cfg.buffer_size); - aud_cfg_db_set_int(cfgfile, "OSX", "prebuffer", osx_cfg.prebuffer); - aud_cfg_db_set_bool(cfgfile,"OSX","use_master",osx_cfg.use_master); - aud_cfg_db_set_bool(cfgfile, "OSX", "use_alt_audio_device", osx_cfg.use_alt_audio_device); - aud_cfg_db_set_string(cfgfile, "OSX", "alt_audio_device", osx_cfg.alt_audio_device); - aud_cfg_db_set_bool(cfgfile, "OSX", "use_alt_mixer_device", osx_cfg.use_alt_mixer_device); - aud_cfg_db_set_string(cfgfile, "OSX", "alt_mixer_device", osx_cfg.alt_mixer_device); - aud_cfg_db_close(cfgfile); - - gtk_widget_destroy(configure_win); -} - -static void configure_win_audio_dev_cb(GtkWidget * widget, gint device) -{ - audio_device = device; -} - -static void configure_win_mixer_dev_cb(GtkWidget * widget, gint device) -{ - mixer_device = device; -} - -static void audio_device_toggled(GtkToggleButton * widget, gpointer data) -{ - gboolean use_alt_audio_device = gtk_toggle_button_get_active(widget); - gtk_widget_set_sensitive(GTK_WIDGET(data), !use_alt_audio_device); - gtk_widget_set_sensitive(audio_alt_device_entry, use_alt_audio_device); -} - -static void mixer_device_toggled(GtkToggleButton * widget, gpointer data) -{ - gboolean use_alt_device = gtk_toggle_button_get_active(widget); - gtk_widget_set_sensitive(GTK_WIDGET(data), !use_alt_device); - gtk_widget_set_sensitive(mixer_alt_device_entry, use_alt_device); -} - -static void scan_devices(gchar * type, GtkWidget * option_menu, GtkSignalFunc sigfunc) -{ - GtkWidget *menu, *item; - FILE *file; - UInt32 size,len,i; - AudioDeviceID * devicelist; - char device_name[128]; - - menu = gtk_menu_new(); - - if (AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDevices,&size,NULL)) - { - item = gtk_menu_item_new_with_label("Default"); - gtk_signal_connect(GTK_OBJECT(item), "activate", sigfunc, (gpointer) 0); - gtk_widget_show(item); - gtk_menu_append(GTK_MENU(menu), item); - } - else - { - devicelist = (AudioDeviceID*) malloc(size); - - if (AudioHardwareGetProperty(kAudioHardwarePropertyDevices,&size,devicelist)) - return; - - for (i = 0; i < size/sizeof(AudioDeviceID); i++) - { - len = 128; - AudioDeviceGetProperty(devicelist[i],1,0,kAudioDevicePropertyDeviceName,&len,device_name); - - item = gtk_menu_item_new_with_label(device_name); - gtk_signal_connect(GTK_OBJECT(item), "activate", sigfunc, (gpointer) 0); - gtk_widget_show(item); - gtk_menu_append(GTK_MENU(menu), item); - - } - } - - gtk_option_menu_set_menu(GTK_OPTION_MENU(option_menu), menu); -} - -void osx_configure(void) -{ - GtkWidget *vbox, *notebook; - GtkWidget *dev_vbox, *adevice_frame, *adevice_box, *adevice; - GtkWidget *mdevice_frame, *mdevice_box, *mdevice; - GtkWidget *buffer_frame, *buffer_vbox, *buffer_table; - GtkWidget *buffer_size_box, *buffer_size_label; - GtkObject *buffer_size_adj, *buffer_pre_adj; - GtkWidget *buffer_pre_box, *buffer_pre_label; - GtkWidget *audio_alt_box, *mixer_alt_box; - GtkWidget *bbox, *ok, *cancel; - GtkWidget *mixer_table, *mixer_frame; - - if (configure_win) - { - gtk_window_present(GTK_WINDOW(configure_win)); - return; - } - - configure_win = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_signal_connect(GTK_OBJECT(configure_win), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &configure_win); - gtk_window_set_title(GTK_WINDOW(configure_win), "CoreAudio Plugin Configuration"); - gtk_window_set_policy(GTK_WINDOW(configure_win), FALSE, FALSE, FALSE); - gtk_window_set_position(GTK_WINDOW(configure_win), GTK_WIN_POS_MOUSE); - gtk_container_border_width(GTK_CONTAINER(configure_win), 10); - - - vbox = gtk_vbox_new(FALSE, 10); - gtk_container_add(GTK_CONTAINER(configure_win), vbox); - - notebook = gtk_notebook_new(); - gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0); - - dev_vbox = gtk_vbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(dev_vbox), 5); - - adevice_frame = gtk_frame_new("Audio device:"); - gtk_box_pack_start(GTK_BOX(dev_vbox), adevice_frame, FALSE, FALSE, 0); - - adevice_box = gtk_vbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(adevice_box), 5); - gtk_container_add(GTK_CONTAINER(adevice_frame), adevice_box); - - adevice = gtk_option_menu_new(); - gtk_box_pack_start(GTK_BOX(adevice_box), adevice, TRUE, TRUE, 0); - - scan_devices("Audio devices:", adevice, configure_win_audio_dev_cb); - - audio_device = osx_cfg.audio_device; - gtk_option_menu_set_history(GTK_OPTION_MENU(adevice), osx_cfg.audio_device); - - gtk_box_pack_start(GTK_BOX(dev_vbox), mdevice_frame, FALSE, FALSE, 0); - - mdevice_box = gtk_vbox_new(FALSE, 0); - gtk_container_set_border_width(GTK_CONTAINER(mdevice_box), 5); - gtk_container_add(GTK_CONTAINER(mdevice_frame), mdevice_box); - - mdevice = gtk_option_menu_new(); - gtk_box_pack_start(GTK_BOX(mdevice_box), mdevice, TRUE, TRUE, 0); - - scan_devices("Mixers:", mdevice, configure_win_mixer_dev_cb); - - mixer_device = osx_cfg.mixer_device; - gtk_option_menu_set_history(GTK_OPTION_MENU(mdevice), osx_cfg.mixer_device); - mixer_alt_box = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start_defaults(GTK_BOX(mdevice_box), mixer_alt_box); - mdevice_use_alt_check = gtk_check_button_new_with_label("Use alternate device:"); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(mdevice_use_alt_check), osx_cfg.use_alt_mixer_device); - gtk_signal_connect(GTK_OBJECT(mdevice_use_alt_check), "toggled", mixer_device_toggled, mdevice); - gtk_box_pack_start(GTK_BOX(mixer_alt_box), mdevice_use_alt_check, FALSE, FALSE, 0); - mixer_alt_device_entry = gtk_entry_new(); - - if (osx_cfg.alt_mixer_device != NULL) - gtk_entry_set_text(GTK_ENTRY(mixer_alt_device_entry), osx_cfg.alt_mixer_device); - else - gtk_entry_set_text(GTK_ENTRY(mixer_alt_device_entry), "/dev/mixer"); - - gtk_box_pack_start_defaults(GTK_BOX(mixer_alt_box), mixer_alt_device_entry); - - if (osx_cfg.use_alt_mixer_device) - gtk_widget_set_sensitive(mdevice, FALSE); - else - gtk_widget_set_sensitive(mixer_alt_device_entry, FALSE); - - gtk_notebook_append_page(GTK_NOTEBOOK(notebook), dev_vbox, gtk_label_new("Devices")); - - - buffer_frame = gtk_frame_new("Buffering:"); - gtk_container_set_border_width(GTK_CONTAINER(buffer_frame), 5); - - buffer_vbox = gtk_vbox_new(FALSE, 0); - gtk_container_add(GTK_CONTAINER(buffer_frame), buffer_vbox); - - buffer_table = gtk_table_new(2, 1, TRUE); - gtk_container_set_border_width(GTK_CONTAINER(buffer_table), 5); - gtk_box_pack_start(GTK_BOX(buffer_vbox), buffer_table, FALSE, FALSE, 0); - - buffer_size_box = gtk_hbox_new(FALSE, 5); - gtk_table_attach_defaults(GTK_TABLE(buffer_table), buffer_size_box, 0, 1, 0, 1); - buffer_size_label = gtk_label_new("Buffer size (ms):"); - gtk_box_pack_start(GTK_BOX(buffer_size_box), buffer_size_label, FALSE, FALSE, 0); - buffer_size_adj = gtk_adjustment_new(osx_cfg.buffer_size, 200, 10000, 100, 100, 100); - buffer_size_spin = gtk_spin_button_new(GTK_ADJUSTMENT(buffer_size_adj), 8, 0); - gtk_widget_set_usize(buffer_size_spin, 60, -1); - gtk_box_pack_start(GTK_BOX(buffer_size_box), buffer_size_spin, FALSE, FALSE, 0); - - buffer_pre_box = gtk_hbox_new(FALSE, 5); - gtk_table_attach_defaults(GTK_TABLE(buffer_table), buffer_pre_box, 1, 2, 0, 1); - buffer_pre_label = gtk_label_new("Pre-buffer (percent):"); - gtk_box_pack_start(GTK_BOX(buffer_pre_box), buffer_pre_label, FALSE, FALSE, 0); - buffer_pre_adj = gtk_adjustment_new(osx_cfg.prebuffer, 0, 90, 1, 1, 1); - buffer_pre_spin = gtk_spin_button_new(GTK_ADJUSTMENT(buffer_pre_adj), 1, 0); - gtk_widget_set_usize(buffer_pre_spin, 60, -1); - gtk_box_pack_start(GTK_BOX(buffer_pre_box), buffer_pre_spin, FALSE, FALSE, 0); - - gtk_notebook_append_page(GTK_NOTEBOOK(notebook), buffer_frame, gtk_label_new("Buffering")); - - - bbox = gtk_hbutton_box_new(); - gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); - gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); - gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); - - ok = gtk_button_new_with_label("Ok"); - gtk_signal_connect(GTK_OBJECT(ok), "clicked", GTK_SIGNAL_FUNC(configure_win_ok_cb), NULL); - GTK_WIDGET_SET_FLAGS(ok, GTK_CAN_DEFAULT); - gtk_box_pack_start(GTK_BOX(bbox), ok, TRUE, TRUE, 0); - gtk_widget_grab_default(ok); - - cancel = gtk_button_new_with_label("Cancel"); - gtk_signal_connect_object(GTK_OBJECT(cancel), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(configure_win)); - GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT); - gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0); - - gtk_widget_show_all(configure_win); -} diff -Nru audacious-plugins-2.4.4/src/CoreAudio/convert.c audacious-plugins-3.2/src/CoreAudio/convert.c --- audacious-plugins-2.4.4/src/CoreAudio/convert.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/CoreAudio/convert.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,286 +0,0 @@ -/* - * Copyright (C) 2001 Haavard Kvaalen - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "coreaudio.h" - -void* osx_get_convert_buffer(size_t size) -{ - static size_t length; - static void *buffer; - - if (size > 0 && size <= length) - return buffer; - - length = size; - buffer = g_realloc(buffer, size); - return buffer; -} - -static int convert_swap_endian(void **data, int length) -{ - guint16 *ptr = *data; - int i; - for (i = 0; i < length; i += 2, ptr++) - *ptr = GUINT16_SWAP_LE_BE(*ptr); - - return i; -} - -static int convert_swap_sign_and_endian_to_native(void **data, int length) -{ - guint16 *ptr = *data; - int i; - for (i = 0; i < length; i += 2, ptr++) - *ptr = GUINT16_SWAP_LE_BE(*ptr) ^ 1 << 15; - - return i; -} - -static int convert_swap_sign_and_endian_to_alien(void **data, int length) -{ - guint16 *ptr = *data; - int i; - for (i = 0; i < length; i += 2, ptr++) - *ptr = GUINT16_SWAP_LE_BE(*ptr ^ 1 << 15); - - return i; -} - -static int convert_swap_sign16(void **data, int length) -{ - gint16 *ptr = *data; - int i; - for (i = 0; i < length; i += 2, ptr++) - *ptr ^= 1 << 15; - - return i; -} - -static int convert_swap_sign8(void **data, int length) -{ - gint8 *ptr = *data; - int i; - for (i = 0; i < length; i++) - *ptr++ ^= 1 << 7; - - return i; -} - -static int convert_to_8_native_endian(void **data, int length) -{ - gint8 *output = *data; - gint16 *input = *data; - int i; - for (i = 0; i < length / 2; i++) - *output++ = *input++ >> 8; - - return i; -} - -static int convert_to_8_native_endian_swap_sign(void **data, int length) -{ - gint8 *output = *data; - gint16 *input = *data; - int i; - for (i = 0; i < length / 2; i++) - *output++ = (*input++ >> 8) ^ (1 << 7); - - return i; -} - - -static int convert_to_8_alien_endian(void **data, int length) -{ - gint8 *output = *data; - gint16 *input = *data; - int i; - for (i = 0; i < length / 2; i++) - *output++ = *input++ & 0xff; - - return i; -} - -static int convert_to_8_alien_endian_swap_sign(void **data, int length) -{ - gint8 *output = *data; - gint16 *input = *data; - int i; - for (i = 0; i < length / 2; i++) - *output++ = (*input++ & 0xff) ^ (1 << 7); - - return i; -} - -static int convert_to_16_native_endian(void **data, int length) -{ - guint8 *input = *data; - guint16 *output; - int i; - *data = osx_get_convert_buffer(length * 2); - output = *data; - for (i = 0; i < length; i++) - *output++ = *input++ << 8; - - return i * 2; -} - -static int convert_to_16_native_endian_swap_sign(void **data, int length) -{ - guint8 *input = *data; - guint16 *output; - int i; - *data = osx_get_convert_buffer(length * 2); - output = *data; - for (i = 0; i < length; i++) - *output++ = (*input++ << 8) ^ (1 << 15); - - return i * 2; -} - - -static int convert_to_16_alien_endian(void **data, int length) -{ - guint8 *input = *data; - guint16 *output; - int i; - *data = osx_get_convert_buffer(length * 2); - output = *data; - for (i = 0; i < length; i++) - *output++ = *input++; - - return i * 2; -} - -static int convert_to_16_alien_endian_swap_sign(void **data, int length) -{ - guint8 *input = *data; - guint16 *output; - int i; - *data = osx_get_convert_buffer(length * 2); - output = *data; - for (i = 0; i < length; i++) - *output++ = *input++ ^ (1 << 7); - - return i * 2; -} - -int (*osx_get_convert_func(int output, int input))(void **, int) -{ - if (output == input) - return NULL; - - if ((output == FMT_U16_BE && input == FMT_U16_LE) || - (output == FMT_U16_LE && input == FMT_U16_BE) || - (output == FMT_S16_BE && input == FMT_S16_LE) || - (output == FMT_S16_LE && input == FMT_S16_BE)) - return convert_swap_endian; - - if ((output == FMT_U16_BE && input == FMT_S16_BE) || - (output == FMT_U16_LE && input == FMT_S16_LE) || - (output == FMT_S16_BE && input == FMT_U16_BE) || - (output == FMT_S16_LE && input == FMT_U16_LE)) - return convert_swap_sign16; - - if ((IS_BIG_ENDIAN && - ((output == FMT_U16_BE && input == FMT_S16_LE) || - (output == FMT_S16_BE && input == FMT_U16_LE))) || - (!IS_BIG_ENDIAN && - ((output == FMT_U16_LE && input == FMT_S16_BE) || - (output == FMT_S16_LE && input == FMT_U16_BE)))) - return convert_swap_sign_and_endian_to_native; - - if ((!IS_BIG_ENDIAN && - ((output == FMT_U16_BE && input == FMT_S16_LE) || - (output == FMT_S16_BE && input == FMT_U16_LE))) || - (IS_BIG_ENDIAN && - ((output == FMT_U16_LE && input == FMT_S16_BE) || - (output == FMT_S16_LE && input == FMT_U16_BE)))) - return convert_swap_sign_and_endian_to_alien; - - if ((IS_BIG_ENDIAN && - ((output == FMT_U8 && input == FMT_U16_BE) || - (output == FMT_S8 && input == FMT_S16_BE))) || - (!IS_BIG_ENDIAN && - ((output == FMT_U8 && input == FMT_U16_LE) || - (output == FMT_S8 && input == FMT_S16_LE)))) - return convert_to_8_native_endian; - - if ((IS_BIG_ENDIAN && - ((output == FMT_U8 && input == FMT_S16_BE) || - (output == FMT_S8 && input == FMT_U16_BE))) || - (!IS_BIG_ENDIAN && - ((output == FMT_U8 && input == FMT_S16_LE) || - (output == FMT_S8 && input == FMT_U16_LE)))) - return convert_to_8_native_endian_swap_sign; - - if ((!IS_BIG_ENDIAN && - ((output == FMT_U8 && input == FMT_U16_BE) || - (output == FMT_S8 && input == FMT_S16_BE))) || - (IS_BIG_ENDIAN && - ((output == FMT_U8 && input == FMT_U16_LE) || - (output == FMT_S8 && input == FMT_S16_LE)))) - return convert_to_8_alien_endian; - - if ((!IS_BIG_ENDIAN && - ((output == FMT_U8 && input == FMT_S16_BE) || - (output == FMT_S8 && input == FMT_U16_BE))) || - (IS_BIG_ENDIAN && - ((output == FMT_U8 && input == FMT_S16_LE) || - (output == FMT_S8 && input == FMT_U16_LE)))) - return convert_to_8_alien_endian_swap_sign; - - if ((output == FMT_U8 && input == FMT_S8) || - (output == FMT_S8 && input == FMT_U8)) - return convert_swap_sign8; - - if ((IS_BIG_ENDIAN && - ((output == FMT_U16_BE && input == FMT_U8) || - (output == FMT_S16_BE && input == FMT_S8))) || - (!IS_BIG_ENDIAN && - ((output == FMT_U16_LE && input == FMT_U8) || - (output == FMT_S16_LE && input == FMT_S8)))) - return convert_to_16_native_endian; - - if ((IS_BIG_ENDIAN && - ((output == FMT_U16_BE && input == FMT_S8) || - (output == FMT_S16_BE && input == FMT_U8))) || - (!IS_BIG_ENDIAN && - ((output == FMT_U16_LE && input == FMT_S8) || - (output == FMT_S16_LE && input == FMT_U8)))) - return convert_to_16_native_endian_swap_sign; - - if ((!IS_BIG_ENDIAN && - ((output == FMT_U16_BE && input == FMT_U8) || - (output == FMT_S16_BE && input == FMT_S8))) || - (IS_BIG_ENDIAN && - ((output == FMT_U16_LE && input == FMT_U8) || - (output == FMT_S16_LE && input == FMT_S8)))) - return convert_to_16_alien_endian; - - if ((!IS_BIG_ENDIAN && - ((output == FMT_U16_BE && input == FMT_S8) || - (output == FMT_S16_BE && input == FMT_U8))) || - (IS_BIG_ENDIAN && - ((output == FMT_U16_LE && input == FMT_S8) || - (output == FMT_S16_LE && input == FMT_U8)))) - return convert_to_16_alien_endian_swap_sign; - - g_warning("Translation needed, but not available.\n" - "Input: %d; Output %d.", input, output); - return NULL; -} diff -Nru audacious-plugins-2.4.4/src/CoreAudio/coreaudio.c audacious-plugins-3.2/src/CoreAudio/coreaudio.c --- audacious-plugins-2.4.4/src/CoreAudio/coreaudio.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/CoreAudio/coreaudio.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ -/* XMMS - Cross-platform multimedia player - * Copyright (C) 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#include - -#include "coreaudio.h" - -#include -#include - -OutputPlugin osx_op = -{ - .description = "CoreAudio Output Plugin", /* Description */ - .init = osx_init, - .about = osx_about, - .configure = osx_configure, - .get_volume = osx_get_volume, - .set_volume = osx_set_volume, - .open_audio = osx_open, - .write_audio = osx_write, - .close_audio = osx_close, - .flush = osx_flush, - .pause = osx_pause, - .buffer_free = osx_free, - .buffer_playing = osx_playing, - .output_time = osx_get_output_time, - .written_time = osx_get_written_time, - .probe_priority = 1, -}; - -OutputPlugin *coreaudio_oplist[] = { &osx_op, NULL }; - -DECLARE_PLUGIN(coreaudio, NULL, NULL, NULL, coreaudio_oplist, NULL, NULL, NULL, NULL); diff -Nru audacious-plugins-2.4.4/src/CoreAudio/coreaudio.h audacious-plugins-3.2/src/CoreAudio/coreaudio.h --- audacious-plugins-2.4.4/src/CoreAudio/coreaudio.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/CoreAudio/coreaudio.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,106 +0,0 @@ -/* XMMS - Cross-platform multimedia player - * Copyright (C) 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#ifndef OSX_H -#define OSX_H - -#include "config.h" - -#include - -#include -#include -#include -#include -#ifdef HAVE_SYS_SOUNDCARD_H -#include -#elif defined(HAVE_MACHINE_SOUNDCARD_H) -#include -#endif - -#include -#include -#include - -#include -#include -#include - -#include - -#ifdef WORDS_BIGENDIAN -# define IS_BIG_ENDIAN TRUE -#else -# define IS_BIG_ENDIAN FALSE -#endif - -#define OUTPUT_BUFSIZE (4096 * 8) - -extern OutputPlugin op; - - -struct format_info -{ - union - { - gint xmms; - int osx; - } format; - - - int frequency; - int channels; - int bps; -}; - - -typedef struct -{ - gint audio_device; - gint mixer_device; - gint buffer_size; - gint prebuffer; - gboolean use_master; - gboolean use_alt_audio_device, use_alt_mixer_device; - gchar *alt_audio_device, *alt_mixer_device; -} -OSXConfig; - -extern OSXConfig osx_cfg; - -OutputPluginInitStatus osx_init(void); -void osx_about(void); -void osx_configure(void); - -void osx_get_volume(int *l, int *r); -void osx_set_volume(int l, int r); - -int osx_playing(void); -int osx_free(void); -void osx_write(void *ptr, int length); -void osx_close(void); -void osx_flush(int time); -void osx_pause(short p); -int osx_open(gint fmt, int rate, int nch); -int osx_get_output_time(void); -int osx_get_written_time(void); -void osx_set_audio_params(void); - -void* osx_get_convert_buffer(size_t size); -int (*osx_get_convert_func(int output, int input))(void **, int); - -#endif diff -Nru audacious-plugins-2.4.4/src/CoreAudio/dbaudiolib.h audacious-plugins-3.2/src/CoreAudio/dbaudiolib.h --- audacious-plugins-2.4.4/src/CoreAudio/dbaudiolib.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/CoreAudio/dbaudiolib.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,231 +0,0 @@ -/* - - Definitions for dbaudiolib.c - - Author: Bob Dean - Copyright (c) 1999 - - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public Licensse as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - */ - -#ifndef __DB_AUDIOLIB_H_ -#define __DB_AUDIOLIB_H_ - - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -/* #include */ - -#define DBAUDIOLIB_VERSION "0.9.8"; - - - /* DBAudioLib Error Codes */ - /* when possible the actual system error code is left in errno, since it - more specifically describes the error */ - - enum { - ERROR_BASE = 50000, - ERROR_NOT_IMPLEMENTED, /* user tried to access functionality that has not yet been implemented. */ - ERROR_BAD_CHANNEL, /* unknown channel type */ - ERROR_BAD_PARAM, /* function recieved a bad parameter*/ - ERROR_NO_FREE_CHANNELS, /* all channels are in use */ - ERROR_TOO_MUCH_DATA, /* the client gave too muxh data to dbaudiolib, conversion would overrun the internal buffers */ - ERROR_BAD_SAMPLERATE, /* the samplerate provided is not supported */ - ERROR_BAD_CHANNELTYPE, /* the channeltype provided is not supported */ - ERROR_BAD_NUMCH, /* the number of audio channels (stereo or mono) is not supported */ - ERROR_BAD_FORMAT, /* the input audio format is not supported */ - ERROR_CHANNEL_IN_USE, /* the requested channel index passed to DBAudio_Init is already in use */ - ERROR_BAD_CHANNEL_ID, /* the requested channel index passed to DBAudio_Init is out of range */ - ERROR_TOO_LITTLE_DATA, /* the client gave too little data to dbaudiolib - depreciated */ - ERROR_NOT_INITIALIZED, /* attempted to use dbaudiolib without a call to DBAudio_Init first */ - ERROR_INIT_FAILURE /* some part of the init process not related to dbmix failed */ - }; - - - /* enumeration of sampler state */ - enum sampler_state_e {SAMPLER_OFF, - SAMPLER_RECORD, - SAMPLER_PLAY_SINGLE, - SAMPLER_PLAY_LOOP, - SAMPLER_READY}; - - typedef enum sampler_state_e sampler_state; - -#define DBAUDIO_MAX_VOLUME 100 -#define DBAUDIO_INTERNAL_MAX_VOLUME 128 -#define DBAUDIO_MIN_VOLUME 0 - -#define DBMIX_COPYRIGHT "Copyright (c) 2002 by Robert Michael S Dean" -#define DBMIX_VERSION "v0.9.8" - -#define SUCCESS 0 -#define FAILURE -1 - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -#define MONO 1 -#define STEREO 2 - - - /* - * Message structure used to communicate within dbmix channels - */ - -#define DBMSG_NONE 0x00000000 -#define DBMSG_ALL (0xFFFFFFFF & ~DBMSG_SAMPLERLOAD & ~DBMSG_SAMPLERSAVE) -#define DBMSG_PAUSE 0x00000001 -#define DBMSG_UNPAUSE 0x00000002 -#define DBMSG_PLAY 0x00000004 -#define DBMSG_STOP 0x00000008 -#define DBMSG_EJECT 0x00000010 -#define DBMSG_REWIND 0x00000020 -#define DBMSG_FFORWARD 0x00000040 -#define DBMSG_NEXT 0x00000080 -#define DBMSG_PREV 0x00000100 -#define DBMSG_MUTE 0x00000200 -#define DBMSG_UNMUTE 0x00000400 -#define DBMSG_SAMPLERSIZE 0x00000800 -#define DBMSG_SAMPLERSAVE 0x00001000 -#define DBMSG_SAMPLERLOAD 0x00002000 -#define DBMSG_SAMPLERREC 0x00004000 -#define DBMSG_SAMPLERSTOP 0x00008000 -#define DBMSG_SAMPLERLOOP 0x00010000 -#define DBMSG_SAMPLERONCE 0x00020000 - - typedef struct dbfsd_msg_s - { - long int msg_type; - float data; - char * datastr; - } dbfsd_msg; - - /* enumeration of the different channels types */ - enum channel_type_e {PIPE_CHANNEL, SOCKET_CHANNEL}; - - /* DBAudioLib Prototypes for statically linked libraries */ - int DBAudio_Init(char * name, int fmt, int rte, int numch, - enum channel_type_e type, int chindex); - int DBAudio_Ready(); - int DBAudio_Write(char* buf, int len); - int DBAudio_Read(char * buf, int count); - int DBAudio_Close(); - int DBAudio_Set_Volume(int left, int right); - int DBAudio_Get_Volume(int *left, int *right); - int DBAudio_Pause(int value); - char * DBAudio_Get_Version(); - char * DBAudio_Get_Channel_Name(char * name); - int DBAudio_Set_Channel_Name(char * name); - enum channel_type_e DBAudio_Get_Channel_Type(); - int DBAudio_Set_Channel_Type(enum channel_type_e type); - int DBAudio_Cue_Enabled(); - int DBAudio_Set_Cue(int flag); - int DBAudio_Get_Cue(); - int DBAudio_Set_Rate(int rte); - int DBAudio_Get_Rate(); - int DBAudio_Set_Channels(int numch); - int DBAudio_Get_Channels(); - int DBAudio_Set_Format(int fmt); - int DBAudio_Get_Format(); - int DBAudio_Get_Bufsize(int input_bufsize); - void DBAudio_perror(char *str); - int DBAudio_Set_Message_Handler(void(*message_handler)(dbfsd_msg msg), int msg_flags); - int DBAudio_Handle_Message_Queue(); - int DBAudio_Set_Channel_Flag(unsigned int flag); - int DBAudio_Clear_Channel_Flag(unsigned int flag); - unsigned int DBAudio_Get_Channel_Flags(); - int DBAudio_Set_Mute(int value); - int DBAudio_Get_Mute(); - int DBAudio_Sampler_Record(); - int DBAudio_Sampler_Stop(); - int DBAudio_Sampler_Loop(); - int DBAudio_Sampler_Single(); - int DBAudio_Sampler_Get_Offsets(int * start_offset, int * end_offset); - int DBAudio_Sampler_Set_Offsets(int start_offset, int end_offset); - int DBAudio_Sampler_Get_Size(int * size); - int DBAudio_Sampler_Save(char * filename); - int DBAudio_Sampler_Load(char * filename); - sampler_state DBAudio_Sampler_Get_State(); - -/* structure to hold audiolib functions plugin style for dynamically linked - libraries... - As functions are added, they are placed at the end of the struct so as - not to break clients using older versions of the library -*/ - typedef struct - { - int (*DBAudio_Init)(char * name, int fmt, int rte, int numch, - enum channel_type_e type, int chindex); - int (*DBAudio_Ready)(); - int (*DBAudio_Write)(char* buf, int len); - int (*DBAudio_Read)(char * buf, int count); - int (*DBAudio_Close)(); - int (*DBAudio_Set_Volume)(int left, int right); - int (*DBAudio_Get_Volume)(int *left, int *right); - int (*DBAudio_Pause)(int value); - char * (*DBAudio_Get_Version)(); - char * (*DBAudio_Get_Channel_Name)(char * name); - int (*DBAudio_Set_Channel_Name)(char * name); - enum channel_type_e (*DBAudio_Get_Channel_Type)(); - int (*DBAudio_Set_Channel_Type)(enum channel_type_e type); - int (*DBAudio_Cue_Enabled)(); - int (*DBAudio_Set_Rate)(int rte); - int (*DBAudio_Get_Rate)(); - int (*DBAudio_Set_Channels)(int numch); - int (*DBAudio_Get_Channels)(); - int (*DBAudio_Set_Format)(int fmt); - int (*DBAudio_Get_Format)(); - int (*DBAudio_Set_Cue)(int flag); - int (*DBAudio_Get_Cue)(); - int (*DBAudio_Get_Bufsize)(int input_bufsize); - void (*DBAudio_perror)(char *str); - int (*DBAudio_Set_Message_Handler)(void(*message_handler)(dbfsd_msg msg),int msg_flags); - int (*DBAudio_Handle_Message_Queue)(); - int (*DBAudio_Set_Channel_Flag)(unsigned int flag); - int (*DBAudio_Clear_Channel_Flag)(unsigned int flag); - unsigned int (* DBAudio_Get_Channel_Flags)(); - int (*DBAudio_Set_Mute)(int value); - int (*DBAudio_Get_Mute)(); - int (*DBAudio_Sampler_Record)(); - int (*DBAudio_Sampler_Stop)(); - int (*DBAudio_Sampler_Loop)(); - int (*DBAudio_Sampler_Single)(); - int (*DBAudio_Sampler_Get_Offsets)(int * start_offset, int * end_offset); - int (*DBAudio_Sampler_Set_Offsets)(int start_offset, int end_offset); - int (*DBAudio_Sampler_Get_Size)(int * size); - int (*DBAudio_Sampler_Save)(char * filename); - int (*DBAudio_Sampler_Load)(char * filename); - sampler_state (*DBAudio_Sampler_Get_State)(); - } DBAudioLibFunctions; - - DBAudioLibFunctions * DBAudio_Get_Functions(); - - -#ifdef __cplusplus -} -#endif - -#endif /* __DB_AUDIOLIB_H_ */ diff -Nru audacious-plugins-2.4.4/src/CoreAudio/dbconvert.c audacious-plugins-3.2/src/CoreAudio/dbconvert.c --- audacious-plugins-2.4.4/src/CoreAudio/dbconvert.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/CoreAudio/dbconvert.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,524 +0,0 @@ -/* - - Author: Bob Dean - Copyright (c) 1999 - 2004 - - The functionality in this file is modified from DBAudio_Write.c. - part of the DBMix project which is also released under the GPL. - It is used here both as licensed under the GPL and additionally - by permission of the original author (which is me). - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public Licensse as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - */ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "coreaudio.h" -#include "dbaudiolib.h" - - extern int errno; - - extern gboolean paused; - extern float left_volume, right_volume; - - extern float base_pitch; - extern float user_pitch; - - - float local_pitch; - float sample1, sample2; - float float_index; - - extern signed short output_buf[]; /* buffer used to hold main output to dbfsd */ - extern signed short cue_buf[]; /* buffer used to hold cue output to dbfsd */ - extern signed short conv_buf[]; /* buffer used to hold format converted input */ - extern int output_buf_length; - - int outlen; - int sampleindex; - int num_channels; - int format; - - - extern struct format_info input; - - - /* - dbconvert - given a buf of length len, write the data to the - channel associated with this instance. - - On success, the number of bytes written is returned. Otherwise - -1, or FAILURE, is returned, and errno is set accordingly. - - Hopefully this function returns values in the same fashion - as other basic I/O functions such as read() and write() - - Variables: - count is the number of bytes written during a loop iteration - totalcount is the total number of bytes written - left_gain and right_gain are percentages used to adjust the - output signal volume - tempbuf is a temporary pointer used in the volume operation - temp_chbuf is a pointer to the buffer to be written to during - shared memory mode. - */ - - int dbconvert(char* buf, int len) - { - int left_gain,right_gain; - int left_cue_gain, right_cue_gain; - signed short * tempbuf, *tempbuf2, * tempoutbuf; - char * tempcharbuf; - int incr_flag, count; - int intindex; - float buflen, gain1, gain2; - int index1,index2, output_sample; - int i; - int stereo_multiplier,format_multiplier; - int tempsize; - int sampler_flag; - //enum sampler_state_e local_sampler_state; - - /* check parameters */ - if (buf == NULL) {errno = ERROR_BAD_PARAM; return FAILURE;} - //if (ch == NULL) {errno = ERROR_NOT_INITIALIZED; return FAILURE;} - if (len < 0) {errno = ERROR_BAD_PARAM; return FAILURE;} - - //DBAudio_Handle_Message_Queue(); - - /* remember sampler state as it may change during - the course of the function */ -#ifdef COMPILE_SAMPLER - local_sampler_state = ch->sampler_state; -#endif - - if (paused) - { - //printf("convert: pauseed\n"); - return 0; - } - - /* get pitch */ - local_pitch = base_pitch * user_pitch; - - //printf("convert: local pitch is %.2f, base %.2f user %.2f\n",local_pitch,base_pitch,user_pitch); - buflen = len / 2.0; - - //printf("convert: buflen %.2f len is %d\n",buflen,len); - - /* calculate buffer space needed to convert the data to - 44.1kHz 16bit stereo*/ - switch (input.channels) - { - case 1: stereo_multiplier = 2; break; - case 2: stereo_multiplier = 1; break; - default: errno = ERROR_BAD_NUMCH; return FAILURE; - } - - //printf("convert: format %d, %d %d %d %d\n",input.format.xmms,FMT_U8,FMT_S8,FMT_S16_LE,FMT_S16_BE); - - switch (input.format.xmms) - { - case FMT_U8: format_multiplier = 2; break; - case FMT_S8: format_multiplier = 2; break; - case FMT_S16_LE: format_multiplier = 1; break; - case FMT_S16_BE: format_multiplier = 1; break; - case FMT_S16_NE: format_multiplier = 1; break; - default: errno = ERROR_BAD_FORMAT; return FAILURE; - } - - /* return error if the needed output space is greater than the - output buffer */ - if (ceil((buflen * (float)stereo_multiplier * - (float)format_multiplier) / local_pitch) > (float)(OUTPUT_BUFSIZE)) - { - errno = ERROR_TOO_MUCH_DATA; - return FAILURE; - } - - /* init local variables */ - intindex = 0; - incr_flag = 0; - sampleindex = 0; - gain1 = gain2 = 0.0; - sample1 = sample2 = 0.0; - sampler_flag = 0; - - left_gain = (int)(128.0 * left_volume); - right_gain = (int)(128.0 * right_volume); - - -#ifdef COMPILE_CUE - left_cue_gain = ch->cue_left_gain; - right_cue_gain = ch->cue_right_gain; - - /* calculate gain percentages */ - if (ch->mute == TRUE) - { - left_gain = right_gain = 0; - } - else - { - left_gain = ch->left_gain * sysdata->left_balance; - right_gain = ch->right_gain * sysdata->right_balance; - - /* cut volume if mic is being used */ - if (sysdata->talkover_enabled && !(MIC_ENABLED)) - { - left_gain = left_gain >> DB_TALKOVER_DIVISOR_POWER; - right_gain = right_gain >> DB_TALKOVER_DIVISOR_POWER; - } - } -#endif - -#ifdef COMPILE_SAMPLER - switch (local_sampler_state) - { - case SAMPLER_PLAY_SINGLE: - case SAMPLER_PLAY_LOOP: - - if (ch->sampler_size == 0) - { - ch->sampler_state = SAMPLER_OFF; - len = 0; - goto done; - } - - /* tempsize - amount of data available in buffer to read */ - tempsize = (ch->sampler_endoffset - ch->sampler_readoffset); - - sampler_flag = 1; - - /* if we are in loop mode and loop over end of buffer, - get data from start of buffer */ - if ((tempsize < len) && (local_sampler_state == SAMPLER_PLAY_LOOP)) - { - /* copy portion at end of buffer */ - memcpy(conv_buf,(ch->sampler_buf + ch->sampler_readoffset),tempsize); - /* copy portion at beginning of buffer */ - memcpy(conv_buf+tempsize,ch->sampler_buf+ch->sampler_startoffset,(len - tempsize)); - /* update variables */ - /* read offset is now amount to write, minus the overflow, plus the startoffset */ - ch->sampler_readoffset = len - tempsize + ch->sampler_startoffset; - tempsize = len; - } - else - { - /* if we are in simgle play mode and out of data, reset state - and exit */ - if ((tempsize <= 0) && (local_sampler_state == SAMPLER_PLAY_SINGLE)) - { - ch->sampler_state = SAMPLER_READY; - goto done; - } - - /* get full buffers worth of data from somewhere in middle of - sampler buffer */ - if (tempsize > len) tempsize = len; - - memcpy(conv_buf,(ch->sampler_buf + ch->sampler_readoffset),tempsize); - - ch->sampler_readoffset += tempsize; - } - - - /* update function state variables */ - buflen = (tempsize / 2); - tempbuf = conv_buf; - - break; - default: -#endif - { - /* convert input data into 44.1 KHz 16 bit stereo */ - tempbuf = (signed short *) buf; - - /* convert mono input to stereo */ - if (input.channels == 1) - { - //printf("convert: data is mono\n"); - - tempbuf2 = conv_buf; - - if ((input.format.xmms == FMT_U8) || (input.format.xmms == FMT_S8)) - { - tempcharbuf = buf; - - for (i = 0; i < buflen*2.0; i++) - { - *tempbuf2 = *tempcharbuf; tempbuf2++; - *tempbuf2 = *tempcharbuf; tempbuf2++; tempcharbuf++; - } - } - else - { - for (i = 0; i < buflen; i++) - { - *tempbuf2 = *tempbuf; tempbuf2++; - *tempbuf2 = *tempbuf; tempbuf2++; tempbuf++; - } - } - - buflen *=2.0; - tempbuf = conv_buf; - } - else - { - //printf("convet: data is stereo\n"); - } - - //printf("convert: buflen %.2f\n",buflen); - - - /* convert 8 bit input to 16 bit input */ - if ((input.format.xmms != FMT_S16_LE) && (input.format.xmms != FMT_S16_BE) - && (input.format.xmms != FMT_S16_NE)) - { - switch (input.format.xmms) - { - case FMT_U8: - { - //printf("convert: converting unsigned 8 bit\n"); - - tempbuf2 = conv_buf; - buflen *= 2.0; - - /* if data was mono, then it is already in conv_buf */ - if (input.channels == 1) - { - for (i = 0; i < buflen; i++) - { - *tempbuf = (*tempbuf2 - 127) << 8; - tempbuf++; tempbuf2++; - } - } - else - { /* data is 8 bit stereo, and is in buf not conv_buf*/ - tempcharbuf = buf; - for (i = 0; i < len; i++) - { - *tempbuf = (*tempcharbuf - 127) << 8; - tempbuf++; tempcharbuf++; - } - } - - tempbuf = conv_buf; - break; - } - case FMT_S8: - { - //printf("convert: converting signed 8 bit\n"); - - tempbuf2 = conv_buf; - buflen *= 2.0; - - /* if data was mono, then it is already in conv_buf */ - if (input.channels == 1) - { - for (i = 0; i < buflen; i++) - { - *tempbuf = *tempbuf2 << 8; - tempbuf++; tempbuf2++; - } - } - else - { /* data is 8 bit stereo, and is in buf not conv_buf*/ - tempcharbuf = buf; - for (i = 0; i < len; i++) - { - *tempbuf = *tempcharbuf << 8; - tempbuf++; tempcharbuf++; - } - } - - tempbuf = conv_buf; - break; - } - default: - { - errno = ERROR_BAD_FORMAT; - //ch->writing = 0; - return FAILURE; - } - } - } - } /* end default case*/ - - //printf("convert: buflen %.2f\n",buflen); - - - -#ifdef COMPILE_SAMPLER - } /* end switch sampler_state */ - - /* copy buffer to sample buffer if sampler state is record */ - if (local_sampler_state == SAMPLER_RECORD) - { - tempsize = 0; - - /* get amount of data to copy */ - if ((ch->sampler_size + (buflen * 2)) > ch->sampler_bufsize) - { - tempsize = ch->sampler_bufsize - ch->sampler_size; - } - else - { - tempsize = (buflen * 2); - } - - /* change state if buffer is full */ - if (tempsize == 0) - { - ch->sampler_state = SAMPLER_READY; - } - - /* copy data */ - memcpy(((ch->sampler_buf) + (ch->sampler_size)),tempbuf,tempsize); - - /* update sampler state variables */ - ch->sampler_size += tempsize; - ch->sampler_endoffset = ch->sampler_size; - } -#endif - - if (local_pitch == 1.0) - { - //printf("convert: pitch optimization buflen %.2f *2 %.2f\n",buflen,buflen*2); - //printf("tempbuf is 0x%x, output_buf is 0x%x\n",tempbuf,output_buf); - memcpy(output_buf,tempbuf,buflen*2); - - outlen = buflen*2; - tempbuf = output_buf; - output_buf_length = buflen; - - goto done; - } - - /* calculate pitch shifted signal using basic linear interpolation - the theory is this: - you have two known samples, and want to calculate the value of a new sample - in between them. The new sample will contain a percentage of the first sample - and a percentage of the second sample. These percentages are porportional - to the distance between the new sample and each of the knwon samples. - The "position" of the new sample is determined by the float index */ - - tempoutbuf = output_buf; - - while (intindex < buflen) - { - /* calculate sample percentages (amplitude) */ - intindex = floor(float_index); - gain2 = float_index - intindex; - gain1 = 1.0 - gain2; - - /* get index of first sample pair */ - intindex = intindex << 1; - - /* check incr_flag to see if we should be operatiing - on the left or right channel sample */ - if (incr_flag) - { - float_index += local_pitch; - incr_flag = 0; - intindex++; - } - else - { - incr_flag = 1; - } - - index1 = intindex; - - /* get the first "known" sample*/ - sample1 = tempbuf[index1]; - index2 = index1 + 2; - - /* get the second "known" sample */ - if (index2 < (buflen)) - { - sample2 = tempbuf[index2]; - } - else - /* if index2 is beyond the length of the input buffer, - then cheat to prevent audio pops/snaps/etc */ - { - *tempoutbuf = sample1; - sampleindex++; - break; - } - - /* create the new sample */ - output_sample = (((float)sample1 * gain1) + ((float)sample2 * gain2)); - - if (output_sample > 32767) {output_sample = 32767;} - if (output_sample < -32767) {output_sample = -32767;} - - *tempoutbuf = output_sample; - tempoutbuf++; - - sampleindex++; - } - - /* update global variables */ - outlen = (sampleindex-1) << 1; - - float_index = float_index - floor(float_index); - - tempbuf = output_buf; - - output_buf_length = sampleindex - 1; - - /* if (outlen < PIPE_BUF) - {errno = ERROR_TOO_LITTLE_DATA; return FAILURE;} */ - - apply_gain: - - - done: - - //ch->writing = 0; - - if (sampler_flag) - { - return 0; - } - else - { - return len; - } - } - -#ifdef __cplusplus -} -#endif - diff -Nru audacious-plugins-2.4.4/src/CoreAudio/init.c audacious-plugins-3.2/src/CoreAudio/init.c --- audacious-plugins-2.4.4/src/CoreAudio/init.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/CoreAudio/init.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -/* XMMS - Cross-platform multimedia player - * Copyright (C) 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#include "coreaudio.h" -#include - -OSXConfig osx_cfg; - -extern float left_volume, right_volume; - -OutputPluginInitStatus osx_init(void) -{ - mcs_handle_t *cfgfile; - - left_volume = 1.0; - right_volume = 1.0; - - memset(&osx_cfg, 0, sizeof (OSXConfig)); - - osx_cfg.audio_device = 0; - osx_cfg.mixer_device = 0; - osx_cfg.buffer_size = 3000; - osx_cfg.prebuffer = 25; - osx_cfg.use_alt_audio_device = FALSE; - osx_cfg.alt_audio_device = NULL; - osx_cfg.use_master=0; - - if ((cfgfile = aud_cfg_db_open())) - { - aud_cfg_db_get_int(cfgfile, "OSX", "audio_device", &osx_cfg.audio_device); - aud_cfg_db_get_int(cfgfile, "OSX", "mixer_device", &osx_cfg.mixer_device); - aud_cfg_db_get_int(cfgfile, "OSX", "buffer_size", &osx_cfg.buffer_size); - aud_cfg_db_get_int(cfgfile, "OSX", "prebuffer", &osx_cfg.prebuffer); - aud_cfg_db_get_bool(cfgfile, "OSX", "use_master", &osx_cfg.use_master); - aud_cfg_db_get_bool(cfgfile, "OSX", "use_alt_audio_device", &osx_cfg.use_alt_audio_device); - aud_cfg_db_get_string(cfgfile, "OSX", "alt_audio_device", &osx_cfg.alt_audio_device); - aud_cfg_db_get_bool(cfgfile, "OSX", "use_alt_mixer_device", &osx_cfg.use_alt_mixer_device); - aud_cfg_db_get_string(cfgfile, "OSX", "alt_mixer_device", &osx_cfg.alt_mixer_device); - aud_cfg_db_close(cfgfile); - } - - return OUTPUT_PLUGIN_INIT_FOUND_DEVICES; -} diff -Nru audacious-plugins-2.4.4/src/CoreAudio/Makefile audacious-plugins-3.2/src/CoreAudio/Makefile --- audacious-plugins-2.4.4/src/CoreAudio/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/CoreAudio/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -PLUGIN = CoreAudio${PLUGIN_SUFFIX} - -SRCS = about.c \ - configure.c \ - coreaudio.c \ - init.c \ - audio.c \ - convert.c \ - dbconvert.c \ - mixer.c - -include ../../buildsys.mk -include ../../extra.mk - -plugindir := ${plugindir}/${OUTPUT_PLUGIN_DIR} - -CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} -I../.. ${GTK_CFLAGS} ${GLIB_CFLAGS} -LIBS += ${GTK_LIBS} ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/CoreAudio/mixer.c audacious-plugins-3.2/src/CoreAudio/mixer.c --- audacious-plugins-2.4.4/src/CoreAudio/mixer.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/CoreAudio/mixer.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -/* XMMS - Cross-platform multimedia player - * Copyright (C) 1998-2000 Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#include "coreaudio.h" -#include -#include - -extern AudioDeviceID device_id; -extern gboolean playing_flag; -extern float left_volume, right_volume; - -void osx_get_volume(int *l, int *r) -{ - *l = left_volume * 100; - *r = right_volume * 100; - -#if 0 - float volume; - UInt32 size; - AudioDeviceID temp_device_id; - - size = sizeof(float); - - AudioDeviceGetProperty(device_id,1,0,kAudioDevicePropertyVolumeScalar,&size,&volume); - - volume = volume * 100; - - *r = volume; - *l = volume; -#endif -} - - -void osx_set_volume(int l, int r) -{ - left_volume = (float)l / 100.0; - right_volume = (float) r / 100.0; - - -#if 0 - int fd, v, cmd, devs; - gchar *devname; - - Boolean writeable_flag; - - if (AudioDeviceGetPropertyInfo(device_id,1,false,kAudioDevicePropertyVolumeScalar,NULL,&writeable_flag)) - { - printf("could not get property info for volume write\n"); - } - else - { - if (writeable_flag) - { - float volume; - - volume = l / 100.0; - AudioDeviceSetProperty(device_id,NULL,1,0,kAudioDevicePropertyVolumeScalar,sizeof(float),&volume); - } - else - { - printf("volume property is not writeable\n"); - } - } -#endif -} - - diff -Nru audacious-plugins-2.4.4/src/crossfade/crossfade.c audacious-plugins-3.2/src/crossfade/crossfade.c --- audacious-plugins-2.4.4/src/crossfade/crossfade.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/crossfade/crossfade.c 2012-01-20 19:48:30.000000000 +0000 @@ -34,7 +34,7 @@ STATE_STOPPING, }; -int crossfade_length = 3; /* seconds */ +int crossfade_length; /* seconds */ static char state = STATE_OFF; static int current_channels = 0, current_rate = 0; @@ -60,10 +60,11 @@ output_size = 0; } -void crossfade_init (void) +int crossfade_init (void) { AUDDBG ("Init.\n"); crossfade_config_load (); + return 1; } void crossfade_cleanup (void) diff -Nru audacious-plugins-2.4.4/src/crossfade/crossfade.h audacious-plugins-3.2/src/crossfade/crossfade.h --- audacious-plugins-2.4.4/src/crossfade/crossfade.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/crossfade/crossfade.h 2012-01-20 19:48:30.000000000 +0000 @@ -24,7 +24,7 @@ void crossfade_show_channels_message (void); void crossfade_show_rate_message (void); -void crossfade_init (void); +int crossfade_init (void); void crossfade_cleanup (void); void crossfade_start (int * channels, int * rate); void crossfade_process (float * * data, int * samples); diff -Nru audacious-plugins-2.4.4/src/crossfade/plugin.c audacious-plugins-3.2/src/crossfade/plugin.c --- audacious-plugins-2.4.4/src/crossfade/plugin.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/crossfade/plugin.c 2012-01-20 19:48:30.000000000 +0000 @@ -19,8 +19,9 @@ #include -#include +#include #include +#include #include #include #include @@ -28,27 +29,36 @@ #include "config.h" #include "crossfade.h" +static GtkWidget * about_window = NULL; +static GtkWidget * config_window = NULL; +static GtkWidget * error_window = NULL; + +static const gchar * const crossfade_defaults[] = { + "length", "3", + NULL}; + void crossfade_config_load (void) { - mcs_handle_t * database = aud_cfg_db_open (); - - aud_cfg_db_get_int (database, "crossfade", "length", & crossfade_length); - aud_cfg_db_close (database); + aud_config_set_defaults ("crossfade", crossfade_defaults); + crossfade_length = aud_get_int ("crossfade", "length"); } void crossfade_config_save (void) { - mcs_handle_t * database = aud_cfg_db_open (); + if (about_window != NULL) + gtk_widget_destroy (about_window); + if (config_window != NULL) + gtk_widget_destroy (config_window); + if (error_window != NULL) + gtk_widget_destroy (error_window); - aud_cfg_db_set_int (database, "crossfade", "length", crossfade_length); - aud_cfg_db_close (database); + aud_set_int ("crossfade", "length", crossfade_length); } static void crossfade_about (void) { - static GtkWidget * window = NULL; - - audgui_simple_message (& window, GTK_MESSAGE_INFO, _("About Crossfade"), + audgui_simple_message (& about_window, GTK_MESSAGE_INFO, _("About " + "Crossfade"), "Crossfade Plugin for Audacious\n" "Copyright 2010 John Lindgren\n\n" "Redistribution and use in source and binary forms, with or without " @@ -71,23 +81,22 @@ static void crossfade_configure (void) { - static GtkWidget * window = NULL; - - if (window == NULL) + if (config_window == NULL) { GtkWidget * vbox, * hbox, * slider, * button; - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_type_hint ((GtkWindow *) window, + config_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_type_hint ((GtkWindow *) config_window, GDK_WINDOW_TYPE_HINT_DIALOG); - gtk_window_set_resizable ((GtkWindow *) window, FALSE); - gtk_window_set_title ((GtkWindow *) window, _("Crossfade Preferences")); - gtk_container_set_border_width ((GtkContainer *) window, 6); - g_signal_connect (window, "destroy", (GCallback) gtk_widget_destroyed, - & window); + gtk_window_set_resizable ((GtkWindow *) config_window, FALSE); + gtk_window_set_title ((GtkWindow *) config_window, _("Crossfade " + "Preferences")); + gtk_container_set_border_width ((GtkContainer *) config_window, 6); + g_signal_connect (config_window, "destroy", (GCallback) + gtk_widget_destroyed, & config_window); vbox = gtk_vbox_new (FALSE, 6); - gtk_container_add ((GtkContainer *) window, vbox); + gtk_container_add ((GtkContainer *) config_window, vbox); hbox = gtk_hbox_new (FALSE, 6); gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0); @@ -107,42 +116,38 @@ button = gtk_button_new_from_stock (GTK_STOCK_CLOSE); gtk_box_pack_end ((GtkBox *) hbox, button, FALSE, FALSE, 0); -#if GTK_CHECK_VERSION (2, 18, 0) gtk_widget_set_can_default (button, TRUE); -#endif gtk_widget_grab_default (button); g_signal_connect_swapped (button, "clicked", (GCallback) - gtk_widget_destroy, window); + gtk_widget_destroy, config_window); - audgui_destroy_on_escape (window); + audgui_destroy_on_escape (config_window); gtk_widget_show_all (vbox); } - gtk_window_present ((GtkWindow *) window); + gtk_window_present ((GtkWindow *) config_window); } void crossfade_show_channels_message (void) { - static GtkWidget * window = NULL; - - audgui_simple_message (& window, GTK_MESSAGE_ERROR, _("Crossfade Error"), - _("Crossfading failed because the songs had a different number of channels.")); + audgui_simple_message (& error_window, GTK_MESSAGE_ERROR, + _("Crossfade Error"), _("Crossfading failed because the songs had a " + "different number of channels.")); } void crossfade_show_rate_message (void) { - static GtkWidget * window = NULL; - - audgui_simple_message (& window, GTK_MESSAGE_ERROR, _("Crossfade Error"), + audgui_simple_message (& error_window, GTK_MESSAGE_ERROR, _("Crossfade " + "Error"), _("Crossfading failed because the songs had different sample rates.\n\n" "You can use the Sample Rate Converter effect to resample the songs to " "the same rate.")); } -EffectPlugin crossfade_plugin = -{ - .description = "Crossfade", +AUD_EFFECT_PLUGIN +( + .name = "Crossfade", .init = crossfade_init, .cleanup = crossfade_cleanup, .about = crossfade_about, @@ -155,8 +160,4 @@ .output_to_decoder_time = crossfade_output_to_decoder_time, .order = 5, /* must be after resample */ -}; - -EffectPlugin * crossfade_list[] = {& crossfade_plugin, NULL}; - -SIMPLE_EFFECT_PLUGIN (crossfade, crossfade_list) +) diff -Nru audacious-plugins-2.4.4/src/crystalizer/crystalizer.c audacious-plugins-3.2/src/crystalizer/crystalizer.c --- audacious-plugins-2.4.4/src/crystalizer/crystalizer.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/crystalizer/crystalizer.c 2012-01-20 19:48:30.000000000 +0000 @@ -22,11 +22,12 @@ #include -#include +#include #include +#include #include -static void init(void); +static gboolean init (void); static void configure(void); static void cryst_start (gint * channels, gint * rate); static void cryst_process (gfloat * * data, gint * samples); @@ -35,11 +36,11 @@ static gint cryst_decoder_to_output_time (gint time); static gint cryst_output_to_decoder_time (gint time); -EffectPlugin crystalizer_ep = -{ - .description = "Crystalizer", /* Description */ - .init = init, - .configure = configure, +AUD_EFFECT_PLUGIN +( + .name = "Crystalizer", /* Description */ + .init = init, + .configure = configure, .start = cryst_start, .process = cryst_process, .flush = cryst_flush, @@ -47,36 +48,31 @@ .decoder_to_output_time = cryst_decoder_to_output_time, .output_to_decoder_time = cryst_output_to_decoder_time, .preserves_format = TRUE, -}; +) static GtkWidget *conf_dialog = NULL; static gdouble value; static gint cryst_channels; static gfloat * cryst_prev; -EffectPlugin *crystalizer_eplist[] = { &crystalizer_ep, NULL }; - -DECLARE_PLUGIN(crystalizer, NULL, NULL, NULL, NULL, crystalizer_eplist, NULL, NULL, NULL); +static const gchar * const cryst_defaults[] = { + "intensity", "1", + NULL}; -static void init(void) +static gboolean init (void) { - mcs_handle_t *db; - db = aud_cfg_db_open(); - if (!aud_cfg_db_get_double(db, "crystalizer", "intensity", &value)) - value = 1.0; - aud_cfg_db_close(db); + aud_config_set_defaults ("crystalizer", cryst_defaults); + value = aud_get_double ("crystalizer", "intensity"); + + return TRUE; } /* conf dialog stuff stolen from stereo plugin --nenolod */ -static void conf_ok_cb(GtkButton * button, gpointer data) +static void conf_ok_cb (GtkButton * button, GtkAdjustment * adj) { - mcs_handle_t *db; - - value = *(gdouble *) data; + value = gtk_adjustment_get_value (adj); + aud_set_double ("crystalizer", "intensity", value); - db = aud_cfg_db_open(); - aud_cfg_db_set_double(db, "crystalizer", "intensity", value); - aud_cfg_db_close(db); gtk_widget_destroy(conf_dialog); } @@ -85,67 +81,63 @@ gtk_widget_destroy(conf_dialog); } -static void conf_apply_cb(GtkButton *button, gpointer data) +static void conf_apply_cb (GtkButton * button, GtkAdjustment * adj) { - value = *(gdouble *) data; + value = gtk_adjustment_get_value (adj); } static void configure(void) { GtkWidget *hbox, *label, *scale, *button, *bbox; - GtkObject *adjustment; + GtkAdjustment * adjustment; if (conf_dialog != NULL) return; conf_dialog = gtk_dialog_new(); - g_signal_connect(GTK_OBJECT(conf_dialog), "destroy", - GTK_SIGNAL_FUNC(gtk_widget_destroyed), &conf_dialog); + g_signal_connect (conf_dialog, "destroy", (GCallback) + gtk_widget_destroyed, & conf_dialog); gtk_window_set_title(GTK_WINDOW(conf_dialog), _("Configure Crystalizer")); label = gtk_label_new(_("Effect intensity:")); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(conf_dialog)->vbox), label, - TRUE, TRUE, 0); + gtk_box_pack_start ((GtkBox *) gtk_dialog_get_content_area + ((GtkDialog *) conf_dialog), label, TRUE, TRUE, 0); gtk_widget_show(label); hbox = gtk_hbox_new(FALSE, 10); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(conf_dialog)->vbox), hbox, - TRUE, TRUE, 10); + gtk_box_pack_start ((GtkBox *) gtk_dialog_get_content_area + ((GtkDialog *) conf_dialog), hbox, TRUE, TRUE, 10); gtk_widget_show(hbox); - adjustment = gtk_adjustment_new(value, 0.0, 15.0 + 1.0, 0.1, 1.0, 1.0); + adjustment = (GtkAdjustment *) gtk_adjustment_new (value, 0, 15 + 1, + 0.1, 1, 1); scale = gtk_hscale_new(GTK_ADJUSTMENT(adjustment)); gtk_box_pack_start(GTK_BOX(hbox), scale, TRUE, TRUE, 10); gtk_widget_show(scale); bbox = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); - gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); - gtk_box_pack_start(GTK_BOX((GTK_DIALOG(conf_dialog)->action_area)), - bbox, TRUE, TRUE, 0); + gtk_box_pack_start ((GtkBox *) gtk_dialog_get_action_area ((GtkDialog *) + conf_dialog), bbox, TRUE, TRUE, 0); button = gtk_button_new_with_label(_("Ok")); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_widget_set_can_default (button, TRUE); gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0); - g_signal_connect(GTK_OBJECT(button), "clicked", - GTK_SIGNAL_FUNC(conf_ok_cb), - >K_ADJUSTMENT(adjustment)->value); + g_signal_connect (button, "clicked", (GCallback) conf_ok_cb, adjustment); gtk_widget_grab_default(button); gtk_widget_show(button); button = gtk_button_new_with_label(_("Cancel")); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_widget_set_can_default (button, TRUE); gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0); - g_signal_connect(GTK_OBJECT(button), "clicked", - GTK_SIGNAL_FUNC(conf_cancel_cb), NULL); + g_signal_connect (button, "clicked", (GCallback) conf_cancel_cb, NULL); gtk_widget_show(button); button = gtk_button_new_with_label(_("Apply")); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_widget_set_can_default (button, TRUE); gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0); - g_signal_connect(GTK_OBJECT(button), "clicked", - GTK_SIGNAL_FUNC(conf_apply_cb), - >K_ADJUSTMENT(adjustment)->value); + g_signal_connect (button, "clicked", (GCallback) conf_apply_cb, + adjustment); gtk_widget_show(button); gtk_widget_show(bbox); diff -Nru audacious-plugins-2.4.4/src/crystalizer/Makefile audacious-plugins-3.2/src/crystalizer/Makefile --- audacious-plugins-2.4.4/src/crystalizer/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/crystalizer/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -8,5 +8,5 @@ plugindir := ${plugindir}/${EFFECT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. +LIBS += ${GTK_LIBS} ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/cue/cue.c audacious-plugins-3.2/src/cue/cue.c --- audacious-plugins-2.4.4/src/cue/cue.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/cue/cue.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,7 +1,7 @@ /* * Audacious: A cross-platform multimedia player * Copyright (c) 2009 William Pitcock - * Copyright (c) 2010 John Lindgren + * Copyright (c) 2010-2011 John Lindgren * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,25 +18,12 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -/* #define AUD_DEBUG 1 */ - -#include -#include #include -#include -#include #include -#include -#include -#include -#include -#include - -#include #include -#include #include +#include #include @@ -67,47 +54,51 @@ if (text == NULL) return; - tuple_associate_string(tuple, tuple_type, NULL, text); + tuple_set_str(tuple, tuple_type, NULL, text); } -static void playlist_load_cue (const gchar * cue_filename, gint at) +static gboolean playlist_load_cue (const gchar * cue_filename, VFSFile * file, + gchar * * title, Index * filenames, Index * tuples) { - void * buffer; - gint64 size; - vfs_file_get_contents (cue_filename, & buffer, & size); - if (buffer == NULL) - return; - - buffer = g_realloc (buffer, size + 1); - ((gchar *) buffer)[size] = 0; + gint64 size = vfs_fsize (file); + gchar * buffer = g_malloc (size + 1); + size = vfs_fread (buffer, 1, size, file); + buffer[size] = 0; - Cd * cd = cue_parse_string (buffer); + gchar * text = str_to_utf8 (buffer); g_free (buffer); + g_return_val_if_fail (text, FALSE); + + * title = NULL; + + Cd * cd = cue_parse_string (text); + g_free (text); if (cd == NULL) - return; + return FALSE; gint tracks = cd_get_ntrack (cd); if (tracks == 0) - return; - - struct index * filenames = index_new (); - struct index * tuples = index_new (); + return FALSE; Track * current = cd_get_track (cd, 1); - g_return_if_fail (current != NULL); - gchar * filename = aud_construct_uri (track_get_filename (current), + g_return_val_if_fail (current != NULL, FALSE); + gchar * track_filename = track_get_filename (current); + g_return_val_if_fail (track_filename != NULL, FALSE); + gchar * filename = aud_construct_uri (track_filename, cue_filename); Tuple * base_tuple = NULL; + gboolean base_tuple_scanned = FALSE; for (gint track = 1; track <= tracks; track ++) { - g_return_if_fail (current != NULL); - g_return_if_fail (filename != NULL); + g_return_val_if_fail (current != NULL, FALSE); + g_return_val_if_fail (filename != NULL, FALSE); - if (base_tuple == NULL) + if (base_tuple == NULL && ! base_tuple_scanned) { - InputPlugin * decoder = aud_file_find_decoder (filename, TRUE); + base_tuple_scanned = TRUE; + PluginHandle * decoder = aud_file_find_decoder (filename, FALSE); if (decoder != NULL) base_tuple = aud_file_read_tuple (filename, decoder); } @@ -121,67 +112,52 @@ Tuple * tuple = (base_tuple != NULL) ? tuple_copy (base_tuple) : tuple_new_from_filename (filename); - tuple_associate_int (tuple, FIELD_TRACK_NUMBER, NULL, track); + tuple_set_int (tuple, FIELD_TRACK_NUMBER, NULL, track); gint begin = (gint64) track_get_start (current) * 1000 / 75; - tuple_associate_int (tuple, FIELD_SEGMENT_START, NULL, begin); + tuple_set_int (tuple, FIELD_SEGMENT_START, NULL, begin); if (last_track) { if (base_tuple != NULL && tuple_get_value_type (base_tuple, FIELD_LENGTH, NULL) == TUPLE_INT) - tuple_associate_int (tuple, FIELD_LENGTH, NULL, tuple_get_int + tuple_set_int (tuple, FIELD_LENGTH, NULL, tuple_get_int (base_tuple, FIELD_LENGTH, NULL) - begin); } else { gint length = (gint64) track_get_length (current) * 1000 / 75; - tuple_associate_int (tuple, FIELD_LENGTH, NULL, length); - tuple_associate_int (tuple, FIELD_SEGMENT_END, NULL, begin + length); + tuple_set_int (tuple, FIELD_LENGTH, NULL, length); + tuple_set_int (tuple, FIELD_SEGMENT_END, NULL, begin + length); } for (gint i = 0; i < G_N_ELEMENTS (pti_map); i ++) tuple_attach_cdtext (tuple, current, pti_map[i].tuple_type, pti_map[i].pti); - index_append (filenames, filename); + index_append (filenames, str_get (filename)); index_append (tuples, tuple); current = next; + g_free (filename); filename = next_filename; if (last_track && base_tuple != NULL) { - tuple_free (base_tuple); + tuple_unref (base_tuple); base_tuple = NULL; + base_tuple_scanned = FALSE; } } - aud_playlist_entry_insert_batch (aud_playlist_get_active (), at, filenames, - tuples); + return TRUE; } -static void -playlist_save_cue(const gchar *filename, gint pos) -{ - AUDDBG("todo\n"); -} - -PlaylistContainer plc_cue = { - .name = "cue Playlist Format", - .ext = "cue", - .plc_read = playlist_load_cue, - .plc_write = playlist_save_cue, -}; - -static void init(void) -{ - aud_playlist_container_register(&plc_cue); -} - -static void cleanup(void) -{ - aud_playlist_container_unregister(&plc_cue); -} +static const gchar * const cue_exts[] = {"cue", NULL}; -DECLARE_PLUGIN(cue, init, cleanup, NULL, NULL, NULL, NULL, NULL, NULL); +AUD_PLAYLIST_PLUGIN +( + .name = "Cue Sheet Support", + .extensions = cue_exts, + .load = playlist_load_cue +) diff -Nru audacious-plugins-2.4.4/src/cue/Makefile audacious-plugins-3.2/src/cue/Makefile --- audacious-plugins-2.4.4/src/cue/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/cue/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -7,6 +7,6 @@ plugindir := ${plugindir}/${CONTAINER_PLUGIN_DIR} -CPPFLAGS += -std=gnu99 ${PLUGIN_CPPFLAGS} ${CUE_CFLAGS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${CUE_CFLAGS} ${GLIB_CFLAGS} CFLAGS += ${PLUGIN_CFLAGS} -LIBS += ${CUE_LIBS} +LIBS += ${CUE_LIBS} ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/daap/daap.c audacious-plugins-3.2/src/daap/daap.c --- audacious-plugins-2.4.4/src/daap/daap.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/daap.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,497 +0,0 @@ -/* Audacious DAAP transport plugin - * Copyright (c) 2007 Cristi Magherusan - * - * With inspiration and code from David Hammerton's tunesbrowser - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Softmcware - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include - -#include -#include - -#include "xmms2-daap/daap_cmd.h" -#include "xmms2-daap/daap_util.h" -#include "xmms2-daap/daap_mdns_browse.h" -#define DEFAULT_DAAP_PORT 3689 -#define DEBUG 1 -typedef struct { - gchar *host; - guint port; - - GIOChannel *channel; - -} daap_data_t; - -typedef struct { - gboolean logged_in; - guint session_id; - guint revision_id; - guint request_id; -} daap_login_data_t; - -typedef struct{ - daap_data_t *daap_data; - gchar *url; - int fd; - guint pos; - gulong length; -} -daap_handle_t; - - - -static GHashTable *login_sessions = NULL; - -gboolean daap_initialized=FALSE; - -GMutex * mutex_init = NULL; - -GMutex * mutex_discovery = NULL; - -GList * daap_servers = NULL; - -guint request_id=0; - - - - static gboolean -get_data_from_url (const gchar *url, gchar **host, guint *port, gchar **cmd) -{ - const gchar *port_ptr, *cmd_ptr, *end_ptr, *stripped; - - stripped = url + sizeof (gchar) * strlen ("daap://"); - - end_ptr = stripped + sizeof (gchar) * strlen (stripped); - - if (stripped == end_ptr) { - g_print("DAAP: Empty URL\n"); - return FALSE; - } - - port_ptr = strstr (stripped, ":"); - if (port && port_ptr && (port_ptr + 1) != end_ptr) { - *port = strtol (port_ptr + 1, (gchar **) NULL, 10); - if (*port == 0) { - *port = DEFAULT_DAAP_PORT; - } - } else if (port) { - *port = DEFAULT_DAAP_PORT; - } - - cmd_ptr = strstr (stripped, "/"); - if (cmd && cmd_ptr && (cmd_ptr + 1) != end_ptr) { - *cmd = g_strdup (cmd_ptr); - } else if (cmd) { - /* cmd wanted but not found */ - g_print("DAAP: No file requested\n"); - } else if (!cmd && cmd_ptr && (cmd_ptr + 1) != end_ptr) { - /* cmd not wanted but found */ - g_print("DAAP: No such directory\n"); - return FALSE; - } - - if (port_ptr) { - *host = g_strndup (stripped, port_ptr - stripped); - } else if (cmd_ptr) { - *host = g_strndup (stripped, cmd_ptr - stripped); - } else { - *host = g_strdup (stripped); - } - - return TRUE; -} - - - - static gboolean -daap_init (daap_handle_t *handle) -{ - gint dbid; - GSList *dbid_list = NULL; - daap_data_t *data; - daap_login_data_t *login_data; - guint filesize; - gchar *command=NULL; - gchar *hash; - - data = g_new0 (daap_data_t, 1); - - if (!get_data_from_url (handle->url, &(data->host), &(data->port), &command)) - return FALSE; - - hash = g_strdup_printf ("%s:%u", data->host, data->port); - - login_data = g_hash_table_lookup (login_sessions, hash); - if (!login_data) - { -#if DEBUG - g_print ("creating login data for %s\n", hash); -#endif - login_data = g_new0 (daap_login_data_t, 1); - - login_data->request_id = 1; - login_data->logged_in = TRUE; - - login_data->session_id = daap_command_login (data->host, data->port, - login_data->request_id); - if(login_data->session_id==0) - return FALSE; - - g_hash_table_insert (login_sessions, hash, login_data); - } - - login_data->revision_id = daap_command_update (data->host, data->port, - login_data->session_id, - login_data->request_id); - dbid_list = daap_command_db_list (data->host, data->port, - login_data->session_id, - login_data->revision_id, - login_data->request_id); - if (!dbid_list) { - return FALSE; - } - - /* XXX: see XXX in the browse function above */ - dbid = ((cc_item_record_t *) dbid_list->data)->dbid; - /* want to request a stream, but don't read the data yet */ - data->channel = daap_command_init_stream (data->host, data->port, - login_data->session_id, - login_data->revision_id, - login_data->request_id, dbid, - command,&filesize); - if (!data->channel) { - return FALSE; - } - - login_data->request_id++; - - handle->daap_data=data; - handle->length=filesize; - handle->pos=0; - g_slist_foreach (dbid_list, (GFunc) cc_item_record_free, NULL); - g_slist_free (dbid_list); - g_free (command); - - return TRUE; -} - - - - - - - - GList* -daap_get_tracks_from_server (gchar *host, guint port) -{ - GList * output=NULL; - GSList *dbid_list = NULL; - GSList *song_list = NULL, *song_el; - cc_item_record_t *db_data; - daap_login_data_t *login_data; - gchar *hash; - - hash = g_strdup_printf ("%s:%u", host, port); - - login_data = g_hash_table_lookup (login_sessions, hash); - - if (!login_data) { - login_data = g_new0 (daap_login_data_t, 1); - - login_data->session_id = daap_command_login (host, port, 0); - - login_data->revision_id = daap_command_update (host, port, - login_data->session_id, - 0); - - login_data->request_id = 1; - login_data->logged_in = TRUE; - - g_hash_table_insert (login_sessions, hash, login_data); - } else { - login_data->revision_id = daap_command_update (host, port, - login_data->session_id, - 0); - } - - dbid_list = daap_command_db_list (host, port, login_data->session_id, - login_data->revision_id, 0); - if (!dbid_list) { - return NULL; - } - - /* XXX i've never seen more than one db per server out in the wild, - * let's hope that never changes *wink* - * just use the first db in the list */ - db_data = (cc_item_record_t *) dbid_list->data; - song_list = daap_command_song_list (host, port, login_data->session_id, - login_data->revision_id, - 0, db_data->dbid); - - g_slist_foreach (dbid_list, (GFunc) cc_item_record_free, NULL); - g_slist_free (dbid_list); - - if (!song_list) { - return NULL; - } - - for (song_el = song_list; song_el; song_el = g_slist_next (song_el)) - output=g_list_prepend(output, g_memdup(song_el->data,sizeof(cc_item_record_t))); - - - g_slist_foreach (song_list, (GFunc) cc_item_record_free, NULL); - g_slist_free (song_list); - - return g_list_reverse(output); -} - - -GList * daap_discovery_get_devices_impl(void) -{ - discovery_device_t * current_device=NULL; - GList * returned_devices=NULL; - GSList * daap_found_devices=NULL, - * current_server=NULL; - - if(mutex_discovery==NULL) - return NULL; - - g_mutex_lock(mutex_discovery); - g_print ("caut\n"); - daap_found_devices = daap_mdns_get_server_list (); - current_server=daap_found_devices; - - for (; current_server; current_server = g_slist_next (current_server)) - { - current_device = g_new0(discovery_device_t,1); - daap_mdns_server_t *serv=current_server->data; - current_device->device_name = - g_strdup_printf("%s(%s)",serv->server_name, serv->mdns_hostname); - - current_device->device_address = - g_strdup_printf( - "%s:%d", - serv->address, - serv->port - ); - current_device->device_playlist= - daap_get_tracks_from_server( - serv->mdns_hostname, - serv->port - ); - returned_devices = g_list_prepend(returned_devices,current_device); -#if DEBUG - g_print("DAAP: Found device %s at address %s\n", current_device->device_name ,current_device->device_address ); -#endif - } - g_slist_free(daap_found_devices); - g_mutex_unlock(mutex_discovery); - return g_list_reverse(returned_devices); -} - - - - -VFSFile * daap_vfs_fopen_impl(const gchar * path, const gchar * mode) -{ - VFSFile *file=NULL; - daap_handle_t *handle = g_new0(daap_handle_t, 1); - handle->url=g_strdup(path); - - if (!path || !mode) - return NULL; - - if( !daap_init(handle) ) - { -#if DEBUG /*this isn't a fatal error, we can try again later*/ - g_print("Error while initializing DAAP !!!\n"); -#endif - return NULL; - } -#if DEBUG - g_print("DAAP was initialized succesfully\n"); -#endif - file=g_new0(VFSFile, 1); - handle->fd=g_io_channel_unix_get_fd(handle->daap_data->channel); - - if (handle->fd < 0) - { - g_print("vfs_fopen got a negative FD \n"); - g_free(file); - file = NULL; - } - else - file->handle=(void*)handle; - return file; -} - -gint daap_vfs_fclose_impl(VFSFile * file) -{ - gint ret=0; - daap_handle_t * handle = (daap_handle_t *)file->handle; - if (file == NULL) - return -1; - - if (file->handle) - { - if(g_io_channel_shutdown(handle->daap_data->channel,TRUE,NULL)!=G_IO_STATUS_NORMAL) - ret = -1; - else - { - g_io_channel_unref(handle->daap_data->channel); - ret=0; - } - g_free(file->handle); - file->handle=NULL; - } - return ret; - -return -1; -} - -size_t daap_vfs_fread_impl(gpointer ptr, size_t size, size_t nmemb, VFSFile * file) -{ - daap_handle_t *handle= (daap_handle_t *)file->handle; - size_t ret=0; -if (file == NULL) - return 0; -if( g_io_channel_read_chars (handle->daap_data->channel,ptr,size*nmemb,&ret,NULL)==G_IO_STATUS_NORMAL) - { - handle->pos+=(size*nmemb); - return ret; - } -else - return 0; -} - -size_t daap_vfs_fwrite_impl(gconstpointer ptr, size_t size, size_t nmemb, VFSFile * file) -{ - return -1; -} - -gint daap_vfs_getc_impl(VFSFile * file) -{ -guchar ret=EOF; -daap_handle_t *handle = (daap_handle_t *)file->handle; -int status=g_io_channel_read_chars (handle->daap_data->channel,(void*)&ret,1,NULL,NULL); -if(status==G_IO_STATUS_NORMAL) - { - g_print ("fgetc OK\n"); - handle->pos++; - return ret; - } -else -{ -g_print ("fgetc failed\n"); - return EOF; -} -} - -gint daap_vfs_fseek_impl(VFSFile * file, glong offset, gint whence) -{ - return -1; -} - -gint daap_vfs_ungetc_impl(gint c, VFSFile * stream) -{ -return c; -} - -void daap_vfs_rewind_impl(VFSFile * stream) -{ - return; -} - -glong daap_vfs_ftell_impl(VFSFile * stream) -{ - daap_handle_t *handle=stream->handle; - return handle->pos; -} - -gboolean daap_vfs_feof_impl(VFSFile * file) -{ - daap_handle_t *handle=file->handle; - off_t at = daap_vfs_ftell_impl(file); - return (gboolean) (at >= handle->length) ? TRUE : FALSE; -} - -gint daap_vfs_truncate_impl(VFSFile * file, glong size) -{ - return -1; -} -off_t daap_vfs_fsize_impl(VFSFile * file) -{ -return 0; -} - -gchar *daap_vfs_metadata_impl(VFSFile * file, const gchar * field) -{ -daap_handle_t *handle; -g_print("Requested metadata: '%s' \n",field); - -if(file && file->handle) - handle = (daap_handle_t *)file->handle; -else - return NULL; - -/*if (!g_ascii_strncasecmp(field, "stream-name", 11)) - return handle->url; -if (!g_ascii_strncasecmp(field, "track-name",10)) - return handle->url; -*/ - -if (!g_ascii_strncasecmp(field, "content-type", 12)) - return g_strdup("audio/mpeg"); -return NULL; - -} - -VFSConstructor daap_const = { - "daap://", - daap_vfs_fopen_impl, - daap_vfs_fclose_impl, - daap_vfs_fread_impl, - daap_vfs_fwrite_impl, - daap_vfs_getc_impl, - daap_vfs_ungetc_impl, - daap_vfs_fseek_impl, - daap_vfs_rewind_impl, - daap_vfs_ftell_impl, - daap_vfs_feof_impl, - daap_vfs_truncate_impl, - daap_vfs_fsize_impl, - daap_vfs_metadata_impl -}; - -static void init(void) -{ - mutex_init = g_mutex_new(); - mutex_discovery = g_mutex_new(); - vfs_register_transport(&daap_const); - daap_mdns_initialize (); - if (!login_sessions) - login_sessions = g_hash_table_new (g_str_hash, g_str_equal); - - -} -static void cleanup(void) -{ - g_mutex_free (mutex_init); - g_mutex_free (mutex_discovery); - daap_mdns_destroy (); -} -DECLARE_PLUGIN(daap, init, cleanup, NULL, NULL, NULL, NULL, NULL, NULL) diff -Nru audacious-plugins-2.4.4/src/daap/Makefile audacious-plugins-3.2/src/daap/Makefile --- audacious-plugins-2.4.4/src/daap/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -PLUGIN = libdaap${PLUGIN_SUFFIX} - -SRCS = daap.c - -SUBDIRS = xmms2-daap - -include ../../buildsys.mk -include ../../extra.mk - -plugindir := ${plugindir}/${TRANSPORT_PLUGIN_DIR} - -#For the moment i'm hardcoding it but it will be configurable -#MDNS_LIBS=-ldns_sd -MDNS_LIBS=-lavahi-glib -lavahi-common -lavahi-client -#MDNS_LIBS= - -INC = -I../.. -I./xmms2-daap -WARN = -Wall -pedantic -std=c99 - -CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${PICFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${INC} ${WARN} ${GCC42_CFLAGS} -LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${MDNS_LIBS} ./xmms2-daap/xmms2-daap.a diff -Nru audacious-plugins-2.4.4/src/daap/xmms2-daap/cc_handlers.c audacious-plugins-3.2/src/daap/xmms2-daap/cc_handlers.c --- audacious-plugins-2.4.4/src/daap/xmms2-daap/cc_handlers.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/xmms2-daap/cc_handlers.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,892 +0,0 @@ -/** @file cc_handlers.c - * Functions for parsing DAAP content code data. - * - * Copyright (C) 2006-2007 XMMS2 Team - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - */ - -#define _GNU_SOURCE -#include - -#include - -#include -#include - -#include "cc_handlers.h" -#include "daap_conn.h" - -#define DMAP_BYTES_REMAINING ((gint) (data_end - current_data)) - -static void -endian_swap_int16 (gint16 *i) -{ -#if G_BYTE_ORDER == G_LITTLE_ENDIAN - gint16 tmp; - tmp = (gint16) (((*i >> 8) & 0x00FF) | - ((*i << 8) & 0xFF00)); - *i = tmp; -#endif -} - -static void -endian_swap_int32 (gint32 *i) -{ -#if G_BYTE_ORDER == G_LITTLE_ENDIAN - gint32 tmp; - tmp = (gint32) (((*i >> 24) & 0x000000FF) | - ((*i >> 8) & 0x0000FF00) | - ((*i << 8) & 0x00FF0000) | - ((*i << 24) & 0xFF000000)); - *i = tmp; -#endif -} - -static void -endian_swap_int64 (gint64 *i) -{ -#if G_BYTE_ORDER == G_LITTLE_ENDIAN - gint64 tmp; - tmp = (gint64) ( ((*i >> 40) & 0x00000000000000FF) | - ((*i >> 32) & 0x000000000000FF00) | - ((*i >> 24) & 0x0000000000FF0000) | - ((*i >> 8) & 0x00000000FF000000) | - G_GINT64_CONSTANT ((*i << 8) & 0x000000FF00000000) | - G_GINT64_CONSTANT ((*i << 24) & 0x0000FF0000000000) | - G_GINT64_CONSTANT ((*i << 32) & 0x00FF000000000000) | - G_GINT64_CONSTANT ((*i << 40) & 0xFF00000000000000)); - *i = tmp; -#endif -} - -static gint -grab_data_string (gchar **container, gchar *data, gint str_len) -{ - gint offset = 0; - - if (0 != str_len) { - *container = (gchar *) malloc (sizeof (gchar) * (str_len+1)); - - memcpy (*container, data + DMAP_CC_SZ + DMAP_INT_SZ, str_len); - (*container)[str_len] = '\0'; - - offset += str_len; - } - - return offset; -} - -static gint -grab_data_version (gint16 *cont_upper, gint16 *cont_lower, gchar *data) -{ - gint offset = DMAP_CC_SZ; - - memcpy (cont_lower, data + offset, DMAP_INT_SZ); - endian_swap_int16 (cont_lower); - offset += DMAP_INT_SZ; - - memcpy (cont_upper, data + offset, DMAP_INT_SZ); - endian_swap_int16 (cont_upper); - offset += DMAP_INT_SZ; - - return offset; -} - -static gint -grab_data (void *container, gchar *data, content_type ct) -{ - gint offset; - gint data_size; - - offset = DMAP_CC_SZ; - memcpy (&data_size, data + offset, DMAP_INT_SZ); - endian_swap_int32 ((gint32 *)&data_size); - offset += DMAP_INT_SZ; - - switch (ct) { - case DMAP_CTYPE_BYTE: - case DMAP_CTYPE_UNSIGNEDBYTE: - memcpy (container, data + offset, DMAP_BYTE_SZ); - offset += DMAP_BYTE_SZ; - break; - case DMAP_CTYPE_SHORT: - case DMAP_CTYPE_UNSIGNEDSHORT: - memcpy (container, data + offset, DMAP_SHORT_SZ); - endian_swap_int16 (container); - offset += DMAP_SHORT_SZ; - break; - case DMAP_CTYPE_INT: - case DMAP_CTYPE_UNSIGNEDINT: - memcpy (container, data + offset, DMAP_INT_SZ); - endian_swap_int32 (container); - offset += DMAP_INT_SZ; - break; - case DMAP_CTYPE_LONG: - case DMAP_CTYPE_UNSIGNEDLONG: - memcpy (container, data + offset, DMAP_LONG_SZ); - endian_swap_int64 (container); - offset += DMAP_LONG_SZ; - break; - case DMAP_CTYPE_STRING: - offset += grab_data_string ((gchar **) container, data, data_size); - break; - case DMAP_CTYPE_DATE: - memcpy (container, data + offset, DMAP_INT_SZ); - endian_swap_int32 (container); - offset += DMAP_INT_SZ; - break; - default: - g_print ("Warning: Unrecognized content type (%d).\n", ct); - break; - } - - return offset; -} - -static gint -cc_handler_mtco (cc_data_t *fields, gchar *current_data) -{ - gint offset = grab_data (&(fields->n_rec_matches), current_data, DMAP_CTYPE_INT); - return offset; -} - -static gint -cc_handler_mrco (cc_data_t *fields, gchar *current_data) -{ - gint offset = grab_data (&(fields->n_ret_items), current_data, DMAP_CTYPE_INT); - return offset; -} - -static gint -cc_handler_muty (cc_data_t *fields, gchar *current_data) -{ - gint offset = grab_data (&(fields->updt_type), current_data, DMAP_CTYPE_BYTE); - return offset; -} - -static gint -cc_handler_mstt (cc_data_t *fields, gchar *current_data) -{ - gint offset = grab_data (&(fields->status), current_data, DMAP_CTYPE_INT); - return offset; -} - -static gint -cc_handler_mlit (cc_data_t *fields, gchar *data, gint data_len) -{ - gint offset = 0; - gboolean do_break = FALSE; - gchar *current_data, *data_end; - cc_item_record_t *item_fields; - - current_data = data + 8; - data_end = data + data_len; - - item_fields = g_malloc0 (sizeof (cc_item_record_t)); - - while (current_data < data_end && !do_break) { - switch (CC_TO_INT (current_data[0], current_data[1], - current_data[2], current_data[3])) { - case CC_TO_INT ('m','i','i','d'): - offset += grab_data (&(item_fields->dbid), current_data, - DMAP_CTYPE_INT); - break; - case CC_TO_INT ('m','p','e','r'): - offset += grab_data (&(item_fields->persistent_id), current_data, - DMAP_CTYPE_LONG); - break; - case CC_TO_INT ('m','i','n','m'): - offset += grab_data (&(item_fields->iname), current_data, - DMAP_CTYPE_STRING); - break; - - /* song list specific */ - case CC_TO_INT ('m','i','k','d'): - offset += grab_data (&(item_fields->item_kind), current_data, - DMAP_CTYPE_BYTE); - break; - case CC_TO_INT ('a','s','d','k'): - offset += grab_data (&(item_fields->song_data_kind), current_data, - DMAP_CTYPE_BYTE); - break; - case CC_TO_INT ('a','s','u','l'): - offset += grab_data (&(item_fields->song_data_url), current_data, - DMAP_CTYPE_STRING); - break; - case CC_TO_INT ('a','s','a','l'): - offset += grab_data (&(item_fields->song_data_album), - current_data, - DMAP_CTYPE_STRING); - break; - case CC_TO_INT ('a','s','a','r'): - offset += grab_data (&(item_fields->song_data_artist), - current_data, - DMAP_CTYPE_STRING); - break; - case CC_TO_INT ('a','s','b','r'): - offset += grab_data (&(item_fields->song_bitrate), current_data, - DMAP_CTYPE_SHORT); - break; - case CC_TO_INT ('a','s','c','m'): - offset += grab_data (&(item_fields->song_comment), current_data, - DMAP_CTYPE_STRING); - break; - case CC_TO_INT ('a','s','d','a'): - offset += grab_data (&(item_fields->song_date), current_data, - DMAP_CTYPE_DATE); - break; - case CC_TO_INT ('a','s','d','m'): - offset += grab_data (&(item_fields->song_date_mod), current_data, - DMAP_CTYPE_DATE); - break; - case CC_TO_INT ('a','s','g','n'): - offset += grab_data (&(item_fields->song_genre), current_data, - DMAP_CTYPE_STRING); - break; - case CC_TO_INT ('a','s','f','m'): - offset += grab_data (&(item_fields->song_format), current_data, - DMAP_CTYPE_STRING); - break; - case CC_TO_INT ('a','s','d','t'): - offset += grab_data (&(item_fields->song_description), current_data, - DMAP_CTYPE_STRING); - break; - case CC_TO_INT ('a','s','s','r'): - offset += grab_data (&(item_fields->sample_rate), current_data, - DMAP_CTYPE_INT); - break; - case CC_TO_INT ('a','s','s','z'): - offset += grab_data (&(item_fields->song_size), current_data, - DMAP_CTYPE_INT); - break; - case CC_TO_INT ('a','s','s','t'): - offset += grab_data (&(item_fields->song_start_time), current_data, - DMAP_CTYPE_INT); - break; - case CC_TO_INT ('a','s','s','p'): - offset += grab_data (&(item_fields->song_stop_time), current_data, - DMAP_CTYPE_INT); - break; - case CC_TO_INT ('a','s','t','m'): - offset += grab_data (&(item_fields->song_total_time), current_data, - DMAP_CTYPE_INT); - break; - case CC_TO_INT ('a','s','y','r'): - offset += grab_data (&(item_fields->song_year), current_data, - DMAP_CTYPE_SHORT); - break; - case CC_TO_INT ('a','s','t','n'): - offset += grab_data (&(item_fields->song_track_no), current_data, - DMAP_CTYPE_SHORT); - break; - case CC_TO_INT ('a','s','c','p'): - offset += grab_data (&(item_fields->song_composer), current_data, - DMAP_CTYPE_STRING); - break; - case CC_TO_INT ('a','s','t','c'): - offset += grab_data (&(item_fields->song_track_count), current_data, - DMAP_CTYPE_SHORT); - break; - case CC_TO_INT ('a','s','d','c'): - offset += grab_data (&(item_fields->song_disc_count), current_data, - DMAP_CTYPE_SHORT); - break; - case CC_TO_INT ('a','s','d','n'): - offset += grab_data (&(item_fields->song_disc_no), current_data, - DMAP_CTYPE_SHORT); - break; - case CC_TO_INT ('a','s','c','o'): - offset += grab_data (&(item_fields->song_compilation), current_data, - DMAP_CTYPE_BYTE); - break; - case CC_TO_INT ('a','s','b','t'): - offset += grab_data (&(item_fields->song_bpm), current_data, - DMAP_CTYPE_SHORT); - break; - case CC_TO_INT ('a','g','r','p'): - offset += grab_data (&(item_fields->song_grouping), current_data, - DMAP_CTYPE_STRING); - break; - case CC_TO_INT ('m','c','t','i'): - offset += grab_data (&(item_fields->container_id), current_data, - DMAP_CTYPE_INT); - break; - case CC_TO_INT ('m','u','d','l'): - offset += grab_data (&(item_fields->deleted_id), current_data, - DMAP_CTYPE_INT); - break; - - /* db list specific */ - case CC_TO_INT ('m','i','m','c'): - offset += grab_data (&(item_fields->db_n_items), current_data, - DMAP_CTYPE_INT); - break; - case CC_TO_INT ('m','c','t','c'): - offset += grab_data (&(item_fields->db_n_playlist), current_data, - DMAP_CTYPE_INT); - break; - case CC_TO_INT ('a','e','S','P'): - offset += grab_data (&(item_fields->is_smart_pl), current_data, - DMAP_CTYPE_BYTE); - break; - case CC_TO_INT ('a','b','p','l'): - offset += grab_data (&(item_fields->is_base_pl), current_data, - DMAP_CTYPE_BYTE); - break; - - /* exit conditions */ - case CC_TO_INT ('m','l','i','t'): - do_break = TRUE; - break; - default: - g_print ("Warning: Unrecognized content code " - "or end of data: %s\n", current_data); - do_break = TRUE; - break; - } - - current_data += offset; - offset = 0; - } - - fields->record_list = g_slist_prepend (fields->record_list, item_fields); - - return (gint) (current_data - data); -} - -static gint -cc_handler_mlcl (cc_data_t *fields, gchar *data, gint data_len) -{ - gint offset = 0; - gboolean do_break = FALSE; - gchar *current_data, *data_end; - current_data = data + 8; - data_end = data + data_len; - - while (current_data < data_end && !do_break) { - if (CC_TO_INT (current_data[0], current_data[1], - current_data[2], current_data[3]) == - CC_TO_INT ('m','l','i','t')) { - - offset += cc_handler_mlit (fields, current_data, - DMAP_BYTES_REMAINING); - } else { - break; - } - - current_data += offset; - offset = 0; - } - - return (gint)(current_data - data); -} - -static cc_data_t * -cc_handler_adbs (gchar *data, gint data_len) -{ - gint offset = 0; - gboolean do_break = FALSE; - gchar *current_data, *data_end; - cc_data_t *fields; - - current_data = data + 8; - data_end = data + data_len; - - fields = cc_data_new (); - - while ((current_data < data_end) && !do_break) { - switch (CC_TO_INT (current_data[0], current_data[1], - current_data[2], current_data[3])) { - case CC_TO_INT ('m','s','t','t'): - offset += cc_handler_mstt (fields, current_data); - break; - case CC_TO_INT ('m','u','t','y'): - offset += cc_handler_muty (fields, current_data); - break; - case CC_TO_INT ('m','t','c','o'): - offset += cc_handler_mtco (fields, current_data); - break; - case CC_TO_INT ('m','r','c','o'): - offset += cc_handler_mrco (fields, current_data); - break; - case CC_TO_INT ('m','l','c','l'): - offset += cc_handler_mlcl (fields, current_data, - DMAP_BYTES_REMAINING); - break; - default: - do_break = TRUE; - break; - } - - current_data += offset; - offset = 0; - } - - return fields; -} - -static cc_data_t * -cc_handler_msrv (gchar *data, gint data_len) -{ - gint offset = 0; - gboolean do_break = FALSE; - gchar *current_data, *data_end; - cc_data_t *fields; - current_data = data + 8; - data_end = data + data_len; - - fields = cc_data_new (); - - while ((current_data < data_end) && !do_break) { - switch (CC_TO_INT (current_data[0], current_data[1], - current_data[2], current_data[3])) { - case CC_TO_INT ('m','s','t','t'): - offset += cc_handler_mstt (fields, current_data); - break; - case CC_TO_INT ('a','p','r','o'): - offset += grab_data_version (&(fields->daap_proto_major), - &(fields->daap_proto_minor), - current_data); - break; - case CC_TO_INT ('m','p','r','o'): - offset += grab_data_version (&(fields->dmap_proto_major), - &(fields->dmap_proto_minor), - current_data); - break; - case CC_TO_INT ('m','s','t','m'): - offset += grab_data (&(fields->timeout_interval), current_data, - DMAP_CTYPE_INT); - break; - case CC_TO_INT ('m','s','i','x'): - offset += grab_data (&(fields->has_indexing), current_data, - DMAP_CTYPE_BYTE); - break; - case CC_TO_INT ('m','s','e','x'): - offset += grab_data (&(fields->has_extensions), current_data, - DMAP_CTYPE_BYTE); - break; - case CC_TO_INT ('m','s','u','p'): - offset += grab_data (&(fields->has_update), current_data, - DMAP_CTYPE_BYTE); - break; - case CC_TO_INT ('m','s','a','l'): - offset += grab_data (&(fields->has_autologout), current_data, - DMAP_CTYPE_BYTE); - break; - case CC_TO_INT ('m','s','l','r'): - offset += grab_data (&(fields->login_required), current_data, - DMAP_CTYPE_BYTE); - break; - case CC_TO_INT ('m','s','q','y'): - offset += grab_data (&(fields->has_queries), current_data, - DMAP_CTYPE_BYTE); - break; - case CC_TO_INT ('m','s','r','s'): - offset += grab_data (&(fields->has_resolve), current_data, - DMAP_CTYPE_BYTE); - break; - case CC_TO_INT ('m','s','b','r'): - offset += grab_data (&(fields->has_browsing), current_data, - DMAP_CTYPE_BYTE); - break; - case CC_TO_INT ('m','s','p','i'): - offset += grab_data (&(fields->has_persistent), current_data, - DMAP_CTYPE_BYTE); - break; - case CC_TO_INT ('m','s','a','s'): - offset += grab_data (&(fields->auth_type), current_data, - DMAP_CTYPE_BYTE); - break; - case CC_TO_INT ('m','s','a','u'): - offset += grab_data (&(fields->auth_method), current_data, - DMAP_CTYPE_BYTE); - break; - case CC_TO_INT ('a','e','S','V'): - offset += grab_data (&(fields->sharing_version), current_data, - DMAP_CTYPE_INT); - break; - case CC_TO_INT ('m','s','d','c'): - offset += grab_data (&(fields->db_count), current_data, - DMAP_CTYPE_INT); - break; - case CC_TO_INT ('m','i','n','m'): - offset += grab_data (&(fields->server_name), current_data, - DMAP_CTYPE_STRING); - break; - default: - g_print ("Warning: Unrecognized content code " - "or end of data: %s\n", - current_data); - do_break = TRUE; - break; - } - - current_data += offset; - offset = 0; - } - - return fields; -} - -static cc_data_t * -cc_handler_mccr (gchar *data, gint data_len) -{ - /* not implemented */ - return NULL; -} - -static cc_data_t * -cc_handler_mlog (gchar *data, gint data_len) -{ - gint offset = 0; - gboolean do_break = FALSE; - gchar *current_data, *data_end; - cc_data_t *fields; - - current_data = data + 8; - data_end = data + data_len; - - fields = cc_data_new (); - - while ((current_data < data_end) && !do_break) { - switch (CC_TO_INT (current_data[0], current_data[1], - current_data[2], current_data[3])) { - case CC_TO_INT ('m','s','t','t'): - offset += cc_handler_mstt (fields, current_data); - break; - case CC_TO_INT ('m','l','i','d'): - offset += grab_data (&(fields->session_id), current_data, DMAP_CTYPE_INT); - break; - default: - g_print ("Unrecognized content code or end of data: %s\n", - current_data); - do_break = TRUE; - break; - } - - current_data += offset; - offset = 0; - } - - return fields; -} - -static cc_data_t * -cc_handler_mupd (gchar *data, gint data_len) -{ - gint offset = 0; - gboolean do_break = FALSE; - gchar *current_data, *data_end; - cc_data_t *fields; - - current_data = data + 8; - data_end = data + data_len; - - fields = cc_data_new (); - - while ((current_data < data_end) && !do_break) { - switch (CC_TO_INT (current_data[0], current_data[1], - current_data[2], current_data[3])) { - case CC_TO_INT ('m','u','s','r'): - offset += grab_data (&(fields->revision_id), current_data, - DMAP_CTYPE_INT); - break; - case CC_TO_INT ('m','s','t','t'): - offset += cc_handler_mstt (fields, current_data); - break; - default: - g_print ("Unrecognized content code or end of data: %s\n", - current_data); - do_break = TRUE; - break; - } - - current_data += offset; - offset = 0; - } - - return fields; -} - -static cc_data_t * -cc_handler_avdb (gchar *data, gint data_len) -{ - gint offset = 0; - gboolean do_break = FALSE; - gchar *current_data, *data_end; - cc_data_t *fields; - - current_data = data + 8; - data_end = data + data_len; - - fields = cc_data_new (); - - while ((current_data < data_end) && !do_break) { - switch (CC_TO_INT (current_data[0], current_data[1], - current_data[2], current_data[3])) { - case CC_TO_INT ('m','s','t','t'): - offset += cc_handler_mstt (fields, current_data); - break; - case CC_TO_INT ('m','u','t','y'): - offset += cc_handler_muty (fields, current_data); - break; - case CC_TO_INT ('m','t','c','o'): - offset += cc_handler_mtco (fields, current_data); - break; - case CC_TO_INT ('m','r','c','o'): - offset += cc_handler_mrco (fields, current_data); - break; - case CC_TO_INT ('m','l','c','l'): - offset += cc_handler_mlcl (fields, current_data, - DMAP_BYTES_REMAINING); - break; - default: - do_break = TRUE; - break; - } - - current_data += offset; - offset = 0; - } - - return fields; -} - -static cc_data_t * -cc_handler_apso (gchar *data, gint data_len) -{ - gint offset = 0; - gboolean do_break = FALSE; - gchar *current_data, *data_end; - cc_data_t *fields; - - current_data = data + 8; - data_end = data + data_len; - - fields = cc_data_new (); - - while ((current_data < data_end) && !do_break) { - switch (CC_TO_INT (current_data[0], current_data[1], - current_data[2], current_data[3])) { - case CC_TO_INT ('m','s','t','t'): - offset += cc_handler_mstt (fields, current_data); - break; - case CC_TO_INT ('m','u','t','y'): - offset += cc_handler_muty (fields, current_data); - break; - case CC_TO_INT ('m','t','c','o'): - offset += cc_handler_mtco (fields, current_data); - break; - case CC_TO_INT ('m','r','c','o'): - offset += cc_handler_mrco (fields, current_data); - break; - case CC_TO_INT ('m','l','c','l'): - offset += cc_handler_mlcl (fields, current_data, - DMAP_BYTES_REMAINING); - break; - default: - do_break = TRUE; - break; - } - - current_data += offset; - offset = 0; - } - - return fields; -} - -static cc_data_t * -cc_handler_aply (gchar *data, gint data_len) -{ - gint offset = 0; - gboolean do_break = FALSE; - gchar *current_data, *data_end; - cc_data_t *fields; - - current_data = data + 8; - data_end = data + data_len; - - fields = cc_data_new (); - - while ((current_data < data_end) && !do_break) { - switch (CC_TO_INT (current_data[0], current_data[1], - current_data[2], current_data[3])) { - case CC_TO_INT ('m','s','t','t'): - offset += cc_handler_mstt (fields, current_data); - break; - case CC_TO_INT ('m','u','t','y'): - offset += cc_handler_muty (fields, current_data); - break; - case CC_TO_INT ('m','t','c','o'): - offset += cc_handler_mtco (fields, current_data); - break; - case CC_TO_INT ('m','r','c','o'): - offset += cc_handler_mrco (fields, current_data); - break; - case CC_TO_INT ('m','l','c','l'): - offset += cc_handler_mlcl (fields, current_data, - DMAP_BYTES_REMAINING); - break; - default: - do_break = TRUE; - break; - } - - current_data += offset; - offset = 0; - } - - return fields; -} - -cc_data_t * -cc_data_new () -{ - cc_data_t *retval; - - retval = g_malloc0 (sizeof (cc_data_t)); - retval->record_list = NULL; - - return retval; -} - -void -cc_data_free (cc_data_t *fields) -{ - if (NULL != fields->server_name) g_free (fields->server_name); - - g_slist_foreach (fields->record_list, - (GFunc) cc_item_record_free, - NULL); - g_slist_free (fields->record_list); - - g_free (fields); -} - -void -cc_item_record_free (cc_item_record_t *item) -{ - if (NULL != item->iname) g_free (item->iname); - if (NULL != item->song_data_url) g_free (item->song_data_url); - if (NULL != item->song_data_album) g_free (item->song_data_album); - if (NULL != item->song_data_artist) g_free (item->song_data_artist); - if (NULL != item->song_comment) g_free (item->song_comment); - if (NULL != item->song_description) g_free (item->song_description); - if (NULL != item->song_genre) g_free (item->song_genre); - if (NULL != item->song_format) g_free (item->song_format); - if (NULL != item->song_composer) g_free (item->song_composer); - if (NULL != item->song_grouping) g_free (item->song_grouping); - - g_free (item); -} - -GSList * -cc_record_list_deep_copy (GSList *record_list) { - GSList *retval = NULL; - cc_item_record_t *record, *data; - - for (; record_list; record_list = g_slist_next (record_list)) { - data = record_list->data; - record = g_malloc0 (sizeof (cc_item_record_t)); - if (!record) { - g_print ("memory allocation failed for cc_record_list_deep_copy\n"); - return NULL; - } - - record->item_kind = data->item_kind; - record->song_data_kind = data->song_data_kind; - record->song_compilation = data->song_compilation; - record->is_smart_pl = data->is_smart_pl; - record->is_base_pl = data->is_base_pl; - - record->song_bitrate = data->song_bitrate; - record->song_year = data->song_year; - record->song_track_no = data->song_track_no; - record->song_track_count = data->song_track_count; - record->song_disc_count = data->song_disc_count; - record->song_disc_no = data->song_disc_no; - record->song_bpm = data->song_bpm; - - record->dbid = data->dbid; - record->sample_rate = data->sample_rate; - record->song_size = data->song_size; - record->song_start_time = data->song_start_time; - record->song_stop_time = data->song_stop_time; - record->song_total_time = data->song_total_time; - record->song_date = data->song_date; - record->song_date_mod = data->song_date_mod; - record->container_id = data->container_id; - - record->deleted_id = data->deleted_id; - - record->persistent_id = data->persistent_id; - - record->iname = g_strdup (data->iname); - record->song_data_url = g_strdup (data->song_data_url); - record->song_data_album = g_strdup (data->song_data_album); - record->song_data_artist = g_strdup (data->song_data_artist); - record->song_comment = g_strdup (data->song_comment); - record->song_description = g_strdup (data->song_description); - record->song_genre = g_strdup (data->song_genre); - record->song_format = g_strdup (data->song_format); - record->song_composer = g_strdup (data->song_composer); - record->song_grouping = g_strdup (data->song_grouping); - - /* db list specific */ - record->db_n_items = data->db_n_items; - record->db_n_playlist = data->db_n_playlist; - - retval = g_slist_prepend (retval, record); - } - - return retval; -} - -cc_data_t * -cc_handler (gchar *data, gint data_len) -{ - cc_data_t *retval; - - switch (CC_TO_INT (data[0],data[1],data[2],data[3])) { - case CC_TO_INT ('a','d','b','s'): - retval = cc_handler_adbs (data, data_len); - break; - case CC_TO_INT ('m','s','r','v'): - retval = cc_handler_msrv (data, data_len); - break; - case CC_TO_INT ('m','c','c','r'): - retval = cc_handler_mccr (data, data_len); - break; - case CC_TO_INT ('m','l','o','g'): - retval = cc_handler_mlog (data, data_len); - break; - case CC_TO_INT ('m','u','p','d'): - retval = cc_handler_mupd (data, data_len); - break; - case CC_TO_INT ('a','v','d','b'): - retval = cc_handler_avdb (data, data_len); - break; - case CC_TO_INT ('a','p','s','o'): - retval = cc_handler_apso (data, data_len); - break; - case CC_TO_INT ('a','p','l','y'): - retval = cc_handler_aply (data, data_len); - break; - default: - retval = NULL; - break; - } - - return retval; -} - diff -Nru audacious-plugins-2.4.4/src/daap/xmms2-daap/cc_handlers.h audacious-plugins-3.2/src/daap/xmms2-daap/cc_handlers.h --- audacious-plugins-2.4.4/src/daap/xmms2-daap/cc_handlers.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/xmms2-daap/cc_handlers.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,174 +0,0 @@ -/** @file cc_handlers.h - * - * Copyright (C) 2006-2007 XMMS2 Team - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - */ - -#ifndef CC_HANDLERS_H -#define CC_HANDLERS_H - -#include - -#define CC_TO_INT(a,b,c,d) ((gint) ((a << 24) | \ - (b << 16) | \ - (c << 8) | \ - (d ) )) - -#define DMAP_CC_SZ (sizeof (gchar) * 4) -#define DMAP_BYTE_SZ sizeof (gint8) -#define DMAP_SHORT_SZ sizeof (gint16) -#define DMAP_INT_SZ sizeof (gint32) -#define DMAP_LONG_SZ sizeof (gint64) -#define DMAP_VERSION_SZ sizeof (gint16) - -#define DMAP_UNKNOWN_CC -1 - -typedef enum { - DMAP_CTYPE_BYTE = 1, - /* unconfirmed */ - DMAP_CTYPE_UNSIGNEDBYTE = 2, - - DMAP_CTYPE_SHORT = 3, - /* unconfirmed */ - DMAP_CTYPE_UNSIGNEDSHORT = 4, - - DMAP_CTYPE_INT = 5, - /* unconfirmed */ - DMAP_CTYPE_UNSIGNEDINT = 6, - - DMAP_CTYPE_LONG = 7, - /* unconfirmed */ - DMAP_CTYPE_UNSIGNEDLONG = 8, - - DMAP_CTYPE_STRING = 9, - DMAP_CTYPE_DATE = 10, - DMAP_CTYPE_VERSION = 11, - DMAP_CTYPE_LIST = 12, -} content_type; - -typedef struct { - /* items common to more than one type */ - gint8 updt_type; - - gint32 n_rec_matches; - gint32 n_ret_items; - gint32 status; - - GSList *record_list; - - /* msrv - server info */ - gint8 has_indexing; - gint8 has_extensions; - gint8 has_update; - gint8 has_autologout; - gint8 has_queries; - gint8 has_resolve; - gint8 has_browsing; - gint8 has_persistent; - gint8 auth_type; - gint8 auth_method; - gint8 login_required; - - gint16 daap_proto_major; - gint16 daap_proto_minor; - gint16 dmap_proto_major; - gint16 dmap_proto_minor; - - gint32 timeout_interval; - gint32 sharing_version; - gint32 db_count; - - gchar *server_name; - - /* mccr - content codes */ - /* none */ - - /* mlog - login */ - guint32 session_id; - - /* mupd - update */ - guint32 revision_id; - - /* avdb - db list */ - /* none */ - - /* apso - items in playlist */ - /* none */ - - /* aply - playlist list */ - /* none */ - -} cc_data_t; - -/* mlit -- used in a item listing */ -typedef struct { - gint8 item_kind; - gint8 song_data_kind; - gint8 song_compilation; - gint8 is_smart_pl; - gint8 is_base_pl; - - gint16 song_bitrate; - gint16 song_year; - gint16 song_track_no; - gint16 song_track_count; - gint16 song_disc_count; - gint16 song_disc_no; - gint16 song_bpm; - - gint32 dbid; - gint32 sample_rate; - gint32 song_size; - gint32 song_start_time; - gint32 song_stop_time; - gint32 song_total_time; - gint32 song_date; - gint32 song_date_mod; - gint32 container_id; - - gint32 deleted_id; - - guint64 persistent_id; - - gchar *iname; - gchar *song_data_url; - gchar *song_data_album; - gchar *song_data_artist; - gchar *song_comment; - gchar *song_description; - gchar *song_genre; - gchar *song_format; - gchar *song_composer; - gchar *song_grouping; - - /* db list specific */ - gint32 db_n_items; - gint32 db_n_playlist; - -} cc_item_record_t; - -cc_data_t * -cc_data_new (); - -void -cc_data_free (cc_data_t *fields); - -void -cc_item_record_free (cc_item_record_t *item); - -GSList * -cc_record_list_deep_copy (GSList *record_list); - -cc_data_t * -cc_handler (gchar *data, gint data_len); - -#endif diff -Nru audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_cmd.c audacious-plugins-3.2/src/daap/xmms2-daap/daap_cmd.c --- audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_cmd.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/xmms2-daap/daap_cmd.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,291 +0,0 @@ -/** @file daap_cmd.c - * Wrapper functions for issuing DAAP commands. - * - * Copyright (C) 2006-2007 XMMS2 Team - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - */ - -#include "daap_cmd.h" -#include "daap_conn.h" - -static cc_data_t * -daap_request_data (GIOChannel *chan, const gchar *path, gchar *host, guint request_id); -static gboolean -daap_request_stream (GIOChannel *chan, gchar *path, gchar *host, - guint request_id, guint *size); -static gchar * -daap_url_append_meta (gchar *url, GSList *meta_list); - -guint -daap_command_login (gchar *host, gint port, guint request_id ) { - GIOChannel *chan; - cc_data_t *cc_data; - - guint session_id = 0; - - chan = daap_open_connection (host, port); - if (!chan) { - g_print("Connection to server failed! " - "Please make sure the url is of the form:\n" - "daap://ip[:port]/[song]"); - return 0; - } - - cc_data = daap_request_data (chan, "/login", host, request_id); - if (cc_data) { - session_id = cc_data->session_id; - cc_data_free (cc_data); - } - - g_io_channel_shutdown (chan, TRUE, NULL); - g_io_channel_unref (chan); - - return session_id; -} - -guint -daap_command_update (gchar *host, gint port, guint session_id, guint request_id) -{ - GIOChannel *chan; - gchar *request; - cc_data_t *cc_data; - guint revision_id = 0; - - chan = daap_open_connection (host, port); - if (!chan) { - return 0; - } - - request = g_strdup_printf ("/update?session-id=%d", session_id); - - cc_data = daap_request_data (chan, request, host, request_id); - if (cc_data) { - revision_id = cc_data->revision_id; - cc_data_free (cc_data); - } - - g_free (request); - g_io_channel_shutdown (chan, TRUE, NULL); - g_io_channel_unref (chan); - - return revision_id; -} - -gboolean -daap_command_logout (gchar *host, gint port, guint session_id, guint request_id) -{ - GIOChannel *chan; - gchar *request; - - chan = daap_open_connection (host, port); - if (!chan) { - return FALSE; - } - - request = g_strdup_printf ("/logout?session-id=%d", session_id); - - /* there is no cc_data generated, so we don't need to store it anywhere */ - daap_request_data (chan, request, host, request_id); - - g_free (request); - g_io_channel_shutdown (chan, TRUE, NULL); - g_io_channel_unref (chan); - - return TRUE; -} - -GSList * -daap_command_db_list (gchar *host, gint port, guint session_id, - guint revision_id, guint request_id) -{ - GIOChannel *chan; - gchar *request; - cc_data_t *cc_data; - GSList *db_id_list = NULL; - - chan = daap_open_connection (host, port); - if (!chan) { - return NULL; - } - - request = g_strdup_printf ("/databases?session-id=%d&revision-id=%d", - session_id, revision_id); - - cc_data = daap_request_data (chan, request, host, request_id); - g_free (request); - if (cc_data) { - db_id_list = cc_record_list_deep_copy (cc_data->record_list); - cc_data_free (cc_data); - } - - g_io_channel_shutdown (chan, TRUE, NULL); - g_io_channel_unref (chan); - - return db_id_list; -} - -GSList * -daap_command_song_list (gchar *host, gint port, guint session_id, - guint revision_id, guint request_id, gint db_id) -{ - GIOChannel *chan; - gchar *request; - cc_data_t *cc_data; - - GSList * song_list; - GSList * meta_items = NULL; - - chan = daap_open_connection (host, port); - if (!chan) { - return NULL; - } - - meta_items = g_slist_prepend (meta_items, g_strdup ("dmap.itemid")); - meta_items = g_slist_prepend (meta_items, g_strdup ("dmap.itemname")); - meta_items = g_slist_prepend (meta_items, g_strdup ("daap.songartist")); - meta_items = g_slist_prepend (meta_items, g_strdup ("daap.songformat")); - meta_items = g_slist_prepend (meta_items, g_strdup ("daap.songtracknumber")); - meta_items = g_slist_prepend (meta_items, g_strdup ("daap.songalbum")); - - request = g_strdup_printf ("/databases/%d/items?" - "session-id=%d&revision-id=%d", - db_id, session_id, revision_id); - - if (meta_items) { - request = daap_url_append_meta (request, meta_items); - } - - cc_data = daap_request_data (chan, request, host, request_id); - song_list = cc_record_list_deep_copy (cc_data->record_list); - - g_free (request); - cc_data_free (cc_data); - g_io_channel_shutdown (chan, TRUE, NULL); - g_io_channel_unref (chan); - g_slist_foreach (meta_items, (GFunc) g_free, NULL); - g_slist_free (meta_items); - - return song_list; -} - -GIOChannel * -daap_command_init_stream (gchar *host, gint port, guint session_id, - guint revision_id, guint request_id, - gint dbid, gchar *song, guint *filesize) -{ - GIOChannel *chan; - gchar *request; - gboolean ok; - - chan = daap_open_connection (host, port); - if (!chan) { - return NULL; - } - - request = g_strdup_printf ("/databases/%d/items%s" - "?session-id=%d", - dbid, song, session_id); - - ok = daap_request_stream (chan, request, host, request_id, filesize); - g_free (request); - - if (!ok) { - return NULL; - } - - return chan; -} - -static cc_data_t * -daap_request_data (GIOChannel *chan, const gchar *path, gchar *host, guint request_id) -{ - guint status; - gchar *request, *header = NULL; - cc_data_t *retval; - - request = daap_generate_request (path, host, request_id); - daap_send_request (chan, request); - g_free (request); - - daap_receive_header (chan, &header); - if (!header) { - return NULL; - } - - status = get_server_status (header); - - switch (status) { - case UNKNOWN_SERVER_STATUS: - case HTTP_BAD_REQUEST: - case HTTP_FORBIDDEN: - case HTTP_NO_CONTENT: - case HTTP_NOT_FOUND: - retval = NULL; - break; - case HTTP_OK: - default: - retval = daap_handle_data (chan, header); - break; - } - g_free (header); - - return retval; -} - -static gboolean -daap_request_stream (GIOChannel *chan, gchar *path, gchar *host, - guint request_id, guint *size) -{ - guint status; - gchar *request, *header = NULL; - - request = daap_generate_request (path, host, request_id); - daap_send_request (chan, request); - g_free (request); - - daap_receive_header (chan, &header); - if (!header) { - return FALSE; - } - - status = get_server_status (header); - if (HTTP_OK != status) { - g_free (header); - return FALSE; - } - - *size = get_data_length (header); - - g_free (header); - - return TRUE; -} - -static gchar * -daap_url_append_meta (gchar *url, GSList *meta_list) -{ - gchar * tmpurl; - - tmpurl = url; - url = g_strdup_printf ("%s&meta=%s", url, (gchar *) meta_list->data); - g_free (tmpurl); - meta_list = g_slist_next (meta_list); - - for ( ; meta_list != NULL; meta_list = g_slist_next (meta_list)) { - tmpurl = url; - url = g_strdup_printf ("%s,%s", url, (gchar *) meta_list->data); - g_free (tmpurl); - } - - return url; -} - diff -Nru audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_cmd.h audacious-plugins-3.2/src/daap/xmms2-daap/daap_cmd.h --- audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_cmd.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/xmms2-daap/daap_cmd.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,112 +0,0 @@ -/** @file daap_cmd.h - * - * Copyright (C) 2006-2007 XMMS2 Team - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - */ - -#ifndef DAAP_CMD_H -#define DAAP_CMD_H - -#include "cc_handlers.h" - -/** - * Log into a DAAP server. - * Issue the command necessary for logging in. - * - * @param host host IP of server - * @param port port that the server uses on host - * @param request_id the request id - * @return a session id for use in further commands - */ -guint -daap_command_login (gchar *host, gint port, guint request_id); - -/** - * Update the DAAP server status. - * Issue the command necessary for updating the connection to a DAAP server. - * - * @param host host IP of server - * @param port port that the server uses on host - * @param session_id the id of the current session - * @param request_id the request id - * @return a revision id for use in further commands - */ -guint -daap_command_update (gchar *host, gint port, guint session_id, guint request_id); - -/** - * Log out of a DAAP server. - * Issue the command necessary for logging out. - * - * @param host host IP of server - * @param port port that the server uses on host - * @param session_id the id of the current session - * @param request_id the request id - * @return TRUE on success, FALSE otherwise - */ -gboolean -daap_command_logout (gchar *host, gint port, guint session_id, guint request_id); - -/** - * Get a list of databases. - * Issue the command for fetching a list of song databases on the server. - * - * @param host host IP of server - * @param port port that the server uses on host - * @param session_id the id of the current session - * @param revision_id the id of the current revision - * @param request_id the request id - * @return a list of database ids - */ -GSList * -daap_command_db_list (gchar *host, gint port, guint session_id, - guint revision_id, guint request_id); - -/** - * Get a list of songs in a database. - * Issue the command for fetching a list of songs in a database on the server. - * - * @param host host IP of server - * @param port port that the server uses on host - * @param session_id the id of the current session - * @param revision_id the id of the current revision - * @param request_id the request id - * @param db_id the database id - * @return a list of songs in the database - */ -GSList * -daap_command_song_list (gchar *host, gint port, guint session_id, - guint revision_id, guint request_id, gint db_id); - -/** - * Begin streaming a song. - * Issue the command for streaming a song on the server. - * NOTE: This command only _begins_ the stream; unlike the other command - * functions, this one does not close the socket/channel, this must be done - * manually after reading the data. - * - * @param host host IP of server - * @param port port that the server uses on host - * @param session_id the id of the current session - * @param revision_id the id of the current revision - * @param request_id the request id - * @param dbid the database id - * @param song a string containing the id and file type of the song to stream - * @param filesize a pointer to an integer that stores the content length - * @return: a GIOChannel corresponding to streaming song data - */ -GIOChannel * -daap_command_init_stream (gchar *host, gint port, guint session_id, - guint revision_id, guint request_id, - gint dbid, gchar *song, guint *filesize); - -#endif diff -Nru audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_conn.c audacious-plugins-3.2/src/daap/xmms2-daap/daap_conn.c --- audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_conn.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/xmms2-daap/daap_conn.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,331 +0,0 @@ -/** @file daap_conn.c - * Manages the connection to a DAAP server. - * - * Copyright (C) 2006-2007 XMMS2 Team - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - */ -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - - - - - -#include "cc_handlers.h" -#include "daap_md5.h" -#include "daap_conn.h" -#include "daap_util.h" - - - GIOChannel * -daap_open_connection (gchar *host, gint port) -{ - gint ai_status; - gint sockfd; - struct sockaddr_in server; - struct addrinfo *ai_hint, *ai_result; - GIOChannel *sock_chan; - GError *err = NULL; - - sockfd = socket (AF_INET, SOCK_STREAM, 0); - if (sockfd == -1) { - return NULL; - } - - sock_chan = g_io_channel_unix_new (sockfd); - if (!g_io_channel_get_close_on_unref (sock_chan)) { - g_io_channel_set_close_on_unref (sock_chan, TRUE); - } - - g_io_channel_set_flags (sock_chan, G_IO_FLAG_NONBLOCK, &err); - if (NULL != err) { - g_print ("Error setting nonblock flag: %s\n", err->message); - g_io_channel_unref (sock_chan); - return NULL; - } - - /* call getaddrinfo() to convert a hostname to ip */ - - ai_hint = g_new0 (struct addrinfo, 1); - /* FIXME sometime in the future, we probably want to append - * " | {A,P}F_INET6" for IPv6 support */ - ai_hint->ai_family = AF_INET; - ai_hint->ai_protocol = PF_INET; - - while ((ai_status = getaddrinfo (host, NULL, ai_hint, &ai_result))) { - if (ai_status != EAI_AGAIN) { - g_print ("Error with getaddrinfo(): %s", gai_strerror (ai_status)); - g_io_channel_unref (sock_chan); - return NULL; - } - } - - memset (&server, 0, sizeof (struct sockaddr_in)); - - server.sin_addr = ((struct sockaddr_in *) ai_result->ai_addr)->sin_addr; - server.sin_family = AF_INET; - server.sin_port = htons (port); - - g_free (ai_hint); - freeaddrinfo (ai_result); - - while (42) { - fd_set fds; - struct timeval tmout; - gint sret; - gint err = 0; - guint errsize = sizeof (err); - - tmout.tv_sec = 3; - tmout.tv_usec = 0; - - sret = connect (sockfd, - (struct sockaddr *) &server, - sizeof (struct sockaddr_in)); - - if (sret == 0) { - break; - } else if (sret == -1 && errno != EINPROGRESS) { - g_print ("connect says: %s", strerror (errno)); - g_io_channel_unref (sock_chan); - return NULL; - } - - FD_ZERO (&fds); - FD_SET (sockfd, &fds); - - sret = select (sockfd + 1, NULL, &fds, NULL, &tmout); - if (sret <= 0 ) { - g_io_channel_unref (sock_chan); - return NULL; - } - - /** Haha, lol lol ololo sockets in POSIX */ - if (getsockopt (sockfd, SOL_SOCKET, SO_ERROR, &err, &errsize) < 0) { - g_io_channel_unref (sock_chan); - return NULL; - } - - if (err != 0) { - g_print ("Connect call failed!"); - g_io_channel_unref (sock_chan); - return NULL; - } - - if (FD_ISSET (sockfd, &fds)) { - break; - } - } - - g_io_channel_set_encoding (sock_chan, NULL, &err); - if (NULL != err) { - g_print ("Error setting encoding: %s\n", err->message); - g_io_channel_unref (sock_chan); - return NULL; - } - - return sock_chan; -} - -gchar * -daap_generate_request (const gchar *path, gchar *host, gint request_id) -{ - gchar *req; - gint8 hash[33]; - - memset (hash, 0, 33); - - daap_hash_generate (DAAP_VERSION, (guchar *) path, 2, (guchar *) hash, - request_id); - - req = g_strdup_printf ("GET %s %s\r\n" - "Host: %s\r\n" - "Accept: */*\r\n" - "User-Agent: %s\r\n" - "Accept-Language: en-us, en;q=5.0\r\n" - "Client-DAAP-Access-Index: 2\r\n" - "Client-DAAP-Version: 3.0\r\n" - "Client-DAAP-Validation: %s\r\n" - "Client-DAAP-Request-ID: %d\r\n" - "Connection: close\r\n" - "\r\n", - path, HTTP_VER_STRING, host, - USER_AGENT, hash, request_id); - return req; -} - -void -daap_send_request (GIOChannel *sock_chan, gchar *request) -{ - gint n_bytes_to_send; - - n_bytes_to_send = strlen (request); - - write_buffer_to_channel (sock_chan, request, n_bytes_to_send); -} - -void -daap_receive_header (GIOChannel *sock_chan, gchar **header) -{ - guint n_total_bytes_recvd = 0; - gsize linelen; - gchar *response, *recv_line; - GIOStatus io_stat; - GError *err = NULL; - - if (NULL != header) { - *header = NULL; - } - - response = (gchar *) g_malloc0 (sizeof (gchar) * MAX_HEADER_LENGTH); - if (NULL == response) { - g_print ("Error: couldn't allocate memory for response.\n"); - return; - } - - /* read data from the io channel one line at a time, looking for - * the end of the header */ - do { - io_stat = g_io_channel_read_line (sock_chan, &recv_line, &linelen, - NULL, &err); - if (io_stat == G_IO_STATUS_ERROR) { - g_print ("Error reading from channel: %s\n", err->message); - break; - } - - if (NULL != recv_line) { - memcpy (response+n_total_bytes_recvd, recv_line, linelen); - n_total_bytes_recvd += linelen; - - if (strcmp (recv_line, "\r\n") == 0) { - g_free (recv_line); - if (NULL != header) { - *header = (gchar *) g_malloc0 (sizeof (gchar) * - n_total_bytes_recvd); - if (NULL == *header) { - g_print ("error: couldn't allocate header\n"); - break; - } - memcpy (*header, response, n_total_bytes_recvd); - } - break; - } - - g_free (recv_line); - } - - if (io_stat == G_IO_STATUS_EOF) { - break; - } - - if (n_total_bytes_recvd >= MAX_HEADER_LENGTH) { - g_print ("Warning: Maximum header size reached without finding " - "end of header; bailing.\n"); - break; - } - } while (TRUE); - - g_free (response); - - if (sock_chan) { - g_io_channel_flush (sock_chan, &err); - if (NULL != err) { - g_print ("Error flushing buffer: %s\n", err->message); - return; - } - } -} - -cc_data_t * -daap_handle_data (GIOChannel *sock_chan, gchar *header) -{ - cc_data_t * retval; - gint response_length; - gchar *response_data; - - response_length = get_data_length (header); - - if (BAD_CONTENT_LENGTH == response_length) { - g_print ("warning: Header does not contain a \""CONTENT_LENGTH - "\" parameter.\n"); - return NULL; - } else if (0 == response_length) { - g_print ("warning: "CONTENT_LENGTH" is zero, most likely the result of " - "a bad request.\n"); - return NULL; - } - - response_data = (gchar *) g_malloc0 (sizeof (gchar) * response_length); - if (NULL == response_data) { - g_print ("error: could not allocate response memory\n"); - return NULL; - } - - read_buffer_from_channel (sock_chan, response_data, response_length); - - retval = cc_handler (response_data, response_length); - g_free (response_data); - - return retval; -} - -gint -get_data_length (gchar *header) -{ - gint len; - gchar *content_length; - - content_length = strstr (header, CONTENT_LENGTH); - if (NULL == content_length) { - len = BAD_CONTENT_LENGTH; - } else { - content_length += strlen (CONTENT_LENGTH); - len = atoi (content_length); - } - - return len; -} - -gint -get_server_status (gchar *header) -{ - gint status; - gchar *server_status; - - server_status = strstr (header, HTTP_VER_STRING); - if (NULL == server_status) { - status = UNKNOWN_SERVER_STATUS; - } else { - server_status += strlen (HTTP_VER_STRING" "); - status = atoi (server_status); - } - - return status; -} - diff -Nru audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_conn.h audacious-plugins-3.2/src/daap/xmms2-daap/daap_conn.h --- audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_conn.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/xmms2-daap/daap_conn.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,65 +0,0 @@ -/** @file daap_conn.h - * - * Copyright (C) 2006-2007 XMMS2 Team - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - */ - -#ifndef DAAP_CONN_H -#define DAAP_CONN_H - -#define MAX_REQUEST_LENGTH 1024 -#define MAX_HEADER_LENGTH (1024 * 16) - -#define BAD_CONTENT_LENGTH -1 - -#define DAAP_VERSION 3 - -#define HTTP_OK 200 -#define HTTP_NO_CONTENT 204 -#define HTTP_BAD_REQUEST 400 -#define HTTP_FORBIDDEN 403 -#define HTTP_NOT_FOUND 404 -#define UNKNOWN_SERVER_STATUS -1 - -#define DAAP_URL_PREFIX "daap://" -#define HTTP_VER_STRING "HTTP/1.1" -#define CONTENT_LENGTH "Content-Length: " -#define CONTENT_TYPE "Content-Type: " -/* TODO does this work ok? */ -#define USER_AGENT "Audacious" -/*#define USER_AGENT "iTunes/4.6 (Windows; N)"*/ - -GIOChannel * -daap_open_connection (gchar *host, gint port); - -gchar * -daap_generate_request (const gchar *path, gchar *host, gint request_id); - -void -daap_send_request (GIOChannel *sock_chan, gchar *request); - -void -daap_receive_header (GIOChannel *sock_chan, gchar **header); - -cc_data_t * -daap_handle_data (GIOChannel *sock_chan, gchar *header); - -void -daap_stream_data (GIOChannel *input, GIOChannel *output, gchar *header); - -gint -get_data_length (gchar *header); - -gint -get_server_status (gchar *header); - -#endif diff -Nru audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_md5.c audacious-plugins-3.2/src/daap/xmms2-daap/daap_md5.c --- audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_md5.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/xmms2-daap/daap_md5.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,497 +0,0 @@ -/** @file daap_md5.c - * - * Implementation of DAAP (iTunes Music Sharing) hashing, parsing, connection - * Slightly modified for use in XMMS2 - * - * Copyright (C) 2004,2005 Charles Schmidt - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include -#include - -#include "daap_md5.h" - -/* hashing - based on/copied from libopendaap - * Copyright (c) 2004 David Hammerton - */ - -typedef struct { - guint32 buf[4]; - guint32 bits[2]; - unsigned char in[64]; - int version; -} MD5_CTX; - -/* -* This code implements the MD5 message-digest algorithm. -* The algorithm is due to Ron Rivest. This code was -* written by Colin Plumb in 1993, no copyright is claimed. -* This code is in the public domain; do with it what you wish. -* -* Equivalent code is available from RSA Data Security, Inc. -* This code has been tested against that, and is equivalent, -* except that you don't need to include two pages of legalese -* with every copy. -* -* To compute the message digest of a chunk of bytes, declare an MD5Context -* structure, pass it to OpenDaap_MD5Init, call OpenDaap_MD5Update as needed -* on buffers full of bytes, and then call OpenDaap_MD5Final, which will fill -* a supplied 16-byte array with the digest. -*/ -static void -MD5Transform (guint32 buf[4], - guint32 const in[16], - gint version); -/* for some reason we still have to reverse bytes on bigendian machines - * I don't really know why... but otherwise it fails.. - * Any MD5 gurus out there know why??? - */ -#if 0 //ndef WORDS_BIGENDIAN /* was: HIGHFIRST */ -#define byteReverse (buf, len) /* Nothing */ -#else -static void -byteReverse (unsigned char *buf, - unsigned longs); - -#ifndef ASM_MD5 -/* -* Note: this code is harmless on little-endian machines. -*/ -static void -byteReverse (unsigned char *buf, - unsigned longs) -{ - guint32 t; - do { - t = (guint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 | - ((unsigned) buf[1] << 8 | buf[0]); - *(guint32 *) buf = t; - buf += 4; - } while (--longs); -} -#endif /* ! ASM_MD5 */ -#endif /* #if 0 */ - -static void -OpenDaap_MD5Init (MD5_CTX *ctx, - gint version) -{ - memset (ctx, 0, sizeof (MD5_CTX)); - ctx->buf[0] = 0x67452301; - ctx->buf[1] = 0xefcdab89; - ctx->buf[2] = 0x98badcfe; - ctx->buf[3] = 0x10325476; - - ctx->bits[0] = 0; - ctx->bits[1] = 0; - - ctx->version = version; -} - -static void -OpenDaap_MD5Update (MD5_CTX *ctx, - unsigned char const *buf, - unsigned int len) -{ - guint32 t; - - /* Update bitcount */ - - t = ctx->bits[0]; - if ((ctx->bits[0] = t + ((guint32) len << 3)) < t) - ctx->bits[1]++; /* Carry from low to high */ - ctx->bits[1] += len >> 29; - - t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */ - - /* Handle any leading odd-sized chunks */ - - if (t) { - unsigned char *p = (unsigned char *) ctx->in + t; - - t = 64 - t; - if (len < t) { - memcpy (p, buf, len); - return; - } - memcpy (p, buf, t); - byteReverse (ctx->in, 16); - MD5Transform (ctx->buf, (guint32 *) ctx->in, ctx->version); - buf += t; - len -= t; - } - /* Process data in 64-byte chunks */ - - while (len >= 64) { - memcpy (ctx->in, buf, 64); - byteReverse (ctx->in, 16); - MD5Transform (ctx->buf, (guint32 *) ctx->in, ctx->version); - buf += 64; - len -= 64; - } - - /* Handle any remaining bytes of data. */ - - memcpy (ctx->in, buf, len); - -} - -static void -OpenDaap_MD5Final (MD5_CTX *ctx, - unsigned char digest[16]) -{ - unsigned count; - unsigned char *p; - - /* Compute number of bytes mod 64 */ - count = (ctx->bits[0] >> 3) & 0x3F; - - /* Set the first char of padding to 0x80. This is safe since there is - always at least one byte free */ - p = ctx->in + count; - *p++ = 0x80; - - /* Bytes of padding needed to make 64 bytes */ - count = 64 - 1 - count; - - /* Pad out to 56 mod 64 */ - if (count < 8) { - /* Two lots of padding: Pad the first block to 64 bytes */ - memset (p, 0, count); - byteReverse (ctx->in, 16); - MD5Transform (ctx->buf, (guint32 *) ctx->in, ctx->version); - - /* Now fill the next block with 56 bytes */ - memset (ctx->in, 0, 56); - } else { - /* Pad block to 56 bytes */ - memset (p, 0, count - 8); - } - byteReverse (ctx->in, 14); - - /* Append length in bits and transform */ - ((guint32 *) ctx->in)[14] = ctx->bits[0]; - ((guint32 *) ctx->in)[15] = ctx->bits[1]; - - MD5Transform (ctx->buf, (guint32 *) ctx->in, ctx->version); - byteReverse ((unsigned char *) ctx->buf, 4); - memcpy (digest, ctx->buf, 16); - memset (ctx, 0, sizeof (ctx)); /* In case it's sensitive */ - - return; -} - -#ifndef ASM_MD5 - -/* The four core functions - F1 is optimized somewhat */ - -/* #define F1(x, y, z) (x & y | ~x & z) */ -#define F1(x, y, z) (z ^ (x & (y ^ z))) -#define F2(x, y, z) F1 (z, x, y) -#define F3(x, y, z) (x ^ y ^ z) -#define F4(x, y, z) (y ^ (x | ~z)) - -/* This is the central step in the MD5 algorithm. */ -#define MD5STEP(f, w, x, y, z, data, s) \ -( w += f (x, y, z) + data, w = w<>(32-s), w += x ) - -/* -* The core of the MD5 algorithm, this alters an existing MD5 hash to reflect -* the addition of 16 longwords of new data. OpenDaap_MD5Update blocks the -* data and converts bytes into longwords for this routine. -*/ -static void -MD5Transform (guint32 buf[4], - guint32 const in[16], - gint version) -{ - guint32 a, b, c, d; - - a = buf[0]; - b = buf[1]; - c = buf[2]; - d = buf[3]; - - MD5STEP (F1, a, b, c, d, in[0] + 0xd76aa478, 7); - MD5STEP (F1, d, a, b, c, in[1] + 0xe8c7b756, 12); - MD5STEP (F1, c, d, a, b, in[2] + 0x242070db, 17); - MD5STEP (F1, b, c, d, a, in[3] + 0xc1bdceee, 22); - MD5STEP (F1, a, b, c, d, in[4] + 0xf57c0faf, 7); - MD5STEP (F1, d, a, b, c, in[5] + 0x4787c62a, 12); - MD5STEP (F1, c, d, a, b, in[6] + 0xa8304613, 17); - MD5STEP (F1, b, c, d, a, in[7] + 0xfd469501, 22); - MD5STEP (F1, a, b, c, d, in[8] + 0x698098d8, 7); - MD5STEP (F1, d, a, b, c, in[9] + 0x8b44f7af, 12); - MD5STEP (F1, c, d, a, b, in[10] + 0xffff5bb1, 17); - MD5STEP (F1, b, c, d, a, in[11] + 0x895cd7be, 22); - MD5STEP (F1, a, b, c, d, in[12] + 0x6b901122, 7); - MD5STEP (F1, d, a, b, c, in[13] + 0xfd987193, 12); - MD5STEP (F1, c, d, a, b, in[14] + 0xa679438e, 17); - MD5STEP (F1, b, c, d, a, in[15] + 0x49b40821, 22); - - MD5STEP (F2, a, b, c, d, in[1] + 0xf61e2562, 5); - MD5STEP (F2, d, a, b, c, in[6] + 0xc040b340, 9); - MD5STEP (F2, c, d, a, b, in[11] + 0x265e5a51, 14); - MD5STEP (F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); - MD5STEP (F2, a, b, c, d, in[5] + 0xd62f105d, 5); - MD5STEP (F2, d, a, b, c, in[10] + 0x02441453, 9); - MD5STEP (F2, c, d, a, b, in[15] + 0xd8a1e681, 14); - MD5STEP (F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); - MD5STEP (F2, a, b, c, d, in[9] + 0x21e1cde6, 5); - MD5STEP (F2, d, a, b, c, in[14] + 0xc33707d6, 9); - MD5STEP (F2, c, d, a, b, in[3] + 0xf4d50d87, 14); - - if (version == 1) { - MD5STEP (F2, b, c, d, a, in[8] + 0x445a14ed, 20); - } else { - MD5STEP (F2, b, c, d, a, in[8] + 0x455a14ed, 20); - } - MD5STEP (F2, a, b, c, d, in[13] + 0xa9e3e905, 5); - MD5STEP (F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); - MD5STEP (F2, c, d, a, b, in[7] + 0x676f02d9, 14); - MD5STEP (F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); - - MD5STEP (F3, a, b, c, d, in[5] + 0xfffa3942, 4); - MD5STEP (F3, d, a, b, c, in[8] + 0x8771f681, 11); - MD5STEP (F3, c, d, a, b, in[11] + 0x6d9d6122, 16); - MD5STEP (F3, b, c, d, a, in[14] + 0xfde5380c, 23); - MD5STEP (F3, a, b, c, d, in[1] + 0xa4beea44, 4); - MD5STEP (F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); - MD5STEP (F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); - MD5STEP (F3, b, c, d, a, in[10] + 0xbebfbc70, 23); - MD5STEP (F3, a, b, c, d, in[13] + 0x289b7ec6, 4); - MD5STEP (F3, d, a, b, c, in[0] + 0xeaa127fa, 11); - MD5STEP (F3, c, d, a, b, in[3] + 0xd4ef3085, 16); - MD5STEP (F3, b, c, d, a, in[6] + 0x04881d05, 23); - MD5STEP (F3, a, b, c, d, in[9] + 0xd9d4d039, 4); - MD5STEP (F3, d, a, b, c, in[12] + 0xe6db99e5, 11); - MD5STEP (F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); - MD5STEP (F3, b, c, d, a, in[2] + 0xc4ac5665, 23); - - MD5STEP (F4, a, b, c, d, in[0] + 0xf4292244, 6); - MD5STEP (F4, d, a, b, c, in[7] + 0x432aff97, 10); - MD5STEP (F4, c, d, a, b, in[14] + 0xab9423a7, 15); - MD5STEP (F4, b, c, d, a, in[5] + 0xfc93a039, 21); - MD5STEP (F4, a, b, c, d, in[12] + 0x655b59c3, 6); - MD5STEP (F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); - MD5STEP (F4, c, d, a, b, in[10] + 0xffeff47d, 15); - MD5STEP (F4, b, c, d, a, in[1] + 0x85845dd1, 21); - MD5STEP (F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); - MD5STEP (F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); - MD5STEP (F4, c, d, a, b, in[6] + 0xa3014314, 15); - MD5STEP (F4, b, c, d, a, in[13] + 0x4e0811a1, 21); - MD5STEP (F4, a, b, c, d, in[4] + 0xf7537e82, 6); - MD5STEP (F4, d, a, b, c, in[11] + 0xbd3af235, 10); - MD5STEP (F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); - MD5STEP (F4, b, c, d, a, in[9] + 0xeb86d391, 21); - - buf[0] += a; - buf[1] += b; - buf[2] += c; - buf[3] += d; -} - -#endif - - - - - -static int staticHashDone = 0; -static unsigned char staticHash_42[256*65] = {0}; -static unsigned char staticHash_45[256*65] = {0}; - -static const char hexchars[] = "0123456789ABCDEF"; -static char ac[] = "Dpqzsjhiu!3114!Bqqmf!Dpnqvufs-!Jod/"; /* +1 */ -static gboolean ac_unfudged = FALSE; - -static void -DigestToString (const unsigned char *digest, - char *string) -{ - int i; - for (i = 0; i < 16; i++) { - unsigned char tmp = digest[i]; - string[i*2+1] = hexchars[tmp & 0x0f]; - string[i*2] = hexchars[(tmp >> 4) & 0x0f]; - } -} - -static void -GenerateStatic_42 () { - MD5_CTX ctx; - unsigned char *p = staticHash_42; - int i; - unsigned char buf[16]; - - for (i = 0; i < 256; i++) { - OpenDaap_MD5Init (&ctx, 0); - -#define MD5_STRUPDATE(str) OpenDaap_MD5Update(&ctx, (unsigned char const *)str, strlen (str)) - - if ((i & 0x80) != 0) - MD5_STRUPDATE ("Accept-Language"); - else - MD5_STRUPDATE ("user-agent"); - - if ((i & 0x40) != 0) - MD5_STRUPDATE ("max-age"); - else - MD5_STRUPDATE ("Authorization"); - - if ((i & 0x20) != 0) - MD5_STRUPDATE ("Client-DAAP-Version"); - else - MD5_STRUPDATE ("Accept-Encoding"); - - if ((i & 0x10) != 0) - MD5_STRUPDATE ("daap.protocolversion"); - else - MD5_STRUPDATE ("daap.songartist"); - - if ((i & 0x08) != 0) - MD5_STRUPDATE ("daap.songcomposer"); - else - MD5_STRUPDATE ("daap.songdatemodified"); - - if ((i & 0x04) != 0) - MD5_STRUPDATE ("daap.songdiscnumber"); - else - MD5_STRUPDATE ("daap.songdisabled"); - - if ((i & 0x02) != 0) - MD5_STRUPDATE ("playlist-item-spec"); - else - MD5_STRUPDATE ("revision-number"); - - if ((i & 0x01) != 0) - MD5_STRUPDATE ("session-id"); - else - MD5_STRUPDATE ("content-codes"); -#undef MD5_STRUPDATE - - OpenDaap_MD5Final (&ctx, buf); - DigestToString (buf, (char *)p); - p += 65; - } -} - -static void GenerateStatic_45 () -{ - MD5_CTX ctx; - unsigned char *p = staticHash_45; - int i; - unsigned char buf[16]; - - for (i = 0; i < 256; i++) { - OpenDaap_MD5Init (&ctx, 1); - -#define MD5_STRUPDATE(str) OpenDaap_MD5Update(&ctx, (unsigned char const *)str, strlen (str)) - - if ((i & 0x40) != 0) - MD5_STRUPDATE ("eqwsdxcqwesdc"); - else - MD5_STRUPDATE ("op[;lm,piojkmn"); - - if ((i & 0x20) != 0) - MD5_STRUPDATE ("876trfvb 34rtgbvc"); - else - MD5_STRUPDATE ("=-0ol.,m3ewrdfv"); - - if ((i & 0x10) != 0) - MD5_STRUPDATE ("87654323e4rgbv "); - else - MD5_STRUPDATE ("1535753690868867974342659792"); - - if ((i & 0x08) != 0) - MD5_STRUPDATE ("Song Name"); - else - MD5_STRUPDATE ("DAAP-CLIENT-ID:"); - - if ((i & 0x04) != 0) - MD5_STRUPDATE ("111222333444555"); - else - MD5_STRUPDATE ("4089961010"); - - if ((i & 0x02) != 0) - MD5_STRUPDATE ("playlist-item-spec"); - else - MD5_STRUPDATE ("revision-number"); - - if ((i & 0x01) != 0) - MD5_STRUPDATE ("session-id"); - else - MD5_STRUPDATE ("content-codes"); - - if ((i & 0x80) != 0) - MD5_STRUPDATE ("IUYHGFDCXWEDFGHN"); - else - MD5_STRUPDATE ("iuytgfdxwerfghjm"); - -#undef MD5_STRUPDATE - - OpenDaap_MD5Final (&ctx, buf); - DigestToString (buf, (char *)p); - p += 65; - } -} - -void -daap_hash_generate (short version_major, - const guchar *url, - guchar hash_select, - guchar *out, - gint request_id) -{ - unsigned char buf[16]; - MD5_CTX ctx; - int i; - - unsigned char *hashTable = (version_major == 3) ? - staticHash_45 : staticHash_42; - - if (!staticHashDone) { - GenerateStatic_42 (); - GenerateStatic_45 (); - staticHashDone = 1; - } - - OpenDaap_MD5Init (&ctx, (version_major == 3) ? 1 : 0); - - OpenDaap_MD5Update (&ctx, url, strlen ((const gchar*)url)); - if (ac_unfudged == FALSE) { - for (i = 0; i < strlen (ac); i++) { - ac[i] = ac[i]-1; - } - ac_unfudged = TRUE; - } - OpenDaap_MD5Update (&ctx, (const guchar*)ac, strlen (ac)); - - OpenDaap_MD5Update (&ctx, &hashTable[hash_select * 65], 32); - - if (request_id && version_major == 3) { - char scribble[20]; - sprintf (scribble, "%u", request_id); - OpenDaap_MD5Update (&ctx, (const guchar*)scribble, strlen (scribble)); - } - - OpenDaap_MD5Final (&ctx, buf); - DigestToString (buf, (char *)out); - - return; -} diff -Nru audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_md5.h audacious-plugins-3.2/src/daap/xmms2-daap/daap_md5.h --- audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_md5.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/xmms2-daap/daap_md5.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -/** @file daap_md5.h - * - * Header for DAAP (iTunes Music Sharing) hashing, connection - * Slightly modified for use in XMMS2 - * - * Copyright (C) 2004,2005 Charles Schmidt - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef DAAP_MD5_H -#define DAAP_MD5_H - -#include - -void -daap_hash_generate (short version_major, - const guchar *url, - guchar hash_select, - guchar *out, - gint request_id); - -#endif - diff -Nru audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_mdns_avahi.c audacious-plugins-3.2/src/daap/xmms2-daap/daap_mdns_avahi.c --- audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_mdns_avahi.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/xmms2-daap/daap_mdns_avahi.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,268 +0,0 @@ -/** @file daap_mdns_browse.c - * Browser for DAAP servers shared via mDNS. - * - * Copyright (C) 2006-2007 XMMS2 Team - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - */ -#ifdef DAAP_MDNS_AVAHI -#include "daap_mdns_browse.h" - -#include -#include - -#include -#include - -#include -#include -#include - -#include -#include - -#define ADDR_LEN (3 * 4 + 3 + 1) /* standard dotted-quad fmt */ - -typedef struct { - AvahiClient *client; - GMainLoop *mainloop; -} browse_callback_userdata_t; - -static GSList *g_server_list = NULL; -static GStaticMutex serv_list_mut = G_STATIC_MUTEX_INIT; -static AvahiGLibPoll *gl_poll = NULL; -static AvahiClient *client = NULL; -static AvahiServiceBrowser *browser = NULL; - -static GSList * -daap_mdns_serv_remove (GSList *serv_list, gchar *addr, guint port) -{ - GSList *first = serv_list; - daap_mdns_server_t *serv; - - for ( ; serv_list != NULL; serv_list = g_slist_next (serv_list)) { - serv = (daap_mdns_server_t *) serv_list->data; - if ( (port == serv->port) && (!strcmp (addr, serv->address)) ) { - serv_list = g_slist_remove (first, serv); - - g_free (serv->server_name); - g_free (serv->mdns_hostname); - g_free (serv->address); - g_free (serv); - - return serv_list; - } - } - return NULL; -} - -static void -daap_mdns_resolve_cb (AvahiServiceResolver *resolv, - AvahiIfIndex iface, - AvahiProtocol proto, - AvahiResolverEvent event, - const gchar *name, - const gchar *type, - const gchar *domain, - const gchar *hostname, - const AvahiAddress *addr, - guint16 port, - AvahiStringList *text, - AvahiLookupResultFlags flags, - void *userdata) -{ - gboolean *remove = userdata; - gchar ad[ADDR_LEN]; - daap_mdns_server_t *server; - - if (!resolv) { - return; - } - - switch (event) { - case AVAHI_RESOLVER_FOUND: - server = (daap_mdns_server_t *) - g_malloc0 (sizeof (daap_mdns_server_t)); - avahi_address_snprint (ad, sizeof (ad), addr); - - server->server_name = g_strdup (name); - server->address = g_strdup (ad); - server->mdns_hostname = g_strdup (hostname); - server->port = port; - - if (*remove) { - g_static_mutex_lock (&serv_list_mut); - g_server_list = daap_mdns_serv_remove (g_server_list, ad, port); - g_static_mutex_unlock (&serv_list_mut); - } else { - g_static_mutex_lock (&serv_list_mut); - g_server_list = g_slist_prepend (g_server_list, server); - g_static_mutex_unlock (&serv_list_mut); - } - g_free (remove); - - break; - - case AVAHI_RESOLVER_FAILURE: - break; - - default: - break; - } - - avahi_service_resolver_free (resolv); -} - -static void -daap_mdns_browse_cb (AvahiServiceBrowser *browser, - AvahiIfIndex iface, - AvahiProtocol proto, - AvahiBrowserEvent event, - const gchar *name, - const gchar *type, - const gchar *domain, - AvahiLookupResultFlags flags, - void *userdata) -{ - gboolean ok = FALSE; - gboolean *b = g_malloc (sizeof (gboolean)); - - AvahiClient *client = ((browse_callback_userdata_t *) userdata)->client; - - if (!browser) { - return; - } - - switch (event) { - case AVAHI_BROWSER_NEW: - *b = FALSE; - ok = (gboolean) - avahi_service_resolver_new (client, iface, proto, name, type, - domain, AVAHI_PROTO_UNSPEC, 0, - daap_mdns_resolve_cb, b); - break; - - case AVAHI_BROWSER_REMOVE: - *b = TRUE; - ok = (gboolean) - avahi_service_resolver_new (client, iface, proto, name, type, - domain, AVAHI_PROTO_UNSPEC, 0, - daap_mdns_resolve_cb, b); - break; - - case AVAHI_BROWSER_CACHE_EXHAUSTED: - break; - - case AVAHI_BROWSER_ALL_FOR_NOW: - break; - - default: - break; - } -} - -static void -daap_mdns_client_cb (AvahiClient *client, - AvahiClientState state, - void * userdata) -{ - if (!client) { - return; - } - - switch (state) { - case AVAHI_CLIENT_FAILURE: - break; - default: - break; - } -} - -static void -daap_mdns_timeout (AvahiTimeout *to, void *userdata) -{ -} - -static gboolean -daap_mdns_timeout_glib (void *userdata) -{ - return FALSE; -} - -gboolean -daap_mdns_initialize () -{ - const AvahiPoll *av_poll; - - GMainLoop *ml = NULL; - - gboolean ok = TRUE; - gint errval; - struct timeval tv; - browse_callback_userdata_t *browse_userdata; - - if (gl_poll) { - ok = FALSE; - goto fail; - } - - browse_userdata = g_malloc0 (sizeof (browse_callback_userdata_t)); - - avahi_set_allocator (avahi_glib_allocator ()); - - ml = g_main_loop_new (NULL, FALSE); - - gl_poll = avahi_glib_poll_new (NULL, G_PRIORITY_DEFAULT); - av_poll = avahi_glib_poll_get (gl_poll); - - avahi_elapse_time (&tv, 2000, 0); - av_poll->timeout_new (av_poll, &tv, daap_mdns_timeout, NULL); - g_timeout_add (5000, daap_mdns_timeout_glib, ml); - - client = avahi_client_new (av_poll, 0, daap_mdns_client_cb, ml, &errval); - if (!client) { - ok = FALSE; - goto fail; - } - - browse_userdata->client = client; - browse_userdata->mainloop = ml; - - browser = avahi_service_browser_new (client, AVAHI_IF_UNSPEC, - AVAHI_PROTO_UNSPEC, "_daap._tcp", NULL, - 0, daap_mdns_browse_cb, - browse_userdata); - if (!browser) { - ok = FALSE; - goto fail; - } - -fail: - return ok; -} - -GSList * -daap_mdns_get_server_list () -{ - GSList * l; - g_static_mutex_lock (&serv_list_mut); - l = g_slist_copy (g_server_list); - g_static_mutex_unlock (&serv_list_mut); - return l; -} - -void -daap_mdns_destroy () -{ - /* FIXME: deinit avahi */ -} -#endif - diff -Nru audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_mdns_browse.h audacious-plugins-3.2/src/daap/xmms2-daap/daap_mdns_browse.h --- audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_mdns_browse.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/xmms2-daap/daap_mdns_browse.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -/** @file daap_mdns_browse.h - * - * Copyright (C) 2006-2007 XMMS2 Team - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - */ - -#ifndef DAAP_MDNS_BROWSE_H -#define DAAP_MDNS_BROWSE_H - -#include - -typedef struct { - gchar *server_name; - gchar *address; - gchar *mdns_hostname; - guint16 port; -} daap_mdns_server_t; - -gboolean -daap_mdns_initialize (); - -GSList * -daap_mdns_get_server_list (); - -void -daap_mdns_destroy (); - -#endif diff -Nru audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_mdns_dnssd.c audacious-plugins-3.2/src/daap/xmms2-daap/daap_mdns_dnssd.c --- audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_mdns_dnssd.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/xmms2-daap/daap_mdns_dnssd.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,419 +0,0 @@ -/** XMMS2 transform for accessing DAAP music shares. - * - * Copyright (C) 2006-2007 XMMS2 Team - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - */ -#ifdef DAAP_MDNS_DNSSD - -#include -#include -#include - -#include "daap_mdns_browse.h" - -typedef struct GMDNS_t GMDNS; -typedef struct GMDNSServer_t GMDNSServer; -typedef struct GMDNSUserData_t GMDNSUserData; - -typedef void (*GMDNSFunc)(GMDNS *, gint, GMDNSServer *, gpointer); - -struct GMDNS_t { - GMutex *mutex; - GSList *service_list; - - GMDNSFunc callback; - gpointer user_data; - GMDNSUserData *browse_ud; -}; - -struct GMDNSUserData_t { - GMDNS *mdns; - GMDNSServer *server; - GPollFD *fd; - GSource *source; - - DNSServiceRef client; -}; - -struct GMDNSServer_t { - gchar *mdnsname; - gchar *hostname; - gchar *address; - GHashTable *txtvalues; - guint16 port; -}; - -enum { - G_MDNS_SERVER_ADD, - G_MDNS_SERVER_REMOVE -}; - -static void g_mdns_user_data_destroy (GMDNSUserData *ud); -static void g_mdns_server_destroy (GMDNSServer *server); -static gboolean g_mdns_poll_add (GMDNS *mdns, GMDNSUserData *ud, DNSServiceRef client); - -static GMDNS *g_mdns; - -static void -qr_reply (DNSServiceRef sdRef, - DNSServiceFlags flags, - uint32_t ifIndex, - DNSServiceErrorType errorCode, - const char *fullname, - uint16_t rrtype, - uint16_t rrclass, - uint16_t rdlen, - const void *rdata, - uint32_t ttl, - void *context) -{ - GMDNSUserData *ud = context; - gchar addr[1000]; - const guchar *rd = (guchar *)rdata; - - g_return_if_fail (ud); - g_return_if_fail (rrtype == kDNSServiceType_A); - - g_snprintf (addr, 1000, "%d.%d.%d.%d", rd[0], rd[1], rd[2], rd[3]); - - ud->server->address = g_strdup (addr); - - g_print ("adding server %s %s", ud->server->mdnsname, ud->server->address); - g_mutex_lock (ud->mdns->mutex); - ud->mdns->service_list = g_slist_prepend (ud->mdns->service_list, ud->server); - g_mutex_unlock (ud->mdns->mutex); - - if (ud->mdns->callback) { - ud->mdns->callback (ud->mdns, G_MDNS_SERVER_ADD, ud->server, ud->mdns->user_data); - } - g_mdns_user_data_destroy (ud); -} - - -static void -resolve_reply (DNSServiceRef client, - DNSServiceFlags flags, - uint32_t ifIndex, - DNSServiceErrorType errorCode, - const char *fullname, - const char *hosttarget, - uint16_t opaqueport, - uint16_t txtLen, - const char *txtRecord, - void *context) -{ - GMDNSUserData *ud = context; - GMDNSUserData *ud2; - DNSServiceErrorType err; - gint i; - union { guint16 s; guchar b[2]; } portu = { opaqueport }; - - g_return_if_fail (ud); - - ud->server->port = ((guint16) portu.b[0]) << 8 | portu.b[1]; - ud->server->hostname = g_strdup (hosttarget); - ud->server->txtvalues = g_hash_table_new_full (g_str_hash, g_str_equal, - g_free, g_free); - - for (i = 0; i < TXTRecordGetCount (txtLen, txtRecord); i++) { - gchar key[256]; - const void *txt_value; - gchar *value; - guint8 vallen; - - err = TXTRecordGetItemAtIndex (txtLen, txtRecord, i, 256, key, &vallen, &txt_value); - if (err != kDNSServiceErr_NoError) { - g_warning ("error parsing TXT records!"); - } - - value = g_malloc (vallen + 1); - g_strlcpy (value, txt_value, vallen + 1); - g_hash_table_insert (ud->server->txtvalues, g_strdup (key), value); - } - - ud2 = g_new0 (GMDNSUserData, 1); - - err = DNSServiceQueryRecord (&ud2->client, 0, - kDNSServiceInterfaceIndexAny, - ud->server->hostname, - kDNSServiceType_A, - kDNSServiceClass_IN, - qr_reply, ud2); - - if (err != kDNSServiceErr_NoError) { - g_warning ("Error from QueryRecord!"); - } - - g_mdns_poll_add (ud->mdns, ud2, ud2->client); - ud2->server = ud->server; - - g_mdns_user_data_destroy (ud); -} - - -static void -browse_reply (DNSServiceRef client, - DNSServiceFlags flags, - uint32_t ifIndex, - DNSServiceErrorType errorCode, - const char *replyName, - const char *replyType, - const char *replyDomain, - void *context) -{ - DNSServiceErrorType err; - GMDNSServer *server; - GMDNSUserData *ud = context; - GMDNSUserData *ud2; - gboolean remove = (flags & kDNSServiceFlagsAdd) ? FALSE : TRUE; - - if (!remove) { - server = g_new0 (GMDNSServer, 1); - server->mdnsname = g_strdup (replyName); - ud2 = g_new0 (GMDNSUserData, 1); - err = DNSServiceResolve (&ud2->client, 0, kDNSServiceInterfaceIndexAny, - server->mdnsname, - "_daap._tcp", "local", - (DNSServiceResolveReply)resolve_reply, ud2); - - if (err != kDNSServiceErr_NoError) { - g_warning ("Couldn't do ServiceResolv"); - g_free (server->mdnsname); - g_free (server); - return; - } - - ud2->server = server; - - g_mdns_poll_add (ud->mdns, ud2, ud2->client); - } else { - GSList *n, *nxt; - g_mutex_lock (ud->mdns->mutex); - for (n = ud->mdns->service_list; n; n = nxt) { - nxt = g_slist_next (n); - GMDNSServer *server = n->data; - if (strcmp (server->mdnsname, replyName) == 0) { - n = ud->mdns->service_list = g_slist_remove (ud->mdns->service_list, server); - g_mutex_unlock (ud->mdns->mutex); - if (ud->mdns->callback) - ud->mdns->callback (ud->mdns, G_MDNS_SERVER_REMOVE, server, ud->mdns->user_data); - g_mdns_server_destroy (server); - g_mutex_lock (ud->mdns->mutex); - } - } - g_mutex_unlock (ud->mdns->mutex); - } - -} - -static void -g_mdns_server_destroy (GMDNSServer *server) -{ - g_return_if_fail (server); - if (server->hostname) - g_free (server->hostname); - if (server->mdnsname) - g_free (server->mdnsname); - if (server->address) - g_free (server->address); - if (server->txtvalues) - g_hash_table_destroy (server->txtvalues); - - g_free (server); -} - -static gboolean -g_mdns_source_prepare (GSource *source, gint *timeout_) -{ - /* No timeout here */ - return FALSE; -} - -static gboolean -g_mdns_source_check (GSource *source) -{ - /* Maybe check for errors here? */ - return TRUE; -} - -static gboolean -g_mdns_source_dispatch (GSource *source, - GSourceFunc callback, - gpointer user_data) -{ - GMDNSUserData *ud = user_data; - DNSServiceErrorType err; - - if ((ud->fd->revents & G_IO_ERR) || (ud->fd->revents & G_IO_HUP)) { - return FALSE; - } else if (ud->fd->revents & G_IO_IN) { - err = DNSServiceProcessResult (ud->client); - if (err != kDNSServiceErr_NoError) { - g_warning ("DNSServiceProcessResult returned error"); - return FALSE; - } - } - - return TRUE; -} - -static GSourceFuncs g_mdns_poll_funcs = { - g_mdns_source_prepare, - g_mdns_source_check, - g_mdns_source_dispatch, - NULL -}; - -static void -g_mdns_user_data_destroy (GMDNSUserData *ud) -{ - g_return_if_fail (ud); - - g_source_remove_poll (ud->source, ud->fd); - g_free (ud->fd); - g_source_destroy (ud->source); - DNSServiceRefDeallocate (ud->client); - g_free (ud); -} - -static gboolean -g_mdns_poll_add (GMDNS *mdns, GMDNSUserData *ud, DNSServiceRef client) -{ - ud->fd = g_new0 (GPollFD, 1); - ud->fd->fd = DNSServiceRefSockFD (client); - ud->client = client; - ud->mdns = mdns; - - if (ud->fd->fd == -1) { - g_free (ud->fd); - g_free (ud); - return FALSE; - } - - ud->fd->events = G_IO_IN | G_IO_HUP | G_IO_ERR; - - ud->source = g_source_new (&g_mdns_poll_funcs, sizeof (GSource)); - g_source_set_callback (ud->source, - (GSourceFunc) g_mdns_source_dispatch, - ud, NULL); - g_source_add_poll (ud->source, ud->fd); - g_source_attach (ud->source, NULL); - - return TRUE; -} - -/** - * Browse for a service. The callback will be called - * when it's fully resloved and queried - */ -static gboolean -g_mdns_browse (GMDNS *mdns, - gchar *service, - GMDNSFunc callback, - gpointer user_data) -{ - DNSServiceErrorType err; - DNSServiceRef client; - GMDNSUserData *ud; - - g_return_val_if_fail (!mdns->browse_ud, FALSE); - - ud = g_new0 (GMDNSUserData, 1); - - err = DNSServiceBrowse (&client, 0, kDNSServiceInterfaceIndexAny, - service, 0, browse_reply, ud); - - if (err != kDNSServiceErr_NoError) { - g_warning ("Couldn't setup mDNS poller, error = %d",err); - return FALSE; - } - - g_mdns_poll_add (mdns, ud, client); - - mdns->callback = callback; - mdns->user_data = user_data; - mdns->browse_ud = ud; - - return TRUE; -} - -/** - * Remove updates for browsing. Make sure to - * call this before you initialize a new browsing - */ -static gboolean -g_mdns_stop_browsing (GMDNS *mdns) -{ - g_return_val_if_fail (mdns, FALSE); - - g_mdns_user_data_destroy (mdns->browse_ud); - mdns->callback = NULL; - mdns->user_data = NULL; - - return TRUE; -} - -/** - * Return the full list of services - * the list is threadsafe but not the entries - * so it might be removed while you using it. - */ -GSList * -daap_mdns_get_server_list () -{ - GSList *ret=NULL, *n; - daap_mdns_server_t *server; - - g_mutex_lock (g_mdns->mutex); - for (n = g_mdns->service_list; n; n = g_slist_next (n)) { - GMDNSServer *s = n->data; - server = g_new0 (daap_mdns_server_t, 1); - server->mdns_hostname = s->mdnsname; - server->server_name = s->hostname; - server->port = s->port; - server->address = s->address; - ret = g_slist_append (ret, server); - } - g_mutex_unlock (g_mdns->mutex); - - return ret; -} - -/** - * Free resources held by GMDNS - */ -void -daap_mdns_destroy () -{ - GSList *n; - g_return_if_fail (g_mdns); - - g_mdns_stop_browsing (g_mdns); - - g_mutex_lock (g_mdns->mutex); - for (n = g_mdns->service_list; n; n = g_slist_next (n)) { - g_mdns_server_destroy (n->data); - } - g_mutex_unlock (g_mdns->mutex); - g_mutex_free (g_mdns->mutex); - - g_free (g_mdns); -} - -gboolean -daap_mdns_initialize () -{ - g_mdns = g_new0 (GMDNS, 1); - g_mdns->mutex = g_mutex_new (); - return g_mdns_browse (g_mdns, "_daap._tcp", NULL, NULL); -} -#endif diff -Nru audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_mdns_dummy.c audacious-plugins-3.2/src/daap/xmms2-daap/daap_mdns_dummy.c --- audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_mdns_dummy.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/xmms2-daap/daap_mdns_dummy.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -/** XMMS2 transform for accessing DAAP music shares. - * - * Copyright (C) 2006-2007 XMMS2 Team - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - */ -#ifdef AVAHI_MDNS_DUMMY -#include - -#include "daap_mdns_browse.h" - -gboolean -daap_mdns_initialize () -{ - return FALSE; -} - -GSList * -daap_mdns_get_server_list () -{ - return NULL; -} - -void -daap_mdns_destroy () -{ -} -#endif diff -Nru audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_util.c audacious-plugins-3.2/src/daap/xmms2-daap/daap_util.c --- audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_util.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/xmms2-daap/daap_util.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,79 +0,0 @@ -/** @file daap_util.c - * Miscellaneous utility functions. - * - * Copyright (C) 2006-2007 XMMS2 Team - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - */ - -#include -#include - -#include "daap_util.h" - -void -write_buffer_to_channel (GIOChannel *chan, gchar *buf, gint bufsize) -{ - guint total_sent_bytes = 0; - gsize sent_bytes; - GIOStatus io_stat; - GError *err = NULL; - - do { - io_stat = g_io_channel_write_chars (chan, - buf + total_sent_bytes, - bufsize - total_sent_bytes, - &sent_bytes, - &err); - if (io_stat == G_IO_STATUS_ERROR) { - if (NULL != err) { - g_print ("Error writing to channel: %s\n", err->message); - } - break; - } - - bufsize -= sent_bytes; - total_sent_bytes += sent_bytes; - } while (bufsize > 0); - - g_io_channel_flush (chan, &err); - if (NULL != err) { - g_print ("warning: error flushing channel: %s\n", err->message); - } -} - -gint -read_buffer_from_channel (GIOChannel *chan, gchar *buf, gint bufsize) -{ - guint n_total_bytes_read = 0; - gsize read_bytes; - GIOStatus io_stat; - GError *err = NULL; - - do { - io_stat = g_io_channel_read_chars (chan, - buf + n_total_bytes_read, - bufsize - n_total_bytes_read, - &read_bytes, - &err); - if (io_stat == G_IO_STATUS_ERROR) { - g_print ("warning: error reading from channel: %s\n", err->message); - } - n_total_bytes_read += read_bytes; - - if (io_stat == G_IO_STATUS_EOF) { - break; - } - } while (bufsize > n_total_bytes_read); - - return n_total_bytes_read; -} - diff -Nru audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_util.h audacious-plugins-3.2/src/daap/xmms2-daap/daap_util.h --- audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_util.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/xmms2-daap/daap_util.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -/** @file daap_util.h - * - * Copyright (C) 2006-2007 XMMS2 Team - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - */ - -#ifndef DAAP_UTIL_H -#define DAAP_UTIL_H - -gint -read_buffer_from_channel (GIOChannel *chan, gchar *buf, gint bufsize); - -void -write_buffer_to_channel (GIOChannel *chan, gchar *buf, gint bufsize); - -#endif diff -Nru audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_xform.c audacious-plugins-3.2/src/daap/xmms2-daap/daap_xform.c --- audacious-plugins-2.4.4/src/daap/xmms2-daap/daap_xform.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/xmms2-daap/daap_xform.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,449 +0,0 @@ -/** @file daap_xform.c - * XMMS2 transform for accessing DAAP music shares. - * - * Copyright (C) 2006-2007 XMMS2 Team - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - */ - -/* XXX as of the current implementation, there is no method of logging out - * of the servers. - */ - -#include "xmms/xmms_xformplugin.h" -#include "xmms/xmms_log.h" - -#include "daap_cmd.h" -#include "daap_util.h" -#include "daap_mdns_browse.h" - -#include -#include -#include - -#define DEFAULT_DAAP_PORT 3689 - -/* - * Type definitions - */ - -typedef struct { - gchar *host; - guint port; - - GIOChannel *channel; - - xmms_error_t status; -} xmms_daap_data_t; - -typedef struct { - gboolean logged_in; - - guint session_id; - guint revision_id; - guint request_id; -} xmms_daap_login_data_t; - -static GHashTable *login_sessions = NULL; - -/* - * Function prototypes - */ - -static gboolean -xmms_daap_plugin_setup (xmms_xform_plugin_t *xform_plugin); -static gboolean -xmms_daap_init (xmms_xform_t *xform); -static void -xmms_daap_destroy (xmms_xform_t *xform); -static gint -xmms_daap_read (xmms_xform_t *xform, void *buffer, - gint len, xmms_error_t *error); -static gboolean -xmms_daap_browse (xmms_xform_t *xform, const gchar *url, xmms_error_t *error); - -/* - * Plugin header - */ -XMMS_XFORM_PLUGIN ("daap", - "DAAP access plugin", - "SoC", - "Accesses iTunes (DAAP) music shares", - xmms_daap_plugin_setup); - - -/** - * Extract hostname, port and command from an url. - * daap://hostname:port/command - */ -static gboolean -get_data_from_url (const gchar *url, gchar **host, guint *port, gchar **cmd, xmms_error_t *err) -{ - const gchar *port_ptr, *cmd_ptr, *end_ptr, *stripped; - - stripped = url + sizeof (gchar) * strlen ("daap://"); - - end_ptr = stripped + sizeof (gchar) * strlen (stripped); - - if (stripped == end_ptr) { - xmms_error_set (err, XMMS_ERROR_INVAL, "Empty URL"); - return FALSE; - } - - port_ptr = strstr (stripped, ":"); - if (port && port_ptr && (port_ptr + 1) != end_ptr) { - *port = strtol (port_ptr + 1, (gchar **) NULL, 10); - if (*port == 0) { - *port = DEFAULT_DAAP_PORT; - } - } else if (port) { - *port = DEFAULT_DAAP_PORT; - } - - cmd_ptr = strstr (stripped, "/"); - if (cmd && cmd_ptr && (cmd_ptr + 1) != end_ptr) { - *cmd = g_strdup (cmd_ptr); - } else if (cmd) { - /* cmd wanted but not found */ - xmms_error_set (err, XMMS_ERROR_INVAL, "No file requested"); - } else if (!cmd && cmd_ptr && (cmd_ptr + 1) != end_ptr) { - /* cmd not wanted but found */ - xmms_error_set (err, XMMS_ERROR_NOENT, "No such directory"); - return FALSE; - } - - if (port_ptr) { - *host = g_strndup (stripped, port_ptr - stripped); - } else if (cmd_ptr) { - *host = g_strndup (stripped, cmd_ptr - stripped); - } else { - *host = g_strdup (stripped); - } - - return TRUE; -} - - -static gboolean -xmms_daap_plugin_setup (xmms_xform_plugin_t *xform_plugin) -{ - xmms_xform_methods_t methods; - - XMMS_XFORM_METHODS_INIT (methods); - methods.init = xmms_daap_init; - methods.destroy = xmms_daap_destroy; - methods.read = xmms_daap_read; - methods.browse = xmms_daap_browse; - - xmms_xform_plugin_methods_set (xform_plugin, &methods); - - xmms_xform_plugin_indata_add (xform_plugin, - XMMS_STREAM_TYPE_MIMETYPE, - "application/x-url", - XMMS_STREAM_TYPE_URL, - "daap://*", - XMMS_STREAM_TYPE_END); - - daap_mdns_initialize (); - - if (!login_sessions) { - login_sessions = g_hash_table_new (g_str_hash, g_str_equal); - } - - return TRUE; -} - - -/** - * Add a song to the browsing list. - */ -static void -daap_add_song_to_list (xmms_xform_t *xform, cc_item_record_t *song) -{ - gchar *songurl; - - songurl = g_strdup_printf ("%u.%s", song->dbid, song->song_format); - xmms_xform_browse_add_entry (xform, songurl, 0); - g_free (songurl); - - if (song->iname) { - xmms_xform_browse_add_entry_property_str (xform, "title", - song->iname); - } - - if (song->song_data_artist) { - xmms_xform_browse_add_entry_property_str (xform, "artist", - song->song_data_artist); - } - - if (song->song_data_album) { - xmms_xform_browse_add_entry_property_str (xform, "album", - song->song_data_album); - } - - xmms_xform_browse_add_entry_property_int (xform, "tracknr", - song->song_track_no); -} - - -/** - * Scan a daap server for songs. - */ -static gboolean -daap_get_urls_from_server (xmms_xform_t *xform, gchar *host, guint port, - xmms_error_t *err) -{ - GSList *dbid_list = NULL; - GSList *song_list = NULL, *song_el; - cc_item_record_t *db_data; - xmms_daap_login_data_t *login_data; - gchar *hash; - - hash = g_strdup_printf ("%s:%u", host, port); - - login_data = g_hash_table_lookup (login_sessions, hash); - - if (!login_data) { - login_data = g_new0 (xmms_daap_login_data_t, 1); - - login_data->session_id = daap_command_login (host, port, 0, err); - if (xmms_error_iserror (err)) { - return FALSE; - } - - login_data->revision_id = daap_command_update (host, port, - login_data->session_id, - 0); - - login_data->request_id = 1; - login_data->logged_in = TRUE; - - g_hash_table_insert (login_sessions, hash, login_data); - } else { - login_data->revision_id = daap_command_update (host, port, - login_data->session_id, - 0); - } - - dbid_list = daap_command_db_list (host, port, login_data->session_id, - login_data->revision_id, 0); - if (!dbid_list) { - return FALSE; - } - - /* XXX i've never seen more than one db per server out in the wild, - * let's hope that never changes *wink* - * just use the first db in the list */ - db_data = (cc_item_record_t *) dbid_list->data; - song_list = daap_command_song_list (host, port, login_data->session_id, - login_data->revision_id, - 0, db_data->dbid); - - g_slist_foreach (dbid_list, (GFunc) cc_item_record_free, NULL); - g_slist_free (dbid_list); - - if (!song_list) { - return FALSE; - } - - for (song_el = song_list; song_el; song_el = g_slist_next (song_el)) { - daap_add_song_to_list (xform, song_el->data); - } - - g_slist_foreach (song_list, (GFunc) cc_item_record_free, NULL); - g_slist_free (song_list); - - return TRUE; -} - - -/* - * Member functions - */ - -static gboolean -xmms_daap_init (xmms_xform_t *xform) -{ - gint dbid; - GSList *dbid_list = NULL; - xmms_daap_data_t *data; - xmms_daap_login_data_t *login_data; - xmms_error_t err; - const gchar *url; - const gchar *metakey; - gchar *command, *hash; - guint filesize; - - g_return_val_if_fail (xform, FALSE); - - url = xmms_xform_indata_get_str (xform, XMMS_STREAM_TYPE_URL); - - g_return_val_if_fail (url, FALSE); - - data = g_new0 (xmms_daap_data_t, 1); - - xmms_error_reset (&err); - - if (!get_data_from_url (url, &(data->host), &(data->port), &command, &err)) { - return FALSE; - } - - hash = g_strdup_printf ("%s:%u", data->host, data->port); - - login_data = g_hash_table_lookup (login_sessions, hash); - if (!login_data) { - XMMS_DBG ("creating login data for %s", hash); - login_data = g_new0 (xmms_daap_login_data_t, 1); - - login_data->request_id = 1; - login_data->logged_in = TRUE; - - login_data->session_id = daap_command_login (data->host, data->port, - login_data->request_id, - &err); - if (xmms_error_iserror (&err)) { - return FALSE; - } - - g_hash_table_insert (login_sessions, hash, login_data); - } - - login_data->revision_id = daap_command_update (data->host, data->port, - login_data->session_id, - login_data->request_id); - dbid_list = daap_command_db_list (data->host, data->port, - login_data->session_id, - login_data->revision_id, - login_data->request_id); - if (!dbid_list) { - return FALSE; - } - - /* XXX: see XXX in the browse function above */ - dbid = ((cc_item_record_t *) dbid_list->data)->dbid; - /* want to request a stream, but don't read the data yet */ - data->channel = daap_command_init_stream (data->host, data->port, - login_data->session_id, - login_data->revision_id, - login_data->request_id, dbid, - command, &filesize); - if (! data->channel) { - return FALSE; - } - login_data->request_id++; - - metakey = XMMS_MEDIALIB_ENTRY_PROPERTY_SIZE; - xmms_xform_metadata_set_int (xform, metakey, filesize); - - xmms_xform_private_data_set (xform, data); - - xmms_xform_outdata_type_add (xform, - XMMS_STREAM_TYPE_MIMETYPE, - "application/octet-stream", - XMMS_STREAM_TYPE_END); - - g_slist_foreach (dbid_list, (GFunc) cc_item_record_free, NULL); - g_slist_free (dbid_list); - g_free (command); - - return TRUE; -} - -static void -xmms_daap_destroy (xmms_xform_t *xform) -{ - xmms_daap_data_t *data; - - data = xmms_xform_private_data_get (xform); - - g_io_channel_shutdown (data->channel, TRUE, NULL); - g_io_channel_unref (data->channel); - - g_free (data->host); - g_free (data); -} - -static gint -xmms_daap_read (xmms_xform_t *xform, void *buffer, gint len, xmms_error_t *error) -{ - xmms_daap_data_t *data; - gsize read_bytes = 0; - GIOStatus status; - - data = xmms_xform_private_data_get (xform); - - /* request is performed, header is stripped. now read the data. */ - while (read_bytes == 0) { - status = g_io_channel_read_chars (data->channel, buffer, len, - &read_bytes, NULL); - if (status == G_IO_STATUS_EOF || status == G_IO_STATUS_ERROR) { - break; - } - } - - return read_bytes; -} - - -static gboolean -xmms_daap_browse (xmms_xform_t *xform, const gchar *url, xmms_error_t *error) -{ - gboolean ret = FALSE; - - if (g_strcasecmp (url, "daap://") == 0) { - - GSList *sl = daap_mdns_get_server_list (); - - for (; sl; sl = g_slist_next (sl)) { - daap_mdns_server_t *mdns_serv; - gchar *str; - - mdns_serv = sl->data; - - str = g_strdup_printf ("%s:%d", mdns_serv->address, - mdns_serv->port); - xmms_xform_browse_add_entry (xform, str, XMMS_XFORM_BROWSE_FLAG_DIR); - g_free (str); - - xmms_xform_browse_add_entry_property_str (xform, "servername", - mdns_serv->server_name); - - xmms_xform_browse_add_entry_property_str (xform, "ip", - mdns_serv->address); - - xmms_xform_browse_add_entry_property_str (xform, "name", - mdns_serv->mdns_hostname); - - xmms_xform_browse_add_entry_property_int (xform, "port", - mdns_serv->port); - - /* TODO implement the machinery to allow for this */ - // val = xmms_object_cmd_value_int_new (mdns_serv->need_auth); - // xmms_xform_browse_add_entry_property (xform, "passworded", val); - // val = xmms_object_cmd_value_int_new (mdns_serv->version); - // xmms_xform_browse_add_entry_property (xform, "version", val); - } - - ret = TRUE; - - g_slist_free (sl); - } else { - gchar *host; - guint port; - - if (get_data_from_url (url, &host, &port, NULL, error)) { - ret = daap_get_urls_from_server (xform, host, port, error); - g_free (host); - } - } - - return ret; -} diff -Nru audacious-plugins-2.4.4/src/daap/xmms2-daap/Makefile audacious-plugins-3.2/src/daap/xmms2-daap/Makefile --- audacious-plugins-2.4.4/src/daap/xmms2-daap/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/xmms2-daap/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -STATIC_LIB_NOINST = xmms2-daap.a - -SRCS = cc_handlers.c \ - daap_conn.c \ - daap_cmd.c \ - daap_md5.c \ - daap_util.c \ - daap_mdns_dnssd.c \ - daap_mdns_avahi.c \ - daap_mdns_dummy.c -# daap_xform.c - -include ../../../buildsys.mk -include ../../../extra.mk - -#For the moment i'm hardcoding it but it will be configurable -#MDNS_IMPL=DAAP_MDNS_DNSSD -MDNS_IMPL=DAAP_MDNS_AVAHI -#MDNS_IMPL=DAAP_MDNS_DUMMY - -WARN = -Wall -std=c99 -DEFINES = -D${MDNS_IMPL} -D_POSIX_SOURCE - -CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GLIB_CFLAGS} ${PICFLAGS} ${WARN} ${DEFINES} -LIBS += ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/daap/xmms2-daap/wscript audacious-plugins-3.2/src/daap/xmms2-daap/wscript --- audacious-plugins-2.4.4/src/daap/xmms2-daap/wscript 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/daap/xmms2-daap/wscript 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -from waftools.plugin import plugin -from Params import g_platform - -def plugin_configure(conf): - # Set the default fallthrough, if no "intelligent" backend is found. - conf.env['XMMS_DAAP_BACKEND'] = 'dummy' - - # First look for Avahi mdns support - if (conf.check_pkg("avahi-glib", destvar='avahiglib') and - conf.check_pkg("avahi-client", destvar='avahiclient')): - # Avahi found - conf.env['XMMS_DAAP_BACKEND'] = 'avahi' - elif conf.check_header('dns_sd.h'): - # We might have dnssd support. If we're not on OSX, check for the - # presence of the lib. - if g_platform == 'darwin': - conf.env['XMMS_DAAP_BACKEND'] = 'dnssd' - elif conf.check_library2('dns_sd', uselib='dnssd', mandatory=0): - conf.env['XMMS_DAAP_BACKEND'] = 'dnssd' - return True - -def plugin_build(bld, obj): - daap_backend = bld.env_of_name('default')['XMMS_DAAP_BACKEND'] - obj.source.append("daap_mdns_%s.c" % daap_backend) - if daap_backend == 'avahi': - obj.uselib += ' avahiglib avahiclient' - elif daap_backend == 'dnssd': - obj.uselib += ' dnssd' - if g_platform == 'win32': - obj.uselib += ' socket' - -configure, build = plugin('daap', configure=plugin_configure, - extra_libs=['curl'], build=plugin_build, - source="""daap_xform.c daap_cmd.c daap_conn.c - daap_util.c daap_md5.c cc_handlers.c - """.split()) diff -Nru audacious-plugins-2.4.4/src/dockalbumart/audacious_player.xpm audacious-plugins-3.2/src/dockalbumart/audacious_player.xpm --- audacious-plugins-2.4.4/src/dockalbumart/audacious_player.xpm 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/dockalbumart/audacious_player.xpm 1970-01-01 00:00:00.000000000 +0000 @@ -1,176 +0,0 @@ -/* XPM */ -static char * audacious_player_xpm[] = { -"48 48 125 2", -" c None", -". c #000000", -"+ c #090909", -"@ c #313131", -"# c #505050", -"$ c #5A5A5A", -"% c #4F4F4F", -"& c #0D0D0D", -"* c #5C5C5C", -"= c #A8A8A8", -"- c #D6D6D6", -"; c #D9D9D9", -"> c #D5D5D5", -", c #A5A5A5", -"' c #595959", -") c #0B0B0B", -"! c #060606", -"~ c #6A6A6A", -"{ c #CCCCCC", -"] c #CBCBCB", -"^ c #696969", -"/ c #2B2B2B", -"( c #BABABA", -"_ c #B8B8B8", -": c #2A2A2A", -"< c #484848", -"[ c #D4D4D4", -"} c #D3D3D3", -"| c #474747", -"1 c #494949", -"2 c #D7D7D7", -"3 c #2D2D2D", -"4 c #2E2E2E", -"5 c #080808", -"6 c #BBBBBB", -"7 c #C5C5C5", -"8 c #A3A3A3", -"9 c #949494", -"0 c #6E6E6E", -"a c #4D4D4D", -"b c #858585", -"c c #C6C6C6", -"d c #BEBEBE", -"e c #6C6C6C", -"f c #777777", -"g c #030303", -"h c #515151", -"i c #6B6B6B", -"j c #CDCDCD", -"k c #A7A7A7", -"l c #141414", -"m c #0E0E0E", -"n c #5E5E5E", -"o c #9A9A9A", -"p c #393939", -"q c #626262", -"r c #ACACAC", -"s c #717171", -"t c #3E3E3E", -"u c #5F5F5F", -"v c #040404", -"w c #BCBCBC", -"x c #AFAFAF", -"y c #121212", -"z c #D8D8D8", -"A c #333333", -"B c #8C8C8C", -"C c #3D3D3D", -"D c #ABABAB", -"E c #7B7B7B", -"F c #373737", -"G c #111111", -"H c #606060", -"I c #3B3B3B", -"J c #919191", -"K c #424242", -"L c #585858", -"M c #656565", -"N c #7C7C7C", -"O c #676767", -"P c #020202", -"Q c #6D6D6D", -"R c #5D5D5D", -"S c #353535", -"T c #2C2C2C", -"U c #1F1F1F", -"V c #878787", -"W c #5B5B5B", -"X c #525252", -"Y c #272727", -"Z c #A2A2A2", -"` c #404040", -" . c #1A1A1A", -".. c #303030", -"+. c #343434", -"@. c #A9A9A9", -"#. c #B9B9B9", -"$. c #666666", -"%. c #808080", -"&. c #7E7E7E", -"*. c #181818", -"=. c #969696", -"-. c #212121", -";. c #1B1B1B", -">. c #C9C9C9", -",. c #7F7F7F", -"'. c #464646", -"). c #070707", -"!. c #3F3F3F", -"~. c #959595", -"{. c #D0D0D0", -"]. c #CACACA", -"^. c #757575", -"/. c #444444", -"(. c #636363", -"_. c #C8C8C8", -":. c #7D7D7D", -"<. c #C4C4C4", -"[. c #0F0F0F", -"}. c #868686", -"|. c #848484", -"1. c #1E1E1E", -"2. c #C2C2C2", -"3. c #BFBFBF", -"4. c #747474", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . + @ # $ $ % @ + . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . & * = - ; ; ; ; ; ; > , ' ) . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . ! ~ { ; ; ; ; ; ; ; ; ; ; ; ; ] ^ ! . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . / ( ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; _ : . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . < [ ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; } | . . . . . . . . . . . . . ", -". . . . . . . . . . . . 1 2 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 2 | . . . . . . . . . . . . ", -". . . . . . . . . . . 3 [ ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; } 4 . . . . . . . . . . . ", -". . . . . . . . . . 5 6 ; ; ; ; ; ; ; 7 8 9 0 a | $ b c ; ; ; ; ; ; ; ; d 5 . . . . . . . . . . ", -". . . . . . . . . . e ; ; ; ; ; ; ; f g . . . . . . . g h 7 ; ; ; ; ; ; ; i . . . . . . . . . . ", -". . . . . . . . . & j ; ; ; ; ; ; k . . . . . . . . . . . l ( ; ; ; ; ; ; j m . . . . . . . . . ", -". . . . . . . . . n ; ; ; ; ; ; ; o . . . . . . . . . . . . p ; ; ; ; ; ; ; q . . . . . . . . . ", -". . . . . . . . . r ; ; ; ; ; ; ; ; s t $ u u # v . . . . . . w ; ; ; ; ; ; x . . . . . . . . . ", -". . . . . . . . y z ; ; ; ; ; ; ; ; ; ; ; ; ; z A . . . . . . B ; ; ; ; ; ; z y . . . . . . . . ", -". . . . . . . . C ; ; ; ; ; ; ; ; ; ; - D E F G . . . . . . . H ; ; ; ; ; ; ; I . . . . . . . . ", -". . . . . . . . $ ; ; ; ; ; ; ; ; ; J y . . . . . . . . . . . K ; ; ; ; ; ; ; L . . . . . . . . ", -". . . . . . . . M ; ; ; ; ; ; ; ; N . . . . . . . . . . . . . C ; ; ; ; ; ; ; O . . . . . . . . ", -". . . . . . . . O ; ; ; ; ; ; ; , P . . . . . . . . . . . . . Q ; ; ; ; ; ; ; ^ . . . . . . . . ", -". . . . . . . . R ; ; ; ; ; ; ; S . . . . . T ( ( U . . . . . V ; ; ; ; ; ; ; W . . . . . . . . ", -". . . . . . . . K ; ; ; ; ; ; ; / . . . . . X ; 2 Y . . . . . Z ; ; ; ; ; ; ; ` . . . . . . . . ", -". . . . . . . . .; ; ; ; ; ; ; ... . . . . g p +.. . . . . . @.; ; ; ; ; ; ; .. . . . . . . . ", -". . . . . . . . . #.; ; ; ; ; ; $.. . . . . . . . . . . . . . %.; ; ; ; ; ; w . . . . . . . . . ", -". . . . . . . . . Q ; ; ; ; ; ; 6 ! . . . . . . . . . . . . . &.; ; ; ; ; ; s . . . . . . . . . ", -". . . . . . . . . *.[ ; ; ; ; ; ; =.) . . . . . g -.+ . . . ;.>.; ; ; ; ; [ .. . . . . . . . . ", -". . . . . . . . . . ,.; ; ; ; ; ; ; ( '.).. !.~.{.; ].^./.(._.; ; ; ; ; ; :.. . . . . . . . . . ", -". . . . . . . . . . m c ; ; ; ; ; ; ; ; {.<.; ; ; ; ; ; ; ; ; ; ; ; ; ; _.[.. . . . . . . . . . ", -". . . . . . . . . . . t z ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; z t . . . . . . . . . . . ", -". . . . . . . . . . . . H ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; n . . . . . . . . . . . . ", -". . . . . . . . . . . . . q z ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; z u . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . K >.; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; _.` . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . y }.- ; ; ; ; ; ; ; ; ; ; ; ; - |.G . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . 1.f 2.; ; ; ; ; ; ; ; 3.4.;.. . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . -.1 M 4.4.M 1 U . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "}; diff -Nru audacious-plugins-2.4.4/src/dockalbumart/dockalbumart.c audacious-plugins-3.2/src/dockalbumart/dockalbumart.c --- audacious-plugins-2.4.4/src/dockalbumart/dockalbumart.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/dockalbumart/dockalbumart.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,163 +0,0 @@ -/* - * dockalbumart: An audacious plugin to change the MacOS dock tile to the - * album art. - * dockalbumart.c: Plugin implementation - * - * Copyright (c) 2007 William Pitcock - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice is present in all copies. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include - -#include - -#include - -#include "audacious_player.xpm" - -extern gchar *fileinfo_recursive_get_image(const gchar* path, const gchar* file_name, gint depth); - -/* utility functions */ -static void -dock_set_icon_from_pixbuf(const GdkPixbuf *in) -{ - GdkPixbuf *pixbuf; - CGColorSpaceRef colorspace; - CGDataProviderRef data_provider; - CGImageRef image; - gpointer data; - gint rowstride, pixbuf_width, pixbuf_height; - gboolean has_alpha; - - pixbuf = gdk_pixbuf_scale_simple(in, 128, 128, GDK_INTERP_BILINEAR); - - data = gdk_pixbuf_get_pixels(pixbuf); - pixbuf_width = gdk_pixbuf_get_width(pixbuf); - pixbuf_height = gdk_pixbuf_get_height(pixbuf); - rowstride = gdk_pixbuf_get_rowstride(pixbuf); - has_alpha = gdk_pixbuf_get_has_alpha(pixbuf); - - /* create the colourspace for the CGImage. */ - colorspace = CGColorSpaceCreateDeviceRGB(); - data_provider = CGDataProviderCreateWithData(NULL, data, pixbuf_height * rowstride, NULL); - image = CGImageCreate(pixbuf_width, pixbuf_height, 8, - has_alpha ? 32 : 24, rowstride, colorspace, - has_alpha ? kCGImageAlphaLast : 0, - data_provider, NULL, FALSE, - kCGRenderingIntentDefault); - - /* release the colourspace and data provider, we have what we want. */ - CGDataProviderRelease(data_provider); - CGColorSpaceRelease(colorspace); - - /* set the dock tile images */ - SetApplicationDockTileImage(image); - - /* and release */ - CGImageRelease(image); - g_object_unref(pixbuf); -} - -static void -pixbuf_find_and_load(Tuple *tuple) -{ - GdkPixbuf *out; - gchar *tmp; - const gchar *file_path, *file_name; - - file_name = tuple_get_string(tuple, FIELD_FILE_NAME, NULL); - file_path = tuple_get_string(tuple, FIELD_FILE_PATH, NULL); - - if (file_name != NULL && file_path != NULL) - { - tmp = fileinfo_recursive_get_image(file_path, file_name, 0); - if (tmp) - { - GdkPixbuf *new = gdk_pixbuf_new_from_file(tmp, NULL); - dock_set_icon_from_pixbuf(new); - g_object_unref(new); - } - else - { - GdkPixbuf *new = gdk_pixbuf_new_from_xpm_data((const gchar **) audacious_player_xpm); - dock_set_icon_from_pixbuf(new); - g_object_unref(new); - } - } -} - -/* trigger functions */ - -static void -dockart_trigger_func_pb_start_cb(gpointer plentry_p, gpointer unused) -{ - PlaylistEntry *entry = (PlaylistEntry *) plentry_p; - Tuple *tuple; - - if (entry == NULL) - return; - - tuple = entry->tuple; - - if (tuple == NULL) - return; - - pixbuf_find_and_load(tuple); -} - -static void -dockart_trigger_func_pb_end_cb(gpointer plentry_p, gpointer unused) -{ - GdkPixbuf *new; - - new = gdk_pixbuf_new_from_xpm_data((const gchar **) audacious_player_xpm); - dock_set_icon_from_pixbuf(new); - g_object_unref(new); -} - -static void -dockart_init(void) -{ - hook_associate("playback begin", dockart_trigger_func_pb_start_cb, NULL); - hook_associate("playback end", dockart_trigger_func_pb_end_cb, NULL); -} - -static void -dockart_cleanup(void) -{ - GdkPixbuf *new; - - hook_dissociate("playback begin", dockart_trigger_func_pb_start_cb); - hook_dissociate("playback end", dockart_trigger_func_pb_end_cb); - - /* reset dock tile */ - new = gdk_pixbuf_new_from_xpm_data((const gchar **) audacious_player_xpm); - dock_set_icon_from_pixbuf(new); - g_object_unref(new); -} - -GeneralPlugin dockart_gp = -{ - .description = "Dock Album Art", - .init = dockart_init, - .cleanup = dockart_cleanup -}; - -GeneralPlugin *dockart_gplist[] = { &dockart_gp, NULL }; -SIMPLE_GENERAL_PLUGIN(dockart, dockart_gplist); diff -Nru audacious-plugins-2.4.4/src/dockalbumart/Makefile audacious-plugins-3.2/src/dockalbumart/Makefile --- audacious-plugins-2.4.4/src/dockalbumart/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/dockalbumart/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -PLUGIN = dockalbumart${PLUGIN_SUFFIX} - -SRCS = dockalbumart.c - -include ../../buildsys.mk -include ../../extra.mk - -plugindir := ${plugindir}/${GENERAL_PLUGIN_DIR} - -CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${BEEP_DEFINES} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/echo_plugin/echo.c audacious-plugins-3.2/src/echo_plugin/echo.c --- audacious-plugins-2.4.4/src/echo_plugin/echo.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/echo_plugin/echo.c 2012-01-20 19:48:30.000000000 +0000 @@ -4,14 +4,14 @@ #include #include -#include #include +#include #include #include "echo.h" -static void init(void); +static gboolean init (void); static void cleanup(void); #define MAX_SRATE 50000 @@ -21,19 +21,25 @@ #define BUFFER_SHORTS (BUFFER_SAMPLES * MAX_CHANNELS) #define BUFFER_BYTES (BUFFER_SHORTS * BYTES_PS) +static const gchar * const echo_defaults[] = { + "delay", "500", + "feedback", "50", + "volume", "50", + NULL}; + static gfloat *buffer = NULL; -gint echo_delay = 500, echo_feedback = 50, echo_volume = 50; +gint echo_delay, echo_feedback, echo_volume; static int w_ofs; -static void init(void) +static gboolean init (void) { - mcs_handle_t *cfg; + aud_config_set_defaults ("echo_plugin", echo_defaults); + + echo_delay = aud_get_int ("echo_plugin", "delay"); + echo_feedback = aud_get_int ("echo_plugin", "feedback"); + echo_volume = aud_get_int ("echo_plugin", "volume"); - cfg = aud_cfg_db_open(); - aud_cfg_db_get_int(cfg, "echo_plugin", "delay", &echo_delay); - aud_cfg_db_get_int(cfg, "echo_plugin", "feedback", &echo_feedback); - aud_cfg_db_get_int(cfg, "echo_plugin", "volume", &echo_volume); - aud_cfg_db_close(cfg); + return TRUE; } static void cleanup(void) @@ -112,9 +118,9 @@ echo_process(d, samples); } -EffectPlugin echo_ep = -{ - .description = "Echo Plugin", /* Description */ +AUD_EFFECT_PLUGIN +( + .name = "Echo", .init = init, .cleanup = cleanup, .about = echo_about, @@ -125,8 +131,4 @@ .finish = echo_finish, .decoder_to_output_time = echo_decoder_to_output_time, .output_to_decoder_time = echo_output_to_decoder_time -}; - -EffectPlugin *echo_eplist[] = { &echo_ep, NULL }; - -SIMPLE_EFFECT_PLUGIN(echo, echo_eplist); +) diff -Nru audacious-plugins-2.4.4/src/echo_plugin/gui.c audacious-plugins-3.2/src/echo_plugin/gui.c --- audacious-plugins-2.4.4/src/echo_plugin/gui.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/echo_plugin/gui.c 2012-01-20 19:48:30.000000000 +0000 @@ -2,7 +2,8 @@ #include -#include +#include +#include #include #include #include @@ -16,7 +17,7 @@ "Surround echo by Carl van Schaik 1999"); static GtkWidget *conf_dialog = NULL; -static GtkObject *echo_delay_adj, *echo_feedback_adj, *echo_volume_adj; +static GtkAdjustment * echo_delay_adj, * echo_feedback_adj, * echo_volume_adj; void echo_about (void) { @@ -28,16 +29,13 @@ static void apply_changes(void) { - mcs_handle_t *cfg; - echo_delay = GTK_ADJUSTMENT(echo_delay_adj)->value; - echo_feedback = GTK_ADJUSTMENT(echo_feedback_adj)->value; - echo_volume = GTK_ADJUSTMENT(echo_volume_adj)->value; - - cfg = aud_cfg_db_open(); - aud_cfg_db_set_int(cfg, "echo_plugin", "delay", echo_delay); - aud_cfg_db_set_int(cfg, "echo_plugin", "feedback", echo_feedback); - aud_cfg_db_set_int(cfg, "echo_plugin", "volume", echo_volume); - aud_cfg_db_close(cfg); + echo_delay = gtk_adjustment_get_value (echo_delay_adj); + echo_feedback = gtk_adjustment_get_value (echo_feedback_adj); + echo_volume = gtk_adjustment_get_value (echo_volume_adj); + + aud_set_int ("echo_plugin", "delay", echo_delay); + aud_set_int ("echo_plugin", "feedback", echo_feedback); + aud_set_int ("echo_plugin", "volume", echo_volume); } static void conf_ok_cb(GtkButton * button, gpointer data) @@ -64,19 +62,22 @@ return; conf_dialog = gtk_dialog_new(); - gtk_signal_connect(GTK_OBJECT(conf_dialog), "destroy", - GTK_SIGNAL_FUNC(gtk_widget_destroyed), &conf_dialog); + g_signal_connect (conf_dialog, "destroy", (GCallback) gtk_widget_destroyed, + & conf_dialog); gtk_window_set_title(GTK_WINDOW(conf_dialog), _("Configure Echo")); - echo_delay_adj = gtk_adjustment_new(echo_delay, 0, MAX_DELAY + 100, 10, 100, 100); - echo_feedback_adj = gtk_adjustment_new(echo_feedback, 0, 100 + 10, 2, 10, 10); - echo_volume_adj = gtk_adjustment_new(echo_volume, 0, 100 + 10, 2, 10, 10); + echo_delay_adj = (GtkAdjustment *) gtk_adjustment_new (echo_delay, 0, + MAX_DELAY + 100, 10, 100, 100); + echo_feedback_adj = (GtkAdjustment *) gtk_adjustment_new (echo_feedback, 0, + 100 + 10, 2, 10, 10); + echo_volume_adj = (GtkAdjustment *) gtk_adjustment_new (echo_volume, 0, 100 + + 10, 2, 10, 10); table = gtk_table_new(2, 3, FALSE); gtk_table_set_col_spacings(GTK_TABLE(table), 5); gtk_container_set_border_width(GTK_CONTAINER(table), 5); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(conf_dialog)->vbox), table, - TRUE, TRUE, 5); + gtk_box_pack_start ((GtkBox *) gtk_dialog_get_content_area ((GtkDialog *) + conf_dialog), table, TRUE, TRUE, 5); gtk_widget_show(table); label = gtk_label_new(_("Delay: (ms)")); @@ -95,50 +96,42 @@ gtk_widget_show(label); hscale = gtk_hscale_new(GTK_ADJUSTMENT(echo_delay_adj)); - gtk_widget_set_usize(hscale, 400, 35); gtk_scale_set_digits(GTK_SCALE(hscale), 0); gtk_table_attach_defaults(GTK_TABLE(table), hscale, 1, 2, 0, 1); gtk_widget_show(hscale); hscale = gtk_hscale_new(GTK_ADJUSTMENT(echo_feedback_adj)); - gtk_widget_set_usize(hscale, 400, 35); gtk_scale_set_digits(GTK_SCALE(hscale), 0); gtk_table_attach_defaults(GTK_TABLE(table), hscale, 1, 2, 1, 2); gtk_widget_show(hscale); hscale = gtk_hscale_new(GTK_ADJUSTMENT(echo_volume_adj)); - gtk_widget_set_usize(hscale, 400, 35); gtk_scale_set_digits(GTK_SCALE(hscale), 0); gtk_table_attach_defaults(GTK_TABLE(table), hscale, 1, 2, 2, 3); gtk_widget_show(hscale); bbox = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); - gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); - gtk_box_pack_start(GTK_BOX((GTK_DIALOG(conf_dialog)->action_area)), - bbox, TRUE, TRUE, 0); - + gtk_box_pack_start ((GtkBox *) gtk_dialog_get_action_area ((GtkDialog *) + conf_dialog), bbox, TRUE, TRUE, 0); button = gtk_button_new_with_label(_("Ok")); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_widget_set_can_default (button, TRUE); gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - GTK_SIGNAL_FUNC(conf_ok_cb), NULL); + g_signal_connect (button, "clicked", (GCallback) conf_ok_cb, NULL); gtk_widget_grab_default(button); gtk_widget_show(button); button = gtk_button_new_with_label(_("Cancel")); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_widget_set_can_default (button, TRUE); gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - GTK_SIGNAL_FUNC(conf_cancel_cb), NULL); + g_signal_connect (button, "clicked", (GCallback) conf_cancel_cb, NULL); gtk_widget_show(button); button = gtk_button_new_with_label(_("Apply")); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_widget_set_can_default (button, TRUE); gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - GTK_SIGNAL_FUNC(conf_apply_cb), NULL); + g_signal_connect (button, "clicked", (GCallback) conf_apply_cb, NULL); gtk_widget_show(button); gtk_widget_show(bbox); diff -Nru audacious-plugins-2.4.4/src/echo_plugin/Makefile audacious-plugins-3.2/src/echo_plugin/Makefile --- audacious-plugins-2.4.4/src/echo_plugin/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/echo_plugin/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -9,5 +9,5 @@ plugindir := ${plugindir}/${EFFECT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. +LIBS += ${GTK_LIBS} ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/evdev-plug/ed_actions.h audacious-plugins-3.2/src/evdev-plug/ed_actions.h --- audacious-plugins-2.4.4/src/evdev-plug/ed_actions.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/evdev-plug/ed_actions.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -/* -* -* Author: Giacomo Lozito , (C) 2005-2007 -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2 of the License, or (at your -* option) any later version. -* -* This program 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 -* General Public License for more details. -* -* You should have received a copy of the GNU General Public License along -* with this program; if not, write to the Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* -*/ - -#ifndef _I_ED_ACTIONS_H -#define _I_ED_ACTIONS_H 1 - -#include "ed_common.h" -#include - -/* ed_action_t object structure */ -typedef struct -{ - const gchar * desc; - void (*callback)( gpointer ); -} -ed_action_t; - -/* action codes */ -enum -{ - ED_ACTION_PB_PLAY = 0, - ED_ACTION_PB_STOP = 1, - ED_ACTION_PB_PAUSE = 2, - ED_ACTION_PB_PREV = 3, - ED_ACTION_PB_NEXT = 4, - ED_ACTION_PB_EJECT = 5, - - ED_ACTION_PL_REPEAT = 10, - ED_ACTION_PL_SHUFFLE = 11, - - ED_ACTION_VOL_UP5 = 20, - ED_ACTION_VOL_DOWN5 = 21, - ED_ACTION_VOL_UP10 = 22, - ED_ACTION_VOL_DOWN10 = 23, - ED_ACTION_VOL_MUTE = 24, - - ED_ACTION_WIN_MAIN = 30, - ED_ACTION_WIN_PLAYLIST = 31, - ED_ACTION_WIN_EQUALIZER = 32, - ED_ACTION_WIN_JTF = 33 -}; - -void ed_action_call ( gint , gpointer ); - -#endif /* !_I_ED_ACTIONS_H */ diff -Nru audacious-plugins-2.4.4/src/evdev-plug/ed_bindings_store.c audacious-plugins-3.2/src/evdev-plug/ed_bindings_store.c --- audacious-plugins-2.4.4/src/evdev-plug/ed_bindings_store.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/evdev-plug/ed_bindings_store.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,137 +0,0 @@ -/* -* -* Author: Giacomo Lozito , (C) 2005-2007 -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2 of the License, or (at your -* option) any later version. -* -* This program 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 -* General Public License for more details. -* -* You should have received a copy of the GNU General Public License along -* with this program; if not, write to the Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* -*/ - -#include "ed_bindings_store.h" -#include "ed_common.h" -#include - - -/* currently, the bindings store is implemented as a string-based Hash Table; - however, a change of implementation would only require to re-write the - public API defined in this source file; - the rest of the code in EvDev-Plug doesn't care about the - implementation at all, and access it in a transparent fashion */ - - -gpointer -ed_bindings_store_new ( void ) -{ - GHashTable *hashtable = g_hash_table_new_full( g_str_hash , g_str_equal , g_free , NULL ); - return hashtable; -} - - -/* associate a triplet ev_type:ev_code:ev_value - (identifying an input event) to an action code in our bindings store; - bindings store should keep its own copy of ed_inputevent_t objects! */ -gint -ed_bindings_store_insert ( gpointer hashtable_gp , - ed_inputevent_t * inputev , - gint action_code ) -{ - gchar *input_str; - input_str = g_strdup_printf( "%i:%i:%i" , inputev->type , inputev->code , inputev->value ); - g_hash_table_insert( (GHashTable*)hashtable_gp , input_str , GINT_TO_POINTER(action_code) ); - - DEBUGMSG( "storing code %i -> event: %i:%i:%i\n" , - action_code , inputev->type, inputev->code, inputev->value ); - return 0; -} - - -typedef struct -{ - ed_bindings_store_foreach_func callback; - gpointer data1; - gpointer data2; -} -hashfunc_foreach_container_t; - -static void -hashfunc_foreach( gpointer key , gpointer value , gpointer container_gp ) -{ - hashfunc_foreach_container_t *container = container_gp; - ed_inputevent_t inputev; - gchar **toks; - - /* convert key (it's a string in the "type:code:value" form) back to ed_inputevent_t object */ - toks = g_strsplit( (gchar*)key , ":" , 3 ); - inputev.type = atoi( toks[0] ); - inputev.code = atoi( toks[1] ); - inputev.value = atoi( toks[2] ); - g_strfreev( toks ); - - container->callback( &inputev , GPOINTER_TO_INT(value) , container->data1 , container->data2 ); - return; -} - -void -ed_bindings_store_foreach ( gpointer hashtable_gp , - ed_bindings_store_foreach_func callback , - gpointer user_data1 , - gpointer user_data2 ) -{ - hashfunc_foreach_container_t *container = g_malloc(sizeof(hashfunc_foreach_container_t)); - container->callback = callback; - container->data1 = user_data1; - container->data2 = user_data2; - g_hash_table_foreach( (GHashTable*)hashtable_gp , hashfunc_foreach , container ); - g_free( container ); -} - - -guint -ed_bindings_store_size ( gpointer hashtable_gp ) -{ - return g_hash_table_size( (GHashTable*)hashtable_gp ); -} - - -gboolean -ed_bindings_store_lookup( gpointer hashtable_gp , - ed_inputevent_t * inputev , - gint * action_code ) -{ - gpointer p; - gchar *input_str; - - input_str = g_strdup_printf( "%i:%i:%i" , inputev->type , inputev->code , inputev->value ); - - if ( g_hash_table_lookup_extended( (GHashTable*)hashtable_gp , input_str , NULL , &p ) == TRUE ) - { - *action_code = GPOINTER_TO_INT(p); - g_free( input_str ); - return TRUE; - } - else - { - g_free( input_str ); - return FALSE; - } -} - - -gint -ed_bindings_store_delete ( gpointer hashtable_gp ) -{ - if ( hashtable_gp != NULL ) - g_hash_table_destroy( hashtable_gp ); - return 0; -} diff -Nru audacious-plugins-2.4.4/src/evdev-plug/ed_bindings_store.h audacious-plugins-3.2/src/evdev-plug/ed_bindings_store.h --- audacious-plugins-2.4.4/src/evdev-plug/ed_bindings_store.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/evdev-plug/ed_bindings_store.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -/* -* -* Author: Giacomo Lozito , (C) 2005-2007 -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2 of the License, or (at your -* option) any later version. -* -* This program 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 -* General Public License for more details. -* -* You should have received a copy of the GNU General Public License along -* with this program; if not, write to the Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* -*/ - -#ifndef _I_ED_BINDINGS_STORE_H -#define _I_ED_BINDINGS_STORE_H 1 - -#include "ed_types.h" -#include "ed_common.h" -#include - -typedef void (*ed_bindings_store_foreach_func)( ed_inputevent_t * , gint , gpointer , gpointer ); - -gpointer ed_bindings_store_new ( void ); -gint ed_bindings_store_insert ( gpointer , ed_inputevent_t * , gint ); -void ed_bindings_store_foreach ( gpointer , ed_bindings_store_foreach_func , gpointer , gpointer ); -guint ed_bindings_store_size ( gpointer ); -gboolean ed_bindings_store_lookup( gpointer , ed_inputevent_t * , gint * ); -gint ed_bindings_store_delete ( gpointer ); - -#endif /* !_I_ED_BINDINGS_STORE_H */ diff -Nru audacious-plugins-2.4.4/src/evdev-plug/ed.c audacious-plugins-3.2/src/evdev-plug/ed.c --- audacious-plugins-2.4.4/src/evdev-plug/ed.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/evdev-plug/ed.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,283 +0,0 @@ -/* -* -* Author: Giacomo Lozito , (C) 2005-2007 -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2 of the License, or (at your -* option) any later version. -* -* This program 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 -* General Public License for more details. -* -* You should have received a copy of the GNU General Public License along -* with this program; if not, write to the Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* -*/ - -#include "ed.h" -#include "ed_types.h" -#include "ed_internals.h" -#include "ed_actions.h" -#include "ed_ui.h" -#include "ed_common.h" - -#include -#include -#include - -GeneralPlugin *evdevplug_gplist[] = { &ed_gp, NULL }; -SIMPLE_GENERAL_PLUGIN(evdev-plug, evdevplug_gplist); - -GList *ed_device_listening_list = NULL; -gboolean plugin_is_active = FALSE; - -/* action callbacks */ -void ed_action_pb_play ( gpointer ); -void ed_action_pb_stop ( gpointer ); -void ed_action_pb_pause ( gpointer ); -void ed_action_pb_prev ( gpointer ); -void ed_action_pb_next ( gpointer ); -void ed_action_pb_eject ( gpointer ); -void ed_action_vol_up5 ( gpointer ); -void ed_action_vol_down5 ( gpointer ); -void ed_action_vol_up10 ( gpointer ); -void ed_action_vol_down10 ( gpointer ); -void ed_action_vol_mute ( gpointer ); -void ed_action_win_main ( gpointer ); -void ed_action_win_playlist ( gpointer ); -void ed_action_win_equalizer ( gpointer ); -void ed_action_win_jtf ( gpointer ); -void ed_action_pl_repeat ( gpointer ); -void ed_action_pl_shuffle ( gpointer ); - -/* map action codes to ed_action_t objects */ -ed_action_t player_actions[] = -{ - [ED_ACTION_PB_PLAY] = { N_("Playback->Play") , ed_action_pb_play }, - [ED_ACTION_PB_STOP] = { N_("Playback->Stop") , ed_action_pb_stop }, - [ED_ACTION_PB_PAUSE] = { N_("Playback->Pause") , ed_action_pb_pause }, - [ED_ACTION_PB_PREV] = { N_("Playback->Prev") , ed_action_pb_prev }, - [ED_ACTION_PB_NEXT] = { N_("Playback->Next") , ed_action_pb_next }, - [ED_ACTION_PB_EJECT] = { N_("Playback->Eject") , ed_action_pb_eject }, - - [ED_ACTION_PL_REPEAT] = { N_("Playlist->Repeat") , ed_action_pl_repeat }, - [ED_ACTION_PL_SHUFFLE] = { N_("Playlist->Shuffle") , ed_action_pl_shuffle }, - - [ED_ACTION_VOL_UP5] = { N_("Volume->Up_5") , ed_action_vol_up5 }, - [ED_ACTION_VOL_DOWN5] = { N_("Volume->Down_5") , ed_action_vol_down5 }, - [ED_ACTION_VOL_UP10] = { N_("Volume->Up_10") , ed_action_vol_up10 }, - [ED_ACTION_VOL_DOWN10] = { N_("Volume->Down_10") , ed_action_vol_down10 }, - [ED_ACTION_VOL_MUTE] = { N_("Volume->Mute") , ed_action_vol_mute }, - - [ED_ACTION_WIN_MAIN] = { N_("Window->Main") , ed_action_win_main }, - [ED_ACTION_WIN_PLAYLIST] = { N_("Window->Playlist") , ed_action_win_playlist }, - [ED_ACTION_WIN_EQUALIZER] = { N_("Window->Equalizer") , ed_action_win_equalizer }, - [ED_ACTION_WIN_JTF] = { N_("Window->JumpToFile") , ed_action_win_jtf } -}; - - - -/* ***************** */ -/* plug-in functions */ - -void -ed_init ( void ) -{ - g_log_set_handler( NULL , G_LOG_LEVEL_WARNING , g_log_default_handler , NULL ); - - plugin_is_active = TRUE; /* go! */ - - /* read event devices and bindings from user - configuration and start listening for active ones */ - ed_device_start_listening_from_config(); - - return; -} - - -void -ed_cleanup ( void ) -{ - /* shut down all devices being listened */ - ed_device_stop_listening_all( TRUE ); - - plugin_is_active = FALSE; /* stop! */ - - return; -} - - -void -ed_config ( void ) -{ - ed_ui_config_show(); -} - - -void -ed_about ( void ) -{ - ed_ui_about_show(); -} - - - -/* ************** */ -/* player actions */ - -void -ed_action_call ( gint code , gpointer param ) -{ - DEBUGMSG( "Calling action; code %i ( %s )\n" , code , player_actions[code].desc ); - - /* activate callback for requested action */ - player_actions[code].callback( param ); -} - - -void -ed_action_pb_play ( gpointer param ) -{ - aud_drct_play(); -} - -void -ed_action_pb_stop ( gpointer param ) -{ - aud_drct_stop(); -} - -void -ed_action_pb_pause ( gpointer param ) -{ - if (aud_drct_get_playing() || aud_drct_get_paused()) - aud_drct_pause(); - else - aud_drct_play(); -} - -void -ed_action_pb_prev ( gpointer param ) -{ - aud_drct_pl_prev(); -} - -void -ed_action_pb_next ( gpointer param ) -{ - aud_drct_pl_next(); -} - -void -ed_action_pb_eject ( gpointer param ) -{ - hook_call ("filebrowser show", GINT_TO_POINTER (TRUE)); -} - -void -ed_action_pl_repeat ( gpointer param ) -{ - aud_drct_pl_repeat_toggle(); -} - -void -ed_action_pl_shuffle ( gpointer param ) -{ - aud_drct_pl_shuffle_toggle(); -} - -void -ed_action_vol_up5 ( gpointer param ) -{ - gint vl, vr; - aud_drct_get_volume( &vl , &vr ); - aud_drct_set_volume( CLAMP(vl + 5, 0, 100) , CLAMP(vr + 5, 0, 100) ); -} - -void -ed_action_vol_down5 ( gpointer param ) -{ - gint vl, vr; - aud_drct_get_volume( &vl , &vr ); - aud_drct_set_volume( CLAMP(vl - 5, 0, 100) , CLAMP(vr - 5, 0, 100) ); -} - -void -ed_action_vol_up10 ( gpointer param ) -{ - gint vl, vr; - aud_drct_get_volume( &vl , &vr ); - aud_drct_set_volume( CLAMP(vl + 10, 0, 100) , CLAMP(vr + 10, 0, 100) ); -} - -void -ed_action_vol_down10 ( gpointer param ) -{ - gint vl, vr; - aud_drct_get_volume( &vl , &vr ); - aud_drct_set_volume( CLAMP(vl - 10, 0, 100) , CLAMP(vr - 10, 0, 100) ); -} - -void -ed_action_vol_mute ( gpointer param ) -{ - static gint vl = -1; - static gint vr = -1; - - if ( vl == -1 ) /* no previous memory of volume before mute action */ - { - aud_drct_get_volume( &vl , &vr ); /* memorize volume before mute */ - aud_drct_set_volume( 0 , 0 ); /* mute */ - } - else /* memorized volume values exist */ - { - gint vl_now = 0; - gint vr_now = 0; - - aud_drct_get_volume( &vl_now , &vr_now ); - if (( vl_now == 0 ) && ( vr_now == 0 )) - { - /* the volume is still muted, restore the old values */ - aud_drct_set_volume( vl , vr ); - vl = -1; vr = -1; /* reset these for next use */ - } - else - { - /* the volume has been raised with other commands, act as if there wasn't a previous memory */ - aud_drct_get_volume( &vl , &vr ); /* memorize volume before mute */ - aud_drct_set_volume( 0 , 0 ); /* mute */ - } - } -} - -void -ed_action_win_main ( gpointer param ) -{ - hook_call ("interface toggle visibility", NULL); -} - -void -ed_action_win_playlist ( gpointer param ) -{ -#if 0 - aud_drct_pl_win_toggle( !aud_drct_pl_win_is_visible () ); -#endif -} - -void -ed_action_win_equalizer ( gpointer param ) -{ -#if 0 - aud_drct_eq_win_toggle( !aud_drct_eq_win_is_visible () ); -#endif -} - -void -ed_action_win_jtf ( gpointer param ) -{ - hook_call ("interface show jump to track", NULL); -} diff -Nru audacious-plugins-2.4.4/src/evdev-plug/ed_common.h audacious-plugins-3.2/src/evdev-plug/ed_common.h --- audacious-plugins-2.4.4/src/evdev-plug/ed_common.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/evdev-plug/ed_common.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,38 +0,0 @@ -/* -* -* Author: Giacomo Lozito , (C) 2005-2007 -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2 of the License, or (at your -* option) any later version. -* -* This program 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 -* General Public License for more details. -* -* You should have received a copy of the GNU General Public License along -* with this program; if not, write to the Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* -*/ - -#ifndef _I_ED_COMMON_H -#define _I_ED_COMMON_H 1 - -#ifdef DEBUG -#include -#define DEBUGMSG(...) { fprintf(stderr, "evdev-plug(%s:%s:%d): ", __FILE__, __FUNCTION__, (int) __LINE__); fprintf(stderr, __VA_ARGS__); } -#else -#define DEBUGMSG(...) -#endif /* DEBUG */ - -#include "../../config.h" - -#define ED_VERSION_PLUGIN "0.2p1" -#define ED_VERSION_CONFIG "0" - -#define PLAYER_LOCALRC_FILE "evdev-plug.conf" - -#endif /* !_I_ED_COMMON_H */ diff -Nru audacious-plugins-2.4.4/src/evdev-plug/ed.h audacious-plugins-3.2/src/evdev-plug/ed.h --- audacious-plugins-2.4.4/src/evdev-plug/ed.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/evdev-plug/ed.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ -/* -* -* Author: Giacomo Lozito , (C) 2005-2007 -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2 of the License, or (at your -* option) any later version. -* -* This program 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 -* General Public License for more details. -* -* You should have received a copy of the GNU General Public License along -* with this program; if not, write to the Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* -*/ - -#ifndef _I_ED_H -#define _I_ED_H 1 - -#include "ed_common.h" -#include -#include - -void ed_init ( void ); -void ed_cleanup ( void ); -void ed_config ( void ); -void ed_about ( void ); - -GeneralPlugin ed_gp = -{ - .description = "EvDev-Plug " ED_VERSION_PLUGIN, - .init = ed_init, - .about = ed_about, - .configure = ed_config, - .cleanup = ed_cleanup -}; - -#endif /* !_I_ED_H */ diff -Nru audacious-plugins-2.4.4/src/evdev-plug/ed_internals.c audacious-plugins-3.2/src/evdev-plug/ed_internals.c --- audacious-plugins-2.4.4/src/evdev-plug/ed_internals.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/evdev-plug/ed_internals.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1023 +0,0 @@ -/* -* -* Author: Giacomo Lozito , (C) 2005-2007 -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2 of the License, or (at your -* option) any later version. -* -* This program 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 -* General Public License for more details. -* -* You should have received a copy of the GNU General Public License along -* with this program; if not, write to the Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* -*/ - -#include "ed_types.h" -#include "ed_internals.h" -#include "ed_actions.h" -#include "ed_bindings_store.h" -#include "ed_common.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -/* for variadic */ -#include -#include -#include - -#include -#include - -static gboolean ed_device_giofunc ( GIOChannel * , GIOCondition , gpointer ); - -static gint ed_util_get_data_from_keyfile( GKeyFile * , gchar * , ... ); -static gpointer ed_util_get_bindings_from_keyfile( GKeyFile * , gchar * ); - -extern GList *ed_device_listening_list; - - -/* ***************** */ -/* internals */ - -ed_device_info_t * -ed_device_info_new ( gchar * device_name , gchar * device_filename , - gchar * device_phys , gint device_is_custom ) -{ - ed_device_info_t *info = g_malloc(sizeof(ed_device_info_t)); - info->name = g_strdup(device_name); - info->filename = g_strdup(device_filename); - info->phys = g_strdup(device_phys); - info->is_custom = device_is_custom; - info->is_active = FALSE; - info->bindings = NULL; - info->reg = 0; - return info; -} - - -gint -ed_device_info_delete ( ed_device_info_t * info ) -{ - g_free( info->phys ); - g_free( info->filename ); - g_free( info->name ); - g_free( info ); - return 0; -} - - -ed_device_t * -ed_device_new ( gchar * device_name , gchar * device_filename , - gchar * device_phys , gint device_is_custom ) -{ - ed_device_t *event_device; - GIOChannel *iochan; - gint fd; - - fd = g_open( device_filename , O_RDONLY , 0 ); - if ( fd < 0 ) - { - /* an error occurred */ - g_warning( _("event-device-plugin: unable to open device file %s , skipping this device; check that " - "the file exists and that you have read permission for it\n") , device_filename ); - return NULL; - } - - iochan = g_io_channel_unix_new( fd ); - if ( iochan == NULL ) - { - /* an error occurred */ - g_warning( _("event-device-plugin: unable to create a io_channel for device file %s ," - "skipping this device\n") , device_filename ); - close( fd ); - return NULL; - } - g_io_channel_set_encoding( iochan , NULL , NULL ); /* binary data */ - - event_device = g_malloc(sizeof(ed_device_t)); - event_device->fd = fd; - event_device->iochan = iochan; - event_device->is_listening = FALSE; - event_device->info = ed_device_info_new( - device_name , device_filename , device_phys , device_is_custom ); - - return event_device; -} - - -gint -ed_device_delete ( ed_device_t * event_device ) -{ - if ( event_device->is_listening ) - ed_device_stop_listening( event_device ); - - g_io_channel_shutdown( event_device->iochan , TRUE , NULL ); - g_io_channel_unref( event_device->iochan ); - close( event_device->fd ); - - ed_device_info_delete( event_device->info ); - g_free( event_device ); - - return 0; -} - - -gboolean -ed_inputevent_check_equality( ed_inputevent_t *iev1 , ed_inputevent_t *iev2 ) -{ - if (( iev1 == NULL ) || ( iev2 == NULL )) - { - if (( iev1 == NULL ) && ( iev2 == NULL )) - return TRUE; - else - return FALSE; - } - - if ( ( iev1->code == iev2->code ) && - ( iev1->type == iev2->type ) && - ( iev1->value == iev2->value ) ) - return TRUE; - else - return FALSE; -} - - -gboolean -ed_device_info_check_equality( ed_device_info_t *info1 , ed_device_info_t *info2 ) -{ - if (( info1 == NULL ) || ( info2 == NULL )) - { - if (( info1 == NULL ) && ( info2 == NULL )) - return TRUE; - else - return FALSE; - } - - if ( ( strcmp(info1->name,info2->name) == 0 ) && - ( strcmp(info1->filename,info2->filename) == 0 ) && - ( strcmp(info1->phys,info2->phys) == 0 ) && - ( info1->is_custom == info2->is_custom ) ) - return TRUE; - else - return FALSE; -} - - -gint -ed_device_start_listening ( ed_device_t * event_device ) -{ - if ( g_list_find( ed_device_listening_list , event_device ) != NULL ) - { - DEBUGMSG( "called start listening for device \"%s\" ( %s - %s ) but device listening is already active!\n" , - event_device->info->name , event_device->info->filename , event_device->info->phys ); - return -1; /* device listening is already active, do nothing */ - } - else - { - DEBUGMSG( "start listening for device \"%s\" ( %s - %s )\n" , - event_device->info->name , event_device->info->filename , event_device->info->phys ); - /* add a watch that checks if there's data to read */ - event_device->iochan_sid = g_io_add_watch( event_device->iochan , G_IO_IN , - (GIOFunc)ed_device_giofunc , event_device ); - - /* add event_device to the list */ - ed_device_listening_list = g_list_append( ed_device_listening_list , event_device ); - event_device->is_listening = TRUE; - return 0; - } -} - - -gint -ed_device_stop_listening ( ed_device_t * event_device ) -{ - if ( ( g_list_find( ed_device_listening_list , event_device ) != NULL ) && - ( event_device->is_listening == TRUE ) ) - { - DEBUGMSG( "stop listening for device \"%s\" ( %s - %s )\n" , - event_device->info->name , event_device->info->filename , event_device->info->phys ); - g_source_remove( event_device->iochan_sid ); - ed_device_listening_list = g_list_remove( ed_device_listening_list , event_device ); - event_device->is_listening = FALSE; - return 0; - } - else - { - DEBUGMSG( "called stop listening for device \"%s\" ( %s - %s ) but device listening is not active!\n" , - event_device->info->name , event_device->info->filename , event_device->info->phys ); - return -1; - } -} - - -gint -ed_device_stop_listening_from_info ( ed_device_info_t * info ) -{ - GList *list_iter = ed_device_listening_list; - while ( list_iter != NULL ) - { - ed_device_t *dev = list_iter->data; - if ( ed_device_info_check_equality( dev->info , info ) == TRUE ) - { - ed_device_stop_listening( dev ); - return 0; - } - list_iter = g_list_next( list_iter ); - } - return -1; -} - - -void -ed_device_stop_listening_all ( gboolean delete_bindings ) -{ - /* convenience function that stops listening for all - devices and also deletes bindings if requested */ - GList *list_iter = ed_device_listening_list; - while ( list_iter != NULL ) - { - ed_device_t *dev = list_iter->data; - - if (( delete_bindings == TRUE ) && ( dev->info->bindings != NULL )) - ed_bindings_store_delete( dev->info->bindings ); - - ed_device_delete( dev ); - - list_iter = g_list_next( list_iter ); - } -} - - -gboolean -ed_device_check_listening_from_info ( ed_device_info_t * info ) -{ - /* note: this must not alter the reg parameter of info */ - GList *list_iter = ed_device_listening_list; - while ( list_iter != NULL ) - { - ed_device_t *dev = list_iter->data; - if ( ed_device_info_check_equality( dev->info , info ) == TRUE ) - return TRUE; - list_iter = g_list_next( list_iter ); - } - return FALSE; -} - - -static gboolean -ed_device_giofunc ( GIOChannel * iochan , GIOCondition cond , gpointer event_device ) -{ - switch ( cond ) - { - case G_IO_IN: - { - gsize rb = 0; - struct input_event inputev; - - if ( g_io_channel_read_chars( iochan , (gchar*)&inputev , - sizeof(struct input_event) , &rb , NULL ) == G_IO_STATUS_NORMAL ) - { - if ( rb == sizeof(struct input_event) ) - { - gint action_code = -1; - ed_device_t *dev = event_device; - - DEBUGMSG( "event (%d,%d,%d) intercepted for device \"%s\" ( %s - %s )\n" , - inputev.type , inputev.code , inputev.value , - dev->info->name , dev->info->filename , dev->info->phys ); - - if ( dev->info->bindings != NULL ) - { - ed_inputevent_t ev; - ev.type = inputev.type; - ev.code = inputev.code; - ev.value = inputev.value; - - /* lookup event type/code/value in the binding tree for this device */ - if ( ed_bindings_store_lookup( dev->info->bindings , &ev , &action_code ) == TRUE ) - { - /* this has been binded to an action, call the corresponding action */ - DEBUGMSG( "found action code %i for event (%d,%d,%d)\n" , - action_code , inputev.type , inputev.code , inputev.value ); - ed_action_call( action_code , NULL ); - } - } - } - } - break; - } - default: - ; - } - - return TRUE; -} - - -GList * -ed_device_get_list_from_system ( void ) -{ - GIOChannel *iochan; - gchar *buffer; - gsize buffer_len; - gint fd = -1; - - fd = g_open( "/proc/bus/input/devices" , O_RDONLY , 0 ); - if ( fd < 0 ) - { - /* an error occurred */ - g_warning( _("event-device-plugin: unable to open /proc/bus/input/devices , automatic " - "detection of event devices won't work.\n") ); - return NULL; - } - - iochan = g_io_channel_unix_new( fd ); - if ( iochan == NULL ) - { - /* an error occurred */ - g_warning( _("event-device-plugin: unable to open a io_channel for /proc/bus/input/devices , " - "automatic detection of event devices won't work.\n") ); - close( fd ); - return NULL; - } - g_io_channel_set_encoding( iochan , "UTF-8" , NULL ); /* utf-8 text */ - - if ( g_io_channel_read_to_end( iochan , &buffer , &buffer_len , NULL ) != G_IO_STATUS_NORMAL ) - { - /* an error occurred */ - g_warning( _("event-device-plugin: an error occurred while reading /proc/bus/input/devices , " - "automatic detection of event devices won't work.\n") ); - g_io_channel_shutdown( iochan , TRUE , NULL ); - g_io_channel_unref( iochan ); - close( fd ); - return NULL; - } - else - { - regex_t preg; - gint search_offset = 0; - GList *system_devices_list = NULL; - - /* we don't need these anymore */ - g_io_channel_shutdown( iochan , TRUE , NULL ); - g_io_channel_unref( iochan ); - close( fd ); - - /* parse content of /proc/bus/input/devices */ - regcomp( &preg, - "I:[^\n]*\nN: Name=\"([^\n]*)\"\nP: Phys=([^\n]*)\n([^\n]+\n)*H: Handlers=[^\n]*(event[0-9]+)[^\n]*\n" , - REG_ICASE | REG_EXTENDED ); - - while ( search_offset > -1 ) - { - size_t nmatch = 5; - regmatch_t submatch[5]; - - if ( regexec( &preg , &buffer[search_offset] , nmatch , submatch , 0 ) == 0 ) - { - GString *device_name = NULL; - GString *device_phys = NULL; - GString *device_file = NULL; - - if ( submatch[1].rm_so != -1 ) /* check validity of name sub-expression */ - { - device_name = g_string_new( "" ); - g_string_append_len( device_name , - &buffer[(search_offset + submatch[1].rm_so)] , - submatch[1].rm_eo - submatch[1].rm_so ); - } - - if ( submatch[2].rm_so != -1 ) /* check validity of physicalport sub-expression */ - { - device_phys = g_string_new( "" ); - g_string_append_len( device_phys , - &buffer[(search_offset + submatch[2].rm_so)] , - submatch[2].rm_eo - submatch[2].rm_so ); - } - - if ( submatch[4].rm_so != -1 ) /* check validity of filename sub-expression */ - { - device_file = g_string_new( "" ); - GString *device_test = g_string_new( "" ); - g_string_append_len( device_file , - &buffer[(search_offset + submatch[4].rm_so)] , - submatch[4].rm_eo - submatch[4].rm_so ); - - /* let's check if the filename actually exists in /dev */ - g_string_printf( device_test , "/dev/input/%s" , (char*)device_file->str ); - if ( !g_file_test( device_test->str , G_FILE_TEST_EXISTS ) ) - { - /* it doesn't exist, mark as invalid device by nullifying device_file*/ - g_warning( _("event-device-plugin: device %s not found in /dev/input , skipping.\n") , (char*)device_file ); - g_string_free( device_file , TRUE ); - device_file = NULL; - } - else - { - /* it does exist, mark as valid device by using the full path in device_file*/ - g_string_assign( device_file , device_test->str ); - } - g_string_free( device_test , TRUE ); - } - - if (( device_name != NULL ) && ( device_phys != NULL ) && ( device_file != NULL )) - { - /* add item to the list */ - ed_device_info_t *info = ed_device_info_new( - device_name->str , device_file->str , device_phys->str , 0 ); - info->reg = 0; - DEBUGMSG( "device found, name:\"%s\" , file \"%s\" , phys \"%s\"\n" , - info->name , info->filename , info->phys ); - system_devices_list = g_list_append( system_devices_list , info ); - } - - if ( device_name != NULL ) - g_string_free( device_name , TRUE ); - if ( device_phys != NULL ) - g_string_free( device_phys , TRUE ); - if ( device_file != NULL ) - g_string_free( device_file , TRUE ); - - search_offset += submatch[0].rm_eo; /* update offset for further search */ - } - else - { - /* no more valid devices found */ - search_offset = -1; - } - } - regfree( &preg ); - return system_devices_list; - } -} - - -GList * -ed_device_get_list_from_config ( void ) -{ - GKeyFile *keyfile = NULL; - GList *config_devices_list = NULL; - gboolean is_loaded = FALSE; - gchar **device_names = NULL; - gsize device_names_num = 0; - gchar *config_pathfilename = NULL; - gchar *config_datadir = NULL; - gint i = 0; - - config_datadir = (gchar*)aud_util_get_localdir(); - config_pathfilename = g_build_filename( config_datadir , PLAYER_LOCALRC_FILE , NULL ); - g_free( config_datadir ); - keyfile = g_key_file_new(); - is_loaded = g_key_file_load_from_file( keyfile , config_pathfilename , G_KEY_FILE_NONE , NULL ); - g_free( config_pathfilename ); - - if ( is_loaded != TRUE ) - { - g_warning( _("event-device-plugin: unable to load config file %s , default settings will be used.\n") , - PLAYER_LOCALRC_FILE ); - g_key_file_free( keyfile ); - return NULL; - } - - /* remove ___plugin___ group that contains plugin settings */ - g_key_file_remove_group( keyfile , "___plugin___" , NULL ); - - /* the other groups are devices; check them and run active ones */ - device_names = g_key_file_get_groups( keyfile , &device_names_num ); - while ( device_names[i] != NULL ) - { - gint device_is_custom = 0; - gchar *device_file = NULL; - gchar *device_phys = NULL; - gboolean device_is_active = FALSE; - gint result = 0; - - result = ed_util_get_data_from_keyfile( - keyfile , device_names[i] , - ED_CONFIG_INFO_FILENAME , &device_file , - ED_CONFIG_INFO_PHYS , &device_phys , - ED_CONFIG_INFO_ISCUSTOM , &device_is_custom , - ED_CONFIG_INFO_ISACTIVE , &device_is_active , - ED_CONFIG_INFO_END ); - - if ( result == 0 ) - { - /* all information succesfully retrieved from config, create a ed_device_info_t */ - ed_device_info_t *info; - - info = ed_device_info_new( device_names[i] , device_file , - device_phys , device_is_custom ); - - /* pick bindings for this device */ - info->bindings = ed_util_get_bindings_from_keyfile( keyfile , device_names[i] ); - info->is_active = device_is_active; - - /* add this device to the config list */ - config_devices_list = g_list_append( config_devices_list , info ); - /* free information from config file, info has its own copies */ - g_free( device_file ); g_free( device_phys ); - } - else - { - g_warning( _("event-device-plugin: incomplete information in config file for device \"%s\"" - " , skipping.\n") , device_names[i] ); - } - - i++; /* on with next */ - } - - g_strfreev( device_names ); - g_key_file_free( keyfile ); - return config_devices_list; -} - - -void -ed_device_free_list ( GList * system_devices_list ) -{ - GList *list_iter = system_devices_list; - while ( list_iter != NULL ) - { - ed_device_info_delete( (ed_device_info_t*)list_iter->data ); - list_iter = g_list_next( list_iter ); - } - g_list_free( system_devices_list ); - return; -} - - -void -ed_device_start_listening_from_config ( void ) -{ - GKeyFile *keyfile = NULL; - gboolean is_loaded = FALSE; - gchar **device_names = NULL; - gsize device_names_num = 0; - gchar *config_pathfilename = NULL; - gchar *config_datadir = NULL; - GList *system_devices_list = NULL; - gint i = 0; - - config_datadir = (gchar*)aud_util_get_localdir(); - config_pathfilename = g_build_filename( config_datadir , PLAYER_LOCALRC_FILE , NULL ); - g_free( config_datadir ); - keyfile = g_key_file_new(); - is_loaded = g_key_file_load_from_file( keyfile , config_pathfilename , G_KEY_FILE_NONE , NULL ); - g_free( config_pathfilename ); - - if ( is_loaded != TRUE ) - { - g_warning( _("event-device-plugin: unable to load config file %s , default settings will be used.\n") , - PLAYER_LOCALRC_FILE ); - g_key_file_free( keyfile ); - return; - } - - system_devices_list = ed_device_get_list_from_system(); - - /* remove ___plugin___ group that contains plugin settings */ - g_key_file_remove_group( keyfile , "___plugin___" , NULL ); - - /* check available devices and run active ones */ - device_names = g_key_file_get_groups( keyfile , &device_names_num ); - while ( device_names[i] != NULL ) - { - GError *gerr = NULL; - gboolean is_active; - - is_active = g_key_file_get_boolean( keyfile , device_names[i] , "is_active" , &gerr ); - if ( gerr != NULL ) - { - g_warning( _("event-device-plugin: configuration, unable to get is_active value for device \"%s\"" - ", skipping it.\n") , device_names[i] ); - g_clear_error( &gerr ); - } - - if ( is_active == TRUE ) /* only care about active devices at this time, ignore others */ - { - gint is_custom = 0; - gchar *device_file = NULL; - gchar *device_phys = NULL; - gint result = 0; - - result = ed_util_get_data_from_keyfile( - keyfile , device_names[i] , - ED_CONFIG_INFO_FILENAME , &device_file , - ED_CONFIG_INFO_PHYS , &device_phys , - ED_CONFIG_INFO_ISCUSTOM , &is_custom , - ED_CONFIG_INFO_END ); - - if ( result != 0 ) - { - /* something wrong, skip this device */ - i++; continue; - } - - /* unless this is a custom device, perform a device check */ - if ( is_custom != 1 ) - { - /* not a custom device, check it against system_devices_list - to see if its information should be updated or if it's not plugged at all */ - gint check_result = ed_device_check( - system_devices_list , device_names[i] , &device_file , &device_phys ); - - if ( check_result == ED_DEVCHECK_OK ) - { - /* ok, we have an active not-custom device and it has been successfully - checked too; create a ed_device_t item for it */ - ed_device_t *dev = ed_device_new ( device_names[i] , device_file , device_phys , 0 ); - g_free( device_file ); g_free( device_phys ); /* not needed anymore */ - if ( dev != NULL ) - { - dev->info->bindings = ed_util_get_bindings_from_keyfile( keyfile , device_names[i] ); - ed_device_start_listening ( dev ); - } - } - - /* note: if check_result == ED_DEVCHECK_ABSENT, we simply skip this device */ - } - else - { - /* ok, we have an active custom device; create a ed_device_t item for it */ - ed_device_t *dev = ed_device_new ( device_names[i] , device_file , device_phys , 1 ); - g_free( device_file ); g_free( device_phys ); /* not needed anymore */ - if ( dev != NULL ) - { - dev->info->bindings = ed_util_get_bindings_from_keyfile( keyfile , device_names[i] ); - ed_device_start_listening ( dev ); - } - } - } - - /* on with next device name */ - i++; - } - - g_strfreev( device_names ); - ed_device_free_list( system_devices_list ); - g_key_file_free( keyfile ); - return; -} - - -/* this function checks that a given event device (with device_name, - device_phys and device_file) exists in system_devices_list; device_phys - and device_file must be dynamically-allocated string, they could - be freed and reallocated if their information needs to be updated; - it returns an integer, its value represents the performed operations */ -gint -ed_device_check ( GList * system_devices_list , - gchar * device_name , - gchar ** device_file , - gchar ** device_phys ) -{ - /* first, search in the list for a device, named device_name, - that has not been found in a previous ed_device_check - made with the same system_devices_list (info->reg == 0) */ - GList *list_iter = system_devices_list; - - while ( list_iter != NULL ) - { - ed_device_info_t *info = list_iter->data; - - if ( ( info->reg == 0 ) && ( strcmp( device_name , info->name ) == 0 ) ) - { - /* found a device, check if it has the same physical address */ - if ( strcmp( *device_phys , info->phys ) == 0 ) - { - /* good, same device name and same physical - address; update device_file if necessary */ - if ( strcmp( *device_file , info->filename ) != 0 ) - { - g_free( *device_file ); - *device_file = g_strdup( info->filename ); - } - /* now mark it as "found" so it won't be searched in next - ed_device_check made with the same system_devices_list*/ - info->reg = 1; - /* everything done */ - return ED_DEVCHECK_OK; - } - else - { - /* device found, but physical address is not the one from *device_phys; try to - search further in system_devices_list for a device with same name and address */ - GList *list_iter2 = g_list_next(list_iter); - while ( list_iter2 != NULL ) - { - ed_device_info_t *info2 = list_iter2->data; - if ( ( info2->reg == 0 ) && - ( strcmp( device_name , info2->name ) == 0 ) && - ( strcmp( *device_phys , info2->phys ) == 0 ) ) - { - /* found a device with the same name and address, - so let's use it; update device_file if necessary */ - if ( strcmp( *device_file , info2->filename ) != 0 ) - { - g_free( *device_file ); - *device_file = g_strdup( info2->filename ); - } - /* now mark it as "found" so it won't be searched in next - ed_device_check made with the same system_devices_list */ - info2->reg = 1; - /* everything done */ - return ED_DEVCHECK_OK; - } - list_iter2 = g_list_next(list_iter2); - } - - /* if we get to this point, it means that there isn't any device named - device_name with physical address equal to *device_phys ; there is only - one (or more) device named device_name but with different physical - address; we'll use the first of those (alas the current content of info) */ - g_free( *device_phys ); /* free outdated device_phys */ - *device_phys = g_strdup( info->phys ); /* update it with the new one */ - - /* update device_file if necessary */ - if ( strcmp( *device_file , info->filename ) != 0 ) - { - g_free( *device_file ); - *device_file = g_strdup( info->filename ); - } - - /* now mark it as "found" so it won't be searched in next - ed_device_check made with the same system_devices_list*/ - info->reg = 1; - /* everything done */ - return ED_DEVCHECK_OK; - } - } - - list_iter = g_list_next(list_iter); - } - - /* the entire system_devices_list was searched, - but no device named device_name was found */ - return ED_DEVCHECK_ABSENT; -} - - - -/* config */ -static void -ed_config_save_from_list_bindings_foreach ( ed_inputevent_t * iev , - gint action_code , - gpointer keyfile , - gpointer info_gp ) -{ - gint int_list[4]; - gchar *keyname; - ed_device_info_t *info = info_gp; - keyname = g_strdup_printf( "b%i" , info->reg ); - int_list[0] = action_code; - int_list[1] = iev->type; - int_list[2] = iev->code; - int_list[3] = iev->value; - g_key_file_set_integer_list( keyfile , info->name , keyname , int_list , 4 ); - g_free( keyname ); - info->reg++; - return; -} - -gint -ed_config_save_from_list ( GList * config_devices_list ) -{ - GKeyFile *keyfile; - GList *iter_list = NULL; - gchar *keyfile_str = NULL; - gsize keyfile_str_len = 0; - GIOChannel *iochan; - gchar *config_pathfilename = NULL; - gchar *config_datadir = NULL; - - config_datadir = (gchar*)aud_util_get_localdir(); - config_pathfilename = g_build_filename( config_datadir , PLAYER_LOCALRC_FILE , NULL ); - - keyfile = g_key_file_new(); - - g_key_file_set_string( keyfile , "___plugin___" , "config_ver" , ED_VERSION_CONFIG ); - - iter_list = config_devices_list; - while ( iter_list != NULL ) - { - ed_device_info_t *info = iter_list->data; - g_key_file_set_string( keyfile , info->name , "filename" , info->filename ); - g_key_file_set_string( keyfile , info->name , "phys" , info->phys ); - g_key_file_set_boolean( keyfile , info->name , "is_active" , info->is_active ); - g_key_file_set_integer( keyfile , info->name , "is_custom" , info->is_custom ); - /* use the info->reg field as a counter to list actions */ - info->reg = 0; /* init the counter */ - if ( info->bindings != NULL ) - ed_bindings_store_foreach( info->bindings , - ed_config_save_from_list_bindings_foreach , keyfile , info ); - iter_list = g_list_next( iter_list ); - } - - keyfile_str = g_key_file_to_data( keyfile , &keyfile_str_len , NULL ); - if ( g_file_test( config_datadir , G_FILE_TEST_IS_DIR ) == TRUE ) - { - iochan = g_io_channel_new_file( config_pathfilename , "w" , NULL ); - g_io_channel_set_encoding( iochan , "UTF-8" , NULL ); - g_io_channel_write_chars( iochan , keyfile_str , keyfile_str_len , NULL , NULL ); - g_io_channel_shutdown( iochan , TRUE , NULL ); - g_io_channel_unref( iochan ); - } - else - { - g_warning( _("event-device-plugin: unable to access local directory %s , settings will not be saved.\n") , - config_datadir ); - } - - g_free( keyfile_str ); - g_free( config_datadir ); - g_key_file_free( keyfile ); - return 0; -} - - -/* utils */ - - -/* this picks information from a keyfile, using device_name - as group name; information must be requested by passing - a ed_config_info_t value and a corresponding container; - list of requested information must be terminated with - ED_CONFIG_INFO_END; returns 0 if everything is found, - returns negative values if some information is missing */ -static gint -ed_util_get_data_from_keyfile( GKeyFile * keyfile , gchar * device_name , ... ) -{ - GError *gerr = NULL; - gboolean is_failed = FALSE; - ed_config_info_t info_code = ED_CONFIG_INFO_END; - GList *temp_stringstore = NULL; - va_list ap; - - /* when we get a string value from g_key_file_get_string, we temporarily - store its container in temp_stringstore; if subsequent information - requests in the iteraton fails, we free the information in previous - container and nullify its content; - this way, user will get complete information (return value 0) or - absent information (all string containers nullified, return value -1) */ - - va_start( ap, device_name ); - - while ( ( is_failed == FALSE ) && - ( ( info_code = va_arg( ap , ed_config_info_t ) ) != ED_CONFIG_INFO_END ) ) - { - switch ( info_code ) - { - case ED_CONFIG_INFO_FILENAME: - { - gchar **device_file = va_arg( ap , gchar ** ); - *device_file = g_key_file_get_string( keyfile , device_name , "filename" , &gerr ); - if ( gerr != NULL ) - { - g_clear_error( &gerr ); - g_warning( _("event-device-plugin: configuration, unable to get filename value for device \"%s\"" - ", skipping it.\n") , device_name ); - is_failed = TRUE; - } - else - temp_stringstore = g_list_append( temp_stringstore , device_file ); - break; - } - - case ED_CONFIG_INFO_PHYS: - { - gchar **device_phys = va_arg( ap , gchar ** ); - *device_phys = g_key_file_get_string( keyfile , device_name , "phys" , &gerr ); - if ( gerr != NULL ) - { - g_clear_error( &gerr ); - g_warning( _("event-device-plugin: configuration, unable to get phys value for device \"%s\"" - ", skipping it.\n") , device_name ); - is_failed = TRUE; - } - else - temp_stringstore = g_list_append( temp_stringstore , device_phys ); - break; - } - - case ED_CONFIG_INFO_ISCUSTOM: - { - gint *is_custom = va_arg( ap , gint * ); - *is_custom = g_key_file_get_integer( keyfile , device_name , "is_custom" , &gerr ); - if ( gerr != NULL ) - { - g_clear_error( &gerr ); - g_warning( _("event-device-plugin: configuration, unable to get is_custom value for device \"%s\"" - ", skipping it.\n") , device_name ); - is_failed = TRUE; - } - break; - } - - case ED_CONFIG_INFO_ISACTIVE: - { - gboolean *is_active = va_arg( ap , gboolean * ); - *is_active = g_key_file_get_boolean( keyfile , device_name , "is_active" , &gerr ); - if ( gerr != NULL ) - { - g_clear_error( &gerr ); - g_warning( _("event-device-plugin: configuration, unable to get is_active value for device \"%s\"" - ", skipping it.\n") , device_name ); - is_failed = TRUE; - } - break; - } - - default: - { - /* unexpected value in info_code, skipping */ - g_warning( _("event-device-plugin: configuration, unexpected value for device \"%s\"" - ", skipping it.\n") , device_name ); - is_failed = TRUE; - } - } - } - - va_end( ap ); - - if ( is_failed == FALSE ) - { - /* temp_stringstore is not needed anymore, - do not change pointed containers */ - g_list_free( temp_stringstore ); - return 0; - } - else - { - /* temp_stringstore is not needed anymore, - nullify pointed containers and free content */ - GList *list_iter = temp_stringstore; - while ( list_iter != NULL ) - { - gchar **container = list_iter->data; - g_free( *container ); - *container = NULL; - list_iter = g_list_next( list_iter ); - } - g_list_free( temp_stringstore ); - return -1; - } -} - - -/* this does just what its name says :) */ -static gpointer -ed_util_get_bindings_from_keyfile( GKeyFile * keyfile , gchar * device_name ) -{ - ed_inputevent_t *iev = g_malloc(sizeof(ed_inputevent_t)); - gpointer bindings = ed_bindings_store_new(); - gchar **keys; - gint j = 0; - - /* now get bindings for this device */ - keys = g_key_file_get_keys( keyfile , device_name , NULL , NULL ); - while ( keys[j] != NULL ) - { - /* in the config file, only bindings start with the 'b' character */ - if ( keys[j][0] == 'b' ) - { - gsize ilist_len = 0; - gint *ilist; - ilist = g_key_file_get_integer_list( keyfile , - device_name , keys[j] , &ilist_len , NULL ); - if ( ilist_len > 3 ) - { - gint action_code = (gint)ilist[0]; - iev->type = (guint)ilist[1]; - iev->code = (guint)ilist[2]; - iev->value = (gint)ilist[3]; - ed_bindings_store_insert( bindings , iev , action_code ); - } - g_free( ilist ); - } - j++; - } - - g_strfreev( keys ); - g_free( iev ); - - if ( ed_bindings_store_size( bindings ) == 0 ) - { - ed_bindings_store_delete( bindings ); - bindings = NULL; - } - - return bindings; -} diff -Nru audacious-plugins-2.4.4/src/evdev-plug/ed_internals.h audacious-plugins-3.2/src/evdev-plug/ed_internals.h --- audacious-plugins-2.4.4/src/evdev-plug/ed_internals.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/evdev-plug/ed_internals.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -/* -* -* Author: Giacomo Lozito , (C) 2005-2007 -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2 of the License, or (at your -* option) any later version. -* -* This program 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 -* General Public License for more details. -* -* You should have received a copy of the GNU General Public License along -* with this program; if not, write to the Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* -*/ - -#ifndef _I_ED_INTERNALS_H -#define _I_ED_INTERNALS_H 1 - -#include "ed_types.h" -#include "ed_common.h" -#include - -#define ED_DEVCHECK_OK 0 -#define ED_DEVCHECK_ABSENT 1 - -typedef enum -{ - ED_CONFIG_INFO_END = -1, - ED_CONFIG_INFO_FILENAME = 0, - ED_CONFIG_INFO_PHYS, - ED_CONFIG_INFO_ISCUSTOM, - ED_CONFIG_INFO_ISACTIVE -} -ed_config_info_t; - -ed_device_t * ed_device_new ( gchar * , gchar * , gchar * , gint ); -gint ed_device_delete ( ed_device_t * ); - -ed_device_info_t * ed_device_info_new ( gchar * , gchar * , gchar * , gint ); -gint ed_device_info_delete ( ed_device_info_t * ); - -gint ed_device_start_listening ( ed_device_t * ); -void ed_device_start_listening_from_config ( void ); -gint ed_device_stop_listening ( ed_device_t * ); -gint ed_device_stop_listening_from_info ( ed_device_info_t * ); -void ed_device_stop_listening_all ( gboolean ); -gboolean ed_device_check_listening_from_info ( ed_device_info_t * ); - -gboolean ed_inputevent_check_equality( ed_inputevent_t * , ed_inputevent_t * ); -gboolean ed_device_info_check_equality( ed_device_info_t * , ed_device_info_t * ); - -/* these function return a GList of ed_device_info_t items */ -GList * ed_device_get_list_from_system ( void ); -GList * ed_device_get_list_from_config ( void ); -void ed_device_free_list ( GList * ); - -gint ed_device_check ( GList * , gchar * , gchar ** , gchar ** ); - -gint ed_config_save_from_list ( GList * ); - -#endif /* !_I_ED_INTERNALS_H */ diff -Nru audacious-plugins-2.4.4/src/evdev-plug/ed_types.h audacious-plugins-3.2/src/evdev-plug/ed_types.h --- audacious-plugins-2.4.4/src/evdev-plug/ed_types.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/evdev-plug/ed_types.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -/* -* -* Author: Giacomo Lozito , (C) 2005-2007 -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2 of the License, or (at your -* option) any later version. -* -* This program 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 -* General Public License for more details. -* -* You should have received a copy of the GNU General Public License along -* with this program; if not, write to the Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* -*/ - -#ifndef _I_ED_TYPES_H -#define _I_ED_TYPES_H 1 - -#include "ed_common.h" -#include - -typedef struct -{ - gchar * name; - gchar * filename; - gchar * phys; - - gint reg; - - gint is_custom; - gboolean is_active; - - gpointer * bindings; -} -ed_device_info_t; - -typedef struct -{ - gint fd; - - GIOChannel * iochan; - guint iochan_sid; - gboolean is_listening; - - ed_device_info_t * info; -} -ed_device_t; - -typedef struct -{ - guint type; - guint code; - gint value; -} -ed_inputevent_t; - -#endif /* !_I_ED_TYPES_H */ diff -Nru audacious-plugins-2.4.4/src/evdev-plug/ed_ui.c audacious-plugins-3.2/src/evdev-plug/ed_ui.c --- audacious-plugins-2.4.4/src/evdev-plug/ed_ui.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/evdev-plug/ed_ui.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1541 +0,0 @@ -/* -* -* Author: Giacomo Lozito , (C) 2005-2007 -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2 of the License, or (at your -* option) any later version. -* -* This program 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 -* General Public License for more details. -* -* You should have received a copy of the GNU General Public License along -* with this program; if not, write to the Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* -*/ - -#include "ed_ui.h" -#include "ed_types.h" -#include "ed_internals.h" -#include "ed_actions.h" -#include "ed_bindings_store.h" -#include "ed_common.h" -#include -#include -#include - -#include -#include - - -static void cfg_ui_bindings_show ( ed_device_t * , GtkTreeRowReference * ); - -extern ed_action_t player_actions[]; -extern gboolean plugin_is_active; - -static GtkWidget *cfg_win = NULL; - -enum -{ - DEVLIST_COL_ISACTIVE = 0, - DEVLIST_COL_NAME, - DEVLIST_COL_FILENAME, - DEVLIST_COL_PHYS, - DEVLIST_COL_ISAVAILABLE, - DEVLIST_COL_BINDINGS, - DEVLIST_NUMCOLS -}; - -enum -{ - DEVLIST_ISAVAILABLE_NOTDET = 0, - DEVLIST_ISAVAILABLE_DET, - DEVLIST_ISAVAILABLE_CUSTOM -}; - - - -static void -cfg_device_lv_populate( GtkListStore * store ) -{ - /* store is logically divided in three families of devices, - depending on the ISAVAILABLE value; - DEVLIST_ISAVAILABLE_NOTDET -> not detected devices: these are not-custom - devices that are present in configuration file but they do not seem - to be plugged at the moment, cause they're not in system_devices_list; - DEVLIST_ISAVAILABLE_DET -> detected devices: these are not-custom devices that - are currently plugged, no matter whether they are in configuration or not; - DEVLIST_ISAVAILABLE_CUSTOM -> custom devices: defined by user in configuration - file, these are not checked against system_devices_list; - */ - - GList *system_devices_list = NULL; - GList *config_devices_list = NULL; - GList *list_iter = NULL; - - system_devices_list = ed_device_get_list_from_system(); - config_devices_list = ed_device_get_list_from_config(); - - /* first, for each not-custom device in config_devices_list, - perform a search in system_devices_list */ - list_iter = config_devices_list; - while ( list_iter != NULL ) - { - ed_device_info_t *info_from_cfg = list_iter->data; - if ( info_from_cfg->is_custom == 0 ) /* only try to detect not-custom devices */ - { - /* note: if device is found, filename and phys in info_from_cfg could be updated by the - check; the found device will be marked as "found" in system_devices_list too */ - if ( ed_device_check( system_devices_list , - info_from_cfg->name , &(info_from_cfg->filename) , &(info_from_cfg->phys) ) == ED_DEVCHECK_OK ) - { - info_from_cfg->reg = 1; /* mark our device from config as "found" */ - } - } - list_iter = g_list_next( list_iter ); - } - - /* at this point, we have three logical groups: - #1 - not-custom devices in config_devices_list, marked as "found" -> DEVLIST_ISAVAILABLE_DET - #2 - not-custom devices in config_devices_list, not-marked -> DEVLIST_ISAVAILABLE_NOTDET - #3 - custom devices in config_devices_list -> DEVLIST_ISAVAILABLE_CUSTOM - #1bis - plus, we pick not-marked devices from system_devices_list, which - are plugged devices that are not present in config_devices_list -> DEVLIST_ISAVAILABLE_DET - */ - - /* let's start to fill the store with items from group #1 (DEVLIST_ISAVAILABLE_DET) */ - list_iter = config_devices_list; - while ( list_iter != NULL ) - { - ed_device_info_t *info_from_cfg = list_iter->data; - if (( info_from_cfg->reg == 1 ) && ( info_from_cfg->is_custom == 0 )) - { - GtkTreeIter iter; - gtk_list_store_append( store , &iter ); - gtk_list_store_set( store , &iter , - DEVLIST_COL_ISACTIVE , info_from_cfg->is_active , - DEVLIST_COL_NAME , info_from_cfg->name , - DEVLIST_COL_FILENAME , info_from_cfg->filename , - DEVLIST_COL_PHYS , info_from_cfg->phys , - DEVLIST_COL_ISAVAILABLE , DEVLIST_ISAVAILABLE_DET , - DEVLIST_COL_BINDINGS , info_from_cfg->bindings , - -1 ); - } - list_iter = g_list_next( list_iter ); - } - - /* add items from group #1bis (DEVLIST_ISAVAILABLE_DET) */ - list_iter = system_devices_list; - while ( list_iter != NULL ) - { - ed_device_info_t *info_from_sys = list_iter->data; - if ( info_from_sys->reg == 0 ) - { - GtkTreeIter iter; - gtk_list_store_append( store , &iter ); - gtk_list_store_set( store , &iter , - DEVLIST_COL_ISACTIVE , info_from_sys->is_active , - DEVLIST_COL_NAME , info_from_sys->name , - DEVLIST_COL_FILENAME , info_from_sys->filename , - DEVLIST_COL_PHYS , info_from_sys->phys , - DEVLIST_COL_ISAVAILABLE , DEVLIST_ISAVAILABLE_DET , - DEVLIST_COL_BINDINGS , info_from_sys->bindings , - -1 ); - } - list_iter = g_list_next( list_iter ); - } - - /* add items from group #2 (DEVLIST_ISAVAILABLE_NOTDET) */ - list_iter = config_devices_list; - while ( list_iter != NULL ) - { - ed_device_info_t *info_from_cfg = list_iter->data; - if (( info_from_cfg->reg == 0 ) && ( info_from_cfg->is_custom == 0 )) - { - GtkTreeIter iter; - gtk_list_store_append( store , &iter ); - gtk_list_store_set( store , &iter , - DEVLIST_COL_ISACTIVE , info_from_cfg->is_active , - DEVLIST_COL_NAME , info_from_cfg->name , - DEVLIST_COL_FILENAME , info_from_cfg->filename , - DEVLIST_COL_PHYS , info_from_cfg->phys , - DEVLIST_COL_ISAVAILABLE , DEVLIST_ISAVAILABLE_NOTDET , - DEVLIST_COL_BINDINGS , info_from_cfg->bindings , - -1 ); - } - list_iter = g_list_next( list_iter ); - } - - /* add items from group #3 (DEVLIST_ISAVAILABLE_CUSTOM) */ - list_iter = config_devices_list; - while ( list_iter != NULL ) - { - ed_device_info_t *info_from_cfg = list_iter->data; - if ( info_from_cfg->is_custom == 1 ) - { - GtkTreeIter iter; - gtk_list_store_append( store , &iter ); - gtk_list_store_set( store , &iter , - DEVLIST_COL_ISACTIVE , info_from_cfg->is_active , - DEVLIST_COL_NAME , info_from_cfg->name , - DEVLIST_COL_FILENAME , info_from_cfg->filename , - DEVLIST_COL_PHYS , info_from_cfg->phys , - DEVLIST_COL_ISAVAILABLE , DEVLIST_ISAVAILABLE_CUSTOM , - DEVLIST_COL_BINDINGS , info_from_cfg->bindings , - -1 ); - } - list_iter = g_list_next( list_iter ); - } - - /* delete lists; bindings objects are not deleted, - they must be accessible from liststore for customization - and they'll be deleted when the config win is destroyed */ - ed_device_free_list( config_devices_list ); - ed_device_free_list( system_devices_list ); - return; -} - - -static void -cfg_device_lv_celldatafunc_isavailable( GtkTreeViewColumn * col , GtkCellRenderer * renderer , - GtkTreeModel * model , GtkTreeIter * iter , gpointer data ) -{ - guint is_available = 0; - gtk_tree_model_get( model , iter , DEVLIST_COL_ISAVAILABLE , &is_available , -1 ); - switch (is_available) - { - case DEVLIST_ISAVAILABLE_DET: - g_object_set( renderer , "text" , _("Detected") , - "foreground" , "Green" , "foreground-set" , TRUE , - "background" , "Black" , "background-set" , TRUE , NULL ); - break; - case DEVLIST_ISAVAILABLE_CUSTOM: - g_object_set( renderer , "text" , _("Custom") , - "foreground" , "Yellow" , "foreground-set" , TRUE , - "background" , "Black" , "background-set" , TRUE , NULL ); - break; - case DEVLIST_ISAVAILABLE_NOTDET: - default: - g_object_set( renderer , "text" , _("Not Detected") , - "foreground" , "Orange" , "foreground-set" , TRUE , - "background" , "Black" , "background-set" , TRUE , NULL ); - break; - } - return; -} - - -static void -cfg_device_lv_changetoggle ( GtkCellRendererToggle * toggle , - gchar * path_str , gpointer cfg_device_lv ) -{ - GtkTreeModel *model = gtk_tree_view_get_model( GTK_TREE_VIEW(cfg_device_lv) ); - GtkTreeIter iter; - GtkTreePath *path = gtk_tree_path_new_from_string( path_str ); - gboolean toggled; - - gtk_tree_model_get_iter( model , &iter , path ); - gtk_tree_model_get( model , &iter , DEVLIST_COL_ISACTIVE , &toggled , -1 ); - - toggled ^= 1; - gtk_list_store_set( GTK_LIST_STORE(model), &iter , DEVLIST_COL_ISACTIVE , toggled , -1 ); - - gtk_tree_path_free( path ); - return; -} - - -static void -cfg_config_cb_bindings_show ( gpointer cfg_device_lv ) -{ - GtkTreeSelection *sel; - GtkTreeModel *model; - GtkTreeIter iter; - - /* check if a row is selected */ - sel = gtk_tree_view_get_selection( GTK_TREE_VIEW(cfg_device_lv) ); - if ( gtk_tree_selection_get_selected( sel , &model , &iter ) == TRUE ) - { - /* check availability and active status */ - guint is_available = 0; - gboolean is_active = FALSE; - - gtk_tree_model_get( model , &iter , - DEVLIST_COL_ISACTIVE , &is_active , - DEVLIST_COL_ISAVAILABLE , &is_available , - -1 ); - - if ( is_available == DEVLIST_ISAVAILABLE_NOTDET ) - { - /* do not open bindings window for a not-detected device */ - ed_ui_message_show( _("Information") , - _("Cannot open bindings window for a not-detected device.\n" - "Ensure that the device has been correctly plugged in.") , - cfg_win ); - return; - } - else - { - /* ok, create a ed_device_t item from selected row information */ - ed_device_t *dev; - gchar *device_name = NULL, *device_file = NULL, *device_phys = NULL; - gpointer bindings = NULL; - - gtk_tree_model_get( model , &iter , - DEVLIST_COL_NAME , &device_name , - DEVLIST_COL_FILENAME , &device_file , - DEVLIST_COL_PHYS , &device_phys , - DEVLIST_COL_BINDINGS , &bindings , - -1 ); - - dev = ed_device_new( - device_name , device_file , device_phys , - ( is_available == DEVLIST_ISAVAILABLE_CUSTOM ? 1 : 0 ) ); - g_free( device_name ); g_free( device_file ); g_free( device_phys ); - - if ( dev != NULL ) - { - GtkTreePath *path; - GtkTreeRowReference *rowref; - - dev->info->bindings = bindings; - - path = gtk_tree_model_get_path( model , &iter ); - rowref = gtk_tree_row_reference_new( model , path ); - gtk_tree_path_free( path ); - /* show bindings window for device "dev"; also pass to the bindings window - the GtkTreeRowReference (it keeps track of the model too) for selected row; - if changes are committed in the bindings window, the row reference will be - needed to update the treemodel with the new bindings information */ - cfg_ui_bindings_show( dev , rowref ); - } - else - { - /* something went wrong */ - ed_ui_message_show( _("Error") , - _("Unable to open selected device.\n" - "Please check read permissions on device file.") , - cfg_win ); - } - } - } -} - - -static void -cfg_config_cb_addcustom_show ( gpointer cfg_device_lv ) -{ - GtkWidget *addc_dlg; - GtkWidget *addc_data_frame, *addc_data_vbox; - GtkWidget *addc_data_label; - GtkWidget *addc_data_table; - GtkWidget *addc_data_name_label, *addc_data_name_entry; - GtkWidget *addc_data_file_label, *addc_data_file_entry; - gint result; - gboolean task_done = FALSE; - - addc_dlg = gtk_dialog_new_with_buttons( _("EvDev-Plug - Add custom device") , - GTK_WINDOW(cfg_win) , GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT , - GTK_STOCK_CANCEL , GTK_RESPONSE_REJECT , GTK_STOCK_OK , GTK_RESPONSE_ACCEPT , NULL ); - - addc_data_frame = gtk_frame_new( NULL ); - gtk_container_add( GTK_CONTAINER(GTK_DIALOG(addc_dlg)->vbox) , addc_data_frame ); - addc_data_vbox = gtk_vbox_new( FALSE , 5 ); - gtk_container_set_border_width( GTK_CONTAINER(addc_data_vbox) , 5 ); - gtk_container_add( GTK_CONTAINER(addc_data_frame) , addc_data_vbox ); - - addc_data_label = gtk_label_new( "" ); - gtk_label_set_text( GTK_LABEL(addc_data_label) , - _("EvDev-Plug tries to automatically detect and update information about\n" - "event devices available on the system.\n" - "However, if auto-detect doesn't work for your system, or you have event\n" - "devices in a non-standard location (currently they're only searched in\n" - "/dev/input/ ), you may want to add a custom device, explicitly specifying\n" - "name and device file.") ); - gtk_box_pack_start( GTK_BOX(addc_data_vbox) , addc_data_label , FALSE , FALSE , 0 ); - - addc_data_name_label = gtk_label_new( _("Device name:") ); - gtk_misc_set_alignment( GTK_MISC(addc_data_name_label) , 0 , 0.5 ); - addc_data_name_entry = gtk_entry_new(); - - addc_data_file_label = gtk_label_new( _("Device file:") ); - gtk_misc_set_alignment( GTK_MISC(addc_data_file_label) , 0 , 0.5 ); - addc_data_file_entry = gtk_entry_new(); - - addc_data_table = gtk_table_new( 2 , 2 , FALSE ); - gtk_table_set_col_spacings( GTK_TABLE(addc_data_table) , 2 ); - gtk_table_set_row_spacings( GTK_TABLE(addc_data_table) , 2 ); - gtk_table_attach( GTK_TABLE(addc_data_table) , addc_data_name_label , 0 , 1 , 0 , 1 , - GTK_FILL , GTK_EXPAND | GTK_FILL , 0 , 0 ); - gtk_table_attach( GTK_TABLE(addc_data_table) , addc_data_name_entry , 1 , 2 , 0 , 1 , - GTK_EXPAND | GTK_FILL , GTK_EXPAND | GTK_FILL , 0 , 0 ); - gtk_table_attach( GTK_TABLE(addc_data_table) , addc_data_file_label , 0 , 1 , 1 , 2 , - GTK_FILL , GTK_EXPAND | GTK_FILL , 0 , 0 ); - gtk_table_attach( GTK_TABLE(addc_data_table) , addc_data_file_entry , 1 , 2 , 1 , 2 , - GTK_EXPAND | GTK_FILL , GTK_EXPAND | GTK_FILL , 0 , 0 ); - gtk_box_pack_start( GTK_BOX(addc_data_vbox) , addc_data_table , TRUE , TRUE , 0 ); - - gtk_widget_show_all( addc_dlg ); - - while ( task_done == FALSE ) - { - result = gtk_dialog_run( GTK_DIALOG(addc_dlg) ); - if ( result == GTK_RESPONSE_ACCEPT ) - { - const gchar *name = gtk_entry_get_text( GTK_ENTRY(addc_data_name_entry) ); - const gchar *file = gtk_entry_get_text( GTK_ENTRY(addc_data_file_entry) ); - if ( ( strcmp( name , "" ) != 0 ) && - ( strcmp( name , "___plugin___" ) != 0 ) && - ( strcmp( file , "" ) != 0 ) && - ( file[0] == '/' ) ) - { - GtkTreeModel *model = gtk_tree_view_get_model( GTK_TREE_VIEW(cfg_device_lv) ); - GtkTreeIter iter; - - gtk_list_store_append( GTK_LIST_STORE(model) , &iter ); - gtk_list_store_set( GTK_LIST_STORE(model) , &iter , - DEVLIST_COL_ISACTIVE , FALSE , - DEVLIST_COL_NAME , name , - DEVLIST_COL_FILENAME , file , - DEVLIST_COL_PHYS , _("(custom)") , - DEVLIST_COL_ISAVAILABLE , DEVLIST_ISAVAILABLE_CUSTOM , - DEVLIST_COL_BINDINGS , NULL , -1 ); - task_done = TRUE; - } - else - { - ed_ui_message_show( _("Information") , - _("Please specify both name and filename.\n" - "Filename must be specified with absolute path.") , - addc_dlg ); - } - } - else - task_done = TRUE; - } - - gtk_widget_destroy( addc_dlg ); -} - - -static void -cfg_config_cb_remove ( gpointer cfg_device_lv ) -{ - GtkTreeSelection *sel; - GtkTreeModel *model; - GtkTreeIter iter; - - /* check if a row is selected */ - sel = gtk_tree_view_get_selection( GTK_TREE_VIEW(cfg_device_lv) ); - if ( gtk_tree_selection_get_selected( sel , &model , &iter ) == TRUE ) - { - guint is_available = 0; - gtk_tree_model_get( model , &iter , DEVLIST_COL_ISAVAILABLE , &is_available , -1 ); - switch ( is_available ) - { - case DEVLIST_ISAVAILABLE_NOTDET: - { - /* if remove is called on a not-detected device, - it allows to remove existing configuration for it */ - GtkWidget *yesno_dlg = gtk_message_dialog_new( GTK_WINDOW(cfg_win) , - GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT , GTK_MESSAGE_QUESTION , - GTK_BUTTONS_YES_NO , - _("Do you want to remove the existing configuration for selected device?\n") ); - if ( gtk_dialog_run( GTK_DIALOG(yesno_dlg) ) == GTK_RESPONSE_YES ) - { - gpointer bindings = NULL; - gtk_tree_model_get( model , &iter , DEVLIST_COL_BINDINGS , &bindings , -1 ); - if ( bindings != NULL ) ed_bindings_store_delete( bindings ); - gtk_list_store_remove( GTK_LIST_STORE(model) , &iter ); - } - gtk_widget_destroy( yesno_dlg ); - break; - } - - case DEVLIST_ISAVAILABLE_CUSTOM: - { - /* if remove is called on a custom device, - it allows to remove it along with its configuration */ - GtkWidget *yesno_dlg = gtk_message_dialog_new( GTK_WINDOW(cfg_win) , - GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT , GTK_MESSAGE_QUESTION , - GTK_BUTTONS_YES_NO , - _("Do you want to remove the selected custom device?\n") ); - if ( gtk_dialog_run( GTK_DIALOG(yesno_dlg) ) == GTK_RESPONSE_YES ) - { - gpointer bindings = NULL; - gtk_tree_model_get( model , &iter , DEVLIST_COL_BINDINGS , &bindings , -1 ); - if ( bindings != NULL ) ed_bindings_store_delete( bindings ); - gtk_list_store_remove( GTK_LIST_STORE(model) , &iter ); - } - gtk_widget_destroy( yesno_dlg ); - break; - } - - case DEVLIST_ISAVAILABLE_DET: - default: - { - /* do nothing for detected devices */ - break; - } - } - } -} - - -static gboolean -cfg_config_cb_bindings_commit_foreach ( GtkTreeModel * model , - GtkTreePath * path , - GtkTreeIter * iter , - gpointer config_device_list_p ) -{ - gchar *device_name = NULL; - gchar *device_file = NULL; - gchar *device_phys = NULL; - gboolean is_active = FALSE; - guint is_available = 0; - gpointer bindings = NULL; - ed_device_info_t *info; - GList **config_device_list = config_device_list_p; - - gtk_tree_model_get( model , iter , - DEVLIST_COL_ISACTIVE , &is_active , - DEVLIST_COL_NAME , &device_name , - DEVLIST_COL_FILENAME , &device_file , - DEVLIST_COL_PHYS , &device_phys , - DEVLIST_COL_ISAVAILABLE , &is_available , - DEVLIST_COL_BINDINGS , &bindings , -1 ); - - info = ed_device_info_new( device_name , device_file , device_phys , - ( is_available == DEVLIST_ISAVAILABLE_CUSTOM ? 1 : 0 ) ); - info->bindings = bindings; - info->is_active = is_active; - - *config_device_list = g_list_append( *config_device_list , info ); - return FALSE; -} - - -static gboolean -cfg_config_cb_bindings_delbindings_foreach ( GtkTreeModel * model , - GtkTreePath * path , - GtkTreeIter * iter , - gpointer data ) -{ - gpointer bindings = NULL; - gtk_tree_model_get( model , iter , DEVLIST_COL_BINDINGS , &bindings , -1 ); - if ( bindings != NULL ) - ed_bindings_store_delete( bindings ); - return FALSE; -} - - -static void -cfg_config_cb_commit ( gpointer cfg_device_lv ) -{ - GList *config_device_list = NULL; - GtkTreeModel *model; - - model = gtk_tree_view_get_model( GTK_TREE_VIEW(cfg_device_lv) ); - /* fill config_device_list with information from the treeview */ - gtk_tree_model_foreach( model , cfg_config_cb_bindings_commit_foreach , &config_device_list ); - /* ok, now we have a list of ed_device_info_t objects */ - - /* commit changes in configuration file */ - ed_config_save_from_list( config_device_list ); - - /* not needed anymore */ - ed_device_free_list( config_device_list ); - - /* free bindings stored in the liststore */ - gtk_tree_model_foreach( model , cfg_config_cb_bindings_delbindings_foreach , NULL ); - - if ( plugin_is_active == TRUE ) - { - /* restart device listening according to the (possibly changed) config file */ - ed_device_start_listening_from_config(); - } - - gtk_widget_destroy( cfg_win ); -} - - -static void -cfg_config_cb_cancel ( gpointer cfg_device_lv ) -{ - GtkTreeModel *model; - model = gtk_tree_view_get_model( GTK_TREE_VIEW(cfg_device_lv) ); - - /* free bindings stored in the liststore */ - gtk_tree_model_foreach( model , cfg_config_cb_bindings_delbindings_foreach , NULL ); - - if ( plugin_is_active == TRUE ) - { - /* restart device listening according to the (unchanged) config file */ - ed_device_start_listening_from_config(); - } - - gtk_widget_destroy( cfg_win ); -} - - -void -ed_ui_config_show( void ) -{ - GtkWidget *cfg_vbox; - GtkWidget *cfg_device_lv, *cfg_device_lv_frame, *cfg_device_lv_sw; - GtkTreeViewColumn *cfg_device_lv_col_name, *cfg_device_lv_col_filename, *cfg_device_lv_col_phys; - GtkTreeViewColumn *cfg_device_lv_col_isactive, *cfg_device_lv_col_isavailable; - GtkCellRenderer *cfg_device_lv_rndr_text, *cfg_device_lv_rndr_toggle; - GtkCellRenderer *cfg_device_lv_rndr_textphys, *cfg_device_lv_rndr_isavailable; - GtkListStore *device_store; - GtkWidget *cfg_bbar_hbbox; - GtkWidget *cfg_bbar_bt_bind, *cfg_bbar_bt_addc, *cfg_bbar_bt_remc; - GtkWidget *cfg_bbar_bt_cancel, *cfg_bbar_bt_ok; - GdkGeometry cfg_win_hints; - - if ( cfg_win != NULL ) - { - gtk_window_present( GTK_WINDOW(cfg_win) ); - return; - } - - /* IMPORTANT: stop listening for all devices when config window is opened */ - ed_device_stop_listening_all( TRUE ); - - cfg_win = gtk_window_new( GTK_WINDOW_TOPLEVEL ); - gtk_window_set_type_hint( GTK_WINDOW(cfg_win), GDK_WINDOW_TYPE_HINT_DIALOG ); - gtk_window_set_position( GTK_WINDOW(cfg_win), GTK_WIN_POS_CENTER ); - gtk_window_set_title( GTK_WINDOW(cfg_win), _("EvDev-Plug - Configuration") ); - gtk_container_set_border_width( GTK_CONTAINER(cfg_win), 10 ); - g_signal_connect( G_OBJECT(cfg_win) , "destroy" , - G_CALLBACK(gtk_widget_destroyed) , &cfg_win ); - cfg_win_hints.min_width = -1; - cfg_win_hints.min_height = 300; - gtk_window_set_geometry_hints( GTK_WINDOW(cfg_win) , GTK_WIDGET(cfg_win) , - &cfg_win_hints , GDK_HINT_MIN_SIZE ); - - cfg_vbox = gtk_vbox_new( FALSE , 0 ); - gtk_container_add( GTK_CONTAINER(cfg_win) , cfg_vbox ); - - /* current liststore model - ---------------------------------------------- - G_TYPE_BOOLEAN -> device listening on/off - G_TYPE_STRING -> device name - G_TYPE_STRING -> device filename - G_TYPE_STRING -> device physical port - G_TYPE_UINT -> device is available - G_TYPE_POINTER -> device bindings - ---------------------------------------------- - */ - device_store = gtk_list_store_new( - DEVLIST_NUMCOLS , G_TYPE_BOOLEAN , G_TYPE_STRING , - G_TYPE_STRING , G_TYPE_STRING , G_TYPE_UINT , G_TYPE_POINTER ); - cfg_device_lv_populate( device_store ); - - cfg_device_lv_frame = gtk_frame_new( NULL ); - cfg_device_lv = gtk_tree_view_new_with_model( GTK_TREE_MODEL(device_store) ); - g_object_unref( device_store ); - - cfg_device_lv_rndr_text = gtk_cell_renderer_text_new(); - cfg_device_lv_rndr_toggle = gtk_cell_renderer_toggle_new(); - cfg_device_lv_rndr_isavailable = gtk_cell_renderer_text_new(); - cfg_device_lv_rndr_textphys = gtk_cell_renderer_text_new(); - g_object_set( G_OBJECT(cfg_device_lv_rndr_textphys) , - "ellipsize-set" , TRUE , "ellipsize" , PANGO_ELLIPSIZE_END , NULL ); - - cfg_device_lv_col_isactive = gtk_tree_view_column_new_with_attributes( - _("Active") , cfg_device_lv_rndr_toggle , "active" , DEVLIST_COL_ISACTIVE , NULL ); - gtk_tree_view_column_set_expand( GTK_TREE_VIEW_COLUMN(cfg_device_lv_col_isactive) , FALSE ); - gtk_tree_view_append_column( GTK_TREE_VIEW(cfg_device_lv), cfg_device_lv_col_isactive ); - cfg_device_lv_col_isavailable = gtk_tree_view_column_new(); - gtk_tree_view_column_set_title( cfg_device_lv_col_isavailable , _("Status") ); - gtk_tree_view_column_pack_start( cfg_device_lv_col_isavailable , cfg_device_lv_rndr_isavailable , TRUE ); - gtk_tree_view_column_set_cell_data_func( - cfg_device_lv_col_isavailable , cfg_device_lv_rndr_isavailable , - (GtkTreeCellDataFunc)cfg_device_lv_celldatafunc_isavailable , - NULL , NULL ); - gtk_tree_view_column_set_expand( GTK_TREE_VIEW_COLUMN(cfg_device_lv_col_isavailable) , FALSE ); - gtk_tree_view_append_column( GTK_TREE_VIEW(cfg_device_lv), cfg_device_lv_col_isavailable ); - cfg_device_lv_col_name = gtk_tree_view_column_new_with_attributes( - _("Device Name") , cfg_device_lv_rndr_text , "text" , DEVLIST_COL_NAME , NULL ); - gtk_tree_view_column_set_expand( GTK_TREE_VIEW_COLUMN(cfg_device_lv_col_name) , FALSE ); - gtk_tree_view_append_column( GTK_TREE_VIEW(cfg_device_lv), cfg_device_lv_col_name ); - cfg_device_lv_col_filename = gtk_tree_view_column_new_with_attributes( - _("Device File") , cfg_device_lv_rndr_text , "text" , DEVLIST_COL_FILENAME , NULL ); - gtk_tree_view_column_set_expand( GTK_TREE_VIEW_COLUMN(cfg_device_lv_col_filename) , FALSE ); - gtk_tree_view_append_column( GTK_TREE_VIEW(cfg_device_lv), cfg_device_lv_col_filename ); - cfg_device_lv_col_phys = gtk_tree_view_column_new_with_attributes( - _("Device Address") , cfg_device_lv_rndr_textphys , "text" , DEVLIST_COL_PHYS , NULL ); - gtk_tree_view_column_set_expand( GTK_TREE_VIEW_COLUMN(cfg_device_lv_col_phys) , TRUE ); - gtk_tree_view_column_set_resizable( GTK_TREE_VIEW_COLUMN(cfg_device_lv_col_phys) , TRUE ); - gtk_tree_view_append_column( GTK_TREE_VIEW(cfg_device_lv), cfg_device_lv_col_phys ); - cfg_device_lv_sw = gtk_scrolled_window_new( NULL , NULL ); - gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(cfg_device_lv_sw) , - GTK_POLICY_NEVER , GTK_POLICY_ALWAYS ); - - gtk_container_add( GTK_CONTAINER(cfg_device_lv_sw) , cfg_device_lv ); - gtk_container_add( GTK_CONTAINER(cfg_device_lv_frame) , cfg_device_lv_sw ); - gtk_box_pack_start( GTK_BOX(cfg_vbox) , cfg_device_lv_frame , TRUE , TRUE , 0 ); - - gtk_box_pack_start( GTK_BOX(cfg_vbox) , gtk_hseparator_new() , FALSE , FALSE , 4 ); - - /* button bar */ - cfg_bbar_hbbox = gtk_hbutton_box_new(); - gtk_button_box_set_layout( GTK_BUTTON_BOX(cfg_bbar_hbbox) , GTK_BUTTONBOX_START ); - cfg_bbar_bt_bind = gtk_button_new_with_mnemonic( _("_Bindings") ); - gtk_button_set_image( GTK_BUTTON(cfg_bbar_bt_bind) , - gtk_image_new_from_stock( GTK_STOCK_PREFERENCES , GTK_ICON_SIZE_BUTTON ) ); - cfg_bbar_bt_addc = gtk_button_new_from_stock( GTK_STOCK_ADD ); - cfg_bbar_bt_remc = gtk_button_new_from_stock( GTK_STOCK_REMOVE ); - /*cfg_bbar_bt_refresh = gtk_button_new_from_stock( GTK_STOCK_REFRESH );*/ - cfg_bbar_bt_cancel = gtk_button_new_from_stock( GTK_STOCK_CANCEL ); - cfg_bbar_bt_ok = gtk_button_new_from_stock( GTK_STOCK_OK ); - gtk_container_add( GTK_CONTAINER(cfg_bbar_hbbox) , cfg_bbar_bt_bind ); - gtk_container_add( GTK_CONTAINER(cfg_bbar_hbbox) , cfg_bbar_bt_addc ); - gtk_container_add( GTK_CONTAINER(cfg_bbar_hbbox) , cfg_bbar_bt_remc ); - /*gtk_container_add( GTK_CONTAINER(cfg_bbar_hbbox) , cfg_bbar_bt_refresh );*/ - gtk_container_add( GTK_CONTAINER(cfg_bbar_hbbox) , cfg_bbar_bt_cancel ); - gtk_container_add( GTK_CONTAINER(cfg_bbar_hbbox) , cfg_bbar_bt_ok ); - gtk_button_box_set_child_secondary( GTK_BUTTON_BOX(cfg_bbar_hbbox) , cfg_bbar_bt_cancel , TRUE ); - gtk_button_box_set_child_secondary( GTK_BUTTON_BOX(cfg_bbar_hbbox) , cfg_bbar_bt_ok , TRUE ); - gtk_box_pack_start( GTK_BOX(cfg_vbox) , cfg_bbar_hbbox , FALSE , FALSE , 0 ); - - g_signal_connect( cfg_device_lv_rndr_toggle , "toggled" , - G_CALLBACK(cfg_device_lv_changetoggle) , cfg_device_lv ); - g_signal_connect_swapped( G_OBJECT(cfg_bbar_bt_bind) , "clicked" , - G_CALLBACK(cfg_config_cb_bindings_show) , cfg_device_lv ); - g_signal_connect_swapped( G_OBJECT(cfg_bbar_bt_addc) , "clicked" , - G_CALLBACK(cfg_config_cb_addcustom_show) , cfg_device_lv ); - g_signal_connect_swapped( G_OBJECT(cfg_bbar_bt_remc) , "clicked" , - G_CALLBACK(cfg_config_cb_remove) , cfg_device_lv ); - g_signal_connect_swapped( G_OBJECT(cfg_bbar_bt_cancel) , "clicked" , - G_CALLBACK(cfg_config_cb_cancel) , cfg_device_lv ); - g_signal_connect_swapped( G_OBJECT(cfg_bbar_bt_ok) , "clicked" , - G_CALLBACK(cfg_config_cb_commit) , cfg_device_lv ); - - gtk_widget_show_all( cfg_win ); -} - - - -/* bindings window */ - -static void cfg_bindbox_new_empty_row( GtkTable * , GtkWidget * , gboolean ); - -enum -{ - BINDLIST_COL_COMBO_ACTION = 0, - BINDLIST_COL_BT_ASSIGN, - BINDLIST_COL_LABEL_EVCODE, - BINDLIST_COL_BT_DELETE, - BINDLIST_NUMCOLS -}; - - -static gboolean -cfg_bindbox_assign_binding_timeout_func ( gpointer bindings_win ) -{ - GtkWidget *trigger_dlg = g_object_get_data( G_OBJECT(bindings_win) , "trigger-win" ); - if ( trigger_dlg != NULL ) - gtk_dialog_response( GTK_DIALOG(trigger_dlg) , GTK_RESPONSE_CANCEL ); - - return FALSE; -} - - -static gboolean -cfg_bindbox_assign_binding_input_func ( GIOChannel * iochan , - GIOCondition cond , - gpointer bindings_win ) -{ - switch ( cond ) - { - case G_IO_IN: - { - gsize rb = 0; - struct input_event inputev; - g_io_channel_read_chars( iochan , (gchar*)&inputev , - sizeof(struct input_event) , &rb , NULL ); - if ( rb == sizeof(struct input_event) ) - { - GtkWidget *trigger_dlg = g_object_get_data( G_OBJECT(bindings_win) , "trigger-win" ); - if ( trigger_dlg == NULL ) - { - /* the trigger-dialog window is not open; ignore input */ - return TRUE; - } - else - { - /* currently, only care about events of type 'key' and 'absolute' - TODO: should we handle some other event type as well? */ - switch ( inputev.type ) - { - case EV_KEY: - case EV_ABS: - { - /* the trigger-dialog window is open; record input and - store it in a container managed by the trigger-dialog itself */ - ed_inputevent_t *dinputev = g_malloc(sizeof(ed_inputevent_t)); - dinputev->type = inputev.type; - dinputev->code = inputev.code; - dinputev->value = inputev.value; - g_object_set_data( G_OBJECT(trigger_dlg) , "trigger-data" , dinputev ); - gtk_dialog_response( GTK_DIALOG(trigger_dlg) , GTK_RESPONSE_OK ); - break; - } - } - } - } - } - - default: - ; - } - return TRUE; -} - - -static gboolean -cfg_bindbox_assign_binding_checkdups( GtkWidget * table , ed_inputevent_t * inputev ) -{ - /* check if inputev is already assigned in table */ - GList *children = GTK_TABLE(table)->children; - for ( ; children != NULL ; children = g_list_next(children) ) - { - GtkTableChild *child = children->data; - - if ( child->top_attach + 1 == GTK_TABLE(table)->nrows ) - continue; /* skip last empty row */ - - if ( child->left_attach == BINDLIST_COL_LABEL_EVCODE ) - { - /* it's a label, pick its inputevent */ - ed_inputevent_t * iev = g_object_get_data( G_OBJECT(child->widget) , "inputevent" ); - if ( ( iev != NULL ) && ( ed_inputevent_check_equality( inputev , iev ) == TRUE ) ) - return TRUE; /* a duplicate was found */ - } - } - return FALSE; -} - - -static void -cfg_bindbox_assign_binding ( GtkButton * assign_button , gpointer bindings_win ) -{ - GtkWidget *trigger_dlg; - GtkWidget *trigger_dlg_frame; - GtkWidget *trigger_dlg_label; - guint timeout_sid = 0; - gint res = 0; - - /* create a not-decorated window to inform the user about what's going on */ - trigger_dlg = gtk_dialog_new(); - gtk_widget_set_name( trigger_dlg , "trigger_dlg" ); - trigger_dlg_label = gtk_label_new( _("Press a key of your device to bind it;\n" - "if no key is pressed in five seconds, this window\n" - "will close without binding changes.") ); - gtk_widget_hide( GTK_WIDGET(GTK_DIALOG(trigger_dlg)->action_area) ); - gtk_misc_set_padding( GTK_MISC(trigger_dlg_label) , 10 , 10 ); - trigger_dlg_frame = gtk_frame_new( NULL ); - gtk_container_add( GTK_CONTAINER(trigger_dlg_frame) , trigger_dlg_label ); - gtk_container_add( GTK_CONTAINER(GTK_DIALOG(trigger_dlg)->vbox) , trigger_dlg_frame ); - gtk_window_set_position( GTK_WINDOW(trigger_dlg) , GTK_WIN_POS_CENTER ); - gtk_window_set_decorated( GTK_WINDOW(trigger_dlg) , FALSE ); - gtk_window_set_transient_for( GTK_WINDOW(trigger_dlg) , - GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(assign_button))) ); - gtk_dialog_set_has_separator( GTK_DIALOG(trigger_dlg) , FALSE ); - gtk_widget_show_all( trigger_dlg ); - - /* close the trigger-window if no input is received in 5 seconds */ - timeout_sid = g_timeout_add( 5000 , cfg_bindbox_assign_binding_timeout_func , bindings_win ); - - g_object_set_data( G_OBJECT(bindings_win) , "trigger-win" , trigger_dlg ); /* enable trigger-listening */ - res = gtk_dialog_run( GTK_DIALOG(trigger_dlg) ); - g_object_set_data( G_OBJECT(bindings_win) , "trigger-win" , NULL ); /* stop trigger-listening */ - switch ( res ) - { - case GTK_RESPONSE_OK: - { - ed_inputevent_t *dinputev = g_object_get_data( G_OBJECT(trigger_dlg) , "trigger-data" ); - GtkWidget *label = g_object_get_data( G_OBJECT(assign_button) , "label" ); - GtkWidget *table = g_object_get_data( G_OBJECT(bindings_win) , "table" ); - gchar *input_str; - - /* we got a new input event; ensure that this has not been assigned to an action already */ - if ( cfg_bindbox_assign_binding_checkdups( table , dinputev ) == TRUE ) - { - /* this input event has been already used */ - g_free( dinputev ); - g_source_remove( timeout_sid ); - ed_ui_message_show( _("Information") , - _("This input event has been already assigned.\n\n" - "It's not possible to assign multiple actions to the same input event " - "(although it's possible to assign the same action to multiple events).") , - bindings_win ); - } - else - { - /* if this is the last row ("Assign" button) , create a new empty row */ - if ( GPOINTER_TO_INT(g_object_get_data(G_OBJECT(assign_button),"last")) == 1 ) - { - cfg_bindbox_new_empty_row( GTK_TABLE(table) , bindings_win , TRUE ); - /* so, the current row is not the last one anymore; - remove its "last" mark and enable its delete button */ - g_object_set_data( G_OBJECT(assign_button) , "last" , GINT_TO_POINTER(0) ); - gtk_widget_set_sensitive( GTK_WIDGET(g_object_get_data(G_OBJECT(assign_button),"delbt")) , TRUE ); - } - - g_object_set_data_full( G_OBJECT(label) , "inputevent" , dinputev , g_free ); - input_str = g_strdup_printf( "%i:%i:%i" , dinputev->type , dinputev->code , dinputev->value ); - gtk_label_set_text( GTK_LABEL(label) , input_str ); - g_free( input_str ); - g_source_remove( timeout_sid ); - } - - break; - } - - default: - { - break; /* nothing should be changed */ - } - } - - gtk_widget_destroy( trigger_dlg ); -} - - -static void -cfg_bindbox_delete_row( GtkButton * delete_button , gpointer bindings_win ) -{ - GtkTable *oldtable, *newtable; - GtkWidget *table_sw, *table_vp; - GList *children = NULL; - gint drow = 0; - - /* here comes the drawback of using GtkTable to display - a list-like set of widgets :) deletion can be a complex task */ - - /* first, get the row number of the row that should be deleted - (this can't be the last one cause it has the delete button disabled) */ - oldtable = g_object_get_data( G_OBJECT(bindings_win) , "table" ); - children = oldtable->children; - while ( children != NULL ) - { - GtkTableChild *child = children->data; - if ( child->widget == (GtkWidget*)delete_button ) - drow = child->top_attach; - children = g_list_next( children ); - } - - /* now, a simple trick: create a new GtkTable and move all - of the widgets there, excepting those positioned in row "drow" */ - newtable = (GtkTable*)gtk_table_new( oldtable->nrows - 1 , oldtable->ncols , FALSE ); - - children = oldtable->children; - while ( children != NULL ) - { - GtkTableChild *child = children->data; - if ( child->top_attach < drow ) - { - GtkWidget *widget = child->widget; - guint widget_row = child->top_attach; - guint widget_col = child->left_attach; - g_object_ref( widget ); - gtk_container_remove( GTK_CONTAINER(oldtable) , widget ); - gtk_table_attach( GTK_TABLE(newtable) , widget , - widget_col , widget_col + 1 , widget_row , widget_row + 1 , - (widget_col == BINDLIST_COL_LABEL_EVCODE ? GTK_EXPAND | GTK_FILL : GTK_FILL ) , GTK_FILL , 0 , 0 ); - /* gtk_container_remove() changed the structure used to iterate; restart */ - children = oldtable->children; - } - else if ( child->top_attach > drow ) - { - GtkWidget *widget = child->widget; - guint widget_row = child->top_attach; - guint widget_col = child->left_attach; - g_object_ref( widget ); - gtk_container_remove( GTK_CONTAINER(oldtable) , widget ); - gtk_table_attach( GTK_TABLE(newtable) , widget , - widget_col , widget_col + 1 , widget_row - 1 , widget_row , - (widget_col == BINDLIST_COL_LABEL_EVCODE ? GTK_EXPAND | GTK_FILL : GTK_FILL ) , GTK_FILL , 0 , 0 ); - /* gtk_container_remove() changed the structure used to iterate; restart */ - children = oldtable->children; - } - else - children = g_list_next(children); - } - - /* now, replace the old GtkTable with the new one */ - table_sw = g_object_get_data( G_OBJECT(bindings_win) , "tablesw" ); - table_vp = gtk_bin_get_child( GTK_BIN(table_sw) ); /* get the viewport */ - gtk_widget_destroy( GTK_WIDGET(oldtable) ); /* destroy old GtkTable */ - gtk_container_add( GTK_CONTAINER(table_vp) , GTK_WIDGET(newtable) ); - g_object_set_data( G_OBJECT(bindings_win) , "table" , newtable ); /* update table in bindings_win */ - gtk_widget_show_all( GTK_WIDGET(newtable) ); - return; -} - - -/* the three structure types defined below - are only used in cfg_bindbox_populate process */ -typedef struct -{ - GtkWidget *combobox; - gint action_code; -} -combosas_helper_t; - -typedef struct -{ - gint action_code; - ed_inputevent_t * inputev; -} -popul_binding_t; - -typedef struct -{ - gint id; - popul_binding_t *bindings; -} -popul_container_binding_t; - -static gboolean -cfg_bindbox_populate_foreach_combosas ( GtkTreeModel * model , - GtkTreePath * path , - GtkTreeIter * iter , - gpointer combosas_helper_gp ) -{ - gint action_code = 0; - combosas_helper_t *combosas_helper = combosas_helper_gp; - gtk_tree_model_get( model , iter , 1 , &action_code , -1 ); - if ( action_code == combosas_helper->action_code ) - { - gtk_combo_box_set_active_iter( GTK_COMBO_BOX(combosas_helper->combobox) , iter ); - return TRUE; - } - return FALSE; -} - -static void -cfg_bindbox_populate_foreach ( ed_inputevent_t * sinputev , - gint action_code , - gpointer popul_container_gp , - gpointer none ) -{ - ed_inputevent_t *inputev; - popul_container_binding_t *popul_container = popul_container_gp; - - /* make a copy of the ed_inputevent_t object "sinputev" */ - inputev = g_malloc(sizeof(ed_inputevent_t)); - inputev->type = sinputev->type; - inputev->code = sinputev->code; - inputev->value = sinputev->value; - - popul_container->bindings[popul_container->id].inputev = inputev; - popul_container->bindings[popul_container->id].action_code = action_code; - - popul_container->id++; - return; -} - -static int -cfg_bindbox_populate_qsortfunc( const void * p_binding_a , const void * p_binding_b ) -{ - return ((popul_binding_t*)p_binding_a)->action_code - ((popul_binding_t*)p_binding_b)->action_code; -} - -static void -cfg_bindbox_populate( GtkWidget * bind_table , GtkWidget * bindings_win , gpointer bindings ) -{ - if ( bindings != NULL ) - { - guint bindings_num = ed_bindings_store_size( bindings ); - popul_binding_t *popul_binding = (popul_binding_t*)calloc( bindings_num , sizeof(popul_binding_t) ); - popul_container_binding_t *popul_container = g_malloc(sizeof(popul_container_binding_t)); - gint i = 0; - - popul_container->bindings = popul_binding; - popul_container->id = 0; - - ed_bindings_store_foreach( bindings , - (ed_bindings_store_foreach_func)cfg_bindbox_populate_foreach , popul_container , NULL ); - - /* ok, now we have a popul_binding array, reorder it using action_codes */ - qsort( popul_binding , bindings_num , sizeof(popul_binding_t) , cfg_bindbox_populate_qsortfunc ); - - /* attach to table each popul_binding */ - for ( i = 0 ; i < bindings_num ; i++ ) - { - GList *children = GTK_TABLE(bind_table)->children; - for ( ; children != NULL ; children = g_list_next(children) ) - { - GtkTableChild *child = children->data; - if ( ( (child->top_attach + 1) == GTK_TABLE(bind_table)->nrows ) && - ( child->left_attach == BINDLIST_COL_BT_ASSIGN ) && - ( GPOINTER_TO_INT(g_object_get_data(G_OBJECT(child->widget),"last")) == 1 ) ) - { - /* ok, this child->widget is the last assign button */ - GtkWidget *combobox = g_object_get_data(G_OBJECT(child->widget),"combobox"); - GtkWidget *label = g_object_get_data(G_OBJECT(child->widget),"label"); - GtkWidget *delbt = g_object_get_data(G_OBJECT(child->widget),"delbt"); - GtkTreeModel *combomodel; - combosas_helper_t *combosas_helper; - gchar *input_str; - - combomodel = gtk_combo_box_get_model( GTK_COMBO_BOX(combobox) ); - combosas_helper = g_malloc(sizeof(combosas_helper_t)); - combosas_helper->combobox = combobox; - combosas_helper->action_code = popul_binding[i].action_code; - gtk_tree_model_foreach( combomodel , cfg_bindbox_populate_foreach_combosas , combosas_helper ); - g_free( combosas_helper ); - - g_object_set_data_full( G_OBJECT(label) , "inputevent" , popul_binding[i].inputev , g_free ); - input_str = g_strdup_printf( "%i:%i:%i" , - popul_binding[i].inputev->type , - popul_binding[i].inputev->code , - popul_binding[i].inputev->value ); - gtk_label_set_text( GTK_LABEL(label) , input_str ); - g_free( input_str ); - - /* so, the current row wont' be the last one anymore; - remove its "last" mark and enable its delete button */ - g_object_set_data( G_OBJECT(child->widget) , "last" , GINT_TO_POINTER(0) ); - gtk_widget_set_sensitive( delbt , TRUE ); - cfg_bindbox_new_empty_row( GTK_TABLE(bind_table) , bindings_win , TRUE ); - - } - } - DEBUGMSG( "populating bindings window: code %i -> event %d:%d:%d\n" , - popul_binding[i].action_code , popul_binding[i].inputev->type, - popul_binding[i].inputev->code, popul_binding[i].inputev->value ); - } - g_free( popul_binding ); - g_free( popul_container ); - } - return; -} - - -static void -cfg_bindbox_new_empty_row( GtkTable * bind_table , GtkWidget * bindings_win , gboolean resize_table ) -{ - GtkWidget *action_combobox; - GtkCellRenderer *action_combobox_rndr; - GtkWidget *assign_button; - GtkWidget *assign_label; - GtkWidget *delete_button; - - /* add one row to the table */ - if ( resize_table == TRUE ) - gtk_table_resize( bind_table , bind_table->nrows + 1 , bind_table->ncols ); - - /* action combobox */ - action_combobox = gtk_combo_box_new_with_model( - GTK_TREE_MODEL(g_object_get_data(G_OBJECT(bindings_win),"action_store")) ); - action_combobox_rndr = gtk_cell_renderer_text_new(); - gtk_cell_layout_pack_start( GTK_CELL_LAYOUT(action_combobox) , action_combobox_rndr , TRUE ); - gtk_cell_layout_set_attributes( GTK_CELL_LAYOUT(action_combobox) , - action_combobox_rndr , "text" , 0 , NULL ); - gtk_combo_box_set_active( GTK_COMBO_BOX(action_combobox) , 0 ); - - gtk_table_attach( bind_table , action_combobox , - BINDLIST_COL_COMBO_ACTION , BINDLIST_COL_COMBO_ACTION + 1 , - bind_table->nrows - 1 , bind_table->nrows , - GTK_FILL , GTK_FILL , 0 , 0 ); - - /* assign button */ - assign_button = gtk_button_new(); - gtk_button_set_image( GTK_BUTTON(assign_button) , - gtk_image_new_from_stock( GTK_STOCK_EXECUTE , GTK_ICON_SIZE_BUTTON ) ); - g_object_set_data( G_OBJECT(assign_button) , "last" , GINT_TO_POINTER(1) ); - g_signal_connect( G_OBJECT(assign_button) , "clicked" , - G_CALLBACK(cfg_bindbox_assign_binding) , bindings_win ); - - gtk_table_attach( bind_table , assign_button , - BINDLIST_COL_BT_ASSIGN , BINDLIST_COL_BT_ASSIGN + 1 , - bind_table->nrows - 1 , bind_table->nrows , - GTK_FILL , GTK_FILL , 0 , 0 ); - - /* assigned-code label */ - assign_label = gtk_label_new( "" ); - gtk_misc_set_alignment( GTK_MISC(assign_label) , 0 , 0.5 ); - gtk_misc_set_padding( GTK_MISC(assign_label) , 10 , 0 ); - g_object_set_data_full( G_OBJECT(assign_label) , "inputevent" , NULL , g_free ); - - gtk_table_attach( bind_table , assign_label , - BINDLIST_COL_LABEL_EVCODE , BINDLIST_COL_LABEL_EVCODE +1 , - bind_table->nrows - 1 , bind_table->nrows , - GTK_EXPAND | GTK_FILL , GTK_FILL , 0 , 0 ); - - /* delete button */ - delete_button = gtk_button_new(); - gtk_button_set_image( GTK_BUTTON(delete_button) , - gtk_image_new_from_stock( GTK_STOCK_DELETE , GTK_ICON_SIZE_BUTTON ) ); - g_signal_connect( G_OBJECT(delete_button) , "clicked" , - G_CALLBACK(cfg_bindbox_delete_row) , bindings_win ); - gtk_widget_set_sensitive( delete_button , FALSE ); - - gtk_table_attach( bind_table , delete_button , - BINDLIST_COL_BT_DELETE , BINDLIST_COL_BT_DELETE + 1 , - bind_table->nrows - 1 , bind_table->nrows , - GTK_FILL , GTK_FILL , 0 , 0 ); - - /* data for assign button */ - g_object_set_data( G_OBJECT(assign_button) , "combobox" , action_combobox ); - g_object_set_data( G_OBJECT(assign_button) , "label" , assign_label ); - g_object_set_data( G_OBJECT(assign_button) , "delbt" , delete_button ); - - gtk_widget_show_all( GTK_WIDGET(bind_table) ); - return; -} - - -static void -cfg_bindings_cb_destroy ( GtkObject * bindings_win , gpointer dev_gp ) -{ - ed_device_t *dev = dev_gp; - /* bindings window is going to be destroyed; - deactivate device listening and free the ed_device_t object */ - g_source_remove( dev->iochan_sid ); - ed_device_delete( dev ); - - /* the rowreference is no longer needed as well */ - gtk_tree_row_reference_free( - (GtkTreeRowReference*)g_object_get_data(G_OBJECT(bindings_win),"rowref") ); - return; -} - - -static void -cfg_bindings_cb_commit ( gpointer bindings_win ) -{ - GtkTreeRowReference *rowref = g_object_get_data(G_OBJECT(bindings_win),"rowref"); - if ( gtk_tree_row_reference_valid( rowref ) == TRUE ) - { - GtkTreeModel *model = gtk_tree_row_reference_get_model( rowref ); - GtkTreePath *path = gtk_tree_row_reference_get_path( rowref ); - GtkTreeIter iter; - GtkTable *table; - gpointer new_bindings = NULL, old_bindings = NULL; - - /****************************************************************************/ - table = g_object_get_data( G_OBJECT(bindings_win) , "table" ); - if ( table->nrows > 1 ) - { - /* bindings defined */ - GList *children = table->children; - gint *array_actioncode; - ed_inputevent_t **array_inputevent; - gint i = 0; - - array_actioncode = calloc( table->nrows - 1 , sizeof(gint) ); - array_inputevent = calloc( table->nrows - 1 , sizeof(ed_inputevent_t*) ); - - for ( ; children != NULL ; children = g_list_next( children ) ) - { - /* pick information from relevant table cells and put them in arrays */ - GtkTableChild *child = children->data; - - if ( ( child->top_attach + 1 ) == table->nrows ) - continue; /* skip last empty row */ - - if ( child->left_attach == BINDLIST_COL_COMBO_ACTION ) - { - GtkTreeModel *combomodel = gtk_combo_box_get_model( GTK_COMBO_BOX(child->widget) ); - GtkTreeIter comboiter; - gint actioncode = 0; - - gtk_combo_box_get_active_iter( GTK_COMBO_BOX(child->widget) , &comboiter ); - gtk_tree_model_get( combomodel , &comboiter , 1 , &actioncode , -1 ); /* pick the action code */ - array_actioncode[child->top_attach] = actioncode; - } - else if ( child->left_attach == BINDLIST_COL_LABEL_EVCODE ) - { - ed_inputevent_t *inputevent = g_object_get_data( G_OBJECT(child->widget) , "inputevent" ); - array_inputevent[child->top_attach] = inputevent; - } - } - - /* ok, now copy data from arrays to the bindings store */ - new_bindings = ed_bindings_store_new(); /* new bindings store object */ - - for ( i = 0 ; i < ( table->nrows - 1 ) ; i++ ) - ed_bindings_store_insert( new_bindings , array_inputevent[i] , array_actioncode[i] ); - - g_free( array_actioncode ); g_free( array_inputevent ); /* not needed anymore */ - } - else - { - /* no bindings defined */ - new_bindings = NULL; - } - /****************************************************************************/ - - /* pick old bindings store and delete it */ - gtk_tree_model_get_iter( model , &iter , path ); - gtk_tree_model_get( model , &iter, DEVLIST_COL_BINDINGS , &old_bindings , -1 ); - if ( old_bindings != NULL ) - ed_bindings_store_delete( old_bindings ); - /* replace it with new one */ - gtk_list_store_set( GTK_LIST_STORE(model) , &iter , DEVLIST_COL_BINDINGS , new_bindings , -1 ); - /* everything done! */ - } - gtk_widget_destroy( GTK_WIDGET(bindings_win) ); -} - - -#define action_store_add(x) { gtk_list_store_append(action_store,&iter); gtk_list_store_set(action_store,&iter,0,_(player_actions[x].desc),1,x,-1); } - -static void -cfg_ui_bindings_show ( ed_device_t * dev , GtkTreeRowReference * rowref ) -{ - GtkWidget *bindings_win; - GdkGeometry bindings_win_hints; - GtkWidget *bindings_vbox; - GtkWidget *bindings_info_table, *bindings_info_frame; - GtkWidget *bindings_info_label_name_p, *bindings_info_label_name_c; - GtkWidget *bindings_info_label_file_p, *bindings_info_label_file_c; - GtkWidget *bindings_info_label_phys_p, *bindings_info_label_phys_c; - GtkWidget *bindings_bind_frame, *bindings_bind_table, *bindings_bind_table_sw; - GtkWidget *bindings_bbar_hbbox, *bindings_bbar_bt_cancel, *bindings_bbar_bt_ok; - GtkListStore *action_store; - GtkTreeIter iter; - static gboolean style_added = FALSE; - - if ( !style_added ) - { - /* this is used by trigger dialogs, calling it once is enough */ - gtk_rc_parse_string( "style \"noaaborder\" { GtkDialog::action-area-border = 0 }\n" - "widget \"trigger_dlg\" style \"noaaborder\"\n" ); - style_added = TRUE; - } - - bindings_win = gtk_window_new( GTK_WINDOW_TOPLEVEL ); - gtk_window_set_type_hint( GTK_WINDOW(bindings_win), GDK_WINDOW_TYPE_HINT_DIALOG ); - gtk_window_set_position( GTK_WINDOW(bindings_win), GTK_WIN_POS_CENTER ); - gtk_window_set_transient_for( GTK_WINDOW(bindings_win), GTK_WINDOW(cfg_win) ); - gtk_window_set_modal( GTK_WINDOW(bindings_win) , TRUE ); - gtk_window_set_title( GTK_WINDOW(bindings_win), _("EvDev-Plug - Bindings Configuration") ); - gtk_container_set_border_width( GTK_CONTAINER(bindings_win), 10 ); - bindings_win_hints.min_width = 400; - bindings_win_hints.min_height = 400; - gtk_window_set_geometry_hints( GTK_WINDOW(bindings_win) , GTK_WIDGET(bindings_win) , - &bindings_win_hints , GDK_HINT_MIN_SIZE ); - - g_object_set_data( G_OBJECT(bindings_win) , "rowref" , rowref ); - g_object_set_data( G_OBJECT(bindings_win) , "trigger-win" , NULL ); - - bindings_vbox = gtk_vbox_new( FALSE , 4 ); - gtk_container_add( GTK_CONTAINER(bindings_win) , bindings_vbox ); - - /* action combobox model - column 0 -> action desc - column 1 -> action code */ - action_store = gtk_list_store_new( 2 , G_TYPE_STRING , G_TYPE_INT ); - action_store_add( ED_ACTION_PB_PLAY ); - action_store_add( ED_ACTION_PB_STOP ); - action_store_add( ED_ACTION_PB_PAUSE ); - action_store_add( ED_ACTION_PB_PREV ); - action_store_add( ED_ACTION_PB_NEXT ); - action_store_add( ED_ACTION_PB_EJECT ); - action_store_add( ED_ACTION_PL_REPEAT ); - action_store_add( ED_ACTION_PL_SHUFFLE ); - action_store_add( ED_ACTION_VOL_UP5 ); - action_store_add( ED_ACTION_VOL_DOWN5 ); - action_store_add( ED_ACTION_VOL_UP10 ); - action_store_add( ED_ACTION_VOL_DOWN10 ); - action_store_add( ED_ACTION_VOL_MUTE ); - action_store_add( ED_ACTION_WIN_MAIN ); - action_store_add( ED_ACTION_WIN_PLAYLIST ); - action_store_add( ED_ACTION_WIN_EQUALIZER ); - action_store_add( ED_ACTION_WIN_JTF ); - g_object_set_data_full( G_OBJECT(bindings_win) , "action_store" , action_store , g_object_unref ); - - /* info table */ - bindings_info_table = gtk_table_new( 3 , 2 , FALSE ); - gtk_container_set_border_width( GTK_CONTAINER(bindings_info_table), 4 ); - bindings_info_label_name_p = gtk_label_new( "" ); - gtk_label_set_markup( GTK_LABEL(bindings_info_label_name_p) , _("Name: ") ); - gtk_misc_set_alignment( GTK_MISC(bindings_info_label_name_p) , 0 , 0.5 ); - bindings_info_label_name_c = gtk_label_new( dev->info->name ); - gtk_misc_set_alignment( GTK_MISC(bindings_info_label_name_c) , 0 , 0.5 ); - gtk_table_attach( GTK_TABLE(bindings_info_table) , bindings_info_label_name_p , 0 , 1 , 0 , 1 , - GTK_FILL , GTK_FILL | GTK_EXPAND , 0 , 0 ); - gtk_table_attach( GTK_TABLE(bindings_info_table) , bindings_info_label_name_c , 1 , 2 , 0 , 1 , - GTK_FILL , GTK_FILL | GTK_EXPAND , 0 , 0 ); - bindings_info_label_file_p = gtk_label_new( "" ); - gtk_label_set_markup( GTK_LABEL(bindings_info_label_file_p) , _("Filename: ") ); - gtk_misc_set_alignment( GTK_MISC(bindings_info_label_file_p) , 0 , 0.5 ); - bindings_info_label_file_c = gtk_label_new( dev->info->filename ); - gtk_misc_set_alignment( GTK_MISC(bindings_info_label_file_c) , 0 , 0.5 ); - gtk_table_attach( GTK_TABLE(bindings_info_table) , bindings_info_label_file_p , 0 , 1 , 1 , 2 , - GTK_FILL , GTK_FILL | GTK_EXPAND , 0 , 0 ); - gtk_table_attach( GTK_TABLE(bindings_info_table) , bindings_info_label_file_c , 1 , 2 , 1 , 2 , - GTK_FILL , GTK_FILL | GTK_EXPAND , 0 , 0 ); - bindings_info_label_phys_p = gtk_label_new( "" ); - gtk_label_set_markup( GTK_LABEL(bindings_info_label_phys_p) , _("Phys.Address: ") ); - gtk_misc_set_alignment( GTK_MISC(bindings_info_label_phys_p) , 0 , 0.5 ); - bindings_info_label_phys_c = gtk_label_new( dev->info->phys ); - gtk_misc_set_alignment( GTK_MISC(bindings_info_label_phys_c) , 0 , 0.5 ); - gtk_table_attach( GTK_TABLE(bindings_info_table) , bindings_info_label_phys_p , 0 , 1 , 2 , 3 , - GTK_FILL , GTK_FILL | GTK_EXPAND , 0 , 0 ); - gtk_table_attach( GTK_TABLE(bindings_info_table) , bindings_info_label_phys_c , 1 , 2 , 2 , 3 , - GTK_FILL , GTK_FILL | GTK_EXPAND , 0 , 0 ); - bindings_info_frame = gtk_frame_new( NULL ); - gtk_container_add( GTK_CONTAINER(bindings_info_frame) , bindings_info_table ); - gtk_box_pack_start( GTK_BOX(bindings_vbox) , bindings_info_frame , FALSE , FALSE , 0 ); - - /* bindings boxlist */ - bindings_bind_table = gtk_table_new( 1 , BINDLIST_NUMCOLS , FALSE ); - cfg_bindbox_new_empty_row( GTK_TABLE(bindings_bind_table) , bindings_win , FALSE ); - cfg_bindbox_populate( bindings_bind_table , bindings_win , dev->info->bindings ); - bindings_bind_table_sw = gtk_scrolled_window_new( NULL , NULL ); - gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(bindings_bind_table_sw) , - GTK_POLICY_NEVER , GTK_POLICY_ALWAYS ); - bindings_bind_frame = gtk_frame_new( NULL ); - gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW(bindings_bind_table_sw) , - bindings_bind_table ); - gtk_container_add( GTK_CONTAINER(bindings_bind_frame) , bindings_bind_table_sw ); - gtk_box_pack_start( GTK_BOX(bindings_vbox) , bindings_bind_frame , TRUE , TRUE , 0 ); - g_object_set_data( G_OBJECT(bindings_win) , "table" , bindings_bind_table ); - g_object_set_data( G_OBJECT(bindings_win) , "tablesw" , bindings_bind_table_sw ); - - gtk_box_pack_start( GTK_BOX(bindings_vbox) , gtk_hseparator_new() , FALSE , FALSE , 0 ); - - /* button bar */ - bindings_bbar_hbbox = gtk_hbutton_box_new(); - gtk_button_box_set_layout( GTK_BUTTON_BOX(bindings_bbar_hbbox) , GTK_BUTTONBOX_START ); - bindings_bbar_bt_cancel = gtk_button_new_from_stock( GTK_STOCK_CANCEL ); - bindings_bbar_bt_ok = gtk_button_new_from_stock( GTK_STOCK_OK ); - gtk_container_add( GTK_CONTAINER(bindings_bbar_hbbox) , bindings_bbar_bt_cancel ); - gtk_container_add( GTK_CONTAINER(bindings_bbar_hbbox) , bindings_bbar_bt_ok ); - gtk_button_box_set_child_secondary( GTK_BUTTON_BOX(bindings_bbar_hbbox) , bindings_bbar_bt_cancel , TRUE ); - gtk_button_box_set_child_secondary( GTK_BUTTON_BOX(bindings_bbar_hbbox) , bindings_bbar_bt_ok , TRUE ); - gtk_box_pack_start( GTK_BOX(bindings_vbox) , bindings_bbar_hbbox , FALSE , FALSE , 0 ); - - /* activate device listening */ - dev->iochan_sid = g_io_add_watch( dev->iochan , G_IO_IN , - (GIOFunc)cfg_bindbox_assign_binding_input_func , bindings_win ); - - /* signals */ - g_signal_connect( G_OBJECT(bindings_win) , "destroy" , - G_CALLBACK(cfg_bindings_cb_destroy) , dev ); - g_signal_connect_swapped( G_OBJECT(bindings_bbar_bt_cancel) , "clicked" , - G_CALLBACK(gtk_widget_destroy) , bindings_win ); - g_signal_connect_swapped( G_OBJECT(bindings_bbar_bt_ok) , "clicked" , - G_CALLBACK(cfg_bindings_cb_commit) , bindings_win ); - - gtk_widget_show_all( bindings_win ); -} - - - -/* about box */ -void -ed_ui_about_show( void ) -{ - static GtkWidget *about_win = NULL; - GtkWidget *about_vbox; - GtkWidget *logoandinfo_vbox; - GtkWidget *info_tv, *info_tv_sw, *info_tv_frame; - GtkWidget *bbar_bbox, *bbar_bt_ok; - GtkTextBuffer *info_tb; - GdkGeometry abount_win_hints; - gchar *info_tb_content = NULL; - - if ( about_win != NULL ) - { - gtk_window_present( GTK_WINDOW(about_win) ); - return; - } - - about_win = gtk_window_new( GTK_WINDOW_TOPLEVEL ); - gtk_window_set_type_hint( GTK_WINDOW(about_win), GDK_WINDOW_TYPE_HINT_DIALOG ); - gtk_window_set_position( GTK_WINDOW(about_win), GTK_WIN_POS_CENTER ); - gtk_window_set_title( GTK_WINDOW(about_win), _("EvDev-Plug - about") ); - abount_win_hints.min_width = 420; - abount_win_hints.min_height = 200; - gtk_window_set_geometry_hints( GTK_WINDOW(about_win) , GTK_WIDGET(about_win) , - &abount_win_hints , GDK_HINT_MIN_SIZE ); - /* gtk_window_set_resizable( GTK_WINDOW(about_win) , FALSE ); */ - gtk_container_set_border_width( GTK_CONTAINER(about_win) , 10 ); - g_signal_connect( G_OBJECT(about_win) , "destroy" , G_CALLBACK(gtk_widget_destroyed) , &about_win ); - - about_vbox = gtk_vbox_new( FALSE , 0 ); - gtk_container_add( GTK_CONTAINER(about_win) , about_vbox ); - - logoandinfo_vbox = gtk_vbox_new( TRUE , 2 ); - - /* TODO make a logo or make someone do it! :) - logo_pixbuf = gdk_pixbuf_new_from_xpm_data( (const gchar **)evdev_plug_logo_xpm ); - logo_image = gtk_image_new_from_pixbuf( logo_pixbuf ); - g_object_unref( logo_pixbuf ); - - logo_frame = gtk_frame_new( NULL ); - gtk_container_add( GTK_CONTAINER(logo_frame) , logo_image ); - gtk_box_pack_start( GTK_BOX(logoandinfo_vbox) , logo_frame , TRUE , TRUE , 0 ); */ - - info_tv = gtk_text_view_new(); - info_tb = gtk_text_view_get_buffer( GTK_TEXT_VIEW(info_tv) ); - gtk_text_view_set_editable( GTK_TEXT_VIEW(info_tv) , FALSE ); - gtk_text_view_set_cursor_visible( GTK_TEXT_VIEW(info_tv) , FALSE ); - gtk_text_view_set_justification( GTK_TEXT_VIEW(info_tv) , GTK_JUSTIFY_LEFT ); - gtk_text_view_set_left_margin( GTK_TEXT_VIEW(info_tv) , 10 ); - - info_tb_content = g_strjoin( NULL , "\nEvDev-Plug " , ED_VERSION_PLUGIN , - _("\nplayer remote control via event devices\n" - "http://www.develia.org/projects.php?p=audacious#evdevplug\n\n" - "written by Giacomo Lozito\n") , - "< james@develia.org >\n\n" , NULL ); - gtk_text_buffer_set_text( info_tb , info_tb_content , -1 ); - g_free( info_tb_content ); - - info_tv_sw = gtk_scrolled_window_new( NULL , NULL ); - gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(info_tv_sw) , - GTK_POLICY_NEVER , GTK_POLICY_ALWAYS ); - gtk_container_add( GTK_CONTAINER(info_tv_sw) , info_tv ); - info_tv_frame = gtk_frame_new( NULL ); - gtk_container_add( GTK_CONTAINER(info_tv_frame) , info_tv_sw ); - gtk_box_pack_start( GTK_BOX(logoandinfo_vbox) , info_tv_frame , TRUE , TRUE , 0 ); - - gtk_box_pack_start( GTK_BOX(about_vbox) , logoandinfo_vbox , TRUE , TRUE , 0 ); - - /* horizontal separator and buttons */ - gtk_box_pack_start( GTK_BOX(about_vbox) , gtk_hseparator_new() , FALSE , FALSE , 4 ); - bbar_bbox = gtk_hbutton_box_new(); - gtk_button_box_set_layout( GTK_BUTTON_BOX(bbar_bbox) , GTK_BUTTONBOX_END ); - bbar_bt_ok = gtk_button_new_from_stock( GTK_STOCK_OK ); - g_signal_connect_swapped( G_OBJECT(bbar_bt_ok) , "clicked" , - G_CALLBACK(gtk_widget_destroy) , about_win ); - gtk_container_add( GTK_CONTAINER(bbar_bbox) , bbar_bt_ok ); - gtk_box_pack_start( GTK_BOX(about_vbox) , bbar_bbox , FALSE , FALSE , 0 ); - - gtk_widget_show_all( about_win ); -} - - - -/* message box */ -void -ed_ui_message_show ( gchar * title , gchar * message , gpointer parent_win_gp ) -{ - GtkWidget *message_win; - GtkWindow *parent_win = NULL; - - if (( parent_win_gp != NULL ) && ( GTK_WIDGET_TOPLEVEL(GTK_WIDGET(parent_win_gp)) )) - parent_win = GTK_WINDOW(parent_win_gp); - - message_win = gtk_message_dialog_new( - parent_win , - ( parent_win != NULL ? GTK_DIALOG_DESTROY_WITH_PARENT : 0 ) , - GTK_MESSAGE_INFO , GTK_BUTTONS_CLOSE , "%s", message ); - gtk_window_set_title( GTK_WINDOW(message_win) , title ); - - gtk_dialog_run( GTK_DIALOG(message_win) ); - gtk_widget_destroy( message_win ); -} diff -Nru audacious-plugins-2.4.4/src/evdev-plug/ed_ui.h audacious-plugins-3.2/src/evdev-plug/ed_ui.h --- audacious-plugins-2.4.4/src/evdev-plug/ed_ui.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/evdev-plug/ed_ui.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ -/* -* -* Author: Giacomo Lozito , (C) 2005-2007 -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of the GNU General Public License as published by the -* Free Software Foundation; either version 2 of the License, or (at your -* option) any later version. -* -* This program 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 -* General Public License for more details. -* -* You should have received a copy of the GNU General Public License along -* with this program; if not, write to the Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* -*/ - -#ifndef _I_ED_UI_H -#define _I_ED_UI_H 1 - -#include "ed_common.h" -#include - -void ed_ui_config_show( void ); -void ed_ui_about_show( void ); -void ed_ui_message_show ( gchar * , gchar * , gpointer ); - -#endif /* !_I_ED_UI_H */ diff -Nru audacious-plugins-2.4.4/src/evdev-plug/Makefile audacious-plugins-3.2/src/evdev-plug/Makefile --- audacious-plugins-2.4.4/src/evdev-plug/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/evdev-plug/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -PLUGIN = evdev-plug${PLUGIN_SUFFIX} - -SRCS = ed.c \ - ed_bindings_store.c \ - ed_internals.c \ - ed_ui.c - -include ../../buildsys.mk -include ../../extra.mk - -plugindir := ${plugindir}/${GENERAL_PLUGIN_DIR} - -CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${BEEP_DEFINES} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/ffaudio/ffaudio-audvfs.c audacious-plugins-3.2/src/ffaudio/ffaudio-audvfs.c --- audacious-plugins-2.4.4/src/ffaudio/ffaudio-audvfs.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/ffaudio/ffaudio-audvfs.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ -/* - * Audacious FFaudio Plugin - * Copyright © 2009 William Pitcock - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "ffaudio-stdinc.h" - -#include - -static int audvfs_read(URLContext *h, unsigned char *buf, int size) -{ - VFSFile *file; - file = h->priv_data; - return vfs_fread(buf, 1, size, file); -} - -#if CHECK_LIBAVFORMAT_VERSION (52, 68, 0) -static int audvfs_write (URLContext * h, const unsigned char * buf, int size) -#else -static int audvfs_write (URLContext * h, unsigned char * buf, int size) -#endif -{ - VFSFile *file; - file = h->priv_data; - return vfs_fwrite(buf, 1, size, file); -} - -/* XXX: use llseek */ -static int64_t audvfs_seek(URLContext *h, int64_t pos, int whence) -{ - int64_t res, siz; - VFSFile *file; - file = h->priv_data; - siz = vfs_fsize(file); - - if (whence == AVSEEK_SIZE) - return siz; - - if (whence == SEEK_SET && pos > siz) - return AVERROR(EPIPE); - - if (vfs_fseek(file, pos, whence) == 0) - { - if (whence == SEEK_SET) - res = pos; - else - res = vfs_ftell(file); - } else - res = AVERROR(EPIPE); - - return res; -} - -static int audvfs_close(URLContext *h) -{ - VFSFile *file; - file = h->priv_data; - return vfs_fclose(file); -} - -static int audvfsptr_open(URLContext *h, const char *filename, int flags) -{ - VFSFile *p; - - av_strstart(filename, "audvfsptr:", &filename); - - p = (VFSFile *) strtoul(filename, NULL, 16); - h->priv_data = vfs_dup(p); - vfs_rewind(p); - - return 0; -} - -URLProtocol audvfsptr_protocol = { - .name = "audvfsptr", - .url_open = audvfsptr_open, - .url_read = audvfs_read, - .url_write = audvfs_write, - .url_seek = audvfs_seek, - .url_close = audvfs_close, -}; - diff -Nru audacious-plugins-2.4.4/src/ffaudio/ffaudio-core.c audacious-plugins-3.2/src/ffaudio/ffaudio-core.c --- audacious-plugins-2.4.4/src/ffaudio/ffaudio-core.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/ffaudio/ffaudio-core.c 2012-01-20 19:48:30.000000000 +0000 @@ -2,6 +2,7 @@ * Audacious FFaudio Plugin * Copyright © 2009 William Pitcock * Matti Hämäläinen + * Copyright © 2011 John Lindgren * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,6 +19,12 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +/* + * NOTE: Using libav with this code is entirely unsupported. Do so at your own + * risk. Any bugs filed against this plugin on systems using libav will be rejected + * by us. + */ + #undef FFAUDIO_DOUBLECHECK /* Doublecheck probing result for debugging purposes */ #undef FFAUDIO_NO_BLACKLIST /* Don't blacklist any recognized codecs/formats */ #define FFAUDIO_USE_AUDTAG /* Use Audacious tagging library */ @@ -31,37 +38,52 @@ #ifdef FFAUDIO_USE_AUDTAG #include #endif - -/*********************************************************************************** - * Plugin glue. * - ***********************************************************************************/ +#include static GMutex *ctrl_mutex = NULL; static GCond *ctrl_cond = NULL; static gint64 seek_value = -1; +static gboolean stop_flag = FALSE; -static void -ffaudio_init(void) +static GStaticMutex data_mutex = G_STATIC_MUTEX_INIT; +static GHashTable * extension_dict = NULL; + +/* str_unref() may be a macro */ +static void str_unref_cb (void * str) { - avcodec_init(); - av_register_all(); + str_unref (str); +} - AUDDBG("registering audvfsptr protocol\n"); -#if CHECK_LIBAVFORMAT_VERSION (52, 69, 0) - av_register_protocol2 (& audvfsptr_protocol, sizeof audvfsptr_protocol); -#else - av_register_protocol (& audvfsptr_protocol); -#endif +static gint lockmgr (void * * mutexp, enum AVLockOp op) +{ + switch (op) + { + case AV_LOCK_CREATE: + * mutexp = g_mutex_new (); + break; + case AV_LOCK_OBTAIN: + g_mutex_lock (* mutexp); + break; + case AV_LOCK_RELEASE: + g_mutex_unlock (* mutexp); + break; + case AV_LOCK_DESTROY: + g_mutex_free (* mutexp); + break; + } + + return 0; +} + +static gboolean ffaudio_init (void) +{ + av_register_all(); + av_lockmgr_register (lockmgr); - AUDDBG("creating seek mutex/cond\n"); ctrl_mutex = g_mutex_new(); ctrl_cond = g_cond_new(); -#ifdef FFAUDIO_USE_AUDTAG - tag_init(); -#endif - - AUDDBG("initialization completed\n"); + return TRUE; } static void @@ -70,135 +92,237 @@ AUDDBG("cleaning up\n"); g_mutex_free(ctrl_mutex); g_cond_free(ctrl_cond); + + if (extension_dict) + g_hash_table_destroy (extension_dict); + + av_lockmgr_register (NULL); } -static gboolean -ffaudio_codec_is_seekable(AVCodec *codec) +static const gchar * ffaudio_strerror (gint error) { - /* - * Blacklist certain codecs from seeking, which have problems. Codecs which have - * problems with seeking should have bugs reported to upstream FFmpeg. --nenolod - */ - switch (codec->id) { -#ifndef FFAUDIO_NO_BLACKLIST - case CODEC_ID_MUSEPACK8: - AUDDBG("codec is blacklisted from seeking\n"); - return FALSE; -#endif - default: - return TRUE; - } + static gchar buf[256]; + return (! av_strerror (error, buf, sizeof buf)) ? buf : "unknown error"; } -static gint -ffaudio_probe(const gchar *filename, VFSFile *file) +static GHashTable * create_extension_dict (void) { - AVCodec *codec = NULL; - AVCodecContext *c = NULL; - AVFormatContext *ic = NULL; - gint i, ret; - gchar uribuf[64]; - - AUDDBG("probing for %s, filehandle %p\n", filename, file); + GHashTable * dict = g_hash_table_new_full (g_str_hash, g_str_equal, + str_unref_cb, NULL); - g_snprintf(uribuf, sizeof(uribuf), "audvfsptr:%p", (void *) file); - if ((ret = av_open_input_file(&ic, uribuf, NULL, 0, NULL)) < 0) { - AUDDBG("ic is NULL, ret %d/%s\n", ret, strerror(-ret)); - return 0; - } + AVInputFormat * f; + for (f = av_iformat_next (NULL); f; f = av_iformat_next (f)) + { + if (! f->extensions) + continue; - AUDDBG("file opened, %p\n", ic); + gchar * exts = g_ascii_strdown (f->extensions, -1); - for (i = 0; i < ic->nb_streams; i++) - { - c = ic->streams[i]->codec; - if (c->codec_type == CODEC_TYPE_AUDIO) + gchar * parse, * next; + for (parse = exts; parse; parse = next) { - av_find_stream_info(ic); - codec = avcodec_find_decoder(c->codec_id); - if (codec != NULL) - break; + next = strchr (parse, ','); + if (next) + { + * next = 0; + next ++; + } + + g_hash_table_insert (dict, str_get(parse), f); } + + g_free (exts); } - if (codec == NULL) + return dict; +} + +static AVInputFormat * get_format_by_extension (const gchar * name) +{ + const gchar * ext0, * sub; + uri_parse (name, NULL, & ext0, & sub, NULL); + + if (ext0 == sub) + return NULL; + + gchar * ext = g_ascii_strdown (ext0 + 1, sub - ext0 - 1); + + AUDDBG ("Get format by extension: %s\n", name); + g_static_mutex_lock (& data_mutex); + + if (! extension_dict) + extension_dict = create_extension_dict (); + + AVInputFormat * f = g_hash_table_lookup (extension_dict, ext); + g_static_mutex_unlock (& data_mutex); + + if (f) + AUDDBG ("Format %s.\n", f->name); + else + AUDDBG ("Format unknown.\n"); + + g_free (ext); + return f; +} + +static AVInputFormat * get_format_by_content (const gchar * name, VFSFile * file) +{ + AUDDBG ("Get format by content: %s\n", name); + + AVInputFormat * f = NULL; + + guchar buf[16384 + AVPROBE_PADDING_SIZE]; + gint size = 16; + gint filled = 0; + gint target = 100; + gint score = 0; + + while (1) { - av_close_input_file(ic); - return 0; + if (filled < size) + filled += vfs_fread (buf + filled, 1, size - filled, file); + if (filled < size) + break; + + memset (buf + size, 0, AVPROBE_PADDING_SIZE); + AVProbeData d = {name, buf, size}; + score = target; + + f = av_probe_input_format2 (& d, TRUE, & score); + if (f) + break; + + if (size < 16384) + size *= 4; + else if (target > 10) + target = 10; + else + break; } -#ifdef FFAUDIO_DOUBLECHECK - AUDDBG("got codec %s, doublechecking\n", codec->name); + if (f) + AUDDBG ("Format %s, buffer size %d, score %d.\n", f->name, size, score); + else + AUDDBG ("Format unknown.\n"); - av_find_stream_info(ic); + if (vfs_fseek (file, 0, SEEK_SET) < 0) + ; /* ignore errors here */ - codec = avcodec_find_decoder(c->codec_id); + return f; +} - if (codec == NULL) +static AVInputFormat * get_format (const gchar * name, VFSFile * file) +{ + AVInputFormat * f = get_format_by_extension (name); + return f ? f : get_format_by_content (name, file); +} + +static AVFormatContext * open_input_file (const gchar * name, VFSFile * file) +{ + AVInputFormat * f = get_format (name, file); + + if (! f) { - av_close_input_file(ic); - return 0; + fprintf (stderr, "ffaudio: Unknown format for %s.\n", name); + return NULL; + } + + AVFormatContext * c = avformat_alloc_context (); + AVIOContext * io = io_context_new (file); + c->pb = io; + + gint ret = avformat_open_input (& c, name, f, NULL); + + if (ret < 0) + { + fprintf (stderr, "ffaudio: avformat_open_input failed for %s: %s.\n", name, ffaudio_strerror (ret)); + io_context_free (io); + return NULL; } + + return c; +} + +static void close_input_file (AVFormatContext * c) +{ + AVIOContext * io = c->pb; + +#if CHECK_LIBAVFORMAT_VERSION (53, 24, 1) + avformat_close_input (&c); +#else + av_close_input_file (c); #endif - AUDDBG("probe success for %s\n", codec->name); - av_close_input_file(ic); + io_context_free (io); +} - return 1; +static gboolean +ffaudio_codec_is_seekable(AVCodec *codec) +{ + /* + * Blacklist certain codecs from seeking, which have problems. Codecs which have + * problems with seeking should have bugs reported to upstream FFmpeg. --nenolod + */ + switch (codec->id) { +#ifndef FFAUDIO_NO_BLACKLIST + case CODEC_ID_MUSEPACK8: + AUDDBG("codec is blacklisted from seeking\n"); + return FALSE; +#endif + default: + return TRUE; + } +} + +static gboolean ffaudio_probe (const gchar * filename, VFSFile * file) +{ + if (! file) + return FALSE; + + return get_format (filename, file) ? TRUE : FALSE; } typedef struct { TupleValueType ttype; /* Tuple field value type */ - gint field; /* Tuple field constant or if -1, use prim_key as field key */ - gchar *prim_key; /* Primary FFmpeg metadata key, matches any with this suffix */ - gchar *alt_keys[5]; /* Fallback keys, strict (but case-insensitive) matching */ + gint field; /* Tuple field constant */ + gchar *keys[5]; /* Keys to match (case-insensitive), ended by NULL */ } ffaudio_meta_t; static const ffaudio_meta_t metaentries[] = { - { TUPLE_STRING, FIELD_ARTIST, "author", { "hor", NULL } }, - { TUPLE_STRING, FIELD_TITLE, "title", { "le", NULL } }, - { TUPLE_STRING, FIELD_ALBUM, "album", { "WM/AlbumTitle", NULL } }, - { TUPLE_STRING, FIELD_PERFORMER, "performer", { NULL } }, - { TUPLE_STRING, FIELD_COPYRIGHT, "copyright", { NULL } }, - { TUPLE_STRING, FIELD_GENRE, "genre", { "WM/Genre", NULL } }, - { TUPLE_STRING, FIELD_COMMENT, "comment", { NULL } }, - { TUPLE_STRING, -1, "lyrics", { "WM/Lyrics", NULL } }, - { TUPLE_INT, FIELD_YEAR, "year", { "WM/Year", NULL } }, - { TUPLE_INT, FIELD_TRACK_NUMBER, "track", { "WM/TrackNumber", NULL } }, + {TUPLE_STRING, FIELD_ARTIST, {"author", "hor", "artist", NULL}}, + {TUPLE_STRING, FIELD_TITLE, {"title", "le", NULL}}, + {TUPLE_STRING, FIELD_ALBUM, {"album", "WM/AlbumTitle", NULL}}, + {TUPLE_STRING, FIELD_PERFORMER, {"performer", NULL}}, + {TUPLE_STRING, FIELD_COPYRIGHT, {"copyright", NULL}}, + {TUPLE_STRING, FIELD_GENRE, {"genre", "WM/Genre", NULL}}, + {TUPLE_STRING, FIELD_COMMENT, {"comment", NULL}}, + {TUPLE_STRING, FIELD_COMPOSER, {"composer", NULL}}, + {TUPLE_INT, FIELD_YEAR, {"year", "WM/Year", "date", NULL}}, + {TUPLE_INT, FIELD_TRACK_NUMBER, {"track", "WM/TrackNumber", NULL}}, }; static const gint n_metaentries = sizeof(metaentries) / sizeof(metaentries[0]); -#ifndef FFAUDIO_USE_AUDTAG static void ffaudio_get_meta(Tuple *tuple, AVFormatContext *ic, const ffaudio_meta_t *m) { - AVMetadataTag *tag = NULL; + if (! ic->metadata) + return; - if (ic->metadata != NULL) - { - tag = av_metadata_get(ic->metadata, m->prim_key, NULL, AV_METADATA_IGNORE_SUFFIX); - if (tag == NULL) { - gint i; - for (i = 0; tag == NULL && m->alt_keys[i] != NULL; i++) - tag = av_metadata_get(ic->metadata, m->alt_keys[i], NULL, 0); - } - } + AVDictionaryEntry *tag = NULL; + + for (gint i = 0; ! tag && m->keys[i]; i ++) + tag = av_dict_get (ic->metadata, m->keys[i], NULL, 0); if (tag != NULL) { - const gchar *key_name = (m->field < 0) ? m->prim_key : NULL; - gchar *tmp; - switch (m->ttype) { case TUPLE_STRING: - tmp = str_to_utf8(tag->value); - tuple_associate_string(tuple, m->field, key_name, tmp); - g_free(tmp); + tuple_set_str (tuple, m->field, NULL, tag->value); break; case TUPLE_INT: - tuple_associate_int(tuple, m->field, key_name, atoi(tag->value)); + tuple_set_int (tuple, m->field, NULL, atoi(tag->value)); break; default: @@ -206,26 +330,23 @@ } } } -#endif static void ffaudio_get_tuple_data(Tuple *tuple, AVFormatContext *ic, AVCodecContext *c, AVCodec *codec) { if (ic != NULL) { -#ifndef FFAUDIO_USE_AUDTAG gint i; for (i = 0; i < n_metaentries; i++) ffaudio_get_meta(tuple, ic, &metaentries[i]); -#endif - tuple_associate_int(tuple, FIELD_LENGTH, NULL, ic->duration / 1000); - tuple_associate_int(tuple, FIELD_BITRATE, NULL, ic->bit_rate / 1000); + tuple_set_int(tuple, FIELD_LENGTH, NULL, ic->duration / 1000); + tuple_set_int(tuple, FIELD_BITRATE, NULL, ic->bit_rate / 1000); } if (codec != NULL && codec->long_name != NULL) { - tuple_associate_string(tuple, FIELD_CODEC, NULL, codec->long_name); + tuple_set_str(tuple, FIELD_CODEC, NULL, codec->long_name); } } @@ -233,23 +354,20 @@ { AVCodec *codec = NULL; AVCodecContext *c = NULL; - AVFormatContext *ic = NULL; AVStream *s = NULL; gint i; - gchar uribuf[64]; - snprintf (uribuf, sizeof uribuf, "audvfsptr:%p", (void *) file); - - if (av_open_input_file(&ic, uribuf, NULL, 0, NULL) < 0) + AVFormatContext * ic = open_input_file (filename, file); + if (! ic) return NULL; for (i = 0; i < ic->nb_streams; i++) { s = ic->streams[i]; c = s->codec; - if (c->codec_type == CODEC_TYPE_AUDIO) + if (c->codec_type == AVMEDIA_TYPE_AUDIO) { - av_find_stream_info(ic); + avformat_find_stream_info (ic, NULL); codec = avcodec_find_decoder(c->codec_id); if (codec != NULL) break; @@ -258,35 +376,37 @@ Tuple *tuple = tuple_new_from_filename(filename); ffaudio_get_tuple_data(tuple, ic, c, codec); - av_close_input_file (ic); + close_input_file (ic); return tuple; } -#ifdef FFAUDIO_USE_AUDTAG static Tuple * ffaudio_probe_for_tuple(const gchar *filename, VFSFile *fd) { + if (! fd) + return NULL; + Tuple * t = read_tuple (filename, fd); if (t == NULL) return NULL; - if (! vfs_fseek (fd, 0, SEEK_SET)) - tag_tuple_read (t, fd); +#ifdef FFAUDIO_USE_AUDTAG + vfs_rewind(fd); + tag_tuple_read(t, fd); +#endif return t; } +#ifdef FFAUDIO_USE_AUDTAG static gboolean ffaudio_write_tag (const Tuple * tuple, VFSFile * file) { - gchar *file_uri = g_ascii_strdown(file->uri, -4); + if (! file) + return FALSE; - if (g_str_has_suffix(file_uri, ".ape")) - { - g_free(file_uri); + if (str_has_suffix_nocase (vfs_get_filename (file), ".ape")) return tag_tuple_write(tuple, file, TAG_TYPE_APE); - } - g_free(file_uri); return tag_tuple_write(tuple, file, TAG_TYPE_NONE); } @@ -295,37 +415,31 @@ static gboolean ffaudio_play (InputPlayback * playback, const gchar * filename, VFSFile * file, gint start_time, gint stop_time, gboolean pause) { - if (file == NULL) + AUDDBG ("Playing %s.\n", filename); + if (! file) return FALSE; AVCodec *codec = NULL; AVCodecContext *c = NULL; - AVFormatContext *ic = NULL; AVStream *s = NULL; AVPacket pkt = {.data = NULL}; - guint8 *outbuf = NULL, *resbuf = NULL; gint i, stream_id, errcount; - gint in_sample_size, out_sample_size, chunk_size; - ReSampleContext *resctx = NULL; - gboolean codec_opened = FALSE, do_resampling = FALSE; + gboolean codec_opened = FALSE; gint out_fmt; -#ifndef FFAUDIO_USE_AUDTAG - Tuple *tuple; -#endif gboolean seekable; + gboolean error = FALSE; - gchar uribuf[64]; - snprintf (uribuf, sizeof uribuf, "audvfsptr:%p", (void *) file); - if (av_open_input_file(&ic, uribuf, NULL, 0, NULL) < 0) - return FALSE; + AVFormatContext * ic = open_input_file (filename, file); + if (! ic) + return FALSE; for (i = 0; i < ic->nb_streams; i++) { s = ic->streams[i]; c = s->codec; - if (c->codec_type == CODEC_TYPE_AUDIO) + if (c->codec_type == AVMEDIA_TYPE_AUDIO) { - av_find_stream_info(ic); + avformat_find_stream_info (ic, NULL); codec = avcodec_find_decoder(c->codec_id); stream_id = i; if (codec != NULL) @@ -334,51 +448,26 @@ } if (codec == NULL) + { + fprintf (stderr, "ffaudio: No codec found for %s.\n", filename); goto error_exit; + } AUDDBG("got codec %s for stream index %d, opening\n", codec->name, stream_id); - if (avcodec_open(c, codec) < 0) + if (avcodec_open2 (c, codec, NULL) < 0) goto error_exit; codec_opened = TRUE; - /* Determine if audio conversion or resampling is needed */ -#if CHECK_LIBAVCODEC_VERSION (52, 94, 3) - in_sample_size = av_get_bits_per_sample_fmt (c->sample_fmt) / 8; - out_sample_size = av_get_bits_per_sample_fmt (SAMPLE_FMT_S16) / 8; -#else - in_sample_size = av_get_bits_per_sample_format (c->sample_fmt) / 8; - out_sample_size = av_get_bits_per_sample_format (SAMPLE_FMT_S16) / 8; -#endif - - chunk_size = out_sample_size * c->channels * (c->sample_rate / 50); - switch (c->sample_fmt) { case SAMPLE_FMT_U8: out_fmt = FMT_U8; break; case SAMPLE_FMT_S16: out_fmt = FMT_S16_NE; break; case SAMPLE_FMT_S32: out_fmt = FMT_S32_NE; break; case SAMPLE_FMT_FLT: out_fmt = FMT_FLOAT; break; - default: do_resampling = TRUE; break; - } - - if (do_resampling) - { - /* Initialize resampling context */ - out_fmt = FMT_S16_NE; - - AUDDBG("resampling needed chn=%d, rate=%d, fmt=%d -> chn=%d, rate=%d, fmt=S16NE\n", - c->channels, c->sample_rate, c->sample_fmt, - c->channels, c->sample_rate); - - resctx = av_audio_resample_init( - c->channels, c->channels, - c->sample_rate, c->sample_rate, - SAMPLE_FMT_S16, c->sample_fmt, - 16, 10, 0, 0.8); - - if (resctx == NULL) - goto error_exit; + default: + fprintf (stderr, "ffaudio: Unsupported audio format %d\n", (int) c->sample_fmt); + goto error_exit; } /* Open audio output */ @@ -386,31 +475,22 @@ if (playback->output->open_audio(out_fmt, c->sample_rate, c->channels) <= 0) { - playback->error = TRUE; + error = TRUE; goto error_exit; } playback->set_gain_from_playlist(playback); - /* Allocate output buffer aligned to 16 byte boundary */ - outbuf = av_malloc(AVCODEC_MAX_AUDIO_FRAME_SIZE); - resbuf = av_malloc(AVCODEC_MAX_AUDIO_FRAME_SIZE); - AUDDBG("setting parameters\n"); -#ifndef FFAUDIO_USE_AUDTAG - tuple = tuple_new_from_filename(playback->filename); - ffaudio_get_tuple_data(tuple, ic, c, codec); - playback->set_tuple(playback, tuple); -#endif if (pause) playback->output->pause(TRUE); - playback->set_params(playback, NULL, 0, ic->bit_rate, c->sample_rate, c->channels); + playback->set_params(playback, ic->bit_rate, c->sample_rate, c->channels); g_mutex_lock(ctrl_mutex); - playback->playing = TRUE; + stop_flag = FALSE; seek_value = (start_time > 0) ? start_time : -1; playback->set_pb_ready(playback); errcount = 0; @@ -418,7 +498,7 @@ g_mutex_unlock(ctrl_mutex); - while (playback->playing && (stop_time < 0 || + while (!stop_flag && (stop_time < 0 || playback->output->written_time () < stop_time)) { AVPacket tmp; @@ -471,11 +551,8 @@ /* Decode and play packet/frame */ memcpy(&tmp, &pkt, sizeof(tmp)); - while (tmp.size > 0 && playback->playing) + while (tmp.size > 0 && !stop_flag) { - gint len, out_size = AVCODEC_MAX_AUDIO_FRAME_SIZE; - guint8 *outbuf_p; - /* Check for seek request and bail out if we have one */ g_mutex_lock(ctrl_mutex); if (seek_value != -1) @@ -493,63 +570,25 @@ } g_mutex_unlock(ctrl_mutex); - /* Decode whatever we can of the frame data */ -#if (LIBAVCODEC_VERSION_MAJOR <= 52) && (LIBAVCODEC_VERSION_MINOR <= 25) - len = avcodec_decode_audio2(c, (gint16 *)outbuf, &out_size, tmp.data, tmp.size); -#else - len = avcodec_decode_audio3(c, (gint16 *)outbuf, &out_size, &tmp); -#endif + AVFrame * frame = avcodec_alloc_frame (); + int decoded = 0; + int len = avcodec_decode_audio4 (c, frame, & decoded, & tmp); + if (len < 0) { - AUDDBG("codec failure, breaking out of loop\n"); + fprintf (stderr, "ffaudio: decode_audio() failed, code %d\n", len); break; } tmp.size -= len; tmp.data += len; - if (out_size <= 0) + if (! decoded) continue; - /* Perform audio resampling if necessary */ - if (do_resampling) - { - out_size = audio_resample(resctx, - (gint16 *)resbuf, (gint16 *)outbuf, - out_size / in_sample_size) * out_sample_size; - outbuf_p = resbuf; - } - else - outbuf_p = outbuf; - - /* Output audio in small blocks */ - while (out_size > 0 && playback->playing && (stop_time < 0 || - playback->output->written_time () < stop_time)) - { - gint writeoff = MIN (chunk_size, out_size); - - playback->output->write_audio((gint16 *)outbuf_p, writeoff); - - outbuf_p += writeoff; - out_size -= writeoff; - - /* Check for seek request and bail out if we have one */ - g_mutex_lock(ctrl_mutex); - if (seek_value != -1) - { - if (!seekable) - { - seek_value = -1; - g_cond_signal(ctrl_cond); - } - else - { - g_mutex_unlock(ctrl_mutex); - break; - } - } - g_mutex_unlock(ctrl_mutex); - } + playback->output->write_audio (frame->data[0], FMT_SIZEOF (out_fmt) + * c->channels * frame->nb_samples); + av_free (frame); } if (pkt.data) @@ -558,7 +597,7 @@ g_mutex_lock(ctrl_mutex); - while (playback->playing && playback->output->buffer_playing()) + while (!stop_flag && playback->output->buffer_playing()) g_usleep(20000); playback->output->close_audio(); @@ -570,30 +609,26 @@ AUDDBG("decode loop finished, shutting down\n"); - playback->playing = FALSE; + stop_flag = TRUE; - av_free(outbuf); - av_free(resbuf); - if (resctx != NULL) - audio_resample_close(resctx); if (pkt.data) av_free_packet(&pkt); if (codec_opened) avcodec_close(c); if (ic != NULL) - av_close_input_file(ic); + close_input_file(ic); AUDDBG("exiting thread\n"); - return ! playback->error; + return ! error; } static void ffaudio_stop(InputPlayback * playback) { g_mutex_lock(ctrl_mutex); - if (playback->playing) + if (!stop_flag) { - playback->playing = FALSE; + stop_flag = TRUE; playback->output->abort_write(); g_cond_signal(ctrl_cond); } @@ -601,21 +636,21 @@ g_mutex_unlock (ctrl_mutex); } -static void ffaudio_pause(InputPlayback * playback, gshort pause) +static void ffaudio_pause(InputPlayback * playback, gboolean pause) { g_mutex_lock(ctrl_mutex); - if (playback->playing) + if (!stop_flag) playback->output->pause(pause); g_mutex_unlock(ctrl_mutex); } -static void ffaudio_seek (InputPlayback * playback, gulong time) +static void ffaudio_seek (InputPlayback * playback, gint time) { g_mutex_lock(ctrl_mutex); - if (playback->playing) + if (!stop_flag) { seek_value = time; playback->output->abort_write(); @@ -657,10 +692,21 @@ /* Handle OGG streams (FLAC/Vorbis etc.) */ "ogg", + /* Speex */ + "spx", + /* end of table */ NULL }; +static gchar * version_string (gint version) +{ + gint major = version >> 16; + gint minor = (version >> 8) & 0xff; + gint micro = version & 0xff; + return g_strdup_printf ("%d.%d.%d", major, minor, micro); +} + static void ffaudio_about(void) { @@ -668,40 +714,53 @@ if (aboutbox == NULL) { + gchar * avcodec_local = version_string (avcodec_version ()); + gchar * avcodec_build = version_string (LIBAVCODEC_VERSION_INT); + gchar * avformat_local = version_string (avformat_version ()); + gchar * avformat_build = version_string (LIBAVFORMAT_VERSION_INT); + gchar * avutil_local = version_string (avutil_version ()); + gchar * avutil_build = version_string (LIBAVUTIL_VERSION_INT); + gchar *description = g_strdup_printf( _("Multi-format audio decoding plugin for Audacious based on\n" "FFmpeg multimedia framework (http://www.ffmpeg.org/)\n" "Copyright (c) 2000-2009 Fabrice Bellard, et al.\n" "\n" - "FFmpeg libavformat %d.%d.%d, libavcodec %d.%d.%d\n" - "\n" "Audacious plugin by:\n" " William Pitcock ,\n" - " Matti Hämäläinen \n"), - LIBAVFORMAT_VERSION_MAJOR, LIBAVFORMAT_VERSION_MINOR, LIBAVFORMAT_VERSION_MICRO, - LIBAVCODEC_VERSION_MAJOR, LIBAVCODEC_VERSION_MINOR, LIBAVCODEC_VERSION_MICRO); + " Matti Hämäläinen \n" + "\n" + "libavcodec %s (%s)\n" + "libavformat %s (%s)\n" + "libavutil %s (%s)\n"), + avcodec_local, avcodec_build, avformat_local, avformat_build, avutil_local, avutil_build); audgui_simple_message (& aboutbox, GTK_MESSAGE_INFO, _("About FFaudio Plugin"), description); g_free(description); + g_free (avcodec_local); + g_free (avcodec_build); + g_free (avformat_local); + g_free (avformat_build); + g_free (avutil_local); + g_free (avutil_build); } } -InputPlugin ffaudio_ip = { +AUD_INPUT_PLUGIN +( .init = ffaudio_init, .cleanup = ffaudio_cleanup, .is_our_file_from_vfs = ffaudio_probe, -#ifdef FFAUDIO_USE_AUDTAG .probe_for_tuple = ffaudio_probe_for_tuple, -#endif .play = ffaudio_play, .stop = ffaudio_stop, .pause = ffaudio_pause, .mseek = ffaudio_seek, .about = ffaudio_about, - .description = "FFaudio Plugin", - .vfs_extensions = ffaudio_fmts, + .name = "FFmpeg Support", + .extensions = ffaudio_fmts, #ifdef FFAUDIO_USE_AUDTAG .update_song_tuple = ffaudio_write_tag, #endif @@ -709,8 +768,4 @@ /* FFMPEG probing takes forever on network files, so try everything else * first. -jlindgren */ .priority = 10, -}; - -static InputPlugin *ffaudio_iplist[] = { &ffaudio_ip, NULL }; - -SIMPLE_INPUT_PLUGIN (ffaudio, ffaudio_iplist) +) diff -Nru audacious-plugins-2.4.4/src/ffaudio/ffaudio-io.c audacious-plugins-3.2/src/ffaudio/ffaudio-io.c --- audacious-plugins-2.4.4/src/ffaudio/ffaudio-io.c 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/ffaudio/ffaudio-io.c 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,52 @@ +/* + * ffaudio-io.c + * Copyright 2011 John Lindgren + * + * This file is part of Audacious. + * + * Audacious is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 2 or version 3 of the License. + * + * Audacious 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Audacious. If not, see . + * + * The Audacious team does not consider modular code linking to Audacious or + * using our public API to be a derived work. + */ + +#include + +#include "ffaudio-stdinc.h" + +#define IOBUF 4096 + +static gint read_cb (void * file, guchar * buf, gint size) +{ + return vfs_fread (buf, 1, size, file); +} + +static gint64 seek_cb (void * file, gint64 offset, gint whence) +{ + if (whence == AVSEEK_SIZE) + return vfs_fsize (file); + if (vfs_fseek (file, offset, whence & ~(gint) AVSEEK_FORCE)) + return -1; + return vfs_ftell (file); +} + +AVIOContext * io_context_new (VFSFile * file) +{ + guchar * buf = av_malloc (IOBUF); + return avio_alloc_context (buf, IOBUF, 0, file, read_cb, NULL, seek_cb); +} + +void io_context_free (AVIOContext * io) +{ + av_free (io->buffer); + av_free (io); +} diff -Nru audacious-plugins-2.4.4/src/ffaudio/ffaudio-stdinc.h audacious-plugins-3.2/src/ffaudio/ffaudio-stdinc.h --- audacious-plugins-2.4.4/src/ffaudio/ffaudio-stdinc.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/ffaudio/ffaudio-stdinc.h 2012-01-20 19:48:30.000000000 +0000 @@ -27,14 +27,11 @@ #include #include -#define VERSION_INT(maj, min, mic) ((maj) * 1000000 + (min) * 1000 + (mic)) -#define CHECK_LIBAVCODEC_VERSION(maj, min, mic) (VERSION_INT \ - (LIBAVCODEC_VERSION_MAJOR, LIBAVCODEC_VERSION_MINOR, LIBAVCODEC_VERSION_MICRO) \ - >= VERSION_INT (maj, min, mic)) -#define CHECK_LIBAVFORMAT_VERSION(maj, min, mic) (VERSION_INT \ - (LIBAVFORMAT_VERSION_MAJOR, LIBAVFORMAT_VERSION_MINOR, \ - LIBAVFORMAT_VERSION_MICRO) >= VERSION_INT (maj, min, mic)) +#define CHECK_LIBAVCODEC_VERSION(a, b, c) (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT (a, b, c)) +#define CHECK_LIBAVFORMAT_VERSION(a, b, c) (LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT (a, b, c)) +#define CHECK_LIBAVUTIL_VERSION(a, b, c) (LIBAVUTIL_VERSION_INT >= AV_VERSION_INT (a, b, c)) -URLProtocol audvfsptr_protocol; +AVIOContext * io_context_new (VFSFile * file); +void io_context_free (AVIOContext * context); #endif diff -Nru audacious-plugins-2.4.4/src/ffaudio/Makefile audacious-plugins-3.2/src/ffaudio/Makefile --- audacious-plugins-2.4.4/src/ffaudio/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/ffaudio/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -1,7 +1,6 @@ PLUGIN = ffaudio${PLUGIN_SUFFIX} -SRCS = ffaudio-audvfs.c \ - ffaudio-core.c +SRCS = ffaudio-core.c ffaudio-io.c include ../../buildsys.mk include ../../extra.mk @@ -9,5 +8,5 @@ plugindir := ${plugindir}/${INPUT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${SIMD_CFLAGS} ${FFMPEG_CFLAGS} -I../.. -std=c99 ${GCC42_CFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${FFMPEG_CFLAGS} -I../.. -std=c99 ${GCC42_CFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${FFMPEG_LIBS} -laudtag diff -Nru audacious-plugins-2.4.4/src/filewriter/filewriter.c audacious-plugins-3.2/src/filewriter/filewriter.c --- audacious-plugins-2.4.4/src/filewriter/filewriter.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/filewriter/filewriter.c 2012-01-20 19:48:30.000000000 +0000 @@ -20,11 +20,13 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#include +#include +#include + +#include #include #include #include -#include #include #include @@ -55,7 +57,7 @@ FILEEXT_MAX }; -static gint fileext = WAV; +static gint fileext; static const gchar *fileext_str[FILEEXT_MAX] = { "wav", @@ -73,57 +75,24 @@ static FileWriter *plugin; static GtkWidget *saveplace_hbox, *saveplace; -static gboolean save_original = TRUE; +static gboolean save_original; static GtkWidget *filenamefrom_hbox, *filenamefrom_label, *filenamefrom_toggle; -static gboolean filenamefromtags = TRUE; +static gboolean filenamefromtags; static GtkWidget *use_suffix_toggle = NULL; -static gboolean use_suffix = FALSE; +static gboolean use_suffix; static GtkWidget *prependnumber_toggle; -static gboolean prependnumber = FALSE; +static gboolean prependnumber; -static gchar *file_path = NULL; +static gchar *file_path; VFSFile *output_file = NULL; -const Tuple *tuple = NULL; +Tuple *tuple = NULL; static gint64 samples_written; -static OutputPluginInitStatus file_init(void); -static void file_about(void); -static gint file_open(gint fmt, gint rate, gint nch); -static void file_write(void *ptr, gint length); -static gint file_write_output(void *ptr, gint length); -static void file_close(void); -static void file_flush(gint time); -static void file_pause(short p); -static gint file_playing(void); -static gint file_get_time (void); -static void file_configure(void); - -OutputPlugin file_op = -{ - .description = "FileWriter Plugin", - .probe_priority = 0, - .init = file_init, - .about = file_about, - .configure = file_configure, - .open_audio = file_open, - .write_audio = file_write, - .close_audio = file_close, - .flush = file_flush, - .pause = file_pause, - .buffer_playing = file_playing, - .output_time = file_get_time, - .written_time = file_get_time, -}; - -OutputPlugin *file_oplist[] = { &file_op, NULL }; - -SIMPLE_OUTPUT_PLUGIN (filewriter, file_oplist) - FileWriter *plugins[FILEEXT_MAX] = { &wav_plugin, #ifdef FILEWRITER_MP3 @@ -145,31 +114,48 @@ plugin = plugins[fileext]; } -static OutputPluginInitStatus file_init(void) +static gint file_write_output (void * data, gint length) +{ + return vfs_fwrite (data, 1, length, output_file); +} + +static const gchar * const filewriter_defaults[] = { + "fileext", "0", /* WAV */ + "filenamefromtags", "TRUE", + "prependnumber", "FALSE", + "save_original", "TRUE", + "use_suffix", "FALSE", + NULL}; + +static gboolean file_init (void) { - mcs_handle_t *db; + aud_config_set_defaults ("filewriter", filewriter_defaults); - db = aud_cfg_db_open(); - aud_cfg_db_get_int(db, FILEWRITER_CFGID, "fileext", &fileext); - aud_cfg_db_get_string(db, FILEWRITER_CFGID, "file_path", &file_path); - aud_cfg_db_get_bool(db, FILEWRITER_CFGID, "save_original", &save_original); - aud_cfg_db_get_bool(db, FILEWRITER_CFGID, "use_suffix", &use_suffix); - aud_cfg_db_get_bool(db, FILEWRITER_CFGID, "filenamefromtags", &filenamefromtags); - aud_cfg_db_get_bool(db, FILEWRITER_CFGID, "prependnumber", &prependnumber); - aud_cfg_db_close(db); + fileext = aud_get_int ("filewriter", "fileext"); + filenamefromtags = aud_get_bool ("filewriter", "filenamefromtags"); + file_path = aud_get_string ("filewriter", "file_path"); + prependnumber = aud_get_bool ("filewriter", "prependnumber"); + save_original = aud_get_bool ("filewriter", "save_original"); + use_suffix = aud_get_bool ("filewriter", "use_suffix"); - if (file_path == NULL) + if (! file_path[0]) { - g_return_val_if_fail (getenv ("HOME") != NULL, OUTPUT_PLUGIN_INIT_FAIL); + g_return_val_if_fail (getenv ("HOME") != NULL, FALSE); file_path = g_filename_to_uri (getenv ("HOME"), NULL, NULL); - g_return_val_if_fail (file_path != NULL, OUTPUT_PLUGIN_INIT_FAIL); + g_return_val_if_fail (file_path != NULL, FALSE); } set_plugin(); if (plugin->init) plugin->init(&file_write_output); - return OUTPUT_PLUGIN_INIT_FOUND_DEVICES; + return TRUE; +} + +static void file_cleanup (void) +{ + g_free (file_path); + file_path = NULL; } void file_about (void) @@ -178,7 +164,7 @@ audgui_simple_message (& dialog, GTK_MESSAGE_INFO, _("About FileWriter-Plugin"), - _("FileWriter-Plugin\n\n" + "FileWriter-Plugin\n\n" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2 of the License, or\n" @@ -192,7 +178,7 @@ "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software\n" "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,\n" - "USA.")); + "USA."); } static VFSFile * safe_create (const gchar * filename) @@ -243,19 +229,22 @@ if (filenamefromtags) { - gchar *utf8 = tuple_formatter_make_title_string(tuple, aud_get_gentitle_format()); - + gchar * utf8 = aud_playlist_entry_get_title (playlist, pos, FALSE); string_replace_char (utf8, '/', ' '); - filename = string_encode_percent (utf8, FALSE); - g_free (utf8); + + gchar buf[3 * strlen (utf8) + 1]; + str_encode_percent (utf8, -1, buf); + str_unref (utf8); + + filename = g_strdup (buf); } else { - const gchar * original = strrchr (aud_playlist_entry_get_filename - (playlist, pos), '/'); - + temp = aud_playlist_entry_get_filename (playlist, pos); + gchar * original = strrchr (temp, '/'); g_return_val_if_fail (original != NULL, 0); filename = g_strdup (original + 1); + str_unref (temp); if (!use_suffix) if ((temp = strrchr(filename, '.')) != NULL) @@ -275,7 +264,9 @@ if (save_original) { - directory = g_strdup (aud_playlist_entry_get_filename (playlist, pos)); + temp = aud_playlist_entry_get_filename (playlist, pos); + directory = g_strdup (temp); + str_unref (temp); temp = strrchr (directory, '/'); g_return_val_if_fail (temp != NULL, 0); temp[1] = 0; @@ -318,9 +309,8 @@ samples_written += length / FMT_SIZEOF (input.format); } -static gint file_write_output(void *ptr, gint length) +static void file_drain (void) { - return vfs_fwrite(ptr, 1, length, output_file); } static void file_close(void) @@ -331,23 +321,36 @@ if (output_file != NULL) vfs_fclose(output_file); output_file = NULL; + + if (tuple) + { + tuple_unref (tuple); + tuple = NULL; + } } static void file_flush(gint time) { - file_close(); - file_open(input.format, input.frequency, input.channels); - samples_written = time * (gint64) input.channels * input.frequency / 1000; } -static void file_pause(short p) +static void file_set_written_time (gint time) { + /* Guesswork: + * If time = 0, we are starting a new song and need to open a new file. If + * time > 0, we have already done this, and we are just setting the time + * counter. */ + if (! time) + { + file_close (); + file_open (input.format, input.frequency, input.channels); + } + + samples_written = time * (gint64) input.channels * input.frequency / 1000; } -static gint file_playing(void) +static void file_pause (gboolean p) { - return 0; } static gint file_get_time (void) @@ -357,8 +360,6 @@ static void configure_ok_cb(gpointer data) { - mcs_handle_t *db; - fileext = gtk_combo_box_get_active(GTK_COMBO_BOX(fileext_combo)); g_free (file_path); @@ -370,15 +371,12 @@ prependnumber = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prependnumber_toggle)); - db = aud_cfg_db_open(); - aud_cfg_db_set_int(db, FILEWRITER_CFGID, "fileext", fileext); - aud_cfg_db_set_string(db, FILEWRITER_CFGID, "file_path", file_path); - aud_cfg_db_set_bool(db, FILEWRITER_CFGID, "save_original", save_original); - aud_cfg_db_set_bool(db, FILEWRITER_CFGID, "filenamefromtags", filenamefromtags); - aud_cfg_db_set_bool(db, FILEWRITER_CFGID, "use_suffix", use_suffix); - aud_cfg_db_set_bool(db, FILEWRITER_CFGID, "prependnumber", prependnumber); - - aud_cfg_db_close(db); + aud_set_int ("filewriter", "fileext", fileext); + aud_set_bool ("filewriter", "filenamefromtags", filenamefromtags); + aud_set_string ("filewriter", "file_path", file_path); + aud_set_bool ("filewriter", "prependnumber", prependnumber); + aud_set_bool ("filewriter", "save_original", save_original); + aud_set_bool ("filewriter", "use_suffix", use_suffix); gtk_widget_destroy(configure_win); if (path_dirbrowser) @@ -449,18 +447,15 @@ static void file_configure(void) { - GtkTooltips *use_suffix_tooltips; - if (!configure_win) { configure_win = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_type_hint(GTK_WINDOW(configure_win), GDK_WINDOW_TYPE_HINT_DIALOG); - gtk_signal_connect(GTK_OBJECT(configure_win), "destroy", - GTK_SIGNAL_FUNC(configure_destroy), NULL); - gtk_signal_connect(GTK_OBJECT(configure_win), "destroy", - GTK_SIGNAL_FUNC(gtk_widget_destroyed), - &configure_win); + g_signal_connect (configure_win, "destroy", (GCallback) + configure_destroy, NULL); + g_signal_connect (configure_win, "destroy", (GCallback) + gtk_widget_destroyed, & configure_win); gtk_window_set_title(GTK_WINDOW(configure_win), _("File Writer Configuration")); @@ -478,16 +473,16 @@ fileext_label = gtk_label_new(_("Output file format:")); gtk_box_pack_start(GTK_BOX(fileext_hbox), fileext_label, FALSE, FALSE, 0); - fileext_combo = gtk_combo_box_new_text(); - gtk_combo_box_append_text(GTK_COMBO_BOX(fileext_combo), "WAV"); + fileext_combo = gtk_combo_box_text_new (); + gtk_combo_box_text_append_text ((GtkComboBoxText *) fileext_combo, "WAV"); #ifdef FILEWRITER_MP3 - gtk_combo_box_append_text(GTK_COMBO_BOX(fileext_combo), "MP3"); + gtk_combo_box_text_append_text ((GtkComboBoxText *) fileext_combo, "MP3"); #endif #ifdef FILEWRITER_VORBIS - gtk_combo_box_append_text(GTK_COMBO_BOX(fileext_combo), "Vorbis"); + gtk_combo_box_text_append_text ((GtkComboBoxText *) fileext_combo, "Vorbis"); #endif #ifdef FILEWRITER_FLAC - gtk_combo_box_append_text(GTK_COMBO_BOX(fileext_combo), "FLAC"); + gtk_combo_box_text_append_text ((GtkComboBoxText *) fileext_combo, "FLAC"); #endif gtk_box_pack_start(GTK_BOX(fileext_hbox), fileext_combo, FALSE, FALSE, 0); gtk_combo_box_set_active(GTK_COMBO_BOX(fileext_combo), fileext); @@ -514,13 +509,11 @@ saveplace = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(saveplace), _("Save into custom directory")); - g_signal_connect(G_OBJECT(saveplace), "toggled", G_CALLBACK(saveplace_custom_cb), NULL); - gtk_box_pack_start(GTK_BOX(saveplace_hbox), saveplace, FALSE, FALSE, 0); - if (!save_original) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(saveplace), TRUE); - + g_signal_connect(G_OBJECT(saveplace), "toggled", G_CALLBACK(saveplace_custom_cb), NULL); + gtk_box_pack_start(GTK_BOX(saveplace_hbox), saveplace, FALSE, FALSE, 0); path_hbox = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(configure_vbox), path_hbox, FALSE, FALSE, 0); @@ -570,9 +563,6 @@ use_suffix_toggle = gtk_check_button_new_with_label(_("Don't strip file name extension")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(use_suffix_toggle), use_suffix); gtk_box_pack_start(GTK_BOX(configure_vbox), use_suffix_toggle, FALSE, FALSE, 0); - use_suffix_tooltips = gtk_tooltips_new(); - gtk_tooltips_set_tip(use_suffix_tooltips, use_suffix_toggle, _("If enabled, the extension from the original filename will not be stripped before adding the new file extension to the end."), NULL); - gtk_tooltips_enable(use_suffix_tooltips); if (filenamefromtags) gtk_widget_set_sensitive(use_suffix_toggle, FALSE); @@ -594,23 +584,40 @@ configure_bbox = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(configure_bbox), GTK_BUTTONBOX_END); - gtk_button_box_set_spacing(GTK_BUTTON_BOX(configure_bbox), 5); gtk_box_pack_start(GTK_BOX(configure_vbox), configure_bbox, FALSE, FALSE, 0); configure_cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL); - gtk_signal_connect_object(GTK_OBJECT(configure_cancel), "clicked", - GTK_SIGNAL_FUNC(gtk_widget_destroy), - GTK_OBJECT(configure_win)); + g_signal_connect_swapped (configure_cancel, "clicked", (GCallback) + gtk_widget_destroy, configure_win); gtk_box_pack_start(GTK_BOX(configure_bbox), configure_cancel, TRUE, TRUE, 0); configure_ok = gtk_button_new_from_stock(GTK_STOCK_OK); - gtk_signal_connect(GTK_OBJECT(configure_ok), "clicked", - GTK_SIGNAL_FUNC(configure_ok_cb), NULL); + g_signal_connect (configure_ok, "clicked", (GCallback) configure_ok_cb, + NULL); gtk_box_pack_start(GTK_BOX(configure_bbox), configure_ok, TRUE, TRUE, 0); gtk_widget_show_all(configure_win); } } + +AUD_OUTPUT_PLUGIN +( + .name = "FileWriter", + .init = file_init, + .cleanup = file_cleanup, + .about = file_about, + .configure = file_configure, + .probe_priority = 0, + .open_audio = file_open, + .close_audio = file_close, + .write_audio = file_write, + .drain = file_drain, + .written_time = file_get_time, + .output_time = file_get_time, + .pause = file_pause, + .flush = file_flush, + .set_written_time = file_set_written_time, +) diff -Nru audacious-plugins-2.4.4/src/filewriter/filewriter.h audacious-plugins-3.2/src/filewriter/filewriter.h --- audacious-plugins-2.4.4/src/filewriter/filewriter.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/filewriter/filewriter.h 2012-01-20 19:48:30.000000000 +0000 @@ -32,7 +32,6 @@ #include #include - struct format_info { gint format; int frequency; @@ -43,7 +42,7 @@ extern VFSFile *output_file; extern guint64 offset; -extern const Tuple * tuple; +extern Tuple * tuple; typedef gint (*write_output_callback)(void *ptr, gint length); diff -Nru audacious-plugins-2.4.4/src/filewriter/flac.c audacious-plugins-3.2/src/filewriter/flac.c --- audacious-plugins-2.4.4/src/filewriter/flac.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/filewriter/flac.c 2012-01-20 19:48:30.000000000 +0000 @@ -26,6 +26,7 @@ #include #include + static gint flac_open(void); static void flac_write(gpointer data, gint length); static void flac_close(void); @@ -72,16 +73,38 @@ return FLAC__STREAM_ENCODER_TELL_STATUS_OK; } -#define INSERT_VORBIS_COMMENT(t, keyword) \ - if (t) \ - { \ - gchar *scratch = g_strdup_printf(keyword, t); \ - comment_entry.length = strlen(scratch); \ - comment_entry.entry = (guchar *) scratch; \ - FLAC__metadata_object_vorbiscomment_insert_comment(meta, \ - meta->data.vorbis_comment.num_comments, comment_entry, TRUE); \ - g_free(scratch); \ - } +static void insert_vorbis_comment (FLAC__StreamMetadata * meta, + const char * name, const Tuple * tuple, int field) +{ + TupleValueType type = tuple_field_get_type (field); + if (tuple_get_value_type (tuple, field, NULL) != type) + return; + + char * temp; + + switch (type) + { + case TUPLE_INT:; + int ival = tuple_get_int (tuple, field, NULL); + temp = g_strdup_printf ("%s=%d", name, ival); + break; + case TUPLE_STRING:; + char * sval = tuple_get_str (tuple, field, NULL); + temp = g_strdup_printf ("%s=%s", name, sval); + str_unref (sval); + default: + return; + } + + FLAC__StreamMetadata_VorbisComment_Entry comment; + comment.length = strlen (temp); + comment.entry = (unsigned char *) temp; + + FLAC__metadata_object_vorbiscomment_insert_comment (meta, + meta->data.vorbis_comment.num_comments, comment, TRUE); + + g_free (temp); +} static gint flac_open(void) { @@ -95,18 +118,16 @@ if (tuple) { FLAC__StreamMetadata *meta; - FLAC__StreamMetadata_VorbisComment_Entry comment_entry; - meta = FLAC__metadata_object_new(FLAC__METADATA_TYPE_VORBIS_COMMENT); - INSERT_VORBIS_COMMENT(tuple_get_string(tuple, FIELD_TITLE, NULL), "title=%s"); - INSERT_VORBIS_COMMENT(tuple_get_string(tuple, FIELD_ARTIST, NULL), "artist=%s"); - INSERT_VORBIS_COMMENT(tuple_get_string(tuple, FIELD_ALBUM, NULL), "album=%s"); - INSERT_VORBIS_COMMENT(tuple_get_string(tuple, FIELD_GENRE, NULL), "genre=%s"); - INSERT_VORBIS_COMMENT(tuple_get_string(tuple, FIELD_COMMENT, NULL), "comment=%s"); - INSERT_VORBIS_COMMENT(tuple_get_string(tuple, FIELD_DATE, NULL), "date=%s"); - INSERT_VORBIS_COMMENT(tuple_get_int(tuple, FIELD_YEAR, NULL), "year=%d"); - INSERT_VORBIS_COMMENT(tuple_get_int(tuple, FIELD_TRACK_NUMBER, NULL), "tracknumber=%d"); + insert_vorbis_comment (meta, "title", tuple, FIELD_TITLE); + insert_vorbis_comment (meta, "artist", tuple, FIELD_ARTIST); + insert_vorbis_comment (meta, "album", tuple, FIELD_ALBUM); + insert_vorbis_comment (meta, "genre", tuple, FIELD_GENRE); + insert_vorbis_comment (meta, "comment", tuple, FIELD_COMMENT); + insert_vorbis_comment (meta, "date", tuple, FIELD_DATE); + insert_vorbis_comment (meta, "year", tuple, FIELD_YEAR); + insert_vorbis_comment (meta, "tracknumber", tuple, FIELD_TRACK_NUMBER); FLAC__stream_encoder_set_metadata(flac_encoder, &meta, 1); } diff -Nru audacious-plugins-2.4.4/src/filewriter/Makefile audacious-plugins-3.2/src/filewriter/Makefile --- audacious-plugins-2.4.4/src/filewriter/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/filewriter/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -13,5 +13,5 @@ plugindir := ${plugindir}/${OUTPUT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GLIB_CFLAGS} ${GTK_CFLAGS} ${MOWGLI_CFLAGS} ${FILEWRITER_CFLAGS} ${OGG_VORBIS_CFLAGS} -I../.. +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GLIB_CFLAGS} ${GTK_CFLAGS} ${FILEWRITER_CFLAGS} ${OGG_VORBIS_CFLAGS} -I../.. LIBS += ${GTK_LIBS} ${FILEWRITER_LIBS} diff -Nru audacious-plugins-2.4.4/src/filewriter/mp3.c audacious-plugins-3.2/src/filewriter/mp3.c --- audacious-plugins-2.4.4/src/filewriter/mp3.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/filewriter/mp3.c 2012-01-20 19:48:30.000000000 +0000 @@ -28,8 +28,15 @@ #include -#include #include +#include +#include + +#define MODES 4 +enum {MODE_AUTO = 4, MODE_JOINT = 1, MODE_STEREO = 0, MODE_MONO = 3}; +static const gint modes[MODES] = {MODE_AUTO, MODE_JOINT, MODE_STEREO, MODE_MONO}; +static const gchar * const mode_names[MODES] = {N_("Auto"), N_("Joint Stereo"), + N_("Stereo"), N_("Mono")}; static void mp3_init(write_output_callback write_output_func); static void mp3_configure(void); @@ -52,32 +59,25 @@ static GtkWidget *configure_bbox, *configure_ok, *configure_cancel; static GtkWidget *alg_quality_spin; static GtkWidget *alg_quality_hbox; -static GtkObject *alg_quality_adj; +static GtkAdjustment * alg_quality_adj; static GtkWidget *vbox, *notebook; static GtkWidget *quality_vbox, *quality_hbox1, *alg_quality_frame; static GtkWidget *enc_quality_frame, *enc_quality_label1, *enc_quality_label2; -static GtkWidget *enc_radio1, *enc_radio2, *bitrate_option_menu, *bitrate_menu, - *bitrate_menu_item; +static GtkWidget * enc_radio1, * enc_radio2; static GtkWidget *compression_spin; -static GtkObject *compression_adj; -static GtkWidget *mode_hbox, *mode_option_menu, *mode_menu, *mode_frame, - *mode_menu_item; -static GtkWidget *samplerate_hbox, *samplerate_option_menu, *samplerate_menu, - *samplerate_label, *samplerate_frame, *samplerate_menu_item; +static GtkAdjustment * compression_adj; +static GtkWidget * mode_hbox, * mode_frame; +static GtkWidget * samplerate_hbox, * samplerate_label, * samplerate_frame; static GtkWidget *misc_frame, *misc_vbox, *enforce_iso_toggle, *error_protection_toggle; -static GtkTooltips *quality_tips, *vbr_tips, *tags_tips; static GtkWidget *vbr_vbox, *vbr_toggle, *vbr_options_vbox, *vbr_type_frame, *vbr_type_hbox, *vbr_type_radio1, *vbr_type_radio2; -static GtkWidget *abr_frame, *abr_option_menu, *abr_menu, *abr_menu_item, - *abr_hbox, *abr_label; +static GtkWidget * abr_frame, * abr_hbox, * abr_label; static GtkWidget *vbr_frame, *vbr_options_vbox2; -static GtkWidget *vbr_options_hbox1, *vbr_min_option_menu, *vbr_min_menu, - *vbr_min_menu_item, *vbr_min_label; -static GtkWidget *vbr_options_hbox2, *vbr_max_option_menu, *vbr_max_menu, - *vbr_max_menu_item, *vbr_max_label, *enforce_min_toggle; +static GtkWidget * vbr_options_hbox1, * vbr_min_label; +static GtkWidget * vbr_options_hbox2, * vbr_max_label, * enforce_min_toggle; static GtkWidget *vbr_options_hbox3, *vbr_quality_spin, *vbr_quality_label; -static GtkObject *vbr_quality_adj; +static GtkAdjustment * vbr_quality_adj; static GtkWidget *xing_header_toggle; static GtkWidget *tags_vbox, *tags_frames_frame, *tags_frames_hbox, *tags_copyright_toggle, *tags_original_toggle; @@ -89,28 +89,6 @@ static unsigned long numsamples = 0; static int inside; -static gint vbr_on = 0; -static gint vbr_type = 0; -static gint vbr_min_val = 32; -static gint vbr_max_val = 320; -static gint enforce_min_val = 0; -static gint vbr_quality_val = 4; -static gint abr_val = 128; -static gint toggle_xing_val = 1; -static gint mark_original_val = 1; -static gint mark_copyright_val = 0; -static gint force_v2_val = 0; -static gint only_v1_val = 0; -static gint only_v2_val = 0; -static gint algo_quality_val = 5; -static gint out_samplerate_val = 0; -static gint bitrate_val = 128; -static gfloat compression_val = 11; -static gint enc_toggle_val = 0; -static gint audio_mode_val = 4; -static gint enforce_iso_val = 0; -static gint error_protect_val = 0; - static gint available_samplerates[] = { 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 } ; @@ -137,12 +115,12 @@ static void free_lameid3(lameid3_t *p) { - g_free(p->track_name); - g_free(p->album_name); - g_free(p->performer); - g_free(p->genre); - g_free(p->year); - g_free(p->track_number); + str_unref (p->track_name); + str_unref (p->album_name); + str_unref (p->performer); + str_unref (p->genre); + str_unref (p->year); + str_unref (p->track_number); p->track_name = NULL; p->album_name = NULL; @@ -157,41 +135,63 @@ (void) vfprintf(stdout, format, ap); } +static const gchar * const mp3_defaults[] = { + "vbr_on", "0", + "vbr_type", "0", + "vbr_min_val", "32", + "vbr_max_val", "320", + "enforce_min_val", "0", + "vbr_quality_val", "4", + "abr_val", "128", + "toggle_xing_val", "1", + "mark_original_val", "1", + "mark_copyright_val", "0", + "force_v2_val", "0", + "only_v1_val", "0", + "only_v2_val", "0", + "algo_quality_val", "5", + "out_samplerate_val", "0", + "bitrate_val", "128", + "compression_val", "11", + "enc_toggle_val", "0", + "audio_mode_val", "4", /* MODE_AUTO */ + "enforce_iso_val", "0", + "error_protect_val", "0", + NULL}; + +static gint vbr_on, vbr_type, vbr_min_val, vbr_max_val, enforce_min_val, + vbr_quality_val, abr_val, toggle_xing_val, mark_original_val, + mark_copyright_val, force_v2_val, only_v1_val, only_v2_val, algo_quality_val, + out_samplerate_val, bitrate_val; +static gfloat compression_val; +static gint enc_toggle_val, audio_mode_val, enforce_iso_val, error_protect_val; + static void mp3_init(write_output_callback write_output_func) { - mcs_handle_t *db = aud_cfg_db_open(); - aud_cfg_db_get_int(db, "filewriter_mp3", "vbr_on", &vbr_on); - aud_cfg_db_get_int(db, "filewriter_mp3", "vbr_type", &vbr_type); - aud_cfg_db_get_int(db, "filewriter_mp3", "vbr_min_val", &vbr_min_val); - aud_cfg_db_get_int(db, "filewriter_mp3", "vbr_max_val", &vbr_max_val); - aud_cfg_db_get_int(db, "filewriter_mp3", "enforce_min_val", - &enforce_min_val); - aud_cfg_db_get_int(db, "filewriter_mp3", "vbr_quality_val", - &vbr_quality_val); - aud_cfg_db_get_int(db, "filewriter_mp3", "abr_val", &abr_val); - aud_cfg_db_get_int(db, "filewriter_mp3", "toggle_xing_val", - &toggle_xing_val); - aud_cfg_db_get_int(db, "filewriter_mp3", "mark_original_val", - &mark_original_val); - aud_cfg_db_get_int(db, "filewriter_mp3", "mark_copyright_val", - &mark_copyright_val); - aud_cfg_db_get_int(db, "filewriter_mp3", "force_v2_val", &force_v2_val); - aud_cfg_db_get_int(db, "filewriter_mp3", "only_v1_val", &only_v1_val); - aud_cfg_db_get_int(db, "filewriter_mp3", "only_v2_val", &only_v2_val); - aud_cfg_db_get_int(db, "filewriter_mp3", "algo_quality_val", - &algo_quality_val); - aud_cfg_db_get_int(db, "filewriter_mp3", "out_samplerate_val", - &out_samplerate_val); - aud_cfg_db_get_int(db, "filewriter_mp3", "bitrate_val", &bitrate_val); - aud_cfg_db_get_float(db, "filewriter_mp3", "compression_val", - &compression_val); - aud_cfg_db_get_int(db, "filewriter_mp3", "enc_toggle_val", &enc_toggle_val); - aud_cfg_db_get_int(db, "filewriter_mp3", "audio_mode_val", &audio_mode_val); - aud_cfg_db_get_int(db, "filewriter_mp3", "enforce_iso_val", - &enforce_iso_val); - aud_cfg_db_get_int(db, "filewriter_mp3", "error_protect_val", - &error_protect_val); - aud_cfg_db_close(db); + aud_config_set_defaults ("filewriter_mp3", mp3_defaults); + + vbr_on = aud_get_int ("filewriter_mp3", "vbr_on"); + vbr_type = aud_get_int ("filewriter_mp3", "vbr_type"); + vbr_min_val = aud_get_int ("filewriter_mp3", "vbr_min_val"); + vbr_max_val = aud_get_int ("filewriter_mp3", "vbr_max_val"); + enforce_min_val = aud_get_int ("filewriter_mp3", "enforce_min_val"); + vbr_quality_val = aud_get_int ("filewriter_mp3", "vbr_quality_val"); + abr_val = aud_get_int ("filewriter_mp3", "abr_val"); + toggle_xing_val = aud_get_int ("filewriter_mp3", "toggle_xing_val"); + mark_original_val = aud_get_int ("filewriter_mp3", "mark_original_val"); + mark_copyright_val = aud_get_int ("filewriter_mp3", "mark_copyright_val"); + force_v2_val = aud_get_int ("filewriter_mp3", "force_v2_val"); + only_v1_val = aud_get_int ("filewriter_mp3", "only_v1_val"); + only_v2_val = aud_get_int ("filewriter_mp3", "only_v2_val"); + algo_quality_val = aud_get_int ("filewriter_mp3", "algo_quality_val"); + out_samplerate_val = aud_get_int ("filewriter_mp3", "out_samplerate_val"); + bitrate_val = aud_get_int ("filewriter_mp3", "bitrate_val"); + compression_val = aud_get_double ("filewriter_mp3", "compression_val"); + enc_toggle_val = aud_get_int ("filewriter_mp3", "enc_toggle_val"); + audio_mode_val = aud_get_int ("filewriter_mp3", "audio_mode_val"); + enforce_iso_val = aud_get_int ("filewriter_mp3", "enforce_iso_val"); + error_protect_val = aud_get_int ("filewriter_mp3", "error_protect_val"); + if (write_output_func) write_output=write_output_func; } @@ -209,28 +209,22 @@ if (tuple) { /* XXX write UTF-8 even though libmp3lame does id3v2.3. --yaz */ - lameid3.track_name = - g_strdup(tuple_get_string(tuple, FIELD_TITLE, NULL)); + lameid3.track_name = tuple_get_str (tuple, FIELD_TITLE, NULL); id3tag_set_title(gfp, lameid3.track_name); - lameid3.performer = - g_strdup(tuple_get_string(tuple, FIELD_ARTIST, NULL)); + lameid3.performer = tuple_get_str (tuple, FIELD_ARTIST, NULL); id3tag_set_artist(gfp, lameid3.performer); - lameid3.album_name = - g_strdup(tuple_get_string(tuple, FIELD_ALBUM, NULL)); + lameid3.album_name = tuple_get_str (tuple, FIELD_ALBUM, NULL); id3tag_set_album(gfp, lameid3.album_name); - lameid3.genre = - g_strdup(tuple_get_string(tuple, FIELD_GENRE, NULL)); + lameid3.genre = tuple_get_str (tuple, FIELD_GENRE, NULL); id3tag_set_genre(gfp, lameid3.genre); - lameid3.year = - g_strdup_printf("%d", tuple_get_int(tuple, FIELD_YEAR, NULL)); + lameid3.year = str_printf ("%d", tuple_get_int (tuple, FIELD_YEAR, NULL)); id3tag_set_year(gfp, lameid3.year); - lameid3.track_number = - g_strdup_printf("%d", tuple_get_int(tuple, FIELD_TRACK_NUMBER, NULL)); + lameid3.track_number = str_printf ("%d", tuple_get_int (tuple, FIELD_TRACK_NUMBER, NULL)); id3tag_set_track(gfp, lameid3.track_number); if (force_v2_val) { @@ -396,7 +390,7 @@ /* Configuration */ /*****************/ -/* Various Singal-Fuctions */ +/* Various Signal-Fuctions */ static void algo_qual(GtkAdjustment * adjustment, gpointer user_data) { @@ -407,28 +401,31 @@ } -static void samplerate_activate(GtkMenuItem * menuitem, gpointer user_data) +static void samplerate_changed (GtkComboBox * combo) { + gint i = gtk_combo_box_get_active (combo) - 1; - out_samplerate_val = GPOINTER_TO_INT(user_data); - + if (i >= 0 && i < G_N_ELEMENTS (available_samplerates)) + out_samplerate_val = available_samplerates[i]; + else + out_samplerate_val = 0; } -static void bitrate_activate(GtkMenuItem * menuitem, gpointer user_data) +static void bitrate_changed (GtkComboBox * combo) { + gint i = gtk_combo_box_get_active (combo); - bitrate_val = GPOINTER_TO_INT(user_data); - + if (i >= 0 && i < G_N_ELEMENTS (available_bitrates)) + bitrate_val = available_bitrates[i]; + else + bitrate_val = 128; } static void compression_change(GtkAdjustment * adjustment, gpointer user_data) { - - compression_val = - gtk_spin_button_get_value_as_float(GTK_SPIN_BUTTON - (compression_spin)); - + compression_val = gtk_spin_button_get_value ((GtkSpinButton *) + compression_spin); } static void encoding_toggle(GtkToggleButton * togglebutton, @@ -439,11 +436,14 @@ } -static void mode_activate(GtkMenuItem * menuitem, gpointer user_data) +static void mode_changed (GtkComboBox * combo) { + gint i = gtk_combo_box_get_active (combo); - audio_mode_val = GPOINTER_TO_INT(user_data); - + if (i >= 0 && i < MODES) + audio_mode_val = modes[i]; + else + audio_mode_val = MODE_AUTO; } static void toggle_enforce_iso(GtkToggleButton * togglebutton, @@ -514,18 +514,24 @@ } } -static void vbr_min_activate(GtkMenuItem * menuitem, gpointer user_data) +static void vbr_min_changed (GtkComboBox * combo) { + gint i = gtk_combo_box_get_active (combo); - vbr_min_val = GPOINTER_TO_INT(user_data); - + if (i >= 0 && i < G_N_ELEMENTS (available_bitrates)) + vbr_min_val = available_bitrates[i]; + else + vbr_min_val = 32; } -static void vbr_max_activate(GtkMenuItem * menuitem, gpointer user_data) +static void vbr_max_changed (GtkComboBox * combo) { + gint i = gtk_combo_box_get_active (combo); - vbr_max_val = GPOINTER_TO_INT(user_data); - + if (i >= 0 && i < G_N_ELEMENTS (available_bitrates)) + vbr_max_val = available_bitrates[i]; + else + vbr_max_val = 320; } static void toggle_enforce_min(GtkToggleButton * togglebutton, @@ -549,11 +555,14 @@ } -static void abr_activate(GtkMenuItem * menuitem, gpointer user_data) +static void abr_changed (GtkComboBox * combo) { + gint i = gtk_combo_box_get_active (combo); - abr_val = GPOINTER_TO_INT(user_data); - + if (i >= 0 && i < G_N_ELEMENTS (available_bitrates)) + abr_val = available_bitrates[i]; + else + abr_val = 128; } static void toggle_xing(GtkToggleButton * togglebutton, gpointer user_data) @@ -649,42 +658,30 @@ static void configure_ok_cb(gpointer data) { - mcs_handle_t *db; - if (vbr_min_val > vbr_max_val) vbr_max_val = vbr_min_val; - db = aud_cfg_db_open(); - - aud_cfg_db_set_int(db, "filewriter_mp3", "vbr_on", vbr_on); - aud_cfg_db_set_int(db, "filewriter_mp3", "vbr_type", vbr_type); - aud_cfg_db_set_int(db, "filewriter_mp3", "vbr_min_val", vbr_min_val); - aud_cfg_db_set_int(db, "filewriter_mp3", "vbr_max_val", vbr_max_val); - aud_cfg_db_set_int(db, "filewriter_mp3", "enforce_min_val", enforce_min_val); - aud_cfg_db_set_int(db, "filewriter_mp3", "vbr_quality_val", vbr_quality_val); - aud_cfg_db_set_int(db, "filewriter_mp3", "abr_val", abr_val); - aud_cfg_db_set_int(db, "filewriter_mp3", "toggle_xing_val", toggle_xing_val); - aud_cfg_db_set_int(db, "filewriter_mp3", "mark_original_val", - mark_original_val); - aud_cfg_db_set_int(db, "filewriter_mp3", "mark_copyright_val", - mark_copyright_val); - aud_cfg_db_set_int(db, "filewriter_mp3", "force_v2_val", force_v2_val); - aud_cfg_db_set_int(db, "filewriter_mp3", "only_v1_val", only_v1_val); - aud_cfg_db_set_int(db, "filewriter_mp3", "only_v2_val", only_v2_val); - aud_cfg_db_set_int(db, "filewriter_mp3", "algo_quality_val", - algo_quality_val); - aud_cfg_db_set_int(db, "filewriter_mp3", "out_samplerate_val", - out_samplerate_val); - aud_cfg_db_set_int(db, "filewriter_mp3", "bitrate_val", bitrate_val); - aud_cfg_db_set_float(db, "filewriter_mp3", "compression_val", - compression_val); - aud_cfg_db_set_int(db, "filewriter_mp3", "enc_toggle_val", enc_toggle_val); - aud_cfg_db_set_int(db, "filewriter_mp3", "audio_mode_val", audio_mode_val); - aud_cfg_db_set_int(db, "filewriter_mp3", "enforce_iso_val", enforce_iso_val); - aud_cfg_db_set_int(db, "filewriter_mp3", "error_protect_val", - error_protect_val); - aud_cfg_db_close(db); - + aud_set_int ("filewriter_mp3", "vbr_on", vbr_on); + aud_set_int ("filewriter_mp3", "vbr_type", vbr_type); + aud_set_int ("filewriter_mp3", "vbr_min_val", vbr_min_val); + aud_set_int ("filewriter_mp3", "vbr_max_val", vbr_max_val); + aud_set_int ("filewriter_mp3", "enforce_min_val", enforce_min_val); + aud_set_int ("filewriter_mp3", "vbr_quality_val", vbr_quality_val); + aud_set_int ("filewriter_mp3", "abr_val", abr_val); + aud_set_int ("filewriter_mp3", "toggle_xing_val", toggle_xing_val); + aud_set_int ("filewriter_mp3", "mark_original_val", mark_original_val); + aud_set_int ("filewriter_mp3", "mark_copyright_val", mark_copyright_val); + aud_set_int ("filewriter_mp3", "force_v2_val", force_v2_val); + aud_set_int ("filewriter_mp3", "only_v1_val", only_v1_val); + aud_set_int ("filewriter_mp3", "only_v2_val", only_v2_val); + aud_set_int ("filewriter_mp3", "algo_quality_val", algo_quality_val); + aud_set_int ("filewriter_mp3", "out_samplerate_val", out_samplerate_val); + aud_set_int ("filewriter_mp3", "bitrate_val", bitrate_val); + aud_set_double ("filewriter_mp3", "compression_val", compression_val); + aud_set_int ("filewriter_mp3", "enc_toggle_val", enc_toggle_val); + aud_set_int ("filewriter_mp3", "audio_mode_val", audio_mode_val); + aud_set_int ("filewriter_mp3", "enforce_iso_val", enforce_iso_val); + aud_set_int ("filewriter_mp3", "error_protect_val", error_protect_val); gtk_widget_destroy(configure_win); } @@ -703,15 +700,12 @@ configure_win = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_type_hint(GTK_WINDOW(configure_win), GDK_WINDOW_TYPE_HINT_DIALOG); - gtk_signal_connect(GTK_OBJECT(configure_win), "destroy", - GTK_SIGNAL_FUNC(gtk_widget_destroyed), - &configure_win); + g_signal_connect (configure_win, "destroy", (GCallback) + gtk_widget_destroyed, & configure_win); gtk_window_set_title(GTK_WINDOW(configure_win), _("MP3 Configuration")); gtk_window_set_position(GTK_WINDOW(configure_win), GTK_WIN_POS_MOUSE); - gtk_window_set_policy(GTK_WINDOW(configure_win), FALSE, TRUE, - FALSE); gtk_container_set_border_width(GTK_CONTAINER(configure_win), 5); vbox = gtk_vbox_new(FALSE, 5); @@ -726,8 +720,6 @@ quality_vbox = gtk_vbox_new(FALSE, 5); gtk_container_set_border_width(GTK_CONTAINER(quality_vbox), 5); - quality_tips = gtk_tooltips_new(); - quality_hbox1 = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(quality_vbox), quality_hbox1, FALSE, FALSE, 0); @@ -746,18 +738,13 @@ gtk_container_add(GTK_CONTAINER(alg_quality_frame), alg_quality_hbox); - alg_quality_adj = gtk_adjustment_new(5, 0, 9, 1, 1, 1); + alg_quality_adj = (GtkAdjustment *) gtk_adjustment_new (5, 0, 9, 1, 1, 0); alg_quality_spin = gtk_spin_button_new(GTK_ADJUSTMENT(alg_quality_adj), 8, 0); - gtk_widget_set_usize(alg_quality_spin, 20, 28); gtk_box_pack_start(GTK_BOX(alg_quality_hbox), alg_quality_spin, TRUE, TRUE, 0); - gtk_signal_connect(GTK_OBJECT(alg_quality_adj), "value-changed", - GTK_SIGNAL_FUNC(algo_qual), NULL); - - gtk_tooltips_set_tip(GTK_TOOLTIPS(quality_tips), alg_quality_spin, - _("best/slowest:0;\nworst/fastest:9;\nrecommended:2;\ndefault:5;"), - ""); + g_signal_connect (alg_quality_adj, "value-changed", (GCallback) + algo_qual, NULL); gtk_spin_button_set_value(GTK_SPIN_BUTTON(alg_quality_spin), algo_quality_val); @@ -773,40 +760,30 @@ gtk_container_set_border_width(GTK_CONTAINER(samplerate_hbox), 10); gtk_container_add(GTK_CONTAINER(samplerate_frame), samplerate_hbox); - samplerate_option_menu = gtk_option_menu_new(); - samplerate_menu = gtk_menu_new(); - samplerate_menu_item = gtk_menu_item_new_with_label(_("Auto")); - gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate", - GTK_SIGNAL_FUNC(samplerate_activate), - GINT_TO_POINTER(0)); - gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item); - for (i = 0; i < sizeof(available_samplerates)/sizeof(gint); i++) + GtkWidget * combo = gtk_combo_box_text_new (); + gtk_combo_box_text_append_text ((GtkComboBoxText *) combo, _("Auto")); + if (! out_samplerate_val) + gtk_combo_box_set_active ((GtkComboBox *) combo, 0); + + for (i = 0; i < G_N_ELEMENTS (available_samplerates); i ++) { - gchar *string = g_strdup_printf("%d", available_samplerates[i]); - samplerate_menu_item = gtk_menu_item_new_with_label(string); - gtk_signal_connect(GTK_OBJECT(samplerate_menu_item), "activate", - GTK_SIGNAL_FUNC(samplerate_activate), - GINT_TO_POINTER(available_samplerates[i])); - gtk_menu_append(GTK_MENU(samplerate_menu), samplerate_menu_item); - g_free(string); + gchar buf[10]; + snprintf (buf, sizeof buf, "%d", available_samplerates[i]); + gtk_combo_box_text_append_text ((GtkComboBoxText *) combo, buf); + + if (out_samplerate_val == available_samplerates[i]) + gtk_combo_box_set_active ((GtkComboBox *) combo, 1 + i); } - gtk_option_menu_set_menu(GTK_OPTION_MENU(samplerate_option_menu), - samplerate_menu); - gtk_widget_set_usize(samplerate_option_menu, 75, 28); - gtk_box_pack_start(GTK_BOX(samplerate_hbox), - samplerate_option_menu, FALSE, FALSE, 0); + gtk_box_pack_start ((GtkBox *) samplerate_hbox, combo, FALSE, FALSE, 0); + g_signal_connect (combo, "changed", (GCallback) samplerate_changed, NULL); + samplerate_label = gtk_label_new(_("(Hz)")); gtk_misc_set_alignment(GTK_MISC(samplerate_label), 0, 0.5); gtk_box_pack_start(GTK_BOX(samplerate_hbox), samplerate_label, FALSE, FALSE, 0); - for (i = 0; i < sizeof(available_samplerates)/sizeof(gint); i++) - if (out_samplerate_val == available_samplerates[i]) - gtk_option_menu_set_history(GTK_OPTION_MENU - (samplerate_option_menu), i+1); - /* Encoder Quality */ enc_quality_frame = gtk_frame_new(_("Bitrate / Compression ratio:")); @@ -815,8 +792,6 @@ gtk_box_pack_start(GTK_BOX(quality_vbox), enc_quality_frame, FALSE, FALSE, 0); - - /* yaz new code */ // vbox sorrounding hbox1 and hbox2 enc_quality_vbox = gtk_vbox_new(FALSE, 5); gtk_container_set_border_width(GTK_CONTAINER(enc_quality_vbox), 10); @@ -839,29 +814,21 @@ gtk_box_pack_start(GTK_BOX(hbox1), enc_quality_label1, FALSE, FALSE, 0); // bitrate menu - bitrate_option_menu = gtk_option_menu_new(); - bitrate_menu = gtk_menu_new(); - for (i = 0; i < sizeof(available_bitrates)/sizeof(gint); i++) - { - gchar *string = g_strdup_printf("%d", available_bitrates[i]); - bitrate_menu_item = gtk_menu_item_new_with_label(string); - gtk_signal_connect(GTK_OBJECT(bitrate_menu_item), "activate", - GTK_SIGNAL_FUNC(bitrate_activate), - GINT_TO_POINTER(available_bitrates[i])); - gtk_menu_append(GTK_MENU(bitrate_menu), bitrate_menu_item); - g_free(string); - } + combo = gtk_combo_box_text_new (); - gtk_option_menu_set_menu(GTK_OPTION_MENU(bitrate_option_menu), - bitrate_menu); - gtk_widget_set_usize(bitrate_option_menu, 80, 28); - gtk_box_pack_end(GTK_BOX(hbox1), bitrate_option_menu, FALSE, FALSE, 0); + for (i = 0; i < G_N_ELEMENTS (available_bitrates); i ++) + { + gchar buf[10]; + snprintf (buf, sizeof buf, "%d", available_bitrates[i]); + gtk_combo_box_text_append_text ((GtkComboBoxText *) combo, buf); - for (i = 0; i < sizeof(available_bitrates)/sizeof(gint); i++) if (bitrate_val == available_bitrates[i]) - gtk_option_menu_set_history(GTK_OPTION_MENU - (bitrate_option_menu), i); + gtk_combo_box_set_active ((GtkComboBox *) combo, i); + } + + gtk_box_pack_start ((GtkBox *) hbox1, combo, FALSE, FALSE, 0); + g_signal_connect (combo, "changed", (GCallback) bitrate_changed, NULL); // hbox2 for compression ratio hbox2 = gtk_hbox_new(FALSE, 5); @@ -880,29 +847,23 @@ gtk_box_pack_start(GTK_BOX(hbox2), enc_quality_label2, FALSE, FALSE, 0); // comp-ratio spin - compression_adj = gtk_adjustment_new(11, 0, 100, 1, 1, 1); + compression_adj = (GtkAdjustment *) gtk_adjustment_new (11, 0, 100, 1, + 1, 0); compression_spin = gtk_spin_button_new(GTK_ADJUSTMENT(compression_adj), 8, 0); - gtk_widget_set_usize(compression_spin, 40, 28); - gtk_container_add(GTK_CONTAINER(hbox2), compression_spin); gtk_box_pack_end(GTK_BOX(hbox2), compression_spin, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(compression_adj), "value-changed", - GTK_SIGNAL_FUNC(compression_change), NULL); + g_signal_connect (compression_adj, "value-changed", (GCallback) + compression_change, NULL); gtk_spin_button_set_value(GTK_SPIN_BUTTON(compression_spin), compression_val); // radio button signale connect - gtk_signal_connect(GTK_OBJECT(enc_radio1), "toggled", - GTK_SIGNAL_FUNC(encoding_toggle), - GINT_TO_POINTER(0)); - gtk_signal_connect(GTK_OBJECT(enc_radio2), "toggled", - GTK_SIGNAL_FUNC(encoding_toggle), - GINT_TO_POINTER(1)); - - /* end of yaz new code */ - + g_signal_connect (enc_radio1, "toggled", (GCallback) encoding_toggle, + GINT_TO_POINTER (0)); + g_signal_connect (enc_radio2, "toggled", (GCallback) encoding_toggle, + GINT_TO_POINTER (1)); /* Audio Mode */ @@ -914,54 +875,21 @@ mode_hbox = gtk_hbox_new(TRUE, 10); gtk_container_set_border_width(GTK_CONTAINER(mode_hbox), 10); gtk_container_add(GTK_CONTAINER(mode_frame), mode_hbox); - mode_option_menu = gtk_option_menu_new(); - mode_menu = gtk_menu_new(); - mode_menu_item = gtk_menu_item_new_with_label(_("Auto")); - gtk_signal_connect(GTK_OBJECT(mode_menu_item), "activate", - GTK_SIGNAL_FUNC(mode_activate), - GINT_TO_POINTER(4)); - gtk_menu_append(GTK_MENU(mode_menu), mode_menu_item); - mode_menu_item = gtk_menu_item_new_with_label(_("Joint-Stereo")); - gtk_signal_connect(GTK_OBJECT(mode_menu_item), "activate", - GTK_SIGNAL_FUNC(mode_activate), - GINT_TO_POINTER(1)); - gtk_menu_append(GTK_MENU(mode_menu), mode_menu_item); - mode_menu_item = gtk_menu_item_new_with_label(_("Stereo")); - gtk_signal_connect(GTK_OBJECT(mode_menu_item), "activate", - GTK_SIGNAL_FUNC(mode_activate), - GINT_TO_POINTER(0)); - gtk_menu_append(GTK_MENU(mode_menu), mode_menu_item); - mode_menu_item = gtk_menu_item_new_with_label(_("Mono")); - gtk_signal_connect(GTK_OBJECT(mode_menu_item), "activate", - GTK_SIGNAL_FUNC(mode_activate), - GINT_TO_POINTER(3)); - gtk_menu_append(GTK_MENU(mode_menu), mode_menu_item); - gtk_option_menu_set_menu(GTK_OPTION_MENU(mode_option_menu), - mode_menu); - gtk_widget_set_usize(mode_option_menu, 50, 28); - gtk_box_pack_start(GTK_BOX(mode_hbox), mode_option_menu, TRUE, - TRUE, 2); - switch (audio_mode_val) { + combo = gtk_combo_box_text_new (); - case 4: - gtk_option_menu_set_history(GTK_OPTION_MENU(mode_option_menu), - 0); - break; - case 1: - gtk_option_menu_set_history(GTK_OPTION_MENU(mode_option_menu), - 1); - break; - case 0: - gtk_option_menu_set_history(GTK_OPTION_MENU(mode_option_menu), - 2); - break; - case 3: - gtk_option_menu_set_history(GTK_OPTION_MENU(mode_option_menu), - 3); - break; + for (i = 0; i < MODES; i ++) + { + gtk_combo_box_text_append_text ((GtkComboBoxText *) combo, + _(mode_names[i])); + + if (audio_mode_val == modes[i]) + gtk_combo_box_set_active ((GtkComboBox *) combo, i); } + gtk_box_pack_start ((GtkBox *) mode_hbox, combo, FALSE, FALSE, 0); + g_signal_connect (combo, "changed", (GCallback) mode_changed, NULL); + /* Misc */ misc_frame = gtk_frame_new(_("Misc:")); @@ -978,8 +906,8 @@ (_("Enforce strict ISO complience")); gtk_box_pack_start(GTK_BOX(misc_vbox), enforce_iso_toggle, TRUE, TRUE, 2); - gtk_signal_connect(GTK_OBJECT(enforce_iso_toggle), "toggled", - GTK_SIGNAL_FUNC(toggle_enforce_iso), NULL); + g_signal_connect (enforce_iso_toggle, "toggled", (GCallback) + toggle_enforce_iso, NULL); if (enforce_iso_val == 1) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON @@ -989,18 +917,13 @@ gtk_check_button_new_with_label(_("Error protection")); gtk_box_pack_start(GTK_BOX(misc_vbox), error_protection_toggle, TRUE, TRUE, 2); - gtk_signal_connect(GTK_OBJECT(error_protection_toggle), "toggled", - GTK_SIGNAL_FUNC(toggle_error_protect), NULL); + g_signal_connect (error_protection_toggle, "toggled", (GCallback) + toggle_error_protect, NULL); if (error_protect_val == 1) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (error_protection_toggle), TRUE); - gtk_tooltips_set_tip(GTK_TOOLTIPS(quality_tips), - error_protection_toggle, - _("Adds 16 bit checksum to every frame"), ""); - - /* Add the Notebook */ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), quality_vbox, gtk_label_new(_("Quality"))); @@ -1011,15 +934,11 @@ vbr_vbox = gtk_vbox_new(FALSE, 5); gtk_container_set_border_width(GTK_CONTAINER(vbr_vbox), 5); - vbr_tips = gtk_tooltips_new(); - /* Toggle VBR */ vbr_toggle = gtk_check_button_new_with_label(_("Enable VBR/ABR")); - gtk_widget_set_usize(vbr_toggle, 60, 30); gtk_box_pack_start(GTK_BOX(vbr_vbox), vbr_toggle, FALSE, FALSE, 2); - gtk_signal_connect(GTK_OBJECT(vbr_toggle), "toggled", - GTK_SIGNAL_FUNC(toggle_vbr), NULL); + g_signal_connect (vbr_toggle, "toggled", (GCallback) toggle_vbr, NULL); vbr_options_vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(vbr_vbox), vbr_options_vbox); @@ -1037,8 +956,6 @@ gtk_container_add(GTK_CONTAINER(vbr_type_frame), vbr_type_hbox); vbr_type_radio1 = gtk_radio_button_new_with_label(NULL, "VBR"); - gtk_tooltips_set_tip(GTK_TOOLTIPS(vbr_tips), vbr_type_radio1, - _("Variable bitrate"), ""); gtk_box_pack_start(GTK_BOX(vbr_type_hbox), vbr_type_radio1, TRUE, TRUE, 2); if (vbr_type == 0) @@ -1049,18 +966,16 @@ gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON (vbr_type_radio1), "ABR"); - gtk_tooltips_set_tip(GTK_TOOLTIPS(vbr_tips), vbr_type_radio2, - _("Average bitrate"), ""); gtk_box_pack_start(GTK_BOX(vbr_type_hbox), vbr_type_radio2, TRUE, TRUE, 2); if (vbr_type == 1) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (vbr_type_radio2), TRUE); - gtk_signal_connect(GTK_OBJECT(vbr_type_radio1), "toggled", - GTK_SIGNAL_FUNC(vbr_abr_toggle), "VBR"); - gtk_signal_connect(GTK_OBJECT(vbr_type_radio2), "toggled", - GTK_SIGNAL_FUNC(vbr_abr_toggle), "ABR"); + g_signal_connect (vbr_type_radio1, "toggled", (GCallback) + vbr_abr_toggle, "VBR"); + g_signal_connect (vbr_type_radio2, "toggled", (GCallback) + vbr_abr_toggle, "ABR"); /* VBR Options */ @@ -1085,30 +1000,21 @@ gtk_box_pack_start(GTK_BOX(vbr_options_hbox1), vbr_min_label, TRUE, TRUE, 0); - vbr_min_option_menu = gtk_option_menu_new(); - vbr_min_menu = gtk_menu_new(); + combo = gtk_combo_box_text_new (); - for (i = 0; i < sizeof(available_bitrates)/sizeof(gint); i++) + for (i = 0; i < G_N_ELEMENTS (available_bitrates); i ++) { - gchar *string = g_strdup_printf("%d", available_bitrates[i]); - vbr_min_menu_item = gtk_menu_item_new_with_label(string); - gtk_signal_connect(GTK_OBJECT(vbr_min_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_min_activate), - GINT_TO_POINTER(available_bitrates[i])); - gtk_menu_append(GTK_MENU(vbr_min_menu), vbr_min_menu_item); - g_free(string); - } + gchar buf[10]; + snprintf (buf, sizeof buf, "%d", available_bitrates[i]); + gtk_combo_box_text_append_text ((GtkComboBoxText *) combo, buf); - gtk_option_menu_set_menu(GTK_OPTION_MENU(vbr_min_option_menu), - vbr_min_menu); - gtk_widget_set_usize(vbr_min_option_menu, 40, 25); - gtk_box_pack_start(GTK_BOX(vbr_options_hbox1), vbr_min_option_menu, - TRUE, TRUE, 2); - - for (i = 0; i < sizeof(available_bitrates)/sizeof(gint); i++) if (vbr_min_val == available_bitrates[i]) - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_min_option_menu), i); + gtk_combo_box_set_active ((GtkComboBox *) combo, i); + } + + gtk_box_pack_start ((GtkBox *) vbr_options_hbox1, combo, FALSE, FALSE, + 0); + g_signal_connect (combo, "changed", (GCallback) vbr_min_changed, NULL); vbr_options_hbox2 = gtk_hbox_new(FALSE, 5); gtk_container_set_border_width(GTK_CONTAINER(vbr_options_hbox2), @@ -1121,41 +1027,29 @@ gtk_box_pack_start(GTK_BOX(vbr_options_hbox2), vbr_max_label, TRUE, TRUE, 0); - vbr_max_option_menu = gtk_option_menu_new(); - vbr_max_menu = gtk_menu_new(); + combo = gtk_combo_box_text_new (); - for (i = 0; i < sizeof(available_bitrates)/sizeof(gint); i++) + for (i = 0; i < G_N_ELEMENTS (available_bitrates); i ++) { - gchar *string = g_strdup_printf("%d", available_bitrates[i]); - vbr_max_menu_item = gtk_menu_item_new_with_label(string); - gtk_signal_connect(GTK_OBJECT(vbr_max_menu_item), "activate", - GTK_SIGNAL_FUNC(vbr_max_activate), - GINT_TO_POINTER(available_bitrates[i])); - gtk_menu_append(GTK_MENU(vbr_max_menu), vbr_max_menu_item); - g_free(string); - } - - gtk_option_menu_set_menu(GTK_OPTION_MENU(vbr_max_option_menu), - vbr_max_menu); - gtk_widget_set_usize(vbr_max_option_menu, 40, 25); - gtk_box_pack_start(GTK_BOX(vbr_options_hbox2), vbr_max_option_menu, - TRUE, TRUE, 2); + gchar buf[10]; + snprintf (buf, sizeof buf, "%d", available_bitrates[i]); + gtk_combo_box_text_append_text ((GtkComboBoxText *) combo, buf); - for (i = 0; i < sizeof(available_bitrates)/sizeof(gint); i++) if (vbr_max_val == available_bitrates[i]) - gtk_option_menu_set_history(GTK_OPTION_MENU - (vbr_max_option_menu), i); + gtk_combo_box_set_active ((GtkComboBox *) combo, i); + } + + gtk_box_pack_start ((GtkBox *) vbr_options_hbox2, combo, FALSE, FALSE, + 0); + g_signal_connect (combo, "changed", (GCallback) vbr_max_changed, NULL); enforce_min_toggle = gtk_check_button_new_with_label (_("Strictly enforce minimum bitrate")); - gtk_tooltips_set_tip(GTK_TOOLTIPS(vbr_tips), enforce_min_toggle, - _("For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/mp3 player)"), - ""); gtk_box_pack_start(GTK_BOX(vbr_options_vbox2), enforce_min_toggle, FALSE, FALSE, 2); - gtk_signal_connect(GTK_OBJECT(enforce_min_toggle), "toggled", - GTK_SIGNAL_FUNC(toggle_enforce_min), NULL); + g_signal_connect (enforce_min_toggle, "toggled", (GCallback) + toggle_enforce_min, NULL); if (enforce_min_val == 1) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON @@ -1177,30 +1071,21 @@ gtk_misc_set_alignment(GTK_MISC(abr_label), 0, 0.5); gtk_box_pack_start(GTK_BOX(abr_hbox), abr_label, TRUE, TRUE, 0); - abr_option_menu = gtk_option_menu_new(); - abr_menu = gtk_menu_new(); + combo = gtk_combo_box_text_new (); - for (i = 0; i < sizeof(available_bitrates)/sizeof(gint); i++) + for (i = 0; i < G_N_ELEMENTS (available_bitrates); i ++) { - gchar *string = g_strdup_printf("%d", available_bitrates[i]); - abr_menu_item = gtk_menu_item_new_with_label(string); - gtk_signal_connect(GTK_OBJECT(abr_menu_item), "activate", - GTK_SIGNAL_FUNC(abr_activate), - GINT_TO_POINTER(available_bitrates[i])); - gtk_menu_append(GTK_MENU(abr_menu), abr_menu_item); - g_free(string); - } + gchar buf[10]; + snprintf (buf, sizeof buf, "%d", available_bitrates[i]); + gtk_combo_box_text_append_text ((GtkComboBoxText *) combo, buf); - gtk_option_menu_set_menu(GTK_OPTION_MENU(abr_option_menu), - abr_menu); - gtk_widget_set_usize(abr_option_menu, 40, 25); - gtk_box_pack_start(GTK_BOX(abr_hbox), abr_option_menu, TRUE, TRUE, - 2); - - for (i = 0; i < sizeof(available_bitrates)/sizeof(gint); i++) if (abr_val == available_bitrates[i]) - gtk_option_menu_set_history(GTK_OPTION_MENU(abr_option_menu), - i); + gtk_combo_box_set_active ((GtkComboBox *) combo, i); + } + + gtk_box_pack_start ((GtkBox *) abr_hbox, combo, FALSE, FALSE, + 0); + g_signal_connect (combo, "changed", (GCallback) abr_changed, NULL); /* Quality Level */ @@ -1215,17 +1100,13 @@ gtk_box_pack_start(GTK_BOX(vbr_options_hbox3), vbr_quality_label, TRUE, TRUE, 0); - vbr_quality_adj = gtk_adjustment_new(4, 0, 9, 1, 1, 1); + vbr_quality_adj = (GtkAdjustment *) gtk_adjustment_new (4, 0, 9, 1, 1, 0); vbr_quality_spin = gtk_spin_button_new(GTK_ADJUSTMENT(vbr_quality_adj), 8, 0); - gtk_widget_set_usize(vbr_quality_spin, 20, -1); gtk_box_pack_start(GTK_BOX(vbr_options_hbox3), vbr_quality_spin, TRUE, TRUE, 0); - gtk_signal_connect(GTK_OBJECT(vbr_quality_adj), "value-changed", - GTK_SIGNAL_FUNC(vbr_qual), NULL); - - gtk_tooltips_set_tip(GTK_TOOLTIPS(vbr_tips), vbr_quality_spin, - _("highest:0;\nlowest:9;\ndefault:4;"), ""); + g_signal_connect (vbr_quality_adj, "value-changed", (GCallback) + vbr_qual, NULL); gtk_spin_button_set_value(GTK_SPIN_BUTTON(vbr_quality_spin), vbr_quality_val); @@ -1236,8 +1117,8 @@ gtk_check_button_new_with_label(_("Don't write Xing VBR header")); gtk_box_pack_start(GTK_BOX(vbr_options_vbox), xing_header_toggle, FALSE, FALSE, 2); - gtk_signal_connect(GTK_OBJECT(xing_header_toggle), "toggled", - GTK_SIGNAL_FUNC(toggle_xing), NULL); + g_signal_connect (xing_header_toggle, "toggled", (GCallback) + toggle_xing, NULL); if (toggle_xing_val == 0) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON @@ -1255,8 +1136,6 @@ tags_vbox = gtk_vbox_new(FALSE, 5); gtk_container_set_border_width(GTK_CONTAINER(tags_vbox), 5); - tags_tips = gtk_tooltips_new(); - /* Frame Params */ tags_frames_frame = gtk_frame_new(_("Frame params:")); @@ -1274,8 +1153,8 @@ gtk_check_button_new_with_label(_("Mark as copyright")); gtk_box_pack_start(GTK_BOX(tags_frames_hbox), tags_copyright_toggle, FALSE, FALSE, 2); - gtk_signal_connect(GTK_OBJECT(tags_copyright_toggle), "toggled", - GTK_SIGNAL_FUNC(toggle_copyright), NULL); + g_signal_connect (tags_copyright_toggle, "toggled", (GCallback) + toggle_copyright, NULL); if (mark_copyright_val == 1) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON @@ -1285,8 +1164,8 @@ gtk_check_button_new_with_label(_("Mark as original")); gtk_box_pack_start(GTK_BOX(tags_frames_hbox), tags_original_toggle, FALSE, FALSE, 2); - gtk_signal_connect(GTK_OBJECT(tags_original_toggle), "toggled", - GTK_SIGNAL_FUNC(toggle_original), NULL); + g_signal_connect (tags_original_toggle, "toggled", (GCallback) + toggle_original, NULL); if (mark_original_val == 1) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON @@ -1308,8 +1187,8 @@ (_("Force addition of version 2 tag")); gtk_box_pack_start(GTK_BOX(tags_id3_vbox), tags_force_id3v2_toggle, FALSE, FALSE, 2); - gtk_signal_connect(GTK_OBJECT(tags_force_id3v2_toggle), "toggled", - GTK_SIGNAL_FUNC(force_v2_toggle), NULL); + g_signal_connect (tags_force_id3v2_toggle, "toggled", (GCallback) + force_v2_toggle, NULL); tags_id3_hbox = gtk_hbox_new(FALSE, 5); gtk_container_add(GTK_CONTAINER(tags_id3_vbox), tags_id3_hbox); @@ -1318,15 +1197,15 @@ gtk_check_button_new_with_label(_("Only add v1 tag")); gtk_box_pack_start(GTK_BOX(tags_id3_hbox), tags_only_v1_toggle, FALSE, FALSE, 2); - gtk_signal_connect(GTK_OBJECT(tags_only_v1_toggle), "toggled", - GTK_SIGNAL_FUNC(id3_only_version), "v1"); + g_signal_connect (tags_only_v1_toggle, "toggled", (GCallback) + id3_only_version, "v1"); tags_only_v2_toggle = gtk_check_button_new_with_label(_("Only add v2 tag")); gtk_box_pack_start(GTK_BOX(tags_id3_hbox), tags_only_v2_toggle, FALSE, FALSE, 2); - gtk_signal_connect(GTK_OBJECT(tags_only_v2_toggle), "toggled", - GTK_SIGNAL_FUNC(id3_only_version), "v2"); + g_signal_connect (tags_only_v2_toggle, "toggled", (GCallback) + id3_only_version, "v2"); if (force_v2_val == 1) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON @@ -1355,25 +1234,20 @@ configure_bbox = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(configure_bbox), GTK_BUTTONBOX_END); - gtk_button_box_set_spacing(GTK_BUTTON_BOX(configure_bbox), 5); gtk_box_pack_start(GTK_BOX(vbox), configure_bbox, FALSE, FALSE, 0); configure_cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL); - gtk_signal_connect_object(GTK_OBJECT(configure_cancel), "clicked", - GTK_SIGNAL_FUNC(gtk_widget_destroy), - GTK_OBJECT(configure_win)); - GTK_WIDGET_SET_FLAGS(configure_cancel, GTK_CAN_DEFAULT); + g_signal_connect_swapped (configure_cancel, "clicked", (GCallback) + gtk_widget_destroy, configure_win); gtk_box_pack_start(GTK_BOX(configure_bbox), configure_cancel, TRUE, TRUE, 0); configure_ok = gtk_button_new_from_stock(GTK_STOCK_OK); - gtk_signal_connect(GTK_OBJECT(configure_ok), "clicked", - GTK_SIGNAL_FUNC(configure_ok_cb), NULL); - GTK_WIDGET_SET_FLAGS(configure_ok, GTK_CAN_DEFAULT); + g_signal_connect (configure_ok, "clicked", (GCallback) configure_ok_cb, + NULL); gtk_box_pack_start(GTK_BOX(configure_bbox), configure_ok, TRUE, TRUE, 0); gtk_widget_show(configure_ok); - gtk_widget_grab_default(configure_ok); /* Set States */ diff -Nru audacious-plugins-2.4.4/src/filewriter/vorbis.c audacious-plugins-3.2/src/filewriter/vorbis.c --- audacious-plugins-2.4.4/src/filewriter/vorbis.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/filewriter/vorbis.c 2012-01-20 19:48:30.000000000 +0000 @@ -27,7 +27,8 @@ #include #include -#include +#include +#include static void vorbis_init(write_output_callback write_output_func); static void vorbis_configure(void); @@ -46,8 +47,6 @@ .format_required = FMT_FLOAT, }; -static float v_base_quality = 0.5; - static ogg_stream_state os; static ogg_page og; static ogg_packet op; @@ -57,18 +56,33 @@ static vorbis_info vi; static vorbis_comment vc; +static const gchar * const vorbis_defaults[] = { + "base_quality", "0.5", + NULL}; + +static gdouble v_base_quality; + static void vorbis_init(write_output_callback write_output_func) { - mcs_handle_t *db = aud_cfg_db_open(); + aud_config_set_defaults ("filewriter_vorbis", vorbis_defaults); - aud_cfg_db_get_float(db, "filewriter_vorbis", "base_quality", &v_base_quality); - - aud_cfg_db_close(db); + v_base_quality = aud_get_double ("filewriter_vorbis", "base_quality"); if (write_output_func) write_output=write_output_func; } +static void add_string_from_tuple (vorbis_comment * vc, const char * name, + const Tuple * tuple, gint field) +{ + gchar * val = tuple_get_str (tuple, field, NULL); + if (! val) + return; + + vorbis_comment_add_tag (vc, name, val); + str_unref (val); +} + static gint vorbis_open(void) { ogg_packet header; @@ -82,22 +96,15 @@ if (tuple) { - const gchar *scratch; gchar tmpstr[32]; gint scrint; - if ((scratch = tuple_get_string(tuple, FIELD_TITLE, NULL))) - vorbis_comment_add_tag(&vc, "title", (gchar *) scratch); - if ((scratch = tuple_get_string(tuple, FIELD_ARTIST, NULL))) - vorbis_comment_add_tag(&vc, "artist", (gchar *) scratch); - if ((scratch = tuple_get_string(tuple, FIELD_ALBUM, NULL))) - vorbis_comment_add_tag(&vc, "album", (gchar *) scratch); - if ((scratch = tuple_get_string(tuple, FIELD_GENRE, NULL))) - vorbis_comment_add_tag(&vc, "genre", (gchar *) scratch); - if ((scratch = tuple_get_string(tuple, FIELD_DATE, NULL))) - vorbis_comment_add_tag(&vc, "date", (gchar *) scratch); - if ((scratch = tuple_get_string(tuple, FIELD_COMMENT, NULL))) - vorbis_comment_add_tag(&vc, "comment", (gchar *) scratch); + add_string_from_tuple (& vc, "title", tuple, FIELD_TITLE); + add_string_from_tuple (& vc, "artist", tuple, FIELD_ARTIST); + add_string_from_tuple (& vc, "album", tuple, FIELD_ALBUM); + add_string_from_tuple (& vc, "genre", tuple, FIELD_GENRE); + add_string_from_tuple (& vc, "date", tuple, FIELD_DATE); + add_string_from_tuple (& vc, "comment", tuple, FIELD_COMMENT); if ((scrint = tuple_get_int(tuple, FIELD_TRACK_NUMBER, NULL))) { @@ -205,23 +212,16 @@ /* configuration stuff */ static GtkWidget *configure_win = NULL; static GtkWidget *quality_frame, *quality_vbox, *quality_hbox1, *quality_spin, *quality_label; -static GtkObject *quality_adj; +static GtkAdjustment * quality_adj; static void quality_change(GtkAdjustment *adjustment, gpointer user_data) { - if (gtk_spin_button_get_value_as_float(GTK_SPIN_BUTTON(quality_spin))) - v_base_quality = gtk_spin_button_get_value_as_float(GTK_SPIN_BUTTON(quality_spin)) / 10; - else - v_base_quality = 0.0; + v_base_quality = gtk_spin_button_get_value ((GtkSpinButton *) quality_spin) / 10; } static void configure_ok_cb(gpointer data) { - mcs_handle_t *db = aud_cfg_db_open(); - - aud_cfg_db_set_float(db, "filewrite_vorbis", "base_quality", v_base_quality); - - aud_cfg_db_close(db); + aud_set_double ("filewrite_vorbis", "base_quality", v_base_quality); gtk_widget_hide(configure_win); } @@ -261,7 +261,7 @@ gtk_misc_set_alignment(GTK_MISC(quality_label), 0, 0.5); gtk_box_pack_start(GTK_BOX(quality_hbox1), quality_label, TRUE, TRUE, 0); - quality_adj = gtk_adjustment_new(5, 0, 10, 0.1, 1, 1); + quality_adj = (GtkAdjustment *) gtk_adjustment_new (5, 0, 10, 0.1, 1, 0); quality_spin = gtk_spin_button_new(GTK_ADJUSTMENT(quality_adj), 1, 2); gtk_box_pack_start(GTK_BOX(quality_hbox1), quality_spin, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(quality_adj), "value-changed", G_CALLBACK(quality_change), NULL); @@ -271,17 +271,16 @@ /* buttons */ bbox = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); - gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); button = gtk_button_new_from_stock(GTK_STOCK_CANCEL); - g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(gtk_widget_hide), GTK_OBJECT(configure_win)); + g_signal_connect_swapped (button, "clicked", (GCallback) + gtk_widget_hide, configure_win); gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0); button = gtk_button_new_from_stock(GTK_STOCK_OK); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(configure_ok_cb), NULL); gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0); - gtk_widget_grab_default(button); } gtk_widget_show_all(configure_win); diff -Nru audacious-plugins-2.4.4/src/flacng/AUTHORS audacious-plugins-3.2/src/flacng/AUTHORS --- audacious-plugins-2.4.4/src/flacng/AUTHORS 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/flacng/AUTHORS 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -/* - * A FLAC decoder plugin for the Audacious Media Player - * Copyright (C) 2005 Ralf Ertzinger - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -Ralf Ertzinger - -Thanks to Hendrik Scholz for testing the FreeBSD -side - -William Pitcock - - tuple builder - - full transition to InputPlayback API - - full vorbiscomment support diff -Nru audacious-plugins-2.4.4/src/flacng/flac_compat112.c audacious-plugins-3.2/src/flacng/flac_compat112.c --- audacious-plugins-2.4.4/src/flacng/flac_compat112.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/flacng/flac_compat112.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -/* - * A FLAC decoder plugin for the Audacious Media Player - * Copyright (C) 2005 Ralf Ertzinger - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include -#include "flac_compat112.h" - -#if !defined(FLAC_API_VERSION_CURRENT) - -FLAC__SeekableStreamDecoderState FLAC__stream_decoder_init_stream( - FLAC__SeekableStreamDecoder* decoder, - FLAC__SeekableStreamDecoderReadCallback read_callback, - FLAC__SeekableStreamDecoderSeekCallback seek_callback, - FLAC__SeekableStreamDecoderTellCallback tell_callback, - FLAC__SeekableStreamDecoderLengthCallback length_callback, - FLAC__SeekableStreamDecoderEofCallback eof_callback, - FLAC__SeekableStreamDecoderWriteCallback write_callback, - FLAC__SeekableStreamDecoderMetadataCallback metadata_callback, - FLAC__SeekableStreamDecoderErrorCallback error_callback, - void * client_data) { - - FLAC__seekable_stream_decoder_set_read_callback(decoder, read_callback); - FLAC__seekable_stream_decoder_set_seek_callback(decoder, seek_callback); - FLAC__seekable_stream_decoder_set_tell_callback(decoder, tell_callback); - FLAC__seekable_stream_decoder_set_length_callback(decoder, length_callback); - FLAC__seekable_stream_decoder_set_eof_callback(decoder, eof_callback); - FLAC__seekable_stream_decoder_set_write_callback(decoder, write_callback); - FLAC__seekable_stream_decoder_set_metadata_callback(decoder, metadata_callback); - FLAC__seekable_stream_decoder_set_error_callback(decoder, error_callback); - FLAC__seekable_stream_decoder_set_client_data(decoder, client_data); - - return FLAC__seekable_stream_decoder_init(decoder); -} - -#endif diff -Nru audacious-plugins-2.4.4/src/flacng/flac_compat112.h audacious-plugins-3.2/src/flacng/flac_compat112.h --- audacious-plugins-2.4.4/src/flacng/flac_compat112.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/flacng/flac_compat112.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -#ifndef FLAC_COMPAT112_H -#define FLAC_COMPAT112_H - -#if !defined(FLAC_API_VERSION_CURRENT) - -/* Basic stream decoder type */ -#define FLAC__StreamDecoder FLAC__SeekableStreamDecoder - -/* Stream decoder functions */ -#define FLAC__StreamDecoderReadStatus FLAC__SeekableStreamDecoderReadStatus -#define FLAC__StreamDecoderSeekStatus FLAC__SeekableStreamDecoderSeekStatus -#define FLAC__StreamDecoderTellStatus FLAC__SeekableStreamDecoderTellStatus -#define FLAC__StreamDecoderLengthStatus FLAC__SeekableStreamDecoderLengthStatus -#define FLAC__stream_decoder_new FLAC__seekable_stream_decoder_new -#define FLAC__stream_decoder_set_metadata_respond FLAC__seekable_stream_decoder_set_metadata_respond -#define FLAC__stream_decoder_process_single FLAC__seekable_stream_decoder_process_single -#define FLAC__stream_decoder_seek_absolute FLAC__seekable_stream_decoder_seek_absolute -#define FLAC__stream_decoder_get_state FLAC__seekable_stream_decoder_get_state -#define FLAC__stream_decoder_flush FLAC__seekable_stream_decoder_flush -#define FLAC__stream_decoder_reset FLAC__seekable_stream_decoder_reset -#define FLAC__stream_decoder_process_until_end_of_metadata FLAC__seekable_stream_decoder_process_until_end_of_metadata -#define FLAC__stream_decoder_delete FLAC__seekable_stream_decoder_delete -#define FLAC__StreamDecoderInitStatusString FLAC__SeekableStreamDecoderStateString -#define FLAC__StreamDecoderStateString FLAC__SeekableStreamDecoderStateString - -/* Constants and types */ -#define FLAC__StreamDecoderInitStatus FLAC__SeekableStreamDecoderState -#define FLAC__STREAM_DECODER_SEEK_STATUS_ERROR FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR -#define FLAC__STREAM_DECODER_SEEK_STATUS_OK FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_OK -#define FLAC__STREAM_DECODER_TELL_STATUS_ERROR FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_ERROR -#define FLAC__STREAM_DECODER_TELL_STATUS_OK FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK -#define FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_ERROR -#define FLAC__STREAM_DECODER_LENGTH_STATUS_OK FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK -#define FLAC__STREAM_DECODER_INIT_STATUS_OK FLAC__SEEKABLE_STREAM_DECODER_OK -#define FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK -#define FLAC__STREAM_DECODER_END_OF_STREAM FLAC__SEEKABLE_STREAM_DECODER_END_OF_STREAM - -FLAC__SeekableStreamDecoderState FLAC__stream_decoder_init_stream( - FLAC__SeekableStreamDecoder* decoder, - FLAC__SeekableStreamDecoderReadCallback read_callback, - FLAC__SeekableStreamDecoderSeekCallback seek_callback, - FLAC__SeekableStreamDecoderTellCallback tell_callback, - FLAC__SeekableStreamDecoderLengthCallback length_callback, - FLAC__SeekableStreamDecoderEofCallback eof_callback, - FLAC__SeekableStreamDecoderWriteCallback write_callback, - FLAC__SeekableStreamDecoderMetadataCallback metadata_callback, - FLAC__SeekableStreamDecoderErrorCallback error_callback, - void * client_data); - -#endif - -#endif diff -Nru audacious-plugins-2.4.4/src/flacng/flac_compat113.h audacious-plugins-3.2/src/flacng/flac_compat113.h --- audacious-plugins-2.4.4/src/flacng/flac_compat113.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/flacng/flac_compat113.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -#ifndef FLAC_COMPAT113_H -#define FLAC_COMPAT113_H - -#if defined(FLAC_API_VERSION_CURRENT) && FLAC_API_VERSION_CURRENT == 7 -#endif - -#endif diff -Nru audacious-plugins-2.4.4/src/flacng/flac_compat114.h audacious-plugins-3.2/src/flacng/flac_compat114.h --- audacious-plugins-2.4.4/src/flacng/flac_compat114.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/flacng/flac_compat114.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -#ifndef FLAC_COMPAT114_H -#define FLAC_COMPAT114_H - -#if defined(FLAC_API_VERSION_CURRENT) && FLAC_API_VERSION_CURRENT == 8 -#endif - -#endif diff -Nru audacious-plugins-2.4.4/src/flacng/flac_compat.h audacious-plugins-3.2/src/flacng/flac_compat.h --- audacious-plugins-2.4.4/src/flacng/flac_compat.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/flacng/flac_compat.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -#include "flac_compat112.h" -#include "flac_compat113.h" -#include "flac_compat114.h" diff -Nru audacious-plugins-2.4.4/src/flacng/flacng.h audacious-plugins-3.2/src/flacng/flacng.h --- audacious-plugins-2.4.4/src/flacng/flacng.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/flacng/flacng.h 2012-01-20 19:48:30.000000000 +0000 @@ -25,7 +25,7 @@ #include #include -#define ERROR(...) do { \ +#define FLACNG_ERROR(...) do { \ printf("flacng: " __VA_ARGS__); \ } while (0) @@ -60,45 +60,37 @@ guint channels; }; -/* - * Information about the stream content, from the metadata - */ -struct stream_comment { - gchar* artist; - gchar* album; - gchar* title; - gchar* tracknumber; - gchar* genre; - gchar* date; - gchar* comment; -}; - -/* - * Replaygain information, from the metadata - */ -struct stream_replaygain { - gboolean has_rg; - gchar* track_gain; - gchar* track_peak; - gchar* album_gain; - gchar* album_peak; -}; - - typedef struct callback_info { - GMutex* mutex; - FLAC__StreamMetadata *metadata; gint32* output_buffer; gint32* write_pointer; guint buffer_free; guint buffer_used; VFSFile* fd; struct stream_info stream; - struct stream_comment comment; - struct stream_replaygain replaygain; gboolean metadata_changed; struct frame_info frame; gint bitrate; } callback_info; +/* metadata.c */ +gboolean flac_update_song_tuple(const Tuple *tuple, VFSFile *fd); +gboolean flac_get_image(const gchar *filename, VFSFile *fd, void **data, gint64 *length); +Tuple *flac_probe_for_tuple(const gchar *filename, VFSFile *fd); + +/* seekable_stream_callbacks.c */ +FLAC__StreamDecoderReadStatus read_callback(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data); +FLAC__StreamDecoderSeekStatus seek_callback(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data); +FLAC__StreamDecoderTellStatus tell_callback(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data); +FLAC__bool eof_callback(const FLAC__StreamDecoder *decoder, void *client_data); +FLAC__StreamDecoderLengthStatus length_callback(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data); +FLAC__StreamDecoderWriteStatus write_callback(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data); +void error_callback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data); +void metadata_callback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data); + +/* tools.c */ +callback_info* init_callback_info(void); +void clean_callback_info(callback_info* info); +void reset_info(callback_info* info); +gboolean read_metadata(FLAC__StreamDecoder* decoder, callback_info* info); + #endif diff -Nru audacious-plugins-2.4.4/src/flacng/Makefile audacious-plugins-3.2/src/flacng/Makefile --- audacious-plugins-2.4.4/src/flacng/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/flacng/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -1,9 +1,9 @@ PLUGIN = flacng${PLUGIN_SUFFIX} -SRCS = plugin.c \ - tools.c \ +SRCS = plugin.c \ + tools.c \ seekable_stream_callbacks.c \ - flac_compat112.c + metadata.c include ../../buildsys.mk include ../../extra.mk @@ -11,5 +11,5 @@ plugindir := ${plugindir}/${INPUT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${LIBFLAC_CFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -LIBS += ${LIBFLAC_LIBS} ${GTK_LIBS} ${GLIB_LIBS} ${MOWGLI_LIBS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${LIBFLAC_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. +LIBS += ${LIBFLAC_LIBS} ${GTK_LIBS} ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/flacng/metadata.c audacious-plugins-3.2/src/flacng/metadata.c --- audacious-plugins-2.4.4/src/flacng/metadata.c 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/flacng/metadata.c 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,451 @@ +/* + * A FLAC decoder plugin for the Audacious Media Player + * Copyright (C) 2005 Ralf Ertzinger + * Copyright (C) 2010 John Lindgren + * Copyright (C) 2010 MichaÅ‚ Lipski + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include +#include + +#include "flacng.h" + +static size_t read_cb(void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle) +{ + size_t read; + + if (handle == NULL) + { + FLACNG_ERROR("Trying to read data from an uninitialized file!\n"); + return -1; + } + + read = vfs_fread(ptr, size, nmemb, handle); + + switch (read) + { + case -1: + FLACNG_ERROR("Error while reading from stream!\n"); + return -1; + + case 0: + AUDDBG("Stream reached EOF\n"); + return 0; + + default: + return read; + } +} + +static size_t write_cb(const void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle) +{ + return vfs_fwrite(ptr, size, nmemb, handle); +} + +static int seek_cb(FLAC__IOHandle handle, FLAC__int64 offset, int whence) +{ + if (vfs_fseek(handle, offset, whence) != 0) + { + FLACNG_ERROR("Could not seek to %lld!\n", (long long)offset); + return -1; + } + + return 0; +} + +static FLAC__int64 tell_cb(FLAC__IOHandle handle) +{ + guint64 offset; + + if ((offset = vfs_ftell(handle)) == -1) + { + FLACNG_ERROR("Could not tell current position!\n"); + return -1; + } + + AUDDBG ("Current position: %d\n", (gint) offset); + return offset; +} + +static int eof_cb(FLAC__IOHandle handle) +{ + return vfs_feof(handle); +} + +static FLAC__IOCallbacks io_callbacks = { + read_cb, + write_cb, + seek_cb, + tell_cb, + eof_cb, + NULL +}; + +static void insert_str_tuple_to_vc (FLAC__StreamMetadata * vc_block, + const Tuple * tuple, gint tuple_name, gchar * field_name) +{ + FLAC__StreamMetadata_VorbisComment_Entry entry; + gchar *str; + gchar *val = tuple_get_str(tuple, tuple_name, NULL); + + if (val == NULL) + return; + + str = g_strdup_printf("%s=%s", field_name, val); + entry.entry = (FLAC__byte *) str; + entry.length = strlen(str); + FLAC__metadata_object_vorbiscomment_insert_comment(vc_block, + vc_block->data.vorbis_comment.num_comments, entry, true); + g_free(str); + str_unref(val); +} + +static void insert_int_tuple_to_vc (FLAC__StreamMetadata * vc_block, + const Tuple * tuple, gint tuple_name, gchar * field_name) +{ + FLAC__StreamMetadata_VorbisComment_Entry entry; + gchar *str; + gint val = tuple_get_int(tuple, tuple_name, NULL); + + if (val <= 0) + return; + + if (FIELD_TRACK_NUMBER == tuple_name) + str = g_strdup_printf("%s=%.2d", field_name, val); + else + str = g_strdup_printf("%s=%d", field_name, val); + + entry.entry = (FLAC__byte *) str; + entry.length = strlen(str); + FLAC__metadata_object_vorbiscomment_insert_comment(vc_block, + vc_block->data.vorbis_comment.num_comments, entry, true); + g_free(str); +} + +gboolean flac_update_song_tuple(const Tuple *tuple, VFSFile *fd) +{ + AUDDBG("Update song tuple.\n"); + + FLAC__Metadata_Iterator *iter; + FLAC__Metadata_Chain *chain; + FLAC__StreamMetadata *vc_block; + FLAC__Metadata_ChainStatus status; + + chain = FLAC__metadata_chain_new(); + g_return_val_if_fail(chain != NULL, FALSE); + + if (!FLAC__metadata_chain_read_with_callbacks(chain, fd, io_callbacks)) + goto ERR; + + iter = FLAC__metadata_iterator_new(); + g_return_val_if_fail(iter != NULL, FALSE); + + FLAC__metadata_iterator_init(iter, chain); + + while (FLAC__metadata_iterator_next(iter)) + if (FLAC__metadata_iterator_get_block_type(iter) == FLAC__METADATA_TYPE_VORBIS_COMMENT) + { + FLAC__metadata_iterator_delete_block(iter, true); + break; + } + + vc_block = FLAC__metadata_object_new(FLAC__METADATA_TYPE_VORBIS_COMMENT); + + insert_str_tuple_to_vc(vc_block, tuple, FIELD_TITLE, "TITLE"); + insert_str_tuple_to_vc(vc_block, tuple, FIELD_ARTIST, "ARTIST"); + insert_str_tuple_to_vc(vc_block, tuple, FIELD_ALBUM, "ALBUM"); + insert_str_tuple_to_vc(vc_block, tuple, FIELD_GENRE, "GENRE"); + insert_str_tuple_to_vc(vc_block, tuple, FIELD_COMMENT, "COMMENT"); + + insert_int_tuple_to_vc(vc_block, tuple, FIELD_YEAR, "DATE"); + insert_int_tuple_to_vc(vc_block, tuple, FIELD_TRACK_NUMBER, "TRACKNUMBER"); + + FLAC__metadata_iterator_insert_block_after(iter, vc_block); + + FLAC__metadata_iterator_delete(iter); + FLAC__metadata_chain_sort_padding(chain); + + if (!FLAC__metadata_chain_write_with_callbacks(chain, TRUE, fd, io_callbacks)) + goto ERR; + + FLAC__metadata_chain_delete(chain); + return TRUE; + +ERR: + status = FLAC__metadata_chain_status(chain); + FLAC__metadata_chain_delete(chain); + + FLACNG_ERROR("An error occured: %s\n", FLAC__Metadata_ChainStatusString[status]); + return FALSE; +} + +gboolean flac_get_image(const gchar *filename, VFSFile *fd, void **data, gint64 *length) +{ + AUDDBG("Probe for song image.\n"); + + FLAC__Metadata_Iterator *iter; + FLAC__Metadata_Chain *chain; + FLAC__StreamMetadata *metadata = NULL; + FLAC__Metadata_ChainStatus status; + gboolean has_image = FALSE; + + chain = FLAC__metadata_chain_new(); + g_return_val_if_fail(chain != NULL, FALSE); + + if (!FLAC__metadata_chain_read_with_callbacks(chain, fd, io_callbacks)) + goto ERR; + + iter = FLAC__metadata_iterator_new(); + g_return_val_if_fail(iter != NULL, FALSE); + + FLAC__metadata_iterator_init(iter, chain); + + while (FLAC__metadata_iterator_next(iter)) + if (FLAC__metadata_iterator_get_block_type(iter) == FLAC__METADATA_TYPE_PICTURE) + break; + + if (FLAC__metadata_iterator_get_block_type(iter) == FLAC__METADATA_TYPE_PICTURE) + { + metadata = FLAC__metadata_iterator_get_block(iter); + + if (metadata->data.picture.type == FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER) + { + AUDDBG("FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER found."); + + *data = g_memdup(metadata->data.picture.data, metadata->data.picture.data_length); + *length = metadata->data.picture.data_length; + has_image = TRUE; + } + } + + FLAC__metadata_iterator_delete(iter); + FLAC__metadata_chain_delete(chain); + + return has_image; + +ERR: + status = FLAC__metadata_chain_status(chain); + FLAC__metadata_chain_delete(chain); + + FLACNG_ERROR("An error occured: %s\n", FLAC__Metadata_ChainStatusString[status]); + return FALSE; +} + +static void parse_gain_text(const gchar *text, gint *value, gint *unit) +{ + gint sign = 1; + + *value = 0; + *unit = 1; + + if (*text == '-') + { + sign = -1; + text++; + } + + while (*text >= '0' && *text <= '9') + { + *value = *value * 10 + (*text - '0'); + text++; + } + + if (*text == '.') + { + text++; + + while (*text >= '0' && *text <= '9' && *value < G_MAXINT / 10) + { + *value = *value * 10 + (*text - '0'); + *unit = *unit * 10; + text++; + } + } + + *value = *value * sign; +} + +static void set_gain_info(Tuple *tuple, gint field, gint unit_field, const gchar *text) +{ + gint value, unit; + + parse_gain_text(text, &value, &unit); + + if (tuple_get_value_type(tuple, unit_field, NULL) == TUPLE_INT) + value = value * (gint64) tuple_get_int(tuple, unit_field, NULL) / unit; + else + tuple_set_int(tuple, unit_field, NULL, unit); + + tuple_set_int(tuple, field, NULL, value); +} + +static void add_text (Tuple * tuple, gint field, const gchar * value) +{ + gchar * cur = tuple_get_str (tuple, field, NULL); + if (cur) + { + gchar * both = g_strconcat (cur, ", ", value, NULL); + tuple_set_str (tuple, field, NULL, both); + g_free(both); + } + else + tuple_set_str (tuple, field, NULL, value); + + str_unref(cur); +} + +static void parse_comment (Tuple * tuple, const gchar * key, const gchar * value) +{ + AUDDBG ("Found key %s <%s>\n", key, value); + + const struct { + const gchar * key; + int field; + } tfields[] = { + {"ARTIST", FIELD_ARTIST}, + {"ALBUM", FIELD_ALBUM}, + {"TITLE", FIELD_TITLE}, + {"COMMENT", FIELD_COMMENT}, + {"GENRE", FIELD_GENRE}}; + + for (gint i = 0; i < G_N_ELEMENTS (tfields); i ++) + { + if (! strcasecmp (key, tfields[i].key)) + { + add_text (tuple, tfields[i].field, value); + return; + } + } + + if (! strcasecmp (key, "TRACKNUMBER")) + tuple_set_int(tuple, FIELD_TRACK_NUMBER, NULL, atoi(value)); + else if (! strcasecmp (key, "DATE")) + tuple_set_int(tuple, FIELD_YEAR, NULL, atoi(value)); + else if (! strcasecmp (key, "REPLAYGAIN_TRACK_GAIN")) + set_gain_info(tuple, FIELD_GAIN_TRACK_GAIN, FIELD_GAIN_GAIN_UNIT, value); + else if (! strcasecmp (key, "REPLAYGAIN_TRACK_PEAK")) + set_gain_info(tuple, FIELD_GAIN_TRACK_PEAK, FIELD_GAIN_PEAK_UNIT, value); + else if (! strcasecmp (key, "REPLAYGAIN_ALBUM_GAIN")) + set_gain_info(tuple, FIELD_GAIN_ALBUM_GAIN, FIELD_GAIN_GAIN_UNIT, value); + else if (! strcasecmp (key, "REPLAYGAIN_ALBUM_PEAK")) + set_gain_info(tuple, FIELD_GAIN_ALBUM_PEAK, FIELD_GAIN_PEAK_UNIT, value); +} + +Tuple *flac_probe_for_tuple(const gchar *filename, VFSFile *fd) +{ + AUDDBG("Probe for tuple.\n"); + + Tuple *tuple = NULL; + FLAC__Metadata_Iterator *iter; + FLAC__Metadata_Chain *chain; + FLAC__StreamMetadata *metadata = NULL; + FLAC__Metadata_ChainStatus status; + FLAC__StreamMetadata_VorbisComment_Entry *entry; + gchar *key; + gchar *value; + + tuple = tuple_new_from_filename(filename); + + tuple_set_str(tuple, FIELD_CODEC, NULL, "Free Lossless Audio Codec (FLAC)"); + tuple_set_str(tuple, FIELD_QUALITY, NULL, "lossless"); + + chain = FLAC__metadata_chain_new(); + g_return_val_if_fail(chain != NULL, FALSE); + + if (!FLAC__metadata_chain_read_with_callbacks(chain, fd, io_callbacks)) + goto ERR; + + iter = FLAC__metadata_iterator_new(); + g_return_val_if_fail(iter != NULL, FALSE); + + FLAC__metadata_iterator_init(iter, chain); + + do + { + switch (FLAC__metadata_iterator_get_block_type(iter)) + { + case FLAC__METADATA_TYPE_VORBIS_COMMENT: + + if (FLAC__metadata_iterator_get_block_type(iter) == FLAC__METADATA_TYPE_VORBIS_COMMENT) + { + metadata = FLAC__metadata_iterator_get_block(iter); + + AUDDBG("Vorbis comment contains %d fields\n", metadata->data.vorbis_comment.num_comments); + AUDDBG("Vendor string: %s\n", metadata->data.vorbis_comment.vendor_string.entry); + + entry = metadata->data.vorbis_comment.comments; + + for (gint i = 0; i < metadata->data.vorbis_comment.num_comments; i++, entry++) + { + if (FLAC__metadata_object_vorbiscomment_entry_to_name_value_pair(*entry, &key, &value) == false) + AUDDBG("Could not parse comment\n"); + else + { + parse_comment(tuple, key, value); + g_free(key); + g_free(value); + } + } + } + break; + + case FLAC__METADATA_TYPE_STREAMINFO: + metadata = FLAC__metadata_iterator_get_block(iter); + + /* Calculate the stream length (milliseconds) */ + if (metadata->data.stream_info.sample_rate == 0) + { + FLACNG_ERROR("Invalid sample rate for stream!\n"); + tuple_set_int(tuple, FIELD_LENGTH, NULL, -1); + } + else + { + tuple_set_int(tuple, FIELD_LENGTH, NULL, + (metadata->data.stream_info.total_samples / metadata->data.stream_info.sample_rate) * 1000); + AUDDBG("Stream length: %d seconds\n", tuple_get_int(tuple, FIELD_LENGTH, NULL)); + } + + gsize size = vfs_fsize(fd); + + if (size == -1 || metadata->data.stream_info.total_samples == 0) + tuple_set_int(tuple, FIELD_BITRATE, NULL, 0); + else + { + gint bitrate = 8 * size * + (gint64) metadata->data.stream_info.sample_rate / metadata->data.stream_info.total_samples; + + tuple_set_int(tuple, FIELD_BITRATE, NULL, (bitrate + 500) / 1000); + } + break; + + default: + ; + } + } while (FLAC__metadata_iterator_next(iter)); + + FLAC__metadata_iterator_delete(iter); + FLAC__metadata_chain_delete(chain); + + return tuple; + +ERR: + status = FLAC__metadata_chain_status(chain); + FLAC__metadata_chain_delete(chain); + + FLACNG_ERROR("An error occured: %s\n", FLAC__Metadata_ChainStatusString[status]); + return tuple; +} diff -Nru audacious-plugins-2.4.4/src/flacng/plugin.c audacious-plugins-3.2/src/flacng/plugin.c --- audacious-plugins-2.4.4/src/flacng/plugin.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/flacng/plugin.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,7 +1,7 @@ /* * A FLAC decoder plugin for the Audacious Media Player * Copyright (C) 2005 Ralf Ertzinger - * Copyright (C) 2010 MichaÅ‚ Lipski + * Copyright (C) 2010-2011 MichaÅ‚ Lipski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +#include + #include #include #include @@ -25,68 +27,29 @@ #include "flacng.h" -#include "tools.h" -#include "seekable_stream_callbacks.h" -#include "version.h" - -FLAC__StreamDecoder *test_decoder; FLAC__StreamDecoder *main_decoder; -callback_info *test_info; callback_info *main_info; -gboolean plugin_initialized = FALSE; static GMutex *seek_mutex; static GCond *seek_cond; static gint seek_value; +static gboolean stop_flag = FALSE; -static void flac_init(void) +static gboolean flac_init (void) { FLAC__StreamDecoderInitStatus ret; - /* Callback structure and decoder for file test purposes */ - - if ((test_info = init_callback_info()) == NULL) - { - ERROR("Could not initialize the test callback structure!\n"); - return; - } - - if ((test_decoder = FLAC__stream_decoder_new()) == NULL) - { - ERROR("Could not create the test FLAC decoder instance!\n"); - return; - } - - FLAC__stream_decoder_set_metadata_respond(test_decoder, FLAC__METADATA_TYPE_VORBIS_COMMENT); - - if (FLAC__STREAM_DECODER_INIT_STATUS_OK != (ret = FLAC__stream_decoder_init_stream( - test_decoder, - read_callback, - seek_callback, - tell_callback, - length_callback, - eof_callback, - write_callback, - metadata_callback, - error_callback, - test_info))) - { - ERROR("Could not initialize the test FLAC decoder: %s(%d)\n", - FLAC__StreamDecoderInitStatusString[ret], ret); - return; - } - /* Callback structure and decoder for main decoding loop */ if ((main_info = init_callback_info()) == NULL) { - ERROR("Could not initialize the main callback structure!\n"); - return; + FLACNG_ERROR("Could not initialize the main callback structure!\n"); + return FALSE; } if ((main_decoder = FLAC__stream_decoder_new()) == NULL) { - ERROR("Could not create the main FLAC decoder instance!\n"); - return; + FLACNG_ERROR("Could not create the main FLAC decoder instance!\n"); + return FALSE; } if (FLAC__STREAM_DECODER_INIT_STATUS_OK != (ret = FLAC__stream_decoder_init_stream( @@ -101,16 +64,16 @@ error_callback, main_info))) { - ERROR("Could not initialize the main FLAC decoder: %s(%d)\n", + FLACNG_ERROR("Could not initialize the main FLAC decoder: %s(%d)\n", FLAC__StreamDecoderInitStatusString[ret], ret); - return; + return FALSE; } seek_mutex = g_mutex_new(); seek_cond = g_cond_new(); AUDDBG("Plugin initialized.\n"); - plugin_initialized = TRUE; + return TRUE; } static void flac_cleanup(void) @@ -120,11 +83,6 @@ FLAC__stream_decoder_delete(main_decoder); clean_callback_info(main_info); - - FLAC__stream_decoder_delete(test_decoder); - clean_callback_info(test_info); - - plugin_initialized = FALSE; } gboolean flac_is_our_fd(const gchar *filename, VFSFile *fd) @@ -165,7 +123,7 @@ break; default: - ERROR("Can not convert to %d bps\n", res); + FLACNG_ERROR("Can not convert to %d bps\n", res); } } @@ -180,25 +138,22 @@ struct stream_info stream_info; guint sample_count; gpointer play_buffer = NULL; - - if (!plugin_initialized) - { - ERROR("Plugin not initialized!\n"); - return FALSE; - } + gboolean error = FALSE; main_info->fd = file; if (read_metadata(main_decoder, main_info) == FALSE) { - ERROR("Could not prepare file for playing!\n"); + FLACNG_ERROR("Could not prepare file for playing!\n"); + error = TRUE; goto ERR_NO_CLOSE; } if (main_info->stream.channels > MAX_SUPPORTED_CHANNELS) { - ERROR("This number of channels (%d) is currently not supported, stream not handled by this plugin.\n", + FLACNG_ERROR("This number of channels (%d) is currently not supported, stream not handled by this plugin.\n", main_info->stream.channels); + error = TRUE; goto ERR_NO_CLOSE; } @@ -207,14 +162,16 @@ main_info->stream.bits_per_sample != 24 && main_info->stream.bits_per_sample != 32) { - ERROR("This number of bits (%d) is currently not supported, stream not handled by this plugin.\n", + FLACNG_ERROR("This number of bits (%d) is currently not supported, stream not handled by this plugin.\n", main_info->stream.bits_per_sample); + error = TRUE; goto ERR_NO_CLOSE; } if ((play_buffer = g_malloc0(BUFFER_SIZE_BYTE)) == NULL) { - ERROR("Could not allocate conversion buffer\n"); + FLACNG_ERROR("Could not allocate conversion buffer\n"); + error = TRUE; goto ERR_NO_CLOSE; } @@ -222,7 +179,7 @@ (main_info->stream.bits_per_sample), main_info->stream.samplerate, main_info->stream.channels)) { - ERROR("Could not open output plugin!\n"); + error = TRUE; goto ERR_NO_CLOSE; } @@ -230,9 +187,9 @@ playback->output->pause (TRUE); seek_value = (start_time > 0) ? start_time : -1; - playback->playing = TRUE; + stop_flag = FALSE; - playback->set_params(playback, NULL, 0, main_info->bitrate, + playback->set_params(playback, main_info->bitrate, main_info->stream.samplerate, main_info->stream.channels); playback->set_pb_ready(playback); @@ -242,15 +199,32 @@ playback->set_gain_from_playlist(playback); - while (playback->playing) + while (1) { - if (stop_time >= 0 && playback->output->written_time () >= stop_time) - goto DRAIN; + g_mutex_lock(seek_mutex); + + if (stop_flag) + { + g_mutex_unlock(seek_mutex); + break; + } + + if (seek_value >= 0) + { + playback->output->flush (seek_value); + FLAC__stream_decoder_seek_absolute (main_decoder, (gint64) + seek_value * main_info->stream.samplerate / 1000); + seek_value = -1; + g_cond_signal(seek_cond); + } + + g_mutex_unlock(seek_mutex); /* Try to decode a single frame of audio */ if (FLAC__stream_decoder_process_single(main_decoder) == FALSE) { - ERROR("Error while decoding!\n"); + FLACNG_ERROR("Error while decoding!\n"); + error = TRUE; goto CLEANUP; } @@ -260,15 +234,17 @@ /* Samplerate and channels are important */ if (stream_info.samplerate != main_info->stream.samplerate) { - ERROR("Samplerate changed midstream (now: %d, was: %d). This is not supported yet.\n", + FLACNG_ERROR("Samplerate changed midstream (now: %d, was: %d). This is not supported yet.\n", main_info->stream.samplerate, stream_info.samplerate); + error = TRUE; goto CLEANUP; } if (stream_info.channels != main_info->stream.channels) { - ERROR("Number of channels changed midstream (now: %d, was: %d). This is not supported yet.\n", + FLACNG_ERROR("Number of channels changed midstream (now: %d, was: %d). This is not supported yet.\n", main_info->stream.channels, stream_info.channels); + error = TRUE; goto CLEANUP; } @@ -278,31 +254,20 @@ /* Compare the frame metadata to the current stream metadata */ if (main_info->stream.samplerate != main_info->frame.samplerate) { - ERROR("Frame samplerate mismatch (stream: %d, frame: %d)!\n", + FLACNG_ERROR("Frame samplerate mismatch (stream: %d, frame: %d)!\n", main_info->stream.samplerate, main_info->frame.samplerate); + error = TRUE; goto CLEANUP; } if (main_info->stream.channels != main_info->frame.channels) { - ERROR("Frame channel mismatch (stream: %d, frame: %d)!\n", + FLACNG_ERROR("Frame channel mismatch (stream: %d, frame: %d)!\n", main_info->stream.channels, main_info->frame.channels); + error = TRUE; goto CLEANUP; } - g_mutex_lock(seek_mutex); - - if (seek_value >= 0) - { - playback->output->flush (seek_value); - FLAC__stream_decoder_seek_absolute (main_decoder, (gint64) - seek_value * main_info->stream.samplerate / 1000); - seek_value = -1; - g_cond_signal(seek_cond); - } - - g_mutex_unlock(seek_mutex); - /* * If the frame decoded was an audio frame we now * have data in main_info->output_buffer @@ -317,10 +282,10 @@ read_pointer = main_info->output_buffer; elements_left = main_info->buffer_used; - while (playback->playing && elements_left != 0) + while (!stop_flag && elements_left != 0) { if (stop_time >= 0 && playback->output->written_time () >= stop_time) - goto DRAIN; + goto CLEANUP; sample_count = MIN(OUTPUT_BLOCK_SIZE, elements_left); @@ -343,18 +308,15 @@ { /* Yes. Drain the output buffer and stop playing. */ AUDDBG("End of stream reached, draining output buffer\n"); - -DRAIN: - while (playback->output->buffer_playing() && playback->playing) - g_usleep(20000); - goto CLEANUP; } } CLEANUP: + while (playback->output->buffer_playing()) + g_usleep(20000); + g_mutex_lock(seek_mutex); - playback->playing = FALSE; g_cond_signal(seek_cond); /* wake up any waiting request */ g_mutex_unlock(seek_mutex); @@ -363,24 +325,22 @@ AUDDBG("Audio device closed.\n"); ERR_NO_CLOSE: - if (play_buffer) - g_free(play_buffer); - + g_free(play_buffer); reset_info(main_info); if (FLAC__stream_decoder_flush(main_decoder) == FALSE) - ERROR("Could not flush decoder state!\n"); + FLACNG_ERROR("Could not flush decoder state!\n"); - return ! playback->error; + return ! error; } static void flac_stop(InputPlayback *playback) { g_mutex_lock(seek_mutex); - if (playback->playing) + if (!stop_flag) { - playback->playing = FALSE; + stop_flag = TRUE; playback->output->abort_write(); g_cond_signal(seek_cond); } @@ -388,21 +348,21 @@ g_mutex_unlock (seek_mutex); } -static void flac_pause(InputPlayback *playback, gshort pause) +static void flac_pause(InputPlayback *playback, gboolean pause) { g_mutex_lock(seek_mutex); - if (playback->playing) + if (!stop_flag) playback->output->pause(pause); g_mutex_unlock(seek_mutex); } -static void flac_seek (InputPlayback * playback, gulong time) +static void flac_seek (InputPlayback * playback, gint time) { g_mutex_lock(seek_mutex); - if (playback->playing) + if (!stop_flag) { seek_value = time; playback->output->abort_write(); @@ -413,202 +373,22 @@ g_mutex_unlock(seek_mutex); } -static Tuple *flac_probe_for_tuple(const gchar *filename, VFSFile *fd) -{ - AUDDBG("Probe for tuple.\n"); - Tuple *tuple = NULL; - - g_mutex_lock(test_info->mutex); - - test_info->fd = fd; - - if (read_metadata(test_decoder, test_info)) - tuple = get_tuple_from_file(filename, test_info); - else - ERROR("Could not read metadata tuple for file <%s>\n", filename); - - reset_info(test_info); - g_mutex_unlock(test_info->mutex); - - return tuple; -} - static void flac_aboutbox(void) { - static GtkWidget* about_window; - gchar *about_text; - - if (about_window) { - gtk_window_present(GTK_WINDOW(about_window)); - return; - } - - about_text = g_strjoin("", _("FLAC Audio Plugin "), _VERSION, - _("\n\nOriginal code by\n" - "Ralf Ertzinger \n" - "\n" - "http://www.skytale.net/projects/bmp-flac2/"), NULL); - - audgui_simple_message (& about_window, GTK_MESSAGE_INFO, - _("About FLAC Audio Plugin"), about_text); - - g_free(about_text); -} - -static void insert_str_tuple_to_vc (FLAC__StreamMetadata * vc_block, - const Tuple * tuple, gint tuple_name, gchar * field_name) -{ - FLAC__StreamMetadata_VorbisComment_Entry entry; - gchar *str; - gchar *val = (gchar *) tuple_get_string(tuple, tuple_name, NULL); - - if (val == NULL) - return; - - str = g_strdup_printf("%s=%s", field_name, val); - entry.entry = (FLAC__byte *) str; - entry.length = strlen(str); - FLAC__metadata_object_vorbiscomment_replace_comment(vc_block, entry, false, true); - g_free(str); -} - -static void insert_int_tuple_to_vc (FLAC__StreamMetadata * vc_block, - const Tuple * tuple, gint tuple_name, gchar * field_name) -{ - FLAC__StreamMetadata_VorbisComment_Entry entry; - gchar *str; - gint val = tuple_get_int(tuple, tuple_name, NULL); - - if (val <= 0) - return; - - if (FIELD_TRACK_NUMBER == tuple_name) - str = g_strdup_printf("%s=%.2d", field_name, val); - else - str = g_strdup_printf("%s=%d", field_name, val); - - entry.entry = (FLAC__byte *) str; - entry.length = strlen(str); - FLAC__metadata_object_vorbiscomment_replace_comment(vc_block, entry, false, true); - g_free(str); -} - -gboolean flac_update_song_tuple (const Tuple * tuple, VFSFile * fd) -{ - AUDDBG("Update song tuple.\n"); - FLAC__Metadata_SimpleIterator *iter; - FLAC__StreamMetadata *vc_block; - gchar *filename; - FLAC__bool ret; - - if (fd != NULL) - filename = g_filename_from_uri(fd->uri, NULL, NULL); - else - return FALSE; - - iter = FLAC__metadata_simple_iterator_new(); - g_return_val_if_fail(iter != NULL, FALSE); - - ret = FLAC__metadata_simple_iterator_init(iter, filename, false, false); - - if (!ret) - { - FLAC__metadata_simple_iterator_delete(iter); - return FALSE; - } - - while (FLAC__metadata_simple_iterator_get_block_type(iter) != FLAC__METADATA_TYPE_VORBIS_COMMENT) - { - if (!FLAC__metadata_simple_iterator_next(iter)) - break; - } - - if (FLAC__metadata_simple_iterator_get_block_type(iter) == FLAC__METADATA_TYPE_VORBIS_COMMENT) - vc_block = FLAC__metadata_simple_iterator_get_block(iter); - else - vc_block = FLAC__metadata_object_new(FLAC__METADATA_TYPE_VORBIS_COMMENT); - - insert_str_tuple_to_vc(vc_block, tuple, FIELD_TITLE, "TITLE"); - insert_str_tuple_to_vc(vc_block, tuple, FIELD_ARTIST, "ARTIST"); - insert_str_tuple_to_vc(vc_block, tuple, FIELD_ALBUM, "ALBUM"); - insert_str_tuple_to_vc(vc_block, tuple, FIELD_GENRE, "GENRE"); - insert_str_tuple_to_vc(vc_block, tuple, FIELD_COMMENT, "COMMENT"); - - insert_int_tuple_to_vc(vc_block, tuple, FIELD_YEAR, "DATE"); - insert_int_tuple_to_vc(vc_block, tuple, FIELD_TRACK_NUMBER, "TRACKNUMBER"); - - if (FLAC__metadata_simple_iterator_get_block_type(iter) == FLAC__METADATA_TYPE_VORBIS_COMMENT) - ret = FLAC__metadata_simple_iterator_set_block(iter, vc_block, true); - else - ret = FLAC__metadata_simple_iterator_insert_block_after(iter, vc_block, true); - - FLAC__metadata_simple_iterator_delete(iter); - FLAC__metadata_object_delete(vc_block); - - if (!ret) - return FALSE; - else - return TRUE; -} - -#ifdef FLAC__METADATA_TYPE_PICTURE -static gboolean flac_get_image(const gchar *filename, VFSFile *fd, void **data, gint *length) -{ - AUDDBG("Probe for song image.\n"); - - FLAC__Metadata_SimpleIterator *iter; - FLAC__StreamMetadata *metadata = NULL; - FLAC__bool ret; - gboolean has_image = FALSE; - - if (fd != NULL) - filename = g_filename_from_uri(fd->uri, NULL, NULL); - else - return FALSE; - - iter = FLAC__metadata_simple_iterator_new(); - g_return_val_if_fail(iter != NULL, FALSE); - - ret = FLAC__metadata_simple_iterator_init(iter, filename, false, false); - - if (!ret) - goto CLEANUP; - - while (FLAC__metadata_simple_iterator_get_block_type(iter) != FLAC__METADATA_TYPE_PICTURE) - { - if (!FLAC__metadata_simple_iterator_next(iter)) - break; - } - - if (FLAC__metadata_simple_iterator_get_block_type(iter) == FLAC__METADATA_TYPE_PICTURE) - { - metadata = FLAC__metadata_simple_iterator_get_block(iter); - - if (metadata->data.picture.type == FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER) - { - AUDDBG("FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER found."); - - *data = g_memdup(metadata->data.picture.data, metadata->data.picture.data_length); - *length = (guint32) metadata->data.picture.data_length; - has_image = TRUE; - goto CLEANUP; - } - } - -CLEANUP: - FLAC__metadata_simple_iterator_delete(iter); - - if (metadata) - FLAC__metadata_object_delete(metadata); + static GtkWidget * window = NULL; - return has_image; + audgui_simple_message(& window, GTK_MESSAGE_INFO, _("About FLAC Audio Plugin"), + _("\n\nOriginal code by\n" + "Ralf Ertzinger \n\n" + "http://www.skytale.net/projects/bmp-flac2/") +); } -#endif static const gchar *flac_fmts[] = { "flac", "fla", NULL }; -InputPlugin flac_ip = { - .description = "FLACng Audio Plugin", +AUD_INPUT_PLUGIN +( + .name = "FLAC", .init = flac_init, .cleanup = flac_cleanup, .about = flac_aboutbox, @@ -618,14 +398,8 @@ .mseek = flac_seek, .probe_for_tuple = flac_probe_for_tuple, .is_our_file_from_vfs = flac_is_our_fd, - .vfs_extensions = flac_fmts, + .extensions = flac_fmts, .update_song_tuple = flac_update_song_tuple, -#ifdef FLAC__METADATA_TYPE_PICTURE .get_song_image = flac_get_image, -#endif .priority = 1 -}; - -InputPlugin *flac_iplist[] = { &flac_ip, NULL }; - -SIMPLE_INPUT_PLUGIN (flacng, flac_iplist) +) diff -Nru audacious-plugins-2.4.4/src/flacng/README audacious-plugins-3.2/src/flacng/README --- audacious-plugins-2.4.4/src/flacng/README 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/flacng/README 1970-01-01 00:00:00.000000000 +0000 @@ -1,109 +0,0 @@ -/* - * A FLAC decoder plugin for the Audacious Media Player - * Copyright (C) 2005 Ralf Ertzinger - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -INTRODUCTION -============ - -This is an input plugin for the Audacious Media Player enabling the playback -of FLAC compressed audio files. - -The Audacious Media Player (http://www.audacious-media-player.org) is a port of -the XMMS audio player to GTK2. - -FLAC (http://flac.sourceforge.net/) is an Open Source lossless audio -codec developed by Josh Coalson. - - - -STATUS -====== - -This plugin is to be considered of alpha quality. Use at your own risk. - - -OK, let's be brief with this and first list the things that do _not_ work -at the current time. - -- No display of bitrate -- Visualizer plugins do not work with FLAC streams (*) -- No OGGFlac streams (*) -- Maximum of 2 channels (Stereo) (*) -- No configuration options at all (*) - -Still interested? Good. -The items marked with a (*) above can be fixed, this just takes some code -that has not been written yet (har har). -The FLAC decoder does not emit the current bitrate, so you'll have to -settle for "VBR", which is true enough. -As for configuration options, so far I have not found anything worth -configuring, maybe you can think of something. - -Nonetheless. - -Given all the restrictions above, when presented with a 8/16/24 bit, stereo -not-packed-in-ogg FLAC stream, this plugin will do it's best to produce -some sound out of it. This may even work. It may, on the other hand, crash -your machine and eat your data. - -Did I mention that the code is alpha quality? - - - -HOW TO BUILD -============ - -You will need the following to compile the code: - -1) A working compiler environment (if you do not know what this means - you probably do not want to use this code now, anyway) - -2) The Audacious media player, including development header files - -3) The FLAC libraries, including development header files - -If you have all this the rest is easy. -Unpack the tar ball, change into the directory created and -issue "configure" (without the quotes). This will try and find the -necessary stuff on your system. When it finishes successfully, type -"make". This will build the plugin library. -To enable debugging messages (and you probably want those at this -point) use "configure --debug" - -To install the plugin in your home directory (no special permissions -needed, ideal for testing) use "make localinstall" (you can use -"make localremove" to remove the plugin again). To install the plugin -for all users use "make install" instead. - - - -TESTING -======= - -After successful installation start Audacious (preferrably from the command -line so you can see error or debug messages) and look in the configuration -panel under plugins. The FLAC plugin ought to appear there, looking -like "FLAC audio plugin". Now add a FLAC file to -the playlist and try it. - - - -BUGS -==== - -Sure. Tons of 'em. Report to for the time being. diff -Nru audacious-plugins-2.4.4/src/flacng/seekable_stream_callbacks.c audacious-plugins-3.2/src/flacng/seekable_stream_callbacks.c --- audacious-plugins-2.4.4/src/flacng/seekable_stream_callbacks.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/flacng/seekable_stream_callbacks.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * A FLAC decoder plugin for the Audacious Media Player * Copyright (C) 2005 Ralf Ertzinger + * Copyright (C) 2010 MichaÅ‚ Lipski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,8 +25,6 @@ #include #include "flacng.h" -#include "tools.h" -#include "seekable_stream_callbacks.h" FLAC__StreamDecoderReadStatus read_callback(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data) { @@ -34,7 +33,7 @@ if (info->fd == NULL) { - ERROR("Trying to read data from an uninitialized file!\n"); + FLACNG_ERROR("Trying to read data from an uninitialized file!\n"); return FLAC__STREAM_DECODER_READ_STATUS_ABORT; } @@ -47,7 +46,7 @@ switch (read) { case -1: - ERROR("Error while reading from stream!\n"); + FLACNG_ERROR("Error while reading from stream!\n"); return FLAC__STREAM_DECODER_READ_STATUS_ABORT; case 0: @@ -65,7 +64,7 @@ if (vfs_fseek(info->fd, offset, SEEK_SET) != 0) { - ERROR("Could not seek to %lld!\n", (long long)offset); + FLACNG_ERROR("Could not seek to %lld!\n", (long long)offset); return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; } @@ -78,7 +77,7 @@ if ((*offset = vfs_ftell(info->fd)) == -1) { - ERROR("Could not tell current position!\n"); + FLACNG_ERROR("Could not tell current position!\n"); return FLAC__STREAM_DECODER_TELL_STATUS_ERROR; } @@ -127,7 +126,7 @@ */ if (info->buffer_free < (frame->header.blocksize * frame->header.channels)) { - ERROR("BUG! Too much data decoded from stream!\n"); + FLACNG_ERROR("BUG! Too much data decoded from stream!\n"); return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT; } @@ -136,7 +135,7 @@ frame->header.bits_per_sample != 24 && frame->header.bits_per_sample != 32) { - ERROR("Unsupported bitrate found in stream: %d!\n", frame->header.bits_per_sample); + FLACNG_ERROR("Unsupported bitrate found in stream: %d!\n", frame->header.bits_per_sample); return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT; } @@ -164,92 +163,37 @@ void error_callback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) { - ERROR("FLAC decoder error callback was called: %d\n", status); + FLACNG_ERROR("FLAC decoder error callback was called: %d\n", status); } void metadata_callback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) { callback_info *info = (callback_info*) client_data; - gint i; - FLAC__StreamMetadata *metadata_copy; - FLAC__StreamMetadata_VorbisComment_Entry *entry; - gchar *key; - gchar *value; gsize size; - switch (metadata->type) + if (metadata->type == FLAC__METADATA_TYPE_STREAMINFO) { - case FLAC__METADATA_TYPE_STREAMINFO: - /* Basic stream information. Sample rate, channels and stuff */ - AUDDBG("FLAC__METADATA_TYPE_STREAMINFO found.\n"); - - info->stream.samples = metadata->data.stream_info.total_samples; - AUDDBG("total_samples=%lld\n", (long long) metadata->data.stream_info.total_samples); - - info->stream.bits_per_sample = metadata->data.stream_info.bits_per_sample; - AUDDBG("bits_per_sample=%d\n", metadata->data.stream_info.bits_per_sample); - - info->stream.channels = metadata->data.stream_info.channels; - AUDDBG("channels=%d\n", metadata->data.stream_info.channels); - - info->stream.samplerate = metadata->data.stream_info.sample_rate; - AUDDBG("sample_rate=%d\n", metadata->data.stream_info.sample_rate); - - size = vfs_fsize(info->fd); - - if (size == -1 || info->stream.samples == 0) - info->bitrate = 0; - else - info->bitrate = 8 * size * (gint64) info->stream.samplerate / info->stream.samples; - - AUDDBG("bitrate=%d\n", info->bitrate); - - info->metadata_changed = TRUE; - break; - - case FLAC__METADATA_TYPE_VORBIS_COMMENT: - /* - * We will possibly need to modify some of the entries - * in the metadata field, so we make a copy of it - * first. - * The original structure must not be modified. - */ - metadata_copy = FLAC__metadata_object_clone(metadata); - - /* A vorbis type comment field. */ - AUDDBG("FLAC__METADATA_TYPE_VORBIS_COMMENT found.\n"); - AUDDBG("Vorbis comment contains %d fields\n", metadata_copy->data.vorbis_comment.num_comments); - AUDDBG("Vendor string: %s\n", metadata_copy->data.vorbis_comment.vendor_string.entry); - - /* Enumerate the comment entries */ - entry = metadata_copy->data.vorbis_comment.comments; - - for (i = 0; i < metadata_copy->data.vorbis_comment.num_comments; i++, entry++) - { - /* - * Try and parse the comment. - * If FLAC__metadata_object_vorbiscomment_entry_to_name_value_pair() succeeds, - * it allocates memory for the key and value which we have to take - * care of. - */ - if (FLAC__metadata_object_vorbiscomment_entry_to_name_value_pair(*entry, &key, &value) == false) - AUDDBG("Could not parse comment\n"); - else - { - add_comment(info, key, value); - g_free(key); - g_free(value); - } - } + info->stream.samples = metadata->data.stream_info.total_samples; + AUDDBG("total_samples=%lld\n", (long long) metadata->data.stream_info.total_samples); - /* Free our metadata copy */ - FLAC__metadata_object_delete(metadata_copy); + info->stream.bits_per_sample = metadata->data.stream_info.bits_per_sample; + AUDDBG("bits_per_sample=%d\n", metadata->data.stream_info.bits_per_sample); - info->metadata_changed = TRUE; - break; + info->stream.channels = metadata->data.stream_info.channels; + AUDDBG("channels=%d\n", metadata->data.stream_info.channels); - default: - break; + info->stream.samplerate = metadata->data.stream_info.sample_rate; + AUDDBG("sample_rate=%d\n", metadata->data.stream_info.sample_rate); + + size = vfs_fsize(info->fd); + + if (size == -1 || info->stream.samples == 0) + info->bitrate = 0; + else + info->bitrate = 8 * size * (gint64) info->stream.samplerate / info->stream.samples; + + AUDDBG("bitrate=%d\n", info->bitrate); + + info->metadata_changed = TRUE; } - return; } diff -Nru audacious-plugins-2.4.4/src/flacng/seekable_stream_callbacks.h audacious-plugins-3.2/src/flacng/seekable_stream_callbacks.h --- audacious-plugins-2.4.4/src/flacng/seekable_stream_callbacks.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/flacng/seekable_stream_callbacks.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -/* - * A FLAC decoder plugin for the Audacious Media Player - * Copyright (C) 2005 Ralf Ertzinger - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#ifndef CALLBACKS_H -#define CALLBACKS_H - -#include "flac_compat.h" - -FLAC__StreamDecoderReadStatus read_callback(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data); -FLAC__StreamDecoderSeekStatus seek_callback(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data); -FLAC__StreamDecoderTellStatus tell_callback(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data); -FLAC__bool eof_callback(const FLAC__StreamDecoder *decoder, void *client_data); -FLAC__StreamDecoderLengthStatus length_callback(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data); -FLAC__StreamDecoderWriteStatus write_callback(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data); -void error_callback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data); -void metadata_callback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data); - -#endif diff -Nru audacious-plugins-2.4.4/src/flacng/tools.c audacious-plugins-3.2/src/flacng/tools.c --- audacious-plugins-2.4.4/src/flacng/tools.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/flacng/tools.c 2012-01-20 19:48:30.000000000 +0000 @@ -24,7 +24,7 @@ #include -#include "tools.h" +#include "flacng.h" callback_info *init_callback_info(void) { @@ -32,20 +32,18 @@ if ((info = g_slice_new0(callback_info)) == NULL) { - ERROR("Could not allocate memory for callback structure!"); + FLACNG_ERROR("Could not allocate memory for callback structure!"); return NULL; } if ((info->output_buffer = g_malloc0(BUFFER_SIZE_BYTE)) == NULL) { - ERROR("Could not allocate memory for output buffer!"); + FLACNG_ERROR("Could not allocate memory for output buffer!"); return NULL; } reset_info(info); - info->mutex = g_mutex_new(); - AUDDBG("Playback buffer allocated for %d samples, %d bytes\n", BUFFER_SIZE_SAMP, BUFFER_SIZE_BYTE); return info; @@ -53,7 +51,6 @@ void clean_callback_info(callback_info *info) { - g_mutex_free(info->mutex); g_free(info->output_buffer); g_slice_free(callback_info, info); } @@ -68,21 +65,6 @@ memset(&(info->stream), 0, sizeof(info->stream)); memset(&(info->frame), 0, sizeof(info->frame)); - g_free(info->comment.artist); - g_free(info->comment.album); - g_free(info->comment.title); - g_free(info->comment.tracknumber); - g_free(info->comment.genre); - g_free(info->comment.comment); - g_free(info->comment.date); - memset(&(info->comment), 0, sizeof(info->comment)); - - g_free(info->replaygain.track_gain); - g_free(info->replaygain.track_peak); - g_free(info->replaygain.album_gain); - g_free(info->replaygain.album_peak); - memset(&(info->replaygain), 0, sizeof(info->replaygain)); - info->metadata_changed = FALSE; } @@ -95,7 +77,7 @@ /* Reset the decoder */ if (FLAC__stream_decoder_reset(decoder) == false) { - ERROR("Could not reset the decoder!\n"); + FLACNG_ERROR("Could not reset the decoder!\n"); return FALSE; } @@ -111,211 +93,3 @@ return TRUE; } - -static void parse_gain_text(const gchar *text, gint *value, gint *unit) -{ - gint sign = 1; - - *value = 0; - *unit = 1; - - if (*text == '-') - { - sign = -1; - text++; - } - - while (*text >= '0' && *text <= '9') - { - *value = *value * 10 + (*text - '0'); - text++; - } - - if (*text == '.') - { - text++; - - while (*text >= '0' && *text <= '9' && *value < G_MAXINT / 10) - { - *value = *value * 10 + (*text - '0'); - *unit = *unit * 10; - text++; - } - } - - *value = *value * sign; -} - -static void set_gain_info(Tuple *tuple, gint field, gint unit_field, const gchar *text) -{ - gint value, unit; - - parse_gain_text(text, &value, &unit); - - if (tuple_get_value_type(tuple, unit_field, NULL) == TUPLE_INT) - value = value * (gint64) tuple_get_int(tuple, unit_field, NULL) / unit; - else - tuple_associate_int(tuple, unit_field, NULL, unit); - - tuple_associate_int(tuple, field, NULL, value); -} - -Tuple* get_tuple_from_file(const gchar *filename, callback_info *info) -{ - Tuple *tuple; - - tuple = tuple_new_from_filename(filename); - - tuple_associate_string(tuple, FIELD_CODEC, NULL, "Free Lossless Audio Codec (FLAC)"); - tuple_associate_string(tuple, FIELD_QUALITY, NULL, "lossless"); - - tuple_associate_string(tuple, FIELD_ARTIST, NULL, info->comment.artist); - tuple_associate_string(tuple, FIELD_TITLE, NULL, info->comment.title); - tuple_associate_string(tuple, FIELD_ALBUM, NULL, info->comment.album); - tuple_associate_string(tuple, FIELD_GENRE, NULL, info->comment.genre); - tuple_associate_string(tuple, FIELD_COMMENT, NULL, info->comment.comment); - - if (info->comment.tracknumber != NULL) - tuple_associate_int(tuple, FIELD_TRACK_NUMBER, NULL, atoi(info->comment.tracknumber)); - - if (info->comment.date != NULL) - tuple_associate_int(tuple, FIELD_YEAR, NULL, atoi(info->comment.date)); - - /* Calculate the stream length (milliseconds) */ - if (info->stream.samplerate == 0) - { - ERROR("Invalid sample rate for stream!\n"); - tuple_associate_int(tuple, FIELD_LENGTH, NULL, -1); - } - else - { - tuple_associate_int(tuple, FIELD_LENGTH, NULL, (info->stream.samples / info->stream.samplerate) * 1000); - AUDDBG("Stream length: %d seconds\n", tuple_get_int(tuple, FIELD_LENGTH, NULL)); - } - - if (info->bitrate > 0) - tuple_associate_int(tuple, FIELD_BITRATE, NULL, (info->bitrate + 500) / 1000); - - - if (info->replaygain.has_rg) - { - if (info->replaygain.album_gain != NULL) - set_gain_info(tuple, FIELD_GAIN_ALBUM_GAIN, FIELD_GAIN_GAIN_UNIT, - info->replaygain.album_gain); - - if (info->replaygain.album_peak != NULL) - set_gain_info(tuple, FIELD_GAIN_ALBUM_PEAK, FIELD_GAIN_PEAK_UNIT, - info->replaygain.album_peak); - - if (info->replaygain.track_gain != NULL) - set_gain_info(tuple, FIELD_GAIN_TRACK_GAIN, FIELD_GAIN_GAIN_UNIT, - info->replaygain.track_gain); - - if (info->replaygain.track_peak != NULL) - set_gain_info(tuple, FIELD_GAIN_TRACK_PEAK, FIELD_GAIN_PEAK_UNIT, - info->replaygain.track_peak); - } - - return tuple; -} - -void add_comment(callback_info *info, gchar *key, gchar *value) -{ - gchar **destination = NULL; - gboolean rg = FALSE; - - if (strcasecmp(key, "ARTIST") == 0) - { - AUDDBG("Found key ARTIST <%s>\n", value); - destination = &(info->comment.artist); - } - - if (strcasecmp(key, "ALBUM") == 0) - { - AUDDBG("Found key ALBUM <%s>\n", value); - destination = &(info->comment.album); - } - - if (strcasecmp(key, "TITLE") == 0) - { - AUDDBG("Found key TITLE <%s>\n", value); - destination = &(info->comment.title); - } - - if (strcasecmp(key, "TRACKNUMBER") == 0) - { - AUDDBG("Found key TRACKNUMBER <%s>\n", value); - destination = &(info->comment.tracknumber); - } - - if (strcasecmp(key, "COMMENT") == 0) - { - AUDDBG("Found key COMMENT <%s>\n", value); - destination = &(info->comment.comment); - } - - if (strcasecmp(key, "DATE") == 0) - { - AUDDBG("Found key DATE <%s>\n", value); - destination = &(info->comment.date); - } - - if (strcasecmp(key, "GENRE") == 0) - { - AUDDBG("Found key GENRE <%s>\n", value); - destination = &(info->comment.genre); - } - -#if 0 - if (strcasecmp(key, "REPLAYGAIN_REFERENCE_LOUDNESS") == 0) - { - AUDDBG("Found key REPLAYGAIN_REFERENCE_LOUDNESS <%s>\n", value); - destination = &(info->replaygain.ref_loud); - rg = TRUE; - } -#endif - - if (strcasecmp(key, "REPLAYGAIN_TRACK_GAIN") == 0) - { - AUDDBG("Found key REPLAYGAIN_TRACK_GAIN <%s>\n", value); - destination = &(info->replaygain.track_gain); - rg = TRUE; - } - - if (strcasecmp(key, "REPLAYGAIN_TRACK_PEAK") == 0) - { - AUDDBG("Found key REPLAYGAIN_TRACK_PEAK <%s>\n", value); - destination = &(info->replaygain.track_peak); - rg = TRUE; - } - - if (strcasecmp(key, "REPLAYGAIN_ALBUM_GAIN") == 0) - { - AUDDBG("Found key REPLAYGAIN_ALBUM_GAIN <%s>\n", value); - destination = &(info->replaygain.album_gain); - rg = TRUE; - } - - if (strcasecmp(key, "REPLAYGAIN_ALBUM_PEAK") == 0) - { - AUDDBG("Found key REPLAYGAIN_ALBUM_PEAK <%s>\n", value); - destination = &(info->replaygain.album_peak); - rg = TRUE; - } - - if (destination != NULL) - { - g_free(*destination); - - if ((*destination = g_strdup(value)) == NULL) - { - ERROR("Could not allocate memory for comment!\n"); - return; - } - } - - if (rg) - info->replaygain.has_rg = TRUE; - - return; -} diff -Nru audacious-plugins-2.4.4/src/flacng/tools.h audacious-plugins-3.2/src/flacng/tools.h --- audacious-plugins-2.4.4/src/flacng/tools.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/flacng/tools.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -/* - * A FLAC decoder plugin for the Audacious Media Player - * Copyright (C) 2005 Ralf Ertzinger - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#ifndef _TOOLS_H -#define _TOOLS_H - -#include -#include -#include "flacng.h" -#include "flac_compat.h" - -callback_info* init_callback_info(void); -void clean_callback_info(callback_info* info); -void reset_info(callback_info* info); -Tuple *get_tuple_from_file(const gchar *filename, callback_info *info); -void add_comment(callback_info* info, gchar* key, gchar* value); -gboolean read_metadata(FLAC__StreamDecoder* decoder, callback_info* info); - -#endif diff -Nru audacious-plugins-2.4.4/src/flacng/version.h audacious-plugins-3.2/src/flacng/version.h --- audacious-plugins-2.4.4/src/flacng/version.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/flacng/version.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -#ifndef VERSION_H -#define VERSION_H - -#define _VERSION "0.012 (Magnesium)" - -#endif diff -Nru audacious-plugins-2.4.4/src/gio/gio.c audacious-plugins-3.2/src/gio/gio.c --- audacious-plugins-2.4.4/src/gio/gio.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gio/gio.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,6 @@ /* Audacious * Copyright (c) 2009 William Pitcock + * Copyright (c) 2011 MichaÅ‚ Lipski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,20 +36,42 @@ GSList *stream_stack; } VFSGIOHandle; -static GVfs *gvfs = NULL; - -VFSFile * +void * gio_vfs_fopen_impl(const gchar *path, const gchar *mode) { - VFSFile *file; VFSGIOHandle *handle; GError *error = NULL; + gchar *scheme; + static const gchar *const *schemes = NULL; + gboolean supported = FALSE; + guint num; if (path == NULL || mode == NULL) - return NULL; + return NULL; + + if (schemes == NULL) + schemes = g_vfs_get_supported_uri_schemes(g_vfs_get_default()); + + num = g_strv_length((gchar **) schemes); + + if (num == 0) + return NULL; handle = g_slice_new0(VFSGIOHandle); - handle->file = g_vfs_get_file_for_uri(gvfs, path); + handle->file = g_file_new_for_uri(path); + scheme = g_file_get_uri_scheme(handle->file); + + for (gint i = 0; schemes[i]; i++) + if (strcmp(schemes[i], scheme) == 0) + { + supported = TRUE; + break; + } + + g_free(scheme); + + if (!supported) + goto CLEANUP; if (*mode == 'r') { @@ -63,48 +86,38 @@ else { g_warning("UNSUPPORTED ACCESS MODE: %s", mode); - g_object_unref(handle->file); - g_slice_free(VFSGIOHandle, handle); - return NULL; + goto CLEANUP; } if (handle->istream == NULL && handle->ostream == NULL) { g_warning("Could not open %s for reading or writing: %s", path, error->message); - g_object_unref(handle->file); - g_slice_free(VFSGIOHandle, handle); g_error_free(error); - return NULL; + goto CLEANUP; } - file = g_new(VFSFile, 1); - file->handle = handle; + return handle; - return file; +CLEANUP: + g_object_unref(handle->file); + g_slice_free(VFSGIOHandle, handle); + return NULL; } gint gio_vfs_fclose_impl(VFSFile * file) { gint ret = 0; + VFSGIOHandle *handle = vfs_get_handle(file); - g_return_val_if_fail(file != NULL, -1); - - if (file->handle) - { - VFSGIOHandle *handle = (VFSGIOHandle *) file->handle; - - if (handle->istream) - g_object_unref(handle->istream); + if (handle->istream) + g_object_unref(handle->istream); - if (handle->ostream) - g_object_unref(handle->ostream); + if (handle->ostream) + g_object_unref(handle->ostream); - g_object_unref(handle->file); - g_slice_free(VFSGIOHandle, handle); - - file->handle = NULL; - } + g_object_unref(handle->file); + g_slice_free(VFSGIOHandle, handle); return ret; } @@ -112,16 +125,11 @@ gint64 gio_vfs_fread_impl (void * ptr, gint64 size, gint64 nmemb, VFSFile * file) { - VFSGIOHandle *handle; + VFSGIOHandle *handle = vfs_get_handle(file); goffset count = 0; gsize realsize = (size * nmemb); gsize ret, bytes_read; - g_return_val_if_fail(file != NULL, EOF); - g_return_val_if_fail(file->handle != NULL, EOF); - - handle = (VFSGIOHandle *) file->handle; - /* handle ungetc() *grumble* --nenolod */ if (handle->stream_stack != NULL) { @@ -153,14 +161,9 @@ gint64 gio_vfs_fwrite_impl (const void * ptr, gint64 size, gint64 nmemb, VFSFile * file) { - VFSGIOHandle *handle; + VFSGIOHandle *handle = vfs_get_handle(file); gsize ret; - g_return_val_if_fail(file != NULL, EOF); - g_return_val_if_fail(file->handle != NULL, EOF); - - handle = (VFSGIOHandle *) file->handle; - ret = g_output_stream_write(G_OUTPUT_STREAM(handle->ostream), ptr, size * nmemb, NULL, NULL); return (size > 0) ? ret / size : 0; } @@ -169,12 +172,7 @@ gio_vfs_getc_impl(VFSFile *file) { guchar buf; - VFSGIOHandle *handle; - - g_return_val_if_fail(file != NULL, EOF); - g_return_val_if_fail(file->handle != NULL, EOF); - - handle = (VFSGIOHandle *) file->handle; + VFSGIOHandle *handle = vfs_get_handle(file); if (handle->stream_stack != NULL) { @@ -191,12 +189,8 @@ gint gio_vfs_ungetc_impl(gint c, VFSFile * file) { - VFSGIOHandle *handle; - - g_return_val_if_fail(file != NULL, EOF); - g_return_val_if_fail(file->handle != NULL, EOF); + VFSGIOHandle *handle = vfs_get_handle(file); - handle = (VFSGIOHandle *) file->handle; handle->stream_stack = g_slist_prepend(handle->stream_stack, GINT_TO_POINTER(c)); if (handle->stream_stack != NULL) return c; @@ -209,14 +203,9 @@ gint64 offset, gint whence) { - VFSGIOHandle *handle; + VFSGIOHandle *handle = vfs_get_handle(file); GSeekType seektype; - g_return_val_if_fail(file != NULL, -1); - g_return_val_if_fail(file->handle != NULL, -1); - - handle = (VFSGIOHandle *) file->handle; - if (!g_seekable_can_seek(handle->seekable)) return -1; @@ -245,20 +234,13 @@ void gio_vfs_rewind_impl(VFSFile * file) { - g_return_if_fail(file != NULL); - - file->base->vfs_fseek_impl(file, 0, SEEK_SET); + gio_vfs_fseek_impl(file, 0, SEEK_SET); } gint64 gio_vfs_ftell_impl(VFSFile * file) { - VFSGIOHandle *handle; - - g_return_val_if_fail(file != NULL, -1); - g_return_val_if_fail(file->handle != NULL, -1); - - handle = (VFSGIOHandle *) file->handle; + VFSGIOHandle *handle = vfs_get_handle(file); return (glong) (g_seekable_tell(handle->seekable) - g_slist_length(handle->stream_stack)); } @@ -276,27 +258,18 @@ gint gio_vfs_ftruncate_impl (VFSFile * file, gint64 size) { - VFSGIOHandle *handle; - - g_return_val_if_fail(file != NULL, -1); - - handle = (VFSGIOHandle *) file->handle; - + VFSGIOHandle *handle = vfs_get_handle(file); return g_seekable_truncate (handle->seekable, size, NULL, NULL) ? 0 : -1; } -off_t +gint64 gio_vfs_fsize_impl(VFSFile * file) { GFileInfo *info; - VFSGIOHandle *handle; + VFSGIOHandle *handle = vfs_get_handle(file); GError *error = NULL; - goffset size; + gint64 size; - g_return_val_if_fail(file != NULL, -1); - g_return_val_if_fail(file->handle != NULL, -1); - - handle = (VFSGIOHandle *) file->handle; info = g_file_query_info(handle->file, G_FILE_ATTRIBUTE_STANDARD_SIZE, G_FILE_QUERY_INFO_NONE, NULL, &error); if (info == NULL) @@ -312,43 +285,26 @@ return size; } -static void init(void) -{ - gint i; - const gchar * const *schemes; - - gvfs = g_vfs_get_default(); - schemes = g_vfs_get_supported_uri_schemes(gvfs); - - for (i = 0; schemes[i] != NULL; i++) { - VFSConstructor *c; - if (!g_ascii_strcasecmp(schemes[i], "http") || !g_ascii_strcasecmp(schemes[i], "file") || !g_ascii_strcasecmp(schemes[i], "cdda")) - continue; - - c = g_slice_new0(VFSConstructor); - c->uri_id = g_strdup_printf("%s://", schemes[i]); - c->vfs_fopen_impl = gio_vfs_fopen_impl; - c->vfs_fclose_impl = gio_vfs_fclose_impl; - c->vfs_fread_impl = gio_vfs_fread_impl; - c->vfs_fwrite_impl = gio_vfs_fwrite_impl; - c->vfs_getc_impl = gio_vfs_getc_impl; - c->vfs_ungetc_impl = gio_vfs_ungetc_impl; - c->vfs_fseek_impl = gio_vfs_fseek_impl; - c->vfs_rewind_impl = gio_vfs_rewind_impl; - c->vfs_ftell_impl = gio_vfs_ftell_impl; - c->vfs_feof_impl = gio_vfs_feof_impl; - c->vfs_ftruncate_impl = gio_vfs_ftruncate_impl; - c->vfs_fsize_impl = gio_vfs_fsize_impl; - vfs_register_transport(c); - } -} - -static void cleanup(void) -{ - g_object_unref(gvfs); -#if 0 - vfs_unregister_transport(&file_const); -#endif -} +static const gchar * const gio_schemes[] = {"ftp", "sftp", "smb", NULL}; -DECLARE_PLUGIN(gio, init, cleanup, NULL, NULL, NULL, NULL, NULL, NULL); +static VFSConstructor constructor = { + .vfs_fopen_impl = gio_vfs_fopen_impl, + .vfs_fclose_impl = gio_vfs_fclose_impl, + .vfs_fread_impl = gio_vfs_fread_impl, + .vfs_fwrite_impl = gio_vfs_fwrite_impl, + .vfs_getc_impl = gio_vfs_getc_impl, + .vfs_ungetc_impl = gio_vfs_ungetc_impl, + .vfs_fseek_impl = gio_vfs_fseek_impl, + .vfs_rewind_impl = gio_vfs_rewind_impl, + .vfs_ftell_impl = gio_vfs_ftell_impl, + .vfs_feof_impl = gio_vfs_feof_impl, + .vfs_ftruncate_impl = gio_vfs_ftruncate_impl, + .vfs_fsize_impl = gio_vfs_fsize_impl +}; + +AUD_TRANSPORT_PLUGIN +( + .name = "GIO Support", + .schemes = gio_schemes, + .vtable = & constructor +) diff -Nru audacious-plugins-2.4.4/src/gio/Makefile audacious-plugins-3.2/src/gio/Makefile --- audacious-plugins-2.4.4/src/gio/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gio/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -8,5 +8,5 @@ plugindir := ${plugindir}/${TRANSPORT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${ARCH_DEFINES} -I../.. +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${GIO_LIBS} diff -Nru audacious-plugins-2.4.4/src/gnomeshortcuts/gnomeshortcuts.c audacious-plugins-3.2/src/gnomeshortcuts/gnomeshortcuts.c --- audacious-plugins-2.4.4/src/gnomeshortcuts/gnomeshortcuts.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gnomeshortcuts/gnomeshortcuts.c 2012-01-20 19:48:30.000000000 +0000 @@ -34,7 +34,7 @@ #include #include -static void init (void); +static gboolean init (void); static void about (void); static void cleanup (void); void gnome_remote_init(); @@ -43,16 +43,13 @@ static gboolean loaded = FALSE; static DBusGProxy *media_player_keys_proxy = NULL; -static GeneralPlugin audaciousgnomeshortcuts = -{ - .description = "Gnome Shortcuts", +AUD_GENERAL_PLUGIN +( + .name = "Gnome Shortcuts", .init = init, .about = about, .cleanup = cleanup -}; - -GeneralPlugin *gnomeshortcuts_gplist[] = { &audaciousgnomeshortcuts, NULL }; -SIMPLE_GENERAL_PLUGIN(gnomeshortcuts, gnomeshortcuts_gplist); +) #define g_marshal_value_peek_string(v) (char*) g_value_get_string (v) @@ -91,7 +88,7 @@ on_media_player_key_pressed (DBusGProxy *proxy, const gchar *application, const gchar *key) { if (strcmp ("Audacious", application) == 0) { - gint current_volume, old_volume; + gint current_volume /* , old_volume */ ; static gint volume_static = 0; gboolean play, mute; @@ -100,7 +97,7 @@ /* get current volume */ aud_drct_get_volume_main (¤t_volume); - old_volume = current_volume; + /* old_volume = current_volume; */ if (current_volume) { /* volume is not mute */ @@ -309,10 +306,11 @@ "Copyright (C) 2007-2008 Sascha Hlusiak \n\n")); } -static void init (void) +static gboolean init (void) { gnome_remote_init(); loaded = TRUE; + return TRUE; } static void cleanup (void) diff -Nru audacious-plugins-2.4.4/src/gnomeshortcuts/Makefile audacious-plugins-3.2/src/gnomeshortcuts/Makefile --- audacious-plugins-2.4.4/src/gnomeshortcuts/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gnomeshortcuts/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -8,5 +8,5 @@ plugindir := ${plugindir}/${GENERAL_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${MOWGLI_CFLAGS} ${GLIB_CFLAGS} ${DBUS_CFLAGS} -I../.. -I.. +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${DBUS_CFLAGS} -I../.. -I.. LIBS += ${GLIB_LIBS} ${DBUS_LIBS} ${GTK_LIBS} diff -Nru audacious-plugins-2.4.4/src/gntui/fileselector.c audacious-plugins-3.2/src/gntui/fileselector.c --- audacious-plugins-2.4.4/src/gntui/fileselector.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gntui/fileselector.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,109 +0,0 @@ -/* Audacious GNT interface - * Copyright (C) 2009 Tomasz MoÅ„ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include -#include -#include -#include "fileselector.h" - -static GntWidget * window = NULL; - -static void -file_add_cb(GntWidget *widget, GntFileSel **selector) -{ - gchar *file = gnt_file_sel_get_selected_file(*selector); - gchar *uri = g_filename_to_uri((const gchar *) file, NULL, NULL); - gchar *path = g_path_get_dirname(file); - gint playlist = aud_playlist_get_active(); - - g_free(file); - - g_free(aud_cfg->filesel_path); - aud_cfg->filesel_path = path; - - if (uri == NULL) - return; - - aud_drct_pl_add_url_string (uri); - - gnt_widget_destroy(GNT_WIDGET(*selector)); - *selector = NULL; -} - -static void -file_open_cb(GntWidget *widget, GntFileSel **selector) -{ - gint playlist = aud_playlist_get_active(); - - aud_playlist_entry_delete(playlist, 0, aud_playlist_entry_count(playlist)); - aud_playlist_set_playing(playlist); - - file_add_cb(widget, selector); -} - -static void -cancel_cb(GntWidget *widget, GntFileSel **selector) -{ - gnt_widget_destroy(GNT_WIDGET(*selector)); - *selector = NULL; -} - -void -run_fileselector(gboolean play_button) -{ - if (window != NULL) { - gnt_window_present(window); - return; - } - - window = gnt_file_sel_new(); - gnt_box_set_title(GNT_BOX(window), - play_button ? _("Open Files") : _("Add Files")); - - if (aud_cfg->filesel_path) - gnt_file_sel_set_current_location(GNT_FILE_SEL(window), - aud_cfg->filesel_path); - - gnt_file_sel_set_must_exist(GNT_FILE_SEL(window), TRUE); - - g_signal_connect(G_OBJECT(GNT_FILE_SEL(window)->select), "activate", - G_CALLBACK(play_button ? file_open_cb : file_add_cb), - &window); - g_signal_connect(G_OBJECT(GNT_FILE_SEL(window)->cancel), "activate", - G_CALLBACK(cancel_cb), &window); - - gnt_widget_show(window); -} - -void -open_files() -{ - run_fileselector(TRUE); -} - -void -add_files() -{ - run_fileselector(FALSE); -} - -void -hide_fileselector() -{ - gnt_widget_destroy(window); - window = NULL; -} diff -Nru audacious-plugins-2.4.4/src/gntui/fileselector.h audacious-plugins-3.2/src/gntui/fileselector.h --- audacious-plugins-2.4.4/src/gntui/fileselector.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gntui/fileselector.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -/* Audacious GNT interface - * Copyright (C) 2009 Tomasz MoÅ„ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef GNTUI_FILESELECTOR_H -#define GNTUI_FILESELECTOR_H - -#include - -void run_fileselector(gboolean play_button); -void open_files(); -void add_files(); -void hide_fileselector(); - -#endif /* GNTUI_FILESELECTOR_H */ diff -Nru audacious-plugins-2.4.4/src/gntui/gntui.c audacious-plugins-3.2/src/gntui/gntui.c --- audacious-plugins-2.4.4/src/gntui/gntui.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gntui/gntui.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,317 +0,0 @@ -/* Audacious GNT interface - * Copyright (C) 2009 Tomasz MoÅ„ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include "fileselector.h" - -static GntWidget *window = NULL; -static GntWidget *playback_hbox = NULL; -static GntWidget *status_widget = NULL; -static GntWidget *time_widget = NULL; -static GntWidget *title_widget = NULL; -static GntWidget *playlist_widget = NULL; - -static gint update_song_timeout_source = 0; - -static gchar *playing_status() -{ - if (aud_drct_get_playing()) - { - if (!aud_drct_get_paused()) - { - return ("|>"); - } - else - { - return ("||"); - } - } - else - { - return ("[]"); - } -} - -static void fill_playlist() -{ - gint playlist = aud_playlist_get_active(); - gint pos = aud_playlist_get_position(playlist); - gint i, count; - - count = aud_playlist_entry_count(playlist); - - gnt_tree_remove_all(GNT_TREE(playlist_widget)); - - g_object_set_data(G_OBJECT(playlist_widget), "playlist", GINT_TO_POINTER(playlist)); - for (i = 0; i < count; i++) { - GntTreeRow * row; - gint length = aud_playlist_entry_get_length(playlist, i) / 1000; - gchar * len = g_strdup_printf("%02i:%02i", length / 60, length % 60); - - row = gnt_tree_create_row(GNT_TREE(playlist_widget), - aud_playlist_entry_get_title(playlist, i), - len, NULL); - gnt_tree_add_row_after(GNT_TREE(playlist_widget), - GINT_TO_POINTER(i+1), - row, - NULL, - GINT_TO_POINTER(i)); - - g_free(len); - } - - gnt_tree_set_selected(GNT_TREE(playlist_widget), GINT_TO_POINTER(pos+1)); -} - -static gboolean update_song_time(gpointer data) -{ - gint time = aud_drct_get_output_time() / 1000; - gchar *text; - - text = g_strdup_printf("[%02i:%02i]", time / 60, time % 60); - gnt_label_set_text(GNT_LABEL(time_widget), text); - g_free(text); - - return TRUE; -} - -static void update_playback_status() -{ - const gchar *text = playing_status(); - - gnt_label_set_text(GNT_LABEL(status_widget), text); -} - -static void update_playback_title() -{ - gint playlist = aud_playlist_get_active(); - gint pos = aud_playlist_get_position(playlist); - const gchar *title = aud_playlist_entry_get_title(playlist, pos); - - if (title == NULL) - title = ""; - - gnt_label_set_text(GNT_LABEL(title_widget), title); -} - -static void set_song_info(gpointer hook_data, gpointer user_data) -{ - update_song_time(NULL); - update_playback_title(); -} - -static gboolean mainwin_keypress_cb(GntWidget *widget, const char *text, gpointer data) -{ - g_return_val_if_fail(text != NULL, FALSE); - - switch (text[0]) { - case 'z': - aud_drct_pl_prev(); - update_playback_title(); - break; - case 'x': - aud_drct_play(); - break; - case 'c': - aud_drct_pause(); - break; - case 'v': - aud_drct_stop(); - break; - case 'b': - aud_drct_pl_next(); - update_playback_title(); - break; - default: - return FALSE; - } - return TRUE; -} - -static gboolean playlist_keypress_cb(GntTree *widget, const gchar * text, gpointer data) -{ - if (text != NULL && text[0] == ' ' && text[1] == 0) { - gint playlist = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "playlist")); - gint pos = GPOINTER_TO_INT(gnt_tree_get_selection_data(widget)) - 1; - - aud_playlist_set_position(playlist, pos); - - if (!aud_drct_get_playing()) - aud_drct_play(); - - return TRUE; - } - return FALSE; -} - -static void gntui_mainwin_show() -{ - if (window) { - gnt_window_present(window); - return; - } - - window = gnt_window_box_new(FALSE, TRUE); - gnt_box_set_title(GNT_BOX(window), "Audacious2"); - gnt_box_set_fill(GNT_BOX(window), TRUE); - gnt_box_set_alignment(GNT_BOX(window), GNT_ALIGN_TOP); - - playback_hbox = gnt_hbox_new(FALSE); - gnt_box_add_widget(GNT_BOX(window), playback_hbox); - - status_widget = gnt_label_new("[]"); - gnt_box_add_widget(GNT_BOX(playback_hbox), status_widget); - GNT_WIDGET_UNSET_FLAGS(status_widget, GNT_WIDGET_GROW_X); - - time_widget = gnt_label_new("[00:00]"); - gnt_box_add_widget(GNT_BOX(playback_hbox), time_widget); - GNT_WIDGET_UNSET_FLAGS(time_widget, GNT_WIDGET_GROW_X); - - title_widget = gnt_label_new(""); - gnt_box_add_widget(GNT_BOX(playback_hbox), title_widget); - - playlist_widget = gnt_tree_new(); - g_object_set(G_OBJECT(playlist_widget), "columns", 2, NULL); - gnt_tree_set_search_column(GNT_TREE(playlist_widget), 0); - //TODO: gnt_tree_set_search_function - gnt_tree_set_show_title(GNT_TREE(playlist_widget), FALSE); - fill_playlist(); - gnt_tree_adjust_columns(GNT_TREE(playlist_widget)); - gnt_box_add_widget(GNT_BOX(window), playlist_widget); - - g_signal_connect(G_OBJECT(playlist_widget), "key_pressed", - G_CALLBACK(playlist_keypress_cb), NULL); - g_signal_connect(G_OBJECT(window), "key_pressed", - G_CALLBACK(mainwin_keypress_cb), NULL); - - set_song_info(NULL, NULL); - - gnt_widget_show(window); - gnt_window_present(window); -} - -static void ui_playback_begin(gpointer hook_data, gpointer user_data) -{ - update_playback_status(); - set_song_info(NULL, NULL); - - /* update song info 4 times a second */ - update_song_timeout_source = g_timeout_add(250, update_song_time, NULL); -} - -static void ui_playback_stop(gpointer hook_data, gpointer user_data) -{ - if (update_song_timeout_source) - { - g_source_remove(update_song_timeout_source); - update_song_timeout_source = 0; - } - - update_playback_status(); - set_song_info(NULL, NULL); -} - -static void ui_playback_end(gpointer hook_data, gpointer user_data) -{ - set_song_info(NULL, NULL); -} - -static void ui_playlist_update(gpointer hook_data, gpointer user_data) -{ - gnt_tree_remove_all(GNT_TREE(playlist_widget)); - fill_playlist(); -} - -static void show_error_message(const gchar * markup) -{ - GntWidget *win; - GntWidget *button; - - /* TODO: strip markup */ - win = gnt_vwindow_new(FALSE); - gnt_box_add_widget(GNT_BOX(win), gnt_label_new(markup)); - gnt_box_set_title(GNT_BOX(win), "Error"); - gnt_box_set_alignment(GNT_BOX(win), GNT_ALIGN_MID); - - button = gnt_button_new("Close"); - g_signal_connect_swapped(G_OBJECT(button), "activate", - G_CALLBACK(gnt_widget_destroy), win); - gnt_box_add_widget(GNT_BOX(win), button); - - gnt_widget_show(win); - gnt_window_present(win); -} - -static gboolean ui_initialize(InterfaceCbs * cbs) -{ - gnt_init(); - - gntui_mainwin_show(); - - gnt_register_action(_("Audacious2"), gntui_mainwin_show); - gnt_register_action(_("Add Files"), add_files); - gnt_register_action(_("Open Files"), open_files); - - hook_associate("title change", set_song_info, NULL); - hook_associate("playback begin", ui_playback_begin, NULL); - hook_associate("playback stop", ui_playback_stop, NULL); - hook_associate("playback end", ui_playback_end, NULL); - hook_associate("playlist update", ui_playlist_update, NULL); - - cbs->run_filebrowser = run_fileselector; - cbs->hide_filebrowser = hide_fileselector; - cbs->show_error = show_error_message; - - gnt_main(); - - return TRUE; -} - - -static gboolean ui_finalize(void) -{ - hook_dissociate("title change", set_song_info); - hook_dissociate("playback begin", ui_playback_begin); - hook_dissociate("playback stop", ui_playback_stop); - hook_dissociate("playback end", ui_playback_end); - hook_dissociate("playlist update", ui_playlist_update); - - if (update_song_timeout_source) - { - g_source_remove(update_song_timeout_source); - update_song_timeout_source = 0; - } - - gnt_quit(); - - return TRUE; -} - -Interface gntui_interface = { - .id = "gntui", - .desc = N_("gnt interface"), - .init = ui_initialize, - .fini = ui_finalize, -}; - -SIMPLE_INTERFACE_PLUGIN("gntui", &gntui_interface); diff -Nru audacious-plugins-2.4.4/src/gntui/Makefile audacious-plugins-3.2/src/gntui/Makefile --- audacious-plugins-2.4.4/src/gntui/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gntui/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -PLUGIN = gntui${PLUGIN_SUFFIX} - -SRCS = gntui.c \ - fileselector.c - -include ../../buildsys.mk -include ../../extra.mk - -plugindir := ${plugindir}/${GENERAL_PLUGIN_DIR} - -GNT_CFLAGS = `pkg-config --cflags gnt` -GNT_LIBS = `pkg-config --libs gnt` - -CFLAGS += ${PLUGIN_CFLAGS} ${BEEP_DEFINES} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GLIB_CFLAGS} ${GNT_CFLAGS} -I../.. -LIBS += ${GLIB_LIBS} ${MOWGLI_LIBS} ${GNT_LIBS} diff -Nru audacious-plugins-2.4.4/src/gntui/README audacious-plugins-3.2/src/gntui/README --- audacious-plugins-2.4.4/src/gntui/README 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gntui/README 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -General: -Alt+a shows Actions window (later there'll be prefs win, plugins menu, etc.) -Alt+r begins window resize (arrows to set size, escape to finish) -Alt+m begins window move (arrows to move, escape to finish) -Alt+w brings window list -Alt+q Quits - -Playlist: -Spacebar starts playback of selected item -Up/Down arrows move selection - -Main window: -z Previous -x Play -c Pause -v Stop -b Next diff -Nru audacious-plugins-2.4.4/src/gtkui/actions.c audacious-plugins-3.2/src/gtkui/actions.c --- audacious-plugins-2.4.4/src/gtkui/actions.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/actions.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,774 +0,0 @@ -/* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2010 Audacious development team. - * - * BMP - Cross-platform multimedia player - * Copyright (C) 2003-2004 BMP development team. - * - * Based on XMMS: - * Copyright (C) 1998-2003 XMMS development team. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -/* GDK including */ -#include - -#if defined(USE_REGEX_ONIGURUMA) -#include -#elif defined(USE_REGEX_PCRE) -#include -#else -#include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "ui_gtk.h" -#include "util.h" -#include "playlist_util.h" -#include "gtkui_cfg.h" -#include "ui_infoarea.h" -#include "ui_statusbar.h" - -static GtkWidget *mainwin_jtt = NULL; - -static int ab_position_a = -1; -static int ab_position_b = -1; - -/* toggleactionentries actions */ - -void action_playback_noplaylistadvance(GtkToggleAction * action) -{ - aud_cfg->no_playlist_advance = gtk_toggle_action_get_active(action); -} - -void action_playback_repeat(GtkToggleAction * action) -{ - aud_cfg->repeat = gtk_toggle_action_get_active(action); -} - -void action_playback_shuffle(GtkToggleAction * action) -{ - aud_cfg->shuffle = gtk_toggle_action_get_active(action); -} - -void action_stop_after_current_song (GtkToggleAction * action) -{ - gboolean active = gtk_toggle_action_get_active (action); - - if (active != aud_cfg->stopaftersong) - { - aud_cfg->stopaftersong = active; - hook_call ("toggle stop after song", NULL); - } -} - -void action_view_playlist(GtkToggleAction *action) -{ - config.playlist_visible = gtk_toggle_action_get_active (action); - setup_panes (); -} - -void action_view_infoarea(GtkToggleAction *action) -{ - config.infoarea_visible = gtk_toggle_action_get_active (action); - - if (config.infoarea_visible && ! infoarea) - { - infoarea = ui_infoarea_new (); - gtk_box_pack_end ((GtkBox *) vbox, infoarea, FALSE, FALSE, 0); - gtk_box_reorder_child(GTK_BOX(vbox), infoarea, -1); - - gtk_widget_show (infoarea); - } - - if (! config.infoarea_visible && infoarea) - { - gtk_widget_destroy (infoarea); - infoarea = NULL; - } - - setup_panes (); -} - -void action_view_menu(GtkToggleAction *action) -{ - config.menu_visible = gtk_toggle_action_get_active (action); - - if (config.menu_visible) - gtk_widget_show (menu); - else - gtk_widget_hide (menu); - - setup_panes (); -} - -void action_view_statusbar(GtkToggleAction *action) -{ - config.statusbar_visible = gtk_toggle_action_get_active(action); - - if (config.statusbar_visible && !statusbar) - { - statusbar = ui_statusbar_new(); - gtk_box_pack_end(GTK_BOX(vbox), statusbar, FALSE, FALSE, 3); - - if (infoarea != NULL) - gtk_box_reorder_child(GTK_BOX(vbox), infoarea, -1); - - gtk_widget_show_all(statusbar); - } - - if (!config.statusbar_visible && statusbar) - { - gtk_widget_destroy(statusbar); - statusbar = NULL; - } - - setup_panes(); -} - -/* actionentries actions */ - -void action_about_audacious(void) -{ - audgui_show_about_window(); -} - -void action_play_file(void) -{ - audgui_run_filebrowser(TRUE); -} - -void action_play_location(void) -{ - audgui_show_add_url_window (TRUE); -} - -void action_ab_set(void) -{ - if (aud_drct_get_length() > 0) - { - if (ab_position_a == -1) - { - ab_position_a = aud_drct_get_time(); - ab_position_b = -1; - /* info-text: Loop-Point A position set */ - } - else if (ab_position_b == -1) - { - int time = aud_drct_get_time(); - if (time > ab_position_a) - ab_position_b = time; - /* release info text */ - } - else - { - ab_position_a = aud_drct_get_time(); - ab_position_b = -1; - /* info-text: Loop-Point A position reset */ - } - } -} - -void action_ab_clear(void) -{ - ab_position_a = -1; - ab_position_b = -1; - /* release info text */ -} - -void action_current_track_info(void) -{ - audgui_infowin_show_current(); -} - -void action_jump_to_file(void) -{ - audgui_jump_to_track(); -} - -void action_jump_to_playlist_start(void) -{ - aud_drct_pl_set_pos(0); -} - -static void mainwin_jump_to_time_cb(GtkWidget * widget, GtkWidget * entry) -{ - guint min = 0, sec = 0, params; - gint time; - - params = sscanf(gtk_entry_get_text(GTK_ENTRY(entry)), "%u:%u", &min, &sec); - - if (params == 2) - time = (min * 60) + sec; - else if (params == 1) - time = min; - else - return; - - aud_drct_seek (1000 * time); - gtk_widget_destroy(mainwin_jtt); -} - - -void mainwin_jump_to_time(void) -{ - GtkWidget *vbox, *hbox_new, *hbox_total; - GtkWidget *time_entry, *label, *bbox, *jump, *cancel; - GtkWidget *dialog; - guint tindex; - gchar time_str[10]; - - if (!aud_drct_get_playing()) - { - dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _("Can't jump to time when no track is being played.\n")); - gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); - return; - } - - if (mainwin_jtt) - { - gtk_window_present(GTK_WINDOW(mainwin_jtt)); - return; - } - - mainwin_jtt = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_type_hint(GTK_WINDOW(mainwin_jtt), GDK_WINDOW_TYPE_HINT_DIALOG); - - gtk_window_set_title(GTK_WINDOW(mainwin_jtt), _("Jump to Time")); - gtk_window_set_position(GTK_WINDOW(mainwin_jtt), GTK_WIN_POS_CENTER); - - g_signal_connect(mainwin_jtt, "destroy", G_CALLBACK(gtk_widget_destroyed), &mainwin_jtt); - gtk_container_set_border_width(GTK_CONTAINER(mainwin_jtt), 10); - - vbox = gtk_vbox_new(FALSE, 5); - gtk_container_add(GTK_CONTAINER(mainwin_jtt), vbox); - - hbox_new = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(vbox), hbox_new, TRUE, TRUE, 5); - - time_entry = gtk_entry_new(); - gtk_box_pack_start(GTK_BOX(hbox_new), time_entry, FALSE, FALSE, 5); - g_signal_connect(time_entry, "activate", G_CALLBACK(mainwin_jump_to_time_cb), time_entry); - - gtk_widget_set_size_request(time_entry, 70, -1); - label = gtk_label_new(_("minutes:seconds")); - gtk_box_pack_start(GTK_BOX(hbox_new), label, FALSE, FALSE, 5); - - hbox_total = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(vbox), hbox_total, TRUE, TRUE, 5); - gtk_widget_show(hbox_total); - - /* FIXME: Disable display of current track length. It's not - updated when track changes */ -#if 0 - label = gtk_label_new(_("Track length:")); - gtk_box_pack_start(GTK_BOX(hbox_total), label, FALSE, FALSE, 5); - - len = aud_playlist_get_current_length() / 1000; - g_snprintf(time_str, sizeof(time_str), "%u:%2.2u", len / 60, len % 60); - label = gtk_label_new(time_str); - - gtk_box_pack_start(GTK_BOX(hbox_total), label, FALSE, FALSE, 10); -#endif - - bbox = gtk_hbutton_box_new(); - gtk_box_pack_start(GTK_BOX(vbox), bbox, TRUE, TRUE, 0); - gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); - gtk_box_set_spacing(GTK_BOX(bbox), 5); - - cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL); - GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT); - gtk_container_add(GTK_CONTAINER(bbox), cancel); - g_signal_connect_swapped(cancel, "clicked", G_CALLBACK(gtk_widget_destroy), mainwin_jtt); - - jump = gtk_button_new_from_stock(GTK_STOCK_JUMP_TO); - GTK_WIDGET_SET_FLAGS(jump, GTK_CAN_DEFAULT); - gtk_container_add(GTK_CONTAINER(bbox), jump); - g_signal_connect(jump, "clicked", G_CALLBACK(mainwin_jump_to_time_cb), time_entry); - - tindex = aud_drct_get_time() / 1000; - g_snprintf(time_str, sizeof(time_str), "%u:%2.2u", tindex / 60, tindex % 60); - gtk_entry_set_text(GTK_ENTRY(time_entry), time_str); - - gtk_editable_select_region(GTK_EDITABLE(time_entry), 0, strlen(time_str)); - - gtk_widget_show_all(mainwin_jtt); - - gtk_widget_grab_focus(time_entry); - gtk_widget_grab_default(jump); -} - -void action_jump_to_time(void) -{ - mainwin_jump_to_time(); -} - -void action_playback_next(void) -{ - aud_drct_pl_next(); -} - -void action_playback_previous(void) -{ - aud_drct_pl_prev(); -} - -void action_playback_play(void) -{ - if (ab_position_a != -1) - aud_drct_seek(ab_position_a); - else if (aud_drct_get_playing () && aud_drct_get_paused ()) - aud_drct_pause(); - else - { - aud_playlist_set_playing (aud_playlist_get_active ()); - aud_drct_play(); - } -} - -void action_playback_pause(void) -{ - aud_drct_pause(); -} - -void action_playback_stop(void) -{ - aud_drct_stop(); -} - -void action_preferences(void) -{ - show_preferences_window(TRUE); -} - -void action_quit(void) -{ - aud_drct_quit(); -} - -void action_playlist_track_info(void) -{ - gint playlist = aud_playlist_get_active(); - - if (aud_playlist_selected_count(playlist) == 0) - audgui_infowin_show_current (); - else - { - gint entries = aud_playlist_entry_count(playlist); - gint count; - - for (count = 0; count < entries; count++) - { - if (aud_playlist_entry_get_selected(playlist, count)) - break; - } - - audgui_infowin_show (playlist, count); - } -} - -void action_queue_toggle(void) -{ - gint playlist = aud_playlist_get_active (); - gint focus = treeview_get_focus (playlist_get_treeview (playlist)); - gint at; - - if (focus < 0) - return; - - if ((at = aud_playlist_queue_find_entry (playlist, focus)) < 0) - aud_playlist_queue_insert (playlist, -1, focus); - else - aud_playlist_queue_delete (playlist, at, 1); -} - -void action_playlist_clear_queue(void) -{ - gint playlist = aud_playlist_get_active(); - aud_playlist_queue_delete(playlist, 0, aud_playlist_queue_count(playlist)); -} - -void action_playlist_remove_unavailable(void) -{ - aud_playlist_remove_failed(aud_playlist_get_active()); -} - -void action_playlist_remove_dupes_by_title(void) -{ - aud_playlist_remove_duplicates_by_scheme(aud_playlist_get_active(), PLAYLIST_SORT_TITLE); -} - -void action_playlist_remove_dupes_by_filename(void) -{ - aud_playlist_remove_duplicates_by_scheme(aud_playlist_get_active(), PLAYLIST_SORT_FILENAME); -} - -void action_playlist_remove_dupes_by_full_path(void) -{ - aud_playlist_remove_duplicates_by_scheme(aud_playlist_get_active(), PLAYLIST_SORT_PATH); -} - -void action_playlist_remove_all(void) -{ - gint playlist = aud_playlist_get_active(); - - aud_playlist_entry_delete(playlist, 0, aud_playlist_entry_count(playlist)); -} - -void action_playlist_remove_selected (GtkAction * act) -{ - treeview_remove_selected (playlist_get_treeview (aud_playlist_get_active ())); -} - -void action_playlist_remove_unselected(void) -{ - gint playlist = aud_playlist_get_active(); - gint entries = aud_playlist_entry_count(playlist); - gint count; - - for (count = 0; count < entries; count++) - aud_playlist_entry_set_selected(playlist, count, !aud_playlist_entry_get_selected(playlist, count)); - - aud_playlist_delete_selected(playlist); - aud_playlist_select_all(playlist, TRUE); -} - -void action_playlist_add_files(void) -{ - audgui_run_filebrowser(FALSE); -} - -void action_playlist_add_url(void) -{ - audgui_show_add_url_window (FALSE); -} - -void action_playlist_new(void) -{ - gint playlist = aud_playlist_count(); - - aud_playlist_insert(playlist); - aud_playlist_set_active(playlist); -} - -void action_playlist_prev (void) -{ - if (aud_playlist_get_active ()) - aud_playlist_set_active (aud_playlist_get_active () - 1); - else - aud_playlist_set_active (aud_playlist_count () - 1); -} - -void action_playlist_next (void) -{ - aud_playlist_set_active ((aud_playlist_get_active () + 1) % - aud_playlist_count ()); -} - -void action_playlist_delete(void) -{ - audgui_confirm_playlist_delete (aud_playlist_get_active ()); -} - -static gchar *playlist_file_selection_save(const gchar * title, const gchar * default_filename) -{ - GtkWidget *dialog; - gchar *filename; - - g_return_val_if_fail(title != NULL, NULL); - - dialog = make_filebrowser(title, TRUE); - gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), aud_cfg->playlist_path); - gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), default_filename); - - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - else - filename = NULL; - - gtk_widget_destroy(dialog); - return filename; -} - -static void show_playlist_save_error(GtkWindow * parent, const gchar * filename) -{ - GtkWidget *dialog; - - g_return_if_fail(GTK_IS_WINDOW(parent)); - g_return_if_fail(filename); - - dialog = gtk_message_dialog_new(GTK_WINDOW(parent), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Error writing playlist \"%s\": %s"), filename, strerror(errno)); - - gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER); /* centering */ - gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); -} - -static gboolean show_playlist_overwrite_prompt(GtkWindow * parent, const gchar * filename) -{ - GtkWidget *dialog; - gint result; - - g_return_val_if_fail(GTK_IS_WINDOW(parent), FALSE); - g_return_val_if_fail(filename != NULL, FALSE); - - dialog = gtk_message_dialog_new(GTK_WINDOW(parent), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, _("%s already exist. Continue?"), filename); - - gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER); /* centering */ - result = gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); - - return (result == GTK_RESPONSE_YES); -} - -static void playlistwin_save_playlist(const gchar * filename) -{ - str_replace_in(&aud_cfg->playlist_path, g_path_get_dirname(filename)); - - if (g_file_test(filename, G_FILE_TEST_IS_REGULAR)) - if (!show_playlist_overwrite_prompt(NULL, filename)) - return; - - if (!aud_playlist_save(aud_playlist_get_active(), filename)) - show_playlist_save_error(NULL, filename); -} - -void action_playlist_save_list(void) -{ - const gchar *default_filename = aud_playlist_get_filename(aud_playlist_get_active()); - - gchar *dot = NULL, *basename = NULL; - gchar * filename = playlist_file_selection_save (_("Export Playlist"), - default_filename); - - if (filename) - { - /* Default extension */ - basename = g_path_get_basename(filename); - dot = strrchr(basename, '.'); - if (dot == NULL || dot == basename) - { - gchar *oldname = filename; - filename = g_strconcat(oldname, ".xspf", NULL); - - g_free(oldname); - } - g_free(basename); - - playlistwin_save_playlist(filename); - g_free(filename); - } -} - -void action_playlist_save_default_list(void) -{ -#if 0 - Playlist *playlist = aud_playlist_get_active(); - - playlist_save(playlist, aud_paths[BMP_PATH_PLAYLIST_FILE]); -#endif -} - -static void playlistwin_load_playlist(const gchar * filename) -{ - gint playlist = aud_playlist_get_active(); - - g_return_if_fail(filename != NULL); - - str_replace_in(&aud_cfg->playlist_path, g_path_get_dirname(filename)); - - aud_playlist_entry_delete(playlist, 0, aud_playlist_entry_count(playlist)); - aud_playlist_insert_playlist(playlist, 0, filename); - aud_playlist_set_filename(playlist, filename); - - if (aud_playlist_get_title(playlist) == NULL) - aud_playlist_set_title(playlist, filename); -} - -static gchar *playlist_file_selection_load(const gchar * title, const gchar * default_filename) -{ - GtkWidget *dialog; - gchar *filename; - - g_return_val_if_fail(title != NULL, NULL); - - dialog = make_filebrowser(title, FALSE); - gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), aud_cfg->playlist_path); - if (default_filename) - gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), default_filename); - gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER); /* centering */ - - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - else - filename = NULL; - - gtk_widget_destroy(dialog); - return filename; -} - -void action_playlist_load_list(void) -{ - const gchar *default_filename = aud_playlist_get_filename(aud_playlist_get_active()); - gchar * filename = playlist_file_selection_load (_("Import Playlist"), - default_filename); - - if (filename) - { - playlistwin_load_playlist(filename); - g_free(filename); - } -} - -void action_playlist_refresh_list(void) -{ - aud_playlist_rescan(aud_playlist_get_active()); -} - -void action_open_list_manager(void) -{ - audgui_playlist_manager_ui_show(window); -} - -void action_playlist_search_and_select(void) -{ - //playlistwin_select_search(); -} - -void action_playlist_invert_selection(void) -{ - g_message("implement me"); -} - -void action_playlist_select_none(void) -{ - GtkTreeSelection *selection = gtk_tree_view_get_selection(playlist_get_active_treeview()); - - gtk_widget_grab_focus(GTK_WIDGET(playlist_get_active_treeview())); - gtk_tree_selection_unselect_all(selection); -} - -void action_playlist_select_all(void) -{ - GtkTreeSelection *selection = gtk_tree_view_get_selection(playlist_get_active_treeview()); - - gtk_widget_grab_focus(GTK_WIDGET(playlist_get_active_treeview())); - gtk_tree_selection_select_all(selection); -} - -void action_playlist_save_all_playlists(void) -{ - aud_save_playlists(); -} - -void action_playlist_copy(void) -{ - GtkClipboard *clip = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); - gchar *list = audgui_urilist_create_from_selected (aud_playlist_get_active()); - - if (list == NULL) - return; - - gtk_clipboard_set_text(clip, list, -1); - g_free(list); -} - -void action_playlist_cut(void) -{ - action_playlist_copy(); - action_playlist_remove_selected(NULL); -} - -void action_playlist_paste(void) -{ - GtkClipboard *clip = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); - gchar *list = gtk_clipboard_wait_for_text(clip); - GtkTreeView * tree = playlist_get_treeview (aud_playlist_get_active ()); - - if (list == NULL) - return; - - treeview_add_urilist (tree, treeview_get_focus (tree), list); - g_free (list); -} - -static void playlist_sort_scheme (gint scheme) -{ - gint list = aud_playlist_get_active (); - aud_playlist_sort_by_scheme (list, scheme); - treeview_refresh_selection (playlist_get_treeview (list)); -} - -void playlist_sort_track (void) -{ - playlist_sort_scheme (PLAYLIST_SORT_TRACK); -} - -void playlist_sort_title (void) -{ - playlist_sort_scheme (PLAYLIST_SORT_TITLE); -} - -void playlist_sort_artist (void) -{ - playlist_sort_scheme (PLAYLIST_SORT_ARTIST); -} - -void playlist_sort_album (void) -{ - playlist_sort_scheme (PLAYLIST_SORT_ALBUM); -} - -void playlist_sort_path (void) -{ - playlist_sort_scheme (PLAYLIST_SORT_PATH); -} - -void playlist_reverse (void) -{ - gint list = aud_playlist_get_active (); - aud_playlist_reverse (list); - treeview_refresh_selection (playlist_get_treeview (list)); -} - -void playlist_randomize (void) -{ - gint list = aud_playlist_get_active (); - aud_playlist_randomize (list); - treeview_refresh_selection (playlist_get_treeview (list)); -} diff -Nru audacious-plugins-2.4.4/src/gtkui/actions-mainwin.h audacious-plugins-3.2/src/gtkui/actions-mainwin.h --- audacious-plugins-2.4.4/src/gtkui/actions-mainwin.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/actions-mainwin.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,79 +0,0 @@ -/* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2007 Audacious development team. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. - */ - -#ifndef AUDACIOUS_ACTIONS_MAINWIN_H -#define AUDACIOUS_ACTIONS_MAINWIN_H - -#include -#include - -/* actions below are handled in mainwin.c */ - - -/* toggle actions */ -void action_anamode_peaks(GtkToggleAction *); -void action_autoscroll_songname(GtkToggleAction *); -void action_playback_noplaylistadvance(GtkToggleAction *); -void action_playback_repeat(GtkToggleAction *); -void action_playback_shuffle(GtkToggleAction *); -void action_stop_after_current_song(GtkToggleAction *); -void action_view_always_on_top(GtkToggleAction *); -void action_view_scaled(GtkToggleAction *); -void action_view_easymove(GtkToggleAction *); -void action_view_on_all_workspaces(GtkToggleAction *); -void action_roll_up_equalizer(GtkToggleAction *); -void action_roll_up_player(GtkToggleAction *); -void action_roll_up_playlist_editor(GtkToggleAction *); -void action_show_equalizer(GtkToggleAction *); -void action_show_player(GtkToggleAction *); -void action_show_playlist_editor(GtkToggleAction *); -void action_view_playlist(GtkToggleAction *); -void action_view_infoarea(GtkToggleAction *); -void action_view_menu(GtkToggleAction *); -void action_view_statusbar(GtkToggleAction *); - -/* radio actions (one for each radio action group) */ -void action_anafoff(GtkAction *, GtkRadioAction *); -void action_anamode(GtkAction *, GtkRadioAction *); -void action_anatype(GtkAction *, GtkRadioAction *); -void action_peafoff(GtkAction *, GtkRadioAction *); -void action_scomode(GtkAction *, GtkRadioAction *); -void action_vismode(GtkAction *, GtkRadioAction *); -void action_vprmode(GtkAction *, GtkRadioAction *); -void action_wshmode(GtkAction *, GtkRadioAction *); -void action_viewtime(GtkAction *, GtkRadioAction *); - -/* normal actions */ -void action_about_audacious(void); -void action_ab_clear(void); -void action_ab_set(void); -void action_jump_to_file(void); -void action_jump_to_playlist_start(void); -void action_jump_to_time(void); -void action_play_file(void); -void action_play_location(void); -void action_playback_next(void); -void action_playback_pause(void); -void action_playback_play(void); -void action_playback_previous(void); -void action_playback_stop(void); -void action_preferences(void); -void action_quit(void); -void action_current_track_info(void); -#endif /* AUDACIOUS_ACTIONS_MAINWIN_H */ diff -Nru audacious-plugins-2.4.4/src/gtkui/actions-playlist.h audacious-plugins-3.2/src/gtkui/actions-playlist.h --- audacious-plugins-2.4.4/src/gtkui/actions-playlist.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/actions-playlist.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -/* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2007 Audacious development team. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. - */ - -#ifndef AUDACIOUS_ACTIONS_PLAYLIST_H -#define AUDACIOUS_ACTIONS_PLAYLIST_H - -void action_playlist_load_list(void); -void action_playlist_save_list(void); -void action_playlist_save_default_list(void); -void action_playlist_save_all_playlists(void); -void action_playlist_refresh_list(void); -void action_open_list_manager(void); - -void action_playlist_prev(void); -void action_playlist_new(void); -void action_playlist_next(void); -void action_playlist_delete(void); - -void action_playlist_search_and_select(void); -void action_playlist_invert_selection(void); -void action_playlist_select_all(void); -void action_playlist_select_none(void); - -void action_playlist_clear_queue(void); -void action_playlist_remove_unavailable(void); -void action_playlist_remove_dupes_by_title(void); -void action_playlist_remove_dupes_by_filename(void); -void action_playlist_remove_dupes_by_full_path(void); -void action_playlist_remove_all(void); -void action_playlist_remove_selected(void); -void action_playlist_remove_unselected(void); - -void action_playlist_copy(void); -void action_playlist_cut(void); -void action_playlist_paste(void); - -void action_playlist_add_url(void); -void action_playlist_add_files(void); - -void action_playlist_track_info(void); -void action_queue_toggle(void); - -void playlist_sort_track (void); -void playlist_sort_title (void); -void playlist_sort_artist (void); -void playlist_sort_album (void); -void playlist_sort_path (void); -void playlist_reverse (void); -void playlist_randomize (void); - -#endif /* AUDACIOUS_ACTIONS_PLAYLIST_H */ diff -Nru audacious-plugins-2.4.4/src/gtkui/columns.c audacious-plugins-3.2/src/gtkui/columns.c --- audacious-plugins-2.4.4/src/gtkui/columns.c 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/columns.c 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,365 @@ +/* + * columns.c + * Copyright 2011 John Lindgren + * + * This file is part of Audacious. + * + * Audacious is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 2 or version 3 of the License. + * + * Audacious 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Audacious. If not, see . + * + * The Audacious team does not consider modular code linking to Audacious or + * using our public API to be a derived work. + */ + +#include + +#include + +#include +#include +#include +#include +#include + +#include "config.h" +#include "ui_playlist_notebook.h" +#include "ui_playlist_widget.h" + +const gchar * const pw_col_names[PW_COLS] = {N_("Entry number"), N_("Title"), + N_("Artist"), N_("Year"), N_("Album"), N_("Track"), N_("Queue position"), + N_("Length"), N_("File path"), N_("File name"), N_("Custom title"), + N_("Bitrate")}; + +gint pw_num_cols; +gint pw_cols[PW_COLS]; + +static const gchar * const pw_col_keys[PW_COLS] = {"number", "title", "artist", + "year", "album", "track", "queued", "length", "path", "filename", "custom", + "bitrate"}; + +void pw_col_init (void) +{ + pw_num_cols = 0; + + gchar * columns = aud_get_string ("gtkui", "playlist_columns"); + gchar * * split = g_strsplit (columns, " ", -1); + + for (gchar * * elem = split; * elem && pw_num_cols < PW_COLS; elem ++) + { + gint i = 0; + while (i < PW_COLS && strcmp (* elem, pw_col_keys[i])) + i ++; + + if (i == PW_COLS) + break; + + pw_cols[pw_num_cols ++] = i; + } + + g_strfreev (split); + g_free (columns); +} + +typedef struct { + gint column; + gboolean selected; +} Column; + +static GtkWidget * window = NULL; +static GtkWidget * chosen_list = NULL, * avail_list = NULL; +static Index * chosen = NULL, * avail = NULL; + +static void get_value (void * user, gint row, gint column, GValue * value) +{ + g_return_if_fail (row >= 0 && row < index_count (user)); + Column * c = index_get (user, row); + g_value_set_string (value, _(pw_col_names[c->column])); +} + +static gboolean get_selected (void * user, gint row) +{ + g_return_val_if_fail (row >= 0 && row < index_count (user), FALSE); + return ((Column *) index_get (user, row))->selected; +} + +static void set_selected (void * user, gint row, gboolean selected) +{ + g_return_if_fail (row >= 0 && row < index_count (user)); + ((Column *) index_get (user, row))->selected = selected; +} + +static void select_all (void * user, gboolean selected) +{ + gint rows = index_count (user); + for (gint row = 0; row < rows; row ++) + ((Column *) index_get (user, row))->selected = selected; +} + +static void shift_rows (void * user, gint row, gint before) +{ + gint rows = index_count (user); + g_return_if_fail (row >= 0 && row < rows); + g_return_if_fail (before >= 0 && before <= rows); + + if (before == row) + return; + + Index * move = index_new (); + Index * others = index_new (); + + gint begin, end; + if (before < row) + { + begin = before; + end = row + 1; + while (end < rows && ((Column *) index_get (user, end))->selected) + end ++; + } + else + { + begin = row; + while (begin > 0 && ((Column *) index_get (user, begin - 1))->selected) + begin --; + end = before; + } + + for (gint i = begin; i < end; i ++) + { + Column * c = index_get (user, i); + index_append (c->selected ? move : others, c); + } + + if (before < row) + { + index_merge_append (move, others); + index_free (others); + } + else + { + index_merge_append (others, move); + index_free (move); + move = others; + } + + index_copy_set (move, 0, user, begin, end - begin); + index_free (move); + + GtkWidget * list = (user == chosen) ? chosen_list : avail_list; + audgui_list_update_rows (list, begin, end - begin); + audgui_list_update_selection (list, begin, end - begin); +} + +static const AudguiListCallbacks callbacks = { + .get_value = get_value, + .get_selected = get_selected, + .set_selected = set_selected, + .select_all = select_all, + .shift_rows = shift_rows}; + +static void transfer (Index * source) +{ + Index * dest; + GtkWidget * source_list, * dest_list; + if (source == chosen) + { + dest = avail; + source_list = chosen_list; + dest_list = avail_list; + } + else + { + dest = chosen; + source_list = avail_list; + dest_list = chosen_list; + } + + gint source_rows = index_count (source); + gint dest_rows = index_count (dest); + + for (gint row = 0; row < source_rows; ) + { + Column * c = index_get (source, row); + if (! c->selected) + { + row ++; + continue; + } + + index_delete (source, row, 1); + audgui_list_delete_rows (source_list, row, 1); + source_rows --; + index_append (dest, c); + audgui_list_insert_rows (dest_list, dest_rows, 1); + dest_rows ++; + } +} + +static void response_cb (GtkWidget * widget, gint response, void * unused) +{ + if (response == GTK_RESPONSE_ACCEPT) + { + gint cols = index_count (chosen); + g_return_if_fail (cols <= PW_COLS); + + ui_playlist_notebook_empty (); + + for (pw_num_cols = 0; pw_num_cols < cols; pw_num_cols ++) + pw_cols[pw_num_cols] = ((Column *) index_get (chosen, pw_num_cols)) + ->column; + + ui_playlist_notebook_populate (); + } + + gtk_widget_destroy (window); +} + +static void destroy_cb (void) +{ + window = NULL; + chosen_list = NULL; + avail_list = NULL; + + gint rows = index_count (chosen); + for (gint row = 0; row < rows; row ++) + g_slice_free (Column, index_get (chosen, row)); + index_free (chosen); + chosen = NULL; + + rows = index_count (avail); + for (gint row = 0; row < rows; row ++) + g_slice_free (Column, index_get (avail, row)); + index_free (avail); + avail = NULL; +} + +void pw_col_choose (void) +{ + if (window) + { + gtk_window_present ((GtkWindow *) window); + return; + } + + chosen = index_new (); + avail = index_new (); + + gboolean added[PW_COLS]; + memset (added, 0, sizeof added); + + for (gint i = 0; i < pw_num_cols; i ++) + { + if (added[pw_cols[i]]) + continue; + added[pw_cols[i]] = TRUE; + Column * column = g_slice_new (Column); + column->column = pw_cols[i]; + column->selected = 0; + index_append (chosen, column); + } + + for (gint i = 0; i < PW_COLS; i ++) + { + if (added[i]) + continue; + Column * column = g_slice_new (Column); + column->column = i; + column->selected = 0; + index_append (avail, column); + } + + window = gtk_dialog_new_with_buttons (_("Choose Columns"), NULL, 0, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, + NULL); + gtk_window_set_default_size ((GtkWindow *) window, 400, 300); + g_signal_connect (window, "response", (GCallback) response_cb, NULL); + g_signal_connect (window, "destroy", (GCallback) destroy_cb, NULL); + + GtkWidget * hbox = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start ((GtkBox *) gtk_dialog_get_content_area ((GtkDialog *) + window), hbox, TRUE, TRUE, 0); + + GtkWidget * vbox = gtk_vbox_new (FALSE, 3); + gtk_box_pack_start ((GtkBox *) hbox, vbox, TRUE, TRUE, 0); + + GtkWidget * label = gtk_label_new (_("Available:")); + g_object_set ((GObject *) label, "xalign", (gfloat) 0, NULL); + gtk_box_pack_start ((GtkBox *) vbox, label, FALSE, FALSE, 0); + + GtkWidget * scroll = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy ((GtkScrolledWindow *) scroll, + GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type ((GtkScrolledWindow *) scroll, + GTK_SHADOW_IN); + gtk_box_pack_start ((GtkBox *) vbox, scroll, TRUE, TRUE, 0); + + avail_list = audgui_list_new (& callbacks, avail, index_count (avail)); + gtk_tree_view_set_headers_visible ((GtkTreeView *) avail_list, FALSE); + audgui_list_add_column (avail_list, NULL, 0, G_TYPE_STRING, -1); + gtk_container_add ((GtkContainer *) scroll, avail_list); + + vbox = gtk_vbox_new (FALSE, 6); + gtk_box_pack_start ((GtkBox *) hbox, vbox, FALSE, FALSE, 0); + + GtkWidget * button = gtk_button_new (); + gtk_container_add ((GtkContainer *) button, gtk_image_new_from_stock + (GTK_STOCK_GO_FORWARD, GTK_ICON_SIZE_BUTTON)); + gtk_box_pack_start ((GtkBox *) vbox, button, TRUE, FALSE, 0); + g_signal_connect_swapped (button, "clicked", (GCallback) transfer, avail); + + button = gtk_button_new (); + gtk_container_add ((GtkContainer *) button, gtk_image_new_from_stock + (GTK_STOCK_GO_BACK, GTK_ICON_SIZE_BUTTON)); + gtk_box_pack_start ((GtkBox *) vbox, button, TRUE, FALSE, 0); + g_signal_connect_swapped (button, "clicked", (GCallback) transfer, chosen); + + vbox = gtk_vbox_new (FALSE, 3); + gtk_box_pack_start ((GtkBox *) hbox, vbox, TRUE, TRUE, 0); + + label = gtk_label_new (_("Chosen:")); + g_object_set ((GObject *) label, "xalign", (gfloat) 0, NULL); + gtk_box_pack_start ((GtkBox *) vbox, label, FALSE, FALSE, 0); + + scroll = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy ((GtkScrolledWindow *) scroll, + GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type ((GtkScrolledWindow *) scroll, + GTK_SHADOW_IN); + gtk_box_pack_start ((GtkBox *) vbox, scroll, TRUE, TRUE, 0); + + chosen_list = audgui_list_new (& callbacks, chosen, index_count (chosen)); + gtk_tree_view_set_headers_visible ((GtkTreeView *) chosen_list, FALSE); + audgui_list_add_column (chosen_list, NULL, 0, G_TYPE_STRING, -1); + gtk_container_add ((GtkContainer *) scroll, chosen_list); + + gtk_widget_show_all (window); +} + +void pw_col_save (void) +{ + GString * s = g_string_new_len (NULL, 0); + for (gint i = 0; ; ) + { + g_string_append (s, pw_col_keys[pw_cols[i]]); + if (++ i < pw_num_cols) + g_string_append_c (s, ' '); + else + break; + } + + aud_set_string ("gtkui", "playlist_columns", s->str); + g_string_free (s, TRUE); +} + +void pw_col_cleanup (void) +{ + if (window) + gtk_widget_destroy (window); +} diff -Nru audacious-plugins-2.4.4/src/gtkui/gtkui_cfg.c audacious-plugins-3.2/src/gtkui/gtkui_cfg.c --- audacious-plugins-2.4.4/src/gtkui/gtkui_cfg.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/gtkui_cfg.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,158 +0,0 @@ -/* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2009 Audacious development team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. - */ - -#include -#include - -#include "gtkui_cfg.h" - -gtkui_cfg_t config; - -gtkui_cfg_t gtkui_default_config = { - .player_x = MAINWIN_DEFAULT_POS_X, - .player_y = MAINWIN_DEFAULT_POS_Y, - .player_width = MAINWIN_DEFAULT_WIDTH, - .player_height = MAINWIN_DEFAULT_HEIGHT, - .save_window_position = TRUE, - .player_visible = TRUE, - .playlist_visible = TRUE, - .vis_position = VIS_ON_TOP, - .multi_column_view = FALSE, - .playlist_width = 0, - .playlist_height = 0, - .infoarea_visible = TRUE, - .menu_visible = TRUE, - .statusbar_visible = TRUE, -}; - -typedef struct gtkui_cfg_boolent_t -{ - gchar const *be_vname; - gboolean *be_vloc; - gboolean be_wrt; -} gtkui_cfg_boolent; - -static gtkui_cfg_boolent gtkui_boolents[] = { - {"save_window_position", &config.save_window_position, TRUE}, - {"player_visible", &config.player_visible, TRUE}, - {"multi_column_view", &config.multi_column_view, TRUE}, - {"playlist_visible", &config.playlist_visible, TRUE}, - {"infoarea_visible", &config.infoarea_visible, TRUE}, - {"menu_visible", &config.menu_visible, TRUE}, - {"statusbar_visible", &config.statusbar_visible, TRUE}, -}; - -static gint ncfgbent = G_N_ELEMENTS(gtkui_boolents); - -typedef struct gtkui_cfg_nument_t -{ - gchar const *ie_vname; - gint *ie_vloc; - gboolean ie_wrt; -} gtkui_cfg_nument; - -static gtkui_cfg_nument gtkui_numents[] = { - {"player_x", &config.player_x, TRUE}, - {"player_y", &config.player_y, TRUE}, - {"player_width", &config.player_width, TRUE}, - {"player_height", &config.player_height, TRUE}, - {"vis_position", & config.vis_position, TRUE}, - {"playlist_width", &config.playlist_width, TRUE}, - {"playlist_height", &config.playlist_height, TRUE}, -}; - -static gint ncfgient = G_N_ELEMENTS(gtkui_numents); - -typedef struct gtkui_cfg_strent_t -{ - gchar const *se_vname; - gchar **se_vloc; - gboolean se_wrt; -} gtkui_cfg_strent; - -static gtkui_cfg_strent gtkui_strents[] = { -}; - -static gint ncfgsent = G_N_ELEMENTS(gtkui_strents); - -void gtkui_cfg_free() -{ - gint i; - - for (i = 0; i < ncfgsent; ++i) - { - if (*(gtkui_strents[i].se_vloc) != NULL) - { - g_free(*(gtkui_strents[i].se_vloc)); - *(gtkui_strents[i].se_vloc) = NULL; - } - } -} - -void gtkui_cfg_load() -{ - mcs_handle_t *cfgfile = aud_cfg_db_open(); - gint i; - - memcpy(&config, >kui_default_config, sizeof(gtkui_cfg_t)); - - for (i = 0; i < ncfgbent; ++i) - { - aud_cfg_db_get_bool(cfgfile, "gtkui", gtkui_boolents[i].be_vname, gtkui_boolents[i].be_vloc); - } - - for (i = 0; i < ncfgient; ++i) - { - aud_cfg_db_get_int(cfgfile, "gtkui", gtkui_numents[i].ie_vname, gtkui_numents[i].ie_vloc); - } - - for (i = 0; i < ncfgsent; ++i) - { - aud_cfg_db_get_string(cfgfile, "gtkui", gtkui_strents[i].se_vname, gtkui_strents[i].se_vloc); - } - - aud_cfg_db_close(cfgfile); -} - - -void gtkui_cfg_save() -{ - mcs_handle_t *cfgfile = aud_cfg_db_open(); - gint i; - - for (i = 0; i < ncfgsent; ++i) - { - if (gtkui_strents[i].se_wrt) - aud_cfg_db_set_string(cfgfile, "gtkui", gtkui_strents[i].se_vname, *gtkui_strents[i].se_vloc); - } - - for (i = 0; i < ncfgbent; ++i) - { - if (gtkui_boolents[i].be_wrt) - aud_cfg_db_set_bool(cfgfile, "gtkui", gtkui_boolents[i].be_vname, *gtkui_boolents[i].be_vloc); - } - - for (i = 0; i < ncfgient; ++i) - { - if (gtkui_numents[i].ie_wrt) - aud_cfg_db_set_int(cfgfile, "gtkui", gtkui_numents[i].ie_vname, *gtkui_numents[i].ie_vloc); - } - - aud_cfg_db_close(cfgfile); -} diff -Nru audacious-plugins-2.4.4/src/gtkui/gtkui_cfg.h audacious-plugins-3.2/src/gtkui/gtkui_cfg.h --- audacious-plugins-2.4.4/src/gtkui/gtkui_cfg.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/gtkui_cfg.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -/* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2009 Audacious development team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. - */ - -#ifndef UI_CFG_H -#define UI_CFG_H - -#include -#include "util.h" - -#define MAINWIN_DEFAULT_WIDTH 450 -#define MAINWIN_DEFAULT_HEIGHT 150 -#define MAINWIN_DEFAULT_POS_X 100 -#define MAINWIN_DEFAULT_POS_Y 100 - -enum { - VIS_IN_TABS = 0, - VIS_ON_LEFT, - VIS_ON_RIGHT, - VIS_ON_TOP, - VIS_ON_BOTTOM -}; - -typedef struct -{ - gint player_x, player_y; - gint player_width, player_height; - gint playlist_width, playlist_height; - gboolean save_window_position; - gboolean player_visible; - gboolean playlist_visible; - gint vis_position; - gboolean multi_column_view; - gboolean infoarea_visible; - gboolean menu_visible; - gboolean statusbar_visible; -} gtkui_cfg_t; - -extern gtkui_cfg_t config; - -void gtkui_cfg_free(); -void gtkui_cfg_load(); -void gtkui_cfg_save(); - -#endif diff -Nru audacious-plugins-2.4.4/src/gtkui/gtkui.h audacious-plugins-3.2/src/gtkui/gtkui.h --- audacious-plugins-2.4.4/src/gtkui/gtkui.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/gtkui.h 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * gtkui.h + * Copyright 2011 John Lindgren + * + * This file is part of Audacious. + * + * Audacious is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 2 or version 3 of the License. + * + * Audacious 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Audacious. If not, see . + * + * The Audacious team does not consider modular code linking to Audacious or + * using our public API to be a derived work. + */ + +#ifndef GTKUI_H +#define GTKUI_H + +#include + +/* menus.c */ +GtkWidget * make_menu_bar (GtkAccelGroup * accel); +GtkWidget * make_menu_main (GtkAccelGroup * accel); +GtkWidget * make_menu_rclick (GtkAccelGroup * accel); +GtkWidget * make_menu_tab (GtkAccelGroup * accel); + +/* ui_gtk.c */ +void show_menu (gboolean show); +void show_infoarea (gboolean show); +void show_statusbar (gboolean show); +void popup_menu_rclick (guint button, guint32 time); +void popup_menu_tab (guint button, guint32 time); + +#endif diff -Nru audacious-plugins-2.4.4/src/gtkui/layout.c audacious-plugins-3.2/src/gtkui/layout.c --- audacious-plugins-2.4.4/src/gtkui/layout.c 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/layout.c 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,580 @@ +/* + * layout.c + * Copyright 2011 John Lindgren + * + * This file is part of Audacious. + * + * Audacious is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 2 or version 3 of the License. + * + * Audacious 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Audacious. If not, see . + * + * The Audacious team does not consider modular code linking to Audacious or + * using our public API to be a derived work. + */ + +#include + +#include +#include + +#include +#include +#include +#include + +#include "config.h" +#include "layout.h" + +#define DEFAULT_WIDTH 300 +#define DEFAULT_HEIGHT 200 + +enum {DOCK_LEFT, DOCK_RIGHT, DOCK_TOP, DOCK_BOTTOM, DOCKS}; + +#define IS_VERTICAL(d) ((d) & 2) +#define IS_AFTER(d) ((d) & 1) + +#define NULL_ON_DESTROY(w) g_signal_connect ((w), "destroy", (GCallback) \ + gtk_widget_destroyed, & (w)) + +typedef struct { + gchar * name; + GtkWidget * widget, * vbox, * paned, * window; + gint dock, x, y, w, h; +} Item; + +static GList * items = NULL; + +static GtkWidget * layout = NULL; +static GtkWidget * center = NULL; +static GtkWidget * docks[DOCKS] = {NULL, NULL, NULL, NULL}; +static GtkWidget * menu = NULL; + +GtkWidget * layout_new (void) +{ + g_return_val_if_fail (! layout, NULL); + layout = gtk_alignment_new (0, 0, 1, 1); + NULL_ON_DESTROY (layout); + return layout; +} + +void layout_add_center (GtkWidget * widget) +{ + g_return_if_fail (layout && ! center && widget); + center = widget; + gtk_container_add ((GtkContainer *) layout, center); + NULL_ON_DESTROY (center); +} + +static void layout_move (GtkWidget * widget, gint dock); + +static void layout_dock_left (GtkWidget * widget) +{ + layout_move (widget, DOCK_LEFT); +} + +static void layout_dock_right (GtkWidget * widget) +{ + layout_move (widget, DOCK_RIGHT); +} + +static void layout_dock_top (GtkWidget * widget) +{ + layout_move (widget, DOCK_TOP); +} + +static void layout_dock_bottom (GtkWidget * widget) +{ + layout_move (widget, DOCK_BOTTOM); +} + +static void layout_undock (GtkWidget * widget) +{ + layout_move (widget, -1); +} + +static void layout_disable (GtkWidget * widget) +{ + PluginHandle * plugin = aud_plugin_by_widget (widget); + g_return_if_fail (plugin); + aud_plugin_enable (plugin, FALSE); +} + +static gboolean menu_cb (GtkWidget * widget, GdkEventButton * event) +{ + g_return_val_if_fail (widget && event, FALSE); + + if (event->type != GDK_BUTTON_PRESS || event->button != 3) + return FALSE; + + if (menu) + gtk_widget_destroy (menu); + + menu = gtk_menu_new (); + g_signal_connect (menu, "destroy", (GCallback) gtk_widget_destroyed, & menu); + + const gchar * names[6] = {N_("Dock at Left"), N_("Dock at Right"), + N_("Dock at Top"), N_("Dock at Bottom"), N_("Undock"), N_("Disable")}; + void (* const funcs[6]) (GtkWidget * widget) = {layout_dock_left, + layout_dock_right, layout_dock_top, layout_dock_bottom, layout_undock, + layout_disable}; + + for (gint i = 0; i < 6; i ++) + { + GtkWidget * item = gtk_menu_item_new_with_label (_(names[i])); + gtk_menu_shell_append ((GtkMenuShell *) menu, item); + g_signal_connect_swapped (item, "activate", (GCallback) funcs[i], widget); + } + + gtk_widget_show_all (menu); + gtk_menu_popup ((GtkMenu *) menu, NULL, NULL, NULL, NULL, event->button, event->time); + + return TRUE; +} + +static GtkWidget * vbox_new (GtkWidget * widget, const gchar * name) +{ + g_return_val_if_fail (widget && name, NULL); + + GtkWidget * vbox = gtk_vbox_new (FALSE, 0); + + GtkWidget * ebox = gtk_event_box_new (); + gtk_box_pack_start ((GtkBox *) vbox, ebox, FALSE, FALSE, 0); + g_signal_connect_swapped (ebox, "button-press-event", (GCallback) menu_cb, + widget); + + GtkWidget * label = gtk_label_new (NULL); + gtk_misc_set_padding ((GtkMisc *) label, 3, 0); + gchar * markup = g_markup_printf_escaped ("%s", name); + gtk_label_set_markup ((GtkLabel *) label, markup); + g_free (markup); + gtk_misc_set_alignment ((GtkMisc *) label, 0, 0); + gtk_container_add ((GtkContainer *) ebox, label); + + gtk_box_pack_start ((GtkBox *) vbox, widget, TRUE, TRUE, 0); + + gtk_widget_show_all (vbox); + + return vbox; +} + +typedef struct { + GtkWidget * paned; + GtkWidget * widget; + gboolean vertical; + gint w, h; +} RestoreSizeData; + +static gboolean restore_size_cb (RestoreSizeData * d) +{ + GtkAllocation rect; + gtk_widget_get_allocation (d->widget, & rect); + gint pos = gtk_paned_get_position ((GtkPaned *) d->paned); + pos -= d->vertical ? d->h - rect.height : d->w - rect.width; + gtk_paned_set_position ((GtkPaned *) d->paned, pos); + + g_slice_free (RestoreSizeData, d); + return FALSE; +} + +static GtkWidget * paned_new (gboolean vertical, gboolean after, gint w, gint h) +{ + GtkWidget * paned = vertical ? gtk_vpaned_new () : gtk_hpaned_new (); + + GtkWidget * mine = gtk_alignment_new (0, 0, 1, 1); + GtkWidget * next = gtk_alignment_new (0, 0, 1, 1); + gtk_paned_pack1 ((GtkPaned *) paned, after ? next : mine, after, FALSE); + gtk_paned_pack2 ((GtkPaned *) paned, after ? mine : next, ! after, FALSE); + + g_object_set_data ((GObject *) paned, "mine", mine); + g_object_set_data ((GObject *) paned, "next", next); + + gtk_widget_show_all (paned); + + if (vertical ? h : w) + { + if (after) + { + /* hack to set the size of the second pane */ + RestoreSizeData * d = g_slice_new (RestoreSizeData); + d->paned = paned; + d->widget = mine; + d->vertical = vertical; + d->w = w; + d->h = h; + g_idle_add ((GSourceFunc) restore_size_cb, d); + } + else + gtk_paned_set_position ((GtkPaned *) paned, vertical ? h : w); + } + + return paned; +} + +static Item * item_new (const gchar * name) +{ + Item * item = g_slice_new (Item); + item->name = g_strdup (name); + item->widget = item->vbox = item->paned = item->window = NULL; + item->dock = item->x = item->y = -1; + item->w = DEFAULT_WIDTH; + item->h = DEFAULT_HEIGHT; + + if (! strcmp (name, "Search Tool")) + { + item->dock = DOCK_LEFT; + item->w = 200; + } + + items = g_list_append (items, item); + return item; +} + +static gint item_by_widget (Item * item, GtkWidget * widget) +{ + return (item->widget != widget); +} + +static gint item_by_name (Item * item, const gchar * name) +{ + return strcmp (item->name, name); +} + +static gboolean delete_cb (GtkWidget * widget) +{ + layout_disable (widget); + return TRUE; +} + +static gboolean escape_cb (GtkWidget * widget, GdkEventKey * event) +{ + if (event->keyval == GDK_Escape) + { + layout_disable (widget); + return TRUE; + } + + return FALSE; +} + +static GtkWidget * dock_get_parent (gint dock) +{ + g_return_val_if_fail (dock >= 0 && dock < DOCKS, NULL); + + for (gint scan = dock; scan --; ) + { + if (docks[scan]) + return g_object_get_data ((GObject *) docks[scan], "next"); + } + + return layout; +} + +static Item * item_get_prev (Item * item) +{ + GList * this = g_list_find (items, item); + g_return_val_if_fail (this, NULL); + + for (GList * node = this->prev; node; node = node->prev) + { + Item * test = node->data; + if (test->widget && test->dock == item->dock) + return test; + } + + return NULL; +} + +static Item * item_get_next (Item * item) +{ + GList * this = g_list_find (items, item); + g_return_val_if_fail (this, NULL); + + for (GList * node = this->next; node; node = node->next) + { + Item * test = node->data; + if (test->widget && test->dock == item->dock) + return test; + } + + return NULL; +} + +static GtkWidget * item_get_parent (Item * item) +{ + Item * prev = item_get_prev (item); + return prev ? g_object_get_data ((GObject *) prev->paned, "next") : + g_object_get_data ((GObject *) docks[item->dock], "mine"); +} + +static void item_add (Item * item) +{ + g_return_if_fail (item->name && item->widget && item->vbox && ! item->paned + && ! item->window && item->dock < DOCKS); + + if (item->dock < 0) + { + item->window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + NULL_ON_DESTROY (item->window); + + gtk_window_set_title ((GtkWindow *) item->window, item->name); + g_signal_connect_swapped (item->window, "delete-event", (GCallback) + delete_cb, item->widget); + g_signal_connect_swapped (item->window, "key-press-event", (GCallback) + escape_cb, item->widget); + + if (item->x >= 0 && item->y >= 0) + gtk_window_move ((GtkWindow *) item->window, item->x, item->y); + if (item->w > 0 && item->h > 0) + gtk_window_set_default_size ((GtkWindow *) item->window, item->w, + item->h); + + gtk_container_add ((GtkContainer *) item->window, item->vbox); + gtk_widget_show_all (item->window); + } + else + { + /* Screwy logic to figure out where we need to add a GtkPaned and which + * widget goes in which pane of it. */ + gboolean swap = FALSE; + Item * where = item; + GtkWidget * parent, * paned; + + if (docks[item->dock]) + { + if (! item_get_next (item)) + { + swap = TRUE; + where = item_get_prev (item); + g_return_if_fail (where && ! where->paned); + } + + parent = item_get_parent (where); + g_return_if_fail (parent); + + paned = paned_new (! IS_VERTICAL (where->dock), FALSE, where->w, + where->h); + where->paned = paned; + NULL_ON_DESTROY (where->paned); + } + else + { + parent = dock_get_parent (item->dock); + g_return_if_fail (parent); + + paned = paned_new (IS_VERTICAL (item->dock), IS_AFTER (item->dock), + item->w, item->h); + docks[item->dock] = paned; + NULL_ON_DESTROY (docks[item->dock]); + } + + GtkWidget * mine = g_object_get_data ((GObject *) paned, "mine"); + GtkWidget * next = g_object_get_data ((GObject *) paned, "next"); + GtkWidget * child = gtk_bin_get_child ((GtkBin *) parent); + g_return_if_fail (mine && next && child); + + g_object_ref (child); + gtk_container_remove ((GtkContainer *) parent, child); + gtk_container_add ((GtkContainer *) parent, paned); + gtk_container_add ((GtkContainer *) (swap ? next : mine), item->vbox); + gtk_container_add ((GtkContainer *) (swap ? mine : next), child); + g_object_unref (child); + } +} + +static void item_remove (Item * item) +{ + g_return_if_fail (item->widget && item->vbox); + + if (item->dock < 0) + { + g_return_if_fail (item->window); + gtk_container_remove ((GtkContainer *) item->window, item->vbox); + gtk_widget_destroy (item->window); + } + else + { + /* Screwy logic to figure out which GtkPaned we need to remove and which + * pane of it has the widget we need to keep. */ + gboolean swap = FALSE; + Item * where = item; + GtkWidget * parent, * paned; + + Item * prev = item_get_prev (item); + if (item->paned || prev) + { + if (! item->paned) + { + swap = TRUE; + where = item_get_prev (item); + g_return_if_fail (where && where->paned); + } + + parent = item_get_parent (where); + g_return_if_fail (parent); + + paned = where->paned; + } + else + { + parent = dock_get_parent (item->dock); + g_return_if_fail (parent); + + paned = docks[item->dock]; + } + + GtkWidget * mine = g_object_get_data ((GObject *) paned, "mine"); + GtkWidget * next = g_object_get_data ((GObject *) paned, "next"); + GtkWidget * child = gtk_bin_get_child ((GtkBin *) (swap ? mine : next)); + g_return_if_fail (mine && next && child); + + g_object_ref (child); + gtk_container_remove ((GtkContainer *) (swap ? next : mine), item->vbox); + gtk_container_remove ((GtkContainer *) (swap ? mine : next), child); + gtk_container_remove ((GtkContainer *) parent, paned); + gtk_container_add ((GtkContainer *) parent, child); + g_object_unref (child); + } +} + +static void size_changed_cb (GtkWidget * widget, GdkRectangle * rect, Item * item) +{ + item->w = rect->width; + item->h = rect->height; + + if (item->dock < 0) + { + g_return_if_fail (item->window); + gtk_window_get_position ((GtkWindow *) item->window, & item->x, & item->y); + } +} + +void layout_add (GtkWidget * widget, const gchar * name) +{ + g_return_if_fail (layout && center && widget && name && strlen (name) <= 256 + && ! strchr (name, '\n')); + + GList * node = g_list_find_custom (items, name, (GCompareFunc) item_by_name); + Item * item = node ? node->data : NULL; + + if (item) + { + g_return_if_fail (! item->widget && ! item->vbox && ! item->window); + if (item->dock >= DOCKS) + item->dock = -1; + } + else + item = item_new (name); + + item->widget = widget; + NULL_ON_DESTROY (item->widget); + item->vbox = vbox_new (widget, name); + NULL_ON_DESTROY (item->vbox); + + g_signal_connect (item->vbox, "size-allocate", (GCallback) size_changed_cb, item); + + item_add (item); +} + +static void layout_move (GtkWidget * widget, gint dock) +{ + g_return_if_fail (layout && center && widget && dock < DOCKS); + + GList * node = g_list_find_custom (items, widget, (GCompareFunc) item_by_widget); + g_return_if_fail (node && node->data); + Item * item = node->data; + + g_return_if_fail (item->vbox); + g_object_ref (item->vbox); + + item_remove (item); + items = g_list_remove_link (items, node); + item->dock = dock; + items = g_list_concat (items, node); + item_add (item); + + g_object_unref (item->vbox); +} + +void layout_remove (GtkWidget * widget) +{ + g_return_if_fail (layout && center && widget); + + /* menu may hold pointers to this widget */ + if (menu) + gtk_widget_destroy (menu); + + GList * node = g_list_find_custom (items, widget, (GCompareFunc) item_by_widget); + g_return_if_fail (node && node->data); + Item * item = node->data; + + item_remove (item); + g_return_if_fail (! item->widget && ! item->vbox && ! item->window); +} + +void layout_save (void) +{ + gint i = 0; + + for (GList * node = items; node; node = node->next) + { + Item * item = node->data; + g_return_if_fail (item && item->name); + + gchar key[16], value[64]; + + snprintf (key, sizeof key, "item%d_name", i); + aud_set_string ("gtkui-layout", key, item->name); + + snprintf (key, sizeof key, "item%d_pos", i); + snprintf (value, sizeof value, "%d,%d,%d,%d,%d", item->dock, item->x, + item->y, item->w, item->h); + aud_set_string ("gtkui-layout", key, value); + + i ++; + } + + aud_set_int ("gtkui-layout", "item_count", i); +} + +void layout_load (void) +{ + g_return_if_fail (! items); + + gint count = aud_get_int ("gtkui-layout", "item_count"); + + for (gint i = 0; i < count; i ++) + { + gchar key[16]; + + snprintf (key, sizeof key, "item%d_name", i); + gchar * name = aud_get_string ("gtkui-layout", key); + Item * item = item_new (name); + g_free (name); + + snprintf (key, sizeof key, "item%d_pos", i); + gchar * pos = aud_get_string ("gtkui-layout", key); + sscanf (pos, "%d,%d,%d,%d,%d", & item->dock, & item->x, & item->y, & item->w, & item->h); + g_free (pos); + } +} + +void layout_cleanup (void) +{ + for (GList * node = items; node; node = node->next) + { + Item * item = node->data; + g_return_if_fail (item && ! item->widget && ! item->vbox && ! item->window); + g_free (item->name); + g_slice_free (Item, item); + } + + g_list_free (items); + items = NULL; +} diff -Nru audacious-plugins-2.4.4/src/gtkui/layout.h audacious-plugins-3.2/src/gtkui/layout.h --- audacious-plugins-2.4.4/src/gtkui/layout.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/layout.h 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,36 @@ +/* + * layout.h + * Copyright 2011 John Lindgren + * + * This file is part of Audacious. + * + * Audacious is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 2 or version 3 of the License. + * + * Audacious 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Audacious. If not, see . + * + * The Audacious team does not consider modular code linking to Audacious or + * using our public API to be a derived work. + */ + +#ifndef AUD_GTKUI_LAYOUT_H +#define AUD_GTKUI_LAYOUT_H + +#include + +void layout_load (void); +void layout_save (void); +void layout_cleanup (void); + +GtkWidget * layout_new (void); +void layout_add_center (GtkWidget * add); +void layout_add (GtkWidget * add, const gchar * name); +void layout_remove (GtkWidget * rem); + +#endif diff -Nru audacious-plugins-2.4.4/src/gtkui/Makefile audacious-plugins-3.2/src/gtkui/Makefile --- audacious-plugins-2.4.4/src/gtkui/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -1,26 +1,20 @@ PLUGIN = gtkui${PLUGIN_SUFFIX} -SRCS = gtkui_cfg.c \ +SRCS = columns.c \ + layout.c \ + menus.c \ ui_infoarea.c \ ui_gtk.c \ - ui_manager.c \ ui_playlist_widget.c \ - ui_playlist_model.c \ ui_playlist_notebook.c \ ui_statusbar.c \ - util.c \ - playlist_util.c \ - actions.c + playlist_util.c include ../../buildsys.mk include ../../extra.mk -# These override variables in buildsys.mk and so must come after it. -PACKAGE = audacious -DATA = ui/player.ui - plugindir := ${plugindir}/${GENERAL_PLUGIN_DIR} -CFLAGS += -std=gnu99 ${PLUGIN_CFLAGS} ${BEEP_DEFINES} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${PANGO_CFLAGS} ${CAIRO_CFLAGS} ${PANGOCAIRO_CFLAGS} ${XRENDER_CFLAGS} ${XCOMPOSITE_CFLAGS} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${PANGO_LIBS} ${CAIRO_LIBS} ${PANGOCAIRO_LIBS} ${XRENDER_LIBS} ${XCOMPOSITE_LIBS} ${MOWGLI_LIBS} -laudgui -lm +CFLAGS += ${PLUGIN_CFLAGS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} -I../.. ${GTK_CFLAGS} +LIBS += -lm ${GTK_LIBS} diff -Nru audacious-plugins-2.4.4/src/gtkui/menus.c audacious-plugins-3.2/src/gtkui/menus.c --- audacious-plugins-2.4.4/src/gtkui/menus.c 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/menus.c 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,340 @@ +/* + * menus.c + * Copyright 2011 John Lindgren + * + * This file is part of Audacious. + * + * Audacious is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 2 or version 3 of the License. + * + * Audacious 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Audacious. If not, see . + * + * The Audacious team does not consider modular code linking to Audacious or + * using our public API to be a derived work. + */ + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "config.h" +#include "gtkui.h" +#include "playlist_util.h" +#include "ui_playlist_notebook.h" +#include "ui_playlist_widget.h" + +#define SHIFT GDK_SHIFT_MASK +#define CTRL GDK_CONTROL_MASK +#define ALT GDK_MOD1_MASK + +struct MenuItem { + const gchar * name; + const gchar * icon; + guint key; + GdkModifierType mod; + + /* for normal items */ + void (* func) (void); + + /* for toggle items */ + gboolean (* get) (void); + void (* set) (gboolean on); + const gchar * hook; + + /* for submenus */ + const struct MenuItem * items; + gint n_items; + + /* for custom submenus */ + GtkWidget * (* get_sub) (void); + + /* for separators */ + gboolean sep; +}; + +static void open_files (void) {audgui_run_filebrowser (TRUE); } +static void open_url (void) {audgui_show_add_url_window (TRUE); } +static void add_files (void) {audgui_run_filebrowser (FALSE); } +static void add_url (void) {audgui_show_add_url_window (FALSE); } + +static gboolean repeat_get (void) {return aud_get_bool (NULL, "repeat"); } +static void repeat_set (gboolean on) {aud_set_bool (NULL, "repeat", on); } +static gboolean shuffle_get (void) {return aud_get_bool (NULL, "shuffle"); } +static void shuffle_set (gboolean on) {aud_set_bool (NULL, "shuffle", on); } +static gboolean no_advance_get (void) {return aud_get_bool (NULL, "no_playlist_advance"); } +static void no_advance_set (gboolean on) {aud_set_bool (NULL, "no_playlist_advance", on); } +static gboolean stop_after_get (void) {return aud_get_bool (NULL, "stop_after_current_song"); } +static void stop_after_set (gboolean on) {aud_set_bool (NULL, "stop_after_current_song", on); } + +static void pl_sort_track (void) {aud_playlist_sort_by_scheme (aud_playlist_get_active (), PLAYLIST_SORT_TRACK); } +static void pl_sort_title (void) {aud_playlist_sort_by_scheme (aud_playlist_get_active (), PLAYLIST_SORT_TITLE); } +static void pl_sort_artist (void) {aud_playlist_sort_by_scheme (aud_playlist_get_active (), PLAYLIST_SORT_ARTIST); } +static void pl_sort_album (void) {aud_playlist_sort_by_scheme (aud_playlist_get_active (), PLAYLIST_SORT_ALBUM); } +static void pl_sort_date (void) {aud_playlist_sort_by_scheme (aud_playlist_get_active (), PLAYLIST_SORT_DATE); } +static void pl_sort_path (void) {aud_playlist_sort_by_scheme (aud_playlist_get_active (), PLAYLIST_SORT_PATH); } +static void pl_sort_custom (void) {aud_playlist_sort_by_scheme (aud_playlist_get_active (), PLAYLIST_SORT_FORMATTED_TITLE); } +static void pl_reverse (void) {aud_playlist_reverse (aud_playlist_get_active ()); } +static void pl_random (void) {aud_playlist_randomize (aud_playlist_get_active ()); } + +static void pl_new (void) +{ + aud_playlist_insert (-1); + aud_playlist_set_active (aud_playlist_count () - 1); +} + +static void pl_refresh (void) {aud_playlist_rescan (aud_playlist_get_active ()); } +static void pl_remove_failed (void) {aud_playlist_remove_failed (aud_playlist_get_active ()); } +static void pl_close (void) {audgui_confirm_playlist_delete (aud_playlist_get_active ()); } +static void pl_refresh_sel (void) {aud_playlist_rescan_selected (aud_playlist_get_active ()); } +static void pl_select_all (void) {aud_playlist_select_all (aud_playlist_get_active (), TRUE); } +static void pl_rename (void) {ui_playlist_notebook_edit_tab_title (NULL); } + +static GtkWidget * get_services_main (void) {return aud_get_plugin_menu (AUD_MENU_MAIN); } +static GtkWidget * get_services_pl (void) {return aud_get_plugin_menu (AUD_MENU_PLAYLIST_RCLICK); } + +static void volume_up (void) +{ + int vol = 0; + aud_drct_get_volume_main (& vol); + aud_drct_set_volume_main (vol + 5); +} + +static void volume_down (void) +{ + int vol = 0; + aud_drct_get_volume_main (& vol); + aud_drct_set_volume_main (vol - 5); +} + +static gboolean menu_bar_get (void) {return aud_get_bool ("gtkui", "menu_visible"); } +static gboolean info_bar_get (void) {return aud_get_bool ("gtkui", "infoarea_visible"); } +static gboolean status_bar_get (void) {return aud_get_bool ("gtkui", "statusbar_visible"); } +static gboolean column_headers_get (void) {return aud_get_bool ("gtkui", "playlist_headers"); } +static gboolean autoscroll_get (void) {return aud_get_bool ("gtkui", "autoscroll"); } +static void autoscroll_set (gboolean on) {aud_set_bool ("gtkui", "autoscroll", on); } + +static const struct MenuItem file_items[] = { + {N_("_Open Files ..."), GTK_STOCK_OPEN, 'o', CTRL, .func = open_files}, + {N_("Open _URL ..."), GTK_STOCK_NETWORK, 'l', CTRL, .func = open_url}, + {N_("_Add Files ..."), GTK_STOCK_ADD, 'o', SHIFT | CTRL, .func = add_files}, + {N_("Add U_RL ..."), GTK_STOCK_NETWORK, 'l', SHIFT | CTRL, .func = add_url}, + {.sep = TRUE}, + {N_("A_bout ..."), GTK_STOCK_ABOUT, .func = audgui_show_about_window}, + {N_("_Preferences ..."), GTK_STOCK_PREFERENCES, .func = aud_show_prefs_window}, + {N_("_Quit"), GTK_STOCK_QUIT, 'q', CTRL, .func = aud_drct_quit}}; + +static const struct MenuItem playback_items[] = { + {N_("_Play"), GTK_STOCK_MEDIA_PLAY, GDK_Return, CTRL, .func = aud_drct_play}, + {N_("Paus_e"), GTK_STOCK_MEDIA_PAUSE, ',', CTRL, .func = aud_drct_pause}, + {N_("_Stop"), GTK_STOCK_MEDIA_STOP, '.', CTRL, .func = aud_drct_stop}, + {N_("Pre_vious"), GTK_STOCK_MEDIA_PREVIOUS, GDK_Up, ALT, .func = aud_drct_pl_prev}, + {N_("_Next"), GTK_STOCK_MEDIA_NEXT, GDK_Down, ALT, .func = aud_drct_pl_next}, + {.sep = TRUE}, + {N_("_Repeat"), NULL, 'r', CTRL, .get = repeat_get, repeat_set, "set repeat"}, + {N_("S_huffle"), NULL, 's', CTRL, .get = shuffle_get, shuffle_set, "set shuffle"}, + {N_("N_o Playlist Advance"), NULL, 'n', CTRL, .get = no_advance_get, no_advance_set, "set no_playlist_advance"}, + {N_("Stop _After This Song"), NULL, 'm', CTRL, .get = stop_after_get, stop_after_set, "set stop_after_current_song"}, + {.sep = TRUE}, + {N_("Song _Info ..."), GTK_STOCK_INFO, 'i', CTRL, .func = audgui_infowin_show_current}, + {N_("Jump to _Time ..."), GTK_STOCK_JUMP_TO, .func = audgui_jump_to_time}, + {N_("_Jump to Song ..."), GTK_STOCK_JUMP_TO, 'j', CTRL, .func = audgui_jump_to_track}}; + +static const struct MenuItem sort_items[] = { + {N_("By Track _Number"), .func = pl_sort_track}, + {N_("By _Title"), .func = pl_sort_title}, + {N_("By _Artist"), .func = pl_sort_artist}, + {N_("By A_lbum"), .func = pl_sort_album}, + {N_("By Release _Date"), .func = pl_sort_date}, + {N_("By _File Path"), .func = pl_sort_path}, + {N_("By _Custom Title"), .func = pl_sort_custom}, + {.sep = TRUE}, + {N_("R_everse Order"), GTK_STOCK_SORT_DESCENDING, .func = pl_reverse}, + {N_("_Random Order"), .func = pl_random}}; + +static const struct MenuItem playlist_items[] = { + {N_("_Refresh"), GTK_STOCK_REFRESH, GDK_F5, .func = pl_refresh}, + {N_("Remove _Unavailable Files"), GTK_STOCK_REMOVE, .func = pl_remove_failed}, + {.sep = TRUE}, + {N_("_Sort"), GTK_STOCK_SORT_ASCENDING, .items = sort_items, G_N_ELEMENTS (sort_items)}, + {.sep = TRUE}, + {N_("_New"), GTK_STOCK_NEW, 't', CTRL, .func = pl_new}, + {N_("_Close"), GTK_STOCK_CLOSE, 'w', CTRL, .func = pl_close}, + {.sep = TRUE}, + {N_("_Import ..."), GTK_STOCK_OPEN, .func = audgui_import_playlist}, + {N_("_Export ..."), GTK_STOCK_SAVE, .func = audgui_export_playlist}, + {.sep = TRUE}, + {N_("_Playlist Manager ..."), AUD_STOCK_PLAYLIST, 'p', CTRL, .func = audgui_playlist_manager}, + {N_("_Queue Manager ..."), AUD_STOCK_QUEUETOGGLE, 'u', CTRL, .func = audgui_queue_manager_show}}; + +static const struct MenuItem output_items[] = { + {N_("Volume _Up"), GTK_STOCK_GO_UP, '+', CTRL, .func = volume_up}, + {N_("Volume _Down"), GTK_STOCK_GO_DOWN, '-', CTRL, .func = volume_down}, + {.sep = TRUE}, + {N_("_Equalizer"), GTK_STOCK_PREFERENCES, 'e', CTRL, .func = audgui_show_equalizer_window}, + {.sep = TRUE}, + {N_("E_ffects"), .get_sub = audgui_create_effects_menu}}; + +static const struct MenuItem view_items[] = { + {N_("_Interface"), .get_sub = audgui_create_iface_menu}, + {N_("_Visualizations"), .get_sub = audgui_create_vis_menu}, + {.sep = TRUE}, + {N_("Show _Menu Bar"), NULL, 'm', SHIFT | CTRL, .get = menu_bar_get, show_menu}, + {N_("Show I_nfo Bar"), NULL, 'i', SHIFT | CTRL, .get = info_bar_get, show_infoarea}, + {N_("Show _Status Bar"), NULL, 's', SHIFT | CTRL, .get = status_bar_get, show_statusbar}, + {.sep = TRUE}, + {N_("Show Column _Headers"), .get = column_headers_get, playlist_show_headers}, + {N_("Choose _Columns ..."), .func = pw_col_choose}, + {N_("Scrol_l on Song Change"), .get = autoscroll_get, autoscroll_set}}; + +static const struct MenuItem main_items[] = { + {N_("_File"), .items = file_items, G_N_ELEMENTS (file_items)}, + {N_("_Playback"), .items = playback_items, G_N_ELEMENTS (playback_items)}, + {N_("P_laylist"), .items = playlist_items, G_N_ELEMENTS (playlist_items)}, + {N_("_Services"), .get_sub = get_services_main}, + {N_("_Output"), .items = output_items, G_N_ELEMENTS (output_items)}, + {N_("_View"), .items = view_items, G_N_ELEMENTS (view_items)}}; + +static const struct MenuItem rclick_items[] = { + {N_("Song _Info ..."), GTK_STOCK_INFO, 'i', ALT, .func = playlist_song_info}, + {N_("_Queue/Unqueue"), AUD_STOCK_QUEUETOGGLE, 'q', ALT, .func = playlist_queue_toggle}, + {N_("_Refresh"), GTK_STOCK_REFRESH, GDK_F6, .func = pl_refresh_sel}, + {.sep = TRUE}, + {N_("Cu_t"), GTK_STOCK_CUT, .func = playlist_cut}, + {N_("_Copy"), GTK_STOCK_COPY, .func = playlist_copy}, + {N_("_Paste"), GTK_STOCK_PASTE, .func = playlist_paste}, + {N_("Select _All"), GTK_STOCK_SELECT_ALL, .func = pl_select_all}, + {.sep = TRUE}, + {N_("_Services"), .get_sub = get_services_pl}}; + +static const struct MenuItem tab_items[] = { + {N_("_Rename"), GTK_STOCK_EDIT, GDK_F2, .func = pl_rename}, + {N_("_Close"), GTK_STOCK_CLOSE, .func = pl_close}}; + +static void toggled_cb (GtkCheckMenuItem * check, const struct MenuItem * item) +{ + if (item->get () == gtk_check_menu_item_get_active (check)) + return; + + item->set (gtk_check_menu_item_get_active (check)); +} + +static void hook_cb (void * data, GtkWidget * check) +{ + const struct MenuItem * item = g_object_get_data ((GObject *) check, "item"); + gtk_check_menu_item_set_active ((GtkCheckMenuItem *) check, item->get ()); +} + +static void unhook_cb (GtkCheckMenuItem * check, const struct MenuItem * item) +{ + hook_dissociate_full (item->hook, (HookFunction) hook_cb, check); +} + +static void populate_menu (GtkWidget * shell, const struct MenuItem * items, + gint n_items, GtkAccelGroup * accel) +{ + for (gint i = 0; i < n_items; i ++) + { + const struct MenuItem * item = & items[i]; + GtkWidget * widget = NULL; + + if (item->name && item->func) /* normal widget */ + { + widget = gtk_image_menu_item_new_with_mnemonic (_(item->name)); + g_signal_connect (widget, "activate", item->func, NULL); + + if (item->icon) + gtk_image_menu_item_set_image ((GtkImageMenuItem *) widget, + gtk_image_new_from_stock (item->icon, GTK_ICON_SIZE_MENU)); + } + else if (item->name && item->get && item->set) /* toggle widget */ + { + widget = gtk_check_menu_item_new_with_mnemonic (_(item->name)); + gtk_check_menu_item_set_active ((GtkCheckMenuItem *) widget, + item->get ()); + g_signal_connect (widget, "toggled", (GCallback) toggled_cb, + (void *) item); + + if (item->hook) + { + g_object_set_data ((GObject *) widget, "item", (void *) item); + hook_associate (item->hook, (HookFunction) hook_cb, widget); + g_signal_connect (widget, "destroy", (GCallback) unhook_cb, + (void *) item); + } + } + else if (item->name && (item->items || item->get_sub)) /* submenu */ + { + widget = gtk_image_menu_item_new_with_mnemonic (_(item->name)); + + if (item->icon) + gtk_image_menu_item_set_image ((GtkImageMenuItem *) widget, + gtk_image_new_from_stock (item->icon, GTK_ICON_SIZE_MENU)); + + GtkWidget * sub; + + if (item->get_sub) + sub = item->get_sub (); + else + { + sub = gtk_menu_new (); + populate_menu (sub, item->items, item->n_items, accel); + } + + gtk_menu_item_set_submenu ((GtkMenuItem *) widget, sub); + } + else if (item->sep) /* separator */ + widget = gtk_separator_menu_item_new (); + + if (! widget) + continue; + + if (item->key) + gtk_widget_add_accelerator (widget, "activate", accel, item->key, + item->mod, GTK_ACCEL_VISIBLE); + + gtk_widget_show (widget); + gtk_menu_shell_append ((GtkMenuShell *) shell, widget); + } +} + +GtkWidget * make_menu_bar (GtkAccelGroup * accel) +{ + GtkWidget * bar = gtk_menu_bar_new (); + populate_menu (bar, main_items, G_N_ELEMENTS (main_items), accel); + return bar; +} + +GtkWidget * make_menu_main (GtkAccelGroup * accel) +{ + GtkWidget * shell = gtk_menu_new (); + populate_menu (shell, main_items, G_N_ELEMENTS (main_items), accel); + return shell; +} + +GtkWidget * make_menu_rclick (GtkAccelGroup * accel) +{ + GtkWidget * shell = gtk_menu_new (); + populate_menu (shell, rclick_items, G_N_ELEMENTS (rclick_items), accel); + return shell; +} + +GtkWidget * make_menu_tab (GtkAccelGroup * accel) +{ + GtkWidget * shell = gtk_menu_new (); + populate_menu (shell, tab_items, G_N_ELEMENTS (tab_items), accel); + return shell; +} diff -Nru audacious-plugins-2.4.4/src/gtkui/playlist_util.c audacious-plugins-3.2/src/gtkui/playlist_util.c --- audacious-plugins-2.4.4/src/gtkui/playlist_util.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/playlist_util.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,5 @@ /* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2010 Audacious development team + * Copyright (C) 2005-2011 Audacious development team * Copyright (C) 2010 MichaÅ‚ Lipski * * This program is free software; you can redistribute it and/or modify @@ -18,195 +18,24 @@ * Audacious or using our public API to be a derived work. */ -#include #include -#include -#include -#include +#include #include -#include #include +#include #include "playlist_util.h" -#include "ui_playlist_model.h" #include "ui_playlist_notebook.h" -#include "ui_playlist_widget.h" -GtkTreeView *playlist_get_treeview_from_page(GtkWidget *page) -{ - if (!page) - return NULL; - - return GTK_TREE_VIEW(g_object_get_data(G_OBJECT(page), "treeview")); -} - -GtkTreeView *playlist_get_treeview(gint playlist) +GtkWidget * playlist_get_treeview (gint playlist) { GtkWidget *page = gtk_notebook_get_nth_page(UI_PLAYLIST_NOTEBOOK, playlist); if (!page) return NULL; - return GTK_TREE_VIEW(g_object_get_data(G_OBJECT(page), "treeview")); -} - -GtkTreeView *playlist_get_active_treeview(void) -{ - return playlist_get_treeview(aud_playlist_get_active()); -} - -GtkTreeView *playlist_get_playing_treeview(void) -{ - return playlist_get_treeview(aud_playlist_get_playing()); -} - -gint playlist_get_playlist_from_treeview(GtkTreeView *treeview) -{ - g_return_val_if_fail(treeview != NULL, -1); - - GtkTreeModel *tree_model = gtk_tree_view_get_model(treeview); - UiPlaylistModel *model = UI_PLAYLIST_MODEL(tree_model); - - return model->playlist; -} - -static inline void _gtk_tree_selection_select_path(GtkTreePath *path, GtkTreeSelection *sel) -{ - gtk_tree_selection_select_path(sel, path); -} - -void playlist_set_selected(GtkTreeView *treeview, GtkTreePath *path) -{ - GtkTreeSelection *sel = gtk_tree_view_get_selection(treeview); - - gtk_tree_selection_unselect_all(sel); - gtk_tree_selection_select_path(sel, path); - gtk_tree_view_set_cursor(treeview, path, NULL, FALSE); -} - -void playlist_set_selected_list(GtkTreeView *treeview, GList *list, gint distance) -{ - GtkTreeSelection *sel = gtk_tree_view_get_selection(treeview); - GtkTreePath *path; - gint pos; - - gtk_tree_selection_unselect_all(sel); - - if (distance == 0) - { - gtk_tree_view_set_cursor(treeview, g_list_first(list)->data, NULL, FALSE); - g_list_foreach(list, (GFunc) _gtk_tree_selection_select_path, sel); - return; - } - - for (GList *target = g_list_first(list); target; target = target->next) - { - if (!target->data) - continue; - - pos = playlist_get_index_from_path(target->data) + distance; - path = gtk_tree_path_new_from_indices(pos, -1); - - if (path) - { - gtk_tree_selection_select_path(sel, path); - - if (target->prev == NULL) - gtk_tree_view_set_cursor(treeview, path, NULL, FALSE); - - gtk_tree_path_free(path); - } - } -} - -void playlist_scroll_to_row (GtkTreeView * tree, gint row) -{ - UiPlaylistModel * model = (UiPlaylistModel *) gtk_tree_view_get_model (tree); - - aud_playlist_select_all (model->playlist, FALSE); - if (row >= 0) - aud_playlist_entry_set_selected (model->playlist, row, TRUE); - treeview_set_focus (tree, row); -} - -GList *playlist_get_selected_list(GtkTreeView *treeview) -{ - GtkTreeModel *treemodel; - GtkTreeSelection *sel; - - g_return_val_if_fail(treeview != NULL, NULL); - - treemodel = gtk_tree_view_get_model(treeview); - - sel = gtk_tree_view_get_selection(treeview); - g_return_val_if_fail(sel != NULL, NULL); - - return gtk_tree_selection_get_selected_rows(sel, &treemodel); -} - -gint playlist_get_selected_length(GtkTreeView *treeview) -{ - GList *list = playlist_get_selected_list(treeview); - gint selected_length; - - selected_length = g_list_length(list); - - g_list_foreach(list, (GFunc) gtk_tree_path_free, NULL); - g_list_free(list); - - return selected_length; -} - -GtkTreePath *playlist_get_first_selected_path(GtkTreeView *treeview) -{ - GList *list; - GtkTreePath *path; - - if (! (list = playlist_get_selected_list (treeview))) - return NULL; - - path = gtk_tree_path_copy(list->data); - - g_list_foreach(list, (GFunc) gtk_tree_path_free, NULL); - g_list_free(list); - - return path; -} - -gint playlist_get_first_selected_index(GtkTreeView *treeview) -{ - GtkTreePath *path = playlist_get_first_selected_path(treeview); - - if (! path) - return -1; - - gint selected = playlist_get_index_from_path(path); - gtk_tree_path_free(path); - - return selected; -} - -gint playlist_get_index_from_path(GtkTreePath * path) -{ - gint *pos; - - g_return_val_if_fail(path != NULL, -1); - - if (!(pos = gtk_tree_path_get_indices(path))) - return -1; - - return pos[0]; -} - -void playlist_select_range (gint list, gint top, gint length) -{ - gint count; - - aud_playlist_select_all (list, FALSE); - - for (count = 0; count < length; count ++) - aud_playlist_entry_set_selected (list, top + count, TRUE); + return g_object_get_data ((GObject *) page, "treeview"); } gint playlist_count_selected_in_range (gint list, gint top, gint length) @@ -223,162 +52,97 @@ return selected; } -void playlist_selected_to_indexes (gint list, struct index * * namesp, - struct index * * tuplesp) +gint playlist_get_focus (gint list) { - gint entries = aud_playlist_entry_count (list); - gint count; - const Tuple * tuple; - - * namesp = index_new (); - * tuplesp = index_new (); + GtkWidget * tree = playlist_get_treeview (list); + g_return_val_if_fail (tree, -1); - for (count = 0; count < entries; count ++) - { - if (! aud_playlist_entry_get_selected (list, count)) - continue; - - index_append (* namesp, g_strdup (aud_playlist_entry_get_filename (list, - count))); - - if ((tuple = aud_playlist_entry_get_tuple (list, count, FALSE))) - mowgli_object_ref ((Tuple *) tuple); - - index_append (* tuplesp, (Tuple *) tuple); - } + return audgui_list_get_focus (tree); } -gint treeview_get_focus (GtkTreeView * tree) +void playlist_song_info (void) { - GtkTreePath * path; - gint focus = -1; - - gtk_tree_view_get_cursor (tree, & path, NULL); - if (path) - { - focus = gtk_tree_path_get_indices (path)[0]; - gtk_tree_path_free (path); - } - - return focus; -} + gint list = aud_playlist_get_active (); + gint focus = playlist_get_focus (list); -void treeview_set_focus (GtkTreeView * tree, gint focus) -{ - UiPlaylistModel * model = (UiPlaylistModel *) gtk_tree_view_get_model (tree); + if (focus < 0) + return; - if (aud_playlist_update_pending ()) - { - model->focus_changed = TRUE; - model->focus = focus; - } - else - { - ui_playlist_widget_block_updates ((GtkWidget *) tree, TRUE); - treeview_set_focus_now (tree, focus); - ui_playlist_widget_block_updates ((GtkWidget *) tree, FALSE); - } + audgui_infowin_show (list, focus); } -void treeview_set_focus_now (GtkTreeView * tree, gint focus) +void playlist_queue_toggle (void) { - UiPlaylistModel * model = (UiPlaylistModel *) gtk_tree_view_get_model (tree); - GtkTreePath * path; + gint list = aud_playlist_get_active (); + gint focus = playlist_get_focus (list); if (focus < 0) - { - if (! aud_playlist_entry_count (model->playlist)) - return; - focus = 0; - } + return; - path = gtk_tree_path_new_from_indices (focus, -1); - gtk_tree_view_set_cursor (tree, path, NULL, FALSE); - gtk_tree_view_scroll_to_cell (tree, path, NULL, FALSE, 0, 0); - gtk_tree_path_free (path); + gint at = aud_playlist_queue_find_entry (list, focus); - /* set_cursor changes selection; undo it */ - treeview_refresh_selection_now (tree); + if (at < 0) + aud_playlist_queue_insert (list, -1, focus); + else + aud_playlist_queue_delete (list, at, 1); } -void treeview_refresh_selection (GtkTreeView * tree) +void playlist_delete_selected (void) { - UiPlaylistModel * model = (UiPlaylistModel *) gtk_tree_view_get_model (tree); + gint list = aud_playlist_get_active (); + gint focus = playlist_get_focus (list); + focus -= playlist_count_selected_in_range (list, 0, focus); - if (aud_playlist_update_pending ()) - model->selection_changed = TRUE; - else + aud_drct_pl_delete_selected (list); + + if (aud_playlist_selected_count (list)) /* song changed? */ + return; + + if (focus == aud_playlist_entry_count (list)) + focus --; + if (focus >= 0) { - ui_playlist_widget_block_updates ((GtkWidget *) tree, TRUE); - treeview_refresh_selection_now (tree); - ui_playlist_widget_block_updates ((GtkWidget *) tree, FALSE); + aud_playlist_entry_set_selected (list, focus, TRUE); + playlist_set_focus (list, focus); } } -void treeview_refresh_selection_now (GtkTreeView * tree) +void playlist_copy (void) { - UiPlaylistModel * model = (UiPlaylistModel *) gtk_tree_view_get_model (tree); - GtkTreeSelection * sel = gtk_tree_view_get_selection (tree); - gint entries = aud_playlist_entry_count (model->playlist); - GtkTreeIter iter; - gint count; - - if (! entries) + gchar * text = audgui_urilist_create_from_selected (aud_playlist_get_active ()); + if (! text) return; - gtk_tree_model_get_iter_first ((GtkTreeModel *) model, & iter); - - for (count = 0; count < entries; count ++) - { - if (aud_playlist_entry_get_selected (model->playlist, count)) - gtk_tree_selection_select_iter (sel, & iter); - else - gtk_tree_selection_unselect_iter (sel, & iter); - - gtk_tree_model_iter_next ((GtkTreeModel *) model, & iter); - } + gtk_clipboard_set_text (gtk_clipboard_get (GDK_SELECTION_CLIPBOARD), text, -1); + g_free (text); } -void treeview_add_indexes (GtkTreeView * tree, gint row, struct index * names, - struct index * tuples) +void playlist_cut (void) { - gint playlist = ((UiPlaylistModel *) gtk_tree_view_get_model - (tree))->playlist; - gint entries = aud_playlist_entry_count (playlist); - gint new; - - if (row < 0) - row = entries; - - aud_playlist_entry_insert_batch (playlist, row, names, tuples); - new = aud_playlist_entry_count (playlist); - playlist_select_range (playlist, row, new - entries); - treeview_set_focus (tree, MIN (row, new - 1)); + playlist_copy (); + playlist_delete_selected (); } -void treeview_add_urilist (GtkTreeView * tree, gint row, const gchar * list) +void playlist_paste (void) { - gint playlist = ((UiPlaylistModel *) gtk_tree_view_get_model - (tree))->playlist; - gint entries = aud_playlist_entry_count (playlist); - gint new; - - if (row < 0) - row = entries; - - audgui_urilist_insert (playlist, row, list); - new = aud_playlist_entry_count (playlist); - playlist_select_range (playlist, row, new - entries); - treeview_set_focus (tree, MIN (row, new - 1)); + gchar * text = gtk_clipboard_wait_for_text (gtk_clipboard_get + (GDK_SELECTION_CLIPBOARD)); + if (! text) + return; + + gint list = aud_playlist_get_active (); + audgui_urilist_insert (list, playlist_get_focus (list), text); + g_free (text); } -void treeview_remove_selected (GtkTreeView * tree) +void playlist_shift (gint offset) { - gint list = ((UiPlaylistModel *) gtk_tree_view_get_model (tree))->playlist; - gint focus = treeview_get_focus (tree); + gint list = aud_playlist_get_active (); + gint focus = playlist_get_focus (list); - focus -= playlist_count_selected_in_range (list, 0, focus); - aud_playlist_delete_selected (list); - treeview_set_focus (tree, (focus < aud_playlist_entry_count (list)) ? focus - : focus - 1); + if (focus < 0 || ! aud_playlist_entry_get_selected (list, focus)) + return; + + focus += aud_playlist_shift (list, focus, offset); + playlist_set_focus (list, focus); } diff -Nru audacious-plugins-2.4.4/src/gtkui/playlist_util.h audacious-plugins-3.2/src/gtkui/playlist_util.h --- audacious-plugins-2.4.4/src/gtkui/playlist_util.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/playlist_util.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,5 @@ /* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2010 Audacious development team + * Copyright (C) 2005-2011 Audacious development team * Copyright (C) 2010 MichaÅ‚ Lipski * * This program is free software; you can redistribute it and/or modify @@ -21,37 +21,19 @@ #ifndef __PLAYLISTUTIL_H__ #define __PLAYLISTUTIL_H__ -void playlist_set_selected(GtkTreeView *treeview, GtkTreePath *path); -void playlist_set_selected_list(GtkTreeView *treeview, GList *list, gint distance); -GtkTreeView *playlist_get_treeview_from_page(GtkWidget *page); -GtkTreeView *playlist_get_treeview(gint playlist); -GtkTreeView *playlist_get_active_treeview(void); -GtkTreeView *playlist_get_playing_treeview(void); -gint playlist_get_playlist_from_treeview(GtkTreeView *treeview); -void playlist_scroll_to_row(GtkTreeView *treeview, gint position); -GList *playlist_get_selected_list(GtkTreeView *treeview); -gint playlist_get_selected_length(GtkTreeView *treeview); -gint playlist_get_first_selected_index(GtkTreeView *treeview); -GtkTreePath *playlist_get_first_selected_path(GtkTreeView *treeview); -gint playlist_get_index_from_path(GtkTreePath * path); +GtkWidget * playlist_get_treeview (gint playlist); -void playlist_select_range (gint list, gint top, gint length); gint playlist_count_selected_in_range (gint list, gint top, gint length); -void playlist_selected_to_indexes (gint list, struct index * * namesp, - struct index * * tuplesp); +gint playlist_get_focus (gint list); +void playlist_song_info (void); +void playlist_queue_toggle (void); +void playlist_delete_selected (void); +void playlist_copy (void); +void playlist_cut (void); +void playlist_paste (void); +void playlist_shift (gint offset); -gint treeview_get_focus (GtkTreeView * tree); - -/* these also refresh selection */ -void treeview_set_focus (GtkTreeView * tree, gint focus); -void treeview_set_focus_now (GtkTreeView * tree, gint focus); - -void treeview_refresh_selection (GtkTreeView * tree); -void treeview_refresh_selection_now (GtkTreeView * tree); - -void treeview_add_indexes (GtkTreeView * tree, gint row, struct index * names, - struct index * tuples); -void treeview_add_urilist (GtkTreeView * tree, gint row, const gchar * list); -void treeview_remove_selected (GtkTreeView * tree); +/* ui_playlist_notebook.c */ +void playlist_set_focus (gint list, gint row); #endif diff -Nru audacious-plugins-2.4.4/src/gtkui/ui/player.ui audacious-plugins-3.2/src/gtkui/ui/player.ui --- audacious-plugins-2.4.4/src/gtkui/ui/player.ui 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/ui/player.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru audacious-plugins-2.4.4/src/gtkui/ui_gtk.c audacious-plugins-3.2/src/gtkui/ui_gtk.c --- audacious-plugins-2.4.4/src/gtkui/ui_gtk.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/ui_gtk.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,5 @@ /* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2010 Audacious development team + * Copyright (C) 2005-2011 Audacious development team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,354 +17,238 @@ * Audacious or using our public API to be a derived work. */ -#include -#include #include +#include -#include #include #include -#include +#include +#include #include #include +#include +#include #include #include #include #include "config.h" -#include "gtkui_cfg.h" -#include "ui_gtk.h" +#include "gtkui.h" +#include "layout.h" #include "ui_playlist_notebook.h" -#include "ui_manager.h" +#include "ui_playlist_widget.h" #include "ui_infoarea.h" #include "ui_statusbar.h" #include "playlist_util.h" -#include "actions-mainwin.h" -#include "actions-playlist.h" -#if ! GTK_CHECK_VERSION (2, 18, 0) -#define gtk_widget_set_can_focus(w, t) do {if (t) GTK_WIDGET_SET_FLAGS ((w), GTK_CAN_FOCUS); else GTK_WIDGET_UNSET_FLAGS ((w), GTK_CAN_FOCUS);} while (0) -#endif +static const gchar * const gtkui_defaults[] = { + "infoarea_visible", "TRUE", + "menu_visible", "TRUE", + "player_visible", "TRUE", + "statusbar_visible", "TRUE", + + "autoscroll", "TRUE", + "playlist_columns", "title artist album queued length", + "playlist_headers", "TRUE", + + "player_x", "-1", + "player_y", "-1", + "player_width", "760", + "player_height", "460", + + /* hidden settings */ + "always_on_top", "FALSE", + "save_window_position", "TRUE", + "show_song_titles", "TRUE", + "custom_playlist_colors", "FALSE", + NULL}; -gboolean multi_column_view; +static PluginHandle * search_tool; -static GtkWidget *label_time; -static GtkWidget *slider; - -#if GTK_CHECK_VERSION (2, 12, 0) -#define HAVE_VOLUME static GtkWidget *volume; static gboolean volume_slider_is_moving = FALSE; static guint update_volume_timeout_source = 0; static gulong volume_change_handler_id; -#endif -static GtkWidget *visualizer = NULL; -GtkWidget *playlist_box; -GtkWidget *window; /* the main window */ -GtkWidget *vbox; /* the main vertical box */ -GtkWidget *menu; -GtkWidget *infoarea = NULL; -GtkWidget *statusbar = NULL; +static GtkAccelGroup * accel; + +static GtkWidget * button_play, * button_pause, * button_stop, * slider, + * label_time, * button_shuffle, * button_repeat, * search_button; +static GtkWidget * window, * vbox_outer, * vbox, * menu_box, * menu, * infoarea, * statusbar; +static GtkWidget * menu_main, * menu_rclick, * menu_tab; static GtkWidget * error_win = NULL; -static gulong slider_change_handler_id; static gboolean slider_is_moving = FALSE; -static gint slider_position; +static guint delayed_title_change_source = 0; static guint update_song_timeout_source = 0; -extern GtkWidget *ui_playlist_notebook_tab_title_editing; - -static gboolean _ui_initialize(InterfaceCbs * cbs); -static gboolean _ui_finalize(void); - -Interface gtkui_interface = { - .id = "gtkui", - .desc = N_("GTK Interface"), - .init = _ui_initialize, - .fini = _ui_finalize, -}; - -SIMPLE_INTERFACE_PLUGIN("gtkui", >kui_interface); +static gboolean init (void); +static void cleanup (void); +static void ui_show (gboolean show); +static gboolean ui_is_shown (void); +static gboolean ui_is_focused (void); +static void ui_show_error (const gchar * text); + +AUD_IFACE_PLUGIN +( + .name = N_("GTK Interface"), + .init = init, + .cleanup = cleanup, + .show = ui_show, + .is_shown = ui_is_shown, + .is_focused = ui_is_focused, + .show_error = ui_show_error, + .show_filebrowser = audgui_run_filebrowser, + .show_jump_to_track = audgui_jump_to_track, + .run_gtk_plugin = (void *) layout_add, + .stop_gtk_plugin = (void *) layout_remove, +) static void save_window_size (void) { - gtk_window_get_position ((GtkWindow *) window, & config.player_x, - & config.player_y); - - if (gtk_window_get_resizable ((GtkWindow *) window)) - gtk_window_get_size ((GtkWindow *) window, & config.player_width, - & config.player_height); + gint x, y, w, h; + gtk_window_get_position ((GtkWindow *) window, & x, & y); + gtk_window_get_size ((GtkWindow *) window, & w, & h); + + aud_set_int ("gtkui", "player_x", x); + aud_set_int ("gtkui", "player_y", y); + aud_set_int ("gtkui", "player_width", w); + aud_set_int ("gtkui", "player_height", h); } -static void shrink_window (void) +static gboolean window_delete() { - GtkRequisition r; + gboolean handle = FALSE; + + hook_call("window close", &handle); - gtk_widget_size_request (window, & r); - gtk_window_resize ((GtkWindow *) window, r.width, r.height); - gtk_window_set_resizable ((GtkWindow *) window, FALSE); + if (handle) + return TRUE; + + aud_drct_quit (); + return TRUE; } -static void unshrink_window (void) +static void button_open_pressed() { - gtk_window_resize ((GtkWindow *) window, config.player_width, - config.player_height); - gtk_window_set_resizable ((GtkWindow *) window, TRUE); + audgui_run_filebrowser(TRUE); } -static void container_remove_reversed (GtkWidget * w, GtkWidget * c) +static void button_add_pressed() { - gtk_container_remove ((GtkContainer *) c, w); + audgui_run_filebrowser(FALSE); } -void setup_panes (void) +static gboolean title_change_cb (void) { - static GtkWidget * panes = NULL; - GtkWidget * a, * b; - - save_window_size (); - - if (panes) + if (delayed_title_change_source) { - gtk_container_foreach ((GtkContainer *) panes, (GtkCallback) - container_remove_reversed, panes); - gtk_widget_destroy (panes); + g_source_remove (delayed_title_change_source); + delayed_title_change_source = 0; } - gtk_container_foreach ((GtkContainer *) playlist_box, (GtkCallback) - container_remove_reversed, playlist_box); - - if (config.vis_position == VIS_ON_LEFT || config.vis_position == VIS_ON_TOP) + if (aud_drct_get_playing () && aud_get_bool ("gtkui", "show_song_titles")) { - a = (config.vis_position == VIS_IN_TABS) ? NULL : visualizer; - b = config.playlist_visible ? (GtkWidget *) UI_PLAYLIST_NOTEBOOK : NULL; - } - else - { - a = config.playlist_visible ? (GtkWidget *) UI_PLAYLIST_NOTEBOOK : NULL; - b = (config.vis_position == VIS_IN_TABS) ? NULL : visualizer; - } - - if (! a) - { - a = b; - b = NULL; - } - - if (! a) - { - shrink_window (); - return; - } - - unshrink_window (); - - if (! b) - { - gtk_box_pack_start ((GtkBox *) playlist_box, a, TRUE, TRUE, 0); - gtk_widget_show (a); - return; - } - - panes = (config.vis_position == VIS_ON_LEFT || config.vis_position == - VIS_ON_RIGHT) ? gtk_hpaned_new () : gtk_vpaned_new (); - gtk_box_pack_start ((GtkBox *) playlist_box, panes, TRUE, TRUE, 0); - g_signal_connect ((GObject *) panes, "destroy", (GCallback) - gtk_widget_destroyed, & panes); - - gtk_paned_add1 ((GtkPaned *) panes, a); - gtk_paned_add2 ((GtkPaned *) panes, b); - gtk_widget_show (panes); - gtk_widget_show (a); - gtk_widget_show (b); -} - -static void ui_run_gtk_plugin(GtkWidget *parent, const gchar *name) -{ - GtkWidget *label; - - g_return_if_fail(parent != NULL); - g_return_if_fail(name != NULL); - - if (visualizer) /* only one at a time */ - return; - - visualizer = parent; - g_object_ref ((GObject *) visualizer); - - if (config.vis_position == VIS_IN_TABS) - { - label = gtk_label_new(name); - gtk_notebook_append_page(UI_PLAYLIST_NOTEBOOK, parent, label); + if (aud_drct_get_ready ()) + { + gchar * title = aud_drct_get_title (); + gchar * title_s = g_strdup_printf (_("%s - Audacious"), title); + gtk_window_set_title ((GtkWindow *) window, title_s); + g_free (title_s); + str_unref (title); + } + else + gtk_window_set_title ((GtkWindow *) window, _("Buffering ...")); } else - setup_panes (); -} - -static void ui_stop_gtk_plugin(GtkWidget *parent) -{ - if (parent != visualizer) /* only one at a time */ - return; - - g_object_unref ((GObject *) visualizer); - visualizer = NULL; - - if (config.vis_position == VIS_IN_TABS) - gtk_notebook_remove_page(UI_PLAYLIST_NOTEBOOK, gtk_notebook_page_num - (UI_PLAYLIST_NOTEBOOK, parent)); - else - setup_panes (); -} + gtk_window_set_title ((GtkWindow *) window, _("Audacious")); -static gboolean window_delete() -{ - aud_drct_quit (); - return TRUE; + return FALSE; } -void show_preferences_window(gboolean show) +static void ui_show (gboolean show) { - /* static GtkWidget * * prefswin = NULL; */ - static void * * prefswin = NULL; + aud_set_bool ("gtkui", "player_visible", show); if (show) { - if ((prefswin != NULL) && (*prefswin != NULL)) + if (aud_get_bool ("gtkui", "save_window_position") && ! gtk_widget_get_visible (window)) { - gtk_window_present(GTK_WINDOW(*prefswin)); - return; + gint x = aud_get_int ("gtkui", "player_x"); + gint y = aud_get_int ("gtkui", "player_y"); + gtk_window_move ((GtkWindow *) window, x, y); } - prefswin = gtkui_interface.ops->create_prefs_window(); - - gtk_widget_show_all(*prefswin); + gtk_window_present ((GtkWindow *) window); } - else + else if (gtk_widget_get_visible (window)) { - if ((prefswin != NULL) && (*prefswin != NULL)) + if (aud_get_bool ("gtkui", "save_window_position")) { - gtkui_interface.ops->destroy_prefs_window(); + gint x, y; + gtk_window_get_position ((GtkWindow *) window, & x, & y); + aud_set_int ("gtkui", "player_x", x); + aud_set_int ("gtkui", "player_y", y); } - } -} - -static void button_open_pressed() -{ - audgui_run_filebrowser(TRUE); -} - -static void button_add_pressed() -{ - audgui_run_filebrowser(FALSE); -} - -static void button_play_pressed() -{ - action_playback_play (); -} -static void button_pause_pressed() -{ - action_playback_pause (); -} - -static void button_stop_pressed() -{ - action_playback_stop (); -} - -static void button_previous_pressed() -{ - action_playback_previous (); -} - -static void button_next_pressed() -{ - action_playback_next (); -} - -static void title_change_cb (void) -{ - if (aud_drct_get_playing ()) - { - gchar * title = aud_drct_get_title (); - gchar * title_s = g_strdup_printf (_("%s - Audacious"), title); - gtk_window_set_title ((GtkWindow *) window, title_s); - g_free (title_s); - g_free (title); + gtk_widget_hide (window); } - else - gtk_window_set_title ((GtkWindow *) window, _("Audacious")); - - ui_playlist_notebook_add_tab_label_markup(aud_playlist_get_playing(), FALSE); -} - -static void ui_playlist_created(void *data, void *unused) -{ - ui_playlist_notebook_create_tab(GPOINTER_TO_INT(data)); } -static void ui_playlist_destroyed(void *data, void *unused) +static gboolean ui_is_shown (void) { - ui_playlist_notebook_destroy_tab(GPOINTER_TO_INT(data)); + return aud_get_bool ("gtkui", "player_visible"); } -static void ui_mainwin_show() +static gboolean ui_is_focused (void) { - if (config.save_window_position) - gtk_window_move(GTK_WINDOW(window), config.player_x, config.player_y); - - gtk_widget_show(window); - gtk_window_present(GTK_WINDOW(window)); +/* gtk_window_is_active() is too unreliable, unfortunately. --jlindgren */ +#if 0 + return gtk_window_is_active ((GtkWindow *) window); +#else + return ui_is_shown (); +#endif } -static void ui_mainwin_hide() +static void ui_show_error (const gchar * text) { - if (config.save_window_position) - gtk_window_get_position(GTK_WINDOW(window), &config.player_x, &config.player_y); - - gtk_widget_hide(window); + audgui_simple_message (& error_win, GTK_MESSAGE_ERROR, _("Error"), _(text)); } -static void ui_mainwin_toggle_visibility(gpointer hook_data, gpointer user_data) +static void set_time_label (gint time, gint len) { - gboolean show = GPOINTER_TO_INT(hook_data); + gchar s[128]; + snprintf (s, sizeof s, ""); - config.player_visible = show; - aud_cfg->player_visible = show; + time /= 1000; - if (show) - { - ui_mainwin_show(); - } + if (time < 3600) + snprintf (s + strlen (s), sizeof s - strlen (s), aud_get_bool (NULL, + "leading_zero") ? "%02d:%02d" : "%d:%02d", time / 60, time % 60); else + snprintf (s + strlen (s), sizeof s - strlen (s), "%d:%02d:%02d", time / + 3600, (time / 60) % 60, time % 60); + + if (len) { - ui_mainwin_hide(); - } -} + len /= 1000; -static void ui_toggle_visibility(void) -{ - ui_mainwin_toggle_visibility(GINT_TO_POINTER(!config.player_visible), NULL); -} + if (len < 3600) + snprintf (s + strlen (s), sizeof s - strlen (s), aud_get_bool (NULL, + "leading_zero") ? " / %02d:%02d" : " / %d:%02d", len / 60, len % 60); + else + snprintf (s + strlen (s), sizeof s - strlen (s), " / %d:%02d:%02d", + len / 3600, (len / 60) % 60, len % 60); + } -static void ui_show_error (const gchar * text) -{ - audgui_simple_message (& error_win, GTK_MESSAGE_ERROR, _("Error"), _(text)); + snprintf (s + strlen (s), sizeof s - strlen (s), ""); + gtk_label_set_markup ((GtkLabel *) label_time, s); } -static void set_time_label (gint time) +static void set_slider (gint time) { - gchar text[128]; - gint length = aud_drct_get_playing () ? aud_drct_get_length () : 0; - - time /= 1000; - length /= 1000; - - g_snprintf(text, sizeof(text) / sizeof(gchar), "%.2d:%.2d/%.2d:%.2d", time / 60, time % 60, length / 60, length % 60); - gtk_label_set_markup(GTK_LABEL(label_time), text); + gtk_range_set_value ((GtkRange *) slider, time); } static gboolean time_counter_cb (void) @@ -372,41 +256,31 @@ if (slider_is_moving) return TRUE; - gint time = aud_drct_get_playing () ? aud_drct_get_time () : 0; - gint len = aud_drct_get_playing () ? aud_drct_get_length () : 0; + gint time = aud_drct_get_time (); + gint length = aud_drct_get_length (); - if (!g_signal_handler_is_connected(slider, slider_change_handler_id)) - return TRUE; - - if (len) - { - g_signal_handler_block(slider, slider_change_handler_id); - gtk_range_set_value(GTK_RANGE(slider), (gdouble) time); - g_signal_handler_unblock(slider, slider_change_handler_id); - } + if (length > 0) + set_slider (time); - set_time_label (time); + set_time_label (time, length); return TRUE; } -static gboolean ui_slider_value_changed_cb(GtkRange * range, gpointer user_data) -{ - aud_drct_seek (gtk_range_get_value (range)); - slider_is_moving = FALSE; - return TRUE; -} - static gboolean ui_slider_change_value_cb(GtkRange * range, GtkScrollType scroll) { - set_time_label (gtk_range_get_value (range)); + gint value = gtk_range_get_value (range); + set_time_label (value, aud_drct_get_length ()); + + if (!slider_is_moving) + aud_drct_seek (gtk_range_get_value (range)); + return FALSE; } static gboolean ui_slider_button_press_cb(GtkWidget * widget, GdkEventButton * event, gpointer user_data) { slider_is_moving = TRUE; - slider_position = gtk_range_get_value(GTK_RANGE(widget)); /* HACK: clicking with the left mouse button moves the slider to the location of the click. */ @@ -422,13 +296,11 @@ if (event->button == 1) event->button = 2; - if (slider_position == (gint) gtk_range_get_value(GTK_RANGE(widget))) - slider_is_moving = FALSE; + slider_is_moving = FALSE; return FALSE; } -#ifdef HAVE_VOLUME static gboolean ui_volume_value_changed_cb(GtkButton * button, gdouble volume, gpointer user_data) { aud_drct_set_volume((gint) volume, (gint) volume); @@ -449,18 +321,12 @@ static gboolean ui_volume_slider_update(gpointer data) { gint volume; - static gint last_volume = -1; if (volume_slider_is_moving || data == NULL) return TRUE; aud_drct_get_volume_main(&volume); - if (last_volume == volume) - return TRUE; - - last_volume = volume; - if (volume == (gint) gtk_scale_button_get_value(GTK_SCALE_BUTTON(data))) return TRUE; @@ -471,45 +337,60 @@ return TRUE; } -void set_volume_diff(gint diff) -{ - gint vol = gtk_scale_button_get_value(GTK_SCALE_BUTTON(volume)); - gtk_scale_button_set_value(GTK_SCALE_BUTTON(volume), CLAMP(vol + diff, 0, 100)); -} -#endif - static void set_slider_length (gint length) { - if (g_signal_handler_is_connected (slider, slider_change_handler_id)) - g_signal_handler_block (slider, slider_change_handler_id); - if (length > 0) { gtk_range_set_range ((GtkRange *) slider, 0, length); - gtk_widget_set_sensitive (slider, TRUE); + gtk_widget_show (slider); } else + gtk_widget_hide (slider); +} + +static void pause_cb (void) +{ + if (aud_drct_get_paused ()) { - gtk_range_set_value(GTK_RANGE(slider), 0.0); - gtk_widget_set_sensitive (slider, FALSE); + gtk_widget_show (button_play); + gtk_widget_hide (button_pause); } + else + { + gtk_widget_hide (button_play); + gtk_widget_show (button_pause); + } +} + +static void ui_playback_begin (void) +{ + pause_cb (); + gtk_widget_set_sensitive (button_stop, TRUE); + + if (delayed_title_change_source) + g_source_remove (delayed_title_change_source); - if (g_signal_handler_is_connected (slider, slider_change_handler_id)) - g_signal_handler_unblock (slider, slider_change_handler_id); + /* If "title change" is not called by 1/4 second after starting playback, + * show "Buffering ..." as the window title. */ + delayed_title_change_source = g_timeout_add (250, (GSourceFunc) + title_change_cb, NULL); } -static void ui_playback_begin(gpointer hook_data, gpointer user_data) +static void ui_playback_ready (void) { title_change_cb (); set_slider_length (aud_drct_get_length ()); time_counter_cb (); /* update time counter 4 times a second */ - update_song_timeout_source = g_timeout_add (250, (GSourceFunc) - time_counter_cb, NULL); + if (! update_song_timeout_source) + update_song_timeout_source = g_timeout_add (250, (GSourceFunc) + time_counter_cb, NULL); + + gtk_widget_show (label_time); } -static void ui_playback_stop(gpointer hook_data, gpointer user_data) +static void ui_playback_stop (void) { if (update_song_timeout_source) { @@ -517,12 +398,34 @@ update_song_timeout_source = 0; } - title_change_cb (); - set_slider_length (0); - time_counter_cb (); + if (delayed_title_change_source) + g_source_remove (delayed_title_change_source); + + /* Don't update the window title immediately; we may be about to start + * another song. */ + delayed_title_change_source = g_idle_add ((GSourceFunc) title_change_cb, + NULL); + + gtk_widget_show (button_play); + gtk_widget_hide (button_pause); + gtk_widget_set_sensitive (button_stop, FALSE); + gtk_widget_hide (slider); + gtk_widget_hide (label_time); } -static GtkWidget *gtk_toolbar_button_add(GtkWidget * toolbar, void (*callback) (), const gchar * stock_id) +static gboolean rclick_cb (GtkWidget * widget, GdkEventButton * event) +{ + if (event->button != 3) + return FALSE; + + if (event->type == GDK_BUTTON_PRESS && menu_main) + gtk_menu_popup ((GtkMenu *) menu_main, NULL, NULL, NULL, NULL, + event->button, event->time); + + return TRUE; +} + +static GtkWidget *toolbar_button_add(GtkWidget * toolbar, void (*callback) (), const gchar * stock_id) { GtkWidget *icon; GtkWidget *button = gtk_button_new(); @@ -535,204 +438,283 @@ gtk_box_pack_start(GTK_BOX(toolbar), button, FALSE, FALSE, 0); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(callback), NULL); + g_signal_connect (button, "button-press-event", (GCallback) rclick_cb, NULL); + + return button; +} +static GtkWidget * toggle_button_new (const gchar * icon, const gchar * alt, + void (* toggled) (GtkToggleButton * button, void * user), void * user) +{ + GtkWidget * button = gtk_toggle_button_new (); + gtk_widget_set_can_focus (button, FALSE); + gtk_button_set_relief ((GtkButton *) button, GTK_RELIEF_NONE); + + if (! alt) + gtk_container_add ((GtkContainer *) button, gtk_image_new_from_stock + (icon, GTK_ICON_SIZE_BUTTON)); + else if (gtk_icon_theme_has_icon (gtk_icon_theme_get_default (), icon)) + gtk_container_add ((GtkContainer *) button, gtk_image_new_from_icon_name + (icon, GTK_ICON_SIZE_BUTTON)); + else + { + GtkWidget * label = gtk_label_new (NULL); + gchar * markup = g_markup_printf_escaped ("%s", alt); + gtk_label_set_markup ((GtkLabel *) label, markup); + g_free (markup); + gtk_container_add ((GtkContainer *) button, label); + } + + g_signal_connect (button, "toggled", (GCallback) toggled, user); return button; } -static GtkWidget *gtk_markup_label_new(const gchar * str) +static GtkWidget *markup_label_new(const gchar * str) { GtkWidget *label = gtk_label_new(str); g_object_set(G_OBJECT(label), "use-markup", TRUE, NULL); return label; } -static gboolean ui_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpointer user_data) +static void window_mapped_cb (GtkWidget * widget, void * unused) { - if (ui_playlist_notebook_tab_title_editing != NULL && - event->keyval != GDK_KP_Enter && event->keyval != GDK_Escape) - { - GtkWidget *entry = g_object_get_data(G_OBJECT(ui_playlist_notebook_tab_title_editing), "entry"); - gtk_widget_event(entry, (GdkEvent*) event); - return TRUE; - } + gtk_widget_grab_focus (playlist_get_treeview (aud_playlist_get_active ())); +} +static gboolean window_keypress_cb (GtkWidget * widget, GdkEventKey * event, void * unused) +{ switch (event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK)) { - case 0: - switch (event->keyval) - { - case GDK_F2: - ui_playlist_notebook_edit_tab_title(NULL); - break; - -#ifdef HAVE_VOLUME - case GDK_minus: //FIXME - set_volume_diff(-5); - break; - - case GDK_plus: //FIXME - set_volume_diff(5); - break; -#endif - - case GDK_Left: - case GDK_KP_Left: - case GDK_KP_7: - if (aud_drct_get_playing ()) - aud_drct_seek (aud_drct_get_time () - 5000); - break; - - case GDK_Right: - case GDK_KP_Right: - case GDK_KP_9: - if (aud_drct_get_playing ()) - aud_drct_seek (aud_drct_get_time () + 5000); - break; - - case GDK_KP_4: - aud_drct_pl_prev(); - break; - - case GDK_KP_6: - aud_drct_pl_next(); - break; - - case GDK_KP_Insert: - action_jump_to_file(); - break; - - case GDK_space: - if (aud_drct_get_playing()) - aud_drct_pause(); - else - aud_drct_play(); - break; - - case GDK_Escape: - ; /* bleah, label must come before statement */ - gint list = aud_playlist_get_active (); - playlist_scroll_to_row (playlist_get_treeview (list), - aud_playlist_get_position (list)); - - if (ui_playlist_notebook_tab_title_editing != NULL) - return FALSE; - - break; - - case GDK_Tab: - action_playlist_next(); - break; - - default: - return FALSE; - } + case GDK_CONTROL_MASK: + switch (event->keyval) + { + case GDK_ISO_Left_Tab: + case GDK_Tab: + aud_playlist_set_active ((aud_playlist_get_active () + 1) % + aud_playlist_count ()); break; - case GDK_SHIFT_MASK: + default: + return FALSE; + } + break; + case (GDK_CONTROL_MASK | GDK_SHIFT_MASK): + switch (event->keyval) { - switch (event->keyval) - { - case GDK_ISO_Left_Tab: - case GDK_Tab: - action_playlist_prev(); - break; - - default: - return FALSE; - } + case GDK_ISO_Left_Tab: + case GDK_Tab: + aud_playlist_set_active (aud_playlist_get_active () ? + aud_playlist_get_active () - 1 : aud_playlist_count () - 1); break; + default: + return FALSE; } - default: + break; + case GDK_MOD1_MASK: + switch (event->keyval) + { + case GDK_Left: + if (aud_drct_get_playing ()) + aud_drct_seek (aud_drct_get_time () - 5000); + break; + case GDK_Right: + if (aud_drct_get_playing ()) + aud_drct_seek (aud_drct_get_time () + 5000); + break; + default: return FALSE; + } + default: + return FALSE; } return TRUE; } -static void stop_after_song_toggled (void * data, void * user) +static gboolean playlist_keypress_cb (GtkWidget * widget, GdkEventKey * event, void * unused) { - check_set (toggleaction_group_others, "stop after current song", - aud_cfg->stopaftersong); + switch (event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK)) + { + case 0: + switch (event->keyval) + { + case GDK_Escape: + ui_playlist_notebook_position (GINT_TO_POINTER (aud_playlist_get_active ()), NULL); + return TRUE; + case GDK_Delete: + playlist_delete_selected (); + return TRUE; + case GDK_Menu: + popup_menu_rclick (0, event->time); + return TRUE; + } + + break; + case GDK_CONTROL_MASK: + switch (event->keyval) + { + case 'x': + playlist_cut (); + return TRUE; + case 'c': + playlist_copy (); + return TRUE; + case 'v': + playlist_paste (); + return TRUE; + case 'a': + aud_playlist_select_all (aud_playlist_get_active (), TRUE); + return TRUE; + } + + break; + } + + return FALSE; +} + +static void update_toggles (void * data, void * user) +{ + gtk_toggle_button_set_active ((GtkToggleButton *) button_repeat, aud_get_bool (NULL, "repeat")); + gtk_toggle_button_set_active ((GtkToggleButton *) button_shuffle, aud_get_bool (NULL, "shuffle")); +} + +static void toggle_repeat (GtkToggleButton * button, void * unused) +{ + aud_set_bool (NULL, "repeat", gtk_toggle_button_get_active (button)); +} + +static void toggle_shuffle (GtkToggleButton * button, void * unused) +{ + aud_set_bool (NULL, "shuffle", gtk_toggle_button_get_active (button)); +} + +static void toggle_search_tool (GtkToggleButton * button, void * unused) +{ + aud_plugin_enable (search_tool, gtk_toggle_button_get_active (button)); +} + +static gboolean search_tool_toggled (PluginHandle * plugin, void * unused) +{ + gtk_toggle_button_set_active ((GtkToggleButton *) search_button, + aud_plugin_get_enabled (plugin)); + return TRUE; +} + +static void config_save (void) +{ + save_window_size (); + layout_save (); + pw_col_save (); } static void ui_hooks_associate(void) { hook_associate ("title change", (HookFunction) title_change_cb, NULL); hook_associate ("playback seek", (HookFunction) time_counter_cb, NULL); - hook_associate("playback begin", ui_playback_begin, NULL); - hook_associate("playback stop", ui_playback_stop, NULL); - hook_associate("playlist insert", ui_playlist_created, NULL); - hook_associate("playlist delete", ui_playlist_destroyed, NULL); - hook_associate("mainwin show", ui_mainwin_toggle_visibility, NULL); + hook_associate ("playback begin", (HookFunction) ui_playback_begin, NULL); + hook_associate ("playback ready", (HookFunction) ui_playback_ready, NULL); + hook_associate ("playback pause", (HookFunction) pause_cb, NULL); + hook_associate ("playback unpause", (HookFunction) pause_cb, NULL); + hook_associate ("playback stop", (HookFunction) ui_playback_stop, NULL); hook_associate("playlist update", ui_playlist_notebook_update, NULL); - hook_associate("toggle stop after song", stop_after_song_toggled, NULL); + hook_associate ("playlist activate", ui_playlist_notebook_activate, NULL); + hook_associate ("playlist set playing", ui_playlist_notebook_set_playing, NULL); + hook_associate ("playlist position", ui_playlist_notebook_position, NULL); + hook_associate ("set shuffle", update_toggles, NULL); + hook_associate ("set repeat", update_toggles, NULL); + hook_associate ("config save", (HookFunction) config_save, NULL); } static void ui_hooks_disassociate(void) { hook_dissociate ("title change", (HookFunction) title_change_cb); hook_dissociate ("playback seek", (HookFunction) time_counter_cb); - hook_dissociate("playback begin", ui_playback_begin); - hook_dissociate("playback stop", ui_playback_stop); - hook_dissociate("playlist insert", ui_playlist_created); - hook_dissociate("playlist delete", ui_playlist_destroyed); - hook_dissociate("mainwin show", ui_mainwin_toggle_visibility); + hook_dissociate ("playback begin", (HookFunction) ui_playback_begin); + hook_dissociate ("playback ready", (HookFunction) ui_playback_ready); + hook_dissociate ("playback pause", (HookFunction) pause_cb); + hook_dissociate ("playback unpause", (HookFunction) pause_cb); + hook_dissociate ("playback stop", (HookFunction) ui_playback_stop); hook_dissociate("playlist update", ui_playlist_notebook_update); - hook_dissociate("toggle stop after song", stop_after_song_toggled); + hook_dissociate ("playlist activate", ui_playlist_notebook_activate); + hook_dissociate ("playlist set playing", ui_playlist_notebook_set_playing); + hook_dissociate ("playlist position", ui_playlist_notebook_position); + hook_dissociate ("set shuffle", update_toggles); + hook_dissociate ("set repeat", update_toggles); + hook_dissociate ("config save", (HookFunction) config_save); } -static gboolean _ui_initialize(InterfaceCbs * cbs) +static gboolean init (void) { + search_tool = aud_plugin_lookup_basename ("search-tool"); + GtkWidget *tophbox; /* box to contain toolbar and shbox */ GtkWidget *buttonbox; /* contains buttons like "open", "next" */ GtkWidget *shbox; /* box for volume control + slider + time combo --nenolod */ - GtkWidget *button_open, *button_add, *button_play, *button_pause, *button_stop, *button_previous, *button_next; GtkWidget *evbox; - GtkAccelGroup *accel; - gtkui_cfg_load(); - - multi_column_view = config.multi_column_view; + aud_config_set_defaults ("gtkui", gtkui_defaults); audgui_set_default_icon(); audgui_register_stock_icons(); - ui_manager_init(); - ui_manager_create_menus(); + pw_col_init (); - window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_default_size(GTK_WINDOW(window), MAINWIN_DEFAULT_WIDTH, MAINWIN_DEFAULT_HEIGHT); + gint x = aud_get_int ("gtkui", "player_x"); + gint y = aud_get_int ("gtkui", "player_y"); + gint w = aud_get_int ("gtkui", "player_width"); + gint h = aud_get_int ("gtkui", "player_height"); - if (config.save_window_position && config.player_width && config.player_height) - gtk_window_resize(GTK_WINDOW(window), config.player_width, config.player_height); + window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_default_size ((GtkWindow *) window, w, h); + gtk_window_set_keep_above ((GtkWindow *) window, aud_get_bool ("gtkui", "always_on_top")); - if (config.save_window_position && config.player_x != -1) - gtk_window_move(GTK_WINDOW(window), config.player_x, config.player_y); - else - gtk_window_move(GTK_WINDOW(window), MAINWIN_DEFAULT_POS_X, MAINWIN_DEFAULT_POS_Y); + if (aud_get_bool ("gtkui", "save_window_position") && (x != -1 || y != -1)) + gtk_window_move ((GtkWindow *) window, x, y); g_signal_connect(G_OBJECT(window), "delete-event", G_CALLBACK(window_delete), NULL); - vbox = gtk_vbox_new(FALSE, 0); - gtk_container_add(GTK_CONTAINER(window), vbox); + accel = gtk_accel_group_new (); + gtk_window_add_accel_group ((GtkWindow *) window, accel); - menu = ui_manager_get_menus(); - gtk_box_pack_start(GTK_BOX(vbox), menu, FALSE, TRUE, 0); + vbox_outer = gtk_vbox_new (FALSE, 0); + gtk_container_add ((GtkContainer *) window, vbox_outer); - accel = ui_manager_get_accel_group(); - gtk_window_add_accel_group(GTK_WINDOW(window), accel); + menu_box = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start ((GtkBox *) vbox_outer, menu_box, FALSE, FALSE, 0); + show_menu (aud_get_bool ("gtkui", "menu_visible")); tophbox = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(vbox), tophbox, FALSE, TRUE, 0); + gtk_box_pack_start ((GtkBox *) vbox_outer, tophbox, FALSE, FALSE, 0); buttonbox = gtk_hbox_new(FALSE, 0); - button_open = gtk_toolbar_button_add(buttonbox, button_open_pressed, GTK_STOCK_OPEN); - button_add = gtk_toolbar_button_add(buttonbox, button_add_pressed, GTK_STOCK_ADD); - button_play = gtk_toolbar_button_add(buttonbox, button_play_pressed, GTK_STOCK_MEDIA_PLAY); - button_pause = gtk_toolbar_button_add(buttonbox, button_pause_pressed, GTK_STOCK_MEDIA_PAUSE); - button_stop = gtk_toolbar_button_add(buttonbox, button_stop_pressed, GTK_STOCK_MEDIA_STOP); - button_previous = gtk_toolbar_button_add(buttonbox, button_previous_pressed, GTK_STOCK_MEDIA_PREVIOUS); - button_next = gtk_toolbar_button_add(buttonbox, button_next_pressed, GTK_STOCK_MEDIA_NEXT); + + if (search_tool) + { + search_button = toggle_button_new (GTK_STOCK_FIND, NULL, toggle_search_tool, NULL); + gtk_box_pack_start ((GtkBox *) tophbox, search_button, FALSE, FALSE, 0); + gtk_toggle_button_set_active ((GtkToggleButton *) search_button, + aud_plugin_get_enabled (search_tool)); + aud_plugin_add_watch (search_tool, search_tool_toggled, NULL); + } + + toolbar_button_add(buttonbox, button_open_pressed, GTK_STOCK_OPEN); + toolbar_button_add(buttonbox, button_add_pressed, GTK_STOCK_ADD); + button_play = toolbar_button_add (buttonbox, aud_drct_play, GTK_STOCK_MEDIA_PLAY); + button_pause = toolbar_button_add (buttonbox, aud_drct_pause, GTK_STOCK_MEDIA_PAUSE); + button_stop = toolbar_button_add (buttonbox, aud_drct_stop, GTK_STOCK_MEDIA_STOP); + toolbar_button_add (buttonbox, aud_drct_pl_prev, GTK_STOCK_MEDIA_PREVIOUS); + toolbar_button_add (buttonbox, aud_drct_pl_next, GTK_STOCK_MEDIA_NEXT); + + /* Workaround: Show the play and pause buttons and then hide them again in + * order to coax GTK into loading icons for them. -jlindgren */ + gtk_widget_show_all (button_play); + gtk_widget_show_all (button_pause); + gtk_widget_hide (button_play); + gtk_widget_hide (button_pause); + + gtk_widget_set_no_show_all (button_play, TRUE); + gtk_widget_set_no_show_all (button_pause, TRUE); gtk_box_pack_start(GTK_BOX(tophbox), buttonbox, FALSE, FALSE, 0); @@ -746,54 +728,56 @@ slider = gtk_hscale_new(NULL); gtk_scale_set_draw_value(GTK_SCALE(slider), FALSE); - /* TODO: make this configureable */ - gtk_range_set_update_policy(GTK_RANGE(slider), GTK_UPDATE_DISCONTINUOUS); gtk_widget_set_size_request(slider, 120, -1); gtk_widget_set_can_focus(slider, FALSE); - gtk_box_pack_start(GTK_BOX(shbox), slider, TRUE, TRUE, 0); + gtk_box_pack_start ((GtkBox *) shbox, slider, TRUE, TRUE, 6); + gtk_widget_set_no_show_all (slider, TRUE); - label_time = gtk_markup_label_new(NULL); - gtk_box_pack_start(GTK_BOX(shbox), label_time, FALSE, FALSE, 5); + label_time = markup_label_new(NULL); + gtk_widget_set_no_show_all (label_time, TRUE); + + gtk_box_pack_end ((GtkBox *) shbox, label_time, FALSE, FALSE, 6); -#ifdef HAVE_VOLUME volume = gtk_volume_button_new(); gtk_button_set_relief(GTK_BUTTON(volume), GTK_RELIEF_NONE); gtk_scale_button_set_adjustment(GTK_SCALE_BUTTON(volume), GTK_ADJUSTMENT(gtk_adjustment_new(0, 0, 100, 1, 5, 0))); gtk_widget_set_can_focus(volume, FALSE); - /* Set the default volume to the balance average. - (I'll add balance control later) -Ryan */ + gint lvol = 0, rvol = 0; aud_drct_get_volume(&lvol, &rvol); gtk_scale_button_set_value(GTK_SCALE_BUTTON(volume), (lvol + rvol) / 2); - gtk_box_pack_start(GTK_BOX(shbox), volume, FALSE, FALSE, 0); -#endif - playlist_box = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(vbox), playlist_box, TRUE, TRUE, 0); + gtk_box_pack_end ((GtkBox *) tophbox, volume, FALSE, FALSE, 0); + + button_shuffle = toggle_button_new ("media-playlist-shuffle", "SHUF", + toggle_shuffle, NULL); + gtk_box_pack_end ((GtkBox *) tophbox, button_shuffle, FALSE, FALSE, 0); + button_repeat = toggle_button_new ("media-playlist-repeat", "REP", + toggle_repeat, NULL); + gtk_box_pack_end ((GtkBox *) tophbox, button_repeat, FALSE, FALSE, 0); + + layout_load (); + + GtkWidget * layout = layout_new (); + gtk_box_pack_start ((GtkBox *) vbox_outer, layout, TRUE, TRUE, 0); + + vbox = gtk_vbox_new (FALSE, 0); + layout_add_center (vbox); /* Create playlist notebook */ ui_playlist_notebook_new (); - g_object_ref (G_OBJECT(UI_PLAYLIST_NOTEBOOK)); + gtk_box_pack_start ((GtkBox *) vbox, (GtkWidget *) UI_PLAYLIST_NOTEBOOK, TRUE, TRUE, 0); - if (config.statusbar_visible) + if (aud_get_bool ("gtkui", "infoarea_visible")) { - AUDDBG("statusbar setup\n"); - statusbar = ui_statusbar_new(); - gtk_box_pack_end(GTK_BOX(vbox), statusbar, FALSE, FALSE, 3); + infoarea = ui_infoarea_new (); + gtk_box_pack_end (GTK_BOX(vbox), infoarea, FALSE, FALSE, 0); } - if (config.vis_position == VIS_IN_TABS) + if (aud_get_bool ("gtkui", "statusbar_visible")) { - AUDDBG("vis in tabs\n"); - gtk_box_pack_end(GTK_BOX(playlist_box), (GtkWidget *) - UI_PLAYLIST_NOTEBOOK, TRUE, TRUE, 0); - } - - if (config.infoarea_visible) - { - AUDDBG ("infoarea setup\n"); - infoarea = ui_infoarea_new (); - gtk_box_pack_end (GTK_BOX(vbox), infoarea, FALSE, FALSE, 0); + statusbar = ui_statusbar_new (); + gtk_box_pack_end ((GtkBox *) vbox_outer, statusbar, FALSE, FALSE, 0); } AUDDBG("hooks associate\n"); @@ -802,93 +786,157 @@ AUDDBG("playlist associate\n"); ui_playlist_notebook_populate(); - slider_change_handler_id = g_signal_connect(slider, "value-changed", G_CALLBACK(ui_slider_value_changed_cb), NULL); - g_signal_connect(slider, "change-value", G_CALLBACK(ui_slider_change_value_cb), NULL); g_signal_connect(slider, "button-press-event", G_CALLBACK(ui_slider_button_press_cb), NULL); g_signal_connect(slider, "button-release-event", G_CALLBACK(ui_slider_button_release_cb), NULL); -#ifdef HAVE_VOLUME volume_change_handler_id = g_signal_connect(volume, "value-changed", G_CALLBACK(ui_volume_value_changed_cb), NULL); g_signal_connect(volume, "pressed", G_CALLBACK(ui_volume_pressed_cb), NULL); g_signal_connect(volume, "released", G_CALLBACK(ui_volume_released_cb), NULL); update_volume_timeout_source = g_timeout_add(250, (GSourceFunc) ui_volume_slider_update, volume); -#endif - g_signal_connect(window, "key-press-event", G_CALLBACK(ui_key_press_cb), NULL); + g_signal_connect (window, "map-event", (GCallback) window_mapped_cb, NULL); + g_signal_connect (window, "key-press-event", (GCallback) window_keypress_cb, NULL); + g_signal_connect (UI_PLAYLIST_NOTEBOOK, "key-press-event", (GCallback) playlist_keypress_cb, NULL); - gtk_widget_show_all(vbox); + if (aud_drct_get_playing ()) + { + ui_playback_begin (); + if (aud_drct_get_ready ()) + ui_playback_ready (); + } + else + ui_playback_stop (); - if (!config.menu_visible) - gtk_widget_hide(menu); + title_change_cb (); - setup_panes (); + gtk_widget_show_all (vbox_outer); - if (config.player_visible) - ui_mainwin_toggle_visibility(GINT_TO_POINTER(config.player_visible), NULL); + if (aud_get_bool ("gtkui", "player_visible")) + ui_show (TRUE); - if (aud_drct_get_playing()) - ui_playback_begin(NULL, NULL); - else - ui_playback_stop (NULL, NULL); + update_toggles (NULL, NULL); - AUDDBG("check menu settings\n"); - check_set(toggleaction_group_others, "view menu", config.menu_visible); - check_set(toggleaction_group_others, "view playlists", config.playlist_visible); - check_set(toggleaction_group_others, "view infoarea", config.infoarea_visible); - check_set(toggleaction_group_others, "view statusbar", config.statusbar_visible); - check_set(toggleaction_group_others, "playback repeat", aud_cfg->repeat); - check_set(toggleaction_group_others, "playback shuffle", aud_cfg->shuffle); - check_set(toggleaction_group_others, "playback no playlist advance", aud_cfg->no_playlist_advance); - check_set(toggleaction_group_others, "stop after current song", aud_cfg->stopaftersong); - - AUDDBG("callback setup\n"); - - /* Register interface callbacks */ - cbs->show_prefs_window = show_preferences_window; - cbs->run_filebrowser = audgui_run_filebrowser; - cbs->hide_filebrowser = audgui_hide_filebrowser; - cbs->toggle_visibility = ui_toggle_visibility; - cbs->show_error = ui_show_error; - cbs->show_jump_to_track = audgui_jump_to_track; - cbs->hide_jump_to_track = audgui_jump_to_track_hide; - cbs->show_about_window = audgui_show_about_window; - cbs->hide_about_window = audgui_hide_about_window; - cbs->run_gtk_plugin = (void *) ui_run_gtk_plugin; - cbs->stop_gtk_plugin = (void *) ui_stop_gtk_plugin; + menu_rclick = make_menu_rclick (accel); + menu_tab = make_menu_tab (accel); return TRUE; } -static gboolean _ui_finalize(void) +static void cleanup (void) { if (error_win) gtk_widget_destroy (error_win); + if (menu_main) + gtk_widget_destroy (menu_main); + + gtk_widget_destroy (menu_rclick); + gtk_widget_destroy (menu_tab); + if (update_song_timeout_source) { g_source_remove(update_song_timeout_source); update_song_timeout_source = 0; } -#ifdef HAVE_VOLUME if (update_volume_timeout_source) { g_source_remove(update_volume_timeout_source); update_volume_timeout_source = 0; } -#endif - save_window_size (); - gtkui_cfg_save(); - gtkui_cfg_free(); + if (delayed_title_change_source) + { + g_source_remove (delayed_title_change_source); + delayed_title_change_source = 0; + } + ui_hooks_disassociate(); - /* ui_manager_destroy() must be called to detach plugin services menus - * before any widget are destroyed. -jlindgren */ - ui_manager_destroy (); + if (search_tool) + aud_plugin_remove_watch (search_tool, search_tool_toggled, NULL); - g_object_unref ((GObject *) UI_PLAYLIST_NOTEBOOK); + pw_col_cleanup (); gtk_widget_destroy (window); - return TRUE; + layout_cleanup (); +} + +void show_menu (gboolean show) +{ + aud_set_bool ("gtkui", "menu_visible", show); + + if (show) + { + if (menu_main) + gtk_widget_destroy (menu_main); + + if (! menu) + { + menu = make_menu_bar (accel); + g_signal_connect (menu, "destroy", (GCallback) gtk_widget_destroyed, + & menu); + gtk_widget_show (menu); + gtk_container_add ((GtkContainer *) menu_box, menu); + } + } + else + { + if (menu) + gtk_widget_destroy (menu); + + if (! menu_main) + { + menu_main = make_menu_main (accel); + g_signal_connect (menu_main, "destroy", (GCallback) + gtk_widget_destroyed, & menu_main); + } + } +} + +void show_infoarea (gboolean show) +{ + aud_set_bool ("gtkui", "infoarea_visible", show); + + if (show && ! infoarea) + { + infoarea = ui_infoarea_new (); + gtk_box_pack_end ((GtkBox *) vbox, infoarea, FALSE, FALSE, 0); + gtk_widget_show_all (infoarea); + } + + if (! show && infoarea) + { + gtk_widget_destroy (infoarea); + infoarea = NULL; + } +} + +void show_statusbar (gboolean show) +{ + aud_set_bool ("gtkui", "statusbar_visible", show); + + if (show && ! statusbar) + { + statusbar = ui_statusbar_new (); + gtk_box_pack_end ((GtkBox *) vbox_outer, statusbar, FALSE, FALSE, 0); + gtk_widget_show_all (statusbar); + } + + if (! show && statusbar) + { + gtk_widget_destroy (statusbar); + statusbar = NULL; + } +} + +void popup_menu_rclick (guint button, guint32 time) +{ + gtk_menu_popup ((GtkMenu *) menu_rclick, NULL, NULL, NULL, NULL, button, + time); +} + +void popup_menu_tab (guint button, guint32 time) +{ + gtk_menu_popup ((GtkMenu *) menu_tab, NULL, NULL, NULL, NULL, button, time); } diff -Nru audacious-plugins-2.4.4/src/gtkui/ui_gtk.h audacious-plugins-3.2/src/gtkui/ui_gtk.h --- audacious-plugins-2.4.4/src/gtkui/ui_gtk.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/ui_gtk.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -/* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2008 Audacious development team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. - */ - -#ifndef UI_NEW_H -#define UI_NEW_H - -extern gboolean multi_columns_view; - -extern Interface gtkui_interface; - -extern GtkWidget *window; -extern GtkWidget *vbox; -extern GtkWidget *menu; -extern GtkWidget *playlist_box; -extern GtkWidget *infoarea; -extern GtkWidget *statusbar; - -void setup_panes (void); -void show_preferences_window(gboolean show); - -#endif diff -Nru audacious-plugins-2.4.4/src/gtkui/ui_infoarea.c audacious-plugins-3.2/src/gtkui/ui_infoarea.c --- audacious-plugins-2.4.4/src/gtkui/ui_infoarea.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/ui_infoarea.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ /* * Copyright (C) 2010 William Pitcock . - * Copyright (C) 2010 John Lindgren . + * Copyright (C) 2010-2011 John Lindgren . * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,123 +18,125 @@ * Audacious or using our public API to be a derived work. */ -#include +#include +#include + #include -#include #include +#include #include #include #include -#include #include -#include - -#include "gtkui_cfg.h" -#include "ui_gtk.h" -#include "ui_playlist_widget.h" -#include "ui_playlist_model.h" -#include "ui_manager.h" #include "ui_infoarea.h" -#define DEFAULT_ARTWORK DATA_DIR "/images/audio.png" -#define STREAM_ARTWORK DATA_DIR "/images/streambrowser-64x64.png" +#define SPACING 8 #define ICON_SIZE 64 -#define SPECT_BANDS 12 -#define VIS_OFFSET (10 + 12 * SPECT_BANDS + 7) +#define HEIGHT (ICON_SIZE + 2 * SPACING) -#if ! GTK_CHECK_VERSION (2, 18, 0) -#define gtk_widget_get_allocation(w, ap) (* (ap) = (w)->allocation) -#endif +#define VIS_BANDS 12 +#define VIS_WIDTH (8 * VIS_BANDS - 2) +#define VIS_CENTER (ICON_SIZE * 5 / 8 + SPACING) +#define VIS_DELAY 2 /* delay before falloff in frames */ +#define VIS_FALLOFF 2 /* falloff in pixels per frame */ typedef struct { - GtkWidget *parent; + GtkWidget * box, * main, * vis; - gchar * title, * artist, * album; - gchar * last_title, * last_artist, * last_album; + gchar * title, * artist, * album; /* pooled */ + gchar * last_title, * last_artist, * last_album; /* pooled */ gfloat alpha, last_alpha; gboolean stopped; gint fade_timeout; - guint8 visdata[SPECT_BANDS]; + gchar bars[VIS_BANDS]; + gchar delay[VIS_BANDS]; GdkPixbuf * pb, * last_pb; } UIInfoArea; -static const gfloat alpha_step = 0.10; - -static void ui_infoarea_draw_visualizer (UIInfoArea * area); - /****************************************************************************/ -static void ui_infoarea_visualization_timeout (const VisNode * vis, UIInfoArea * - area) +static UIInfoArea * area = NULL; + +static void vis_render_cb (const gfloat * freq) { - const gfloat xscale[SPECT_BANDS + 1] = {0.00, 0.59, 1.52, 3.00, 5.36, 9.10, - 15.0, 24.5, 39.4, 63.2, 101, 161, 256}; /* logarithmic scale - 1 */ - gint16 mono_freq[2][256]; + g_return_if_fail (area); - aud_calc_mono_freq(mono_freq, vis->data, vis->nch); + const gfloat xscale[VIS_BANDS + 1] = {0.00, 0.59, 1.52, 3.00, 5.36, 9.10, + 15.0, 24.5, 39.4, 63.2, 101, 161, 256}; /* logarithmic scale - 1 */ - for (gint i = 0; i < SPECT_BANDS; i ++) + for (gint i = 0; i < VIS_BANDS; i ++) { gint a = ceil (xscale[i]); gint b = floor (xscale[i + 1]); - gint n = 0; + gfloat n = 0; if (b < a) - n += mono_freq[0][b] * (xscale[i + 1] - xscale[i]); + n += freq[b] * (xscale[i + 1] - xscale[i]); else { if (a > 0) - n += mono_freq[0][a - 1] * (a - xscale[i]); + n += freq[a - 1] * (a - xscale[i]); for (; a < b; a ++) - n += mono_freq[0][a]; + n += freq[a]; if (b < 256) - n += mono_freq[0][b] * (xscale[i + 1] - b); + n += freq[b] * (xscale[i + 1] - b); } /* 40 dB range */ - /* 0.00305 == 1 / 32767 * 10^(40/20) */ - n = 32 * log10 (n * 0.00305); - n = CLAMP (n, 0, 64); - area->visdata[i] = MAX (area->visdata[i] - 3, n); + int x = 20 * log10 (n * 100); + x = CLAMP (x, 0, 40); + + area->bars[i] -= MAX (0, VIS_FALLOFF - area->delay[i]); + + if (area->delay[i]) + area->delay[i] --; + + if (x > area->bars[i]) + { + area->bars[i] = x; + area->delay[i] = VIS_DELAY; + } } -#if GTK_CHECK_VERSION (2, 20, 0) - if (gtk_widget_is_drawable (area->parent)) -#else - if (GTK_WIDGET_DRAWABLE (area->parent)) -#endif - ui_infoarea_draw_visualizer (area); + gtk_widget_queue_draw (area->vis); } -static void vis_clear_cb (void * hook_data, UIInfoArea * area) +static void vis_clear_cb (void) { - memset (area->visdata, 0, sizeof area->visdata); + g_return_if_fail (area); + + memset (area->bars, 0, sizeof area->bars); + memset (area->delay, 0, sizeof area->delay); + + gtk_widget_queue_draw (area->vis); } /****************************************************************************/ -static void ui_infoarea_draw_text (UIInfoArea * area, gint x, gint y, gint +static void clear (GtkWidget * widget, cairo_t * cr) +{ + GtkAllocation alloc; + gtk_widget_get_allocation (widget, & alloc); + cairo_rectangle (cr, 0, 0, alloc.width, alloc.height); + cairo_fill (cr); +} + +static void draw_text (GtkWidget * widget, cairo_t * cr, gint x, gint y, gint width, gfloat r, gfloat g, gfloat b, gfloat a, const gchar * font, const gchar * text) { - cairo_t *cr; - PangoLayout *pl; - PangoFontDescription *desc; - gchar *str; - - str = g_markup_escape_text(text, -1); + gchar * str = g_markup_escape_text (text, -1); - cr = gdk_cairo_create(area->parent->window); cairo_move_to(cr, x, y); cairo_set_operator(cr, CAIRO_OPERATOR_ATOP); cairo_set_source_rgba(cr, r, g, b, a); - desc = pango_font_description_from_string(font); - pl = gtk_widget_create_pango_layout(area->parent, NULL); + PangoFontDescription * desc = pango_font_description_from_string (font); + PangoLayout * pl = gtk_widget_create_pango_layout (widget, NULL); pango_layout_set_markup(pl, str, -1); pango_layout_set_font_description(pl, desc); pango_font_description_free(desc); @@ -143,7 +145,6 @@ pango_cairo_show_layout(cr, pl); - cairo_destroy(cr); g_object_unref(pl); g_free(str); } @@ -218,7 +219,7 @@ static void get_color (GtkWidget * widget, gint i, gfloat * r, gfloat * g, gfloat * b) { - GdkColor * c = widget->style->base + GTK_STATE_SELECTED; + GdkColor * c = (gtk_widget_get_style (widget))->base + GTK_STATE_SELECTED; gfloat h, s, v, n; rgb_to_hsv (c->red / 65535.0, c->green / 65535.0, c->blue / 65535.0, & h, @@ -230,155 +231,135 @@ s = 0.75; } - n = sqrt (i / 11.0); - s = sqrt (s) * (1 - 0.75 * n); + n = i / 11.0; + s = 1 - 0.9 * n; v = 0.75 + 0.25 * n; hsv_to_rgb (h, s, v, r, g, b); } -static void ui_infoarea_draw_visualizer (UIInfoArea * area) +#if GTK_CHECK_VERSION (3, 0, 0) +static gboolean draw_vis_cb (GtkWidget * vis, cairo_t * cr) { - GtkAllocation alloc; - cairo_t *cr; +#else +static gboolean expose_vis_cb (GtkWidget * vis, GdkEventExpose * event) +{ + cairo_t * cr = gdk_cairo_create (gtk_widget_get_window (vis)); +#endif + g_return_val_if_fail (area, FALSE); - gtk_widget_get_allocation(GTK_WIDGET(area->parent), &alloc); - cr = gdk_cairo_create(area->parent->window); + clear (vis, cr); - for (auto gint i = 0; i < SPECT_BANDS; i++) + for (gint i = 0; i < VIS_BANDS; i++) { - gint x = alloc.width - VIS_OFFSET + 10 + 12 * i; + gint x = SPACING + 8 * i; + gint t = VIS_CENTER - area->bars[i]; + gint m = MIN (VIS_CENTER + area->bars[i], HEIGHT); + gfloat r, g, b; + get_color (vis, i, & r, & g, & b); - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_rectangle (cr, x, 10, 9, 64 - area->visdata[i]); + cairo_set_source_rgb (cr, r, g, b); + cairo_rectangle (cr, x, t, 6, VIS_CENTER - t); cairo_fill (cr); - get_color (area->parent, i, & r, & g, & b); - cairo_set_source_rgb (cr, r, g, b); - cairo_rectangle (cr, x, 74 - area->visdata[i], 9, area->visdata[i]); + cairo_set_source_rgb (cr, r * 0.3, g * 0.3, b * 0.3); + cairo_rectangle (cr, x, VIS_CENTER, 6, m - VIS_CENTER); cairo_fill (cr); } - cairo_destroy(cr); -} - -static GdkPixbuf * get_current_album_art (void) -{ - gint playlist = aud_playlist_get_playing (); - const gchar * filename = aud_playlist_entry_get_filename (playlist, - aud_playlist_get_position (playlist)); - return audgui_pixbuf_for_file (filename); +#if ! GTK_CHECK_VERSION (3, 0, 0) + cairo_destroy (cr); +#endif + return TRUE; } -void ui_infoarea_draw_album_art (UIInfoArea * area) +static void draw_album_art (cairo_t * cr) { - cairo_t * cr; - - if (aud_drct_get_playing () && area->pb == NULL) - { - area->pb = get_current_album_art (); - - if (area->pb == NULL) - area->pb = gdk_pixbuf_new_from_file (DEFAULT_ARTWORK, NULL); - - if (area->pb != NULL) - audgui_pixbuf_scale_within (& area->pb, ICON_SIZE); - } - - cr = gdk_cairo_create (area->parent->window); + g_return_if_fail (area); if (area->pb != NULL) { - gdk_cairo_set_source_pixbuf (cr, area->pb, 10.0, 10.0); + gdk_cairo_set_source_pixbuf (cr, area->pb, SPACING, SPACING); cairo_paint_with_alpha (cr, area->alpha); } if (area->last_pb != NULL) { - gdk_cairo_set_source_pixbuf (cr, area->last_pb, 10.0, 10.0); + gdk_cairo_set_source_pixbuf (cr, area->last_pb, SPACING, SPACING); cairo_paint_with_alpha (cr, area->last_alpha); } - - cairo_destroy (cr); } -void ui_infoarea_draw_title (UIInfoArea * area) +static void draw_title (cairo_t * cr) { + g_return_if_fail (area); + GtkAllocation alloc; - gint width; + gtk_widget_get_allocation (area->main, & alloc); - gtk_widget_get_allocation (area->parent, & alloc); - width = alloc.width - (86 + VIS_OFFSET + 6); + gint x = ICON_SIZE + SPACING * 2; + gint width = alloc.width - x; if (area->title != NULL) - ui_infoarea_draw_text (area, 86, 8, width, 1, 1, 1, area->alpha, + draw_text (area->main, cr, x, SPACING, width, 1, 1, 1, area->alpha, "Sans 18", area->title); if (area->last_title != NULL) - ui_infoarea_draw_text (area, 86, 8, width, 1, 1, 1, area->last_alpha, + draw_text (area->main, cr, x, SPACING, width, 1, 1, 1, area->last_alpha, "Sans 18", area->last_title); if (area->artist != NULL) - ui_infoarea_draw_text (area, 86, 42, width, 1, 1, 1, area->alpha, - "Sans 9", area->artist); + draw_text (area->main, cr, x, SPACING + ICON_SIZE / 2, width, 1, 1, 1, + area->alpha, "Sans 9", area->artist); if (area->last_artist != NULL) - ui_infoarea_draw_text (area, 86, 42, width, 1, 1, 1, area->last_alpha, - "Sans 9", area->last_artist); + draw_text (area->main, cr, x, SPACING + ICON_SIZE / 2, width, 1, 1, 1, + area->last_alpha, "Sans 9", area->last_artist); if (area->album != NULL) - ui_infoarea_draw_text (area, 86, 58, width, 0.7, 0.7, 0.7, area->alpha, - "Sans 9", area->album); + draw_text (area->main, cr, x, SPACING + ICON_SIZE * 3 / 4, width, 0.7, + 0.7, 0.7, area->alpha, "Sans 9", area->album); if (area->last_album != NULL) - ui_infoarea_draw_text (area, 86, 58, width, 0.7, 0.7, 0.7, - area->last_alpha, "Sans 9", area->last_album); + draw_text (area->main, cr, x, SPACING + ICON_SIZE * 3 / 4, width, 0.7, + 0.7, 0.7, area->last_alpha, "Sans 9", area->last_album); } -void -ui_infoarea_draw_background(UIInfoArea *area) +#if GTK_CHECK_VERSION (3, 0, 0) +static gboolean draw_cb (GtkWidget * widget, cairo_t * cr) { - GtkWidget *evbox; - GtkAllocation alloc; - cairo_t *cr; - - g_return_if_fail(area != NULL); - - evbox = area->parent; - cr = gdk_cairo_create(evbox->window); - - gtk_widget_get_allocation(GTK_WIDGET(evbox), &alloc); - - cairo_rectangle(cr, 0, 0, alloc.width, alloc.height); - cairo_paint(cr); +#else +static gboolean expose_cb (GtkWidget * widget, GdkEventExpose * event) +{ + cairo_t * cr = gdk_cairo_create (gtk_widget_get_window (widget)); +#endif + g_return_val_if_fail (area, FALSE); - cairo_destroy(cr); -} + clear (widget, cr); -gboolean -ui_infoarea_expose_event(UIInfoArea *area, GdkEventExpose *event, gpointer unused) -{ - ui_infoarea_draw_background(area); - ui_infoarea_draw_album_art(area); - ui_infoarea_draw_title(area); - ui_infoarea_draw_visualizer(area); + draw_album_art (cr); + draw_title (cr); +#if ! GTK_CHECK_VERSION (3, 0, 0) + cairo_destroy (cr); +#endif return TRUE; } -static gboolean ui_infoarea_do_fade (UIInfoArea * area) +static gboolean ui_infoarea_do_fade (void) { + g_return_val_if_fail (area, FALSE); gboolean ret = FALSE; if (aud_drct_get_playing () && area->alpha < 1) { - area->alpha += alpha_step; + area->alpha += 0.1; ret = TRUE; } if (area->last_alpha > 0) { - area->last_alpha -= alpha_step; + area->last_alpha -= 0.1; ret = TRUE; } - gtk_widget_queue_draw ((GtkWidget *) area->parent); + gtk_widget_queue_draw (area->main); if (! ret) area->fade_timeout = 0; @@ -386,79 +367,107 @@ return ret; } -void ui_infoarea_set_title (void * data, UIInfoArea * area) +static gint strcmp_null (const gchar * a, const gchar * b) +{ + if (! a) + return (! b) ? 0 : -1; + if (! b) + return 1; + return strcmp (a, b); +} + +void ui_infoarea_set_title (void) { + g_return_if_fail (area); + if (! aud_drct_get_playing ()) return; gint playlist = aud_playlist_get_playing (); gint entry = aud_playlist_get_position (playlist); - const Tuple * tuple = aud_playlist_entry_get_tuple (playlist, entry, FALSE); - const gchar * s; - g_free (area->title); - area->title = NULL; - g_free (area->artist); - area->artist = NULL; - g_free (area->album); - area->album = NULL; + gchar * title, * artist, * album; + aud_playlist_entry_describe (playlist, entry, & title, & artist, & album, TRUE); - if (tuple && (s = tuple_get_string (tuple, FIELD_TITLE, NULL))) - area->title = g_strdup (s); - else - area->title = g_strdup (aud_playlist_entry_get_title (playlist, entry, - FALSE)); + if (! strcmp_null (title, area->title) && ! strcmp_null (artist, + area->artist) && ! strcmp_null (album, area->album)) + { + str_unref (title); + str_unref (artist); + str_unref (album); + return; + } + + str_unref (area->title); + str_unref (area->artist); + str_unref (area->album); + area->title = title; + area->artist = artist; + area->album = album; - if (tuple && (s = tuple_get_string (tuple, FIELD_ARTIST, NULL))) - area->artist = g_strdup (s); + gtk_widget_queue_draw (area->main); +} + +static void set_album_art (void) +{ + g_return_if_fail (area); - if (tuple && (s = tuple_get_string (tuple, FIELD_ALBUM, NULL))) - area->album = g_strdup (s); + if (area->pb) + g_object_unref (area->pb); - gtk_widget_queue_draw ((GtkWidget *) area->parent); + area->pb = audgui_pixbuf_for_current (); + if (area->pb) + audgui_pixbuf_scale_within (& area->pb, ICON_SIZE); } -static void infoarea_next (UIInfoArea * area) +static void infoarea_next (void) { + g_return_if_fail (area); + if (area->last_pb) g_object_unref (area->last_pb); area->last_pb = area->pb; area->pb = NULL; - g_free (area->last_title); + str_unref (area->last_title); area->last_title = area->title; area->title = NULL; - g_free (area->last_artist); + str_unref (area->last_artist); area->last_artist = area->artist; area->artist = NULL; - g_free (area->last_album); + str_unref (area->last_album); area->last_album = area->album; area->album = NULL; area->last_alpha = area->alpha; area->alpha = 0; - gtk_widget_queue_draw ((GtkWidget *) area->parent); + gtk_widget_queue_draw (area->main); } -static void ui_infoarea_playback_start (void * data, UIInfoArea * area) +static void ui_infoarea_playback_start (void) { + g_return_if_fail (area); + if (! area->stopped) /* moved to the next song without stopping? */ - infoarea_next (area); + infoarea_next (); area->stopped = FALSE; - ui_infoarea_set_title (NULL, area); + ui_infoarea_set_title (); + set_album_art (); if (! area->fade_timeout) area->fade_timeout = g_timeout_add (30, (GSourceFunc) ui_infoarea_do_fade, area); } -static void ui_infoarea_playback_stop (void * data, UIInfoArea * area) +static void ui_infoarea_playback_stop (void) { - infoarea_next (area); + g_return_if_fail (area); + + infoarea_next (); area->stopped = TRUE; if (! area->fade_timeout) @@ -466,22 +475,31 @@ ui_infoarea_do_fade, area); } -static void destroy_cb (GtkObject * parent, UIInfoArea * area) +static void destroy_cb (GtkWidget * widget) { - hook_dissociate ("title change", (HookFunction) ui_infoarea_set_title); + g_return_if_fail (area); + + hook_dissociate ("playlist update", (HookFunction) ui_infoarea_set_title); hook_dissociate ("playback begin", (HookFunction) ui_infoarea_playback_start); hook_dissociate ("playback stop", (HookFunction) ui_infoarea_playback_stop); - hook_dissociate ("visualization clear", (HookFunction) vis_clear_cb); - aud_vis_runner_remove_hook ((VisHookFunc) ui_infoarea_visualization_timeout); - g_free (area->title); - g_free (area->artist); - g_free (area->album); - g_free (area->last_title); - g_free (area->last_artist); - g_free (area->last_album); + aud_vis_func_remove ((VisFunc) vis_clear_cb); + aud_vis_func_remove ((VisFunc) vis_render_cb); + + if (area->fade_timeout) + { + g_source_remove (area->fade_timeout); + area->fade_timeout = 0; + } + + str_unref (area->title); + str_unref (area->artist); + str_unref (area->album); + str_unref (area->last_title); + str_unref (area->last_artist); + str_unref (area->last_album); if (area->pb) g_object_unref (area->pb); @@ -489,34 +507,54 @@ g_object_unref (area->last_pb); g_slice_free (UIInfoArea, area); + area = NULL; } GtkWidget * ui_infoarea_new (void) { - UIInfoArea *area; - GtkWidget *evbox; + g_return_val_if_fail (! area, NULL); + area = g_slice_new0 (UIInfoArea); - area = g_slice_new0(UIInfoArea); + area->box = gtk_hbox_new (FALSE, 0); - evbox = gtk_event_box_new(); - area->parent = evbox; - - gtk_widget_set_size_request(GTK_WIDGET(evbox), -1, 84); + area->main = gtk_drawing_area_new (); + gtk_widget_set_size_request (area->main, ICON_SIZE + 2 * SPACING, HEIGHT); + gtk_box_pack_start ((GtkBox *) area->box, area->main, TRUE, TRUE, 0); + + area->vis = gtk_drawing_area_new (); + gtk_widget_set_size_request (area->vis, VIS_WIDTH + 2 * SPACING, HEIGHT); + gtk_box_pack_start ((GtkBox *) area->box, area->vis, FALSE, FALSE, 0); + +#if GTK_CHECK_VERSION (3, 0, 0) + g_signal_connect (area->main, "draw", (GCallback) draw_cb, NULL); + g_signal_connect (area->vis, "draw", (GCallback) draw_vis_cb, NULL); +#else + g_signal_connect (area->main, "expose-event", (GCallback) expose_cb, NULL); + g_signal_connect (area->vis, "expose-event", (GCallback) expose_vis_cb, NULL); +#endif - g_signal_connect_swapped(area->parent, "expose-event", - G_CALLBACK(ui_infoarea_expose_event), area); + hook_associate ("playlist update", (HookFunction) ui_infoarea_set_title, NULL); + hook_associate ("playback begin", (HookFunction) ui_infoarea_playback_start, NULL); + hook_associate ("playback stop", (HookFunction) ui_infoarea_playback_stop, NULL); - hook_associate("title change", (HookFunction) ui_infoarea_set_title, area); - hook_associate("playback begin", (HookFunction) ui_infoarea_playback_start, area); - hook_associate("playback stop", (HookFunction) ui_infoarea_playback_stop, area); - hook_associate("visualization clear", (HookFunction) vis_clear_cb, area); - aud_vis_runner_add_hook ((VisHookFunc) ui_infoarea_visualization_timeout, - area); + aud_vis_func_add (AUD_VIS_TYPE_CLEAR, (VisFunc) vis_clear_cb); + aud_vis_func_add (AUD_VIS_TYPE_FREQ, (VisFunc) vis_render_cb); - g_signal_connect (area->parent, "destroy", (GCallback) destroy_cb, area); + g_signal_connect (area->box, "destroy", (GCallback) destroy_cb, NULL); if (aud_drct_get_playing ()) - ui_infoarea_playback_start (NULL, area); + { + ui_infoarea_playback_start (); + + /* skip fade-in */ + area->alpha = 1; + + if (area->fade_timeout) + { + g_source_remove (area->fade_timeout); + area->fade_timeout = 0; + } + } - return area->parent; + return area->box; } diff -Nru audacious-plugins-2.4.4/src/gtkui/ui_manager.c audacious-plugins-3.2/src/gtkui/ui_manager.c --- audacious-plugins-2.4.4/src/gtkui/ui_manager.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/ui_manager.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,382 +0,0 @@ -/* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2007 Audacious development team. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. - */ - -#include "config.h" - -#include "ui_manager.h" -#include "actions-mainwin.h" -#include "actions-playlist.h" - -#include -#include -#include - -static GtkUIManager *ui_manager = NULL; - -/* toggle action entries */ - -static GtkToggleActionEntry toggleaction_entries_others[] = { - {"stop after current song", NULL, N_("Stop after Current Song"), "M", - N_("Stop after Current Song"), G_CALLBACK(action_stop_after_current_song), FALSE}, - - {"playback repeat", NULL, N_("Repeat"), "R", - N_("Repeat"), G_CALLBACK(action_playback_repeat), FALSE}, - - {"playback shuffle", NULL, N_("Shuffle"), "S", - N_("Shuffle"), G_CALLBACK(action_playback_shuffle), FALSE}, - - {"playback no playlist advance", NULL, N_("No Playlist Advance"), "N", - N_("No Playlist Advance"), G_CALLBACK(action_playback_noplaylistadvance), FALSE}, - - {"view playlists", NULL, N_("Show playlists"), "P", - N_("Show/hide playlists"), G_CALLBACK(action_view_playlist), FALSE}, - - {"view infoarea", NULL, N_("Show infoarea"), "I", - N_("Show/hide infoarea"), G_CALLBACK(action_view_infoarea), FALSE}, - - {"view menu", NULL, N_("Show main menu"), "M", - N_("Show/hide main menu"), G_CALLBACK(action_view_menu), FALSE}, - - {"view statusbar", NULL, N_("Show statusbar"), "S", - N_("Show/hide statusbar"), G_CALLBACK(action_view_statusbar), FALSE}, -}; - -/* normal actions */ - -static GtkActionEntry action_entries_playback[] = { - - {"playback", NULL, N_("Playback")}, - - {"playback play", GTK_STOCK_MEDIA_PLAY, N_("Play"), "X", - N_("Play"), G_CALLBACK(action_playback_play)}, - - {"playback pause", GTK_STOCK_MEDIA_PAUSE, N_("Pause"), "C", - N_("Pause"), G_CALLBACK(action_playback_pause)}, - - {"playback stop", GTK_STOCK_MEDIA_STOP, N_("Stop"), "V", - N_("Stop"), G_CALLBACK(action_playback_stop)}, - - {"playback previous", GTK_STOCK_MEDIA_PREVIOUS, N_("Previous"), "Z", - N_("Previous"), G_CALLBACK(action_playback_previous)}, - - {"playback next", GTK_STOCK_MEDIA_NEXT, N_("Next"), "B", - N_("Next"), G_CALLBACK(action_playback_next)} -}; - -static GtkActionEntry action_entries_playlist[] = { - - {"playlist", NULL, N_("Playlist")}, - - {"playlist new", GTK_STOCK_NEW, N_("New Playlist"), "N", - N_("New Playlist"), G_CALLBACK(action_playlist_new)}, - - {"playlist delete", GTK_STOCK_DELETE, N_("Delete Playlist"), "D", - N_("Delete Playlist"), G_CALLBACK(action_playlist_delete)}, - - {"playlist load", GTK_STOCK_OPEN, N_("Import Playlist ..."), "O", - N_("Loads a playlist file into the selected playlist."), G_CALLBACK(action_playlist_load_list)}, - - {"playlist save", GTK_STOCK_SAVE, N_("Export Playlist ..."), "S", - N_("Saves the selected playlist."), G_CALLBACK(action_playlist_save_list)}, - - {"playlist save all", GTK_STOCK_SAVE, N_("Save All Playlists"), "S", - N_("Saves all the playlists that are open. Note that this " - "is done automatically when Audacious quits."), - G_CALLBACK(action_playlist_save_all_playlists)}, - - {"playlist refresh", GTK_STOCK_REFRESH, N_("Refresh"), "F5", - N_("Refreshes metadata associated with a playlist entry."), - G_CALLBACK(action_playlist_refresh_list)}, - - {"playlist manager", AUD_STOCK_PLAYLIST, N_("Playlist Manager"), "P", - N_("Opens the playlist manager."), - G_CALLBACK(action_open_list_manager)}, - - {"playlist add url", GTK_STOCK_NETWORK, N_("Add URL ..."), "H", - N_("Adds a remote track to the playlist."), - G_CALLBACK(action_playlist_add_url)}, - - {"playlist add files", GTK_STOCK_ADD, N_("Add Files ..."), "F", - N_("Adds files to the playlist."), - G_CALLBACK(action_playlist_add_files)}, - - {"playlist remove all", GTK_STOCK_CLEAR, N_("Remove All"), NULL, - N_("Removes all entries from the playlist."), - G_CALLBACK(action_playlist_remove_all)}, - - {"playlist remove unselected", GTK_STOCK_REMOVE, N_("Remove Unselected"), NULL, - N_("Remove unselected entries from the playlist."), - G_CALLBACK(action_playlist_remove_unselected)}, - - {"playlist remove selected", GTK_STOCK_REMOVE, N_("Remove Selected"), "Delete", - N_("Remove selected entries from the playlist."), - G_CALLBACK(action_playlist_remove_selected)}, - - {"playlist sort", GTK_STOCK_SORT_ASCENDING, N_("Sort"), NULL, NULL, NULL}, - {"playlist sort track", NULL, N_("By Track Number"), NULL, NULL, (GCallback) - playlist_sort_track}, - {"playlist sort title", NULL, N_("By Title"), NULL, NULL, (GCallback) - playlist_sort_title}, - {"playlist sort artist", NULL, N_("By Artist"), NULL, NULL, (GCallback) - playlist_sort_artist}, - {"playlist sort album", NULL, N_("By Album"), NULL, NULL, (GCallback) - playlist_sort_album}, - {"playlist sort path", NULL, N_("By File Path"), NULL, NULL, (GCallback) - playlist_sort_path}, - {"playlist reverse", GTK_STOCK_SORT_DESCENDING, N_("Reverse Order"), NULL, - NULL, (GCallback) playlist_reverse}, - {"playlist randomize", NULL, N_("Random Order"), NULL, NULL, (GCallback) - playlist_randomize}}; - -static GtkActionEntry action_entries_output[] = -{ - {"output", NULL, N_("Output")}, - - {"effects menu", NULL, N_("Effects")}, - - {"equalizer show", NULL, N_("Equalizer"), "E", NULL, (GCallback) - audgui_show_equalizer_window}, -}; - -static GtkActionEntry action_entries_view[] = { - {"view", NULL, N_("View")}, - {"iface menu", NULL, N_("Interface")}}; - -static GtkActionEntry action_entries_others[] = { - - {"dummy", NULL, "dummy"}, - - /* XXX Carbon support */ - {"file", NULL, N_("File")}, - {"help", NULL, N_("Help")}, - - {"plugins-menu", NULL, N_("Components")}, - - {"current track info", GTK_STOCK_INFO, N_("View Track Details"), "I", - N_("View track details"), G_CALLBACK(action_current_track_info)}, - - {"playlist track info", GTK_STOCK_INFO, N_("View Track Details"), "I", - N_("View track details"), G_CALLBACK(action_playlist_track_info)}, - - {"about audacious", GTK_STOCK_DIALOG_INFO, N_("About Audacious"), NULL, - N_("About Audacious"), G_CALLBACK(action_about_audacious)}, - - {"play file", GTK_STOCK_OPEN, N_("Open Files ..."), "L", - N_("Load and play a file"), G_CALLBACK(action_play_file)}, - - {"play location", GTK_STOCK_NETWORK, N_("Open URL ..."), "L", - N_("Play media from the selected location"), G_CALLBACK(action_play_location)}, - - {"plugins", NULL, N_("Plugin services")}, - - {"preferences", GTK_STOCK_PREFERENCES, N_("Preferences"), "P", - N_("Open preferences window"), G_CALLBACK(action_preferences)}, - - {"quit", GTK_STOCK_QUIT, N_("_Quit"), NULL, - N_("Quit Audacious"), G_CALLBACK(action_quit)}, - - {"ab set", NULL, N_("Set A-B"), "A", - N_("Set A-B"), G_CALLBACK(action_ab_set)}, - - {"ab clear", NULL, N_("Clear A-B"), "A", - N_("Clear A-B"), G_CALLBACK(action_ab_clear)}, - - {"jump to playlist start", GTK_STOCK_GOTO_TOP, N_("Jump to Playlist Start"), "Z", - N_("Jump to Playlist Start"), G_CALLBACK(action_jump_to_playlist_start)}, - - {"jump to file", GTK_STOCK_JUMP_TO, N_("Jump to File"), "J", - N_("Jump to File"), G_CALLBACK(action_jump_to_file)}, - - {"jump to time", GTK_STOCK_JUMP_TO, N_("Jump to Time"), "J", - N_("Jump to Time"), G_CALLBACK(action_jump_to_time)}, - - {"queue toggle", AUD_STOCK_QUEUETOGGLE, N_("Queue Toggle"), "Q", - N_("Enables/disables the entry in the playlist's queue."), - G_CALLBACK(action_queue_toggle)}, - - {"playlist copy", GTK_STOCK_COPY, N_("Copy"), "C", - NULL, G_CALLBACK(action_playlist_copy)}, - - {"playlist cut", GTK_STOCK_CUT, N_("Cut"), "X", - NULL, G_CALLBACK(action_playlist_cut)}, - - {"playlist paste", GTK_STOCK_PASTE, N_("Paste"), "V", - NULL, G_CALLBACK(action_playlist_paste)}, - - {"playlist select all", NULL, N_("Select All"), "A", - N_("Selects all of the playlist entries."), - G_CALLBACK(action_playlist_select_all)}, - - {"playlist select none", NULL, N_("Select None"), "A", - N_("Deselects all of the playlist entries."), - G_CALLBACK(action_playlist_select_none)}, -}; - -static GtkActionGroup * action_group_playback; -static GtkActionGroup * action_group_output; -static GtkActionGroup * action_group_view; -static GtkActionGroup * action_group_others; -static GtkActionGroup * action_group_playlist; - -/* ***************************** */ - -GtkWidget *ui_manager_get_menus(void) -{ - GtkWidget *menu; - - menu = gtk_ui_manager_get_widget(ui_manager, "/mainwin-menus"); - - return menu; -} - -static GtkActionGroup *ui_manager_new_action_group(const gchar * group_name) -{ - GtkActionGroup *group = gtk_action_group_new(group_name); - gtk_action_group_set_translation_domain(group, PACKAGE_NAME); - return group; -} - -void ui_manager_init(void) -{ - /* toggle actions */ - toggleaction_group_others = ui_manager_new_action_group("toggleaction_others"); - gtk_action_group_add_toggle_actions(toggleaction_group_others, toggleaction_entries_others, G_N_ELEMENTS(toggleaction_entries_others), NULL); - - /* normal actions */ - action_group_playback = ui_manager_new_action_group("action_playback"); - gtk_action_group_add_actions(action_group_playback, action_entries_playback, G_N_ELEMENTS(action_entries_playback), NULL); - - action_group_playlist = ui_manager_new_action_group("action_playlist"); - gtk_action_group_add_actions(action_group_playlist, action_entries_playlist, G_N_ELEMENTS(action_entries_playlist), NULL); - - action_group_output = ui_manager_new_action_group ("action_output"); - gtk_action_group_add_actions (action_group_output, action_entries_output, - G_N_ELEMENTS (action_entries_output), NULL); - - action_group_view = ui_manager_new_action_group("action_view"); - gtk_action_group_add_actions(action_group_view, action_entries_view, G_N_ELEMENTS(action_entries_view), NULL); - - action_group_others = ui_manager_new_action_group("action_others"); - gtk_action_group_add_actions(action_group_others, action_entries_others, G_N_ELEMENTS(action_entries_others), NULL); - - /* ui */ - ui_manager = gtk_ui_manager_new(); - gtk_ui_manager_insert_action_group(ui_manager, toggleaction_group_others, 0); - gtk_ui_manager_insert_action_group(ui_manager, action_group_playback, 0); - gtk_ui_manager_insert_action_group(ui_manager, action_group_playlist, 0); - gtk_ui_manager_insert_action_group(ui_manager, action_group_output, 0); - gtk_ui_manager_insert_action_group(ui_manager, action_group_view, 0); - gtk_ui_manager_insert_action_group(ui_manager, action_group_others, 0); -} - -#ifdef GDK_WINDOWING_QUARTZ -static GtkWidget *carbon_menubar; -#endif - - -void ui_manager_create_menus(void) -{ - GError *gerr = NULL; - - /* attach xml menu definitions */ - gtk_ui_manager_add_ui_from_file(ui_manager, DATA_DIR "/ui/player.ui", &gerr); - - if (gerr != NULL) - { - g_critical("Error loading player.ui: %s", gerr->message); - g_error_free(gerr); - return; - } - - gtk_menu_item_set_submenu ((GtkMenuItem *) gtk_ui_manager_get_widget - (ui_manager, "/mainwin-menus/plugins-menu"), aud_get_plugin_menu - (AUDACIOUS_MENU_MAIN)); - gtk_menu_item_set_submenu ((GtkMenuItem *) gtk_ui_manager_get_widget - (ui_manager, "/mainwin-menus/output/effects menu"), - audgui_create_effects_menu ()); - gtk_menu_item_set_submenu ((GtkMenuItem *) gtk_ui_manager_get_widget - (ui_manager, "/mainwin-menus/view/iface menu"), - audgui_create_iface_menu ()); - - playlistwin_popup_menu = ui_manager_get_popup_menu(ui_manager, "/playlist-menus/playlist-rightclick-menu"); - - gtk_menu_item_set_submenu ((GtkMenuItem *) gtk_ui_manager_get_widget - (ui_manager, "/playlist-menus/playlist-rightclick-menu/plugins-menu"), - aud_get_plugin_menu (AUDACIOUS_MENU_PLAYLIST_RCLICK)); -} - - -GtkAccelGroup *ui_manager_get_accel_group(void) -{ - return gtk_ui_manager_get_accel_group(ui_manager); -} - - -GtkWidget *ui_manager_get_popup_menu(GtkUIManager * self, const gchar * path) -{ - GtkWidget *menu_item = gtk_ui_manager_get_widget(self, path); - - if (GTK_IS_MENU_ITEM(menu_item)) - return gtk_menu_item_get_submenu(GTK_MENU_ITEM(menu_item)); - else - return NULL; -} - - -static void menu_popup_pos_func(GtkMenu * menu, gint * x, gint * y, gboolean * push_in, gint * point) -{ - GtkRequisition requisition; - gint screen_width; - gint screen_height; - - gtk_widget_size_request(GTK_WIDGET(menu), &requisition); - - screen_width = gdk_screen_width(); - screen_height = gdk_screen_height(); - - *x = CLAMP(point[0] - 2, 0, MAX(0, screen_width - requisition.width)); - *y = CLAMP(point[1] - 2, 0, MAX(0, screen_height - requisition.height)); - - *push_in = FALSE; -} - - -void ui_manager_popup_menu_show(GtkMenu * menu, gint x, gint y, guint button, guint time) -{ - gint pos[2]; - pos[0] = x; - pos[1] = y; - - gtk_menu_popup(menu, NULL, NULL, (GtkMenuPositionFunc) menu_popup_pos_func, pos, button, time); -} - -void ui_manager_destroy(void) -{ - gtk_menu_detach ((GtkMenu *) aud_get_plugin_menu (AUDACIOUS_MENU_MAIN)); - gtk_menu_detach ((GtkMenu *) aud_get_plugin_menu - (AUDACIOUS_MENU_PLAYLIST_RCLICK)); - - g_object_unref((GObject *) toggleaction_group_others); - g_object_unref((GObject *) action_group_playback); - g_object_unref((GObject *) action_group_playlist); - g_object_unref((GObject *) action_group_output); - g_object_unref((GObject *) action_group_view); - g_object_unref((GObject *) action_group_others); - g_object_unref((GObject *) ui_manager); -} diff -Nru audacious-plugins-2.4.4/src/gtkui/ui_manager.h audacious-plugins-3.2/src/gtkui/ui_manager.h --- audacious-plugins-2.4.4/src/gtkui/ui_manager.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/ui_manager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -/* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2007 Audacious development team. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. - */ - -#ifndef AUDACIOUS_UI_MANAGER_H -#define AUDACIOUS_UI_MANAGER_H - -#include -#include -#include - -G_BEGIN_DECLS - -GtkWidget *playlistwin_popup_menu; - -GtkActionGroup *toggleaction_group_others; - -void ui_manager_init(void); -void ui_manager_create_menus(void); -GtkAccelGroup *ui_manager_get_accel_group(void); -GtkWidget *ui_manager_get_popup_menu(GtkUIManager *, const gchar *); -void ui_manager_popup_menu_show(GtkMenu *, gint, gint, guint, guint); -void ui_manager_destroy(void); - -GtkWidget *ui_manager_get_menus(void); - -G_END_DECLS -#endif /* AUDACIOUS_UI_MANAGER_H */ diff -Nru audacious-plugins-2.4.4/src/gtkui/ui_playlist_model.c audacious-plugins-3.2/src/gtkui/ui_playlist_model.c --- audacious-plugins-2.4.4/src/gtkui/ui_playlist_model.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/ui_playlist_model.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,700 +0,0 @@ -/* Audacious - Cross-platform multimedia player - * Copyright (C) 2009 Tomasz MoÅ„ - * Copyright (C) 2010 MichaÅ‚ Lipski - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. - */ - -#include "config.h" - -#include -#include -#include -#include - -#include "ui_playlist_model.h" -#include "ui_playlist_widget.h" -#include "playlist_util.h" - -static GObjectClass *parent_class = NULL; - -static void ui_playlist_model_class_init(UiPlaylistModelClass *klass); -static void ui_playlist_tree_model_init(GtkTreeModelIface *iface); -static void ui_playlist_model_init(UiPlaylistModel *model); -static void ui_playlist_model_finalize(GObject *object); -static GtkTreeModelFlags ui_playlist_model_get_flags(GtkTreeModel *model); -static gint ui_playlist_model_get_n_columns(GtkTreeModel *model); -static GType ui_playlist_model_get_column_type(GtkTreeModel *model, gint index); -static gboolean ui_playlist_model_get_iter(GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreePath *path); -static GtkTreePath * ui_playlist_model_get_path(GtkTreeModel *tree_model, GtkTreeIter *iter); -static void ui_playlist_model_get_value(GtkTreeModel *tree_model, GtkTreeIter *iter, gint column, GValue *value); -static gboolean ui_playlist_model_iter_next(GtkTreeModel *tree_model, GtkTreeIter *iter); -static gboolean ui_playlist_model_iter_children(GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *parent); -static gboolean ui_playlist_model_iter_has_child(GtkTreeModel *tree_model, GtkTreeIter *iter); -static gint ui_playlist_model_iter_n_children(GtkTreeModel *tree_model, GtkTreeIter *iter); -static gboolean ui_playlist_model_iter_nth_child(GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *parent, gint n); -static gboolean ui_playlist_model_iter_parent(GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *child); - -static void ui_playlist_model_associate_hooks(UiPlaylistModel *model); -static void ui_playlist_model_dissociate_hooks(UiPlaylistModel *model); - -GType -ui_playlist_model_get_type(void) -{ - static GType ui_playlist_model_type = 0; - - if (ui_playlist_model_type == 0) - { - static const GTypeInfo ui_playlist_model_info = - { - sizeof(UiPlaylistModelClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) ui_playlist_model_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(UiPlaylistModel), - 0, /* n_preallocs */ - (GInstanceInitFunc) ui_playlist_model_init - }; - - static const GInterfaceInfo tree_model_info = - { - (GInterfaceInitFunc) ui_playlist_tree_model_init, - NULL, - NULL - }; - - ui_playlist_model_type = - g_type_register_static(G_TYPE_OBJECT, "UiPlaylistModel", - &ui_playlist_model_info, (GTypeFlags)0); - - g_type_add_interface_static(ui_playlist_model_type, GTK_TYPE_TREE_MODEL, - &tree_model_info); - } - - return ui_playlist_model_type; -} - -static void -ui_playlist_model_class_init(UiPlaylistModelClass *klass) -{ - GObjectClass *object_class; - - parent_class = (GObjectClass *) g_type_class_peek_parent(klass); - object_class = (GObjectClass *) klass; - - object_class->finalize = ui_playlist_model_finalize; -} - -static void -ui_playlist_tree_model_init(GtkTreeModelIface *iface) -{ - iface->get_flags = ui_playlist_model_get_flags; - iface->get_n_columns = ui_playlist_model_get_n_columns; - iface->get_column_type = ui_playlist_model_get_column_type; - iface->get_iter = ui_playlist_model_get_iter; - iface->get_path = ui_playlist_model_get_path; - iface->get_value = ui_playlist_model_get_value; - iface->iter_next = ui_playlist_model_iter_next; - iface->iter_children = ui_playlist_model_iter_children; - iface->iter_has_child = ui_playlist_model_iter_has_child; - iface->iter_n_children = ui_playlist_model_iter_n_children; - iface->iter_nth_child = ui_playlist_model_iter_nth_child; - iface->iter_parent = ui_playlist_model_iter_parent; -} - -static void -ui_playlist_model_init(UiPlaylistModel *model) -{ - if (multi_column_view) - { - model->n_columns = PLAYLIST_N_MULTI_COLUMNS; - - model->column_types = g_new0(GType, PLAYLIST_N_MULTI_COLUMNS); - model->column_types[PLAYLIST_MULTI_COLUMN_NUM] = G_TYPE_UINT; - model->column_types[PLAYLIST_MULTI_COLUMN_ARTIST] = G_TYPE_STRING; - model->column_types[PLAYLIST_MULTI_COLUMN_ALBUM] = G_TYPE_STRING; - model->column_types[PLAYLIST_MULTI_COLUMN_TITLE] = G_TYPE_STRING; - model->column_types[PLAYLIST_MULTI_COLUMN_TRACK_NUM] = G_TYPE_UINT; - model->column_types[PLAYLIST_MULTI_COLUMN_QUEUED] = G_TYPE_STRING; - model->column_types[PLAYLIST_MULTI_COLUMN_TIME] = G_TYPE_STRING; - model->column_types[PLAYLIST_MULTI_COLUMN_WEIGHT] = PANGO_TYPE_WEIGHT; - } - else - { - model->n_columns = PLAYLIST_N_COLUMNS; - - model->column_types = g_new0(GType, PLAYLIST_N_COLUMNS); - model->column_types[PLAYLIST_COLUMN_NUM] = G_TYPE_UINT; - model->column_types[PLAYLIST_COLUMN_TEXT] = G_TYPE_STRING; - model->column_types[PLAYLIST_COLUMN_QUEUED] = G_TYPE_STRING; - model->column_types[PLAYLIST_COLUMN_TIME] = G_TYPE_STRING; - model->column_types[PLAYLIST_COLUMN_WEIGHT] = PANGO_TYPE_WEIGHT; - } - - model->num_rows = 0; - - model->stamp = g_random_int(); /* Random int to check whether an iter belongs to our model */ -} - -static void -ui_playlist_model_finalize(GObject *object) -{ - UiPlaylistModel *model = UI_PLAYLIST_MODEL(object); - - ui_playlist_model_dissociate_hooks(model); - - g_list_free (model->queue); - g_free(model->column_types); - - (* parent_class->finalize) (object); -} - -static GtkTreeModelFlags -ui_playlist_model_get_flags(GtkTreeModel *model) -{ - g_return_val_if_fail(UI_IS_PLAYLIST_MODEL(model), (GtkTreeModelFlags)0); - - return GTK_TREE_MODEL_LIST_ONLY; -} - -static gint -ui_playlist_model_get_n_columns(GtkTreeModel *model) -{ - g_return_val_if_fail(UI_IS_PLAYLIST_MODEL(model), 0); - - return UI_PLAYLIST_MODEL(model)->n_columns; -} - -static GType -ui_playlist_model_get_column_type(GtkTreeModel *model, gint index) -{ - g_return_val_if_fail(UI_IS_PLAYLIST_MODEL(model), G_TYPE_INVALID); - g_return_val_if_fail((index < UI_PLAYLIST_MODEL(model)->n_columns) && - (index >= 0), G_TYPE_INVALID); - - return UI_PLAYLIST_MODEL(model)->column_types[index]; -} - -static gboolean -ui_playlist_model_get_iter(GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreePath *path) -{ - UiPlaylistModel *model; - gint *indices, n, depth; - - g_assert(UI_IS_PLAYLIST_MODEL(tree_model)); - g_assert(path != NULL); - - model = UI_PLAYLIST_MODEL(tree_model); - - indices = gtk_tree_path_get_indices(path); - depth = gtk_tree_path_get_depth(path); - - /* top level, items have no children */ - if (depth != 1) - return FALSE; - - n = indices[0]; - - if (n >= model->num_rows || n < 0) - return FALSE; - - iter->stamp = model->stamp; - iter->user_data = GINT_TO_POINTER(n); - iter->user_data2 = NULL; - iter->user_data3 = NULL; - - return TRUE; -} - - -static GtkTreePath * -ui_playlist_model_get_path(GtkTreeModel *tree_model, GtkTreeIter *iter) -{ - GtkTreePath *path; - - g_return_val_if_fail(UI_IS_PLAYLIST_MODEL(tree_model), NULL); - g_return_val_if_fail(iter != NULL, NULL); - - path = gtk_tree_path_new(); - gtk_tree_path_append_index(path, GPOINTER_TO_INT(iter->user_data)); - - return path; -} - -static void ui_playlist_model_get_value_time(UiPlaylistModel *model, GValue *value, gint position) -{ - gint length = aud_playlist_entry_get_length (model->playlist, position, - TRUE) / 1000; - gchar * len = g_strdup_printf("%02i:%02i", length / 60, length % 60); - g_value_set_string(value, len); - g_free(len); -} - -static const gchar *ui_playlist_model_tuple_get_string(const Tuple *tuple, gint field) -{ - if (tuple == NULL) - return NULL; - - return tuple_get_string(tuple, field, NULL); -} - -static gint ui_playlist_model_tuple_get_int(const Tuple *tuple, gint field) -{ - if (tuple == NULL) - return 0; - - return tuple_get_int(tuple, field, NULL); -} - -static void -ui_playlist_model_get_value(GtkTreeModel *tree_model, GtkTreeIter *iter, gint column, GValue *value) -{ - UiPlaylistModel *model; - gint n, i; - - g_return_if_fail(UI_IS_PLAYLIST_MODEL(tree_model)); - g_return_if_fail(iter != NULL); - g_return_if_fail(column < UI_PLAYLIST_MODEL(tree_model)->n_columns); - - model = UI_PLAYLIST_MODEL(tree_model); - - g_value_init(value, model->column_types[column]); - - n = GPOINTER_TO_INT(iter->user_data); - - if (n >= model->num_rows) - g_return_if_reached(); - - if (multi_column_view) - { - const Tuple * tu = aud_playlist_entry_get_tuple (model->playlist, n, - TRUE); - - switch (column) - { - case PLAYLIST_MULTI_COLUMN_NUM: - g_value_set_uint(value, n+1); - break; - case PLAYLIST_MULTI_COLUMN_ARTIST: - g_value_set_string(value, ui_playlist_model_tuple_get_string(tu, FIELD_ARTIST)); - break; - - case PLAYLIST_MULTI_COLUMN_ALBUM: - g_value_set_string(value, ui_playlist_model_tuple_get_string(tu, FIELD_ALBUM)); - break; - - case PLAYLIST_MULTI_COLUMN_TRACK_NUM: - g_value_set_uint(value, ui_playlist_model_tuple_get_int(tu, FIELD_TRACK_NUMBER)); - break; - - case PLAYLIST_MULTI_COLUMN_TITLE: - { - const gchar *title = ui_playlist_model_tuple_get_string(tu, FIELD_TITLE); - - if (title == NULL) - g_value_set_string (value, aud_playlist_entry_get_title - (model->playlist, n, TRUE)); - else - g_value_set_string(value, title); - break; - } - - case PLAYLIST_MULTI_COLUMN_QUEUED: - if ((i = aud_playlist_queue_find_entry (model->playlist, n)) < 0) - g_value_set_string (value, ""); - else - g_value_take_string (value, g_strdup_printf ("#%d", 1 + i)); - break; - - case PLAYLIST_MULTI_COLUMN_TIME: - ui_playlist_model_get_value_time(model, value, n); - break; - - case PLAYLIST_MULTI_COLUMN_WEIGHT: - if (n == model->position) - g_value_set_enum(value, PANGO_WEIGHT_BOLD); - else - g_value_set_enum(value, PANGO_WEIGHT_NORMAL); - break; - default: - break; - } - } - else - { - switch (column) - { - case PLAYLIST_COLUMN_NUM: - g_value_set_uint(value, n+1); - break; - - case PLAYLIST_COLUMN_TEXT: - g_value_set_string (value, aud_playlist_entry_get_title - (model->playlist, n, TRUE)); - break; - - case PLAYLIST_COLUMN_QUEUED: - if ((i = aud_playlist_queue_find_entry (model->playlist, n)) < 0) - g_value_set_string (value, ""); - else - g_value_take_string (value, g_strdup_printf ("#%d", 1 + i)); - break; - - case PLAYLIST_COLUMN_TIME: - ui_playlist_model_get_value_time(model, value, n); - break; - case PLAYLIST_COLUMN_WEIGHT: - if (n == model->position) - g_value_set_enum(value, PANGO_WEIGHT_BOLD); - else - g_value_set_enum(value, PANGO_WEIGHT_NORMAL); - break; - default: - break; - } - } -} - -static gboolean -ui_playlist_model_iter_next(GtkTreeModel *tree_model, GtkTreeIter *iter) -{ - UiPlaylistModel *model; - guint n; - - g_return_val_if_fail(UI_IS_PLAYLIST_MODEL(tree_model), FALSE); - - if (iter == NULL) - return FALSE; - - model = UI_PLAYLIST_MODEL(tree_model); - - n = GPOINTER_TO_INT(iter->user_data); - - if (n+1 >= model->num_rows) - return FALSE; - - iter->user_data = GINT_TO_POINTER(n+1); - iter->stamp = model->stamp; - - return TRUE; -} - -static gboolean -ui_playlist_model_iter_children(GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *parent) -{ - UiPlaylistModel *model; - - /* this is a list, nodes have no children */ - if (parent) - return FALSE; - - g_return_val_if_fail(UI_IS_PLAYLIST_MODEL(tree_model), FALSE); - - model = UI_PLAYLIST_MODEL(tree_model); - - if (model->num_rows == 0) - return FALSE; - - iter->stamp = model->stamp; - iter->user_data = GINT_TO_POINTER(0); - - return TRUE; -} - -static gboolean -ui_playlist_model_iter_has_child(GtkTreeModel *tree_model, GtkTreeIter *iter) -{ - return FALSE; -} - -static gint -ui_playlist_model_iter_n_children(GtkTreeModel *tree_model, GtkTreeIter *iter) -{ - UiPlaylistModel *model; - - g_return_val_if_fail(UI_IS_PLAYLIST_MODEL(tree_model), -1); - - model = UI_PLAYLIST_MODEL(tree_model); - - /* return number of top-level rows */ - if (iter == NULL) - return model->num_rows; - - return 0; /* nodes have no children */ -} - -static gboolean -ui_playlist_model_iter_nth_child(GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *parent, gint n) -{ - UiPlaylistModel *model; - - g_return_val_if_fail(UI_IS_PLAYLIST_MODEL(tree_model), FALSE); - - model = UI_PLAYLIST_MODEL(tree_model); - - /* we have only top-level rows */ - if (parent) - return FALSE; - - if (n >= model->num_rows) - return FALSE; - - iter->stamp = model->stamp; - iter->user_data = GINT_TO_POINTER(n); - - return TRUE; -} - -static gboolean -ui_playlist_model_iter_parent(GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *child) -{ - return FALSE; -} - -UiPlaylistModel * -ui_playlist_model_new(gint playlist) -{ - UiPlaylistModel *model; - - model = (UiPlaylistModel *) g_object_new(UI_PLAYLIST_MODEL_TYPE, NULL); - - g_assert(model != NULL); - - model->playlist = playlist; - model->num_rows = aud_playlist_entry_count(playlist); - model->position = aud_playlist_get_position (playlist); - model->queue = NULL; - model->song_changed = FALSE; - model->focus_changed = FALSE; - model->selection_changed = FALSE; - - ui_playlist_model_associate_hooks(model); - - return model; -} - -static void -ui_playlist_model_row_changed(UiPlaylistModel *model, gint n) -{ - GtkTreePath *path; - GtkTreeIter iter; - - path = gtk_tree_path_new(); - gtk_tree_path_append_index(path, n); - ui_playlist_model_get_iter(GTK_TREE_MODEL(model), &iter, path); - - gtk_tree_model_row_changed(GTK_TREE_MODEL(model), path, &iter); - - gtk_tree_path_free(path); -} - -static void -ui_playlist_model_row_inserted(UiPlaylistModel *model, gint n) -{ - GtkTreePath *path; - GtkTreeIter iter; - - path = gtk_tree_path_new(); - gtk_tree_path_append_index(path, n); - ui_playlist_model_get_iter(GTK_TREE_MODEL(model), &iter, path); - - gtk_tree_model_row_inserted(GTK_TREE_MODEL(model), path, &iter); - - gtk_tree_path_free(path); -} - -static void -ui_playlist_model_row_deleted(UiPlaylistModel *model, gint n) -{ - GtkTreePath *path; - - path = gtk_tree_path_new(); - gtk_tree_path_append_index(path, n); - - gtk_tree_model_row_deleted(GTK_TREE_MODEL(model), path); - - gtk_tree_path_free(path); -} - -static void -ui_playlist_model_update_position(UiPlaylistModel *model, gint position) -{ - if (model->position != -1) - { - ui_playlist_model_row_changed(model, model->position); /* remove bold */ - } - - model->position = position; - - if (model->position != -1) - { - ui_playlist_model_row_changed(model, model->position); /* set bold */ - } -} - -static void ui_playlist_model_playlist_rearraged(UiPlaylistModel *model) -{ - gtk_widget_queue_draw(GTK_WIDGET(playlist_get_treeview(model->playlist))); -} - -static void ui_playlist_model_playlist_position (void * hook_data, void * - user_data) -{ - gint playlist = GPOINTER_TO_INT (hook_data); - UiPlaylistModel * model = user_data; - - if (playlist == model->playlist) - model->song_changed = TRUE; -} - -static void update_queue_row_changed (void * row, void * model) -{ - ui_playlist_model_row_changed (model, GPOINTER_TO_INT (row)); -} - -static void update_queue (UiPlaylistModel * model) -{ - gint i; - - /* update previously queued rows */ - g_list_foreach (model->queue, update_queue_row_changed, model); - - g_list_free (model->queue); - model->queue = NULL; - - for (i = aud_playlist_queue_count (model->playlist); i --; ) - model->queue = g_list_prepend (model->queue, GINT_TO_POINTER - (aud_playlist_queue_get_entry (model->playlist, i))); - - /* update currently queued rows */ - g_list_foreach (model->queue, update_queue_row_changed, model); -} - -static void -ui_playlist_model_playlist_update(gpointer hook_data, gpointer user_data) -{ - UiPlaylistModel *model = UI_PLAYLIST_MODEL(user_data); - GtkTreeView *treeview = playlist_get_treeview(model->playlist); - gint type = GPOINTER_TO_INT(hook_data); - - if (model->playlist != aud_playlist_get_active()) - return; - - ui_playlist_widget_block_updates ((GtkWidget *) treeview, TRUE); - - gtk_tree_view_column_set_visible (g_object_get_data ((GObject *) treeview, - "number column"), aud_cfg->show_numbers_in_pl); - - if (type == PLAYLIST_UPDATE_STRUCTURE) - { - gint changed_rows; - changed_rows = aud_playlist_entry_count(model->playlist) - model->num_rows; - - AUDDBG("playlist structure update\n"); - - if (changed_rows == 0) - { - ui_playlist_model_playlist_rearraged(model); - } - else if (changed_rows > 0) - { - /* entries added */ - while (changed_rows != 0) - { - ui_playlist_model_row_inserted(model, model->num_rows++); - changed_rows--; - } - } - else - { - /* entries removed */ - while (changed_rows != 0) - { - ui_playlist_model_row_deleted(model, --model->num_rows); - changed_rows++; - } - } - - ui_playlist_model_update_position (model, aud_playlist_get_position - (model->playlist)); - } - else if (type == PLAYLIST_UPDATE_METADATA) - { - AUDDBG("playlist metadata update\n"); - ui_playlist_model_playlist_rearraged(model); - } - else if (type == PLAYLIST_UPDATE_SELECTION) - update_queue (model); - - if (model->song_changed) - { - gint song = aud_playlist_get_position (model->playlist); - - if (type != PLAYLIST_UPDATE_STRUCTURE) /* already did it? */ - ui_playlist_model_update_position (model, song); - - playlist_scroll_to_row (treeview, song); - model->song_changed = FALSE; - } - - if (model->focus_changed) - treeview_set_focus_now (treeview, model->focus); - else if (model->selection_changed) - treeview_refresh_selection_now (treeview); - - model->focus_changed = FALSE; - model->selection_changed = FALSE; - - ui_playlist_widget_block_updates ((GtkWidget *) treeview, FALSE); -} - -static void -ui_playlist_model_playlist_delete(gpointer hook_data, gpointer user_data) -{ - UiPlaylistModel *model = UI_PLAYLIST_MODEL(user_data); - gint playlist = GPOINTER_TO_INT(hook_data); - - if (model->playlist > playlist) - { - model->playlist--; - return; - } - - /* should happen only if GtkTreeView wasn't yet destroyed */ - if (model->playlist == playlist) - { - model->num_rows = 0; - model->playlist = -1; - } -} - -static void -ui_playlist_model_associate_hooks(UiPlaylistModel *model) -{ - hook_associate("playlist update", ui_playlist_model_playlist_update, model); - hook_associate("playlist delete", ui_playlist_model_playlist_delete, model); - hook_associate("playlist position", ui_playlist_model_playlist_position, model); -} - -static void -ui_playlist_model_dissociate_hooks(UiPlaylistModel *model) -{ - hook_dissociate_full("playlist update", ui_playlist_model_playlist_update, model); - hook_dissociate_full("playlist delete", ui_playlist_model_playlist_delete, model); - hook_dissociate_full("playlist position", ui_playlist_model_playlist_position, model); -} diff -Nru audacious-plugins-2.4.4/src/gtkui/ui_playlist_model.h audacious-plugins-3.2/src/gtkui/ui_playlist_model.h --- audacious-plugins-2.4.4/src/gtkui/ui_playlist_model.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/ui_playlist_model.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,86 +0,0 @@ -/* Audacious - Cross-platform multimedia player - * Copyright (C) 2009 Tomasz MoÅ„ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. - */ - -#ifndef UI_PLAYLIST_MODEL_H -#define UI_PLAYLIST_MODEL_H - -#include - -#define UI_PLAYLIST_MODEL_TYPE (ui_playlist_model_get_type()) -#define UI_PLAYLIST_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), UI_PLAYLIST_MODEL_TYPE, UiPlaylistModel)) -#define UI_PLYALIST_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), UI_PLAYLIST_MODEL_TYPE, UiPlaylistModelClass)) -#define UI_IS_PLAYLIST_MODEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), UI_PLAYLIST_MODEL_TYPE)) -#define UI_IS_PLAYLIST_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), UI_PLAYLIST_MODEL_TYPE)) -#define UI_PLAYLIST_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), UI_PLAYLIST_MODEL_TYPE, UiPlaylistModelClass)) - -extern gboolean multi_column_view; - -enum -{ - PLAYLIST_COLUMN_NUM = 0, - PLAYLIST_COLUMN_TEXT, - PLAYLIST_COLUMN_QUEUED, - PLAYLIST_COLUMN_TIME, - PLAYLIST_COLUMN_WEIGHT, /* PANGO_WEIGHT_BOLD or PANGO_WEIGHT_NORMAL, denotes currently played song */ - PLAYLIST_N_COLUMNS, -}; - -/* Multi column view */ -enum -{ - PLAYLIST_MULTI_COLUMN_NUM = 0, - PLAYLIST_MULTI_COLUMN_ARTIST, - PLAYLIST_MULTI_COLUMN_ALBUM, - PLAYLIST_MULTI_COLUMN_TRACK_NUM, - PLAYLIST_MULTI_COLUMN_TITLE, - PLAYLIST_MULTI_COLUMN_QUEUED, - PLAYLIST_MULTI_COLUMN_TIME, - PLAYLIST_MULTI_COLUMN_WEIGHT, /* PANGO_WEIGHT_BOLD or PANGO_WEIGHT_NORMAL, denotes currently played song */ - PLAYLIST_N_MULTI_COLUMNS, -}; - -typedef struct _UiPlaylistModel UiPlaylistModel; -typedef struct _UiPlaylistModelClass UiPlaylistModelClass; - -struct _UiPlaylistModel -{ - GObject parent; - - guint num_rows; - gint playlist; /* associated playlist number */ - gint position; - GList * queue; - gboolean song_changed, focus_changed, selection_changed; - gint focus; - - gint n_columns; - GType *column_types; - - gint stamp; /* Random integer to check whether an iter belongs to our model */ -}; - -struct _UiPlaylistModelClass -{ - GObjectClass parent_class; -}; - -GType ui_playlist_model_get_type(void); -UiPlaylistModel *ui_playlist_model_new(gint playlist); - -#endif /* UI_PLAYLIST_MODEL_H */ diff -Nru audacious-plugins-2.4.4/src/gtkui/ui_playlist_notebook.c audacious-plugins-3.2/src/gtkui/ui_playlist_notebook.c --- audacious-plugins-2.4.4/src/gtkui/ui_playlist_notebook.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/ui_playlist_notebook.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,5 @@ /* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2010 Audacious development team + * Copyright (C) 2005-2012 Audacious development team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,21 +19,124 @@ #include "config.h" -#include #include +#include #include +#include +#include #include #include +#include +#include +#include +#include "gtkui.h" #include "ui_playlist_notebook.h" #include "ui_playlist_widget.h" -#include "ui_playlist_model.h" #include "playlist_util.h" -static GtkWidget *notebook; -static struct index *pages; -GtkWidget *ui_playlist_notebook_tab_title_editing = NULL; +#define CURRENT_POS (-2) + +#if GTK_CHECK_VERSION(2, 20, 0) +#define HAVE_ADD_BUTTON +#endif + +static GtkWidget * notebook = NULL; +static GQueue follow_queue = G_QUEUE_INIT; +static gint highlighted = -1; + +static GtkWidget *ui_playlist_notebook_tab_title_editing; + +static gint switch_handler = 0; +static gint reorder_handler = 0; + +#ifdef HAVE_ADD_BUTTON +static void add_button_cb (GtkButton * button, void * unused) +{ + aud_playlist_insert (-1); + aud_playlist_set_active (aud_playlist_count () - 1); +} + +static void make_add_button (GtkWidget * notebook) +{ + GtkWidget * button = gtk_button_new (); + gtk_button_set_relief ((GtkButton *) button, GTK_RELIEF_NONE); + gtk_container_add ((GtkContainer *) button, gtk_image_new_from_stock + (GTK_STOCK_ADD, GTK_ICON_SIZE_BUTTON)); + gtk_widget_set_can_focus (button, FALSE); + + g_signal_connect (button, "clicked", (GCallback) add_button_cb, NULL); + gtk_widget_show_all (button); + + gtk_notebook_set_action_widget ((GtkNotebook *) notebook, button, GTK_PACK_END); +} +#endif + +static void close_button_cb (GtkWidget * button, void * id) +{ + audgui_confirm_playlist_delete (aud_playlist_by_unique_id (GPOINTER_TO_INT (id))); +} + +#if ! GTK_CHECK_VERSION (3, 0, 0) +static void close_button_style_set(GtkWidget * button, GtkRcStyle * previous_style, + gpointer user_data) +{ + gint w, h; + gtk_icon_size_lookup_for_settings (gtk_widget_get_settings (button), GTK_ICON_SIZE_MENU, &w, &h); + gtk_widget_set_size_request (button, w + 2, h + 2); +} +#endif + +static GtkWidget * make_close_button (gint list) +{ + GtkWidget * button = gtk_button_new (); + gtk_button_set_relief ((GtkButton *) button, GTK_RELIEF_NONE); + gtk_button_set_focus_on_click ((GtkButton *) button, FALSE); + gtk_widget_set_name (button, "gtkui-tab-close-button"); + gtk_widget_set_tooltip_text (button, _("Close")); + g_signal_connect (button, "clicked", (GCallback) close_button_cb, + GINT_TO_POINTER (aud_playlist_get_unique_id (list))); + +#if GTK_CHECK_VERSION (3, 0, 0) + GtkCssProvider * provider = gtk_css_provider_new (); + gtk_css_provider_load_from_data (provider, + "#gtkui-tab-close-button {" + " -GtkButton-default-border: 0;" + " -GtkButton-default-outside-border: 0;" + " -GtkButton-inner-border: 0;" + " -GtkWidget-focus-padding: 0;" + " -GtkWidget-focus-line-width: 0;" + " margin: 0;" + " padding: 0; }", + -1, NULL); + + gtk_style_context_add_provider (gtk_widget_get_style_context (button), + GTK_STYLE_PROVIDER (provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + g_object_unref (provider); +#else + gtk_rc_parse_string ( + "style \"gtkui-tab-close-button-style\" {" + " GtkWidget::focus-padding = 0" + " GtkWidget::focus-line-width = 0" + " xthickness = 0" + " ythickness = 0 }" + "widget \"*.gtkui-tab-close-button\" style \"gtkui-tab-close-button-style\"" + ); + + g_signal_connect (button, "style-set", (GCallback) close_button_style_set, NULL); +#endif + + GtkWidget * icon = gtk_image_new_from_stock (GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU); + gtk_container_add ((GtkContainer *) button, icon); + + GtkWidget * align = gtk_alignment_new (1.0, 0.5, 0.0, 0.0); + gtk_container_add ((GtkContainer *) align, button); + + gtk_widget_show_all (align); + return align; +} GtkNotebook *ui_playlist_get_notebook(void) { @@ -74,42 +177,43 @@ if (event->type == GDK_2BUTTON_PRESS && event->button == 1) ui_playlist_notebook_edit_tab_title(widget); + if (event->type == GDK_BUTTON_PRESS && event->button == 2) + { + GtkWidget *page = g_object_get_data(G_OBJECT(widget), "page"); + audgui_confirm_playlist_delete(gtk_notebook_page_num(UI_PLAYLIST_NOTEBOOK, page)); + } + + if (event->type == GDK_BUTTON_PRESS && event->button == 3) + { + GtkWidget *page = g_object_get_data(G_OBJECT(widget), "page"); + + gtk_notebook_set_current_page(UI_PLAYLIST_NOTEBOOK, gtk_notebook_page_num(UI_PLAYLIST_NOTEBOOK, page)); + popup_menu_tab (event->button, event->time); + } + return FALSE; } -static void tab_changed(GtkNotebook * notebook, GtkNotebookPage * notebook_page, gint page_num, void *unused) +static void tab_changed (GtkNotebook * notebook, GtkWidget * page, gint + page_num, void * unused) { - GtkTreeView *treeview = playlist_get_treeview(page_num); + GtkWidget * treeview = playlist_get_treeview (page_num); if (treeview != NULL) { - GtkTreeModel *tree_model = gtk_tree_view_get_model(treeview); - UiPlaylistModel *model = UI_PLAYLIST_MODEL(tree_model); - - aud_playlist_set_active(model->playlist); + aud_playlist_set_active (page_num); if (ui_playlist_notebook_tab_title_editing != NULL) tab_title_reset(ui_playlist_notebook_tab_title_editing); } } -#if GTK_CHECK_VERSION (2, 10, 0) static void tab_reordered(GtkNotebook *notebook, GtkWidget *child, guint page_num, gpointer user_data) { - GtkTreeView *treeview = playlist_get_treeview_from_page(child); - - if (treeview == NULL) - return; - - GtkTreeModel *tree_model; - UiPlaylistModel *model; - - tree_model = gtk_tree_view_get_model(treeview); - model = UI_PLAYLIST_MODEL(tree_model); - - aud_playlist_reorder(model->playlist, page_num, 1); + GtkWidget * widget = g_object_get_data ((GObject *) child, "treeview"); + g_return_if_fail (widget); + aud_playlist_reorder (ui_playlist_widget_get_playlist (widget), page_num, 1); } -#endif static GtkLabel *get_tab_label(gint playlist) { @@ -118,30 +222,20 @@ return GTK_LABEL(g_object_get_data(G_OBJECT(ebox), "label")); } -void ui_playlist_notebook_add_tab_label_markup(gint playlist, gboolean new_title) +static void set_tab_label (gint list, GtkLabel * label) { - static gint last_playlist = -1; - static GtkLabel *last_label = NULL; + gchar * title = aud_playlist_get_title (list); - if (last_playlist == playlist && !new_title) - return; - else + if (list == aud_playlist_get_playing ()) { - if (last_playlist > -1 && last_label != NULL && !new_title) - gtk_label_set_text(last_label, aud_playlist_get_title(last_playlist)); - - GtkLabel *label = get_tab_label(playlist); - - if (!GTK_IS_LABEL(label)) - return; - - gchar *markup = g_markup_printf_escaped("%s", aud_playlist_get_title(playlist)); - gtk_label_set_markup(label, markup); - g_free(markup); - - last_playlist = playlist; - last_label = label; + gchar * markup = g_markup_printf_escaped ("%s", title); + gtk_label_set_markup (label, markup); + g_free (markup); } + else + gtk_label_set_text (label, title); + + str_unref (title); } void ui_playlist_notebook_edit_tab_title(GtkWidget *ebox) @@ -149,7 +243,7 @@ if (!gtk_notebook_get_show_tabs(UI_PLAYLIST_NOTEBOOK)) return; - if (ebox == NULL) + if (ebox == NULL || !GTK_IS_EVENT_BOX(ebox)) { GtkWidget *page = gtk_notebook_get_nth_page(UI_PLAYLIST_NOTEBOOK, aud_playlist_get_active()); ebox = gtk_notebook_get_tab_label(UI_PLAYLIST_NOTEBOOK, page); @@ -159,7 +253,9 @@ GtkWidget *entry = g_object_get_data(G_OBJECT(ebox), "entry"); gtk_widget_hide(label); - gtk_entry_set_text(GTK_ENTRY(entry), aud_playlist_get_title(aud_playlist_get_active())); + gchar * title = aud_playlist_get_title (aud_playlist_get_active ()); + gtk_entry_set_text ((GtkEntry *) entry, title); + str_unref (title); gtk_widget_grab_focus(entry); gtk_editable_select_region(GTK_EDITABLE(entry), 0, -1); gtk_widget_show(entry); @@ -174,22 +270,21 @@ gint position = aud_playlist_get_position (playlist); scrollwin = gtk_scrolled_window_new(NULL, NULL); - index_insert(pages, playlist, scrollwin); treeview = ui_playlist_widget_new(playlist); g_object_set_data(G_OBJECT(scrollwin), "treeview", treeview); gtk_container_add(GTK_CONTAINER(scrollwin), treeview); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); - gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrollwin), GTK_SHADOW_IN); gtk_widget_show_all(scrollwin); ebox = gtk_event_box_new(); - GTK_WIDGET_SET_FLAGS(ebox, GTK_NO_WINDOW); + gtk_event_box_set_visible_window ((GtkEventBox *) ebox, FALSE); - hbox = gtk_hbox_new(FALSE, 2); + hbox = gtk_hbox_new (FALSE, 4); - label = gtk_label_new(aud_playlist_get_title(playlist)); + label = gtk_label_new (""); + set_tab_label (playlist, (GtkLabel *) label); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); entry = gtk_entry_new(); @@ -198,21 +293,24 @@ gtk_widget_show_all(ebox); gtk_widget_hide(entry); + gtk_box_pack_end ((GtkBox *) hbox, make_close_button (playlist), FALSE, FALSE, 0); + g_object_set_data(G_OBJECT(ebox), "label", label); g_object_set_data(G_OBJECT(ebox), "entry", entry); + g_object_set_data(G_OBJECT(ebox), "page", scrollwin); - gtk_notebook_append_page(UI_PLAYLIST_NOTEBOOK, scrollwin, ebox); - gtk_notebook_set_show_tabs(UI_PLAYLIST_NOTEBOOK, index_count(pages) > 1 ? TRUE : FALSE); - -#if GTK_CHECK_VERSION (2, 10, 0) + gtk_notebook_insert_page (UI_PLAYLIST_NOTEBOOK, scrollwin, ebox, playlist); gtk_notebook_set_tab_reorderable(UI_PLAYLIST_NOTEBOOK, scrollwin, TRUE); -#endif + + g_object_set_data ((GObject *) treeview, "playlist-id", + GINT_TO_POINTER (aud_playlist_get_unique_id (playlist))); if (position >= 0) { aud_playlist_select_all (playlist, FALSE); aud_playlist_entry_set_selected (playlist, position, TRUE); - treeview_set_focus_now ((GtkTreeView *) treeview, position); + audgui_list_set_highlight (treeview, position); + audgui_list_set_focus (treeview, position); } g_signal_connect(ebox, "button-press-event", G_CALLBACK(tab_button_press_cb), NULL); @@ -220,83 +318,221 @@ g_signal_connect(entry, "activate", G_CALLBACK(tab_title_save), ebox); } -void ui_playlist_notebook_destroy_tab(gint playlist) -{ - GtkWidget *page = index_get(pages, playlist); - - gtk_notebook_remove_page(UI_PLAYLIST_NOTEBOOK, gtk_notebook_page_num(UI_PLAYLIST_NOTEBOOK, page)); - index_delete(pages, playlist, 1); - gtk_notebook_set_show_tabs(UI_PLAYLIST_NOTEBOOK, index_count(pages) > 1 ? TRUE : FALSE); -} - void ui_playlist_notebook_populate(void) { gint playlists = aud_playlist_count(); gint count; - pages = index_new(); - for (count = 0; count < playlists; count++) ui_playlist_notebook_create_tab(count); gtk_notebook_set_current_page (UI_PLAYLIST_NOTEBOOK, aud_playlist_get_active ()); + highlighted = aud_playlist_get_unique_id (aud_playlist_get_playing ()); - g_signal_connect (UI_PLAYLIST_NOTEBOOK, "switch-page", (GCallback) - tab_changed, NULL); + if (! switch_handler) + switch_handler = g_signal_connect (notebook, "switch-page", (GCallback) + tab_changed, NULL); + if (! reorder_handler) + reorder_handler = g_signal_connect (notebook, "page-reordered", + (GCallback) tab_reordered, NULL); -#if GTK_CHECK_VERSION (2, 10, 0) - g_signal_connect (UI_PLAYLIST_NOTEBOOK, "page-reordered", (GCallback) - tab_reordered, NULL); -#endif + gtk_widget_grab_focus (playlist_get_treeview (aud_playlist_get_active ())); } -void ui_playlist_notebook_update(gpointer hook_data, gpointer user_data) +void ui_playlist_notebook_empty (void) { - gint type = GPOINTER_TO_INT(hook_data); + if (switch_handler) + g_signal_handler_disconnect (notebook, switch_handler); + switch_handler = 0; + if (reorder_handler) + g_signal_handler_disconnect (notebook, reorder_handler); + reorder_handler = 0; + + gint n_pages = gtk_notebook_get_n_pages ((GtkNotebook *) notebook); + while (n_pages) + gtk_notebook_remove_page ((GtkNotebook *) notebook, -- n_pages); +} - if (type == PLAYLIST_UPDATE_STRUCTURE) +static void do_follow (void) +{ + while (! g_queue_is_empty (& follow_queue)) { - AUDDBG("playlist order update\n"); + gint list = aud_playlist_by_unique_id (GPOINTER_TO_INT (g_queue_pop_head + (& follow_queue))); + gint row = GPOINTER_TO_INT (g_queue_pop_head (& follow_queue)); - GtkTreeView *treeview; - GtkTreeModel *tree_model; - UiPlaylistModel *model; - GtkLabel *label; - gint i, n_pages; + if (list < 0) + continue; - n_pages = gtk_notebook_get_n_pages(UI_PLAYLIST_NOTEBOOK); + GtkWidget * widget = playlist_get_treeview (list); - for (i = 0; i < n_pages; i++) + if (row == CURRENT_POS) { - if (i == aud_playlist_get_playing()) - ui_playlist_notebook_add_tab_label_markup(i, TRUE); - else - { - label = get_tab_label(i); + row = aud_playlist_get_position (list); + audgui_list_set_highlight (widget, row); - if (GTK_IS_LABEL(label)) - gtk_label_set_text(label, aud_playlist_get_title(i)); - } + if (! aud_get_bool ("gtkui", "autoscroll")) + continue; + } - treeview = playlist_get_treeview(i); + audgui_list_set_focus (widget, row); + } +} - if (treeview == NULL) - continue; +static void add_remove_pages (void) +{ + gint lists = aud_playlist_count (); + gint pages = gtk_notebook_get_n_pages ((GtkNotebook *) notebook); + + /* scan through existing treeviews */ + for (gint i = 0; i < pages; ) + { + GtkWidget * page = gtk_notebook_get_nth_page ((GtkNotebook *) notebook, i); + GtkWidget * tree = g_object_get_data ((GObject *) page, "treeview"); + gint tree_id = GPOINTER_TO_INT (g_object_get_data ((GObject *) tree, "playlist-id")); + + /* do we have an orphaned treeview? */ + if (aud_playlist_by_unique_id (tree_id) < 0) + { + g_signal_handlers_block_by_func (notebook, tab_changed, NULL); + gtk_notebook_remove_page ((GtkNotebook *) notebook, i); + g_signal_handlers_unblock_by_func (notebook, tab_changed, NULL); + pages --; + continue; + } + + /* do we have the right treeview? */ + gint list_id = aud_playlist_get_unique_id (i); + + if (tree_id == list_id) + { + ui_playlist_widget_set_playlist (tree, i); + i ++; + continue; + } + + /* look for the right treeview */ + gint found = FALSE; + + for (gint j = i + 1; j < pages; j ++) + { + page = gtk_notebook_get_nth_page ((GtkNotebook *) notebook, j); + tree = g_object_get_data ((GObject *) page, "treeview"); + tree_id = GPOINTER_TO_INT (g_object_get_data ((GObject *) tree, "playlist-id")); - tree_model = gtk_tree_view_get_model(treeview); - model = UI_PLAYLIST_MODEL(tree_model); + /* found it? move it to the right place */ + if (tree_id == list_id) + { + g_signal_handlers_block_by_func (notebook, tab_reordered, NULL); + gtk_notebook_reorder_child ((GtkNotebook *) notebook, page, i); + g_signal_handlers_unblock_by_func (notebook, tab_reordered, NULL); + found = TRUE; + break; + } + } - model->playlist = i; + /* didn't find it? create it */ + if (! found) + { + ui_playlist_notebook_create_tab (i); + pages ++; + continue; } + } + + /* create new treeviews */ + while (pages < lists) + { + ui_playlist_notebook_create_tab (pages); + pages ++; + } +} + +void ui_playlist_notebook_update (void * data, void * user) +{ + gint global_level = GPOINTER_TO_INT (data); + + if (global_level == PLAYLIST_UPDATE_STRUCTURE) + add_remove_pages (); + + gint lists = aud_playlist_count (); + + for (gint list = 0; list < lists; list ++) + { + if (global_level >= PLAYLIST_UPDATE_METADATA) + set_tab_label (list, get_tab_label (list)); + + gint at, count; + gint level = aud_playlist_updated_range (list, & at, & count); + + if (level) + ui_playlist_widget_update (playlist_get_treeview (list), level, at, count); + } + + gtk_notebook_set_current_page ((GtkNotebook *) notebook, aud_playlist_get_active ()); + + do_follow (); +} + +void playlist_set_focus (gint list, gint row) +{ + g_queue_push_tail (& follow_queue, GINT_TO_POINTER + (aud_playlist_get_unique_id (list))); + g_queue_push_tail (& follow_queue, GINT_TO_POINTER (row)); + + if (! aud_playlist_update_pending ()) + do_follow (); +} + +void ui_playlist_notebook_position (void * data, void * user) +{ + gint list = GPOINTER_TO_INT (data); + + if (aud_get_bool ("gtkui", "autoscroll")) + { + aud_playlist_select_all (list, FALSE); + + if (aud_playlist_get_position (list) >= 0) + aud_playlist_entry_set_selected (list, aud_playlist_get_position (list), TRUE); + } + + playlist_set_focus (list, CURRENT_POS); +} + +void ui_playlist_notebook_activate (void * data, void * user) +{ + if (! aud_playlist_update_pending ()) + gtk_notebook_set_current_page ((GtkNotebook *) notebook, aud_playlist_get_active ()); +} + +void ui_playlist_notebook_set_playing (void * data, void * user) +{ + gint new = aud_playlist_get_unique_id (aud_playlist_get_playing ()); + + if (highlighted == new) + return; + + gint pages = gtk_notebook_get_n_pages ((GtkNotebook *) notebook); + + for (gint i = 0; i < pages; i ++) + { + GtkWidget * page = gtk_notebook_get_nth_page ((GtkNotebook *) notebook, i); + GtkWidget * tree = g_object_get_data ((GObject *) page, "treeview"); + gint tree_id = GPOINTER_TO_INT (g_object_get_data ((GObject *) tree, "playlist-id")); - gtk_notebook_set_current_page(UI_PLAYLIST_NOTEBOOK, aud_playlist_get_active()); - gtk_widget_grab_focus(GTK_WIDGET(playlist_get_active_treeview())); + if (tree_id == highlighted || tree_id == new) + set_tab_label (i, get_tab_label (i)); } + + highlighted = new; } static void destroy_cb (void) { - index_free (pages); + notebook = NULL; + g_queue_clear (& follow_queue); + switch_handler = 0; + reorder_handler = 0; } GtkWidget *ui_playlist_notebook_new() @@ -307,6 +543,21 @@ gtk_notebook_set_scrollable(UI_PLAYLIST_NOTEBOOK, TRUE); gtk_notebook_set_show_border(UI_PLAYLIST_NOTEBOOK, FALSE); +#ifdef HAVE_ADD_BUTTON + make_add_button (notebook); +#endif + g_signal_connect (notebook, "destroy", (GCallback) destroy_cb, NULL); return notebook; } + +void playlist_show_headers (gboolean show) +{ + gboolean old = aud_get_bool ("gtkui", "playlist_headers"); + if (old == show) + return; + + aud_set_bool ("gtkui", "playlist_headers", show); + ui_playlist_notebook_empty (); + ui_playlist_notebook_populate (); +} diff -Nru audacious-plugins-2.4.4/src/gtkui/ui_playlist_notebook.h audacious-plugins-3.2/src/gtkui/ui_playlist_notebook.h --- audacious-plugins-2.4.4/src/gtkui/ui_playlist_notebook.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/ui_playlist_notebook.h 2012-01-20 19:48:30.000000000 +0000 @@ -27,10 +27,14 @@ GtkNotebook *ui_playlist_get_notebook(void); GtkWidget *ui_playlist_notebook_new(); void ui_playlist_notebook_create_tab(gint playlist); -void ui_playlist_notebook_destroy_tab(gint playlist); void ui_playlist_notebook_edit_tab_title(GtkWidget *ebox); void ui_playlist_notebook_populate(void); -void ui_playlist_notebook_update(gpointer hook_data, gpointer user_data); -void ui_playlist_notebook_add_tab_label_markup(gint playlist, gboolean new_title); +void ui_playlist_notebook_empty (void); +void ui_playlist_notebook_update (void * data, void * user); +void ui_playlist_notebook_activate (void * data, void * user); +void ui_playlist_notebook_set_playing (void * data, void * user); +void ui_playlist_notebook_position (void * data, void * user); + +void playlist_show_headers (gboolean show); #endif diff -Nru audacious-plugins-2.4.4/src/gtkui/ui_playlist_widget.c audacious-plugins-3.2/src/gtkui/ui_playlist_widget.c --- audacious-plugins-2.4.4/src/gtkui/ui_playlist_widget.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/ui_playlist_widget.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,513 +1,409 @@ -/* Audacious - Cross-platform multimedia player - * Copyright (C) 2008 Tomasz MoÅ„ - * Copyright (C) 2009-2010 William Pitcock - * Copyright (C) 2010 MichaÅ‚ Lipski +/* + * ui_playlist_widget.c + * Copyright 2011 John Lindgren * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. + * This file is part of Audacious. * - * This program 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 General Public License for more details. + * Audacious is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 2 or version 3 of the License. * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * Audacious 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 General Public License for more details. * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. + * You should have received a copy of the GNU General Public License along with + * Audacious. If not, see . + * + * The Audacious team does not consider modular code linking to Audacious or + * using our public API to be a derived work. */ -#include +#include + #include -#include -#include -#include #include +#include +#include #include #include +#include -#include "ui_manager.h" -#include "ui_playlist_model.h" +#include "config.h" +#include "gtkui.h" #include "playlist_util.h" +#include "ui_playlist_widget.h" -#if ! GTK_CHECK_VERSION (2, 12, 0) -static void gtk_tree_view_convert_widget_to_bin_window_coords - (GtkTreeView * tree, gint wx, gint wy, gint * bx, gint * by) -{ - gint bx0, by0; - gdk_window_get_position (gtk_tree_view_get_bin_window (tree), & bx0, & by0); - * bx = wx - bx0; - * by = wy - by0; +static const GType pw_col_types[PW_COLS] = {G_TYPE_INT, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING}; +static const gboolean pw_col_widths[PW_COLS] = {7, -1, -1, 4, -1, 2, 3, 7, -1, + -1, -1, 3}; +static const gboolean pw_col_label[PW_COLS] = {FALSE, TRUE, TRUE, TRUE, TRUE, + FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE}; + +typedef struct { + gint list; + GList * queue; +} PlaylistWidgetData; + +static void set_int_from_tuple (GValue * value, const Tuple * tuple, gint field) +{ + gint i = tuple ? tuple_get_int (tuple, field, NULL) : 0; + if (i > 0) + g_value_take_string (value, g_strdup_printf ("%d", i)); + else + g_value_set_string (value, ""); } -#endif -typedef struct +static void set_string_from_tuple (GValue * value, const Tuple * tuple, + gint field) { - GtkTreeView * source; - GtkTreePath *dest_path; - gint source_playlist; - gint source_pos; - gboolean append; -} UiPlaylistDragTracker; - -static UiPlaylistDragTracker *t; -static gboolean dropped = FALSE; + gchar *str = tuple ? tuple_get_str (tuple, field, NULL) : NULL; + g_value_set_string (value, str); + str_unref(str); +} -static void _ui_playlist_widget_drag_begin(GtkWidget *widget, GdkDragContext * context, gpointer data) +static void set_queued (GValue * value, gint list, gint row) { - t = g_slice_new0(UiPlaylistDragTracker); - gint playlist; - - g_signal_stop_emission_by_name(widget, "drag-begin"); - - playlist = playlist_get_playlist_from_treeview(GTK_TREE_VIEW(widget)); - - t->source = (GtkTreeView *) widget; - t->source_playlist = playlist; - t->source_pos = GPOINTER_TO_INT (g_object_get_data ((GObject *) widget, - "row-clicked")); - t->dest_path = NULL; - t->append = FALSE; + int q = aud_playlist_queue_find_entry (list, row); + if (q < 0) + g_value_set_string (value, ""); + else + g_value_take_string (value, g_strdup_printf ("#%d", 1 + q)); } -static void _ui_playlist_widget_drag_motion(GtkTreeView * widget, GdkDragContext * context, gint x, gint y, guint time, gpointer user_data) +static void set_length (GValue * value, gint list, gint row) { - GdkRectangle win; - GdkRectangle rect; - gint end_pos, dest_playlist; - - if (t == NULL) - { - /* Dragging from other application */ - t = g_slice_new0(UiPlaylistDragTracker); - t->source_playlist = -1; - t->dest_path = NULL; - } - - if (t->dest_path) + gint len = aud_playlist_entry_get_length (list, row, TRUE); + if (len) { - gtk_tree_path_free (t->dest_path); - t->dest_path = NULL; - } + len /= 1000; - t->append = FALSE; + gchar s[16]; + if (len < 3600) + snprintf (s, sizeof s, aud_get_bool (NULL, "leading_zero") ? + "%02d:%02d" : "%d:%02d", len / 60, len % 60); + else + snprintf (s, sizeof s, "%d:%02d:%02d", len / 3600, (len / 60) % 60, + len % 60); - g_signal_stop_emission_by_name(widget, "drag-motion"); + g_value_set_string (value, s); + } + else + g_value_set_string (value, ""); +} - dest_playlist = playlist_get_playlist_from_treeview(widget); - end_pos = aud_playlist_entry_count(dest_playlist) - 1; +static void get_value (void * user, gint row, gint column, GValue * value) +{ + PlaylistWidgetData * data = user; + g_return_if_fail (column >= 0 && column < pw_num_cols); + g_return_if_fail (row >= 0 && row < aud_playlist_entry_count (data->list)); - gdk_window_get_geometry(gtk_tree_view_get_bin_window(widget), NULL, NULL, NULL, &win.height, NULL); + column = pw_cols[column]; - gtk_tree_view_convert_widget_to_bin_window_coords (widget, x, y, & x, & y); - gtk_tree_view_get_path_at_pos (widget, x, y, & t->dest_path, NULL, NULL, - NULL); + gchar * title = NULL, * artist = NULL, * album = NULL; + Tuple * tuple = NULL; - if (! t->dest_path && end_pos != -1) - t->dest_path = gtk_tree_path_new_from_indices (end_pos, -1); + if (column == PW_COL_TITLE || column == PW_COL_ARTIST || column == + PW_COL_ALBUM) + aud_playlist_entry_describe (data->list, row, & title, & artist, + & album, TRUE); + else if (column == PW_COL_YEAR || column == PW_COL_TRACK || column == + PW_COL_FILENAME || column == PW_COL_PATH || column == PW_COL_BITRATE) + tuple = aud_playlist_entry_get_tuple (data->list, row, TRUE); - if (t->dest_path) + switch (column) { - gtk_tree_view_get_background_area (widget, t->dest_path, NULL, & rect); - - if (y - rect.y < rect.height / 2) - gtk_tree_view_set_drag_dest_row (widget, t->dest_path, - GTK_TREE_VIEW_DROP_BEFORE); - else - { - gtk_tree_view_set_drag_dest_row (widget, t->dest_path, - GTK_TREE_VIEW_DROP_AFTER); - t->append = TRUE; - } - - gtk_tree_view_get_background_area (widget, t->dest_path, NULL, & rect); - GtkAdjustment * vadj = gtk_tree_view_get_vadjustment (widget); - - if (y >= 0 && y < rect.height * 2 && vadj->value > 0) - gtk_adjustment_set_value(vadj, MAX(0, vadj->value - rect.height)); - else if (win.height - y <= rect.height * 2 && vadj->value < vadj->upper - - vadj->page_size) - gtk_adjustment_set_value(vadj, MIN(vadj->upper - vadj->page_size, vadj->value + rect.height)); + case PW_COL_NUMBER: + g_value_set_int (value, 1 + row); + break; + case PW_COL_TITLE: + g_value_set_string (value, title); + break; + case PW_COL_ARTIST: + g_value_set_string (value, artist); + break; + case PW_COL_YEAR: + set_int_from_tuple (value, tuple, FIELD_YEAR); + break; + case PW_COL_ALBUM: + g_value_set_string (value, album); + break; + case PW_COL_TRACK: + set_int_from_tuple (value, tuple, FIELD_TRACK_NUMBER); + break; + case PW_COL_QUEUED: + set_queued (value, data->list, row); + break; + case PW_COL_LENGTH: + set_length (value, data->list, row); + break; + case PW_COL_FILENAME: + set_string_from_tuple (value, tuple, FIELD_FILE_NAME); + break; + case PW_COL_PATH: + set_string_from_tuple (value, tuple, FIELD_FILE_PATH); + break; + case PW_COL_CUSTOM:; + gchar * custom = aud_playlist_entry_get_title (data->list, row, TRUE); + g_value_set_string (value, custom); + str_unref (custom); + break; + case PW_COL_BITRATE: + set_int_from_tuple (value, tuple, FIELD_BITRATE); + break; } + + str_unref (title); + str_unref (artist); + str_unref (album); + if (tuple) + tuple_unref (tuple); } -static gint get_dest_row (void) +static gboolean get_selected (void * user, gint row) { - return t->dest_path ? gtk_tree_path_get_indices (t->dest_path)[0] + - (t->append ? 1 : 0) : 0; + return aud_playlist_entry_get_selected (((PlaylistWidgetData *) user)->list, + row); } -static void drag_tracker_cleanup() +static void set_selected (void * user, gint row, gboolean selected) { - if (!t) - return; - - if (t->dest_path) - gtk_tree_path_free(t->dest_path); - - g_slice_free(UiPlaylistDragTracker, t); - t = NULL; + aud_playlist_entry_set_selected (((PlaylistWidgetData *) user)->list, row, + selected); } -static void local_drop (GtkTreeView * tree, gint list, gint row) +static void select_all (void * user, gboolean selected) { - /* Adjust the shift amount so that the selected entry closest to the - * destination ends up at the destination. */ - if (row > t->source_pos) - row -= playlist_count_selected_in_range (list, t->source_pos, row - - t->source_pos); - else - row += playlist_count_selected_in_range (list, row, t->source_pos - row); - - aud_playlist_shift (list, t->source_pos, row - t->source_pos); - treeview_set_focus (tree, row); + aud_playlist_select_all (((PlaylistWidgetData *) user)->list, selected); } -static void cross_drop (GtkTreeView * tree, gint list, gint row) +static void activate_row (void * user, gint row) { - struct index * names, * tuples; - - playlist_selected_to_indexes (t->source_playlist, & names, & tuples); - treeview_remove_selected (t->source); - treeview_add_indexes (tree, row, names, tuples); + gint list = ((PlaylistWidgetData *) user)->list; + aud_playlist_set_playing (list); + aud_playlist_set_position (list, row); + aud_drct_play (); } -static gboolean drag_drop_cb (GtkWidget * widget, GdkDragContext * context, - gint x, gint y, guint time, void * unused) +static void right_click (void * user, GdkEventButton * event) { - gint list = ((UiPlaylistModel *) gtk_tree_view_get_model ((GtkTreeView *) - widget))->playlist; - - g_signal_stop_emission_by_name (widget, "drag-drop"); - g_return_val_if_fail (t, FALSE); - - if (t->source) - { - if (list == t->source_playlist) - local_drop ((GtkTreeView *) widget, list, get_dest_row ()); - else - cross_drop ((GtkTreeView *) widget, list, get_dest_row ()); - } - else - { - dropped = TRUE; - gtk_drag_get_data (widget, context, gdk_atom_intern ("text/uri-list", - FALSE), time); - } - - return TRUE; + popup_menu_rclick (event->button, event->time); } -static void drag_data_cb (GtkWidget * widget, GdkDragContext * context, gint x, - gint y, GtkSelectionData * data, guint info, guint time, void * unused) +static void shift_rows (void * user, gint row, gint before) { - g_signal_stop_emission_by_name (widget, "drag-data-received"); - g_return_if_fail (t); + gint list = ((PlaylistWidgetData *) user)->list; - if (! dropped) - { - gdk_drag_status (context, GDK_ACTION_COPY, time); - return; - } + /* Adjust the shift amount so that the selected entry closest to the + * destination ends up at the destination. */ + if (before > row) + before -= playlist_count_selected_in_range (list, row, before - row); + else + before += playlist_count_selected_in_range (list, before, row - before); - dropped = FALSE; - treeview_add_urilist ((GtkTreeView *) widget, get_dest_row (), - (const gchar *) data->data); - gtk_drag_finish (context, FALSE, FALSE, time); + aud_playlist_shift (list, row, before - row); } -static void drag_end_cb (GtkWidget * widget, GdkDragContext * context, void * - unused) +static void get_data (void * user, void * * data, gint * length) { - drag_tracker_cleanup (); + gchar * text = audgui_urilist_create_from_selected + (((PlaylistWidgetData *) user)->list); + g_return_if_fail (text); + * data = text; + * length = strlen (text); } -static void _ui_playlist_widget_selection_update(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer playlist_p) +static void receive_data (void * user, gint row, const void * data, gint length) { - gint entry; - - gtk_tree_model_get(model, iter, PLAYLIST_COLUMN_NUM, &entry, -1); - - /* paths are numbered from 1, playlist index start from 0 */ - entry -= 1; - - aud_playlist_entry_set_selected(GPOINTER_TO_INT(playlist_p), entry, TRUE); + gchar * text = g_malloc (length + 1); + memcpy (text, data, length); + text[length] = 0; + audgui_urilist_insert (((PlaylistWidgetData *) user)->list, row, text); + g_free (text); } -static void _ui_playlist_widget_selection_changed(GtkTreeSelection * selection, gpointer treeview) -{ - AUDDBG ("Selection changed.\n"); - gint playlist = playlist_get_playlist_from_treeview(treeview); - - aud_playlist_select_all(playlist, FALSE); +static const AudguiListCallbacks callbacks = { + .get_value = get_value, + .get_selected = get_selected, + .set_selected = set_selected, + .select_all = select_all, + .activate_row = activate_row, + .right_click = right_click, + .shift_rows = shift_rows, + .data_type = "text/uri-list", + .get_data = get_data, + .receive_data = receive_data}; - gtk_tree_selection_selected_foreach(selection, _ui_playlist_widget_selection_update, GINT_TO_POINTER(playlist)); -} - -static void ui_playlist_widget_change_song(GtkTreeView * treeview, guint pos) +static gboolean search_cb (GtkTreeModel * model, gint column, const gchar * key, + GtkTreeIter * iter, void * user) { - gint playlist = playlist_get_playlist_from_treeview(treeview); - - aud_playlist_set_playing(playlist); - aud_playlist_set_position(playlist, pos); + GtkTreePath * path = gtk_tree_model_get_path (model, iter); + g_return_val_if_fail (path, TRUE); + gint row = gtk_tree_path_get_indices (path)[0]; + g_return_val_if_fail (row >= 0, TRUE); + gchar * s[3] = {NULL, NULL, NULL}; + aud_playlist_entry_describe (((PlaylistWidgetData *) user)->list, row, + & s[0], & s[1], & s[2], FALSE); + gtk_tree_path_free (path); - if (!aud_drct_get_playing()) - aud_drct_play(); -} + gchar * temp = g_utf8_strdown (key, -1); + gchar * * keys = g_strsplit (temp, " ", 0); + g_free (temp); -static void ui_playlist_widget_row_activated(GtkTreeView * treeview, GtkTreePath * path, GtkTreeViewColumn *column, gpointer user_data) -{ - if (path) + gint remain = 0; /* number of keys remaining to be matched */ + for (gint j = 0; keys[j]; j ++) { - gint pos = playlist_get_index_from_path(path); - - if (pos >= 0) - ui_playlist_widget_change_song(treeview, pos); + if (keys[j][0]) + remain ++; } -} + if (! remain) + remain ++; /* force non-match if there are no non-blank keys */ -static gboolean ui_playlist_widget_keypress_cb(GtkWidget * widget, GdkEventKey * event, gpointer data) -{ - switch (event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK)) + for (gint i = 0; i < G_N_ELEMENTS (s); i ++) { - case 0: - switch (event->keyval) + if (! s[i]) + continue; + + if (remain) { - case GDK_KP_Enter: - { - GtkTreePath *path = playlist_get_first_selected_path(GTK_TREE_VIEW(widget)); - gtk_tree_view_row_activated(GTK_TREE_VIEW(widget), path, NULL); - return TRUE; - } - default: - return FALSE; - } - break; - case GDK_MOD1_MASK: - { - if ((event->keyval == GDK_Up) || (event->keyval == GDK_Down)) { - gint focus = treeview_get_focus ((GtkTreeView *) widget); - if (focus < 0) - return TRUE; - - gint playlist = playlist_get_playlist_from_treeview ((GtkTreeView *) - widget); - aud_playlist_entry_set_selected (playlist, focus, TRUE); - focus += aud_playlist_shift (playlist, focus, (event->keyval == - GDK_Up) ? -1 : 1); - treeview_set_focus ((GtkTreeView *) widget, focus); - return TRUE; + temp = g_utf8_strdown (s[i], -1); + + for (gint j = 0; keys[j] && remain; j ++) + { + if (keys[j][0] && strstr (temp, keys[j])) + { + keys[j][0] = 0; /* don't look for this one again */ + remain --; + } + } + + g_free (temp); } - } - default: - return FALSE; + + str_unref (s[i]); } - return FALSE; -} -static gint pos[2]; + g_strfreev (keys); + return remain ? TRUE : FALSE; /* TRUE == not matched, FALSE == matched */ +} -static gboolean ui_playlist_widget_button_press_cb(GtkWidget * widget, GdkEventButton * event) +static void destroy_cb (PlaylistWidgetData * data) { - GtkTreePath *path = NULL; - gint state = event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK); - - gtk_tree_view_get_path_at_pos ((GtkTreeView *) widget, event->x, event->y, - & path, NULL, NULL, NULL); - - /* Save the row clicked on for drag and drop. */ - if (path) - g_object_set_data ((GObject *) widget, "row-clicked", GINT_TO_POINTER - (gtk_tree_path_get_indices (path)[0])); + g_list_free (data->queue); + g_free (data); +} - /* Update focus */ - if (path && ! state) - treeview_set_focus ((GtkTreeView *) widget, gtk_tree_path_get_indices - (path)[0]); +GtkWidget * ui_playlist_widget_new (gint playlist) +{ + PlaylistWidgetData * data = g_malloc0 (sizeof (PlaylistWidgetData)); + data->list = playlist; + data->queue = NULL; - AUDDBG ("Button press: type = %d, button = %d, state = %d, path = %d\n", - event->type, event->button, state, (path != NULL) ? - gtk_tree_path_get_indices (path)[0] : -1); + GtkWidget * list = audgui_list_new (& callbacks, data, + aud_playlist_entry_count (playlist)); - if (event->button == 1 && !state) + if (aud_get_bool ("gtkui", "custom_playlist_colors")) { - pos[0] = event->x; - pos[1] = event->y; - } + GdkColor c; + gchar * tmp; - if (event->button == 1 && state) - goto NOT_HANDLED; + tmp = aud_get_string ("gtkui", "playlist_bg"); + gdk_color_parse (tmp, & c); + gtk_widget_modify_base(list, GTK_STATE_NORMAL, &c); - if (event->type == GDK_BUTTON_PRESS && event->button == 3) - ui_manager_popup_menu_show(GTK_MENU(playlistwin_popup_menu), event->x_root, event->y_root + 2, 3, event->time); + tmp = aud_get_string ("gtkui", "playlist_fg"); + gdk_color_parse (tmp, & c); + gtk_widget_modify_text(list, GTK_STATE_NORMAL, &c); + } - /* Hack: Keep GTK from messing with a multiple selection. As this blocks - * double click, we handle that case also. */ - if (path && gtk_tree_selection_path_is_selected - (gtk_tree_view_get_selection ((GtkTreeView *) widget), path)) + gchar * font = aud_get_string ("gtkui", "playlist_font"); + if (font[0]) { - if (event->type == GDK_2BUTTON_PRESS) - gtk_tree_view_row_activated ((GtkTreeView *) widget, path, NULL); + PangoFontDescription *desc; - goto HANDLED; + desc = pango_font_description_from_string (font); + gtk_widget_modify_font(list, desc); + + pango_font_description_free(desc); } + g_free (font); -NOT_HANDLED: - AUDDBG (" ... not handled.\n"); - if (path) - gtk_tree_path_free (path); - return FALSE; - -HANDLED: - AUDDBG (" ... handled.\n"); - if (path) - gtk_tree_path_free (path); - return TRUE; -} - -static gboolean ui_playlist_widget_button_release_cb(GtkWidget * widget, GdkEventButton * event) -{ - GtkTreePath *path = NULL; - GtkTreeSelection *sel = NULL; - gint state = event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK); + gtk_tree_view_set_headers_visible ((GtkTreeView *) list, + aud_get_bool ("gtkui", "playlist_headers")); + gtk_tree_view_set_search_equal_func ((GtkTreeView *) list, search_cb, data, + NULL); + g_signal_connect_swapped (list, "destroy", (GCallback) destroy_cb, data); - AUDDBG ("Button release: type = %d, button = %d, state = %d\n", event->type, - event->button, state); + /* Disable type-to-search because it blocks CTRL-V, causing URI's to be + * pasted into the search box rather than added to the playlist. The search + * box can still be brought up with CTRL-F. */ + gtk_tree_view_set_enable_search ((GtkTreeView *) list, FALSE); - if (event->button == 1 && !state && - pos[0] == event->x && pos[1] == event->y) + for (gint i = 0; i < pw_num_cols; i ++) { - gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget), event->x, event->y, &path, NULL, NULL, NULL); - sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)); - - if (path == NULL) - return FALSE; + gint n = pw_cols[i]; + audgui_list_add_column (list, pw_col_label[n] ? _(pw_col_names[n]) : + NULL, i, pw_col_types[n], pw_col_widths[n]); + } - gtk_tree_selection_unselect_all(sel); - gtk_tree_selection_select_path(sel, path); + return list; +} - gtk_tree_path_free(path); - } +gint ui_playlist_widget_get_playlist (GtkWidget * widget) +{ + PlaylistWidgetData * data = audgui_list_get_user (widget); + g_return_val_if_fail (data, -1); + return data->list; +} - return FALSE; +void ui_playlist_widget_set_playlist (GtkWidget * widget, gint list) +{ + PlaylistWidgetData * data = audgui_list_get_user (widget); + g_return_if_fail (data); + data->list = list; } -static GtkTreeViewColumn * ui_playlist_widget_set_column (GtkWidget * treeview, - gchar * title, gint column_id, gboolean expand) +static void update_queue (GtkWidget * widget, PlaylistWidgetData * data) { - GtkCellRenderer *renderer; - GtkTreeViewColumn *column; + for (GList * node = data->queue; node; node = node->next) + audgui_list_update_rows (widget, GPOINTER_TO_INT (node->data), 1); - renderer = gtk_cell_renderer_text_new(); - column = gtk_tree_view_column_new_with_attributes (title, renderer, "text", - column_id, "weight", multi_column_view ? PLAYLIST_MULTI_COLUMN_WEIGHT : - PLAYLIST_COLUMN_WEIGHT, NULL); + g_list_free (data->queue); + data->queue = NULL; - if (expand) - { - gtk_tree_view_column_set_resizable (column, TRUE); - gtk_tree_view_column_set_expand (column, TRUE); - g_object_set ((GObject *) renderer, "ellipsize-set", TRUE, "ellipsize", - PANGO_ELLIPSIZE_END, NULL); - } - else - gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_GROW_ONLY); + for (gint i = aud_playlist_queue_count (data->list); i --; ) + data->queue = g_list_prepend (data->queue, GINT_TO_POINTER + (aud_playlist_queue_get_entry (data->list, i))); - gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); - return column; + for (GList * node = data->queue; node; node = node->next) + audgui_list_update_rows (widget, GPOINTER_TO_INT (node->data), 1); } -GtkWidget *ui_playlist_widget_new(gint playlist) +void ui_playlist_widget_update (GtkWidget * widget, gint type, gint at, + gint count) { - GtkWidget *treeview; - UiPlaylistModel *model; - GtkTreeSelection *selection; - const GtkTargetEntry target_entry[] = { - {"text/uri-list", 0, 0} - }; - - model = ui_playlist_model_new(playlist); - treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(model)); - g_object_unref(model); - - gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview), TRUE); + PlaylistWidgetData * data = audgui_list_get_user (widget); + g_return_if_fail (data); - if (multi_column_view) + if (type >= PLAYLIST_UPDATE_STRUCTURE) { - gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), TRUE); + gint diff = aud_playlist_entry_count (data->list) - + audgui_list_row_count (widget); - g_object_set_data ((GObject *) treeview, "number column", - ui_playlist_widget_set_column (treeview, NULL, - PLAYLIST_MULTI_COLUMN_NUM, FALSE)); - - ui_playlist_widget_set_column (treeview, "Artist", - PLAYLIST_MULTI_COLUMN_ARTIST, TRUE); - ui_playlist_widget_set_column (treeview, "Album", - PLAYLIST_MULTI_COLUMN_ALBUM, TRUE); - ui_playlist_widget_set_column (treeview, "No", - PLAYLIST_MULTI_COLUMN_TRACK_NUM, FALSE); - ui_playlist_widget_set_column (treeview, "Title", - PLAYLIST_MULTI_COLUMN_TITLE, TRUE); - ui_playlist_widget_set_column (treeview, "Queue", - PLAYLIST_MULTI_COLUMN_QUEUED, FALSE); - ui_playlist_widget_set_column (treeview, "Time", - PLAYLIST_MULTI_COLUMN_TIME, FALSE); - } - else - { - gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE); + if (diff > 0) + audgui_list_insert_rows (widget, at, diff); + else if (diff < 0) + audgui_list_delete_rows (widget, at, -diff); - g_object_set_data ((GObject *) treeview, "number column", - ui_playlist_widget_set_column (treeview, NULL, - PLAYLIST_COLUMN_NUM, FALSE)); - - ui_playlist_widget_set_column (treeview, NULL, PLAYLIST_COLUMN_TEXT, - TRUE); - ui_playlist_widget_set_column (treeview, NULL, PLAYLIST_COLUMN_QUEUED, - FALSE); - ui_playlist_widget_set_column (treeview, NULL, PLAYLIST_COLUMN_TIME, - FALSE); + audgui_list_set_highlight (widget, aud_playlist_get_position (data->list)); } - if (! aud_cfg->show_numbers_in_pl) - gtk_tree_view_column_set_visible (g_object_get_data ((GObject *) - treeview, "number column"), FALSE); - - gtk_drag_dest_set(treeview, GTK_DEST_DEFAULT_ALL, target_entry, 1, GDK_ACTION_COPY | GDK_ACTION_MOVE); - gtk_drag_source_set(treeview, GDK_BUTTON1_MASK, target_entry, 1, GDK_ACTION_MOVE); - - g_signal_connect(treeview, "row-activated", G_CALLBACK(ui_playlist_widget_row_activated), NULL); - - g_signal_connect(treeview, "key-press-event", G_CALLBACK(ui_playlist_widget_keypress_cb), NULL); - g_signal_connect(treeview, "button-press-event", G_CALLBACK(ui_playlist_widget_button_press_cb), NULL); - g_signal_connect(treeview, "button-release-event", G_CALLBACK(ui_playlist_widget_button_release_cb), NULL); - - g_signal_connect(treeview, "drag-begin", G_CALLBACK(_ui_playlist_widget_drag_begin), NULL); - g_signal_connect(treeview, "drag-motion", G_CALLBACK(_ui_playlist_widget_drag_motion), NULL); - g_signal_connect (treeview, "drag-drop", (GCallback) drag_drop_cb, NULL); - g_signal_connect (treeview, "drag-data-received", (GCallback) drag_data_cb, - NULL); - g_signal_connect (treeview, "drag-end", (GCallback) drag_end_cb, NULL); - - selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); - gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE); - g_signal_connect (selection, "changed", (GCallback) - _ui_playlist_widget_selection_changed, treeview); - - return treeview; -} + if (type >= PLAYLIST_UPDATE_METADATA) + audgui_list_update_rows (widget, at, count); -void ui_playlist_widget_block_updates (GtkWidget * widget, gboolean block) -{ - if (block) - g_signal_handlers_block_by_func (gtk_tree_view_get_selection - ((GtkTreeView *) widget), (GCallback) - _ui_playlist_widget_selection_changed, widget); - else - g_signal_handlers_unblock_by_func (gtk_tree_view_get_selection - ((GtkTreeView *) widget), (GCallback) - _ui_playlist_widget_selection_changed, widget); + audgui_list_update_selection (widget, at, count); + update_queue (widget, data); } diff -Nru audacious-plugins-2.4.4/src/gtkui/ui_playlist_widget.h audacious-plugins-3.2/src/gtkui/ui_playlist_widget.h --- audacious-plugins-2.4.4/src/gtkui/ui_playlist_widget.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/ui_playlist_widget.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,29 +1,47 @@ -/* Audacious - Cross-platform multimedia player - * Copyright (C) 2008 Tomasz MoÅ„ +/* + * ui-playlist-widget.h + * Copyright 2011 John Lindgren * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. + * This file is part of Audacious. * - * This program 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 General Public License for more details. + * Audacious is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 2 or version 3 of the License. * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * Audacious 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 General Public License for more details. * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. + * You should have received a copy of the GNU General Public License along with + * Audacious. If not, see . + * + * The Audacious team does not consider modular code linking to Audacious or + * using our public API to be a derived work. */ #ifndef UI_PLAYLIST_WIDGET_H #define UI_PLAYLIST_WIDGET_H #include -#include -GtkWidget *ui_playlist_widget_new(gint playlist); -void ui_playlist_widget_block_updates (GtkWidget * widget, gboolean block); +GtkWidget * ui_playlist_widget_new (gint playlist); +gint ui_playlist_widget_get_playlist (GtkWidget * widget); +void ui_playlist_widget_set_playlist (GtkWidget * widget, gint playlist); +void ui_playlist_widget_update (GtkWidget * widget, gint type, gint at, + gint count); + +enum {PW_COL_NUMBER, PW_COL_TITLE, PW_COL_ARTIST, PW_COL_YEAR, PW_COL_ALBUM, + PW_COL_TRACK, PW_COL_QUEUED, PW_COL_LENGTH, PW_COL_PATH, PW_COL_FILENAME, + PW_COL_CUSTOM, PW_COL_BITRATE, PW_COLS}; + +extern const gchar * const pw_col_names[PW_COLS]; + +extern gint pw_num_cols; +extern gint pw_cols[PW_COLS]; + +void pw_col_init (void); +void pw_col_choose (void); +void pw_col_save (void); +void pw_col_cleanup (void); #endif diff -Nru audacious-plugins-2.4.4/src/gtkui/ui_statusbar.c audacious-plugins-3.2/src/gtkui/ui_statusbar.c --- audacious-plugins-2.4.4/src/gtkui/ui_statusbar.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/ui_statusbar.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,5 @@ /* Audacious - Cross-platform multimedia player - * Copyright (C) 2010 Audacious development team + * Copyright (C) 2010-2011 Audacious development team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,7 +18,7 @@ */ #include -#include +#include #include #include #include @@ -31,8 +31,12 @@ #include #include +#include "config.h" #include "ui_statusbar.h" +#define APPEND(b, ...) snprintf (b + strlen (b), sizeof b - strlen (b), \ + __VA_ARGS__) + static void ui_statusbar_update_playlist_length(gpointer unused, GtkWidget *label) { @@ -40,8 +44,8 @@ gint64 selection, total; gchar *sel_text, *tot_text, *text; - total = aud_playlist_get_total_length (playlist, TRUE) / 1000; - selection = aud_playlist_get_selected_length (playlist, TRUE) / 1000; + total = aud_playlist_get_total_length (playlist) / 1000; + selection = aud_playlist_get_selected_length (playlist) / 1000; if (selection >= 3600) sel_text = g_strdup_printf ("%" PRId64 ":%02" PRId64 ":%02" PRId64, @@ -68,41 +72,58 @@ static void ui_statusbar_info_change(gpointer unused, GtkWidget *label) { - gint bitrate, samplerate, channels; - gchar *text, *ch_text; - const Tuple *tuple; - gint playlist, entry; - const gchar *codec; - /* may be called asynchronously */ if (!aud_drct_get_playing()) return; - playlist = aud_playlist_get_active(); - entry = aud_playlist_get_position(playlist); - tuple = aud_playlist_entry_get_tuple (playlist, entry, FALSE); - codec = tuple != NULL ? tuple_get_string(tuple, FIELD_CODEC, NULL) : "???"; + gint playlist = aud_playlist_get_playing (); + Tuple * tuple = aud_playlist_entry_get_tuple (playlist, + aud_playlist_get_position (playlist), FALSE); + gchar * codec = tuple ? tuple_get_str (tuple, FIELD_CODEC, NULL) : + NULL; + if (tuple) + tuple_unref (tuple); + gint bitrate, samplerate, channels; aud_drct_get_info(&bitrate, &samplerate, &channels); - switch (channels) + gchar buf[256]; + buf[0] = 0; + + if (codec) { - case 1: - ch_text = g_strdup(_("mono")); - break; - case 2: - ch_text = g_strdup(_("stereo")); - break; - default: - ch_text = g_strdup_printf(_("%d channels"), channels); - break; + APPEND (buf, "%s", codec); + if (channels > 0 || samplerate > 0 || bitrate > 0) + APPEND (buf, ", "); } - text = g_strdup_printf(_("%s: %d kbps, %d Hz, %s"), codec, bitrate / 1000, samplerate, ch_text); - gtk_label_set_text(GTK_LABEL(label), text); + str_unref(codec); - g_free(text); - g_free(ch_text); + if (channels > 0) + { + if (channels == 1) + APPEND (buf, _("mono")); + else if (channels == 2) + APPEND (buf, _("stereo")); + else + APPEND (buf, ngettext ("%d channel", "%d channels", channels), + channels); + + if (samplerate > 0 || bitrate > 0) + APPEND (buf, ", "); + } + + if (samplerate > 0) + { + APPEND (buf, "%d kHz", samplerate / 1000); + if (bitrate > 0) + APPEND (buf, ", "); + } + + if (bitrate > 0) + APPEND (buf, _("%d kbps"), bitrate / 1000); + + gtk_label_set_text ((GtkLabel *) label, buf); } static void @@ -113,10 +134,11 @@ static void ui_statusbar_destroy_cb(GtkWidget *widget, gpointer user_data) { + hook_dissociate("playback ready", (HookFunction) ui_statusbar_info_change); hook_dissociate("info change", (HookFunction) ui_statusbar_info_change); hook_dissociate("playback stop", (HookFunction) ui_statusbar_playback_stop); + hook_dissociate("playlist activate", (HookFunction) ui_statusbar_update_playlist_length); hook_dissociate("playlist update", (HookFunction) ui_statusbar_update_playlist_length); - hook_dissociate("info change", (HookFunction) ui_statusbar_update_playlist_length); } GtkWidget * @@ -131,6 +153,7 @@ gtk_label_set_ellipsize ((GtkLabel *) status, PANGO_ELLIPSIZE_END); gtk_box_pack_start(GTK_BOX(hbox), status, TRUE, TRUE, 5); + hook_associate("playback ready", (HookFunction) ui_statusbar_info_change, status); hook_associate("info change", (HookFunction) ui_statusbar_info_change, status); hook_associate("playback stop", (HookFunction) ui_statusbar_playback_stop, status); @@ -138,15 +161,13 @@ gtk_box_pack_start(GTK_BOX(hbox), length, FALSE, FALSE, 5); ui_statusbar_update_playlist_length(NULL, length); + hook_associate("playlist activate", (HookFunction) ui_statusbar_update_playlist_length, length); hook_associate("playlist update", (HookFunction) ui_statusbar_update_playlist_length, length); - hook_associate("info change", (HookFunction) ui_statusbar_update_playlist_length, length); g_signal_connect(G_OBJECT(hbox), "destroy", G_CALLBACK(ui_statusbar_destroy_cb), NULL); - if (aud_drct_get_playing()) - { + if (aud_drct_get_playing() && aud_drct_get_ready()) ui_statusbar_info_change(NULL, status); - } return hbox; } diff -Nru audacious-plugins-2.4.4/src/gtkui/util.c audacious-plugins-3.2/src/gtkui/util.c --- audacious-plugins-2.4.4/src/gtkui/util.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/util.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -/* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2008 Audacious development team - * - * Based on BMP: - * Copyright (C) 2003-2004 BMP development team. - * - * Based on XMMS: - * Copyright (C) 1998-2003 XMMS development team. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. - */ - -#include -#include - -#include "util.h" - -GtkWidget *make_filebrowser(const gchar * title, gboolean save) -{ - GtkWidget *dialog; - GtkWidget *button; - - g_return_val_if_fail(title != NULL, NULL); - - dialog = gtk_file_chooser_dialog_new(title, NULL, save ? GTK_FILE_CHOOSER_ACTION_SAVE : GTK_FILE_CHOOSER_ACTION_OPEN, NULL, NULL); - - button = gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT); - - gtk_button_set_use_stock(GTK_BUTTON(button), TRUE); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); - - button = gtk_dialog_add_button(GTK_DIALOG(dialog), save ? GTK_STOCK_SAVE : GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT); - - gtk_button_set_use_stock(GTK_BUTTON(button), TRUE); - gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT); - gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER); /* centering */ - - return dialog; -} - -void check_set(GtkActionGroup * action_group, const gchar * action_name, gboolean is_on) -{ - GtkAction * action = gtk_action_group_get_action (action_group, action_name); - - g_return_if_fail (action != NULL); - - gtk_toggle_action_set_active ((GtkToggleAction *) action, is_on); - hook_call (action_name, GINT_TO_POINTER (is_on)); -} diff -Nru audacious-plugins-2.4.4/src/gtkui/util.h audacious-plugins-3.2/src/gtkui/util.h --- audacious-plugins-2.4.4/src/gtkui/util.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/gtkui/util.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -/* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2008 Audacious development team - * - * Based on BMP: - * Copyright (C) 2003-2004 BMP development team - * - * Based on XMMS: - * Copyright (C) 1998-2003 XMMS development team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. - */ - -#ifndef AUDACIOUS_UTIL_H -#define AUDACIOUS_UTIL_H - -#include - -GtkWidget * make_filebrowser (const gchar * title, gboolean save); -void check_set(GtkActionGroup * action_group, const gchar * action_name, gboolean is_on); - -#endif /* AUDACIOUS_UTIL_H */ diff -Nru audacious-plugins-2.4.4/src/hotkey/gui.c audacious-plugins-3.2/src/hotkey/gui.c --- audacious-plugins-2.4.4/src/hotkey/gui.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/hotkey/gui.c 2012-01-20 19:48:30.000000000 +0000 @@ -41,6 +41,7 @@ #include #include +#include #include #include @@ -79,7 +80,9 @@ [EVENT_VOL_DOWN] = N_("Volume Down"), [EVENT_JUMP_TO_FILE] = N_("Jump to File"), [EVENT_TOGGLE_WIN] = N_("Toggle Player Windows"), - [EVENT_SHOW_AOSD] = N_("Show On-Screen-Display") + [EVENT_SHOW_AOSD] = N_("Show On-Screen-Display"), + [EVENT_TOGGLE_REPEAT] = N_("Toggle Repeat"), + [EVENT_TOGGLE_SHUFFLE] = N_("Toggle Shuffle"), }; @@ -318,12 +321,12 @@ controls->hotkey.event = 0; } - controls->combobox = gtk_combo_box_new_text(); + controls->combobox = gtk_combo_box_text_new(); for (i=0;icombobox), _(event_desc[i]) ); + gtk_combo_box_text_append_text((GtkComboBoxText *) controls->combobox, _(event_desc[i])); } - gtk_combo_box_set_active( GTK_COMBO_BOX(controls->combobox), controls->hotkey.event); + gtk_combo_box_set_active(GTK_COMBO_BOX(controls->combobox), controls->hotkey.event); gtk_table_attach (GTK_TABLE (table), controls->combobox, 0, 1, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (GTK_EXPAND), 0, 0); @@ -331,7 +334,7 @@ controls->keytext = gtk_entry_new (); gtk_table_attach (GTK_TABLE (table), controls->keytext, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (GTK_EXPAND), 0, 0); - gtk_entry_set_editable (GTK_ENTRY (controls->keytext), FALSE); + gtk_editable_set_editable(GTK_EDITABLE(controls->keytext), FALSE); set_keytext(controls->keytext, controls->hotkey.key, controls->hotkey.mask, controls->hotkey.type); diff -Nru audacious-plugins-2.4.4/src/hotkey/Makefile audacious-plugins-3.2/src/hotkey/Makefile --- audacious-plugins-2.4.4/src/hotkey/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/hotkey/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -8,5 +8,5 @@ plugindir := ${plugindir}/${GENERAL_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${MOWGLI_CFLAGS} ${GLIB_CFLAGS} -I../.. -I.. +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -I.. LIBS += ${GLIB_LIBS} ${GTK_LIBS} -lX11 diff -Nru audacious-plugins-2.4.4/src/hotkey/plugin.c audacious-plugins-3.2/src/hotkey/plugin.c --- audacious-plugins-2.4.4/src/hotkey/plugin.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/hotkey/plugin.c 2012-01-20 19:48:30.000000000 +0000 @@ -36,14 +36,17 @@ #include #include +#include + #include #include #include +#include -#include #include #include +#include #include #include @@ -53,7 +56,7 @@ /* func defs */ -static void init (void); +static gboolean init (void); static void cleanup (void); @@ -61,21 +64,14 @@ static PluginConfig plugin_cfg; static gboolean loaded = FALSE; - - -static GeneralPlugin audacioushotkey = -{ - .description = "Global Hotkey", +AUD_GENERAL_PLUGIN +( + .name = "Global Hotkey", .init = init, .about = show_about, .configure = show_configure, .cleanup = cleanup -}; - -GeneralPlugin *hotkey_gplist[] = { &audacioushotkey, NULL }; -SIMPLE_GENERAL_PLUGIN(hotkey, hotkey_gplist); - - +) PluginConfig* get_config(void) { @@ -86,13 +82,20 @@ /* * plugin activated */ -static void init (void) +static gboolean init (void) { + if (! gtk_init_check (NULL, NULL)) + { + fprintf (stderr, "hotkey: GTK+ initialization failed.\n"); + return FALSE; + } + setup_filter(); load_config ( ); grab_keys ( ); loaded = TRUE; + return TRUE; } /* handle keys */ @@ -237,14 +240,14 @@ /* Open Jump-To-File dialog */ if (event == EVENT_JUMP_TO_FILE) { - hook_call ("interface show jump to track", NULL); + aud_interface_show_jump_to_track (); return TRUE; } /* Toggle Windows */ if (event == EVENT_TOGGLE_WIN) { - hook_call ("interface toggle visibility", NULL); + aud_interface_show (! (aud_interface_is_shown () && aud_interface_is_focused ())); return TRUE; } @@ -254,6 +257,10 @@ hook_call("aosd toggle", NULL); return TRUE; } + else if (event == EVENT_TOGGLE_REPEAT) + aud_set_bool (NULL, "repeat", ! aud_get_bool (NULL, "repeat")); + else if (event == EVENT_TOGGLE_SHUFFLE) + aud_set_bool (NULL, "shuffle", ! aud_get_bool (NULL, "shuffle")); return FALSE; } @@ -306,7 +313,6 @@ /* load plugin configuration */ void load_config (void) { - mcs_handle_t *cfdb; HotkeyConfiguration *hotkey; int i,max; @@ -314,22 +320,20 @@ plugin_cfg.vol_increment = 4; plugin_cfg.vol_decrement = 4; - /* open configuration database */ - cfdb = aud_cfg_db_open ( ); hotkey = &(plugin_cfg.first); hotkey->next = NULL; hotkey->key = 0; hotkey->mask = 0; hotkey->event = 0; hotkey->type = TYPE_KEY; - max = 0; - aud_cfg_db_get_int (cfdb, "globalHotkey", "NumHotkeys", &max); + + max = aud_get_int ("globalHotkey", "NumHotkeys"); if (max == 0) load_defaults(); else for (i=0; ikey) { hotkey->next = (HotkeyConfiguration*) malloc(sizeof (HotkeyConfiguration)); @@ -341,64 +345,56 @@ hotkey->type = TYPE_KEY; } text = g_strdup_printf("Hotkey_%d_key", i); - aud_cfg_db_get_int (cfdb, "globalHotkey", text, &(hotkey->key)); + hotkey->key = aud_get_int ("globalHotkey", text); g_free(text); text = g_strdup_printf("Hotkey_%d_mask", i); - aud_cfg_db_get_int (cfdb, "globalHotkey", text, &(hotkey->mask)); + hotkey->mask = aud_get_int ("globalHotkey", text); g_free(text); text = g_strdup_printf("Hotkey_%d_type", i); - aud_cfg_db_get_int (cfdb, "globalHotkey", text, &(hotkey->type)); + hotkey->type = aud_get_int ("globalHotkey", text); g_free(text); text = g_strdup_printf("Hotkey_%d_event", i); - value = (gint)hotkey->event; - aud_cfg_db_get_int (cfdb, "globalHotkey", text, &value); - hotkey->event = (EVENT) value; + hotkey->event = aud_get_int ("globalHotkey", text); g_free(text); } - - aud_cfg_db_close (cfdb); } /* save plugin configuration */ void save_config (void) { - mcs_handle_t *cfdb; int max; HotkeyConfiguration *hotkey; - /* open configuration database */ - cfdb = aud_cfg_db_open ( ); hotkey = &(plugin_cfg.first); max = 0; while (hotkey) { gchar *text = NULL; if (hotkey->key) { text = g_strdup_printf("Hotkey_%d_key", max); - aud_cfg_db_set_int (cfdb, "globalHotkey", text, hotkey->key); + aud_set_int ("globalHotkey", text, hotkey->key); g_free(text); text = g_strdup_printf("Hotkey_%d_mask", max); - aud_cfg_db_set_int (cfdb, "globalHotkey", text, hotkey->mask); + aud_set_int ("globalHotkey", text, hotkey->mask); g_free(text); text = g_strdup_printf("Hotkey_%d_type", max); - aud_cfg_db_set_int (cfdb, "globalHotkey", text, hotkey->type); + aud_set_int ("globalHotkey", text, hotkey->type); g_free(text); text = g_strdup_printf("Hotkey_%d_event", max); - aud_cfg_db_set_int (cfdb, "globalHotkey", text, hotkey->event); + aud_set_int ("globalHotkey", text, hotkey->event); g_free(text); max++; } hotkey = hotkey->next; } - aud_cfg_db_set_int (cfdb, "globalHotkey", "NumHotkeys", max); - aud_cfg_db_close (cfdb); + aud_set_int ("globalHotkey", "NumHotkeys", max); } static void cleanup (void) diff -Nru audacious-plugins-2.4.4/src/hotkey/plugin.h audacious-plugins-3.2/src/hotkey/plugin.h --- audacious-plugins-2.4.4/src/hotkey/plugin.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/hotkey/plugin.h 2012-01-20 19:48:30.000000000 +0000 @@ -22,7 +22,10 @@ EVENT_TOGGLE_WIN, EVENT_SHOW_AOSD, - EVENT_MAX + EVENT_TOGGLE_REPEAT, + EVENT_TOGGLE_SHUFFLE, + + EVENT_MAX } EVENT; @@ -36,7 +39,7 @@ typedef struct { gint vol_increment; gint vol_decrement; - + /* keyboard */ HotkeyConfiguration first; } PluginConfig; diff -Nru audacious-plugins-2.4.4/src/jack/bio2jack.c audacious-plugins-3.2/src/jack/bio2jack.c --- audacious-plugins-2.4.4/src/jack/bio2jack.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/jack/bio2jack.c 2012-01-20 19:48:30.000000000 +0000 @@ -138,8 +138,6 @@ unsigned long bytes_per_jack_output_frame; /* (num_output_channels * bits_per_channel) / 8 */ unsigned long bytes_per_jack_input_frame; /* (num_input_channels * bits_per_channel) / 8 */ - unsigned long latencyMS; /* latency in ms between writing and actual audio output of the written data */ - long clientBytesInJack; /* number of INPUT bytes(from the client of bio2jack) we wrote to jack(not necessary the number of bytes we wrote to jack) */ long jack_buffer_size; /* size of the buffer jack will pass in to the process callback */ @@ -266,7 +264,7 @@ trying to trace mutexes it's more important to know *who* called us than just that we were called. This uses from pre-processor trickery so that the fprintf is actually placed in the function making the getDriver call. Thus, the __FUNCTION__ and __LINE__ - macros will actually reference our caller, rather than getDriver. The reason the + macros will actually reference our caller, rather than getDriver. The reason the fprintf call is passes as a parameter is because this macro has to still return a jack_driver_t* and we want to log both before *and* after the getDriver call for easier detection of blocked calls. @@ -1012,11 +1010,11 @@ /* try to become a client of the JACK server */ TRACE("client name '%s'\n", our_client_name); - if((drv->client = jack_client_new(our_client_name)) == 0) + if((drv->client = jack_client_open(our_client_name, JackNullOption | JackNoStartServer, NULL)) == 0) { /* try once more */ TRACE("trying once more to jack_client_new"); - if((drv->client = jack_client_new(our_client_name)) == 0) + if((drv->client = jack_client_open(our_client_name, JackNullOption | JackNoStartServer, NULL)) == 0) { ERR("jack server not running?\n"); free(our_client_name); @@ -1455,7 +1453,7 @@ * deviceID is set to the opened device * if client is non-zero and in_use is FALSE then just set in_use to TRUE * - * return value is zero upon success, non-zero upon failure + * return value is zero upon success, non-zero upon failure * * if ERR_RATE_MISMATCH (*rate) will be updated with the jack servers rate */ @@ -1571,7 +1569,7 @@ drv->jack_output_port_flags = jack_port_flags | JackPortIsInput; /* port must be input(ie we can put data into it), so mask this in */ drv->jack_input_port_flags = jack_port_flags | JackPortIsOutput; /* port must be output(ie we can get data from it), so mask this in */ - /* check that we have the correct number of port names + /* check that we have the correct number of port names FIXME?: not sure how we should handle output ports vs input ports.... */ if((jack_port_name_count > 1) @@ -1701,29 +1699,6 @@ DEBUG("sizeof(sample_t) == %d\n", sizeof(sample_t)); - int periodSize = jack_get_buffer_size(drv->client); - int periods = 0; - /* FIXME: maybe we should keep different latency values for input vs output? */ - if(drv->num_output_channels > 0) - { - periods = jack_port_get_total_latency(drv->client, - drv->output_port[0]) / periodSize; - drv->latencyMS = periodSize * periods * 1000 / (drv->jack_sample_rate * - (drv->bits_per_channel / 8 * - drv->num_output_channels)); - } - else if(drv->num_input_channels > 0) - { - periods = jack_port_get_total_latency(drv->client, - drv->input_port[0]) / periodSize; - drv->latencyMS = - periodSize * periods * 1000 / (drv->jack_sample_rate * - (drv->bits_per_channel / 8 * - drv->num_input_channels)); - } - - TRACE("drv->latencyMS == %ldms\n", drv->latencyMS); - *deviceID = drv->deviceID; /* set the deviceID for the caller */ releaseDriver(drv); pthread_mutex_unlock(&device_mutex); @@ -1810,7 +1785,7 @@ TRACE("frames free == %ld, bytes = %lu\n", frames_free, bytes); TRACE("state = '%s'\n", DEBUGSTATE(drv->state)); - /* if we are currently STOPPED we should start playing now... + /* if we are currently STOPPED we should start playing now... do this before the check for bytes == 0 since some clients like to write 0 bytes the first time out */ if(drv->state == STOPPED) @@ -2264,8 +2239,6 @@ return_val = JACK_GetBytesFreeSpaceFromDriver(drv); releaseDriver(drv); - if(return_val < 0) return_val = 0; - TRACE("deviceID(%d), retval == %ld\n", deviceID, return_val); return return_val; @@ -2311,7 +2284,9 @@ long elapsedMS; double sec2msFactor = 1000; +#if TRACE_ENABLE char *type_str = "UNKNOWN type"; +#endif /* if we are reset we should return a position of 0 */ if(drv->state == RESET) @@ -2322,15 +2297,21 @@ if(type == WRITTEN) { +#if TRACE_ENABLE type_str = "WRITTEN"; +#endif return_val = drv->client_bytes; } else if(type == WRITTEN_TO_JACK) { +#if TRACE_ENABLE type_str = "WRITTEN_TO_JACK"; +#endif return_val = drv->written_client_bytes; } else if(type == PLAYED) /* account for the elapsed time for the played_bytes */ { +#if TRACE_ENABLE type_str = "PLAYED"; +#endif return_val = drv->played_client_bytes; gettimeofday(&now, 0); @@ -2607,23 +2588,13 @@ long return_val = 0; if(drv->client && drv->num_output_channels) - return_val = jack_port_get_total_latency(drv->client, drv->output_port[0]); - - TRACE("got latency of %ld frames\n", return_val); - - releaseDriver(drv); - return return_val; -} - -/* Get the latency, in frames, of jack */ -long -JACK_GetJackInputLatency(int deviceID) -{ - jack_driver_t *drv = getDriver(deviceID); - long return_val = 0; - - if(drv->client && drv->num_input_channels) - return_val = jack_port_get_total_latency(drv->client, drv->input_port[0]); + { + /* Disclaimer: I have no experience with JACK and don't know if this is + * correct. -jlindgren */ + jack_latency_range_t range; + jack_port_get_latency_range(drv->output_port[0], JackPlaybackLatency, & range); + return_val = (range.min + range.max) / 2; + } TRACE("got latency of %ld frames\n", return_val); diff -Nru audacious-plugins-2.4.4/src/jack/bio2jack.h audacious-plugins-3.2/src/jack/bio2jack.h --- audacious-plugins-2.4.4/src/jack/bio2jack.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/jack/bio2jack.h 2012-01-20 19:48:30.000000000 +0000 @@ -81,7 +81,6 @@ long JACK_GetJackLatency(int deviceID); /* deprectated, you probably want JACK_GetJackOutputLatency */ long JACK_GetJackOutputLatency(int deviceID); /* return the output latency in frames */ -long JACK_GetJackInputLatency(int deviceID); /* return the input latency in frames */ int JACK_SetState(int deviceID, enum status_enum state); /* playing, paused, stopped */ enum status_enum JACK_GetState(int deviceID); @@ -136,7 +135,7 @@ }; /* set the mode for port connections */ -/* defaults to CONNECT_ALL */ +/* defaults to CONNECT_ALL */ void JACK_SetPortConnectionMode(enum JACK_PORT_CONNECTION_MODE mode); #ifdef __cplusplus diff -Nru audacious-plugins-2.4.4/src/jack/configure.c audacious-plugins-3.2/src/jack/configure.c --- audacious-plugins-2.4.4/src/jack/configure.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/jack/configure.c 2012-01-20 19:48:30.000000000 +0000 @@ -24,9 +24,9 @@ #include "jack.h" -#include -#include #include +#include +#include #include "config.h" @@ -47,18 +47,13 @@ static void configure_win_ok_cb(GtkWidget * w, gpointer data) { - mcs_handle_t *cfgfile; - jack_cfg.isTraceEnabled = (gint) GTK_CHECK_BUTTON(GTK_isTraceEnabled)->toggle_button.active; jack_cfg.port_connection_mode = GET_CHARS(GTK_COMBO(port_connection_mode_combo)->entry); jack_set_port_connection_mode(); /* update the connection mode */ - cfgfile = aud_cfg_db_open(); - - aud_cfg_db_set_bool(cfgfile, "jack", "isTraceEnabled", jack_cfg.isTraceEnabled); - aud_cfg_db_set_string(cfgfile, "jack", "port_connection_mode", jack_cfg.port_connection_mode); - aud_cfg_db_close(cfgfile); + aud_set_bool ("jack", "isTraceEnabled", jack_cfg.isTraceEnabled); + aud_set_string ("jack", "port_connection_mode", jack_cfg.port_connection_mode); gtk_widget_destroy(configure_win); } diff -Nru audacious-plugins-2.4.4/src/jack/jack.c audacious-plugins-3.2/src/jack/jack.c --- audacious-plugins-2.4.4/src/jack/jack.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/jack/jack.c 2012-01-20 19:48:30.000000000 +0000 @@ -13,8 +13,8 @@ #include "jack.h" #include -#include #include +#include #include #include #include @@ -55,6 +55,7 @@ static format_info_t output; static gboolean output_opened; /* true if we have a connection to jack */ +static gboolean paused; /* Giacomo's note: removed the destructor from the original xmms-jack, cause @@ -131,6 +132,11 @@ return return_val; } +static void jack_set_written_time(gint time) +{ + JACK_SetPosition(driver, MILLISECONDS, time); +} + /* Return the current number of milliseconds of audio data that has */ /* been played out of the audio device, not including the buffer */ @@ -152,6 +158,7 @@ /* returns TRUE if we are currently playing */ /* NOTE: this was confusing at first BUT, if the device is open and there */ /* is no more audio to be played, then the device is NOT PLAYING */ +#if 0 static gint jack_playing(void) { gint return_val; @@ -171,7 +178,7 @@ TRACE("returning %d\n", return_val); return return_val; } - +#endif void jack_set_port_connection_mode() { @@ -192,32 +199,22 @@ JACK_SetPortConnectionMode(mode); } +static const gchar * const jack_defaults[] = { + "isTraceEnabled", "FALSE", + "port_connection_mode", "CONNECT_ALL", + "volume_left", "25", + "volume_right", "25", + NULL}; + /* Initialize necessary things */ -static OutputPluginInitStatus jack_init(void) +static gboolean jack_init (void) { - /* read the isTraceEnabled setting from the config file */ - mcs_handle_t *cfgfile; - - cfgfile = aud_cfg_db_open(); - if (!cfgfile) - { - jack_cfg.isTraceEnabled = FALSE; - jack_cfg.port_connection_mode = "CONNECT_ALL"; /* default to connect all */ - jack_cfg.volume_left = 25; /* set default volume to 25 % */ - jack_cfg.volume_right = 25; - } else - { - aud_cfg_db_get_bool(cfgfile, "jack", "isTraceEnabled", &jack_cfg.isTraceEnabled); - if(!aud_cfg_db_get_string(cfgfile, "jack", "port_connection_mode", &jack_cfg.port_connection_mode)) - jack_cfg.port_connection_mode = "CONNECT_ALL"; - if(!aud_cfg_db_get_int(cfgfile, "jack", "volume_left", &jack_cfg.volume_left)) - jack_cfg.volume_left = 25; - if(!aud_cfg_db_get_int(cfgfile, "jack", "volume_right", &jack_cfg.volume_right)) - jack_cfg.volume_right = 25; - } - - aud_cfg_db_close(cfgfile); + aud_config_set_defaults ("jack", jack_defaults); + jack_cfg.isTraceEnabled = aud_get_bool ("jack", "isTraceEnabled"); + jack_cfg.port_connection_mode = aud_get_string ("jack", "port_connection_mode"); + jack_cfg.volume_left = aud_get_int ("jack", "volume_left"); + jack_cfg.volume_right = aud_get_int ("jack", "volume_right"); TRACE("initializing\n"); JACK_Init(); /* initialize the driver */ @@ -232,7 +229,7 @@ output_opened = FALSE; /* Always return OK, as we don't know about physical devices here */ - return OUTPUT_PLUGIN_INIT_FOUND_DEVICES; + return TRUE; } @@ -268,14 +265,8 @@ /* Close the device */ static void jack_close(void) { - mcs_handle_t *cfgfile; - - cfgfile = aud_cfg_db_open(); - aud_cfg_db_set_int(cfgfile, "jack", "volume_left", jack_cfg.volume_left); /* stores the volume setting */ - aud_cfg_db_set_int(cfgfile, "jack", "volume_right", jack_cfg.volume_right); - aud_cfg_db_close(cfgfile); - - TRACE("\n"); + aud_set_int ("jack", "volume_left", jack_cfg.volume_left); + aud_set_int ("jack", "volume_right", jack_cfg.volume_right); JACK_Reset(driver); /* flush buffers, reset position and set state to STOPPED */ TRACE("resetting driver, not closing now, destructor will close for us\n"); @@ -343,6 +334,7 @@ } else { TRACE("output_opened is TRUE and no options changed, not reopening\n"); + paused = FALSE; return 1; } } @@ -369,6 +361,7 @@ jack_set_volume(jack_cfg.volume_left, jack_cfg.volume_right); /* sets the volume to stored value */ output_opened = TRUE; + paused = FALSE; return 1; } @@ -409,15 +402,20 @@ /* update the internal driver values to correspond to the input time given */ JACK_SetPosition(driver, MILLISECONDS, ms_offset_time); - JACK_SetState(driver, PLAYING); + if (paused) + JACK_SetState(driver, PAUSED); + else + JACK_SetState(driver, PLAYING); } /* Pause the jack device */ -static void jack_pause(short p) +static void jack_pause (gboolean p) { TRACE("p == %d\n", p); + paused = p; + /* pause the device if p is non-zero, unpause the device if p is zero and */ /* we are currently paused */ if(p) @@ -445,20 +443,15 @@ } } -static void jack_tell_audio(gint * fmt, gint * srate, gint * nch) -{ - (*fmt) = input.format; - (*srate) = input.frequency; - (*nch) = input.channels; -} - -OutputPlugin jack_op = -{ - .description = "JACK Output Plugin 0.17", +AUD_OUTPUT_PLUGIN +( + .name = "JACK", .init = jack_init, .cleanup = jack_cleanup, .about = jack_about, +#if 0 .configure = jack_configure, +#endif .get_volume = jack_get_volume, .set_volume = jack_set_volume, .open_audio = jack_open, @@ -467,12 +460,7 @@ .flush = jack_flush, .pause = jack_pause, .buffer_free = audacious_jack_free, - .buffer_playing = jack_playing, .output_time = jack_get_output_time, .written_time = jack_get_written_time, - .tell_audio = jack_tell_audio -}; - -OutputPlugin *jack_oplist[] = { &jack_op, NULL }; - -SIMPLE_OUTPUT_PLUGIN(jack, jack_oplist); + .set_written_time = jack_set_written_time +) diff -Nru audacious-plugins-2.4.4/src/jack/Makefile audacious-plugins-3.2/src/jack/Makefile --- audacious-plugins-2.4.4/src/jack/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/jack/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -1,8 +1,8 @@ PLUGIN = jackout${PLUGIN_SUFFIX} SRCS = jack.c \ - configure.c \ bio2jack.c +# configure.c \ include ../../buildsys.mk include ../../extra.mk @@ -10,5 +10,5 @@ plugindir := ${plugindir}/${OUTPUT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${SAMPLERATE_CFLAGS} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${JACK_LIBS} ${SAMPLERATE_LIBS} -lm -pthread +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${PTHREAD_CFLAGS} -I../.. +LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${JACK_LIBS} -lsamplerate ${PTHREAD_LIBS} -lm diff -Nru audacious-plugins-2.4.4/src/kanashi/beatdetect.c audacious-plugins-3.2/src/kanashi/beatdetect.c --- audacious-plugins-2.4.4/src/kanashi/beatdetect.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/beatdetect.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -/* - * kanashi: iterated javascript-driven visualization framework - * Copyright (c) 2006, 2007 William Pitcock - * Portions copyright (c) 2001 Jamie Gennis - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 2 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "kanashi.h" - -/* - * This algorithm is by Janusz Gregorcyzk, the implementation is - * mine, however. - * - * -- nenolod - */ -int -kanashi_is_new_beat(void) -{ - gint i; - gint total = 0; - gboolean ret = FALSE; - static gint previous; - - for (i = 1; i < 512; i++) - { - total += abs (kanashi_sound_data->pcm_data[0][i] - - kanashi_sound_data->pcm_data[0][i - 1]); - } - - total /= 512; - - ret = (total > (2 * previous)); - - previous = total; - - return ret; -} diff -Nru audacious-plugins-2.4.4/src/kanashi/cfg.c audacious-plugins-3.2/src/kanashi/cfg.c --- audacious-plugins-2.4.4/src/kanashi/cfg.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/cfg.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,135 +0,0 @@ -/* - * kanashi: iterated javascript-driven visualization framework - * Copyright (c) 2006, 2007 William Pitcock - * Portions copyright (c) 2001 Jamie Gennis - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 2 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -/* FIXME: prevent the user from dragging something above the root - actuator */ - -#include - -#include -#include -#include - -#include - -#include "kanashi.h" - -/* DON'T CALL kanashi_fatal_error () IN HERE!!! */ - -/* Actuator page stuffs */ -static GtkWidget *cfg_dialog; - -/* If selector != NULL, then it's 'OK', otherwise it's 'Cancel' */ -static void -load_sel_cb (GtkButton *button, GtkFileSelection *selector) -{ - if (selector) - { - static const char *fname; - mcs_handle_t *db; - - db = aud_cfg_db_open(); - fname = (char *) gtk_file_selection_get_filename (selector); - kanashi_load_preset (fname); - aud_cfg_db_set_string(db, "kanashi", "last_path", (char*)fname); - aud_cfg_db_close(db); - } - - gtk_widget_set_sensitive (cfg_dialog, TRUE); -} - -static void -load_button_cb (GtkButton *button, gpointer data) -{ - GtkWidget *selector; - mcs_handle_t *db; - gchar *last_path; - - db = aud_cfg_db_open(); - selector = gtk_file_selection_new ("Load Preset"); - if(aud_cfg_db_get_string(db, "kanashi", "last_path", &last_path)) { - gtk_file_selection_set_filename(GTK_FILE_SELECTION(selector), last_path); - } - aud_cfg_db_close(db); - - gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (selector)->ok_button), - "clicked", GTK_SIGNAL_FUNC (load_sel_cb), selector); - gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (selector)->cancel_button), - "clicked", GTK_SIGNAL_FUNC (load_sel_cb), NULL); - - gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION (selector)->ok_button), - "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), - (gpointer) selector); - gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION (selector)->cancel_button), - "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), - (gpointer) selector); - - gtk_widget_set_sensitive (cfg_dialog, FALSE); - gtk_widget_show (selector); -} - -static void -ok_button_cb (GtkButton *button, gpointer data) -{ - gtk_widget_hide (cfg_dialog); -} - -void -kanashi_configure (void) -{ - GtkWidget *bbox, *button; - - if (! cfg_dialog) - { - /* The dialog */ - cfg_dialog = gtk_dialog_new (); - gtk_window_set_title (GTK_WINDOW (cfg_dialog), "Kanashi"); - gtk_widget_set_usize (cfg_dialog, 530, 370); - gtk_container_border_width (GTK_CONTAINER (cfg_dialog), 8); - gtk_signal_connect_object (GTK_OBJECT (cfg_dialog), "delete-event", - GTK_SIGNAL_FUNC (gtk_widget_hide), - GTK_OBJECT (cfg_dialog)); - - /* OK / Apply / Cancel */ - bbox = gtk_hbutton_box_new (); - gtk_widget_show (bbox); - gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END); - gtk_button_box_set_spacing (GTK_BUTTON_BOX (bbox), 8); - gtk_button_box_set_child_size (GTK_BUTTON_BOX (bbox), 64, 0); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (cfg_dialog)->action_area), - bbox, FALSE, FALSE, 0); - - button = gtk_button_new_from_stock(GTK_STOCK_OPEN); - gtk_widget_show (button); - gtk_signal_connect (GTK_OBJECT (button), "clicked", - GTK_SIGNAL_FUNC (load_button_cb), NULL); - gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NORMAL); - gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0); - - button = gtk_button_new_from_stock (GTK_STOCK_CLOSE); - gtk_widget_show (button); - gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NORMAL); - gtk_signal_connect (GTK_OBJECT (button), "clicked", - GTK_SIGNAL_FUNC (ok_button_cb), NULL); - gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0); - } - - gtk_widget_show (cfg_dialog); - gtk_widget_grab_focus (cfg_dialog); -} diff -Nru audacious-plugins-2.4.4/src/kanashi/cmaps.c audacious-plugins-3.2/src/kanashi/cmaps.c --- audacious-plugins-2.4.4/src/kanashi/cmaps.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/cmaps.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,70 +0,0 @@ -/* - * kanashi: iterated javascript-driven visualization framework - * Copyright (c) 2006, 2007 William Pitcock - * Portions copyright (c) 2001 Jamie Gennis - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 2 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include - -#include - -#include "kanashi.h" - -static struct kanashi_color black = {0, 0, 0}; -static struct kanashi_color white = {255, 255, 255}; - -/* **************** cmap generation funcs **************** */ -static void -cmap_gen_gradient (int step, const struct kanashi_color *a, - const struct kanashi_color *b, - struct kanashi_color *c) -{ - c->r = a->r + step * ((((float)b->r) - ((float)a->r)) / 256.0); - c->g = a->g + step * ((((float)b->g) - ((float)a->g)) / 256.0); - c->b = a->b + step * ((((float)b->b) - ((float)a->b)) / 256.0); -} - -/* **************** cmap_gradient **************** */ -#if 0 -static void -cmap_gradient_exec (const struct kanashi_actuator_option *opts, - gpointer data) -{ - int i; - - for (i=opts[0].val.ival; i<=opts[1].val.ival; i++) - cmap_gen_gradient (((i-opts[0].val.ival)<<8)/(opts[1].val.ival - - opts[0].val.ival), - &opts[2].val.cval, &opts[3].val.cval, - &kanashi_image_data->cmap[i]); -} -#endif - -/* **************** cmap_bwgradient **************** */ -void -kanashi_set_colormap_gradient(gint low_index, gint high_index, struct kanashi_color *color) -{ - int i; - - for (i=low_index; i < 128 && i <= high_index; i++) - cmap_gen_gradient (i<<1, &black, color, - &kanashi_image_data->cmap[i]); - - for (i=128; i < 256 && i <= high_index; i++) - cmap_gen_gradient ((i-128)<<1, color, &white, - &kanashi_image_data->cmap[i]); -} - diff -Nru audacious-plugins-2.4.4/src/kanashi/drawing.c audacious-plugins-3.2/src/kanashi/drawing.c --- audacious-plugins-2.4.4/src/kanashi/drawing.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/drawing.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -/* - * kanashi: iterated javascript-driven visualization engine - * Copyright (c) 2009 William Pitcock - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 2 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include - -#include "kanashi.h" -#include "kanashi_utils.h" - -void -kanashi_draw_dot (guint x, guint y, guchar value) -{ - if (x > kanashi_image_data->width || x < 0 || y > kanashi_image_data->height || y < 0) - return; - - kanashi_image_data->surface[0][PN_IMG_INDEX(x, y)] = value; -} - -void -kanashi_draw_line (guint _x0, guint _y0, guint _x1, guint _y1, guchar value) -{ - gint x0 = _x0; - gint y0 = _y0; - gint x1 = _x1; - gint y1 = _y1; - - gint dx = x1 - x0; - gint dy = y1 - y0; - - kanashi_draw_dot(x0, y0, value); - - if (dx != 0) - { - gfloat m = (gfloat) dy / (gfloat) dx; - gfloat b = y0 - m * x0; - - dx = (x1 > x0) ? 1 : - 1; - while (x0 != x1) - { - x0 += dx; - y0 = m * x0 + b; - - kanashi_draw_dot(x0, y0, value); - } - } -} diff -Nru audacious-plugins-2.4.4/src/kanashi/drawing.h audacious-plugins-3.2/src/kanashi/drawing.h --- audacious-plugins-2.4.4/src/kanashi/drawing.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/drawing.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -/* - * kanashi: iterated javascript-driven visualization framework - * Copyright (c) 2006, 2007 William Pitcock - * Portions copyright (c) 2001 Jamie Gennis - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 2 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include - -#ifndef PN_DRAWING_H -#define PN_DRAWING_H - -void kanashi_draw_dot (guint x, guint y, guchar value); -void kanashi_draw_line (guint _x0, guint _y0, guint _x1, guint _y1, guchar value); - -#endif diff -Nru audacious-plugins-2.4.4/src/kanashi/examples/Makefile audacious-plugins-3.2/src/kanashi/examples/Makefile --- audacious-plugins-2.4.4/src/kanashi/examples/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/examples/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -DATA = nenolod_-_kanashi_default.js - -include ../../../buildsys.mk - -PACKAGE = audacious/kanashi/presets diff -Nru audacious-plugins-2.4.4/src/kanashi/examples/nenolod_-_kanashi_default.js audacious-plugins-3.2/src/kanashi/examples/nenolod_-_kanashi_default.js --- audacious-plugins-2.4.4/src/kanashi/examples/nenolod_-_kanashi_default.js 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/examples/nenolod_-_kanashi_default.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -/* - * kanashi_test.js - * - * Test visualization scene for Kanashi engine. - */ - -set_colormap_gradient(0, 255, 0, 192, 255); - -render_scene = function() { - // render left and right channels in the middle as two waves. - render_horizontal_waveform(-1, 255); - render_horizontal_waveform(1, 255); - - if (is_beat()) { - blur(Math.floor(Math.random() * 4)); - value_invert(); - value_reduce(1); - set_colormap_gradient(0, 255, - Math.floor(Math.random() * 255), - Math.floor(Math.random() * 255), - Math.floor(Math.random() * 255)); - } - - blur(1); - - // reduce value by 2 - value_reduce(2); -} diff -Nru audacious-plugins-2.4.4/src/kanashi/freq.c audacious-plugins-3.2/src/kanashi/freq.c --- audacious-plugins-2.4.4/src/kanashi/freq.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/freq.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -/* - * kanashi: iterated javascript-driven visualization framework - * Copyright (c) 2006, 2007 William Pitcock - * Portions copyright (c) 2001 Jamie Gennis - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 2 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include - -#include -#include - -#include - -#include "kanashi.h" -#include "kanashi_utils.h" - -/* **************** freq_dots **************** */ -/* FIXME: take this piece of crap out */ -static void -kanashi_freq_dots(void) -{ - int i, basex; - - basex = (kanashi_image_data->width>>1)-128; - for (i=basex < 0 ? -basex : 0 ; i < 256; i++) - { - kanashi_image_data->surface[0][PN_IMG_INDEX (basex+i, (kanashi_image_data->height>>1) - - CAP (kanashi_sound_data->freq_data[0][i], 120))] - = 0xff; - kanashi_image_data->surface[0][PN_IMG_INDEX (basex+256-i, (kanashi_image_data->height>>1) - + CAP (kanashi_sound_data->freq_data[1][i], 120))] - = 0xff; - } -} - -/* **************** freq_drops **************** */ -static void -kanashi_freq_drops (void) -{ - int i,j; - - for (i=0; i<256; i++) - for (j=0; jfreq_data[0][i]>>3; i++) - kanashi_image_data->surface[0][PN_IMG_INDEX (rand() % kanashi_image_data->width, - rand() % kanashi_image_data->height)] - = 0xff; -} diff -Nru audacious-plugins-2.4.4/src/kanashi/general.c audacious-plugins-3.2/src/kanashi/general.c --- audacious-plugins-2.4.4/src/kanashi/general.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/general.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,220 +0,0 @@ -/* - * kanashi: iterated javascript-driven visualization framework - * Copyright (c) 2006, 2007 William Pitcock - * Portions copyright (c) 2001 Jamie Gennis - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 2 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -/* FIXME: what to name this file? */ - -#include - -#include "kanashi.h" -#include "kanashi_utils.h" - -/* **************** general_fade **************** */ -void -kanashi_fade(gint amt) -{ - register gint i, j; - - for (j=0; jheight; j++) - for (i=0; iwidth; i++) - kanashi_image_data->surface[0][PN_IMG_INDEX (i, j)] = - CAPLO (kanashi_image_data->surface[0][PN_IMG_INDEX (i, j)] - amt, 0); -} - -/* **************** general_blur **************** */ -void -kanashi_blur(void) -{ - int i,j; - register guchar *srcptr = kanashi_image_data->surface[0]; - register guchar *destptr = kanashi_image_data->surface[1]; - register int sum; - - for (j=0; jheight; j++) - for (i=0; iwidth; i++) - { - sum = *(srcptr)<<2; - - /* top */ - if (j > 0) - { - sum += *(srcptr-kanashi_image_data->width)<<1; - if (i > 0) - sum += *(srcptr-kanashi_image_data->width-1); - if (i < kanashi_image_data->width-1) - sum += *(srcptr-kanashi_image_data->width+1); - } - /* bottom */ - if (j < kanashi_image_data->height-1) - { - sum += *(srcptr+kanashi_image_data->width)<<1; - if (i > 0) - sum += *(srcptr+kanashi_image_data->width-1); - if (i < kanashi_image_data->width-1) - sum += *(srcptr+kanashi_image_data->width+1); - } - /* left */ - if (i > 0) - sum += *(srcptr-1)<<1; - /* right */ - if (i < kanashi_image_data->width-1) - sum += *(srcptr+1)<<1; - - *destptr++ = (guchar)(sum >> 4); - srcptr++; - } - - kanashi_swap_surfaces (); -} - -/* **************** general_mosaic **************** */ -void -kanashi_mosaic(gint radius) -{ - int i,j; - register guchar *srcptr = kanashi_image_data->surface[0]; - register guchar *destptr = kanashi_image_data->surface[1]; - - for (j=0; jheight; j += radius) - for (i=0; iwidth; i += radius) - { - int ii = 0, jj = 0; - guchar bval = 0; - - /* find the brightest colour */ - for (jj = 0; jj < radius && (j + jj < kanashi_image_data->height); jj++) - for (ii = 0; ii < radius && (i + ii < kanashi_image_data->width); ii++) - { - guchar val = srcptr[PN_IMG_INDEX(i + ii, j + jj)]; - - if (val > bval) - bval = val; - } - - for (jj = 0; jj < radius && (j + jj < kanashi_image_data->height); jj++) - for (ii = 0; ii < radius && (i + ii < kanashi_image_data->width); ii++) - { - destptr[PN_IMG_INDEX(i + ii, j + jj)] = bval; - } - } - - kanashi_swap_surfaces (); -} - -/* **************** general_clear **************** */ -void -kanashi_clear(void) -{ - memset(kanashi_image_data->surface[0], '\0', - (kanashi_image_data->height * kanashi_image_data->width)); -} - -/* **************** general_invert **************** */ -void -kanashi_invert(void) -{ - int i, j; - - for (j=0; j < kanashi_image_data->height; j++) - for (i=0; i < kanashi_image_data->width; i++) - kanashi_image_data->surface[0][PN_IMG_INDEX (i, j)] = - 255 - kanashi_image_data->surface[0][PN_IMG_INDEX (i, j)]; -} - -/* **************** general_replace **************** */ -#if 0 -static struct kanashi_actuator_option_desc general_replace_opts[] = -{ - { "start", "The beginning colour value that should be replaced by the value of out.", - OPT_TYPE_INT, { ival: 250 } }, - { "end", "The ending colour value that should be replaced by the value of out.", - OPT_TYPE_INT, { ival: 255 } }, - { "out", "The colour value that in is replaced with.", - OPT_TYPE_INT, { ival: 0 } }, - { NULL } -}; - -static void -general_replace_exec (const struct kanashi_actuator_option *opts, - gpointer data) -{ - register int i, j; - register guchar val; - guchar begin = opts[0].val.ival > 255 || opts[0].val.ival < 0 ? 250 : opts[0].val.ival; - guchar end = opts[1].val.ival > 255 || opts[1].val.ival < 0 ? 255 : opts[1].val.ival; - guchar out = opts[2].val.ival > 255 || opts[2].val.ival < 0 ? 0 : opts[2].val.ival; - - for (j=0; j < kanashi_image_data->height; j++) - for (i=0; i < kanashi_image_data->width; i++) - { - val = kanashi_image_data->surface[0][PN_IMG_INDEX (i, j)]; - if (val >= begin && val <= end) - kanashi_image_data->surface[0][PN_IMG_INDEX (i, j)] = out; - } -} - -struct kanashi_actuator_desc builtin_general_replace = -{ - "general_replace", "Value Replace", "Performs a value replace on a range of values.", - 0, general_replace_opts, - NULL, NULL, general_replace_exec -}; -#endif - -/* **************** general_swap **************** */ -void -kanashi_swap(void) -{ - kanashi_swap_surfaces (); -} - -/* **************** general_copy **************** */ -void -kanashi_copy(void) -{ - memcpy(kanashi_image_data->surface[1], kanashi_image_data->surface[0], - (kanashi_image_data->width * kanashi_image_data->height)); -} - -/* **************** general_flip **************** */ -void -kanashi_flip(gint direction) -{ - gint x, y; - - if (direction < 0) - { - for (y = 0; y < kanashi_image_data->height; y++) - for (x = 0; x < kanashi_image_data->width; x++) - { - kanashi_image_data->surface[1][PN_IMG_INDEX(kanashi_image_data->width - x, y)] = - kanashi_image_data->surface[0][PN_IMG_INDEX(x, y)]; - } - } - else - { - for (y = 0; y < kanashi_image_data->height; y++) - for (x = 0; x < kanashi_image_data->width; x++) - { - kanashi_image_data->surface[1][PN_IMG_INDEX(x, kanashi_image_data->height - y)] = - kanashi_image_data->surface[0][PN_IMG_INDEX(x, y)]; - } - } - - kanashi_swap_surfaces (); -} diff -Nru audacious-plugins-2.4.4/src/kanashi/jsglue.c audacious-plugins-3.2/src/kanashi/jsglue.c --- audacious-plugins-2.4.4/src/kanashi/jsglue.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/jsglue.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,238 +0,0 @@ -/* - * kanashi: iterated javascript-driven visualization engine - * Copyright (c) 2009 William Pitcock - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 2 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "kanashi.h" -#include "kanashi_utils.h" -#include "drawing.h" - -JSBool -kanashi_js_fade(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - gint amt; - - if (!JS_ConvertArguments(cx_, argc, argv, "i", &amt)) - return JS_FALSE; - - if (amt < 1) - amt = 1; - - kanashi_fade(amt); - - *rval = JSVAL_VOID; - return JS_TRUE; -} - -JSBool -kanashi_js_mosaic(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - gint amt; - - if (!JS_ConvertArguments(cx_, argc, argv, "i", &amt)) - return JS_FALSE; - - if (amt < 1) - amt = 1; - - kanashi_mosaic(amt); - - *rval = JSVAL_VOID; - return JS_TRUE; -} - -JSBool -kanashi_js_blur(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - gint amt, i; - - if (!JS_ConvertArguments(cx_, argc, argv, "i", &amt)) - return JS_FALSE; - - if (amt < 1) - amt = 1; - - for (i = 0; i < amt; i++) - kanashi_blur(); - - *rval = JSVAL_VOID; - return JS_TRUE; -} - -JSBool -kanashi_js_invert(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - kanashi_invert(); - - *rval = JSVAL_VOID; - return JS_TRUE; -} - -JSBool -kanashi_js_set_colormap_gradient(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - gint low_index, high_index; - struct kanashi_color color; - - if (!JS_ConvertArguments(cx_, argc, argv, "iiiii", &low_index, &high_index, &color.r, &color.g, &color.b)) - return JS_FALSE; - - kanashi_set_colormap_gradient(low_index, high_index, &color); - - *rval = JSVAL_VOID; - return JS_TRUE; -} - -JSBool -kanashi_js_render_horizontal_waveform(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - gint channels, value; - - if (!JS_ConvertArguments(cx_, argc, argv, "ii", &channels, &value)) - return JS_FALSE; - - kanashi_render_horizontal_waveform(channels, value); - - *rval = JSVAL_VOID; - return JS_TRUE; -} - -JSBool -kanashi_js_render_vertical_waveform(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - gint channels, value; - - if (!JS_ConvertArguments(cx_, argc, argv, "ii", &channels, &value)) - return JS_FALSE; - - kanashi_render_vertical_waveform(channels, value); - - *rval = JSVAL_VOID; - return JS_TRUE; -} - -JSBool -kanashi_js_is_beat(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - if (kanashi_new_beat) - *rval = JSVAL_TRUE; - else - *rval = JSVAL_FALSE; - - return JS_TRUE; -} - -JSBool -kanashi_js_render_line(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - gint x1, y1, x2, y2, value; - - if (!JS_ConvertArguments(cx_, argc, argv, "iiiii", &x1, &y1, &x2, &y2, &value)) - return JS_FALSE; - - kanashi_draw_line(x1, y1, x2, y2, value); - - *rval = JSVAL_VOID; - return JS_TRUE; -} - -JSBool -kanashi_js_render_dot(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - gint x1, y1, value; - - if (!JS_ConvertArguments(cx_, argc, argv, "iii", &x1, &y1, &value)) - return JS_FALSE; - - kanashi_draw_dot(x1, y1, value); - - *rval = JSVAL_VOID; - return JS_TRUE; -} - -JSBool -kanashi_js_get_canvas_width(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - *rval = INT_TO_JSVAL(kanashi_image_data->width); - return JS_TRUE; -} - -JSBool -kanashi_js_get_canvas_height(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - *rval = INT_TO_JSVAL(kanashi_image_data->height); - return JS_TRUE; -} - -JSBool -kanashi_js_get_pcm_data(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - JSObject *ar = JS_NewArrayObject(cx_, 0, NULL); - gint i; - - JS_AddRoot(cx_, ar); - - for (i = 0; i < 256; i++) - { - JSObject *tuple = JS_NewArrayObject(cx_, 0, NULL); - jsval l, r, tu; - - JS_AddRoot(cx_, tuple); - - l = INT_TO_JSVAL(kanashi_sound_data->pcm_data[0][i * 2]); - r = INT_TO_JSVAL(kanashi_sound_data->pcm_data[1][i * 2]); - JS_SetElement(cx_, tuple, 0, &l); - JS_SetElement(cx_, tuple, 1, &r); - - tu = OBJECT_TO_JSVAL(tuple); - JS_SetElement(cx_, ar, i, &tu); - - JS_RemoveRoot(cx_, tuple); - } - - JS_RemoveRoot(cx_, ar); - - *rval = OBJECT_TO_JSVAL(ar); - return JS_TRUE; -} - -JSBool -kanashi_js_translate_polar_x(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - gint x; - - if (!JS_ConvertArguments(cx_, argc, argv, "i", &x)) - return JS_FALSE; - - x *= kanashi_image_data->width; - - *rval = INT_TO_JSVAL(x); - return JS_TRUE; -} - -JSBool -kanashi_js_translate_polar_y(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval) -{ - gint y; - - if (!JS_ConvertArguments(cx_, argc, argv, "i", &y)) - return JS_FALSE; - - y *= kanashi_image_data->height; - - *rval = INT_TO_JSVAL(y); - return JS_TRUE; -} diff -Nru audacious-plugins-2.4.4/src/kanashi/jsglue.h audacious-plugins-3.2/src/kanashi/jsglue.h --- audacious-plugins-2.4.4/src/kanashi/jsglue.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/jsglue.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ -/* - * kanashi: iterated javascript-driven visualization engine - * Copyright (c) 2009 William Pitcock - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 2 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "kanashi.h" - -extern JSBool kanashi_js_fade(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval); -extern JSBool kanashi_js_blur(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval); -extern JSBool kanashi_js_mosaic(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval); -extern JSBool kanashi_js_invert(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval); - -extern JSBool kanashi_js_set_colormap_gradient(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval); - -extern JSBool kanashi_js_render_horizontal_waveform(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval); -extern JSBool kanashi_js_render_vertical_waveform(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval); -extern JSBool kanashi_js_render_line(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval); -extern JSBool kanashi_js_render_dot(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval); - -extern JSBool kanashi_js_is_beat(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval); - -extern JSBool kanashi_js_get_canvas_width(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval); -extern JSBool kanashi_js_get_canvas_height(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval); - -extern JSBool kanashi_js_get_pcm_data(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval); - -extern JSBool kanashi_js_translate_polar_x(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval); -extern JSBool kanashi_js_translate_polar_y(JSContext *cx_, JSObject *obj, uintN argc, jsval *argv, jsval *rval); - diff -Nru audacious-plugins-2.4.4/src/kanashi/kanashi.c audacious-plugins-3.2/src/kanashi/kanashi.c --- audacious-plugins-2.4.4/src/kanashi/kanashi.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/kanashi.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,301 +0,0 @@ -/* - * kanashi: iterated javascript-driven visualization framework - * Copyright (c) 2006, 2007 William Pitcock - * Portions copyright (c) 2001 Jamie Gennis - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 2 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include - -#include -#include -#include -#include - -#include -#include - -#include "kanashi.h" -#include "jsglue.h" - -GtkWidget *kanashi_win = NULL; -GdkRgbCmap *cmap = NULL; - -/* Globals */ -struct kanashi_rc *kanashi_rc; -struct kanashi_image_data *kanashi_image_data; -struct kanashi_sound_data *kanashi_sound_data; - -/* Trig Pre-Computes */ -float sin_val[360]; -float cos_val[360]; - -gboolean kanashi_new_beat; - -JSRuntime *rt = NULL; -JSContext *cx = NULL; -JSObject *global = NULL; - -GStaticMutex kanashi_mutex = G_STATIC_MUTEX_INIT; -gint render_timeout = 0; -extern GCond *render_cond; - -/* **************** drawing doodads **************** */ -static void -set_colormap (void) -{ - guint32 colors[256]; - gint i; - - if (cmap != NULL) - gdk_rgb_cmap_free(cmap); - - for (i = 0; i < 256; i++) { - colors[i] = - (kanashi_image_data->cmap[i].r << 16) | - (kanashi_image_data->cmap[i].g << 8) | - (kanashi_image_data->cmap[i].b); - } - - cmap = gdk_rgb_cmap_new(colors, 256); -} - -static gboolean -blit_to_screen (gpointer unused) -{ - kanashi_render (); - set_colormap(); - - gdk_draw_indexed_image(kanashi_win->window, kanashi_win->style->white_gc, 0, 0, - kanashi_image_data->width, kanashi_image_data->height, GDK_RGB_DITHER_NONE, - kanashi_image_data->surface[0], kanashi_image_data->width, cmap); - - return TRUE; -} - -static void -resize_video (guint w, guint h) -{ - g_static_mutex_lock(&kanashi_mutex); - - kanashi_image_data->width = w; - kanashi_image_data->height = h; - - if (kanashi_image_data->surface[0]) - g_free (kanashi_image_data->surface[0]); - if (kanashi_image_data->surface[1]) - g_free (kanashi_image_data->surface[1]); - - kanashi_image_data->surface[0] = g_malloc0 (w * h); - kanashi_image_data->surface[1] = g_malloc0 (w * h); - - g_static_mutex_unlock(&kanashi_mutex); -} - -/* **************** basic renderer management **************** */ -void -kanashi_cleanup (void) -{ - if (kanashi_image_data) - { - if (kanashi_image_data->surface[0]) - g_free (kanashi_image_data->surface[0]); - if (kanashi_image_data->surface[1]) - g_free (kanashi_image_data->surface[1]); - g_free (kanashi_image_data); - } - if (kanashi_sound_data) - g_free (kanashi_sound_data); - - if (render_timeout) - g_source_remove(render_timeout); -} - -/* Renders one frame and handles the SDL window */ -void -kanashi_render (void) -{ - jsval rval; - - kanashi_new_beat = kanashi_is_new_beat(); - - if (!JS_CallFunctionName(cx, global, "render_scene", 0, NULL, &rval)) - printf("something broke\n"); -} - -/* this MUST be called if a builtin's output is to surface[1] - (by the builtin, after it is done) */ -void -kanashi_swap_surfaces (void) -{ - guchar *tmp = kanashi_image_data->surface[0]; - kanashi_image_data->surface[0] = kanashi_image_data->surface[1]; - kanashi_image_data->surface[1] = tmp; -} - -/******* presets *******/ -static JSClass global_class = { - "global", JSCLASS_GLOBAL_FLAGS, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, - JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub, - JSCLASS_NO_OPTIONAL_MEMBERS -}; - -void -kanashi_report_js_error(JSContext *cx, const char *message, JSErrorReport *report) -{ - printf("%s:%u:%s\n", - report->filename ? report->filename : "", - (unsigned int) report->lineno, - message); -} - - -JSBool -kanashi_branch_callback_hook(JSContext *cx_, JSScript *script) -{ - static int counter = 0; - - if (++counter == 2000) { - JS_MaybeGC(cx_); - counter = 0; - } - - return JS_TRUE; -} - -gboolean -kanashi_load_preset(const char *filename) -{ - gchar *data; - gsize len; - GError *err = NULL; - JSScript *script; - jsval rval; - - if (g_file_get_contents(filename, &data, &len, &err)) - { - script = JS_CompileScript(cx, global, data, len, filename, 1); - if (script != NULL) - { - JS_ExecuteScript(cx, global, script, &rval); - } - else - { - printf("compilation failed\n"); - return FALSE; - } - } - else - { - printf("loading failed\n"); - return FALSE; - } - - g_free(data); - - return TRUE; -} - -static JSFunctionSpec js_global_functions[] = { - {"value_reduce", kanashi_js_fade, 1, 0, 0}, - {"value_invert", kanashi_js_invert, 0, 0, 0}, - {"blur", kanashi_js_blur, 1, 0, 0}, - {"mosaic", kanashi_js_mosaic, 1, 0, 0}, - {"set_colormap_gradient", kanashi_js_set_colormap_gradient, 5, 0, 0}, - {"render_horizontal_waveform", kanashi_js_render_horizontal_waveform, 2, 0, 0}, - {"render_vertical_waveform", kanashi_js_render_vertical_waveform, 2, 0, 0}, - {"render_line", kanashi_js_render_line, 5, 0, 0}, - {"render_dot", kanashi_js_render_dot, 3, 0, 0}, - {"is_beat", kanashi_js_is_beat, 0, 0, 0}, - {"get_canvas_width", kanashi_js_get_canvas_width, 0, 0, 0}, - {"get_canvas_height", kanashi_js_get_canvas_height, 0, 0, 0}, - {"get_pcm_data", kanashi_js_get_pcm_data, 0, 0, 0}, - {"translate_polar_x", kanashi_js_translate_polar_x, 1, 0, 0}, - {"translate_polar_y", kanashi_js_translate_polar_y, 1, 0, 0}, - {}, -}; - -gboolean -kanashi_reconfigure(GtkWidget *widget, GdkEventConfigure *event, gpointer unused) -{ - resize_video (event->width, event->height); - - return FALSE; -} - -gboolean -kanashi_init(void) -{ - int i; - - kanashi_sound_data = g_new0 (struct kanashi_sound_data, 1); - kanashi_image_data = g_new0 (struct kanashi_image_data, 1); - - kanashi_win = gtk_drawing_area_new(); - gtk_widget_realize(kanashi_win); - gtk_widget_set_size_request(kanashi_win, 640, 360); - gtk_widget_show(kanashi_win); - g_signal_connect(G_OBJECT(kanashi_win), "configure-event", G_CALLBACK(kanashi_reconfigure), NULL); - - resize_video (640, 360); - - for (i=0; i<360; i++) - { - sin_val[i] = sin(i*(M_PI/180.0)); - cos_val[i] = cos(i*(M_PI/180.0)); - } - - rt = JS_NewRuntime(8L * 1024L * 1024L); - if (rt == NULL) - { - return FALSE; - } - - /* Create a context. */ - cx = JS_NewContext(rt, 8192); - if (cx == NULL) - { - return FALSE; - } - - JS_SetOptions(cx, JSOPTION_VAROBJFIX); - JS_SetVersion(cx, JSVERSION_1_7); - JS_SetErrorReporter(cx, kanashi_report_js_error); - JS_SetBranchCallback(cx, kanashi_branch_callback_hook); - - global = JS_NewObject(cx, &global_class, NULL, NULL); - if (global == NULL) - { - return FALSE; - } - - if (!JS_InitStandardClasses(cx, global)) - { - return FALSE; - } - - if (!JS_DefineFunctions(cx, global, js_global_functions)) - { - return FALSE; - } - - kanashi_load_preset(PRESET_PATH "/nenolod_-_kanashi_default.js"); - - g_signal_connect(kanashi_win, "expose-event", G_CALLBACK(blit_to_screen), NULL); - render_timeout = g_timeout_add(16, (GSourceFunc) gtk_widget_queue_draw, kanashi_win); - - return TRUE; -} diff -Nru audacious-plugins-2.4.4/src/kanashi/kanashi.h audacious-plugins-3.2/src/kanashi/kanashi.h --- audacious-plugins-2.4.4/src/kanashi/kanashi.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/kanashi.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,85 +0,0 @@ -/* - * kanashi: iterated javascript-driven visualization plugin - * Copyright (c) 2009 William Pitcock - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 2 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#ifndef _KANASHI_H -#define _KANASHI_H - -#define XP_UNIX /* XXX */ - -#include -#include -#include -#include - -struct kanashi_color -{ - guchar r, g, b, a; -}; - -struct kanashi_sound_data -{ - gint16 pcm_data[2][512]; - gint16 freq_data[2][256]; -}; - -struct kanashi_image_data -{ - int width, height; - struct kanashi_color cmap[256]; - guchar *surface[2]; -}; - -/* The executable (ie xmms.c or standalone.c) - is responsible for allocating this and filling - it with default/saved values */ -struct kanashi_rc -{ - struct kanashi_actuator *actuator; -}; - -/* core funcs */ -gboolean kanashi_init (void); -void kanashi_cleanup (void); -void kanashi_render (void); -void kanashi_swap_surfaces (void); -gboolean kanashi_load_preset (const char *filename); - -/* Implemented elsewhere (ie xmms.c or standalone.c) */ -void kanashi_set_rc (); -void kanashi_fatal_error (const char *fmt, ...); -void kanashi_error (const char *fmt, ...); -void kanashi_quit (void); - -/* Implimented in cfg.c */ -void kanashi_configure (void); - -/* globals used for rendering */ -extern struct kanashi_rc *kanashi_rc; -extern struct kanashi_sound_data *kanashi_sound_data; -extern struct kanashi_image_data *kanashi_image_data; - -extern gboolean kanashi_new_beat; - -/* global trig pre-computes */ -extern float sin_val[360]; -extern float cos_val[360]; - -/* beat detection */ -int kanashi_is_new_beat(void); - -#endif /* _KANASHI_H */ diff -Nru audacious-plugins-2.4.4/src/kanashi/kanashi_utils.h audacious-plugins-3.2/src/kanashi/kanashi_utils.h --- audacious-plugins-2.4.4/src/kanashi/kanashi_utils.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/kanashi_utils.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -/* - * kanashi: iterated javascript-driven visualization engine - * Copyright (c) 2009 William Pitcock - * Portions copyright (c) 2001 Jamie Gennis - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 2 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#ifndef _PN_UTILS_H -#define _PN_UTILS_H - -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#define CAP(i,c) (i > c ? c : i < -(c) ? -(c) : i) -#define CAPHILO(i,h,l) (i > h ? h : i < l ? l : i) -#define CAPHI(i,h) (i > h ? h : i) -#define CAPLO(i,l) (i < l ? l : i) - -#define PN_IMG_INDEX(x,y) ((x) + (kanashi_image_data->width * (y))) - -struct kanashi_color; - -extern void kanashi_mosaic(gint amt); -extern void kanashi_fade(gint amt); -extern void kanashi_blur(void); -extern void kanashi_invert(void); - -extern void kanashi_set_colormap_gradient(gint low_index, gint high_index, struct kanashi_color *color); - -extern void kanashi_render_horizontal_waveform(gint channels, guchar value); -extern void kanashi_render_vertical_waveform(gint channels, guchar value); - -#endif /* _PN_UTILS_H */ diff -Nru audacious-plugins-2.4.4/src/kanashi/Makefile audacious-plugins-3.2/src/kanashi/Makefile --- audacious-plugins-2.4.4/src/kanashi/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -PLUGIN = kanashi${PLUGIN_SUFFIX} - -SRCS = beatdetect.c \ - cfg.c \ - cmaps.c \ - drawing.c \ - freq.c \ - general.c \ - jsglue.c \ - kanashi.c \ - misc.c \ - plugin.c \ - wave.c \ - xform.c \ - -SUBDIRS = examples - -include ../../buildsys.mk -include ../../extra.mk - -plugindir := ${plugindir}/${VISUALIZATION_PLUGIN_DIR} - -CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${ARCH_DEFINES} ${SDL_CFLAGS} -I../.. -I. -DPRESET_PATH="\"${prefix}/share/audacious/kanashi/presets\"" -LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${SDL_LIBS} -lmozjs diff -Nru audacious-plugins-2.4.4/src/kanashi/misc.c audacious-plugins-3.2/src/kanashi/misc.c --- audacious-plugins-2.4.4/src/kanashi/misc.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/misc.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,129 +0,0 @@ -/* - * kanashi: iterated javascript-driven visualization framework - * Copyright (c) 2006, 2007 William Pitcock - * Portions copyright (c) 2001 Jamie Gennis - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 2 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include - -#include -#include - -#include - -#include "kanashi.h" -#include "kanashi_utils.h" - -/* ******************** misc_floater ******************** */ -#if 0 -typedef enum -{ - float_up = 0x1, - float_down = 0x2, - float_left = 0x4, - float_right = 0x8, -} FloaterDirection; - -struct floater_state_data -{ - FloaterDirection dir; - gint x; - gint y; -}; - -static void -misc_floater_init(gpointer *data) -{ - struct floater_state_data *opaque_data = g_new0(struct floater_state_data, 1); - *data = opaque_data; - opaque_data->x = rand() % kanashi_image_data->width; - opaque_data->y = rand() % kanashi_image_data->height; - opaque_data->dir = (FloaterDirection) rand() % 15; /* sum of all dir values */ -} - -static void -misc_floater_cleanup(gpointer data) -{ - g_free(data); -} - -/* - * This implementation isn't very great. - * Anyone want to improve it? :( - */ -static void -misc_floater_exec(const struct kanashi_actuator_option *opts, gpointer data) -{ - struct floater_state_data *opaque_data = (struct floater_state_data *) data; - guchar value = (opts[0].val.ival < 0 || opts[0].val.ival > 255) ? 255 : opts[0].val.ival; - - /* determine the root coordinate first */ - if (opaque_data->dir & float_up) - opaque_data->y -= 1; - if (opaque_data->dir & float_down) - opaque_data->y += 1; - - if (opaque_data->dir & float_left) - opaque_data->x -= 1; - if (opaque_data->dir & float_right) - opaque_data->x += 1; - - /* make sure we're within surface boundaries. segfaults suck, afterall. */ - if (opaque_data->x + 1 <= kanashi_image_data->width && - opaque_data->x - 1 >= 0 && - opaque_data->y + 1 <= kanashi_image_data->height && - opaque_data->y - 1 >= 0) - { - /* draw it. i could use a loop here, but i don't see much reason in it, - * so i don't think i will at this time. -nenolod - */ - kanashi_image_data->surface[0][PN_IMG_INDEX(opaque_data->x, opaque_data->y)] = value; - kanashi_image_data->surface[0][PN_IMG_INDEX(opaque_data->x + 1, opaque_data->y)] = value; - kanashi_image_data->surface[0][PN_IMG_INDEX(opaque_data->x - 1, opaque_data->y)] = value; - kanashi_image_data->surface[0][PN_IMG_INDEX(opaque_data->x, opaque_data->y + 1)] = value; - kanashi_image_data->surface[0][PN_IMG_INDEX(opaque_data->x, opaque_data->y - 1)] = value; - } - - /* check if we need to change direction yet, and if so, do so. */ - if (kanashi_new_beat == TRUE) - opaque_data->dir = (FloaterDirection) rand() % 15; /* sum of all dir values */ - - /* now adjust the direction so we stay in boundary */ - if (opaque_data->x - 1 <= 0 && opaque_data->dir & float_left) - { - opaque_data->dir &= ~float_left; - opaque_data->dir |= float_right; - } - - if (opaque_data->x + 1 >= kanashi_image_data->width && opaque_data->dir & float_right) - { - opaque_data->dir &= ~float_right; - opaque_data->dir |= float_left; - } - - if (opaque_data->y - 1 <= 0 && opaque_data->dir & float_up) - { - opaque_data->dir &= ~float_up; - opaque_data->dir |= float_down; - } - - if (opaque_data->y + 1 >= kanashi_image_data->height && opaque_data->dir & float_down) - { - opaque_data->dir &= ~float_down; - opaque_data->dir |= float_up; - } -} -#endif diff -Nru audacious-plugins-2.4.4/src/kanashi/plugin.c audacious-plugins-3.2/src/kanashi/plugin.c --- audacious-plugins-2.4.4/src/kanashi/plugin.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/plugin.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,309 +0,0 @@ -/* - * kanashi: iterated javascript-driven visualization framework - * Copyright (c) 2006, 2007 William Pitcock - * Portions copyright (c) 2001 Jamie Gennis - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 2 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -/* FIXME: issues with not uniniting variables between - enables? I wasn't too careful about that, but it - seems to work fine. If there are problems perhaps - look for a bug there? -*/ - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include - -#include "kanashi.h" - -/* Error reporting dlg */ -static GtkWidget *err_dialog; -extern GtkWidget *kanashi_win; - -/* Draw thread stuff */ -/* FIXME: Do I need mutex for kanashi_done? */ -static GMutex *sound_data_mutex; -static GMutex *config_mutex; -GCond *render_cond; -extern GStaticMutex kanashi_mutex; - -static gboolean kanashi_done = FALSE; -static jmp_buf quit_jmp; -static gboolean timeout_set = FALSE; -static guint quit_timeout; - -/* Sound stuffs */ -static gboolean new_pcm_data = FALSE; -static gboolean new_freq_data = FALSE; -static gint16 tmp_pcm_data[2][512]; -static gint16 tmp_freq_data[2][256]; - -/* XMMS interface */ -static void kanashi_xmms_init (void); -static void kanashi_xmms_cleanup (void); -static void kanashi_xmms_about (void); -static void kanashi_xmms_configure (void); -static void kanashi_xmms_render_pcm (gint16 data[2][512]); -static void kanashi_xmms_render_freq (gint16 data[2][256]); - -static GtkWidget * -kanashi_get_widget(void) -{ - g_print("get widget\n"); - - return kanashi_win; -} - -static VisPlugin kanashi_vp = -{ - .description = "Kanashi", - .num_pcm_chs_wanted = 2, - .num_freq_chs_wanted = 2, - .init = kanashi_xmms_init, - .cleanup = kanashi_xmms_cleanup, - .about = kanashi_xmms_about, - .configure = kanashi_xmms_configure, - .render_pcm = kanashi_xmms_render_pcm, - .render_freq = kanashi_xmms_render_freq, - .get_widget = kanashi_get_widget, -}; - -VisPlugin *kanashi_vplist[] = { &kanashi_vp, NULL }; - -DECLARE_PLUGIN(kanashi, NULL, NULL, NULL, NULL, NULL, NULL, kanashi_vplist,NULL); - -static gpointer -draw_thread_fn (gpointer data) -{ - while (kanashi_done == FALSE) - { - kanashi_render (); - } - - g_print("exit\n"); - - kanashi_cleanup (); - - return NULL; -} - -static void -kanashi_xmms_init (void) -{ - kanashi_init (); - - sound_data_mutex = g_mutex_new(); - config_mutex = g_mutex_new(); - render_cond = g_cond_new(); -} - -static void -kanashi_xmms_cleanup (void) -{ - if (timeout_set) - { - gtk_timeout_remove (quit_timeout); - timeout_set = FALSE; - } - - if (sound_data_mutex) - { - g_mutex_free (sound_data_mutex); - sound_data_mutex = NULL; - } - - if (config_mutex) - { - g_mutex_free (config_mutex); - config_mutex = NULL; - } - - if (render_cond) - { - g_cond_free (render_cond); - render_cond = NULL; - } -} - -#define KANASHI_VERSION "0.1alpha3" -static void -kanashi_xmms_about (void) -{ - static GtkWidget *window = NULL; - - audgui_simple_message(&window, GTK_MESSAGE_INFO, "About Kanashi", - -"Kanashi " KANASHI_VERSION "\n\n\ -Copyright (C) 2009, William Pitcock \n\ -\n\ -This program is free software; you can redistribute it and/or modify\n\ -it under the terms of the GNU General Public License as published by\n\ -the Free Software Foundation; either version 2 of the License, or\n\ -(at your option) any later version.\n\ -\n\ -This program is distributed in the hope that it will be useful,\n\ -but WITHOUT ANY WARRANTY; without even the implied warranty of\n\ -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\ -GNU General Public License for more details.\n\ -\n\ -You should have received a copy of the GNU General Public License\n\ -along with this program; if not, write to the Free Software\n\ -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301\n\ -USA"); -} - -static void -kanashi_xmms_configure (void) -{ - if (config_mutex) - g_mutex_lock (config_mutex); - - kanashi_configure (); - - if (config_mutex) - g_mutex_unlock (config_mutex); -} - -static void -kanashi_xmms_render_pcm (gint16 data[2][512]) -{ - memcpy (kanashi_sound_data->pcm_data, data, sizeof (gint16) * 2 * 512); -} - -static void -kanashi_xmms_render_freq (gint16 data[2][256]) -{ - memcpy (kanashi_sound_data->freq_data, data, sizeof (gint16) * 2 * 256); -} - -/* **************** kanashi.h stuff **************** */ - -void -kanashi_set_rc (struct kanashi_rc *new_rc) -{ -} - -void -kanashi_fatal_error (const char *fmt, ...) -{ - char *errstr; - va_list ap; - GtkWidget *dialog; - GtkWidget *close, *label; - - /* now report the error... */ - va_start (ap, fmt); - errstr = g_strdup_vprintf (fmt, ap); - va_end (ap); - - dialog=gtk_dialog_new(); - gtk_window_set_title(GTK_WINDOW(dialog), "Kanashi: Fatal Error"); - gtk_container_border_width (GTK_CONTAINER (dialog), 8); - - label=gtk_label_new(errstr); - fprintf (stderr, "%s\n", errstr); - g_free (errstr); - - close = gtk_button_new_with_label ("Close"); - gtk_signal_connect_object (GTK_OBJECT (close), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), - GTK_OBJECT (dialog)); - - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), label, FALSE, - FALSE, 0); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), close, - FALSE, FALSE, 0); - gtk_widget_show (label); - gtk_widget_show (close); - - gtk_widget_show (dialog); - gtk_widget_grab_focus (dialog); - - kanashi_quit (); -} - - -void -kanashi_error (const char *fmt, ...) -{ - char *errstr; - va_list ap; - static GtkWidget *text; - static GtkTextBuffer *textbuf; - - /* now report the error... */ - va_start (ap, fmt); - errstr = g_strdup_vprintf (fmt, ap); - va_end (ap); - fprintf (stderr, "Kanashi-CRITICAL **: %s\n", errstr); - - if (! err_dialog) - { - GtkWidget *close; - - err_dialog=gtk_dialog_new(); - gtk_window_set_title (GTK_WINDOW (err_dialog), "Kanashi: Error"); - gtk_window_set_policy (GTK_WINDOW (err_dialog), FALSE, FALSE, FALSE); - gtk_widget_set_usize (err_dialog, 400, 200); - gtk_container_border_width (GTK_CONTAINER (err_dialog), 8); - - textbuf = gtk_text_buffer_new(NULL); - text = gtk_text_view_new_with_buffer (textbuf); - - close = gtk_button_new_with_label ("Close"); - gtk_signal_connect_object (GTK_OBJECT (close), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_hide), - GTK_OBJECT (err_dialog)); - gtk_signal_connect_object (GTK_OBJECT (err_dialog), "delete-event", - GTK_SIGNAL_FUNC (gtk_widget_hide), - GTK_OBJECT (err_dialog)); - - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (err_dialog)->vbox), text, FALSE, - FALSE, 0); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (err_dialog)->action_area), close, - FALSE, FALSE, 0); - gtk_widget_show (text); - gtk_widget_show (close); - } - - gtk_text_buffer_set_text(GTK_TEXT_BUFFER(textbuf), errstr, -1); - g_free (errstr); - - gtk_widget_show (err_dialog); - gtk_widget_grab_focus (err_dialog); -} - - -/* This is confusing... - Don't call this from anywhere but the draw thread or - the initialization xmms thread (ie NOT the xmms sound - data functions) */ -void -kanashi_quit (void) -{ -} diff -Nru audacious-plugins-2.4.4/src/kanashi/wave.c audacious-plugins-3.2/src/kanashi/wave.c --- audacious-plugins-2.4.4/src/kanashi/wave.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/wave.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,291 +0,0 @@ -/* - * kanashi: iterated javascript-driven visualization framework - * Copyright (c) 2006, 2007 William Pitcock - * Portions copyright (c) 2001 Jamie Gennis - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 2 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include - -#include - -#include "kanashi.h" -#include "kanashi_utils.h" - -#include "drawing.h" - -/* **************** wave_horizontal **************** */ -void -kanashi_render_horizontal_waveform(gint channels, guchar value) -{ - int channel = ( channels < 0 ) ? 0 : 1; - int *x_pos, *y_pos; /* dynamic tables which store the positions for the line */ - int *x2_pos, *y2_pos; /* dynamic tables which store the positions for the line */ - int i; - float step; - - g_print("waveform render\n"); - - x_pos = g_new0(int, 257); - y_pos = g_new0(int, 257); - x2_pos = g_new0(int, 257); - y2_pos = g_new0(int, 257); - - step = kanashi_image_data->width / 256.; - - /* calculate the line. */ - for (i = 0; i < 256; i++) - { - if (channels != 0) - { - x_pos[i] = i * step; - y_pos[i] = (kanashi_image_data->height>>1) - - CAP (kanashi_sound_data->pcm_data[channel][i * 2]>>8, - (kanashi_image_data->height>>1)-1); - } - else - { - x_pos[i] = i * step; - y_pos[i] = (kanashi_image_data->height>>2) - - CAP (kanashi_sound_data->pcm_data[0][i * 2]>>9, - (kanashi_image_data->height>>2)-1); - - x2_pos[i] = i * step; - y2_pos[i] = 3*(kanashi_image_data->height>>2) - - CAP (kanashi_sound_data->pcm_data[1][i * 2]>>9, - (kanashi_image_data->height>>2)-1); - - } - } - - /* draw the line. */ - for (i = 1; i < 256; i++) - { - kanashi_draw_line(x_pos[i - 1], y_pos[i - 1], x_pos[i], y_pos[i], value); - - if ( channels == 0 ) - kanashi_draw_line(x2_pos[i - 1], y2_pos[i - 1], x2_pos[i], y2_pos[i], value); - } - - g_free(x_pos); - g_free(y_pos); - g_free(x2_pos); - g_free(y2_pos); -} - -void -kanashi_render_vertical_waveform(gint channels, guchar value) -{ - int channel = ( channels < 0 ) ? 0 : 1; - int *x_pos, *y_pos; /* dynamic tables which store the positions for the line */ - int *x2_pos, *y2_pos; /* dynamic tables which store the positions for the line */ - int i; - float step; - - x_pos = g_new0(int, 129); - y_pos = g_new0(int, 129); - x2_pos = g_new0(int, 129); - y2_pos = g_new0(int, 129); - - step = kanashi_image_data->height / 128.; - - /* calculate the line. */ - for (i = 0; i < 128; i++) - { - if (channels != 0) - { - x_pos[i] = (kanashi_image_data->width>>1) - - CAP (kanashi_sound_data->pcm_data[channel] - [i*4]>>8, - (kanashi_image_data->width>>1)-1); - y_pos[i] = i * step; - } - else - { - x_pos[i] = (kanashi_image_data->width>>2) - - CAP (kanashi_sound_data->pcm_data[0] - [i*4]>>9, - (kanashi_image_data->width>>2)-1); - y_pos[i] = i * step; - - x2_pos[i] = 3*(kanashi_image_data->width>>2) - - CAP (kanashi_sound_data->pcm_data[1] - [i*4]>>9, - (kanashi_image_data->width>>2)-1); - y2_pos[i] = i * step; - } - } - - /* draw the line. */ - for (i = 1; i < 128; i++) - { - kanashi_draw_line(x_pos[i - 1], y_pos[i - 1], x_pos[i], y_pos[i], value); - - if ( channels == 0 ) - kanashi_draw_line(x2_pos[i - 1], y2_pos[i - 1], x2_pos[i], y2_pos[i], value); - } - - g_free(x_pos); - g_free(y_pos); - g_free(x2_pos); - g_free(y2_pos); -} - -#if 0 -/* FIXME: allow for only 1 channel for wave_normalize & wave_smooth */ -/* **************** wave_normalize **************** */ -static struct kanashi_actuator_option_desc wave_normalize_opts[] = -{ - { "height", "If positive, the height, in pixels, to which the waveform will be " - "normalized; if negative, hfrac is used", OPT_TYPE_INT, { ival: -1 } }, - { "hfrac", "If positive, the fraction of the horizontal image size to which the " - "waveform will be normalized; if negative, vfrac is used", - OPT_TYPE_FLOAT, { fval: -1 } }, - { "vfrac", "If positive, the fraction of the vertical image size to which the " - "waveform will be normalized", - OPT_TYPE_FLOAT, { fval: .125 } }, - { "channels", "Which sound channel(s) to normalize: negative = channel 1,\n" - "\tpositive = channel 2, 0 = both channels.", - OPT_TYPE_INT, { ival: 0 } }, - { NULL } -}; - -static void -wave_normalize_exec (const struct kanashi_actuator_option *opts, - gpointer data) -{ - int i, j, max=0; - float denom; - - for (j=0; j<2; j++) - { - if ( !(opts[3].val.ival) || (opts[3].val.ival < 0 && j == 0) || - (opts[3].val.ival > 0 && j == 1) ) { - - for (i=0; i<512; i++) - if (abs(kanashi_sound_data->pcm_data[j][i]) > max) - max = abs(kanashi_sound_data->pcm_data[j][i]); - - if (opts[0].val.ival > 0) - denom = max/(opts[0].val.ival<<8); - else if (opts[1].val.fval > 0) - denom = max/(opts[1].val.fval * (kanashi_image_data->width<<8)); - else - denom = max/(opts[2].val.fval * (kanashi_image_data->height<<8)); - - if (denom > 0) - for (i=0; i<512; i++) - kanashi_sound_data->pcm_data[j][i] - /= denom; - } - } -} - -struct kanashi_actuator_desc builtin_wave_normalize = -{ - "wave_normalize", "Normalize Waveform Data", - "Normalizes the waveform data used by the wave_* actuators", - 0, wave_normalize_opts, - NULL, NULL, wave_normalize_exec -}; - -/* **************** wave_smooth **************** */ -struct kanashi_actuator_option_desc wave_smooth_opts[] = -{ - { "channels", "Which sound channel(s) to smooth: negative = channel 1, \n" - "\tpositive = channel 2, 0 = both channels.", - OPT_TYPE_INT, { ival: 0 } }, - {0} -}; - -static void -wave_smooth_exec (const struct kanashi_actuator_option *opts, - gpointer data) -{ - int i, j, k; - gint16 tmp[512]; - - for (j=0; j<2; j++) - { - if ( !(opts[0].val.ival) || (opts[0].val.ival < 0 && j == 0) || - (opts[0].val.ival > 0 && j == 1) ) { - - for (i=4; i<508; i++) - { - k = (kanashi_sound_data->pcm_data[j][i]<<3) - + (kanashi_sound_data->pcm_data[j][i+1]<<2) - + (kanashi_sound_data->pcm_data[j][i-1]<<2) - + (kanashi_sound_data->pcm_data[j][i+2]<<2) - + (kanashi_sound_data->pcm_data[j][i-2]<<2) - + (kanashi_sound_data->pcm_data[j][i+3]<<1) - + (kanashi_sound_data->pcm_data[j][i-3]<<1) - + (kanashi_sound_data->pcm_data[j][i+4]<<1) - + (kanashi_sound_data->pcm_data[j][i-4]<<1); - tmp[i] = k >> 5; - } - memcpy (kanashi_sound_data->pcm_data[j]+4, tmp, sizeof (gint16) * 504); - } - } -} - -struct kanashi_actuator_desc builtin_wave_smooth = -{ - "wave_smooth", "Smooth Waveform Data", - "Smooth out the waveform data used by the wave_* actuators", - 0, wave_smooth_opts, - NULL, NULL, wave_smooth_exec -}; - -/* **************** wave_radial **************** */ -static struct kanashi_actuator_option_desc wave_radial_opts[] = -{ - { "base_radius", " ", - OPT_TYPE_FLOAT, { fval: 0 } }, - {"value", "The colour value to use.", OPT_TYPE_INT, {ival: 255} }, -/* {"lines", "Use lines instead of dots.", OPT_TYPE_BOOLEAN, {bval: TRUE} }, */ - { NULL } -}; - -static void -wave_radial_exec (const struct kanashi_actuator_option *opts, - gpointer data) -{ - int i, x, y; - guchar value = (opts[1].val.ival < 0 || opts[1].val.ival > 255) ? 255 : opts[1].val.ival; - - for(i=0; i<360; i++) - { - x = (kanashi_image_data->width>>1) - + (opts[0].val.fval + (kanashi_sound_data->pcm_data[0][(int)(i*(512.0/360.0))]>>8)) - * cos_val[i]; - y = (kanashi_image_data->height>>1) - + (opts[0].val.fval + (kanashi_sound_data->pcm_data[0][(int)(i*(512.0/360.0))]>>8)) - * sin_val[i]; - - kanashi_image_data->surface[0][PN_IMG_INDEX (CAPHILO(x,kanashi_image_data->width,0), - CAPHILO(y,kanashi_image_data->height,0))] - = value; - } -}; - -struct kanashi_actuator_desc builtin_wave_radial = -{ - "wave_radial", "Radial Waveform", - "Draws a single waveform varying" - " radially from the center of the image", - 0, wave_radial_opts, - NULL, NULL, wave_radial_exec -}; -#endif diff -Nru audacious-plugins-2.4.4/src/kanashi/xform.c audacious-plugins-3.2/src/kanashi/xform.c --- audacious-plugins-2.4.4/src/kanashi/xform.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/kanashi/xform.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,773 +0,0 @@ -/* - * kanashi: iterated javascript-driven visualization framework - * Copyright (c) 2006, 2007 William Pitcock - * Portions copyright (c) 2001 Jamie Gennis - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 2 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -/* FIXME: allow for only using an xform on part of the img? */ -/* FIXME: perhaps combine these into a single vector field - so that only 1 apply_xform needs to be done for as many - of these as someone wants to use */ - -#include - -#include - -#include - -#include "kanashi.h" -#include "kanashi_utils.h" - -struct xform_vector -{ - gint32 offset; /* the offset of the top left pixel */ - guint16 w; /* 4:4:4:4 NE, NW, SE, SW pixel weights - The total should be 16 */ - - /* if offset < 0 then w is the color index to - which the pixel will be set */ -}; - -static void -xfvec (float x, float y, struct xform_vector *v) -{ - float xd, yd; - int weight[4]; - - if (x >= kanashi_image_data->width-1 || y >= kanashi_image_data->height-1 - || x < 0 || y < 0) - { - v->offset = -1; - v->w = 0; - return; - } - - v->offset = PN_IMG_INDEX (floor(x), floor(y)); - - xd = x - floor (x); - yd = y - floor (y); - - weight[3] = xd * yd * 16; - weight[2] = (1-xd) * yd * 16; - weight[1] = xd * (1-yd) * 16; - weight[0] = 16 - weight[3] - weight[2] - weight[1]; /* just in case */ - - v->w = (weight[0]<<12) | (weight[1]<<8) | (weight[2]<<4) | weight[3]; -} - -static void -apply_xform (struct xform_vector *vfield) -{ - int i; - struct xform_vector *v; - register guchar *srcptr; - register guchar *destptr; - register int color; - - if (vfield == NULL) - return; - - for (i=0, v=vfield, destptr=kanashi_image_data->surface[1]; - iwidth*kanashi_image_data->height; - i++, v++, destptr++) - { - /* off the screen */ - if (v->offset < 0) - { - *destptr = (guchar)v->w; - continue; - } - - srcptr = kanashi_image_data->surface[0] + v->offset; - - /* exactly on the pixel */ - if (v->w == 0) - *destptr = *srcptr; - - /* gotta blend the points */ - else - { - color = *srcptr * (v->w>>12); - color += *++srcptr * ((v->w>>8) & 0x0f); - color += *(srcptr+=kanashi_image_data->width) * (v->w & 0x0f); - color += *(--srcptr) * ((v->w>>4) & 0x0f); - color >>= 4; - *destptr = (guchar)color; - } - } -} - -#if 0 -/* **************** xform_spin **************** */ -/* FIXME: Describe these better, how they are backwards */ -/* FIXME: better name? */ -struct kanashi_actuator_option_desc xform_spin_opts[] = -{ - { "angle", "The angle of rotation", OPT_TYPE_FLOAT, { fval: -8.0 } }, - { "r_add", "The number of pixels by which the r coordinate will be " - "increased (before scaling)", OPT_TYPE_FLOAT, { fval: 0.0 } }, - { "r_scale", "The amount by which the r coordinate of each pixel will " - "be scaled", OPT_TYPE_FLOAT, { fval: 1.0 } }, - { NULL } -}; - -struct xform_spin_data -{ - int width, height; - struct xform_vector *vfield; -}; - -static void -xform_spin_init (gpointer *data) -{ - *data = g_new0 (struct xform_spin_data, 1); -} - -static void -xform_spin_cleanup (gpointer data) -{ - struct xform_spin_data *d = (struct xform_spin_data *) data; - - - if (d) - { - if (d->vfield) - g_free (d->vfield); - g_free (d); - } -} - -static void -xform_spin_exec (const struct kanashi_actuator_option *opts, - gpointer data) -{ - struct xform_spin_data *d = (struct xform_spin_data*)data; - float i, j; - - if (d->width != kanashi_image_data->width - || d->height != kanashi_image_data->height) - { - d->width = kanashi_image_data->width; - d->height = kanashi_image_data->height; - - if (d->vfield) - g_free (d->vfield); - - d->vfield = g_malloc0 (sizeof(struct xform_vector) - * d->width * d->height); - - for (j=-(kanashi_image_data->height>>1)+1; j<=kanashi_image_data->height>>1; j++) - for (i=-(kanashi_image_data->width>>1); iwidth>>1; i++) - { - float r, t = 0; - float x, y; - - r = sqrt (i*i + j*j); - if (r) - t = asin (j/r); - if (i < 0) - t = M_PI - t; - - t += opts[0].val.fval * M_PI/180.0; - r += opts[1].val.fval; - r *= opts[2].val.fval; - - x = (r * cos (t)) + (kanashi_image_data->width>>1); - y = (kanashi_image_data->height>>1) - (r * sin (t)); - - xfvec (x, y, &d->vfield - [PN_IMG_INDEX ((kanashi_image_data->width>>1)+(int)rint(i), - ((kanashi_image_data->height>>1)-(int)rint(j)))]); - } - } - - apply_xform (d->vfield); - kanashi_swap_surfaces (); -} - -struct kanashi_actuator_desc builtin_xform_spin = -{ - "xform_spin", "Spin Transform", - "Rotates and radially scales the image", - 0, xform_spin_opts, - xform_spin_init, xform_spin_cleanup, xform_spin_exec -}; - -/* **************** xform_ripple **************** */ -struct kanashi_actuator_option_desc xform_ripple_opts[] = -{ - { "angle", "The angle of rotation", OPT_TYPE_FLOAT, { fval: 0 } }, - { "ripples", "The number of ripples that fit on the screen " - "(horizontally)", OPT_TYPE_FLOAT, { fval: 8 } }, - { "base_speed", "The minimum number of pixels to move each pixel", - OPT_TYPE_FLOAT, { fval: 1 } }, - { "mod_speed", "The maximum number of pixels by which base_speed" - " will be modified", OPT_TYPE_FLOAT, { fval: 1 } }, - { NULL } -}; - -struct xform_ripple_data -{ - int width, height; - struct xform_vector *vfield; -}; - -static void -xform_ripple_init (gpointer *data) -{ - *data = g_new0 (struct xform_ripple_data, 1); -} - -static void -xform_ripple_cleanup (gpointer data) -{ - struct xform_ripple_data *d = (struct xform_ripple_data*) data; - - if (d) - { - if (d->vfield) - g_free (d->vfield); - g_free (d); - } -} - -static void -xform_ripple_exec (const struct kanashi_actuator_option *opts, - gpointer data) -{ - struct xform_ripple_data *d = (struct xform_ripple_data*)data; - float i, j; - - if (d->width != kanashi_image_data->width - || d->height != kanashi_image_data->height) - { - d->width = kanashi_image_data->width; - d->height = kanashi_image_data->height; - - if (d->vfield) - g_free (d->vfield); - - d->vfield = g_malloc (sizeof(struct xform_vector) - * d->width * d->height); - - for (j=-(kanashi_image_data->height>>1)+1; j<=kanashi_image_data->height>>1; j++) - for (i=-(kanashi_image_data->width>>1); iwidth>>1; i++) - { - float r, t = 0; - float x, y; - - r = sqrt (i*i + j*j); - if (r) - t = asin (j/r); - if (i < 0) - t = M_PI - t; - - t += opts[0].val.fval * M_PI/180.0; - - if (r > 4)//(kanashi_image_data->width/(2*opts[1].val.fval))) - r -= opts[2].val.fval + (opts[3].val.fval/2) * - (1 + sin ((r/(kanashi_image_data->width/(2*opts[1].val.fval)))*M_PI)); -/* else if (r > 4) */ -/* r *= r/(kanashi_image_data->width/opts[1].val.fval); */ - else /* don't let it explode */ - r = 1000000; - - - x = (r * cos (t)) + (kanashi_image_data->width>>1); - y = (kanashi_image_data->height>>1) - (r * sin (t)); - - xfvec (x, y, &d->vfield - [PN_IMG_INDEX ((kanashi_image_data->width>>1)+(int)rint(i), - ((kanashi_image_data->height>>1)-(int)rint(j)))]); - } - } - - apply_xform (d->vfield); - kanashi_swap_surfaces (); -} - -struct kanashi_actuator_desc builtin_xform_ripple = -{ - "xform_ripple", "Ripple Transform", "Creates an ripple effect", - 0, xform_ripple_opts, - xform_ripple_init, xform_ripple_cleanup, xform_ripple_exec -}; - -/* **************** xform_bump_spin **************** */ -struct kanashi_actuator_option_desc xform_bump_spin_opts[] = -{ - { "angle", "The angle of rotation", OPT_TYPE_FLOAT, { fval: 0 } }, - { "bumps", "The number of bumps that on the image", - OPT_TYPE_FLOAT, { fval: 8 } }, - { "base_scale", "The base radial scale", - OPT_TYPE_FLOAT, { fval: 0.95 } }, - { "mod_scale", "The maximum amount that should be " - "added to the base_scale to create the 'bump' effect", - OPT_TYPE_FLOAT, { fval: .1 } }, - { NULL } -}; - -struct xform_bump_spin_data -{ - int width, height; - struct xform_vector *vfield; -}; - -static void -xform_bump_spin_init (gpointer *data) -{ - *data = g_new0 (struct xform_bump_spin_data, 1); -} - -static void -xform_bump_spin_cleanup (gpointer data) -{ - struct xform_bump_spin_data *d = (struct xform_bump_spin_data*) data; - - if (d) - { - if (d->vfield) - g_free (d->vfield); - g_free (d); - } -} - -static void -xform_bump_spin_exec (const struct kanashi_actuator_option *opts, - gpointer data) -{ - struct xform_bump_spin_data *d = (struct xform_bump_spin_data*)data; - float i, j; - - if (d->width != kanashi_image_data->width - || d->height != kanashi_image_data->height) - { - d->width = kanashi_image_data->width; - d->height = kanashi_image_data->height; - - if (d->vfield) - g_free (d->vfield); - - d->vfield = g_malloc (sizeof(struct xform_vector) - * d->width * d->height); - - for (j=-(kanashi_image_data->height>>1)+1; j<=kanashi_image_data->height>>1; j++) - for (i=-(kanashi_image_data->width>>1); iwidth>>1; i++) - { - float r, t = 0; - float x, y; - - r = sqrt (i*i + j*j); - if (r) - t = asin (j/r); - if (i < 0) - t = M_PI - t; - - t += opts[0].val.fval * M_PI/180.0; - - r *= opts[2].val.fval + opts[3].val.fval - * (1 + sin (t*opts[1].val.fval)); - - x = (r * cos (t)) + (kanashi_image_data->width>>1); - y = (kanashi_image_data->height>>1) - (r * sin (t)); - - xfvec (x, y, &d->vfield - [PN_IMG_INDEX ((kanashi_image_data->width>>1)+(int)rint(i), - ((kanashi_image_data->height>>1)-(int)rint(j)))]); - } - } - - apply_xform (d->vfield); - kanashi_swap_surfaces (); -} - -struct kanashi_actuator_desc builtin_xform_bump_spin = -{ - "xform_bump_spin", "Bump Transform", - "Rotate the image at a varying speed to create " - "the illusion of bumps", - 0, xform_bump_spin_opts, - xform_bump_spin_init, xform_bump_spin_cleanup, xform_bump_spin_exec -}; - -/* **************** xform_halfrender **************** */ -struct kanashi_actuator_option_desc xform_halfrender_opts[] = -{ - { "direction", "Negative is horizontal, positive is vertical.", - OPT_TYPE_INT, { ival: 1 } }, - { "render_twice", "Render the second image.", - OPT_TYPE_BOOLEAN, { bval: TRUE } }, - { NULL } -}; - -static void -xform_halfrender_exec (const struct kanashi_actuator_option *opts, - gpointer data) -{ - gint x, y; - - if (opts[0].val.ival < 0) - { - for (y = 0; y < kanashi_image_data->height; y += 2) - { - for (x = 0; x < kanashi_image_data->width; x++) - { - kanashi_image_data->surface[1][PN_IMG_INDEX(x, y / 2)] = - kanashi_image_data->surface[0][PN_IMG_INDEX(x, y)]; - if (opts[1].val.bval) - { - kanashi_image_data->surface[1][PN_IMG_INDEX(x, (y / 2) + (kanashi_image_data->height / 2))] = - kanashi_image_data->surface[0][PN_IMG_INDEX(x, y)]; - } - } - } - } - else - { - for (y = 0; y < kanashi_image_data->height; y++) - { - for (x = 0; x < kanashi_image_data->width; x += 2) - { - kanashi_image_data->surface[1][PN_IMG_INDEX(x / 2, y)] = - kanashi_image_data->surface[0][PN_IMG_INDEX(x, y)]; - if (opts[1].val.bval) - { - kanashi_image_data->surface[1][PN_IMG_INDEX((x / 2) + (kanashi_image_data->width / 2), y)] = - kanashi_image_data->surface[0][PN_IMG_INDEX(x, y)]; - } - } - } - } - - kanashi_swap_surfaces (); -} - -struct kanashi_actuator_desc builtin_xform_halfrender = -{ - "xform_halfrender", "Halfrender Transform", - "Divides the surface in half and renders it twice.", - 0, xform_halfrender_opts, - NULL, NULL, xform_halfrender_exec -}; - -/* **************** xform_movement **************** */ -struct kanashi_actuator_option_desc xform_movement_opts[] = -{ - { "formula", "The formula to evaluate.", - OPT_TYPE_STRING, { sval: "r = r * cos(r); d = sin(d);" } }, - { "polar", "Whether the coordinates are polar or not.", - OPT_TYPE_BOOLEAN, { bval: TRUE } }, - { NULL } -}; - -typedef struct { - int width, height; /* Previous width and height. */ - struct xform_vector *vfield; -} PnMovementData; - -static void -xform_movement_init (gpointer *data) -{ - *data = g_new0(PnMovementData, 1); -} - -static void -xform_movement_cleanup (gpointer data) -{ - PnMovementData *d = (PnMovementData *) data; - - if (d) - { - if (d->vfield) - g_free (d->vfield); - g_free (d); - } -} - -inline void -xform_trans_polar (struct xform_vector *vfield, gint x, gint y, - expression_t *expr, symbol_dict_t *dict) -{ - gdouble *rf, *df; - gdouble xf, yf; - gint xn, yn; - - rf = dict_variable(dict, "r"); - df = dict_variable(dict, "d"); - - /* Points (xf, yf) must be in a (-1..1) square. */ - xf = 2.0 * x / (kanashi_image_data->width - 1) - 1.0; - yf = 2.0 * y / (kanashi_image_data->height - 1) - 1.0; - - /* Now, convert to polar coordinates r and d. */ - *rf = hypot(xf, yf); - *df = atan2(yf, xf); - - /* Run the script. */ - expr_execute(expr, dict); - - /* Back to (-1..1) square. */ - xf = (*rf) * cos ((*df)); - yf = (*rf) * sin ((*df)); - - /* Convert back to physical coordinates. */ - xn = (int)(((xf + 1.0) * (kanashi_image_data->width - 1) / 2) + 0.5); - yn = (int)(((yf + 1.0) * (kanashi_image_data->height - 1) / 2) + 0.5); - - if (xn < 0 || xn >= kanashi_image_data->width || yn < 0 || yn >= kanashi_image_data->height) - { - xn = x; yn = y; - } - - xfvec (xn, yn, &vfield[PN_IMG_INDEX (x, y)]); -} - -inline void -xform_trans_literal (struct xform_vector *vfield, gint x, gint y, - expression_t *expr, symbol_dict_t *dict) -{ - gint xn, yn; - gdouble *xf = dict_variable(dict, "x"); - gdouble *yf = dict_variable(dict, "y"); - - /* Points (xf, yf) must be in a (-1..1) square. */ - *xf = 2.0 * x / (kanashi_image_data->width - 1) - 1.0; - *yf = 2.0 * y / (kanashi_image_data->height - 1) - 1.0; - - /* Run the script. */ - expr_execute(expr, dict); - - /* Convert back to physical coordinates. */ - xn = (int)(((*xf + 1.0) * (kanashi_image_data->width - 1) / 2) + 0.5); - yn = (int)(((*yf + 1.0) * (kanashi_image_data->height - 1) / 2) + 0.5); - - if (xn < 0 || xn >= kanashi_image_data->width || yn < 0 || yn >= kanashi_image_data->height) - { - xn = x; yn = y; - } - - xfvec (xn, yn, &vfield[PN_IMG_INDEX (x, y)]); -} - -static void -xform_movement_exec (const struct kanashi_actuator_option *opts, - gpointer odata) -{ - PnMovementData *d = (PnMovementData *) odata; - void (*transform_func)(struct xform_vector *, gint, gint, expression_t *, symbol_dict_t *) = - opts[1].val.bval == TRUE ? xform_trans_polar : xform_trans_literal; - - if (d->width != kanashi_image_data->width - || d->height != kanashi_image_data->height) - { - gint i, j; - gdouble *rf, *df; - expression_t *expr; - symbol_dict_t *dict; - - d->width = kanashi_image_data->width; - d->height = kanashi_image_data->height; - - if (d->vfield) - { - g_free (d->vfield); - d->vfield = NULL; - } - - if (opts[0].val.sval == NULL) - return; - - dict = dict_new(); - expr = expr_compile_string(opts[0].val.sval, dict); - if (!expr) - { - dict_free(dict); - return; - } - - rf = dict_variable(dict, "r"); - df = dict_variable(dict, "d"); - - d->vfield = g_malloc (sizeof(struct xform_vector) - * d->width * d->height); - - for (j = 0; j < kanashi_image_data->height; j++) - for (i = 0; i < kanashi_image_data->width; i++) - { - transform_func(d->vfield, i, j, expr, dict); - } - } - - apply_xform (d->vfield); - kanashi_swap_surfaces (); -} - -struct kanashi_actuator_desc builtin_xform_movement = -{ - "xform_movement", "Movement Transform", - "A customizable blitter.", - 0, xform_movement_opts, - xform_movement_init, xform_movement_cleanup, xform_movement_exec -}; - -/* **************** xform_dynmovement **************** */ -/* FIXME: really slow */ -struct kanashi_actuator_option_desc xform_dynmovement_opts[] = -{ - { "init_script", "The formula to evaluate on init.", - OPT_TYPE_STRING, { sval: "" } }, - { "beat_script", "The formula to evaluate on each beat.", - OPT_TYPE_STRING, { sval: "" } }, - { "frame_script", "The formula to evaluate on each frame.", - OPT_TYPE_STRING, { sval: "" } }, - { "point_script", "The formula to evaluate.", - OPT_TYPE_STRING, { sval: "d = 0.15;" } }, - { "polar", "Whether or not the coordinates to use are polar.", - OPT_TYPE_BOOLEAN, { bval: TRUE } }, - { NULL } -}; - -typedef struct { - int width, height; /* Previous width and height. */ - expression_t *expr_init; - expression_t *expr_frame; - expression_t *expr_beat; - expression_t *expr_point; - symbol_dict_t *dict; - struct xform_vector *vfield; -} PnDynMovementData; - -static void -xform_dynmovement_init (gpointer *data) -{ - *data = g_new0(PnDynMovementData, 1); -} - -static void -xform_dynmovement_cleanup (gpointer data) -{ - PnDynMovementData *d = (PnDynMovementData *) data; - - if (d) - { - if (d->expr_init) - expr_free (d->expr_init); - if (d->expr_beat) - expr_free (d->expr_beat); - if (d->expr_frame) - expr_free (d->expr_frame); - if (d->expr_point) - expr_free (d->expr_point); - if (d->dict) - dict_free (d->dict); - if (d->vfield) - g_free (d->vfield); - g_free (d); - } -} - -static void -xform_dynmovement_exec (const struct kanashi_actuator_option *opts, - gpointer odata) -{ - PnDynMovementData *d = (PnDynMovementData *) odata; - gint i, j; - gdouble *rf, *df; - void (*transform_func)(struct xform_vector *, gint, gint, expression_t *, symbol_dict_t *) = - opts[4].val.bval == TRUE ? xform_trans_polar : xform_trans_literal; - gboolean make_table = FALSE; - - if (d->width != kanashi_image_data->width - || d->height != kanashi_image_data->height) - { - d->width = kanashi_image_data->width; - d->height = kanashi_image_data->height; - - if (d->vfield) - { - g_free (d->vfield); - d->vfield = NULL; - } - - if (opts[3].val.sval == NULL) - return; - - if (!d->dict) - d->dict = dict_new(); - else - { - dict_free(d->dict); - d->dict = dict_new(); - } - - if (d->expr_init) - { - expr_free(d->expr_init); - d->expr_init = NULL; - } - - /* initialize */ - d->expr_init = expr_compile_string(opts[0].val.sval, d->dict); - - if (d->expr_init != NULL) - { - expr_execute(d->expr_init, d->dict); - } - - d->expr_beat = expr_compile_string(opts[1].val.sval, d->dict); - d->expr_frame = expr_compile_string(opts[2].val.sval, d->dict); - d->expr_point = expr_compile_string(opts[3].val.sval, d->dict); - - d->vfield = g_malloc (sizeof(struct xform_vector) - * d->width * d->height); - - make_table = TRUE; - } - - rf = dict_variable(d->dict, "r"); - df = dict_variable(d->dict, "d"); - - if (*opts[2].val.sval != '\0' || kanashi_new_beat) - make_table = TRUE; - - /* run the on-frame script. */ - if (make_table == TRUE) - { - if (d->expr_beat != NULL) - expr_execute(d->expr_beat, d->dict); - - if (d->expr_frame != NULL) - expr_execute(d->expr_frame, d->dict); - - for (j = 0; j < kanashi_image_data->height; j++) - for (i = 0; i < kanashi_image_data->width; i++) - { - transform_func(d->vfield, i, j, d->expr_point, d->dict); - } - } - - apply_xform (d->vfield); - kanashi_swap_surfaces (); -} - -struct kanashi_actuator_desc builtin_xform_dynmovement = -{ - "xform_dynmovement", "Dynamic Movement Transform", - "A customizable blitter.", - 0, xform_dynmovement_opts, - xform_dynmovement_init, xform_dynmovement_cleanup, xform_dynmovement_exec -}; -#endif diff -Nru audacious-plugins-2.4.4/src/ladspa/effect.c audacious-plugins-3.2/src/ladspa/effect.c --- audacious-plugins-2.4.4/src/ladspa/effect.c 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/ladspa/effect.c 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,262 @@ +/* + * LADSPA Host for Audacious + * Copyright 2011 John Lindgren + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions, and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions, and the following disclaimer in the documentation + * provided with the distribution. + * + * This software is provided "as is" and without any warranty, express or + * implied. In no event shall the authors be liable for any damages arising from + * the use of this software. + */ + +#include +#include + +#include "ladspa.h" +#include "plugin.h" + +static int ladspa_channels, ladspa_rate; + +static void start_plugin (LoadedPlugin * loaded) +{ + if (loaded->active) + return; + + loaded->active = 1; + + PluginData * plugin = loaded->plugin; + const LADSPA_Descriptor * desc = plugin->desc; + + int ports = plugin->in_ports->len; + + if (ports == 0 || ports != plugin->out_ports->len) + { + fprintf (stderr, "Plugin has unusable port configuration: %s\n", desc->Name); + return; + } + + if (ladspa_channels % ports != 0) + { + fprintf (stderr, "Plugin cannot be used with %d channels: %s\n", + ladspa_channels, desc->Name); + return; + } + + int instances = ladspa_channels / ports; + + loaded->instances = index_new (); + loaded->in_bufs = g_malloc (sizeof (float *) * ladspa_channels); + loaded->out_bufs = g_malloc (sizeof (float *) * ladspa_channels); + + for (int i = 0; i < instances; i ++) + { + LADSPA_Handle handle = desc->instantiate (desc, ladspa_rate); + index_append (loaded->instances, handle); + + int controls = index_count (plugin->controls); + for (int c = 0; c < controls; c ++) + { + ControlData * control = index_get (plugin->controls, c); + desc->connect_port (handle, control->port, & loaded->values[c]); + } + + for (int p = 0; p < ports; p ++) + { + int channel = ports * i + p; + + float * in = g_malloc (sizeof (float) * LADSPA_BUFLEN); + loaded->in_bufs[channel] = in; + int in_port = g_array_index (plugin->in_ports, int, p); + desc->connect_port (handle, in_port, in); + + float * out = g_malloc (sizeof (float) * LADSPA_BUFLEN); + loaded->out_bufs[channel] = out; + int out_port = g_array_index (plugin->out_ports, int, p); + desc->connect_port (handle, out_port, out); + } + + if (desc->activate) + desc->activate (handle); + } +} + +static void run_plugin (LoadedPlugin * loaded, float * data, int samples) +{ + if (! loaded->instances) + return; + + PluginData * plugin = loaded->plugin; + const LADSPA_Descriptor * desc = plugin->desc; + + int ports = plugin->in_ports->len; + int instances = index_count (loaded->instances); + assert (ports * instances == ladspa_channels); + + while (samples / ladspa_channels > 0) + { + int frames = MIN (samples / ladspa_channels, LADSPA_BUFLEN); + + for (int i = 0; i < instances; i ++) + { + LADSPA_Handle * handle = index_get (loaded->instances, i); + + for (int p = 0; p < ports; p ++) + { + int channel = ports * i + p; + float * get = data + channel; + float * in = loaded->in_bufs[channel]; + float * in_end = in + frames; + + while (in < in_end) + { + * in ++ = * get; + get += ladspa_channels; + } + } + + desc->run (handle, frames); + + for (int p = 0; p < ports; p ++) + { + int channel = ports * i + p; + float * set = data + channel; + float * out = loaded->out_bufs[channel]; + float * out_end = out + frames; + + while (out < out_end) + { + * set = * out ++; + set += ladspa_channels; + } + } + } + + data += ladspa_channels * frames; + samples -= ladspa_channels * frames; + } +} + +static void flush_plugin (LoadedPlugin * loaded) +{ + if (! loaded->instances) + return; + + PluginData * plugin = loaded->plugin; + const LADSPA_Descriptor * desc = plugin->desc; + + int instances = index_count (loaded->instances); + for (int i = 0; i < instances; i ++) + { + LADSPA_Handle * handle = index_get (loaded->instances, i); + + if (desc->deactivate) + desc->deactivate (handle); + if (desc->activate) + desc->activate (handle); + } +} + +void shutdown_plugin_locked (LoadedPlugin * loaded) +{ + loaded->active = 0; + + if (! loaded->instances) + return; + + PluginData * plugin = loaded->plugin; + const LADSPA_Descriptor * desc = plugin->desc; + + int instances = index_count (loaded->instances); + for (int i = 0; i < instances; i ++) + { + LADSPA_Handle * handle = index_get (loaded->instances, i); + + if (desc->deactivate) + desc->deactivate (handle); + + desc->cleanup (handle); + } + + for (int channel = 0; channel < ladspa_channels; channel ++) + { + g_free (loaded->in_bufs[channel]); + g_free (loaded->out_bufs[channel]); + } + + index_free (loaded->instances); + loaded->instances = NULL; + g_free (loaded->in_bufs); + loaded->in_bufs = NULL; + g_free (loaded->out_bufs); + loaded->out_bufs = NULL; +} + +void ladspa_start (int * channels, int * rate) +{ + pthread_mutex_lock (& mutex); + + int count = index_count (loadeds); + for (int i = 0; i < count; i ++) + { + LoadedPlugin * loaded = index_get (loadeds, i); + shutdown_plugin_locked (loaded); + } + + ladspa_channels = * channels; + ladspa_rate = * rate; + + pthread_mutex_unlock (& mutex); +} + +void ladspa_process (float * * data, int * samples) +{ + pthread_mutex_lock (& mutex); + + int count = index_count (loadeds); + for (int i = 0; i < count; i ++) + { + LoadedPlugin * loaded = index_get (loadeds, i); + start_plugin (loaded); + run_plugin (loaded, * data, * samples); + } + + pthread_mutex_unlock (& mutex); +} + +void ladspa_flush (void) +{ + pthread_mutex_lock (& mutex); + + int count = index_count (loadeds); + for (int i = 0; i < count; i ++) + { + LoadedPlugin * loaded = index_get (loadeds, i); + flush_plugin (loaded); + } + + pthread_mutex_unlock (& mutex); +} + +void ladspa_finish (float * * data, int * samples) +{ + pthread_mutex_lock (& mutex); + + int count = index_count (loadeds); + for (int i = 0; i < count; i ++) + { + LoadedPlugin * loaded = index_get (loadeds, i); + start_plugin (loaded); + run_plugin (loaded, * data, * samples); + shutdown_plugin_locked (loaded); + } + + pthread_mutex_unlock (& mutex); +} diff -Nru audacious-plugins-2.4.4/src/ladspa/ladspa.c audacious-plugins-3.2/src/ladspa/ladspa.c --- audacious-plugins-2.4.4/src/ladspa/ladspa.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/ladspa/ladspa.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1115 +0,0 @@ -/* xmms_ladspa - use LADSPA plugins from XMMS - Copyright (C) 2002,2003 Nick Lamb - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -/* BMP-ladspa port by Giacomo Lozito */ -/* Audacious 2.4 port by John Lindgren , 2010 */ - -#include "config.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "ladspa.h" - -#ifndef PATH_MAX -#define PATH_MAX 4096 -#endif - -#define PLUGIN_NAME "LADSPA host" - -#define MAX_SAMPLES 8192 -#define MAX_KNOBS 64 - -typedef struct -{ - char *name; - char *filename; - long int id; - long int unique_id; - gboolean stereo; -} ladspa_plugin; - -typedef struct -{ - void *library; - char *filename; - gboolean stereo; - gboolean restored; - const LADSPA_Descriptor *descriptor; - LADSPA_Handle *handle; /* left or mono */ - LADSPA_Handle *handle2; /* right stereo */ - GtkWidget *window; - guint timeout; - GtkAdjustment *adjustments[MAX_KNOBS]; - LADSPA_Data knobs[MAX_KNOBS]; -} plugin_instance; - -static void start(void); -static void stop(void); -static void configure(void); - -static void restore(void); -static plugin_instance *add_plugin(ladspa_plugin * plugin); -static void find_all_plugins(void); -static void find_plugins(char *path_entry); -static ladspa_plugin *get_plugin_by_id(const gchar * basename, long id); -static plugin_instance *load(char *filename, long int num); -static void reboot_plugins(void); -static void boot_plugin(plugin_instance * instance); -static void port_assign(plugin_instance * instance); -static void ladspa_shutdown(plugin_instance * instance); -static void unload(plugin_instance * instance); - -static GtkWidget *make_plugin_clist(void); -static void make_run_clist(void); -static void sort_column(GtkCList * clist, gint column, gpointer user_data); -static void select_plugin(GtkCList * clist, gint row, gint column, GdkEventButton * event, gpointer user_data); -static void unselect_plugin(GtkCList * clist, gint row, gint column, GdkEventButton * event, gpointer user_data); -static void add_plugin_clicked(GtkButton * button, gpointer user_data); -static void remove_plugin_clicked(GtkButton * button, gpointer user_data); -static void configure_plugin_clicked(GtkButton * button, gpointer user_data); - -static void draw_plugin(plugin_instance * instance); - -static LADSPA_Data left[MAX_SAMPLES], right[MAX_SAMPLES], trash[MAX_SAMPLES]; - -G_LOCK_DEFINE_STATIC(running_plugins); - -static GSList *plugin_list, *running_plugins; - -static ladspa_plugin *selected_plugin; -static plugin_instance *selected_instance; - -static struct -{ - gint srate; - gint nch; - gboolean ignore; - gboolean running; - gboolean initialised; -} state = {0, 0, FALSE, FALSE, FALSE}; - -static GtkWidget *config_window = NULL, *run_clist = NULL; - -static void start(void) -{ - if (state.initialised == FALSE) - { - restore(); - } - else if (state.srate > 0) - { - reboot_plugins(); - } - state.running = TRUE; -} - -static void restore(void) -{ - mcs_handle_t *db; - gint k, plugins = 0; - - db = aud_cfg_db_open(); - - aud_cfg_db_get_int(db, "ladspa", "plugins", &plugins); - for (k = 0; k < plugins; ++k) - { - gint id; - int port, ports = 0; - plugin_instance *instance; - gchar *bn, *section, *file; - - section = g_strdup_printf("ladspa_plugin%d", k); - - aud_cfg_db_get_int(db, section, "id", &id); - aud_cfg_db_get_int(db, section, "ports", &ports); - if (!aud_cfg_db_get_string(db, section, "file", &file)) { - g_free(section); - continue; - } - bn = g_path_get_basename(file); - g_free(file); - instance = add_plugin(get_plugin_by_id(bn,id)); - g_free(bn); - if (!instance) - continue; /* couldn't load this plugin */ - - for (port = 0; port < ports && port < MAX_KNOBS; ++port) - { - gchar *key = g_strdup_printf("port%d", port); - aud_cfg_db_get_float(db, section, key, &(instance->knobs[port])); - } - instance->restored = TRUE; - g_free(section); - } - - aud_cfg_db_close(db); - - state.initialised = TRUE; -} - -static ladspa_plugin *get_plugin_by_id(const gchar * basename, long id) -{ - GSList *list; - ladspa_plugin *plugin; - - if (plugin_list == NULL) - { - find_all_plugins(); - } - - for (list = plugin_list; list != NULL; list = g_slist_next(list)) - { - gchar *bn; - plugin = (ladspa_plugin *) list->data; - - bn = g_path_get_basename(plugin->filename); - if (plugin->unique_id == id && !g_ascii_strcasecmp(basename, bn)) - { - g_free(bn); - return plugin; - } - - g_free(bn); - } - - return NULL; -} - -static void find_all_plugins(void) -{ - char *ladspa_path, *directory; - - plugin_list = NULL; /* empty list */ - ladspa_path = getenv("LADSPA_PATH"); - if (ladspa_path == NULL) - { - /* Fallback, look in obvious places */ - find_plugins("/usr/lib/ladspa"); - find_plugins("/usr/local/lib/ladspa"); - } - else - { - ladspa_path = g_strdup(ladspa_path); - - directory = strtok(ladspa_path, ":"); - while (directory != NULL) - { - find_plugins(directory); - directory = strtok(NULL, ":"); - } - g_free(ladspa_path); - } -} - -static plugin_instance *load(char *filename, long int num) -{ - LADSPA_Descriptor_Function descriptor_fn; - plugin_instance *instance; - - instance = g_new0(plugin_instance, 1); - - instance->filename = filename; - instance->library = dlopen(filename, RTLD_NOW); - if (instance->library == NULL) - { - g_free(instance); - return NULL; - } - descriptor_fn = dlsym(instance->library, "ladspa_descriptor"); - if (descriptor_fn == NULL) - { - g_free(instance); - return NULL; - } - instance->descriptor = descriptor_fn(num); - - return instance; -} - -static void unload(plugin_instance * instance) -{ - if (instance->window) - { - gtk_widget_destroy(instance->window); - instance->window = NULL; - } - - if (instance->timeout) - { - gtk_timeout_remove(instance->timeout); - } - - ladspa_shutdown(instance); - - if (instance->library) - { - dlclose(instance->library); - } -} - -static void stop(void) -{ - GSList *list; - mcs_handle_t *db; - gint plugins = 0; - - if (state.running == FALSE) - { - return; - } - state.running = FALSE; - db = aud_cfg_db_open(); - G_LOCK(running_plugins); - for (list = running_plugins; list != NULL; list = g_slist_next(list)) - { - plugin_instance *instance = (plugin_instance *) list->data; - gchar *bn; - gchar *section; - int port, ports = 0; - - bn = g_path_get_basename(instance->filename); - section = g_strdup_printf("ladspa_plugin%d", plugins); - g_free(bn); - - aud_cfg_db_set_int(db, section, "id", instance->descriptor->UniqueID); - aud_cfg_db_set_string(db, section, "file", instance->filename); - aud_cfg_db_set_string(db, section, "label", (gchar *) instance->descriptor->Label); - - ports = instance->descriptor->PortCount; - if (ports > MAX_KNOBS) - ports = MAX_KNOBS; - for (port = 0; port < ports; ++port) - { - gchar *key = g_strdup_printf("port%d", port); - aud_cfg_db_set_float(db, section, key, instance->knobs[port]); - g_free(key); - } - aud_cfg_db_set_int(db, section, "ports", ports); - g_free(section); - ladspa_shutdown(instance); - plugins++; - } - G_UNLOCK(running_plugins); - - aud_cfg_db_set_int(db, "ladspa", "plugins", plugins); - aud_cfg_db_close(db); -} - -static void ladspa_shutdown(plugin_instance * instance) -{ - const LADSPA_Descriptor *descriptor = instance->descriptor; - - if (instance->handle) - { - if (descriptor->deactivate) - { - descriptor->deactivate(instance->handle); - } - descriptor->cleanup(instance->handle); - instance->handle = NULL; - } - if (instance->handle2) - { - if (descriptor->deactivate) - { - descriptor->deactivate(instance->handle2); - } - descriptor->cleanup(instance->handle2); - instance->handle2 = NULL; - } -} - -static void boot_plugin(plugin_instance * instance) -{ - const LADSPA_Descriptor *descriptor = instance->descriptor; - - ladspa_shutdown(instance); - instance->handle = descriptor->instantiate(descriptor, state.srate); - if (state.nch > 1 && !instance->stereo) - { - /* Create an additional instance */ - instance->handle2 = descriptor->instantiate(descriptor, state.srate); - } - - port_assign(instance); - - if (descriptor->activate) - { - descriptor->activate(instance->handle); - if (instance->handle2) - { - descriptor->activate(instance->handle2); - } - } -} - -static void reboot_plugins(void) -{ - GSList *list; - - G_LOCK(running_plugins); - for (list = running_plugins; list != NULL; list = g_slist_next(list)) - { - boot_plugin((plugin_instance *) list->data); - } - G_UNLOCK(running_plugins); -} - -static void ladspa_process (gfloat * * datap, gint * samplesp) -{ - gfloat * const data = * datap; - const gint samples = * samplesp; - GSList *list; - plugin_instance *instance; - int k; - - if (running_plugins == NULL || state.running == FALSE || state.ignore || - samples > MAX_SAMPLES) - return; - - if (state.nch == 1) - { - for (k = 0; k < samples; k ++) - left[k] = data[k]; - - G_LOCK(running_plugins); - for (list = running_plugins; list != NULL; list = g_slist_next(list)) - { - instance = (plugin_instance *) list->data; - if (instance->handle) - instance->descriptor->run(instance->handle, samples); - } - G_UNLOCK(running_plugins); - - for (k = 0; k < samples; k ++) - data[k] = left[k]; - } - else - { - for (k = 0; k < samples; k += 2) - left[k >> 1] = data[k]; - for (k = 1; k < samples; k += 2) - right[k >> 1] = data[k]; - - G_LOCK(running_plugins); - for (list = running_plugins; list != NULL; list = g_slist_next(list)) - { - instance = (plugin_instance *) list->data; - if (instance->handle) - instance->descriptor->run(instance->handle, samples / 2); - if (instance->handle2) - instance->descriptor->run(instance->handle2, samples / 2); - } - G_UNLOCK(running_plugins); - - for (k = 0; k < samples; k += 2) - data[k] = left[k >> 1]; - for (k = 1; k < samples; k += 2) - data[k] = right[k >> 1]; - } -} - -static void port_assign(plugin_instance * instance) -{ - unsigned long port; - unsigned long inputs = 0, outputs = 0; - const LADSPA_Descriptor *plugin = instance->descriptor; - - for (port = 0; port < plugin->PortCount; ++port) - { - - if (LADSPA_IS_PORT_CONTROL(plugin->PortDescriptors[port])) - { - if (port < MAX_KNOBS) - { - plugin->connect_port(instance->handle, port, &(instance->knobs[port])); - if (instance->handle2) - plugin->connect_port(instance->handle2, port, &(instance->knobs[port])); - } - else - { - plugin->connect_port(instance->handle, port, trash); - if (instance->handle2) - plugin->connect_port(instance->handle2, port, trash); - } - - } - else if (LADSPA_IS_PORT_AUDIO(plugin->PortDescriptors[port])) - { - - if (LADSPA_IS_PORT_INPUT(plugin->PortDescriptors[port])) - { - if (inputs == 0) - { - plugin->connect_port(instance->handle, port, left); - if (instance->handle2) - plugin->connect_port(instance->handle2, port, right); - } - else if (inputs == 1 && instance->stereo) - { - plugin->connect_port(instance->handle, port, right); - } - else - { - plugin->connect_port(instance->handle, port, trash); - if (instance->handle2) - plugin->connect_port(instance->handle2, port, trash); - } - inputs++; - - } - else if (LADSPA_IS_PORT_OUTPUT(plugin->PortDescriptors[port])) - { - if (outputs == 0) - { - plugin->connect_port(instance->handle, port, left); - if (instance->handle2) - plugin->connect_port(instance->handle2, port, right); - } - else if (outputs == 1 && instance->stereo) - { - plugin->connect_port(instance->handle, port, right); - } - else - { - plugin->connect_port(instance->handle, port, trash); - if (instance->handle2) - plugin->connect_port(instance->handle2, port, trash); - } - outputs++; - - } - } - } - -} - -static void find_plugins(char *path_entry) -{ - ladspa_plugin *plugin; - void *library = NULL; - char lib_name[PATH_MAX]; - LADSPA_Descriptor_Function descriptor_fn; - const LADSPA_Descriptor *descriptor; - DIR *dir; - struct dirent *dirent; - long int k; - unsigned long int port, input, output; - - dir = opendir(path_entry); - if (dir == NULL) - return; - - while ((dirent = readdir(dir))) - { - snprintf(lib_name, PATH_MAX, "%s/%s", path_entry, dirent->d_name); - library = dlopen(lib_name, RTLD_LAZY); - if (library == NULL) - { - continue; - } - descriptor_fn = dlsym(library, "ladspa_descriptor"); - if (descriptor_fn == NULL) - { - dlclose(library); - continue; - } - - for (k = 0;; ++k) - { - descriptor = descriptor_fn(k); - if (descriptor == NULL) - { - break; - } - plugin = g_new(ladspa_plugin, 1); - plugin->name = g_strdup(descriptor->Name); - plugin->filename = g_strdup(lib_name); - plugin->id = k; - plugin->unique_id = descriptor->UniqueID; - for (input = output = port = 0; port < descriptor->PortCount; ++port) - { - if (LADSPA_IS_PORT_AUDIO(descriptor->PortDescriptors[port])) - { - if (LADSPA_IS_PORT_INPUT(descriptor->PortDescriptors[port])) - input++; - if (LADSPA_IS_PORT_OUTPUT(descriptor->PortDescriptors[port])) - output++; - } - else if (LADSPA_IS_PORT_CONTROL(descriptor->PortDescriptors[port])) - { - } - } - if (input >= 2 && output >= 2) - { - plugin->stereo = TRUE; - } - else - { - plugin->stereo = FALSE; - } - plugin_list = g_slist_prepend(plugin_list, plugin); - } - dlclose(library); - } - - closedir(dir); - return; -} - -static void value_changed(GtkAdjustment * adjustment, gpointer * user_data) -{ - LADSPA_Data *data = (LADSPA_Data *) user_data; - - G_LOCK(running_plugins); - *data = (LADSPA_Data) adjustment->value; - G_UNLOCK(running_plugins); -} - -static void toggled(GtkToggleButton * togglebutton, gpointer * user_data) -{ - LADSPA_Data *data = (LADSPA_Data *) user_data; - - if (gtk_toggle_button_get_active(togglebutton)) - { - G_LOCK(running_plugins); - *data = (LADSPA_Data) 1.0f; - G_UNLOCK(running_plugins); - } - else - { - G_LOCK(running_plugins); - *data = (LADSPA_Data) - 1.0f; - G_UNLOCK(running_plugins); - } -} - -static int update_instance(gpointer data) -{ - plugin_instance *instance = (plugin_instance *) data; - unsigned long k; - - G_LOCK(running_plugins); - for (k = 0; k < MAX_KNOBS && k < instance->descriptor->PortCount; ++k) - { - if (LADSPA_IS_PORT_OUTPUT(instance->descriptor->PortDescriptors[k]) && LADSPA_IS_PORT_CONTROL(instance->descriptor->PortDescriptors[k])) - { - instance->adjustments[k]->value = instance->knobs[k]; - gtk_adjustment_value_changed(instance->adjustments[k]); - } - } - G_UNLOCK(running_plugins); - return TRUE; -} - -static void draw_plugin(plugin_instance * instance) -{ - const LADSPA_Descriptor *plugin = instance->descriptor; - const LADSPA_PortRangeHint *hints = plugin->PortRangeHints; - LADSPA_Data fact, min, max, step, start; - int dp; - unsigned long k; - gboolean no_ui = TRUE; - GtkWidget *widget, *vbox, *hbox; - GtkObject *adjustment; - - if (instance->window != NULL) - { - /* Just show window */ - gtk_widget_show(instance->window); - return; - } - - instance->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_type_hint(GTK_WINDOW(instance->window), GDK_WINDOW_TYPE_HINT_DIALOG); - gtk_window_set_title(GTK_WINDOW(instance->window), plugin->Name); - - vbox = gtk_vbox_new(FALSE, 3); - - for (k = 0; k < MAX_KNOBS && k < plugin->PortCount; ++k) - { - if (!LADSPA_IS_PORT_CONTROL(plugin->PortDescriptors[k])) - continue; - no_ui = FALSE; - hbox = gtk_hbox_new(FALSE, 3); - widget = gtk_label_new(plugin->PortNames[k]); - gtk_container_add(GTK_CONTAINER(hbox), widget); - - if (LADSPA_IS_HINT_TOGGLED(hints[k].HintDescriptor)) - { - widget = gtk_toggle_button_new_with_label("Press"); - g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(toggled), &(instance->knobs[k])); - gtk_container_add(GTK_CONTAINER(hbox), widget); - gtk_container_add(GTK_CONTAINER(vbox), hbox); - continue; - } - - if (LADSPA_IS_HINT_SAMPLE_RATE(hints[k].HintDescriptor)) - { - fact = state.srate ? state.srate : 44100.0f; - } - else - { - fact = 1.0f; - } - - if (LADSPA_IS_HINT_BOUNDED_BELOW(hints[k].HintDescriptor)) - { - min = hints[k].LowerBound * fact; - } - else - { - min = -10000.0f; - } - - if (LADSPA_IS_HINT_BOUNDED_ABOVE(hints[k].HintDescriptor)) - { - max = hints[k].UpperBound * fact; - } - else - { - max = 10000.0f; - } - - /* infinity */ - if (10000.0f <= max - min) - { - dp = 1; - step = 5.0f; - - /* 100.0 ... lots */ - } - else if (100.0f < max - min) - { - dp = 0; - step = 5.0f; - - /* 10.0 ... 100.0 */ - } - else if (10.0f < max - min) - { - dp = 1; - step = 0.5f; - - /* 1.0 ... 10.0 */ - } - else if (1.0f < max - min) - { - dp = 2; - step = 0.05f; - - /* 0.0 ... 1.0 */ - } - else - { - dp = 3; - step = 0.005f; - } - - if (LADSPA_IS_HINT_INTEGER(hints[k].HintDescriptor)) - { - dp = 0; - if (step < 1.0f) - step = 1.0f; - } - - if (LADSPA_IS_HINT_DEFAULT_MINIMUM(hints[k].HintDescriptor)) - { - start = min; - } - else if (LADSPA_IS_HINT_DEFAULT_LOW(hints[k].HintDescriptor)) - { - start = min * 0.75f + max * 0.25f; - } - else if (LADSPA_IS_HINT_DEFAULT_MIDDLE(hints[k].HintDescriptor)) - { - start = min * 0.5f + max * 0.5f; - } - else if (LADSPA_IS_HINT_DEFAULT_HIGH(hints[k].HintDescriptor)) - { - start = min * 0.25f + max * 0.75f; - } - else if (LADSPA_IS_HINT_DEFAULT_MAXIMUM(hints[k].HintDescriptor)) - { - start = max; - } - else if (LADSPA_IS_HINT_DEFAULT_0(hints[k].HintDescriptor)) - { - start = 0.0f; - } - else if (LADSPA_IS_HINT_DEFAULT_1(hints[k].HintDescriptor)) - { - start = 1.0f; - } - else if (LADSPA_IS_HINT_DEFAULT_100(hints[k].HintDescriptor)) - { - start = 100.0f; - } - else if (LADSPA_IS_HINT_DEFAULT_440(hints[k].HintDescriptor)) - { - start = 440.0f; - } - else if (LADSPA_IS_HINT_INTEGER(hints[k].HintDescriptor)) - { - start = min; - } - else if (max >= 0.0f && min <= 0.0f) - { - start = 0.0f; - } - else - { - start = min * 0.5f + max * 0.5f; - } - - if (instance->restored) - { - start = instance->knobs[k]; - } - else - { - instance->knobs[k] = start; - } - adjustment = gtk_adjustment_new(start, min, max, step, step * 10.0, 0.0); - instance->adjustments[k] = GTK_ADJUSTMENT(adjustment); - widget = gtk_spin_button_new(GTK_ADJUSTMENT(adjustment), step, dp); - if (LADSPA_IS_PORT_OUTPUT(plugin->PortDescriptors[k])) - { - gtk_widget_set_sensitive(widget, FALSE); - } - else - { - g_signal_connect(adjustment, "value-changed", G_CALLBACK(value_changed), &(instance->knobs[k])); - } - gtk_container_add(GTK_CONTAINER(hbox), widget); - widget = gtk_hscale_new(GTK_ADJUSTMENT(adjustment)); - gtk_scale_set_digits(GTK_SCALE(widget), dp); - if (LADSPA_IS_PORT_OUTPUT(plugin->PortDescriptors[k])) - { - gtk_widget_set_sensitive(widget, FALSE); - } - gtk_container_add(GTK_CONTAINER(hbox), widget); - - gtk_container_add(GTK_CONTAINER(vbox), hbox); - } - - if (no_ui) - { - widget = gtk_label_new(_("This LADSPA plugin has no user controls")); - gtk_container_add(GTK_CONTAINER(vbox), widget); - } - - instance->timeout = gtk_timeout_add(100, update_instance, instance); - - gtk_container_add(GTK_CONTAINER(instance->window), vbox); - - g_signal_connect(G_OBJECT(instance->window), "delete_event", G_CALLBACK(gtk_widget_hide_on_delete), NULL); - gtk_widget_show_all(instance->window); -} - -static void sort_column(GtkCList * clist, gint column, gpointer user_data) -{ - gtk_clist_set_sort_column(clist, column); - gtk_clist_sort(clist); -} - -static void unselect_instance(GtkCList * clist, gint row, gint column, GdkEventButton * event, gpointer user_data) -{ - selected_instance = NULL; -} - -static void select_instance(GtkCList * clist, gint row, gint column, GdkEventButton * event, gpointer user_data) -{ - selected_instance = (plugin_instance *) gtk_clist_get_row_data(clist, row); -} - -static void reorder_instance(GtkCList * clist, gint from, gint to, gpointer user_data) -{ - void *data; - - G_LOCK(running_plugins); - data = g_slist_nth_data(running_plugins, from); - running_plugins = g_slist_remove(running_plugins, data); - running_plugins = g_slist_insert(running_plugins, data, to); - G_UNLOCK(running_plugins); -} - -static void make_run_clist(void) -{ - char *titles[1] = { _("Name") }; - GSList *list; - - run_clist = gtk_clist_new_with_titles(1, titles); - gtk_clist_column_titles_passive(GTK_CLIST(run_clist)); - gtk_clist_set_reorderable(GTK_CLIST(run_clist), TRUE); - g_signal_connect(G_OBJECT(run_clist), "select-row", G_CALLBACK(select_instance), NULL); - g_signal_connect(G_OBJECT(run_clist), "unselect-row", G_CALLBACK(unselect_instance), NULL); - g_signal_connect(G_OBJECT(run_clist), "row-move", G_CALLBACK(reorder_instance), NULL); - - G_LOCK(running_plugins); - for (list = running_plugins; list != NULL; list = g_slist_next(list)) - { - gint row; - gchar *line[1]; - plugin_instance *instance = (plugin_instance *) list->data; - - line[0] = (char *)instance->descriptor->Name; - row = gtk_clist_append(GTK_CLIST(run_clist), line); - gtk_clist_set_row_data(GTK_CLIST(run_clist), row, (gpointer) instance); - gtk_clist_select_row(GTK_CLIST(run_clist), row, 0); - } - G_UNLOCK(running_plugins); -} - -static plugin_instance *add_plugin(ladspa_plugin * plugin) -{ - plugin_instance *instance; - char *line[1]; - gint row; - - if (plugin == NULL) - { - return NULL; - } - - instance = load(plugin->filename, plugin->id); - if (instance == NULL) - { - return NULL; - } - - instance->stereo = plugin->stereo; - if (state.srate && state.running) - { - /* Jump right in */ - boot_plugin(instance); - } - - if (run_clist) - { - line[0] = (char *)instance->descriptor->Name; - row = gtk_clist_append(GTK_CLIST(run_clist), line); - gtk_clist_set_row_data(GTK_CLIST(run_clist), row, (gpointer) instance); - gtk_clist_select_row(GTK_CLIST(run_clist), row, 0); - draw_plugin(instance); - } - G_LOCK(running_plugins); - running_plugins = g_slist_append(running_plugins, instance); - G_UNLOCK(running_plugins); - - return instance; -} - - -static void unselect_plugin(GtkCList * clist, gint row, gint column, GdkEventButton * event, gpointer user_data) -{ - selected_plugin = NULL; -} - -static void select_plugin(GtkCList * clist, gint row, gint column, GdkEventButton * event, gpointer user_data) -{ - selected_plugin = (ladspa_plugin *) gtk_clist_get_row_data(clist, row); - gtk_clist_unselect_all(GTK_CLIST(run_clist)); - if (event->type == GDK_2BUTTON_PRESS) - { - /* Double click */ - add_plugin(selected_plugin); - } -} - -static GtkWidget *make_plugin_clist(void) -{ - ladspa_plugin *plugin; - GSList *list; - GtkWidget *clist; - char number[14]; - char *titles[2] = { _("UID"), _("Name") }; - char *line[2]; - gint row; - - find_all_plugins(); - - clist = gtk_clist_new_with_titles(2, titles); - gtk_clist_column_titles_active(GTK_CLIST(clist)); - gtk_clist_set_column_auto_resize(GTK_CLIST(clist), 0, TRUE); - gtk_clist_set_sort_column(GTK_CLIST(clist), 1); - - for (list = plugin_list; list != NULL; list = g_slist_next(list)) - { - plugin = (ladspa_plugin *) list->data; - snprintf(number, sizeof(number), "%ld", plugin->unique_id); - line[0] = number; - line[1] = plugin->name; - row = gtk_clist_append(GTK_CLIST(clist), line); - gtk_clist_set_row_data(GTK_CLIST(clist), row, (gpointer) plugin); - } - gtk_clist_sort(GTK_CLIST(clist)); - - g_signal_connect(G_OBJECT(clist), "click-column", G_CALLBACK(sort_column), NULL); - g_signal_connect(G_OBJECT(clist), "select-row", G_CALLBACK(select_plugin), NULL); - g_signal_connect(G_OBJECT(clist), "unselect-row", G_CALLBACK(unselect_plugin), NULL); - - return clist; -} - -static void add_plugin_clicked(GtkButton * button, gpointer user_data) -{ - add_plugin(selected_plugin); -} - -static void remove_plugin_clicked(GtkButton * button, gpointer user_data) -{ - plugin_instance *instance = selected_instance; - gint row; - - if (instance == NULL) - { - return; - } - row = gtk_clist_find_row_from_data(GTK_CLIST(run_clist), (gpointer) instance); - gtk_clist_remove(GTK_CLIST(run_clist), row); - - G_LOCK(running_plugins); - running_plugins = g_slist_remove(running_plugins, instance); - unload(instance); - G_UNLOCK(running_plugins); - selected_instance = NULL; -} - -static void configure_plugin_clicked(GtkButton * button, gpointer user_data) -{ - if (selected_instance) - { - draw_plugin(selected_instance); - } -} - -static void configure(void) -{ - GtkWidget *widget, *vbox, *hbox, *bbox, *frame; - - if (config_window) - { - /* just show the window */ - gtk_widget_show(config_window); - return; - } - - config_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_type_hint(GTK_WINDOW(config_window), GDK_WINDOW_TYPE_HINT_DIALOG); - vbox = gtk_vbox_new(FALSE, 0); - hbox = gtk_hbox_new(TRUE, 0); - - frame = gtk_frame_new(_("Installed plugins")); - widget = gtk_scrolled_window_new(NULL, NULL); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); - gtk_container_add(GTK_CONTAINER(widget), make_plugin_clist()); - gtk_container_add(GTK_CONTAINER(frame), widget); - gtk_container_add(GTK_CONTAINER(hbox), frame); - - - frame = gtk_frame_new(_("Running plugins")); - widget = gtk_scrolled_window_new(NULL, NULL); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); - if (run_clist == NULL) - { - make_run_clist(); - } - gtk_container_add(GTK_CONTAINER(widget), run_clist); - gtk_container_add(GTK_CONTAINER(frame), widget); - gtk_container_add(GTK_CONTAINER(hbox), frame); - gtk_container_add(GTK_CONTAINER(vbox), hbox); - - /* Buttons */ - bbox = gtk_hbutton_box_new(); - gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_SPREAD); - widget = gtk_button_new_with_label(_("Add")); - g_signal_connect(G_OBJECT(widget), "clicked", G_CALLBACK(add_plugin_clicked), NULL); - gtk_box_pack_end_defaults(GTK_BOX(bbox), widget); - widget = gtk_button_new_with_label(_("Remove")); - g_signal_connect(G_OBJECT(widget), "clicked", G_CALLBACK(remove_plugin_clicked), NULL); - gtk_box_pack_end_defaults(GTK_BOX(bbox), widget); - widget = gtk_button_new_with_label(_("Configure")); - g_signal_connect(G_OBJECT(widget), "clicked", G_CALLBACK(configure_plugin_clicked), NULL); - gtk_box_pack_end_defaults(GTK_BOX(bbox), widget); - - gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); - - gtk_container_add(GTK_CONTAINER(config_window), vbox); - - gtk_window_set_title(GTK_WINDOW(config_window), _("LADSPA Plugin Catalog")); - gtk_widget_set_usize(config_window, 380, 400); - g_signal_connect(G_OBJECT(config_window), "delete_event", G_CALLBACK(gtk_widget_hide_on_delete), NULL); - - gtk_widget_show_all(config_window); -} - -void ladspa_start (gint * channels, gint * rate) -{ - state.nch = * channels; - state.srate = * rate; - state.ignore = (* channels < 1 || * channels > 2); - reboot_plugins (); -} - -void ladspa_flush (void) -{ -} - -void ladspa_finish (gfloat * * data, gint * samples) -{ - ladspa_process (data, samples); -} - -gint ladspa_decoder_to_output_time (gint time) -{ - return time; -} - -gint ladspa_output_to_decoder_time (gint time) -{ - return time; -} - -static EffectPlugin header = { - .description = PLUGIN_NAME, - .init = start, - .cleanup = stop, - .configure = configure, - .start = ladspa_start, - .process = ladspa_process, - .flush = ladspa_flush, - .finish = ladspa_finish, - .decoder_to_output_time = ladspa_decoder_to_output_time, - .output_to_decoder_time = ladspa_output_to_decoder_time, - .preserves_format = TRUE, -}; - -EffectPlugin * header_list[] = {& header, NULL}; -SIMPLE_EFFECT_PLUGIN (ladspa, header_list) diff -Nru audacious-plugins-2.4.4/src/ladspa/ladspa.h audacious-plugins-3.2/src/ladspa/ladspa.h --- audacious-plugins-2.4.4/src/ladspa/ladspa.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/ladspa/ladspa.h 2012-01-20 19:48:30.000000000 +0000 @@ -3,20 +3,20 @@ Linux Audio Developer's Simple Plugin API Version 1.1[LGPL]. Copyright (C) 2000-2002 Richard W.E. Furse, Paul Barton-Davis, Stefan Westerfeld. - + This library 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. - + This library 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 this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef LADSPA_INCLUDED @@ -32,7 +32,7 @@ /*****************************************************************************/ -/* Overview: +/* Overview: There is a large number of synthesis packages in use or development on the Linux platform at this time. This API (`The Linux Audio @@ -76,7 +76,7 @@ /* Fundamental data type passed in and out of plugin. This data type is used to communicate audio samples and control values. It is assumed that the plugin will work sensibly given any numeric input - value although it may have a preferred range (see hints below). + value although it may have a preferred range (see hints below). For audio it is generally assumed that 1.0f is the `0dB' reference amplitude and is a `normal' signal level. */ @@ -85,8 +85,8 @@ /*****************************************************************************/ -/* Special Plugin Properties: - +/* Special Plugin Properties: + Optional features of the plugin type are encapsulated in the LADSPA_Properties type. This is assembled by ORing individual properties together. */ @@ -122,7 +122,7 @@ (3) The plugin will not access files, devices, pipes, sockets, IPC or any other mechanism that might result in process or thread blocking. - + (4) The plugin will take an amount of time to execute a run() or run_adding() call approximately of form (A+B*SampleCount) where A and B depend on the machine and host in use. This amount of time @@ -137,7 +137,7 @@ /*****************************************************************************/ -/* Plugin Ports: +/* Plugin Ports: Plugins have `ports' that are inputs or outputs for audio or data. Ports can communicate arrays of LADSPA_Data (for audio @@ -172,23 +172,23 @@ /*****************************************************************************/ -/* Plugin Port Range Hints: +/* Plugin Port Range Hints: The host may wish to provide a representation of data entering or leaving a plugin (e.g. to generate a GUI automatically). To make this more meaningful, the plugin should provide `hints' to the host describing the usual values taken by the data. - + Note that these are only hints. The host may ignore them and the plugin must not assume that data supplied to it is meaningful. If the plugin receives invalid input data it is expected to continue to run without failure and, where possible, produce a sensible output (e.g. a high-pass filter given a negative cutoff frequency might switch to an all-pass mode). - + Hints are meaningful for all input and output ports but hints for input control ports are expected to be particularly useful. - + More hint information is encapsulated in the LADSPA_PortRangeHintDescriptor type which is assembled by ORing individual hint types together. Hints may require further @@ -353,7 +353,7 @@ /*****************************************************************************/ -/* Plugin Handles: +/* Plugin Handles: This plugin handle indicates a particular instance of the plugin concerned. It is valid to compare this to NULL (0 for C++) but @@ -364,13 +364,13 @@ /*****************************************************************************/ -/* Descriptor for a Type of Plugin: +/* Descriptor for a Type of Plugin: This structure is used to describe a plugin type. It provides a number of functions to examine the type, instantiate it, link it to buffers and workspaces and to run it. */ -typedef struct _LADSPA_Descriptor { +typedef struct _LADSPA_Descriptor { /* This numeric identifier indicates the plugin type uniquely. Plugin programmers may reserve ranges of IDs from a @@ -430,7 +430,7 @@ instantiation function accepts a sample rate as a parameter. The plugin descriptor from which this instantiate function was found must also be passed. This function must return NULL if - instantiation fails. + instantiation fails. Note that instance initialisation should generally occur in activate() rather than here. */ @@ -551,7 +551,7 @@ /* Once an instance of a plugin has been finished with it can be deleted using the following function. The instance handle passed ceases to be valid after this call. - + If activate() was called for a plugin instance then a corresponding call to deactivate() must be made before cleanup() is called. */ @@ -589,7 +589,7 @@ const LADSPA_Descriptor * ladspa_descriptor(unsigned long Index); /* Datatype corresponding to the ladspa_descriptor() function. */ -typedef const LADSPA_Descriptor * +typedef const LADSPA_Descriptor * (*LADSPA_Descriptor_Function)(unsigned long Index); /**********************************************************************/ diff -Nru audacious-plugins-2.4.4/src/ladspa/loaded-list.c audacious-plugins-3.2/src/ladspa/loaded-list.c --- audacious-plugins-2.4.4/src/ladspa/loaded-list.c 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/ladspa/loaded-list.c 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,135 @@ +/* + * LADSPA Host for Audacious + * Copyright 2011 John Lindgren + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions, and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions, and the following disclaimer in the documentation + * provided with the distribution. + * + * This software is provided "as is" and without any warranty, express or + * implied. In no event shall the authors be liable for any damages arising from + * the use of this software. + */ + +#include + +#include "plugin.h" + +static void get_value (void * user, int row, int column, GValue * value) +{ + g_return_if_fail (row >= 0 && row < index_count (loadeds)); + g_return_if_fail (column == 0); + + LoadedPlugin * loaded = index_get (loadeds, row); + g_value_set_string (value, loaded->plugin->desc->Name); +} + +static int get_selected (void * user, int row) +{ + g_return_val_if_fail (row >= 0 && row < index_count (loadeds), 0); + + LoadedPlugin * loaded = index_get (loadeds, row); + return loaded->selected; +} + +static void set_selected (void * user, int row, int selected) +{ + g_return_if_fail (row >= 0 && row < index_count (loadeds)); + + LoadedPlugin * loaded = index_get (loadeds, row); + loaded->selected = selected; +} + +static void select_all (void * user, int selected) +{ + int count = index_count (loadeds); + for (int i = 0; i < count; i ++) + { + LoadedPlugin * loaded = index_get (loadeds, i); + loaded->selected = selected; + } +} + +static void shift_rows (void * user, int row, int before) +{ + pthread_mutex_lock (& mutex); + + int rows = index_count (loadeds); + g_return_if_fail (row >= 0 && row < rows); + g_return_if_fail (before >= 0 && before <= rows); + + if (before == row) + return; + + Index * move = index_new (); + Index * others = index_new (); + + int begin, end; + if (before < row) + { + begin = before; + end = row + 1; + while (end < rows && ((LoadedPlugin *) index_get (loadeds, end))->selected) + end ++; + } + else + { + begin = row; + while (begin > 0 && ((LoadedPlugin *) index_get (loadeds, begin - 1))->selected) + begin --; + end = before; + } + + for (gint i = begin; i < end; i ++) + { + LoadedPlugin * loaded = index_get (loadeds, i); + index_append (loaded->selected ? move : others, loaded); + } + + if (before < row) + { + index_merge_append (move, others); + index_free (others); + } + else + { + index_merge_append (others, move); + index_free (move); + move = others; + } + + index_copy_set (move, 0, loadeds, begin, end - begin); + index_free (move); + + pthread_mutex_unlock (& mutex); + + if (loaded_list) + update_loaded_list (loaded_list); +} + +static const AudguiListCallbacks callbacks = { + .get_value = get_value, + .get_selected = get_selected, + .set_selected = set_selected, + .select_all = select_all, + .shift_rows = shift_rows}; + +GtkWidget * create_loaded_list (void) +{ + GtkWidget * list = audgui_list_new (& callbacks, NULL, index_count (loadeds)); + audgui_list_add_column (list, NULL, 0, G_TYPE_STRING, -1); + gtk_tree_view_set_headers_visible ((GtkTreeView *) list, 0); + return list; +} + +void update_loaded_list (GtkWidget * list) +{ + audgui_list_delete_rows (list, 0, audgui_list_row_count (list)); + audgui_list_insert_rows (list, 0, index_count (loadeds)); +} diff -Nru audacious-plugins-2.4.4/src/ladspa/Makefile audacious-plugins-3.2/src/ladspa/Makefile --- audacious-plugins-2.4.4/src/ladspa/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/ladspa/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -1,12 +1,15 @@ PLUGIN = ladspa${PLUGIN_SUFFIX} -SRCS = ladspa.c +SRCS = effect.c \ + loaded-list.c \ + plugin.c \ + plugin-list.c include ../../buildsys.mk include ../../extra.mk plugindir := ${plugindir}/${EFFECT_PLUGIN_DIR} +CPPFLAGS += -I../.. ${PTHREAD_CFLAGS} ${GTK_CFLAGS} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} -ldl +LIBS += -lm ${PTHREAD_LIBS} ${GTK_LIBS} diff -Nru audacious-plugins-2.4.4/src/ladspa/plugin.c audacious-plugins-3.2/src/ladspa/plugin.c --- audacious-plugins-2.4.4/src/ladspa/plugin.c 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/ladspa/plugin.c 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,677 @@ +/* + * LADSPA Host for Audacious + * Copyright 2011 John Lindgren + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions, and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions, and the following disclaimer in the documentation + * provided with the distribution. + * + * This software is provided "as is" and without any warranty, express or + * implied. In no event shall the authors be liable for any damages arising from + * the use of this software. + */ + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "config.h" +#include "plugin.h" + +static const gchar * const ladspa_defaults[] = { + "plugin_count", "0", + NULL}; + +pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; +char * module_path; +Index * modules; /* (void *) */ +Index * plugins; /* (PluginData *) */ +Index * loadeds; /* (LoadedPlugin *) */ + +GtkWidget * about_win; +GtkWidget * config_win; +GtkWidget * plugin_list; +GtkWidget * loaded_list; + +static ControlData * parse_control (const LADSPA_Descriptor * desc, int port) +{ + g_return_val_if_fail (desc->PortNames[port], NULL); + const LADSPA_PortRangeHint * hint = & desc->PortRangeHints[port]; + + ControlData * control = g_slice_new (ControlData); + control->port = port; + control->name = g_strdup (desc->PortNames[port]); + control->is_toggle = LADSPA_IS_HINT_TOGGLED (hint->HintDescriptor) ? 1 : 0; + + control->min = LADSPA_IS_HINT_BOUNDED_BELOW (hint->HintDescriptor) ? hint->LowerBound : + LADSPA_IS_HINT_BOUNDED_ABOVE (hint->HintDescriptor) ? hint->UpperBound - 100 : -100; + control->max = LADSPA_IS_HINT_BOUNDED_ABOVE (hint->HintDescriptor) ? hint->UpperBound : + LADSPA_IS_HINT_BOUNDED_BELOW (hint->HintDescriptor) ? hint->LowerBound + 100 : 100; + + if (LADSPA_IS_HINT_SAMPLE_RATE (hint->HintDescriptor)) + { + control->min *= 96000; + control->max *= 96000; + } + + if (LADSPA_IS_HINT_DEFAULT_0 (hint->HintDescriptor)) + control->def = 0; + else if (LADSPA_IS_HINT_DEFAULT_1 (hint->HintDescriptor)) + control->def = 1; + else if (LADSPA_IS_HINT_DEFAULT_100 (hint->HintDescriptor)) + control->def = 100; + else if (LADSPA_IS_HINT_DEFAULT_440 (hint->HintDescriptor)) + control->def = 440; + else if (LADSPA_IS_HINT_DEFAULT_MINIMUM (hint->HintDescriptor)) + control->def = control->min; + else if (LADSPA_IS_HINT_DEFAULT_MAXIMUM (hint->HintDescriptor)) + control->def = control->max; + else if (LADSPA_IS_HINT_DEFAULT_LOW (hint->HintDescriptor)) + { + if (LADSPA_IS_HINT_LOGARITHMIC (hint->HintDescriptor)) + control->def = expf (0.75 * logf (control->min) + 0.25 * logf (control->max)); + else + control->def = 0.75 * control->min + 0.25 * control->max; + } + else if (LADSPA_IS_HINT_DEFAULT_HIGH (hint->HintDescriptor)) + { + if (LADSPA_IS_HINT_LOGARITHMIC (hint->HintDescriptor)) + control->def = expf (0.25 * logf (control->min) + 0.75 * logf (control->max)); + else + control->def = 0.25 * control->min + 0.75 * control->max; + } + else + { + if (LADSPA_IS_HINT_LOGARITHMIC (hint->HintDescriptor)) + control->def = expf (0.5 * logf (control->min) + 0.5 * logf (control->max)); + else + control->def = 0.5 * control->min + 0.5 * control->max; + } + + return control; +} + +static PluginData * open_plugin (const char * path, const LADSPA_Descriptor * desc) +{ + const char * slash = strrchr (path, G_DIR_SEPARATOR); + g_return_val_if_fail (slash && slash[1], NULL); + g_return_val_if_fail (desc->Label && desc->Name, NULL); + + PluginData * plugin = g_slice_new (PluginData); + plugin->path = g_strdup (slash + 1); + plugin->desc = desc; + plugin->controls = index_new (); + plugin->in_ports = g_array_new (0, 0, sizeof (int)); + plugin->out_ports = g_array_new (0, 0, sizeof (int)); + plugin->selected = 0; + + for (int i = 0; i < desc->PortCount; i ++) + { + if (LADSPA_IS_PORT_CONTROL (desc->PortDescriptors[i])) + { + ControlData * control = parse_control (desc, i); + if (control) + index_append (plugin->controls, control); + } + else if (LADSPA_IS_PORT_AUDIO (desc->PortDescriptors[i]) && + LADSPA_IS_PORT_INPUT (desc->PortDescriptors[i])) + g_array_append_val (plugin->in_ports, i); + else if (LADSPA_IS_PORT_AUDIO (desc->PortDescriptors[i]) && + LADSPA_IS_PORT_OUTPUT (desc->PortDescriptors[i])) + g_array_append_val (plugin->out_ports, i); + } + + return plugin; +} + +static void close_plugin (PluginData * plugin) +{ + int count = index_count (plugin->controls); + for (int i = 0; i < count; i ++) + { + ControlData * control = index_get (plugin->controls, i); + g_free (control->name); + g_slice_free (ControlData, control); + } + + g_free (plugin->path); + index_free (plugin->controls); + g_array_free (plugin->in_ports, 1); + g_array_free (plugin->out_ports, 1); + g_slice_free (PluginData, plugin); +} + +static void * open_module (const char * path) +{ + GModule * handle = g_module_open (path, G_MODULE_BIND_LOCAL); + if (! handle) + { + fprintf (stderr, "ladspa: Failed to open module %s: %s\n", path, g_module_error ()); + return NULL; + } + + void * sym; + if (! g_module_symbol (handle, "ladspa_descriptor", & sym)) + { + fprintf (stderr, "ladspa: Not a valid LADSPA module: %s\n", path); + g_module_close (handle); + return NULL; + } + + LADSPA_Descriptor_Function descfun = (LADSPA_Descriptor_Function) sym; + + const LADSPA_Descriptor * desc; + for (int i = 0; (desc = descfun (i)); i ++) + { + PluginData * plugin = open_plugin (path, desc); + if (plugin) + index_append (plugins, plugin); + } + + return handle; +} + +static void open_modules_for_path (const char * path) +{ + DIR * folder = opendir (path); + if (! folder) + { + fprintf (stderr, "ladspa: Failed to read folder %s: %s\n", path, strerror (errno)); + return; + } + + struct dirent * entry; + while ((entry = readdir (folder))) + { + if (entry->d_name[0] == '.' || ! str_has_suffix_nocase (entry->d_name, G_MODULE_SUFFIX)) + continue; + + char filename[strlen (path) + strlen (entry->d_name) + 2]; + snprintf (filename, sizeof filename, "%s" G_DIR_SEPARATOR_S "%s", path, entry->d_name); + + void * handle = open_module (filename); + if (handle) + index_append (modules, handle); + } + + closedir (folder); +} + +static void open_modules_for_paths (const char * paths) +{ + if (! paths || ! paths[0]) + return; + + char * * split = g_strsplit (paths, ":", -1); + + for (int i = 0; split[i]; i ++) + open_modules_for_path (split[i]); + + g_strfreev (split); +} + +static void open_modules (void) +{ + open_modules_for_paths (getenv ("LADSPA_PATH")); + open_modules_for_paths (module_path); +} + +static void close_modules (void) +{ + int count = index_count (plugins); + for (int i = 0; i < count; i ++) + close_plugin (index_get (plugins, i)); + + index_delete (plugins, 0, count); + + count = index_count (modules); + for (int i = 0; i < count; i ++) + g_module_close (index_get (modules, i)); + + index_delete (modules, 0, count); +} + +LoadedPlugin * enable_plugin_locked (PluginData * plugin) +{ + LoadedPlugin * loaded = g_slice_new (LoadedPlugin); + loaded->plugin = plugin; + loaded->selected = 0; + + int count = index_count (plugin->controls); + loaded->values = g_malloc (sizeof (float) * count); + + for (int i = 0; i < count; i ++) + { + ControlData * control = index_get (plugin->controls, i); + loaded->values[i] = control->def; + } + + loaded->active = 0; + loaded->instances = NULL; + loaded->in_bufs = NULL; + loaded->out_bufs = NULL; + + loaded->settings_win = NULL; + + index_append (loadeds, loaded); + return loaded; +} + +void disable_plugin_locked (int i) +{ + g_return_if_fail (i >= 0 && i < index_count (loadeds)); + LoadedPlugin * loaded = index_get (loadeds, i); + + if (loaded->settings_win) + gtk_widget_destroy (loaded->settings_win); + + shutdown_plugin_locked (loaded); + + g_free (loaded->values); + g_slice_free (LoadedPlugin, loaded); + index_delete (loadeds, i, 1); +} + +static PluginData * find_plugin (const char * path, const char * label) +{ + int count = index_count (plugins); + for (int i = 0; i < count; i ++) + { + PluginData * plugin = index_get (plugins, i); + if (! strcmp (plugin->path, path) && ! strcmp (plugin->desc->Label, label)) + return plugin; + } + + return NULL; +} + +static void save_enabled_to_config (void) +{ + int count = index_count (loadeds); + aud_set_int ("ladspa", "plugin_count", count); + + for (int i = 0; i < count; i ++) + { + LoadedPlugin * loaded = index_get (loadeds, 0); + char key[32]; + + snprintf (key, sizeof key, "plugin%d_path", i); + aud_set_string ("ladspa", key, loaded->plugin->path); + + snprintf (key, sizeof key, "plugin%d_label", i); + aud_set_string ("ladspa", key, loaded->plugin->desc->Label); + + int ccount = index_count (loaded->plugin->controls); + for (int ci = 0; ci < ccount; ci ++) + { + snprintf (key, sizeof key, "plugin%d_control%d", i, ci); + aud_set_double ("ladspa", key, loaded->values[ci]); + } + + disable_plugin_locked (0); + } +} + +static void load_enabled_from_config (void) +{ + int count = aud_get_int ("ladspa", "plugin_count"); + + for (int i = 0; i < count; i ++) + { + char key[32]; + + snprintf (key, sizeof key, "plugin%d_path", i); + char * path = aud_get_string ("ladspa", key); + + snprintf (key, sizeof key, "plugin%d_label", i); + char * label = aud_get_string ("ladspa", key); + + PluginData * plugin = find_plugin (path, label); + if (plugin) + { + LoadedPlugin * loaded = enable_plugin_locked (plugin); + + int ccount = index_count (loaded->plugin->controls); + for (int ci = 0; ci < ccount; ci ++) + { + snprintf (key, sizeof key, "plugin%d_control%d", i, ci); + loaded->values[ci] = aud_get_double ("ladspa", key); + } + } + + g_free (path); + g_free (label); + } +} + +static int init (void) +{ + pthread_mutex_lock (& mutex); + + modules = index_new (); + plugins = index_new (); + loadeds = index_new (); + + aud_config_set_defaults ("ladspa", ladspa_defaults); + + module_path = aud_get_string ("ladspa", "module_path"); + + open_modules (); + load_enabled_from_config (); + + pthread_mutex_unlock (& mutex); + return 1; +} + +static void cleanup (void) +{ + if (about_win) + gtk_widget_destroy (about_win); + if (config_win) + gtk_widget_destroy (config_win); + + pthread_mutex_lock (& mutex); + + aud_config_clear_section ("ladspa"); + aud_set_string ("ladspa", "module_path", module_path); + save_enabled_to_config (); + close_modules (); + + index_free (modules); + modules = NULL; + index_free (plugins); + plugins = NULL; + index_free (loadeds); + loadeds = NULL; + + g_free (module_path); + module_path = NULL; + + pthread_mutex_unlock (& mutex); +} + +static void about (void) +{ + audgui_simple_message (& about_win, GTK_MESSAGE_INFO, + _("About LADSPA Host"), "LADSPA Host for Audacious\n" + "Copyright 2011 John Lindgren\n\n" + "Redistribution and use in source and binary forms, with or without " + "modification, are permitted provided that the following conditions are " + "met:\n\n" + "1. Redistributions of source code must retain the above copyright " + "notice, this list of conditions, and the following disclaimer.\n\n" + "2. Redistributions in binary form must reproduce the above copyright " + "notice, this list of conditions, and the following disclaimer in the " + "documentation provided with the distribution.\n\n" + "This software is provided \"as is\" and without any warranty, express or " + "implied. In no event shall the authors be liable for any damages arising " + "from the use of this software."); +} + +static void set_module_path (GtkEntry * entry) +{ + pthread_mutex_lock (& mutex); + + save_enabled_to_config (); + close_modules (); + + g_free (module_path); + module_path = g_strdup (gtk_entry_get_text (entry)); + + open_modules (); + load_enabled_from_config (); + + pthread_mutex_unlock (& mutex); + + if (plugin_list) + update_plugin_list (plugin_list); + if (loaded_list) + update_loaded_list (loaded_list); +} + +static void enable_selected (void) +{ + pthread_mutex_lock (& mutex); + + int count = index_count (plugins); + for (int i = 0; i < count; i ++) + { + PluginData * plugin = index_get (plugins, i); + if (plugin->selected) + enable_plugin_locked (plugin); + } + + pthread_mutex_unlock (& mutex); + + if (loaded_list) + update_loaded_list (loaded_list); +} + +static void disable_selected (void) +{ + pthread_mutex_lock (& mutex); + + int count = index_count (loadeds); + int offset = 0; + for (int i = 0; i < count; i ++) + { + LoadedPlugin * loaded = index_get (loadeds, i - offset); + if (loaded->selected) + { + disable_plugin_locked (i - offset); + offset ++; + } + } + + pthread_mutex_unlock (& mutex); + + if (loaded_list) + update_loaded_list (loaded_list); +} + +static void control_toggled (GtkToggleButton * toggle, float * value) +{ + pthread_mutex_lock (& mutex); + * value = gtk_toggle_button_get_active (toggle) ? 1 : 0; + pthread_mutex_unlock (& mutex); +} + +static void control_changed (GtkSpinButton * spin, float * value) +{ + pthread_mutex_lock (& mutex); + * value = gtk_spin_button_get_value (spin); + pthread_mutex_unlock (& mutex); +} + +static void configure_plugin (LoadedPlugin * loaded) +{ + if (loaded->settings_win) + { + gtk_window_present ((GtkWindow *) loaded->settings_win); + return; + } + + PluginData * plugin = loaded->plugin; + char buf[200]; + + snprintf (buf, sizeof buf, _("%s Settings"), plugin->desc->Name); + loaded->settings_win = gtk_dialog_new_with_buttons (buf, (GtkWindow *) + config_win, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CLOSE, + GTK_RESPONSE_CLOSE, NULL); + gtk_window_set_resizable ((GtkWindow *) loaded->settings_win, 0); + + GtkWidget * vbox = gtk_dialog_get_content_area ((GtkDialog *) loaded->settings_win); + + int count = index_count (plugin->controls); + for (int i = 0; i < count; i ++) + { + ControlData * control = index_get (plugin->controls, i); + + GtkWidget * hbox = gtk_hbox_new (0, 6); + gtk_box_pack_start ((GtkBox *) vbox, hbox, 0, 0, 0); + + if (control->is_toggle) + { + GtkWidget * toggle = gtk_check_button_new_with_label (control->name); + gtk_toggle_button_set_active ((GtkToggleButton *) toggle, (loaded->values[i] > 0) ? 1 : 0); + gtk_box_pack_start ((GtkBox *) hbox, toggle, 0, 0, 0); + + g_signal_connect (toggle, "toggled", (GCallback) control_toggled, & loaded->values[i]); + } + else + { + snprintf (buf, sizeof buf, "%s:", control->name); + GtkWidget * label = gtk_label_new (buf); + gtk_box_pack_start ((GtkBox *) hbox, label, 0, 0, 0); + + GtkWidget * spin = gtk_spin_button_new_with_range (control->min, control->max, 0.01); + gtk_spin_button_set_value ((GtkSpinButton *) spin, loaded->values[i]); + gtk_box_pack_start ((GtkBox *) hbox, spin, 0, 0, 0); + + g_signal_connect (spin, "value-changed", (GCallback) control_changed, & loaded->values[i]); + } + } + + g_signal_connect (loaded->settings_win, "response", (GCallback) gtk_widget_destroy, NULL); + g_signal_connect (loaded->settings_win, "destroy", (GCallback) + gtk_widget_destroyed, & loaded->settings_win); + + gtk_widget_show_all (loaded->settings_win); +} + +static void configure_selected (void) +{ + pthread_mutex_lock (& mutex); + + int count = index_count (loadeds); + for (int i = 0; i < count; i ++) + { + LoadedPlugin * loaded = index_get (loadeds, i); + if (loaded->selected) + configure_plugin (loaded); + } + + pthread_mutex_unlock (& mutex); +} + +static void configure (void) +{ + if (config_win) + { + gtk_window_present ((GtkWindow *) config_win); + return; + } + + config_win = gtk_dialog_new_with_buttons (_("LADSPA Host Settings"), NULL, + 0, GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL); + gtk_window_set_default_size ((GtkWindow *) config_win, 480, 360); + + GtkWidget * vbox = gtk_dialog_get_content_area ((GtkDialog *) config_win); + + GtkWidget * hbox = gtk_hbox_new (0, 6); + gtk_box_pack_start ((GtkBox *) vbox, hbox, 0, 0, 0); + + GtkWidget * label = gtk_label_new (_("Module paths:")); + gtk_box_pack_start ((GtkBox *) hbox, label, 0, 0, 0); + + label = gtk_label_new (0); + gtk_label_set_markup ((GtkLabel *) label, + _("Separate multiple paths with a colon.\n" + "These paths are searched in addition to LADSPA_PATH.\n" + "After adding new paths, press Enter to scan for new plugins.")); + gtk_misc_set_padding ((GtkMisc *) label, 12, 6); + gtk_misc_set_alignment ((GtkMisc *) label, 0, 0); + gtk_box_pack_start ((GtkBox *) vbox, label, 0, 0, 0); + + GtkWidget * entry = gtk_entry_new (); + gtk_box_pack_start ((GtkBox *) hbox, entry, 1, 1, 0); + + hbox = gtk_hbox_new (0, 6); + gtk_box_pack_start ((GtkBox *) vbox, hbox, 1, 1, 0); + + GtkWidget * vbox2 = gtk_vbox_new (0, 6); + gtk_box_pack_start ((GtkBox *) hbox, vbox2, 1, 1, 0); + + label = gtk_label_new (_("Available plugins:")); + gtk_box_pack_start ((GtkBox *) vbox2, label, 0, 0, 0); + + GtkWidget * scrolled = gtk_scrolled_window_new (NULL, NULL); + gtk_box_pack_start ((GtkBox *) vbox2, scrolled, 1, 1, 0); + + plugin_list = create_plugin_list (); + gtk_container_add ((GtkContainer *) scrolled, plugin_list); + + GtkWidget * hbox2 = gtk_hbox_new (0, 6); + gtk_box_pack_start ((GtkBox *) vbox2, hbox2, 0, 0, 0); + + GtkWidget * enable_button = gtk_button_new_with_label (_("Enable")); + gtk_box_pack_end ((GtkBox *) hbox2, enable_button, 0, 0, 0); + + vbox2 = gtk_vbox_new (0, 6); + gtk_box_pack_start ((GtkBox *) hbox, vbox2, 1, 1, 0); + + label = gtk_label_new (_("Enabled plugins:")); + gtk_box_pack_start ((GtkBox *) vbox2, label, 0, 0, 0); + + scrolled = gtk_scrolled_window_new (NULL, NULL); + gtk_box_pack_start ((GtkBox *) vbox2, scrolled, 1, 1, 0); + + loaded_list = create_loaded_list (); + gtk_container_add ((GtkContainer *) scrolled, loaded_list); + + hbox2 = gtk_hbox_new (0, 6); + gtk_box_pack_start ((GtkBox *) vbox2, hbox2, 0, 0, 0); + + GtkWidget * disable_button = gtk_button_new_with_label (_("Disable")); + gtk_box_pack_end ((GtkBox *) hbox2, disable_button, 0, 0, 0); + + GtkWidget * settings_button = gtk_button_new_with_label (_("Settings")); + gtk_box_pack_end ((GtkBox *) hbox2, settings_button, 0, 0, 0); + + if (module_path) + gtk_entry_set_text ((GtkEntry *) entry, module_path); + + g_signal_connect (config_win, "response", (GCallback) gtk_widget_destroy, NULL); + g_signal_connect (config_win, "destroy", (GCallback) gtk_widget_destroyed, & config_win); + g_signal_connect (entry, "activate", (GCallback) set_module_path, NULL); + g_signal_connect (plugin_list, "destroy", (GCallback) gtk_widget_destroyed, & plugin_list); + g_signal_connect (enable_button, "clicked", (GCallback) enable_selected, NULL); + g_signal_connect (loaded_list, "destroy", (GCallback) gtk_widget_destroyed, & loaded_list); + g_signal_connect (disable_button, "clicked", (GCallback) disable_selected, NULL); + g_signal_connect (settings_button, "clicked", (GCallback) configure_selected, NULL); + + gtk_widget_show_all (config_win); +} + +AUD_EFFECT_PLUGIN +( + .name = "LADSPA Host", + .init = init, + .cleanup = cleanup, + .about = about, + .configure = configure, + .start = ladspa_start, + .process = ladspa_process, + .flush = ladspa_flush, + .finish = ladspa_finish, + .preserves_format = 1, +) diff -Nru audacious-plugins-2.4.4/src/ladspa/plugin.h audacious-plugins-3.2/src/ladspa/plugin.h --- audacious-plugins-2.4.4/src/ladspa/plugin.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/ladspa/plugin.h 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,95 @@ +/* + * LADSPA Host for Audacious + * Copyright 2011 John Lindgren + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions, and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions, and the following disclaimer in the documentation + * provided with the distribution. + * + * This software is provided "as is" and without any warranty, express or + * implied. In no event shall the authors be liable for any damages arising from + * the use of this software. + */ + +#ifndef AUD_LADSPA_PLUGIN_H +#define AUD_LADSPA_PLUGIN_H + +#include +#include +#include + +#include "ladspa.h" + +#define LADSPA_BUFLEN 1024 + +typedef struct { + int port; + char * name; + char is_toggle; + float min, max, def; +} ControlData; + +typedef struct { + char * path; + const LADSPA_Descriptor * desc; + Index * controls; /* (ControlData *) */ + GArray * in_ports, * out_ports; /* (int) */ + char selected; +} PluginData; + +typedef struct { + PluginData * plugin; + float * values; + char selected; + char active; + Index * instances; /* (LADSPA_Handle) */ + float * * in_bufs, * * out_bufs; /* (float *) */ + GtkWidget * settings_win; +} LoadedPlugin; + +/* plugin.c */ + +/* The mutex needs to be locked when the main thread is writing to the data + * structures below (but not when it is only reading from them) and when the + * audio thread is reading from them. */ + +extern pthread_mutex_t mutex; +extern char * module_path; +extern Index * modules; /* (GModule *) */ +extern Index * plugins; /* (PluginData *) */ +extern Index * loadeds; /* (LoadedPlugin *) */ + +extern GtkWidget * about_win; +extern GtkWidget * config_win; +extern GtkWidget * plugin_list; +extern GtkWidget * loaded_list; + +LoadedPlugin * enable_plugin_locked (PluginData * plugin); +void disable_plugin_locked (int i); + +/* effect.c */ + +void shutdown_plugin_locked (LoadedPlugin * loaded); + +void ladspa_start (gint * channels, gint * rate); +void ladspa_process (gfloat * * data, gint * samples); +void ladspa_flush (void); +void ladspa_finish (gfloat * * data, gint * samples); + +/* plugin-list.c */ + +GtkWidget * create_plugin_list (void); +void update_plugin_list (GtkWidget * list); + +/* loaded-list.c */ + +GtkWidget * create_loaded_list (void); +void update_loaded_list (GtkWidget * list); + +#endif diff -Nru audacious-plugins-2.4.4/src/ladspa/plugin-list.c audacious-plugins-3.2/src/ladspa/plugin-list.c --- audacious-plugins-2.4.4/src/ladspa/plugin-list.c 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/ladspa/plugin-list.c 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,77 @@ +/* + * LADSPA Host for Audacious + * Copyright 2011 John Lindgren + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions, and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions, and the following disclaimer in the documentation + * provided with the distribution. + * + * This software is provided "as is" and without any warranty, express or + * implied. In no event shall the authors be liable for any damages arising from + * the use of this software. + */ + +#include + +#include "plugin.h" + +static void get_value (void * user, int row, int column, GValue * value) +{ + g_return_if_fail (row >= 0 && row < index_count (plugins)); + g_return_if_fail (column == 0); + + PluginData * plugin = index_get (plugins, row); + g_value_set_string (value, plugin->desc->Name); +} + +static int get_selected (void * user, int row) +{ + g_return_val_if_fail (row >= 0 && row < index_count (plugins), 0); + + PluginData * plugin = index_get (plugins, row); + return plugin->selected; +} + +static void set_selected (void * user, int row, int selected) +{ + g_return_if_fail (row >= 0 && row < index_count (plugins)); + + PluginData * plugin = index_get (plugins, row); + plugin->selected = selected; +} + +static void select_all (void * user, int selected) +{ + int count = index_count (plugins); + for (int i = 0; i < count; i ++) + { + PluginData * plugin = index_get (plugins, i); + plugin->selected = selected; + } +} + +static const AudguiListCallbacks callbacks = { + .get_value = get_value, + .get_selected = get_selected, + .set_selected = set_selected, + .select_all = select_all}; + +GtkWidget * create_plugin_list (void) +{ + GtkWidget * list = audgui_list_new (& callbacks, NULL, index_count (plugins)); + audgui_list_add_column (list, NULL, 0, G_TYPE_STRING, -1); + gtk_tree_view_set_headers_visible ((GtkTreeView *) list, 0); + return list; +} + +void update_plugin_list (GtkWidget * list) +{ + audgui_list_delete_rows (list, 0, audgui_list_row_count (list)); + audgui_list_insert_rows (list, 0, index_count (plugins)); +} diff -Nru audacious-plugins-2.4.4/src/lirc/about.c audacious-plugins-3.2/src/lirc/about.c --- audacious-plugins-2.4.4/src/lirc/about.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/lirc/about.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,143 +0,0 @@ -/* LIRC Plugin - - Copyright (C) 2005 Audacious development team - - Copyright (c) 1998-1999 Carl van Schaik (carl@leg.uct.ac.za) - code from gtuner lirc plugin - cRadio, kTuner, gtuner (c) 1998-1999 Carl van Schaik - - Copyright (C) 2000 Christoph Bartelmus (xmms@bartelmus.de) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#include "config.h" - -#include -#include -#include - -#include "lirc.h" -#include "lirc_image.h" -#include "lirc_mini.xpm" - -#include - -static void win_set_icon (GtkWidget *win, char** image); - -static GtkWidget *dialog = NULL; -static GdkPixmap *icon; -static GdkBitmap *icon_mask; - -void about_close_cb(GtkWidget *w,gpointer data) -{ - gtk_widget_destroy(dialog); - gdk_pixmap_unref(icon); - gdk_bitmap_unref(icon_mask); -} - -void about(void) -{ - GdkPixmap *pixmap; - GtkWidget *bbox,*about_credits_logo_box,*about_credits_logo_frame; - GtkWidget *about_credits_logo; - GtkWidget *button,*label; - GString *logo_text; - - if(dialog) return; - - dialog=gtk_dialog_new(); - gtk_window_set_title(GTK_WINDOW(dialog), - _("About LIRC Audacious Plugin")); - g_signal_connect(G_OBJECT(dialog),"destroy", - G_CALLBACK(gtk_widget_destroyed), - &dialog); - gtk_widget_realize(dialog); - - pixmap=gdk_pixmap_create_from_xpm_d(dialog->window, - NULL, NULL, lirc_image); - - about_credits_logo_box = gtk_hbox_new(TRUE, 0); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), - about_credits_logo_box, FALSE, FALSE, 0); - about_credits_logo_frame = gtk_frame_new(NULL); - gtk_frame_set_shadow_type(GTK_FRAME(about_credits_logo_frame), - GTK_SHADOW_OUT); - gtk_box_pack_start(GTK_BOX(about_credits_logo_box), - about_credits_logo_frame, FALSE, FALSE, 0); - - about_credits_logo = gtk_pixmap_new(pixmap, NULL); - gdk_pixmap_unref(pixmap); - - gtk_container_add(GTK_CONTAINER(about_credits_logo_frame), - about_credits_logo); - - gtk_container_border_width(GTK_CONTAINER(dialog),5); - - logo_text = g_string_new( "" ); - g_string_append( logo_text , _("LIRC Plugin ")); - g_string_append( logo_text , VERSION ); - g_string_append( logo_text , _("\n" -"A simple plugin that lets you control\n" -"Audacious using the LIRC remote control daemon\n\n" -"Adapted for Audacious usage by Tony Vroon \n" -"from the XMMS LIRC plugin by:\n" -"Carl van Schaik \n" -"Christoph Bartelmus \n" -"Andrew O. Shadoura \n" -"You can get LIRC information at:\n" -"http://lirc.org")); - - label=gtk_label_new( logo_text->str ); - g_string_free( logo_text, TRUE ); - - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),label, - TRUE,TRUE,10); - - bbox = gtk_hbutton_box_new(); - gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); - gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), - bbox, FALSE, FALSE, 0); - - button = gtk_button_new_with_label(_("Close")); - g_signal_connect_object(G_OBJECT(button), "clicked", - G_CALLBACK(about_close_cb), NULL,G_CONNECT_SWAPPED) ; - - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); - gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0); - gtk_widget_grab_default(button); - gtk_widget_grab_focus(button); - - win_set_icon(dialog, lirc_mini_xpm); - - gtk_widget_show_all(dialog); -} - -static void win_set_icon (GtkWidget *win, char** image) -{ - GdkAtom icon_atom; - glong data[2]; - - icon=gdk_pixmap_create_from_xpm_d(win->window, &icon_mask, - &win->style->bg[GTK_STATE_NORMAL], - image); - data[0] = GDK_WINDOW_XWINDOW(icon); - data[1] = GDK_WINDOW_XWINDOW(icon_mask); - - icon_atom = gdk_atom_intern ("KWM_WIN_ICON", FALSE); - gdk_property_change (win->window, icon_atom, icon_atom, 32, - GDK_PROP_MODE_REPLACE, (guchar *)data, 2); -} diff -Nru audacious-plugins-2.4.4/src/lirc/callbacks.c audacious-plugins-3.2/src/lirc/callbacks.c --- audacious-plugins-2.4.4/src/lirc/callbacks.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/lirc/callbacks.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -#include - -#include - -#include "common.h" - -void -on_reconnectcheck_toggled (GtkToggleButton *togglebutton, - GtkWidget *reconnectspin) -{ - gtk_widget_set_sensitive(reconnectspin, gtk_toggle_button_get_active(togglebutton)); -} - - -void -on_cancelbutton1_clicked (GtkButton *button, - gpointer user_data) -{ - gtk_widget_destroy(lirc_cfg); - lirc_cfg=NULL; -} - - -void -on_okbutton1_clicked (GtkButton *button, - gpointer user_data) -{ - b_enable_reconnect=(gint)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(g_object_get_data(G_OBJECT(lirc_cfg), "reconnectcheck"))); - reconnect_timeout=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(g_object_get_data(G_OBJECT(lirc_cfg), "reconnectspin"))); - save_cfg(); - gtk_widget_destroy(lirc_cfg); - lirc_cfg=NULL; -} diff -Nru audacious-plugins-2.4.4/src/lirc/common.h audacious-plugins-3.2/src/lirc/common.h --- audacious-plugins-2.4.4/src/lirc/common.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/lirc/common.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -extern GtkWidget *lirc_cfg; - -extern gint b_enable_reconnect; -extern gint reconnect_timeout; -extern gchar *aosd_font; - -void load_cfg(void); -void save_cfg(void); - -void configure(void); - -GtkWidget* create_lirc_cfg (void); - -void -on_reconnectcheck_toggled (GtkToggleButton *togglebutton, - GtkWidget *reconnectspin); -void -on_cancelbutton1_clicked (GtkButton *button, - gpointer user_data); -void -on_okbutton1_clicked (GtkButton *button, - gpointer user_data); - diff -Nru audacious-plugins-2.4.4/src/lirc/interface.c audacious-plugins-3.2/src/lirc/interface.c --- audacious-plugins-2.4.4/src/lirc/interface.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/lirc/interface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,109 +0,0 @@ -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include - -#include "common.h" - -GtkWidget* -create_lirc_cfg (void) -{ - GtkWidget *dialog_vbox1; - GtkWidget *notebook1; - GtkWidget *vbox2; - GtkWidget *frame1; - GtkWidget *alignment1; - GtkWidget *vbox3; - GtkWidget *hbox1; - GtkWidget *label3; - GtkWidget *reconnectcheck; - GtkWidget *reconnectspin; - GtkObject *reconnectspin_adj; - GtkWidget *label2; - GtkWidget *label1; - GtkWidget *dialog_action_area1; - GtkWidget *cancelbutton1; - GtkWidget *okbutton1; - - lirc_cfg = gtk_dialog_new (); - gtk_window_set_title (GTK_WINDOW (lirc_cfg), _("LIRC plugin settings")); - gtk_window_set_position (GTK_WINDOW (lirc_cfg), GTK_WIN_POS_CENTER_ON_PARENT); - gtk_window_set_resizable (GTK_WINDOW (lirc_cfg), FALSE); - gtk_window_set_type_hint (GTK_WINDOW (lirc_cfg), GDK_WINDOW_TYPE_HINT_DIALOG); - g_signal_connect(G_OBJECT(lirc_cfg),"destroy", G_CALLBACK(gtk_widget_destroyed), &lirc_cfg); - - dialog_vbox1 = GTK_DIALOG (lirc_cfg)->vbox; - - notebook1 = gtk_notebook_new (); - gtk_box_pack_start (GTK_BOX (dialog_vbox1), notebook1, TRUE, TRUE, 0); - - vbox2 = gtk_vbox_new (FALSE, 0); - gtk_container_add (GTK_CONTAINER (notebook1), vbox2); - - frame1 = gtk_frame_new (NULL); - gtk_box_pack_start (GTK_BOX (vbox2), frame1, TRUE, TRUE, 0); - - alignment1 = gtk_alignment_new (0.5, 0.5, 1, 1); - gtk_container_add (GTK_CONTAINER (frame1), alignment1); - gtk_alignment_set_padding (GTK_ALIGNMENT (alignment1), 0, 0, 12, 0); - - vbox3 = gtk_vbox_new (FALSE, 0); - gtk_container_add (GTK_CONTAINER (alignment1), vbox3); - - reconnectcheck = gtk_check_button_new_with_mnemonic (_("Reconnect to LIRC server")); - gtk_box_pack_start (GTK_BOX (vbox3), reconnectcheck, FALSE, FALSE, 0); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (reconnectcheck), (gboolean)b_enable_reconnect); - - hbox1 = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (vbox3), hbox1, TRUE, TRUE, 0); - - label3 = gtk_label_new (_("Timeout before reconnecting (seconds): ")); - gtk_box_pack_start (GTK_BOX (hbox1), label3, FALSE, FALSE, 17); - - reconnectspin_adj = gtk_adjustment_new (reconnect_timeout, 1, 100, 1, 10, 10); - reconnectspin = gtk_spin_button_new (GTK_ADJUSTMENT (reconnectspin_adj), 1, 0); - gtk_box_pack_start (GTK_BOX (hbox1), reconnectspin, TRUE, TRUE, 15); - - label2 = gtk_label_new (_("Reconnect")); - gtk_frame_set_label_widget (GTK_FRAME (frame1), label2); - gtk_label_set_use_markup (GTK_LABEL (label2), TRUE); - - label1 = gtk_label_new (_("Connection")); - gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label1); - - dialog_action_area1 = GTK_DIALOG (lirc_cfg)->action_area; - gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_END); - - cancelbutton1 = gtk_button_new_from_stock ("gtk-cancel"); - gtk_dialog_add_action_widget (GTK_DIALOG (lirc_cfg), cancelbutton1, GTK_RESPONSE_CANCEL); - GTK_WIDGET_SET_FLAGS (cancelbutton1, GTK_CAN_DEFAULT); - - okbutton1 = gtk_button_new_from_stock ("gtk-ok"); - gtk_dialog_add_action_widget (GTK_DIALOG (lirc_cfg), okbutton1, GTK_RESPONSE_OK); - GTK_WIDGET_SET_FLAGS (okbutton1, GTK_CAN_DEFAULT); - - g_signal_connect (G_OBJECT (reconnectcheck), "toggled", - G_CALLBACK (on_reconnectcheck_toggled), - G_OBJECT (reconnectspin)); - g_signal_connect (G_OBJECT (cancelbutton1), "clicked", - G_CALLBACK (on_cancelbutton1_clicked), - NULL); - g_signal_connect (G_OBJECT (okbutton1), "clicked", - G_CALLBACK (on_okbutton1_clicked), - NULL); - gtk_widget_set_sensitive(reconnectspin, (gboolean)b_enable_reconnect); - - g_object_set_data(G_OBJECT(lirc_cfg), "reconnectcheck", G_OBJECT(reconnectcheck)); - g_object_set_data(G_OBJECT(lirc_cfg), "reconnectspin", G_OBJECT(reconnectspin)); - - return lirc_cfg; -} - diff -Nru audacious-plugins-2.4.4/src/lirc/lirc.c audacious-plugins-3.2/src/lirc/lirc.c --- audacious-plugins-2.4.4/src/lirc/lirc.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/lirc/lirc.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,367 +0,0 @@ -/* Lirc plugin - - Copyright (C) 2005 Audacious development team - - Copyright (c) 1998-1999 Carl van Schaik (carl@leg.uct.ac.za) - - Copyright (C) 2000 Christoph Bartelmus (xmms@bartelmus.de) - - some code was stolen from: - IRman plugin for xmms by Charles Sielski (stray@teklabs.net) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#include "config.h" - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include - -#include "lirc.h" - -#include "common.h" - -const char *plugin_name="LIRC Plugin"; - -GeneralPlugin lirc_plugin = { - .description = "LIRC Plugin", - .init = init, - .about = about, - .configure = configure, - .cleanup = cleanup -}; - -GeneralPlugin *lirc_gplist[] = { &lirc_plugin, NULL }; -DECLARE_PLUGIN(lirc, NULL, NULL, NULL, NULL, NULL, lirc_gplist, NULL, NULL); - -int lirc_fd=-1; -struct lirc_config *config=NULL; -gint tracknr=0; -gint mute=0; /* mute flag */ -gint mute_vol=0; /* holds volume before mute */ - -gint input_tag; - -char track_no[64]; -int track_no_pos; - -gint tid; - -void init_lirc(void) -{ - int flags; - - if((lirc_fd=lirc_init("audacious",1))==-1) - { - fprintf(stderr,_("%s: could not init LIRC support\n"), - plugin_name); - return; - } - if(lirc_readconfig(NULL,&config,NULL)==-1) - { - lirc_deinit(); - fprintf(stderr, - _("%s: could not read LIRC config file\n" - "%s: please read the documentation of LIRC\n" - "%s: how to create a proper config file\n"), - plugin_name,plugin_name,plugin_name); - return; - } - input_tag=gdk_input_add(lirc_fd,GDK_INPUT_READ, - lirc_input_callback,NULL); - fcntl(lirc_fd,F_SETOWN,getpid()); - flags=fcntl(lirc_fd,F_GETFL,0); - if(flags!=-1) - { - fcntl(lirc_fd,F_SETFL,flags|O_NONBLOCK); - } - fflush(stdout); -} - -void init(void) -{ - load_cfg(); - init_lirc(); - track_no_pos=0; - tid=0; -} - -gboolean reconnect_lirc(gpointer data) -{ - fprintf(stderr,_("%s: trying to reconnect...\n"),plugin_name); - init(); - return (lirc_fd==-1); -} - -gboolean jump_to(gpointer data) -{ - aud_drct_pl_set_pos(atoi(track_no)-1); - track_no_pos=0; - tid=0; - return FALSE; -} - -void lirc_input_callback(gpointer data,gint source, - GdkInputCondition condition) -{ - char *code; - char *c; - gint playlist_time,playlist_pos,output_time,v; - int ret; - char *ptr; - gint balance; -#if 0 - gboolean show_pl; -#endif - int n; - gchar *utf8_title_markup; - - while((ret=lirc_nextcode(&code))==0 && code!=NULL) - { - while((ret=lirc_code2char(config,code,&c))==0 && c!=NULL) - { - if(strcasecmp("PLAY",c)==0) - { - aud_drct_play(); - } - else if(strcasecmp("STOP",c)==0) - { - aud_drct_stop(); - } - else if(strcasecmp("PAUSE",c)==0) - { - aud_drct_pause(); - } - else if(strcasecmp("PLAYPAUSE",c) == 0) - { - if(aud_drct_get_playing()) - aud_drct_pause(); - else - aud_drct_play(); - } - else if(strncasecmp("NEXT",c,4)==0) - { - ptr=c+4; - while(isspace(*ptr)) ptr++; - n=atoi(ptr); - - if(n<=0) n=1; - for(;n>0;n--) - { - aud_drct_pl_next(); - } - } - else if(strncasecmp("PREV",c,4)==0) - { - ptr=c+4; - while(isspace(*ptr)) ptr++; - n=atoi(ptr); - - if(n<=0) n=1; - for(;n>0;n--) - { - aud_drct_pl_prev(); - } - } - else if(strcasecmp("SHUFFLE",c)==0) - { - aud_drct_pl_shuffle_toggle(); - } - else if(strcasecmp("REPEAT",c)==0) - { - aud_drct_pl_repeat_toggle(); - } - else if(strncasecmp("FWD",c,3)==0) - { - ptr=c+3; - while(isspace(*ptr)) ptr++; - n=atoi(ptr)*1000; - - if(n<=0) n=5000; - output_time=aud_drct_get_time(); - playlist_pos=aud_drct_pl_get_pos(); - playlist_time=aud_drct_pl_get_time(playlist_pos); - if(playlist_time-output_time (100-n)) v=100-n; - aud_drct_set_volume_main(v+n); - } - else if(strncasecmp("VOL_DOWN",c,8)==0) - { - ptr=c+8; - while (isspace(*ptr)) ptr++; - n=atoi(ptr); - if(n<=0) n=5; - - aud_drct_get_volume_main(&v); - if(v100) balance=100; - aud_drct_set_volume_balance(balance); - } - else if(strcasecmp("BAL_CENTER",c)==0) - { - balance=0; - aud_drct_set_volume_balance(balance); - } - else if(strcasecmp("LIST",c)==0) - { -#if 0 - show_pl=aud_drct_pl_win_is_visible(); - show_pl=(show_pl) ? 0:1; - aud_drct_pl_win_toggle(show_pl); -#endif - } - else if(strcasecmp("PLAYLIST_CLEAR",c)==0) - { - aud_drct_stop(); - aud_drct_pl_clear(); - } - else if(strncasecmp("PLAYLIST_ADD ",c,13)==0) - { - GList list; - list.prev=list.next=NULL; - list.data=c+13; - aud_drct_pl_add_list (& list, -1); - } - else if((strlen(c)==1) && ((*c>='0') || (*c<='9'))) - { - if (track_no_pos<63) - { - if (tid) g_source_remove(tid); - track_no[track_no_pos++]=*c; - track_no[track_no_pos]=0; - tid=g_timeout_add(1500, jump_to, NULL); - utf8_title_markup = g_markup_printf_escaped( - "%s", aosd_font, track_no); - hook_call("aosd toggle", utf8_title_markup); - } - } - else - { - fprintf(stderr,_("%s: unknown command \"%s\"\n"), - plugin_name,c); - } - } - free(code); - if(ret==-1) break; - } - if(ret==-1) - { - /* something went badly wrong */ - fprintf(stderr,_("%s: disconnected from LIRC\n"),plugin_name); - cleanup(); - if(b_enable_reconnect) - { - fprintf(stderr,_("%s: will try reconnect every %d seconds...\n"),plugin_name,reconnect_timeout); - g_timeout_add(1000*reconnect_timeout, reconnect_lirc, NULL); - } - } -} - -void cleanup() -{ - if(config) - { - if(input_tag) - gtk_input_remove(input_tag); - - config=NULL; - } - if(lirc_fd!=-1) - { - lirc_deinit(); - lirc_fd=-1; - } - g_free(aosd_font); -} diff -Nru audacious-plugins-2.4.4/src/lirc/lirc_cfg.c audacious-plugins-3.2/src/lirc/lirc_cfg.c --- audacious-plugins-2.4.4/src/lirc/lirc_cfg.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/lirc/lirc_cfg.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ -#include - -#include -#include -#include -#include - -#include "common.h" - -GtkWidget *lirc_cfg = NULL; - -gint b_enable_reconnect; -gint reconnect_timeout; -gchar *aosd_font = NULL; - -void load_cfg(void) -{ - mcs_handle_t *db; - db = aud_cfg_db_open(); - aud_cfg_db_get_int(db, LIRC_CFGID, "enable_reconnect", &b_enable_reconnect); - aud_cfg_db_get_int(db, LIRC_CFGID, "reconnect_timeout", &reconnect_timeout); - if (!aud_cfg_db_get_string(db, "aosd", "text_fonts_name_0", &aosd_font)) - aosd_font = g_strdup("Sans 26"); - if (!reconnect_timeout) - { - reconnect_timeout = 5; - b_enable_reconnect = 1; - } - aud_cfg_db_close(db); -} - -void save_cfg(void) -{ - mcs_handle_t *db; - db = aud_cfg_db_open(); - aud_cfg_db_set_int(db, LIRC_CFGID, "enable_reconnect", b_enable_reconnect); - aud_cfg_db_set_int(db, LIRC_CFGID, "reconnect_timeout", reconnect_timeout); - aud_cfg_db_close(db); -} - -void configure(void) -{ - if (lirc_cfg) - { - gtk_window_present(GTK_WINDOW(lirc_cfg)); - return; - } - load_cfg(); - lirc_cfg = create_lirc_cfg(); - gtk_widget_show_all(lirc_cfg); -} diff -Nru audacious-plugins-2.4.4/src/lirc/lirc.h audacious-plugins-3.2/src/lirc/lirc.h --- audacious-plugins-2.4.4/src/lirc/lirc.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/lirc/lirc.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -/* Lirc Plugin - - Copyright (C) 2005 Audacious development team - - Copyright (c) 1998-1999 Carl van Schaik (carl@leg.uct.ac.za) - - Copyright (C) 2000 Christoph Bartelmus (xmms@bartelmus.de) - - some code was stolen from: - IRman plugin for xmms by Charles Sielski (stray@teklabs.net) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#include - -void init(void); -void cleanup(void); -void about(void); - -void lirc_input_callback(gpointer data,gint source, - GdkInputCondition condition); diff -Nru audacious-plugins-2.4.4/src/lirc/lirc_image.h audacious-plugins-3.2/src/lirc/lirc_image.h --- audacious-plugins-2.4.4/src/lirc/lirc_image.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/lirc/lirc_image.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ -/* XPM */ -static char *lirc_image[] = { -/* width height num_colors chars_per_pixel */ -" 288 63 26 1", -/* colors */ -". c #000080", -"# c #080880", -"a c #101088", -"b c #181888", -"c c #202090", -"d c #282890", -"e c #282c98", -"f c #303098", -"g c #383898", -"h c #383ca0", -"i c #4848a0", -"j c #5050a8", -"k c #6060b0", -"l c #686cb8", -"m c #7070b8", -"n c #7878b8", -"o c #9898c8", -"p c #a0a4d0", -"q c #b0b4d8", -"r c #c8cce0", -"s c #d0d4e8", -"t c #d8d8e8", -"u c #e0e0f0", -"v c #e8ecf0", -"w c #f0f4f8", -"x c #f8fcf8", -/* pixels */ -"................................................................................................................................................................................................................................................................................................", -"................................................................................................................................................................................................................................................................................................", -"................................................................................................................................................................................................................................................................................................", -"................................................................................................................................................................................................................................................................................................", -"................................................................................................................................................................................................................................................................................................", -"..............................................ff....................................afb.........................................................................................................................................................................................................", -"..............................................xxh...................................lxo.........................................................................................................................................................................................................", -"..............................................xxxs#.................................lxo.........................................................................................................................................................................................................", -"..............................................xxxxxh................................lxo.............................................................................................................................................................................bmnrrrpng...................", -"..............................................xxxxxxu#..............................lxo...................................................................xxxxxxxxx....................xxxxxxxxxxxxxxxxxxxxx.......xxxxxxxxxxxxxxxxxxxrnb........................nxxxxxxxxxxxxxxm...............", -"..............................................xxxxxxxxl.............................lxo...................................................................xxxxxxxxx....................xxxxxxxxxxxxxxxxxxxxx.......xxxxxxxxxxxxxxxxxxxxxxxp....................txxxxxxxxxxxxxxxxxxvb............", -"..............................................xxxxxxxxxua...........................lxo...................................................................xxxxxxxxx....................xxxxxxxxxxxxxxxxxxxxx.......xxxxxxxxxxxxxxxxxxxxxxxxxi................pxxxxxxxxxxxxxxxxxxxxxxx...........", -"..............................................xxxxxxxxxxxl..........................lxo...................................................................xxxxxxxxx....................xxxxxxxxxxxxxxxxxxxxx.......xxxxxxxxxxxxxxxxxxxxxxxxxxp..............vxxxxxxxxxxxxxxxxxxxxxxxx...........", -"..............................................xxxxxxxxxxxxvb........................lxo...................................................................xxxxxxxxx....................xxxxxxxxxxxxxxxxxxxxx.......xxxxxxxxxxxxxxxxxxxxxxxxxxxg............xxxxxxxxxxxxxxxxxxxxxxxxxx...........", -"..............................................xxxxxxxxxxxxxxo.......................lxo...................................................................xxxxxxxxx....................xxxxxxxxxxxxxxxxxxxxx.......xxxxxxxxxxxxxxxxxxxxxxxxxxxx...........vxxxxxxxxxxxxxxxxxxxxxxxxxx...........", -"..............................................xxxxxxxxxxxxxxxvc.....................lxo...................................................................xxxxxxxxx....................nnnnnnxxxxxxxxxnnnnnn.......xxxxxxxxxnnnnnnrxxxxxxxxxxxxi.........kxxxxxxxxxxxxpg....mxxxxxxxx...........", -"..............................................xxxxxxxxxxxxxxxxxo....................lxo...................................................................xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxx.........xxxxxxxxxxr.........xxxxxxxxxxxn.........bvxxxxx...........", -"..............................................xxxxxxxxxxxxxxxxxxwd..................lxo...................................................................xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxx..........xxxxxxxxxx........rxxxxxxxxxxb............exxxx...........", -"..............................................xxxxxxxxxxxxxxxxxwxxq.................lxo...................................................................xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxx..........rxxxxxxxxx........xxxxxxxxxxb...............vxx...........", -"..............................................xxxxxxxxxxxxxxxxxxxxxwh...............lxo...................................................................xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxx..........nxxxxxxxxx.......ixxxxxxxxxp.................px...........", -"..............................................xxxxxxxxxxxxxxxxxxxxwxxq..............lxo...................................................................xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxx..........nxxxxxxxxx.......vxxxxxxxxx...............................", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxxxh............lxo...................................................................xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxx..........txxxxxxxxr.......xxxxxxxxxr...............................", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxxxxq...........lxo...................................................................xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxx..........xxxxxxxxxe.......xxxxxxxxxe...............................", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxxxxxxh.........lxo...................................................................xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxx.........xxxxxxxxxx.......bxxxxxxxxx................................", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxxxxxxxs#.......lxo...................................................................xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxx......grxxxxxxxxxxk.......gxxxxxxxxx................................", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxl......lxo...................................................................xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxxxxxxxxxxxxxxxxxxxt........nxxxxxxxxx................................", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxu#....lxo...................................................................xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxxxxxxxxxxxxxxxxxxv.........nxxxxxxxxx................................", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxl...lxo...................................................................xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxxxxxxxxxxxxxxxxxp..........nxxxxxxxxx................................", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxua.lxo...................................................................xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxxxxxxxxxxxxxxxxb...........kxxxxxxxxx................................", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxllxo...................................................................xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxxxxxxxxxxxxxxxe............gxxxxxxxxx................................", -"...looooooooooooooooooooooooooooooooooooooooooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwxsoooooooooooooooooooooooooooooooooooooooooooooooooooooooob..........xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxxxxxxxxxxxxxxxx.............xxxxxxxxxb...............................", -"...sxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf..........xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxx....vxxxxxxxxxx............xxxxxxxxxp...............................", -"...looooooooooooooooooooooooooooooooooooooooooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsxsoooooooooooooooooooooooooooooooooooooooooooooooooooooooob..........xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxx.....xxxxxxxxxxr...........xxxxxxxxxx...............................", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxs#lxo...................................................................xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxx.....bxxxxxxxxxxj..........nxxxxxxxxxn.................er...........", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxh..lxo...................................................................xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxx......nxxxxxxxxxxb..........xxxxxxxxxx................pxx...........", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxq#...lxo...................................................................xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxx.......vxxxxxxxxxx..........vxxxxxxxxxx..............vxxx...........", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxh.....lxo...................................................................xxxxxxxxx..........................xxxxxxxxx.............xxxxxxxxx........xxxxxxxxxxv.........bxxxxxxxxxxxg..........nxxxxx...........", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxq.......lxo...................................................................xxxxxxxxxxxxxxxxxxxxxxxxxg...ggggggxxxxxxxxxgggggg.......xxxxxxxxx........bxxxxxxxxxxp.........txxxxxxxxxxxxn.....erxxxxxxx...........", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxxxxxxxh........lxo...................................................................xxxxxxxxxxxxxxxxxxxxxxxxxg...xxxxxxxxxxxxxxxxxxxxx.......xxxxxxxxx.........pxxxxxxxxxxe.........xxxxxxxxxxxxxxxxxxxxxxxxxxx...........", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxxxxxq..........lxo...................................................................xxxxxxxxxxxxxxxxxxxxxxxxxg...xxxxxxxxxxxxxxxxxxxxx.......xxxxxxxxx..........vxxxxxxxxxx.........bxxxxxxxxxxxxxxxxxxxxxxxxxx...........", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxxxxh...........lxo...................................................................xxxxxxxxxxxxxxxxxxxxxxxxxg...xxxxxxxxxxxxxxxxxxxxx.......xxxxxxxxx...........xxxxxxxxxxx.........bxxxxxxxxxxxxxxxxxxxxxxxxx...........", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxxq.............lxo...................................................................xxxxxxxxxxxxxxxxxxxxxxxxxg...xxxxxxxxxxxxxxxxxxxxx.......xxxxxxxxx...........exxxxxxxxxxr..........vxxxxxxxxxxxxxxxxxxxxxxx...........", -"..............................................xxxxxxxxxxxxxxxxxxxxxxxh..............lxo...................................................................xxxxxxxxxxxxxxxxxxxxxxxxxg...xxxxxxxxxxxxxxxxxxxxx.......xxxxxxxxx............pxxxxxxxxxxj..........ixxxxxxxxxxxxxxxxxxxvb............", -"..............................................xxxxxxxxxxxxxxxxxxxxxq................lxo...................................................................xxxxxxxxxxxxxxxxxxxxxxxxxg...xxxxxxxxxxxxxxxxxxxxx.......xxxxxxxxx.............xxxxxxxxxxxb...........evxxxxxxxxxxxxxxn...............", -"..............................................xxxxxxxxxxxxxxxxxxxxh.................lxo.............................................................................................................................................................................kprxxxvrnb..................", -"..............................................xxxxxxxxxxxxxxxxxxq...................lxo.........................................................................................................................................................................................................", -"..............................................xxxxxxxxxxxxxxxxxh....................lxo.........................................................................................................................................................................................................", -"..............................................xxxxxxxxxxxxwxxq......................lxo.........................................................................................................................................................................................................", -"..............................................xxxxxxxxxxxxxwd.......................lxo.........................................................................................................................................................................................................", -"..............................................xxxxxxxxxwxxq.........................lxo.........................................................................................................................................................................................................", -"..............................................xxxxxxxxxxwd..........................lxo.........................................................................................................................................................................................................", -"..............................................xxxxxxwxxq............................lxo.........................................................................................................................................................................................................", -"..............................................xxxxxxxwd.............................lxo............................................................nx...nx....................gxxx.......txx......................xn...gxxxx.....................xr..........gxxxp............xg...........xg...", -"..............................................xxxwxxo...............................lxo............................................................nx...gn.nknr..nb.ngkn.bn#...gx..nknr.gxrkknbkeprm..n.n.brp...ppxn...gx..xn.brp..ngpn.pm..grn.bxtn.brp.....xp..p.grn..ngpp.kxpngnbn.krn..xg...", -"..............................................xxxxwc................................lxo............................................................nx...nx.xxnxt.xg.xn.xpxp....gx..xxnxtgxrkrxrpkiixm.xtr.xipx.xvgxn...gx.gxb.xipx.xvnxtpx.gxivxbxtn.xipx...gx....gxivx.xvnxpkxpnnxrrnxgxv.xg...", -"..............................................wxxo..................................lvo............................................................nx...nx.xr.rx.xg.xn.bxv.....gx..xr.rx.xn.rx..exxxn.x..nxxxx.xg.xn...gxxxk.nxxxx.xn.xg.x.rx.gx.xr.nxxxx...gx....rx.gx.xn.xr.xg.nx..xx.nx.xg...", -"...............................................vc..................................................................................................nx...nx.xr.rx.xn.xn.rxxe....gx..xr.rx.xn.rx..xn.xn.x..ix..b.xp.xn...gx.rxbix..b.xn.xg.x.nx.nx.xr.ix..b....xr.brnx.nx.xn.xr.xg.nx..rx.rx.xg...", -"...................................................................................................................................................nxxxxnx.xr.rx.rxvxnjx.nx...gxxx.xr.rx.xn.rx..pxxxn.x...rxxx.pxxxn...gx..xx.rxxx.xn.xg.x..vxxi.nxx.rxxx....bxxxn.vxxi.xn.xr.vxxnx...xxxe.xg...", -"................................................................................................................................................................................................................................................................................................", -"................................................................................................................................................................................................................................................................................................", -"................................................................................................................................................................................................................................................................................................", -"................................................................................................................................................................................................................................................................................................", -"................................................................................................................................................................................................................................................................................................" -}; diff -Nru audacious-plugins-2.4.4/src/lirc/lirc_mini.xpm audacious-plugins-3.2/src/lirc/lirc_mini.xpm --- audacious-plugins-2.4.4/src/lirc/lirc_mini.xpm 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/lirc/lirc_mini.xpm 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -/* XPM */ -static char * lirc_mini_xpm[] = { -"16 16 50 1", -" c None", -". c #000080", -"+ c #4748A2", -"@ c #7072B7", -"# c #060683", -"$ c #4648A3", -"% c #303096", -"& c #5E5FAD", -"* c #F8FCF8", -"= c #C1C4DE", -"- c #34359A", -"; c #5D5FAF", -"> c #F0F4F4", -", c #8588C1", -"' c #0C0C86", -") c #D5D8E7", -"! c #020281", -"~ c #F5F9F7", -"{ c #9DA0CD", -"] c #19198C", -"^ c #E0E4ED", -"/ c #5B5DAD", -"( c #010180", -"_ c #F7FBF8", -": c #B7BAD9", -"< c #252592", -"[ c #9293C6", -"} c #ECF0F3", -"| c #B7BADA", -"1 c #DCE0EB", -"2 c #A9ACD3", -"3 c #F4F8F6", -"4 c #9598C9", -"5 c #141489", -"6 c #D1D4E6", -"7 c #4143A0", -"8 c #F1F5F5", -"9 c #8689C2", -"0 c #0F0F87", -"a c #CACDE2", -"b c #35379A", -"c c #EDF0F3", -"d c #7678BA", -"e c #030381", -"f c #B7B9D9", -"g c #2A2B94", -"h c #292A94", -"i c #6365B0", -"j c #050582", -"k c #242592", -".+@#.........$%.", -".&*=-........;*.", -".&**>,'......;*.", -".&****)+!....;*.", -".&*****~{]...;*.", -".&*******^/(.;*.", -".&********_:<;*.", -"[[**********}|*[", -"[[**********12*[", -".&********345;*.", -".&*******67..;*.", -".&*****890...;*.", -".&***_ab(....;*.", -".&**cde......;*.", -".&_fg........;*.", -".hij.........k]."}; diff -Nru audacious-plugins-2.4.4/src/lirc/Makefile audacious-plugins-3.2/src/lirc/Makefile --- audacious-plugins-2.4.4/src/lirc/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/lirc/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -PLUGIN = lirc${PLUGIN_SUFFIX} - -SRCS = about.c \ - lirc.c \ - lirc_cfg.c \ - callbacks.c \ - interface.c - -include ../../buildsys.mk -include ../../extra.mk - -plugindir := ${plugindir}/${GENERAL_PLUGIN_DIR} - -CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${MOWGLI_CFLAGS} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} -llirc_client diff -Nru audacious-plugins-2.4.4/src/lyricwiki/lyricwiki.c audacious-plugins-3.2/src/lyricwiki/lyricwiki.c --- audacious-plugins-2.4.4/src/lyricwiki/lyricwiki.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/lyricwiki/lyricwiki.c 2012-01-20 19:48:30.000000000 +0000 @@ -28,23 +28,24 @@ #include #include -#include #include #include #include #include #include #include -#include #include +#include #include #include #include #include +#include #include #include +#include "config.h" #include "urlencode.h" /* @@ -115,7 +116,7 @@ g_regex_match(reg, (gchar *) lyric, G_REGEX_MATCH_NEWLINE_ANY, &match_info); ret = g_match_info_fetch(match_info, 2); - if (!g_utf8_collate(ret, "\n\n\n\n")) + if (!g_utf8_collate(ret, "\n\n")) { g_free(ret); ret = NULL; @@ -158,7 +159,7 @@ root = xmlDocGetRootElement(doc); - MOWGLI_ITER_FOREACH(cur, root->xmlChildrenNode) + for (cur = root->xmlChildrenNode; cur; cur = cur->next) { if (xmlStrEqual(cur->name, (xmlChar *) "url")) { @@ -180,6 +181,49 @@ return uri; } +gboolean +check_current_track(Tuple *tu) +{ + gboolean ret = TRUE; + gint playlist, pos, i; + gint fields[] = {FIELD_ARTIST, FIELD_TITLE}; + Tuple *cu = NULL; + + if (tu == NULL) + return FALSE; + + playlist = aud_playlist_get_playing(); + pos = aud_playlist_get_position(playlist); + cu = aud_playlist_entry_get_tuple(playlist, pos, FALSE); + + if (cu == NULL) + return FALSE; + + for (i = 0; i < sizeof(fields)/sizeof(gint); i++) + { + gchar * string1 = tuple_get_str (tu, fields[i], NULL); + gchar * string2 = tuple_get_str (cu, fields[i], NULL); + + if (string1 == NULL && string2 == NULL) + continue; + + if (string1 == NULL || string2 == NULL || + strcmp(string1, string2) != 0) + { + ret = FALSE; + str_unref (string1); + str_unref (string2); + break; + } + + str_unref (string1); + str_unref (string2); + } + + tuple_unref(cu); + return ret; +} + void update_lyrics_window(const Tuple *tu, const gchar *lyrics); gboolean @@ -193,8 +237,10 @@ g_free(buf); } - update_lyrics_window(tu, lyrics); - mowgli_object_unref(tu); + if (check_current_track(tu)) + update_lyrics_window(tu, lyrics); + + tuple_unref (tu); if (lyrics != NULL) g_free(lyrics); @@ -210,17 +256,31 @@ uri = scrape_uri_from_lyricwiki_search_result(buf, len); if (uri == NULL) { - update_lyrics_window(tu, NULL); - mowgli_object_unref(tu); + if (check_current_track(tu)) + update_lyrics_window(tu, NULL); - return FALSE; + goto CLEANUP; } - vfs_async_file_get_contents(uri, (VFSConsumer) get_lyrics_step_3, tu); + if (check_current_track(tu)) + { + update_lyrics_window(tu, _("\nLooking for lyrics...")); + vfs_async_file_get_contents(uri, (VFSConsumer) get_lyrics_step_3, tu); + } + else + { + g_free(uri); + goto CLEANUP; + } g_free(buf); return TRUE; + +CLEANUP: + g_free(buf); + tuple_unref (tu); + return FALSE; } void @@ -228,40 +288,37 @@ { gchar *uri; gchar *artist, *title; - Tuple *tuple = tuple_copy(tu); - artist = lyricwiki_url_encode(tuple_get_string(tu, FIELD_ARTIST, NULL)); - title = lyricwiki_url_encode(tuple_get_string(tu, FIELD_TITLE, NULL)); + gchar * artist0 = tuple_get_str (tu, FIELD_ARTIST, NULL); + gchar * title0 = tuple_get_str (tu, FIELD_TITLE, NULL); + artist = lyricwiki_url_encode (artist0); + title = lyricwiki_url_encode (title0); + str_unref (artist0); + str_unref (title0); uri = g_strdup_printf("http://lyrics.wikia.com/api.php?action=lyrics&artist=%s&song=%s&fmt=xml", artist, title); g_free(artist); g_free(title); - vfs_async_file_get_contents(uri, (VFSConsumer) get_lyrics_step_2, tuple); + update_lyrics_window(tu, _("\nConnecting to lyrics.wikia.com...")); + vfs_async_file_get_contents(uri, (VFSConsumer) get_lyrics_step_2, (Tuple *) tu); g_free(uri); } -GtkWidget *window, *textview; +GtkWidget *scrollview, *vbox; +GtkWidget *textview; GtkTextBuffer *textbuffer; -static gboolean window_delete(); - GtkWidget * build_widget(void) { - GtkWidget *scrollview, *vbox; - - window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(window), _("LyricWiki")); - gtk_window_set_default_size(GTK_WINDOW(window), 300, 500); - textview = gtk_text_view_new(); gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), FALSE); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(textview), FALSE); - gtk_text_view_set_left_margin(GTK_TEXT_VIEW(textview), 12); - gtk_text_view_set_right_margin(GTK_TEXT_VIEW(textview), 12); + gtk_text_view_set_left_margin(GTK_TEXT_VIEW(textview), 4); + gtk_text_view_set_right_margin(GTK_TEXT_VIEW(textview), 4); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(textview), GTK_WRAP_WORD); textbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview)); @@ -273,29 +330,23 @@ gtk_box_pack_start(GTK_BOX(vbox), scrollview, TRUE, TRUE, 0); - gtk_container_add(GTK_CONTAINER(window), vbox); - gtk_widget_show(textview); gtk_widget_show(scrollview); gtk_widget_show(vbox); - gtk_widget_show(window); gtk_text_buffer_create_tag(GTK_TEXT_BUFFER(textbuffer), "weight_bold", "weight", PANGO_WEIGHT_BOLD, NULL); gtk_text_buffer_create_tag(GTK_TEXT_BUFFER(textbuffer), "size_x_large", "scale", PANGO_SCALE_X_LARGE, NULL); gtk_text_buffer_create_tag(GTK_TEXT_BUFFER(textbuffer), "style_italic", "style", PANGO_STYLE_ITALIC, NULL); - g_signal_connect(G_OBJECT(window), "delete-event", G_CALLBACK(window_delete), NULL); - - return window; + g_signal_connect (vbox, "destroy", (GCallback) gtk_widget_destroyed, & vbox); + return vbox; } void update_lyrics_window(const Tuple *tu, const gchar *lyrics) { GtkTextIter iter; - const gchar *artist, *title; const gchar *real_lyrics; - gchar *f_name, *f_ext = NULL; if (textbuffer == NULL) return; @@ -304,27 +355,14 @@ gtk_text_buffer_get_start_iter(GTK_TEXT_BUFFER(textbuffer), &iter); - title = tuple_get_string(tu, FIELD_TITLE, NULL); - artist = tuple_get_string(tu, FIELD_ARTIST, NULL); + gchar * title = tuple_get_str (tu, FIELD_TITLE, NULL); + gchar * artist = tuple_get_str (tu, FIELD_ARTIST, NULL); - if (title == NULL) - { - f_name = (gchar *) tuple_get_string(tu, FIELD_FILE_NAME, NULL); - f_ext = (gchar *) tuple_get_string(tu, FIELD_FILE_EXT, NULL); - - title = g_strdup(f_name); + if (! title) + title = tuple_get_str (tu, FIELD_FILE_NAME, NULL); - f_name = g_strrstr(title, f_ext); - if (f_name != NULL && f_name != title) - { - f_name--; - f_name[0] = '\0'; - } - } gtk_text_buffer_insert_with_tags_by_name(GTK_TEXT_BUFFER(textbuffer), &iter, title, strlen(title), "weight_bold", "size_x_large", NULL); - if (f_ext != NULL) - g_free((gpointer) title); gtk_text_buffer_insert(GTK_TEXT_BUFFER(textbuffer), &iter, "\n", 1); @@ -342,56 +380,60 @@ gtk_text_buffer_get_start_iter(GTK_TEXT_BUFFER(textbuffer), &iter); gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(textview), &iter, 0, TRUE, 0, 0); + + str_unref (title); + str_unref (artist); } void lyricwiki_playback_began(void) { gint playlist, pos; - const Tuple *tu; if (!aud_drct_get_playing()) return; playlist = aud_playlist_get_playing(); pos = aud_playlist_get_position(playlist); - tu = aud_playlist_entry_get_tuple (playlist, pos, FALSE); + Tuple * tu = aud_playlist_entry_get_tuple (playlist, pos, FALSE); get_lyrics_step_1(tu); } -static void -init(void) +static gboolean init (void) { - hook_associate("playback begin", (HookFunction) lyricwiki_playback_began, NULL); + hook_associate("title change", (HookFunction) lyricwiki_playback_began, NULL); + hook_associate("playback ready", (HookFunction) lyricwiki_playback_began, NULL); build_widget(); lyricwiki_playback_began(); + return TRUE; } static void cleanup(void) { - hook_dissociate("playback begin", (HookFunction) lyricwiki_playback_began); + hook_dissociate("title change", (HookFunction) lyricwiki_playback_began); + hook_dissociate("playback ready", (HookFunction) lyricwiki_playback_began); - gtk_widget_destroy(window); - window = NULL; + if (vbox) + gtk_widget_destroy (vbox); textbuffer = NULL; } -GeneralPlugin lyricwiki = +static gpointer +get_widget(void) { - .description = "LyricWiki", + if (! vbox) + build_widget (); + return vbox; +} + +AUD_GENERAL_PLUGIN +( + .name = "LyricWiki", .init = init, .cleanup = cleanup, -}; - -GeneralPlugin *lyricwiki_gplist[] = { &lyricwiki, NULL }; -SIMPLE_GENERAL_PLUGIN(lyricwiki, lyricwiki_gplist); - -static gboolean window_delete(void) -{ - aud_general_plugin_enable (aud_plugin_by_header (& lyricwiki), FALSE); - return TRUE; -} + .get_widget = get_widget, +) diff -Nru audacious-plugins-2.4.4/src/lyricwiki/Makefile audacious-plugins-3.2/src/lyricwiki/Makefile --- audacious-plugins-2.4.4/src/lyricwiki/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/lyricwiki/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -8,5 +8,5 @@ plugindir := ${plugindir}/${GENERAL_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${ARCH_DEFINES} ${XML_CFLAGS} -I../.. +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${XML_CFLAGS} -I../.. LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${XML_LIBS} diff -Nru audacious-plugins-2.4.4/src/m3u/m3u.c audacious-plugins-3.2/src/m3u/m3u.c --- audacious-plugins-2.4.4/src/m3u/m3u.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/m3u/m3u.c 2012-01-20 19:48:30.000000000 +0000 @@ -33,60 +33,50 @@ gchar a; while ((a = * text ++)) - { if (a != c) * set ++ = a; - } * set = 0; } -static gchar * read_win_text (const gchar * path) +static gchar * read_win_text (VFSFile * file) { - void * raw; - gint64 size; - - vfs_file_get_contents (path, & raw, & size); - - if (raw == NULL) + gint64 size = vfs_fsize (file); + if (size < 1) return NULL; - gchar * text = g_convert (raw, size, "UTF-8", "ISO-8859-1", NULL, NULL, NULL); + gchar * raw = g_malloc (size + 1); + size = vfs_fread (raw, 1, size, file); + raw[size] = 0; + + strip_char (raw, '\r'); + gchar * text = str_to_utf8 (raw); g_free (raw); - strip_char (text, '\r'); return text; } static gchar * split_line (gchar * line) { gchar * feed = strchr (line, '\n'); - - if (feed == NULL) + if (! feed) return NULL; * feed = 0; return feed + 1; } -static gchar * convert_path (gchar * path, const gchar * base) -{ - if (strstr (path, "://") != NULL) - return g_strdup (path); - - return aud_construct_uri (path, base); -} - -static void playlist_load_m3u (const gchar * path, gint at) +static gboolean playlist_load_m3u (const gchar * path, VFSFile * file, + gchar * * title, Index * filenames, Index * tuples) { - gchar * text = read_win_text (path); + gchar * text = read_win_text (file); + if (! text) + return FALSE; - if (text == NULL) - return; + * title = NULL; gchar * parse = text; - struct index * add = index_new (); - while (1) + while (parse) { gchar * next = split_line (parse); @@ -99,81 +89,37 @@ if (* parse == '#') goto NEXT; - gchar * s = convert_path (parse, path); + gchar * s = aud_construct_uri (parse, path); + if (s) + index_append (filenames, str_get (s)); - if (s != NULL) - index_append (add, s); + g_free (s); NEXT: parse = next; } - aud_playlist_entry_insert_batch (aud_playlist_get_active (), at, add, NULL); g_free (text); + return TRUE; } -static void -playlist_save_m3u(const gchar *filename, gint pos) +static gboolean playlist_save_m3u (const gchar * path, VFSFile * file, + const gchar * title, Index * filenames, Index * tuples) { - gint playlist = aud_playlist_get_active (); - gint entries = aud_playlist_entry_count (playlist); - gchar *outstr = NULL; - VFSFile *file; - gchar *fn = NULL; - gint count; - - g_return_if_fail(filename != NULL); - - fn = g_filename_to_uri(filename, NULL, NULL); - file = vfs_fopen(fn ? fn : filename, "wb"); - g_free(fn); - g_return_if_fail(file != NULL); + gint count = index_count (filenames); - for (count = pos; count < entries; count ++) - { - const gchar * filename = aud_playlist_entry_get_filename (playlist, - count); - const gchar * title = aud_playlist_entry_get_title (playlist, count, - FALSE); - gint seconds = aud_playlist_entry_get_length (playlist, count, FALSE) / - 1000; - - if (title != NULL) - { - outstr = g_locale_from_utf8 (title, -1, NULL, NULL, NULL); - - if(outstr) { - vfs_fprintf(file, "#EXTINF:%d,%s\n", seconds, outstr); - g_free(outstr); - outstr = NULL; - } - else - vfs_fprintf (file, "#EXTINF:%d,%s\n", seconds, title); - } - - fn = g_filename_from_uri (filename, NULL, NULL); - vfs_fprintf (file, "%s\n", fn != NULL ? fn : filename); - g_free(fn); - } + for (gint i = 0; i < count; i ++) + vfs_fprintf (file, "%s\n", (const gchar *) index_get (filenames, i)); - vfs_fclose(file); + return TRUE; } -PlaylistContainer plc_m3u = { - .name = "M3U Playlist Format", - .ext = "m3u", - .plc_read = playlist_load_m3u, - .plc_write = playlist_save_m3u, -}; - -static void init(void) -{ - aud_playlist_container_register(&plc_m3u); -} - -static void cleanup(void) -{ - aud_playlist_container_unregister(&plc_m3u); -} +static const gchar * const m3u_exts[] = {"m3u", "m3u8", NULL}; -DECLARE_PLUGIN (m3u, init, cleanup, NULL, NULL, NULL, NULL, NULL, NULL) +AUD_PLAYLIST_PLUGIN +( + .name = "M3U Playlist Format", + .extensions = m3u_exts, + .load = playlist_load_m3u, + .save = playlist_save_m3u +) diff -Nru audacious-plugins-2.4.4/src/m3u/Makefile audacious-plugins-3.2/src/m3u/Makefile --- audacious-plugins-2.4.4/src/m3u/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/m3u/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -8,5 +8,5 @@ plugindir := ${plugindir}/${CONTAINER_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${ARCH_DEFINES} -I../.. -Wall +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -Wall LIBS += ${GTK_LIBS} ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/metronom/Makefile audacious-plugins-3.2/src/metronom/Makefile --- audacious-plugins-2.4.4/src/metronom/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/metronom/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -8,5 +8,5 @@ plugindir := ${plugindir}/${INPUT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${ARCH_DEFINES} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. +LIBS += ${GTK_LIBS} ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/metronom/metronom.c audacious-plugins-3.2/src/metronom/metronom.c --- audacious-plugins-2.4.4/src/metronom/metronom.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/metronom/metronom.c 2012-01-20 19:48:30.000000000 +0000 @@ -26,6 +26,7 @@ #include #include +#include #define MIN_BPM 1 #define MAX_BPM 512 @@ -76,12 +77,7 @@ {1.0, 0.5, 0.5, 0.6, 0.5, 0.5, 0.0, 0.0} }; -static InputPlugin metronom_ip; - -static void metronom_init(void) -{ - aud_uri_set_plugin("tact://", &metronom_ip); -} +static gboolean stop_flag = FALSE; static void metronom_about (void) { @@ -94,7 +90,7 @@ "or tact://60*3/4 to play 60 bpm in 3/4 tacts")); } -static gint metronom_is_our_file(const gchar * filename) +static gboolean metronom_is_our_fd(const gchar * filename, VFSFile *fd) { if (!strncmp(filename, "tact://", 7)) return TRUE; @@ -141,6 +137,9 @@ pmetronom->id = id; } + if (str == NULL) + return TRUE; + if (pmetronom->num == 1 && pmetronom->den == 1) *str = g_strdup_printf(_("Tact generator: %d bpm"), pmetronom->bpm); else @@ -149,9 +148,9 @@ return TRUE; } -static void metronom_play(InputPlayback * playback) +static gboolean metronom_play(InputPlayback *playback, const gchar *filename, + VFSFile *file, gint start_time, gint stop_time, gboolean pause) { - gchar *name = NULL; metronom_t pmetronom; gint16 data[BUF_SAMPLES]; gint t = 0, tact, num; @@ -160,21 +159,24 @@ gint datacurrent = datamiddle; gint datalast = datamiddle; gint data_form[TACT_FORM_MAX]; + gboolean error = FALSE; if (playback->output->open_audio(FMT_S16_LE, AUDIO_FREQ, 1) == 0) { - playback->error = TRUE; + error = TRUE; goto error_exit; } - if (!metronom_get_cp(playback->filename, &pmetronom, &name)) + if (!metronom_get_cp(filename, &pmetronom, NULL)) { - g_message("Invalid metronom tact parameters in URI %s", playback->filename); + g_message("Invalid metronom tact parameters in URI %s", filename); goto error_exit; } - playback->set_params(playback, name, -1, sizeof(data[0]) * 8 * AUDIO_FREQ, AUDIO_FREQ, 1); - g_free(name); + if (pause) + playback->output->pause(TRUE); + + playback->set_params(playback, sizeof(data[0]) * 8 * AUDIO_FREQ, AUDIO_FREQ, 1); tact = 60 * AUDIO_FREQ / pmetronom.bpm; @@ -184,11 +186,11 @@ data_form[num] = MAX_AMPL * tact_form[pmetronom.id][num]; } - playback->playing = TRUE; + stop_flag = FALSE; playback->set_pb_ready(playback); num = 0; - while (playback->playing) + while (!stop_flag) { gint i; @@ -219,52 +221,55 @@ datagoal = (datamiddle + 7 * datagoal) / 8; t++; } - if (playback->playing) - playback->pass_audio(playback, FMT_S16_LE, 1, BUF_BYTES, data, &playback->playing); + + if (!stop_flag) + playback->output->write_audio(data, BUF_BYTES); } error_exit: - playback->playing = 0; - playback->eof = TRUE; + stop_flag = TRUE; playback->output->close_audio(); + + return !error; } static void metronom_stop(InputPlayback * playback) { - playback->playing = FALSE; + stop_flag = TRUE; + playback->output->abort_write(); } -static void metronom_pause(InputPlayback * playback, short paused) +static void metronom_pause(InputPlayback * playback, gboolean pause) { - playback->output->pause(paused); + if (!stop_flag) + playback->output->pause(pause); } -static Tuple *metronom_get_song_tuple(const gchar * filename) +static Tuple *metronom_probe_for_tuple(const gchar * filename, VFSFile *fd) { Tuple *tuple = tuple_new_from_filename(filename); metronom_t metronom; gchar *tmp = NULL; if (metronom_get_cp(filename, &metronom, &tmp)) - tuple_associate_string(tuple, FIELD_TITLE, NULL, tmp); + tuple_set_str(tuple, FIELD_TITLE, NULL, tmp); g_free(tmp); return tuple; } -static InputPlugin metronom_ip = { - .description = "Tact Generator", - .init = metronom_init, +static const gchar * const schemes[] = {"tact", NULL}; + +AUD_INPUT_PLUGIN +( + .name = "Tact Generator", + .schemes = schemes, .about = metronom_about, - .is_our_file = metronom_is_our_file, - .play_file = metronom_play, + .is_our_file_from_vfs = metronom_is_our_fd, + .play = metronom_play, .stop = metronom_stop, .pause = metronom_pause, - .get_song_tuple = metronom_get_song_tuple, -}; - -static InputPlugin *metronom_iplist[] = { &metronom_ip, NULL }; - -DECLARE_PLUGIN(metronom, NULL, NULL, metronom_iplist, NULL, NULL, NULL, NULL, NULL); + .probe_for_tuple = metronom_probe_for_tuple, +) diff -Nru audacious-plugins-2.4.4/src/mixer/Makefile audacious-plugins-3.2/src/mixer/Makefile --- audacious-plugins-2.4.4/src/mixer/Makefile 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/mixer/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,12 @@ +PLUGIN = mixer${PLUGIN_SUFFIX} + +SRCS = mixer.c plugin.c + +include ../../buildsys.mk +include ../../extra.mk + +plugindir := ${plugindir}/${EFFECT_PLUGIN_DIR} + +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} -I../.. +CFLAGS += ${PLUGIN_CFLAGS} +LIBS += ${GTK_LIBS} diff -Nru audacious-plugins-2.4.4/src/mixer/mixer.c audacious-plugins-3.2/src/mixer/mixer.c --- audacious-plugins-2.4.4/src/mixer/mixer.c 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/mixer/mixer.c 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,146 @@ +/* + * Channel Mixer Plugin for Audacious + * Copyright 2011 John Lindgren + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions, and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions, and the following disclaimer in the documentation + * provided with the distribution. + * + * This software is provided "as is" and without any warranty, express or + * implied. In no event shall the authors be liable for any damages arising from + * the use of this software. + */ + +/* TODO: implement surround converters */ + +#include +#include + +#include "mixer.h" + +typedef void (* Converter) (float * * data, int * samples); + +static void mono_to_stereo (float * * data, int * samples) +{ + int frames = * samples; + float * get = * data; + float * set = mixer_buf = realloc (mixer_buf, sizeof (float) * 2 * frames); + + * data = mixer_buf; + * samples = 2 * frames; + + while (frames --) + { + float val = * get ++; + * set ++ = val; + * set ++ = val; + } +} + +static void stereo_to_mono (float * * data, int * samples) +{ + int frames = * samples / 2; + float * get = * data; + float * set = mixer_buf = realloc (mixer_buf, sizeof (float) * frames); + + * data = mixer_buf; + * samples = frames; + + while (frames --) + { + float val = * get ++; + val += * get ++; + * set ++ = val / 2; + } +} + +static void quadro_to_stereo(float * * data, int * samples) +{ + int frames = * samples / 4; + float * get = * data; + float * set = mixer_buf = realloc (mixer_buf, sizeof (float) * 2 * frames); + + * data = mixer_buf; + * samples = 2 * frames; + + while (frames --) + { + float front_left = * get ++; + float front_right = * get ++; + float back_left = * get ++; + float back_right = * get ++; + * set ++ = front_left + (back_left * 0.7); + * set ++ = front_right + (back_right * 0.7); + } +} + +static void surround_5p1_to_stereo(float * * data, int * samples) +{ + int frames = * samples / 6; + float * get = * data; + float * set = mixer_buf = realloc (mixer_buf, sizeof (float) * 2 * frames); + + * data = mixer_buf; + * samples = 2 * frames; + + while (frames --) + { + float front_left = * get ++; + float front_right = * get ++; + float center = * get ++; + float lfe = * get ++; + float rear_left = * get ++; + float rear_right = * get ++; + * set ++ = front_left + (center * 0.5) + (lfe * 0.5) + (rear_left * 0.5); + * set ++ = front_right + (center * 0.5) + (lfe * 0.5) + (rear_right * 0.5); + } +} + +static const Converter converters[MAX_CHANNELS + 1][MAX_CHANNELS + 1] = { + [1][2] = mono_to_stereo, + [2][1] = stereo_to_mono, + [4][2] = quadro_to_stereo, + [6][2] = surround_5p1_to_stereo}; + +static int input_channels, output_channels; + +void mixer_start (int * channels, int * rate) +{ + input_channels = * channels; + output_channels = mixer_channels; + + if (input_channels == output_channels) + return; + + if (input_channels < 1 || input_channels > MAX_CHANNELS || + ! converters[input_channels][output_channels]) + { + fprintf (stderr, "Converting %d to %d channels is not implemented.\n", + input_channels, output_channels); + return; + } + + * channels = output_channels; +} + +void mixer_process (float * * data, int * samples) +{ + if (input_channels == output_channels) + return; + + if (input_channels < 1 || input_channels > MAX_CHANNELS || + ! converters[input_channels][output_channels]) + return; + + converters[input_channels][output_channels] (data, samples); +} + +void mixer_flush (void) +{ +} diff -Nru audacious-plugins-2.4.4/src/mixer/mixer.h audacious-plugins-3.2/src/mixer/mixer.h --- audacious-plugins-2.4.4/src/mixer/mixer.h 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/mixer/mixer.h 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,27 @@ +/* + * Channel Mixer Plugin for Audacious + * Copyright 2011 John Lindgren + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions, and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions, and the following disclaimer in the documentation + * provided with the distribution. + * + * This software is provided "as is" and without any warranty, express or + * implied. In no event shall the authors be liable for any damages arising from + * the use of this software. + */ + +#define MAX_CHANNELS 8 + +extern int mixer_channels; +extern float * mixer_buf; + +void mixer_start (int * channels, int * rate); +void mixer_process (float * * data, int * samples); +void mixer_flush (void); diff -Nru audacious-plugins-2.4.4/src/mixer/plugin.c audacious-plugins-3.2/src/mixer/plugin.c --- audacious-plugins-2.4.4/src/mixer/plugin.c 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/mixer/plugin.c 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,134 @@ +/* + * Channel Mixer Plugin for Audacious + * Copyright 2011 John Lindgren + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions, and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions, and the following disclaimer in the documentation + * provided with the distribution. + * + * This software is provided "as is" and without any warranty, express or + * implied. In no event shall the authors be liable for any damages arising from + * the use of this software. + */ + +#include +#include + +#include +#include +#include +#include +#include + +#include "config.h" +#include "mixer.h" + +static const gchar * const mixer_defaults[] = { + "channels", "2", + NULL}; + +int mixer_channels; +float * mixer_buf; + +static GtkWidget * about_win, * config_win; + +static int mixer_init (void) +{ + aud_config_set_defaults ("mixer", mixer_defaults); + mixer_channels = aud_get_int ("mixer", "channels"); + return 1; +} + +static void mixer_cleanup (void) +{ + if (about_win) + gtk_widget_destroy (about_win); + if (config_win) + gtk_widget_destroy (config_win); + + aud_set_int ("mixer", "channels", mixer_channels); + + free (mixer_buf); + mixer_buf = 0; +} + +static void mixer_about (void) +{ + audgui_simple_message (& about_win, GTK_MESSAGE_INFO, + _("About Channel Mixer"), + "Channel Mixer Plugin for Audacious\n" + "Copyright 2011 John Lindgren\n\n" + "Redistribution and use in source and binary forms, with or without " + "modification, are permitted provided that the following conditions are " + "met:\n\n" + "1. Redistributions of source code must retain the above copyright " + "notice, this list of conditions, and the following disclaimer.\n\n" + "2. Redistributions in binary form must reproduce the above copyright " + "notice, this list of conditions, and the following disclaimer in the " + "documentation provided with the distribution.\n\n" + "This software is provided \"as is\" and without any warranty, express or " + "implied. In no event shall the authors be liable for any damages arising " + "from the use of this software."); +} + +static void spin_changed (GtkSpinButton * spin, void * data) +{ + * (int *) data = gtk_spin_button_get_value (spin); +} + +static void mixer_configure (void) +{ + if (config_win) + { + gtk_window_present ((GtkWindow *) config_win); + return; + } + + config_win = gtk_dialog_new_with_buttons (_("Channel Mixer Settings"), 0, 0, + GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL); + gtk_window_set_resizable ((GtkWindow *) config_win, 0); + + GtkWidget * vbox = gtk_dialog_get_content_area ((GtkDialog *) config_win); + + GtkWidget * hbox = gtk_hbox_new (0, 6); + gtk_box_pack_start ((GtkBox *) vbox, hbox, 0, 0, 0); + + GtkWidget * label = gtk_label_new (_("Output channels:")); + gtk_box_pack_start ((GtkBox *) hbox, label, 0, 0, 0); + + GtkWidget * spin = gtk_spin_button_new_with_range (1, MAX_CHANNELS, 1); + gtk_spin_button_set_value ((GtkSpinButton *) spin, mixer_channels); + gtk_box_pack_start ((GtkBox *) hbox, spin, 0, 0, 0); + + hbox = gtk_hbox_new (0, 6); + gtk_box_pack_start ((GtkBox *) vbox, hbox, 0, 0, 0); + + label = gtk_label_new (_("Changes take effect at the next song change.")); + gtk_box_pack_start ((GtkBox *) hbox, label, 0, 0, 0); + + g_signal_connect (config_win, "response", (GCallback) gtk_widget_destroy, 0); + g_signal_connect (config_win, "destroy", (GCallback) gtk_widget_destroyed, & config_win); + g_signal_connect (spin, "value-changed", (GCallback) spin_changed, & mixer_channels); + + gtk_widget_show_all (config_win); +} + +AUD_EFFECT_PLUGIN +( + .name = "Channel Mixer", + .init = mixer_init, + .cleanup = mixer_cleanup, + .about = mixer_about, + .configure = mixer_configure, + .start = mixer_start, + .process = mixer_process, + .flush = mixer_flush, + .finish = mixer_process, + .order = 2, /* must be before crossfade */ +) diff -Nru audacious-plugins-2.4.4/src/mms/Makefile audacious-plugins-3.2/src/mms/Makefile --- audacious-plugins-2.4.4/src/mms/Makefile 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mms/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -7,6 +7,6 @@ plugindir := ${plugindir}/${TRANSPORT_PLUGIN_DIR} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${ARCH_DEFINES} ${MMS_CFLAGS} -I../.. -Wall +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${MMS_CFLAGS} -I../.. -Wall CFLAGS += ${PLUGIN_CFLAGS} LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${MMS_LIBS} diff -Nru audacious-plugins-2.4.4/src/mms/mms.c audacious-plugins-3.2/src/mms/mms.c --- audacious-plugins-2.4.4/src/mms/mms.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mms/mms.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,6 @@ -/* Audacious +/* MMS/MMSH Transport for Audacious * Copyright (c) 2007 William Pitcock + * Copyright (c) 2011 John Lindgren * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -33,213 +34,198 @@ #include #include +#define BUFSIZE 65536 +#define BLOCKSIZE 4096 + typedef struct { mms_t *mms; mmsh_t *mmsh; - GSList *charstack; + guchar * buf; + gint64 offset; + gint len, used; } MMSHandle; -VFSFile * -mms_vfs_fopen_impl(const gchar * path, - const gchar * mode) +static void * mms_vfs_fopen_impl (const gchar * path, const gchar * mode) { AUDDBG("Opening %s.\n", path); - VFSFile *file; MMSHandle *handle; - - if (!path || !mode) - return NULL; - - file = g_new(VFSFile, 1); handle = g_new0(MMSHandle, 1); + handle->mmsh = mmsh_connect(NULL, NULL, path, 128 * 1024); - file->handle = handle; - - if (file->handle == NULL) { - g_free(file); - file = NULL; - } - - handle->mms = mms_connect(NULL, NULL, path, 128 * 1024); - - if (handle->mms == NULL) { - AUDDBG("Failed to connect with MMS protocol; trying MMSH.\n"); - handle->mmsh = mmsh_connect(NULL, NULL, path, 128 * 1024); + if (handle->mmsh == NULL) { + AUDDBG("Failed to connect with MMSH protocol; trying MMS.\n"); + handle->mms = mms_connect(NULL, NULL, path, 128 * 1024); } if (handle->mms == NULL && handle->mmsh == NULL) { fprintf(stderr, "mms: Failed to open %s.\n", path); g_free(handle); - g_free(file); - file = NULL; + return NULL; } - return file; + handle->buf = g_malloc (BUFSIZE); + return handle; } -gint -mms_vfs_fclose_impl(VFSFile * file) +static gint mms_vfs_fclose_impl (VFSFile * file) { - gint ret = 0; + MMSHandle *handle = (MMSHandle *) vfs_get_handle (file); - if (file == NULL) - return -1; - - if (file->handle) - { - MMSHandle *handle = (MMSHandle *) file->handle; + if (handle->mms != NULL) + mms_close(handle->mms); + else /* if (handle->mmsh != NULL) */ + mmsh_close(handle->mmsh); - if (handle->mms != NULL) - mms_close(handle->mms); - else /* if (handle->mmsh != NULL) */ - mmsh_close(handle->mmsh); + g_free (handle->buf); + g_free (handle); - g_free(handle); - file->handle = NULL; - } - - return ret; + return 0; } -gint64 mms_vfs_fread_impl (void * ptr, gint64 size, gint64 nmemb, VFSFile * - file) +static gint64 mms_vfs_fread_impl (void * buf, gint64 size, gint64 count, + VFSFile * file) { - MMSHandle *handle; - gint ret; + MMSHandle * h = vfs_get_handle (file); + gint64 goal = size * count; + gint64 total = 0; - handle = (MMSHandle *) file->handle; + while (total < goal) + { + if (h->used == h->len) + { + if (h->len == BUFSIZE) + { + memmove (h->buf, h->buf + BLOCKSIZE, BUFSIZE - BLOCKSIZE); + h->offset += BLOCKSIZE; + h->len = BUFSIZE - BLOCKSIZE; + h->used = BUFSIZE - BLOCKSIZE; + } - if (handle->mms != NULL) - ret = mms_read(NULL, handle->mms, ptr, size * nmemb); - else /* if (handle->mmsh != NULL) */ - ret = mmsh_read(NULL, handle->mmsh, ptr, size * nmemb); + gint size = MIN (BLOCKSIZE, BUFSIZE - h->len); - if (ret < 0) - { - g_message("** mms **: errno(%d): %s", errno, strerror(errno)); - ret = EOF; + if (h->mms) + size = mms_read (NULL, h->mms, (gchar *) h->buf + h->len, size); + else /* if (h->mmsh) */ + size = mmsh_read (NULL, h->mmsh, (gchar *) h->buf + h->len, size); + + if (size < 0) + fprintf (stderr, "mms: Read error: %s.\n", strerror (errno)); + if (size <= 0) + break; + + h->len += size; + } + + gint copy = MIN (h->len - h->used, goal - total); + + memcpy (buf, h->buf + h->used, copy); + h->used += copy; + buf += copy; + total += copy; } - return ret; + return (size > 0) ? total / size : 0; } -gint64 mms_vfs_fwrite_impl (const void * ptr, gint64 size, gint64 nmemb, +static gint64 mms_vfs_fwrite_impl (const void * data, gint64 size, gint64 count, VFSFile * file) { + fprintf (stderr, "mms: Writing is not supported.\n"); return 0; } -gint -mms_vfs_getc_impl(VFSFile *stream) +static gint mms_vfs_fseek_impl (VFSFile * file, gint64 offset, gint whence) { - MMSHandle *handle = (MMSHandle *) stream->handle; - guchar c; + MMSHandle * h = vfs_get_handle (file); - if (handle->charstack != NULL) + if (whence == SEEK_SET) { - c = GPOINTER_TO_UINT(handle->charstack->data); - handle->charstack = g_slist_remove_link(handle->charstack, handle->charstack); - return c; + whence = SEEK_CUR; + offset -= h->offset + h->used; } - else - { - if (handle->mms != NULL) - mms_read(NULL, handle->mms, (char *)&c, 1); - else /* if (handle->mmsh != NULL) */ - mmsh_read(NULL, handle->mmsh, (char *)&c, 1); - return c; + if (whence != SEEK_CUR || offset < -h->used || offset > h->len - h->used) + { + fprintf (stderr, "mms: Attempt to seek outside buffered region.\n"); + return -1; } - return EOF; + h->used += offset; + return 0; } -gint -mms_vfs_ungetc_impl(gint c, VFSFile *stream) +static void mms_vfs_rewind_impl (VFSFile * file) { - MMSHandle *handle = (MMSHandle *) stream->handle; - - handle->charstack = g_slist_append(handle->charstack, GUINT_TO_POINTER(c)); - - if (handle->charstack != NULL) - return c; - - return EOF; + mms_vfs_fseek_impl (file, 0, SEEK_SET); } -static gint mms_vfs_fseek_impl (VFSFile * file, gint64 offset, gint whence) +static gint64 mms_vfs_ftell_impl (VFSFile * file) { - return -1; + MMSHandle * h = vfs_get_handle (file); + return h->offset + h->used; } -void -mms_vfs_rewind_impl(VFSFile * file) +static gint mms_vfs_getc_impl (VFSFile * file) { - return; + guchar c; + return (mms_vfs_fread_impl (& c, 1, 1, file) == 1) ? c : EOF; } -static gint64 mms_vfs_ftell_impl (VFSFile * file) +static gint mms_vfs_ungetc_impl (gint c, VFSFile * file) { - MMSHandle *handle = (MMSHandle *) file->handle; - - if (handle->mms != NULL) - return mms_get_current_pos(handle->mms); - else /* if (handle->mmsh != NULL) */ - return mmsh_get_current_pos(handle->mmsh); + return (! mms_vfs_fseek_impl (file, -1, SEEK_CUR)) ? c : EOF; } -gboolean -mms_vfs_feof_impl(VFSFile * file) +static gboolean mms_vfs_feof_impl (VFSFile * file) { - MMSHandle *handle = (MMSHandle *) file->handle; + return FALSE; - if (handle->mms != NULL) - return (gboolean) (mms_get_current_pos(handle->mms) == - mms_get_length(handle->mms)); - else /* if (handle->mmsh != NULL) */ - return (gboolean) (mmsh_get_current_pos(handle->mmsh) == - mmsh_get_length(handle->mmsh)); + MMSHandle * h = vfs_get_handle (file); + + if (h->mms) + return (h->offset + h->used == mms_get_length (h->mms)); + else /* if (h->mmsh) */ + return (h->offset + h->used == mmsh_get_length (h->mmsh)); } static gint mms_vfs_truncate_impl (VFSFile * file, gint64 size) { + fprintf (stderr, "mms: Truncating is not supported.\n"); return -1; } -off_t -mms_vfs_fsize_impl(VFSFile * file) +static gint64 mms_vfs_fsize_impl (VFSFile * file) { - return -1; -} + MMSHandle * h = vfs_get_handle (file); -VFSConstructor mms_const = { - "mms://", - mms_vfs_fopen_impl, - mms_vfs_fclose_impl, - mms_vfs_fread_impl, - mms_vfs_fwrite_impl, - mms_vfs_getc_impl, - mms_vfs_ungetc_impl, - mms_vfs_fseek_impl, - mms_vfs_rewind_impl, - mms_vfs_ftell_impl, - mms_vfs_feof_impl, - mms_vfs_truncate_impl, - mms_vfs_fsize_impl + if (h->mms) + return mms_get_length (h->mms); + else /* if (h->mmsh) */ + return mmsh_get_length (h->mmsh); +} + +static const gchar * const mms_schemes[] = {"mms", NULL}; + +static VFSConstructor constructor = { + .vfs_fopen_impl = mms_vfs_fopen_impl, + .vfs_fclose_impl = mms_vfs_fclose_impl, + .vfs_fread_impl = mms_vfs_fread_impl, + .vfs_fwrite_impl = mms_vfs_fwrite_impl, + .vfs_getc_impl = mms_vfs_getc_impl, + .vfs_ungetc_impl = mms_vfs_ungetc_impl, + .vfs_fseek_impl = mms_vfs_fseek_impl, + .vfs_rewind_impl = mms_vfs_rewind_impl, + .vfs_ftell_impl = mms_vfs_ftell_impl, + .vfs_feof_impl = mms_vfs_feof_impl, + .vfs_ftruncate_impl = mms_vfs_truncate_impl, + .vfs_fsize_impl = mms_vfs_fsize_impl }; -static void init(void) -{ - vfs_register_transport(&mms_const); -} - -static void cleanup(void) -{ -#if 0 - vfs_unregister_transport(&mms_const); -#endif -} - -DECLARE_PLUGIN (mms, init, cleanup, NULL, NULL, NULL, NULL, NULL, NULL) +AUD_TRANSPORT_PLUGIN +( + .name = "MMS Support", + .schemes = mms_schemes, + .vtable = & constructor +) diff -Nru audacious-plugins-2.4.4/src/modplug/fastmix.cxx audacious-plugins-3.2/src/modplug/fastmix.cxx --- audacious-plugins-2.4.4/src/modplug/fastmix.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/fastmix.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,1853 +0,0 @@ -/* - * This program is free software; you can redistribute it and modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the license or (at your - * option) any later version. - * - * Authors: Olivier Lapicque - * Markus Fick spline + fir-resampler -*/ - -#include "stdafx.h" -#include "sndfile.h" -#include - -// Front Mix Buffer (Also room for interleaved rear mix) -int MixSoundBuffer[MIXBUFFERSIZE*4]; - -// Reverb Mix Buffer -#ifndef MODPLUG_NO_REVERB -int MixReverbBuffer[MIXBUFFERSIZE*2]; -extern UINT gnReverbSend; -#endif - -int MixRearBuffer[MIXBUFFERSIZE*2]; -float MixFloatBuffer[MIXBUFFERSIZE*2]; - - -extern LONG gnDryROfsVol; -extern LONG gnDryLOfsVol; -extern LONG gnRvbROfsVol; -extern LONG gnRvbLOfsVol; - -// 4x256 taps polyphase FIR resampling filter -extern short int gFastSinc[]; -extern short int gKaiserSinc[]; // 8-taps polyphase -/* - ----------------------------------------------------------------------------- - cubic spline interpolation doc, - (derived from "digital image warping", g. wolberg) - - interpolation polynomial: f(x) = A3*(x-floor(x))**3 + A2*(x-floor(x))**2 + A1*(x-floor(x)) + A0 - - with Y = equispaced data points (dist=1), YD = first derivates of data points and IP = floor(x) - the A[0..3] can be found by solving - A0 = Y[IP] - A1 = YD[IP] - A2 = 3*(Y[IP+1]-Y[IP])-2.0*YD[IP]-YD[IP+1] - A3 = -2.0 * (Y[IP+1]-Y[IP]) + YD[IP] - YD[IP+1] - - with the first derivates as - YD[IP] = 0.5 * (Y[IP+1] - Y[IP-1]); - YD[IP+1] = 0.5 * (Y[IP+2] - Y[IP]) - - the coefs becomes - A0 = Y[IP] - A1 = YD[IP] - = 0.5 * (Y[IP+1] - Y[IP-1]); - A2 = 3.0 * (Y[IP+1]-Y[IP])-2.0*YD[IP]-YD[IP+1] - = 3.0 * (Y[IP+1] - Y[IP]) - 0.5 * 2.0 * (Y[IP+1] - Y[IP-1]) - 0.5 * (Y[IP+2] - Y[IP]) - = 3.0 * Y[IP+1] - 3.0 * Y[IP] - Y[IP+1] + Y[IP-1] - 0.5 * Y[IP+2] + 0.5 * Y[IP] - = -0.5 * Y[IP+2] + 2.0 * Y[IP+1] - 2.5 * Y[IP] + Y[IP-1] - = Y[IP-1] + 2 * Y[IP+1] - 0.5 * (5.0 * Y[IP] + Y[IP+2]) - A3 = -2.0 * (Y[IP+1]-Y[IP]) + YD[IP] + YD[IP+1] - = -2.0 * Y[IP+1] + 2.0 * Y[IP] + 0.5 * (Y[IP+1] - Y[IP-1]) + 0.5 * (Y[IP+2] - Y[IP]) - = -2.0 * Y[IP+1] + 2.0 * Y[IP] + 0.5 * Y[IP+1] - 0.5 * Y[IP-1] + 0.5 * Y[IP+2] - 0.5 * Y[IP] - = 0.5 * Y[IP+2] - 1.5 * Y[IP+1] + 1.5 * Y[IP] - 0.5 * Y[IP-1] - = 0.5 * (3.0 * (Y[IP] - Y[IP+1]) - Y[IP-1] + YP[IP+2]) - - then interpolated data value is (horner rule) - out = (((A3*x)+A2)*x+A1)*x+A0 - - this gives parts of data points Y[IP-1] to Y[IP+2] of - part x**3 x**2 x**1 x**0 - Y[IP-1] -0.5 1 -0.5 0 - Y[IP] 1.5 -2.5 0 1 - Y[IP+1] -1.5 2 0.5 0 - Y[IP+2] 0.5 -0.5 0 0 - ----------------------------------------------------------------------------- -*/ -// number of bits used to scale spline coefs -#define SPLINE_QUANTBITS 14 -#define SPLINE_QUANTSCALE (1L< _LScale) ? _LScale : _LCm1) ); - lut[_LIdx+1] = (signed short)( (_LC0 < -_LScale) ? -_LScale : ((_LC0 > _LScale) ? _LScale : _LC0 ) ); - lut[_LIdx+2] = (signed short)( (_LC1 < -_LScale) ? -_LScale : ((_LC1 > _LScale) ? _LScale : _LC1 ) ); - lut[_LIdx+3] = (signed short)( (_LC2 < -_LScale) ? -_LScale : ((_LC2 > _LScale) ? _LScale : _LC2 ) ); -#ifdef SPLINE_CLAMPFORUNITY - _LSum = lut[_LIdx+0]+lut[_LIdx+1]+lut[_LIdx+2]+lut[_LIdx+3]; - if( _LSum != SPLINE_QUANTSCALE ) - { int _LMax = _LIdx; - if( lut[_LIdx+1]>lut[_LMax] ) _LMax = _LIdx+1; - if( lut[_LIdx+2]>lut[_LMax] ) _LMax = _LIdx+2; - if( lut[_LIdx+3]>lut[_LMax] ) _LMax = _LIdx+3; - lut[_LMax] += (SPLINE_QUANTSCALE-_LSum); - } -#endif - } -} - -CzCUBICSPLINE::~CzCUBICSPLINE( ) -{ // nothing todo -} - -CzCUBICSPLINE sspline; - -/* - ------------------------------------------------------------------------------------------------ - fir interpolation doc, - (derived from "an engineer's guide to fir digital filters", n.j. loy) - - calculate coefficients for ideal lowpass filter (with cutoff = fc in 0..1 (mapped to 0..nyquist)) - c[-N..N] = (i==0) ? fc : sin(fc*pi*i)/(pi*i) - - then apply selected window to coefficients - c[-N..N] *= w(0..N) - with n in 2*N and w(n) being a window function (see loy) - - then calculate gain and scale filter coefs to have unity gain. - ------------------------------------------------------------------------------------------------ -*/ -// quantizer scale of window coefs -#define WFIR_QUANTBITS 15 -#define WFIR_QUANTSCALE (1L<>1) -// cutoff (1.0 == pi/2) -#define WFIR_CUTOFF 0.90f -// wfir type -#define WFIR_HANN 0 -#define WFIR_HAMMING 1 -#define WFIR_BLACKMANEXACT 2 -#define WFIR_BLACKMAN3T61 3 -#define WFIR_BLACKMAN3T67 4 -#define WFIR_BLACKMAN4T92 5 -#define WFIR_BLACKMAN4T74 6 -#define WFIR_KAISER4T 7 -#define WFIR_TYPE WFIR_BLACKMANEXACT -// wfir help -#ifndef M_zPI -#define M_zPI 3.1415926535897932384626433832795 -#endif -#define M_zEPS 1e-8 -#define M_zBESSELEPS 1e-21 - -class CzWINDOWEDFIR -{ -public: - CzWINDOWEDFIR( ); - ~CzWINDOWEDFIR( ); - float coef( int _PCnr, float _POfs, float _PCut, int _PWidth, int _PType ) //float _PPos, float _PFc, int _PLen ) - { - double _LWidthM1 = _PWidth-1; - double _LWidthM1Half = 0.5*_LWidthM1; - double _LPosU = ((double)_PCnr - _POfs); - double _LPos = _LPosU-_LWidthM1Half; - double _LPIdl = 2.0*M_zPI/_LWidthM1; - double _LWc,_LSi; - if( fabs(_LPos)_LScale)?_LScale:_LCoef) ); - } - } -} - -CzWINDOWEDFIR::~CzWINDOWEDFIR() -{ // nothing todo -} - -CzWINDOWEDFIR sfir; - -// ---------------------------------------------------------------------------- -// MIXING MACROS -// ---------------------------------------------------------------------------- -///////////////////////////////////////////////////// -// Mixing Macros - -#define SNDMIX_BEGINSAMPLELOOP8\ - register MODCHANNEL * const pChn = pChannel;\ - nPos = pChn->nPosLo;\ - const signed char *p = (signed char *)(pChn->pCurrentSample+pChn->nPos);\ - if (pChn->dwFlags & CHN_STEREO) p += pChn->nPos;\ - int *pvol = pbuffer;\ - do { - -#define SNDMIX_BEGINSAMPLELOOP16\ - register MODCHANNEL * const pChn = pChannel;\ - nPos = pChn->nPosLo;\ - const signed short *p = (signed short *)(pChn->pCurrentSample+(pChn->nPos*2));\ - if (pChn->dwFlags & CHN_STEREO) p += pChn->nPos;\ - int *pvol = pbuffer;\ - do { - -#define SNDMIX_ENDSAMPLELOOP\ - nPos += pChn->nInc;\ - } while (pvol < pbufmax);\ - pChn->nPos += nPos >> 16;\ - pChn->nPosLo = nPos & 0xFFFF; - -#define SNDMIX_ENDSAMPLELOOP8 SNDMIX_ENDSAMPLELOOP -#define SNDMIX_ENDSAMPLELOOP16 SNDMIX_ENDSAMPLELOOP - -////////////////////////////////////////////////////////////////////////////// -// Mono - -// No interpolation -#define SNDMIX_GETMONOVOL8NOIDO\ - int vol = p[nPos >> 16] << 8; - -#define SNDMIX_GETMONOVOL16NOIDO\ - int vol = p[nPos >> 16]; - -// Linear Interpolation -#define SNDMIX_GETMONOVOL8LINEAR\ - int poshi = nPos >> 16;\ - int poslo = (nPos >> 8) & 0xFF;\ - int srcvol = p[poshi];\ - int destvol = p[poshi+1];\ - int vol = (srcvol<<8) + ((int)(poslo * (destvol - srcvol))); - -#define SNDMIX_GETMONOVOL16LINEAR\ - int poshi = nPos >> 16;\ - int poslo = (nPos >> 8) & 0xFF;\ - int srcvol = p[poshi];\ - int destvol = p[poshi+1];\ - int vol = srcvol + ((int)(poslo * (destvol - srcvol)) >> 8); - -// spline interpolation (2 guard bits should be enough???) -#define SPLINE_FRACSHIFT ((16-SPLINE_FRACBITS)-2) -#define SPLINE_FRACMASK (((1L<<(16-SPLINE_FRACSHIFT))-1)&~3) - -#define SNDMIX_GETMONOVOL8SPLINE \ - int poshi = nPos >> 16; \ - int poslo = (nPos >> SPLINE_FRACSHIFT) & SPLINE_FRACMASK; \ - int vol = (CzCUBICSPLINE::lut[poslo ]*(int)p[poshi-1] + \ - CzCUBICSPLINE::lut[poslo+1]*(int)p[poshi ] + \ - CzCUBICSPLINE::lut[poslo+3]*(int)p[poshi+2] + \ - CzCUBICSPLINE::lut[poslo+2]*(int)p[poshi+1]) >> SPLINE_8SHIFT; - -#define SNDMIX_GETMONOVOL16SPLINE \ - int poshi = nPos >> 16; \ - int poslo = (nPos >> SPLINE_FRACSHIFT) & SPLINE_FRACMASK; \ - int vol = (CzCUBICSPLINE::lut[poslo ]*(int)p[poshi-1] + \ - CzCUBICSPLINE::lut[poslo+1]*(int)p[poshi ] + \ - CzCUBICSPLINE::lut[poslo+3]*(int)p[poshi+2] + \ - CzCUBICSPLINE::lut[poslo+2]*(int)p[poshi+1]) >> SPLINE_16SHIFT; - - -// fir interpolation -#define WFIR_FRACSHIFT (16-(WFIR_FRACBITS+1+WFIR_LOG2WIDTH)) -#define WFIR_FRACMASK ((((1L<<(17-WFIR_FRACSHIFT))-1)&~((1L<> 16;\ - int poslo = (nPos & 0xFFFF);\ - int firidx = ((poslo+WFIR_FRACHALVE)>>WFIR_FRACSHIFT) & WFIR_FRACMASK; \ - int vol = (CzWINDOWEDFIR::lut[firidx+0]*(int)p[poshi+1-4]); \ - vol += (CzWINDOWEDFIR::lut[firidx+1]*(int)p[poshi+2-4]); \ - vol += (CzWINDOWEDFIR::lut[firidx+2]*(int)p[poshi+3-4]); \ - vol += (CzWINDOWEDFIR::lut[firidx+3]*(int)p[poshi+4-4]); \ - vol += (CzWINDOWEDFIR::lut[firidx+4]*(int)p[poshi+5-4]); \ - vol += (CzWINDOWEDFIR::lut[firidx+5]*(int)p[poshi+6-4]); \ - vol += (CzWINDOWEDFIR::lut[firidx+6]*(int)p[poshi+7-4]); \ - vol += (CzWINDOWEDFIR::lut[firidx+7]*(int)p[poshi+8-4]); \ - vol >>= WFIR_8SHIFT; - -#define SNDMIX_GETMONOVOL16FIRFILTER \ - int poshi = nPos >> 16;\ - int poslo = (nPos & 0xFFFF);\ - int firidx = ((poslo+WFIR_FRACHALVE)>>WFIR_FRACSHIFT) & WFIR_FRACMASK; \ - int vol1 = (CzWINDOWEDFIR::lut[firidx+0]*(int)p[poshi+1-4]); \ - vol1 += (CzWINDOWEDFIR::lut[firidx+1]*(int)p[poshi+2-4]); \ - vol1 += (CzWINDOWEDFIR::lut[firidx+2]*(int)p[poshi+3-4]); \ - vol1 += (CzWINDOWEDFIR::lut[firidx+3]*(int)p[poshi+4-4]); \ - int vol2 = (CzWINDOWEDFIR::lut[firidx+4]*(int)p[poshi+5-4]); \ - vol2 += (CzWINDOWEDFIR::lut[firidx+5]*(int)p[poshi+6-4]); \ - vol2 += (CzWINDOWEDFIR::lut[firidx+6]*(int)p[poshi+7-4]); \ - vol2 += (CzWINDOWEDFIR::lut[firidx+7]*(int)p[poshi+8-4]); \ - int vol = ((vol1>>1)+(vol2>>1)) >> (WFIR_16BITSHIFT-1); - -///////////////////////////////////////////////////////////////////////////// -// Stereo - -// No interpolation -#define SNDMIX_GETSTEREOVOL8NOIDO\ - int vol_l = p[(nPos>>16)*2] << 8;\ - int vol_r = p[(nPos>>16)*2+1] << 8; - -#define SNDMIX_GETSTEREOVOL16NOIDO\ - int vol_l = p[(nPos>>16)*2];\ - int vol_r = p[(nPos>>16)*2+1]; - -// Linear Interpolation -#define SNDMIX_GETSTEREOVOL8LINEAR\ - int poshi = nPos >> 16;\ - int poslo = (nPos >> 8) & 0xFF;\ - int srcvol_l = p[poshi*2];\ - int vol_l = (srcvol_l<<8) + ((int)(poslo * (p[poshi*2+2] - srcvol_l)));\ - int srcvol_r = p[poshi*2+1];\ - int vol_r = (srcvol_r<<8) + ((int)(poslo * (p[poshi*2+3] - srcvol_r))); - -#define SNDMIX_GETSTEREOVOL16LINEAR\ - int poshi = nPos >> 16;\ - int poslo = (nPos >> 8) & 0xFF;\ - int srcvol_l = p[poshi*2];\ - int vol_l = srcvol_l + ((int)(poslo * (p[poshi*2+2] - srcvol_l)) >> 8);\ - int srcvol_r = p[poshi*2+1];\ - int vol_r = srcvol_r + ((int)(poslo * (p[poshi*2+3] - srcvol_r)) >> 8);\ - -// Spline Interpolation -#define SNDMIX_GETSTEREOVOL8SPLINE \ - int poshi = nPos >> 16; \ - int poslo = (nPos >> SPLINE_FRACSHIFT) & SPLINE_FRACMASK; \ - int vol_l = (CzCUBICSPLINE::lut[poslo ]*(int)p[(poshi-1)*2 ] + \ - CzCUBICSPLINE::lut[poslo+1]*(int)p[(poshi )*2 ] + \ - CzCUBICSPLINE::lut[poslo+2]*(int)p[(poshi+1)*2 ] + \ - CzCUBICSPLINE::lut[poslo+3]*(int)p[(poshi+2)*2 ]) >> SPLINE_8SHIFT; \ - int vol_r = (CzCUBICSPLINE::lut[poslo ]*(int)p[(poshi-1)*2+1] + \ - CzCUBICSPLINE::lut[poslo+1]*(int)p[(poshi )*2+1] + \ - CzCUBICSPLINE::lut[poslo+2]*(int)p[(poshi+1)*2+1] + \ - CzCUBICSPLINE::lut[poslo+3]*(int)p[(poshi+2)*2+1]) >> SPLINE_8SHIFT; - -#define SNDMIX_GETSTEREOVOL16SPLINE \ - int poshi = nPos >> 16; \ - int poslo = (nPos >> SPLINE_FRACSHIFT) & SPLINE_FRACMASK; \ - int vol_l = (CzCUBICSPLINE::lut[poslo ]*(int)p[(poshi-1)*2 ] + \ - CzCUBICSPLINE::lut[poslo+1]*(int)p[(poshi )*2 ] + \ - CzCUBICSPLINE::lut[poslo+2]*(int)p[(poshi+1)*2 ] + \ - CzCUBICSPLINE::lut[poslo+3]*(int)p[(poshi+2)*2 ]) >> SPLINE_16SHIFT; \ - int vol_r = (CzCUBICSPLINE::lut[poslo ]*(int)p[(poshi-1)*2+1] + \ - CzCUBICSPLINE::lut[poslo+1]*(int)p[(poshi )*2+1] + \ - CzCUBICSPLINE::lut[poslo+2]*(int)p[(poshi+1)*2+1] + \ - CzCUBICSPLINE::lut[poslo+3]*(int)p[(poshi+2)*2+1]) >> SPLINE_16SHIFT; - -// fir interpolation -#define SNDMIX_GETSTEREOVOL8FIRFILTER \ - int poshi = nPos >> 16;\ - int poslo = (nPos & 0xFFFF);\ - int firidx = ((poslo+WFIR_FRACHALVE)>>WFIR_FRACSHIFT) & WFIR_FRACMASK; \ - int vol_l = (CzWINDOWEDFIR::lut[firidx+0]*(int)p[(poshi+1-4)*2 ]); \ - vol_l += (CzWINDOWEDFIR::lut[firidx+1]*(int)p[(poshi+2-4)*2 ]); \ - vol_l += (CzWINDOWEDFIR::lut[firidx+2]*(int)p[(poshi+3-4)*2 ]); \ - vol_l += (CzWINDOWEDFIR::lut[firidx+3]*(int)p[(poshi+4-4)*2 ]); \ - vol_l += (CzWINDOWEDFIR::lut[firidx+4]*(int)p[(poshi+5-4)*2 ]); \ - vol_l += (CzWINDOWEDFIR::lut[firidx+5]*(int)p[(poshi+6-4)*2 ]); \ - vol_l += (CzWINDOWEDFIR::lut[firidx+6]*(int)p[(poshi+7-4)*2 ]); \ - vol_l += (CzWINDOWEDFIR::lut[firidx+7]*(int)p[(poshi+8-4)*2 ]); \ - vol_l >>= WFIR_8SHIFT; \ - int vol_r = (CzWINDOWEDFIR::lut[firidx+0]*(int)p[(poshi+1-4)*2+1]); \ - vol_r += (CzWINDOWEDFIR::lut[firidx+1]*(int)p[(poshi+2-4)*2+1]); \ - vol_r += (CzWINDOWEDFIR::lut[firidx+2]*(int)p[(poshi+3-4)*2+1]); \ - vol_r += (CzWINDOWEDFIR::lut[firidx+3]*(int)p[(poshi+4-4)*2+1]); \ - vol_r += (CzWINDOWEDFIR::lut[firidx+4]*(int)p[(poshi+5-4)*2+1]); \ - vol_r += (CzWINDOWEDFIR::lut[firidx+5]*(int)p[(poshi+6-4)*2+1]); \ - vol_r += (CzWINDOWEDFIR::lut[firidx+6]*(int)p[(poshi+7-4)*2+1]); \ - vol_r += (CzWINDOWEDFIR::lut[firidx+7]*(int)p[(poshi+8-4)*2+1]); \ - vol_r >>= WFIR_8SHIFT; - -#define SNDMIX_GETSTEREOVOL16FIRFILTER \ - int poshi = nPos >> 16;\ - int poslo = (nPos & 0xFFFF);\ - int firidx = ((poslo+WFIR_FRACHALVE)>>WFIR_FRACSHIFT) & WFIR_FRACMASK; \ - int vol1_l = (CzWINDOWEDFIR::lut[firidx+0]*(int)p[(poshi+1-4)*2 ]); \ - vol1_l += (CzWINDOWEDFIR::lut[firidx+1]*(int)p[(poshi+2-4)*2 ]); \ - vol1_l += (CzWINDOWEDFIR::lut[firidx+2]*(int)p[(poshi+3-4)*2 ]); \ - vol1_l += (CzWINDOWEDFIR::lut[firidx+3]*(int)p[(poshi+4-4)*2 ]); \ - int vol2_l = (CzWINDOWEDFIR::lut[firidx+4]*(int)p[(poshi+5-4)*2 ]); \ - vol2_l += (CzWINDOWEDFIR::lut[firidx+5]*(int)p[(poshi+6-4)*2 ]); \ - vol2_l += (CzWINDOWEDFIR::lut[firidx+6]*(int)p[(poshi+7-4)*2 ]); \ - vol2_l += (CzWINDOWEDFIR::lut[firidx+7]*(int)p[(poshi+8-4)*2 ]); \ - int vol_l = ((vol1_l>>1)+(vol2_l>>1)) >> (WFIR_16BITSHIFT-1); \ - int vol1_r = (CzWINDOWEDFIR::lut[firidx+0]*(int)p[(poshi+1-4)*2+1]); \ - vol1_r += (CzWINDOWEDFIR::lut[firidx+1]*(int)p[(poshi+2-4)*2+1]); \ - vol1_r += (CzWINDOWEDFIR::lut[firidx+2]*(int)p[(poshi+3-4)*2+1]); \ - vol1_r += (CzWINDOWEDFIR::lut[firidx+3]*(int)p[(poshi+4-4)*2+1]); \ - int vol2_r = (CzWINDOWEDFIR::lut[firidx+4]*(int)p[(poshi+5-4)*2+1]); \ - vol2_r += (CzWINDOWEDFIR::lut[firidx+5]*(int)p[(poshi+6-4)*2+1]); \ - vol2_r += (CzWINDOWEDFIR::lut[firidx+6]*(int)p[(poshi+7-4)*2+1]); \ - vol2_r += (CzWINDOWEDFIR::lut[firidx+7]*(int)p[(poshi+8-4)*2+1]); \ - int vol_r = ((vol1_r>>1)+(vol2_r>>1)) >> (WFIR_16BITSHIFT-1); - -///////////////////////////////////////////////////////////////////////////// - -#define SNDMIX_STOREMONOVOL\ - pvol[0] += vol * pChn->nRightVol;\ - pvol[1] += vol * pChn->nLeftVol;\ - pvol += 2; - -#define SNDMIX_STORESTEREOVOL\ - pvol[0] += vol_l * pChn->nRightVol;\ - pvol[1] += vol_r * pChn->nLeftVol;\ - pvol += 2; - -#define SNDMIX_STOREFASTMONOVOL\ - int v = vol * pChn->nRightVol;\ - pvol[0] += v;\ - pvol[1] += v;\ - pvol += 2; - -#define SNDMIX_RAMPMONOVOL\ - nRampLeftVol += pChn->nLeftRamp;\ - nRampRightVol += pChn->nRightRamp;\ - pvol[0] += vol * (nRampRightVol >> VOLUMERAMPPRECISION);\ - pvol[1] += vol * (nRampLeftVol >> VOLUMERAMPPRECISION);\ - pvol += 2; - -#define SNDMIX_RAMPFASTMONOVOL\ - nRampRightVol += pChn->nRightRamp;\ - int fastvol = vol * (nRampRightVol >> VOLUMERAMPPRECISION);\ - pvol[0] += fastvol;\ - pvol[1] += fastvol;\ - pvol += 2; - -#define SNDMIX_RAMPSTEREOVOL\ - nRampLeftVol += pChn->nLeftRamp;\ - nRampRightVol += pChn->nRightRamp;\ - pvol[0] += vol_l * (nRampRightVol >> VOLUMERAMPPRECISION);\ - pvol[1] += vol_r * (nRampLeftVol >> VOLUMERAMPPRECISION);\ - pvol += 2; - - -/////////////////////////////////////////////////// -// Resonant Filters - -// Mono -#define MIX_BEGIN_FILTER \ - double fy1 = pChannel->nFilter_Y1;\ - double fy2 = pChannel->nFilter_Y2;\ - double ta; - -#define MIX_END_FILTER \ - pChannel->nFilter_Y1 = fy1;\ - pChannel->nFilter_Y2 = fy2; - -#define SNDMIX_PROCESSFILTER \ -ta = ((double)vol * pChn->nFilter_A0 + fy1 * pChn->nFilter_B0 + fy2 * pChn->nFilter_B1);\ -fy2 = fy1;\ -fy1 = ta;vol=(int)ta; - -// Stereo -#define MIX_BEGIN_STEREO_FILTER \ -double fy1 = pChannel->nFilter_Y1;\ -double fy2 = pChannel->nFilter_Y2;\ -double fy3 = pChannel->nFilter_Y3;\ -double fy4 = pChannel->nFilter_Y4;\ -double ta, tb; - -#define MIX_END_STEREO_FILTER \ -pChannel->nFilter_Y1 = fy1;\ -pChannel->nFilter_Y2 = fy2;\ -pChannel->nFilter_Y3 = fy3;\ -pChannel->nFilter_Y4 = fy4;\ - -#define SNDMIX_PROCESSSTEREOFILTER \ -ta = ((double)vol_l * pChn->nFilter_A0 + fy1 * pChn->nFilter_B0 + fy2 * pChn->nFilter_B1);\ -tb = ((double)vol_r * pChn->nFilter_A0 + fy3 * pChn->nFilter_B0 + fy4 * pChn->nFilter_B1);\ -fy2 = fy1; fy1 = ta;vol_l=(int)ta;\ -fy4 = fy3; fy3 = tb;vol_r=(int)tb; - -////////////////////////////////////////////////////////// -// Interfaces - -typedef VOID (MPPASMCALL * LPMIXINTERFACE)(MODCHANNEL *, int *, int *); - -#define BEGIN_MIX_INTERFACE(func)\ - VOID MPPASMCALL func(MODCHANNEL *pChannel, int *pbuffer, int *pbufmax)\ - {\ - LONG nPos; - -#define END_MIX_INTERFACE()\ - SNDMIX_ENDSAMPLELOOP\ - } - -// Volume Ramps -#define BEGIN_RAMPMIX_INTERFACE(func)\ - BEGIN_MIX_INTERFACE(func)\ - LONG nRampRightVol = pChannel->nRampRightVol;\ - LONG nRampLeftVol = pChannel->nRampLeftVol; - -#define END_RAMPMIX_INTERFACE()\ - SNDMIX_ENDSAMPLELOOP\ - pChannel->nRampRightVol = nRampRightVol;\ - pChannel->nRightVol = nRampRightVol >> VOLUMERAMPPRECISION;\ - pChannel->nRampLeftVol = nRampLeftVol;\ - pChannel->nLeftVol = nRampLeftVol >> VOLUMERAMPPRECISION;\ - } - -#define BEGIN_FASTRAMPMIX_INTERFACE(func)\ - BEGIN_MIX_INTERFACE(func)\ - LONG nRampRightVol = pChannel->nRampRightVol; - -#define END_FASTRAMPMIX_INTERFACE()\ - SNDMIX_ENDSAMPLELOOP\ - pChannel->nRampRightVol = nRampRightVol;\ - pChannel->nRampLeftVol = nRampRightVol;\ - pChannel->nRightVol = nRampRightVol >> VOLUMERAMPPRECISION;\ - pChannel->nLeftVol = pChannel->nRightVol;\ - } - - -// Mono Resonant Filters -#define BEGIN_MIX_FLT_INTERFACE(func)\ - BEGIN_MIX_INTERFACE(func)\ - MIX_BEGIN_FILTER - - -#define END_MIX_FLT_INTERFACE()\ - SNDMIX_ENDSAMPLELOOP\ - MIX_END_FILTER\ - } - -#define BEGIN_RAMPMIX_FLT_INTERFACE(func)\ - BEGIN_MIX_INTERFACE(func)\ - LONG nRampRightVol = pChannel->nRampRightVol;\ - LONG nRampLeftVol = pChannel->nRampLeftVol;\ - MIX_BEGIN_FILTER - -#define END_RAMPMIX_FLT_INTERFACE()\ - SNDMIX_ENDSAMPLELOOP\ - MIX_END_FILTER\ - pChannel->nRampRightVol = nRampRightVol;\ - pChannel->nRightVol = nRampRightVol >> VOLUMERAMPPRECISION;\ - pChannel->nRampLeftVol = nRampLeftVol;\ - pChannel->nLeftVol = nRampLeftVol >> VOLUMERAMPPRECISION;\ - } - -// Stereo Resonant Filters -#define BEGIN_MIX_STFLT_INTERFACE(func)\ - BEGIN_MIX_INTERFACE(func)\ - MIX_BEGIN_STEREO_FILTER - - -#define END_MIX_STFLT_INTERFACE()\ - SNDMIX_ENDSAMPLELOOP\ - MIX_END_STEREO_FILTER\ - } - -#define BEGIN_RAMPMIX_STFLT_INTERFACE(func)\ - BEGIN_MIX_INTERFACE(func)\ - LONG nRampRightVol = pChannel->nRampRightVol;\ - LONG nRampLeftVol = pChannel->nRampLeftVol;\ - MIX_BEGIN_STEREO_FILTER - -#define END_RAMPMIX_STFLT_INTERFACE()\ - SNDMIX_ENDSAMPLELOOP\ - MIX_END_STEREO_FILTER\ - pChannel->nRampRightVol = nRampRightVol;\ - pChannel->nRightVol = nRampRightVol >> VOLUMERAMPPRECISION;\ - pChannel->nRampLeftVol = nRampLeftVol;\ - pChannel->nLeftVol = nRampLeftVol >> VOLUMERAMPPRECISION;\ - } - - -///////////////////////////////////////////////////// -// - -extern void StereoMixToFloat(const int *pSrc, float *pOut1, float *pOut2, UINT nCount, const float _i2fc); -extern void FloatToStereoMix(const float *pIn1, const float *pIn2, int *pOut, UINT nCount, const float _f2ic); -extern void MonoMixToFloat(const int *pSrc, float *pOut, UINT nCount, const float _i2fc); -extern void FloatToMonoMix(const float *pIn, int *pOut, UINT nCount, const float _f2ic); - -void InitMixBuffer(int *pBuffer, UINT nSamples); -void EndChannelOfs(MODCHANNEL *pChannel, int *pBuffer, UINT nSamples); -void StereoFill(int *pBuffer, UINT nSamples, LPLONG lpROfs, LPLONG lpLOfs); - -void StereoMixToFloat(const int *, float *, float *, UINT nCount); -void FloatToStereoMix(const float *pIn1, const float *pIn2, int *pOut, UINT nCount); - -///////////////////////////////////////////////////// -// Mono samples functions - -BEGIN_MIX_INTERFACE(Mono8BitMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8NOIDO - SNDMIX_STOREMONOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(Mono16BitMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16NOIDO - SNDMIX_STOREMONOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(Mono8BitLinearMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8LINEAR - SNDMIX_STOREMONOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(Mono16BitLinearMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16LINEAR - SNDMIX_STOREMONOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(Mono8BitSplineMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8SPLINE - SNDMIX_STOREMONOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(Mono16BitSplineMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16SPLINE - SNDMIX_STOREMONOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(Mono8BitFirFilterMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8FIRFILTER - SNDMIX_STOREMONOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(Mono16BitFirFilterMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16FIRFILTER - SNDMIX_STOREMONOVOL -END_MIX_INTERFACE() - - -// Volume Ramps -BEGIN_RAMPMIX_INTERFACE(Mono8BitRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8NOIDO - SNDMIX_RAMPMONOVOL -END_RAMPMIX_INTERFACE() - -BEGIN_RAMPMIX_INTERFACE(Mono16BitRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16NOIDO - SNDMIX_RAMPMONOVOL -END_RAMPMIX_INTERFACE() - -BEGIN_RAMPMIX_INTERFACE(Mono8BitLinearRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8LINEAR - SNDMIX_RAMPMONOVOL -END_RAMPMIX_INTERFACE() - -BEGIN_RAMPMIX_INTERFACE(Mono16BitLinearRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16LINEAR - SNDMIX_RAMPMONOVOL -END_RAMPMIX_INTERFACE() - -BEGIN_RAMPMIX_INTERFACE(Mono8BitSplineRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8SPLINE - SNDMIX_RAMPMONOVOL -END_RAMPMIX_INTERFACE() - -BEGIN_RAMPMIX_INTERFACE(Mono16BitSplineRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16SPLINE - SNDMIX_RAMPMONOVOL -END_RAMPMIX_INTERFACE() - -BEGIN_RAMPMIX_INTERFACE(Mono8BitFirFilterRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8FIRFILTER - SNDMIX_RAMPMONOVOL -END_RAMPMIX_INTERFACE() - -BEGIN_RAMPMIX_INTERFACE(Mono16BitFirFilterRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16FIRFILTER - SNDMIX_RAMPMONOVOL -END_RAMPMIX_INTERFACE() - - -////////////////////////////////////////////////////// -// Fast mono mix for leftvol=rightvol (1 less imul) - -BEGIN_MIX_INTERFACE(FastMono8BitMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8NOIDO - SNDMIX_STOREFASTMONOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(FastMono16BitMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16NOIDO - SNDMIX_STOREFASTMONOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(FastMono8BitLinearMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8LINEAR - SNDMIX_STOREFASTMONOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(FastMono16BitLinearMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16LINEAR - SNDMIX_STOREFASTMONOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(FastMono8BitSplineMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8SPLINE - SNDMIX_STOREFASTMONOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(FastMono16BitSplineMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16SPLINE - SNDMIX_STOREFASTMONOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(FastMono8BitFirFilterMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8FIRFILTER - SNDMIX_STOREFASTMONOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(FastMono16BitFirFilterMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16FIRFILTER - SNDMIX_STOREFASTMONOVOL -END_MIX_INTERFACE() - - -// Fast Ramps -BEGIN_FASTRAMPMIX_INTERFACE(FastMono8BitRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8NOIDO - SNDMIX_RAMPFASTMONOVOL -END_FASTRAMPMIX_INTERFACE() - -BEGIN_FASTRAMPMIX_INTERFACE(FastMono16BitRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16NOIDO - SNDMIX_RAMPFASTMONOVOL -END_FASTRAMPMIX_INTERFACE() - -BEGIN_FASTRAMPMIX_INTERFACE(FastMono8BitLinearRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8LINEAR - SNDMIX_RAMPFASTMONOVOL -END_FASTRAMPMIX_INTERFACE() - -BEGIN_FASTRAMPMIX_INTERFACE(FastMono16BitLinearRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16LINEAR - SNDMIX_RAMPFASTMONOVOL -END_FASTRAMPMIX_INTERFACE() - -BEGIN_FASTRAMPMIX_INTERFACE(FastMono8BitSplineRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8SPLINE - SNDMIX_RAMPFASTMONOVOL -END_FASTRAMPMIX_INTERFACE() - -BEGIN_FASTRAMPMIX_INTERFACE(FastMono16BitSplineRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16SPLINE - SNDMIX_RAMPFASTMONOVOL -END_FASTRAMPMIX_INTERFACE() - -BEGIN_FASTRAMPMIX_INTERFACE(FastMono8BitFirFilterRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8FIRFILTER - SNDMIX_RAMPFASTMONOVOL -END_FASTRAMPMIX_INTERFACE() - -BEGIN_FASTRAMPMIX_INTERFACE(FastMono16BitFirFilterRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16FIRFILTER - SNDMIX_RAMPFASTMONOVOL -END_FASTRAMPMIX_INTERFACE() - - -////////////////////////////////////////////////////// -// Stereo samples - -BEGIN_MIX_INTERFACE(Stereo8BitMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETSTEREOVOL8NOIDO - SNDMIX_STORESTEREOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(Stereo16BitMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETSTEREOVOL16NOIDO - SNDMIX_STORESTEREOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(Stereo8BitLinearMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETSTEREOVOL8LINEAR - SNDMIX_STORESTEREOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(Stereo16BitLinearMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETSTEREOVOL16LINEAR - SNDMIX_STORESTEREOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(Stereo8BitSplineMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETSTEREOVOL8SPLINE - SNDMIX_STORESTEREOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(Stereo16BitSplineMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETSTEREOVOL16SPLINE - SNDMIX_STORESTEREOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(Stereo8BitFirFilterMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETSTEREOVOL8FIRFILTER - SNDMIX_STORESTEREOVOL -END_MIX_INTERFACE() - -BEGIN_MIX_INTERFACE(Stereo16BitFirFilterMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETSTEREOVOL16FIRFILTER - SNDMIX_STORESTEREOVOL -END_MIX_INTERFACE() - - -// Volume Ramps -BEGIN_RAMPMIX_INTERFACE(Stereo8BitRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETSTEREOVOL8NOIDO - SNDMIX_RAMPSTEREOVOL -END_RAMPMIX_INTERFACE() - -BEGIN_RAMPMIX_INTERFACE(Stereo16BitRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETSTEREOVOL16NOIDO - SNDMIX_RAMPSTEREOVOL -END_RAMPMIX_INTERFACE() - -BEGIN_RAMPMIX_INTERFACE(Stereo8BitLinearRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETSTEREOVOL8LINEAR - SNDMIX_RAMPSTEREOVOL -END_RAMPMIX_INTERFACE() - -BEGIN_RAMPMIX_INTERFACE(Stereo16BitLinearRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETSTEREOVOL16LINEAR - SNDMIX_RAMPSTEREOVOL -END_RAMPMIX_INTERFACE() - -BEGIN_RAMPMIX_INTERFACE(Stereo8BitSplineRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETSTEREOVOL8SPLINE - SNDMIX_RAMPSTEREOVOL -END_RAMPMIX_INTERFACE() - -BEGIN_RAMPMIX_INTERFACE(Stereo16BitSplineRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETSTEREOVOL16SPLINE - SNDMIX_RAMPSTEREOVOL -END_RAMPMIX_INTERFACE() - -BEGIN_RAMPMIX_INTERFACE(Stereo8BitFirFilterRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETSTEREOVOL8FIRFILTER - SNDMIX_RAMPSTEREOVOL -END_RAMPMIX_INTERFACE() - -BEGIN_RAMPMIX_INTERFACE(Stereo16BitFirFilterRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETSTEREOVOL16FIRFILTER - SNDMIX_RAMPSTEREOVOL -END_RAMPMIX_INTERFACE() - - - -////////////////////////////////////////////////////// -// Resonant Filter Mix - -#ifndef NO_FILTER - -// Mono Filter Mix -BEGIN_MIX_FLT_INTERFACE(FilterMono8BitMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8NOIDO - SNDMIX_PROCESSFILTER - SNDMIX_STOREMONOVOL -END_MIX_FLT_INTERFACE() - -BEGIN_MIX_FLT_INTERFACE(FilterMono16BitMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16NOIDO - SNDMIX_PROCESSFILTER - SNDMIX_STOREMONOVOL -END_MIX_FLT_INTERFACE() - -BEGIN_MIX_FLT_INTERFACE(FilterMono8BitLinearMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8LINEAR - SNDMIX_PROCESSFILTER - SNDMIX_STOREMONOVOL -END_MIX_FLT_INTERFACE() - -BEGIN_MIX_FLT_INTERFACE(FilterMono16BitLinearMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16LINEAR - SNDMIX_PROCESSFILTER - SNDMIX_STOREMONOVOL -END_MIX_FLT_INTERFACE() - -BEGIN_MIX_FLT_INTERFACE(FilterMono8BitSplineMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8SPLINE - SNDMIX_PROCESSFILTER - SNDMIX_STOREMONOVOL -END_MIX_FLT_INTERFACE() - -BEGIN_MIX_FLT_INTERFACE(FilterMono16BitSplineMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16SPLINE - SNDMIX_PROCESSFILTER - SNDMIX_STOREMONOVOL -END_MIX_FLT_INTERFACE() - -BEGIN_MIX_FLT_INTERFACE(FilterMono8BitFirFilterMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8FIRFILTER - SNDMIX_PROCESSFILTER - SNDMIX_STOREMONOVOL -END_MIX_FLT_INTERFACE() - -BEGIN_MIX_FLT_INTERFACE(FilterMono16BitFirFilterMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16FIRFILTER - SNDMIX_PROCESSFILTER - SNDMIX_STOREMONOVOL -END_MIX_FLT_INTERFACE() - -// Filter + Ramp -BEGIN_RAMPMIX_FLT_INTERFACE(FilterMono8BitRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8NOIDO - SNDMIX_PROCESSFILTER - SNDMIX_RAMPMONOVOL -END_RAMPMIX_FLT_INTERFACE() - -BEGIN_RAMPMIX_FLT_INTERFACE(FilterMono16BitRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16NOIDO - SNDMIX_PROCESSFILTER - SNDMIX_RAMPMONOVOL -END_RAMPMIX_FLT_INTERFACE() - -BEGIN_RAMPMIX_FLT_INTERFACE(FilterMono8BitLinearRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8LINEAR - SNDMIX_PROCESSFILTER - SNDMIX_RAMPMONOVOL -END_RAMPMIX_FLT_INTERFACE() - -BEGIN_RAMPMIX_FLT_INTERFACE(FilterMono16BitLinearRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16LINEAR - SNDMIX_PROCESSFILTER - SNDMIX_RAMPMONOVOL -END_RAMPMIX_FLT_INTERFACE() - -BEGIN_RAMPMIX_FLT_INTERFACE(FilterMono8BitSplineRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8SPLINE - SNDMIX_PROCESSFILTER - SNDMIX_RAMPMONOVOL -END_RAMPMIX_FLT_INTERFACE() - -BEGIN_RAMPMIX_FLT_INTERFACE(FilterMono16BitSplineRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16SPLINE - SNDMIX_PROCESSFILTER - SNDMIX_RAMPMONOVOL -END_RAMPMIX_FLT_INTERFACE() - -BEGIN_RAMPMIX_FLT_INTERFACE(FilterMono8BitFirFilterRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETMONOVOL8FIRFILTER - SNDMIX_PROCESSFILTER - SNDMIX_RAMPMONOVOL -END_RAMPMIX_FLT_INTERFACE() - -BEGIN_RAMPMIX_FLT_INTERFACE(FilterMono16BitFirFilterRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETMONOVOL16FIRFILTER - SNDMIX_PROCESSFILTER - SNDMIX_RAMPMONOVOL -END_RAMPMIX_FLT_INTERFACE() - - -// Stereo Filter Mix -BEGIN_MIX_STFLT_INTERFACE(FilterStereo8BitMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETSTEREOVOL8NOIDO - SNDMIX_PROCESSSTEREOFILTER - SNDMIX_STORESTEREOVOL -END_MIX_STFLT_INTERFACE() - -BEGIN_MIX_STFLT_INTERFACE(FilterStereo16BitMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETSTEREOVOL16NOIDO - SNDMIX_PROCESSSTEREOFILTER - SNDMIX_STORESTEREOVOL -END_MIX_STFLT_INTERFACE() - -BEGIN_MIX_STFLT_INTERFACE(FilterStereo8BitLinearMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETSTEREOVOL8LINEAR - SNDMIX_PROCESSSTEREOFILTER - SNDMIX_STORESTEREOVOL -END_MIX_STFLT_INTERFACE() - -BEGIN_MIX_STFLT_INTERFACE(FilterStereo16BitLinearMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETSTEREOVOL16LINEAR - SNDMIX_PROCESSSTEREOFILTER - SNDMIX_STORESTEREOVOL -END_MIX_STFLT_INTERFACE() - -BEGIN_MIX_STFLT_INTERFACE(FilterStereo8BitSplineMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETSTEREOVOL8SPLINE - SNDMIX_PROCESSSTEREOFILTER - SNDMIX_STORESTEREOVOL -END_MIX_STFLT_INTERFACE() - -BEGIN_MIX_STFLT_INTERFACE(FilterStereo16BitSplineMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETSTEREOVOL16SPLINE - SNDMIX_PROCESSSTEREOFILTER - SNDMIX_STORESTEREOVOL -END_MIX_STFLT_INTERFACE() - -BEGIN_MIX_STFLT_INTERFACE(FilterStereo8BitFirFilterMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETSTEREOVOL8FIRFILTER - SNDMIX_PROCESSSTEREOFILTER - SNDMIX_STORESTEREOVOL -END_MIX_STFLT_INTERFACE() - -BEGIN_MIX_STFLT_INTERFACE(FilterStereo16BitFirFilterMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETSTEREOVOL16FIRFILTER - SNDMIX_PROCESSSTEREOFILTER - SNDMIX_STORESTEREOVOL -END_MIX_STFLT_INTERFACE() - -// Stereo Filter + Ramp -BEGIN_RAMPMIX_STFLT_INTERFACE(FilterStereo8BitRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETSTEREOVOL8NOIDO - SNDMIX_PROCESSSTEREOFILTER - SNDMIX_RAMPSTEREOVOL -END_RAMPMIX_STFLT_INTERFACE() - -BEGIN_RAMPMIX_STFLT_INTERFACE(FilterStereo16BitRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETSTEREOVOL16NOIDO - SNDMIX_PROCESSSTEREOFILTER - SNDMIX_RAMPSTEREOVOL -END_RAMPMIX_STFLT_INTERFACE() - -BEGIN_RAMPMIX_STFLT_INTERFACE(FilterStereo8BitLinearRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETSTEREOVOL8LINEAR - SNDMIX_PROCESSSTEREOFILTER - SNDMIX_RAMPSTEREOVOL -END_RAMPMIX_STFLT_INTERFACE() - -BEGIN_RAMPMIX_STFLT_INTERFACE(FilterStereo16BitLinearRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETSTEREOVOL16LINEAR - SNDMIX_PROCESSSTEREOFILTER - SNDMIX_RAMPSTEREOVOL -END_RAMPMIX_STFLT_INTERFACE() - -BEGIN_RAMPMIX_STFLT_INTERFACE(FilterStereo8BitSplineRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETSTEREOVOL8SPLINE - SNDMIX_PROCESSSTEREOFILTER - SNDMIX_RAMPSTEREOVOL -END_RAMPMIX_STFLT_INTERFACE() - -BEGIN_RAMPMIX_STFLT_INTERFACE(FilterStereo16BitSplineRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETSTEREOVOL16SPLINE - SNDMIX_PROCESSSTEREOFILTER - SNDMIX_RAMPSTEREOVOL -END_RAMPMIX_STFLT_INTERFACE() - -BEGIN_RAMPMIX_STFLT_INTERFACE(FilterStereo8BitFirFilterRampMix) - SNDMIX_BEGINSAMPLELOOP8 - SNDMIX_GETSTEREOVOL8FIRFILTER - SNDMIX_PROCESSSTEREOFILTER - SNDMIX_RAMPSTEREOVOL -END_RAMPMIX_STFLT_INTERFACE() - -BEGIN_RAMPMIX_STFLT_INTERFACE(FilterStereo16BitFirFilterRampMix) - SNDMIX_BEGINSAMPLELOOP16 - SNDMIX_GETSTEREOVOL16FIRFILTER - SNDMIX_PROCESSSTEREOFILTER - SNDMIX_RAMPSTEREOVOL -END_RAMPMIX_STFLT_INTERFACE() - - -#else -// Mono -#define FilterMono8BitMix Mono8BitMix -#define FilterMono16BitMix Mono16BitMix -#define FilterMono8BitLinearMix Mono8BitLinearMix -#define FilterMono16BitLinearMix Mono16BitLinearMix -#define FilterMono8BitSplineMix Mono8BitSplineMix -#define FilterMono16BitSplineMix Mono16BitSplineMix -#define FilterMono8BitFirFilterMix Mono8BitFirFilterMix -#define FilterMono16BitFirFilterMix Mono16BitFirFilterMix -#define FilterMono8BitRampMix Mono8BitRampMix -#define FilterMono16BitRampMix Mono16BitRampMix -#define FilterMono8BitLinearRampMix Mono8BitLinearRampMix -#define FilterMono16BitLinearRampMix Mono16BitLinearRampMix -#define FilterMono8BitSplineRampMix Mono8BitSplineRampMix -#define FilterMono16BitSplineRampMix Mono16BitSplineRampMix -#define FilterMono8BitFirFilterRampMix Mono8BitFirFilterRampMix -#define FilterMono16BitFirFilterRampMix Mono16BitFirFilterRampMix -// Stereo -#define FilterStereo8BitMix Stereo8BitMix -#define FilterStereo16BitMix Stereo16BitMix -#define FilterStereo8BitLinearMix Stereo8BitLinearMix -#define FilterStereo16BitLinearMix Stereo16BitLinearMix -#define FilterStereo8BitSplineMix Stereo8BitSplineMix -#define FilterStereo16BitSplineMix Stereo16BitSplineMix -#define FilterStereo8BitFirFilterMix Stereo8BitFirFilterMix -#define FilterStereo16BitFirFilterMix Stereo16BitFirFilterMix -#define FilterStereo8BitRampMix Stereo8BitRampMix -#define FilterStereo16BitRampMix Stereo16BitRampMix -#define FilterStereo8BitLinearRampMix Stereo8BitLinearRampMix -#define FilterStereo16BitLinearRampMix Stereo16BitLinearRampMix -#define FilterStereo8BitSplineRampMix Stereo8BitSplineRampMix -#define FilterStereo16BitSplineRampMix Stereo16BitSplineRampMix -#define FilterStereo8BitFirFilterRampMix Stereo8BitFirFilterRampMix -#define FilterStereo16BitFirFilterRampMix Stereo16BitFirFilterRampMix - -#endif - -///////////////////////////////////////////////////////////////////////////////////// -// -// Mix function tables -// -// -// Index is as follow: -// [b1-b0] format (8-bit-mono, 16-bit-mono, 8-bit-stereo, 16-bit-stereo) -// [b2] ramp -// [b3] filter -// [b5-b4] src type -// - -#define MIXNDX_16BIT 0x01 -#define MIXNDX_STEREO 0x02 -#define MIXNDX_RAMP 0x04 -#define MIXNDX_FILTER 0x08 -#define MIXNDX_LINEARSRC 0x10 -#define MIXNDX_SPLINESRC 0x20 -#define MIXNDX_FIRSRC 0x30 - -const LPMIXINTERFACE gpMixFunctionTable[2*2*16] = -{ - // No SRC - Mono8BitMix, Mono16BitMix, Stereo8BitMix, Stereo16BitMix, - Mono8BitRampMix, Mono16BitRampMix, Stereo8BitRampMix, - Stereo16BitRampMix, - // No SRC, Filter - FilterMono8BitMix, FilterMono16BitMix, FilterStereo8BitMix, - FilterStereo16BitMix, FilterMono8BitRampMix, FilterMono16BitRampMix, - FilterStereo8BitRampMix, FilterStereo16BitRampMix, - // Linear SRC - Mono8BitLinearMix, Mono16BitLinearMix, Stereo8BitLinearMix, - Stereo16BitLinearMix, Mono8BitLinearRampMix, Mono16BitLinearRampMix, - Stereo8BitLinearRampMix,Stereo16BitLinearRampMix, - // Linear SRC, Filter - FilterMono8BitLinearMix, FilterMono16BitLinearMix, - FilterStereo8BitLinearMix, FilterStereo16BitLinearMix, - FilterMono8BitLinearRampMix, FilterMono16BitLinearRampMix, - FilterStereo8BitLinearRampMix, FilterStereo16BitLinearRampMix, - - // FirFilter SRC - Mono8BitSplineMix, Mono16BitSplineMix, Stereo8BitSplineMix, - Stereo16BitSplineMix, Mono8BitSplineRampMix, Mono16BitSplineRampMix, - Stereo8BitSplineRampMix,Stereo16BitSplineRampMix, - // Spline SRC, Filter - FilterMono8BitSplineMix, FilterMono16BitSplineMix, - FilterStereo8BitSplineMix, FilterStereo16BitSplineMix, - FilterMono8BitSplineRampMix, FilterMono16BitSplineRampMix, - FilterStereo8BitSplineRampMix, FilterStereo16BitSplineRampMix, - - // FirFilter SRC - Mono8BitFirFilterMix, Mono16BitFirFilterMix, Stereo8BitFirFilterMix, - Stereo16BitFirFilterMix, Mono8BitFirFilterRampMix, - Mono16BitFirFilterRampMix, Stereo8BitFirFilterRampMix, - Stereo16BitFirFilterRampMix, - // FirFilter SRC, Filter - FilterMono8BitFirFilterMix, FilterMono16BitFirFilterMix, - FilterStereo8BitFirFilterMix, FilterStereo16BitFirFilterMix, - FilterMono8BitFirFilterRampMix, FilterMono16BitFirFilterRampMix, - FilterStereo8BitFirFilterRampMix, FilterStereo16BitFirFilterRampMix -}; - -const LPMIXINTERFACE gpFastMixFunctionTable[2*2*16] = -{ - // No SRC - FastMono8BitMix, FastMono16BitMix, Stereo8BitMix, Stereo16BitMix, - FastMono8BitRampMix, FastMono16BitRampMix, Stereo8BitRampMix, - Stereo16BitRampMix, - // No SRC, Filter - FilterMono8BitMix, FilterMono16BitMix, FilterStereo8BitMix, - FilterStereo16BitMix, FilterMono8BitRampMix, FilterMono16BitRampMix, - FilterStereo8BitRampMix, FilterStereo16BitRampMix, - // Linear SRC - FastMono8BitLinearMix, FastMono16BitLinearMix, Stereo8BitLinearMix, - Stereo16BitLinearMix, FastMono8BitLinearRampMix, - FastMono16BitLinearRampMix, Stereo8BitLinearRampMix, - Stereo16BitLinearRampMix, - // Linear SRC, Filter - FilterMono8BitLinearMix, FilterMono16BitLinearMix, - FilterStereo8BitLinearMix, FilterStereo16BitLinearMix, - FilterMono8BitLinearRampMix, FilterMono16BitLinearRampMix, - FilterStereo8BitLinearRampMix, FilterStereo16BitLinearRampMix, - - // Spline SRC - Mono8BitSplineMix, Mono16BitSplineMix, Stereo8BitSplineMix, - Stereo16BitSplineMix, Mono8BitSplineRampMix, Mono16BitSplineRampMix, - Stereo8BitSplineRampMix, Stereo16BitSplineRampMix, - // Spline SRC, Filter - FilterMono8BitSplineMix, FilterMono16BitSplineMix, - FilterStereo8BitSplineMix, FilterStereo16BitSplineMix, - FilterMono8BitSplineRampMix, FilterMono16BitSplineRampMix, - FilterStereo8BitSplineRampMix, FilterStereo16BitSplineRampMix, - - // FirFilter SRC - Mono8BitFirFilterMix, Mono16BitFirFilterMix, Stereo8BitFirFilterMix, - Stereo16BitFirFilterMix, Mono8BitFirFilterRampMix, - Mono16BitFirFilterRampMix, Stereo8BitFirFilterRampMix, - Stereo16BitFirFilterRampMix, - // FirFilter SRC, Filter - FilterMono8BitFirFilterMix, FilterMono16BitFirFilterMix, - FilterStereo8BitFirFilterMix, FilterStereo16BitFirFilterMix, - FilterMono8BitFirFilterRampMix, FilterMono16BitFirFilterRampMix, - FilterStereo8BitFirFilterRampMix, FilterStereo16BitFirFilterRampMix, -}; - - -///////////////////////////////////////////////////////////////////////// - -static LONG MPPFASTCALL GetSampleCount(MODCHANNEL *pChn, LONG nSamples) -//--------------------------------------------------------------------- -{ - LONG nLoopStart = (pChn->dwFlags & CHN_LOOP) ? pChn->nLoopStart : 0; - LONG nInc = pChn->nInc; - - if ((nSamples <= 0) || (!nInc) || (!pChn->nLength)) return 0; - // Under zero ? - if ((LONG)pChn->nPos < nLoopStart) - { - if (nInc < 0) - { - // Invert loop for bidi loops - LONG nDelta = ((nLoopStart - pChn->nPos) << 16) - (pChn->nPosLo & 0xffff); - pChn->nPos = nLoopStart | (nDelta>>16); - pChn->nPosLo = nDelta & 0xffff; - if (((LONG)pChn->nPos < nLoopStart) || (pChn->nPos >= (nLoopStart+pChn->nLength)/2)) - { - pChn->nPos = nLoopStart; pChn->nPosLo = 0; - } - nInc = -nInc; - pChn->nInc = nInc; - pChn->dwFlags &= ~(CHN_PINGPONGFLAG); // go forward - if ((!(pChn->dwFlags & CHN_LOOP)) || (pChn->nPos >= pChn->nLength)) - { - pChn->nPos = pChn->nLength; - pChn->nPosLo = 0; - return 0; - } - } else - { - // We probably didn't hit the loop end yet (first loop), so we do nothing - if ((LONG)pChn->nPos < 0) pChn->nPos = 0; - } - } else - // Past the end - if (pChn->nPos >= pChn->nLength) - { - if (!(pChn->dwFlags & CHN_LOOP)) return 0; // not looping -> stop this channel - if (pChn->dwFlags & CHN_PINGPONGLOOP) - { - // Invert loop - if (nInc > 0) - { - nInc = -nInc; - pChn->nInc = nInc; - } - pChn->dwFlags |= CHN_PINGPONGFLAG; - // adjust loop position - LONG nDeltaHi = (pChn->nPos - pChn->nLength); - LONG nDeltaLo = 0x10000 - (pChn->nPosLo & 0xffff); - pChn->nPos = pChn->nLength - nDeltaHi - (nDeltaLo>>16); - pChn->nPosLo = nDeltaLo & 0xffff; - if ((pChn->nPos <= pChn->nLoopStart) || (pChn->nPos >= pChn->nLength)) pChn->nPos = pChn->nLength-1; - } else - { - if (nInc < 0) // This is a bug - { - nInc = -nInc; - pChn->nInc = nInc; - } - // Restart at loop start - pChn->nPos += nLoopStart - pChn->nLength; - if ((LONG)pChn->nPos < nLoopStart) pChn->nPos = pChn->nLoopStart; - } - } - LONG nPos = pChn->nPos; - // too big increment, and/or too small loop length - if (nPos < nLoopStart) - { - if ((nPos < 0) || (nInc < 0)) return 0; - } - if ((nPos < 0) || (nPos >= (LONG)pChn->nLength)) return 0; - LONG nPosLo = (USHORT)pChn->nPosLo, nSmpCount = nSamples; - if (nInc < 0) - { - LONG nInv = -nInc; - LONG maxsamples = 16384 / ((nInv>>16)+1); - if (maxsamples < 2) maxsamples = 2; - if (nSamples > maxsamples) nSamples = maxsamples; - LONG nDeltaHi = (nInv>>16) * (nSamples - 1); - LONG nDeltaLo = (nInv&0xffff) * (nSamples - 1); - LONG nPosDest = nPos - nDeltaHi + ((nPosLo - nDeltaLo) >> 16); - if (nPosDest < nLoopStart) - { - nSmpCount = (ULONG)(((((LONGLONG)nPos - nLoopStart) << 16) + nPosLo - 1) / nInv) + 1; - } - } else - { - LONG maxsamples = 16384 / ((nInc>>16)+1); - if (maxsamples < 2) maxsamples = 2; - if (nSamples > maxsamples) nSamples = maxsamples; - LONG nDeltaHi = (nInc>>16) * (nSamples - 1); - LONG nDeltaLo = (nInc&0xffff) * (nSamples - 1); - LONG nPosDest = nPos + nDeltaHi + ((nPosLo + nDeltaLo)>>16); - if (nPosDest >= (LONG)pChn->nLength) - { - nSmpCount = (ULONG)(((((LONGLONG)pChn->nLength - nPos) << 16) - nPosLo - 1) / nInc) + 1; - } - } - if (nSmpCount <= 1) return 1; - if (nSmpCount > nSamples) return nSamples; - return nSmpCount; -} - - -UINT CSoundFile::CreateStereoMix(int count) -//----------------------------------------- -{ - LPLONG pOfsL, pOfsR; - DWORD nchused, nchmixed; - - if (!count) return 0; - if (gnChannels > 2) InitMixBuffer(MixRearBuffer, count*2); - nchused = nchmixed = 0; - for (UINT nChn=0; nChnpCurrentSample) continue; - nMasterCh = (ChnMix[nChn] < m_nChannels) ? ChnMix[nChn]+1 : pChannel->nMasterChn; - pOfsR = &gnDryROfsVol; - pOfsL = &gnDryLOfsVol; - nFlags = 0; - if (pChannel->dwFlags & CHN_16BIT) nFlags |= MIXNDX_16BIT; - if (pChannel->dwFlags & CHN_STEREO) nFlags |= MIXNDX_STEREO; - #ifndef NO_FILTER - if (pChannel->dwFlags & CHN_FILTER) nFlags |= MIXNDX_FILTER; - #endif - if (!(pChannel->dwFlags & CHN_NOIDO) - && !(gdwSoundSetup & SNDMIX_NORESAMPLING)) - { - // use hq-fir mixer? - if( (gdwSoundSetup & (SNDMIX_HQRESAMPLER|SNDMIX_ULTRAHQSRCMODE)) == (SNDMIX_HQRESAMPLER|SNDMIX_ULTRAHQSRCMODE) ) - nFlags |= MIXNDX_FIRSRC; - else if( (gdwSoundSetup & SNDMIX_HQRESAMPLER)) - nFlags |= MIXNDX_SPLINESRC; - else - nFlags |= MIXNDX_LINEARSRC; // use - } - if ((nFlags < 0x40) && (pChannel->nLeftVol == pChannel->nRightVol) - && ((!pChannel->nRampLength) || (pChannel->nLeftRamp == pChannel->nRightRamp))) - { - pMixFuncTable = gpFastMixFunctionTable; - } else - { - pMixFuncTable = gpMixFunctionTable; - } - nsamples = count; -#ifndef MODPLUG_NO_REVERB - pbuffer = (gdwSoundSetup & SNDMIX_REVERB) ? MixReverbBuffer : MixSoundBuffer; - if (pChannel->dwFlags & CHN_NOREVERB) pbuffer = MixSoundBuffer; - if (pChannel->dwFlags & CHN_REVERB) pbuffer = MixReverbBuffer; - if (pbuffer == MixReverbBuffer) - { - if (!gnReverbSend) memset(MixReverbBuffer, 0, count * 8); - gnReverbSend += count; - } -#else - pbuffer = MixSoundBuffer; -#endif - nchused++; - //////////////////////////////////////////////////// - SampleLooping: - UINT nrampsamples = nsamples; - if (pChannel->nRampLength > 0) - { - if ((LONG)nrampsamples > pChannel->nRampLength) nrampsamples = pChannel->nRampLength; - } - if ((nSmpCount = GetSampleCount(pChannel, nrampsamples)) <= 0) - { - // Stopping the channel - pChannel->pCurrentSample = NULL; - pChannel->nLength = 0; - pChannel->nPos = 0; - pChannel->nPosLo = 0; - pChannel->nRampLength = 0; - EndChannelOfs(pChannel, pbuffer, nsamples); - *pOfsR += pChannel->nROfs; - *pOfsL += pChannel->nLOfs; - pChannel->nROfs = pChannel->nLOfs = 0; - pChannel->dwFlags &= ~CHN_PINGPONGFLAG; - continue; - } - // Should we mix this channel ? - UINT naddmix; - if (((nchmixed >= m_nMaxMixChannels) && (!(gdwSoundSetup & SNDMIX_DIRECTTODISK))) - || ((!pChannel->nRampLength) && (!(pChannel->nLeftVol|pChannel->nRightVol)))) - { - LONG delta = (pChannel->nInc * (LONG)nSmpCount) + (LONG)pChannel->nPosLo; - pChannel->nPosLo = delta & 0xFFFF; - pChannel->nPos += (delta >> 16); - pChannel->nROfs = pChannel->nLOfs = 0; - pbuffer += nSmpCount*2; - naddmix = 0; - } else - // Do mixing - { - if (pChannel->nLength) { - pChannel->topnote_offset = ((pChannel->nPos << 16) | pChannel->nPosLo) % pChannel->nLength; - } - - // Choose function for mixing - LPMIXINTERFACE pMixFunc; - pMixFunc = (pChannel->nRampLength) ? pMixFuncTable[nFlags|MIXNDX_RAMP] : pMixFuncTable[nFlags]; - int *pbufmax = pbuffer + (nSmpCount*2); - pChannel->nROfs = - *(pbufmax-2); - pChannel->nLOfs = - *(pbufmax-1); - pMixFunc(pChannel, pbuffer, pbufmax); - pChannel->nROfs += *(pbufmax-2); - pChannel->nLOfs += *(pbufmax-1); - pbuffer = pbufmax; - naddmix = 1; - - } - nsamples -= nSmpCount; - if (pChannel->nRampLength) - { - pChannel->nRampLength -= nSmpCount; - if (pChannel->nRampLength <= 0) - { - pChannel->nRampLength = 0; - pChannel->nRightVol = pChannel->nNewRightVol; - pChannel->nLeftVol = pChannel->nNewLeftVol; - pChannel->nRightRamp = pChannel->nLeftRamp = 0; - if ((pChannel->dwFlags & CHN_NOTEFADE) && (!(pChannel->nFadeOutVol))) - { - pChannel->nLength = 0; - pChannel->pCurrentSample = NULL; - } - } - } - if (nsamples > 0) goto SampleLooping; - nchmixed += naddmix; - } - return nchused; -} - -static float f2ic = (float)(1 << 28); -static float i2fc = (float)(1.0 / (1 << 28)); - -VOID CSoundFile::StereoMixToFloat(const int *pSrc, float *pOut1, float *pOut2, UINT nCount) -//----------------------------------------------------------------------------------------- -{ - for (UINT i = 0; i < nCount; i++) { - *pOut1++ = *pSrc * i2fc; /*!*/ - pSrc++; - - *pOut2++ = *pSrc * i2fc; /*!*/ - pSrc++; - } -} - - -VOID CSoundFile::FloatToStereoMix(const float *pIn1, const float *pIn2, int *pOut, UINT nCount) -//--------------------------------------------------------------------------------------------- -{ - for (UINT i = 0; i < nCount; i++) { - *pOut++ = (int)(*pIn1 * f2ic); - *pOut++ = (int)(*pIn2 * f2ic); - pIn1++; - pIn2++; - } -} - - -VOID CSoundFile::MonoMixToFloat(const int *pSrc, float *pOut, UINT nCount) -//------------------------------------------------------------------------ -{ - for (UINT i = 0; i < nCount; i++) { - *pOut++ = *pSrc * i2fc; /*!*/ - pSrc++; - } -} - - -VOID CSoundFile::FloatToMonoMix(const float *pIn, int *pOut, UINT nCount) -//----------------------------------------------------------------------- -{ - for (UINT i = 0; i < nCount; i++) { - *pOut++ = (int)(*pIn * f2ic); /*!*/ - pIn++; - } -} - - -// Clip and convert to 8 bit -//---GCCFIX: Asm replaced with C function -// The C version was written by Rani Assaf , I believe -DWORD Convert32To8(LPVOID lp8, int *pBuffer, DWORD lSampleCount, LONG mins[2], LONG maxs[2]) -{ - unsigned char *p = (unsigned char *)lp8; - for (UINT i=0; i MIXING_CLIPMAX) - n = MIXING_CLIPMAX; - if (n < mins[i&1]) - mins[i&1]= n; - else if (n > maxs[i&1]) - maxs[i&1] = n; - p[i] = (n >> (24-MIXING_ATTENUATION)) ^ 0x80; // 8-bit unsigned - } - return lSampleCount; -} -//---GCCFIX: Asm replaced with C function -// The C version was written by Rani Assaf , I believe -DWORD Convert32To16(LPVOID lp16, int *pBuffer, DWORD lSampleCount, LONG mins[2], LONG maxs[2]) -{ - signed short *p = (signed short *)lp16; - for (UINT i=0; i MIXING_CLIPMAX) - n = MIXING_CLIPMAX; - if (n < mins[i&1]) - mins[i&1]= n; - else if (n > maxs[i&1]) - maxs[i&1] = n; - p[i] = n >> (16-MIXING_ATTENUATION); // 16-bit signed - } - return lSampleCount * 2; -} -//---GCCFIX: Asm replaced with C function -// 24-bit might not work... -DWORD Convert32To24(LPVOID lp24, int *pBuffer, DWORD lSampleCount, LONG mins[2], LONG maxs[2]) -{ - /* the inventor of 24bit anything should be shot */ - unsigned char *p = (unsigned char *)lp24; - for (UINT i=0; i MIXING_CLIPMAX) - n = MIXING_CLIPMAX; - if (n < mins[i&1]) - mins[i&1]= n; - else if (n > maxs[i&1]) - maxs[i&1] = n; - n = n >> (8-MIXING_ATTENUATION); // 24-bit signed - /* err, assume same endian */ - memcpy(p, &n, 3); - p += 3; - } - return lSampleCount * 2; -} -//---GCCFIX: Asm replaced with C function -// 32-bit might not work... -DWORD Convert32To32(LPVOID lp32, int *pBuffer, DWORD lSampleCount, LONG mins[2], LONG maxs[2]) -{ - signed int *p = (signed int *)lp32; - for (UINT i=0; i MIXING_CLIPMAX) - n = MIXING_CLIPMAX; - if (n < mins[i&1]) - mins[i&1]= n; - else if (n > maxs[i&1]) - maxs[i&1] = n; - p[i] = (n >> MIXING_ATTENUATION); // 32-bit signed - } - return lSampleCount * 2; -} -//---GCCFIX: Asm replaced with C function -// Will fill in later. -void InitMixBuffer(int *pBuffer, UINT nSamples) -{ - memset(pBuffer, 0, nSamples * sizeof(int)); -} - -//---GCCFIX: Asm replaced with C function -void InterleaveFrontRear(int *pFrontBuf, int *pRearBuf, DWORD nSamples) -{ - DWORD i=0; - - pRearBuf[i] = pFrontBuf[1]; - for (i = 1; i < nSamples; i++) { - pRearBuf[i] = pFrontBuf[(i*2)+1]; - pFrontBuf[i] = pFrontBuf[i*2]; - } -} -//---GCCFIX: Asm replaced with C function -VOID MonoFromStereo(int *pMixBuf, UINT nSamples) -{ - UINT j; - for(UINT i = 0; i < nSamples; i++) - { - j = i << 1; - pMixBuf[i] = (pMixBuf[j] + pMixBuf[j + 1]) >> 1; - } -} - -//---GCCFIX: Asm replaced with C function -#define OFSDECAYSHIFT 8 -#define OFSDECAYMASK 0xFF -void StereoFill(int *pBuffer, UINT nSamples, LPLONG lpROfs, LPLONG lpLOfs) -//--------------------------------------------------------------------------------------------------------- -{ - int rofs = *lpROfs; - int lofs = *lpLOfs; - - if ((!rofs) && (!lofs)) - { - InitMixBuffer(pBuffer, nSamples*2); - return; - } - for (UINT i=0; i>31) & OFSDECAYMASK)) >> OFSDECAYSHIFT; - int x_l = (lofs + (((-lofs)>>31) & OFSDECAYMASK)) >> OFSDECAYSHIFT; - rofs -= x_r; - lofs -= x_l; - pBuffer[i*2] = x_r; - pBuffer[i*2+1] = x_l; - } - *lpROfs = rofs; - *lpLOfs = lofs; -} -//---GCCFIX: Asm replaced with C function -// Will fill in later. -void EndChannelOfs(MODCHANNEL *pChannel, int *pBuffer, UINT nSamples) -{ - int rofs = pChannel->nROfs; - int lofs = pChannel->nLOfs; - - if ((!rofs) && (!lofs)) return; - for (UINT i=0; i>31) & OFSDECAYMASK)) >> OFSDECAYSHIFT; - int x_l = (lofs + (((-lofs)>>31) & OFSDECAYMASK)) >> OFSDECAYSHIFT; - rofs -= x_r; - lofs -= x_l; - pBuffer[i*2] += x_r; - pBuffer[i*2+1] += x_l; - } - pChannel->nROfs = rofs; - pChannel->nLOfs = lofs; -} - - - - - -////////////////////////////////////////////////////////////////////////////////// -// Automatic Gain Control - -#ifndef NO_AGC - -// Limiter -#define MIXING_LIMITMAX (0x08100000) -#define MIXING_LIMITMIN (-MIXING_LIMITMAX) - -void CSoundFile::ProcessAGC(int count) -//------------------------------------ -{ - static DWORD gAGCRecoverCount = 0; - UINT agc = AGC(MixSoundBuffer, count, gnAGC); - // Some kind custom law, so that the AGC stays quite stable, but slowly - // goes back up if the sound level stays below a level inversely proportional - // to the AGC level. (J'me comprends) - if ((agc >= gnAGC) && (gnAGC < AGC_UNITY) && (gnVUMeter < (0xFF - (gnAGC >> (AGC_PRECISION-7))) )) - { - gAGCRecoverCount += count; - UINT agctimeout = gdwMixingFreq + gnAGC; - if (gnChannels >= 2) agctimeout <<= 1; - if (gAGCRecoverCount >= agctimeout) - { - gAGCRecoverCount = 0; - gnAGC++; - } - } else - { - gnAGC = agc; - gAGCRecoverCount = 0; - } -} - - - -void CSoundFile::ResetAGC() -//------------------------- -{ - gnAGC = AGC_UNITY; -} - -#endif // NO_AGC - diff -Nru audacious-plugins-2.4.4/src/modplug/gui/callbacks.cxx audacious-plugins-3.2/src/modplug/gui/callbacks.cxx --- audacious-plugins-2.4.4/src/modplug/gui/callbacks.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/gui/callbacks.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,162 +0,0 @@ -#include - -#include -#include - -#include "callbacks.h" -#include "interface.h" -#include "support.h" - -#include "../modplugbmp.h" - - -gboolean -hide_window (GtkWidget *widget, - GdkEvent *event, - gpointer user_data) -{ - gtk_widget_hide(widget); - return TRUE; -} - - -void -on_config_apply_clicked (GtkButton *button, - gpointer user_data) -{ - ModplugXMMS::Settings lProps; - - if(gtk_toggle_button_get_active((GtkToggleButton*)lookup_widget((GtkWidget*)button, "bit8"))) - lProps.mBits = 8; - else - lProps.mBits = 16; - - if(gtk_toggle_button_get_active((GtkToggleButton*)lookup_widget((GtkWidget*)button, "samp22"))) - lProps.mFrequency = 22050; - else if (gtk_toggle_button_get_active((GtkToggleButton*)lookup_widget((GtkWidget*)button, "samp44"))) - lProps.mFrequency = 44100; - else if (gtk_toggle_button_get_active((GtkToggleButton*)lookup_widget((GtkWidget*)button, "samp96"))) - lProps.mFrequency = 96000; - else - lProps.mFrequency = 48000; - - if(gtk_toggle_button_get_active((GtkToggleButton*)lookup_widget((GtkWidget*)button, "resampNearest"))) - lProps.mResamplingMode = 0; - else if(gtk_toggle_button_get_active((GtkToggleButton*)lookup_widget((GtkWidget*)button, "resampLinear"))) - lProps.mResamplingMode = 1; - else if(gtk_toggle_button_get_active((GtkToggleButton*)lookup_widget((GtkWidget*)button, "resampSpline"))) - lProps.mResamplingMode = 2; - else - lProps.mResamplingMode = 3; - - if(gtk_toggle_button_get_active((GtkToggleButton*)lookup_widget((GtkWidget*)button, "mono"))) - lProps.mChannels = 1; - else - lProps.mChannels = 2; - - if(gtk_toggle_button_get_active((GtkToggleButton*)lookup_widget((GtkWidget*)button, "fxNR"))) - lProps.mNoiseReduction = true; - else - lProps.mNoiseReduction = false; - if(gtk_toggle_button_get_active((GtkToggleButton*)lookup_widget((GtkWidget*)button, "fxAmigaMOD"))) - lProps.mGrabAmigaMOD = true; - else - lProps.mGrabAmigaMOD = false; - if(gtk_toggle_button_get_active((GtkToggleButton*)lookup_widget((GtkWidget*)button, "fxFastInfo"))) - lProps.mFastinfo = true; - else - lProps.mFastinfo = false; - if(gtk_toggle_button_get_active((GtkToggleButton*)lookup_widget((GtkWidget*)button, "fxUseFilename"))) - lProps.mUseFilename = true; - else - lProps.mUseFilename = false; - if(gtk_toggle_button_get_active((GtkToggleButton*)lookup_widget((GtkWidget*)button, "fxReverb"))) - lProps.mReverb = true; - else - lProps.mReverb = false; - if(gtk_toggle_button_get_active((GtkToggleButton*)lookup_widget((GtkWidget*)button, "fxBassBoost"))) - lProps.mMegabass = true; - else - lProps.mMegabass = false; - if(gtk_toggle_button_get_active((GtkToggleButton*)lookup_widget((GtkWidget*)button, "fxSurround"))) - lProps.mSurround = true; - else - lProps.mSurround = false; - if(gtk_toggle_button_get_active((GtkToggleButton*)lookup_widget((GtkWidget*)button, "fxPreamp"))) - lProps.mPreamp = true; - else - lProps.mPreamp = false; - - if(gtk_toggle_button_get_active((GtkToggleButton*)lookup_widget((GtkWidget*)button, "fxLoopForever"))) - lProps.mLoopCount = -1; - else if (gtk_toggle_button_get_active((GtkToggleButton*)lookup_widget((GtkWidget*)button, "fxLoopFinite"))) - { - lProps.mLoopCount = - (uint32)gtk_spin_button_get_adjustment( - (GtkSpinButton*)lookup_widget((GtkWidget*)button, "fxLoopCount"))->value; - } - else - lProps.mLoopCount = 0; - - //hmm... GTK objects have un-protected data members? That's not good... - lProps.mReverbDepth = - (uint32)gtk_range_get_adjustment((GtkRange*)lookup_widget((GtkWidget*)button, "fxReverbDepth"))->value; - lProps.mReverbDelay = - (uint32)gtk_range_get_adjustment((GtkRange*)lookup_widget((GtkWidget*)button, "fxReverbDelay"))->value; - lProps.mBassAmount = - (uint32)gtk_range_get_adjustment((GtkRange*)lookup_widget((GtkWidget*)button, "fxBassAmount"))->value; - lProps.mBassRange = - (uint32)gtk_range_get_adjustment((GtkRange*)lookup_widget((GtkWidget*)button, "fxBassRange"))->value; - lProps.mSurroundDepth = - (uint32)gtk_range_get_adjustment((GtkRange*)lookup_widget((GtkWidget*)button, "fxSurroundDepth"))->value; - lProps.mSurroundDelay = - (uint32)gtk_range_get_adjustment((GtkRange*)lookup_widget((GtkWidget*)button, "fxSurroundDelay"))->value; - lProps.mPreampLevel = - (float)gtk_range_get_adjustment((GtkRange*)lookup_widget((GtkWidget*)button, "fxPreampLevel"))->value; - - gModplugXMMS.SetModProps(lProps); -} - - -void -on_config_ok_clicked (GtkButton *button, - gpointer user_data) -{ - GtkWidget* lConfigWindow; - - on_config_apply_clicked(button, user_data); - - lConfigWindow = lookup_widget((GtkWidget*)button, "Config"); - if(!lConfigWindow) - cerr << "ModPlug: on_config_ok_clicked: Could not find config window!" << endl; - else - gtk_widget_hide(lConfigWindow); -} - - -void -on_config_cancel_clicked (GtkButton *button, - gpointer user_data) -{ - GtkWidget* lConfigWindow; - - lConfigWindow = lookup_widget((GtkWidget*)button, "Config"); - if(!lConfigWindow) - cerr << "ModPlug: on_config_ok_clicked: Could not find config window!" << endl; - else - gtk_widget_hide(lConfigWindow); -} - - -void -on_info_close_clicked (GtkButton *button, - gpointer user_data) -{ - GtkWidget* lInfoWindow; - - lInfoWindow = lookup_widget((GtkWidget*)button, "Info"); - if(!lInfoWindow) - cerr << "ModPlug: on_info_close_clicked: Could not find info window!" << endl; - else - gtk_widget_hide(lInfoWindow); -} diff -Nru audacious-plugins-2.4.4/src/modplug/gui/callbacks.h audacious-plugins-3.2/src/modplug/gui/callbacks.h --- audacious-plugins-2.4.4/src/modplug/gui/callbacks.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/gui/callbacks.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -#include - - -gboolean -hide_window (GtkWidget *widget, - GdkEvent *event, - gpointer user_data); - - -void -on_config_ok_clicked (GtkButton *button, - gpointer user_data); - -void -on_config_apply_clicked (GtkButton *button, - gpointer user_data); - -void -on_config_cancel_clicked (GtkButton *button, - gpointer user_data); - -void -on_info_close_clicked (GtkButton *button, - gpointer user_data); diff -Nru audacious-plugins-2.4.4/src/modplug/gui/interface.cxx audacious-plugins-3.2/src/modplug/gui/interface.cxx --- audacious-plugins-2.4.4/src/modplug/gui/interface.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/gui/interface.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,1009 +0,0 @@ -/* - * DO NOT EDIT THIS FILE - it is generated by Glade. - */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include -#include -#include -#include -#include - -#include -#include - -#include "callbacks.h" -#include "interface.h" -#include "support.h" - -#define GLADE_HOOKUP_OBJECT(component,widget,name) \ - g_object_set_data_full (G_OBJECT (component), name, \ - g_object_ref (widget), (GDestroyNotify) g_object_unref) - -#define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \ - g_object_set_data (G_OBJECT (component), name, widget) - -GtkWidget* -create_Config (void) -{ - GtkWidget *Config; - GtkWidget *vbox2; - GtkWidget *notebook1; - GtkWidget *vbox3; - GtkWidget *hbox2; - GtkWidget *frame1; - GtkWidget *vbox4; - GtkWidget *bit16; - GSList *bit16_group = NULL; - GtkWidget *bit8; - GtkWidget *xlabel2; - GtkWidget *frame2; - GtkWidget *vbox5; - GtkWidget *stereo; - GSList *stereo_group = NULL; - GtkWidget *mono; - GtkWidget *label3; - GtkWidget *hbox14; - GtkWidget *frame9; - GtkWidget *vbox15; - GtkWidget *resampNearest; - GSList *resampNearest_group = NULL; - GtkWidget *resampLinear; - GtkWidget *resampSpline; - GtkWidget *resampPolyphase; - GtkWidget *label4; - GtkWidget *frame3; - GtkWidget *vbox6; - GtkWidget *samp96; - GSList *samp96_group = NULL; - GtkWidget *samp48; - GtkWidget *samp44; - GtkWidget *samp22; - GtkWidget *label5; - GtkWidget *label2; - GtkWidget *vbox7; - GtkWidget *hbox15; - GtkWidget *frame5; - GtkWidget *vbox20; - GtkWidget *fxReverb; - GtkWidget *table1; - GtkWidget *fxReverbDepth; - GtkWidget *fxReverbDelay; - GtkWidget *xlabel3; - GtkWidget *xlabel4; - GtkWidget *label6; - GtkWidget *frame6; - GtkWidget *vbox21; - GtkWidget *fxBassBoost; - GtkWidget *table2; - GtkWidget *fxBassAmount; - GtkWidget *fxBassRange; - GtkWidget *xlabel5; - GtkWidget *xlabel6; - GtkWidget *label7; - GtkWidget *hbox16; - GtkWidget *frame7; - GtkWidget *vbox22; - GtkWidget *fxSurround; - GtkWidget *table3; - GtkWidget *fxSurroundDepth; - GtkWidget *fxSurroundDelay; - GtkWidget *xlabel7; - GtkWidget *label8; - GtkWidget *xlabel8; - GtkWidget *frame10; - GtkWidget *vbox16; - GtkWidget *fxPreamp; - GtkWidget *hbox11; - GtkWidget *label19; - GtkWidget *fxPreampLevel; - GtkWidget *label20; - GtkWidget *label9; - GtkWidget *label10; - GtkWidget *vbox19; - GtkWidget *frame4; - GtkWidget *hbox3; - GtkWidget *vbox8; - GtkWidget *fxUseFilename; - GtkWidget *fxFastInfo; - GtkWidget *vbox9; - GtkWidget *fxNR; - GtkWidget *fxAmigaMOD; - GtkWidget *label21; - GtkWidget *frame11; - GtkWidget *vbox17; - GtkWidget *fxNoLoop; - GSList *fxNoLoop_group = NULL; - GtkWidget *hbox13; - GtkWidget *fxLoopFinite; - GtkObject *fxLoopCount_adj; - GtkWidget *fxLoopCount; - GtkWidget *xlabel21; - GtkWidget *fxLoopForever; - GtkWidget *label22; - GtkWidget *xlabel22; - GtkWidget *hbuttonbox2; - GtkWidget *config_ok; - GtkWidget *config_apply; - GtkWidget *config_cancel; - - Config = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_type_hint(GTK_WINDOW(Config), GDK_WINDOW_TYPE_HINT_DIALOG); - gtk_widget_set_name (Config, "Config"); - gtk_widget_set_size_request (Config, 500, -1); - gtk_window_set_title (GTK_WINDOW (Config), _("ModPlug Configuration")); - gtk_window_set_resizable (GTK_WINDOW (Config), FALSE); - - vbox2 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox2, "vbox2"); - gtk_widget_show (vbox2); - gtk_container_add (GTK_CONTAINER (Config), vbox2); - - notebook1 = gtk_notebook_new (); - gtk_widget_set_name (notebook1, "notebook1"); - gtk_widget_show (notebook1); - gtk_box_pack_start (GTK_BOX (vbox2), notebook1, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (notebook1), 4); - - vbox3 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox3, "vbox3"); - gtk_widget_show (vbox3); - gtk_container_add (GTK_CONTAINER (notebook1), vbox3); - gtk_container_set_border_width (GTK_CONTAINER (vbox3), 2); - - hbox2 = gtk_hbox_new (FALSE, 2); - gtk_widget_set_name (hbox2, "hbox2"); - gtk_widget_show (hbox2); - gtk_box_pack_start (GTK_BOX (vbox3), hbox2, FALSE, TRUE, 0); - - frame1 = gtk_frame_new (NULL); - gtk_widget_set_name (frame1, "frame1"); - gtk_widget_show (frame1); - gtk_box_pack_start (GTK_BOX (hbox2), frame1, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame1), 2); - - vbox4 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox4, "vbox4"); - gtk_widget_show (vbox4); - gtk_container_add (GTK_CONTAINER (frame1), vbox4); - gtk_container_set_border_width (GTK_CONTAINER (vbox4), 2); - - bit16 = gtk_radio_button_new_with_mnemonic (NULL, _("16 bit")); - gtk_widget_set_name (bit16, "bit16"); - gtk_widget_show (bit16); - gtk_box_pack_start (GTK_BOX (vbox4), bit16, FALSE, FALSE, 0); - gtk_radio_button_set_group (GTK_RADIO_BUTTON (bit16), bit16_group); - bit16_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (bit16)); - - bit8 = gtk_radio_button_new_with_mnemonic (NULL, _("8 bit")); - gtk_widget_set_name (bit8, "bit8"); - gtk_widget_show (bit8); - gtk_box_pack_start (GTK_BOX (vbox4), bit8, FALSE, FALSE, 0); - gtk_radio_button_set_group (GTK_RADIO_BUTTON (bit8), bit16_group); - bit16_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (bit8)); - - xlabel2 = gtk_label_new (_("Resolution")); - gtk_widget_set_name (xlabel2, "xlabel2"); - gtk_widget_show (xlabel2); - gtk_frame_set_label_widget (GTK_FRAME (frame1), xlabel2); - - frame2 = gtk_frame_new (NULL); - gtk_widget_set_name (frame2, "frame2"); - gtk_widget_show (frame2); - gtk_box_pack_start (GTK_BOX (hbox2), frame2, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame2), 2); - - vbox5 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox5, "vbox5"); - gtk_widget_show (vbox5); - gtk_container_add (GTK_CONTAINER (frame2), vbox5); - gtk_container_set_border_width (GTK_CONTAINER (vbox5), 2); - - stereo = gtk_radio_button_new_with_mnemonic (NULL, _("Stereo")); - gtk_widget_set_name (stereo, "stereo"); - gtk_widget_show (stereo); - gtk_box_pack_start (GTK_BOX (vbox5), stereo, FALSE, FALSE, 0); - gtk_radio_button_set_group (GTK_RADIO_BUTTON (stereo), stereo_group); - stereo_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (stereo)); - - mono = gtk_radio_button_new_with_mnemonic (NULL, _("Mono (downmix)")); - gtk_widget_set_name (mono, "mono"); - gtk_widget_show (mono); - gtk_box_pack_start (GTK_BOX (vbox5), mono, FALSE, FALSE, 0); - gtk_radio_button_set_group (GTK_RADIO_BUTTON (mono), stereo_group); - stereo_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (mono)); - - label3 = gtk_label_new (_("Channels")); - gtk_widget_set_name (label3, "label3"); - gtk_widget_show (label3); - gtk_frame_set_label_widget (GTK_FRAME (frame2), label3); - - hbox14 = gtk_hbox_new (FALSE, 0); - gtk_widget_set_name (hbox14, "hbox14"); - gtk_widget_show (hbox14); - gtk_box_pack_start (GTK_BOX (vbox3), hbox14, FALSE, TRUE, 0); - - frame9 = gtk_frame_new (NULL); - gtk_widget_set_name (frame9, "frame9"); - gtk_widget_show (frame9); - gtk_box_pack_start (GTK_BOX (hbox14), frame9, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame9), 2); - - vbox15 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox15, "vbox15"); - gtk_widget_show (vbox15); - gtk_container_add (GTK_CONTAINER (frame9), vbox15); - gtk_container_set_border_width (GTK_CONTAINER (vbox15), 2); - - resampNearest = gtk_radio_button_new_with_mnemonic (NULL, _("Nearest (fastest)")); - gtk_widget_set_name (resampNearest, "resampNearest"); - gtk_widget_show (resampNearest); - gtk_box_pack_start (GTK_BOX (vbox15), resampNearest, FALSE, FALSE, 0); - gtk_radio_button_set_group (GTK_RADIO_BUTTON (resampNearest), resampNearest_group); - resampNearest_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (resampNearest)); - - resampLinear = gtk_radio_button_new_with_mnemonic (NULL, _("Linear (fast)")); - gtk_widget_set_name (resampLinear, "resampLinear"); - gtk_widget_show (resampLinear); - gtk_box_pack_start (GTK_BOX (vbox15), resampLinear, FALSE, FALSE, 0); - gtk_radio_button_set_group (GTK_RADIO_BUTTON (resampLinear), resampNearest_group); - resampNearest_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (resampLinear)); - - resampSpline = gtk_radio_button_new_with_mnemonic (NULL, _("Spline (good quality)")); - gtk_widget_set_name (resampSpline, "resampSpline"); - gtk_widget_show (resampSpline); - gtk_box_pack_start (GTK_BOX (vbox15), resampSpline, FALSE, FALSE, 0); - gtk_radio_button_set_group (GTK_RADIO_BUTTON (resampSpline), resampNearest_group); - resampNearest_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (resampSpline)); - - resampPolyphase = gtk_radio_button_new_with_mnemonic (NULL, _("8-tap Fir (extremely high quality)")); - gtk_widget_set_name (resampPolyphase, "resampPolyphase"); - gtk_widget_show (resampPolyphase); - gtk_box_pack_start (GTK_BOX (vbox15), resampPolyphase, FALSE, FALSE, 0); - gtk_radio_button_set_group (GTK_RADIO_BUTTON (resampPolyphase), resampNearest_group); - resampNearest_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (resampPolyphase)); - - label4 = gtk_label_new (_("Resampling")); - gtk_widget_set_name (label4, "label4"); - gtk_widget_show (label4); - gtk_frame_set_label_widget (GTK_FRAME (frame9), label4); - - frame3 = gtk_frame_new (NULL); - gtk_widget_set_name (frame3, "frame3"); - gtk_widget_show (frame3); - gtk_box_pack_start (GTK_BOX (hbox14), frame3, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame3), 2); - - vbox6 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox6, "vbox6"); - gtk_widget_show (vbox6); - gtk_container_add (GTK_CONTAINER (frame3), vbox6); - gtk_container_set_border_width (GTK_CONTAINER (vbox6), 2); - - samp96 = gtk_radio_button_new_with_mnemonic (NULL, _("96 kHz")); - gtk_widget_set_name (samp96, "samp96"); - gtk_widget_show (samp96); - gtk_box_pack_start (GTK_BOX (vbox6), samp96, FALSE, FALSE, 0); - gtk_radio_button_set_group (GTK_RADIO_BUTTON (samp96), samp96_group); - samp96_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (samp96)); - - samp48 = gtk_radio_button_new_with_mnemonic (NULL, _("48 kHz")); - gtk_widget_set_name (samp48, "samp48"); - gtk_widget_show (samp48); - gtk_box_pack_start (GTK_BOX (vbox6), samp48, FALSE, FALSE, 0); - gtk_radio_button_set_group (GTK_RADIO_BUTTON (samp48), samp96_group); - samp96_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (samp48)); - - samp44 = gtk_radio_button_new_with_mnemonic (NULL, _("44 kHz")); - gtk_widget_set_name (samp44, "samp44"); - gtk_widget_show (samp44); - gtk_box_pack_start (GTK_BOX (vbox6), samp44, FALSE, FALSE, 0); - gtk_radio_button_set_group (GTK_RADIO_BUTTON (samp44), samp96_group); - samp96_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (samp44)); - - samp22 = gtk_radio_button_new_with_mnemonic (NULL, _("22 kHz")); - gtk_widget_set_name (samp22, "samp22"); - gtk_widget_show (samp22); - gtk_box_pack_start (GTK_BOX (vbox6), samp22, FALSE, FALSE, 0); - gtk_button_set_focus_on_click (GTK_BUTTON (samp22), FALSE); - gtk_radio_button_set_group (GTK_RADIO_BUTTON (samp22), samp96_group); - samp96_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (samp22)); - - label5 = gtk_label_new (_("Sampling Rate")); - gtk_widget_set_name (label5, "label5"); - gtk_widget_show (label5); - gtk_frame_set_label_widget (GTK_FRAME (frame3), label5); - - label2 = gtk_label_new (_("Quality")); - gtk_widget_set_name (label2, "label2"); - gtk_widget_show (label2); - gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label2); - gtk_label_set_justify (GTK_LABEL (label2), GTK_JUSTIFY_CENTER); - - vbox7 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox7, "vbox7"); - gtk_widget_show (vbox7); - gtk_container_add (GTK_CONTAINER (notebook1), vbox7); - gtk_container_set_border_width (GTK_CONTAINER (vbox7), 2); - - hbox15 = gtk_hbox_new (FALSE, 0); - gtk_widget_set_name (hbox15, "hbox15"); - gtk_widget_show (hbox15); - gtk_box_pack_start (GTK_BOX (vbox7), hbox15, FALSE, TRUE, 0); - - frame5 = gtk_frame_new (NULL); - gtk_widget_set_name (frame5, "frame5"); - gtk_widget_show (frame5); - gtk_box_pack_start (GTK_BOX (hbox15), frame5, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame5), 2); - - vbox20 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox20, "vbox20"); - gtk_widget_show (vbox20); - gtk_container_add (GTK_CONTAINER (frame5), vbox20); - gtk_container_set_border_width (GTK_CONTAINER (vbox20), 2); - - fxReverb = gtk_check_button_new_with_mnemonic (_("Enable")); - gtk_widget_set_name (fxReverb, "fxReverb"); - gtk_widget_show (fxReverb); - gtk_box_pack_start (GTK_BOX (vbox20), fxReverb, FALSE, FALSE, 0); - gtk_container_set_border_width (GTK_CONTAINER (fxReverb), 2); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fxReverb), TRUE); - - table1 = gtk_table_new (2, 2, FALSE); - gtk_widget_set_name (table1, "table1"); - gtk_widget_show (table1); - gtk_box_pack_start (GTK_BOX (vbox20), table1, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (table1), 2); - gtk_table_set_row_spacings (GTK_TABLE (table1), 4); - gtk_table_set_col_spacings (GTK_TABLE (table1), 4); - - fxReverbDepth = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (30, 0, 100, 0, 0, 0))); - gtk_widget_set_name (fxReverbDepth, "fxReverbDepth"); - gtk_widget_show (fxReverbDepth); - gtk_table_attach (GTK_TABLE (table1), fxReverbDepth, 1, 2, 0, 1, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); - - fxReverbDelay = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (90, 40, 200, 0, 0, 0))); - gtk_widget_set_name (fxReverbDelay, "fxReverbDelay"); - gtk_widget_show (fxReverbDelay); - gtk_table_attach (GTK_TABLE (table1), fxReverbDelay, 1, 2, 1, 2, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); - - xlabel3 = gtk_label_new (_("Depth")); - gtk_widget_set_name (xlabel3, "xlabel3"); - gtk_widget_show (xlabel3); - gtk_table_attach (GTK_TABLE (table1), xlabel3, 0, 1, 0, 1, - (GtkAttachOptions) (0), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_justify (GTK_LABEL (xlabel3), GTK_JUSTIFY_CENTER); - - xlabel4 = gtk_label_new (_("Delay")); - gtk_widget_set_name (xlabel4, "xlabel4"); - gtk_widget_show (xlabel4); - gtk_table_attach (GTK_TABLE (table1), xlabel4, 0, 1, 1, 2, - (GtkAttachOptions) (0), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_justify (GTK_LABEL (xlabel4), GTK_JUSTIFY_CENTER); - - label6 = gtk_label_new (_("Reverb")); - gtk_widget_set_name (label6, "label6"); - gtk_widget_show (label6); - gtk_frame_set_label_widget (GTK_FRAME (frame5), label6); - - frame6 = gtk_frame_new (NULL); - gtk_widget_set_name (frame6, "frame6"); - gtk_widget_show (frame6); - gtk_box_pack_start (GTK_BOX (hbox15), frame6, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame6), 2); - - vbox21 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox21, "vbox21"); - gtk_widget_show (vbox21); - gtk_container_add (GTK_CONTAINER (frame6), vbox21); - gtk_container_set_border_width (GTK_CONTAINER (vbox21), 2); - - fxBassBoost = gtk_check_button_new_with_mnemonic (_("Enable")); - gtk_widget_set_name (fxBassBoost, "fxBassBoost"); - gtk_widget_show (fxBassBoost); - gtk_box_pack_start (GTK_BOX (vbox21), fxBassBoost, FALSE, FALSE, 0); - gtk_container_set_border_width (GTK_CONTAINER (fxBassBoost), 2); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fxBassBoost), TRUE); - - table2 = gtk_table_new (2, 2, FALSE); - gtk_widget_set_name (table2, "table2"); - gtk_widget_show (table2); - gtk_box_pack_start (GTK_BOX (vbox21), table2, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (table2), 2); - gtk_table_set_row_spacings (GTK_TABLE (table2), 4); - gtk_table_set_col_spacings (GTK_TABLE (table2), 4); - - fxBassAmount = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (30, 0, 100, 0, 0, 0))); - gtk_widget_set_name (fxBassAmount, "fxBassAmount"); - gtk_widget_show (fxBassAmount); - gtk_table_attach (GTK_TABLE (table2), fxBassAmount, 1, 2, 0, 1, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); - - fxBassRange = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (30, 10, 100, 0, 0, 0))); - gtk_widget_set_name (fxBassRange, "fxBassRange"); - gtk_widget_show (fxBassRange); - gtk_table_attach (GTK_TABLE (table2), fxBassRange, 1, 2, 1, 2, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); - - xlabel5 = gtk_label_new (_("Amount")); - gtk_widget_set_name (xlabel5, "xlabel5"); - gtk_widget_show (xlabel5); - gtk_table_attach (GTK_TABLE (table2), xlabel5, 0, 1, 0, 1, - (GtkAttachOptions) (0), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_justify (GTK_LABEL (xlabel5), GTK_JUSTIFY_CENTER); - - xlabel6 = gtk_label_new (_("Range")); - gtk_widget_set_name (xlabel6, "xlabel6"); - gtk_widget_show (xlabel6); - gtk_table_attach (GTK_TABLE (table2), xlabel6, 0, 1, 1, 2, - (GtkAttachOptions) (0), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_justify (GTK_LABEL (xlabel6), GTK_JUSTIFY_CENTER); - - label7 = gtk_label_new (_("Bass Boost")); - gtk_widget_set_name (label7, "label7"); - gtk_widget_show (label7); - gtk_frame_set_label_widget (GTK_FRAME (frame6), label7); - - hbox16 = gtk_hbox_new (FALSE, 0); - gtk_widget_set_name (hbox16, "hbox16"); - gtk_widget_show (hbox16); - gtk_box_pack_start (GTK_BOX (vbox7), hbox16, FALSE, TRUE, 0); - - frame7 = gtk_frame_new (NULL); - gtk_widget_set_name (frame7, "frame7"); - gtk_widget_show (frame7); - gtk_box_pack_start (GTK_BOX (hbox16), frame7, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame7), 2); - - vbox22 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox22, "vbox22"); - gtk_widget_show (vbox22); - gtk_container_add (GTK_CONTAINER (frame7), vbox22); - - fxSurround = gtk_check_button_new_with_mnemonic (_("Enable")); - gtk_widget_set_name (fxSurround, "fxSurround"); - gtk_widget_show (fxSurround); - gtk_box_pack_start (GTK_BOX (vbox22), fxSurround, FALSE, FALSE, 0); - gtk_container_set_border_width (GTK_CONTAINER (fxSurround), 2); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fxSurround), TRUE); - - table3 = gtk_table_new (2, 2, FALSE); - gtk_widget_set_name (table3, "table3"); - gtk_widget_show (table3); - gtk_box_pack_start (GTK_BOX (vbox22), table3, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (table3), 2); - gtk_table_set_row_spacings (GTK_TABLE (table3), 4); - gtk_table_set_col_spacings (GTK_TABLE (table3), 4); - - fxSurroundDepth = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (20, 0, 100, 0, 0, 0))); - gtk_widget_set_name (fxSurroundDepth, "fxSurroundDepth"); - gtk_widget_show (fxSurroundDepth); - gtk_table_attach (GTK_TABLE (table3), fxSurroundDepth, 1, 2, 0, 1, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); - - fxSurroundDelay = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (20, 5, 40, 0, 0, 0))); - gtk_widget_set_name (fxSurroundDelay, "fxSurroundDelay"); - gtk_widget_show (fxSurroundDelay); - gtk_table_attach (GTK_TABLE (table3), fxSurroundDelay, 1, 2, 1, 2, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); - - xlabel7 = gtk_label_new (_("Depth")); - gtk_widget_set_name (xlabel7, "xlabel7"); - gtk_widget_show (xlabel7); - gtk_table_attach (GTK_TABLE (table3), xlabel7, 0, 1, 0, 1, - (GtkAttachOptions) (0), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_justify (GTK_LABEL (xlabel7), GTK_JUSTIFY_CENTER); - - label8 = gtk_label_new (_("Delay")); - gtk_widget_set_name (label8, "label8"); - gtk_widget_show (label8); - gtk_table_attach (GTK_TABLE (table3), label8, 0, 1, 1, 2, - (GtkAttachOptions) (0), - (GtkAttachOptions) (0), 0, 0); - gtk_label_set_justify (GTK_LABEL (label8), GTK_JUSTIFY_CENTER); - - xlabel8 = gtk_label_new (_("Surround")); - gtk_widget_set_name (xlabel8, "xlabel8"); - gtk_widget_show (xlabel8); - gtk_frame_set_label_widget (GTK_FRAME (frame7), xlabel8); - - frame10 = gtk_frame_new (NULL); - gtk_widget_set_name (frame10, "frame10"); - gtk_widget_show (frame10); - gtk_box_pack_start (GTK_BOX (hbox16), frame10, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame10), 2); - - vbox16 = gtk_vbox_new (FALSE, 2); - gtk_widget_set_name (vbox16, "vbox16"); - gtk_widget_show (vbox16); - gtk_container_add (GTK_CONTAINER (frame10), vbox16); - gtk_container_set_border_width (GTK_CONTAINER (vbox16), 4); - - fxPreamp = gtk_check_button_new_with_mnemonic (_("Enable")); - gtk_widget_set_name (fxPreamp, "fxPreamp"); - gtk_widget_show (fxPreamp); - gtk_box_pack_start (GTK_BOX (vbox16), fxPreamp, FALSE, FALSE, 0); - gtk_container_set_border_width (GTK_CONTAINER (fxPreamp), 2); - - hbox11 = gtk_hbox_new (FALSE, 4); - gtk_widget_set_name (hbox11, "hbox11"); - gtk_widget_show (hbox11); - gtk_box_pack_start (GTK_BOX (vbox16), hbox11, TRUE, TRUE, 0); - - label19 = gtk_label_new (_("Volume")); - gtk_widget_set_name (label19, "label19"); - gtk_widget_show (label19); - gtk_box_pack_start (GTK_BOX (hbox11), label19, FALSE, FALSE, 0); - gtk_label_set_justify (GTK_LABEL (label19), GTK_JUSTIFY_CENTER); - - fxPreampLevel = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, -3, 3, 1, 0, 0))); - gtk_widget_set_name (fxPreampLevel, "fxPreampLevel"); - gtk_widget_show (fxPreampLevel); - gtk_box_pack_start (GTK_BOX (hbox11), fxPreampLevel, TRUE, TRUE, 0); - - label20 = gtk_label_new (_("Note: Setting the preamp\ntoo high may cause clipping\n(annoying clicks and pops)!")); - gtk_widget_set_name (label20, "label20"); - gtk_widget_show (label20); - gtk_box_pack_start (GTK_BOX (vbox16), label20, FALSE, FALSE, 0); - gtk_label_set_justify (GTK_LABEL (label20), GTK_JUSTIFY_CENTER); - - label9 = gtk_label_new (_("Preamp")); - gtk_widget_set_name (label9, "label9"); - gtk_widget_show (label9); - gtk_frame_set_label_widget (GTK_FRAME (frame10), label9); - - label10 = gtk_label_new (_("Effects")); - gtk_widget_set_name (label10, "label10"); - gtk_widget_show (label10); - gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), label10); - gtk_label_set_justify (GTK_LABEL (label10), GTK_JUSTIFY_CENTER); - - vbox19 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox19, "vbox19"); - gtk_widget_show (vbox19); - gtk_container_add (GTK_CONTAINER (notebook1), vbox19); - gtk_container_set_border_width (GTK_CONTAINER (vbox19), 2); - - frame4 = gtk_frame_new (NULL); - gtk_widget_set_name (frame4, "frame4"); - gtk_widget_show (frame4); - gtk_box_pack_start (GTK_BOX (vbox19), frame4, FALSE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame4), 2); - - hbox3 = gtk_hbox_new (FALSE, 0); - gtk_widget_set_name (hbox3, "hbox3"); - gtk_widget_show (hbox3); - gtk_container_add (GTK_CONTAINER (frame4), hbox3); - gtk_container_set_border_width (GTK_CONTAINER (hbox3), 2); - - vbox8 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox8, "vbox8"); - gtk_widget_show (vbox8); - gtk_box_pack_start (GTK_BOX (hbox3), vbox8, TRUE, TRUE, 0); - - fxUseFilename = gtk_check_button_new_with_mnemonic (_("Use Filename as Song Title")); - gtk_widget_set_name (fxUseFilename, "fxUseFilename"); - gtk_widget_show (fxUseFilename); - gtk_box_pack_start (GTK_BOX (vbox8), fxUseFilename, FALSE, FALSE, 0); - - fxFastInfo = gtk_check_button_new_with_mnemonic (_("Fast Playlist Info")); - gtk_widget_set_name (fxFastInfo, "fxFastInfo"); - gtk_widget_show (fxFastInfo); - gtk_box_pack_start (GTK_BOX (vbox8), fxFastInfo, FALSE, FALSE, 0); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fxFastInfo), TRUE); - - vbox9 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox9, "vbox9"); - gtk_widget_show (vbox9); - gtk_box_pack_start (GTK_BOX (hbox3), vbox9, TRUE, TRUE, 0); - - fxNR = gtk_check_button_new_with_mnemonic (_("Noise Reduction")); - gtk_widget_set_name (fxNR, "fxNR"); - gtk_widget_show (fxNR); - gtk_box_pack_start (GTK_BOX (vbox9), fxNR, FALSE, FALSE, 0); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fxNR), TRUE); - - fxAmigaMOD = gtk_check_button_new_with_mnemonic (_("Play Amiga MOD")); - gtk_widget_set_name (fxAmigaMOD, "fxAmigaMOD"); - gtk_widget_show (fxAmigaMOD); - gtk_box_pack_start (GTK_BOX (vbox9), fxAmigaMOD, FALSE, FALSE, 0); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fxAmigaMOD), TRUE); - - label21 = gtk_label_new (_("General")); - gtk_widget_set_name (label21, "label21"); - gtk_widget_show (label21); - gtk_frame_set_label_widget (GTK_FRAME (frame4), label21); - - frame11 = gtk_frame_new (NULL); - gtk_widget_set_name (frame11, "frame11"); - gtk_widget_show (frame11); - gtk_box_pack_start (GTK_BOX (vbox19), frame11, FALSE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame11), 2); - - vbox17 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox17, "vbox17"); - gtk_widget_show (vbox17); - gtk_container_add (GTK_CONTAINER (frame11), vbox17); - gtk_container_set_border_width (GTK_CONTAINER (vbox17), 2); - - fxNoLoop = gtk_radio_button_new_with_mnemonic (NULL, _("Don't loop")); - gtk_widget_set_name (fxNoLoop, "fxNoLoop"); - gtk_widget_show (fxNoLoop); - gtk_box_pack_start (GTK_BOX (vbox17), fxNoLoop, FALSE, FALSE, 0); - gtk_radio_button_set_group (GTK_RADIO_BUTTON (fxNoLoop), fxNoLoop_group); - fxNoLoop_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (fxNoLoop)); - - hbox13 = gtk_hbox_new (FALSE, 0); - gtk_widget_set_name (hbox13, "hbox13"); - gtk_widget_show (hbox13); - gtk_box_pack_start (GTK_BOX (vbox17), hbox13, FALSE, FALSE, 0); - - fxLoopFinite = gtk_radio_button_new_with_mnemonic (NULL, _("Loop")); - gtk_widget_set_name (fxLoopFinite, "fxLoopFinite"); - gtk_widget_show (fxLoopFinite); - gtk_box_pack_start (GTK_BOX (hbox13), fxLoopFinite, FALSE, FALSE, 0); - gtk_radio_button_set_group (GTK_RADIO_BUTTON (fxLoopFinite), fxNoLoop_group); - fxNoLoop_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (fxLoopFinite)); - - fxLoopCount_adj = gtk_adjustment_new (1, 0, 100, 1, 10, 10); - fxLoopCount = gtk_spin_button_new (GTK_ADJUSTMENT (fxLoopCount_adj), 1, 0); - gtk_widget_set_name (fxLoopCount, "fxLoopCount"); - gtk_widget_show (fxLoopCount); - gtk_box_pack_start (GTK_BOX (hbox13), fxLoopCount, FALSE, TRUE, 0); - - xlabel21 = gtk_label_new (_("time(s)")); - gtk_widget_set_name (xlabel21, "xlabel21"); - gtk_widget_show (xlabel21); - gtk_box_pack_start (GTK_BOX (hbox13), xlabel21, FALSE, FALSE, 0); - gtk_label_set_justify (GTK_LABEL (xlabel21), GTK_JUSTIFY_CENTER); - - fxLoopForever = gtk_radio_button_new_with_mnemonic (NULL, _("Loop forever")); - gtk_widget_set_name (fxLoopForever, "fxLoopForever"); - gtk_widget_show (fxLoopForever); - gtk_box_pack_start (GTK_BOX (vbox17), fxLoopForever, FALSE, FALSE, 0); - gtk_radio_button_set_group (GTK_RADIO_BUTTON (fxLoopForever), fxNoLoop_group); - fxNoLoop_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (fxLoopForever)); - - label22 = gtk_label_new (_("Looping")); - gtk_widget_set_name (label22, "label22"); - gtk_widget_show (label22); - gtk_frame_set_label_widget (GTK_FRAME (frame11), label22); - - xlabel22 = gtk_label_new (_("Misc")); - gtk_widget_set_name (xlabel22, "xlabel22"); - gtk_widget_show (xlabel22); - gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 2), xlabel22); - gtk_label_set_justify (GTK_LABEL (xlabel22), GTK_JUSTIFY_CENTER); - - hbuttonbox2 = gtk_hbutton_box_new (); - gtk_widget_set_name (hbuttonbox2, "hbuttonbox2"); - gtk_widget_show (hbuttonbox2); - gtk_box_pack_start (GTK_BOX (vbox2), hbuttonbox2, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (hbuttonbox2), 4); - gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox2), GTK_BUTTONBOX_END); - gtk_box_set_spacing (GTK_BOX (hbuttonbox2), 8); - - config_ok = gtk_button_new_with_mnemonic (_("OK")); - gtk_widget_set_name (config_ok, "config_ok"); - gtk_widget_show (config_ok); - gtk_container_add (GTK_CONTAINER (hbuttonbox2), config_ok); - GTK_WIDGET_SET_FLAGS (config_ok, GTK_CAN_DEFAULT); - - config_apply = gtk_button_new_with_mnemonic (_("Apply")); - gtk_widget_set_name (config_apply, "config_apply"); - gtk_widget_show (config_apply); - gtk_container_add (GTK_CONTAINER (hbuttonbox2), config_apply); - GTK_WIDGET_SET_FLAGS (config_apply, GTK_CAN_DEFAULT); - - config_cancel = gtk_button_new_with_mnemonic (_("Cancel")); - gtk_widget_set_name (config_cancel, "config_cancel"); - gtk_widget_show (config_cancel); - gtk_container_add (GTK_CONTAINER (hbuttonbox2), config_cancel); - GTK_WIDGET_SET_FLAGS (config_cancel, GTK_CAN_DEFAULT); - - g_signal_connect ((gpointer) Config, "delete_event", - G_CALLBACK (hide_window), - NULL); - g_signal_connect ((gpointer) config_ok, "clicked", - G_CALLBACK (on_config_ok_clicked), - NULL); - g_signal_connect ((gpointer) config_apply, "clicked", - G_CALLBACK (on_config_apply_clicked), - NULL); - g_signal_connect ((gpointer) config_cancel, "clicked", - G_CALLBACK (on_config_cancel_clicked), - NULL); - - /* Store pointers to all widgets, for use by lookup_widget(). */ - GLADE_HOOKUP_OBJECT_NO_REF (Config, Config, "Config"); - GLADE_HOOKUP_OBJECT (Config, vbox2, "vbox2"); - GLADE_HOOKUP_OBJECT (Config, notebook1, "notebook1"); - GLADE_HOOKUP_OBJECT (Config, vbox3, "vbox3"); - GLADE_HOOKUP_OBJECT (Config, hbox2, "hbox2"); - GLADE_HOOKUP_OBJECT (Config, frame1, "frame1"); - GLADE_HOOKUP_OBJECT (Config, vbox4, "vbox4"); - GLADE_HOOKUP_OBJECT (Config, bit16, "bit16"); - GLADE_HOOKUP_OBJECT (Config, bit8, "bit8"); - GLADE_HOOKUP_OBJECT (Config, xlabel2, "xlabel2"); - GLADE_HOOKUP_OBJECT (Config, frame2, "frame2"); - GLADE_HOOKUP_OBJECT (Config, vbox5, "vbox5"); - GLADE_HOOKUP_OBJECT (Config, stereo, "stereo"); - GLADE_HOOKUP_OBJECT (Config, mono, "mono"); - GLADE_HOOKUP_OBJECT (Config, label3, "label3"); - GLADE_HOOKUP_OBJECT (Config, hbox14, "hbox14"); - GLADE_HOOKUP_OBJECT (Config, frame9, "frame9"); - GLADE_HOOKUP_OBJECT (Config, vbox15, "vbox15"); - GLADE_HOOKUP_OBJECT (Config, resampNearest, "resampNearest"); - GLADE_HOOKUP_OBJECT (Config, resampLinear, "resampLinear"); - GLADE_HOOKUP_OBJECT (Config, resampSpline, "resampSpline"); - GLADE_HOOKUP_OBJECT (Config, resampPolyphase, "resampPolyphase"); - GLADE_HOOKUP_OBJECT (Config, label4, "label4"); - GLADE_HOOKUP_OBJECT (Config, frame3, "frame3"); - GLADE_HOOKUP_OBJECT (Config, vbox6, "vbox6"); - GLADE_HOOKUP_OBJECT (Config, samp96, "samp96"); - GLADE_HOOKUP_OBJECT (Config, samp48, "samp48"); - GLADE_HOOKUP_OBJECT (Config, samp44, "samp44"); - GLADE_HOOKUP_OBJECT (Config, samp22, "samp22"); - GLADE_HOOKUP_OBJECT (Config, label5, "label5"); - GLADE_HOOKUP_OBJECT (Config, label2, "label2"); - GLADE_HOOKUP_OBJECT (Config, vbox7, "vbox7"); - GLADE_HOOKUP_OBJECT (Config, hbox15, "hbox15"); - GLADE_HOOKUP_OBJECT (Config, frame5, "frame5"); - GLADE_HOOKUP_OBJECT (Config, vbox20, "vbox20"); - GLADE_HOOKUP_OBJECT (Config, fxReverb, "fxReverb"); - GLADE_HOOKUP_OBJECT (Config, table1, "table1"); - GLADE_HOOKUP_OBJECT (Config, fxReverbDepth, "fxReverbDepth"); - GLADE_HOOKUP_OBJECT (Config, fxReverbDelay, "fxReverbDelay"); - GLADE_HOOKUP_OBJECT (Config, xlabel3, "xlabel3"); - GLADE_HOOKUP_OBJECT (Config, xlabel4, "xlabel4"); - GLADE_HOOKUP_OBJECT (Config, label6, "label6"); - GLADE_HOOKUP_OBJECT (Config, frame6, "frame6"); - GLADE_HOOKUP_OBJECT (Config, vbox21, "vbox21"); - GLADE_HOOKUP_OBJECT (Config, fxBassBoost, "fxBassBoost"); - GLADE_HOOKUP_OBJECT (Config, table2, "table2"); - GLADE_HOOKUP_OBJECT (Config, fxBassAmount, "fxBassAmount"); - GLADE_HOOKUP_OBJECT (Config, fxBassRange, "fxBassRange"); - GLADE_HOOKUP_OBJECT (Config, xlabel5, "xlabel5"); - GLADE_HOOKUP_OBJECT (Config, xlabel6, "xlabel6"); - GLADE_HOOKUP_OBJECT (Config, label7, "label7"); - GLADE_HOOKUP_OBJECT (Config, hbox16, "hbox16"); - GLADE_HOOKUP_OBJECT (Config, frame7, "frame7"); - GLADE_HOOKUP_OBJECT (Config, vbox22, "vbox22"); - GLADE_HOOKUP_OBJECT (Config, fxSurround, "fxSurround"); - GLADE_HOOKUP_OBJECT (Config, table3, "table3"); - GLADE_HOOKUP_OBJECT (Config, fxSurroundDepth, "fxSurroundDepth"); - GLADE_HOOKUP_OBJECT (Config, fxSurroundDelay, "fxSurroundDelay"); - GLADE_HOOKUP_OBJECT (Config, xlabel7, "xlabel7"); - GLADE_HOOKUP_OBJECT (Config, label8, "label8"); - GLADE_HOOKUP_OBJECT (Config, xlabel8, "xlabel8"); - GLADE_HOOKUP_OBJECT (Config, frame10, "frame10"); - GLADE_HOOKUP_OBJECT (Config, vbox16, "vbox16"); - GLADE_HOOKUP_OBJECT (Config, fxPreamp, "fxPreamp"); - GLADE_HOOKUP_OBJECT (Config, hbox11, "hbox11"); - GLADE_HOOKUP_OBJECT (Config, label19, "label19"); - GLADE_HOOKUP_OBJECT (Config, fxPreampLevel, "fxPreampLevel"); - GLADE_HOOKUP_OBJECT (Config, label20, "label20"); - GLADE_HOOKUP_OBJECT (Config, label9, "label9"); - GLADE_HOOKUP_OBJECT (Config, label10, "label10"); - GLADE_HOOKUP_OBJECT (Config, vbox19, "vbox19"); - GLADE_HOOKUP_OBJECT (Config, frame4, "frame4"); - GLADE_HOOKUP_OBJECT (Config, hbox3, "hbox3"); - GLADE_HOOKUP_OBJECT (Config, vbox8, "vbox8"); - GLADE_HOOKUP_OBJECT (Config, fxUseFilename, "fxUseFilename"); - GLADE_HOOKUP_OBJECT (Config, fxFastInfo, "fxFastInfo"); - GLADE_HOOKUP_OBJECT (Config, vbox9, "vbox9"); - GLADE_HOOKUP_OBJECT (Config, fxNR, "fxNR"); - GLADE_HOOKUP_OBJECT (Config, fxAmigaMOD, "fxAmigaMOD"); - GLADE_HOOKUP_OBJECT (Config, label21, "label21"); - GLADE_HOOKUP_OBJECT (Config, frame11, "frame11"); - GLADE_HOOKUP_OBJECT (Config, vbox17, "vbox17"); - GLADE_HOOKUP_OBJECT (Config, fxNoLoop, "fxNoLoop"); - GLADE_HOOKUP_OBJECT (Config, hbox13, "hbox13"); - GLADE_HOOKUP_OBJECT (Config, fxLoopFinite, "fxLoopFinite"); - GLADE_HOOKUP_OBJECT (Config, fxLoopCount, "fxLoopCount"); - GLADE_HOOKUP_OBJECT (Config, xlabel21, "xlabel21"); - GLADE_HOOKUP_OBJECT (Config, fxLoopForever, "fxLoopForever"); - GLADE_HOOKUP_OBJECT (Config, label22, "label22"); - GLADE_HOOKUP_OBJECT (Config, xlabel22, "xlabel22"); - GLADE_HOOKUP_OBJECT (Config, hbuttonbox2, "hbuttonbox2"); - GLADE_HOOKUP_OBJECT (Config, config_ok, "config_ok"); - GLADE_HOOKUP_OBJECT (Config, config_apply, "config_apply"); - GLADE_HOOKUP_OBJECT (Config, config_cancel, "config_cancel"); - - return Config; -} - -GtkWidget* -create_Info (void) -{ - GtkWidget *Info; - GtkWidget *vbox14; - GtkWidget *notebook2; - GtkWidget *hbox9; - GtkWidget *label11; - GtkWidget *info_general; - GtkWidget *label13; - GtkWidget *scrolledwindow1; - GtkWidget *viewport1; - GtkWidget *info_samples; - GtkWidget *label15; - GtkWidget *scrolledwindow2; - GtkWidget *viewport2; - GtkWidget *info_instruments; - GtkWidget *label17; - GtkWidget *scrolledwindow3; - GtkWidget *info_message; - GtkWidget *label18; - GtkWidget *hbuttonbox3; - GtkWidget *info_close; - - Info = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_widget_set_name (Info, "Info"); - gtk_window_set_title (GTK_WINDOW (Info), _("MOD Info")); - - vbox14 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox14, "vbox14"); - gtk_widget_show (vbox14); - gtk_container_add (GTK_CONTAINER (Info), vbox14); - - notebook2 = gtk_notebook_new (); - gtk_widget_set_name (notebook2, "notebook2"); - gtk_widget_show (notebook2); - gtk_box_pack_start (GTK_BOX (vbox14), notebook2, TRUE, TRUE, 8); - gtk_container_set_border_width (GTK_CONTAINER (notebook2), 4); - - hbox9 = gtk_hbox_new (FALSE, 0); - gtk_widget_set_name (hbox9, "hbox9"); - gtk_widget_show (hbox9); - gtk_container_add (GTK_CONTAINER (notebook2), hbox9); - gtk_container_set_border_width (GTK_CONTAINER (hbox9), 2); - - label11 = gtk_label_new (_("Filename:\nTitle:\nType:\nLength:\nSpeed:\nTempo:\nSamples:\nInstruments:\nPatterns:\nChannels:")); - gtk_widget_set_name (label11, "label11"); - gtk_widget_show (label11); - gtk_box_pack_start (GTK_BOX (hbox9), label11, FALSE, FALSE, 4); - - info_general = gtk_label_new (_("---\n---\n---\n---\n---\n---\n---\n---\n---\n---")); - gtk_widget_set_name (info_general, "info_general"); - gtk_widget_show (info_general); - gtk_box_pack_start (GTK_BOX (hbox9), info_general, FALSE, FALSE, 4); - - label13 = gtk_label_new (_("General")); - gtk_widget_set_name (label13, "label13"); - gtk_widget_show (label13); - gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 0), label13); - gtk_label_set_justify (GTK_LABEL (label13), GTK_JUSTIFY_CENTER); - - scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL); - gtk_widget_set_name (scrolledwindow1, "scrolledwindow1"); - gtk_widget_show (scrolledwindow1); - gtk_container_add (GTK_CONTAINER (notebook2), scrolledwindow1); - gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow1), 6); - GTK_WIDGET_UNSET_FLAGS (scrolledwindow1, GTK_CAN_FOCUS); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); - - viewport1 = gtk_viewport_new (NULL, NULL); - gtk_widget_set_name (viewport1, "viewport1"); - gtk_widget_show (viewport1); - gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport1); - - info_samples = gtk_label_new (""); - gtk_widget_set_name (info_samples, "info_samples"); - gtk_widget_show (info_samples); - gtk_container_add (GTK_CONTAINER (viewport1), info_samples); - gtk_misc_set_alignment (GTK_MISC (info_samples), 7.45058e-09, 7.45058e-09); - - label15 = gtk_label_new (_("Samples")); - gtk_widget_set_name (label15, "label15"); - gtk_widget_show (label15); - gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 1), label15); - gtk_label_set_justify (GTK_LABEL (label15), GTK_JUSTIFY_CENTER); - - scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL); - gtk_widget_set_name (scrolledwindow2, "scrolledwindow2"); - gtk_widget_show (scrolledwindow2); - gtk_container_add (GTK_CONTAINER (notebook2), scrolledwindow2); - gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow2), 6); - GTK_WIDGET_UNSET_FLAGS (scrolledwindow2, GTK_CAN_FOCUS); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); - - viewport2 = gtk_viewport_new (NULL, NULL); - gtk_widget_set_name (viewport2, "viewport2"); - gtk_widget_show (viewport2); - gtk_container_add (GTK_CONTAINER (scrolledwindow2), viewport2); - - info_instruments = gtk_label_new (""); - gtk_widget_set_name (info_instruments, "info_instruments"); - gtk_widget_show (info_instruments); - gtk_container_add (GTK_CONTAINER (viewport2), info_instruments); - gtk_misc_set_alignment (GTK_MISC (info_instruments), 1.49012e-08, 7.45058e-09); - - label17 = gtk_label_new (_("Instruments")); - gtk_widget_set_name (label17, "label17"); - gtk_widget_show (label17); - gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 2), label17); - gtk_label_set_justify (GTK_LABEL (label17), GTK_JUSTIFY_CENTER); - - scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL); - gtk_widget_set_name (scrolledwindow3, "scrolledwindow3"); - gtk_widget_show (scrolledwindow3); - gtk_container_add (GTK_CONTAINER (notebook2), scrolledwindow3); - GTK_WIDGET_UNSET_FLAGS (scrolledwindow3, GTK_CAN_FOCUS); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow3), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); - gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow3), GTK_SHADOW_IN); - - info_message = gtk_text_view_new (); - gtk_widget_set_name (info_message, "info_message"); - gtk_widget_show (info_message); - gtk_container_add (GTK_CONTAINER (scrolledwindow3), info_message); - gtk_text_view_set_editable (GTK_TEXT_VIEW (info_message), FALSE); - gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (info_message), GTK_WRAP_WORD); - - label18 = gtk_label_new (_("Message")); - gtk_widget_set_name (label18, "label18"); - gtk_widget_show (label18); - gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 3), label18); - gtk_label_set_justify (GTK_LABEL (label18), GTK_JUSTIFY_CENTER); - - hbuttonbox3 = gtk_hbutton_box_new (); - gtk_widget_set_name (hbuttonbox3, "hbuttonbox3"); - gtk_widget_show (hbuttonbox3); - gtk_box_pack_start (GTK_BOX (vbox14), hbuttonbox3, FALSE, FALSE, 0); - gtk_container_set_border_width (GTK_CONTAINER (hbuttonbox3), 2); - gtk_box_set_spacing (GTK_BOX (hbuttonbox3), 30); - - info_close = gtk_button_new_with_mnemonic (_("Close")); - gtk_widget_set_name (info_close, "info_close"); - gtk_widget_show (info_close); - gtk_container_add (GTK_CONTAINER (hbuttonbox3), info_close); - GTK_WIDGET_SET_FLAGS (info_close, GTK_CAN_DEFAULT); - - g_signal_connect ((gpointer) Info, "delete_event", - G_CALLBACK (hide_window), - NULL); - g_signal_connect ((gpointer) info_close, "clicked", - G_CALLBACK (on_info_close_clicked), - NULL); - - /* Store pointers to all widgets, for use by lookup_widget(). */ - GLADE_HOOKUP_OBJECT_NO_REF (Info, Info, "Info"); - GLADE_HOOKUP_OBJECT (Info, vbox14, "vbox14"); - GLADE_HOOKUP_OBJECT (Info, notebook2, "notebook2"); - GLADE_HOOKUP_OBJECT (Info, hbox9, "hbox9"); - GLADE_HOOKUP_OBJECT (Info, label11, "label11"); - GLADE_HOOKUP_OBJECT (Info, info_general, "info_general"); - GLADE_HOOKUP_OBJECT (Info, label13, "label13"); - GLADE_HOOKUP_OBJECT (Info, scrolledwindow1, "scrolledwindow1"); - GLADE_HOOKUP_OBJECT (Info, viewport1, "viewport1"); - GLADE_HOOKUP_OBJECT (Info, info_samples, "info_samples"); - GLADE_HOOKUP_OBJECT (Info, label15, "label15"); - GLADE_HOOKUP_OBJECT (Info, scrolledwindow2, "scrolledwindow2"); - GLADE_HOOKUP_OBJECT (Info, viewport2, "viewport2"); - GLADE_HOOKUP_OBJECT (Info, info_instruments, "info_instruments"); - GLADE_HOOKUP_OBJECT (Info, label17, "label17"); - GLADE_HOOKUP_OBJECT (Info, scrolledwindow3, "scrolledwindow3"); - GLADE_HOOKUP_OBJECT (Info, info_message, "info_message"); - GLADE_HOOKUP_OBJECT (Info, label18, "label18"); - GLADE_HOOKUP_OBJECT (Info, hbuttonbox3, "hbuttonbox3"); - GLADE_HOOKUP_OBJECT (Info, info_close, "info_close"); - - return Info; -} - diff -Nru audacious-plugins-2.4.4/src/modplug/gui/interface.h audacious-plugins-3.2/src/modplug/gui/interface.h --- audacious-plugins-2.4.4/src/modplug/gui/interface.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/gui/interface.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -/* - * DO NOT EDIT THIS FILE - it is generated by Glade. - */ - -GtkWidget* create_Config (void); -GtkWidget* create_Info (void); diff -Nru audacious-plugins-2.4.4/src/modplug/gui/main.cxx audacious-plugins-3.2/src/modplug/gui/main.cxx --- audacious-plugins-2.4.4/src/modplug/gui/main.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/gui/main.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,326 +0,0 @@ -/* - * Initial main.c file generated by Glade. Edit as required. - * Glade will not overwrite this file. - */ - -#include - -#include "../stddefs.h" -#include "../stdafx.h" -#include "../sndfile.h" -#include "../archive/open.h" - -// Order of #include is important - UINT is redefined to unsigned long instead of unsigned int -// somewhere in the following headers, which leads to unresolved symbol - -// linking is okay, error pops up when starting Audacious. - -#include -#include - -#include "interface.h" -#include "support.h" -#include "main.h" - -#include -//open() -#include -#include -#include -//mmap() -#include -#include -#include - -extern "C" -{ -#include -#include -} - -#define MAX_MESSAGE_LENGTH 4000 - -GtkWidget *AboutWin = NULL; -GtkWidget *ConfigWin = NULL; -GtkWidget *InfoWin = NULL; - -void ShowAboutWindow() -{ - if(!AboutWin) - { - gchar * about_text = g_strjoin("", - _("Modplug Input Plugin for Audacious ver"), VERSION, - _("\nModplug sound engine written by Olivier Lapicque.\nXMMS interface for Modplug by Kenton Varda.\n(c)2000 Olivier Lapicque and Kenton Varda.\nUpdates and maintenance by Konstanty Bialkowski.\nPorted to BMP by Theofilos Intzoglou."), - NULL); - - audgui_simple_message (& AboutWin, GTK_MESSAGE_INFO, _("About Modplug"), - about_text); - - g_free(about_text); - } -} - -void ShowConfigureWindow(const ModplugXMMS::Settings& aProps) -{ - if(!ConfigWin) - ConfigWin = create_Config(); - - if(aProps.mBits == 8) - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "bit8"), TRUE); - else - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "bit16"), TRUE); - - if(aProps.mFrequency == 22050) - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "samp22"), TRUE); - else if (aProps.mFrequency == 44100) - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "samp44"), TRUE); - else if (aProps.mFrequency == 96000) - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "samp96"), TRUE); - else - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "samp48"), TRUE); - - if(aProps.mChannels == 1) - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "mono"), TRUE); - else - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "stereo"), TRUE); - - if(aProps.mResamplingMode == 0) - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "resampNearest"), TRUE); - else if(aProps.mResamplingMode == 1) - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "resampLinear"), TRUE); - else if(aProps.mResamplingMode == 2) - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "resampSpline"), TRUE); - else - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "resampPolyphase"), TRUE); - - if(aProps.mNoiseReduction) - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxNR"), TRUE); - else - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxNR"), FALSE); - - if(aProps.mGrabAmigaMOD) - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxAmigaMOD"), TRUE); - else - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxAmigaMOD"), FALSE); - - if(aProps.mFastinfo) - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxFastInfo"), TRUE); - else - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxFastInfo"), FALSE); - - if(aProps.mUseFilename) - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxUseFilename"), TRUE); - else - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxUseFilename"), FALSE); - - if(aProps.mReverb) - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxReverb"), TRUE); - else - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxReverb"), FALSE); - - if(aProps.mMegabass) - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxBassBoost"), TRUE); - else - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxBassBoost"), FALSE); - - if(aProps.mSurround) - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxSurround"), TRUE); - else - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxSurround"), FALSE); - - if(aProps.mPreamp) - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxPreamp"), TRUE); - else - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxPreamp"), FALSE); - - gtk_adjustment_set_value(gtk_range_get_adjustment((GtkRange*)lookup_widget(ConfigWin, "fxReverbDepth")), aProps.mReverbDepth); - gtk_adjustment_set_value(gtk_range_get_adjustment((GtkRange*)lookup_widget(ConfigWin, "fxReverbDelay")), aProps.mReverbDelay); - gtk_adjustment_set_value(gtk_range_get_adjustment((GtkRange*)lookup_widget(ConfigWin, "fxBassAmount")), aProps.mBassAmount); - gtk_adjustment_set_value(gtk_range_get_adjustment((GtkRange*)lookup_widget(ConfigWin, "fxBassRange")), aProps.mBassRange); - gtk_adjustment_set_value(gtk_range_get_adjustment((GtkRange*)lookup_widget(ConfigWin, "fxSurroundDepth")), aProps.mSurroundDepth); - gtk_adjustment_set_value(gtk_range_get_adjustment((GtkRange*)lookup_widget(ConfigWin, "fxSurroundDelay")), aProps.mSurroundDelay); - gtk_adjustment_set_value(gtk_range_get_adjustment((GtkRange*)lookup_widget(ConfigWin, "fxPreampLevel")), aProps.mPreampLevel); - - if(aProps.mLoopCount < 0) - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxLoopForever"), TRUE); - else if(aProps.mLoopCount == 0) - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxNoLoop"), TRUE); - else - { - gtk_toggle_button_set_active((GtkToggleButton*)lookup_widget(ConfigWin, "fxLoopFinite"), TRUE); - gtk_adjustment_set_value(gtk_spin_button_get_adjustment( - (GtkSpinButton*)lookup_widget(ConfigWin, "fxLoopCount")), aProps.mLoopCount); - } - - gtk_widget_show(ConfigWin); -} - -void ShowInfoWindow(const string& aFilename) -{ - if(!InfoWin) - InfoWin = create_Info(); - - uint32 lSongTime, lNumSamples, lNumInstruments, i; - string lInfo; - gchar lBuffer[33]; - stringstream lStrStream(ios::out); //C++ replacement for sprintf() - - CSoundFile* lSoundFile; - - Archive* lArchive; - string lShortFN; - uint32 lPos; - gchar *tmps; - - lPos = aFilename.find_last_of('/') + 1; - lShortFN = aFilename.substr(lPos); - - //open and mmap the file - lArchive = OpenArchive(aFilename); - if(lArchive->Size() == 0) - { - delete lArchive; - return; - } - - lSoundFile = new CSoundFile; - lSoundFile->Create((uchar*)lArchive->Map(), lArchive->Size()); - - lInfo = lShortFN; - lInfo += '\n'; - tmps = MODPLUG_CONVERT(lSoundFile->GetTitle()); - lInfo += tmps; - g_free(tmps); - lInfo += '\n'; - - switch(lSoundFile->GetType()) - { - case MOD_TYPE_MOD: - lInfo+= "ProTracker"; - break; - case MOD_TYPE_S3M: - lInfo+= "Scream Tracker 3"; - break; - case MOD_TYPE_XM: - lInfo+= "Fast Tracker 2"; - break; - case MOD_TYPE_IT: - lInfo+= "Impulse Tracker"; - break; - case MOD_TYPE_MED: - lInfo+= "OctaMed"; - break; - case MOD_TYPE_MTM: - lInfo+= "MTM"; - break; - case MOD_TYPE_669: - lInfo+= "669 Composer / UNIS 669"; - break; - case MOD_TYPE_ULT: - lInfo+= "ULT"; - break; - case MOD_TYPE_STM: - lInfo+= "Scream Tracker"; - break; - case MOD_TYPE_FAR: - lInfo+= "Farandole"; - break; - case MOD_TYPE_AMF: - lInfo+= "ASYLUM Music Format"; - break; - case MOD_TYPE_AMS: - lInfo+= "AMS module"; - break; - case MOD_TYPE_DSM: - lInfo+= "DSIK Internal Format"; - break; - case MOD_TYPE_MDL: - lInfo+= "DigiTracker"; - break; - case MOD_TYPE_OKT: - lInfo+= "Oktalyzer"; - break; - case MOD_TYPE_DMF: - lInfo+= "Delusion Digital Music Fileformat (X-Tracker)"; - break; - case MOD_TYPE_PTM: - lInfo+= "PolyTracker"; - break; - case MOD_TYPE_DBM: - lInfo+= "DigiBooster Pro"; - break; - case MOD_TYPE_MT2: - lInfo+= "MT2"; - break; - case MOD_TYPE_AMF0: - lInfo+= "AMF0"; - break; - case MOD_TYPE_PSM: - lInfo+= "PSM"; - break; - default: - lInfo+= "Unknown"; - break; - } - lInfo += '\n'; - - lSongTime = lSoundFile->GetSongTime(); - lStrStream.clear(); - lStrStream << (int)(lSongTime / 60) << ":"; - if(lSongTime % 60 < 10) //single digit for seconds? - lStrStream << '0'; //yes, so add a 0. - lStrStream << (int)(lSongTime % 60); - - lStrStream << '\n'; - - lStrStream << (int)lSoundFile->GetMusicSpeed() << '\n'; - lStrStream << (int)lSoundFile->GetMusicTempo() << '\n'; - lStrStream << (int)(lNumSamples = lSoundFile->GetNumSamples()) << '\n'; - lStrStream << (int)(lNumInstruments = lSoundFile->GetNumInstruments()); - lStrStream << '\n'; - lStrStream << (int)(lSoundFile->GetNumPatterns()) << '\n'; - lStrStream << (int)lSoundFile->GetNumChannels(); - lInfo += lStrStream.str(); - - gtk_label_set_text((GtkLabel*)lookup_widget(InfoWin, "info_general"), lInfo.c_str()); - - lInfo = ""; - for(i = 0; i < lNumSamples; i++) - { - lSoundFile->GetSampleName(i, lBuffer); - tmps = MODPLUG_CONVERT(lBuffer); - lInfo += tmps; - g_free(tmps); - lInfo += '\n'; - } - gtk_label_set_text((GtkLabel*)lookup_widget(InfoWin, "info_samples"), lInfo.c_str()); - - lInfo = ""; - for(i = 0; i < lNumInstruments; i++) - { - lSoundFile->GetInstrumentName(i, lBuffer); - tmps = MODPLUG_CONVERT(lBuffer); - lInfo += tmps; - g_free(tmps); - lInfo += '\n'; - } - gtk_label_set_text((GtkLabel*)lookup_widget(InfoWin, "info_instruments"), lInfo.c_str()); - - char message[MAX_MESSAGE_LENGTH]; - static int length = 0; - - //textbox = (GtkLabel*)lookup_widget(InfoWin, "info_message"); - //gtk_text_backward_delete(textbox, length); - length = lSoundFile->GetSongComments(message, MAX_MESSAGE_LENGTH, 80); - if (length != 0) { - tmps = MODPLUG_CONVERT(message); - gtk_label_set_text((GtkLabel*)lookup_widget(InfoWin, "info_message"), tmps); - g_free(tmps); - } - - //unload the file - lSoundFile->Destroy(); - delete lSoundFile; - delete lArchive; - - gtk_widget_show(InfoWin); -} diff -Nru audacious-plugins-2.4.4/src/modplug/gui/main.h audacious-plugins-3.2/src/modplug/gui/main.h --- audacious-plugins-2.4.4/src/modplug/gui/main.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/gui/main.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -/* Modplug XMMS Plugin - * Authors: Kenton Varda - * - * This source code is public domain. - */ - -#include -#include "../modplugbmp.h" - -void ShowAboutWindow(); -void ShowConfigureWindow(const ModplugXMMS::Settings& aProps); -void ShowInfoWindow(const string& aFileName); diff -Nru audacious-plugins-2.4.4/src/modplug/gui/modplug.glade audacious-plugins-3.2/src/modplug/gui/modplug.glade --- audacious-plugins-2.4.4/src/modplug/gui/modplug.glade 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/gui/modplug.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,2048 +0,0 @@ - - - - - - - 500 - True - ModPlug Configuration - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - False - False - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - False - - - - - True - False - 0 - - - - 4 - True - True - True - True - GTK_POS_TOP - False - False - - - - 2 - True - False - 0 - - - - True - False - 2 - - - - 2 - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - 2 - True - False - 0 - - - - True - True - 16 bit - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - True - 8 bit - True - GTK_RELIEF_NORMAL - True - False - False - True - bit16 - - - 0 - False - False - - - - - - - - True - Resolution - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - 2 - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - 2 - True - False - 0 - - - - True - True - Stereo - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - True - Mono (downmix) - True - GTK_RELIEF_NORMAL - True - False - False - True - stereo - - - 0 - False - False - - - - - - - - True - Channels - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - False - 0 - - - - 2 - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - 2 - True - False - 0 - - - - True - True - Nearest (fastest) - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - True - Linear (fast) - True - GTK_RELIEF_NORMAL - True - False - False - True - resampNearest - - - 0 - False - False - - - - - - True - True - Spline (good quality) - True - GTK_RELIEF_NORMAL - True - False - False - True - resampNearest - - - 0 - False - False - - - - - - True - True - 8-tap Fir (extremely high quality) - True - GTK_RELIEF_NORMAL - True - False - False - True - resampNearest - - - 0 - False - False - - - - - - - - True - Resampling - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - 2 - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - 2 - True - False - 0 - - - - True - True - 96 kHz - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - True - 48 kHz - True - GTK_RELIEF_NORMAL - True - False - False - True - samp96 - - - 0 - False - False - - - - - - True - True - 44 kHz - True - GTK_RELIEF_NORMAL - True - False - False - True - samp96 - - - 0 - False - False - - - - - - True - True - 22 kHz - True - GTK_RELIEF_NORMAL - False - False - False - True - samp96 - - - 0 - False - False - - - - - - - - True - Sampling Rate - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - False - True - - - - - False - True - - - - - - True - Quality - False - False - GTK_JUSTIFY_CENTER - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - 2 - True - False - 0 - - - - True - False - 0 - - - - 2 - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - 2 - True - False - 0 - - - - 2 - True - True - Enable - True - GTK_RELIEF_NORMAL - True - True - False - True - - - 0 - False - False - - - - - - 2 - True - 2 - 2 - False - 4 - 4 - - - - True - True - True - GTK_POS_TOP - 1 - GTK_UPDATE_CONTINUOUS - False - 30 0 100 0 0 0 - - - 1 - 2 - 0 - 1 - - - - - - True - True - True - GTK_POS_TOP - 1 - GTK_UPDATE_CONTINUOUS - False - 90 40 200 0 0 0 - - - 1 - 2 - 1 - 2 - fill - - - - - - True - Depth - False - False - GTK_JUSTIFY_CENTER - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - - True - Delay - False - False - GTK_JUSTIFY_CENTER - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - - 0 - True - True - - - - - - - - True - Reverb - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - 2 - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - 2 - True - False - 0 - - - - 2 - True - True - Enable - True - GTK_RELIEF_NORMAL - True - True - False - True - - - 0 - False - False - - - - - - 2 - True - 2 - 2 - False - 4 - 4 - - - - True - True - True - GTK_POS_TOP - 1 - GTK_UPDATE_CONTINUOUS - False - 30 0 100 0 0 0 - - - 1 - 2 - 0 - 1 - - - - - - True - True - True - GTK_POS_TOP - 1 - GTK_UPDATE_CONTINUOUS - False - 30 10 100 0 0 0 - - - 1 - 2 - 1 - 2 - fill - - - - - - True - Amount - False - False - GTK_JUSTIFY_CENTER - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - - True - Range - False - False - GTK_JUSTIFY_CENTER - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - - 0 - True - True - - - - - - - - True - Bass Boost - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - False - True - - - - - - True - False - 0 - - - - 2 - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - True - False - 0 - - - - 2 - True - True - Enable - True - GTK_RELIEF_NORMAL - True - True - False - True - - - 0 - False - False - - - - - - 2 - True - 2 - 2 - False - 4 - 4 - - - - True - True - True - GTK_POS_TOP - 1 - GTK_UPDATE_CONTINUOUS - False - 20 0 100 0 0 0 - - - 1 - 2 - 0 - 1 - - - - - - True - True - True - GTK_POS_TOP - 1 - GTK_UPDATE_CONTINUOUS - False - 20 5 40 0 0 0 - - - 1 - 2 - 1 - 2 - fill - - - - - - True - Depth - False - False - GTK_JUSTIFY_CENTER - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - - True - Delay - False - False - GTK_JUSTIFY_CENTER - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - - 0 - True - True - - - - - - - - True - Surround - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - - 2 - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - 4 - True - False - 2 - - - - 2 - True - True - Enable - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - False - 4 - - - - True - Volume - False - False - GTK_JUSTIFY_CENTER - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - True - GTK_POS_TOP - 1 - GTK_UPDATE_CONTINUOUS - False - 0 -3 3 1 0 0 - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - Note: Setting the preamp -too high may cause clipping -(annoying clicks and pops)! - False - False - GTK_JUSTIFY_CENTER - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - True - Preamp - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - 0 - False - True - - - - - False - True - - - - - - True - Effects - False - False - GTK_JUSTIFY_CENTER - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - 2 - True - False - 0 - - - - 2 - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - 2 - True - False - 0 - - - - True - False - 0 - - - - True - True - Use Filename as Song Title - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - True - Fast Playlist Info - True - GTK_RELIEF_NORMAL - True - True - False - True - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - True - Noise Reduction - True - GTK_RELIEF_NORMAL - True - True - False - True - - - 0 - False - False - - - - - - True - True - Play Amiga MOD - True - GTK_RELIEF_NORMAL - True - True - False - True - - - 0 - False - False - - - - - 0 - True - True - - - - - - - - True - General - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - 2 - True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN - - - - 2 - True - False - 0 - - - - True - True - Don't loop - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - False - 0 - - - - True - True - Loop - True - GTK_RELIEF_NORMAL - True - False - False - True - fxNoLoop - - - 0 - False - False - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 10 10 - - - 0 - False - True - - - - - - True - time(s) - False - False - GTK_JUSTIFY_CENTER - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - 0 - False - False - - - - - - True - True - Loop forever - True - GTK_RELIEF_NORMAL - True - False - False - True - fxNoLoop - - - 0 - False - False - - - - - - - - True - Looping - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - False - True - - - - - - True - Misc - False - False - GTK_JUSTIFY_CENTER - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - True - True - - - - - - 4 - True - GTK_BUTTONBOX_END - 8 - - - - True - True - True - OK - True - GTK_RELIEF_NORMAL - True - - - - - - - True - True - True - Apply - True - GTK_RELIEF_NORMAL - True - - - - - - - True - True - True - Cancel - True - GTK_RELIEF_NORMAL - True - - - - - - 0 - True - True - - - - - - - - True - MOD Info - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - True - False - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - False - - - - - True - False - 0 - - - - 4 - True - True - True - True - GTK_POS_TOP - False - False - - - - 2 - True - False - 0 - - - - True - Filename: -Title: -Type: -Length: -Speed: -Tempo: -Samples: -Instruments: -Patterns: -Channels: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 4 - False - False - - - - - - True - --- ---- ---- ---- ---- ---- ---- ---- ---- ---- - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 4 - False - False - - - - - False - True - - - - - - True - General - False - False - GTK_JUSTIFY_CENTER - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - 6 - True - GTK_POLICY_NEVER - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - GTK_SHADOW_IN - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 7.45058015283e-09 - 7.45058015283e-09 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - - - False - True - - - - - - True - Samples - False - False - GTK_JUSTIFY_CENTER - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - 6 - True - GTK_POLICY_NEVER - GTK_POLICY_ALWAYS - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - GTK_SHADOW_IN - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 1.49012002737e-08 - 7.45058015283e-09 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - - - False - True - - - - - - True - Instruments - False - False - GTK_JUSTIFY_CENTER - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - GTK_POLICY_NEVER - GTK_POLICY_ALWAYS - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - True - True - False - False - True - GTK_JUSTIFY_LEFT - GTK_WRAP_WORD - True - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - False - True - - - - - - True - Message - False - False - GTK_JUSTIFY_CENTER - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 8 - True - True - - - - - - 2 - True - GTK_BUTTONBOX_DEFAULT_STYLE - 30 - - - - True - True - True - Close - True - GTK_RELIEF_NORMAL - True - - - - - - 0 - False - False - - - - - - - diff -Nru audacious-plugins-2.4.4/src/modplug/gui/modplug.gladep audacious-plugins-3.2/src/modplug/gui/modplug.gladep --- audacious-plugins-2.4.4/src/modplug/gui/modplug.gladep 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/gui/modplug.gladep 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ - - - - - ModPlug - modplug - . - . - FALSE - TRUE - FALSE - FALSE - interface.cxx - callbacks.cxx - support.cxx - diff -Nru audacious-plugins-2.4.4/src/modplug/gui/support.cxx audacious-plugins-3.2/src/modplug/gui/support.cxx --- audacious-plugins-2.4.4/src/modplug/gui/support.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/gui/support.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,144 +0,0 @@ -/* - * DO NOT EDIT THIS FILE - it is generated by Glade. - */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include -#include -#include -#include -#include - -#include - -#include "support.h" - -GtkWidget* -lookup_widget (GtkWidget *widget, - const gchar *widget_name) -{ - GtkWidget *parent, *found_widget; - - for (;;) - { - if (GTK_IS_MENU (widget)) - parent = gtk_menu_get_attach_widget (GTK_MENU (widget)); - else - parent = widget->parent; - if (!parent) - parent = (GtkWidget*) g_object_get_data (G_OBJECT (widget), "GladeParentKey"); - if (parent == NULL) - break; - widget = parent; - } - - found_widget = (GtkWidget*) g_object_get_data (G_OBJECT (widget), - widget_name); - if (!found_widget) - g_warning ("Widget not found: %s", widget_name); - return found_widget; -} - -static GList *pixmaps_directories = NULL; - -/* Use this function to set the directory containing installed pixmaps. */ -void -add_pixmap_directory (const gchar *directory) -{ - pixmaps_directories = g_list_prepend (pixmaps_directories, - g_strdup (directory)); -} - -/* This is an internally used function to find pixmap files. */ -static gchar* -find_pixmap_file (const gchar *filename) -{ - GList *elem; - - /* We step through each of the pixmaps directory to find it. */ - elem = pixmaps_directories; - while (elem) - { - gchar *pathname = g_strdup_printf ("%s%s%s", (gchar*)elem->data, - G_DIR_SEPARATOR_S, filename); - if (g_file_test (pathname, G_FILE_TEST_EXISTS)) - return pathname; - g_free (pathname); - elem = elem->next; - } - return NULL; -} - -/* This is an internally used function to create pixmaps. */ -GtkWidget* -create_pixmap (GtkWidget *widget, - const gchar *filename) -{ - gchar *pathname = NULL; - GtkWidget *pixmap; - - if (!filename || !filename[0]) - return gtk_image_new (); - - pathname = find_pixmap_file (filename); - - if (!pathname) - { - g_warning (_("Couldn't find pixmap file: %s"), filename); - return gtk_image_new (); - } - - pixmap = gtk_image_new_from_file (pathname); - g_free (pathname); - return pixmap; -} - -/* This is an internally used function to create pixmaps. */ -GdkPixbuf* -create_pixbuf (const gchar *filename) -{ - gchar *pathname = NULL; - GdkPixbuf *pixbuf; - GError *error = NULL; - - if (!filename || !filename[0]) - return NULL; - - pathname = find_pixmap_file (filename); - - if (!pathname) - { - g_warning (_("Couldn't find pixmap file: %s"), filename); - return NULL; - } - - pixbuf = gdk_pixbuf_new_from_file (pathname, &error); - if (!pixbuf) - { - fprintf (stderr, "Failed to load pixbuf file: %s: %s\n", - pathname, error->message); - g_error_free (error); - } - g_free (pathname); - return pixbuf; -} - -/* This is used to set ATK action descriptions. */ -void -glade_set_atk_action_description (AtkAction *action, - const gchar *action_name, - const gchar *description) -{ - gint n_actions, i; - - n_actions = atk_action_get_n_actions (action); - for (i = 0; i < n_actions; i++) - { - if (!strcmp (atk_action_get_name (action, i), action_name)) - atk_action_set_description (action, i, description); - } -} - diff -Nru audacious-plugins-2.4.4/src/modplug/gui/support.h audacious-plugins-3.2/src/modplug/gui/support.h --- audacious-plugins-2.4.4/src/modplug/gui/support.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/gui/support.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -/* - * DO NOT EDIT THIS FILE - it is generated by Glade. - */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include - -/* - * Standard gettext macros. - */ -#ifdef ENABLE_NLS -# include -# undef _ -# define _(String) dgettext (PACKAGE, String) -# define Q_(String) g_strip_context ((String), gettext (String)) -# ifdef gettext_noop -# define N_(String) gettext_noop (String) -# else -# define N_(String) (String) -# endif -#else -# define textdomain(String) (String) -# define gettext(String) (String) -# define dgettext(Domain,Message) (Message) -# define dcgettext(Domain,Message,Type) (Message) -# define bindtextdomain(Domain,Directory) (Domain) -# define _(String) (String) -# define Q_(String) g_strip_context ((String), (String)) -# define N_(String) (String) -#endif - - -/* - * Public Functions. - */ - -/* - * This function returns a widget in a component created by Glade. - * Call it with the toplevel widget in the component (i.e. a window/dialog), - * or alternatively any widget in the component, and the name of the widget - * you want returned. - */ -GtkWidget* lookup_widget (GtkWidget *widget, - const gchar *widget_name); - - -/* Use this function to set the directory containing installed pixmaps. */ -void add_pixmap_directory (const gchar *directory); - - -/* - * Private Functions. - */ - -/* This is used to create the pixmaps used in the interface. */ -GtkWidget* create_pixmap (GtkWidget *widget, - const gchar *filename); - -/* This is used to create the pixbufs used in the interface. */ -GdkPixbuf* create_pixbuf (const gchar *filename); - -/* This is used to set ATK action descriptions. */ -void glade_set_atk_action_description (AtkAction *action, - const gchar *action_name, - const gchar *description); - diff -Nru audacious-plugins-2.4.4/src/modplug/it_defs.h audacious-plugins-3.2/src/modplug/it_defs.h --- audacious-plugins-2.4.4/src/modplug/it_defs.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/it_defs.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,135 +0,0 @@ -#ifndef _ITDEFS_H_ -#define _ITDEFS_H_ - -#pragma pack(1) - -typedef struct tagITFILEHEADER -{ - DWORD id; // 0x4D504D49 - CHAR songname[26]; - BYTE hilight_minor; - BYTE hilight_major; - WORD ordnum; - WORD insnum; - WORD smpnum; - WORD patnum; - WORD cwtv; - WORD cmwt; - WORD flags; - WORD special; - BYTE globalvol; - BYTE mv; - BYTE speed; - BYTE tempo; - BYTE sep; - BYTE pwd; - WORD msglength; - DWORD msgoffset; - DWORD reserved2; - BYTE chnpan[64]; - BYTE chnvol[64]; -} ITFILEHEADER; - - -typedef struct tagITENVELOPE -{ - BYTE flags; - BYTE num; - BYTE lpb; - BYTE lpe; - BYTE slb; - BYTE sle; - BYTE data[25*3]; - BYTE reserved; -} ITENVELOPE; - -// Old Impulse Instrument Format (cmwt < 0x200) -typedef struct tagITOLDINSTRUMENT -{ - DWORD id; // IMPI = 0x49504D49 - CHAR filename[12]; // DOS file name - BYTE zero; - BYTE flags; - BYTE vls; - BYTE vle; - BYTE sls; - BYTE sle; - WORD reserved1; - WORD fadeout; - BYTE nna; - BYTE dnc; - WORD trkvers; - BYTE nos; - BYTE reserved2; - CHAR name[26]; - WORD reserved3[3]; - BYTE keyboard[240]; - BYTE volenv[200]; - BYTE nodes[50]; -} ITOLDINSTRUMENT; - - -// Impulse Instrument Format -typedef struct tagITINSTRUMENT -{ - DWORD id; - CHAR filename[12]; - BYTE zero; - BYTE nna; - BYTE dct; - BYTE dca; - WORD fadeout; - signed char pps; - BYTE ppc; - BYTE gbv; - BYTE dfp; - BYTE rv; - BYTE rp; - WORD trkvers; - BYTE nos; - BYTE reserved1; - CHAR name[26]; - BYTE ifc; - BYTE ifr; - BYTE mch; - BYTE mpr; - WORD mbank; - BYTE keyboard[240]; - ITENVELOPE volenv; - ITENVELOPE panenv; - ITENVELOPE pitchenv; - BYTE dummy[4]; // was 7, but IT v2.17 saves 554 bytes -} ITINSTRUMENT; - - -// IT Sample Format -typedef struct ITSAMPLESTRUCT -{ - DWORD id; // 0x53504D49 - CHAR filename[12]; - BYTE zero; - BYTE gvl; - BYTE flags; - BYTE vol; - CHAR name[26]; - BYTE cvt; - BYTE dfp; - DWORD length; - DWORD loopbegin; - DWORD loopend; - DWORD C5Speed; - DWORD susloopbegin; - DWORD susloopend; - DWORD samplepointer; - BYTE vis; - BYTE vid; - BYTE vir; - BYTE vit; -} ITSAMPLESTRUCT; - -#pragma pack() - -extern BYTE autovibit2xm[8]; -extern BYTE autovibxm2it[8]; - -#endif diff -Nru audacious-plugins-2.4.4/src/modplug/load_669.cxx audacious-plugins-3.2/src/modplug/load_669.cxx --- audacious-plugins-2.4.4/src/modplug/load_669.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_669.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,195 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque , - * Adam Goode (endian and char fixes for PPC) -*/ - -//////////////////////////////////////////////////////////// -// 669 Composer / UNIS 669 module loader -//////////////////////////////////////////////////////////// - -#include "stdafx.h" -#include "sndfile.h" - -//#pragma warning(disable:4244) - -typedef struct tagFILEHEADER669 -{ - WORD sig; // 'if' or 'JN' - signed char songmessage[108]; // Song Message - BYTE samples; // number of samples (1-64) - BYTE patterns; // number of patterns (1-128) - BYTE restartpos; - BYTE orders[128]; - BYTE tempolist[128]; - BYTE breaks[128]; -} FILEHEADER669; - - -typedef struct tagSAMPLE669 -{ - BYTE filename[13]; - BYTE length[4]; // when will somebody think about DWORD align ??? - BYTE loopstart[4]; - BYTE loopend[4]; -} SAMPLE669; - -DWORD lengthArrayToDWORD(const BYTE length[4]) { - DWORD len = (length[3] << 24) + - (length[2] << 16) + - (length[1] << 8) + - (length[0]); - - return(len); -} - - -BOOL CSoundFile::Read669(const BYTE *lpStream, DWORD dwMemLength) -//--------------------------------------------------------------- -{ - BOOL b669Ext; - const FILEHEADER669 *pfh = (const FILEHEADER669 *)lpStream; - const SAMPLE669 *psmp = (const SAMPLE669 *)(lpStream + 0x1F1); - DWORD dwMemPos = 0; - - if ((!lpStream) || (dwMemLength < sizeof(FILEHEADER669))) return FALSE; - if ((bswapLE16(pfh->sig) != 0x6669) && (bswapLE16(pfh->sig) != 0x4E4A)) return FALSE; - b669Ext = (bswapLE16(pfh->sig) == 0x4E4A) ? TRUE : FALSE; - if ((!pfh->samples) || (pfh->samples > 64) || (pfh->restartpos >= 128) - || (!pfh->patterns) || (pfh->patterns > 128)) return FALSE; - DWORD dontfuckwithme = 0x1F1 + pfh->samples * sizeof(SAMPLE669) + pfh->patterns * 0x600; - if (dontfuckwithme > dwMemLength) return FALSE; - for (UINT ichk=0; ichksamples; ichk++) - { - DWORD len = lengthArrayToDWORD(psmp[ichk].length); - dontfuckwithme += len; - } - if (dontfuckwithme > dwMemLength) return FALSE; - // That should be enough checking: this must be a 669 module. - m_nType = MOD_TYPE_669; - m_dwSongFlags |= SONG_LINEARSLIDES; - m_nMinPeriod = 28 << 2; - m_nMaxPeriod = 1712 << 3; - m_nDefaultTempo = 125; - m_nDefaultSpeed = 6; - m_nChannels = 8; - memcpy(m_szNames[0], pfh->songmessage, 16); - m_nSamples = pfh->samples; - for (UINT nins=1; nins<=m_nSamples; nins++, psmp++) - { - DWORD len = lengthArrayToDWORD(psmp->length); - DWORD loopstart = lengthArrayToDWORD(psmp->loopstart); - DWORD loopend = lengthArrayToDWORD(psmp->loopend); - if (len > MAX_SAMPLE_LENGTH) len = MAX_SAMPLE_LENGTH; - if ((loopend > len) && (!loopstart)) loopend = 0; - if (loopend > len) loopend = len; - if (loopstart + 4 >= loopend) loopstart = loopend = 0; - Ins[nins].nLength = len; - Ins[nins].nLoopStart = loopstart; - Ins[nins].nLoopEnd = loopend; - if (loopend) Ins[nins].uFlags |= CHN_LOOP; - memcpy(m_szNames[nins], psmp->filename, 13); - Ins[nins].nVolume = 256; - Ins[nins].nGlobalVol = 64; - Ins[nins].nPan = 128; - } - // Song Message - m_lpszSongComments = new char[109]; - memcpy(m_lpszSongComments, pfh->songmessage, 108); - m_lpszSongComments[108] = 0; - // Reading Orders - memcpy(Order, pfh->orders, 128); - m_nRestartPos = pfh->restartpos; - if (Order[m_nRestartPos] >= pfh->patterns) m_nRestartPos = 0; - // Reading Pattern Break Locations - for (UINT npan=0; npan<8; npan++) - { - ChnSettings[npan].nPan = (npan & 1) ? 0x30 : 0xD0; - ChnSettings[npan].nVolume = 64; - } - // Reading Patterns - dwMemPos = 0x1F1 + pfh->samples * 25; - for (UINT npat=0; npatpatterns; npat++) - { - Patterns[npat] = AllocatePattern(64, m_nChannels); - if (!Patterns[npat]) break; - PatternSize[npat] = 64; - MODCOMMAND *m = Patterns[npat]; - const BYTE *p = lpStream + dwMemPos; - for (UINT row=0; row<64; row++) - { - MODCOMMAND *mspeed = m; - if ((row == pfh->breaks[npat]) && (row != 63)) - { - for (UINT i=0; i<8; i++) - { - m[i].command = CMD_PATTERNBREAK; - m[i].param = 0; - } - } - for (UINT n=0; n<8; n++, m++, p+=3) - { - UINT note = p[0] >> 2; - UINT instr = ((p[0] & 0x03) << 4) | (p[1] >> 4); - UINT vol = p[1] & 0x0F; - if (p[0] < 0xFE) - { - m->note = note + 37; - m->instr = instr + 1; - } - if (p[0] <= 0xFE) - { - m->volcmd = VOLCMD_VOLUME; - m->vol = (vol << 2) + 2; - } - if (p[2] != 0xFF) - { - UINT command = p[2] >> 4; - UINT param = p[2] & 0x0F; - switch(command) - { - case 0x00: command = CMD_PORTAMENTOUP; break; - case 0x01: command = CMD_PORTAMENTODOWN; break; - case 0x02: command = CMD_TONEPORTAMENTO; break; - case 0x03: command = CMD_MODCMDEX; param |= 0x50; break; - case 0x04: command = CMD_VIBRATO; param |= 0x40; break; - case 0x05: if (param) command = CMD_SPEED; else command = 0; param += 2; break; - case 0x06: if (param == 0) { command = CMD_PANNINGSLIDE; param = 0xFE; } else - if (param == 1) { command = CMD_PANNINGSLIDE; param = 0xEF; } else - command = 0; - break; - default: command = 0; - } - if (command) - { - if (command == CMD_SPEED) mspeed = NULL; - m->command = command; - m->param = param; - } - } - } - if ((!row) && (mspeed)) - { - for (UINT i=0; i<8; i++) if (!mspeed[i].command) - { - mspeed[i].command = CMD_SPEED; - mspeed[i].param = pfh->tempolist[npat] + 2; - break; - } - } - } - dwMemPos += 0x600; - } - // Reading Samples - for (UINT n=1; n<=m_nSamples; n++) - { - UINT len = Ins[n].nLength; - if (dwMemPos >= dwMemLength) break; - if (len > 4) ReadSample(&Ins[n], RS_PCM8U, (LPSTR)(lpStream+dwMemPos), dwMemLength - dwMemPos); - dwMemPos += len; - } - return TRUE; -} - - diff -Nru audacious-plugins-2.4.4/src/modplug/load_amf.cxx audacious-plugins-3.2/src/modplug/load_amf.cxx --- audacious-plugins-2.4.4/src/modplug/load_amf.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_amf.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,422 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque -*/ - -/////////////////////////////////////////////////// -// -// AMF module loader -// -// There is 2 types of AMF files: -// - ASYLUM Music Format -// - Advanced Music Format(DSM) -// -/////////////////////////////////////////////////// -#include "stdafx.h" -#include "sndfile.h" - -//#define AMFLOG - -//#pragma warning(disable:4244) - -#pragma pack(1) - -typedef struct _AMFFILEHEADER -{ - UCHAR szAMF[3]; - UCHAR version; - CHAR title[32]; - UCHAR numsamples; - UCHAR numorders; - USHORT numtracks; - UCHAR numchannels; -} AMFFILEHEADER; - -typedef struct _AMFSAMPLE -{ - UCHAR type; - CHAR samplename[32]; - CHAR filename[13]; - ULONG offset; - ULONG length; - USHORT c2spd; - UCHAR volume; -} AMFSAMPLE; - - -#pragma pack() - - -#ifdef AMFLOG -extern void Log(LPCSTR, ...); -#endif - -VOID AMF_Unpack(MODCOMMAND *pPat, const BYTE *pTrack, UINT nRows, UINT nChannels) -//------------------------------------------------------------------------------- -{ - UINT lastinstr = 0; - UINT nTrkSize = bswapLE16(*(USHORT *)pTrack); - nTrkSize += (UINT)pTrack[2] << 16; - pTrack += 3; - while (nTrkSize--) - { - UINT row = pTrack[0]; - UINT cmd = pTrack[1]; - UINT arg = pTrack[2]; - if (row >= nRows) break; - MODCOMMAND *m = pPat + row * nChannels; - if (cmd < 0x7F) // note+vol - { - m->note = cmd+1; - if (!m->instr) m->instr = lastinstr; - m->volcmd = VOLCMD_VOLUME; - m->vol = arg; - } else - if (cmd == 0x7F) // duplicate row - { - signed char rdelta = (signed char)arg; - int rowsrc = (int)row + (int)rdelta; - if ((rowsrc >= 0) && (rowsrc < (int)nRows)) memcpy(m, &pPat[rowsrc*nChannels],sizeof(pPat[rowsrc*nChannels])); - } else - if (cmd == 0x80) // instrument - { - m->instr = arg+1; - lastinstr = m->instr; - } else - if (cmd == 0x83) // volume - { - m->volcmd = VOLCMD_VOLUME; - m->vol = arg; - } else - // effect - { - UINT command = cmd & 0x7F; - UINT param = arg; - switch(command) - { - // 0x01: Set Speed - case 0x01: command = CMD_SPEED; break; - // 0x02: Volume Slide - // 0x0A: Tone Porta + Vol Slide - // 0x0B: Vibrato + Vol Slide - case 0x02: command = CMD_VOLUMESLIDE; - case 0x0A: if (command == 0x0A) command = CMD_TONEPORTAVOL; - case 0x0B: if (command == 0x0B) command = CMD_VIBRATOVOL; - if (param & 0x80) param = (-(signed char)param)&0x0F; - else param = (param&0x0F)<<4; - break; - // 0x04: Porta Up/Down - case 0x04: if (param & 0x80) { command = CMD_PORTAMENTOUP; param = (-(signed char)param)&0x7F; } - else { command = CMD_PORTAMENTODOWN; } break; - // 0x06: Tone Portamento - case 0x06: command = CMD_TONEPORTAMENTO; break; - // 0x07: Tremor - case 0x07: command = CMD_TREMOR; break; - // 0x08: Arpeggio - case 0x08: command = CMD_ARPEGGIO; break; - // 0x09: Vibrato - case 0x09: command = CMD_VIBRATO; break; - // 0x0C: Pattern Break - case 0x0C: command = CMD_PATTERNBREAK; break; - // 0x0D: Position Jump - case 0x0D: command = CMD_POSITIONJUMP; break; - // 0x0F: Retrig - case 0x0F: command = CMD_RETRIG; break; - // 0x10: Offset - case 0x10: command = CMD_OFFSET; break; - // 0x11: Fine Volume Slide - case 0x11: if (param) { command = CMD_VOLUMESLIDE; - if (param & 0x80) param = 0xF0|((-(signed char)param)&0x0F); - else param = 0x0F|((param&0x0F)<<4); - } else command = 0; break; - // 0x12: Fine Portamento - // 0x16: Extra Fine Portamento - case 0x12: - case 0x16: if (param) { int mask = (command == 0x16) ? 0xE0 : 0xF0; - command = (param & 0x80) ? CMD_PORTAMENTOUP : CMD_PORTAMENTODOWN; - if (param & 0x80) param = mask|((-(signed char)param)&0x0F); - else param |= mask; - } else command = 0; break; - // 0x13: Note Delay - case 0x13: command = CMD_S3MCMDEX; param = 0xD0|(param & 0x0F); break; - // 0x14: Note Cut - case 0x14: command = CMD_S3MCMDEX; param = 0xC0|(param & 0x0F); break; - // 0x15: Set Tempo - case 0x15: command = CMD_TEMPO; break; - // 0x17: Panning - case 0x17: param = (param+64)&0x7F; - if (m->command) { if (!m->volcmd) { m->volcmd = VOLCMD_PANNING; m->vol = param/2; } command = 0; } - else { command = CMD_PANNING8; } - // Unknown effects - default: command = param = 0; - } - if (command) - { - m->command = command; - m->param = param; - } - } - pTrack += 3; - } -} - - - -BOOL CSoundFile::ReadAMF(LPCBYTE lpStream, const DWORD dwMemLength) -//----------------------------------------------------------- -{ - const AMFFILEHEADER *pfh = (AMFFILEHEADER *)lpStream; - DWORD dwMemPos; - - if ((!lpStream) || (dwMemLength < 2048)) return FALSE; - if ((!strncmp((LPCTSTR)lpStream, "ASYLUM Music Format V1.0", 25)) && (dwMemLength > 4096)) - { - UINT numorders, numpats, numsamples; - - dwMemPos = 32; - numpats = lpStream[dwMemPos+3]; - numorders = lpStream[dwMemPos+4]; - numsamples = 64; - dwMemPos += 6; - if ((!numpats) || (numpats > MAX_PATTERNS) || (!numorders) - || (numpats*64*32 + 294 + 37*64 >= dwMemLength)) return FALSE; - m_nType = MOD_TYPE_AMF0; - m_nChannels = 8; - m_nInstruments = 0; - m_nSamples = 31; - m_nDefaultTempo = 125; - m_nDefaultSpeed = 6; - for (UINT iOrd=0; iOrdnFineTune = MOD2XMFineTune(lpStream[dwMemPos+22]); - psmp->nVolume = lpStream[dwMemPos+23]; - psmp->nGlobalVol = 64; - if (psmp->nVolume > 0x40) psmp->nVolume = 0x40; - psmp->nVolume <<= 2; - psmp->nLength = bswapLE32(*((LPDWORD)(lpStream+dwMemPos+25))); - psmp->nLoopStart = bswapLE32(*((LPDWORD)(lpStream+dwMemPos+29))); - psmp->nLoopEnd = psmp->nLoopStart + bswapLE32(*((LPDWORD)(lpStream+dwMemPos+33))); - if ((psmp->nLoopEnd > psmp->nLoopStart) && (psmp->nLoopEnd <= psmp->nLength)) - { - psmp->uFlags = CHN_LOOP; - } else - { - psmp->nLoopStart = psmp->nLoopEnd = 0; - } - if ((psmp->nLength) && (iSmp>31)) m_nSamples = iSmp+1; - dwMemPos += 37; - } - for (UINT iPat=0; iPatnote = 0; - - if (pin[0]) - { - p->note = pin[0] + 13; - } - p->instr = pin[1]; - p->command = pin[2]; - p->param = pin[3]; - if (p->command > 0x0F) - { - #ifdef AMFLOG - Log("0x%02X.0x%02X ?", p->command, p->param); - #endif - p->command = 0; - } - ConvertModCommand(p); - pin += 4; - p++; - } - dwMemPos += 64*32; - } - // Read samples - for (UINT iData=0; iDatanLength) - { - if (dwMemPos > dwMemLength) return FALSE; - dwMemPos += ReadSample(psmp, RS_PCM8S, (LPCSTR)(lpStream+dwMemPos), dwMemLength-dwMemPos); - } - } - return TRUE; - } - //////////////////////////// - // DSM/AMF - USHORT *ptracks[MAX_PATTERNS]; - DWORD sampleseekpos[MAX_SAMPLES]; - - if ((pfh->szAMF[0] != 'A') || (pfh->szAMF[1] != 'M') || (pfh->szAMF[2] != 'F') - || (pfh->version < 10) || (pfh->version > 14) || (!bswapLE16(pfh->numtracks)) - || (!pfh->numorders) || (pfh->numorders > MAX_PATTERNS) - || (!pfh->numsamples) || (pfh->numsamples > MAX_SAMPLES) - || (pfh->numchannels < 4) || (pfh->numchannels > 32)) - return FALSE; - memcpy(m_szNames[0], pfh->title, 32); - m_szNames[0][31] = '\0'; - dwMemPos = sizeof(AMFFILEHEADER); - m_nType = MOD_TYPE_AMF; - m_nChannels = pfh->numchannels; - m_nSamples = pfh->numsamples; - m_nInstruments = 0; - // Setup Channel Pan Positions - if (pfh->version >= 11) - { - signed char *panpos = (signed char *)(lpStream + dwMemPos); - UINT nchannels = (pfh->version >= 13) ? 32 : 16; - for (UINT i=0; i 256) { pan = 128; ChnSettings[i].dwFlags |= CHN_SURROUND; } - ChnSettings[i].nPan = pan; - } - dwMemPos += nchannels; - } else - { - for (UINT i=0; i<16; i++) - { - ChnSettings[i].nPan = (lpStream[dwMemPos+i] & 1) ? 0x30 : 0xD0; - } - dwMemPos += 16; - } - // Get Tempo/Speed - m_nDefaultTempo = 125; - m_nDefaultSpeed = 6; - if (pfh->version >= 13) - { - if (lpStream[dwMemPos] >= 32) m_nDefaultTempo = lpStream[dwMemPos]; - if (lpStream[dwMemPos+1] <= 32) m_nDefaultSpeed = lpStream[dwMemPos+1]; - dwMemPos += 2; - } - // Setup sequence list - for (UINT iOrd=0; iOrdnumorders) - { - Order[iOrd] = iOrd; - PatternSize[iOrd] = 64; - if (pfh->version >= 14) - { - PatternSize[iOrd] = bswapLE16(*(USHORT *)(lpStream+dwMemPos)); - dwMemPos += 2; - } - ptracks[iOrd] = (USHORT *)(lpStream+dwMemPos); - dwMemPos += m_nChannels * sizeof(USHORT); - } - } - if (dwMemPos + m_nSamples * (sizeof(AMFSAMPLE)+8) > dwMemLength) return TRUE; - // Read Samples - UINT maxsampleseekpos = 0; - for (UINT iIns=0; iInssamplename, 32); - m_szNames[iIns+1][31] = '\0'; - memcpy(pins->name, psh->filename, 13); - pins->name[12] = '\0'; - pins->nLength = bswapLE32(psh->length); - pins->nC4Speed = bswapLE16(psh->c2spd); - pins->nGlobalVol = 64; - pins->nVolume = psh->volume * 4; - if (pfh->version >= 11) - { - pins->nLoopStart = bswapLE32(*(DWORD *)(lpStream+dwMemPos)); - pins->nLoopEnd = bswapLE32(*(DWORD *)(lpStream+dwMemPos+4)); - dwMemPos += 8; - } else - { - pins->nLoopStart = bswapLE16(*(WORD *)(lpStream+dwMemPos)); - pins->nLoopEnd = pins->nLength; - dwMemPos += 2; - } - sampleseekpos[iIns] = 0; - if ((psh->type) && (bswapLE32(psh->offset) < dwMemLength-1)) - { - sampleseekpos[iIns] = bswapLE32(psh->offset); - if (bswapLE32(psh->offset) > maxsampleseekpos) - maxsampleseekpos = bswapLE32(psh->offset); - if ((pins->nLoopEnd > pins->nLoopStart + 2) - && (pins->nLoopEnd <= pins->nLength)) pins->uFlags |= CHN_LOOP; - } - } - // Read Track Mapping Table - USHORT *pTrackMap = (USHORT *)(lpStream+dwMemPos); - UINT realtrackcnt = 0; - dwMemPos += pfh->numtracks * sizeof(USHORT); - for (UINT iTrkMap=0; iTrkMapnumtracks; iTrkMap++) - { - if (realtrackcnt < pTrackMap[iTrkMap]) realtrackcnt = pTrackMap[iTrkMap]; - } - // Store tracks positions - BYTE **pTrackData = new BYTE *[realtrackcnt]; - memset(pTrackData, 0, sizeof(pTrackData)); - for (UINT iTrack=0; iTracknumorders; iPat++) - { - MODCOMMAND *p = AllocatePattern(PatternSize[iPat], m_nChannels); - if (!p) break; - Patterns[iPat] = p; - for (UINT iChn=0; iChnnumtracks)) - { - UINT realtrk = bswapLE16(pTrackMap[nTrack-1]); - if (realtrk) - { - realtrk--; - if ((realtrk < realtrackcnt) && (pTrackData[realtrk])) - { - AMF_Unpack(p+iChn, pTrackData[realtrk], PatternSize[iPat], m_nChannels); - } - } - } - } - } - delete[] pTrackData; - // Read Sample Data - for (UINT iSeek=1; iSeek<=maxsampleseekpos; iSeek++) - { - if (dwMemPos >= dwMemLength) break; - for (UINT iSmp=0; iSmp -*/ - -////////////////////////////////////////////// -// AMS module loader // -////////////////////////////////////////////// -#include "stdafx.h" -#include "sndfile.h" - -//#pragma warning(disable:4244) - -#pragma pack(1) - -typedef struct AMSFILEHEADER -{ - char szHeader[7]; // "Extreme" // changed from CHAR - BYTE verlo, verhi; // 0x??,0x01 - BYTE chncfg; - BYTE samples; - WORD patterns; - WORD orders; - BYTE vmidi; - WORD extra; -} AMSFILEHEADER; - -typedef struct AMSSAMPLEHEADER -{ - DWORD length; - DWORD loopstart; - DWORD loopend; - BYTE finetune_and_pan; - WORD samplerate; // C-2 = 8363 - BYTE volume; // 0-127 - BYTE infobyte; -} AMSSAMPLEHEADER; - - -#pragma pack() - - - -BOOL CSoundFile::ReadAMS(LPCBYTE lpStream, DWORD dwMemLength) -//----------------------------------------------------------- -{ - BYTE pkinf[MAX_SAMPLES]; - AMSFILEHEADER *pfh = (AMSFILEHEADER *)lpStream; - DWORD dwMemPos; - UINT tmp, tmp2; - - if ((!lpStream) || (dwMemLength < 1024)) return FALSE; - if ((pfh->verhi != 0x01) || (strncmp(pfh->szHeader, "Extreme", 7)) - || (!pfh->patterns) || (!pfh->orders) || (!pfh->samples) || (pfh->samples > MAX_SAMPLES) - || (pfh->patterns > MAX_PATTERNS) || (pfh->orders > MAX_ORDERS)) - { - return ReadAMS2(lpStream, dwMemLength); - } - dwMemPos = sizeof(AMSFILEHEADER) + pfh->extra; - if (dwMemPos + pfh->samples * sizeof(AMSSAMPLEHEADER) + 256 >= dwMemLength) return FALSE; - m_nType = MOD_TYPE_AMS; - m_nInstruments = 0; - m_nChannels = (pfh->chncfg & 0x1F) + 1; - m_nSamples = pfh->samples; - for (UINT nSmp=1; nSmp<=m_nSamples; nSmp++, dwMemPos += sizeof(AMSSAMPLEHEADER)) - { - AMSSAMPLEHEADER *psh = (AMSSAMPLEHEADER *)(lpStream + dwMemPos); - MODINSTRUMENT *pins = &Ins[nSmp]; - pins->nLength = psh->length; - pins->nLoopStart = psh->loopstart; - pins->nLoopEnd = psh->loopend; - pins->nGlobalVol = 64; - pins->nVolume = psh->volume << 1; - pins->nC4Speed = psh->samplerate; - pins->nPan = (psh->finetune_and_pan & 0xF0); - if (pins->nPan < 0x80) pins->nPan += 0x10; - pins->nFineTune = MOD2XMFineTune(psh->finetune_and_pan & 0x0F); - pins->uFlags = (psh->infobyte & 0x80) ? CHN_16BIT : 0; - if ((pins->nLoopEnd <= pins->nLength) && (pins->nLoopStart+4 <= pins->nLoopEnd)) pins->uFlags |= CHN_LOOP; - pkinf[nSmp] = psh->infobyte; - } - // Read Song Name - tmp = lpStream[dwMemPos++]; - if (dwMemPos + tmp + 1 >= dwMemLength) return TRUE; - tmp2 = (tmp < 32) ? tmp : 31; - if (tmp2) memcpy(m_szNames[0], lpStream+dwMemPos, tmp2); - m_szNames[0][tmp2] = 0; - dwMemPos += tmp; - // Read sample names - for (UINT sNam=1; sNam<=m_nSamples; sNam++) - { - if (dwMemPos + 32 >= dwMemLength) return TRUE; - tmp = lpStream[dwMemPos++]; - tmp2 = (tmp < 32) ? tmp : 31; - if (tmp2) memcpy(m_szNames[sNam], lpStream+dwMemPos, tmp2); - dwMemPos += tmp; - } - // Skip Channel names - for (UINT cNam=0; cNam= dwMemLength) return TRUE; - tmp = lpStream[dwMemPos++]; - dwMemPos += tmp; - } - // Read Pattern Names - m_lpszPatternNames = new char[pfh->patterns * 32]; // changed from CHAR - if (!m_lpszPatternNames) return TRUE; - m_nPatternNames = pfh->patterns; - memset(m_lpszPatternNames, 0, m_nPatternNames * 32); - for (UINT pNam=0; pNam < m_nPatternNames; pNam++) - { - if (dwMemPos + 32 >= dwMemLength) return TRUE; - tmp = lpStream[dwMemPos++]; - tmp2 = (tmp < 32) ? tmp : 31; - if (tmp2) memcpy(m_lpszPatternNames+pNam*32, lpStream+dwMemPos, tmp2); - dwMemPos += tmp; - } - // Read Song Comments - tmp = *((WORD *)(lpStream+dwMemPos)); - dwMemPos += 2; - if (dwMemPos + tmp >= dwMemLength) return TRUE; - if (tmp) - { - m_lpszSongComments = new char[tmp+1]; // changed from CHAR - if (!m_lpszSongComments) return TRUE; - memset(m_lpszSongComments, 0, tmp+1); - memcpy(m_lpszSongComments, lpStream + dwMemPos, tmp); - dwMemPos += tmp; - } - // Read Order List - for (UINT iOrd=0; iOrdorders; iOrd++, dwMemPos += 2) - { - UINT n = *((WORD *)(lpStream+dwMemPos)); - Order[iOrd] = (BYTE)n; - } - // Read Patterns - for (UINT iPat=0; iPatpatterns; iPat++) - { - if (dwMemPos + 4 >= dwMemLength) return TRUE; - UINT len = *((DWORD *)(lpStream + dwMemPos)); - dwMemPos += 4; - if ((len >= dwMemLength) || (dwMemPos + len > dwMemLength)) return TRUE; - PatternSize[iPat] = 64; - PatternAllocSize[iPat] = 64; - MODCOMMAND *m = AllocatePattern(PatternSize[iPat], m_nChannels); - if (!m) return TRUE; - Patterns[iPat] = m; - const BYTE *p = lpStream + dwMemPos; - UINT row = 0, i = 0; - while ((row < PatternSize[iPat]) && (i+2 < len)) - { - BYTE b0 = p[i++]; - BYTE b1 = p[i++]; - BYTE b2 = 0; - UINT ch = b0 & 0x3F; - // Note+Instr - if (!(b0 & 0x40)) - { - b2 = p[i++]; - if (ch < m_nChannels) - { - if (b1 & 0x7F) m[ch].note = (b1 & 0x7F) + 25; - m[ch].instr = b2; - } - if (b1 & 0x80) - { - b0 |= 0x40; - b1 = p[i++]; - } - } - // Effect - if (b0 & 0x40) - { - anothercommand: - if (b1 & 0x40) - { - if (ch < m_nChannels) - { - m[ch].volcmd = VOLCMD_VOLUME; - m[ch].vol = b1 & 0x3F; - } - } else - { - b2 = p[i++]; - if (ch < m_nChannels) - { - UINT cmd = b1 & 0x3F; - if (cmd == 0x0C) - { - m[ch].volcmd = VOLCMD_VOLUME; - m[ch].vol = b2 >> 1; - } else - if (cmd == 0x0E) - { - if (!m[ch].command) - { - UINT command = CMD_S3MCMDEX; - UINT param = b2; - switch(param & 0xF0) - { - case 0x00: if (param & 0x08) { param &= 0x07; param |= 0x90; } else {command=param=0;} break; - case 0x10: command = CMD_PORTAMENTOUP; param |= 0xF0; break; - case 0x20: command = CMD_PORTAMENTODOWN; param |= 0xF0; break; - case 0x30: param = (param & 0x0F) | 0x10; break; - case 0x40: param = (param & 0x0F) | 0x30; break; - case 0x50: param = (param & 0x0F) | 0x20; break; - case 0x60: param = (param & 0x0F) | 0xB0; break; - case 0x70: param = (param & 0x0F) | 0x40; break; - case 0x90: command = CMD_RETRIG; param &= 0x0F; break; - case 0xA0: if (param & 0x0F) { command = CMD_VOLUMESLIDE; param = (param << 4) | 0x0F; } else command=param=0; break; - case 0xB0: if (param & 0x0F) { command = CMD_VOLUMESLIDE; param |= 0xF0; } else command=param=0; break; - } - m[ch].command = command; - m[ch].param = param; - } - } else - { - m[ch].command = cmd; - m[ch].param = b2; - ConvertModCommand(&m[ch]); - } - } - } - if (b1 & 0x80) - { - b1 = p[i++]; - if (i <= len) goto anothercommand; - } - } - if (b0 & 0x80) - { - row++; - m += m_nChannels; - } - } - dwMemPos += len; - } - // Read Samples - for (UINT iSmp=1; iSmp<=m_nSamples; iSmp++) if (Ins[iSmp].nLength) - { - if (dwMemPos >= dwMemLength - 9) return TRUE; - UINT flags = (Ins[iSmp].uFlags & CHN_16BIT) ? RS_AMS16 : RS_AMS8; - dwMemPos += ReadSample(&Ins[iSmp], flags, (LPSTR)(lpStream+dwMemPos), dwMemLength-dwMemPos); - } - return TRUE; -} - - -///////////////////////////////////////////////////////////////////// -// AMS 2.2 loader - -#pragma pack(1) - -typedef struct AMS2FILEHEADER -{ - DWORD dwHdr1; // AMShdr - WORD wHdr2; - BYTE b1A; // 0x1A - BYTE titlelen; // 30-bytes max - CHAR szTitle[30]; // [titlelen] -} AMS2FILEHEADER; - -typedef struct AMS2SONGHEADER -{ - WORD version; - BYTE instruments; - WORD patterns; - WORD orders; - WORD bpm; - BYTE speed; - BYTE channels; - BYTE commands; - BYTE rows; - WORD flags; -} AMS2SONGHEADER; - -typedef struct AMS2INSTRUMENT -{ - BYTE samples; - BYTE notemap[120]; -} AMS2INSTRUMENT; - -typedef struct AMS2ENVELOPE -{ - BYTE speed; - BYTE sustain; - BYTE loopbegin; - BYTE loopend; - BYTE points; - BYTE info[3]; -} AMS2ENVELOPE; - -typedef struct AMS2SAMPLE -{ - DWORD length; - DWORD loopstart; - DWORD loopend; - WORD frequency; - BYTE finetune; - WORD c4speed; - CHAR transpose; - BYTE volume; - BYTE flags; -} AMS2SAMPLE; - - -#pragma pack() - - -BOOL CSoundFile::ReadAMS2(LPCBYTE lpStream, DWORD dwMemLength) -//------------------------------------------------------------ -{ - AMS2FILEHEADER *pfh = (AMS2FILEHEADER *)lpStream; - AMS2SONGHEADER *psh; - DWORD dwMemPos; - BYTE smpmap[16]; - BYTE packedsamples[MAX_SAMPLES]; - - if ((pfh->dwHdr1 != 0x68534D41) || (pfh->wHdr2 != 0x7264) - || (pfh->b1A != 0x1A) || (pfh->titlelen > 30)) return FALSE; - dwMemPos = pfh->titlelen + 8; - psh = (AMS2SONGHEADER *)(lpStream + dwMemPos); - if (((psh->version & 0xFF00) != 0x0200) || (!psh->instruments) - || (psh->instruments > MAX_INSTRUMENTS) || (!psh->patterns) || (!psh->orders)) return FALSE; - dwMemPos += sizeof(AMS2SONGHEADER); - if (pfh->titlelen) - { - memcpy(m_szNames, pfh->szTitle, pfh->titlelen); - m_szNames[0][pfh->titlelen] = 0; - } - m_nType = MOD_TYPE_AMS; - m_nChannels = 32; - m_nDefaultTempo = psh->bpm >> 8; - m_nDefaultSpeed = psh->speed; - m_nInstruments = psh->instruments; - m_nSamples = 0; - m_dwSongFlags |= SONG_INSTRUMENTMODE; - if (psh->flags & 0x40) m_dwSongFlags |= SONG_LINEARSLIDES; - for (UINT nIns=1; nIns<=m_nInstruments; nIns++) - { - UINT insnamelen = lpStream[dwMemPos]; - CHAR *pinsname = (CHAR *)(lpStream+dwMemPos+1); - dwMemPos += insnamelen + 1; - AMS2INSTRUMENT *pins = (AMS2INSTRUMENT *)(lpStream + dwMemPos); - dwMemPos += sizeof(AMS2INSTRUMENT); - if (dwMemPos + 1024 >= dwMemLength) return TRUE; - AMS2ENVELOPE *volenv, *panenv, *pitchenv; - volenv = (AMS2ENVELOPE *)(lpStream+dwMemPos); - dwMemPos += 5 + volenv->points*3; - panenv = (AMS2ENVELOPE *)(lpStream+dwMemPos); - dwMemPos += 5 + panenv->points*3; - pitchenv = (AMS2ENVELOPE *)(lpStream+dwMemPos); - dwMemPos += 5 + pitchenv->points*3; - INSTRUMENTHEADER *penv = new INSTRUMENTHEADER; - if (!penv) return TRUE; - memset(smpmap, 0, sizeof(smpmap)); - memset(penv, 0, sizeof(INSTRUMENTHEADER)); - for (UINT ismpmap=0; ismpmapsamples; ismpmap++) - { - if ((ismpmap >= 16) || (m_nSamples+1 >= MAX_SAMPLES)) break; - m_nSamples++; - smpmap[ismpmap] = m_nSamples; - } - penv->nGlobalVol = 64; - penv->nPan = 128; - penv->nPPC = 60; - Headers[nIns] = penv; - if (insnamelen) - { - if (insnamelen > 31) insnamelen = 31; - memcpy(penv->name, pinsname, insnamelen); - penv->name[insnamelen] = 0; - } - for (UINT inotemap=0; inotemap<120; inotemap++) - { - penv->NoteMap[inotemap] = inotemap+1; - penv->Keyboard[inotemap] = smpmap[pins->notemap[inotemap] & 0x0F]; - } - // Volume Envelope - { - UINT pos = 0; - penv->VolEnv.nNodes = (volenv->points > 16) ? 16 : volenv->points; - penv->VolEnv.nSustainStart = penv->VolEnv.nSustainEnd = volenv->sustain; - penv->VolEnv.nLoopStart = volenv->loopbegin; - penv->VolEnv.nLoopEnd = volenv->loopend; - for (int i=0; iVolEnv.nNodes; i++) - { - penv->VolEnv.Values[i] = (BYTE)((volenv->info[i*3+2] & 0x7F) >> 1); - pos += volenv->info[i*3] + ((volenv->info[i*3+1] & 1) << 8); - penv->VolEnv.Ticks[i] = (WORD)pos; - } - } - penv->nFadeOut = (((lpStream[dwMemPos+2] & 0x0F) << 8) | (lpStream[dwMemPos+1])) << 3; - UINT envflags = lpStream[dwMemPos+3]; - if (envflags & 0x01) penv->dwFlags |= ENV_VOLLOOP; - if (envflags & 0x02) penv->dwFlags |= ENV_VOLSUSTAIN; - if (envflags & 0x04) penv->dwFlags |= ENV_VOLUME; - dwMemPos += 5; - // Read Samples - for (UINT ismp=0; ismpsamples; ismp++) - { - MODINSTRUMENT *psmp = ((ismp < 16) && (smpmap[ismp])) ? &Ins[smpmap[ismp]] : NULL; - UINT smpnamelen = lpStream[dwMemPos]; - if ((psmp) && (smpnamelen) && (smpnamelen <= 22)) - { - memcpy(m_szNames[smpmap[ismp]], lpStream+dwMemPos+1, smpnamelen); - } - dwMemPos += smpnamelen + 1; - if (psmp) - { - AMS2SAMPLE *pams = (AMS2SAMPLE *)(lpStream+dwMemPos); - psmp->nGlobalVol = 64; - psmp->nPan = 128; - psmp->nLength = pams->length; - psmp->nLoopStart = pams->loopstart; - psmp->nLoopEnd = pams->loopend; - psmp->nC4Speed = pams->c4speed; - psmp->RelativeTone = pams->transpose; - psmp->nVolume = pams->volume / 2; - packedsamples[smpmap[ismp]] = pams->flags; - if (pams->flags & 0x04) psmp->uFlags |= CHN_16BIT; - if (pams->flags & 0x08) psmp->uFlags |= CHN_LOOP; - if (pams->flags & 0x10) psmp->uFlags |= CHN_PINGPONGLOOP; - } - dwMemPos += sizeof(AMS2SAMPLE); - } - } - if (dwMemPos + 256 >= dwMemLength) return TRUE; - // Comments - { - UINT composernamelen = lpStream[dwMemPos]; - if (composernamelen) - { - m_lpszSongComments = new char[composernamelen+1]; // changed from CHAR - if (m_lpszSongComments) - { - memcpy(m_lpszSongComments, lpStream+dwMemPos+1, composernamelen); - m_lpszSongComments[composernamelen] = 0; - } - } - dwMemPos += composernamelen + 1; - // channel names - for (UINT i=0; i<32; i++) - { - UINT chnnamlen = lpStream[dwMemPos]; - if ((chnnamlen) && (chnnamlen < MAX_CHANNELNAME)) - { - memcpy(ChnSettings[i].szName, lpStream+dwMemPos+1, chnnamlen); - } - dwMemPos += chnnamlen + 1; - if (dwMemPos + chnnamlen + 256 >= dwMemLength) return TRUE; - } - // packed comments (ignored) - UINT songtextlen = *((LPDWORD)(lpStream+dwMemPos)); - dwMemPos += songtextlen; - if (dwMemPos + 256 >= dwMemLength) return TRUE; - } - // Order List - { - for (UINT i=0; i= dwMemLength) return TRUE; - if (i < psh->orders) - { - Order[i] = lpStream[dwMemPos]; - dwMemPos += 2; - } - } - } - // Pattern Data - for (UINT ipat=0; ipatpatterns; ipat++) - { - if (dwMemPos+8 >= dwMemLength) return TRUE; - UINT packedlen = *((LPDWORD)(lpStream+dwMemPos)); - UINT numrows = 1 + (UINT)(lpStream[dwMemPos+4]); - //UINT patchn = 1 + (UINT)(lpStream[dwMemPos+5] & 0x1F); - //UINT patcmds = 1 + (UINT)(lpStream[dwMemPos+5] >> 5); - UINT patnamlen = lpStream[dwMemPos+6]; - dwMemPos += 4; - if ((ipat < MAX_PATTERNS) && (packedlen < dwMemLength-dwMemPos) && (numrows >= 8)) - { - if ((patnamlen) && (patnamlen < MAX_PATTERNNAME)) - { - char s[MAX_PATTERNNAME]; // changed from CHAR - memcpy(s, lpStream+dwMemPos+3, patnamlen); - s[patnamlen] = 0; - SetPatternName(ipat, s); - } - PatternSize[ipat] = numrows; - PatternAllocSize[ipat] = numrows; - Patterns[ipat] = AllocatePattern(numrows, m_nChannels); - if (!Patterns[ipat]) return TRUE; - // Unpack Pattern Data - LPCBYTE psrc = lpStream + dwMemPos; - UINT pos = 3 + patnamlen; - UINT row = 0; - while ((pos < packedlen) && (row < numrows)) - { - MODCOMMAND *m = Patterns[ipat] + row * m_nChannels; - UINT byte1 = psrc[pos++]; - UINT ch = byte1 & 0x1F; - // Read Note + Instr - if (!(byte1 & 0x40)) - { - UINT byte2 = psrc[pos++]; - UINT note = byte2 & 0x7F; - if (note) m[ch].note = (note > 1) ? (note-1) : 0xFF; - m[ch].instr = psrc[pos++]; - // Read Effect - while (byte2 & 0x80) - { - byte2 = psrc[pos++]; - if (byte2 & 0x40) - { - m[ch].volcmd = VOLCMD_VOLUME; - m[ch].vol = byte2 & 0x3F; - } else - { - UINT command = byte2 & 0x3F; - UINT param = psrc[pos++]; - if (command == 0x0C) - { - m[ch].volcmd = VOLCMD_VOLUME; - m[ch].vol = param / 2; - } else - if (command < 0x10) - { - m[ch].command = command; - m[ch].param = param; - ConvertModCommand(&m[ch]); - } else - { - // TODO: AMS effects - } - } - } - } - if (byte1 & 0x80) row++; - } - } - dwMemPos += packedlen; - } - // Read Samples - for (UINT iSmp=1; iSmp<=m_nSamples; iSmp++) if (Ins[iSmp].nLength) - { - if (dwMemPos >= dwMemLength - 9) return TRUE; - UINT flags; - if (packedsamples[iSmp] & 0x03) - { - flags = (Ins[iSmp].uFlags & CHN_16BIT) ? RS_AMS16 : RS_AMS8; - } else - { - flags = (Ins[iSmp].uFlags & CHN_16BIT) ? RS_PCM16S : RS_PCM8S; - } - dwMemPos += ReadSample(&Ins[iSmp], flags, (LPSTR)(lpStream+dwMemPos), dwMemLength-dwMemPos); - } - return TRUE; -} - - -///////////////////////////////////////////////////////////////////// -// AMS Sample unpacking - -void AMSUnpack(const char *psrc, UINT inputlen, char *pdest, UINT dmax, char packcharacter) -{ - UINT tmplen = dmax; - signed char *amstmp = new signed char[tmplen]; - - if (!amstmp) return; - // Unpack Loop - { - signed char *p = amstmp; - UINT i=0, j=0; - while ((i < inputlen) && (j < tmplen)) - { - signed char ch = psrc[i++]; - if (ch == packcharacter) - { - BYTE ch2 = psrc[i++]; - if (ch2) - { - ch = psrc[i++]; - while (ch2--) - { - p[j++] = ch; - if (j >= tmplen) break; - } - } else p[j++] = packcharacter; - } else p[j++] = ch; - } - } - // Bit Unpack Loop - { - signed char *p = amstmp; - UINT bitcount = 0x80, dh; - UINT k=0; - for (UINT i=0; i> ((dh+8-count) & 7)) & 0xFF; - bitcount = ((bitcount|(bitcount<<8)) >> 1) & 0xFF; - pdest[k++] |= bl; - if (k >= dmax) - { - k = 0; - dh++; - } - } - bitcount = ((bitcount|(bitcount<<8)) >> dh) & 0xFF; - } - } - // Delta Unpack - { - signed char old = 0; - for (UINT i=0; i, - * Adam Goode (endian and char fixes for PPC) -*/ - -/////////////////////////////////////////////////////////////// -// -// DigiBooster Pro Module Loader (*.dbm) -// -// Note: this loader doesn't handle multiple songs -// -/////////////////////////////////////////////////////////////// - -#include "stdafx.h" -#include "sndfile.h" - -//#pragma warning(disable:4244) - -#define DBM_FILE_MAGIC 0x304d4244 -#define DBM_ID_NAME 0x454d414e -#define DBM_NAMELEN 0x2c000000 -#define DBM_ID_INFO 0x4f464e49 -#define DBM_INFOLEN 0x0a000000 -#define DBM_ID_SONG 0x474e4f53 -#define DBM_ID_INST 0x54534e49 -#define DBM_ID_VENV 0x564e4556 -#define DBM_ID_PATT 0x54544150 -#define DBM_ID_SMPL 0x4c504d53 - -#pragma pack(1) - -typedef struct DBMFILEHEADER -{ - DWORD dbm_id; // "DBM0" = 0x304d4244 - WORD trkver; // Tracker version: 02.15 - WORD reserved; - DWORD name_id; // "NAME" = 0x454d414e - DWORD name_len; // name length: always 44 - CHAR songname[44]; - DWORD info_id; // "INFO" = 0x4f464e49 - DWORD info_len; // 0x0a000000 - WORD instruments; - WORD samples; - WORD songs; - WORD patterns; - WORD channels; - DWORD song_id; // "SONG" = 0x474e4f53 - DWORD song_len; - CHAR songname2[44]; - WORD orders; -// WORD orderlist[0]; // orderlist[orders] in words -} DBMFILEHEADER; - -typedef struct DBMINSTRUMENT -{ - CHAR name[30]; - WORD sampleno; - WORD volume; - DWORD finetune; - DWORD loopstart; - DWORD looplen; - WORD panning; - WORD flags; -} DBMINSTRUMENT; - -typedef struct DBMENVELOPE -{ - WORD instrument; - BYTE flags; - BYTE numpoints; - BYTE sustain1; - BYTE loopbegin; - BYTE loopend; - BYTE sustain2; - WORD volenv[2*32]; -} DBMENVELOPE; - -typedef struct DBMPATTERN -{ - WORD rows; - DWORD packedsize; - BYTE patterndata[2]; // [packedsize] -} DBMPATTERN; - -typedef struct DBMSAMPLE -{ - DWORD flags; - DWORD samplesize; - BYTE sampledata[2]; // [samplesize] -} DBMSAMPLE; - -#pragma pack() - - -BOOL CSoundFile::ReadDBM(const BYTE *lpStream, DWORD dwMemLength) -//--------------------------------------------------------------- -{ - DBMFILEHEADER *pfh = (DBMFILEHEADER *)lpStream; - DWORD dwMemPos; - UINT nOrders, nSamples, nInstruments, nPatterns; - - if ((!lpStream) || (dwMemLength <= sizeof(DBMFILEHEADER)) || (!pfh->channels) - || (pfh->dbm_id != DBM_FILE_MAGIC) || (!pfh->songs) || (pfh->song_id != DBM_ID_SONG) - || (pfh->name_id != DBM_ID_NAME) || (pfh->name_len != DBM_NAMELEN) - || (pfh->info_id != DBM_ID_INFO) || (pfh->info_len != DBM_INFOLEN)) return FALSE; - dwMemPos = sizeof(DBMFILEHEADER); - nOrders = bswapBE16(pfh->orders); - if (dwMemPos + 2 * nOrders + 8*3 >= dwMemLength) return FALSE; - nInstruments = bswapBE16(pfh->instruments); - nSamples = bswapBE16(pfh->samples); - nPatterns = bswapBE16(pfh->patterns); - m_nType = MOD_TYPE_DBM; - m_nChannels = bswapBE16(pfh->channels); - if (m_nChannels < 4) m_nChannels = 4; - if (m_nChannels > 64) m_nChannels = 64; - memcpy(m_szNames[0], (pfh->songname[0]) ? pfh->songname : pfh->songname2, 32); - m_szNames[0][31] = 0; - for (UINT iOrd=0; iOrd < nOrders; iOrd++) - { - Order[iOrd] = lpStream[dwMemPos+iOrd*2+1]; - if (iOrd >= MAX_ORDERS-2) break; - } - dwMemPos += 2*nOrders; - while (dwMemPos + 10 < dwMemLength) - { - DWORD chunk_id = ((LPDWORD)(lpStream+dwMemPos))[0]; - DWORD chunk_size = bswapBE32(((LPDWORD)(lpStream+dwMemPos))[1]); - DWORD chunk_pos; - - dwMemPos += 8; - chunk_pos = dwMemPos; - if ((dwMemPos + chunk_size > dwMemLength) || (chunk_size > dwMemLength)) break; - dwMemPos += chunk_size; - // Instruments - if (chunk_id == DBM_ID_INST) - { - if (nInstruments >= MAX_INSTRUMENTS) nInstruments = MAX_INSTRUMENTS-1; - for (UINT iIns=0; iIns dwMemPos) break; - if ((penv = new INSTRUMENTHEADER) == NULL) break; - pih = (DBMINSTRUMENT *)(lpStream+chunk_pos); - nsmp = bswapBE16(pih->sampleno); - psmp = ((nsmp) && (nsmp < MAX_SAMPLES)) ? &Ins[nsmp] : NULL; - memset(penv, 0, sizeof(INSTRUMENTHEADER)); - memcpy(penv->name, pih->name, 30); - if (psmp) - { - memcpy(m_szNames[nsmp], pih->name, 30); - m_szNames[nsmp][30] = 0; - } - Headers[iIns+1] = penv; - penv->nFadeOut = 1024; // ??? - penv->nGlobalVol = 128; - penv->nPan = bswapBE16(pih->panning); - if ((penv->nPan) && (penv->nPan < 256)) - penv->dwFlags = ENV_SETPANNING; - else - penv->nPan = 128; - penv->nPPC = 5*12; - for (UINT i=0; i<120; i++) - { - penv->Keyboard[i] = nsmp; - penv->NoteMap[i] = i+1; - } - // Sample Info - if (psmp) - { - DWORD sflags = bswapBE16(pih->flags); - psmp->nVolume = bswapBE16(pih->volume) * 4; - if ((!psmp->nVolume) || (psmp->nVolume > 256)) psmp->nVolume = 256; - psmp->nGlobalVol = 64; - psmp->nC4Speed = bswapBE32(pih->finetune); - int f2t = FrequencyToTranspose(psmp->nC4Speed); - psmp->RelativeTone = f2t >> 7; - psmp->nFineTune = f2t & 0x7F; - if ((pih->looplen) && (sflags & 3)) - { - psmp->nLoopStart = bswapBE32(pih->loopstart); - psmp->nLoopEnd = psmp->nLoopStart + bswapBE32(pih->looplen); - psmp->uFlags |= CHN_LOOP; - psmp->uFlags &= ~CHN_PINGPONGLOOP; - if (sflags & 2) psmp->uFlags |= CHN_PINGPONGLOOP; - } - } - chunk_pos += sizeof(DBMINSTRUMENT); - m_nInstruments = iIns+1; - } - m_dwSongFlags |= SONG_INSTRUMENTMODE; - } else - // Volume Envelopes - if (chunk_id == DBM_ID_VENV) - { - UINT nEnvelopes = lpStream[chunk_pos+1]; - - chunk_pos += 2; - for (UINT iEnv=0; iEnv dwMemPos) break; - peh = (DBMENVELOPE *)(lpStream+chunk_pos); - nins = bswapBE16(peh->instrument); - if ((nins) && (nins < MAX_INSTRUMENTS) && (Headers[nins]) && (peh->numpoints)) - { - INSTRUMENTHEADER *penv = Headers[nins]; - - if (peh->flags & 1) penv->dwFlags |= ENV_VOLUME; - if (peh->flags & 2) penv->dwFlags |= ENV_VOLSUSTAIN; - if (peh->flags & 4) penv->dwFlags |= ENV_VOLLOOP; - penv->VolEnv.nNodes = peh->numpoints + 1; - if (penv->VolEnv.nNodes > MAX_ENVPOINTS) penv->VolEnv.nNodes = MAX_ENVPOINTS; - penv->VolEnv.nLoopStart = peh->loopbegin; - penv->VolEnv.nLoopEnd = peh->loopend; - penv->VolEnv.nSustainStart = penv->VolEnv.nSustainEnd = peh->sustain1; - for (int i=0; iVolEnv.nNodes; i++) - { - penv->VolEnv.Ticks[i] = bswapBE16(peh->volenv[i*2]); - penv->VolEnv.Values[i] = (BYTE)bswapBE16(peh->volenv[i*2+1]); - } - } - chunk_pos += sizeof(DBMENVELOPE); - } - } else - // Packed Pattern Data - if (chunk_id == DBM_ID_PATT) - { - if (nPatterns > MAX_PATTERNS) nPatterns = MAX_PATTERNS; - for (UINT iPat=0; iPat dwMemPos) break; - pph = (DBMPATTERN *)(lpStream+chunk_pos); - pksize = bswapBE32(pph->packedsize); - if ((chunk_pos + pksize + 6 > dwMemPos) || (pksize > dwMemPos)) break; - nRows = bswapBE16(pph->rows); - if ((nRows >= 4) && (nRows <= 256)) - { - MODCOMMAND *m = AllocatePattern(nRows, m_nChannels); - if (m) - { - LPBYTE pkdata = (LPBYTE)&pph->patterndata; - UINT row = 0; - UINT i = 0; - - PatternSize[iPat] = nRows; - PatternAllocSize[iPat] = nRows; - Patterns[iPat] = m; - while ((i+3> 4)*12) + (note & 0x0F) + 13; - } - m[ch].note = note; - } - if (b & 0x02) m[ch].instr = pkdata[i++]; - if (b & 0x3C) - { - UINT cmd1 = 0xFF, param1 = 0, cmd2 = 0xFF, param2 = 0; - if (b & 0x04) cmd1 = (UINT)pkdata[i++]; - if (b & 0x08) param1 = pkdata[i++]; - if (b & 0x10) cmd2 = (UINT)pkdata[i++]; - if (b & 0x20) param2 = pkdata[i++]; - if (cmd1 == 0x0C) - { - m[ch].volcmd = VOLCMD_VOLUME; - m[ch].vol = param1; - cmd1 = 0xFF; - } else - if (cmd2 == 0x0C) - { - m[ch].volcmd = VOLCMD_VOLUME; - m[ch].vol = param2; - cmd2 = 0xFF; - } - if ((cmd1 > 0x13) || ((cmd1 >= 0x10) && (cmd2 < 0x10))) - { - cmd1 = cmd2; - param1 = param2; - cmd2 = 0xFF; - } - if (cmd1 <= 0x13) - { - m[ch].command = cmd1; - m[ch].param = param1; - ConvertModCommand(&m[ch]); - } - } - } else - { - if (b & 0x01) i++; - if (b & 0x02) i++; - if (b & 0x04) i++; - if (b & 0x08) i++; - if (b & 0x10) i++; - if (b & 0x20) i++; - } - } else - { - row++; - m += m_nChannels; - } - } - } - } - chunk_pos += 6 + pksize; - } - } else - // Reading Sample Data - if (chunk_id == DBM_ID_SMPL) - { - if (nSamples >= MAX_SAMPLES) nSamples = MAX_SAMPLES-1; - m_nSamples = nSamples; - for (UINT iSmp=1; iSmp<=nSamples; iSmp++) - { - MODINSTRUMENT *pins; - DBMSAMPLE *psh; - DWORD samplesize; - DWORD sampleflags; - - if (chunk_pos + sizeof(DBMSAMPLE) >= dwMemPos) break; - psh = (DBMSAMPLE *)(lpStream+chunk_pos); - chunk_pos += 8; - samplesize = bswapBE32(psh->samplesize); - sampleflags = bswapBE32(psh->flags); - pins = &Ins[iSmp]; - pins->nLength = samplesize; - if (sampleflags & 2) - { - pins->uFlags |= CHN_16BIT; - samplesize <<= 1; - } - if ((chunk_pos+samplesize > dwMemPos) || (samplesize > dwMemLength)) break; - if (sampleflags & 3) - { - ReadSample(pins, (pins->uFlags & CHN_16BIT) ? RS_PCM16M : RS_PCM8S, - (LPSTR)(psh->sampledata), samplesize); - } - chunk_pos += samplesize; - } - } - } - return TRUE; -} - diff -Nru audacious-plugins-2.4.4/src/modplug/load_dmf.cxx audacious-plugins-3.2/src/modplug/load_dmf.cxx --- audacious-plugins-2.4.4/src/modplug/load_dmf.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_dmf.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,607 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque -*/ - -/////////////////////////////////////////////////////// -// DMF DELUSION DIGITAL MUSIC FILEFORMAT (X-Tracker) // -/////////////////////////////////////////////////////// -#include "stdafx.h" -#include "sndfile.h" - -//#define DMFLOG - -//#pragma warning(disable:4244) - -#pragma pack(1) - -typedef struct DMFHEADER -{ - DWORD id; // "DDMF" = 0x464d4444 - BYTE version; // 4 - CHAR trackername[8]; // "XTRACKER" - CHAR songname[30]; - CHAR composer[20]; - BYTE date[3]; -} DMFHEADER; - -typedef struct DMFINFO -{ - DWORD id; // "INFO" - DWORD infosize; -} DMFINFO; - -typedef struct DMFSEQU -{ - DWORD id; // "SEQU" - DWORD seqsize; - WORD loopstart; - WORD loopend; - WORD sequ[2]; -} DMFSEQU; - -typedef struct DMFPATT -{ - DWORD id; // "PATT" - DWORD patsize; - WORD numpat; // 1-1024 - BYTE tracks; - BYTE firstpatinfo; -} DMFPATT; - -typedef struct DMFTRACK -{ - BYTE tracks; - BYTE beat; // [hi|lo] -> hi=ticks per beat, lo=beats per measure - WORD ticks; // max 512 - DWORD jmpsize; -} DMFTRACK; - -typedef struct DMFSMPI -{ - DWORD id; - DWORD size; - BYTE samples; -} DMFSMPI; - -typedef struct DMFSAMPLE -{ - DWORD len; - DWORD loopstart; - DWORD loopend; - WORD c3speed; - BYTE volume; - BYTE flags; -} DMFSAMPLE; - -#pragma pack() - - -#ifdef DMFLOG -extern void Log(LPCSTR s, ...); -#endif - - -BOOL CSoundFile::ReadDMF(const BYTE *lpStream, DWORD dwMemLength) -//--------------------------------------------------------------- -{ - DMFHEADER *pfh = (DMFHEADER *)lpStream; - DMFINFO *psi; - DMFSEQU *sequ; - DWORD dwMemPos; - BYTE infobyte[32]; - BYTE smplflags[MAX_SAMPLES]; - - if ((!lpStream) || (dwMemLength < 1024)) return FALSE; - if ((pfh->id != 0x464d4444) || (!pfh->version) || (pfh->version & 0xF0)) return FALSE; - dwMemPos = 66; - memcpy(m_szNames[0], pfh->songname, 30); - m_szNames[0][30] = 0; - m_nType = MOD_TYPE_DMF; - m_nChannels = 0; -#ifdef DMFLOG - Log("DMF version %d: \"%s\": %d bytes (0x%04X)\n", pfh->version, m_szNames[0], dwMemLength, dwMemLength); -#endif - while (dwMemPos + 7 < dwMemLength) - { - DWORD id = *((LPDWORD)(lpStream+dwMemPos)); - - switch(id) - { - // "INFO" - case 0x4f464e49: - // "CMSG" - case 0x47534d43: - psi = (DMFINFO *)(lpStream+dwMemPos); - if (id == 0x47534d43) dwMemPos++; - if ((psi->infosize > dwMemLength) || (psi->infosize + dwMemPos + 8 > dwMemLength)) goto dmfexit; - if ((psi->infosize >= 8) && (!m_lpszSongComments)) - { - m_lpszSongComments = new char[psi->infosize]; // changed from CHAR - if (m_lpszSongComments) - { - for (UINT i=0; iinfosize-1; i++) - { - CHAR c = lpStream[dwMemPos+8+i]; - if ((i % 40) == 39) - m_lpszSongComments[i] = 0x0d; - else - m_lpszSongComments[i] = (c < ' ') ? ' ' : c; - } - m_lpszSongComments[psi->infosize-1] = 0; - } - } - dwMemPos += psi->infosize + 8 - 1; - break; - - // "SEQU" - case 0x55514553: - sequ = (DMFSEQU *)(lpStream+dwMemPos); - if ((sequ->seqsize >= dwMemLength) || (dwMemPos + sequ->seqsize + 12 > dwMemLength)) goto dmfexit; - { - UINT nseq = sequ->seqsize >> 1; - if (nseq >= MAX_ORDERS-1) nseq = MAX_ORDERS-1; - if (sequ->loopstart < nseq) m_nRestartPos = sequ->loopstart; - for (UINT i=0; isequ[i]; - } - dwMemPos += sequ->seqsize + 8; - break; - - // "PATT" - case 0x54544150: - if (!m_nChannels) - { - DMFPATT *patt = (DMFPATT *)(lpStream+dwMemPos); - UINT numpat; - DWORD dwPos = dwMemPos + 11; - if ((patt->patsize >= dwMemLength) || (dwMemPos + patt->patsize + 8 > dwMemLength)) goto dmfexit; - numpat = patt->numpat; - if (numpat > MAX_PATTERNS) numpat = MAX_PATTERNS; - m_nChannels = patt->tracks; - if (m_nChannels < patt->firstpatinfo) m_nChannels = patt->firstpatinfo; - if (m_nChannels > 32) m_nChannels = 32; - if (m_nChannels < 4) m_nChannels = 4; - for (UINT npat=0; npattracks, pt->ticks); - #endif - UINT tracks = pt->tracks; - if (tracks > 32) tracks = 32; - UINT ticks = pt->ticks; - if (ticks > 256) ticks = 256; - if (ticks < 16) ticks = 16; - dwPos += 8; - if ((pt->jmpsize >= dwMemLength) || (dwPos + pt->jmpsize + 4 >= dwMemLength)) break; - PatternSize[npat] = (WORD)ticks; - PatternAllocSize[npat] = (WORD)ticks; - MODCOMMAND *m = AllocatePattern(PatternSize[npat], m_nChannels); - if (!m) goto dmfexit; - Patterns[npat] = m; - DWORD d = dwPos; - dwPos += pt->jmpsize; - UINT ttype = 1; - UINT tempo = 125; - UINT glbinfobyte = 0; - UINT pbeat = (pt->beat & 0xf0) ? pt->beat>>4 : 8; - BOOL tempochange = (pt->beat & 0xf0) ? TRUE : FALSE; - memset(infobyte, 0, sizeof(infobyte)); - for (UINT row=0; row>4; tempochange = ttype; break; - #ifdef DMFLOG - default: if (info) Log("GLB: %02X.%02X\n", info, infoval); - #endif - } - } else - { - glbinfobyte--; - } - // Parse channels - for (UINT i=0; i>2; - } - // Effect 1 - if (info & 0x08) - { - BYTE efx = lpStream[d++]; - BYTE eval = lpStream[d++]; - switch(efx) - { - // 1: Key Off - case 1: if (!cmd.note) cmd.note = 0xFE; break; - // 2: Set Loop - // 4: Sample Delay - case 4: if (eval&0xe0) { cmd.command = CMD_S3MCMDEX; cmd.param = (eval>>5)|0xD0; } break; - // 5: Retrig - case 5: if (eval&0xe0) { cmd.command = CMD_RETRIG; cmd.param = (eval>>5); } break; - // 6: Offset - case 6: cmd.command = CMD_OFFSET; cmd.param = eval; break; - #ifdef DMFLOG - default: Log("FX1: %02X.%02X\n", efx, eval); - #endif - } - } - // Effect 2 - if (info & 0x04) - { - BYTE efx = lpStream[d++]; - BYTE eval = lpStream[d++]; - switch(efx) - { - // 1: Finetune - case 1: if (eval&0xf0) { cmd.command = CMD_S3MCMDEX; cmd.param = (eval>>4)|0x20; } break; - // 2: Note Delay - case 2: if (eval&0xe0) { cmd.command = CMD_S3MCMDEX; cmd.param = (eval>>5)|0xD0; } break; - // 3: Arpeggio - case 3: if (eval) { cmd.command = CMD_ARPEGGIO; cmd.param = eval; } break; - // 4: Portamento Up - case 4: cmd.command = CMD_PORTAMENTOUP; cmd.param = (eval >= 0xe0) ? 0xdf : eval; break; - // 5: Portamento Down - case 5: cmd.command = CMD_PORTAMENTODOWN; cmd.param = (eval >= 0xe0) ? 0xdf : eval; break; - // 6: Tone Portamento - case 6: cmd.command = CMD_TONEPORTAMENTO; cmd.param = eval; break; - // 8: Vibrato - case 8: cmd.command = CMD_VIBRATO; cmd.param = eval; break; - // 12: Note cut - case 12: if (eval & 0xe0) { cmd.command = CMD_S3MCMDEX; cmd.param = (eval>>5)|0xc0; } - else if (!cmd.note) { cmd.note = 0xfe; } break; - #ifdef DMFLOG - default: Log("FX2: %02X.%02X\n", efx, eval); - #endif - } - } - // Effect 3 - if (info & 0x02) - { - BYTE efx = lpStream[d++]; - BYTE eval = lpStream[d++]; - switch(efx) - { - // 1: Vol Slide Up - case 1: if (eval == 0xff) break; - eval = (eval+3)>>2; if (eval > 0x0f) eval = 0x0f; - cmd.command = CMD_VOLUMESLIDE; cmd.param = eval<<4; break; - // 2: Vol Slide Down - case 2: if (eval == 0xff) break; - eval = (eval+3)>>2; if (eval > 0x0f) eval = 0x0f; - cmd.command = CMD_VOLUMESLIDE; cmd.param = eval; break; - // 7: Set Pan - case 7: if (!cmd.volcmd) { cmd.volcmd = VOLCMD_PANNING; cmd.vol = (eval+3)>>2; } - else { cmd.command = CMD_PANNING8; cmd.param = eval; } break; - // 8: Pan Slide Left - case 8: eval = (eval+3)>>2; if (eval > 0x0f) eval = 0x0f; - cmd.command = CMD_PANNINGSLIDE; cmd.param = eval<<4; break; - // 9: Pan Slide Right - case 9: eval = (eval+3)>>2; if (eval > 0x0f) eval = 0x0f; - cmd.command = CMD_PANNINGSLIDE; cmd.param = eval; break; - #ifdef DMFLOG - default: Log("FX3: %02X.%02X\n", efx, eval); - #endif - - } - } - // Store effect - if (i < m_nChannels) p[i] = cmd; - if (d > dwPos) - { - #ifdef DMFLOG - Log("Unexpected EOP: row=%d\n", row); - #endif - break; - } - } else - { - infobyte[i]--; - } - - // Find free channel for tempo change - if (tempochange) - { - tempochange = FALSE; - UINT speed=6, modtempo=tempo; - UINT rpm = ((ttype) && (pbeat)) ? tempo*pbeat : (tempo+1)*15; - for (speed=30; speed>1; speed--) - { - modtempo = rpm*speed/24; - if (modtempo <= 200) break; - if ((speed < 6) && (modtempo < 256)) break; - } - #ifdef DMFLOG - Log("Tempo change: ttype=%d pbeat=%d tempo=%3d -> speed=%d tempo=%d\n", - ttype, pbeat, tempo, speed, modtempo); - #endif - for (UINT ich=0; ich= 32) && (modtempo < 256)) - { - p[ich].command = CMD_TEMPO; - p[ich].param = (BYTE)modtempo; - modtempo = 0; - } else - { - break; - } - } - } - if (d >= dwPos) break; - } - #ifdef DMFLOG - Log(" %d/%d bytes remaining\n", dwPos-d, pt->jmpsize); - #endif - if (dwPos + 8 >= dwMemLength) break; - } - dwMemPos += patt->patsize + 8; - } - break; - - // "SMPI": Sample Info - case 0x49504d53: - { - DMFSMPI *pds = (DMFSMPI *)(lpStream+dwMemPos); - if (pds->size <= dwMemLength - dwMemPos) - { - DWORD dwPos = dwMemPos + 9; - m_nSamples = pds->samples; - if (m_nSamples >= MAX_SAMPLES) m_nSamples = MAX_SAMPLES-1; - for (UINT iSmp=1; iSmp<=m_nSamples; iSmp++) - { - UINT namelen = lpStream[dwPos]; - smplflags[iSmp] = 0; - if (dwPos+namelen+1+sizeof(DMFSAMPLE) > dwMemPos+pds->size+8) break; - if (namelen) - { - UINT rlen = (namelen < 32) ? namelen : 31; - memcpy(m_szNames[iSmp], lpStream+dwPos+1, rlen); - m_szNames[iSmp][rlen] = 0; - } - dwPos += namelen + 1; - DMFSAMPLE *psh = (DMFSAMPLE *)(lpStream+dwPos); - MODINSTRUMENT *psmp = &Ins[iSmp]; - psmp->nLength = psh->len; - psmp->nLoopStart = psh->loopstart; - psmp->nLoopEnd = psh->loopend; - psmp->nC4Speed = psh->c3speed; - psmp->nGlobalVol = 64; - psmp->nVolume = (psh->volume) ? ((WORD)psh->volume)+1 : (WORD)256; - psmp->uFlags = (psh->flags & 2) ? CHN_16BIT : 0; - if (psmp->uFlags & CHN_16BIT) psmp->nLength >>= 1; - if (psh->flags & 1) psmp->uFlags |= CHN_LOOP; - smplflags[iSmp] = psh->flags; - dwPos += (pfh->version < 8) ? 22 : 30; - #ifdef DMFLOG - Log("SMPI %d/%d: len=%d flags=0x%02X\n", iSmp, m_nSamples, psmp->nLength, psh->flags); - #endif - } - } - dwMemPos += pds->size + 8; - } - break; - - // "SMPD": Sample Data - case 0x44504d53: - { - DWORD dwPos = dwMemPos + 8; - UINT ismpd = 0; - for (UINT iSmp=1; iSmp<=m_nSamples; iSmp++) - { - ismpd++; - DWORD pksize; - if (dwPos + 4 >= dwMemLength) - { - #ifdef DMFLOG - Log("Unexpected EOF at sample %d/%d! (pos=%d)\n", iSmp, m_nSamples, dwPos); - #endif - break; - } - pksize = *((LPDWORD)(lpStream+dwPos)); - #ifdef DMFLOG - Log("sample %d: pos=0x%X pksize=%d ", iSmp, dwPos, pksize); - Log("len=%d flags=0x%X [%08X]\n", Ins[iSmp].nLength, smplflags[ismpd], *((LPDWORD)(lpStream+dwPos+4))); - #endif - dwPos += 4; - if (pksize > dwMemLength - dwPos) - { - #ifdef DMFLOG - Log("WARNING: pksize=%d, but only %d bytes left\n", pksize, dwMemLength-dwPos); - #endif - pksize = dwMemLength - dwPos; - } - if ((pksize) && (iSmp <= m_nSamples)) - { - UINT flags = (Ins[iSmp].uFlags & CHN_16BIT) ? RS_PCM16S : RS_PCM8S; - if (smplflags[ismpd] & 4) flags = (Ins[iSmp].uFlags & CHN_16BIT) ? RS_DMF16 : RS_DMF8; - ReadSample(&Ins[iSmp], flags, (LPSTR)(lpStream+dwPos), pksize); - } - dwPos += pksize; - } - dwMemPos = dwPos; - } - break; - - // "ENDE": end of file - case 0x45444e45: - goto dmfexit; - - // Unrecognized id, or "ENDE" field - default: - dwMemPos += 4; - break; - } - } -dmfexit: - if (!m_nChannels) - { - if (!m_nSamples) - { - m_nType = MOD_TYPE_NONE; - return FALSE; - } - m_nChannels = 4; - } - return TRUE; -} - - -/////////////////////////////////////////////////////////////////////// -// DMF Compression - -#pragma pack(1) - -typedef struct DMF_HNODE -{ - short int left, right; - BYTE value; -} DMF_HNODE; - -typedef struct DMF_HTREE -{ - LPBYTE ibuf, ibufmax; - DWORD bitbuf; - UINT bitnum; - UINT lastnode, nodecount; - DMF_HNODE nodes[256]; -} DMF_HTREE; - -#pragma pack() - - -// DMF Huffman ReadBits -BYTE DMFReadBits(DMF_HTREE *tree, UINT nbits) -//------------------------------------------- -{ - BYTE x = 0, bitv = 1; - while (nbits--) - { - if (tree->bitnum) - { - tree->bitnum--; - } else - { - tree->bitbuf = (tree->ibuf < tree->ibufmax) ? *(tree->ibuf++) : 0; - tree->bitnum = 7; - } - if (tree->bitbuf & 1) x |= bitv; - bitv <<= 1; - tree->bitbuf >>= 1; - } - return x; -} - -// -// tree: [8-bit value][12-bit index][12-bit index] = 32-bit -// - -void DMFNewNode(DMF_HTREE *tree) -//------------------------------ -{ - BYTE isleft, isright; - UINT actnode; - - actnode = tree->nodecount; - if (actnode > 255) return; - tree->nodes[actnode].value = DMFReadBits(tree, 7); - isleft = DMFReadBits(tree, 1); - isright = DMFReadBits(tree, 1); - actnode = tree->lastnode; - if (actnode > 255) return; - tree->nodecount++; - tree->lastnode = tree->nodecount; - if (isleft) - { - tree->nodes[actnode].left = tree->lastnode; - DMFNewNode(tree); - } else - { - tree->nodes[actnode].left = -1; - } - tree->lastnode = tree->nodecount; - if (isright) - { - tree->nodes[actnode].right = tree->lastnode; - DMFNewNode(tree); - } else - { - tree->nodes[actnode].right = -1; - } -} - - -int DMFUnpack(LPBYTE psample, LPBYTE ibuf, LPBYTE ibufmax, UINT maxlen) -//---------------------------------------------------------------------- -{ - DMF_HTREE tree; - UINT actnode; - BYTE value, sign, delta = 0; - - memset(&tree, 0, sizeof(tree)); - tree.ibuf = ibuf; - tree.ibufmax = ibufmax; - DMFNewNode(&tree); - value = 0; - for (UINT i=0; i 255) break; - delta = tree.nodes[actnode].value; - if ((tree.ibuf >= tree.ibufmax) && (!tree.bitnum)) break; - } while ((tree.nodes[actnode].left >= 0) && (tree.nodes[actnode].right >= 0)); - if (sign) delta ^= 0xFF; - value += delta; - psample[i] = (i) ? value : 0; - } -#ifdef DMFLOG -// Log("DMFUnpack: %d remaining bytes\n", tree.ibufmax-tree.ibuf); -#endif - return tree.ibuf - ibuf; -} - - diff -Nru audacious-plugins-2.4.4/src/modplug/load_dsm.cxx audacious-plugins-3.2/src/modplug/load_dsm.cxx --- audacious-plugins-2.4.4/src/modplug/load_dsm.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_dsm.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,237 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque -*/ - -////////////////////////////////////////////// -// DSIK Internal Format (DSM) module loader // -////////////////////////////////////////////// -#include "stdafx.h" -#include "sndfile.h" - -#pragma pack(1) - -#define DSMID_RIFF 0x46464952 // "RIFF" -#define DSMID_DSMF 0x464d5344 // "DSMF" -#define DSMID_SONG 0x474e4f53 // "SONG" -#define DSMID_INST 0x54534e49 // "INST" -#define DSMID_PATT 0x54544150 // "PATT" - - -typedef struct DSMNOTE -{ - BYTE note,ins,vol,cmd,inf; -} DSMNOTE; - - -typedef struct DSMINST -{ - DWORD id_INST; - DWORD inst_len; - CHAR filename[13]; - BYTE flags; - BYTE flags2; - BYTE volume; - DWORD length; - DWORD loopstart; - DWORD loopend; - DWORD reserved1; - WORD c2spd; - WORD reserved2; - CHAR samplename[28]; -} DSMINST; - - -typedef struct DSMFILEHEADER -{ - DWORD id_RIFF; // "RIFF" - DWORD riff_len; - DWORD id_DSMF; // "DSMF" - DWORD id_SONG; // "SONG" - DWORD song_len; -} DSMFILEHEADER; - - -typedef struct DSMSONG -{ - CHAR songname[28]; - WORD reserved1; - WORD flags; - DWORD reserved2; - WORD numord; - WORD numsmp; - WORD numpat; - WORD numtrk; - BYTE globalvol; - BYTE mastervol; - BYTE speed; - BYTE bpm; - BYTE panpos[16]; - BYTE orders[128]; -} DSMSONG; - -typedef struct DSMPATT -{ - DWORD id_PATT; - DWORD patt_len; - BYTE dummy1; - BYTE dummy2; -} DSMPATT; - -#pragma pack() - - -BOOL CSoundFile::ReadDSM(LPCBYTE lpStream, DWORD dwMemLength) -//----------------------------------------------------------- -{ - DSMFILEHEADER *pfh = (DSMFILEHEADER *)lpStream; - DSMSONG *psong; - DWORD dwMemPos; - UINT nPat, nSmp; - - if ((!lpStream) || (dwMemLength < 1024) || (pfh->id_RIFF != DSMID_RIFF) - || (pfh->riff_len + 8 > dwMemLength) || (pfh->riff_len < 1024) - || (pfh->id_DSMF != DSMID_DSMF) || (pfh->id_SONG != DSMID_SONG) - || (pfh->song_len > dwMemLength)) return FALSE; - psong = (DSMSONG *)(lpStream + sizeof(DSMFILEHEADER)); - dwMemPos = sizeof(DSMFILEHEADER) + pfh->song_len; - m_nType = MOD_TYPE_DSM; - m_nChannels = psong->numtrk; - if (m_nChannels < 4) m_nChannels = 4; - if (m_nChannels > 16) m_nChannels = 16; - m_nSamples = psong->numsmp; - if (m_nSamples > MAX_SAMPLES) m_nSamples = MAX_SAMPLES; - m_nDefaultSpeed = psong->speed; - m_nDefaultTempo = psong->bpm; - m_nDefaultGlobalVolume = psong->globalvol << 2; - if ((!m_nDefaultGlobalVolume) || (m_nDefaultGlobalVolume > 256)) m_nDefaultGlobalVolume = 256; - m_nSongPreAmp = psong->mastervol & 0x7F; - for (UINT iOrd=0; iOrdnumord) ? psong->orders[iOrd] : 0xFF); - } - for (UINT iPan=0; iPan<16; iPan++) - { - ChnSettings[iPan].nPan = 0x80; - if (psong->panpos[iPan] <= 0x80) - { - ChnSettings[iPan].nPan = psong->panpos[iPan] << 1; - } - } - memcpy(m_szNames[0], psong->songname, 28); - nPat = 0; - nSmp = 1; - while (dwMemPos < dwMemLength - 8) - { - DSMPATT *ppatt = (DSMPATT *)(lpStream + dwMemPos); - DSMINST *pins = (DSMINST *)(lpStream+dwMemPos); - // Reading Patterns - if (ppatt->id_PATT == DSMID_PATT) - { - dwMemPos += 8; - if (dwMemPos + ppatt->patt_len >= dwMemLength) break; - DWORD dwPos = dwMemPos; - dwMemPos += ppatt->patt_len; - MODCOMMAND *m = AllocatePattern(64, m_nChannels); - if (!m) break; - PatternSize[nPat] = 64; - PatternAllocSize[nPat] = 64; - Patterns[nPat] = m; - UINT row = 0; - while ((row < 64) && (dwPos + 2 <= dwMemPos)) - { - UINT flag = lpStream[dwPos++]; - if (flag) - { - UINT ch = (flag & 0x0F) % m_nChannels; - if (flag & 0x80) - { - UINT note = lpStream[dwPos++]; - if (note) - { - if (note <= 12*9) note += 12; - m[ch].note = (BYTE)note; - } - } - if (flag & 0x40) - { - m[ch].instr = lpStream[dwPos++]; - } - if (flag & 0x20) - { - m[ch].volcmd = VOLCMD_VOLUME; - m[ch].vol = lpStream[dwPos++]; - } - if (flag & 0x10) - { - UINT command = lpStream[dwPos++]; - UINT param = lpStream[dwPos++]; - switch(command) - { - // 4-bit Panning - case 0x08: - switch(param & 0xF0) - { - case 0x00: param <<= 4; break; - case 0x10: command = 0x0A; param = (param & 0x0F) << 4; break; - case 0x20: command = 0x0E; param = (param & 0x0F) | 0xA0; break; - case 0x30: command = 0x0E; param = (param & 0x0F) | 0x10; break; - case 0x40: command = 0x0E; param = (param & 0x0F) | 0x20; break; - default: command = 0; - } - break; - // Portamentos - case 0x11: - case 0x12: - command &= 0x0F; - break; - // 3D Sound (?) - case 0x13: - command = 'X' - 55; - param = 0x91; - break; - default: - // Volume + Offset (?) - command = ((command & 0xF0) == 0x20) ? 0x09 : 0; - } - m[ch].command = (BYTE)command; - m[ch].param = (BYTE)param; - if (command) ConvertModCommand(&m[ch]); - } - } else - { - m += m_nChannels; - row++; - } - } - nPat++; - } else - // Reading Samples - if ((nSmp <= m_nSamples) && (pins->id_INST == DSMID_INST)) - { - if (dwMemPos + pins->inst_len >= dwMemLength - 8) break; - DWORD dwPos = dwMemPos + sizeof(DSMINST); - dwMemPos += 8 + pins->inst_len; - memcpy(m_szNames[nSmp], pins->samplename, 28); - MODINSTRUMENT *psmp = &Ins[nSmp]; - memcpy(psmp->name, pins->filename, 13); - psmp->nGlobalVol = 64; - psmp->nC4Speed = pins->c2spd; - psmp->uFlags = (WORD)((pins->flags & 1) ? CHN_LOOP : 0); - psmp->nLength = pins->length; - psmp->nLoopStart = pins->loopstart; - psmp->nLoopEnd = pins->loopend; - psmp->nVolume = (WORD)(pins->volume << 2); - if (psmp->nVolume > 256) psmp->nVolume = 256; - UINT smptype = (pins->flags & 2) ? RS_PCM8S : RS_PCM8U; - ReadSample(psmp, smptype, (LPCSTR)(lpStream+dwPos), dwMemLength - dwPos); - nSmp++; - } else - { - break; - } - } - return TRUE; -} - diff -Nru audacious-plugins-2.4.4/src/modplug/load_far.cxx audacious-plugins-3.2/src/modplug/load_far.cxx --- audacious-plugins-2.4.4/src/modplug/load_far.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_far.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,271 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque -*/ - -//////////////////////////////////////// -// Farandole (FAR) module loader // -//////////////////////////////////////// -#include "stdafx.h" -#include "sndfile.h" - -//#pragma warning(disable:4244) - -#define FARFILEMAGIC 0xFE524146 // "FAR" - -#pragma pack(1) - -typedef struct FARHEADER1 -{ - DWORD id; // file magic FAR= - CHAR songname[40]; // songname - CHAR magic2[3]; // 13,10,26 - WORD headerlen; // remaining length of header in bytes - BYTE version; // 0xD1 - BYTE onoff[16]; - BYTE edit1[9]; - BYTE speed; - BYTE panning[16]; - BYTE edit2[4]; - WORD stlen; -} FARHEADER1; - -typedef struct FARHEADER2 -{ - BYTE orders[256]; - BYTE numpat; - BYTE snglen; - BYTE loopto; - WORD patsiz[256]; -} FARHEADER2; - -typedef struct FARSAMPLE -{ - CHAR samplename[32]; - DWORD length; - BYTE finetune; - BYTE volume; - DWORD reppos; - DWORD repend; - BYTE type; - BYTE loop; -} FARSAMPLE; - -#pragma pack() - - -BOOL CSoundFile::ReadFAR(const BYTE *lpStream, DWORD dwMemLength) -//--------------------------------------------------------------- -{ - FARHEADER1 *pmh1 = (FARHEADER1 *)lpStream; - FARHEADER2 *pmh2; - DWORD dwMemPos = sizeof(FARHEADER1); - UINT headerlen; - BYTE samplemap[8]; - - if ((!lpStream) || (dwMemLength < 1024) || (bswapLE32(pmh1->id) != FARFILEMAGIC) - || (pmh1->magic2[0] != 13) || (pmh1->magic2[1] != 10) || (pmh1->magic2[2] != 26)) return FALSE; - headerlen = bswapLE16(pmh1->headerlen); - pmh1->stlen = bswapLE16( pmh1->stlen ); /* inplace byteswap -- Toad */ - if ((headerlen >= dwMemLength) || (dwMemPos + pmh1->stlen + sizeof(FARHEADER2) >= dwMemLength)) return FALSE; - // Globals - m_nType = MOD_TYPE_FAR; - m_nChannels = 16; - m_nInstruments = 0; - m_nSamples = 0; - m_nSongPreAmp = 0x20; - m_nDefaultSpeed = pmh1->speed; - m_nDefaultTempo = 80; - m_nDefaultGlobalVolume = 256; - - memcpy(m_szNames[0], pmh1->songname, 32); - // Channel Setting - for (UINT nchpan=0; nchpan<16; nchpan++) - { - ChnSettings[nchpan].dwFlags = 0; - ChnSettings[nchpan].nPan = ((pmh1->panning[nchpan] & 0x0F) << 4) + 8; - ChnSettings[nchpan].nVolume = 64; - } - // Reading comment - if (pmh1->stlen) - { - UINT szLen = pmh1->stlen; - if (szLen > dwMemLength - dwMemPos) szLen = dwMemLength - dwMemPos; - if ((m_lpszSongComments = new char[szLen + 1]) != NULL) - { - memcpy(m_lpszSongComments, lpStream+dwMemPos, szLen); - m_lpszSongComments[szLen] = 0; - } - dwMemPos += pmh1->stlen; - } - // Reading orders - pmh2 = (FARHEADER2 *)(lpStream + dwMemPos); - dwMemPos += sizeof(FARHEADER2); - if (dwMemPos >= dwMemLength) return TRUE; - for (UINT iorder=0; iordersnglen) ? pmh2->orders[iorder] : 0xFF; - } - m_nRestartPos = pmh2->loopto; - // Reading Patterns - dwMemPos += headerlen - (869 + pmh1->stlen); - if (dwMemPos >= dwMemLength) return TRUE; - - // byteswap pattern data -- Toad - UINT psfix = 0 ; - while( psfix++ < 256 ) - { - pmh2->patsiz[psfix] = bswapLE16( pmh2->patsiz[psfix] ) ; - } - // end byteswap of pattern data - - WORD *patsiz = (WORD *)pmh2->patsiz; - for (UINT ipat=0; ipat<256; ipat++) if (patsiz[ipat]) - { - UINT patlen = patsiz[ipat]; - if ((ipat >= MAX_PATTERNS) || (patsiz[ipat] < 2)) - { - dwMemPos += patlen; - continue; - } - if (dwMemPos + patlen >= dwMemLength) return TRUE; - UINT rows = (patlen - 2) >> 6; - if (!rows) - { - dwMemPos += patlen; - continue; - } - if (rows > 256) rows = 256; - if (rows < 16) rows = 16; - PatternSize[ipat] = rows; - PatternAllocSize[ipat] = rows; - if ((Patterns[ipat] = AllocatePattern(rows, m_nChannels)) == NULL) return TRUE; - MODCOMMAND *m = Patterns[ipat]; - UINT patbrk = lpStream[dwMemPos]; - const BYTE *p = lpStream + dwMemPos + 2; - UINT max = rows*16*4; - if (max > patlen-2) max = patlen-2; - for (UINT len=0; leninstr = ins + 1; - m->note = note + 36; - } - if (vol & 0x0F) - { - m->volcmd = VOLCMD_VOLUME; - m->vol = (vol & 0x0F) << 2; - if (m->vol <= 4) m->vol = 0; - } - switch(eff & 0xF0) - { - // 1.x: Portamento Up - case 0x10: - m->command = CMD_PORTAMENTOUP; - m->param = eff & 0x0F; - break; - // 2.x: Portamento Down - case 0x20: - m->command = CMD_PORTAMENTODOWN; - m->param = eff & 0x0F; - break; - // 3.x: Tone-Portamento - case 0x30: - m->command = CMD_TONEPORTAMENTO; - m->param = (eff & 0x0F) << 2; - break; - // 4.x: Retrigger - case 0x40: - m->command = CMD_RETRIG; - m->param = 6 / (1+(eff&0x0F)) + 1; - break; - // 5.x: Set Vibrato Depth - case 0x50: - m->command = CMD_VIBRATO; - m->param = (eff & 0x0F); - break; - // 6.x: Set Vibrato Speed - case 0x60: - m->command = CMD_VIBRATO; - m->param = (eff & 0x0F) << 4; - break; - // 7.x: Vol Slide Up - case 0x70: - m->command = CMD_VOLUMESLIDE; - m->param = (eff & 0x0F) << 4; - break; - // 8.x: Vol Slide Down - case 0x80: - m->command = CMD_VOLUMESLIDE; - m->param = (eff & 0x0F); - break; - // A.x: Port to vol - case 0xA0: - m->volcmd = VOLCMD_VOLUME; - m->vol = ((eff & 0x0F) << 2) + 4; - break; - // B.x: Set Balance - case 0xB0: - m->command = CMD_PANNING8; - m->param = (eff & 0x0F) << 4; - break; - // F.x: Set Speed - case 0xF0: - m->command = CMD_SPEED; - m->param = eff & 0x0F; - break; - default: - if ((patbrk) && (patbrk+1 == (len >> 6)) && (patbrk+1 != rows-1)) - { - m->command = CMD_PATTERNBREAK; - patbrk = 0; - } - } - } - dwMemPos += patlen; - } - // Reading samples - if (dwMemPos + 8 >= dwMemLength) return TRUE; - memcpy(samplemap, lpStream+dwMemPos, 8); - dwMemPos += 8; - MODINSTRUMENT *pins = &Ins[1]; - for (UINT ismp=0; ismp<64; ismp++, pins++) if (samplemap[ismp >> 3] & (1 << (ismp & 7))) - { - if (dwMemPos + sizeof(FARSAMPLE) > dwMemLength) return TRUE; - FARSAMPLE *pfs = (FARSAMPLE *)(lpStream + dwMemPos); - dwMemPos += sizeof(FARSAMPLE); - m_nSamples = ismp + 1; - memcpy(m_szNames[ismp+1], pfs->samplename, 32); - pfs->length = bswapLE32( pfs->length ) ; /* endian fix - Toad */ - pins->nLength = pfs->length ; - pins->nLoopStart = bswapLE32(pfs->reppos) ; - pins->nLoopEnd = bswapLE32(pfs->repend) ; - pins->nFineTune = 0; - pins->nC4Speed = 8363*2; - pins->nGlobalVol = 64; - pins->nVolume = pfs->volume << 4; - pins->uFlags = 0; - if ((pins->nLength > 3) && (dwMemPos + 4 < dwMemLength)) - { - if (pfs->type & 1) - { - pins->uFlags |= CHN_16BIT; - pins->nLength >>= 1; - pins->nLoopStart >>= 1; - pins->nLoopEnd >>= 1; - } - if ((pfs->loop & 8) && (pins->nLoopEnd > 4)) pins->uFlags |= CHN_LOOP; - ReadSample(pins, (pins->uFlags & CHN_16BIT) ? RS_PCM16S : RS_PCM8S, - (LPSTR)(lpStream+dwMemPos), dwMemLength - dwMemPos); - } - dwMemPos += pfs->length; - } - return TRUE; -} - diff -Nru audacious-plugins-2.4.4/src/modplug/load_it.cxx audacious-plugins-3.2/src/modplug/load_it.cxx --- audacious-plugins-2.4.4/src/modplug/load_it.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_it.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,980 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque , - * Adam Goode (endian and char fixes for PPC) -*/ - -#include "stdafx.h" -#include "sndfile.h" -#include "it_defs.h" - -/* blah, -mrsb. -this is a schism header */ -#include "midi.h" - -#ifdef MSC_VER -#pragma warning(disable:4244) -#endif - -BYTE autovibit2xm[8] = -{ 0, 3, 1, 4, 2, 0, 0, 0 }; - -BYTE autovibxm2it[8] = -{ 0, 2, 4, 1, 3, 0, 0, 0 }; - -////////////////////////////////////////////////////////// -// Impulse Tracker IT file support (import only) - - -static inline UINT ConvertVolParam(UINT value) -//-------------------------------------------- -{ - return (value > 9) ? 9 : value; -} - - -BOOL CSoundFile::ITInstrToMPT(const void *p, INSTRUMENTHEADER *penv, UINT trkvers) -//-------------------------------------------------------------------------------- -{ - if (trkvers < 0x0200) - { - const ITOLDINSTRUMENT *pis = (const ITOLDINSTRUMENT *)p; - memcpy(penv->name, pis->name, 26); - memcpy(penv->filename, pis->filename, 12); - penv->nFadeOut = bswapLE16(pis->fadeout) << 6; - penv->nGlobalVol = 128; - for (UINT j=0; j<120; j++) - { - UINT note = pis->keyboard[j*2]; - UINT ins = pis->keyboard[j*2+1]; - if (ins < MAX_SAMPLES) penv->Keyboard[j] = ins; - if (note < 128) penv->NoteMap[j] = note+1; - else if (note >= 0xFE) penv->NoteMap[j] = note; - } - if (pis->flags & 0x01) penv->dwFlags |= ENV_VOLUME; - if (pis->flags & 0x02) penv->dwFlags |= ENV_VOLLOOP; - if (pis->flags & 0x04) penv->dwFlags |= ENV_VOLSUSTAIN; - penv->VolEnv.nLoopStart = pis->vls; - penv->VolEnv.nLoopEnd = pis->vle; - penv->VolEnv.nSustainStart = pis->sls; - penv->VolEnv.nSustainEnd = pis->sle; - penv->VolEnv.nNodes = 25; - for (UINT ev=0; ev<25; ev++) - { - if ((penv->VolEnv.Ticks[ev] = pis->nodes[ev*2]) == 0xFF) - { - penv->VolEnv.nNodes = ev; - break; - } - penv->VolEnv.Values[ev] = pis->nodes[ev*2+1]; - } - penv->nNNA = pis->nna; - penv->nDCT = pis->dnc; - penv->nPan = 0x80; - } else - { - const ITINSTRUMENT *pis = (const ITINSTRUMENT *)p; - memcpy(penv->name, pis->name, 26); - memcpy(penv->filename, pis->filename, 12); - penv->nMidiProgram = pis->mpr; - penv->nMidiChannel = pis->mch; - penv->wMidiBank = bswapLE16(pis->mbank); - penv->nFadeOut = bswapLE16(pis->fadeout) << 5; - penv->nGlobalVol = pis->gbv; - if (penv->nGlobalVol > 128) penv->nGlobalVol = 128; - for (UINT j=0; j<120; j++) - { - UINT note = pis->keyboard[j*2]; - UINT ins = pis->keyboard[j*2+1]; - if (ins < MAX_SAMPLES) penv->Keyboard[j] = ins; - if (note < 128) penv->NoteMap[j] = note+1; - else if (note >= 0xFE) penv->NoteMap[j] = note; - } - // Volume Envelope - if (pis->volenv.flags & 1) penv->dwFlags |= ENV_VOLUME; - if (pis->volenv.flags & 2) penv->dwFlags |= ENV_VOLLOOP; - if (pis->volenv.flags & 4) penv->dwFlags |= ENV_VOLSUSTAIN; - if (pis->volenv.flags & 8) penv->dwFlags |= ENV_VOLCARRY; - penv->VolEnv.nNodes = pis->volenv.num; - if (penv->VolEnv.nNodes > 25) penv->VolEnv.nNodes = 25; - - penv->VolEnv.nLoopStart = pis->volenv.lpb; - penv->VolEnv.nLoopEnd = pis->volenv.lpe; - penv->VolEnv.nSustainStart = pis->volenv.slb; - penv->VolEnv.nSustainEnd = pis->volenv.sle; - // Panning Envelope - if (pis->panenv.flags & 1) penv->dwFlags |= ENV_PANNING; - if (pis->panenv.flags & 2) penv->dwFlags |= ENV_PANLOOP; - if (pis->panenv.flags & 4) penv->dwFlags |= ENV_PANSUSTAIN; - if (pis->panenv.flags & 8) penv->dwFlags |= ENV_PANCARRY; - penv->PanEnv.nNodes = pis->panenv.num; - if (penv->PanEnv.nNodes > 25) penv->PanEnv.nNodes = 25; - penv->PanEnv.nLoopStart = pis->panenv.lpb; - penv->PanEnv.nLoopEnd = pis->panenv.lpe; - penv->PanEnv.nSustainStart = pis->panenv.slb; - penv->PanEnv.nSustainEnd = pis->panenv.sle; - // Pitch Envelope - if (pis->pitchenv.flags & 1) penv->dwFlags |= ENV_PITCH; - if (pis->pitchenv.flags & 2) penv->dwFlags |= ENV_PITCHLOOP; - if (pis->pitchenv.flags & 4) penv->dwFlags |= ENV_PITCHSUSTAIN; - if (pis->pitchenv.flags & 8) penv->dwFlags |= ENV_PITCHCARRY; - if (pis->pitchenv.flags & 0x80) penv->dwFlags |= ENV_FILTER; - penv->PitchEnv.nNodes = pis->pitchenv.num; - if (penv->PitchEnv.nNodes > 25) penv->PitchEnv.nNodes = 25; - penv->PitchEnv.nLoopStart = pis->pitchenv.lpb; - penv->PitchEnv.nLoopEnd = pis->pitchenv.lpe; - penv->PitchEnv.nSustainStart = pis->pitchenv.slb; - penv->PitchEnv.nSustainEnd = pis->pitchenv.sle; - // Envelopes Data - for (UINT ev=0; ev<25; ev++) - { - penv->VolEnv.Values[ev] = pis->volenv.data[ev*3]; - penv->VolEnv.Ticks[ev] = (pis->volenv.data[ev*3+2] << 8) | (pis->volenv.data[ev*3+1]); - penv->PanEnv.Values[ev] = pis->panenv.data[ev*3] + 32; - penv->PanEnv.Ticks[ev] = (pis->panenv.data[ev*3+2] << 8) | (pis->panenv.data[ev*3+1]); - penv->PitchEnv.Values[ev] = pis->pitchenv.data[ev*3] + 32; - penv->PitchEnv.Ticks[ev] = (pis->pitchenv.data[ev*3+2] << 8) | (pis->pitchenv.data[ev*3+1]); - } - penv->nNNA = pis->nna % 4; - penv->nDCT = pis->dct % 4; - penv->nDNA = pis->dca % 3; - penv->nPPS = pis->pps; - penv->nPPC = pis->ppc; - penv->nIFC = pis->ifc; - penv->nIFR = pis->ifr; - penv->nVolSwing = pis->rv; - penv->nPanSwing = pis->rp; - penv->nPan = (pis->dfp & 0x7F) << 2; - if (penv->nPan > 256) penv->nPan = 128; - if (pis->dfp < 0x80) penv->dwFlags |= ENV_SETPANNING; - } - if ((penv->VolEnv.nLoopStart >= 25) || (penv->VolEnv.nLoopEnd >= 25)) penv->dwFlags &= ~ENV_VOLLOOP; - if ((penv->VolEnv.nSustainStart >= 25) || (penv->VolEnv.nSustainEnd >= 25)) penv->dwFlags &= ~ENV_VOLSUSTAIN; - return TRUE; -} - - -BOOL CSoundFile::ReadIT(const BYTE *lpStream, DWORD dwMemLength) -//-------------------------------------------------------------- -{ - ITFILEHEADER pifh = *(ITFILEHEADER *)lpStream; - DWORD dwMemPos = sizeof(ITFILEHEADER); - DWORD inspos[MAX_INSTRUMENTS]; - DWORD smppos[MAX_SAMPLES]; - DWORD patpos[MAX_PATTERNS]; - BYTE chnmask[64], channels_used[64]; - MODCOMMAND lastvalue[64]; - - if ((!lpStream) || (dwMemLength < 0xc2)) return FALSE; - - pifh.id = bswapLE32(pifh.id); - if (pifh.id == 0x49504D49) { - if (dwMemLength < 554) return FALSE; - - WORD tv; - INSTRUMENTHEADER *zenv = new INSTRUMENTHEADER; - if (!zenv) return FALSE; - memset(zenv, 0, sizeof(INSTRUMENTHEADER)); - memcpy(&tv, lpStream+0x1C, 2); /* trkvers */ - if (!ITInstrToMPT(lpStream, zenv, tv)) { - delete zenv; - return FALSE; - } - - /* okay, we need samples now */ - unsigned int q = 554; - BYTE expect_samples = lpStream[0x1E]; - - m_nType = MOD_TYPE_IT; - m_nInstruments = 1; - m_nSamples = expect_samples; - m_dwSongFlags = SONG_INSTRUMENTMODE | SONG_LINEARSLIDES /* eh? */; - - memcpy(m_szNames[0], lpStream + 0x20, 26); - m_szNames[0][26] = 0; - - if (q+(80*expect_samples) >= dwMemLength) { - delete zenv; - return FALSE; - } - - for (UINT nsmp = 0; nsmp < expect_samples; nsmp++) { - - ITSAMPLESTRUCT pis = *(ITSAMPLESTRUCT *)(lpStream+q); - q += 80; /* length of ITS header */ - - pis.id = bswapLE32(pis.id); - pis.length = bswapLE32(pis.length); - pis.loopbegin = bswapLE32(pis.loopbegin); - pis.loopend = bswapLE32(pis.loopend); - pis.C5Speed = bswapLE32(pis.C5Speed); - pis.susloopbegin = bswapLE32(pis.susloopbegin); - pis.susloopend = bswapLE32(pis.susloopend); - pis.samplepointer = bswapLE32(pis.samplepointer); - - if (pis.id == 0x53504D49) - { - MODINSTRUMENT *pins = &Ins[nsmp+1]; - memcpy(pins->name, pis.filename, 12); - pins->uFlags = 0; - pins->nLength = 0; - pins->nLoopStart = pis.loopbegin; - pins->nLoopEnd = pis.loopend; - pins->nSustainStart = pis.susloopbegin; - pins->nSustainEnd = pis.susloopend; - pins->nC4Speed = pis.C5Speed; - if (!pins->nC4Speed) pins->nC4Speed = 8363; - //if (pis.C5Speed < 256) pins->nC4Speed = 256; - pins->nVolume = pis.vol << 2; - if (pins->nVolume > 256) pins->nVolume = 256; - pins->nGlobalVol = pis.gvl; - if (pins->nGlobalVol > 64) pins->nGlobalVol = 64; - if (pis.flags & 0x10) pins->uFlags |= CHN_LOOP; - if (pis.flags & 0x20) pins->uFlags |= CHN_SUSTAINLOOP; - if (pis.flags & 0x40) pins->uFlags |= CHN_PINGPONGLOOP; - if (pis.flags & 0x80) pins->uFlags |= CHN_PINGPONGSUSTAIN; - pins->nPan = (pis.dfp & 0x7F) << 2; - if (pins->nPan > 256) pins->nPan = 256; - if (pis.dfp & 0x80) pins->uFlags |= CHN_PANNING; - pins->nVibType = autovibit2xm[pis.vit & 7]; - pins->nVibRate = pis.vis; - pins->nVibDepth = pis.vid & 0x7F; - pins->nVibSweep = pis.vir; - if ((pis.samplepointer) && (pis.samplepointer < dwMemLength) && (pis.length)) - { - pins->nLength = pis.length; - if (pins->nLength > MAX_SAMPLE_LENGTH) pins->nLength = MAX_SAMPLE_LENGTH; - UINT flags = (pis.cvt & 1) ? RS_PCM8S : RS_PCM8U; - if (pis.flags & 2) - { - flags += 5; - if (pis.flags & 4) flags |= RSF_STEREO; - pins->uFlags |= CHN_16BIT; - // IT 2.14 16-bit packed sample ? - if (pis.flags & 8) flags = ((pifh.cmwt >= 0x215) && (pis.cvt & 4)) ? RS_IT21516 : RS_IT21416; - } else - { - if (pis.flags & 4) flags |= RSF_STEREO; - if (pis.cvt == 0xFF) flags = RS_ADPCM4; else - // IT 2.14 8-bit packed sample ? - if (pis.flags & 8) flags = ((pifh.cmwt >= 0x215) && (pis.cvt & 4)) ? RS_IT2158 : RS_IT2148; - } - ReadSample(&Ins[nsmp+1], flags, (LPSTR)(lpStream+pis.samplepointer), dwMemLength - pis.samplepointer); - } - } - memcpy(m_szNames[nsmp+1], pis.name, 26); - - } - - Headers[1] = zenv; - return TRUE; - } - - - pifh.ordnum = bswapLE16(pifh.ordnum); - pifh.insnum = bswapLE16(pifh.insnum); - pifh.smpnum = bswapLE16(pifh.smpnum); - pifh.patnum = bswapLE16(pifh.patnum); - pifh.cwtv = bswapLE16(pifh.cwtv); - pifh.cmwt = bswapLE16(pifh.cmwt); - pifh.flags = bswapLE16(pifh.flags); - pifh.special = bswapLE16(pifh.special); - pifh.msglength = bswapLE16(pifh.msglength); - pifh.msgoffset = bswapLE32(pifh.msgoffset); - pifh.reserved2 = bswapLE32(pifh.reserved2); - - - - if ((pifh.id != 0x4D504D49) || (pifh.insnum >= MAX_INSTRUMENTS) - || (pifh.smpnum >= MAX_INSTRUMENTS)) return FALSE; - if (dwMemPos + pifh.ordnum + pifh.insnum*4 - + pifh.smpnum*4 + pifh.patnum*4 > dwMemLength) return FALSE; - m_nType = MOD_TYPE_IT; - if (!(pifh.flags & 0x01)) m_dwSongFlags |= SONG_NOSTEREO; - if (pifh.flags & 0x04) m_dwSongFlags |= SONG_INSTRUMENTMODE; - if (pifh.flags & 0x08) m_dwSongFlags |= SONG_LINEARSLIDES; - if (pifh.flags & 0x10) m_dwSongFlags |= SONG_ITOLDEFFECTS; - if (pifh.flags & 0x20) m_dwSongFlags |= SONG_ITCOMPATMODE; - if (pifh.flags & 0x40) { - midi_flags |= MIDI_PITCH_BEND; - midi_pitch_depth = pifh.pwd; - } - if (pifh.flags & 0x80) m_dwSongFlags |= SONG_EMBEDMIDICFG; - if (pifh.flags & 0x1000) m_dwSongFlags |= SONG_EXFILTERRANGE; - memcpy(m_szNames[0], pifh.songname, 26); - m_szNames[0][26] = 0; - if (pifh.cwtv >= 0x0213) { - m_rowHighlightMinor = pifh.hilight_minor; - m_rowHighlightMajor = pifh.hilight_major; - } else { - m_rowHighlightMinor = 4; - m_rowHighlightMajor = 16; - } - // Global Volume - m_nDefaultGlobalVolume = pifh.globalvol << 1; - if (m_nDefaultGlobalVolume > 256) m_nDefaultGlobalVolume = 256; - if (pifh.speed) m_nDefaultSpeed = pifh.speed; - if (pifh.tempo) m_nDefaultTempo = pifh.tempo; - m_nSongPreAmp = pifh.mv; - if (m_nSongPreAmp > 128) - m_nSongPreAmp = 128; - m_nStereoSeparation = pifh.sep; - // Reading Channels Pan Positions - for (int ipan=0; ipan<64; ipan++) if (pifh.chnpan[ipan] != 0xFF) - { - ChnSettings[ipan].nVolume = pifh.chnvol[ipan]; - ChnSettings[ipan].nPan = 128; - if (pifh.chnpan[ipan] & 0x80) ChnSettings[ipan].dwFlags |= CHN_MUTE; - UINT n = pifh.chnpan[ipan] & 0x7F; - if (n <= 64) ChnSettings[ipan].nPan = n << 2; - if (n == 100) ChnSettings[ipan].dwFlags |= CHN_SURROUND; - } - if (m_nChannels < 4) m_nChannels = 4; - // Reading Song Message - if ((pifh.special & 0x01) && (pifh.msglength) && (pifh.msgoffset + pifh.msglength < dwMemLength)) - { - m_lpszSongComments = new char[pifh.msglength+1]; - if (m_lpszSongComments) - { - memcpy(m_lpszSongComments, lpStream+pifh.msgoffset, pifh.msglength); - m_lpszSongComments[pifh.msglength] = 0; - } - } - // Reading orders - UINT nordsize = pifh.ordnum; - if (nordsize > MAX_ORDERS) nordsize = MAX_ORDERS; - memcpy(Order, lpStream+dwMemPos, nordsize); - - dwMemPos += pifh.ordnum; - // Reading Instrument Offsets - memset(inspos, 0, sizeof(inspos)); - UINT inspossize = pifh.insnum; - if (inspossize > MAX_INSTRUMENTS) inspossize = MAX_INSTRUMENTS; - inspossize <<= 2; - memcpy(inspos, lpStream+dwMemPos, inspossize); - for (UINT j=0; j < (inspossize>>2); j++) - { - inspos[j] = bswapLE32(inspos[j]); - } - dwMemPos += pifh.insnum * 4; - // Reading Samples Offsets - memset(smppos, 0, sizeof(smppos)); - UINT smppossize = pifh.smpnum; - if (smppossize > MAX_SAMPLES) smppossize = MAX_SAMPLES; - smppossize <<= 2; - memcpy(smppos, lpStream+dwMemPos, smppossize); - for (UINT j=0; j < (smppossize>>2); j++) - { - smppos[j] = bswapLE32(smppos[j]); - } - dwMemPos += pifh.smpnum * 4; - // Reading Patterns Offsets - memset(patpos, 0, sizeof(patpos)); - UINT patpossize = pifh.patnum; - if (patpossize > MAX_PATTERNS) patpossize = MAX_PATTERNS; - patpossize <<= 2; - memcpy(patpos, lpStream+dwMemPos, patpossize); - for (UINT j=0; j < (patpossize>>2); j++) - { - patpos[j] = bswapLE32(patpos[j]); - } - dwMemPos += pifh.patnum * 4; - - for (UINT i = 0; i < pifh.ordnum; i++) { - if (Order[i] >= pifh.patnum && Order[i] < MAX_PATTERNS) { - pifh.patnum = Order[i]; - for (UINT j = patpossize; j < (unsigned)(pifh.patnum>>2); j++) - patpos[j] = 0; - patpossize = pifh.patnum; - } - } - - - // Reading IT Extra Info - if (dwMemPos + 2 < dwMemLength) - { - UINT nflt = bswapLE16(*((WORD *)(lpStream + dwMemPos))); - dwMemPos += 2; - if (dwMemPos + nflt * 8 < dwMemLength) dwMemPos += nflt * 8; - } - // Reading Midi Output & Macros - if (m_dwSongFlags & SONG_EMBEDMIDICFG) - { - if (dwMemPos + sizeof(MODMIDICFG) < dwMemLength) - { - memcpy(&m_MidiCfg, lpStream+dwMemPos, sizeof(MODMIDICFG)); - dwMemPos += sizeof(MODMIDICFG); - } else { - ResetMidiCfg(); - } - } else { - ResetMidiCfg(); - } -#if 0 - // Read pattern names: "PNAM" - if ((dwMemPos + 8 < dwMemLength) && (bswapLE32(*((DWORD *)(lpStream+dwMemPos))) == 0x4d414e50)) - { - UINT len = bswapLE32(*((DWORD *)(lpStream+dwMemPos+4))); - dwMemPos += 8; - if ((dwMemPos + len <= dwMemLength) && (len <= MAX_PATTERNS*MAX_PATTERNNAME) && (len >= MAX_PATTERNNAME)) - { - m_lpszPatternNames = new char[len]; - if (m_lpszPatternNames) - { - m_nPatternNames = len / MAX_PATTERNNAME; - memcpy(m_lpszPatternNames, lpStream+dwMemPos, len); - } - dwMemPos += len; - } - } -#endif - // 4-channels minimum - m_nChannels = 4; -#if 0 - // Read channel names: "CNAM" - if ((dwMemPos + 8 < dwMemLength) && (bswapLE32(*((DWORD *)(lpStream+dwMemPos))) == 0x4d414e43)) - { - UINT len = bswapLE32(*((DWORD *)(lpStream+dwMemPos+4))); - dwMemPos += 8; - if ((dwMemPos + len <= dwMemLength) && (len <= 64*MAX_CHANNELNAME)) - { - UINT n = len / MAX_CHANNELNAME; - if (n > m_nChannels) m_nChannels = n; - for (UINT i=0; i MAX_PATTERNS) npatterns = MAX_PATTERNS; - for (UINT patchk=0; patchk= dwMemLength)) continue; - UINT len = bswapLE16(*((WORD *)(lpStream+patpos[patchk]))); - UINT rows = bswapLE16(*((WORD *)(lpStream+patpos[patchk]+2))); - if ((rows < 4) || (rows > 256)) continue; - if (patpos[patchk]+8+len > dwMemLength) continue; - UINT i = 0; - const BYTE *p = lpStream+patpos[patchk]+8; - UINT nrow = 0; - while (nrow= len) break; - BYTE b = p[i++]; - if (!b) - { - nrow++; - continue; - } - UINT ch = b & 0x7F; - if (ch) ch = (ch - 1) & 0x3F; - if (b & 0x80) - { - if (i >= len) break; - chnmask[ch] = p[i++]; - } - // Channel used - if (chnmask[ch] & 0x0F) - { - if ((ch >= m_nChannels) && (ch < 64)) m_nChannels = ch+1; - } - // Note - if (chnmask[ch] & 1) i++; - // Instrument - if (chnmask[ch] & 2) i++; - // Volume - if (chnmask[ch] & 4) i++; - // Effect - if (chnmask[ch] & 8) i += 2; - if (i >= len) break; - } - } - // Reading Instruments - m_nInstruments = pifh.insnum; - if (m_nInstruments >= MAX_INSTRUMENTS) m_nInstruments = MAX_INSTRUMENTS-1; - for (UINT nins=0; nins 0) && (inspos[nins] < dwMemLength - sizeof(ITOLDINSTRUMENT))) - { - INSTRUMENTHEADER *penv = new INSTRUMENTHEADER; - if (!penv) continue; - Headers[nins+1] = penv; - memset(penv, 0, sizeof(INSTRUMENTHEADER)); - ITInstrToMPT(lpStream + inspos[nins], penv, pifh.cmwt); - } - } - // Reading Samples - m_nSamples = pifh.smpnum; - if (m_nSamples >= MAX_SAMPLES) m_nSamples = MAX_SAMPLES-1; - for (UINT nsmp=0; nsmpname, pis.filename, 12); - pins->uFlags = 0; - pins->nLength = 0; - pins->nLoopStart = pis.loopbegin; - pins->nLoopEnd = pis.loopend; - pins->nSustainStart = pis.susloopbegin; - pins->nSustainEnd = pis.susloopend; - pins->nC4Speed = pis.C5Speed; - if (!pins->nC4Speed) pins->nC4Speed = 8363; - //if (pis.C5Speed < 256) pins->nC4Speed = 256; - pins->nVolume = pis.vol << 2; - if (pins->nVolume > 256) pins->nVolume = 256; - pins->nGlobalVol = pis.gvl; - if (pins->nGlobalVol > 64) pins->nGlobalVol = 64; - if (pis.flags & 0x10) pins->uFlags |= CHN_LOOP; - if (pis.flags & 0x20) pins->uFlags |= CHN_SUSTAINLOOP; - if (pis.flags & 0x40) pins->uFlags |= CHN_PINGPONGLOOP; - if (pis.flags & 0x80) pins->uFlags |= CHN_PINGPONGSUSTAIN; - pins->nPan = (pis.dfp & 0x7F) << 2; - if (pins->nPan > 256) pins->nPan = 256; - if (pis.dfp & 0x80) pins->uFlags |= CHN_PANNING; - pins->nVibType = autovibit2xm[pis.vit & 7]; - pins->nVibRate = pis.vis; - pins->nVibDepth = pis.vid & 0x7F; - pins->nVibSweep = pis.vir; - if ((pis.samplepointer) && (pis.samplepointer < dwMemLength) && (pis.length)) - { - pins->nLength = pis.length; - if (pins->nLength > MAX_SAMPLE_LENGTH) pins->nLength = MAX_SAMPLE_LENGTH; - UINT flags = (pis.cvt & 1) ? RS_PCM8S : RS_PCM8U; - if (pis.flags & 2) - { - flags += 5; - if (pis.flags & 4) flags |= RSF_STEREO; - pins->uFlags |= CHN_16BIT; - // IT 2.14 16-bit packed sample ? - if (pis.flags & 8) flags = ((pifh.cmwt >= 0x215) && (pis.cvt & 4)) ? RS_IT21516 : RS_IT21416; - } else - { - if (pis.flags & 4) flags |= RSF_STEREO; - if (pis.cvt == 0xFF) flags = RS_ADPCM4; else - // IT 2.14 8-bit packed sample ? - if (pis.flags & 8) flags = ((pifh.cmwt >= 0x215) && (pis.cvt & 4)) ? RS_IT2158 : RS_IT2148; - } - ReadSample(&Ins[nsmp+1], flags, (LPSTR)(lpStream+pis.samplepointer), dwMemLength - pis.samplepointer); - } - } - memcpy(m_szNames[nsmp+1], pis.name, 26); - } - // Reading Patterns - for (UINT npat=0; npat= dwMemLength)) - { - PatternSize[npat] = 64; - PatternAllocSize[npat] = 64; - Patterns[npat] = AllocatePattern(64, m_nChannels); - continue; - } - - UINT len = bswapLE16(*((WORD *)(lpStream+patpos[npat]))); - UINT rows = bswapLE16(*((WORD *)(lpStream+patpos[npat]+2))); - if ((rows < 4) || (rows > 256)) continue; - if (patpos[npat]+8+len > dwMemLength) continue; - PatternSize[npat] = rows; - PatternAllocSize[npat] = rows; - if ((Patterns[npat] = AllocatePattern(rows, m_nChannels)) == NULL) continue; - memset(lastvalue, 0, sizeof(lastvalue)); - memset(chnmask, 0, sizeof(chnmask)); - MODCOMMAND *m = Patterns[npat]; - UINT i = 0; - const BYTE *p = lpStream+patpos[npat]+8; - UINT nrow = 0; - while (nrow= len) break; - BYTE b = p[i++]; - if (!b) - { - nrow++; - m+=m_nChannels; - continue; - } - UINT ch = b & 0x7F; - if (ch) ch = (ch - 1) & 0x3F; - if (b & 0x80) - { - if (i >= len) break; - chnmask[ch] = p[i++]; - } - if ((chnmask[ch] & 0x10) && (ch < m_nChannels)) - { - m[ch].note = lastvalue[ch].note; - } - if ((chnmask[ch] & 0x20) && (ch < m_nChannels)) - { - m[ch].instr = lastvalue[ch].instr; - } - if ((chnmask[ch] & 0x40) && (ch < m_nChannels)) - { - m[ch].volcmd = lastvalue[ch].volcmd; - m[ch].vol = lastvalue[ch].vol; - } - if ((chnmask[ch] & 0x80) && (ch < m_nChannels)) - { - m[ch].command = lastvalue[ch].command; - m[ch].param = lastvalue[ch].param; - } - if (chnmask[ch] & 1) // Note - { - if (i >= len) break; - UINT note = p[i++]; - if (ch < m_nChannels) - { - if (note < 0x80) note++; - m[ch].note = note; - lastvalue[ch].note = note; - channels_used[ch] = TRUE; - } - } - if (chnmask[ch] & 2) - { - if (i >= len) break; - UINT instr = p[i++]; - if (ch < m_nChannels) - { - m[ch].instr = instr; - lastvalue[ch].instr = instr; - } - } - if (chnmask[ch] & 4) - { - if (i >= len) break; - UINT vol = p[i++]; - if (ch < m_nChannels) - { - // 0-64: Set Volume - if (vol <= 64) { m[ch].volcmd = VOLCMD_VOLUME; m[ch].vol = vol; } else - // 128-192: Set Panning - if ((vol >= 128) && (vol <= 192)) { m[ch].volcmd = VOLCMD_PANNING; m[ch].vol = vol - 128; } else - // 65-74: Fine Volume Up - if (vol < 75) { m[ch].volcmd = VOLCMD_FINEVOLUP; m[ch].vol = vol - 65; } else - // 75-84: Fine Volume Down - if (vol < 85) { m[ch].volcmd = VOLCMD_FINEVOLDOWN; m[ch].vol = vol - 75; } else - // 85-94: Volume Slide Up - if (vol < 95) { m[ch].volcmd = VOLCMD_VOLSLIDEUP; m[ch].vol = vol - 85; } else - // 95-104: Volume Slide Down - if (vol < 105) { m[ch].volcmd = VOLCMD_VOLSLIDEDOWN; m[ch].vol = vol - 95; } else - // 105-114: Pitch Slide Up - if (vol < 115) { m[ch].volcmd = VOLCMD_PORTADOWN; m[ch].vol = vol - 105; } else - // 115-124: Pitch Slide Down - if (vol < 125) { m[ch].volcmd = VOLCMD_PORTAUP; m[ch].vol = vol - 115; } else - // 193-202: Portamento To - if ((vol >= 193) && (vol <= 202)) { m[ch].volcmd = VOLCMD_TONEPORTAMENTO; m[ch].vol = vol - 193; } else - // 203-212: Vibrato - if ((vol >= 203) && (vol <= 212)) { m[ch].volcmd = VOLCMD_VIBRATO; m[ch].vol = vol - 203; } - lastvalue[ch].volcmd = m[ch].volcmd; - lastvalue[ch].vol = m[ch].vol; - } - } - // Reading command/param - if (chnmask[ch] & 8) - { - if (i > len - 2) break; - UINT cmd = p[i++]; - UINT param = p[i++]; - if (ch < m_nChannels) - { - if (cmd) - { - m[ch].command = cmd; - m[ch].param = param; - S3MConvert(&m[ch], TRUE); - lastvalue[ch].command = m[ch].command; - lastvalue[ch].param = m[ch].param; - } - } - } - } - } - for (UINT ncu=0; ncu=m_nChannels) - { - ChnSettings[ncu].nVolume = 64; - ChnSettings[ncu].dwFlags &= ~CHN_MUTE; - } - } - m_nMinPeriod = 8; - m_nMaxPeriod = 0xF000; - return TRUE; -} - - -////////////////////////////////////////////////////////////////////////////// -// IT 2.14 compression - -DWORD ITReadBits(DWORD &bitbuf, UINT &bitnum, LPBYTE &ibuf, CHAR n) -//----------------------------------------------------------------- -{ - DWORD retval = 0; - UINT i = n; - - if (n > 0) - { - do - { - if (!bitnum) - { - bitbuf = *ibuf++; - bitnum = 8; - } - retval >>= 1; - retval |= bitbuf << 31; - bitbuf >>= 1; - bitnum--; - i--; - } while (i); - i = n; - } - return (retval >> (32-i)); -} - -#define IT215_SUPPORT -void ITUnpack8Bit(signed char *pSample, DWORD dwLen, LPBYTE lpMemFile, DWORD dwMemLength, BOOL b215) -//------------------------------------------------------------------------------------------- -{ - signed char *pDst = pSample; - LPBYTE pSrc = lpMemFile; - DWORD wHdr = 0; - DWORD wCount = 0; - DWORD bitbuf = 0; - UINT bitnum = 0; - BYTE bLeft = 0, bTemp = 0, bTemp2 = 0; - - while (dwLen) - { - if (!wCount) - { - wCount = 0x8000; - wHdr = bswapLE16(*((LPWORD)pSrc)); - pSrc += 2; - bLeft = 9; - bTemp = bTemp2 = 0; - bitbuf = bitnum = 0; - } - DWORD d = wCount; - if (d > dwLen) d = dwLen; - // Unpacking - DWORD dwPos = 0; - do - { - WORD wBits = (WORD)ITReadBits(bitbuf, bitnum, pSrc, bLeft); - if (bLeft < 7) - { - DWORD i = 1 << (bLeft-1); - DWORD j = wBits & 0xFFFF; - if (i != j) goto UnpackByte; - wBits = (WORD)(ITReadBits(bitbuf, bitnum, pSrc, 3) + 1) & 0xFF; - bLeft = ((BYTE)wBits < bLeft) ? (BYTE)wBits : (BYTE)((wBits+1) & 0xFF); - goto Next; - } - if (bLeft < 9) - { - WORD i = (0xFF >> (9 - bLeft)) + 4; - WORD j = i - 8; - if ((wBits <= j) || (wBits > i)) goto UnpackByte; - wBits -= j; - bLeft = ((BYTE)(wBits & 0xFF) < bLeft) ? (BYTE)(wBits & 0xFF) : (BYTE)((wBits+1) & 0xFF); - goto Next; - } - if (bLeft >= 10) goto SkipByte; - if (wBits >= 256) - { - bLeft = (BYTE)(wBits + 1) & 0xFF; - goto Next; - } - UnpackByte: - if (bLeft < 8) - { - BYTE shift = 8 - bLeft; - signed char c = (signed char)(wBits << shift); - c >>= shift; - wBits = (WORD)c; - } - wBits += bTemp; - bTemp = (BYTE)wBits; - bTemp2 += bTemp; -#ifdef IT215_SUPPORT - pDst[dwPos] = (b215) ? bTemp2 : bTemp; -#else - pDst[dwPos] = bTemp; -#endif - SkipByte: - dwPos++; - Next: - if (pSrc >= lpMemFile+dwMemLength+1) return; - } while (dwPos < d); - // Move On - wCount -= d; - dwLen -= d; - pDst += d; - } -} - - -void ITUnpack16Bit(signed char *pSample, DWORD dwLen, LPBYTE lpMemFile, DWORD dwMemLength, BOOL b215) -//-------------------------------------------------------------------------------------------- -{ - signed short *pDst = (signed short *)pSample; - LPBYTE pSrc = lpMemFile; - DWORD wHdr = 0; - DWORD wCount = 0; - DWORD bitbuf = 0; - UINT bitnum = 0; - BYTE bLeft = 0; - signed short wTemp = 0, wTemp2 = 0; - - while (dwLen) - { - if (!wCount) - { - wCount = 0x4000; - wHdr = bswapLE16(*((LPWORD)pSrc)); - pSrc += 2; - bLeft = 17; - wTemp = wTemp2 = 0; - bitbuf = bitnum = 0; - } - DWORD d = wCount; - if (d > dwLen) d = dwLen; - // Unpacking - DWORD dwPos = 0; - do - { - DWORD dwBits = ITReadBits(bitbuf, bitnum, pSrc, bLeft); - if (bLeft < 7) - { - DWORD i = 1 << (bLeft-1); - DWORD j = dwBits; - if (i != j) goto UnpackByte; - dwBits = ITReadBits(bitbuf, bitnum, pSrc, 4) + 1; - bLeft = ((BYTE)(dwBits & 0xFF) < bLeft) ? (BYTE)(dwBits & 0xFF) : (BYTE)((dwBits+1) & 0xFF); - goto Next; - } - if (bLeft < 17) - { - DWORD i = (0xFFFF >> (17 - bLeft)) + 8; - DWORD j = (i - 16) & 0xFFFF; - if ((dwBits <= j) || (dwBits > (i & 0xFFFF))) goto UnpackByte; - dwBits -= j; - bLeft = ((BYTE)(dwBits & 0xFF) < bLeft) ? (BYTE)(dwBits & 0xFF) : (BYTE)((dwBits+1) & 0xFF); - goto Next; - } - if (bLeft >= 18) goto SkipByte; - if (dwBits >= 0x10000) - { - bLeft = (BYTE)(dwBits + 1) & 0xFF; - goto Next; - } - UnpackByte: - if (bLeft < 16) - { - BYTE shift = 16 - bLeft; - signed short c = (signed short)(dwBits << shift); - c >>= shift; - dwBits = (DWORD)c; - } - dwBits += wTemp; - wTemp = (signed short)dwBits; - wTemp2 += wTemp; -#ifdef IT215_SUPPORT - pDst[dwPos] = (b215) ? wTemp2 : wTemp; -#else - pDst[dwPos] = wTemp; -#endif - SkipByte: - dwPos++; - Next: - if (pSrc >= lpMemFile+dwMemLength+1) return; - } while (dwPos < d); - // Move On - wCount -= d; - dwLen -= d; - pDst += d; - if (pSrc >= lpMemFile+dwMemLength) break; - } -} - -UINT CSoundFile::LoadMixPlugins(const void *pData, UINT nLen) -//----------------------------------------------------------- -{ - const BYTE *p = (const BYTE *)pData; - UINT nPos = 0; - - while (nPos+8 < nLen) - { - DWORD nPluginSize; - UINT nPlugin; - - nPluginSize = bswapLE32(*(DWORD *)(p+nPos+4)); - if (nPluginSize > nLen-nPos-8) break;; - if ((bswapLE32(*(DWORD *)(p+nPos))) == 0x58464843) - { - for (UINT ch=0; ch<64; ch++) if (ch*4 < nPluginSize) - { - ChnSettings[ch].nMixPlugin = bswapLE32(*(DWORD *)(p+nPos+8+ch*4)); - } - } else - { - if ((p[nPos] != 'F') || (p[nPos+1] != 'X') - || (p[nPos+2] < '0') || (p[nPos+3] < '0')) - { - break; - } - nPlugin = (p[nPos+2]-'0')*10 + (p[nPos+3]-'0'); - if ((nPlugin < MAX_MIXPLUGINS) && (nPluginSize >= sizeof(SNDMIXPLUGININFO)+4)) - { - DWORD dwExtra = bswapLE32(*(DWORD *)(p+nPos+8+sizeof(SNDMIXPLUGININFO))); - m_MixPlugins[nPlugin].Info = *(const SNDMIXPLUGININFO *)(p+nPos+8); - m_MixPlugins[nPlugin].Info.dwPluginId1 = bswapLE32(m_MixPlugins[nPlugin].Info.dwPluginId1); - m_MixPlugins[nPlugin].Info.dwPluginId2 = bswapLE32(m_MixPlugins[nPlugin].Info.dwPluginId2); - m_MixPlugins[nPlugin].Info.dwInputRouting = bswapLE32(m_MixPlugins[nPlugin].Info.dwInputRouting); - m_MixPlugins[nPlugin].Info.dwOutputRouting = bswapLE32(m_MixPlugins[nPlugin].Info.dwOutputRouting); - for (UINT j=0; j<4; j++) - { - m_MixPlugins[nPlugin].Info.dwReserved[j] = bswapLE32(m_MixPlugins[nPlugin].Info.dwReserved[j]); - } - if ((dwExtra) && (dwExtra <= nPluginSize-sizeof(SNDMIXPLUGININFO)-4)) - { - m_MixPlugins[nPlugin].nPluginDataSize = 0; - m_MixPlugins[nPlugin].pPluginData = new signed char [dwExtra]; - if (m_MixPlugins[nPlugin].pPluginData) - { - m_MixPlugins[nPlugin].nPluginDataSize = dwExtra; - memcpy(m_MixPlugins[nPlugin].pPluginData, p+nPos+8+sizeof(SNDMIXPLUGININFO)+4, dwExtra); - } - } - } - } - nPos += nPluginSize + 8; - } - return nPos; -} - diff -Nru audacious-plugins-2.4.4/src/modplug/load_mdl.cxx audacious-plugins-3.2/src/modplug/load_mdl.cxx --- audacious-plugins-2.4.4/src/modplug/load_mdl.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_mdl.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,538 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque -*/ - -////////////////////////////////////////////// -// DigiTracker (MDL) module loader // -////////////////////////////////////////////// -#include "stdafx.h" -#include "sndfile.h" - -//#pragma warning(disable:4244) - -typedef struct MDLSONGHEADER -{ - DWORD id; // "DMDL" = 0x4C444D44 - BYTE version; -} MDLSONGHEADER; - - -typedef struct MDLINFOBLOCK -{ - CHAR songname[32]; - CHAR composer[20]; - WORD norders; - WORD repeatpos; - BYTE globalvol; - BYTE speed; - BYTE tempo; - BYTE channelinfo[32]; - BYTE seq[256]; -} MDLINFOBLOCK; - - -typedef struct MDLPATTERNDATA -{ - BYTE channels; - BYTE lastrow; // nrows = lastrow+1 - CHAR name[16]; - WORD data[1]; -} MDLPATTERNDATA; - - -void ConvertMDLCommand(MODCOMMAND *m, UINT eff, UINT data) -//-------------------------------------------------------- -{ - UINT command = 0, param = data; - switch(eff) - { - case 0x01: command = CMD_PORTAMENTOUP; break; - case 0x02: command = CMD_PORTAMENTODOWN; break; - case 0x03: command = CMD_TONEPORTAMENTO; break; - case 0x04: command = CMD_VIBRATO; break; - case 0x05: command = CMD_ARPEGGIO; break; - case 0x07: command = (param < 0x20) ? CMD_SPEED : CMD_TEMPO; break; - case 0x08: command = CMD_PANNING8; param <<= 1; break; - case 0x0B: command = CMD_POSITIONJUMP; break; - case 0x0C: command = CMD_GLOBALVOLUME; break; - case 0x0D: command = CMD_PATTERNBREAK; param = (data & 0x0F) + (data>>4)*10; break; - case 0x0E: - command = CMD_S3MCMDEX; - switch(data & 0xF0) - { - case 0x00: command = 0; break; // What is E0x in MDL (there is a bunch) ? - case 0x10: if (param & 0x0F) { param |= 0xF0; command = CMD_PANNINGSLIDE; } else command = 0; break; - case 0x20: if (param & 0x0F) { param = (param << 4) | 0x0F; command = CMD_PANNINGSLIDE; } else command = 0; break; - case 0x30: param = (data & 0x0F) | 0x10; break; // glissando - case 0x40: param = (data & 0x0F) | 0x30; break; // vibrato waveform - case 0x60: param = (data & 0x0F) | 0xB0; break; - case 0x70: param = (data & 0x0F) | 0x40; break; // tremolo waveform - case 0x90: command = CMD_RETRIG; param &= 0x0F; break; - case 0xA0: param = (data & 0x0F) << 4; command = CMD_GLOBALVOLSLIDE; break; - case 0xB0: param = data & 0x0F; command = CMD_GLOBALVOLSLIDE; break; - case 0xF0: param = ((data >> 8) & 0x0F) | 0xA0; break; - } - break; - case 0x0F: command = CMD_SPEED; break; - - case 0x10: - if ((param & 0xF0) != 0xE0) { - command = CMD_VOLUMESLIDE; - if ((param & 0xF0) == 0xF0) { - param = ((param << 4) | 0x0F); - } else { - param >>= 2; - if (param > 0xF) - param = 0xF; - param <<= 4; - } - } - break; - case 0x20: - if ((param & 0xF0) != 0xE0) { - command = CMD_VOLUMESLIDE; - if ((param & 0xF0) != 0xF0) { - param >>= 2; - if (param > 0xF) - param = 0xF; - } - } - break; - - case 0x30: command = CMD_RETRIG; break; - case 0x40: command = CMD_TREMOLO; break; - case 0x50: command = CMD_TREMOR; break; - case 0xEF: if (param > 0xFF) param = 0xFF; command = CMD_OFFSET; break; - } - if (command) - { - m->command = command; - m->param = param; - } -} - - -void UnpackMDLTrack(MODCOMMAND *pat, UINT nChannels, UINT nRows, UINT nTrack, const BYTE *lpTracks) -//------------------------------------------------------------------------------------------------- -{ - MODCOMMAND cmd, *m = pat; - UINT len = *((WORD *)lpTracks); - UINT pos = 0, row = 0, i; - lpTracks += 2; - for (UINT ntrk=1; ntrk> 2; - switch(b & 0x03) - { - case 0x01: - for (i=0; i<=xx; i++) - { - if (row) *m = *(m-nChannels); - m += nChannels; - row++; - if (row >= nRows) break; - } - break; - - case 0x02: - if (xx < row) *m = pat[nChannels*xx]; - m += nChannels; - row++; - break; - - case 0x03: - { - cmd.note = (xx & 0x01) ? lpTracks[pos++] : 0; - cmd.instr = (xx & 0x02) ? lpTracks[pos++] : 0; - cmd.volcmd = cmd.vol = 0; - cmd.command = cmd.param = 0; - if ((cmd.note < 120-12) && (cmd.note)) cmd.note += 12; - UINT volume = (xx & 0x04) ? lpTracks[pos++] : 0; - UINT commands = (xx & 0x08) ? lpTracks[pos++] : 0; - UINT command1 = commands & 0x0F; - UINT command2 = commands & 0xF0; - UINT param1 = (xx & 0x10) ? lpTracks[pos++] : 0; - UINT param2 = (xx & 0x20) ? lpTracks[pos++] : 0; - if ((command1 == 0x0E) && ((param1 & 0xF0) == 0xF0) && (!command2)) - { - param1 = ((param1 & 0x0F) << 8) | param2; - command1 = 0xEF; - command2 = param2 = 0; - } - if (volume) - { - cmd.volcmd = VOLCMD_VOLUME; - cmd.vol = (volume+1) >> 2; - } - ConvertMDLCommand(&cmd, command1, param1); - if ((cmd.command != CMD_SPEED) - && (cmd.command != CMD_TEMPO) - && (cmd.command != CMD_PATTERNBREAK)) - ConvertMDLCommand(&cmd, command2, param2); - *m = cmd; - m += nChannels; - row++; - } - break; - - // Empty Slots - default: - row += xx+1; - m += (xx+1)*nChannels; - if (row >= nRows) break; - } - } -} - - - -BOOL CSoundFile::ReadMDL(const BYTE *lpStream, DWORD dwMemLength) -//--------------------------------------------------------------- -{ - DWORD dwMemPos, dwPos, blocklen, dwTrackPos; - const MDLSONGHEADER *pmsh = (const MDLSONGHEADER *)lpStream; - MDLINFOBLOCK *pmib; - MDLPATTERNDATA *pmpd; - UINT i,j, norders = 0, npatterns = 0, ntracks = 0; - UINT ninstruments = 0, nsamples = 0; - WORD block; - WORD patterntracks[MAX_PATTERNS*32]; - BYTE smpinfo[MAX_SAMPLES]; - BYTE insvolenv[MAX_INSTRUMENTS]; - BYTE inspanenv[MAX_INSTRUMENTS]; - LPCBYTE pvolenv, ppanenv, ppitchenv; - UINT nvolenv, npanenv, npitchenv; - - if ((!lpStream) || (dwMemLength < 1024)) return FALSE; - if ((bswapLE32(pmsh->id) != 0x4C444D44) || ((pmsh->version & 0xF0) > 0x10)) return FALSE; - memset(patterntracks, 0, sizeof(patterntracks)); - memset(smpinfo, 0, sizeof(smpinfo)); - memset(insvolenv, 0, sizeof(insvolenv)); - memset(inspanenv, 0, sizeof(inspanenv)); - dwMemPos = 5; - dwTrackPos = 0; - pvolenv = ppanenv = ppitchenv = NULL; - nvolenv = npanenv = npitchenv = 0; - m_nSamples = m_nInstruments = 0; - m_dwSongFlags |= SONG_INSTRUMENTMODE; - while (dwMemPos+6 < dwMemLength) - { - block = *((WORD *)(lpStream+dwMemPos)); - blocklen = *((DWORD *)(lpStream+dwMemPos+2)); - block = bswapLE16(block); - blocklen = bswapLE32(blocklen); - dwMemPos += 6; - if (dwMemPos + blocklen > dwMemLength) - { - if (dwMemPos == 11) return FALSE; - break; - } - switch(block) - { - // IN: infoblock - case 0x4E49: - pmib = (MDLINFOBLOCK *)(lpStream+dwMemPos); - memcpy(m_szNames[0], pmib->songname, 32); - norders = bswapLE16(pmib->norders); - if (norders > MAX_ORDERS) norders = MAX_ORDERS; - m_nRestartPos = bswapLE16(pmib->repeatpos); - m_nDefaultGlobalVolume = pmib->globalvol; - if (m_nDefaultGlobalVolume == 255) - m_nDefaultGlobalVolume++; - m_nDefaultTempo = pmib->tempo; - m_nDefaultSpeed = pmib->speed; - m_nChannels = 4; - for (i=0; i<32; i++) - { - ChnSettings[i].nVolume = 64; - ChnSettings[i].nPan = (pmib->channelinfo[i] & 0x7F) << 1; - if (pmib->channelinfo[i] & 0x80) - ChnSettings[i].dwFlags |= CHN_MUTE; - else - m_nChannels = i+1; - } - for (j=0; jseq[j]; - break; - // ME: song message - case 0x454D: - if (blocklen) - { - if (m_lpszSongComments) delete m_lpszSongComments; - m_lpszSongComments = new char[blocklen]; - if (m_lpszSongComments) - { - memcpy(m_lpszSongComments, lpStream+dwMemPos, blocklen); - m_lpszSongComments[blocklen-1] = 0; - } - } - break; - // PA: Pattern Data - case 0x4150: - npatterns = lpStream[dwMemPos]; - if (npatterns > MAX_PATTERNS) npatterns = MAX_PATTERNS; - dwPos = dwMemPos + 1; - for (i=0; i= dwMemLength) break; - pmpd = (MDLPATTERNDATA *)(lpStream + dwPos); - if (pmpd->channels > 32) break; - PatternSize[i] = pmpd->lastrow+1; - PatternAllocSize[i] = pmpd->lastrow+1; - if (m_nChannels < pmpd->channels) m_nChannels = pmpd->channels; - dwPos += 18 + 2*pmpd->channels; - for (j=0; jchannels; j++) - { - patterntracks[i*32+j] = bswapLE16(pmpd->data[j]); - } - } - break; - // TR: Track Data - case 0x5254: - if (dwTrackPos) break; - ntracks = *((WORD *)(lpStream+dwMemPos)); - ntracks = bswapLE16(ntracks); - dwTrackPos = dwMemPos+2; - break; - // II: Instruments - case 0x4949: - ninstruments = lpStream[dwMemPos]; - dwPos = dwMemPos+1; - for (i=0; i= MAX_INSTRUMENTS) || (!nins)) break; - if (m_nInstruments < nins) m_nInstruments = nins; - if (!Headers[nins]) - { - UINT note = 12; - if ((Headers[nins] = new INSTRUMENTHEADER) == NULL) break; - INSTRUMENTHEADER *penv = Headers[nins]; - memset(penv, 0, sizeof(INSTRUMENTHEADER)); - memcpy(penv->name, lpStream+dwPos+2, 32); - penv->nGlobalVol = 128; - penv->nPPC = 5*12; - for (j=0; jNoteMap[note] = note+1; - if (ps[0] < MAX_SAMPLES) - { - int ismp = ps[0]; - penv->Keyboard[note] = ps[0]; - Ins[ismp].nVolume = ps[2]; - Ins[ismp].nPan = ps[4] << 1; - Ins[ismp].nVibType = ps[11]; - Ins[ismp].nVibSweep = ps[10]; - Ins[ismp].nVibDepth = ps[9]; - Ins[ismp].nVibRate = ps[8]; - } - penv->nFadeOut = (ps[7] << 8) | ps[6]; - if (penv->nFadeOut == 0xFFFF) penv->nFadeOut = 0; - note++; - } - // Use volume envelope ? - if (ps[3] & 0x80) - { - penv->dwFlags |= ENV_VOLUME; - insvolenv[nins] = (ps[3] & 0x3F) + 1; - } - // Use panning envelope ? - if (ps[5] & 0x80) - { - penv->dwFlags |= ENV_PANNING; - inspanenv[nins] = (ps[5] & 0x3F) + 1; - } - } - } - dwPos += 34 + 14*lpStream[dwPos+1]; - } - for (j=1; j<=m_nInstruments; j++) if (!Headers[j]) - { - Headers[j] = new INSTRUMENTHEADER; - if (Headers[j]) memset(Headers[j], 0, sizeof(INSTRUMENTHEADER)); - } - break; - // VE: Volume Envelope - case 0x4556: - if ((nvolenv = lpStream[dwMemPos]) == 0) break; - if (dwMemPos + nvolenv*32 + 1 <= dwMemLength) pvolenv = lpStream + dwMemPos + 1; - break; - // PE: Panning Envelope - case 0x4550: - if ((npanenv = lpStream[dwMemPos]) == 0) break; - if (dwMemPos + npanenv*32 + 1 <= dwMemLength) ppanenv = lpStream + dwMemPos + 1; - break; - // FE: Pitch Envelope - case 0x4546: - if ((npitchenv = lpStream[dwMemPos]) == 0) break; - if (dwMemPos + npitchenv*32 + 1 <= dwMemLength) ppitchenv = lpStream + dwMemPos + 1; - break; - // IS: Sample Infoblock - case 0x5349: - nsamples = lpStream[dwMemPos]; - dwPos = dwMemPos+1; - for (i=0; i= MAX_SAMPLES) || (!nins)) continue; - if (m_nSamples < nins) m_nSamples = nins; - MODINSTRUMENT *pins = &Ins[nins]; - memcpy(m_szNames[nins], lpStream+dwPos+1, 32); - memcpy(pins->name, lpStream+dwPos+33, 8); - pins->nC4Speed = *((DWORD *)(lpStream+dwPos+41)); - pins->nC4Speed = bswapLE32(pins->nC4Speed); - pins->nLength = *((DWORD *)(lpStream+dwPos+45)); - pins->nLength = bswapLE32(pins->nLength); - pins->nLoopStart = *((DWORD *)(lpStream+dwPos+49)); - pins->nLoopStart = bswapLE32(pins->nLoopStart); - pins->nLoopEnd = pins->nLoopStart + *((DWORD *)(lpStream+dwPos+53)); - pins->nLoopEnd = bswapLE32(pins->nLoopEnd); - if (pins->nLoopEnd > pins->nLoopStart) pins->uFlags |= CHN_LOOP; - pins->nGlobalVol = 64; - if (lpStream[dwPos+58] & 0x01) - { - pins->uFlags |= CHN_16BIT; - pins->nLength >>= 1; - pins->nLoopStart >>= 1; - pins->nLoopEnd >>= 1; - } - if (lpStream[dwPos+58] & 0x02) pins->uFlags |= CHN_PINGPONGLOOP; - smpinfo[nins] = (lpStream[dwPos+58] >> 2) & 3; - } - break; - // SA: Sample Data - case 0x4153: - dwPos = dwMemPos; - for (i=1; i<=m_nSamples; i++) if ((Ins[i].nLength) && (!Ins[i].pSample) && (smpinfo[i] != 3) && (dwPos < dwMemLength)) - { - MODINSTRUMENT *pins = &Ins[i]; - UINT flags = (pins->uFlags & CHN_16BIT) ? RS_PCM16S : RS_PCM8S; - if (!smpinfo[i]) - { - dwPos += ReadSample(pins, flags, (LPSTR)(lpStream+dwPos), dwMemLength - dwPos); - } else - { - DWORD dwLen = *((DWORD *)(lpStream+dwPos)); - dwLen = bswapLE32(dwLen); - dwPos += 4; - if ((dwPos+dwLen <= dwMemLength) && (dwLen > 4)) - { - flags = (pins->uFlags & CHN_16BIT) ? RS_MDL16 : RS_MDL8; - ReadSample(pins, flags, (LPSTR)(lpStream+dwPos), dwLen); - } - dwPos += dwLen; - } - } - break; - } - dwMemPos += blocklen; - } - // Unpack Patterns - if ((dwTrackPos) && (npatterns) && (m_nChannels) && (ntracks)) - { - for (UINT ipat=0; ipatVolEnv.nNodes = 15; - for (UINT iv=0; iv<15; iv++) - { - if (iv) vtick += pve[iv*2+1]; - penv->VolEnv.Ticks[iv] = vtick; - penv->VolEnv.Values[iv] = pve[iv*2+2]; - if (!pve[iv*2+1]) - { - penv->VolEnv.nNodes = iv+1; - break; - } - } - penv->VolEnv.nSustainStart = penv->VolEnv.nSustainEnd = pve[31] & 0x0F; - if (pve[31] & 0x10) penv->dwFlags |= ENV_VOLSUSTAIN; - if (pve[31] & 0x20) penv->dwFlags |= ENV_VOLLOOP; - penv->VolEnv.nLoopStart = pve[32] & 0x0F; - penv->VolEnv.nLoopEnd = pve[32] >> 4; - } - } - // Setup panning envelope - if ((npanenv) && (ppanenv) && (inspanenv[iIns])) - { - LPCBYTE ppe = ppanenv; - for (UINT npe=0; npePanEnv.nNodes = 15; - for (UINT iv=0; iv<15; iv++) - { - if (iv) vtick += ppe[iv*2+1]; - penv->PanEnv.Ticks[iv] = vtick; - penv->PanEnv.Values[iv] = ppe[iv*2+2]; - if (!ppe[iv*2+1]) - { - penv->PanEnv.nNodes = iv+1; - break; - } - } - if (ppe[31] & 0x10) penv->dwFlags |= ENV_PANSUSTAIN; - if (ppe[31] & 0x20) penv->dwFlags |= ENV_PANLOOP; - penv->PanEnv.nLoopStart = ppe[32] & 0x0F; - penv->PanEnv.nLoopEnd = ppe[32] >> 4; - } - } - } - m_dwSongFlags |= SONG_LINEARSLIDES; - m_nType = MOD_TYPE_MDL; - return TRUE; -} - - -///////////////////////////////////////////////////////////////////////// -// MDL Sample Unpacking - -// MDL Huffman ReadBits compression -WORD MDLReadBits(DWORD &bitbuf, UINT &bitnum, LPBYTE &ibuf, CHAR n) -//----------------------------------------------------------------- -{ - WORD v = (WORD)(bitbuf & ((1 << n) - 1) ); - bitbuf >>= n; - bitnum -= n; - if (bitnum <= 24) - { - bitbuf |= (((DWORD)(*ibuf++)) << bitnum); - bitnum += 8; - } - return v; -} - - diff -Nru audacious-plugins-2.4.4/src/modplug/load_med.cxx audacious-plugins-3.2/src/modplug/load_med.cxx --- audacious-plugins-2.4.4/src/modplug/load_med.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_med.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,919 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque , - * Adam Goode (endian and char fixes for PPC) -*/ - -#include "stdafx.h" -#include "sndfile.h" - -//#define MED_LOG - -#ifdef MED_LOG -extern void Log(LPCSTR s, ...); -#endif - -////////////////////////////////////////////////////////// -// OctaMed MED file support (import only) - -// flags -#define MMD_FLAG_FILTERON 0x1 -#define MMD_FLAG_JUMPINGON 0x2 -#define MMD_FLAG_JUMP8TH 0x4 -#define MMD_FLAG_INSTRSATT 0x8 // instruments are attached (this is a module) -#define MMD_FLAG_VOLHEX 0x10 -#define MMD_FLAG_STSLIDE 0x20 // SoundTracker mode for slides -#define MMD_FLAG_8CHANNEL 0x40 // OctaMED 8 channel song -#define MMD_FLAG_SLOWHQ 0x80 // HQ slows playing speed (V2-V4 compatibility) -// flags2 -#define MMD_FLAG2_BMASK 0x1F -#define MMD_FLAG2_BPM 0x20 -#define MMD_FLAG2_MIX 0x80 // uses Mixing (V7+) -// flags3: -#define MMD_FLAG3_STEREO 0x1 // mixing in Stereo mode -#define MMD_FLAG3_FREEPAN 0x2 // free panning -#define MMD_FLAG3_GM 0x4 // module designed for GM/XG compatibility - - -// generic MMD tags -#define MMDTAG_END 0 -#define MMDTAG_PTR 0x80000000 // data needs relocation -#define MMDTAG_MUSTKNOW 0x40000000 // loader must fail if this isn't recognized -#define MMDTAG_MUSTWARN 0x20000000 // loader must warn if this isn't recognized - -// ExpData tags -// # of effect groups, including the global group (will -// override settings in MMDSong struct), default = 1 -#define MMDTAG_EXP_NUMFXGROUPS 1 -#define MMDTAG_TRK_NAME (MMDTAG_PTR|1) // trackinfo tags -#define MMDTAG_TRK_NAMELEN 2 // namelen includes zero term. -#define MMDTAG_TRK_FXGROUP 3 -// effectinfo tags -#define MMDTAG_FX_ECHOTYPE 1 -#define MMDTAG_FX_ECHOLEN 2 -#define MMDTAG_FX_ECHODEPTH 3 -#define MMDTAG_FX_STEREOSEP 4 -#define MMDTAG_FX_GROUPNAME (MMDTAG_PTR|5) // the Global Effects group shouldn't have name saved! -#define MMDTAG_FX_GRPNAMELEN 6 // namelen includes zero term. - -#pragma pack(1) - -typedef struct tagMEDMODULEHEADER -{ - DWORD id; // MMD1-MMD3 - DWORD modlen; // Size of file - DWORD song; // Position in file for this song - WORD psecnum; - WORD pseq; - DWORD blockarr; // Position in file for blocks - DWORD mmdflags; - DWORD smplarr; // Position in file for samples - DWORD reserved; - DWORD expdata; // Absolute offset in file for ExpData (0 if not present) - DWORD reserved2; - WORD pstate; - WORD pblock; - WORD pline; - WORD pseqnum; - WORD actplayline; - BYTE counter; - BYTE extra_songs; // # of songs - 1 -} MEDMODULEHEADER; - - -typedef struct tagMMD0SAMPLE -{ - WORD rep, replen; - BYTE midich; - BYTE midipreset; - BYTE svol; - signed char strans; -} MMD0SAMPLE; - - -// Sample header is immediately followed by sample data... -typedef struct tagMMDSAMPLEHEADER -{ - DWORD length; // length of *one* *unpacked* channel in *bytes* - WORD type; - // if non-negative - // bits 0-3 reserved for multi-octave instruments, not supported on the PC - // 0x10: 16 bit (otherwise 8 bit) - // 0x20: Stereo (otherwise mono) - // 0x40: Uses DeltaCode - // 0x80: Packed data - // -1: Synth - // -2: Hybrid - // if type indicates packed data, these fields follow, otherwise we go right to the data - WORD packtype; // Only 1 = ADPCM is supported - WORD subtype; // Packing subtype - // ADPCM subtype - // 1: g723_40 - // 2: g721 - // 3: g723_24 - BYTE commonflags; // flags common to all packtypes (none defined so far) - BYTE packerflags; // flags for the specific packtype - ULONG leftchlen; // packed length of left channel in bytes - ULONG rightchlen; // packed length of right channel in bytes (ONLY PRESENT IN STEREO SAMPLES) - BYTE SampleData[1]; // Sample Data -} MMDSAMPLEHEADER; - - -// MMD0/MMD1 song header -typedef struct tagMMD0SONGHEADER -{ - MMD0SAMPLE sample[63]; - WORD numblocks; // # of blocks - WORD songlen; // # of entries used in playseq - BYTE playseq[256]; // Play sequence - WORD deftempo; // BPM tempo - signed char playtransp; // Play transpose - BYTE flags; // 0x10: Hex Volumes | 0x20: ST/NT/PT Slides | 0x40: 8 Channels song - BYTE flags2; // [b4-b0]+1: Tempo LPB, 0x20: tempo mode, 0x80: mix_conv=on - BYTE tempo2; // tempo TPL - BYTE trkvol[16]; // track volumes - BYTE mastervol; // master volume - BYTE numsamples; // # of samples (max=63) -} MMD0SONGHEADER; - - -// MMD2/MMD3 song header -typedef struct tagMMD2SONGHEADER -{ - MMD0SAMPLE sample[63]; - WORD numblocks; // # of blocks - WORD numsections; // # of sections - DWORD playseqtable; // filepos of play sequence - DWORD sectiontable; // filepos of sections table (WORD array) - DWORD trackvols; // filepos of tracks volume (BYTE array) - WORD numtracks; // # of tracks (max 64) - WORD numpseqs; // # of play sequences - DWORD trackpans; // filepos of tracks pan values (BYTE array) - LONG flags3; // 0x1:stereo_mix, 0x2:free_panning, 0x4:GM/XG compatibility - WORD voladj; // vol_adjust (set to 100 if 0) - WORD channels; // # of channels (4 if =0) - BYTE mix_echotype; // 1:normal,2:xecho - BYTE mix_echodepth; // 1..6 - WORD mix_echolen; // > 0 - signed char mix_stereosep; // -4..4 - BYTE pad0[223]; - WORD deftempo; // BPM tempo - signed char playtransp; // play transpose - BYTE flags; // 0x1:filteron, 0x2:jumpingon, 0x4:jump8th, 0x8:instr_attached, 0x10:hex_vol, 0x20:PT_slides, 0x40:8ch_conv,0x80:hq slows playing speed - BYTE flags2; // 0x80:mix_conv=on, [b4-b0]+1:tempo LPB, 0x20:tempo_mode - BYTE tempo2; // tempo TPL - BYTE pad1[16]; - BYTE mastervol; // master volume - BYTE numsamples; // # of samples (max 63) -} MMD2SONGHEADER; - -// For MMD0 the note information is held in 3 bytes, byte0, byte1, byte2. For reference we -// number the bits in each byte 0..7, where 0 is the low bit. -// The note is held as bits 5..0 of byte0 -// The instrument is encoded in 6 bits, bits 7 and 6 of byte0 and bits 7,6,5,4 of byte1 -// The command number is bits 3,2,1,0 of byte1, command data is in byte2: -// For command 0, byte2 represents the second data byte, otherwise byte2 -// represents the first data byte. -typedef struct tagMMD0BLOCK -{ - BYTE numtracks; - BYTE lines; // File value is 1 less than actual, so 0 -> 1 line -} MMD0BLOCK; // BYTE data[lines+1][tracks][3]; - - -// For MMD1,MMD2,MMD3 the note information is carried in 4 bytes, byte0, byte1, -// byte2 and byte3 -// The note is held as byte0 (values above 0x84 are ignored) -// The instrument is held as byte1 -// The command number is held as byte2, command data is in byte3 -// For commands 0 and 0x19 byte3 represents the second data byte, -// otherwise byte2 represents the first data byte. -typedef struct tagMMD1BLOCK -{ - WORD numtracks; // Number of tracks, may be > 64, but then that data is skipped. - WORD lines; // Stored value is 1 less than actual, so 0 -> 1 line - DWORD info; // Offset of BlockInfo (if 0, no block_info is present) -} MMD1BLOCK; - - -typedef struct tagMMD1BLOCKINFO -{ - DWORD hlmask; // Unimplemented - ignore - DWORD blockname; // file offset of block name - DWORD blocknamelen; // length of block name (including term. 0) - DWORD pagetable; // file offset of command page table - DWORD cmdexttable; // file offset of command extension table - DWORD reserved[4]; // future expansion -} MMD1BLOCKINFO; - - -// A set of play sequences is stored as an array of ULONG files offsets -// Each offset points to the play sequence itself. -typedef struct tagMMD2PLAYSEQ -{ - CHAR name[32]; - DWORD command_offs; // filepos of command table - DWORD reserved; - WORD length; - WORD seq[512]; // skip if > 0x8000 -} MMD2PLAYSEQ; - - -// A command table contains commands that effect a particular play sequence -// entry. The only commands read in are STOP or POSJUMP, all others are ignored -// POSJUMP is presumed to have extra bytes containing a WORD for the position -typedef struct tagMMDCOMMAND -{ - WORD offset; // Offset within current sequence entry - BYTE cmdnumber; // STOP (537) or POSJUMP (538) (others skipped) - BYTE extra_count; - BYTE extra_bytes[4];// [extra_count]; -} MMDCOMMAND; // Last entry has offset == 0xFFFF, cmd_number == 0 and 0 extrabytes - - -typedef struct tagMMD0EXP -{ - DWORD nextmod; // File offset of next Hdr - DWORD exp_smp; // Pointer to extra instrument data - WORD s_ext_entries; // Number of extra instrument entries - WORD s_ext_entrsz; // Size of extra instrument data - DWORD annotxt; - DWORD annolen; - DWORD iinfo; // Instrument names - WORD i_ext_entries; - WORD i_ext_entrsz; - DWORD jumpmask; - DWORD rgbtable; - BYTE channelsplit[4]; // Only used if 8ch_conv (extra channel for every nonzero entry) - DWORD n_info; - DWORD songname; // Song name - DWORD songnamelen; - DWORD dumps; - DWORD mmdinfo; - DWORD mmdrexx; - DWORD mmdcmd3x; - DWORD trackinfo_ofs; // ptr to song->numtracks ptrs to tag lists - DWORD effectinfo_ofs; // ptr to group ptrs - DWORD tag_end; -} MMD0EXP; - -#pragma pack() - - - -static void MedConvert(MODCOMMAND *p, const MMD0SONGHEADER *pmsh) -//--------------------------------------------------------------- -{ - const BYTE bpmvals[9] = { 179,164,152,141,131,123,116,110,104}; - - UINT command = p->command; - UINT param = p->param; - switch(command) - { - case 0x00: if (param) command = CMD_ARPEGGIO; else command = 0; break; - case 0x01: command = CMD_PORTAMENTOUP; break; - case 0x02: command = CMD_PORTAMENTODOWN; break; - case 0x03: command = CMD_TONEPORTAMENTO; break; - case 0x04: command = CMD_VIBRATO; break; - case 0x05: command = CMD_TONEPORTAVOL; break; - case 0x06: command = CMD_VIBRATOVOL; break; - case 0x07: command = CMD_TREMOLO; break; - case 0x0A: if (param & 0xF0) param &= 0xF0; command = CMD_VOLUMESLIDE; if (!param) command = 0; break; - case 0x0B: command = CMD_POSITIONJUMP; break; - case 0x0C: command = CMD_VOLUME; - if (pmsh->flags & MMD_FLAG_VOLHEX) - { - if (param < 0x80) - { - param = (param+1) / 2; - } else command = 0; - } else - { - if (param <= 0x99) - { - param = (param >> 4)*10+((param & 0x0F) % 10); - if (param > 64) param = 64; - } else command = 0; - } - break; - case 0x09: command = (param < 0x20) ? CMD_SPEED : CMD_TEMPO; break; - case 0x0D: if (param & 0xF0) param &= 0xF0; command = CMD_VOLUMESLIDE; if (!param) command = 0; break; - case 0x0F: // Set Tempo / Special - // F.00 = Pattern Break - if (!param) command = CMD_PATTERNBREAK; else - // F.01 - F.F0: Set tempo/speed - if (param <= 0xF0) - { - if (pmsh->flags & MMD_FLAG_8CHANNEL) - { - param = (param > 10) ? 99 : bpmvals[param-1]; - } else - // F.01 - F.0A: Set Speed - if (param <= 0x0A) - { - command = CMD_SPEED; - } else - // Old tempo - if (!(pmsh->flags2 & MMD_FLAG2_BPM)) - { - param = _muldiv(param, 5*715909, 2*474326); - } - // F.0B - F.F0: Set Tempo (assumes LPB=4) - if (param > 0x0A) - { - command = CMD_TEMPO; - if (param < 0x21) param = 0x21; - if (param > 240) param = 240; - } - } else - switch(param) - { - // F.F1: Retrig 2x - case 0xF1: - command = CMD_MODCMDEX; - param = 0x93; - break; - // F.F2: Note Delay 2x - case 0xF2: - command = CMD_MODCMDEX; - param = 0xD3; - break; - // F.F3: Retrig 3x - case 0xF3: - command = CMD_MODCMDEX; - param = 0x92; - break; - // F.F4: Note Delay 1/3 - case 0xF4: - command = CMD_MODCMDEX; - param = 0xD2; - break; - // F.F5: Note Delay 2/3 - case 0xF5: - command = CMD_MODCMDEX; - param = 0xD4; - break; - // F.F8: Filter Off - case 0xF8: - command = CMD_MODCMDEX; - param = 0x00; - break; - // F.F9: Filter On - case 0xF9: - command = CMD_MODCMDEX; - param = 0x01; - break; - // F.FD: Very fast tone-portamento - case 0xFD: - command = CMD_TONEPORTAMENTO; - param = 0xFF; - break; - // F.FE: End Song - case 0xFE: - command = CMD_SPEED; - param = 0; - break; - // F.FF: Note Cut - case 0xFF: - command = CMD_MODCMDEX; - param = 0xC0; - break; - default: -#ifdef MED_LOG - Log("Unknown Fxx command: cmd=0x%02X param=0x%02X\n", command, param); -#endif - param = command = 0; - } - break; - // 11.0x: Fine Slide Up - case 0x11: - command = CMD_MODCMDEX; - if (param > 0x0F) param = 0x0F; - param |= 0x10; - break; - // 12.0x: Fine Slide Down - case 0x12: - command = CMD_MODCMDEX; - if (param > 0x0F) param = 0x0F; - param |= 0x20; - break; - // 14.xx: Vibrato - case 0x14: - command = CMD_VIBRATO; - break; - // 15.xx: FineTune - case 0x15: - command = CMD_MODCMDEX; - param &= 0x0F; - param |= 0x50; - break; - // 16.xx: Pattern Loop - case 0x16: - command = CMD_MODCMDEX; - if (param > 0x0F) param = 0x0F; - param |= 0x60; - break; - // 18.xx: Note Cut - case 0x18: - command = CMD_MODCMDEX; - if (param > 0x0F) param = 0x0F; - param |= 0xC0; - break; - // 19.xx: Sample Offset - case 0x19: - command = CMD_OFFSET; - break; - // 1A.0x: Fine Volume Up - case 0x1A: - command = CMD_MODCMDEX; - if (param > 0x0F) param = 0x0F; - param |= 0xA0; - break; - // 1B.0x: Fine Volume Down - case 0x1B: - command = CMD_MODCMDEX; - if (param > 0x0F) param = 0x0F; - param |= 0xB0; - break; - // 1D.xx: Pattern Break - case 0x1D: - command = CMD_PATTERNBREAK; - break; - // 1E.0x: Pattern Delay - case 0x1E: - command = CMD_MODCMDEX; - if (param > 0x0F) param = 0x0F; - param |= 0xE0; - break; - // 1F.xy: Retrig - case 0x1F: - command = CMD_RETRIG; - param &= 0x0F; - break; - // 2E.xx: set panning - case 0x2E: - command = CMD_MODCMDEX; - param = ((param + 0x10) & 0xFF) >> 1; - if (param > 0x0F) param = 0x0F; - param |= 0x80; - break; - default: -#ifdef MED_LOG - // 0x2E ? - Log("Unknown command: cmd=0x%02X param=0x%02X\n", command, param); -#endif - command = param = 0; - } - p->command = command; - p->param = param; -} - - -BOOL CSoundFile::ReadMed(const BYTE *lpStream, DWORD dwMemLength) -//--------------------------------------------------------------- -{ - const MEDMODULEHEADER *pmmh; - const MMD0SONGHEADER *pmsh; - const MMD2SONGHEADER *pmsh2; - const MMD0EXP *pmex; - DWORD dwBlockArr, dwSmplArr, dwExpData, wNumBlocks; - LPDWORD pdwTable; - CHAR version; - UINT deftempo; - int playtransp = 0; - - if ((!lpStream) || (dwMemLength < 0x200)) return FALSE; - pmmh = (MEDMODULEHEADER *)lpStream; - if (((pmmh->id & 0x00FFFFFF) != 0x444D4D) || (!pmmh->song)) return FALSE; - // Check for 'MMDx' - DWORD dwSong = bswapBE32(pmmh->song); - if ((dwSong >= dwMemLength) || (dwSong + sizeof(MMD0SONGHEADER) >= dwMemLength)) return FALSE; - version = (signed char)((pmmh->id >> 24) & 0xFF); - if ((version < '0') || (version > '3')) return FALSE; -#ifdef MED_LOG - Log("\nLoading MMD%c module (flags=0x%02X)...\n", version, bswapBE32(pmmh->mmdflags)); - Log(" modlen = %d\n", bswapBE32(pmmh->modlen)); - Log(" song = 0x%08X\n", bswapBE32(pmmh->song)); - Log(" psecnum = %d\n", bswapBE16(pmmh->psecnum)); - Log(" pseq = %d\n", bswapBE16(pmmh->pseq)); - Log(" blockarr = 0x%08X\n", bswapBE32(pmmh->blockarr)); - Log(" mmdflags = 0x%08X\n", bswapBE32(pmmh->mmdflags)); - Log(" smplarr = 0x%08X\n", bswapBE32(pmmh->smplarr)); - Log(" reserved = 0x%08X\n", bswapBE32(pmmh->reserved)); - Log(" expdata = 0x%08X\n", bswapBE32(pmmh->expdata)); - Log(" reserved2= 0x%08X\n", bswapBE32(pmmh->reserved2)); - Log(" pstate = %d\n", bswapBE16(pmmh->pstate)); - Log(" pblock = %d\n", bswapBE16(pmmh->pblock)); - Log(" pline = %d\n", bswapBE16(pmmh->pline)); - Log(" pseqnum = %d\n", bswapBE16(pmmh->pseqnum)); - Log(" actplayline=%d\n", bswapBE16(pmmh->actplayline)); - Log(" counter = %d\n", pmmh->counter); - Log(" extra_songs = %d\n", pmmh->extra_songs); - Log("\n"); -#endif - m_nType = MOD_TYPE_MED; - m_nSongPreAmp = 0x20; - dwBlockArr = bswapBE32(pmmh->blockarr); - dwSmplArr = bswapBE32(pmmh->smplarr); - dwExpData = bswapBE32(pmmh->expdata); - if ((dwExpData) && (dwExpData+sizeof(MMD0EXP) < dwMemLength)) - pmex = (MMD0EXP *)(lpStream+dwExpData); - else - pmex = NULL; - pmsh = (MMD0SONGHEADER *)(lpStream + dwSong); - pmsh2 = (MMD2SONGHEADER *)pmsh; -#ifdef MED_LOG - if (version < '2') - { - Log("MMD0 Header:\n"); - Log(" numblocks = %d\n", bswapBE16(pmsh->numblocks)); - Log(" songlen = %d\n", bswapBE16(pmsh->songlen)); - Log(" playseq = "); - for (UINT idbg1=0; idbg1<16; idbg1++) Log("%2d, ", pmsh->playseq[idbg1]); - Log("...\n"); - Log(" deftempo = 0x%04X\n", bswapBE16(pmsh->deftempo)); - Log(" playtransp = %d\n", (signed char)pmsh->playtransp); - Log(" flags(1,2) = 0x%02X, 0x%02X\n", pmsh->flags, pmsh->flags2); - Log(" tempo2 = %d\n", pmsh->tempo2); - Log(" trkvol = "); - for (UINT idbg2=0; idbg2<16; idbg2++) Log("0x%02X, ", pmsh->trkvol[idbg2]); - Log("...\n"); - Log(" mastervol = 0x%02X\n", pmsh->mastervol); - Log(" numsamples = %d\n", pmsh->numsamples); - } else - { - Log("MMD2 Header:\n"); - Log(" numblocks = %d\n", bswapBE16(pmsh2->numblocks)); - Log(" numsections= %d\n", bswapBE16(pmsh2->numsections)); - Log(" playseqptr = 0x%04X\n", bswapBE32(pmsh2->playseqtable)); - Log(" sectionptr = 0x%04X\n", bswapBE32(pmsh2->sectiontable)); - Log(" trackvols = 0x%04X\n", bswapBE32(pmsh2->trackvols)); - Log(" numtracks = %d\n", bswapBE16(pmsh2->numtracks)); - Log(" numpseqs = %d\n", bswapBE16(pmsh2->numpseqs)); - Log(" trackpans = 0x%04X\n", bswapBE32(pmsh2->trackpans)); - Log(" flags3 = 0x%08X\n", bswapBE32(pmsh2->flags3)); - Log(" voladj = %d\n", bswapBE16(pmsh2->voladj)); - Log(" channels = %d\n", bswapBE16(pmsh2->channels)); - Log(" echotype = %d\n", pmsh2->mix_echotype); - Log(" echodepth = %d\n", pmsh2->mix_echodepth); - Log(" echolen = %d\n", bswapBE16(pmsh2->mix_echolen)); - Log(" stereosep = %d\n", (signed char)pmsh2->mix_stereosep); - Log(" deftempo = 0x%04X\n", bswapBE16(pmsh2->deftempo)); - Log(" playtransp = %d\n", (signed char)pmsh2->playtransp); - Log(" flags(1,2) = 0x%02X, 0x%02X\n", pmsh2->flags, pmsh2->flags2); - Log(" tempo2 = %d\n", pmsh2->tempo2); - Log(" mastervol = 0x%02X\n", pmsh2->mastervol); - Log(" numsamples = %d\n", pmsh->numsamples); - } - Log("\n"); -#endif - wNumBlocks = bswapBE16(pmsh->numblocks); - m_nChannels = 4; - m_nSamples = pmsh->numsamples; - if (m_nSamples > 63) m_nSamples = 63; - m_nStereoSeparation = ((pmsh2->mix_stereosep < 0) ? -32 : 32) * pmsh2->mix_stereosep; - // Tempo - m_nDefaultTempo = 125; - deftempo = bswapBE16(pmsh->deftempo); - if (!deftempo) deftempo = 125; - if (pmsh->flags2 & MMD_FLAG2_BPM) - { - UINT tempo_tpl = (pmsh->flags2 & MMD_FLAG2_BMASK) + 1; - if (!tempo_tpl) tempo_tpl = 4; - deftempo *= tempo_tpl; - deftempo /= 4; - #ifdef MED_LOG - Log("newtempo: %3d bpm (bpm=%3d lpb=%2d)\n", deftempo, bswapBE16(pmsh->deftempo), (pmsh->flags2 & MMD_FLAG2_BMASK)+1); - #endif - } else - { - deftempo = _muldiv(deftempo, 5*715909, 2*474326); - #ifdef MED_LOG - Log("oldtempo: %3d bpm (bpm=%3d)\n", deftempo, bswapBE16(pmsh->deftempo)); - #endif - } - // Speed - m_nDefaultSpeed = pmsh->tempo2; - if (!m_nDefaultSpeed) m_nDefaultSpeed = 6; - if (deftempo < 0x21) deftempo = 0x21; - if (deftempo > 255) - { - while ((m_nDefaultSpeed > 3) && (deftempo > 260)) - { - deftempo = (deftempo * (m_nDefaultSpeed - 1)) / m_nDefaultSpeed; - m_nDefaultSpeed--; - } - if (deftempo > 255) deftempo = 255; - } - m_nDefaultTempo = deftempo; - // Reading Samples - for (UINT iSHdr=0; iSHdrnLoopStart = bswapBE16(pmsh->sample[iSHdr].rep) << 1; - pins->nLoopEnd = pins->nLoopStart + (bswapBE16(pmsh->sample[iSHdr].replen) << 1); - pins->nVolume = (pmsh->sample[iSHdr].svol << 2); - pins->nGlobalVol = 64; - if (pins->nVolume > 256) pins->nVolume = 256; - pins->RelativeTone = -12 * pmsh->sample[iSHdr].strans; - pins->nPan = 128; - if (pins->nLoopEnd) pins->uFlags |= CHN_LOOP; - } - // Common Flags - if (!(pmsh->flags & 0x20)) m_dwSongFlags |= SONG_FASTVOLSLIDES; - // Reading play sequence - if (version < '2') - { - UINT nbo = pmsh->songlen >> 8; - if (nbo >= MAX_ORDERS) nbo = MAX_ORDERS-1; - if (!nbo) nbo = 1; - memcpy(Order, pmsh->playseq, nbo); - playtransp = pmsh->playtransp; - } else - { - UINT nOrders, nSections; - UINT nTrks = bswapBE16(pmsh2->numtracks); - if ((nTrks >= 4) && (nTrks <= 32)) m_nChannels = nTrks; - DWORD playseqtable = bswapBE32(pmsh2->playseqtable); - UINT numplayseqs = bswapBE16(pmsh2->numpseqs); - if (!numplayseqs) numplayseqs = 1; - nOrders = 0; - nSections = bswapBE16(pmsh2->numsections); - DWORD sectiontable = bswapBE32(pmsh2->sectiontable); - if ((!nSections) || (!sectiontable) || (sectiontable >= dwMemLength-2)) nSections = 1; - nOrders = 0; - for (UINT iSection=0; iSectionname, 31); - UINT n = bswapBE16(pmps->length); - if (pseq+n <= dwMemLength) - { - for (UINT i=0; iseq[i] >> 8; - if ((seqval < wNumBlocks) && (nOrders < MAX_ORDERS-1)) - { - Order[nOrders++] = seqval; - } - } - } - } - } - playtransp = pmsh2->playtransp; - while (nOrders < MAX_ORDERS) Order[nOrders++] = 0xFF; - } - // Reading Expansion structure - if (pmex) - { - // Channel Split - if ((m_nChannels == 4) && (pmsh->flags & 0x40)) - { - for (UINT i8ch=0; i8ch<4; i8ch++) - { - if (pmex->channelsplit[i8ch]) m_nChannels++; - } - } - // Song Comments - UINT annotxt = bswapBE32(pmex->annotxt); - UINT annolen = bswapBE32(pmex->annolen); - if ((annotxt) && (annolen) && (annotxt+annolen <= dwMemLength)) - { - m_lpszSongComments = new char[annolen+1]; - memcpy(m_lpszSongComments, lpStream+annotxt, annolen); - m_lpszSongComments[annolen] = 0; - } - // Song Name - UINT songname = bswapBE32(pmex->songname); - UINT songnamelen = bswapBE32(pmex->songnamelen); - if ((songname) && (songnamelen) && (songname+songnamelen <= dwMemLength)) - { - if (songnamelen > 31) songnamelen = 31; - memcpy(m_szNames[0], lpStream+songname, songnamelen); - } - // Sample Names - DWORD smpinfoex = bswapBE32(pmex->iinfo); - if (smpinfoex) - { - DWORD iinfoptr = bswapBE32(pmex->iinfo); - UINT ientries = bswapBE16(pmex->i_ext_entries); - UINT ientrysz = bswapBE16(pmex->i_ext_entrsz); - - if ((iinfoptr) && (ientrysz < 256) && (iinfoptr + ientries*ientrysz < dwMemLength)) - { - LPCSTR psznames = (LPCSTR)(lpStream + iinfoptr); - UINT maxnamelen = ientrysz; - if (maxnamelen > 32) maxnamelen = 32; - for (UINT i=0; itrackinfo_ofs); - if ((trackinfo_ofs) && (trackinfo_ofs + m_nChannels * 4 < dwMemLength)) - { - DWORD *ptrktags = (DWORD *)(lpStream + trackinfo_ofs); - for (UINT i=0; i MAX_CHANNELNAME) trknamelen = MAX_CHANNELNAME; - if ((trknameofs) && (trknameofs + trknamelen < dwMemLength)) - { - lstrcpyn(ChnSettings[i].szName, (LPCSTR)(lpStream+trknameofs), MAX_CHANNELNAME); - } - } - } - } - } - // Reading samples - if (dwSmplArr > dwMemLength - 4*m_nSamples) return TRUE; - pdwTable = (LPDWORD)(lpStream + dwSmplArr); - for (UINT iSmp=0; iSmp= dwMemLength) || (dwPos + sizeof(MMDSAMPLEHEADER) >= dwMemLength)) continue; - MMDSAMPLEHEADER *psdh = (MMDSAMPLEHEADER *)(lpStream + dwPos); - UINT len = bswapBE32(psdh->length); - #ifdef MED_LOG - Log("SampleData %d: stype=0x%02X len=%d\n", iSmp, bswapBE16(psdh->type), len); - #endif - if ((len > MAX_SAMPLE_LENGTH) || (dwPos + len + 6 > dwMemLength)) len = 0; - UINT flags = RS_PCM8S, stype = bswapBE16(psdh->type); - LPSTR psdata = (LPSTR)(lpStream + dwPos + 6); - if (stype & 0x80) - { - psdata += (stype & 0x20) ? 14 : 6; - } else - { - if (stype & 0x10) - { - Ins[iSmp+1].uFlags |= CHN_16BIT; - len /= 2; - flags = (stype & 0x20) ? RS_STPCM16M : RS_PCM16M; - } else - { - flags = (stype & 0x20) ? RS_STPCM8S : RS_PCM8S; - } - if (stype & 0x20) len /= 2; - } - Ins[iSmp+1].nLength = len; - ReadSample(&Ins[iSmp+1], flags, psdata, dwMemLength - dwPos - 6); - } - // Reading patterns (blocks) - if (wNumBlocks > MAX_PATTERNS) wNumBlocks = MAX_PATTERNS; - if ((!dwBlockArr) || (dwBlockArr > dwMemLength - 4*wNumBlocks)) return TRUE; - pdwTable = (LPDWORD)(lpStream + dwBlockArr); - playtransp += (version == '3') ? 24 : 48; - for (UINT iBlk=0; iBlk= dwMemLength) || (dwPos >= dwMemLength - 8)) continue; - UINT lines = 64, tracks = 4; - if (version == '0') - { - const MMD0BLOCK *pmb = (const MMD0BLOCK *)(lpStream + dwPos); - lines = pmb->lines + 1; - tracks = pmb->numtracks; - if (!tracks) tracks = m_nChannels; - if ((Patterns[iBlk] = AllocatePattern(lines, m_nChannels)) == NULL) continue; - PatternSize[iBlk] = lines; - PatternAllocSize[iBlk] = lines; - MODCOMMAND *p = Patterns[iBlk]; - LPBYTE s = (LPBYTE)(lpStream + dwPos + 2); - UINT maxlen = tracks*lines*3; - if (maxlen + dwPos > dwMemLength - 2) break; - for (UINT y=0; y> 4; - if (s[0] & 0x80) instr |= 0x10; - if (s[0] & 0x40) instr |= 0x20; - if ((note) && (note <= 132)) p->note = note + playtransp; - p->instr = instr; - p->command = s[1] & 0x0F; - p->param = s[2]; - // if (!iBlk) Log("%02X.%02X.%02X | ", s[0], s[1], s[2]); - MedConvert(p, pmsh); - p++; - } - //if (!iBlk) Log("\n"); - } - } else - { - MMD1BLOCK *pmb = (MMD1BLOCK *)(lpStream + dwPos); - #ifdef MED_LOG - Log("MMD1BLOCK: lines=%2d, tracks=%2d, offset=0x%04X\n", - bswapBE16(pmb->lines), bswapBE16(pmb->numtracks), bswapBE32(pmb->info)); - #endif - MMD1BLOCKINFO *pbi = NULL; - BYTE *pcmdext = NULL; - lines = (pmb->lines >> 8) + 1; - tracks = pmb->numtracks >> 8; - if (!tracks) tracks = m_nChannels; - if ((Patterns[iBlk] = AllocatePattern(lines, m_nChannels)) == NULL) continue; - PatternSize[iBlk] = (WORD)lines; - PatternAllocSize[iBlk] = (WORD)lines; - DWORD dwBlockInfo = bswapBE32(pmb->info); - if ((dwBlockInfo) && (dwBlockInfo < dwMemLength - sizeof(MMD1BLOCKINFO))) - { - pbi = (MMD1BLOCKINFO *)(lpStream + dwBlockInfo); - #ifdef MED_LOG - Log(" BLOCKINFO: blockname=0x%04X namelen=%d pagetable=0x%04X &cmdexttable=0x%04X\n", - bswapBE32(pbi->blockname), bswapBE32(pbi->blocknamelen), bswapBE32(pbi->pagetable), bswapBE32(pbi->cmdexttable)); - #endif - if ((pbi->blockname) && (pbi->blocknamelen)) - { - DWORD nameofs = bswapBE32(pbi->blockname); - UINT namelen = bswapBE32(pbi->blocknamelen); - if ((nameofs < dwMemLength) && (nameofs+namelen < dwMemLength)) - { - SetPatternName(iBlk, (LPCSTR)(lpStream+nameofs)); - } - } - if (pbi->cmdexttable) - { - DWORD cmdexttable = bswapBE32(pbi->cmdexttable); - if (cmdexttable < dwMemLength - 4) - { - cmdexttable = bswapBE32(*(DWORD *)(lpStream + cmdexttable)); - if ((cmdexttable) && (cmdexttable <= dwMemLength - lines*tracks)) - { - pcmdext = (BYTE *)(lpStream + cmdexttable); - } - } - } - } - MODCOMMAND *p = Patterns[iBlk]; - LPBYTE s = (LPBYTE)(lpStream + dwPos + 8); - UINT maxlen = tracks*lines*4; - if (maxlen + dwPos > dwMemLength - 8) break; - for (UINT y=0; y 120) rnote = 120; - p->note = (BYTE)rnote; - } - p->instr = s[1]; - p->command = s[2]; - p->param = s[3]; - if (pcmdext) p->vol = pcmdext[x]; - MedConvert(p, pmsh); - p++; - } - if (pcmdext) pcmdext += tracks; - } - } - } - // Setup channel pan positions - for (UINT iCh=0; iCh, - * Adam Goode (endian and char fixes for PPC) -*/ - -#include "stdafx.h" -#include "sndfile.h" - -//#pragma warning(disable:4244) - -extern WORD ProTrackerPeriodTable[6*12]; - -////////////////////////////////////////////////////////// -// ProTracker / NoiseTracker MOD/NST file support - -void CSoundFile::ConvertModCommand(MODCOMMAND *m) const -//----------------------------------------------------- -{ - UINT command = m->command, param = m->param; - - switch(command) - { - case 0x00: if (param) command = CMD_ARPEGGIO; break; - case 0x01: command = CMD_PORTAMENTOUP; break; - case 0x02: command = CMD_PORTAMENTODOWN; break; - case 0x03: command = CMD_TONEPORTAMENTO; break; - case 0x04: command = CMD_VIBRATO; break; - case 0x05: command = CMD_TONEPORTAVOL; if (param & 0xF0) param &= 0xF0; break; - case 0x06: command = CMD_VIBRATOVOL; if (param & 0xF0) param &= 0xF0; break; - case 0x07: command = CMD_TREMOLO; break; - case 0x08: command = CMD_PANNING8; break; - case 0x09: command = CMD_OFFSET; break; - case 0x0A: command = CMD_VOLUMESLIDE; if (param & 0xF0) param &= 0xF0; break; - case 0x0B: command = CMD_POSITIONJUMP; break; - case 0x0C: command = CMD_VOLUME; break; - case 0x0D: command = CMD_PATTERNBREAK; param = ((param >> 4) * 10) + (param & 0x0F); break; - case 0x0E: command = CMD_MODCMDEX; break; - case 0x0F: command = (param <= (UINT)((m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) ? 0x1F : 0x20)) ? CMD_SPEED : CMD_TEMPO; - if ((param == 0xFF) && (m_nSamples == 15)) command = 0; break; - // Extension for XM extended effects - case 'G' - 55: command = CMD_GLOBALVOLUME; break; - case 'H' - 55: command = CMD_GLOBALVOLSLIDE; if (param & 0xF0) param &= 0xF0; break; - case 'K' - 55: command = CMD_KEYOFF; break; - case 'L' - 55: command = CMD_SETENVPOSITION; break; - case 'M' - 55: command = CMD_CHANNELVOLUME; break; - case 'N' - 55: command = CMD_CHANNELVOLSLIDE; break; - case 'P' - 55: command = CMD_PANNINGSLIDE; if (param & 0xF0) param &= 0xF0; break; - case 'R' - 55: command = CMD_RETRIG; break; - case 'T' - 55: command = CMD_TREMOR; break; - case 'X' - 55: command = CMD_XFINEPORTAUPDOWN; break; - case 'Y' - 55: command = CMD_PANBRELLO; break; - case 'Z' - 55: command = CMD_MIDI; break; - default: command = 0; - } - m->command = command; - m->param = param; -} - - -WORD CSoundFile::ModSaveCommand(const MODCOMMAND *m, BOOL bXM) const -//------------------------------------------------------------------ -{ - UINT command = m->command & 0x3F, param = m->param; - - switch(command) - { - case 0: command = param = 0; break; - case CMD_ARPEGGIO: command = 0; break; - case CMD_PORTAMENTOUP: - if (m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT|MOD_TYPE_STM)) - { - if ((param & 0xF0) == 0xE0) { command=0x0E; param=((param & 0x0F) >> 2)|0x10; break; } - else if ((param & 0xF0) == 0xF0) { command=0x0E; param &= 0x0F; param|=0x10; break; } - } - command = 0x01; - break; - case CMD_PORTAMENTODOWN: - if (m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT|MOD_TYPE_STM)) - { - if ((param & 0xF0) == 0xE0) { command=0x0E; param=((param & 0x0F) >> 2)|0x20; break; } - else if ((param & 0xF0) == 0xF0) { command=0x0E; param &= 0x0F; param|=0x20; break; } - } - command = 0x02; - break; - case CMD_TONEPORTAMENTO: command = 0x03; break; - case CMD_VIBRATO: command = 0x04; break; - case CMD_TONEPORTAVOL: command = 0x05; break; - case CMD_VIBRATOVOL: command = 0x06; break; - case CMD_TREMOLO: command = 0x07; break; - case CMD_PANNING8: - command = 0x08; - if (bXM) - { - if ((m_nType != MOD_TYPE_IT) && (m_nType != MOD_TYPE_XM) && (param <= 0x80)) - { - param <<= 1; - if (param > 255) param = 255; - } - } else - { - if ((m_nType == MOD_TYPE_IT) || (m_nType == MOD_TYPE_XM)) param >>= 1; - } - break; - case CMD_OFFSET: command = 0x09; break; - case CMD_VOLUMESLIDE: command = 0x0A; break; - case CMD_POSITIONJUMP: command = 0x0B; break; - case CMD_VOLUME: command = 0x0C; break; - case CMD_PATTERNBREAK: command = 0x0D; param = ((param / 10) << 4) | (param % 10); break; - case CMD_MODCMDEX: command = 0x0E; break; - case CMD_SPEED: command = 0x0F; if (param > 0x20) param = 0x20; break; - case CMD_TEMPO: if (param > 0x20) { command = 0x0F; break; } return 0; - case CMD_GLOBALVOLUME: command = 'G' - 55; break; - case CMD_GLOBALVOLSLIDE: command = 'H' - 55; break; - case CMD_KEYOFF: command = 'K' - 55; break; - case CMD_SETENVPOSITION: command = 'L' - 55; break; - case CMD_CHANNELVOLUME: command = 'M' - 55; break; - case CMD_CHANNELVOLSLIDE: command = 'N' - 55; break; - case CMD_PANNINGSLIDE: command = 'P' - 55; break; - case CMD_RETRIG: command = 'R' - 55; break; - case CMD_TREMOR: command = 'T' - 55; break; - case CMD_XFINEPORTAUPDOWN: command = 'X' - 55; break; - case CMD_PANBRELLO: command = 'Y' - 55; break; - case CMD_MIDI: command = 'Z' - 55; break; - case CMD_S3MCMDEX: - switch(param & 0xF0) - { - case 0x10: command = 0x0E; param = (param & 0x0F) | 0x30; break; - case 0x20: command = 0x0E; param = (param & 0x0F) | 0x50; break; - case 0x30: command = 0x0E; param = (param & 0x0F) | 0x40; break; - case 0x40: command = 0x0E; param = (param & 0x0F) | 0x70; break; - case 0x90: command = 'X' - 55; break; - case 0xB0: command = 0x0E; param = (param & 0x0F) | 0x60; break; - case 0xA0: - case 0x50: - case 0x70: - case 0x60: command = param = 0; break; - default: command = 0x0E; break; - } - break; - default: command = param = 0; - } - return (WORD)((command << 8) | (param)); -} - - -#pragma pack(1) - -typedef struct _MODSAMPLE -{ - CHAR name[22]; - WORD length; - BYTE finetune; - BYTE volume; - WORD loopstart; - WORD looplen; -} MODSAMPLE, *PMODSAMPLE; - -typedef struct _MODMAGIC -{ - BYTE nOrders; - BYTE nRestartPos; - BYTE Orders[128]; - char Magic[4]; // changed from CHAR -} MODMAGIC, *PMODMAGIC; - -#pragma pack() - -BOOL IsMagic(LPCSTR s1, LPCSTR s2) -{ - return ((*(DWORD *)s1) == (*(DWORD *)s2)) ? TRUE : FALSE; -} - - -BOOL CSoundFile::ReadMod(const BYTE *lpStream, DWORD dwMemLength) -//--------------------------------------------------------------- -{ - char s[1024]; // changed from CHAR - DWORD dwMemPos, dwTotalSampleLen; - PMODMAGIC pMagic; - UINT nErr; - - if ((!lpStream) || (dwMemLength < 0x600)) return FALSE; - dwMemPos = 20; - m_nSamples = 31; - m_nChannels = 4; - pMagic = (PMODMAGIC)(lpStream+dwMemPos+sizeof(MODSAMPLE)*31); - // Check Mod Magic - memcpy(s, pMagic->Magic, 4); - if ((IsMagic(s, "M.K.")) || (IsMagic(s, "M!K!")) - || (IsMagic(s, "M&K!")) || (IsMagic(s, "N.T."))) m_nChannels = 4; else - if ((IsMagic(s, "CD81")) || (IsMagic(s, "OKTA"))) m_nChannels = 8; else - if ((s[0]=='F') && (s[1]=='L') && (s[2]=='T') && (s[3]>='4') && (s[3]<='9')) m_nChannels = s[3] - '0'; else - if ((s[0]>='4') && (s[0]<='9') && (s[1]=='C') && (s[2]=='H') && (s[3]=='N')) m_nChannels = s[0] - '0'; else - if ((s[0]=='1') && (s[1]>='0') && (s[1]<='9') && (s[2]=='C') && (s[3]=='H')) m_nChannels = s[1] - '0' + 10; else - if ((s[0]=='2') && (s[1]>='0') && (s[1]<='9') && (s[2]=='C') && (s[3]=='H')) m_nChannels = s[1] - '0' + 20; else - if ((s[0]=='3') && (s[1]>='0') && (s[1]<='2') && (s[2]=='C') && (s[3]=='H')) m_nChannels = s[1] - '0' + 30; else - if ((s[0]=='T') && (s[1]=='D') && (s[2]=='Z') && (s[3]>='4') && (s[3]<='9')) m_nChannels = s[3] - '0'; else - if (IsMagic(s,"16CN")) m_nChannels = 16; else - if (IsMagic(s,"32CN")) m_nChannels = 32; else m_nSamples = 15; - // Load Samples - nErr = 0; - dwTotalSampleLen = 0; - for (UINT i=1; i<=m_nSamples; i++) - { - PMODSAMPLE pms = (PMODSAMPLE)(lpStream+dwMemPos); - MODINSTRUMENT *psmp = &Ins[i]; - UINT loopstart, looplen; - - memcpy(m_szNames[i], pms->name, 22); - m_szNames[i][22] = 0; - psmp->uFlags = 0; - psmp->nLength = bswapBE16(pms->length)*2; - dwTotalSampleLen += psmp->nLength; - psmp->nFineTune = MOD2XMFineTune(pms->finetune & 0x0F); - psmp->nVolume = 4*pms->volume; - if (psmp->nVolume > 256) { psmp->nVolume = 256; nErr++; } - psmp->nGlobalVol = 64; - psmp->nPan = 128; - loopstart = bswapBE16(pms->loopstart)*2; - looplen = bswapBE16(pms->looplen)*2; - // Fix loops - if ((looplen > 2) && (loopstart+looplen > psmp->nLength) - && (loopstart/2+looplen <= psmp->nLength)) - { - loopstart /= 2; - } - psmp->nLoopStart = loopstart; - psmp->nLoopEnd = loopstart + looplen; - if (psmp->nLength < 2) psmp->nLength = 0; - if (psmp->nLength) - { - UINT derr = 0; - if (psmp->nLoopStart >= psmp->nLength) { psmp->nLoopStart = psmp->nLength-1; derr|=1; } - if (psmp->nLoopEnd > psmp->nLength) { psmp->nLoopEnd = psmp->nLength; derr |= 1; } - if (psmp->nLoopStart > psmp->nLoopEnd) derr |= 1; - if (psmp->nLoopEnd > psmp->nLoopStart) - { - psmp->uFlags |= CHN_LOOP; - } - } - dwMemPos += sizeof(MODSAMPLE); - } - if ((m_nSamples == 15) && (dwTotalSampleLen > dwMemLength * 4)) return FALSE; - pMagic = (PMODMAGIC)(lpStream+dwMemPos); - dwMemPos += sizeof(MODMAGIC); - if (m_nSamples == 15) dwMemPos -= 4; - memset(Order, 0,sizeof(Order)); - memcpy(Order, pMagic->Orders, 128); - - UINT nbp, nbpbuggy, nbpbuggy2, norders; - - norders = pMagic->nOrders; - if ((!norders) || (norders > 0x80)) - { - norders = 0x80; - while ((norders > 1) && (!Order[norders-1])) norders--; - } - nbpbuggy = 0; - nbpbuggy2 = 0; - nbp = 0; - for (UINT iord=0; iord<128; iord++) - { - UINT i = Order[iord]; - if ((i < 0x80) && (nbp <= i)) - { - nbp = i+1; - if (iord= nbpbuggy2) nbpbuggy2 = i+1; - } - for (UINT iend=norders; iendnRestartPos; - if (m_nRestartPos >= 0x78) m_nRestartPos = 0; - if (m_nRestartPos + 1 >= (UINT)norders) m_nRestartPos = 0; - if (!nbp) return FALSE; - DWORD dwWowTest = dwTotalSampleLen+dwMemPos; - if ((IsMagic(pMagic->Magic, "M.K.")) && (dwWowTest + nbp*8*256 == dwMemLength)) m_nChannels = 8; - if ((nbp != nbpbuggy) && (dwWowTest + nbp*m_nChannels*256 != dwMemLength)) - { - if (dwWowTest + nbpbuggy*m_nChannels*256 == dwMemLength) nbp = nbpbuggy; - else nErr += 8; - } else - if ((nbpbuggy2 > nbp) && (dwWowTest + nbpbuggy2*m_nChannels*256 == dwMemLength)) - { - nbp = nbpbuggy2; - } - if ((dwWowTest < 0x600) || (dwWowTest > dwMemLength)) nErr += 8; - if ((m_nSamples == 15) && (nErr >= 16)) return FALSE; - // Default settings - m_nType = MOD_TYPE_MOD; - m_nDefaultSpeed = 6; - m_nDefaultTempo = 125; - m_nMinPeriod = 14 << 2; - m_nMaxPeriod = 3424 << 2; - memcpy(m_szNames, lpStream, 20); - // Setting channels pan - for (UINT ich=0; ich= dwMemLength) break; - MODCOMMAND *m = Patterns[ipat]; - LPCBYTE p = lpStream + dwMemPos; - for (UINT j=m_nChannels*64; j; m++,p+=4,j--) - { - BYTE A0=p[0], A1=p[1], A2=p[2], A3=p[3]; - UINT n = ((((UINT)A0 & 0x0F) << 8) | (A1)); - if ((n) && (n != 0xFFF)) m->note = GetNoteFromPeriod(n << 2); - m->instr = ((UINT)A2 >> 4) | (A0 & 0x10); - m->command = A2 & 0x0F; - m->param = A3; - if ((m->command) || (m->param)) ConvertModCommand(m); - } - } - dwMemPos += m_nChannels*256; - } - // Reading instruments - DWORD dwErrCheck = 0; - for (UINT ismp=1; ismp<=m_nSamples; ismp++) if (Ins[ismp].nLength) - { - LPSTR p = (LPSTR)(lpStream+dwMemPos); - UINT flags = 0; - if (dwMemPos + 5 >= dwMemLength) break; - if (!strnicmp(p, "ADPCM", 5)) - { - flags = 3; - p += 5; - dwMemPos += 5; - } - DWORD dwSize = ReadSample(&Ins[ismp], flags, p, dwMemLength - dwMemPos); - if (dwSize) - { - dwMemPos += dwSize; - dwErrCheck++; - } - } -#ifdef MODPLUG_TRACKER - return TRUE; -#else - return (dwErrCheck) ? TRUE : FALSE; -#endif -} - - diff -Nru audacious-plugins-2.4.4/src/modplug/load_mt2.cxx audacious-plugins-3.2/src/modplug/load_mt2.cxx --- audacious-plugins-2.4.4/src/modplug/load_mt2.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_mt2.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,637 +0,0 @@ -#include "stdafx.h" -#include "sndfile.h" - -//#define MT2DEBUG - -#pragma pack(1) - -typedef struct _MT2FILEHEADER -{ - DWORD dwMT20; // 0x3032544D "MT20" - DWORD dwSpecial; - WORD wVersion; - CHAR szTrackerName[32]; // "MadTracker 2.0" - CHAR szSongName[64]; - WORD nOrders; - WORD wRestart; - WORD wPatterns; - WORD wChannels; - WORD wSamplesPerTick; - BYTE bTicksPerLine; - BYTE bLinesPerBeat; - DWORD fulFlags; // b0=packed patterns - WORD wInstruments; - WORD wSamples; - BYTE Orders[256]; -} MT2FILEHEADER; - -typedef struct _MT2PATTERN -{ - WORD wLines; - DWORD wDataLen; -} MT2PATTERN; - -typedef struct _MT2COMMAND -{ - BYTE note; // 0=nothing, 97=note off - BYTE instr; - BYTE vol; - BYTE pan; - BYTE fxcmd; - BYTE fxparam1; - BYTE fxparam2; -} MT2COMMAND; - -typedef struct _MT2DRUMSDATA -{ - WORD wDrumPatterns; - WORD wDrumSamples[8]; - BYTE DrumPatternOrder[256]; -} MT2DRUMSDATA; - -typedef struct _MT2AUTOMATION -{ - DWORD dwFlags; - DWORD dwEffectId; - DWORD nEnvPoints; -} MT2AUTOMATION; - -typedef struct _MT2INSTRUMENT -{ - CHAR szName[32]; - DWORD dwDataLen; - WORD wSamples; - BYTE GroupsMapping[96]; - BYTE bVibType; - BYTE bVibSweep; - BYTE bVibDepth; - BYTE bVibRate; - WORD wFadeOut; - WORD wNNA; - WORD wInstrFlags; - WORD wEnvFlags1; - WORD wEnvFlags2; -} MT2INSTRUMENT; - -typedef struct _MT2ENVELOPE -{ - BYTE nFlags; - BYTE nPoints; - BYTE nSustainPos; - BYTE nLoopStart; - BYTE nLoopEnd; - BYTE bReserved[3]; - BYTE EnvData[64]; -} MT2ENVELOPE; - -typedef struct _MT2SYNTH -{ - BYTE nSynthId; - BYTE nFxId; - WORD wCutOff; - BYTE nResonance; - BYTE nAttack; - BYTE nDecay; - BYTE bReserved[25]; -} MT2SYNTH; - -typedef struct _MT2SAMPLE -{ - CHAR szName[32]; - DWORD dwDataLen; - DWORD dwLength; - DWORD dwFrequency; - BYTE nQuality; - BYTE nChannels; - BYTE nFlags; - BYTE nLoop; - DWORD dwLoopStart; - DWORD dwLoopEnd; - WORD wVolume; - BYTE nPan; - BYTE nBaseNote; - WORD wSamplesPerBeat; -} MT2SAMPLE; - -typedef struct _MT2GROUP -{ - BYTE nSmpNo; - BYTE nVolume; // 0-128 - BYTE nFinePitch; - BYTE Reserved[5]; -} MT2GROUP; - -#pragma pack() - - -static VOID ConvertMT2Command(CSoundFile *that, MODCOMMAND *m, MT2COMMAND *p) -//--------------------------------------------------------------------------- -{ - // Note - m->note = 0; - if (p->note) m->note = (p->note > 96) ? 0xFF : p->note+12; - // Instrument - m->instr = p->instr; - // Volume Column - if ((p->vol >= 0x10) && (p->vol <= 0x90)) - { - m->volcmd = VOLCMD_VOLUME; - m->vol = (p->vol - 0x10) >> 1; - } else - if ((p->vol >= 0xA0) && (p->vol <= 0xAF)) - { - m->volcmd = VOLCMD_VOLSLIDEDOWN; - m->vol = (p->vol & 0x0f); - } else - if ((p->vol >= 0xB0) && (p->vol <= 0xBF)) - { - m->volcmd = VOLCMD_VOLSLIDEUP; - m->vol = (p->vol & 0x0f); - } else - if ((p->vol >= 0xC0) && (p->vol <= 0xCF)) - { - m->volcmd = VOLCMD_FINEVOLDOWN; - m->vol = (p->vol & 0x0f); - } else - if ((p->vol >= 0xD0) && (p->vol <= 0xDF)) - { - m->volcmd = VOLCMD_FINEVOLUP; - m->vol = (p->vol & 0x0f); - } else - { - m->volcmd = 0; - m->vol = 0; - } - // Effects - m->command = 0; - m->param = 0; - if ((p->fxcmd) || (p->fxparam1) || (p->fxparam2)) - { - if (!p->fxcmd) - { - m->command = p->fxparam2; - m->param = p->fxparam1; - that->ConvertModCommand(m); - } else - { - // TODO: MT2 Effects - } - } -} - - -BOOL CSoundFile::ReadMT2(LPCBYTE lpStream, DWORD dwMemLength) -//----------------------------------------------------------- -{ - MT2FILEHEADER *pfh = (MT2FILEHEADER *)lpStream; - DWORD dwMemPos, dwDrumDataPos, dwExtraDataPos; - UINT nDrumDataLen, nExtraDataLen; - MT2DRUMSDATA *pdd; - MT2INSTRUMENT *InstrMap[255]; - MT2SAMPLE *SampleMap[256]; - - if ((!lpStream) || (dwMemLength < sizeof(MT2FILEHEADER)) - || (pfh->dwMT20 != 0x3032544D) - || (pfh->wVersion < 0x0200) || (pfh->wVersion >= 0x0300) - || (pfh->wChannels < 4) || (pfh->wChannels > 64)) return FALSE; - pdd = NULL; - m_nType = MOD_TYPE_MT2; - m_nChannels = pfh->wChannels; - m_nRestartPos = pfh->wRestart; - m_nDefaultSpeed = pfh->bTicksPerLine; - m_nDefaultTempo = 125; - if ((pfh->wSamplesPerTick > 100) && (pfh->wSamplesPerTick < 5000)) - { - m_nDefaultTempo = 110250 / pfh->wSamplesPerTick; - } - for (UINT iOrd=0; iOrdnOrders) ? pfh->Orders[iOrd] : 0xFF); - } - memcpy(m_szNames[0], pfh->szSongName, 32); - m_szNames[0][31] = 0; - dwMemPos = sizeof(MT2FILEHEADER); - nDrumDataLen = *(WORD *)(lpStream + dwMemPos); - dwDrumDataPos = dwMemPos + 2; - if (nDrumDataLen >= 2) pdd = (MT2DRUMSDATA *)(lpStream+dwDrumDataPos); - dwMemPos += 2 + nDrumDataLen; -#ifdef MT2DEBUG - - Log("MT2 v%03X: \"%s\" (flags=%04X)\n", pfh->wVersion, m_szNames[0], pfh->fulFlags); - Log("%d Channels, %d Patterns, %d Instruments, %d Samples\n", pfh->wChannels, pfh->wPatterns, pfh->wInstruments, pfh->wSamples); - Log("Drum Data: %d bytes @%04X\n", nDrumDataLen, dwDrumDataPos); -#endif - if (dwMemPos >= dwMemLength-12) return TRUE; - if (!*(DWORD *)(lpStream+dwMemPos)) dwMemPos += 4; - if (!*(DWORD *)(lpStream+dwMemPos)) dwMemPos += 4; - nExtraDataLen = *(DWORD *)(lpStream+dwMemPos); - dwExtraDataPos = dwMemPos + 4; - dwMemPos += 4; -#ifdef MT2DEBUG - Log("Extra Data: %d bytes @%04X\n", nExtraDataLen, dwExtraDataPos); -#endif - if (dwMemPos + nExtraDataLen >= dwMemLength) return TRUE; - while (dwMemPos+8 < dwExtraDataPos + nExtraDataLen) - { - DWORD dwId = *(DWORD *)(lpStream+dwMemPos); - DWORD dwLen = *(DWORD *)(lpStream+dwMemPos+4); - dwMemPos += 8; - if (dwMemPos + dwLen > dwMemLength) return TRUE; -#ifdef MT2DEBUG - CHAR s[5]; - memcpy(s, &dwId, 4); - s[4] = 0; - Log("pos=0x%04X: %s: %d bytes\n", dwMemPos-8, s, dwLen); -#endif - switch(dwId) - { - // MSG - case 0x0047534D: - if ((dwLen > 3) && (!m_lpszSongComments)) - { - DWORD nTxtLen = dwLen; - if (nTxtLen > 32000) nTxtLen = 32000; - m_lpszSongComments = new char[nTxtLen]; // changed from CHAR - if (m_lpszSongComments) - { - memcpy(m_lpszSongComments, lpStream+dwMemPos+1, nTxtLen-1); - m_lpszSongComments[nTxtLen-1] = 0; - } - } - break; - // SUM -> author name (or "Unregistered") - // TMAP - // TRKS - case 0x534b5254: - break; - } - dwMemPos += dwLen; - } - // Load Patterns - dwMemPos = dwExtraDataPos + nExtraDataLen; - for (UINT iPat=0; iPatwPatterns; iPat++) if (dwMemPos < dwMemLength-6) - { - MT2PATTERN *pmp = (MT2PATTERN *)(lpStream+dwMemPos); - UINT wDataLen = (pmp->wDataLen + 1) & ~1; - dwMemPos += 6; - if (dwMemPos + wDataLen > dwMemLength) break; - UINT nLines = pmp->wLines; - if ((iPat < MAX_PATTERNS) && (nLines > 0) && (nLines <= 256)) - { - #ifdef MT2DEBUG - Log("Pattern #%d @%04X: %d lines, %d bytes\n", iPat, dwMemPos-6, nLines, pmp->wDataLen); - #endif - PatternSize[iPat] = nLines; - PatternAllocSize[iPat] = nLines; - Patterns[iPat] = AllocatePattern(nLines, m_nChannels); - if (!Patterns[iPat]) return TRUE; - MODCOMMAND *m = Patterns[iPat]; - UINT len = wDataLen; - if (pfh->fulFlags & 1) // Packed Patterns - { - BYTE *p = (BYTE *)(lpStream+dwMemPos); - UINT pos = 0, row=0, ch=0; - while (pos < len) - { - MT2COMMAND cmd; - UINT infobyte = p[pos++]; - UINT rptcount = 0; - if (infobyte == 0xff) - { - rptcount = p[pos++]; - infobyte = p[pos++]; - #if 0 - Log("(%d.%d) FF(%02X).%02X\n", row, ch, rptcount, infobyte); - } else - { - Log("(%d.%d) %02X\n", row, ch, infobyte); - #endif - } - if (infobyte & 0x7f) - { - UINT patpos = row*m_nChannels+ch; - cmd.note = cmd.instr = cmd.vol = cmd.pan = cmd.fxcmd = cmd.fxparam1 = cmd.fxparam2 = 0; - if (infobyte & 1) cmd.note = p[pos++]; - if (infobyte & 2) cmd.instr = p[pos++]; - if (infobyte & 4) cmd.vol = p[pos++]; - if (infobyte & 8) cmd.pan = p[pos++]; - if (infobyte & 16) cmd.fxcmd = p[pos++]; - if (infobyte & 32) cmd.fxparam1 = p[pos++]; - if (infobyte & 64) cmd.fxparam2 = p[pos++]; - #ifdef MT2DEBUG - if (cmd.fxcmd) - { - Log("(%d.%d) MT2 FX=%02X.%02X.%02X\n", row, ch, cmd.fxcmd, cmd.fxparam1, cmd.fxparam2); - } - #endif - ConvertMT2Command(this, &m[patpos], &cmd); - } - row += rptcount+1; - while (row >= nLines) { row-=nLines; ch++; } - if (ch >= m_nChannels) break; - } - } else - { - MT2COMMAND *p = (MT2COMMAND *)(lpStream+dwMemPos); - UINT n = 0; - while ((len > sizeof(MT2COMMAND)) && (n < m_nChannels*nLines)) - { - ConvertMT2Command(this, m, p); - len -= sizeof(MT2COMMAND); - n++; - p++; - m++; - } - } - } - dwMemPos += wDataLen; - } - // Skip Drum Patterns - if (pdd) - { - #ifdef MT2DEBUG - Log("%d Drum Patterns at offset 0x%08X\n", pdd->wDrumPatterns, dwMemPos); - #endif - for (UINT iDrm=0; iDrmwDrumPatterns; iDrm++) - { - if (dwMemPos > dwMemLength-2) return TRUE; - UINT nLines = *(WORD *)(lpStream+dwMemPos); - #ifdef MT2DEBUG - if (nLines != 64) Log("Drum Pattern %d: %d Lines @%04X\n", iDrm, nLines, dwMemPos); - #endif - dwMemPos += 2 + nLines * 32; - } - } - // Automation - if (pfh->fulFlags & 2) - { - #ifdef MT2DEBUG - Log("Automation at offset 0x%08X\n", dwMemPos); - #endif - UINT nAutoCount = m_nChannels; - if (pfh->fulFlags & 0x10) nAutoCount++; // Master Automation - if ((pfh->fulFlags & 0x08) && (pdd)) nAutoCount += 8; // Drums Automation - nAutoCount *= pfh->wPatterns; - for (UINT iAuto=0; iAuto= dwMemLength) return TRUE; - MT2AUTOMATION *pma = (MT2AUTOMATION *)(lpStream+dwMemPos); - dwMemPos += (pfh->wVersion <= 0x201) ? 4 : 8; - for (UINT iEnv=0; iEnv<14; iEnv++) - { - if (pma->dwFlags & (1 << iEnv)) - { - #ifdef MT2DEBUG - UINT nPoints = *(DWORD *)(lpStream+dwMemPos); - Log(" Env[%d/%d] %04X @%04X: %d points\n", iAuto, nAutoCount, 1 << iEnv, dwMemPos-8, nPoints); - #endif - dwMemPos += 260; - } - } - } - } - // Load Instruments -#ifdef MT2DEBUG - Log("Loading instruments at offset 0x%08X\n", dwMemPos); -#endif - memset(InstrMap, 0, sizeof(InstrMap)); - m_nInstruments = (pfh->wInstruments < MAX_INSTRUMENTS) ? pfh->wInstruments : MAX_INSTRUMENTS-1; - m_dwSongFlags |= SONG_INSTRUMENTMODE; - for (UINT iIns=1; iIns<=255; iIns++) - { - if (dwMemPos+36 > dwMemLength) return TRUE; - MT2INSTRUMENT *pmi = (MT2INSTRUMENT *)(lpStream+dwMemPos); - INSTRUMENTHEADER *penv = NULL; - if (iIns <= m_nInstruments) - { - penv = new INSTRUMENTHEADER; - Headers[iIns] = penv; - if (penv) - { - memset(penv, 0, sizeof(INSTRUMENTHEADER)); - memcpy(penv->name, pmi->szName, 32); - penv->nGlobalVol = 128; - penv->nPan = 128; - for (UINT i=0; i<120; i++) - { - penv->NoteMap[i] = i+1; - } - } - } - #ifdef MT2DEBUG - if (iIns <= pfh->wInstruments) Log(" Instrument #%d at offset %04X: %d bytes\n", iIns, dwMemPos, pmi->dwDataLen); - #endif - if (((LONG)pmi->dwDataLen > 0) && (dwMemPos + pmi->dwDataLen + 40 <= dwMemLength)) - { - InstrMap[iIns-1] = pmi; - if (penv) - { - penv->nFadeOut = pmi->wFadeOut; - penv->nNNA = pmi->wNNA & 3; - penv->nDCT = (pmi->wNNA>>8) & 3; - penv->nDNA = (pmi->wNNA>>12) & 3; - MT2ENVELOPE *pehdr[4]; - WORD *pedata[4]; - if (pfh->wVersion <= 0x201) - { - DWORD dwEnvPos = dwMemPos + sizeof(MT2INSTRUMENT) - 4; - pehdr[0] = (MT2ENVELOPE *)(lpStream+dwEnvPos); - pehdr[1] = (MT2ENVELOPE *)(lpStream+dwEnvPos+8); - pehdr[2] = pehdr[3] = NULL; - pedata[0] = (WORD *)(lpStream+dwEnvPos+16); - pedata[1] = (WORD *)(lpStream+dwEnvPos+16+64); - pedata[2] = pedata[3] = NULL; - } else - { - DWORD dwEnvPos = dwMemPos + sizeof(MT2INSTRUMENT); - for (UINT i=0; i<4; i++) - { - if (pmi->wEnvFlags1 & (1<EnvData; - dwEnvPos += sizeof(MT2ENVELOPE); - } else - { - pehdr[i] = NULL; - pedata[i] = NULL; - } - } - } - // Load envelopes - for (UINT iEnv=0; iEnv<4; iEnv++) if (pehdr[iEnv]) - { - MT2ENVELOPE *pme = pehdr[iEnv]; - int *pEnvPoints = NULL; - BYTE *pEnvData = NULL; - #ifdef MT2DEBUG - Log(" Env %d.%d @%04X: %d points\n", iIns, iEnv, (UINT)(((BYTE *)pme)-lpStream), pme->nPoints); - #endif - switch(iEnv) - { - // Volume Envelope - case 0: - if (pme->nFlags & 1) penv->dwFlags |= ENV_VOLUME; - if (pme->nFlags & 2) penv->dwFlags |= ENV_VOLSUSTAIN; - if (pme->nFlags & 4) penv->dwFlags |= ENV_VOLLOOP; - penv->VolEnv.nNodes = (pme->nPoints > 16) ? 16 : pme->nPoints; - penv->VolEnv.nSustainStart = penv->VolEnv.nSustainEnd = pme->nSustainPos; - penv->VolEnv.nLoopStart = pme->nLoopStart; - penv->VolEnv.nLoopEnd = pme->nLoopEnd; - pEnvPoints = penv->VolEnv.Ticks; - pEnvData = penv->VolEnv.Values; - break; - - // Panning Envelope - case 1: - if (pme->nFlags & 1) penv->dwFlags |= ENV_PANNING; - if (pme->nFlags & 2) penv->dwFlags |= ENV_PANSUSTAIN; - if (pme->nFlags & 4) penv->dwFlags |= ENV_PANLOOP; - penv->PanEnv.nNodes = (pme->nPoints > 16) ? 16 : pme->nPoints; - penv->PanEnv.nSustainStart = penv->PanEnv.nSustainEnd = pme->nSustainPos; - penv->PanEnv.nLoopStart = pme->nLoopStart; - penv->PanEnv.nLoopEnd = pme->nLoopEnd; - pEnvPoints = penv->PanEnv.Ticks; - pEnvData = penv->PanEnv.Values; - break; - - // Pitch/Filter envelope - default: - if (pme->nFlags & 1) penv->dwFlags |= (iEnv==3) ? (ENV_PITCH|ENV_FILTER) : ENV_PITCH; - if (pme->nFlags & 2) penv->dwFlags |= ENV_PITCHSUSTAIN; - if (pme->nFlags & 4) penv->dwFlags |= ENV_PITCHLOOP; - penv->PitchEnv.nNodes = (pme->nPoints > 16) ? 16 : pme->nPoints; - penv->PitchEnv.nSustainStart = penv->PitchEnv.nSustainEnd = pme->nSustainPos; - penv->PitchEnv.nLoopStart = pme->nLoopStart; - penv->PitchEnv.nLoopEnd = pme->nLoopEnd; - pEnvPoints = penv->PitchEnv.Ticks; - pEnvData = penv->PitchEnv.Values; - } - // Envelope data - if ((pEnvPoints) && (pEnvData) && (pedata[iEnv])) - { - WORD *psrc = pedata[iEnv]; - for (UINT i=0; i<16; i++) - { - pEnvPoints[i] = psrc[i*2]; - pEnvData[i] = (BYTE)psrc[i*2+1]; - } - } - } - } - dwMemPos += pmi->dwDataLen + 36; - if (pfh->wVersion > 0x201) dwMemPos += 4; // ? - } else - { - dwMemPos += 36; - } - } -#ifdef MT2DEBUG - Log("Loading samples at offset 0x%08X\n", dwMemPos); -#endif - memset(SampleMap, 0, sizeof(SampleMap)); - m_nSamples = (pfh->wSamples < MAX_SAMPLES) ? pfh->wSamples : MAX_SAMPLES-1; - for (UINT iSmp=1; iSmp<=256; iSmp++) - { - if (dwMemPos+36 > dwMemLength) return TRUE; - MT2SAMPLE *pms = (MT2SAMPLE *)(lpStream+dwMemPos); - #ifdef MT2DEBUG - if (iSmp <= m_nSamples) Log(" Sample #%d at offset %04X: %d bytes\n", iSmp, dwMemPos, pms->dwDataLen); - #endif - if (iSmp < MAX_SAMPLES) - { - memcpy(m_szNames[iSmp], pms->szName, 32); - } - if (pms->dwDataLen > 0) - { - SampleMap[iSmp-1] = pms; - if (iSmp < MAX_SAMPLES) - { - MODINSTRUMENT *psmp = &Ins[iSmp]; - psmp->nGlobalVol = 64; - psmp->nVolume = (pms->wVolume >> 7); - psmp->nPan = (pms->nPan == 0x80) ? 128 : (pms->nPan^0x80); - psmp->nLength = pms->dwLength; - psmp->nC4Speed = pms->dwFrequency; - psmp->nLoopStart = pms->dwLoopStart; - psmp->nLoopEnd = pms->dwLoopEnd; - FrequencyToTranspose(psmp); - psmp->RelativeTone -= pms->nBaseNote - 49; - psmp->nC4Speed = TransposeToFrequency(psmp->RelativeTone, psmp->nFineTune); - if (pms->nQuality == 2) { psmp->uFlags |= CHN_16BIT; psmp->nLength >>= 1; } - if (pms->nChannels == 2) { psmp->nLength >>= 1; } - if (pms->nLoop == 1) psmp->uFlags |= CHN_LOOP; - if (pms->nLoop == 2) psmp->uFlags |= CHN_LOOP|CHN_PINGPONGLOOP; - } - dwMemPos += pms->dwDataLen + 36; - } else - { - dwMemPos += 36; - } - } -#ifdef MT2DEBUG - Log("Loading groups at offset 0x%08X\n", dwMemPos); -#endif - for (UINT iMap=0; iMap<255; iMap++) if (InstrMap[iMap]) - { - if (dwMemPos+8 > dwMemLength) return TRUE; - MT2INSTRUMENT *pmi = InstrMap[iMap]; - INSTRUMENTHEADER *penv = NULL; - if (iMapwSamples; iGrp++) - { - if (penv) - { - MT2GROUP *pmg = (MT2GROUP *)(lpStream+dwMemPos); - for (UINT i=0; i<96; i++) - { - if (pmi->GroupsMapping[i] == iGrp) - { - UINT nSmp = pmg->nSmpNo+1; - penv->Keyboard[i+12] = (BYTE)nSmp; - if (nSmp <= m_nSamples) - { - Ins[nSmp].nVibType = pmi->bVibType; - Ins[nSmp].nVibSweep = pmi->bVibSweep; - Ins[nSmp].nVibDepth = pmi->bVibDepth; - Ins[nSmp].nVibRate = pmi->bVibRate/4; - } - } - } - } - dwMemPos += 8; - } - } -#ifdef MT2DEBUG - Log("Loading sample data at offset 0x%08X\n", dwMemPos); -#endif - for (UINT iData=0; iData<256; iData++) if ((iData < m_nSamples) && (SampleMap[iData])) - { - MT2SAMPLE *pms = SampleMap[iData]; - MODINSTRUMENT *psmp = &Ins[iData+1]; - if (!(pms->nFlags & 5)) - { - if (psmp->nLength > 0) - { - #ifdef MT2DEBUG - Log(" Reading sample #%d at offset 0x%04X (len=%d)\n", iData+1, dwMemPos, psmp->nLength); - #endif - UINT rsflags; - - if (pms->nChannels == 2) - rsflags = (psmp->uFlags & CHN_16BIT) ? RS_STPCM16D : RS_STPCM8D; - else - rsflags = (psmp->uFlags & CHN_16BIT) ? RS_PCM16D : RS_PCM8D; - - dwMemPos += ReadSample(psmp, rsflags, (LPCSTR)(lpStream+dwMemPos), dwMemLength-dwMemPos); - } - } else - if (dwMemPos+4 < dwMemLength) - { - UINT nNameLen = *(DWORD *)(lpStream+dwMemPos); - dwMemPos += nNameLen + 16; - } - if (dwMemPos+4 >= dwMemLength) break; - } - return TRUE; -} diff -Nru audacious-plugins-2.4.4/src/modplug/load_mtm.cxx audacious-plugins-3.2/src/modplug/load_mtm.cxx --- audacious-plugins-2.4.4/src/modplug/load_mtm.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_mtm.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,165 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque -*/ - -#include "stdafx.h" -#include "sndfile.h" - -//#pragma warning(disable:4244) - -////////////////////////////////////////////////////////// -// MTM file support (import only) - -#pragma pack(1) - - -typedef struct tagMTMSAMPLE -{ - char samplename[22]; // changed from CHAR - DWORD length; - DWORD reppos; - DWORD repend; - CHAR finetune; - BYTE volume; - BYTE attribute; -} MTMSAMPLE; - - -typedef struct tagMTMHEADER -{ - char id[4]; // MTM file marker + version // changed from CHAR - char songname[20]; // ASCIIZ songname // changed from CHAR - WORD numtracks; // number of tracks saved - BYTE lastpattern; // last pattern number saved - BYTE lastorder; // last order number to play (songlength-1) - WORD commentsize; // length of comment field - BYTE numsamples; // number of samples saved - BYTE attribute; // attribute byte (unused) - BYTE beatspertrack; - BYTE numchannels; // number of channels used - BYTE panpos[32]; // voice pan positions -} MTMHEADER; - - -#pragma pack() - - -BOOL CSoundFile::ReadMTM(LPCBYTE lpStream, DWORD dwMemLength) -//----------------------------------------------------------- -{ - MTMHEADER *pmh = (MTMHEADER *)lpStream; - DWORD dwMemPos = 66; - - if ((!lpStream) || (dwMemLength < 0x100)) return FALSE; - if ((strncmp(pmh->id, "MTM", 3)) || (pmh->numchannels > 32) - || (pmh->numsamples >= MAX_SAMPLES) || (!pmh->numsamples) - || (!pmh->numtracks) || (!pmh->numchannels) - || (!pmh->lastpattern) || (pmh->lastpattern > MAX_PATTERNS)) return FALSE; - strncpy(m_szNames[0], pmh->songname, 20); - m_szNames[0][20] = 0; - if (dwMemPos + 37*pmh->numsamples + 128 + 192*bswapLE16(pmh->numtracks) - + 64 * (pmh->lastpattern+1) + bswapLE16(pmh->commentsize) >= dwMemLength) return FALSE; - m_nType = MOD_TYPE_MTM; - m_nSamples = pmh->numsamples; - m_nChannels = pmh->numchannels; - // Reading instruments - for (UINT i=1; i<=m_nSamples; i++) - { - MTMSAMPLE *pms = (MTMSAMPLE *)(lpStream + dwMemPos); - strncpy(m_szNames[i], pms->samplename, 22); - m_szNames[i][22] = 0; - Ins[i].nVolume = pms->volume << 2; - Ins[i].nGlobalVol = 64; - DWORD len = bswapLE32(pms->length); - if ((len > 4) && (len <= MAX_SAMPLE_LENGTH)) - { - Ins[i].nLength = len; - Ins[i].nLoopStart = bswapLE32(pms->reppos); - Ins[i].nLoopEnd = bswapLE32(pms->repend); - if (Ins[i].nLoopEnd > Ins[i].nLength) Ins[i].nLoopEnd = Ins[i].nLength; - if (Ins[i].nLoopStart + 4 >= Ins[i].nLoopEnd) Ins[i].nLoopStart = Ins[i].nLoopEnd = 0; - if (Ins[i].nLoopEnd) Ins[i].uFlags |= CHN_LOOP; - Ins[i].nFineTune = MOD2XMFineTune(pms->finetune); - if (pms->attribute & 0x01) - { - Ins[i].uFlags |= CHN_16BIT; - Ins[i].nLength >>= 1; - Ins[i].nLoopStart >>= 1; - Ins[i].nLoopEnd >>= 1; - } - Ins[i].nPan = 128; - } - dwMemPos += 37; - } - // Setting Channel Pan Position - for (UINT ich=0; ichpanpos[ich] & 0x0F) << 4) + 8; - ChnSettings[ich].nVolume = 64; - } - // Reading pattern order - memcpy(Order, lpStream + dwMemPos, pmh->lastorder+1); - dwMemPos += 128; - // Reading Patterns - LPCBYTE pTracks = lpStream + dwMemPos; - dwMemPos += 192 * bswapLE16(pmh->numtracks); - LPWORD pSeq = (LPWORD)(lpStream + dwMemPos); - for (UINT pat=0; pat<=pmh->lastpattern; pat++) - { - PatternSize[pat] = 64; - PatternAllocSize[pat] = 64; - if ((Patterns[pat] = AllocatePattern(64, m_nChannels)) == NULL) break; - for (UINT n=0; n<32; n++) if ((pSeq[n]) && (pSeq[n] <= bswapLE16(pmh->numtracks)) && (n < m_nChannels)) - { - LPCBYTE p = pTracks + 192 * (pSeq[n]-1); - MODCOMMAND *m = Patterns[pat] + n; - for (UINT i=0; i<64; i++, m+=m_nChannels, p+=3) - { - if (p[0] & 0xFC) m->note = (p[0] >> 2) + 37; - m->instr = ((p[0] & 0x03) << 4) | (p[1] >> 4); - UINT cmd = p[1] & 0x0F; - UINT param = p[2]; - if (cmd == 0x0A) - { - if (param & 0xF0) param &= 0xF0; else param &= 0x0F; - } - m->command = cmd; - m->param = param; - if ((cmd) || (param)) ConvertModCommand(m); - } - } - pSeq += 32; - } - dwMemPos += 64*(pmh->lastpattern+1); - if (bswapLE16(pmh->commentsize) && (dwMemPos + bswapLE16(pmh->commentsize) < dwMemLength)) - { - UINT n = bswapLE16(pmh->commentsize); - m_lpszSongComments = new char[n+1]; - if (m_lpszSongComments) - { - memcpy(m_lpszSongComments, lpStream+dwMemPos, n); - m_lpszSongComments[n] = 0; - for (UINT i=0; icommentsize); - // Reading Samples - for (UINT ismp=1; ismp<=m_nSamples; ismp++) - { - if (dwMemPos >= dwMemLength) break; - dwMemPos += ReadSample(&Ins[ismp], (Ins[ismp].uFlags & CHN_16BIT) ? RS_PCM16U : RS_PCM8U, - (LPSTR)(lpStream + dwMemPos), dwMemLength - dwMemPos); - } - m_nMinPeriod = 64; - m_nMaxPeriod = 32767; - return TRUE; -} - diff -Nru audacious-plugins-2.4.4/src/modplug/load_okt.cxx audacious-plugins-3.2/src/modplug/load_okt.cxx --- audacious-plugins-2.4.4/src/modplug/load_okt.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_okt.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque , - * Adam Goode (endian and char fixes for PPC) -*/ - -////////////////////////////////////////////// -// Oktalyzer (OKT) module loader // -////////////////////////////////////////////// -#include "stdafx.h" -#include "sndfile.h" - -//#pragma warning(disable:4244) - -typedef struct OKTFILEHEADER -{ - DWORD okta; // "OKTA" - DWORD song; // "SONG" - DWORD cmod; // "CMOD" - DWORD fixed8; - BYTE chnsetup[8]; - DWORD samp; // "SAMP" - DWORD samplen; -} OKTFILEHEADER; - - -typedef struct OKTSAMPLE -{ - CHAR name[20]; - DWORD length; - WORD loopstart; - WORD looplen; - BYTE pad1; - BYTE volume; - BYTE pad2; - BYTE pad3; -} OKTSAMPLE; - - -BOOL CSoundFile::ReadOKT(const BYTE *lpStream, DWORD dwMemLength) -//--------------------------------------------------------------- -{ - OKTFILEHEADER *pfh = (OKTFILEHEADER *)lpStream; - DWORD dwMemPos = sizeof(OKTFILEHEADER); - UINT nsamples = 0, npatterns = 0, norders = 0; - - if ((!lpStream) || (dwMemLength < 1024)) return FALSE; - if ((pfh->okta != 0x41544B4F) || (pfh->song != 0x474E4F53) - || (pfh->cmod != 0x444F4D43) || (pfh->chnsetup[0]) || (pfh->chnsetup[2]) - || (pfh->chnsetup[4]) || (pfh->chnsetup[6]) || (pfh->fixed8 != 0x08000000) - || (pfh->samp != 0x504D4153)) return FALSE; - m_nType = MOD_TYPE_OKT; - m_nChannels = 4 + pfh->chnsetup[1] + pfh->chnsetup[3] + pfh->chnsetup[5] + pfh->chnsetup[7]; - if (m_nChannels > MAX_CHANNELS) m_nChannels = MAX_CHANNELS; - nsamples = bswapBE32(pfh->samplen) >> 5; - m_nSamples = nsamples; - if (m_nSamples >= MAX_SAMPLES) m_nSamples = MAX_SAMPLES-1; - // Reading samples - for (UINT smp=1; smp <= nsamples; smp++) - { - if (dwMemPos >= dwMemLength) return TRUE; - if (smp < MAX_SAMPLES) - { - OKTSAMPLE *psmp = (OKTSAMPLE *)(lpStream + dwMemPos); - MODINSTRUMENT *pins = &Ins[smp]; - - memcpy(m_szNames[smp], psmp->name, 20); - pins->uFlags = 0; - pins->nLength = bswapBE32(psmp->length) & ~1; - pins->nLoopStart = bswapBE16(psmp->loopstart); - pins->nLoopEnd = pins->nLoopStart + bswapBE16(psmp->looplen); - if (pins->nLoopStart + 2 < pins->nLoopEnd) pins->uFlags |= CHN_LOOP; - pins->nGlobalVol = 64; - pins->nVolume = psmp->volume << 2; - pins->nC4Speed = 8363; - } - dwMemPos += sizeof(OKTSAMPLE); - } - // SPEE - if (dwMemPos >= dwMemLength) return TRUE; - if (*((DWORD *)(lpStream + dwMemPos)) == 0x45455053) - { - m_nDefaultSpeed = lpStream[dwMemPos+9]; - dwMemPos += bswapBE32(*((DWORD *)(lpStream + dwMemPos + 4))) + 8; - } - // SLEN - if (dwMemPos >= dwMemLength) return TRUE; - if (*((DWORD *)(lpStream + dwMemPos)) == 0x4E454C53) - { - npatterns = lpStream[dwMemPos+9]; - dwMemPos += bswapBE32(*((DWORD *)(lpStream + dwMemPos + 4))) + 8; - } - // PLEN - if (dwMemPos >= dwMemLength) return TRUE; - if (*((DWORD *)(lpStream + dwMemPos)) == 0x4E454C50) - { - norders = lpStream[dwMemPos+9]; - dwMemPos += bswapBE32(*((DWORD *)(lpStream + dwMemPos + 4))) + 8; - } - // PATT - if (dwMemPos >= dwMemLength) return TRUE; - if (*((DWORD *)(lpStream + dwMemPos)) == 0x54544150) - { - UINT orderlen = norders; - if (orderlen >= MAX_ORDERS) orderlen = MAX_ORDERS-1; - for (UINT i=0; i1; j--) { if (Order[j-1]) break; Order[j-1] = 0xFF; } - dwMemPos += bswapBE32(*((DWORD *)(lpStream + dwMemPos + 4))) + 8; - } - // PBOD - UINT npat = 0; - while ((dwMemPos+10 < dwMemLength) && (*((DWORD *)(lpStream + dwMemPos)) == 0x444F4250)) - { - DWORD dwPos = dwMemPos + 10; - UINT rows = lpStream[dwMemPos+9]; - if (!rows) rows = 64; - if (npat < MAX_PATTERNS) - { - if ((Patterns[npat] = AllocatePattern(rows, m_nChannels)) == NULL) return TRUE; - MODCOMMAND *m = Patterns[npat]; - PatternSize[npat] = rows; - PatternAllocSize[npat] = rows; - UINT imax = m_nChannels*rows; - for (UINT i=0; i dwMemLength) break; - const BYTE *p = lpStream+dwPos; - UINT note = p[0]; - if (note) - { - m->note = note + 48; - m->instr = p[1] + 1; - } - UINT command = p[2]; - UINT param = p[3]; - m->param = param; - switch(command) - { - // 0: no effect - case 0: - break; - // 1: Portamento Up - case 1: - case 17: - case 30: - if (param) m->command = CMD_PORTAMENTOUP; - break; - // 2: Portamento Down - case 2: - case 13: - case 21: - if (param) m->command = CMD_PORTAMENTODOWN; - break; - // 10: Arpeggio - case 10: - case 11: - case 12: - m->command = CMD_ARPEGGIO; - break; - // 15: Filter - case 15: - m->command = CMD_MODCMDEX; - m->param = param & 0x0F; - break; - // 25: Position Jump - case 25: - m->command = CMD_POSITIONJUMP; - break; - // 28: Set Speed - case 28: - m->command = CMD_SPEED; - break; - // 31: Volume Control - case 31: - if (param <= 0x40) m->command = CMD_VOLUME; else - if (param <= 0x50) { m->command = CMD_VOLUMESLIDE; m->param &= 0x0F; if (!m->param) m->param = 0x0F; } else - if (param <= 0x60) { m->command = CMD_VOLUMESLIDE; m->param = (param & 0x0F) << 4; if (!m->param) m->param = 0xF0; } else - if (param <= 0x70) { m->command = CMD_MODCMDEX; m->param = 0xB0 | (param & 0x0F); if (!(param & 0x0F)) m->param = 0xBF; } else - if (param <= 0x80) { m->command = CMD_MODCMDEX; m->param = 0xA0 | (param & 0x0F); if (!(param & 0x0F)) m->param = 0xAF; } - break; - } - } - } - npat++; - dwMemPos += bswapBE32(*((DWORD *)(lpStream + dwMemPos + 4))) + 8; - } - // SBOD - UINT nsmp = 1; - while ((dwMemPos+10 < dwMemLength) && (*((DWORD *)(lpStream + dwMemPos)) == 0x444F4253)) - { - if (nsmp < MAX_SAMPLES) ReadSample(&Ins[nsmp], RS_PCM8S, (LPSTR)(lpStream+dwMemPos+8), dwMemLength-dwMemPos-8); - dwMemPos += bswapBE32(*((DWORD *)(lpStream + dwMemPos + 4))) + 8; - nsmp++; - } - return TRUE; -} - diff -Nru audacious-plugins-2.4.4/src/modplug/load_psm.cxx audacious-plugins-3.2/src/modplug/load_psm.cxx --- audacious-plugins-2.4.4/src/modplug/load_psm.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_psm.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,884 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque -*/ - - -/////////////////////////////////////////////////// -// -// PSM module loader -// -/////////////////////////////////////////////////// -#include "stdafx.h" -#include "sndfile.h" - -//#define PSM_LOG - -#define PSM_ID_NEW 0x204d5350 -#define PSM_ID_OLD 0xfe4d5350 -#define IFFID_FILE 0x454c4946 -#define IFFID_TITL 0x4c544954 -#define IFFID_SDFT 0x54464453 -#define IFFID_PBOD 0x444f4250 -#define IFFID_SONG 0x474e4f53 -#define IFFID_PATT 0x54544150 -#define IFFID_DSMP 0x504d5344 -#define IFFID_OPLH 0x484c504f - -#pragma pack(1) - -typedef struct _PSMCHUNK -{ - DWORD id; - DWORD len; - DWORD listid; -} PSMCHUNK; - -typedef struct _PSMSONGHDR -{ - CHAR songname[8]; // "MAINSONG" - BYTE reserved1; - BYTE reserved2; - BYTE channels; -} PSMSONGHDR; - -typedef struct _PSMPATTERN -{ - DWORD size; - DWORD name; - WORD rows; - WORD reserved1; - BYTE data[4]; -} PSMPATTERN; - -typedef struct _PSMSAMPLE -{ - BYTE flags; - CHAR songname[8]; - DWORD smpid; - CHAR samplename[34]; - DWORD reserved1; - BYTE reserved2; - BYTE insno; - BYTE reserved3; - DWORD length; - DWORD loopstart; - DWORD loopend; - WORD reserved4; - BYTE defvol; - DWORD reserved5; - DWORD samplerate; - BYTE reserved6[19]; -} PSMSAMPLE; - -#pragma pack() - - -BOOL CSoundFile::ReadPSM(LPCBYTE lpStream, DWORD dwMemLength) -//----------------------------------------------------------- -{ - PSMCHUNK *pfh = (PSMCHUNK *)lpStream; - DWORD dwMemPos, dwSongPos; - DWORD smpnames[MAX_SAMPLES]; - DWORD patptrs[MAX_PATTERNS]; - BYTE samplemap[MAX_SAMPLES]; - UINT nPatterns; - - // Chunk0: "PSM ",filesize,"FILE" - if (dwMemLength < 256) return FALSE; - if (bswapLE32(pfh->id) == PSM_ID_OLD) - { - #ifdef PSM_LOG - printf("Old PSM format not supported\n"); - #endif - return FALSE; - } - if ((bswapLE32(pfh->id) != PSM_ID_NEW) - || (bswapLE32(pfh->len)+12 > dwMemLength) - || (bswapLE32(pfh->listid) != IFFID_FILE)) return FALSE; - m_nType = MOD_TYPE_PSM; - m_nChannels = 16; - m_nSamples = 0; - nPatterns = 0; - dwMemPos = 12; - dwSongPos = 0; - for (UINT iChPan=0; iChPan<16; iChPan++) - { - UINT pan = (((iChPan & 3) == 1) || ((iChPan&3)==2)) ? 0xC0 : 0x40; - ChnSettings[iChPan].nPan = pan; - } - m_szNames[0][0]=0; - while (dwMemPos+8 < dwMemLength) - { - PSMCHUNK *pchunk = (PSMCHUNK *)(lpStream+dwMemPos); - if ((bswapLE32(pchunk->len) >= dwMemLength - 8) - || (dwMemPos + bswapLE32(pchunk->len) + 8 > dwMemLength)) break; - dwMemPos += 8; - PUCHAR pdata = (PUCHAR)(lpStream+dwMemPos); - ULONG len = bswapLE32(pchunk->len); - if (len) switch(bswapLE32(pchunk->id)) - { - // "TITL": Song title - case IFFID_TITL: - if (!pdata[0]) { pdata++; len--; } - memcpy(m_szNames[0], pdata, (len>31) ? 31 : len); - m_szNames[0][31] = 0; - break; - // "PBOD": Pattern - case IFFID_PBOD: - if ((len >= 12) && (nPatterns < MAX_PATTERNS)) - { - patptrs[nPatterns++] = dwMemPos-8; - } - break; - // "SONG": Song description - case IFFID_SONG: - if ((len >= sizeof(PSMSONGHDR)+8) && (!dwSongPos)) - { - dwSongPos = dwMemPos - 8; - } - break; - // "DSMP": Sample Data - case IFFID_DSMP: - if ((len >= sizeof(PSMSAMPLE)) && (m_nSamples+1 < MAX_SAMPLES)) - { - m_nSamples++; - MODINSTRUMENT *pins = &Ins[m_nSamples]; - PSMSAMPLE *psmp = (PSMSAMPLE *)pdata; - smpnames[m_nSamples] = bswapLE32(psmp->smpid); - memcpy(m_szNames[m_nSamples], psmp->samplename, 31); - m_szNames[m_nSamples][31] = 0; - samplemap[m_nSamples-1] = (BYTE)m_nSamples; - // Init sample - pins->nGlobalVol = 0x40; - pins->nC4Speed = bswapLE32(psmp->samplerate); - pins->nLength = bswapLE32(psmp->length); - pins->nLoopStart = bswapLE32(psmp->loopstart); - pins->nLoopEnd = bswapLE32(psmp->loopend); - pins->nPan = 128; - pins->nVolume = (psmp->defvol+1) * 2; - pins->uFlags = (psmp->flags & 0x80) ? CHN_LOOP : 0; - if (pins->nLoopStart > 0) pins->nLoopStart--; - // Point to sample data - pdata += 0x60; - len -= 0x60; - // Load sample data - if ((pins->nLength > 3) && (len > 3)) - { - ReadSample(pins, RS_PCM8D, (LPCSTR)pdata, len); - } else - { - pins->nLength = 0; - } - } - break; - #if 0 - default: - { - CHAR s[8], s2[64]; - *(DWORD *)s = pchunk->id; - s[4] = 0; - wsprintf(s2, "%s: %4d bytes @ %4d\n", s, pchunk->len, dwMemPos); - OutputDebugString(s2); - } - #endif - } - dwMemPos += bswapLE32(pchunk->len); - } - // Step #1: convert song structure - PSMSONGHDR *pSong = (PSMSONGHDR *)(lpStream+dwSongPos+8); - if ((!dwSongPos) || (pSong->channels < 2) || (pSong->channels > 32)) return TRUE; - m_nChannels = pSong->channels; - // Valid song header -> convert attached chunks - { - DWORD dwSongEnd = dwSongPos + 8 + *(DWORD *)(lpStream+dwSongPos+4); - dwMemPos = dwSongPos + 8 + 11; // sizeof(PSMCHUNK)+sizeof(PSMSONGHDR) - while (dwMemPos + 8 < dwSongEnd) - { - PSMCHUNK *pchunk = (PSMCHUNK *)(lpStream+dwMemPos); - dwMemPos += 8; - if ((bswapLE32(pchunk->len) > dwSongEnd) - || (dwMemPos + bswapLE32(pchunk->len) > dwSongEnd)) break; - PUCHAR pdata = (PUCHAR)(lpStream+dwMemPos); - ULONG len = bswapLE32(pchunk->len); - switch(bswapLE32(pchunk->id)) - { - case IFFID_OPLH: - if (len >= 0x20) - { - UINT pos = len - 3; - while (pos > 5) - { - BOOL bFound = FALSE; - pos -= 5; - DWORD dwName = *(DWORD *)(pdata+pos); - for (UINT i=0; iname; - if (dwName == dwPatName) - { - bFound = TRUE; - break; - } - } - if ((!bFound) && (pdata[pos+1] > 0) && (pdata[pos+1] <= 0x10) - && (pdata[pos+3] > 0x40) && (pdata[pos+3] < 0xC0)) - { - m_nDefaultSpeed = pdata[pos+1]; - m_nDefaultTempo = pdata[pos+3]; - break; - } - } - UINT iOrd = 0; - while ((pos+5name; - if (dwName == dwPatName) - { - Order[iOrd++] = i; - break; - } - } - pos += 5; - } - } - break; - } - dwMemPos += bswapLE32(pchunk->len); - } - } - - // Step #2: convert patterns - for (UINT nPat=0; nPatrows); - if (len > bswapLE32(pPsmPat->size)) len = bswapLE32(pPsmPat->size); - if ((nRows < 64) || (nRows > 256)) nRows = 64; - PatternSize[nPat] = nRows; - PatternAllocSize[nPat] = nRows; - if ((Patterns[nPat] = AllocatePattern(nRows, m_nChannels)) == NULL) break; - MODCOMMAND *m = Patterns[nPat]; - MODCOMMAND *sp, dummy; - BYTE *p = pPsmPat->data; - UINT pos = 0; - UINT row = 0; - UINT rowlim; - #ifdef PSM_LOG - //printf("Pattern %d at offset 0x%04X\n", nPat, (DWORD)(p - (BYTE *)lpStream)); - #endif - rowlim = bswapLE16(pPsmPat->reserved1)-2; - while ((row < nRows) && (pos+1 < len)) - { - UINT flags, ch; - if ((pos+1) >= rowlim) { - pos = rowlim; - rowlim = (((int)p[pos+1])<<8) - | ((int)p[pos+0]); - m += m_nChannels; - row++; - rowlim += pos; - pos += 2; - } - flags = p[pos++]; - ch = p[pos++]; - if (ch >= m_nChannels) { - #ifdef PSM_LOG - printf("Invalid channel row=%d (0x%02X.0x%02X)\n", row, flags, ch); - #endif - sp = &dummy; - } else { - sp = &m[ch]; - } - // Note + Instr - if ((flags & 0x80) && (pos+1 < len)) - { - UINT note = p[pos++]; - note = (note>>4)*12+(note&0x0f)+12+1; - if (note > 0x80) note = 0; - sp->note = note; - } - if ((flags & 0x40) && (pos+1 < len)) - { - UINT nins = p[pos++]; - #ifdef PSM_LOG - if ((!nPat) && (nins >= m_nSamples)) printf("WARNING: invalid instrument number (%d)\n", nins); - #endif - sp->instr = samplemap[nins]; - } - // Volume - if ((flags & 0x20) && (pos < len)) - { - sp->volcmd = VOLCMD_VOLUME; - sp->vol = p[pos++] / 2; - } - // Effect - if ((flags & 0x10) && (pos+1 < len)) - { - UINT command = p[pos++]; - UINT param = p[pos++]; - // Convert effects - switch(command & 0x3F) - { - // 01: fine volslide up - case 0x01: -#if PSM_LOG - printf("fvup command pat=%d row=%d ch=%d %02x %02x\n", - nPat, - row,1+ch, - command, param); -#endif -#if 0 - if (!sp->volcmd) { - sp->volcmd = VOLCMD_FINEVOLUP; - sp->vol = (param >> 1) & 0xF; - command = CMD_PORTAMENTOUP; - param>>=4; param |= 0xf0; - if (param == 240) param=241; - } else { -#endif - command = CMD_VOLUMESLIDE; - param |= 0x0f; - if (param == 15) param=31; - break; - // 02: volslide up - case 0x02: command = CMD_VOLUMESLIDE; param>>=1; param<<=4; break; - // 03: fine volslide down - case 0x03: -#if PSM_LOG - printf("fvdown command pat=%d row=%d ch=%d %02x %02x\n", - nPat, - row,1+ch, - command, param); -#endif -#if 0 - if (!sp->volcmd) { - sp->volcmd = VOLCMD_FINEVOLDOWN; - sp->vol = (param >> 2) & 0xF; - if (!sp->vol) sp->vol = 1; - command = CMD_PORTAMENTODOWN; - } -#endif - command = CMD_VOLUMESLIDE; - param>>=4; param |= 0xf0; - if (param == 240) param=241; - break; - // 04: volslide down - case 0x04: command = CMD_VOLUMESLIDE; param>>=1; break; - // 0C: portamento up - case 0x0C: command = CMD_PORTAMENTOUP; param = (param+1)/2; break; - // 0E: portamento down - case 0x0E: command = CMD_PORTAMENTODOWN; param = (param+1)/2; break; - // 0F: tone portamento - case 0x0F: command = CMD_TONEPORTAMENTO; param = param/4; break; - // 15: vibrato - case 0x15: command = CMD_VIBRATO; break; - // 29: wtf - case 0x29: pos += 2; break; - // 2A: retrig - case 0x2A: command = CMD_RETRIG; break; - // 33: Position Jump - case 0x33: command = CMD_POSITIONJUMP; break; - // 34: Pattern break - case 0x34: command = CMD_PATTERNBREAK; break; - // 3D: speed - case 0x3D: command = CMD_SPEED; - if (!row && !nPat) - m_nDefaultSpeed = param; - break; - // 3E: tempo - case 0x3E: command = CMD_TEMPO; - if (!row && !nPat) - m_nDefaultTempo = param; - break; - // Unknown - default: - #ifdef PSM_LOG - printf("Unknown PSM effect pat=%d row=%d ch=%d: %02X.%02X\n", nPat, row, ch, command, param); - #endif - command = param = 0; - } - sp->command = (BYTE)command; - sp->param = (BYTE)param; - } - } - #ifdef PSM_LOG - if (pos < len) - { -// printf("Pattern %d: %d/%d[%d] rows (%d bytes) -> %d bytes left\n", nPat, row, nRows, pPsmPat->rows, pPsmPat->size, len-pos); - } - #endif - } - - // Done (finally!) - return TRUE; -} - - -////////////////////////////////////////////////////////////// -// -// PSM Old Format -// - -/* - -CONST - c_PSM_MaxOrder = $FF; - c_PSM_MaxSample = $FF; - c_PSM_MaxChannel = $0F; - - TYPE - PPSM_Header = ^TPSM_Header; - TPSM_Header = RECORD - PSM_Sign : ARRAY[01..04] OF CHAR; { PSM + #254 } - PSM_SongName : ARRAY[01..58] OF CHAR; - PSM_Byte00 : BYTE; - PSM_Byte1A : BYTE; - PSM_Unknown00 : BYTE; - PSM_Unknown01 : BYTE; - PSM_Unknown02 : BYTE; - PSM_Speed : BYTE; - PSM_Tempo : BYTE; - PSM_Unknown03 : BYTE; - PSM_Unknown04 : WORD; - PSM_OrderLength : WORD; - PSM_PatternNumber : WORD; - PSM_SampleNumber : WORD; - PSM_ChannelNumber : WORD; - PSM_ChannelUsed : WORD; - PSM_OrderPosition : LONGINT; - PSM_ChannelSettingPosition : LONGINT; - PSM_PatternPosition : LONGINT; - PSM_SamplePosition : LONGINT; - { *** perhaps there are some more infos in a larger header, - but i have not decoded it and so it apears here NOT } - END; - - PPSM_Sample = ^TPSM_Sample; - TPSM_Sample = RECORD - PSM_SampleFileName : ARRAY[01..12] OF CHAR; - PSM_SampleByte00 : BYTE; - PSM_SampleName : ARRAY[01..22] OF CHAR; - PSM_SampleUnknown00 : ARRAY[01..02] OF BYTE; - PSM_SamplePosition : LONGINT; - PSM_SampleUnknown01 : ARRAY[01..04] OF BYTE; - PSM_SampleNumber : BYTE; - PSM_SampleFlags : WORD; - PSM_SampleLength : LONGINT; - PSM_SampleLoopBegin : LONGINT; - PSM_SampleLoopEnd : LONGINT; - PSM_Unknown03 : BYTE; - PSM_SampleVolume : BYTE; - PSM_SampleC5Speed : WORD; - END; - - PPSM_SampleList = ^TPSM_SampleList; - TPSM_SampleList = ARRAY[01..c_PSM_MaxSample] OF TPSM_Sample; - - PPSM_Order = ^TPSM_Order; - TPSM_Order = ARRAY[00..c_PSM_MaxOrder] OF BYTE; - - PPSM_ChannelSettings = ^TPSM_ChannelSettings; - TPSM_ChannelSettings = ARRAY[00..c_PSM_MaxChannel] OF BYTE; - - CONST - PSM_NotesInPattern : BYTE = $00; - PSM_ChannelInPattern : BYTE = $00; - - CONST - c_PSM_SetSpeed = 60; - - FUNCTION PSM_Size(FileName : STRING;FilePosition : LONGINT) : LONGINT; - BEGIN - END; - - PROCEDURE PSM_UnpackPattern(VAR Source,Destination;PatternLength : WORD); - VAR - Witz : ARRAY[00..04] OF WORD; - I1,I2 : WORD; - I3,I4 : WORD; - TopicalByte : ^BYTE; - Pattern : PUnpackedPattern; - ChannelP : BYTE; - NoteP : BYTE; - InfoByte : BYTE; - CodeByte : BYTE; - InfoWord : WORD; - Effect : BYTE; - Opperand : BYTE; - Panning : BYTE; - Volume : BYTE; - PrevInfo : BYTE; - InfoIndex : BYTE; - BEGIN - Pattern := @Destination; - TopicalByte := @Source; - { *** Initialize patttern } - FOR I2 := 0 TO c_Maximum_NoteIndex DO - FOR I3 := 0 TO c_Maximum_ChannelIndex DO - BEGIN - Pattern^[I2,I3,c_Pattern_NoteIndex] := $FF; - Pattern^[I2,I3,c_Pattern_SampleIndex] := $00; - Pattern^[I2,I3,c_Pattern_VolumeIndex] := $FF; - Pattern^[I2,I3,c_Pattern_PanningIndex] := $FF; - Pattern^[I2,I3,c_Pattern_EffectIndex] := $00; - Pattern^[I2,I3,c_Pattern_OpperandIndex] := $00; - END; - { *** Byte-pointer on first pattern-entry } - ChannelP := $00; - NoteP := $00; - InfoByte := $00; - PrevInfo := $00; - InfoIndex := $02; - { *** read notes in pattern } - PSM_NotesInPattern := TopicalByte^; INC(TopicalByte); DEC(PatternLength); INC(InfoIndex); - PSM_ChannelInPattern := TopicalByte^; INC(TopicalByte); DEC(PatternLength); INC(InfoIndex); - { *** unpack pattern } - WHILE (INTEGER(PatternLength) > 0) AND (NoteP < c_Maximum_NoteIndex) DO - BEGIN - { *** Read info-byte } - InfoByte := TopicalByte^; INC(TopicalByte); DEC(PatternLength); INC(InfoIndex); - IF InfoByte <> $00 THEN - BEGIN - ChannelP := InfoByte AND $0F; - IF InfoByte AND 128 = 128 THEN { note and sample } - BEGIN - { *** read note } - CodeByte := TopicalByte^; INC(TopicalByte); DEC(PatternLength); - DEC(CodeByte); - CodeByte := CodeByte MOD 12 * 16 + CodeByte DIV 12 + 2; - Pattern^[NoteP,ChannelP,c_Pattern_NoteIndex] := CodeByte; - { *** read sample } - CodeByte := TopicalByte^; INC(TopicalByte); DEC(PatternLength); - Pattern^[NoteP,ChannelP,c_Pattern_SampleIndex] := CodeByte; - END; - IF InfoByte AND 64 = 64 THEN { Volume } - BEGIN - CodeByte := TopicalByte^; INC(TopicalByte); DEC(PatternLength); - Pattern^[NoteP,ChannelP,c_Pattern_VolumeIndex] := CodeByte; - END; - IF InfoByte AND 32 = 32 THEN { effect AND opperand } - BEGIN - Effect := TopicalByte^; INC(TopicalByte); DEC(PatternLength); - Opperand := TopicalByte^; INC(TopicalByte); DEC(PatternLength); - CASE Effect OF - c_PSM_SetSpeed: - BEGIN - Effect := c_I_Set_Speed; - END; - ELSE - BEGIN - Effect := c_I_NoEffect; - Opperand := $00; - END; - END; - Pattern^[NoteP,ChannelP,c_Pattern_EffectIndex] := Effect; - Pattern^[NoteP,ChannelP,c_Pattern_OpperandIndex] := Opperand; - END; - END ELSE INC(NoteP); - END; - END; - - PROCEDURE PSM_Load(FileName : STRING;FilePosition : LONGINT;VAR Module : PModule;VAR ErrorCode : WORD); - { *** caution : Module has to be inited before!!!! } - VAR - Header : PPSM_Header; - Sample : PPSM_SampleList; - Order : PPSM_Order; - ChannelSettings : PPSM_ChannelSettings; - MultiPurposeBuffer : PByteArray; - PatternBuffer : PUnpackedPattern; - TopicalParaPointer : WORD; - - InFile : FILE; - I1,I2 : WORD; - I3,I4 : WORD; - TempW : WORD; - TempB : BYTE; - TempP : PByteArray; - TempI : INTEGER; - { *** copy-vars for loop-extension } - CopySource : LONGINT; - CopyDestination : LONGINT; - CopyLength : LONGINT; - BEGIN - { *** try to open file } - ASSIGN(InFile,FileName); -{$I-} - RESET(InFile,1); -{$I+} - IF IORESULT <> $00 THEN - BEGIN - EXIT; - END; -{$I-} - { *** seek start of module } - IF FILESIZE(InFile) < FilePosition THEN - BEGIN - EXIT; - END; - SEEK(InFile,FilePosition); - { *** look for enough memory for temporary variables } - IF MEMAVAIL < SIZEOF(TPSM_Header) + SIZEOF(TPSM_SampleList) + - SIZEOF(TPSM_Order) + SIZEOF(TPSM_ChannelSettings) + - SIZEOF(TByteArray) + SIZEOF(TUnpackedPattern) - THEN - BEGIN - EXIT; - END; - { *** init dynamic variables } - NEW(Header); - NEW(Sample); - NEW(Order); - NEW(ChannelSettings); - NEW(MultiPurposeBuffer); - NEW(PatternBuffer); - { *** read header } - BLOCKREAD(InFile,Header^,SIZEOF(TPSM_Header)); - { *** test if this is a DSM-file } - IF NOT ((Header^.PSM_Sign[1] = 'P') AND (Header^.PSM_Sign[2] = 'S') AND - (Header^.PSM_Sign[3] = 'M') AND (Header^.PSM_Sign[4] = #254)) THEN - BEGIN - ErrorCode := c_NoValidFileFormat; - CLOSE(InFile); - EXIT; - END; - { *** read order } - SEEK(InFile,FilePosition + Header^.PSM_OrderPosition); - BLOCKREAD(InFile,Order^,Header^.PSM_OrderLength); - { *** read channelsettings } - SEEK(InFile,FilePosition + Header^.PSM_ChannelSettingPosition); - BLOCKREAD(InFile,ChannelSettings^,SIZEOF(TPSM_ChannelSettings)); - { *** read samplelist } - SEEK(InFile,FilePosition + Header^.PSM_SamplePosition); - BLOCKREAD(InFile,Sample^,Header^.PSM_SampleNumber * SIZEOF(TPSM_Sample)); - { *** copy header to intern NTMIK-structure } - Module^.Module_Sign := 'MF'; - Module^.Module_FileFormatVersion := $0100; - Module^.Module_SampleNumber := Header^.PSM_SampleNumber; - Module^.Module_PatternNumber := Header^.PSM_PatternNumber; - Module^.Module_OrderLength := Header^.PSM_OrderLength; - Module^.Module_ChannelNumber := Header^.PSM_ChannelNumber+1; - Module^.Module_Initial_GlobalVolume := 64; - Module^.Module_Initial_MasterVolume := $C0; - Module^.Module_Initial_Speed := Header^.PSM_Speed; - Module^.Module_Initial_Tempo := Header^.PSM_Tempo; -{ *** paragraph 01 start } - Module^.Module_Flags := c_Module_Flags_ZeroVolume * BYTE(1) + - c_Module_Flags_Stereo * BYTE(1) + - c_Module_Flags_ForceAmigaLimits * BYTE(0) + - c_Module_Flags_Panning * BYTE(1) + - c_Module_Flags_Surround * BYTE(1) + - c_Module_Flags_QualityMixing * BYTE(1) + - c_Module_Flags_FastVolumeSlides * BYTE(0) + - c_Module_Flags_SpecialCustomData * BYTE(0) + - c_Module_Flags_SongName * BYTE(1); - I1 := $01; - WHILE (Header^.PSM_SongName[I1] > #00) AND (I1 < c_Module_SongNameLength) DO - BEGIN - Module^.Module_Name[I1] := Header^.PSM_SongName[I1]; - INC(I1); - END; - Module^.Module_Name[c_Module_SongNameLength] := #00; - { *** Init channelsettings } - FOR I1 := 0 TO c_Maximum_ChannelIndex DO - BEGIN - IF I1 < Header^.PSM_ChannelUsed THEN - BEGIN - { *** channel enabled } - Module^.Module_ChannelSettingPointer^[I1].ChannelSettings_GlobalVolume := 64; - Module^.Module_ChannelSettingPointer^[I1].ChannelSettings_Panning := (ChannelSettings^[I1]) * $08; - Module^.Module_ChannelSettingPointer^[I1].ChannelSettings_Code := I1 + $10 * BYTE(ChannelSettings^[I1] > $08) + - c_ChannelSettings_Code_ChannelEnabled * BYTE(1) + - c_ChannelSettings_Code_ChannelDigital * BYTE(1); - Module^.Module_ChannelSettingPointer^[I1].ChannelSettings_Controls := - c_ChannelSettings_Controls_EnhancedMode * BYTE(1) + - c_ChannelSettings_Controls_SurroundMode * BYTE(0); - END - ELSE - BEGIN - { *** channel disabled } - Module^.Module_ChannelSettingPointer^[I1].ChannelSettings_GlobalVolume := $00; - Module^.Module_ChannelSettingPointer^[I1].ChannelSettings_Panning := $00; - Module^.Module_ChannelSettingPointer^[I1].ChannelSettings_Code := $00; - Module^.Module_ChannelSettingPointer^[I1].ChannelSettings_Controls := $00; - END; - END; - { *** init and copy order } - FILLCHAR(Module^.Module_OrderPointer^,c_Maximum_OrderIndex+1,$FF); - MOVE(Order^,Module^.Module_OrderPointer^,Header^.PSM_OrderLength); - { *** read pattern } - SEEK(InFile,FilePosition + Header^.PSM_PatternPosition); - NTMIK_LoaderPatternNumber := Header^.PSM_PatternNumber-1; - FOR I1 := 0 TO Header^.PSM_PatternNumber-1 DO - BEGIN - NTMIK_LoadPatternProcedure; - { *** read length } - BLOCKREAD(InFile,TempW,2); - { *** read pattern } - BLOCKREAD(InFile,MultiPurposeBuffer^,TempW-2); - { *** unpack pattern and set notes per channel to 64 } - PSM_UnpackPattern(MultiPurposeBuffer^,PatternBuffer^,TempW); - NTMIK_PackPattern(MultiPurposeBuffer^,PatternBuffer^,PSM_NotesInPattern); - TempW := WORD(256) * MultiPurposeBuffer^[01] + MultiPurposeBuffer^[00]; - GETMEM(Module^.Module_PatternPointer^[I1],TempW); - MOVE(MultiPurposeBuffer^,Module^.Module_PatternPointer^[I1]^,TempW); - { *** next pattern } - END; - { *** read samples } - NTMIK_LoaderSampleNumber := Header^.PSM_SampleNumber; - FOR I1 := 1 TO Header^.PSM_SampleNumber DO - BEGIN - NTMIK_LoadSampleProcedure; - { *** get index for sample } - I3 := Sample^[I1].PSM_SampleNumber; - { *** clip PSM-sample } - IF Sample^[I1].PSM_SampleLoopEnd > Sample^[I1].PSM_SampleLength - THEN Sample^[I1].PSM_SampleLoopEnd := Sample^[I1].PSM_SampleLength; - { *** init intern sample } - NEW(Module^.Module_SamplePointer^[I3]); - FILLCHAR(Module^.Module_SamplePointer^[I3]^,SIZEOF(TSample),$00); - FILLCHAR(Module^.Module_SamplePointer^[I3]^.Sample_SampleName,c_Sample_SampleNameLength,#32); - FILLCHAR(Module^.Module_SamplePointer^[I3]^.Sample_FileName,c_Sample_FileNameLength,#32); - { *** copy informations to intern sample } - I2 := $01; - WHILE (Sample^[I1].PSM_SampleName[I2] > #00) AND (I2 < c_Sample_SampleNameLength) DO - BEGIN - Module^.Module_SamplePointer^[I3]^.Sample_SampleName[I2] := Sample^[I1].PSM_SampleName[I2]; - INC(I2); - END; - Module^.Module_SamplePointer^[I3]^.Sample_Sign := 'DF'; - Module^.Module_SamplePointer^[I3]^.Sample_FileFormatVersion := $00100; - Module^.Module_SamplePointer^[I3]^.Sample_Position := $00000000; - Module^.Module_SamplePointer^[I3]^.Sample_Selector := $0000; - Module^.Module_SamplePointer^[I3]^.Sample_Volume := Sample^[I1].PSM_SampleVolume; - Module^.Module_SamplePointer^[I3]^.Sample_LoopCounter := $00; - Module^.Module_SamplePointer^[I3]^.Sample_C5Speed := Sample^[I1].PSM_SampleC5Speed; - Module^.Module_SamplePointer^[I3]^.Sample_Length := Sample^[I1].PSM_SampleLength; - Module^.Module_SamplePointer^[I3]^.Sample_LoopBegin := Sample^[I1].PSM_SampleLoopBegin; - Module^.Module_SamplePointer^[I3]^.Sample_LoopEnd := Sample^[I1].PSM_SampleLoopEnd; - { *** now it's time for the flags } - Module^.Module_SamplePointer^[I3]^.Sample_Flags := - c_Sample_Flags_DigitalSample * BYTE(1) + - c_Sample_Flags_8BitSample * BYTE(1) + - c_Sample_Flags_UnsignedSampleData * BYTE(1) + - c_Sample_Flags_Packed * BYTE(0) + - c_Sample_Flags_LoopCounter * BYTE(0) + - c_Sample_Flags_SampleName * BYTE(1) + - c_Sample_Flags_LoopActive * - BYTE(Sample^[I1].PSM_SampleFlags AND (LONGINT(1) SHL 15) = (LONGINT(1) SHL 15)); - { *** alloc memory for sample-data } - E_Getmem(Module^.Module_SamplePointer^[I3]^.Sample_Selector, - Module^.Module_SamplePointer^[I3]^.Sample_Position, - Module^.Module_SamplePointer^[I3]^.Sample_Length + c_LoopExtensionSize); - { *** read out data } - EPT(TempP).p_Selector := Module^.Module_SamplePointer^[I3]^.Sample_Selector; - EPT(TempP).p_Offset := $0000; - SEEK(InFile,Sample^[I1].PSM_SamplePosition); - E_BLOCKREAD(InFile,TempP^,Module^.Module_SamplePointer^[I3]^.Sample_Length); - { *** 'coz the samples are signed in a DSM-file -> PC-fy them } - IF Module^.Module_SamplePointer^[I3]^.Sample_Length > 4 THEN - BEGIN - CopyLength := Module^.Module_SamplePointer^[I3]^.Sample_Length; - { *** decode sample } - ASM - DB 066h; MOV CX,WORD PTR CopyLength - { *** load sample selector } - MOV ES,WORD PTR TempP[00002h] - DB 066h; XOR SI,SI - DB 066h; XOR DI,DI - XOR AH,AH - { *** conert all bytes } - @@MainLoop: - DB 026h; DB 067h; LODSB - ADD AL,AH - MOV AH,AL - DB 067h; STOSB - DB 066h; LOOP @@MainLoop - END; - { *** make samples unsigned } - ASM - DB 066h; MOV CX,WORD PTR CopyLength - { *** load sample selector } - MOV ES,WORD PTR TempP[00002h] - DB 066h; XOR SI,SI - DB 066h; XOR DI,DI - { *** conert all bytes } - @@MainLoop: - DB 026h; DB 067h; LODSB - SUB AL,080h - DB 067h; STOSB - DB 066h; LOOP @@MainLoop - END; - { *** Create Loop-Extension } - IF Module^.Module_SamplePointer^[I3]^.Sample_Flags AND c_Sample_Flags_LoopActive = c_Sample_Flags_LoopActive THEN - BEGIN - CopySource := Module^.Module_SamplePointer^[I3]^.Sample_LoopBegin; - CopyDestination := Module^.Module_SamplePointer^[I3]^.Sample_LoopEnd; - CopyLength := CopyDestination - CopySource; - ASM - { *** load sample-selector } - MOV ES,WORD PTR TempP[00002h] - DB 066h; MOV DI,WORD PTR CopyDestination - { *** calculate number of full sample-loops to copy } - XOR DX,DX - MOV AX,c_LoopExtensionSize - MOV BX,WORD PTR CopyLength - DIV BX - OR AX,AX - JE @@NoFullLoop - { *** copy some full-loops (size=bx) } - MOV CX,AX - @@InnerLoop: - PUSH CX - DB 066h; MOV SI,WORD PTR CopySource - MOV CX,BX - DB 0F3h; DB 026h,067h,0A4h { REP MOVS BYTE PTR ES:[EDI],ES:[ESI] } - POP CX - LOOP @@InnerLoop - @@NoFullLoop: - { *** calculate number of rest-bytes to copy } - DB 066h; MOV SI,WORD PTR CopySource - MOV CX,DX - DB 0F3h; DB 026h,067h,0A4h { REP MOVS BYTE PTR ES:[EDI],ES:[ESI] } - END; - END - ELSE - BEGIN - CopyDestination := Module^.Module_SamplePointer^[I3]^.Sample_Length; - ASM - { *** load sample-selector } - MOV ES,WORD PTR TempP[00002h] - DB 066h; MOV DI,WORD PTR CopyDestination - { *** clear extension } - MOV CX,c_LoopExtensionSize - MOV AL,080h - DB 0F3h; DB 067h,0AAh { REP STOS BYTE PTR ES:[EDI] } - END; - END; - END; - { *** next sample } - END; - { *** init period-ranges } - NTMIK_MaximumPeriod := $0000D600 SHR 1; - NTMIK_MinimumPeriod := $0000D600 SHR 8; - { *** close file } - CLOSE(InFile); - { *** dispose all dynamic variables } - DISPOSE(Header); - DISPOSE(Sample); - DISPOSE(Order); - DISPOSE(ChannelSettings); - DISPOSE(MultiPurposeBuffer); - DISPOSE(PatternBuffer); - { *** set errorcode to noerror } - ErrorCode := c_NoError; - END; - -*/ - diff -Nru audacious-plugins-2.4.4/src/modplug/load_ptm.cxx audacious-plugins-3.2/src/modplug/load_ptm.cxx --- audacious-plugins-2.4.4/src/modplug/load_ptm.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_ptm.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,208 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque , - * Adam Goode (endian and char fixes for PPC) -*/ - -////////////////////////////////////////////// -// PTM PolyTracker module loader // -////////////////////////////////////////////// -#include "stdafx.h" -#include "sndfile.h" - -//#pragma warning(disable:4244) - -#pragma pack(1) - -typedef struct PTMFILEHEADER -{ - CHAR songname[28]; // name of song, asciiz string - CHAR eof; // 26 - BYTE version_lo; // 03 version of file, currently 0203h - BYTE version_hi; // 02 - BYTE reserved1; // reserved, set to 0 - WORD norders; // number of orders (0..256) - WORD nsamples; // number of instruments (1..255) - WORD npatterns; // number of patterns (1..128) - WORD nchannels; // number of channels (voices) used (1..32) - WORD fileflags; // set to 0 - WORD reserved2; // reserved, set to 0 - DWORD ptmf_id; // song identification, 'PTMF' or 0x464d5450 - BYTE reserved3[16]; // reserved, set to 0 - BYTE chnpan[32]; // channel panning settings, 0..15, 0 = left, 7 = middle, 15 = right - BYTE orders[256]; // order list, valid entries 0..nOrders-1 - WORD patseg[128]; // pattern offsets (*16) -} PTMFILEHEADER, *LPPTMFILEHEADER; - -#define SIZEOF_PTMFILEHEADER 608 - - -typedef struct PTMSAMPLE -{ - BYTE sampletype; // sample type (bit array) - CHAR filename[12]; // name of external sample file - BYTE volume; // default volume - WORD nC4Spd; // C4 speed - WORD sampleseg; // sample segment (used internally) - WORD fileofs[2]; // offset of sample data - WORD length[2]; // sample size (in bytes) - WORD loopbeg[2]; // start of loop - WORD loopend[2]; // end of loop - WORD gusdata[8]; - char samplename[28]; // name of sample, asciiz // changed from CHAR - DWORD ptms_id; // sample identification, 'PTMS' or 0x534d5450 -} PTMSAMPLE; - -#define SIZEOF_PTMSAMPLE 80 - -#pragma pack() - - -BOOL CSoundFile::ReadPTM(const BYTE *lpStream, DWORD dwMemLength) -//--------------------------------------------------------------- -{ - PTMFILEHEADER pfh = *(LPPTMFILEHEADER)lpStream; - DWORD dwMemPos; - UINT nOrders; - - pfh.norders = bswapLE16(pfh.norders); - pfh.nsamples = bswapLE16(pfh.nsamples); - pfh.npatterns = bswapLE16(pfh.npatterns); - pfh.nchannels = bswapLE16(pfh.nchannels); - pfh.fileflags = bswapLE16(pfh.fileflags); - pfh.reserved2 = bswapLE16(pfh.reserved2); - pfh.ptmf_id = bswapLE32(pfh.ptmf_id); - for (UINT j=0; j<128; j++) - { - pfh.patseg[j] = bswapLE16(pfh.patseg[j]); - } - - if ((!lpStream) || (dwMemLength < 1024)) return FALSE; - if ((pfh.ptmf_id != 0x464d5450) || (!pfh.nchannels) - || (pfh.nchannels > 32) - || (pfh.norders > 256) || (!pfh.norders) - || (!pfh.nsamples) || (pfh.nsamples > 255) - || (!pfh.npatterns) || (pfh.npatterns > 128) - || (SIZEOF_PTMFILEHEADER+pfh.nsamples*SIZEOF_PTMSAMPLE >= (int)dwMemLength)) return FALSE; - memcpy(m_szNames[0], pfh.songname, 28); - m_szNames[0][28] = 0; - m_nType = MOD_TYPE_PTM; - m_nChannels = pfh.nchannels; - m_nSamples = (pfh.nsamples < MAX_SAMPLES) ? pfh.nsamples : MAX_SAMPLES-1; - dwMemPos = SIZEOF_PTMFILEHEADER; - nOrders = (pfh.norders < MAX_ORDERS) ? pfh.norders : MAX_ORDERS-1; - memcpy(Order, pfh.orders, nOrders); - for (UINT ipan=0; ipansamplename, 28); - memcpy(pins->name, psmp->filename, 12); - pins->name[12] = 0; - pins->nGlobalVol = 64; - pins->nPan = 128; - pins->nVolume = psmp->volume << 2; - pins->nC4Speed = bswapLE16(psmp->nC4Spd) << 1; - pins->uFlags = 0; - if ((psmp->sampletype & 3) == 1) - { - UINT smpflg = RS_PCM8D; - DWORD samplepos; - pins->nLength = bswapLE32(*psmp->length); - pins->nLoopStart = bswapLE32(*psmp->loopbeg); - pins->nLoopEnd = bswapLE32(*psmp->loopend); - samplepos = bswapLE32(*psmp->fileofs); - if (psmp->sampletype & 4) pins->uFlags |= CHN_LOOP; - if (psmp->sampletype & 8) pins->uFlags |= CHN_PINGPONGLOOP; - if (psmp->sampletype & 16) - { - pins->uFlags |= CHN_16BIT; - pins->nLength >>= 1; - pins->nLoopStart >>= 1; - pins->nLoopEnd >>= 1; - smpflg = RS_PTM8DTO16; - } - if ((pins->nLength) && (samplepos) && (samplepos < dwMemLength)) - { - ReadSample(pins, smpflg, (LPSTR)(lpStream+samplepos), dwMemLength-samplepos); - } - } - } - // Reading Patterns - for (UINT ipat=0; ipat= dwMemLength)) continue; - PatternSize[ipat] = 64; - PatternAllocSize[ipat] = 64; - if ((Patterns[ipat] = AllocatePattern(64, m_nChannels)) == NULL) break; - // - MODCOMMAND *m = Patterns[ipat]; - for (UINT row=0; ((row < 64) && (dwMemPos < dwMemLength)); ) - { - UINT b = lpStream[dwMemPos++]; - - if (dwMemPos >= dwMemLength) break; - if (b) - { - UINT nChn = b & 0x1F; - - if (b & 0x20) - { - if (dwMemPos + 2 > dwMemLength) break; - m[nChn].note = lpStream[dwMemPos++]; - m[nChn].instr = lpStream[dwMemPos++]; - } - if (b & 0x40) - { - if (dwMemPos + 2 > dwMemLength) break; - m[nChn].command = lpStream[dwMemPos++]; - m[nChn].param = lpStream[dwMemPos++]; - if ((m[nChn].command == 0x0E) && ((m[nChn].param & 0xF0) == 0x80)) - { - m[nChn].command = CMD_S3MCMDEX; - } else - if (m[nChn].command < 0x10) - { - ConvertModCommand(&m[nChn]); - } else - { - switch(m[nChn].command) - { - case 16: - m[nChn].command = CMD_GLOBALVOLUME; - break; - case 17: - m[nChn].command = CMD_RETRIG; - break; - case 18: - m[nChn].command = CMD_FINEVIBRATO; - break; - default: - m[nChn].command = 0; - } - } - } - if (b & 0x80) - { - if (dwMemPos >= dwMemLength) break; - m[nChn].volcmd = VOLCMD_VOLUME; - m[nChn].vol = lpStream[dwMemPos++]; - } - } else - { - row++; - m += m_nChannels; - } - } - } - return TRUE; -} - diff -Nru audacious-plugins-2.4.4/src/modplug/load_s3m.cxx audacious-plugins-3.2/src/modplug/load_s3m.cxx --- audacious-plugins-2.4.4/src/modplug/load_s3m.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_s3m.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,406 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque , - * Adam Goode (endian and char fixes for PPC) -*/ - -#include "stdafx.h" -#include "sndfile.h" - -//#pragma warning(disable:4244) - -extern WORD S3MFineTuneTable[16]; - -////////////////////////////////////////////////////// -// ScreamTracker S3M file support - -typedef struct tagS3MSAMPLESTRUCT -{ - BYTE type; - CHAR dosname[12]; - BYTE hmem; - WORD memseg; - DWORD length; - DWORD loopbegin; - DWORD loopend; - BYTE vol; - BYTE bReserved; - BYTE pack; - BYTE flags; - DWORD finetune; - DWORD dwReserved; - WORD intgp; - WORD int512; - DWORD lastused; - CHAR name[28]; - CHAR scrs[4]; -} S3MSAMPLESTRUCT; - - -typedef struct tagS3MFILEHEADER -{ - CHAR name[28]; - BYTE b1A; - BYTE type; - WORD reserved1; - WORD ordnum; - WORD insnum; - WORD patnum; - WORD flags; - WORD cwtv; - WORD version; - DWORD scrm; // "SCRM" = 0x4D524353 - BYTE globalvol; - BYTE speed; - BYTE tempo; - BYTE mastervol; - BYTE ultraclicks; - BYTE panning_present; - BYTE reserved2[8]; - WORD special; - BYTE channels[32]; -} S3MFILEHEADER; - - -void CSoundFile::S3MConvert(MODCOMMAND *m, BOOL bIT) const -//-------------------------------------------------------- -{ - UINT command = m->command; - UINT param = m->param; - switch (command + 0x40) - { - case 'A': command = CMD_SPEED; break; - case 'B': command = CMD_POSITIONJUMP; break; - case 'C': command = CMD_PATTERNBREAK; if (!bIT) param = (param >> 4) * 10 + (param & 0x0F); break; - case 'D': command = CMD_VOLUMESLIDE; break; - case 'E': command = CMD_PORTAMENTODOWN; break; - case 'F': command = CMD_PORTAMENTOUP; break; - case 'G': command = CMD_TONEPORTAMENTO; break; - case 'H': command = CMD_VIBRATO; break; - case 'I': command = CMD_TREMOR; break; - case 'J': command = CMD_ARPEGGIO; break; - case 'K': command = CMD_VIBRATOVOL; break; - case 'L': command = CMD_TONEPORTAVOL; break; - case 'M': command = CMD_CHANNELVOLUME; break; - case 'N': command = CMD_CHANNELVOLSLIDE; break; - case 'O': command = CMD_OFFSET; break; - case 'P': command = CMD_PANNINGSLIDE; break; - case 'Q': command = CMD_RETRIG; break; - case 'R': command = CMD_TREMOLO; break; - case 'S': command = CMD_S3MCMDEX; break; - case 'T': command = CMD_TEMPO; break; - case 'U': command = CMD_FINEVIBRATO; break; - case 'V': command = CMD_GLOBALVOLUME; if (!bIT) param *= 2; break; - case 'W': command = CMD_GLOBALVOLSLIDE; break; - case 'X': command = CMD_PANNING8; break; - case 'Y': command = CMD_PANBRELLO; break; - case 'Z': command = CMD_MIDI; break; - default: command = 0; - } - m->command = command; - m->param = param; -} - - -void CSoundFile::S3MSaveConvert(UINT *pcmd, UINT *pprm, BOOL bIT) const -//--------------------------------------------------------------------- -{ - UINT command = *pcmd; - UINT param = *pprm; - switch(command) - { - case CMD_SPEED: command = 'A'; break; - case CMD_POSITIONJUMP: command = 'B'; break; - case CMD_PATTERNBREAK: command = 'C'; if (!bIT) param = ((param / 10) << 4) + (param % 10); break; - case CMD_VOLUMESLIDE: command = 'D'; break; - case CMD_PORTAMENTODOWN: command = 'E'; if ((param >= 0xE0) && (m_nType & (MOD_TYPE_MOD|MOD_TYPE_XM))) param = 0xDF; break; - case CMD_PORTAMENTOUP: command = 'F'; if ((param >= 0xE0) && (m_nType & (MOD_TYPE_MOD|MOD_TYPE_XM))) param = 0xDF; break; - case CMD_TONEPORTAMENTO: command = 'G'; break; - case CMD_VIBRATO: command = 'H'; break; - case CMD_TREMOR: command = 'I'; break; - case CMD_ARPEGGIO: command = 'J'; break; - case CMD_VIBRATOVOL: command = 'K'; break; - case CMD_TONEPORTAVOL: command = 'L'; break; - case CMD_CHANNELVOLUME: command = 'M'; break; - case CMD_CHANNELVOLSLIDE: command = 'N'; break; - case CMD_OFFSET: command = 'O'; break; - case CMD_PANNINGSLIDE: command = 'P'; break; - case CMD_RETRIG: command = 'Q'; break; - case CMD_TREMOLO: command = 'R'; break; - case CMD_S3MCMDEX: command = 'S'; break; - case CMD_TEMPO: command = 'T'; break; - case CMD_FINEVIBRATO: command = 'U'; break; - case CMD_GLOBALVOLUME: command = 'V'; if (!bIT) param >>= 1;break; - case CMD_GLOBALVOLSLIDE: command = 'W'; break; - case CMD_PANNING8: - command = 'X'; - if ((bIT) && (m_nType != MOD_TYPE_IT) && (m_nType != MOD_TYPE_XM)) - { - if (param == 0xA4) { command = 'S'; param = 0x91; } else - if (param <= 0x80) { param <<= 1; if (param > 255) param = 255; } else - command = param = 0; - } else - if ((!bIT) && ((m_nType == MOD_TYPE_IT) || (m_nType == MOD_TYPE_XM))) - { - param >>= 1; - } - break; - case CMD_PANBRELLO: command = 'Y'; break; - case CMD_MIDI: command = 'Z'; break; - case CMD_XFINEPORTAUPDOWN: - if (param & 0x0F) switch(param & 0xF0) - { - case 0x10: command = 'F'; param = (param & 0x0F) | 0xE0; break; - case 0x20: command = 'E'; param = (param & 0x0F) | 0xE0; break; - case 0x90: command = 'S'; break; - default: command = param = 0; - } else command = param = 0; - break; - case CMD_MODCMDEX: - command = 'S'; - switch(param & 0xF0) - { - case 0x00: command = param = 0; break; - case 0x10: command = 'F'; param |= 0xF0; break; - case 0x20: command = 'E'; param |= 0xF0; break; - case 0x30: param = (param & 0x0F) | 0x10; break; - case 0x40: param = (param & 0x0F) | 0x30; break; - case 0x50: param = (param & 0x0F) | 0x20; break; - case 0x60: param = (param & 0x0F) | 0xB0; break; - case 0x70: param = (param & 0x0F) | 0x40; break; - case 0x90: command = 'Q'; param &= 0x0F; break; - case 0xA0: if (param & 0x0F) { command = 'D'; param = (param << 4) | 0x0F; } else command=param=0; break; - case 0xB0: if (param & 0x0F) { command = 'D'; param |= 0xF0; } else command=param=0; break; - } - break; - default: command = param = 0; - } - command &= ~0x40; - *pcmd = command; - *pprm = param; -} - - -BOOL CSoundFile::ReadS3M(const BYTE *lpStream, DWORD dwMemLength) -//--------------------------------------------------------------- -{ - UINT insnum,patnum,nins,npat; - DWORD insfile[128]; - WORD ptr[256]; - BYTE s[1024]; - DWORD dwMemPos; - BYTE insflags[128], inspack[128]; - S3MFILEHEADER psfh = *(S3MFILEHEADER *)lpStream; - - psfh.reserved1 = bswapLE16(psfh.reserved1); - psfh.ordnum = bswapLE16(psfh.ordnum); - psfh.insnum = bswapLE16(psfh.insnum); - psfh.patnum = bswapLE16(psfh.patnum); - psfh.flags = bswapLE16(psfh.flags); - psfh.cwtv = bswapLE16(psfh.cwtv); - psfh.version = bswapLE16(psfh.version); - psfh.scrm = bswapLE32(psfh.scrm); - psfh.special = bswapLE16(psfh.special); - - if ((!lpStream) || (dwMemLength <= sizeof(S3MFILEHEADER)+sizeof(S3MSAMPLESTRUCT)+64)) return FALSE; - if (psfh.scrm != 0x4D524353) return FALSE; - dwMemPos = 0x60; - m_nType = MOD_TYPE_S3M; - memset(m_szNames,0,sizeof(m_szNames)); - memcpy(m_szNames[0], psfh.name, 28); - // Speed - m_nDefaultSpeed = psfh.speed; - if (m_nDefaultSpeed < 1) m_nDefaultSpeed = 6; - if (m_nDefaultSpeed > 0x1F) m_nDefaultSpeed = 0x1F; - // Tempo - m_nDefaultTempo = psfh.tempo; - if (m_nDefaultTempo < 40) m_nDefaultTempo = 40; - if (m_nDefaultTempo > 240) m_nDefaultTempo = 240; - // Global Volume - m_nDefaultGlobalVolume = psfh.globalvol << 2; - if ((!m_nDefaultGlobalVolume) || (m_nDefaultGlobalVolume > 256)) m_nDefaultGlobalVolume = 256; - m_nSongPreAmp = psfh.mastervol & 0x7F; - // Channels - m_nChannels = 4; - for (UINT ich=0; ich<32; ich++) - { - ChnSettings[ich].nPan = 128; - ChnSettings[ich].nVolume = 64; - - ChnSettings[ich].dwFlags = CHN_MUTE; - if (psfh.channels[ich] != 0xFF) - { - m_nChannels = ich+1; - UINT b = psfh.channels[ich] & 0x0F; - ChnSettings[ich].nPan = (b & 8) ? 0xC0 : 0x40; - ChnSettings[ich].dwFlags = 0; - } - } - if (m_nChannels < 4) m_nChannels = 4; - if ((psfh.cwtv < 0x1320) || (psfh.flags & 0x40)) m_dwSongFlags |= SONG_FASTVOLSLIDES; - // Reading pattern order - UINT iord = psfh.ordnum; - if (iord<1) iord = 1; - if (iord > MAX_ORDERS) iord = MAX_ORDERS; - if (iord) - { - memcpy(Order, lpStream+dwMemPos, iord); - dwMemPos += iord; - } - if ((iord & 1) && (lpStream[dwMemPos] == 0xFF)) dwMemPos++; - // Reading file pointers - insnum = nins = psfh.insnum; - if (insnum >= MAX_SAMPLES) insnum = MAX_SAMPLES-1; - m_nSamples = insnum; - patnum = npat = psfh.patnum; - if (patnum > MAX_PATTERNS) patnum = MAX_PATTERNS; - memset(ptr, 0, sizeof(ptr)); - if (nins+npat) - { - memcpy(ptr, lpStream+dwMemPos, 2*(nins+npat)); - dwMemPos += 2*(nins+npat); - for (UINT j = 0; j < (nins+npat); ++j) { - ptr[j] = bswapLE16(ptr[j]); - } - if (psfh.panning_present == 252) - { - const BYTE *chnpan = lpStream+dwMemPos; - for (UINT i=0; i<32; i++) if (chnpan[i] & 0x20) - { - ChnSettings[i].nPan = ((chnpan[i] & 0x0F) << 4) + 8; - } - } - } - if (!m_nChannels) return TRUE; - // Reading instrument headers - memset(insfile, 0, sizeof(insfile)); - for (UINT iSmp=1; iSmp<=insnum; iSmp++) - { - UINT nInd = ((DWORD)ptr[iSmp-1])*16; - if ((!nInd) || (nInd + 0x50 > dwMemLength)) continue; - memcpy(s, lpStream+nInd, 0x50); - memcpy(Ins[iSmp].name, s+1, 12); - insflags[iSmp-1] = s[0x1F]; - inspack[iSmp-1] = s[0x1E]; - s[0x4C] = 0; - lstrcpy(m_szNames[iSmp], (LPCSTR)&s[0x30]); - if ((s[0]==1) && (s[0x4E]=='R') && (s[0x4F]=='S')) - { - UINT j = bswapLE32(*((LPDWORD)(s+0x10))); - if (j > MAX_SAMPLE_LENGTH) j = MAX_SAMPLE_LENGTH; - if (j < 2) j = 0; - Ins[iSmp].nLength = j; - j = bswapLE32(*((LPDWORD)(s+0x14))); - if (j >= Ins[iSmp].nLength) j = Ins[iSmp].nLength - 1; - Ins[iSmp].nLoopStart = j; - j = bswapLE32(*((LPDWORD)(s+0x18))); - if (j > MAX_SAMPLE_LENGTH) j = MAX_SAMPLE_LENGTH; - if (j < 2) j = 0; - if (j > Ins[iSmp].nLength) j = Ins[iSmp].nLength; - Ins[iSmp].nLoopEnd = j; - j = s[0x1C]; - if (j > 64) j = 64; - Ins[iSmp].nVolume = j << 2; - Ins[iSmp].nGlobalVol = 64; - if (s[0x1F]&1) Ins[iSmp].uFlags |= CHN_LOOP; - j = bswapLE32(*((LPDWORD)(s+0x20))); - if (!j) j = 8363; - if (j < 1024) j = 1024; - Ins[iSmp].nC4Speed = j; - insfile[iSmp] = ((DWORD)bswapLE16(*((LPWORD)(s+0x0E)))) << 4; - insfile[iSmp] += ((DWORD)(BYTE)s[0x0D]) << 20; - if (insfile[iSmp] > dwMemLength) insfile[iSmp] &= 0xFFFF; - if ((Ins[iSmp].nLoopStart >= Ins[iSmp].nLoopEnd) || (Ins[iSmp].nLoopEnd - Ins[iSmp].nLoopStart < 8)) - Ins[iSmp].nLoopStart = Ins[iSmp].nLoopEnd = 0; - Ins[iSmp].nPan = 0x80; - } - } - // Reading patterns - for (UINT iPat=0; iPat dwMemLength) continue; - WORD len = bswapLE16(*((WORD *)(lpStream+nInd))); - nInd += 2; - PatternSize[iPat] = 64; - PatternAllocSize[iPat] = 64; - if ((!len) || (nInd + len > dwMemLength - 6) - || ((Patterns[iPat] = AllocatePattern(64, m_nChannels)) == NULL)) continue; - LPBYTE src = (LPBYTE)(lpStream+nInd); - // Unpacking pattern - MODCOMMAND *p = Patterns[iPat]; - UINT row = 0; - UINT j = 0; - while (j < len) - { - BYTE b = src[j++]; - if (!b) - { - if (++row >= 64) break; - } else - { - UINT chn = b & 0x1F; - if (chn < m_nChannels) - { - MODCOMMAND *m = &p[row*m_nChannels+chn]; - if (b & 0x20) - { - m->note = src[j++]; - if (m->note < 0xF0) m->note = (m->note & 0x0F) + 12*(m->note >> 4) + 13; - else if (m->note == 0xFF) m->note = 0; - m->instr = src[j++]; - } - if (b & 0x40) - { - UINT vol = src[j++]; - if ((vol >= 128) && (vol <= 192)) - { - vol -= 128; - m->volcmd = VOLCMD_PANNING; - } else - { - if (vol > 64) vol = 64; - m->volcmd = VOLCMD_VOLUME; - } - m->vol = vol; - } - if (b & 0x80) - { - m->command = src[j++]; - m->param = src[j++]; - if (m->command) S3MConvert(m, FALSE); - } - } else - { - if (b & 0x20) j += 2; - if (b & 0x40) j++; - if (b & 0x80) j += 2; - } - if (j >= len) break; - } - } - } - // Reading samples - for (UINT iRaw=1; iRaw<=insnum; iRaw++) if ((Ins[iRaw].nLength) && (insfile[iRaw])) - { - UINT flags; - if (insflags[iRaw-1] & 4) - flags = (psfh.version == 1) ? RS_PCM16S : RS_PCM16U; - else - flags = (psfh.version == 1) ? RS_PCM8S : RS_PCM8U; - if (insflags[iRaw-1] & 2) flags |= RSF_STEREO; - if (inspack[iRaw-1] == 4) flags = RS_ADPCM4; - dwMemPos = insfile[iRaw]; - dwMemPos += ReadSample(&Ins[iRaw], flags, (LPSTR)(lpStream + dwMemPos), dwMemLength - dwMemPos); - } - m_nMinPeriod = 64; - m_nMaxPeriod = 32767; - if (psfh.flags & 0x10) m_dwSongFlags |= SONG_AMIGALIMITS; - return TRUE; -} - - diff -Nru audacious-plugins-2.4.4/src/modplug/load_stm.cxx audacious-plugins-3.2/src/modplug/load_stm.cxx --- audacious-plugins-2.4.4/src/modplug/load_stm.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_stm.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,187 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque -*/ - -#include "stdafx.h" -#include "sndfile.h" - -//#pragma warning(disable:4244) - -#pragma pack(1) - -typedef struct tagSTMNOTE -{ - BYTE note; - BYTE insvol; - BYTE volcmd; - BYTE cmdinf; -} STMNOTE; - - -// Raw STM sampleinfo struct: -typedef struct tagSTMSAMPLE -{ - CHAR filename[14]; // Can't have long comments - just filename comments :) - WORD reserved; // ISA in memory when in ST 2 - WORD length; // Sample length - WORD loopbeg; // Loop start point - WORD loopend; // Loop end point - BYTE volume; // Volume - BYTE reserved2; // More reserved crap - WORD c2spd; // Good old c2spd - BYTE reserved3[6]; // Yet more of PSi's reserved crap -} STMSAMPLE; - - -// Raw STM header struct: -typedef struct tagSTMHEADER -{ - char songname[20]; // changed from CHAR - char trackername[8]; // !SCREAM! for ST 2.xx // changed from CHAR - CHAR unused; // 0x1A - CHAR filetype; // 1=song, 2=module (only 2 is supported, of course) :) - CHAR ver_major; // Like 2 - CHAR ver_minor; // "ditto" - BYTE inittempo; // initspeed= stm inittempo>>4 - BYTE numpat; // number of patterns - BYTE globalvol; // <- WoW! a RiGHT TRiANGLE =8*) - BYTE reserved[13]; // More of PSi's internal crap - STMSAMPLE sample[31]; // STM sample data - BYTE patorder[128]; // Docs say 64 - actually 128 -} STMHEADER; - -#pragma pack() - - - -BOOL CSoundFile::ReadSTM(const BYTE *lpStream, DWORD dwMemLength) -//--------------------------------------------------------------- -{ - STMHEADER *phdr = (STMHEADER *)lpStream; - DWORD dwMemPos = 0; - - if ((!lpStream) || (dwMemLength < sizeof(STMHEADER))) return FALSE; - if ((phdr->filetype != 2) || (phdr->unused != 0x1A) - || ((strnicmp(phdr->trackername, "!SCREAM!", 8)) - && (strnicmp(phdr->trackername, "BMOD2STM", 8)))) return FALSE; - memcpy(m_szNames[0], phdr->songname, 20); - // Read STM header - m_nType = MOD_TYPE_STM; - m_nSamples = 31; - m_nChannels = 4; - m_nInstruments = 0; - m_nMinPeriod = 64; - m_nMaxPeriod = 0x7FFF; - m_nDefaultSpeed = phdr->inittempo >> 4; - if (m_nDefaultSpeed < 1) m_nDefaultSpeed = 1; - m_nDefaultTempo = 125; - m_nDefaultGlobalVolume = phdr->globalvol << 2; - if (m_nDefaultGlobalVolume > 256) m_nDefaultGlobalVolume = 256; - memcpy(Order, phdr->patorder, 128); - // Setting up channels - for (UINT nSet=0; nSet<4; nSet++) - { - ChnSettings[nSet].dwFlags = 0; - ChnSettings[nSet].nVolume = 64; - ChnSettings[nSet].nPan = (nSet & 1) ? 0x40 : 0xC0; - } - // Reading samples - for (UINT nIns=0; nIns<31; nIns++) - { - MODINSTRUMENT *pIns = &Ins[nIns+1]; - STMSAMPLE *pStm = &phdr->sample[nIns]; // STM sample data - memcpy(pIns->name, pStm->filename, 13); - memcpy(m_szNames[nIns+1], pStm->filename, 12); - pIns->nC4Speed = bswapLE16(pStm->c2spd); - pIns->nGlobalVol = 64; - pIns->nVolume = pStm->volume << 2; - if (pIns->nVolume > 256) pIns->nVolume = 256; - pIns->nLength = bswapLE16(pStm->length); - if ((pIns->nLength < 4) || (!pIns->nVolume)) pIns->nLength = 0; - pIns->nLoopStart = bswapLE16(pStm->loopbeg); - pIns->nLoopEnd = bswapLE16(pStm->loopend); - if ((pIns->nLoopEnd > pIns->nLoopStart) && (pIns->nLoopEnd != 0xFFFF)) pIns->uFlags |= CHN_LOOP; - } - dwMemPos = sizeof(STMHEADER); - for (UINT nOrd=0; nOrd= 99) Order[nOrd] = 0xFF; - UINT nPatterns = phdr->numpat; - for (UINT nPat=0; nPat dwMemLength) return TRUE; - PatternSize[nPat] = 64; - PatternAllocSize[nPat] = 64; - if ((Patterns[nPat] = AllocatePattern(64, m_nChannels)) == NULL) return TRUE; - MODCOMMAND *m = Patterns[nPat]; - STMNOTE *p = (STMNOTE *)(lpStream + dwMemPos); - for (UINT n=0; n<64*4; n++, p++, m++) - { - UINT note,ins,vol,cmd; - // extract the various information from the 4 bytes that - // make up a single note - note = p->note; - ins = p->insvol >> 3; - vol = (p->insvol & 0x07) + (p->volcmd >> 1); - cmd = p->volcmd & 0x0F; - if ((ins) && (ins < 32)) m->instr = ins; - // special values of [SBYTE0] are handled here -> - // we have no idea if these strange values will ever be encountered - // but it appears as though stms sound correct. - if ((note == 0xFE) || (note == 0xFC)) m->note = 0xFE; else - // if note < 251, then all three bytes are stored in the file - if (note < 0xFC) m->note = (note >> 4)*12 + (note&0xf) + 37; - if (vol <= 64) { m->volcmd = VOLCMD_VOLUME; m->vol = vol; } - m->param = p->cmdinf; - switch(cmd) - { - // Axx set speed to xx - case 1: m->command = CMD_SPEED; m->param >>= 4; break; - // Bxx position jump - case 2: m->command = CMD_POSITIONJUMP; break; - // Cxx patternbreak to row xx - case 3: m->command = CMD_PATTERNBREAK; m->param = (m->param & 0xF0) * 10 + (m->param & 0x0F); break; - // Dxy volumeslide - case 4: m->command = CMD_VOLUMESLIDE; break; - // Exy toneslide down - case 5: m->command = CMD_PORTAMENTODOWN; break; - // Fxy toneslide up - case 6: m->command = CMD_PORTAMENTOUP; break; - // Gxx Tone portamento,speed xx - case 7: m->command = CMD_TONEPORTAMENTO; break; - // Hxy vibrato - case 8: m->command = CMD_VIBRATO; break; - // Ixy tremor, ontime x, offtime y - case 9: m->command = CMD_TREMOR; break; - // Jxy arpeggio - case 10: m->command = CMD_ARPEGGIO; break; - // Kxy Dual command H00 & Dxy - case 11: m->command = CMD_VIBRATOVOL; break; - // Lxy Dual command G00 & Dxy - case 12: m->command = CMD_TONEPORTAVOL; break; - // Xxx amiga command 8xx - case 0x18: m->command = CMD_PANNING8; break; - default: - m->command = m->param = 0; - } - } - dwMemPos += 64*4*4; - } - // Reading Samples - for (UINT nSmp=1; nSmp<=31; nSmp++) - { - MODINSTRUMENT *pIns = &Ins[nSmp]; - dwMemPos = (dwMemPos + 15) & (~15); - if (pIns->nLength) - { - UINT nPos = ((UINT)phdr->sample[nSmp-1].reserved) << 4; - if ((nPos >= sizeof(STMHEADER)) && (nPos+pIns->nLength <= dwMemLength)) dwMemPos = nPos; - if (dwMemPos < dwMemLength) - { - dwMemPos += ReadSample(pIns, RS_PCM8S, (LPSTR)(lpStream+dwMemPos),dwMemLength-dwMemPos); - } - } - } - return TRUE; -} - diff -Nru audacious-plugins-2.4.4/src/modplug/load_ult.cxx audacious-plugins-3.2/src/modplug/load_ult.cxx --- audacious-plugins-2.4.4/src/modplug/load_ult.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_ult.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,223 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque -*/ - -#include "stdafx.h" -#include "sndfile.h" - -//#pragma warning(disable:4244) - -#define ULT_16BIT 0x04 -#define ULT_LOOP 0x08 -#define ULT_BIDI 0x10 - -#pragma pack(1) - -// Raw ULT header struct: -typedef struct tagULTHEADER -{ - char id[15]; // changed from CHAR - char songtitle[32]; // changed from CHAR - BYTE reserved; -} ULTHEADER; - - -// Raw ULT sampleinfo struct: -typedef struct tagULTSAMPLE -{ - CHAR samplename[32]; - CHAR dosname[12]; - LONG loopstart; - LONG loopend; - LONG sizestart; - LONG sizeend; - BYTE volume; - BYTE flags; - WORD finetune; -} ULTSAMPLE; - -#pragma pack() - - -BOOL CSoundFile::ReadUlt(const BYTE *lpStream, DWORD dwMemLength) -//--------------------------------------------------------------- -{ - ULTHEADER *pmh = (ULTHEADER *)lpStream; - ULTSAMPLE *pus; - UINT nos, nop; - DWORD dwMemPos = 0; - - // try to read module header - if ((!lpStream) || (dwMemLength < 0x100)) return FALSE; - if (strncmp(pmh->id,"MAS_UTrack_V00",14)) return FALSE; - // Warning! Not supported ULT format, trying anyway - // if ((pmh->id[14] < '1') || (pmh->id[14] > '4')) return FALSE; - m_nType = MOD_TYPE_ULT; - m_nDefaultSpeed = 6; - m_nDefaultTempo = 125; - memcpy(m_szNames[0], pmh->songtitle, 32); - // read songtext - dwMemPos = sizeof(ULTHEADER); - if ((pmh->reserved) && (dwMemPos + pmh->reserved * 32 < dwMemLength)) - { - UINT len = pmh->reserved * 32; - m_lpszSongComments = new char[len + 1 + pmh->reserved]; - if (m_lpszSongComments) - { - for (UINT l=0; lreserved; l++) - { - memcpy(m_lpszSongComments+l*33, lpStream+dwMemPos+l*32, 32); - m_lpszSongComments[l*33+32] = 0x0D; - } - m_lpszSongComments[len] = 0; - } - dwMemPos += len; - } - if (dwMemPos >= dwMemLength) return TRUE; - nos = lpStream[dwMemPos++]; - m_nSamples = nos; - if (m_nSamples >= MAX_SAMPLES) m_nSamples = MAX_SAMPLES-1; - UINT smpsize = 64; - if (pmh->id[14] >= '4') smpsize += 2; - if (dwMemPos + nos*smpsize + 256 + 2 > dwMemLength) return TRUE; - for (UINT ins=1; ins<=nos; ins++, dwMemPos+=smpsize) if (ins<=m_nSamples) - { - pus = (ULTSAMPLE *)(lpStream+dwMemPos); - MODINSTRUMENT *pins = &Ins[ins]; - memcpy(m_szNames[ins], pus->samplename, 32); - memcpy(pins->name, pus->dosname, 12); - pins->nLoopStart = pus->loopstart; - pins->nLoopEnd = pus->loopend; - pins->nLength = pus->sizeend - pus->sizestart; - pins->nVolume = pus->volume; - pins->nGlobalVol = 64; - pins->nC4Speed = 8363; - if (pmh->id[14] >= '4') - { - pins->nC4Speed = pus->finetune; - } - if (pus->flags & ULT_LOOP) pins->uFlags |= CHN_LOOP; - if (pus->flags & ULT_BIDI) pins->uFlags |= CHN_PINGPONGLOOP; - if (pus->flags & ULT_16BIT) - { - pins->uFlags |= CHN_16BIT; - pins->nLoopStart >>= 1; - pins->nLoopEnd >>= 1; - } - } - memcpy(Order, lpStream+dwMemPos, 256); - dwMemPos += 256; - m_nChannels = lpStream[dwMemPos] + 1; - nop = lpStream[dwMemPos+1] + 1; - dwMemPos += 2; - if (m_nChannels > 32) m_nChannels = 32; - // Default channel settings - for (UINT nSet=0; nSetid[14]>='3') - { - if (dwMemPos + m_nChannels > dwMemLength) return TRUE; - for(UINT t=0; t 256) ChnSettings[t].nPan = 256; - } - } - // Allocating Patterns - for (UINT nAllocPat=0; nAllocPat dwMemLength) return TRUE; - UINT rep = 1; - UINT note = lpStream[dwMemPos++]; - if (note == 0xFC) - { - rep = lpStream[dwMemPos]; - note = lpStream[dwMemPos+1]; - dwMemPos += 2; - } - UINT instr = lpStream[dwMemPos++]; - UINT eff = lpStream[dwMemPos++]; - UINT dat1 = lpStream[dwMemPos++]; - UINT dat2 = lpStream[dwMemPos++]; - UINT cmd1 = eff & 0x0F; - UINT cmd2 = eff >> 4; - if (cmd1 == 0x0C) dat1 >>= 2; else - if (cmd1 == 0x0B) { cmd1 = dat1 = 0; } - if (cmd2 == 0x0C) dat2 >>= 2; else - if (cmd2 == 0x0B) { cmd2 = dat2 = 0; } - while ((rep != 0) && (row < 64)) - { - if (pat) - { - pat->instr = instr; - if (note) pat->note = note + 36; - if (cmd1 | dat1) - { - if (cmd1 == 0x0C) - { - pat->volcmd = VOLCMD_VOLUME; - pat->vol = dat1; - } else - { - pat->command = cmd1; - pat->param = dat1; - ConvertModCommand(pat); - } - } - if (cmd2 == 0x0C) - { - pat->volcmd = VOLCMD_VOLUME; - pat->vol = dat2; - } else - if ((cmd2 | dat2) && (!pat->command)) - { - pat->command = cmd2; - pat->param = dat2; - ConvertModCommand(pat); - } - pat += m_nChannels; - } - row++; - rep--; - } - } - } - } - // Reading Instruments - for (UINT smp=1; smp<=m_nSamples; smp++) if (Ins[smp].nLength) - { - if (dwMemPos >= dwMemLength) return TRUE; - UINT flags = (Ins[smp].uFlags & CHN_16BIT) ? RS_PCM16S : RS_PCM8S; - dwMemPos += ReadSample(&Ins[smp], flags, (LPSTR)(lpStream+dwMemPos), dwMemLength - dwMemPos); - } - return TRUE; -} - diff -Nru audacious-plugins-2.4.4/src/modplug/load_umx.cxx audacious-plugins-3.2/src/modplug/load_umx.cxx --- audacious-plugins-2.4.4/src/modplug/load_umx.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_umx.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,53 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque -*/ - -#include "stdafx.h" -#include "sndfile.h" - -#define MODMAGIC_OFFSET (20+31*30+130) - - -BOOL CSoundFile::ReadUMX(const BYTE *lpStream, DWORD dwMemLength) -//--------------------------------------------------------------- -{ - if ((!lpStream) || (dwMemLength < 0x800)) return FALSE; - // Rip Mods from UMX - if ((bswapLE32(*((DWORD *)(lpStream+0x20))) < dwMemLength) - && (bswapLE32(*((DWORD *)(lpStream+0x18))) <= dwMemLength - 0x10) - && (bswapLE32(*((DWORD *)(lpStream+0x18))) >= dwMemLength - 0x200)) - { - for (UINT uscan=0x40; uscan<0x500; uscan++) - { - DWORD dwScan = bswapLE32(*((DWORD *)(lpStream+uscan))); - // IT - if (dwScan == 0x4D504D49) - { - DWORD dwRipOfs = uscan; - return ReadIT(lpStream + dwRipOfs, dwMemLength - dwRipOfs); - } - // S3M - if (dwScan == 0x4D524353) - { - DWORD dwRipOfs = uscan - 44; - return ReadS3M(lpStream + dwRipOfs, dwMemLength - dwRipOfs); - } - // XM - if (!strnicmp((LPCSTR)(lpStream+uscan), "Extended Module", 15)) - { - DWORD dwRipOfs = uscan; - return ReadXM(lpStream + dwRipOfs, dwMemLength - dwRipOfs); - } - // MOD - if ((uscan > MODMAGIC_OFFSET) && (dwScan == 0x2e4b2e4d)) - { - DWORD dwRipOfs = uscan - MODMAGIC_OFFSET; - return ReadMod(lpStream+dwRipOfs, dwMemLength-dwRipOfs); - } - } - } - return FALSE; -} - diff -Nru audacious-plugins-2.4.4/src/modplug/load_wav.cxx audacious-plugins-3.2/src/modplug/load_wav.cxx --- audacious-plugins-2.4.4/src/modplug/load_wav.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_wav.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,248 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque -*/ - -#include "stdafx.h" -#include "sndfile.h" - -#ifndef WAVE_FORMAT_EXTENSIBLE -#define WAVE_FORMAT_EXTENSIBLE 0xFFFE -#endif - -///////////////////////////////////////////////////////////// -// WAV file support - -BOOL CSoundFile::ReadWav(const BYTE *lpStream, DWORD dwMemLength) -//--------------------------------------------------------------- -{ - DWORD dwMemPos = 0; - WAVEFILEHEADER phdr; - WAVEFORMATHEADER pfmt; - - if ((!lpStream) - || (dwMemLength < (DWORD)(sizeof(WAVEFORMATHEADER)+sizeof(WAVEFILEHEADER)))) - return FALSE; - - memcpy(&phdr, lpStream, sizeof(phdr)); - memcpy(&pfmt, lpStream+sizeof(phdr), sizeof(pfmt)); - - phdr.id_RIFF = bswapLE32(phdr.id_RIFF); - phdr.filesize = bswapLE32(phdr.filesize); - phdr.id_WAVE = bswapLE32(phdr.id_WAVE); - - pfmt.id_fmt = bswapLE32(pfmt.id_fmt); - pfmt.hdrlen = bswapLE32(pfmt.hdrlen); - pfmt.format = bswapLE16(pfmt.format); - pfmt.channels = bswapLE16(pfmt.channels); - pfmt.freqHz = bswapLE32(pfmt.freqHz); - pfmt.bytessec = bswapLE32(pfmt.bytessec); - pfmt.samplesize = bswapLE16(pfmt.samplesize); - pfmt.bitspersample = bswapLE16(pfmt.bitspersample); - - if ((phdr.id_RIFF != IFFID_RIFF) || (phdr.id_WAVE != IFFID_WAVE) - || (pfmt.id_fmt != IFFID_fmt)) return FALSE; - - dwMemPos = sizeof(WAVEFILEHEADER) + 8 + pfmt.hdrlen; - - if ((dwMemPos + 8 >= dwMemLength) - || ((pfmt.format != WAVE_FORMAT_PCM) && (pfmt.format != WAVE_FORMAT_EXTENSIBLE)) - || (pfmt.channels > 4) - || (!pfmt.channels) - || (!pfmt.freqHz) - || (pfmt.bitspersample & 7) - || (pfmt.bitspersample < 8) - || (pfmt.bitspersample > 32)) return FALSE; - - WAVEDATAHEADER pdata; - - for (;;) - { - memcpy(&pdata, lpStream+dwMemPos, sizeof(pdata)); - pdata.id_data = bswapLE32(pdata.id_data); - pdata.length = bswapLE32(pdata.length); - - if (pdata.id_data == IFFID_data) break; - dwMemPos += pdata.length + 8; - if (dwMemPos + 8 >= dwMemLength) return FALSE; - } - m_nType = MOD_TYPE_WAV; - m_nSamples = 0; - m_nInstruments = 0; - m_nChannels = 4; - m_nDefaultSpeed = 8; - m_nDefaultTempo = 125; - m_dwSongFlags |= SONG_LINEARSLIDES; // For no resampling - Order[0] = 0; - Order[1] = 0xFF; - PatternSize[0] = PatternSize[1] = 64; - PatternAllocSize[0] = PatternAllocSize[1] = 64; - if ((Patterns[0] = AllocatePattern(64, 4)) == NULL) return TRUE; - if ((Patterns[1] = AllocatePattern(64, 4)) == NULL) return TRUE; - UINT samplesize = (pfmt.channels * pfmt.bitspersample) >> 3; - UINT len = pdata.length, bytelen; - if (dwMemPos + len > dwMemLength - 8) len = dwMemLength - dwMemPos - 8; - len /= samplesize; - bytelen = len; - if (pfmt.bitspersample >= 16) bytelen *= 2; - if (len > MAX_SAMPLE_LENGTH) len = MAX_SAMPLE_LENGTH; - if (!len) return TRUE; - // Setting up module length - DWORD dwTime = ((len * 50) / pfmt.freqHz) + 1; - DWORD framesperrow = (dwTime + 63) / 63; - if (framesperrow < 4) framesperrow = 4; - UINT norders = 1; - while (framesperrow >= 0x20) - { - Order[norders++] = 1; - Order[norders] = 0xFF; - framesperrow = (dwTime + (64 * norders - 1)) / (64 * norders); - if (norders >= MAX_ORDERS-1) break; - } - m_nDefaultSpeed = framesperrow; - for (UINT iChn=0; iChn<4; iChn++) - { - ChnSettings[iChn].nPan = (iChn & 1) ? 256 : 0; - ChnSettings[iChn].nVolume = 64; - ChnSettings[iChn].dwFlags = 0; - } - // Setting up speed command - MODCOMMAND *pcmd = Patterns[0]; - pcmd[0].command = CMD_SPEED; - pcmd[0].param = (BYTE)m_nDefaultSpeed; - pcmd[0].note = 5*12+1; - pcmd[0].instr = 1; - pcmd[1].note = pcmd[0].note; - pcmd[1].instr = pcmd[0].instr; - m_nSamples = pfmt.channels; - // Support for Multichannel Wave - for (UINT nChn=0; nChnnLength = len; - pins->nC4Speed = pfmt.freqHz; - pins->nVolume = 256; - pins->nPan = 128; - pins->nGlobalVol = 64; - pins->uFlags = (WORD)((pfmt.bitspersample >= 16) ? CHN_16BIT : 0); - pins->uFlags |= CHN_PANNING; - if (m_nSamples > 1) - { - switch(nChn) - { - case 0: pins->nPan = 0; break; - case 1: pins->nPan = 256; break; - case 2: pins->nPan = (WORD)((m_nSamples == 3) ? 128 : 64); pcmd[nChn].command = CMD_S3MCMDEX; pcmd[nChn].param = 0x91; break; - case 3: pins->nPan = 192; pcmd[nChn].command = CMD_S3MCMDEX; pcmd[nChn].param = 0x91; break; - default: pins->nPan = 128; break; - } - } - if ((pins->pSample = AllocateSample(bytelen+8)) == NULL) return TRUE; - if (pfmt.bitspersample >= 16) - { - int slsize = pfmt.bitspersample >> 3; - signed short *p = (signed short *)pins->pSample; - signed char *psrc = (signed char *)(lpStream+dwMemPos+8+nChn*slsize+slsize-2); - for (UINT i=0; ipSample; - signed char *psrc = (signed char *)(lpStream+dwMemPos+8+nChn); - for (UINT i=0; i dwBytes)) return FALSE; - nPos = 0; - while ((nPos < nLen) && (dwBytes > 4)) - { - int nIndex; - value = bswapLE16(*((short int *)psrc)); - nIndex = bswapLE16((short int)psrc[2]); - psrc += 4; - dwBytes -= 4; - pdest[nPos++] = (short int)value; - for (UINT i=0; ((i<(pkBlkAlign-4)*2) && (nPos < nLen) && (dwBytes)); i++) - { - BYTE delta; - if (i & 1) - { - delta = (BYTE)(((*(psrc++)) >> 4) & 0x0F); - dwBytes--; - } else - { - delta = (BYTE)((*psrc) & 0x0F); - } - int v = gIMAUnpackTable[nIndex % 90] >> 3; - if (delta & 1) v += gIMAUnpackTable[nIndex] >> 2; - if (delta & 2) v += gIMAUnpackTable[nIndex] >> 1; - if (delta & 4) v += gIMAUnpackTable[nIndex]; - if (delta & 8) value -= v; else value += v; - nIndex += gIMAIndexTab[delta & 7]; - if (nIndex < 0) nIndex = 0; else - if (nIndex > 88) nIndex = 88; - if (value > 32767) value = 32767; else - if (value < -32768) value = -32768; - pdest[nPos++] = (short int)value; - } - } - return TRUE; -} - - - diff -Nru audacious-plugins-2.4.4/src/modplug/load_xm.cxx audacious-plugins-3.2/src/modplug/load_xm.cxx --- audacious-plugins-2.4.4/src/modplug/load_xm.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/load_xm.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,529 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque , - * Adam Goode (endian and char fixes for PPC) -*/ - -#include "stdafx.h" -#include "sndfile.h" - -//////////////////////////////////////////////////////// -// FastTracker II XM file support - -#ifdef MSC_VER -#pragma warning(disable:4244) -#endif - -#pragma pack(1) -typedef struct tagXMFILEHEADER -{ - DWORD size; - WORD norder; - WORD restartpos; - WORD channels; - WORD patterns; - WORD instruments; - WORD flags; - WORD speed; - WORD tempo; - BYTE order[256]; -} XMFILEHEADER; - - -typedef struct tagXMINSTRUMENTHEADER -{ - DWORD size; - CHAR name[22]; - BYTE type; - BYTE samples; - BYTE samplesh; -} XMINSTRUMENTHEADER; - - -typedef struct tagXMSAMPLEHEADER -{ - DWORD shsize; - BYTE snum[96]; - WORD venv[24]; - WORD penv[24]; - BYTE vnum, pnum; - BYTE vsustain, vloops, vloope, psustain, ploops, ploope; - BYTE vtype, ptype; - BYTE vibtype, vibsweep, vibdepth, vibrate; - WORD volfade; - WORD res; - BYTE reserved1[20]; -} XMSAMPLEHEADER; - -typedef struct tagXMSAMPLESTRUCT -{ - DWORD samplen; - DWORD loopstart; - DWORD looplen; - BYTE vol; - signed char finetune; - BYTE type; - BYTE pan; - signed char relnote; - BYTE res; - char name[22]; -} XMSAMPLESTRUCT; -#pragma pack() - - -BOOL CSoundFile::ReadXM(const BYTE *lpStream, DWORD dwMemLength) -//-------------------------------------------------------------- -{ - XMSAMPLEHEADER xmsh; - XMSAMPLESTRUCT xmss; - DWORD dwMemPos, dwHdrSize; - WORD norders=0, restartpos=0, channels=0, patterns=0, instruments=0; - WORD xmflags=0, deftempo=125, defspeed=6; - BOOL InstUsed[256]; - BYTE channels_used[MAX_CHANNELS]; - BYTE pattern_map[256]; - BOOL samples_used[MAX_SAMPLES]; - UINT unused_samples; - - m_nChannels = 0; - if ((!lpStream) || (dwMemLength < 0x200)) return FALSE; - if (strnicmp((LPCSTR)lpStream, "Extended Module", 15)) return FALSE; - - memcpy(m_szNames[0], lpStream+17, 20); - dwHdrSize = bswapLE32(*((DWORD *)(lpStream+60))); - norders = bswapLE16(*((WORD *)(lpStream+64))); - if (norders > MAX_ORDERS) return FALSE; - restartpos = bswapLE16(*((WORD *)(lpStream+66))); - channels = bswapLE16(*((WORD *)(lpStream+68))); - if (channels > 64) return FALSE; - m_nType = MOD_TYPE_XM; - m_nMinPeriod = 27; - m_nMaxPeriod = 54784; - m_nChannels = channels; - if (restartpos < norders) m_nRestartPos = restartpos; - patterns = bswapLE16(*((WORD *)(lpStream+70))); - if (patterns > 256) patterns = 256; - instruments = bswapLE16(*((WORD *)(lpStream+72))); - if (instruments >= MAX_INSTRUMENTS) instruments = MAX_INSTRUMENTS-1; - m_nInstruments = instruments; - m_dwSongFlags |= SONG_INSTRUMENTMODE; - m_nSamples = 0; - memcpy(&xmflags, lpStream+74, 2); - xmflags = bswapLE16(xmflags); - if (xmflags & 1) m_dwSongFlags |= SONG_LINEARSLIDES; - if (xmflags & 0x1000) m_dwSongFlags |= SONG_EXFILTERRANGE; - defspeed = bswapLE16(*((WORD *)(lpStream+76))); - deftempo = bswapLE16(*((WORD *)(lpStream+78))); - if ((deftempo >= 32) && (deftempo < 256)) m_nDefaultTempo = deftempo; - if ((defspeed > 0) && (defspeed < 40)) m_nDefaultSpeed = defspeed; - memcpy(Order, lpStream+80, norders); - memset(InstUsed, 0, sizeof(InstUsed)); - if (patterns > MAX_PATTERNS) - { - UINT i, j; - for (i=0; i= dwMemLength) return TRUE; - // Reading patterns - memset(channels_used, 0, sizeof(channels_used)); - for (UINT ipat=0; ipat= dwMemLength) || (dwSize & 0xFFFFFF00)) - { - if (dwMemPos + 4 >= dwMemLength) break; - dwMemPos++; - dwSize = bswapLE32(*((DWORD *)(lpStream+dwMemPos))); - } - rows = bswapLE16(*((WORD *)(lpStream+dwMemPos+5))); - if ((!rows) || (rows > 256)) rows = 64; - packsize = bswapLE16(*((WORD *)(lpStream+dwMemPos+7))); - if (dwMemPos + dwSize + 4 > dwMemLength) return TRUE; - dwMemPos += dwSize; - if (dwMemPos + packsize + 4 > dwMemLength) return TRUE; - MODCOMMAND *p; - if (ipatmap < MAX_PATTERNS) - { - PatternSize[ipatmap] = rows; - PatternAllocSize[ipatmap] = rows; - if ((Patterns[ipatmap] = AllocatePattern(rows, m_nChannels)) == NULL) return TRUE; - if (!packsize) continue; - p = Patterns[ipatmap]; - } else p = NULL; - const BYTE *src = lpStream+dwMemPos; - UINT j=0; - for (UINT row=0; rownote = src[j++]; - if (b & 2) p->instr = src[j++]; - if (b & 4) vol = src[j++]; - if (b & 8) p->command = src[j++]; - if (b & 16) p->param = src[j++]; - } else - { - p->note = b; - p->instr = src[j++]; - vol = src[j++]; - p->command = src[j++]; - p->param = src[j++]; - } - if (p->note == 97) p->note = 0xFF; else - if ((p->note) && (p->note < 97)) p->note += 12; - if (p->note) channels_used[chn] = 1; - if (p->command | p->param) ConvertModCommand(p); - if (p->instr == 0xff) p->instr = 0; - if (p->instr) InstUsed[p->instr] = TRUE; - if ((vol >= 0x10) && (vol <= 0x50)) - { - p->volcmd = VOLCMD_VOLUME; - p->vol = vol - 0x10; - } else - if (vol >= 0x60) - { - UINT v = vol & 0xF0; - vol &= 0x0F; - p->vol = vol; - switch(v) - { - // 60-6F: Volume Slide Down - case 0x60: p->volcmd = VOLCMD_VOLSLIDEDOWN; break; - // 70-7F: Volume Slide Up: - case 0x70: p->volcmd = VOLCMD_VOLSLIDEUP; break; - // 80-8F: Fine Volume Slide Down - case 0x80: p->volcmd = VOLCMD_FINEVOLDOWN; break; - // 90-9F: Fine Volume Slide Up - case 0x90: p->volcmd = VOLCMD_FINEVOLUP; break; - // A0-AF: Set Vibrato Speed - case 0xA0: p->volcmd = VOLCMD_VIBRATOSPEED; break; - // B0-BF: Vibrato - case 0xB0: p->volcmd = VOLCMD_VIBRATO; break; - // C0-CF: Set Panning - case 0xC0: p->volcmd = VOLCMD_PANNING; p->vol = (vol << 2) + 2; break; - // D0-DF: Panning Slide Left - case 0xD0: p->volcmd = VOLCMD_PANSLIDELEFT; break; - // E0-EF: Panning Slide Right - case 0xE0: p->volcmd = VOLCMD_PANSLIDERIGHT; break; - // F0-FF: Tone Portamento - case 0xF0: p->volcmd = VOLCMD_TONEPORTAMENTO; break; - } - } - p++; - } else - if (j < packsize) - { - BYTE b = src[j++]; - if (b & 0x80) - { - if (b & 1) j++; - if (b & 2) j++; - if (b & 4) j++; - if (b & 8) j++; - if (b & 16) j++; - } else j += 4; - } else break; - } - } - dwMemPos += packsize; - } - // Wrong offset check - while (dwMemPos + 4 < dwMemLength) - { - DWORD d = bswapLE32(*((DWORD *)(lpStream+dwMemPos))); - if (d < 0x300) break; - dwMemPos++; - } - memset(samples_used, 0, sizeof(samples_used)); - unused_samples = 0; - // Reading instruments - for (UINT iIns=1; iIns<=instruments; iIns++) - { - XMINSTRUMENTHEADER *pih; - BYTE flags[32]; - DWORD samplesize[32]; - UINT samplemap[32]; - WORD nsamples; - - if (dwMemPos + sizeof(XMINSTRUMENTHEADER) >= dwMemLength) return TRUE; - pih = (XMINSTRUMENTHEADER *)(lpStream+dwMemPos); - if (dwMemPos + bswapLE32(pih->size) > dwMemLength) return TRUE; - if ((Headers[iIns] = new INSTRUMENTHEADER) == NULL) continue; - memset(Headers[iIns], 0, sizeof(INSTRUMENTHEADER)); - memcpy(Headers[iIns]->name, pih->name, 22); - if ((nsamples = pih->samples) > 0) - { - if (dwMemPos + sizeof(XMSAMPLEHEADER) > dwMemLength) return TRUE; - memcpy(&xmsh, lpStream+dwMemPos+sizeof(XMINSTRUMENTHEADER), sizeof(XMSAMPLEHEADER)); - xmsh.shsize = bswapLE32(xmsh.shsize); - for (int i = 0; i < 24; ++i) { - xmsh.venv[i] = bswapLE16(xmsh.venv[i]); - xmsh.penv[i] = bswapLE16(xmsh.penv[i]); - } - xmsh.volfade = bswapLE16(xmsh.volfade); - xmsh.res = bswapLE16(xmsh.res); - dwMemPos += bswapLE32(pih->size); - } else - { - if (bswapLE32(pih->size)) dwMemPos += bswapLE32(pih->size); - else dwMemPos += sizeof(XMINSTRUMENTHEADER); - continue; - } - memset(samplemap, 0, sizeof(samplemap)); - if (nsamples > 32) return TRUE; - UINT newsamples = m_nSamples; - for (UINT nmap=0; nmap= MAX_SAMPLES) - { - n = m_nSamples; - while (n > 0) - { - if (!Ins[n].pSample) - { - for (UINT xmapchk=0; xmapchk < nmap; xmapchk++) - { - if (samplemap[xmapchk] == n) goto alreadymapped; - } - for (UINT clrs=1; clrsKeyboard[ks] == n) pks->Keyboard[ks] = 0; - } - } - break; - } - alreadymapped: - n--; - } -#ifndef MODPLUG_FASTSOUNDLIB - // Damn! more than 200 samples: look for duplicates - if (!n) - { - if (!unused_samples) - { - unused_samples = DetectUnusedSamples(samples_used); - if (!unused_samples) unused_samples = 0xFFFF; - } - if ((unused_samples) && (unused_samples != 0xFFFF)) - { - for (UINT iext=m_nSamples; iext>=1; iext--) if (!samples_used[iext]) - { - unused_samples--; - samples_used[iext] = TRUE; - DestroySample(iext); - n = iext; - for (UINT mapchk=0; mapchkKeyboard[ks] == n) pks->Keyboard[ks] = 0; - } - } - memset(&Ins[n], 0, sizeof(Ins[0])); - break; - } - } - } -#endif // MODPLUG_FASTSOUNDLIB - } - if (newsamples < n) newsamples = n; - samplemap[nmap] = n; - } - m_nSamples = newsamples; - // Reading Volume Envelope - INSTRUMENTHEADER *penv = Headers[iIns]; - penv->nMidiProgram = pih->type; - penv->nFadeOut = xmsh.volfade; - penv->nPan = 128; - penv->nPPC = 5*12; - if (xmsh.vtype & 1) penv->dwFlags |= ENV_VOLUME; - if (xmsh.vtype & 2) penv->dwFlags |= ENV_VOLSUSTAIN; - if (xmsh.vtype & 4) penv->dwFlags |= ENV_VOLLOOP; - if (xmsh.ptype & 1) penv->dwFlags |= ENV_PANNING; - if (xmsh.ptype & 2) penv->dwFlags |= ENV_PANSUSTAIN; - if (xmsh.ptype & 4) penv->dwFlags |= ENV_PANLOOP; - if (xmsh.vnum > 12) xmsh.vnum = 12; - if (xmsh.pnum > 12) xmsh.pnum = 12; - penv->VolEnv.nNodes = xmsh.vnum; - if (!xmsh.vnum) penv->dwFlags &= ~ENV_VOLUME; - if (!xmsh.pnum) penv->dwFlags &= ~ENV_PANNING; - if (!(penv->dwFlags & ENV_VOLUME) && !penv->nFadeOut) { - penv->nFadeOut = 8192; - } - penv->PanEnv.nNodes = xmsh.pnum; - penv->VolEnv.nSustainStart = penv->VolEnv.nSustainEnd = xmsh.vsustain; - if (xmsh.vsustain >= 12) penv->dwFlags &= ~ENV_VOLSUSTAIN; - penv->VolEnv.nLoopStart = xmsh.vloops; - penv->VolEnv.nLoopEnd = xmsh.vloope; - if (penv->VolEnv.nLoopEnd >= 12) penv->VolEnv.nLoopEnd = 0; - if (penv->VolEnv.nLoopStart >= penv->VolEnv.nLoopEnd) penv->dwFlags &= ~ENV_VOLLOOP; - penv->PanEnv.nSustainStart = penv->PanEnv.nSustainEnd = xmsh.psustain; - if (xmsh.psustain >= 12) penv->dwFlags &= ~ENV_PANSUSTAIN; - penv->PanEnv.nLoopStart = xmsh.ploops; - penv->PanEnv.nLoopEnd = xmsh.ploope; - if (penv->PanEnv.nLoopEnd >= 12) penv->PanEnv.nLoopEnd = 0; - if (penv->PanEnv.nLoopStart >= penv->PanEnv.nLoopEnd) penv->dwFlags &= ~ENV_PANLOOP; - penv->nGlobalVol = 128; - for (UINT ienv=0; ienv<12; ienv++) - { - penv->VolEnv.Ticks[ienv] = (WORD)xmsh.venv[ienv*2]; - penv->VolEnv.Values[ienv] = (BYTE)xmsh.venv[ienv*2+1]; - penv->PanEnv.Ticks[ienv] = (WORD)xmsh.penv[ienv*2]; - penv->PanEnv.Values[ienv] = (BYTE)xmsh.penv[ienv*2+1]; - if (ienv) - { - if (penv->VolEnv.Ticks[ienv] < penv->VolEnv.Ticks[ienv-1]) - { - penv->VolEnv.Ticks[ienv] &= 0xFF; - penv->VolEnv.Ticks[ienv] += penv->VolEnv.Ticks[ienv-1] & 0xFF00; - if (penv->VolEnv.Ticks[ienv] < penv->VolEnv.Ticks[ienv-1]) penv->VolEnv.Ticks[ienv] += 0x100; - } - if (penv->PanEnv.Ticks[ienv] < penv->PanEnv.Ticks[ienv-1]) - { - penv->PanEnv.Ticks[ienv] &= 0xFF; - penv->PanEnv.Ticks[ienv] += penv->PanEnv.Ticks[ienv-1] & 0xFF00; - if (penv->PanEnv.Ticks[ienv] < penv->PanEnv.Ticks[ienv-1]) penv->PanEnv.Ticks[ienv] += 0x100; - } - } - } - for (UINT j=0; j<96; j++) - { - penv->NoteMap[j+12] = j+1+12; - if (xmsh.snum[j] < nsamples) - penv->Keyboard[j+12] = samplemap[xmsh.snum[j]]; - } - // Reading samples - for (UINT ins=0; ins dwMemLength) - || (dwMemPos + xmsh.shsize > dwMemLength)) return TRUE; - memcpy(&xmss, lpStream+dwMemPos, sizeof(xmss)); - xmss.samplen = bswapLE32(xmss.samplen); - xmss.loopstart = bswapLE32(xmss.loopstart); - xmss.looplen = bswapLE32(xmss.looplen); - dwMemPos += xmsh.shsize; - flags[ins] = (xmss.type & 0x10) ? RS_PCM16D : RS_PCM8D; - if (xmss.type & 0x20) flags[ins] = (xmss.type & 0x10) ? RS_STPCM16D : RS_STPCM8D; - samplesize[ins] = xmss.samplen; - if (!samplemap[ins]) continue; - if (xmss.type & 0x10) - { - xmss.looplen >>= 1; - xmss.loopstart >>= 1; - xmss.samplen >>= 1; - } - if (xmss.type & 0x20) - { - xmss.looplen >>= 1; - xmss.loopstart >>= 1; - xmss.samplen >>= 1; - } - if (xmss.samplen > MAX_SAMPLE_LENGTH) xmss.samplen = MAX_SAMPLE_LENGTH; - if (xmss.loopstart >= xmss.samplen) xmss.type &= ~3; - xmss.looplen += xmss.loopstart; - if (xmss.looplen > xmss.samplen) xmss.looplen = xmss.samplen; - if (!xmss.looplen) xmss.type &= ~3; - UINT imapsmp = samplemap[ins]; - memcpy(m_szNames[imapsmp], xmss.name, 22); - m_szNames[imapsmp][22] = 0; - MODINSTRUMENT *pins = &Ins[imapsmp]; - pins->nLength = (xmss.samplen > MAX_SAMPLE_LENGTH) ? MAX_SAMPLE_LENGTH : xmss.samplen; - pins->nLoopStart = xmss.loopstart; - pins->nLoopEnd = xmss.looplen; - if (pins->nLoopEnd > pins->nLength) pins->nLoopEnd = pins->nLength; - if (pins->nLoopStart >= pins->nLoopEnd) - { - pins->nLoopStart = pins->nLoopEnd = 0; - } - if (xmss.type & 3) pins->uFlags |= CHN_LOOP; - if (xmss.type & 2) pins->uFlags |= CHN_PINGPONGLOOP; - pins->nVolume = xmss.vol << 2; - if (pins->nVolume > 256) pins->nVolume = 256; - pins->nGlobalVol = 64; - if ((xmss.res == 0xAD) && (!(xmss.type & 0x30))) - { - flags[ins] = RS_ADPCM4; - samplesize[ins] = (samplesize[ins]+1)/2 + 16; - } - pins->nFineTune = xmss.finetune; - pins->RelativeTone = (int)xmss.relnote; - pins->nPan = xmss.pan; - pins->uFlags |= CHN_PANNING; - pins->nVibType = xmsh.vibtype; - pins->nVibSweep = xmsh.vibsweep; - pins->nVibDepth = xmsh.vibdepth; - pins->nVibRate = xmsh.vibrate/4; - memcpy(pins->name, xmss.name, 22); - pins->name[21] = 0; - } -#if 0 - if ((xmsh.reserved2 > nsamples) && (xmsh.reserved2 <= 16)) - { - dwMemPos += (((UINT)xmsh.reserved2) - nsamples) * xmsh.shsize; - } -#endif - for (UINT ismpd=0; ismpd= dwMemLength) break; - } - } - /* set these to default */ - for (UINT in=0; in - * copyright (c) 2005-2006 Mrs. Brisby - * URL: http://nimh.org/schism/ - * URL: http://rigelseven.com/schism/ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#ifndef MIDI_H -#define MIDI_H - -#ifdef __cplusplus -extern "C" { -#endif - -struct midi_provider; -struct midi_port; - -struct midi_driver { - unsigned int flags; -#define MIDI_PORT_CAN_SCHEDULE 1 - - void (*poll)(struct midi_provider *m); - int (*thread)(struct midi_provider *m); - - int (*enable)(struct midi_port *d); - int (*disable)(struct midi_port *d); - - void (*send)(struct midi_port *d, - unsigned char *seq, unsigned int len, unsigned int delay); - void (*drain)(struct midi_port *d); -}; - -struct midi_provider { - const char *name; - void (*poll)(struct midi_provider *); - void *thread; /*actually SDL_Thread* */ - - struct midi_provider *next; - - /* forwarded; don't touch */ - int (*enable)(struct midi_port *d); - int (*disable)(struct midi_port *d); - - void (*send_now)(struct midi_port *d, - unsigned char *seq, unsigned int len, unsigned int delay); - void (*send_later)(struct midi_port *d, - unsigned char *seq, unsigned int len, unsigned int delay); - void (*drain)(struct midi_port *d); -}; -struct midi_port { - int io, iocap; -#define MIDI_INPUT 1 -#define MIDI_OUTPUT 2 - char *name; - int num; - - void *userdata; - int free_userdata; - int (*enable)(struct midi_port *d); - int (*disable)(struct midi_port *d); - void (*send_now)(struct midi_port *d, - unsigned char *seq, unsigned int len, unsigned int delay); - void (*send_later)(struct midi_port *d, - unsigned char *seq, unsigned int len, unsigned int delay); - void (*drain)(struct midi_port *d); - - struct midi_provider *provider; -}; - - -/* schism calls these directly */ -int midi_engine_start(void); -void midi_engine_reset(void); -void midi_engine_stop(void); -void midi_engine_poll_ports(void); - -/* some parts of schism call this; it means "immediately" */ -void midi_send_now(unsigned char *seq, unsigned int len); - -/* ... but the player calls this */ -void midi_send_buffer(unsigned char *data, unsigned int len, unsigned int pos); -void midi_send_flush(void); - -/* from the SDL event mechanism (x is really SDL_Event) */ -int midi_engine_handle_event(void *x); - -struct midi_port *midi_engine_port(int n, const char **name); -int midi_engine_port_count(void); - -/* midi engines register a provider (one each!) */ -struct midi_provider *midi_provider_register(const char *name, struct midi_driver *f); - - -/* midi engines list ports this way */ -int midi_port_register(struct midi_provider *p, -int inout, const char *name, void *userdata, int free_userdata); - -int midi_port_foreach(struct midi_provider *p, struct midi_port **cursor); -void midi_port_unregister(int num); - -/* only call these if the event isn't really MIDI but you want most of the system - to act like it is... - - midi drivers should never all these... -*/ -enum midi_note { - MIDI_NOTEOFF, - MIDI_NOTEON, - MIDI_KEYPRESS, -}; -void midi_event_note(enum midi_note mnstatus, int channel, int note, int velocity); -void midi_event_controller(int channel, int param, int value); -void midi_event_program(int channel, int value); -void midi_event_aftertouch(int channel, int value); -void midi_event_pitchbend(int channel, int value); -void midi_event_tick(void); -void midi_event_sysex(const unsigned char *data, unsigned int len); -void midi_event_system(int argv, int param); - -/* midi drivers call this when they received an event */ -void midi_received_cb(struct midi_port *src, unsigned char *data, unsigned int len); - - -#ifdef USE_NETWORK -int ip_midi_setup(void); -#endif -#ifdef USE_OSS -int oss_midi_setup(void); -#endif -#ifdef USE_ALSA -int alsa_midi_setup(void); -#endif -#ifdef USE_WIN32MM -int win32mm_midi_setup(void); -#endif -#ifdef MACOSX -int macosx_midi_setup(void); -#endif - - - -#define MIDI_TICK_QUANTIZE 0x00000001 -#define MIDI_BASE_PROGRAM1 0x00000002 -#define MIDI_RECORD_NOTEOFF 0x00000004 -#define MIDI_RECORD_VELOCITY 0x00000008 -#define MIDI_RECORD_AFTERTOUCH 0x00000010 -#define MIDI_CUT_NOTE_OFF 0x00000020 -#define MIDI_PITCH_BEND 0x00000040 -#define MIDI_EMBED_DATA 0x00000080 -#define MIDI_RECORD_SDX 0x00000100 -#define MIDI_DISABLE_RECORD 0x00010000 - -/* configurable midi stuff */ -int midi_flags = MIDI_TICK_QUANTIZE | MIDI_RECORD_NOTEOFF - | MIDI_RECORD_VELOCITY | MIDI_RECORD_AFTERTOUCH - | MIDI_PITCH_BEND; - -int midi_pitch_depth = 12; -int midi_amplification = 100; -int midi_c5note = 60; - -/* only available with networks */ -void ip_midi_setports(int n); -int ip_midi_getports(void); - -#ifdef __cplusplus -}; -#endif - -#endif diff -Nru audacious-plugins-2.4.4/src/modplug/mmcmp.cxx audacious-plugins-3.2/src/modplug/mmcmp.cxx --- audacious-plugins-2.4.4/src/modplug/mmcmp.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/mmcmp.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,406 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque -*/ - -#include "stdafx.h" -#include "sndfile.h" - -BOOL PP20_Unpack(LPCBYTE *ppMemFile, LPDWORD pdwMemLength); - -typedef struct MMCMPFILEHEADER -{ - DWORD id_ziRC; // "ziRC" - DWORD id_ONia; // "ONia" - WORD hdrsize; -} MMCMPFILEHEADER, *LPMMCMPFILEHEADER; - -typedef struct MMCMPHEADER -{ - WORD version; - WORD nblocks; - DWORD filesize; - DWORD blktable; - BYTE glb_comp; - BYTE fmt_comp; -} MMCMPHEADER, *LPMMCMPHEADER; - -typedef struct MMCMPBLOCK -{ - DWORD unpk_size; - DWORD pk_size; - DWORD xor_chk; - WORD sub_blk; - WORD flags; - WORD tt_entries; - WORD num_bits; -} MMCMPBLOCK, *LPMMCMPBLOCK; - -typedef struct MMCMPSUBBLOCK -{ - DWORD unpk_pos; - DWORD unpk_size; -} MMCMPSUBBLOCK, *LPMMCMPSUBBLOCK; - -#define MMCMP_COMP 0x0001 -#define MMCMP_DELTA 0x0002 -#define MMCMP_16BIT 0x0004 -#define MMCMP_STEREO 0x0100 -#define MMCMP_ABS16 0x0200 -#define MMCMP_ENDIAN 0x0400 - -typedef struct MMCMPBITBUFFER -{ - UINT bitcount; - DWORD bitbuffer; - LPCBYTE pSrc; - LPCBYTE pEnd; - - DWORD GetBits(UINT nBits); -} MMCMPBITBUFFER; - - -DWORD MMCMPBITBUFFER::GetBits(UINT nBits) -//--------------------------------------- -{ - DWORD d; - if (!nBits) return 0; - while (bitcount < 24) - { - bitbuffer |= ((pSrc < pEnd) ? *pSrc++ : 0) << bitcount; - bitcount += 8; - } - d = bitbuffer & ((1 << nBits) - 1); - bitbuffer >>= nBits; - bitcount -= nBits; - return d; -} - -//#define MMCMP_LOG - -#ifdef MMCMP_LOG -extern void Log(LPCSTR s, ...); -#endif - -const DWORD MMCMP8BitCommands[8] = -{ - 0x01, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x78, 0xF8 -}; - -const UINT MMCMP8BitFetch[8] = -{ - 3, 3, 3, 3, 2, 1, 0, 0 -}; - -const DWORD MMCMP16BitCommands[16] = -{ - 0x01, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x78, 0xF0, - 0x1F0, 0x3F0, 0x7F0, 0xFF0, 0x1FF0, 0x3FF0, 0x7FF0, 0xFFF0 -}; - -const UINT MMCMP16BitFetch[16] = -{ - 4, 4, 4, 4, 3, 2, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0 -}; - - -BOOL MMCMP_Unpack(LPCBYTE *ppMemFile, LPDWORD pdwMemLength) -//--------------------------------------------------------- -{ - DWORD dwMemLength = *pdwMemLength; - LPCBYTE lpMemFile = *ppMemFile; - LPBYTE pBuffer; - LPMMCMPFILEHEADER pmfh = (LPMMCMPFILEHEADER)(lpMemFile); - LPMMCMPHEADER pmmh = (LPMMCMPHEADER)(lpMemFile+10); - LPDWORD pblk_table; - DWORD dwFileSize; - - if (PP20_Unpack(ppMemFile, pdwMemLength)) - { - return TRUE; - } - if ((dwMemLength < 256) || (!pmfh) || (pmfh->id_ziRC != 0x4352697A) || (pmfh->id_ONia != 0x61694e4f) || (pmfh->hdrsize < 14) - || (!pmmh->nblocks) || (pmmh->filesize < 16) || (pmmh->filesize > 0x8000000) - || (pmmh->blktable >= dwMemLength) || (pmmh->blktable + 4*pmmh->nblocks > dwMemLength)) return FALSE; - dwFileSize = pmmh->filesize; - if ((pBuffer = (LPBYTE)GlobalAllocPtr(GHND, (dwFileSize + 31) & ~15)) == NULL) return FALSE; - pblk_table = (LPDWORD)(lpMemFile+pmmh->blktable); - for (UINT nBlock=0; nBlocknblocks; nBlock++) - { - DWORD dwMemPos = pblk_table[nBlock]; - LPMMCMPBLOCK pblk = (LPMMCMPBLOCK)(lpMemFile+dwMemPos); - LPMMCMPSUBBLOCK psubblk = (LPMMCMPSUBBLOCK)(lpMemFile+dwMemPos+20); - - if ((dwMemPos + 20 >= dwMemLength) || (dwMemPos + 20 + pblk->sub_blk*8 >= dwMemLength)) break; - dwMemPos += 20 + pblk->sub_blk*8; -#ifdef MMCMP_LOG - Log("block %d: flags=%04X sub_blocks=%d", nBlock, (UINT)pblk->flags, (UINT)pblk->sub_blk); - Log(" pksize=%d unpksize=%d", pblk->pk_size, pblk->unpk_size); - Log(" tt_entries=%d num_bits=%d\n", pblk->tt_entries, pblk->num_bits); -#endif - // Data is not packed - if (!(pblk->flags & MMCMP_COMP)) - { - for (UINT i=0; isub_blk; i++) - { - if ((psubblk->unpk_pos > dwFileSize) || (psubblk->unpk_pos + psubblk->unpk_size > dwFileSize)) break; -#ifdef MMCMP_LOG - Log(" Unpacked sub-block %d: offset %d, size=%d\n", i, psubblk->unpk_pos, psubblk->unpk_size); -#endif - memcpy(pBuffer+psubblk->unpk_pos, lpMemFile+dwMemPos, psubblk->unpk_size); - dwMemPos += psubblk->unpk_size; - psubblk++; - } - } else - // Data is 16-bit packed - if (pblk->flags & MMCMP_16BIT) - { - MMCMPBITBUFFER bb; - LPWORD pDest = (LPWORD)(pBuffer + psubblk->unpk_pos); - DWORD dwSize = psubblk->unpk_size >> 1; - DWORD dwPos = 0; - UINT numbits = pblk->num_bits; - UINT subblk = 0, oldval = 0; - -#ifdef MMCMP_LOG - Log(" 16-bit block: pos=%d size=%d ", psubblk->unpk_pos, psubblk->unpk_size); - if (pblk->flags & MMCMP_DELTA) Log("DELTA "); - if (pblk->flags & MMCMP_ABS16) Log("ABS16 "); - Log("\n"); -#endif - bb.bitcount = 0; - bb.bitbuffer = 0; - bb.pSrc = lpMemFile+dwMemPos+pblk->tt_entries; - bb.pEnd = lpMemFile+dwMemPos+pblk->pk_size; - while (subblk < pblk->sub_blk) - { - UINT newval = 0x10000; - DWORD d = bb.GetBits(numbits+1); - - if (d >= MMCMP16BitCommands[numbits]) - { - UINT nFetch = MMCMP16BitFetch[numbits]; - UINT newbits = bb.GetBits(nFetch) + ((d - MMCMP16BitCommands[numbits]) << nFetch); - if (newbits != numbits) - { - numbits = newbits & 0x0F; - } else - { - if ((d = bb.GetBits(4)) == 0x0F) - { - if (bb.GetBits(1)) break; - newval = 0xFFFF; - } else - { - newval = 0xFFF0 + d; - } - } - } else - { - newval = d; - } - if (newval < 0x10000) - { - newval = (newval & 1) ? (UINT)(-(LONG)((newval+1) >> 1)) : (UINT)(newval >> 1); - if (pblk->flags & MMCMP_DELTA) - { - newval += oldval; - oldval = newval; - } else - if (!(pblk->flags & MMCMP_ABS16)) - { - newval ^= 0x8000; - } - pDest[dwPos++] = (WORD)newval; - } - if (dwPos >= dwSize) - { - subblk++; - dwPos = 0; - dwSize = psubblk[subblk].unpk_size >> 1; - pDest = (LPWORD)(pBuffer + psubblk[subblk].unpk_pos); - } - } - } else - // Data is 8-bit packed - { - MMCMPBITBUFFER bb; - LPBYTE pDest = pBuffer + psubblk->unpk_pos; - DWORD dwSize = psubblk->unpk_size; - DWORD dwPos = 0; - UINT numbits = pblk->num_bits; - UINT subblk = 0, oldval = 0; - LPCBYTE ptable = lpMemFile+dwMemPos; - - bb.bitcount = 0; - bb.bitbuffer = 0; - bb.pSrc = lpMemFile+dwMemPos+pblk->tt_entries; - bb.pEnd = lpMemFile+dwMemPos+pblk->pk_size; - while (subblk < pblk->sub_blk) - { - UINT newval = 0x100; - DWORD d = bb.GetBits(numbits+1); - - if (d >= MMCMP8BitCommands[numbits]) - { - UINT nFetch = MMCMP8BitFetch[numbits]; - UINT newbits = bb.GetBits(nFetch) + ((d - MMCMP8BitCommands[numbits]) << nFetch); - if (newbits != numbits) - { - numbits = newbits & 0x07; - } else - { - if ((d = bb.GetBits(3)) == 7) - { - if (bb.GetBits(1)) break; - newval = 0xFF; - } else - { - newval = 0xF8 + d; - } - } - } else - { - newval = d; - } - if (newval < 0x100) - { - int n = ptable[newval]; - if (pblk->flags & MMCMP_DELTA) - { - n += oldval; - oldval = n; - } - pDest[dwPos++] = (BYTE)n; - } - if (dwPos >= dwSize) - { - subblk++; - dwPos = 0; - dwSize = psubblk[subblk].unpk_size; - pDest = pBuffer + psubblk[subblk].unpk_pos; - } - } - } - } - *ppMemFile = pBuffer; - *pdwMemLength = dwFileSize; - return TRUE; -} - - -////////////////////////////////////////////////////////////////////////////// -// -// PowerPack PP20 Unpacker -// - -typedef struct _PPBITBUFFER -{ - UINT bitcount; - ULONG bitbuffer; - LPCBYTE pStart; - LPCBYTE pSrc; - - ULONG GetBits(UINT n); -} PPBITBUFFER; - - -ULONG PPBITBUFFER::GetBits(UINT n) -{ - ULONG result = 0; - - for (UINT i=0; i>= 1; - bitcount--; - } - return result; -} - - -VOID PP20_DoUnpack(const BYTE *pSrc, UINT nSrcLen, BYTE *pDst, UINT nDstLen) -{ - PPBITBUFFER BitBuffer; - ULONG nBytesLeft; - - BitBuffer.pStart = pSrc; - BitBuffer.pSrc = pSrc + nSrcLen - 4; - BitBuffer.bitbuffer = 0; - BitBuffer.bitcount = 0; - BitBuffer.GetBits(pSrc[nSrcLen-1]); - nBytesLeft = nDstLen; - while (nBytesLeft > 0) - { - if (!BitBuffer.GetBits(1)) - { - UINT n = 1; - while (n < nBytesLeft) - { - UINT code = BitBuffer.GetBits(2); - n += code; - if (code != 3) break; - } - for (UINT i=0; i 0x400000) || (dwDstLen > 16*dwMemLength)) return FALSE; - if ((pBuffer = (LPBYTE)GlobalAllocPtr(GHND, (dwDstLen + 31) & ~15)) == NULL) return FALSE; - PP20_DoUnpack(lpMemFile+4, dwMemLength-4, pBuffer, dwDstLen); - *ppMemFile = pBuffer; - *pdwMemLength = dwDstLen; - return TRUE; -} - - - - - diff -Nru audacious-plugins-2.4.4/src/modplug/modplugbmp.cxx audacious-plugins-3.2/src/modplug/modplugbmp.cxx --- audacious-plugins-2.4.4/src/modplug/modplugbmp.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/modplugbmp.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -1,4 +1,3 @@ -#define AUD_DEBUG 1 /* Modplug XMMS Plugin * Authors: Kenton Varda * @@ -6,19 +5,24 @@ */ #include +#include #include #include +#include +#include + extern "C" { -#include +#include +#include } #include "modplugbmp.h" -#include "stdafx.h" -#include "sndfile.h" #include "stddefs.h" #include "archive/open.h" +static gboolean stop_flag = FALSE; + // ModplugXMMS member functions =============================== // operations ---------------------------------------- @@ -35,66 +39,57 @@ g_cond_free (control_cond); } -ModplugXMMS::Settings::Settings() -{ - mSurround = true; - mOversamp = true; - mReverb = false; - mMegabass = false; - mNoiseReduction = true; - mVolumeRamp = true; - mFastinfo = true; - mUseFilename = false; - mGrabAmigaMOD = true; - - mChannels = 2; - mFrequency = 44100; - mBits = 16; - mResamplingMode = SRCMODE_POLYPHASE; - - mReverbDepth = 30; - mReverbDelay = 100; - mBassAmount = 40; - mBassRange = 30; - mSurroundDepth = 20; - mSurroundDelay = 20; - - mPreamp = false; - mPreampLevel = 0.0f; - - mLoopCount = 0; //don't loop -} +static const gchar * const modplug_defaults[] = { + "Surround", "TRUE", + "Oversampling", "TRUE", + "Megabass", "FALSE", + "NoiseReduction", "TRUE", + "VolumeRamp", "TRUE", + "Reverb", "FALSE", + "Fastinfo", "TRUE", + "UseFileName", "FALSE", + "GrabAmigaMOD", "TRUE", + "PreAmp", "FALSE", + "PreAmpLevel", "0", + "Channels", "2", + "Bits", "16", + "Frequency", "44100", + "ResamplingMode", "3", /* SRCMODE_POLYPHASE */ + "ReverbDepth", "30", + "ReverbDelay", "100", + "BassAmount", "40", + "BassRange", "30", + "SurroundDepth", "20", + "SurroundDelay", "20", + "LoopCount", "0", + NULL}; void ModplugXMMS::Init(void) { - mcs_handle_t *db; - - db = aud_cfg_db_open(); - - aud_cfg_db_get_bool(db, MODPLUG_CFGID,"Surround", &mModProps.mSurround); - aud_cfg_db_get_bool(db, MODPLUG_CFGID,"Oversampling", &mModProps.mOversamp); - aud_cfg_db_get_bool(db, MODPLUG_CFGID,"Megabass", &mModProps.mMegabass); - aud_cfg_db_get_bool(db, MODPLUG_CFGID,"NoiseReduction", &mModProps.mNoiseReduction); - aud_cfg_db_get_bool(db, MODPLUG_CFGID,"VolumeRamp", &mModProps.mVolumeRamp); - aud_cfg_db_get_bool(db, MODPLUG_CFGID,"Reverb", &mModProps.mReverb); - aud_cfg_db_get_bool(db, MODPLUG_CFGID,"FastInfo", &mModProps.mFastinfo); - aud_cfg_db_get_bool(db, MODPLUG_CFGID,"UseFileName", &mModProps.mUseFilename); - aud_cfg_db_get_bool(db, MODPLUG_CFGID,"GrabAmigaMOD", &mModProps.mGrabAmigaMOD); - aud_cfg_db_get_bool(db, MODPLUG_CFGID,"PreAmp", &mModProps.mPreamp); - aud_cfg_db_get_float(db, MODPLUG_CFGID,"PreAmpLevel", &mModProps.mPreampLevel); - aud_cfg_db_get_int(db, MODPLUG_CFGID, "Channels", &mModProps.mChannels); - aud_cfg_db_get_int(db, MODPLUG_CFGID, "Bits", &mModProps.mBits); - aud_cfg_db_get_int(db, MODPLUG_CFGID, "Frequency", &mModProps.mFrequency); - aud_cfg_db_get_int(db, MODPLUG_CFGID, "ResamplineMode", &mModProps.mResamplingMode); - aud_cfg_db_get_int(db, MODPLUG_CFGID, "ReverbDepth", &mModProps.mReverbDepth); - aud_cfg_db_get_int(db, MODPLUG_CFGID, "ReverbDelay", &mModProps.mReverbDelay); - aud_cfg_db_get_int(db, MODPLUG_CFGID, "BassAmount", &mModProps.mBassAmount); - aud_cfg_db_get_int(db, MODPLUG_CFGID, "BassRange", &mModProps.mBassRange); - aud_cfg_db_get_int(db, MODPLUG_CFGID, "SurroundDepth", &mModProps.mSurroundDepth); - aud_cfg_db_get_int(db, MODPLUG_CFGID, "SurroundDelay", &mModProps.mSurroundDelay); - aud_cfg_db_get_int(db, MODPLUG_CFGID, "LoopCount", &mModProps.mLoopCount); + aud_config_set_defaults (MODPLUG_CFGID, modplug_defaults); - aud_cfg_db_close(db); + mModProps.mSurround = aud_get_bool (MODPLUG_CFGID, "Surround"); + mModProps.mOversamp = aud_get_bool (MODPLUG_CFGID, "Oversampling"); + mModProps.mMegabass = aud_get_bool (MODPLUG_CFGID, "Megabass"); + mModProps.mNoiseReduction = aud_get_bool (MODPLUG_CFGID, "NoiseReduction"); + mModProps.mVolumeRamp = aud_get_bool (MODPLUG_CFGID, "VolumeRamp"); + mModProps.mReverb = aud_get_bool (MODPLUG_CFGID, "Reverb"); + mModProps.mFastinfo = aud_get_bool (MODPLUG_CFGID, "FastInfo"); + mModProps.mUseFilename = aud_get_bool (MODPLUG_CFGID, "UseFileName"); + mModProps.mGrabAmigaMOD = aud_get_bool (MODPLUG_CFGID, "GrabAmigaMOD"); + mModProps.mPreamp = aud_get_bool (MODPLUG_CFGID, "PreAmp"); + mModProps.mPreampLevel = aud_get_double (MODPLUG_CFGID, "PreAmpLevel"); + mModProps.mChannels = aud_get_int (MODPLUG_CFGID, "Channels"); + mModProps.mBits = aud_get_int (MODPLUG_CFGID, "Bits"); + mModProps.mFrequency = aud_get_int (MODPLUG_CFGID, "Frequency"); + mModProps.mResamplingMode = aud_get_int (MODPLUG_CFGID, "ResamplineMode"); + mModProps.mReverbDepth = aud_get_int (MODPLUG_CFGID, "ReverbDepth"); + mModProps.mReverbDelay = aud_get_int (MODPLUG_CFGID, "ReverbDelay"); + mModProps.mBassAmount = aud_get_int (MODPLUG_CFGID, "BassAmount"); + mModProps.mBassRange = aud_get_int (MODPLUG_CFGID, "BassRange"); + mModProps.mSurroundDepth = aud_get_int (MODPLUG_CFGID, "SurroundDepth"); + mModProps.mSurroundDelay = aud_get_int (MODPLUG_CFGID, "SurroundDelay"); + mModProps.mLoopCount = aud_get_int (MODPLUG_CFGID, "LoopCount"); } bool ModplugXMMS::CanPlayFileFromVFS(const string& aFilename, VFSFile *file) @@ -207,12 +202,10 @@ void ModplugXMMS::PlayLoop(InputPlayback *playback) { uint32 lLength; - gboolean paused = FALSE; g_mutex_lock (control_mutex); seek_time = -1; - mPaused = FALSE; - playback->playing = TRUE; + stop_flag = FALSE; playback->set_pb_ready (playback); g_mutex_unlock (control_mutex); @@ -220,7 +213,7 @@ { g_mutex_lock (control_mutex); - if (! playback->playing) + if (stop_flag) { g_mutex_unlock (control_mutex); break; @@ -235,20 +228,6 @@ g_cond_signal (control_cond); } - if (mPaused != paused) - { - playback->output->pause (mPaused); - paused = mPaused; - g_cond_signal (control_cond); - } - - if (paused) - { - g_cond_wait (control_cond, control_mutex); - g_mutex_unlock (control_mutex); - continue; - } - g_mutex_unlock (control_mutex); lLength = mSoundFile->Read (mBuffer, mBufSize); @@ -290,10 +269,10 @@ g_mutex_lock (control_mutex); - while (playback->playing && playback->output->buffer_playing ()) + while (!stop_flag && playback->output->buffer_playing ()) g_usleep (10000); - playback->playing = FALSE; + stop_flag = TRUE; g_cond_signal (control_cond); /* wake up any waiting request */ g_mutex_unlock (control_mutex); @@ -393,15 +372,7 @@ ipb->set_tuple(ipb,ti); } - ipb->set_params - ( - ipb, - NULL, - 0, - mSoundFile->GetNumChannels() * 1000, - mModProps.mFrequency, - mModProps.mChannels - ); + ipb->set_params(ipb, mSoundFile->GetNumChannels() * 1000, mModProps.mFrequency, mModProps.mChannels); if(mModProps.mBits == 16) mFormat = FMT_S16_NE; @@ -410,10 +381,7 @@ if (! ipb->output->open_audio (mFormat, mModProps.mFrequency, mModProps.mChannels)) - { - ipb->error = TRUE; return true; - } this->PlayLoop(ipb); ipb->output->close_audio (); @@ -423,41 +391,36 @@ void ModplugXMMS::Stop (InputPlayback * playback) { - g_mutex_lock (control_mutex); + g_mutex_lock(control_mutex); - if (playback->playing) - { - playback->playing = FALSE; - g_cond_signal (control_cond); - g_mutex_unlock (control_mutex); - g_thread_join (playback->thread); - playback->thread = NULL; - } - else - g_mutex_unlock (control_mutex); + if (!stop_flag) + { + stop_flag = TRUE; + playback->output->abort_write(); + g_cond_signal(control_cond); + } + + g_mutex_unlock(control_mutex); } -void ModplugXMMS::pause (InputPlayback * playback, gshort paused) +void ModplugXMMS::pause (InputPlayback * playback, gboolean pause) { - g_mutex_lock (control_mutex); + g_mutex_lock(control_mutex); - if (playback->playing) - { - mPaused = paused; - g_cond_signal (control_cond); - g_cond_wait (control_cond, control_mutex); - } + if (!stop_flag) + playback->output->pause(pause); - g_mutex_unlock (control_mutex); + g_mutex_unlock(control_mutex); } -void ModplugXMMS::mseek (InputPlayback * playback, gulong time) +void ModplugXMMS::mseek (InputPlayback * playback, gint time) { g_mutex_lock (control_mutex); - if (playback->playing) + if (!stop_flag) { seek_time = time; + playback->output->abort_write(); g_cond_signal (control_cond); g_cond_wait (control_cond, control_mutex); } @@ -508,15 +471,15 @@ case MOD_TYPE_PSM: tmps = "Protracker Studio Module"; break; default: tmps = "ModPlug unknown"; break; } - tuple_associate_string(ti, FIELD_CODEC, NULL, tmps); - tuple_associate_string(ti, FIELD_QUALITY, NULL, "sequenced"); - tuple_associate_int(ti, FIELD_LENGTH, NULL, lSoundFile->GetSongTime() * 1000); + tuple_set_str(ti, FIELD_CODEC, NULL, tmps); + tuple_set_str(ti, FIELD_QUALITY, NULL, "sequenced"); + tuple_set_int(ti, FIELD_LENGTH, NULL, lSoundFile->GetSongTime() * 1000); gchar *tmps2 = MODPLUG_CONVERT(lSoundFile->GetTitle()); // Chop any leading spaces off. They are annoying in the playlist. gchar *tmps3 = tmps2; // Make another pointer so tmps2 can still be free()d while ( *tmps3 == ' ' ) tmps3++ ; - tuple_associate_string(ti, FIELD_TITLE, NULL, tmps3); + tuple_set_str(ti, FIELD_TITLE, NULL, tmps3); g_free(tmps2); //unload the file @@ -546,7 +509,6 @@ void ModplugXMMS::SetModProps(const Settings& aModProps) { - mcs_handle_t *db; mModProps = aModProps; // [Reverb level 0(quiet)-100(loud)], [delay in ms, usually 40-200ms] @@ -597,32 +559,28 @@ CSoundFile::SetResamplingMode(mModProps.mResamplingMode); mPreampFactor = exp(mModProps.mPreampLevel); - db = aud_cfg_db_open(); - - aud_cfg_db_set_bool(db, MODPLUG_CFGID,"Surround", mModProps.mSurround); - aud_cfg_db_set_bool(db, MODPLUG_CFGID,"Oversampling", mModProps.mOversamp); - aud_cfg_db_set_bool(db, MODPLUG_CFGID,"Megabass", mModProps.mMegabass); - aud_cfg_db_set_bool(db, MODPLUG_CFGID,"NoiseReduction", mModProps.mNoiseReduction); - aud_cfg_db_set_bool(db, MODPLUG_CFGID,"VolumeRamp", mModProps.mVolumeRamp); - aud_cfg_db_set_bool(db, MODPLUG_CFGID,"Reverb", mModProps.mReverb); - aud_cfg_db_set_bool(db, MODPLUG_CFGID,"FastInfo", mModProps.mFastinfo); - aud_cfg_db_set_bool(db, MODPLUG_CFGID,"UseFileName", mModProps.mUseFilename); - aud_cfg_db_set_bool(db, MODPLUG_CFGID,"GrabAmigaMOD", mModProps.mGrabAmigaMOD); - aud_cfg_db_set_bool(db, MODPLUG_CFGID,"PreAmp", mModProps.mPreamp); - aud_cfg_db_set_float(db, MODPLUG_CFGID,"PreAmpLevel", mModProps.mPreampLevel); - aud_cfg_db_set_int(db, MODPLUG_CFGID, "Channels", mModProps.mChannels); - aud_cfg_db_set_int(db, MODPLUG_CFGID, "Bits", mModProps.mBits); - aud_cfg_db_set_int(db, MODPLUG_CFGID, "Frequency", mModProps.mFrequency); - aud_cfg_db_set_int(db, MODPLUG_CFGID, "ResamplineMode", mModProps.mResamplingMode); - aud_cfg_db_set_int(db, MODPLUG_CFGID, "ReverbDepth", mModProps.mReverbDepth); - aud_cfg_db_set_int(db, MODPLUG_CFGID, "ReverbDelay", mModProps.mReverbDelay); - aud_cfg_db_set_int(db, MODPLUG_CFGID, "BassAmount", mModProps.mBassAmount); - aud_cfg_db_set_int(db, MODPLUG_CFGID, "BassRange", mModProps.mBassRange); - aud_cfg_db_set_int(db, MODPLUG_CFGID, "SurroundDepth", mModProps.mSurroundDepth); - aud_cfg_db_set_int(db, MODPLUG_CFGID, "SurroundDelay", mModProps.mSurroundDelay); - aud_cfg_db_set_int(db, MODPLUG_CFGID, "LoopCount", mModProps.mLoopCount); - - aud_cfg_db_close(db); + aud_set_bool (MODPLUG_CFGID, "Surround", mModProps.mSurround); + aud_set_bool (MODPLUG_CFGID, "Oversampling", mModProps.mOversamp); + aud_set_bool (MODPLUG_CFGID, "Megabass", mModProps.mMegabass); + aud_set_bool (MODPLUG_CFGID, "NoiseReduction", mModProps.mNoiseReduction); + aud_set_bool (MODPLUG_CFGID, "VolumeRamp", mModProps.mVolumeRamp); + aud_set_bool (MODPLUG_CFGID, "Reverb", mModProps.mReverb); + aud_set_bool (MODPLUG_CFGID, "FastInfo", mModProps.mFastinfo); + aud_set_bool (MODPLUG_CFGID, "UseFileName", mModProps.mUseFilename); + aud_set_bool (MODPLUG_CFGID, "GrabAmigaMOD", mModProps.mGrabAmigaMOD); + aud_set_bool (MODPLUG_CFGID, "PreAmp", mModProps.mPreamp); + aud_set_double (MODPLUG_CFGID, "PreAmpLevel", mModProps.mPreampLevel); + aud_set_int (MODPLUG_CFGID, "Channels", mModProps.mChannels); + aud_set_int (MODPLUG_CFGID, "Bits", mModProps.mBits); + aud_set_int (MODPLUG_CFGID, "Frequency", mModProps.mFrequency); + aud_set_int (MODPLUG_CFGID, "ResamplineMode", mModProps.mResamplingMode); + aud_set_int (MODPLUG_CFGID, "ReverbDepth", mModProps.mReverbDepth); + aud_set_int (MODPLUG_CFGID, "ReverbDelay", mModProps.mReverbDelay); + aud_set_int (MODPLUG_CFGID, "BassAmount", mModProps.mBassAmount); + aud_set_int (MODPLUG_CFGID, "BassRange", mModProps.mBassRange); + aud_set_int (MODPLUG_CFGID, "SurroundDepth", mModProps.mSurroundDepth); + aud_set_int (MODPLUG_CFGID, "SurroundDelay", mModProps.mSurroundDelay); + aud_set_int (MODPLUG_CFGID, "LoopCount", mModProps.mLoopCount); } ModplugXMMS gModplugXMMS; diff -Nru audacious-plugins-2.4.4/src/modplug/modplugbmp.h audacious-plugins-3.2/src/modplug/modplugbmp.h --- audacious-plugins-2.4.4/src/modplug/modplugbmp.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/modplugbmp.h 2012-01-20 19:48:30.000000000 +0000 @@ -73,8 +73,6 @@ gint mSurroundDelay; gfloat mPreampLevel; gint mLoopCount; - - Settings(); }; ModplugXMMS(); @@ -87,8 +85,8 @@ bool PlayFile(const string& aFilename, InputPlayback *data);// Play the file. void Stop(InputPlayback *data); // Stop playing. - void mseek (InputPlayback * playback, gulong time); - void pause (InputPlayback * playback, gshort paused); + void mseek (InputPlayback * playback, gint time); + void pause (InputPlayback * playback, gboolean paused); Tuple* GetSongTuple(const string& aFilename); diff -Nru audacious-plugins-2.4.4/src/modplug/plugin.cxx audacious-plugins-3.2/src/modplug/plugin.cxx --- audacious-plugins-2.4.4/src/modplug/plugin.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/plugin.cxx 2012-01-20 19:48:30.000000000 +0000 @@ -4,20 +4,18 @@ * This source code is public domain. */ -// #define AUD_DEBUG 1 - -#include "gui/main.h" +#include "modplugbmp.h" extern "C" { #include #include +extern InputPlugin _aud_plugin_self; -extern InputPlugin gModPlug; - -void Init(void) +gboolean Init (void) { - gModplugXMMS.SetInputPlugin(gModPlug); + gModplugXMMS.SetInputPlugin (_aud_plugin_self); gModplugXMMS.Init(); + return TRUE; } gint CanPlayFileFromVFS(const char* aFilename, VFSFile *VFSFile) @@ -30,8 +28,7 @@ gboolean PlayFile(InputPlayback * data, const gchar * filename, VFSFile * file, gint start_time, gint stop_time, gboolean pause) { - char* aFilename = data->filename; - return gModplugXMMS.PlayFile(aFilename, data); + return gModplugXMMS.PlayFile(filename, data); } void Stop(InputPlayback *data) @@ -39,34 +36,19 @@ gModplugXMMS.Stop(data); } -void Pause (InputPlayback * playback, gshort paused) +void Pause (InputPlayback * playback, gboolean pause) { - gModplugXMMS.pause (playback, paused); + gModplugXMMS.pause (playback, pause); } -void mseek (InputPlayback * playback, gulong time) +void mseek (InputPlayback * playback, gint time) { gModplugXMMS.mseek (playback, time); } -Tuple* GetSongTuple(const gchar* aFilename) +Tuple* GetSongTuple(const gchar* aFilename, VFSFile *fd) { return gModplugXMMS.GetSongTuple(aFilename); } -void ShowAboutBox(void) -{ - ShowAboutWindow(); -} - -void ShowConfigureBox(void) -{ - ShowConfigureWindow(gModplugXMMS.GetModProps()); -} - -void ShowFileInfoBox(const gchar* aFilename) -{ - ShowInfoWindow(aFilename); -} - } diff -Nru audacious-plugins-2.4.4/src/modplug/plugin_main.c audacious-plugins-3.2/src/modplug/plugin_main.c --- audacious-plugins-2.4.4/src/modplug/plugin_main.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/plugin_main.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,14 +1,15 @@ +#include #include -void Init(void); +gboolean Init (void); void ShowAboutBox(void); void ShowConfigureBox(void); gboolean PlayFile(InputPlayback * data, const gchar * filename, VFSFile * file, gint start_time, gint stop_time, gboolean pause); void Stop(InputPlayback *data); -void Pause(InputPlayback *data, gshort aPaused); -void mseek (InputPlayback * playback, gulong time); +void Pause(InputPlayback *data, gboolean pause); +void mseek (InputPlayback * playback, gint time); void ShowFileInfoBox(const gchar* aFilename); -Tuple* GetSongTuple(const gchar* aFilename); +Tuple* GetSongTuple(const gchar* aFilename, VFSFile *fd); gint CanPlayFileFromVFS(const gchar* aFilename, VFSFile *VFSFile); static const gchar *fmts[] = @@ -16,23 +17,16 @@ "mod", "s3m", "dmf", "umx", "it", "669", "xm", "mtm", "psm", "ft2", NULL }; -InputPlugin gModPlug = -{ - .description = "ModPlug Audio Plugin", +AUD_INPUT_PLUGIN +( + .name = "ModPlug", .init = Init, - .about = ShowAboutBox, - .configure = ShowConfigureBox, .play = PlayFile, .stop = Stop, .pause = Pause, .mseek = mseek, - .file_info_box = ShowFileInfoBox, - .get_song_tuple = GetSongTuple, + .probe_for_tuple = GetSongTuple, .is_our_file_from_vfs = CanPlayFileFromVFS, - .vfs_extensions = fmts, + .extensions = fmts, .have_subtune = TRUE, // to exclude .zip etc which doesn't contain any mod file --yaz -}; - -InputPlugin *modplug_iplist[] = { &gModPlug, NULL }; - -SIMPLE_INPUT_PLUGIN(modplug, modplug_iplist); +) diff -Nru audacious-plugins-2.4.4/src/modplug/snd_dsp.cxx audacious-plugins-3.2/src/modplug/snd_dsp.cxx --- audacious-plugins-2.4.4/src/modplug/snd_dsp.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/snd_dsp.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,491 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque -*/ - -#include "stdafx.h" -#include "sndfile.h" - -#ifdef MODPLUG_FASTSOUNDLIB -#define MODPLUG_NO_REVERB -#endif - - -// Delayed Surround Filters -#ifndef MODPLUG_FASTSOUNDLIB -#define nDolbyHiFltAttn 6 -#define nDolbyHiFltMask 3 -#define DOLBYATTNROUNDUP 31 -#else -#define nDolbyHiFltAttn 3 -#define nDolbyHiFltMask 3 -#define DOLBYATTNROUNDUP 3 -#endif - -// Bass Expansion -#define XBASS_DELAY 14 // 2.5 ms - -// Buffer Sizes -#define XBASSBUFFERSIZE 64 // 2 ms at 50KHz -#define FILTERBUFFERSIZE 64 // 1.25 ms -#define SURROUNDBUFFERSIZE ((MAX_SAMPLE_RATE * 50) / 1000) -#define REVERBBUFFERSIZE ((MAX_SAMPLE_RATE * 200) / 1000) -#define REVERBBUFFERSIZE2 ((REVERBBUFFERSIZE*13) / 17) -#define REVERBBUFFERSIZE3 ((REVERBBUFFERSIZE*7) / 13) -#define REVERBBUFFERSIZE4 ((REVERBBUFFERSIZE*7) / 19) - - -// DSP Effects: PUBLIC members -UINT CSoundFile::m_nXBassDepth = 6; -UINT CSoundFile::m_nXBassRange = XBASS_DELAY; -UINT CSoundFile::m_nReverbDepth = 1; -UINT CSoundFile::m_nReverbDelay = 100; -UINT CSoundFile::m_nProLogicDepth = 12; -UINT CSoundFile::m_nProLogicDelay = 20; - -void (*CSoundFile::_midi_out_note)(int chan, const MODCOMMAND *m) = NULL; -void (*CSoundFile::_midi_out_raw)(unsigned char *,unsigned int, unsigned int) = NULL; - -//////////////////////////////////////////////////////////////////// -// DSP Effects internal state - -// Bass Expansion: low-pass filter -static LONG nXBassSum = 0; -static LONG nXBassBufferPos = 0; -static LONG nXBassDlyPos = 0; -static LONG nXBassMask = 0; - -// Noise Reduction: simple low-pass filter -static LONG nLeftNR = 0; -static LONG nRightNR = 0; - -// Surround Encoding: 1 delay line + low-pass filter + high-pass filter -static LONG nSurroundSize = 0; -static LONG nSurroundPos = 0; -static LONG nDolbyDepth = 0; -static LONG nDolbyLoDlyPos = 0; -static LONG nDolbyLoFltPos = 0; -static LONG nDolbyLoFltSum = 0; -static LONG nDolbyHiFltPos = 0; -static LONG nDolbyHiFltSum = 0; - -// Reverb: 4 delay lines + high-pass filter + low-pass filter -#ifndef MODPLUG_NO_REVERB -static LONG nReverbSize = 0; -static LONG nReverbBufferPos = 0; -static LONG nReverbSize2 = 0; -static LONG nReverbBufferPos2 = 0; -static LONG nReverbSize3 = 0; -static LONG nReverbBufferPos3 = 0; -static LONG nReverbSize4 = 0; -static LONG nReverbBufferPos4 = 0; -static LONG nReverbLoFltSum = 0; -static LONG nReverbLoFltPos = 0; -static LONG nReverbLoDlyPos = 0; -static LONG nFilterAttn = 0; -static LONG gRvbLowPass[8]; -static LONG gRvbLPPos = 0; -static LONG gRvbLPSum = 0; -static LONG ReverbLoFilterBuffer[XBASSBUFFERSIZE]; -static LONG ReverbLoFilterDelay[XBASSBUFFERSIZE]; -static LONG ReverbBuffer[REVERBBUFFERSIZE]; -static LONG ReverbBuffer2[REVERBBUFFERSIZE2]; -static LONG ReverbBuffer3[REVERBBUFFERSIZE3]; -static LONG ReverbBuffer4[REVERBBUFFERSIZE4]; -#endif -static LONG XBassBuffer[XBASSBUFFERSIZE]; -static LONG XBassDelay[XBASSBUFFERSIZE]; -static LONG DolbyLoFilterBuffer[XBASSBUFFERSIZE]; -static LONG DolbyLoFilterDelay[XBASSBUFFERSIZE]; -static LONG DolbyHiFilterBuffer[FILTERBUFFERSIZE]; -static LONG SurroundBuffer[SURROUNDBUFFERSIZE]; - -// Access the main temporary mix buffer directly: avoids an extra pointer -extern int MixSoundBuffer[MIXBUFFERSIZE*2]; -//cextern int MixReverbBuffer[MIXBUFFERSIZE*2]; -extern int MixReverbBuffer[MIXBUFFERSIZE*2]; - -static UINT GetMaskFromSize(UINT len) -//----------------------------------- -{ - UINT n = 2; - while (n <= len) n <<= 1; - return ((n >> 1) - 1); -} - - -void CSoundFile::InitializeDSP(BOOL bReset) -//----------------------------------------- -{ - if (!m_nReverbDelay) m_nReverbDelay = 100; - if (!m_nXBassRange) m_nXBassRange = XBASS_DELAY; - if (!m_nProLogicDelay) m_nProLogicDelay = 20; - if (m_nXBassDepth > 8) m_nXBassDepth = 8; - if (m_nXBassDepth < 2) m_nXBassDepth = 2; - if (bReset) - { - // Noise Reduction - nLeftNR = nRightNR = 0; - } - // Pro-Logic Surround - nSurroundPos = nSurroundSize = 0; - nDolbyLoFltPos = nDolbyLoFltSum = nDolbyLoDlyPos = 0; - nDolbyHiFltPos = nDolbyHiFltSum = 0; - if (gdwSoundSetup & SNDMIX_SURROUND) - { - memset(DolbyLoFilterBuffer, 0, sizeof(DolbyLoFilterBuffer)); - memset(DolbyHiFilterBuffer, 0, sizeof(DolbyHiFilterBuffer)); - memset(DolbyLoFilterDelay, 0, sizeof(DolbyLoFilterDelay)); - memset(SurroundBuffer, 0, sizeof(SurroundBuffer)); - nSurroundSize = (gdwMixingFreq * m_nProLogicDelay) / 1000; - if (nSurroundSize > SURROUNDBUFFERSIZE) nSurroundSize = SURROUNDBUFFERSIZE; - if (m_nProLogicDepth < 8) nDolbyDepth = (32 >> m_nProLogicDepth) + 32; - else nDolbyDepth = (m_nProLogicDepth < 16) ? (8 + (m_nProLogicDepth - 8) * 7) : 64; - nDolbyDepth >>= 2; - } - // Reverb Setup -#ifndef MODPLUG_NO_REVERB - if (gdwSoundSetup & SNDMIX_REVERB) - { - UINT nrs = (gdwMixingFreq * m_nReverbDelay) / 1000; - UINT nfa = m_nReverbDepth+1; - if (nrs > REVERBBUFFERSIZE) nrs = REVERBBUFFERSIZE; - if ((bReset) || (nrs != (UINT)nReverbSize) || (nfa != (UINT)nFilterAttn)) - { - nFilterAttn = nfa; - nReverbSize = nrs; - nReverbBufferPos = nReverbBufferPos2 = nReverbBufferPos3 = nReverbBufferPos4 = 0; - nReverbLoFltSum = nReverbLoFltPos = nReverbLoDlyPos = 0; - gRvbLPSum = gRvbLPPos = 0; - nReverbSize2 = (nReverbSize * 13) / 17; - if (nReverbSize2 > REVERBBUFFERSIZE2) nReverbSize2 = REVERBBUFFERSIZE2; - nReverbSize3 = (nReverbSize * 7) / 13; - if (nReverbSize3 > REVERBBUFFERSIZE3) nReverbSize3 = REVERBBUFFERSIZE3; - nReverbSize4 = (nReverbSize * 7) / 19; - if (nReverbSize4 > REVERBBUFFERSIZE4) nReverbSize4 = REVERBBUFFERSIZE4; - memset(ReverbLoFilterBuffer, 0, sizeof(ReverbLoFilterBuffer)); - memset(ReverbLoFilterDelay, 0, sizeof(ReverbLoFilterDelay)); - memset(ReverbBuffer, 0, sizeof(ReverbBuffer)); - memset(ReverbBuffer2, 0, sizeof(ReverbBuffer2)); - memset(ReverbBuffer3, 0, sizeof(ReverbBuffer3)); - memset(ReverbBuffer4, 0, sizeof(ReverbBuffer4)); - memset(gRvbLowPass, 0, sizeof(gRvbLowPass)); -/* mrsb: libmodplug bug hahahah */ - memset(MixSoundBuffer,0,sizeof(MixSoundBuffer)); - memset(MixReverbBuffer,0,sizeof(MixReverbBuffer)); - } - } else nReverbSize = 0; -#endif - BOOL bResetBass = FALSE; - // Bass Expansion Reset - if (gdwSoundSetup & SNDMIX_MEGABASS) - { - UINT nXBassSamples = (gdwMixingFreq * m_nXBassRange) / 10000; - if (nXBassSamples > XBASSBUFFERSIZE) nXBassSamples = XBASSBUFFERSIZE; - UINT mask = GetMaskFromSize(nXBassSamples); - if ((bReset) || (mask != (UINT)nXBassMask)) - { - nXBassMask = mask; - bResetBass = TRUE; - } - } else - { - nXBassMask = 0; - bResetBass = TRUE; - } - if (bResetBass) - { - nXBassSum = nXBassBufferPos = nXBassDlyPos = 0; - memset(XBassBuffer, 0, sizeof(XBassBuffer)); - memset(XBassDelay, 0, sizeof(XBassDelay)); - } -} - - -void CSoundFile::ProcessStereoDSP(int count) -//------------------------------------------ -{ -#ifndef MODPLUG_NO_REVERB - // Reverb - if (gdwSoundSetup & SNDMIX_REVERB) - { - int *pr = MixSoundBuffer, *pin = MixReverbBuffer, rvbcount = count; - do - { - int echo = ReverbBuffer[nReverbBufferPos] + ReverbBuffer2[nReverbBufferPos2] - + ReverbBuffer3[nReverbBufferPos3] + ReverbBuffer4[nReverbBufferPos4]; // echo = reverb signal - // Delay line and remove Low Frequencies // v = original signal - int echodly = ReverbLoFilterDelay[nReverbLoDlyPos]; // echodly = delayed signal - ReverbLoFilterDelay[nReverbLoDlyPos] = echo >> 1; - nReverbLoDlyPos++; - nReverbLoDlyPos &= 0x1F; - int n = nReverbLoFltPos; - nReverbLoFltSum -= ReverbLoFilterBuffer[n]; - int tmp = echo / 128; - ReverbLoFilterBuffer[n] = tmp; - nReverbLoFltSum += tmp; - echodly -= nReverbLoFltSum; - nReverbLoFltPos = (n + 1) & 0x3F; - // Reverb - int v = (pin[0]+pin[1]) >> nFilterAttn; - pr[0] += pin[0] + echodly; - pr[1] += pin[1] + echodly; - v += echodly >> 2; - ReverbBuffer3[nReverbBufferPos3] = v; - ReverbBuffer4[nReverbBufferPos4] = v; - v += echodly >> 4; - v >>= 1; - gRvbLPSum -= gRvbLowPass[gRvbLPPos]; - gRvbLPSum += v; - gRvbLowPass[gRvbLPPos] = v; - gRvbLPPos++; - gRvbLPPos &= 7; - int vlp = gRvbLPSum >> 2; - ReverbBuffer[nReverbBufferPos] = vlp; - ReverbBuffer2[nReverbBufferPos2] = vlp; - if (++nReverbBufferPos >= nReverbSize) nReverbBufferPos = 0; - if (++nReverbBufferPos2 >= nReverbSize2) nReverbBufferPos2 = 0; - if (++nReverbBufferPos3 >= nReverbSize3) nReverbBufferPos3 = 0; - if (++nReverbBufferPos4 >= nReverbSize4) nReverbBufferPos4 = 0; - pr += 2; - pin += 2; - } while (--rvbcount); - } -#endif - // Dolby Pro-Logic Surround - if (gdwSoundSetup & SNDMIX_SURROUND) - { - int *pr = MixSoundBuffer, n = nDolbyLoFltPos; - for (int r=count; r; r--) - { - int v = (pr[0]+pr[1]+DOLBYATTNROUNDUP) >> (nDolbyHiFltAttn+1); -#ifndef MODPLUG_FASTSOUNDLIB - v *= (int)nDolbyDepth; -#endif - // Low-Pass Filter - nDolbyHiFltSum -= DolbyHiFilterBuffer[nDolbyHiFltPos]; - DolbyHiFilterBuffer[nDolbyHiFltPos] = v; - nDolbyHiFltSum += v; - v = nDolbyHiFltSum; - nDolbyHiFltPos++; - nDolbyHiFltPos &= nDolbyHiFltMask; - // Surround - int secho = SurroundBuffer[nSurroundPos]; - SurroundBuffer[nSurroundPos] = v; - // Delay line and remove low frequencies - v = DolbyLoFilterDelay[nDolbyLoDlyPos]; // v = delayed signal - DolbyLoFilterDelay[nDolbyLoDlyPos] = secho; // secho = signal - nDolbyLoDlyPos++; - nDolbyLoDlyPos &= 0x1F; - nDolbyLoFltSum -= DolbyLoFilterBuffer[n]; - int tmp = secho / 64; - DolbyLoFilterBuffer[n] = tmp; - nDolbyLoFltSum += tmp; - v -= nDolbyLoFltSum; - n++; - n &= 0x3F; - // Add echo - pr[0] += v; - pr[1] -= v; - if (++nSurroundPos >= nSurroundSize) nSurroundPos = 0; - pr += 2; - } - nDolbyLoFltPos = n; - } - // Bass Expansion - if (gdwSoundSetup & SNDMIX_MEGABASS) - { - int *px = MixSoundBuffer; - int xba = m_nXBassDepth+1, xbamask = (1 << xba) - 1; - int n = nXBassBufferPos; - for (int x=count; x; x--) - { - nXBassSum -= XBassBuffer[n]; - int tmp0 = px[0] + px[1]; - int tmp = (tmp0 + ((tmp0 >> 31) & xbamask)) >> xba; - XBassBuffer[n] = tmp; - nXBassSum += tmp; - int v = XBassDelay[nXBassDlyPos]; - XBassDelay[nXBassDlyPos] = px[0]; - px[0] = v + nXBassSum; - v = XBassDelay[nXBassDlyPos+1]; - XBassDelay[nXBassDlyPos+1] = px[1]; - px[1] = v + nXBassSum; - nXBassDlyPos = (nXBassDlyPos + 2) & nXBassMask; - px += 2; - n++; - n &= nXBassMask; - } - nXBassBufferPos = n; - } - // Noise Reduction - if (gdwSoundSetup & SNDMIX_NOISEREDUCTION) - { - int n1 = nLeftNR, n2 = nRightNR; - int *pnr = MixSoundBuffer; - for (int nr=count; nr; nr--) - { - int vnr = pnr[0] >> 1; - pnr[0] = vnr + n1; - n1 = vnr; - vnr = pnr[1] >> 1; - pnr[1] = vnr + n2; - n2 = vnr; - pnr += 2; - } - nLeftNR = n1; - nRightNR = n2; - } -} - - -void CSoundFile::ProcessMonoDSP(int count) -//---------------------------------------- -{ -#ifndef MODPLUG_NO_REVERB - // Reverb - if (gdwSoundSetup & SNDMIX_REVERB) - { - int *pr = MixSoundBuffer, rvbcount = count, *pin = MixReverbBuffer; - do - { - int echo = ReverbBuffer[nReverbBufferPos] + ReverbBuffer2[nReverbBufferPos2] - + ReverbBuffer3[nReverbBufferPos3] + ReverbBuffer4[nReverbBufferPos4]; // echo = reverb signal - // Delay line and remove Low Frequencies // v = original signal - int echodly = ReverbLoFilterDelay[nReverbLoDlyPos]; // echodly = delayed signal - ReverbLoFilterDelay[nReverbLoDlyPos] = echo >> 1; - nReverbLoDlyPos++; - nReverbLoDlyPos &= 0x1F; - int n = nReverbLoFltPos; - nReverbLoFltSum -= ReverbLoFilterBuffer[n]; - int tmp = echo / 128; - ReverbLoFilterBuffer[n] = tmp; - nReverbLoFltSum += tmp; - echodly -= nReverbLoFltSum; - nReverbLoFltPos = (n + 1) & 0x3F; - // Reverb - int v = pin[0] >> (nFilterAttn-1); - *pr++ += pin[0] + echodly; - pin++; - v += echodly >> 2; - ReverbBuffer3[nReverbBufferPos3] = v; - ReverbBuffer4[nReverbBufferPos4] = v; - v += echodly >> 4; - v >>= 1; - gRvbLPSum -= gRvbLowPass[gRvbLPPos]; - gRvbLPSum += v; - gRvbLowPass[gRvbLPPos] = v; - gRvbLPPos++; - gRvbLPPos &= 7; - int vlp = gRvbLPSum >> 2; - ReverbBuffer[nReverbBufferPos] = vlp; - ReverbBuffer2[nReverbBufferPos2] = vlp; - if (++nReverbBufferPos >= nReverbSize) nReverbBufferPos = 0; - if (++nReverbBufferPos2 >= nReverbSize2) nReverbBufferPos2 = 0; - if (++nReverbBufferPos3 >= nReverbSize3) nReverbBufferPos3 = 0; - if (++nReverbBufferPos4 >= nReverbSize4) nReverbBufferPos4 = 0; - } while (--rvbcount); - } -#endif - // Bass Expansion - if (gdwSoundSetup & SNDMIX_MEGABASS) - { - int *px = MixSoundBuffer; - int xba = m_nXBassDepth, xbamask = (1 << xba)-1; - int n = nXBassBufferPos; - for (int x=count; x; x--) - { - nXBassSum -= XBassBuffer[n]; - int tmp0 = *px; - int tmp = (tmp0 + ((tmp0 >> 31) & xbamask)) >> xba; - XBassBuffer[n] = tmp; - nXBassSum += tmp; - int v = XBassDelay[nXBassDlyPos]; - XBassDelay[nXBassDlyPos] = *px; - *px++ = v + nXBassSum; - nXBassDlyPos = (nXBassDlyPos + 2) & nXBassMask; - n++; - n &= nXBassMask; - } - nXBassBufferPos = n; - } - // Noise Reduction - if (gdwSoundSetup & SNDMIX_NOISEREDUCTION) - { - int n = nLeftNR; - int *pnr = MixSoundBuffer; - for (int nr=count; nr; pnr++, nr--) - { - int vnr = *pnr >> 1; - *pnr = vnr + n; - n = vnr; - } - nLeftNR = n; - } -} - - -///////////////////////////////////////////////////////////////// -// Clean DSP Effects interface - -// [Reverb level 0(quiet)-100(loud)], [delay in ms, usually 40-200ms] -BOOL CSoundFile::SetReverbParameters(UINT nDepth, UINT nDelay) -//------------------------------------------------------------ -{ - if (nDepth > 100) nDepth = 100; - UINT gain = nDepth / 20; - if (gain > 4) gain = 4; - m_nReverbDepth = 4 - gain; - if (nDelay < 40) nDelay = 40; - if (nDelay > 250) nDelay = 250; - m_nReverbDelay = nDelay; - return TRUE; -} - - -// [XBass level 0(quiet)-100(loud)], [cutoff in Hz 20-100] -BOOL CSoundFile::SetXBassParameters(UINT nDepth, UINT nRange) -//----------------------------------------------------------- -{ - if (nDepth > 100) nDepth = 100; - UINT gain = nDepth / 20; - if (gain > 4) gain = 4; - m_nXBassDepth = 8 - gain; // filter attenuation 1/256 .. 1/16 - UINT range = nRange / 5; - if (range > 5) range -= 5; else range = 0; - if (nRange > 16) nRange = 16; - m_nXBassRange = 21 - range; // filter average on 0.5-1.6ms - return TRUE; -} - - -// [Surround level 0(quiet)-100(heavy)] [delay in ms, usually 5-50ms] -BOOL CSoundFile::SetSurroundParameters(UINT nDepth, UINT nDelay) -//-------------------------------------------------------------- -{ - UINT gain = (nDepth * 16) / 100; - if (gain > 16) gain = 16; - if (gain < 1) gain = 1; - m_nProLogicDepth = gain; - if (nDelay < 4) nDelay = 4; - if (nDelay > 50) nDelay = 50; - m_nProLogicDelay = nDelay; - return TRUE; -} - -BOOL CSoundFile::SetWaveConfigEx(BOOL bSurround,BOOL /*bNoOverSampling*/,BOOL bReverb,BOOL hqido,BOOL bMegaBass,BOOL bNR,BOOL bEQ) -//---------------------------------------------------------------------------------------------------------------------------- -{ - DWORD d = gdwSoundSetup & ~(SNDMIX_SURROUND | SNDMIX_NORESAMPLING | SNDMIX_REVERB | SNDMIX_HQRESAMPLER | SNDMIX_MEGABASS | SNDMIX_NOISEREDUCTION | SNDMIX_EQ); - if (bSurround) d |= SNDMIX_SURROUND; -// if (bNoOverSampling) d |= SNDMIX_NORESAMPLING; - if (bReverb) d |= SNDMIX_REVERB; - if (hqido) d |= SNDMIX_HQRESAMPLER; - if (bMegaBass) d |= SNDMIX_MEGABASS; - if (bNR) d |= SNDMIX_NOISEREDUCTION; - if (bEQ) d |= SNDMIX_EQ; - gdwSoundSetup = d; - InitPlayer(FALSE); - return TRUE; -} diff -Nru audacious-plugins-2.4.4/src/modplug/snd_eq.cxx audacious-plugins-3.2/src/modplug/snd_eq.cxx --- audacious-plugins-2.4.4/src/modplug/snd_eq.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/snd_eq.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,228 +0,0 @@ -/* - * This program is free software; you can redistribute it and modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the license or (at your - * option) any later version. - * - * Authors: Olivier Lapicque - * - * Name Date Description - * - * Olivier Lapicque --/--/-- Creation - * Trevor Nunes 26/01/04 conditional compilation for AMD,MMX calls - * -*/ -#include "stdafx.h" -#include "sndfile.h" -#include - - -#define EQ_BANDWIDTH 2.0 -#define EQ_ZERO 0.000001 -#define REAL float - -extern REAL MixFloatBuffer[]; - -extern void StereoMixToFloat(const int *pSrc, float *pOut1, float *pOut2, UINT nCount); -extern void FloatToStereoMix(const float *pIn1, const float *pIn2, int *pOut, UINT nCount); -extern void MonoMixToFloat(const int *pSrc, float *pOut, UINT nCount); -extern void FloatToMonoMix(const float *pIn, int *pOut, UINT nCount); - -typedef struct _EQBANDSTRUCT -{ - REAL a0, a1, a2, b1, b2; - REAL x1, x2, y1, y2; - REAL Gain, CenterFrequency; - BOOL bEnable; -} EQBANDSTRUCT, *PEQBANDSTRUCT; - -UINT gEqLinearToDB[33] = -{ - 16, 19, 22, 25, 28, 31, 34, 37, - 40, 43, 46, 49, 52, 55, 58, 61, - 64, 76, 88, 100, 112, 124, 136, 148, - 160, 172, 184, 196, 208, 220, 232, 244, 256 -}; - - -//static REAL f2ic = (REAL)(1 << 28); -//static REAL i2fc = (REAL)(1.0 / (1 << 28)); - -static EQBANDSTRUCT gEQ[MAX_EQ_BANDS*2] = -{ - // Default: Flat EQ - {0,0,0,0,0, 0,0,0,0, 1, 120, FALSE}, - {0,0,0,0,0, 0,0,0,0, 1, 600, FALSE}, - {0,0,0,0,0, 0,0,0,0, 1, 1200, FALSE}, - {0,0,0,0,0, 0,0,0,0, 1, 3000, FALSE}, - {0,0,0,0,0, 0,0,0,0, 1, 6000, FALSE}, - {0,0,0,0,0, 0,0,0,0, 1, 10000, FALSE}, - {0,0,0,0,0, 0,0,0,0, 1, 120, FALSE}, - {0,0,0,0,0, 0,0,0,0, 1, 600, FALSE}, - {0,0,0,0,0, 0,0,0,0, 1, 1200, FALSE}, - {0,0,0,0,0, 0,0,0,0, 1, 3000, FALSE}, - {0,0,0,0,0, 0,0,0,0, 1, 6000, FALSE}, - {0,0,0,0,0, 0,0,0,0, 1, 10000, FALSE}, -}; - -void EQFilter(EQBANDSTRUCT *pbs, REAL *pbuffer, UINT nCount) -//---------------------------------------------------------- -{ - for (UINT i=0; ia1 * pbs->x1 + pbs->a2 * pbs->x2 + pbs->a0 * x + pbs->b1 * pbs->y1 + pbs->b2 * pbs->y2; - pbs->x2 = pbs->x1; - pbs->y2 = pbs->y1; - pbs->x1 = x; - pbuffer[i] = y; - pbs->y1 = y; - } -} - -void CSoundFile::EQMono(int *pbuffer, UINT nCount) -//------------------------------------------------ -{ - MonoMixToFloat(pbuffer, MixFloatBuffer, nCount); - for (UINT b=0; b 0.45f) gEQ[band].Gain = 1; - // if (f > 0.25) f = 0.25; - // k = tan(PI*f); - k = f * 3.141592654f; - k = k + k*f; -// if (k > (REAL)0.707) k = (REAL)0.707; - k2 = k*k; - v0 = gEQ[band].Gain; - v1 = 1; - if (gEQ[band].Gain < 1.0) - { - v0 *= (0.5f/EQ_BANDWIDTH); - v1 *= (0.5f/EQ_BANDWIDTH); - } else - { - v0 *= (1.0f/EQ_BANDWIDTH); - v1 *= (1.0f/EQ_BANDWIDTH); - } - r = (1 + v0*k + k2) / (1 + v1*k + k2); - if (r != gEQ[band].a0) - { - gEQ[band].a0 = r; - b = TRUE; - } - r = 2 * (k2 - 1) / (1 + v1*k + k2); - if (r != gEQ[band].a1) - { - gEQ[band].a1 = r; - b = TRUE; - } - r = (1 - v0*k + k2) / (1 + v1*k + k2); - if (r != gEQ[band].a2) - { - gEQ[band].a2 = r; - b = TRUE; - } - r = - 2 * (k2 - 1) / (1 + v1*k + k2); - if (r != gEQ[band].b1) - { - gEQ[band].b1 = r; - b = TRUE; - } - r = - (1 - v1*k + k2) / (1 + v1*k + k2); - if (r != gEQ[band].b2) - { - gEQ[band].b2 = r; - b = TRUE; - } - if (b) - { - gEQ[band].x1 = 0; - gEQ[band].x2 = 0; - gEQ[band].y1 = 0; - gEQ[band].y2 = 0; - } - } else - { - gEQ[band].a0 = 0; - gEQ[band].a1 = 0; - gEQ[band].a2 = 0; - gEQ[band].b1 = 0; - gEQ[band].b2 = 0; - gEQ[band].x1 = 0; - gEQ[band].x2 = 0; - gEQ[band].y1 = 0; - gEQ[band].y2 = 0; - } -} - - -void CSoundFile::SetEQGains(const UINT *pGains, UINT nGains, const UINT *pFreqs, BOOL bReset) -//------------------------------------------------------------------------------------------- -{ - for (UINT i=0; i 32) n = 32; - g = 1.0 + (((double)n) / 64.0); - if (pFreqs) f = (REAL)(int)pFreqs[i]; - } else - { - g = 1; - } - gEQ[i].Gain = g; - gEQ[i].CenterFrequency = f; - gEQ[i+MAX_EQ_BANDS].Gain = g; - gEQ[i+MAX_EQ_BANDS].CenterFrequency = f; - if (f > 20.0f && i < nGains) /* don't enable bands outside... */ - { - gEQ[i].bEnable = TRUE; - gEQ[i+MAX_EQ_BANDS].bEnable = TRUE; - } else - { - gEQ[i].bEnable = FALSE; - gEQ[i+MAX_EQ_BANDS].bEnable = FALSE; - } - } - InitializeEQ(bReset); -} diff -Nru audacious-plugins-2.4.4/src/modplug/sndfile.cxx audacious-plugins-3.2/src/modplug/sndfile.cxx --- audacious-plugins-2.4.4/src/modplug/sndfile.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/sndfile.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,1690 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque , - * Adam Goode (endian and char fixes for PPC) -*/ - -#include //for GCCFIX -#include "stdafx.h" -#include "sndfile.h" - -#define MMCMP_SUPPORT - -#ifdef MMCMP_SUPPORT -extern BOOL MMCMP_Unpack(LPCBYTE *ppMemFile, LPDWORD pdwMemLength); -#endif - - -// External decompressors -extern void AMSUnpack(const char *psrc, UINT inputlen, char *pdest, UINT dmax, char packcharacter); -extern WORD MDLReadBits(DWORD &bitbuf, UINT &bitnum, LPBYTE &ibuf, CHAR n); -extern int DMFUnpack(LPBYTE psample, LPBYTE ibuf, LPBYTE ibufmax, UINT maxlen); -extern DWORD ITReadBits(DWORD &bitbuf, UINT &bitnum, LPBYTE &ibuf, CHAR n); -extern void ITUnpack8Bit(signed char *pSample, DWORD dwLen, LPBYTE lpMemFile, DWORD dwMemLength, BOOL b215); -extern void ITUnpack16Bit(signed char *pSample, DWORD dwLen, LPBYTE lpMemFile, DWORD dwMemLength, BOOL b215); - - -#define MAX_PACK_TABLES 3 - - -// Compression table -static signed char UnpackTable[MAX_PACK_TABLES][16] = -//-------------------------------------------- -{ - // CPU-generated dynamic table - {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, - // u-Law table - {0, 1, 2, 4, 8, 16, 32, 64, - -1, -2, -4, -8, -16, -32, -48, -64}, - // Linear table - {0, 1, 2, 3, 5, 7, 12, 19, - -1, -2, -3, -5, -7, -12, -19, -31} -}; - - -////////////////////////////////////////////////////////// -// CSoundFile - -CSoundFile::CSoundFile() -//---------------------- -{ - m_nType = MOD_TYPE_NONE; - m_dwSongFlags = 0; - m_nStereoSeparation = 128; - m_nChannels = 0; - m_nMixChannels = 0; - m_nSamples = 0; - m_nInstruments = 0; - m_nPatternNames = 0; - m_lpszPatternNames = NULL; - m_lpszSongComments = NULL; - m_nFreqFactor = m_nTempoFactor = 128; - m_nMasterVolume = 128; - m_nMinPeriod = 0x20; - m_nMaxPeriod = 0x7FFF; - m_nRepeatCount = 0; - m_rowHighlightMajor = 16; - m_rowHighlightMinor = 4; - memset(Chn, 0, sizeof(Chn)); - memset(ChnMix, 0, sizeof(ChnMix)); - memset(Ins, 0, sizeof(Ins)); - memset(ChnSettings, 0, sizeof(ChnSettings)); - memset(Headers, 0, sizeof(Headers)); - memset(Order, 0xFF, sizeof(Order)); - memset(Patterns, 0, sizeof(Patterns)); - memset(m_szNames, 0, sizeof(m_szNames)); - memset(m_MixPlugins, 0, sizeof(m_MixPlugins)); -} - - -CSoundFile::~CSoundFile() -//----------------------- -{ - Destroy(); -} - - -BOOL CSoundFile::Create(LPCBYTE lpStream, DWORD dwMemLength) -//---------------------------------------------------------- -{ - int i; - - // deja vu... - m_nType = MOD_TYPE_NONE; - m_dwSongFlags = 0; - m_nStereoSeparation = 128; - m_nChannels = 0; - m_nMixChannels = 0; - m_nSamples = 0; - m_nInstruments = 0; - m_nFreqFactor = m_nTempoFactor = 128; - m_nMasterVolume = 128; - m_nDefaultGlobalVolume = 256; - m_nGlobalVolume = 256; - m_nOldGlbVolSlide = 0; - m_nDefaultSpeed = 6; - m_nDefaultTempo = 125; - m_nPatternDelay = 0; - m_nFrameDelay = 0; - m_nNextRow = 0; - m_nRow = 0; - m_nPattern = 0; - m_nCurrentPattern = 0; - m_nNextPattern = 0; - m_nRestartPos = 0; - m_nMinPeriod = 16; - m_nMaxPeriod = 32767; - m_nSongPreAmp = 0x30; - m_nPatternNames = 0; - m_lpszPatternNames = NULL; - m_lpszSongComments = NULL; - memset(Ins, 0, sizeof(Ins)); - memset(ChnMix, 0, sizeof(ChnMix)); - memset(Chn, 0, sizeof(Chn)); - memset(Headers, 0, sizeof(Headers)); - memset(Order, 0xFF, sizeof(Order)); - memset(Patterns, 0, sizeof(Patterns)); - memset(m_szNames, 0, sizeof(m_szNames)); - memset(m_MixPlugins, 0, sizeof(m_MixPlugins)); - ResetMidiCfg(); - for (UINT npt=0; npt 64) ChnSettings[i].nVolume = 64; - if (ChnSettings[i].nPan > 256) ChnSettings[i].nPan = 128; - Chn[i].nPan = ChnSettings[i].nPan; - Chn[i].nGlobalVol = ChnSettings[i].nVolume; - Chn[i].dwFlags = ChnSettings[i].dwFlags; - Chn[i].nVolume = 256; - Chn[i].nCutOff = 0x7F; - } - // Checking instruments - MODINSTRUMENT *pins = Ins; - - for (i=0; ipSample) - { - if (pins->nLoopEnd > pins->nLength) pins->nLoopEnd = pins->nLength; - if (pins->nSustainEnd > pins->nLength) pins->nSustainEnd = pins->nLength; - } else { - pins->nLength = 0; - pins->nLoopStart = 0; - pins->nLoopEnd = 0; - pins->nSustainStart = 0; - pins->nSustainEnd = 0; - } - if (!pins->nLoopEnd) pins->uFlags &= ~CHN_LOOP; - if (!pins->nSustainEnd) pins->uFlags &= ~CHN_SUSTAINLOOP; - if (pins->nGlobalVol > 64) pins->nGlobalVol = 64; - } - // Check invalid instruments - while ((m_nInstruments > 0) && (!Headers[m_nInstruments])) m_nInstruments--; - // Set default values - if (m_nDefaultTempo < 31) m_nDefaultTempo = 31; - if (!m_nDefaultSpeed) m_nDefaultSpeed = 6; - m_nMusicSpeed = m_nDefaultSpeed; - m_nMusicTempo = m_nDefaultTempo; - m_nGlobalVolume = m_nDefaultGlobalVolume; - m_nNextPattern = 0; - m_nCurrentPattern = 0; - m_nPattern = 0; - m_nBufferCount = 0; - m_nTickCount = m_nMusicSpeed; - m_nNextRow = 0; - m_nRow = 0; - if ((m_nRestartPos >= MAX_ORDERS) || (Order[m_nRestartPos] >= MAX_PATTERNS)) m_nRestartPos = 0; - // Load plugins - if (gpMixPluginCreateProc) - { - for (UINT iPlug=0; iPlugRestoreAllParameters(); - } - } - } - } - return m_nType ? TRUE : FALSE; -} - - -BOOL CSoundFile::Destroy() - -//------------------------ -{ - int i; - for (i=0; ipSample) - { - FreeSample(pins->pSample); - pins->pSample = NULL; - } - } - for (i=0; iRelease(); - m_MixPlugins[i].pMixPlugin = NULL; - } - } - m_nType = MOD_TYPE_NONE; - m_nChannels = m_nSamples = m_nInstruments = 0; - return TRUE; -} - - -////////////////////////////////////////////////////////////////////////// -// Memory Allocation - -MODCOMMAND *CSoundFile::AllocatePattern(UINT rows, UINT nchns) -//------------------------------------------------------------ -{ - MODCOMMAND *p = new MODCOMMAND[rows*nchns]; - if (p) memset(p, 0, rows*nchns*sizeof(MODCOMMAND)); - return p; -} - - -void CSoundFile::FreePattern(LPVOID pat) -//-------------------------------------- -{ - if (pat) delete [] (signed char*)pat; -} - - -signed char* CSoundFile::AllocateSample(UINT nbytes) -//------------------------------------------- -{ - signed char * p = (signed char *)GlobalAllocPtr(GHND, (nbytes+39) & ~7); - if (p) p += 16; - return p; -} - - -void CSoundFile::FreeSample(LPVOID p) -//----------------------------------- -{ - if (p) - { - GlobalFreePtr(((LPSTR)p)-16); - } -} - - -////////////////////////////////////////////////////////////////////////// -// Misc functions - -void CSoundFile::ResetMidiCfg() -//----------------------------- -{ - memset(&m_MidiCfg, 0, sizeof(m_MidiCfg)); - lstrcpy(&m_MidiCfg.szMidiGlb[MIDIOUT_START*32], "FF"); - lstrcpy(&m_MidiCfg.szMidiGlb[MIDIOUT_STOP*32], "FC"); - lstrcpy(&m_MidiCfg.szMidiGlb[MIDIOUT_NOTEON*32], "9c n v"); - lstrcpy(&m_MidiCfg.szMidiGlb[MIDIOUT_NOTEOFF*32], "9c n 0"); - lstrcpy(&m_MidiCfg.szMidiGlb[MIDIOUT_PROGRAM*32], "Cc p"); - lstrcpy(&m_MidiCfg.szMidiSFXExt[0], "F0F000z"); - for (int iz=0; iz<16; iz++) wsprintf(&m_MidiCfg.szMidiZXXExt[iz*32], "F0F001%02X", iz*8); -} - - -UINT CSoundFile::GetNumChannels() const -//------------------------------------- -{ - UINT n = 0; - for (UINT i=0; i 1) && (s)) s[1] = '\x0A'; - while ((*p) && (i+2 < len)) - { - BYTE c = (BYTE)*p++; - if ((c == 0x0D) || ((c == ' ') && (ln >= linesize))) - { if (s) { s[i++] = '\x0D'; s[i++] = '\x0A'; } else i+= 2; ln=0; } - else - if (c >= 0x20) { if (s) s[i++] = c; else i++; ln++; } - } - if (s) s[i] = 0; - return i; -} - - -UINT CSoundFile::GetRawSongComments(LPSTR s, UINT len, UINT linesize) -//------------------------------------------------------------------- -{ - LPCSTR p = m_lpszSongComments; - if (!p) return 0; - UINT i = 0, ln=0; - while ((*p) && (i < len-1)) - { - BYTE c = (BYTE)*p++; - if ((c == 0x0D) || (c == 0x0A)) - { - if (ln) - { - while (ln < linesize) { if (s) s[i] = ' '; i++; ln++; } - ln = 0; - } - } else - if ((c == ' ') && (!ln)) - { - UINT k=0; - while ((p[k]) && (p[k] >= ' ')) k++; - if (k <= linesize) - { - if (s) s[i] = ' '; - i++; - ln++; - } - } else - { - if (s) s[i] = c; - i++; - ln++; - if (ln == linesize) ln = 0; - } - } - if (ln) - { - while ((ln < linesize) && (i < len)) - { - if (s) s[i] = ' '; - i++; - ln++; - } - } - if (s) s[i] = 0; - return i; -} - - -BOOL CSoundFile::SetWaveConfig(UINT nRate,UINT nBits,UINT nChannels,BOOL bMMX) -//---------------------------------------------------------------------------- -{ - BOOL bReset = FALSE; - DWORD d = gdwSoundSetup & ~SNDMIX_ENABLEMMX; - if (bMMX) d |= SNDMIX_ENABLEMMX; - if ((gdwMixingFreq != nRate) || (gnBitsPerSample != nBits) || (gnChannels != nChannels) || (d != gdwSoundSetup)) bReset = TRUE; - gnChannels = nChannels; - gdwSoundSetup = d; - gdwMixingFreq = nRate; - gnBitsPerSample = nBits; - InitPlayer(bReset); -//printf("Rate=%u Bits=%u Channels=%u MMX=%u\n",gdwMixingFreq,gnBitsPerSample,gnChannels,bMMX); - return TRUE; -} - - -BOOL CSoundFile::SetResamplingMode(UINT nMode) -//-------------------------------------------- -{ - DWORD d = gdwSoundSetup & ~(SNDMIX_NORESAMPLING|SNDMIX_HQRESAMPLER|SNDMIX_ULTRAHQSRCMODE); - switch(nMode) - { - case SRCMODE_NEAREST: d |= SNDMIX_NORESAMPLING; break; - case SRCMODE_LINEAR: break; - case SRCMODE_SPLINE: d |= SNDMIX_HQRESAMPLER; break; - case SRCMODE_POLYPHASE: d |= (SNDMIX_HQRESAMPLER|SNDMIX_ULTRAHQSRCMODE); break; - default: - return FALSE; - } - gdwSoundSetup = d; - return TRUE; -} - - -BOOL CSoundFile::SetMasterVolume(UINT nVol, BOOL bAdjustAGC) -//---------------------------------------------------------- -{ - if (nVol < 1) nVol = 1; - if (nVol > 0x200) nVol = 0x200; // x4 maximum - if ((gdwSoundSetup & SNDMIX_AGC) && (bAdjustAGC)) - { - gnAGC = gnAGC * m_nMasterVolume / nVol; - if (gnAGC > AGC_UNITY) gnAGC = AGC_UNITY; - } - m_nMasterVolume = nVol; - return TRUE; -} - - -void CSoundFile::SetAGC(BOOL b) -//----------------------------- -{ - if (b) - { - if (!(gdwSoundSetup & SNDMIX_AGC)) - { - gdwSoundSetup |= SNDMIX_AGC; - gnAGC = AGC_UNITY; - } - } else gdwSoundSetup &= ~SNDMIX_AGC; -} - - -UINT CSoundFile::GetNumPatterns() const -//------------------------------------- -{ - UINT i = 0; - while ((i < MAX_ORDERS) && (Order[i] < 0xFF)) i++; - return i; -} - - -UINT CSoundFile::GetNumInstruments() const -//---------------------------------------- -{ - UINT n=0; - for (UINT i=0; i= MAX_ORDERS) - || (Order[nPattern] >= MAX_PATTERNS) - || (nPos >= PatternSize[Order[nPattern]])) - { - nPos = 0; - nPattern = 0; - } - UINT nRow = nPos; - if ((nRow) && (Order[nPattern] < MAX_PATTERNS)) - { - MODCOMMAND *p = Patterns[Order[nPattern]]; - if ((p) && (nRow < PatternSize[Order[nPattern]])) - { - BOOL bOk = FALSE; - while ((!bOk) && (nRow > 0)) - { - UINT n = nRow * m_nChannels; - for (UINT k=0; k= MAX_ORDERS) || (Order[nPos] >= MAX_PATTERNS)) return; - for (UINT j=0; jplayed = 0; - } -} - - -void CSoundFile::LoopPattern(int nPat, int nRow) -//---------------------------------------------- -{ - if ((nPat < 0) || (nPat >= MAX_PATTERNS) || (!Patterns[nPat])) - { - m_dwSongFlags &= ~SONG_PATTERNLOOP; - } else - { - if ((nRow < 0) || (nRow >= PatternSize[nPat])) nRow = 0; - m_nPattern = nPat; - m_nRow = m_nNextRow = nRow; - m_nTickCount = m_nMusicSpeed; - m_nPatternDelay = 0; - m_nFrameDelay = 0; - m_nBufferCount = 0; - m_dwSongFlags |= SONG_PATTERNLOOP; - } -} - - -UINT CSoundFile::GetBestSaveFormat() const -//---------------------------------------- -{ - if ((!m_nSamples) || (!m_nChannels)) return MOD_TYPE_NONE; - if (!m_nType) return MOD_TYPE_NONE; - if (m_nType & (MOD_TYPE_MOD|MOD_TYPE_OKT)) - return MOD_TYPE_MOD; - if (m_nType & (MOD_TYPE_S3M|MOD_TYPE_STM|MOD_TYPE_ULT|MOD_TYPE_FAR|MOD_TYPE_PTM)) - return MOD_TYPE_S3M; - if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MED|MOD_TYPE_MTM|MOD_TYPE_MT2)) - return MOD_TYPE_XM; - return MOD_TYPE_IT; -} - - -UINT CSoundFile::GetSaveFormats() const -//------------------------------------- -{ - UINT n = 0; - if ((!m_nSamples) || (!m_nChannels) || (m_nType == MOD_TYPE_NONE)) return 0; - switch(m_nType) - { - case MOD_TYPE_MOD: n = MOD_TYPE_MOD; - case MOD_TYPE_S3M: n = MOD_TYPE_S3M; - } - n |= MOD_TYPE_XM | MOD_TYPE_IT; - if (!(m_dwSongFlags & SONG_INSTRUMENTMODE)) - { - if (m_nSamples < 32) n |= MOD_TYPE_MOD; - n |= MOD_TYPE_S3M; - } - return n; -} - - -UINT CSoundFile::GetSampleName(UINT nSample,LPSTR s) const -//-------------------------------------------------------- -{ - char sztmp[40] = ""; // changed from CHAR - memcpy(sztmp, m_szNames[nSample],32); - sztmp[31] = 0; - if (s) strcpy(s, sztmp); - return strlen(sztmp); -} - - -UINT CSoundFile::GetInstrumentName(UINT nInstr,LPSTR s) const -//----------------------------------------------------------- -{ - char sztmp[40] = ""; // changed from CHAR - if ((nInstr >= MAX_INSTRUMENTS) || (!Headers[nInstr])) - { - if (s) *s = 0; - return 0; - } - INSTRUMENTHEADER *penv = Headers[nInstr]; - memcpy(sztmp, penv->name, 32); - sztmp[31] = 0; - if (s) strcpy(s, sztmp); - return strlen(sztmp); -} - - -#ifndef NO_PACKING -UINT CSoundFile::PackSample(int &sample, int next) -//------------------------------------------------ -{ - UINT i = 0; - int delta = next - sample; - if (delta >= 0) - { - for (i=0; i<7; i++) if (delta <= (int)CompressionTable[i+1]) break; - } else - { - for (i=8; i<15; i++) if (delta >= (int)CompressionTable[i+1]) break; - } - sample += (int)CompressionTable[i]; - return i; -} - - -BOOL CSoundFile::CanPackSample(LPSTR pSample, UINT nLen, UINT nPacking, BYTE *result) -//----------------------------------------------------------------------------------- -{ - int pos, old, oldpos, besttable = 0; - DWORD dwErr, dwTotal, dwResult; - int i,j; - - if (result) *result = 0; - if ((!pSample) || (nLen < 1024)) return FALSE; - // Try packing with different tables - dwResult = 0; - for (j=1; j= dwResult) - { - dwResult = dwErr; - besttable = j; - } - } - memcpy(CompressionTable, UnpackTable[besttable], 16); - if (result) - { - if (dwResult > 100) *result = 100; else *result = (BYTE)dwResult; - } - return (dwResult >= nPacking) ? TRUE : FALSE; -} -#endif // NO_PACKING - - - -// Flags: -// 0 = signed 8-bit PCM data (default) -// 1 = unsigned 8-bit PCM data -// 2 = 8-bit ADPCM data with linear table -// 3 = 4-bit ADPCM data -// 4 = 16-bit ADPCM data with linear table -// 5 = signed 16-bit PCM data -// 6 = unsigned 16-bit PCM data - - -UINT CSoundFile::ReadSample(MODINSTRUMENT *pIns, UINT nFlags, LPCSTR lpMemFile, DWORD dwMemLength) -//------------------------------------------------------------------------------------------------ -{ - UINT len = 0, mem = pIns->nLength+6; - - if ((!pIns) || (pIns->nLength < 1) || (!lpMemFile)) return 0; - if (pIns->nLength > MAX_SAMPLE_LENGTH) pIns->nLength = MAX_SAMPLE_LENGTH; - pIns->uFlags &= ~(CHN_16BIT|CHN_STEREO); - if (nFlags & RSF_16BIT) - { - mem *= 2; - pIns->uFlags |= CHN_16BIT; - } - if (nFlags & RSF_STEREO) - { - mem *= 2; - pIns->uFlags |= CHN_STEREO; - } - if ((pIns->pSample = AllocateSample(mem)) == NULL) - { - pIns->nLength = 0; - return 0; - } - switch(nFlags) - { - // 1: 8-bit unsigned PCM data - case RS_PCM8U: - { - len = pIns->nLength; - if (len > dwMemLength) len = pIns->nLength = dwMemLength; - signed char *pSample = pIns->pSample; - for (UINT j=0; jnLength; - if (len > dwMemLength) break; - signed char *pSample = pIns->pSample; - const signed char *p = (const signed char *)lpMemFile; - int delta = 0; - - for (UINT j=0; jnLength + 1) / 2; - if (len > dwMemLength - 16) break; - memcpy(CompressionTable, lpMemFile, 16); - lpMemFile += 16; - signed char *pSample = pIns->pSample; - signed char delta = 0; - for (UINT j=0; j> 4); - delta = (signed char)GetDeltaValue((int)delta, b0); - pSample[0] = delta; - delta = (signed char)GetDeltaValue((int)delta, b1); - pSample[1] = delta; - pSample += 2; - } - len += 16; - } - break; - - // 4: 16-bit ADPCM data with linear table - case RS_PCM16D: - { - len = pIns->nLength * 2; - if (len > dwMemLength) break; - short *pSample = (short *)pIns->pSample; - short *p = (short *)lpMemFile; - unsigned short tmp; - int delta16 = 0; - for (UINT j=0; jnLength * 2; - if (len <= dwMemLength) memcpy(pIns->pSample, lpMemFile, len); - short int *pSample = (short int *)pIns->pSample; - for (UINT j=0; jnLength * 2; - if (len > dwMemLength) len = dwMemLength & ~1; - if (len > 1) - { - signed char *pSample = (signed char *)pIns->pSample; - signed char *pSrc = (signed char *)lpMemFile; - for (UINT j=0; jnLength * 2; - if (len <= dwMemLength) memcpy(pIns->pSample, lpMemFile, len); - short int *pSample = (short int *)pIns->pSample; - for (UINT j=0; jnLength * 2; - if (len*2 <= dwMemLength) - { - signed char *pSample = (signed char *)pIns->pSample; - signed char *pSrc = (signed char *)lpMemFile; - for (UINT j=0; jnLength; - signed char *psrc = (signed char *)lpMemFile; - signed char *pSample = (signed char *)pIns->pSample; - if (len*2 > dwMemLength) break; - for (UINT j=0; jnLength; - short int *psrc = (short int *)lpMemFile; - short int *pSample = (short int *)pIns->pSample; - if (len*4 > dwMemLength) break; - for (UINT j=0; jpSample, pIns->nLength, (LPBYTE)lpMemFile, dwMemLength, (nFlags == RS_IT2158)); - else - ITUnpack16Bit(pIns->pSample, pIns->nLength, (LPBYTE)lpMemFile, dwMemLength, (nFlags == RS_IT21516)); - break; - -#ifndef MODPLUG_FASTSOUNDLIB - // 8-bit interleaved stereo samples - case RS_STIPCM8S: - case RS_STIPCM8U: - { - int iadd = 0; - if (nFlags == RS_STIPCM8U) { iadd = -0x80; } - len = pIns->nLength; - if (len*2 > dwMemLength) len = dwMemLength >> 1; - LPBYTE psrc = (LPBYTE)lpMemFile; - LPBYTE pSample = (LPBYTE)pIns->pSample; - for (UINT j=0; jnLength; - if (len*4 > dwMemLength) len = dwMemLength >> 2; - short int *psrc = (short int *)lpMemFile; - short int *pSample = (short int *)pIns->pSample; - for (UINT j=0; j 9) - { - const char *psrc = lpMemFile; - char packcharacter = lpMemFile[8], *pdest = (char *)pIns->pSample; - len += bswapLE32(*((LPDWORD)(lpMemFile+4))); - if (len > dwMemLength) len = dwMemLength; - UINT dmax = pIns->nLength; - if (pIns->uFlags & CHN_16BIT) dmax <<= 1; - AMSUnpack(psrc+9, len-9, pdest, dmax, packcharacter); - } - break; - - // PTM 8bit delta to 16-bit sample - case RS_PTM8DTO16: - { - len = pIns->nLength * 2; - if (len > dwMemLength) break; - signed char *pSample = (signed char *)pIns->pSample; - signed char delta8 = 0; - for (UINT j=0; jpSample; - for (UINT j=0; j= 4) - { - LPBYTE pSample = (LPBYTE)pIns->pSample; - LPBYTE ibuf = (LPBYTE)lpMemFile; - DWORD bitbuf = bswapLE32(*((DWORD *)ibuf)); - UINT bitnum = 32; - BYTE dlt = 0, lowbyte = 0; - ibuf += 4; - for (UINT j=0; jnLength; j++) - { - BYTE hibyte; - BYTE sign; - if (nFlags == RS_MDL16) lowbyte = (BYTE)MDLReadBits(bitbuf, bitnum, ibuf, 8); - sign = (BYTE)MDLReadBits(bitbuf, bitnum, ibuf, 1); - if (MDLReadBits(bitbuf, bitnum, ibuf, 1)) - { - hibyte = (BYTE)MDLReadBits(bitbuf, bitnum, ibuf, 3); - } else - { - hibyte = 8; - while (!MDLReadBits(bitbuf, bitnum, ibuf, 1)) hibyte += 0x10; - hibyte += MDLReadBits(bitbuf, bitnum, ibuf, 4); - } - if (sign) hibyte = ~hibyte; - dlt += hibyte; - if (nFlags != RS_MDL16) - pSample[j] = dlt; - else - { - pSample[j<<1] = lowbyte; - pSample[(j<<1)+1] = dlt; - } - } - } - break; - - case RS_DMF8: - case RS_DMF16: - len = dwMemLength; - if (len >= 4) - { - UINT maxlen = pIns->nLength; - if (pIns->uFlags & CHN_16BIT) maxlen <<= 1; - LPBYTE ibuf = (LPBYTE)lpMemFile, ibufmax = (LPBYTE)(lpMemFile+dwMemLength); - len = DMFUnpack((LPBYTE)pIns->pSample, ibuf, ibufmax, maxlen); - } - break; - -#ifdef MODPLUG_TRACKER - // PCM 24-bit signed -> load sample, and normalize it to 16-bit - case RS_PCM24S: - case RS_PCM32S: - len = pIns->nLength * 3; - if (nFlags == RS_PCM32S) len += pIns->nLength; - if (len > dwMemLength) break; - if (len > 4*8) - { - UINT slsize = (nFlags == RS_PCM32S) ? 4 : 3; - LPBYTE pSrc = (LPBYTE)lpMemFile; - LONG max = 255; - if (nFlags == RS_PCM32S) pSrc++; - for (UINT j=0; j max) max = l; - if (-l > max) max = -l; - } - max = (max / 128) + 1; - signed short *pDest = (signed short *)pIns->pSample; - for (UINT k=0; k load sample, and normalize it to 16-bit - case RS_STIPCM24S: - case RS_STIPCM32S: - len = pIns->nLength * 6; - if (nFlags == RS_STIPCM32S) len += pIns->nLength * 2; - if (len > dwMemLength) break; - if (len > 8*8) - { - UINT slsize = (nFlags == RS_STIPCM32S) ? 4 : 3; - LPBYTE pSrc = (LPBYTE)lpMemFile; - LONG max = 255; - if (nFlags == RS_STIPCM32S) pSrc++; - for (UINT j=0; j max) max = l; - if (-l > max) max = -l; - } - max = (max / 128) + 1; - signed short *pDest = (signed short *)pIns->pSample; - for (UINT k=0; knLength; - if (len*4 > dwMemLength) len = dwMemLength >> 2; - LPCBYTE psrc = (LPCBYTE)lpMemFile; - short int *pSample = (short int *)pIns->pSample; - for (UINT j=0; jnLength; - if (len > dwMemLength) len = pIns->nLength = dwMemLength; - memcpy(pIns->pSample, lpMemFile, len); - } - if (len > dwMemLength) - { - if (pIns->pSample) - { - pIns->nLength = 0; - FreeSample(pIns->pSample); - pIns->pSample = NULL; - } - return 0; - } - AdjustSampleLoop(pIns); - return len; -} - - -void CSoundFile::AdjustSampleLoop(MODINSTRUMENT *pIns) -//---------------------------------------------------- -{ - if (!pIns->pSample) return; - if (pIns->nLoopEnd > pIns->nLength) pIns->nLoopEnd = pIns->nLength; - if (pIns->nLoopStart+2 >= pIns->nLoopEnd) - { - pIns->nLoopStart = pIns->nLoopEnd = 0; - pIns->uFlags &= ~CHN_LOOP; - } - UINT len = pIns->nLength; - if (pIns->uFlags & CHN_16BIT) - { - short int *pSample = (short int *)pIns->pSample; - // Adjust end of sample - if (pIns->uFlags & CHN_STEREO) - { - pSample[len*2+6] = pSample[len*2+4] = pSample[len*2+2] = pSample[len*2] = pSample[len*2-2]; - pSample[len*2+7] = pSample[len*2+5] = pSample[len*2+3] = pSample[len*2+1] = pSample[len*2-1]; - } else - { - pSample[len+4] = pSample[len+3] = pSample[len+2] = pSample[len+1] = pSample[len] = pSample[len-1]; - } - if ((pIns->uFlags & (CHN_LOOP|CHN_PINGPONGLOOP|CHN_STEREO)) == CHN_LOOP) - { - // Fix bad loops - if ((pIns->nLoopEnd+3 >= pIns->nLength) || (m_nType & MOD_TYPE_S3M)) - { - pSample[pIns->nLoopEnd] = pSample[pIns->nLoopStart]; - pSample[pIns->nLoopEnd+1] = pSample[pIns->nLoopStart+1]; - pSample[pIns->nLoopEnd+2] = pSample[pIns->nLoopStart+2]; - pSample[pIns->nLoopEnd+3] = pSample[pIns->nLoopStart+3]; - pSample[pIns->nLoopEnd+4] = pSample[pIns->nLoopStart+4]; - } - } - } else - { - signed char *pSample = pIns->pSample; -#ifndef MODPLUG_FASTSOUNDLIB - // Crappy samples (except chiptunes) ? - if ((pIns->nLength > 0x100) && (m_nType & (MOD_TYPE_MOD|MOD_TYPE_S3M)) - && (!(pIns->uFlags & CHN_STEREO))) - { - int smpend = pSample[pIns->nLength-1], smpfix = 0, kscan; - for (kscan=pIns->nLength-1; kscan>0; kscan--) - { - smpfix = pSample[kscan-1]; - if (smpfix != smpend) break; - } - int delta = smpfix - smpend; - if (((!(pIns->uFlags & CHN_LOOP)) || (kscan > (int)pIns->nLoopEnd)) - && ((delta < -8) || (delta > 8))) - { - while (kscan<(int)pIns->nLength) - { - if (!(kscan & 7)) - { - if (smpfix > 0) smpfix--; - if (smpfix < 0) smpfix++; - } - pSample[kscan] = (signed char)smpfix; - kscan++; - } - } - } -#endif - // Adjust end of sample - if (pIns->uFlags & CHN_STEREO) - { - pSample[len*2+6] = pSample[len*2+4] = pSample[len*2+2] = pSample[len*2] = pSample[len*2-2]; - pSample[len*2+7] = pSample[len*2+5] = pSample[len*2+3] = pSample[len*2+1] = pSample[len*2-1]; - } else - { - pSample[len+4] = pSample[len+3] = pSample[len+2] = pSample[len+1] = pSample[len] = pSample[len-1]; - } - if ((pIns->uFlags & (CHN_LOOP|CHN_PINGPONGLOOP|CHN_STEREO)) == CHN_LOOP) - { - if ((pIns->nLoopEnd+3 >= pIns->nLength) || (m_nType & (MOD_TYPE_MOD|MOD_TYPE_S3M))) - { - pSample[pIns->nLoopEnd] = pSample[pIns->nLoopStart]; - pSample[pIns->nLoopEnd+1] = pSample[pIns->nLoopStart+1]; - pSample[pIns->nLoopEnd+2] = pSample[pIns->nLoopStart+2]; - pSample[pIns->nLoopEnd+3] = pSample[pIns->nLoopStart+3]; - pSample[pIns->nLoopEnd+4] = pSample[pIns->nLoopStart+4]; - } - } - } -} - - -///////////////////////////////////////////////////////////// -// Transpose <-> Frequency conversions - -// returns 8363*2^((transp*128+ftune)/(12*128)) -DWORD CSoundFile::TransposeToFrequency(int transp, int ftune) -//----------------------------------------------------------- -{ - //---GCCFIX: Removed assembly. -#ifdef MSC_VER - const float _fbase = 8363; - const float _factor = 1.0f/(12.0f*128.0f); - int result; - DWORD freq; - - transp = (transp << 7) + ftune; - _asm { - fild transp - fld _factor - fmulp st(1), st(0) - fist result - fisub result - f2xm1 - fild result - fld _fbase - fscale - fstp st(1) - fmul st(1), st(0) - faddp st(1), st(0) - fistp freq - } - UINT derr = freq % 11025; - if (derr <= 8) freq -= derr; - if (derr >= 11015) freq += 11025-derr; - derr = freq % 1000; - if (derr <= 5) freq -= derr; - if (derr >= 995) freq += 1000-derr; - return freq; -#else - return (DWORD) (8363.0 * pow(2, (transp * 128.0 + ftune) / 1536.0)); -#endif -} - - -// returns 12*128*log2(freq/8363) -int CSoundFile::FrequencyToTranspose(DWORD freq) -//---------------------------------------------- -{ - //---GCCFIX: Removed assembly. -#ifdef MSC_VER - const float _f1_8363 = 1.0f / 8363.0f; - const float _factor = 128 * 12; - LONG result; - - if (!freq) return 0; - _asm { - fld _factor - fild freq - fld _f1_8363 - fmulp st(1), st(0) - fyl2x - fistp result - } - return result; -#else - return (int) (1536.0 * (log(freq / 8363.0) / log(2))); -#endif -} - - -void CSoundFile::FrequencyToTranspose(MODINSTRUMENT *psmp) -//-------------------------------------------------------- -{ - int f2t = FrequencyToTranspose(psmp->nC4Speed); - int transp = f2t >> 7; - int ftune = f2t & 0x7F; - if (ftune > 80) - { - transp++; - ftune -= 128; - } - if (transp > 127) transp = 127; - if (transp < -127) transp = -127; - psmp->RelativeTone = transp; - psmp->nFineTune = ftune; -} - - -void CSoundFile::CheckCPUUsage(UINT nCPU) -//--------------------------------------- -{ - if (nCPU > 100) nCPU = 100; - gnCPUUsage = nCPU; - if (nCPU < 90) - { - m_dwSongFlags &= ~SONG_CPUVERYHIGH; - } else - if ((m_dwSongFlags & SONG_CPUVERYHIGH) && (nCPU >= 94)) - { - UINT i=MAX_CHANNELS; - while (i >= 8) - { - i--; - if (Chn[i].nLength) - { - Chn[i].nLength = Chn[i].nPos = 0; - nCPU -= 2; - if (nCPU < 94) break; - } - } - } else - if (nCPU > 90) - { - m_dwSongFlags |= SONG_CPUVERYHIGH; - } -} - - -BOOL CSoundFile::SetPatternName(UINT nPat, LPCSTR lpszName) -//--------------------------------------------------------- -{ - char szName[MAX_PATTERNNAME] = ""; // changed from CHAR - if (nPat >= MAX_PATTERNS) return FALSE; - if (lpszName) lstrcpyn(szName, lpszName, MAX_PATTERNNAME); - szName[MAX_PATTERNNAME-1] = 0; - if (!m_lpszPatternNames) m_nPatternNames = 0; - if (nPat >= m_nPatternNames) - { - if (!lpszName[0]) return TRUE; - UINT len = (nPat+1)*MAX_PATTERNNAME; - char *p = new char[len]; // changed from CHAR - if (!p) return FALSE; - memset(p, 0, len); - if (m_lpszPatternNames) - { - memcpy(p, m_lpszPatternNames, m_nPatternNames * MAX_PATTERNNAME); - delete m_lpszPatternNames; - m_lpszPatternNames = NULL; - } - m_lpszPatternNames = p; - m_nPatternNames = nPat + 1; - } - memcpy(m_lpszPatternNames + nPat * MAX_PATTERNNAME, szName, MAX_PATTERNNAME); - return TRUE; -} - - -BOOL CSoundFile::GetPatternName(UINT nPat, LPSTR lpszName, UINT cbSize) const -//--------------------------------------------------------------------------- -{ - if ((!lpszName) || (!cbSize)) return FALSE; - lpszName[0] = 0; - if (cbSize > MAX_PATTERNNAME) cbSize = MAX_PATTERNNAME; - if ((m_lpszPatternNames) && (nPat < m_nPatternNames)) - { - memcpy(lpszName, m_lpszPatternNames + nPat * MAX_PATTERNNAME, cbSize); - lpszName[cbSize-1] = 0; - return TRUE; - } - return FALSE; -} - -UINT CSoundFile::GetHighestUsedChannel() -//------------------------------ -{ - UINT highchan = 0; - - for (UINT ipat=0; ipatnote) && (p->note <= 120)) - { - if ((j % m_nChannels) > highchan) - highchan = j % m_nChannels; - } - } - } - } - - return highchan; -} - - - -#ifndef MODPLUG_FASTSOUNDLIB - -UINT CSoundFile::DetectUnusedSamples(BOOL *pbIns) -//----------------------------------------------- -{ - UINT nExt = 0; - - if (!pbIns) return 0; - if (m_dwSongFlags & SONG_INSTRUMENTMODE) - { - memset(pbIns, 0, MAX_SAMPLES * sizeof(BOOL)); - for (UINT ipat=0; ipatnote) && (p->note <= 120)) - { - if ((p->instr) && (p->instr < MAX_INSTRUMENTS)) - { - INSTRUMENTHEADER *penv = Headers[p->instr]; - if (penv) - { - UINT n = penv->Keyboard[p->note-1]; - if (n < MAX_SAMPLES) pbIns[n] = TRUE; - } - } else - { - for (UINT k=1; k<=m_nInstruments; k++) - { - INSTRUMENTHEADER *penv = Headers[k]; - if (penv) - { - UINT n = penv->Keyboard[p->note-1]; - if (n < MAX_SAMPLES) pbIns[n] = TRUE; - } - } - } - } - } - } - } - for (UINT ichk=1; ichk<=m_nSamples; ichk++) - { - if ((!pbIns[ichk]) && (Ins[ichk].pSample)) nExt++; - } - } - return nExt; -} - - -BOOL CSoundFile::RemoveSelectedSamples(BOOL *pbIns) -//------------------------------------------------- -{ - if (!pbIns) return FALSE; - for (UINT j=1; j 1)) m_nSamples--; - } - } - return TRUE; -} - - -BOOL CSoundFile::DestroySample(UINT nSample) -//------------------------------------------ -{ - if ((!nSample) || (nSample >= MAX_SAMPLES)) return FALSE; - if (!Ins[nSample].pSample) return TRUE; - MODINSTRUMENT *pins = &Ins[nSample]; - signed char *pSample = pins->pSample; - pins->pSample = NULL; - pins->nLength = 0; - pins->uFlags &= ~(CHN_16BIT); - for (UINT i=0; i, - * Adam Goode (endian and char fixes for PPC) -*/ - -#include - -#ifndef __SNDFILE_H -#define __SNDFILE_H - -#define MODPLUG_TRACKER 1 -#define MODPLUG_PLAYER 1 - -#ifdef UNDER_CE -int _strnicmp(const char *str1,const char *str2, int n); -#endif - -#ifndef LPCBYTE -typedef const BYTE * LPCBYTE; -#endif - -#define MOD_AMIGAC2 0x1AB -#define MAX_SAMPLE_LENGTH 16000000 -#define MAX_SAMPLE_RATE 192000 -#define MAX_ORDERS 256 -#define MAX_PATTERNS 240 -#define MAX_SAMPLES 240 -#define MAX_INSTRUMENTS MAX_SAMPLES -#ifdef MODPLUG_FASTSOUNDLIB -#define MAX_CHANNELS 80 -#else -#define MAX_CHANNELS 256 -#endif -#define MAX_BASECHANNELS 64 -#define MAX_ENVPOINTS 32 -#define MIN_PERIOD 0x0020 -#define MAX_PERIOD 0xFFFF -#define MAX_PATTERNNAME 32 -#define MAX_CHANNELNAME 20 -#define MAX_INFONAME 80 -#define MAX_EQ_BANDS 6 -#define MAX_MIXPLUGINS 8 - - -#define MOD_TYPE_NONE 0x00 -#define MOD_TYPE_MOD 0x01 -#define MOD_TYPE_S3M 0x02 -#define MOD_TYPE_XM 0x04 -#define MOD_TYPE_MED 0x08 -#define MOD_TYPE_MTM 0x10 -#define MOD_TYPE_IT 0x20 -#define MOD_TYPE_669 0x40 -#define MOD_TYPE_ULT 0x80 -#define MOD_TYPE_STM 0x100 -#define MOD_TYPE_FAR 0x200 -#define MOD_TYPE_WAV 0x400 -#define MOD_TYPE_AMF 0x800 -#define MOD_TYPE_AMS 0x1000 -#define MOD_TYPE_DSM 0x2000 -#define MOD_TYPE_MDL 0x4000 -#define MOD_TYPE_OKT 0x8000 -#define MOD_TYPE_MID 0x10000 -#define MOD_TYPE_DMF 0x20000 -#define MOD_TYPE_PTM 0x40000 -#define MOD_TYPE_DBM 0x80000 -#define MOD_TYPE_MT2 0x100000 -#define MOD_TYPE_AMF0 0x200000 -#define MOD_TYPE_PSM 0x400000 -#define MOD_TYPE_UMX 0x80000000 // Fake type -#define MAX_MODTYPE 23 - - - -// Channel flags: -// Bits 0-7: Sample Flags -#define CHN_16BIT 0x01 -#define CHN_LOOP 0x02 -#define CHN_PINGPONGLOOP 0x04 -#define CHN_SUSTAINLOOP 0x08 -#define CHN_PINGPONGSUSTAIN 0x10 -#define CHN_PANNING 0x20 -#define CHN_STEREO 0x40 -#define CHN_PINGPONGFLAG 0x80 -// Bits 8-31: Channel Flags -#define CHN_MUTE 0x100 -#define CHN_KEYOFF 0x200 -#define CHN_NOTEFADE 0x400 -#define CHN_SURROUND 0x800 -#define CHN_NOIDO 0x1000 -#define CHN_HQSRC 0x2000 -#define CHN_FILTER 0x4000 -#define CHN_VOLUMERAMP 0x8000 -#define CHN_VIBRATO 0x10000 -#define CHN_TREMOLO 0x20000 -#define CHN_PANBRELLO 0x40000 -#define CHN_PORTAMENTO 0x80000 -#define CHN_GLISSANDO 0x100000 -#define CHN_VOLENV 0x200000 -#define CHN_PANENV 0x400000 -#define CHN_PITCHENV 0x800000 -#define CHN_FASTVOLRAMP 0x1000000 -#define CHN_EXTRALOUD 0x2000000 -#define CHN_REVERB 0x4000000 -#define CHN_NOREVERB 0x8000000 -// used to turn off mute but have it reset later -#define CHN_NNAMUTE 0x10000000 - - -#define ENV_VOLUME 0x0001 -#define ENV_VOLSUSTAIN 0x0002 -#define ENV_VOLLOOP 0x0004 -#define ENV_PANNING 0x0008 -#define ENV_PANSUSTAIN 0x0010 -#define ENV_PANLOOP 0x0020 -#define ENV_PITCH 0x0040 -#define ENV_PITCHSUSTAIN 0x0080 -#define ENV_PITCHLOOP 0x0100 -#define ENV_SETPANNING 0x0200 -#define ENV_FILTER 0x0400 -#define ENV_VOLCARRY 0x0800 -#define ENV_PANCARRY 0x1000 -#define ENV_PITCHCARRY 0x2000 -#define ENV_MUTE 0x4000 - -#define CMD_NONE 0 -#define CMD_ARPEGGIO 1 -#define CMD_PORTAMENTOUP 2 -#define CMD_PORTAMENTODOWN 3 -#define CMD_TONEPORTAMENTO 4 -#define CMD_VIBRATO 5 -#define CMD_TONEPORTAVOL 6 -#define CMD_VIBRATOVOL 7 -#define CMD_TREMOLO 8 -#define CMD_PANNING8 9 -#define CMD_OFFSET 10 -#define CMD_VOLUMESLIDE 11 -#define CMD_POSITIONJUMP 12 -#define CMD_VOLUME 13 -#define CMD_PATTERNBREAK 14 -#define CMD_RETRIG 15 -#define CMD_SPEED 16 -#define CMD_TEMPO 17 -#define CMD_TREMOR 18 -#define CMD_MODCMDEX 19 -#define CMD_S3MCMDEX 20 -#define CMD_CHANNELVOLUME 21 -#define CMD_CHANNELVOLSLIDE 22 -#define CMD_GLOBALVOLUME 23 -#define CMD_GLOBALVOLSLIDE 24 -#define CMD_KEYOFF 25 -#define CMD_FINEVIBRATO 26 -#define CMD_PANBRELLO 27 -#define CMD_XFINEPORTAUPDOWN 28 -#define CMD_PANNINGSLIDE 29 -#define CMD_SETENVPOSITION 30 -#define CMD_MIDI 31 - - -// Volume Column commands -#define VOLCMD_VOLUME 1 -#define VOLCMD_PANNING 2 -#define VOLCMD_VOLSLIDEUP 3 -#define VOLCMD_VOLSLIDEDOWN 4 -#define VOLCMD_FINEVOLUP 5 -#define VOLCMD_FINEVOLDOWN 6 -#define VOLCMD_VIBRATOSPEED 7 -#define VOLCMD_VIBRATO 8 -#define VOLCMD_PANSLIDELEFT 9 -#define VOLCMD_PANSLIDERIGHT 10 -#define VOLCMD_TONEPORTAMENTO 11 -#define VOLCMD_PORTAUP 12 -#define VOLCMD_PORTADOWN 13 - -#define RSF_16BIT 0x04 -#define RSF_STEREO 0x08 - -#define RS_PCM8S 0 // 8-bit signed -#define RS_PCM8U 1 // 8-bit unsigned -#define RS_PCM8D 2 // 8-bit delta values -#define RS_ADPCM4 3 // 4-bit ADPCM-packed -#define RS_PCM16D 4 // 16-bit delta values -#define RS_PCM16S 5 // 16-bit signed -#define RS_PCM16U 6 // 16-bit unsigned -#define RS_PCM16M 7 // 16-bit motorola order -#define RS_STPCM8S (RS_PCM8S|RSF_STEREO) // stereo 8-bit signed -#define RS_STPCM8U (RS_PCM8U|RSF_STEREO) // stereo 8-bit unsigned -#define RS_STPCM8D (RS_PCM8D|RSF_STEREO) // stereo 8-bit delta values -#define RS_STPCM16S (RS_PCM16S|RSF_STEREO) // stereo 16-bit signed -#define RS_STPCM16U (RS_PCM16U|RSF_STEREO) // stereo 16-bit unsigned -#define RS_STPCM16D (RS_PCM16D|RSF_STEREO) // stereo 16-bit delta values -#define RS_STPCM16M (RS_PCM16M|RSF_STEREO) // stereo 16-bit signed big endian -// IT 2.14 compressed samples -#define RS_IT2148 0x10 -#define RS_IT21416 0x14 -#define RS_IT2158 0x12 -#define RS_IT21516 0x16 -// AMS Packed Samples -#define RS_AMS8 0x11 -#define RS_AMS16 0x15 -// DMF Huffman compression -#define RS_DMF8 0x13 -#define RS_DMF16 0x17 -// MDL Huffman compression -#define RS_MDL8 0x20 -#define RS_MDL16 0x24 -#define RS_PTM8DTO16 0x25 -// Stereo Interleaved Samples -#define RS_STIPCM8S (RS_PCM8S|0x40|RSF_STEREO) // stereo 8-bit signed -#define RS_STIPCM8U (RS_PCM8U|0x40|RSF_STEREO) // stereo 8-bit unsigned -#define RS_STIPCM16S (RS_PCM16S|0x40|RSF_STEREO) // stereo 16-bit signed -#define RS_STIPCM16U (RS_PCM16U|0x40|RSF_STEREO) // stereo 16-bit unsigned -#define RS_STIPCM16M (RS_PCM16M|0x40|RSF_STEREO) // stereo 16-bit signed big endian -// 24-bit signed -#define RS_PCM24S (RS_PCM16S|0x80) // mono 24-bit signed -#define RS_STIPCM24S (RS_PCM16S|0x80|RSF_STEREO) // stereo 24-bit signed -#define RS_PCM32S (RS_PCM16S|0xC0) // mono 24-bit signed -#define RS_STIPCM32S (RS_PCM16S|0xC0|RSF_STEREO) // stereo 24-bit signed - -// NNA types -#define NNA_NOTECUT 0 -#define NNA_CONTINUE 1 -#define NNA_NOTEOFF 2 -#define NNA_NOTEFADE 3 - -// DCT types -#define DCT_NONE 0 -#define DCT_NOTE 1 -#define DCT_SAMPLE 2 -#define DCT_INSTRUMENT 3 - -// DNA types -#define DNA_NOTECUT 0 -#define DNA_NOTEOFF 1 -#define DNA_NOTEFADE 2 - -// Mixer Hardware-Dependent features -#define SYSMIX_ENABLEMMX 0x01 -#define SYSMIX_WINDOWSNT 0x02 -#define SYSMIX_SLOWCPU 0x04 -#define SYSMIX_FASTCPU 0x08 - -// Module flags -#define SONG_EMBEDMIDICFG 0x0001 -#define SONG_FASTVOLSLIDES 0x0002 -#define SONG_ITOLDEFFECTS 0x0004 -#define SONG_ITCOMPATMODE 0x0008 -#define SONG_LINEARSLIDES 0x0010 -#define SONG_PATTERNLOOP 0x0020 -#define SONG_STEP 0x0040 -#define SONG_PAUSED 0x0080 -#define SONG_FADINGSONG 0x0100 -#define SONG_ENDREACHED 0x0200 -#define SONG_GLOBALFADE 0x0400 -#define SONG_CPUVERYHIGH 0x0800 -#define SONG_FIRSTTICK 0x1000 -#define SONG_MPTFILTERMODE 0x2000 -#define SONG_SURROUNDPAN 0x4000 -#define SONG_EXFILTERRANGE 0x8000 -#define SONG_AMIGALIMITS 0x10000 -#define SONG_INSTRUMENTMODE 0x20000 -#define SONG_ORDERLOCKED 0x40000 -#define SONG_NOSTEREO 0x80000 - -// Global Options (Renderer) -#define SNDMIX_REVERSESTEREO 0x0001 -#define SNDMIX_NOISEREDUCTION 0x0002 -#define SNDMIX_AGC 0x0004 -#define SNDMIX_NORESAMPLING 0x0008 -#define SNDMIX_HQRESAMPLER 0x0010 -#define SNDMIX_MEGABASS 0x0020 -#define SNDMIX_SURROUND 0x0040 -#define SNDMIX_REVERB 0x0080 -#define SNDMIX_EQ 0x0100 -#define SNDMIX_SOFTPANNING 0x0200 -#define SNDMIX_ULTRAHQSRCMODE 0x0400 -// Misc Flags (can safely be turned on or off) -#define SNDMIX_DIRECTTODISK 0x10000 -#define SNDMIX_ENABLEMMX 0x20000 -#define SNDMIX_NOBACKWARDJUMPS 0x40000 -#define SNDMIX_MAXDEFAULTPAN 0x80000 // Used by the MOD loader -#define SNDMIX_MUTECHNMODE 0x100000 // Notes are not played on muted channels -#define SNDMIX_NOSURROUND 0x200000 -#define SNDMIX_NOMIXING 0x400000 // don't actually do any mixing (values only) -#define SNDMIX_NORAMPING 0x800000 - -// Reverb Types (GM2 Presets) -enum { - REVERBTYPE_SMALLROOM, - REVERBTYPE_MEDIUMROOM, - REVERBTYPE_LARGEROOM, - REVERBTYPE_SMALLHALL, - REVERBTYPE_MEDIUMHALL, - REVERBTYPE_LARGEHALL, - NUM_REVERBTYPES -}; - - -enum { - SRCMODE_NEAREST, - SRCMODE_LINEAR, - SRCMODE_SPLINE, - SRCMODE_POLYPHASE, - NUM_SRC_MODES -}; - - -// Sample Struct -typedef struct _MODINSTRUMENT -{ - UINT nLength,nLoopStart,nLoopEnd; - UINT nSustainStart, nSustainEnd; - signed char *pSample; - UINT nC4Speed; - UINT nPan; - UINT nVolume; - UINT nGlobalVol; - UINT uFlags; - int RelativeTone; - int nFineTune; - UINT nVibType; - UINT nVibSweep; - UINT nVibDepth; - UINT nVibRate; - CHAR name[22]; - int played; // for note playback dots -} MODINSTRUMENT; - -typedef struct _INSTRUMENTENVELOPE { - int Ticks[32]; - BYTE Values[32]; - int nNodes; - int nLoopStart; - int nLoopEnd; - int nSustainStart; - int nSustainEnd; -} INSTRUMENTENVELOPE; - - -// Instrument Struct -typedef struct _INSTRUMENTHEADER -{ - UINT nFadeOut; - DWORD dwFlags; - unsigned int nGlobalVol; - unsigned int nPan; - unsigned int Keyboard[128]; - unsigned int NoteMap[128]; - INSTRUMENTENVELOPE VolEnv; - INSTRUMENTENVELOPE PanEnv; - INSTRUMENTENVELOPE PitchEnv; - unsigned int nNNA; - unsigned int nDCT; - unsigned int nDNA; - unsigned int nPanSwing; - unsigned int nVolSwing; - unsigned int nIFC; - unsigned int nIFR; - unsigned int wMidiBank; - unsigned int nMidiProgram; - unsigned int nMidiChannel; - unsigned int nMidiDrumKey; - int nPPS; - unsigned int nPPC; - CHAR name[32]; - CHAR filename[12]; - int played; // for note playback dots -} INSTRUMENTHEADER; - - -// Channel Struct -typedef struct _MODCHANNEL -{ - // First 32-bytes: Most used mixing information: don't change it - signed char * pCurrentSample; - DWORD nPos; - DWORD nPosLo; // actually 16-bit - unsigned int topnote_offset; - LONG nInc; // 16.16 - LONG nRightVol; - LONG nLeftVol; - LONG nRightRamp; - LONG nLeftRamp; - // 2nd cache line - DWORD nLength; - DWORD dwFlags; - DWORD nLoopStart; - DWORD nLoopEnd; - LONG nRampRightVol; - LONG nRampLeftVol; - - double nFilter_Y1, nFilter_Y2, nFilter_Y3, nFilter_Y4; - double nFilter_A0, nFilter_B0, nFilter_B1; - - LONG nROfs, nLOfs; - LONG nRampLength; - // Information not used in the mixer - signed char * pSample; - LONG nNewRightVol, nNewLeftVol; - LONG nRealVolume, nRealPan; - LONG nVolume, nPan, nFadeOutVol; - LONG nPeriod, nC4Speed, sample_freq, nPortamentoDest; - INSTRUMENTHEADER *pHeader; - MODINSTRUMENT *pInstrument; - int nVolEnvPosition, nPanEnvPosition, nPitchEnvPosition; - DWORD nMasterChn, nVUMeter; - LONG nGlobalVol, nInsVol; - LONG nFineTune, nTranspose; - LONG nPortamentoSlide, nAutoVibDepth; - UINT nAutoVibPos, nVibratoPos, nTremoloPos, nPanbrelloPos; - // 16-bit members - int nVolSwing, nPanSwing; - - // formally 8-bit members - unsigned int nNote, nNNA; - unsigned int nNewNote, nNewIns, nCommand, nArpeggio; - unsigned int nOldVolumeSlide, nOldFineVolUpDown; - unsigned int nOldPortaUpDown, nOldFinePortaUpDown; - unsigned int nOldPanSlide, nOldChnVolSlide; - unsigned int nVibratoType, nVibratoSpeed, nVibratoDepth; - unsigned int nTremoloType, nTremoloSpeed, nTremoloDepth; - unsigned int nPanbrelloType, nPanbrelloSpeed, nPanbrelloDepth; - unsigned int nOldCmdEx, nOldVolParam, nOldTempo; - unsigned int nOldOffset, nOldHiOffset; - unsigned int nCutOff, nResonance; - unsigned int nRetrigCount, nRetrigParam; - unsigned int nTremorCount, nTremorParam; - unsigned int nPatternLoop, nPatternLoopCount; - unsigned int nRowNote, nRowInstr; - unsigned int nRowVolCmd, nRowVolume; - unsigned int nRowCommand, nRowParam; - unsigned int nLeftVU, nRightVU; - unsigned int nActiveMacro, nLastInstr; - unsigned int nTickStart; - unsigned int nRealtime; - BYTE stupid_gcc_workaround; - -} MODCHANNEL; - - -typedef struct _MODCHANNELSETTINGS -{ - UINT nPan; - UINT nVolume; - DWORD dwFlags; - UINT nMixPlugin; - char szName[MAX_CHANNELNAME]; // changed from CHAR -} MODCHANNELSETTINGS; - - -typedef struct _MODCOMMAND -{ - BYTE note; - BYTE instr; - BYTE volcmd; - BYTE command; - BYTE vol; - BYTE param; -} MODCOMMAND, *LPMODCOMMAND; - -//////////////////////////////////////////////////////////////////// -// Mix Plugins -#define MIXPLUG_MIXREADY 0x01 // Set when cleared - -class IMixPlugin -{ -public: - virtual ~IMixPlugin() = 0; - virtual int AddRef() = 0; - virtual int Release() = 0; - virtual void SaveAllParameters() = 0; - virtual void RestoreAllParameters() = 0; - virtual void Process(float *pOutL, float *pOutR, unsigned int nSamples) = 0; - virtual void Init(unsigned int nFreq, int bReset) = 0; - virtual void MidiSend(DWORD dwMidiCode) = 0; - virtual void MidiCommand(UINT nMidiCh, UINT nMidiProg, UINT note, UINT vol) = 0; -}; - - -#define MIXPLUG_INPUTF_MASTEREFFECT 0x01 // Apply to master mix -#define MIXPLUG_INPUTF_BYPASS 0x02 // Bypass effect -#define MIXPLUG_INPUTF_WETMIX 0x04 // Wet Mix (dry added) - -typedef struct _SNDMIXPLUGINSTATE -{ - DWORD dwFlags; // MIXPLUG_XXXX - LONG nVolDecayL, nVolDecayR; // Buffer click removal - int *pMixBuffer; // Stereo effect send buffer - float *pOutBufferL; // Temp storage for int -> float conversion - float *pOutBufferR; -} SNDMIXPLUGINSTATE, *PSNDMIXPLUGINSTATE; - -typedef struct _SNDMIXPLUGININFO -{ - DWORD dwPluginId1; - DWORD dwPluginId2; - DWORD dwInputRouting; // MIXPLUG_INPUTF_XXXX - DWORD dwOutputRouting; // 0=mix 0x80+=fx - DWORD dwReserved[4]; // Reserved for routing info - CHAR szName[32]; - CHAR szLibraryName[64]; // original DLL name -} SNDMIXPLUGININFO, *PSNDMIXPLUGININFO; // Size should be 128 - -typedef struct _SNDMIXPLUGIN -{ - IMixPlugin *pMixPlugin; - PSNDMIXPLUGINSTATE pMixState; - ULONG nPluginDataSize; - PVOID pPluginData; - SNDMIXPLUGININFO Info; -} SNDMIXPLUGIN, *PSNDMIXPLUGIN; - -typedef BOOL (*PMIXPLUGINCREATEPROC)(PSNDMIXPLUGIN); - -//////////////////////////////////////////////////////////////////// - -enum { - MIDIOUT_START=0, - MIDIOUT_STOP, - MIDIOUT_TICK, - MIDIOUT_NOTEON, - MIDIOUT_NOTEOFF, - MIDIOUT_VOLUME, - MIDIOUT_PAN, - MIDIOUT_BANKSEL, - MIDIOUT_PROGRAM, -}; - - -typedef struct MODMIDICFG -{ - char szMidiGlb[9*32]; // changed from CHAR - char szMidiSFXExt[16*32]; // changed from CHAR - char szMidiZXXExt[128*32]; // changed from CHAR -} MODMIDICFG, *LPMODMIDICFG; - - -typedef VOID (* LPSNDMIXHOOKPROC)(int *, unsigned int, unsigned int); // buffer, samples, channels - - - -//============== -class CSoundFile -//============== -{ -public: // Static Members - static UINT m_nXBassDepth, m_nXBassRange; - static UINT m_nReverbDepth, m_nReverbDelay, gnReverbType; - static UINT m_nProLogicDepth, m_nProLogicDelay; - static UINT m_nMaxMixChannels; - static LONG m_nStreamVolume; - static DWORD gdwSysInfo, gdwSoundSetup, gdwMixingFreq, gnBitsPerSample, gnChannels; - static UINT gnAGC, gnVolumeRampSamples, gnCPUUsage; - static UINT gnVULeft, gnVURight; - static LPSNDMIXHOOKPROC gpSndMixHook; - static PMIXPLUGINCREATEPROC gpMixPluginCreateProc; - -public: // for Editing - MODCHANNEL Chn[MAX_CHANNELS]; // Channels - UINT ChnMix[MAX_CHANNELS]; // Channels to be mixed - MODINSTRUMENT Ins[MAX_SAMPLES]; // Instruments - INSTRUMENTHEADER *Headers[MAX_INSTRUMENTS]; // Instrument Headers - MODCHANNELSETTINGS ChnSettings[MAX_BASECHANNELS]; // Channels settings - MODCOMMAND *Patterns[MAX_PATTERNS]; // Patterns - WORD PatternSize[MAX_PATTERNS]; // Patterns Lengths - WORD PatternAllocSize[MAX_PATTERNS]; // Allocated pattern lengths (for async. resizing/playback) - BYTE Order[MAX_ORDERS]; // Pattern Orders - MODMIDICFG m_MidiCfg; // Midi macro config table - SNDMIXPLUGIN m_MixPlugins[MAX_MIXPLUGINS]; // Mix plugins - UINT m_nDefaultSpeed, m_nDefaultTempo, m_nDefaultGlobalVolume; - DWORD m_dwSongFlags; // Song flags SONG_XXXX - UINT m_nStereoSeparation; - UINT m_nChannels, m_nMixChannels, m_nMixStat, m_nBufferCount; - UINT m_nType, m_nSamples, m_nInstruments; - UINT m_nTickCount, m_nTotalCount, m_nPatternDelay, m_nFrameDelay; - UINT m_nMusicSpeed, m_nMusicTempo; - UINT m_nNextRow, m_nRow; - UINT m_nPattern,m_nCurrentPattern,m_nNextPattern,m_nLockedPattern,m_nRestartPos; - UINT m_nMasterVolume, m_nGlobalVolume, m_nSongPreAmp; - UINT m_nFreqFactor, m_nTempoFactor, m_nOldGlbVolSlide; - LONG m_nMinPeriod, m_nMaxPeriod, m_nRepeatCount, m_nInitialRepeatCount; - DWORD m_nGlobalFadeSamples, m_nGlobalFadeMaxSamples; - BYTE m_rowHighlightMajor, m_rowHighlightMinor; - UINT m_nPatternNames; - LPSTR m_lpszSongComments, m_lpszPatternNames; - char m_szNames[MAX_INSTRUMENTS][32]; // changed from CHAR - CHAR CompressionTable[16]; - -public: - CSoundFile(); - ~CSoundFile(); - -public: - BOOL Create(LPCBYTE lpStream, DWORD dwMemLength=0); - BOOL Destroy(); - UINT GetHighestUsedChannel(); - UINT GetType() const { return m_nType; } - UINT GetNumChannels() const; - UINT GetLogicalChannels() const { return m_nChannels; } - BOOL SetMasterVolume(UINT vol, BOOL bAdjustAGC=FALSE); - UINT GetMasterVolume() const { return m_nMasterVolume; } - UINT GetNumPatterns() const; - UINT GetNumInstruments() const; - UINT GetNumSamples() const { return m_nSamples; } - UINT GetCurrentPos() const; - UINT GetCurrentPattern() const { return m_nPattern; } - UINT GetCurrentOrder() const { return m_nCurrentPattern; } - UINT GetSongComments(LPSTR s, UINT cbsize, UINT linesize=32); - UINT GetRawSongComments(LPSTR s, UINT cbsize, UINT linesize=32); - UINT GetMaxPosition() const; - void SetCurrentPos(UINT nPos); - void SetCurrentOrder(UINT nOrder); - void GetTitle(LPSTR s) const { lstrcpyn(s,m_szNames[0],32); } - LPCSTR GetTitle() const { return m_szNames[0]; } - UINT GetSampleName(UINT nSample,LPSTR s=NULL) const; - UINT GetInstrumentName(UINT nInstr,LPSTR s=NULL) const; - UINT GetMusicSpeed() const { return m_nMusicSpeed; } - UINT GetMusicTempo() const { return m_nMusicTempo; } - DWORD GetLength(BOOL bAdjust, BOOL bTotal=FALSE); - DWORD GetSongTime() { return GetLength(FALSE, TRUE); } - void SetRepeatCount(int n) { m_nRepeatCount = n; m_nInitialRepeatCount = n; } - int GetRepeatCount() const { return m_nRepeatCount; } - BOOL IsPaused() const { return (m_dwSongFlags & SONG_PAUSED) ? TRUE : FALSE; } - void LoopPattern(int nPat, int nRow=0); - void CheckCPUUsage(UINT nCPU); - BOOL SetPatternName(UINT nPat, LPCSTR lpszName); - BOOL GetPatternName(UINT nPat, LPSTR lpszName, UINT cbSize=MAX_PATTERNNAME) const; - // Module Loaders - BOOL ReadXM(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadS3M(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadMod(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadMed(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadMTM(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadSTM(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadIT(LPCBYTE lpStream, DWORD dwMemLength); - BOOL Read669(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadUlt(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadWav(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadDSM(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadFAR(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadAMS(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadAMS2(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadMDL(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadOKT(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadDMF(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadPTM(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadDBM(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadAMF(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadMT2(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadPSM(LPCBYTE lpStream, DWORD dwMemLength); - BOOL ReadUMX(LPCBYTE lpStream, DWORD dwMemLength); - // MOD Convert function - UINT GetBestSaveFormat() const; - UINT GetSaveFormats() const; - void ConvertModCommand(MODCOMMAND *) const; - void S3MConvert(MODCOMMAND *m, BOOL bIT) const; - void S3MSaveConvert(UINT *pcmd, UINT *pprm, BOOL bIT) const; - WORD ModSaveCommand(const MODCOMMAND *m, BOOL bXM) const; -public: - // backhooks :) - static void (*_midi_out_note)(int chan, const MODCOMMAND *m); - static void (*_midi_out_raw)(unsigned char *,unsigned int, unsigned int); - -public: - // Real-time sound functions - VOID ResetChannels(); - - UINT Read(LPVOID lpBuffer, UINT cbBuffer); - UINT CreateStereoMix(int count); - BOOL FadeSong(UINT msec); - BOOL GlobalFadeSong(UINT msec); - UINT GetTotalTickCount() const { return m_nTotalCount; } - VOID ResetTotalTickCount() { m_nTotalCount = 0; } - -public: - // Mixer Config - static BOOL InitPlayer(BOOL bReset=FALSE); - static BOOL SetWaveConfig(UINT nRate,UINT nBits,UINT nChannels,BOOL bMMX=FALSE); - static BOOL SetResamplingMode(UINT nMode); // SRCMODE_XXXX - static BOOL IsStereo() { return (gnChannels > 1) ? TRUE : FALSE; } - static DWORD GetSampleRate() { return gdwMixingFreq; } - static DWORD GetBitsPerSample() { return gnBitsPerSample; } - static DWORD InitSysInfo(); - static DWORD GetSysInfo() { return gdwSysInfo; } - // AGC - static BOOL GetAGC() { return (gdwSoundSetup & SNDMIX_AGC) ? TRUE : FALSE; } - static void SetAGC(BOOL b); - static void ResetAGC(); - static void ProcessAGC(int count); - - // Floats - static VOID StereoMixToFloat(const int *pSrc, float *pOut1, float *pOut2, UINT nCount); - static VOID FloatToStereoMix(const float *pIn1, const float *pIn2, int *pOut, UINT nCount); - static VOID MonoMixToFloat(const int *pSrc, float *pOut, UINT nCount); - static VOID FloatToMonoMix(const float *pIn, int *pOut, UINT nCount); - - - - - - // wee... - static void InitializeEQ(BOOL bReset=TRUE); - static void SetEQGains(const UINT *pGains, UINT nBands, const UINT *pFreqs=NULL, BOOL bReset=FALSE); // 0=-12dB, 32=+12dB - /*static*/ void EQStereo(int *pbuffer, UINT nCount); - /*static*/ void EQMono(int *pbuffer, UINT nCount); - - - //GCCFIX -- added these functions back in! - static BOOL SetWaveConfigEx(BOOL bSurround,BOOL bNoOverSampling,BOOL bReverb,BOOL hqido,BOOL bMegaBass,BOOL bNR,BOOL bEQ); - // DSP Effects - static void InitializeDSP(BOOL bReset); - static void ProcessStereoDSP(int count); - static void ProcessMonoDSP(int count); - // [Reverb level 0(quiet)-100(loud)], [delay in ms, usually 40-200ms] - static BOOL SetReverbParameters(UINT nDepth, UINT nDelay); - // [XBass level 0(quiet)-100(loud)], [cutoff in Hz 10-100] - static BOOL SetXBassParameters(UINT nDepth, UINT nRange); - // [Surround level 0(quiet)-100(heavy)] [delay in ms, usually 5-40ms] - static BOOL SetSurroundParameters(UINT nDepth, UINT nDelay); -public: - BOOL ReadNote(); - BOOL ProcessRow(); - BOOL ProcessEffects(); - UINT GetNNAChannel(UINT nChn); - void CheckNNA(UINT nChn, UINT instr, int note, BOOL bForceCut); - void NoteChange(UINT nChn, int note, BOOL bPorta=FALSE, BOOL bResetEnv=TRUE, BOOL bManual=FALSE); - void InstrumentChange(MODCHANNEL *pChn, UINT instr, BOOL bPorta=FALSE,BOOL bUpdVol=TRUE,BOOL bResetEnv=TRUE); - // Channel Effects - void PortamentoUp(MODCHANNEL *pChn, UINT param); - void PortamentoDown(MODCHANNEL *pChn, UINT param); - void FinePortamentoUp(MODCHANNEL *pChn, UINT param); - void FinePortamentoDown(MODCHANNEL *pChn, UINT param); - void ExtraFinePortamentoUp(MODCHANNEL *pChn, UINT param); - void ExtraFinePortamentoDown(MODCHANNEL *pChn, UINT param); - void TonePortamento(MODCHANNEL *pChn, UINT param); - void Vibrato(MODCHANNEL *pChn, UINT param); - void FineVibrato(MODCHANNEL *pChn, UINT param); - void VolumeSlide(MODCHANNEL *pChn, UINT param); - void PanningSlide(MODCHANNEL *pChn, UINT param); - void ChannelVolSlide(MODCHANNEL *pChn, UINT param); - void FineVolumeUp(MODCHANNEL *pChn, UINT param); - void FineVolumeDown(MODCHANNEL *pChn, UINT param); - void Tremolo(MODCHANNEL *pChn, UINT param); - void Panbrello(MODCHANNEL *pChn, UINT param); - void RetrigNote(UINT nChn, UINT param); - void NoteCut(UINT nChn, UINT nTick); - void KeyOff(UINT nChn); - int PatternLoop(MODCHANNEL *, UINT param); - void ExtendedMODCommands(UINT nChn, UINT param); - void ExtendedS3MCommands(UINT nChn, UINT param); - void ExtendedChannelEffect(MODCHANNEL *, UINT param); - void MidiSend(unsigned char *data, unsigned int len, UINT nChn=0, int fake = 0); - void ProcessMidiMacro(UINT nChn, LPCSTR pszMidiMacro, UINT param=0, - UINT note=0, UINT velocity=0, UINT use_instr=0); - void SetupChannelFilter(MODCHANNEL *pChn, BOOL bReset, int flt_modifier=256,int freq=0) const; - // Low-Level effect processing - void DoFreqSlide(MODCHANNEL *pChn, LONG nFreqSlide); - // Global Effects - void SetTempo(UINT param); - void SetSpeed(UINT param); - void GlobalVolSlide(UINT param); - DWORD IsSongFinished(UINT nOrder, UINT nRow) const; - BOOL IsValidBackwardJump(UINT nStartOrder, UINT nStartRow, UINT nJumpOrder, UINT nJumpRow) const; - // Read/Write sample functions - signed char GetDeltaValue(signed char prev, UINT n) const { return (signed char)(prev + CompressionTable[n & 0x0F]); } - UINT PackSample(int &sample, int next); - BOOL CanPackSample(LPSTR pSample, UINT nLen, UINT nPacking, BYTE *result=NULL); - UINT ReadSample(MODINSTRUMENT *pIns, UINT nFlags, LPCSTR pMemFile, DWORD dwMemLength); - BOOL DestroySample(UINT nSample); - BOOL DestroyInstrument(UINT nInstr); - BOOL IsSampleUsed(UINT nSample); - BOOL IsInstrumentUsed(UINT nInstr); - BOOL RemoveInstrumentSamples(UINT nInstr); - UINT DetectUnusedSamples(BOOL *); - BOOL RemoveSelectedSamples(BOOL *); - void AdjustSampleLoop(MODINSTRUMENT *pIns); - // I/O from another sound file - BOOL ReadInstrumentFromSong(UINT nInstr, CSoundFile *, UINT nSrcInstrument); - BOOL ReadSampleFromSong(UINT nSample, CSoundFile *, UINT nSrcSample); - // Period/Note functions - UINT GetNoteFromPeriod(UINT period) const; - UINT GetPeriodFromNote(UINT note, int nFineTune, UINT nC4Speed) const; - UINT GetLinearPeriodFromNote(UINT note, int nFineTune, UINT nC4Speed) const; - UINT GetFreqFromPeriod(UINT period, UINT nC4Speed, int nPeriodFrac=0) const; - // Misc functions - MODINSTRUMENT *GetSample(UINT n) { return Ins+n; } - void ResetMidiCfg(); - UINT MapMidiInstrument(DWORD dwProgram, UINT nChannel, UINT nNote); - BOOL ITInstrToMPT(const void *p, INSTRUMENTHEADER *penv, UINT trkvers); - UINT SaveMixPlugins(FILE *f=NULL, BOOL bUpdate=TRUE); - UINT LoadMixPlugins(const void *pData, UINT nLen); - void ResetTimestamps(); // for note playback dots - - // Static helper functions -public: - static DWORD TransposeToFrequency(int transp, int ftune=0); - static int FrequencyToTranspose(DWORD freq); - static void FrequencyToTranspose(MODINSTRUMENT *psmp); - - // System-Dependant functions -public: - static MODCOMMAND *AllocatePattern(UINT rows, UINT nchns); - static signed char* AllocateSample(UINT nbytes); - static void FreePattern(LPVOID pat); - static void FreeSample(LPVOID p); - static UINT Normalize24BitBuffer(LPBYTE pbuffer, UINT cbsizebytes, DWORD lmax24, DWORD dwByteInc); -}; - - -// inline DWORD BigEndian(DWORD x) { return ((x & 0xFF) << 24) | ((x & 0xFF00) << 8) | ((x & 0xFF0000) >> 8) | ((x & 0xFF000000) >> 24); } -// inline WORD BigEndianW(WORD x) { return (WORD)(((x >> 8) & 0xFF) | ((x << 8) & 0xFF00)); } - - -////////////////////////////////////////////////////////// -// WAVE format information - -#pragma pack(1) - -// Standard IFF chunks IDs -#define IFFID_FORM 0x4d524f46 -#define IFFID_RIFF 0x46464952 -#define IFFID_WAVE 0x45564157 -#define IFFID_LIST 0x5453494C -#define IFFID_INFO 0x4F464E49 - -// IFF Info fields -#define IFFID_ICOP 0x504F4349 -#define IFFID_IART 0x54524149 -#define IFFID_IPRD 0x44525049 -#define IFFID_INAM 0x4D414E49 -#define IFFID_ICMT 0x544D4349 -#define IFFID_IENG 0x474E4549 -#define IFFID_ISFT 0x54465349 -#define IFFID_ISBJ 0x4A425349 -#define IFFID_IGNR 0x524E4749 -#define IFFID_ICRD 0x44524349 - -// Wave IFF chunks IDs -#define IFFID_wave 0x65766177 -#define IFFID_fmt 0x20746D66 -#define IFFID_wsmp 0x706D7377 -#define IFFID_pcm 0x206d6370 -#define IFFID_data 0x61746164 -#define IFFID_smpl 0x6C706D73 -#define IFFID_xtra 0x61727478 - -typedef struct WAVEFILEHEADER -{ - DWORD id_RIFF; // "RIFF" - DWORD filesize; // file length-8 - DWORD id_WAVE; -} WAVEFILEHEADER; - - -typedef struct WAVEFORMATHEADER -{ - DWORD id_fmt; // "fmt " - DWORD hdrlen; // 16 - WORD format; // 1 - WORD channels; // 1:mono, 2:stereo - DWORD freqHz; // sampling freq - DWORD bytessec; // bytes/sec=freqHz*samplesize - WORD samplesize; // sizeof(sample) - WORD bitspersample; // bits per sample (8/16) -} WAVEFORMATHEADER; - - -typedef struct WAVEDATAHEADER -{ - DWORD id_data; // "data" - DWORD length; // length of data -} WAVEDATAHEADER; - - -typedef struct WAVESMPLHEADER -{ - // SMPL - DWORD smpl_id; // "smpl" -> 0x6C706D73 - DWORD smpl_len; // length of smpl: 3Ch (54h with sustain loop) - DWORD dwManufacturer; - DWORD dwProduct; - DWORD dwSamplePeriod; // 1000000000/freqHz - DWORD dwBaseNote; // 3Ch = C-4 -> 60 + RelativeTone - DWORD dwPitchFraction; - DWORD dwSMPTEFormat; - DWORD dwSMPTEOffset; - DWORD dwSampleLoops; // number of loops - DWORD cbSamplerData; -} WAVESMPLHEADER; - - -typedef struct SAMPLELOOPSTRUCT -{ - DWORD dwIdentifier; - DWORD dwLoopType; // 0=normal, 1=bidi - DWORD dwLoopStart; - DWORD dwLoopEnd; // Byte offset ? - DWORD dwFraction; - DWORD dwPlayCount; // Loop Count, 0=infinite -} SAMPLELOOPSTRUCT; - - -typedef struct WAVESAMPLERINFO -{ - WAVESMPLHEADER wsiHdr; - SAMPLELOOPSTRUCT wsiLoops[2]; -} WAVESAMPLERINFO; - - -typedef struct WAVELISTHEADER -{ - DWORD list_id; // "LIST" -> 0x5453494C - DWORD list_len; - DWORD info; // "INFO" -} WAVELISTHEADER; - - -typedef struct WAVEEXTRAHEADER -{ - DWORD xtra_id; // "xtra" -> 0x61727478 - DWORD xtra_len; - DWORD dwFlags; - WORD wPan; - WORD wVolume; - WORD wGlobalVol; - WORD wReserved; - BYTE nVibType; - BYTE nVibSweep; - BYTE nVibDepth; - BYTE nVibRate; -} WAVEEXTRAHEADER; - -#pragma pack() - -/////////////////////////////////////////////////////////// -// Low-level Mixing functions - -#define MIXBUFFERSIZE 512 -#define MIXING_ATTENUATION 4 -#define MIXING_CLIPMIN (-0x04000000) -#define MIXING_CLIPMAX (0x03FFFFFF) -#define VOLUMERAMPPRECISION 12 -#define FADESONGDELAY 100 -#define EQ_BUFFERSIZE (MIXBUFFERSIZE) -#define AGC_PRECISION 9 -#define AGC_UNITY (1 << AGC_PRECISION) - -// Calling conventions -#ifdef MSC_VER -#define MPPASMCALL __cdecl -#define MPPFASTCALL __fastcall -#else -#define MPPASMCALL -#define MPPFASTCALL -#endif - -#define MOD2XMFineTune(k) ((int)( (signed char)((k)<<4) )) -#define XM2MODFineTune(k) ((int)( (k>>4)&0x0f )) - -// Return (a*b)/c - no divide error -static inline int _muldiv(int a, int b, int c) -{ - return ((unsigned long long) a * (unsigned long long) b ) / c; -} - - -// Return (a*b+c/2)/c - no divide error -static inline int _muldivr(int a, int b, int c) -{ - return ((unsigned long long) a * (unsigned long long) b + (c >> 1)) / c; -} - - -// Byte swapping functions from the GNU C Library and libsdl - -/* Swap bytes in 16 bit value. */ -#ifdef __GNUC__ -# define bswap_16(x) \ - (__extension__ \ - ({ unsigned short int __bsx = (x); \ - ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8)); })) -#else -static __inline unsigned short int -bswap_16 (unsigned short int __bsx) -{ - return ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8)); -} -#endif - -/* Swap bytes in 32 bit value. */ -#ifdef __GNUC__ -# define bswap_32(x) \ - (__extension__ \ - ({ unsigned int __bsx = (x); \ - ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >> 8) | \ - (((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24)); })) -#else -static __inline unsigned int -bswap_32 (unsigned int __bsx) -{ - return ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >> 8) | - (((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24)); -} -#endif - -#if (defined ARM) && (defined _WIN32_WCE) -static __inline unsigned short int -ARM_get16(const void *data) -{ - unsigned short int s; - memcpy(&s,data,sizeof(s)); - return s; -} - -static __inline unsigned int -ARM_get32(const void *data) -{ - unsigned int s; - memcpy(&s,data,sizeof(s)); - return s; -} - -#define bswapLE16(X) ARM_get16(&X) -#define bswapLE32(X) ARM_get32(&X) -#define bswapBE16(X) bswap_16(ARM_get16(&X)) -#define bswapBE32(X) bswap_32(ARM_get32(&X)) - -// From libsdl -#elif WORDS_BIGENDIAN -#define bswapLE16(X) bswap_16(X) -#define bswapLE32(X) bswap_32(X) -#define bswapBE16(X) (X) -#define bswapBE32(X) (X) -#else -#define bswapLE16(X) (X) -#define bswapLE32(X) (X) -#define bswapBE16(X) bswap_16(X) -#define bswapBE32(X) bswap_32(X) -#endif - -#endif diff -Nru audacious-plugins-2.4.4/src/modplug/snd_flt.cxx audacious-plugins-3.2/src/modplug/snd_flt.cxx --- audacious-plugins-2.4.4/src/modplug/snd_flt.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/snd_flt.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,130 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque -*/ - -#include "stdafx.h" -#include "sndfile.h" - -// AWE32: cutoff = reg[0-255] * 31.25 + 100 -> [100Hz-8060Hz] -// EMU10K1 docs: cutoff = reg[0-127]*62+100 - -#ifndef NO_FILTER - -static int filter_cutoff[] = { - 130, 132, 134, 136, 138, 140, 142, 144, - 146, 148, 151, 153, 155, 157, 160, 162, - 164, 167, 169, 172, 174, 177, 179, 182, - 184, 187, 190, 193, 195, 198, 201, 204, - 207, 210, 213, 216, 220, 223, 226, 229, - 233, 236, 239, 243, 246, 250, 254, 257, - 261, 265, 269, 273, 277, 281, 285, 289, - 293, 297, 302, 306, 311, 315, 320, 324, - 329, 334, 339, 344, 349, 354, 359, 364, - 369, 375, 380, 386, 391, 397, 403, 409, - 415, 421, 427, 433, 440, 446, 452, 459, - 466, 472, 479, 486, 493, 501, 508, 515, - 523, 530, 538, 546, 554, 562, 570, 578, - 587, 595, 604, 613, 622, 631, 640, 649, - 659, 668, 678, 688, 698, 708, 718, 729, - 739, 750, 761, 772, 783, 795, 806, 818, - 830, 842, 854, 867, 880, 892, 905, 918, - 932, 945, 959, 973, 987, 1002, 1016, 1031, - 1046, 1061, 1077, 1092, 1108, 1124, 1141, 1157, - 1174, 1191, 1209, 1226, 1244, 1262, 1280, 1299, - 1318, 1337, 1357, 1376, 1396, 1417, 1437, 1458, - 1479, 1501, 1523, 1545, 1567, 1590, 1613, 1637, - 1661, 1685, 1709, 1734, 1760, 1785, 1811, 1837, - 1864, 1891, 1919, 1947, 1975, 2004, 2033, 2062, - 2093, 2123, 2154, 2185, 2217, 2249, 2282, 2315, - 2349, 2383, 2418, 2453, 2489, 2525, 2561, 2599, - 2637, 2675, 2714, 2753, 2793, 2834, 2875, 2917, - 2959, 3003, 3046, 3091, 3135, 3181, 3227, 3274, - 3322, 3370, 3419, 3469, 3520, 3571, 3623, 3675, - 3729, 3783, 3838, 3894, 3951, 4008, 4066, 4125, - 4186, 4246, 4308, 4371, 4434, 4499, 4564, 4631, - 4698, 4766, 4836, 4906, 4978, 5050, 5123, 5198 -}; -int dmpfac[] = { - 131072, 128272, 125533, 122852, 120229, 117661, 115148, 112689, - 110283, 107928, 105623, 103367, 101160, 98999, 96885, 94816, - 92791, 90810, 88870, 86973, 85115, 83298, 81519, 79778, - 78074, 76407, 74775, 73178, 71615, 70086, 68589, 67125, - 65691, 64288, 62915, 61572, 60257, 58970, 57711, 56478, - 55272, 54092, 52937, 51806, 50700, 49617, 48557, 47520, - 46506, 45512, 44540, 43589, 42658, 41747, 40856, 39983, - 39130, 38294, 37476, 36676, 35893, 35126, 34376, 33642, - 32923, 32220, 31532, 30859, 30200, 29555, 28924, 28306, - 27701, 27110, 26531, 25964, 25410, 24867, 24336, 23816, - 23308, 22810, 22323, 21846, 21380, 20923, 20476, 20039, - 19611, 19192, 18782, 18381, 17989, 17604, 17228, 16861, - 16500, 16148, 15803, 15466, 15135, 14812, 14496, 14186, - 13883, 13587, 13297, 13013, 12735, 12463, 12197, 11936, - 11681, 11432, 11188, 10949, 10715, 10486, 10262, 10043, - 9829, 9619, 9413, 9212, 9015, 8823, 8634, 8450, - 8270, 8093, 7920, 7751, 7585, 7423, 7265, 7110, - 6958, 6809, 6664, 6522, 6382, 6246, 6113, 5982, - 5854, 5729, 5607, 5487, 5370, 5255, 5143, 5033, - 4926, 4820, 4718, 4617, 4518, 4422, 4327, 4235, - 4144, 4056, 3969, 3884, 3801, 3720, 3641, 3563, - 3487, 3412, 3340, 3268, 3198, 3130, 3063, 2998, - 2934, 2871, 2810, 2750, 2691, 2634, 2577, 2522, - 2468, 2416, 2364, 2314, 2264, 2216, 2169, 2122, - 2077, 2032, 1989, 1947, 1905, 1864, 1824, 1786, - 1747, 1710, 1674, 1638, 1603, 1569, 1535, 1502, - 1470, 1439, 1408, 1378, 1348, 1320, 1291, 1264, - 1237, 1210, 1185, 1159, 1135, 1110, 1087, 1063, - 1041, 1018, 997, 975, 955, 934, 914, 895, - 876, 857, 838, 821, 803, 786, 769, 753, - 737, 721, 705, 690, 676, 661, 647, 633, - 620, 606, 593, 581, 568, 556, 544, 533 -}; - - -#include - - -#define PI ((double)3.14159265358979323846) -// Simple 2-poles resonant filter -void CSoundFile::SetupChannelFilter(MODCHANNEL *pChn, BOOL bReset, int flt_modifier, int) const -//---------------------------------------------------------------------------------------- -{ - int cutoff = pChn->nCutOff * 2; - cutoff *= (flt_modifier+256) / 2; - cutoff /= 256; - if (cutoff>=255) cutoff=255; - - int resonance = pChn->nResonance; - if (resonance>=255) resonance=255; - - float fc = (float)filter_cutoff[cutoff]; - float fs = (float)gdwMixingFreq; - float fg, fb0, fb1; - float d2, d, e; - - fc *= 3.14159265358979 * 2 / fs; - d2 = ((float)dmpfac[resonance]) / 65536.0; - d = (1.0 - d2) * fc; - - if (d > 2.0) - d = 2.0; - - d = (d2 - d) / fc; - e = 1.0 / (fc * fc); - - fg = 1.0 / (1 + d + e); - fb0 = (d + e + e) / (1 + d + e); - fb1 = -e / (1 + d + e); - - pChn->nFilter_A0 = (double)fg; - pChn->nFilter_B0 = (double)fb0; - pChn->nFilter_B1 = (double)fb1; - - if (bReset) { - pChn->nFilter_Y1 = pChn->nFilter_Y2 = 0; - pChn->nFilter_Y3 = pChn->nFilter_Y4 = 0; - } - pChn->dwFlags |= CHN_FILTER; -} -#endif // NO_FILTER diff -Nru audacious-plugins-2.4.4/src/modplug/snd_fx.cxx audacious-plugins-3.2/src/modplug/snd_fx.cxx --- audacious-plugins-2.4.4/src/modplug/snd_fx.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/snd_fx.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,2614 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque -*/ - -#include "stdafx.h" -#include "sndfile.h" - -#ifdef MSC_VER -#pragma warning(disable:4244) -#endif - -// Tables defined in tables.cpp -extern BYTE ImpulseTrackerPortaVolCmd[16]; -extern WORD S3MFineTuneTable[16]; -extern WORD ProTrackerPeriodTable[6*12]; -extern WORD ProTrackerTunedPeriods[15*12]; -extern WORD FreqS3MTable[]; -extern WORD XMPeriodTable[96+8]; -extern UINT XMLinearTable[768]; -extern DWORD FineLinearSlideUpTable[16]; -extern DWORD FineLinearSlideDownTable[16]; -extern DWORD LinearSlideUpTable[256]; -extern DWORD LinearSlideDownTable[256]; -extern signed char retrigTable1[16]; -extern signed char retrigTable2[16]; -extern short int ModRandomTable[64]; - - -//////////////////////////////////////////////////////////// -// Length - -DWORD CSoundFile::GetLength(BOOL bAdjust, BOOL bTotal) -//---------------------------------------------------- -{ - UINT dwElapsedTime=0, nRow=0, nCurrentPattern=0, nNextPattern=0, nPattern=Order[0]; - UINT nMusicSpeed=m_nDefaultSpeed, nMusicTempo=m_nDefaultTempo, nNextRow=0; - UINT nMaxRow = 0, nMaxPattern = 0; - LONG nGlbVol = m_nDefaultGlobalVolume, nOldGlbVolSlide = 0; - BYTE samples[MAX_CHANNELS]; - BYTE instr[MAX_CHANNELS]; - BYTE notes[MAX_CHANNELS]; - BYTE vols[MAX_CHANNELS]; - BYTE oldparam[MAX_CHANNELS]; - BYTE chnvols[MAX_CHANNELS]; - DWORD patloop[MAX_CHANNELS]; - - memset(instr, 0, sizeof(instr)); - memset(notes, 0, sizeof(notes)); - memset(vols, 0xFF, sizeof(vols)); - memset(patloop, 0, sizeof(patloop)); - memset(oldparam, 0, sizeof(oldparam)); - memset(chnvols, 64, sizeof(chnvols)); - memset(samples, 0, sizeof(samples)); - for (UINT icv=0; icv= MAX_PATTERNS) - { - // End of song ? - if ((nPattern == 0xFF) || (nCurrentPattern >= MAX_ORDERS)) - { - goto EndMod; - } else - { - nCurrentPattern++; - nPattern = (nCurrentPattern < MAX_ORDERS) ? Order[nCurrentPattern] : 0xFF; - } - nNextPattern = nCurrentPattern; - } - // Weird stuff? - if ((nPattern >= MAX_PATTERNS) || (!Patterns[nPattern])) break; - // Should never happen - if (nRow >= PatternSize[nPattern]) nRow = 0; - // Update next position - nNextRow = nRow + 1; - if (nNextRow >= PatternSize[nPattern]) - { - nNextPattern = nCurrentPattern + 1; - nNextRow = 0; - } - if (!nRow) - { - for (UINT ipck=0; ipck nMaxPattern) || ((nCurrentPattern == nMaxPattern) && (nRow >= nMaxRow))) - { - if (bAdjust) - { - m_nMusicSpeed = nMusicSpeed; - m_nMusicTempo = nMusicTempo; - } - break; - } - } - MODCHANNEL *pChn = Chn; - MODCOMMAND *p = Patterns[nPattern] + nRow * m_nChannels; - for (UINT nChn=0; nChncommand; - UINT param = p->param; - UINT note = p->note; - if (p->instr) { instr[nChn] = p->instr; notes[nChn] = 0; vols[nChn] = 0xFF; } - if ((note) && (note <= 120)) notes[nChn] = note; - if (p->volcmd == VOLCMD_VOLUME) { vols[nChn] = p->vol; } - if (command) switch (command) - { - // Position Jump - case CMD_POSITIONJUMP: - if (param <= nCurrentPattern) goto EndMod; - nNextPattern = param; - nNextRow = 0; - if (bAdjust) - { - pChn->nPatternLoopCount = 0; - pChn->nPatternLoop = 0; - } - break; - // Pattern Break - case CMD_PATTERNBREAK: - nNextRow = param; - nNextPattern = nCurrentPattern + 1; - if (bAdjust) - { - pChn->nPatternLoopCount = 0; - pChn->nPatternLoop = 0; - } - break; - // Set Speed - case CMD_SPEED: - if (!param) break; - if ((param <= 0x20) || (m_nType != MOD_TYPE_MOD)) - { - if (param < 128) nMusicSpeed = param; - } - break; - // Set Tempo - case CMD_TEMPO: - if ((bAdjust) && (m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT))) - { - if (param) pChn->nOldTempo = param; else param = pChn->nOldTempo; - } - if (param >= 0x20) nMusicTempo = param; else - // Tempo Slide - // FIXME: this is totally wrong! - if ((param & 0xF0) == 0x10) - { - nMusicTempo += param & 0x0F; - if (nMusicTempo > 255) nMusicTempo = 255; - } else - { - nMusicTempo -= param & 0x0F; - if (nMusicTempo < 32) nMusicTempo = 32; - } - break; - // Pattern Delay - case CMD_S3MCMDEX: - if ((param & 0xF0) == 0x60) { nSpeedCount = param & 0x0F; break; } else - if ((param & 0xF0) == 0xB0) { param &= 0x0F; param |= 0x60; } - case CMD_MODCMDEX: - if ((param & 0xF0) == 0xE0) nSpeedCount = (param & 0x0F) * nMusicSpeed; else - if ((param & 0xF0) == 0x60) - { - if (param & 0x0F) dwElapsedTime += (dwElapsedTime - patloop[nChn]) * (param & 0x0F); - else patloop[nChn] = dwElapsedTime; - } - break; - } - if (!bAdjust) continue; - switch(command) - { - // Portamento Up/Down - case CMD_PORTAMENTOUP: - case CMD_PORTAMENTODOWN: - if (param) pChn->nOldPortaUpDown = param; - break; - // Tone-Portamento - case CMD_TONEPORTAMENTO: - if (param) pChn->nPortamentoSlide = param << 2; - break; - // Offset - case CMD_OFFSET: - if (param) pChn->nOldOffset = param; - break; - // Volume Slide - case CMD_VOLUMESLIDE: - case CMD_TONEPORTAVOL: - case CMD_VIBRATOVOL: - if (param) pChn->nOldVolumeSlide = param; - break; - // Set Volume - case CMD_VOLUME: - vols[nChn] = param; - break; - // Global Volume - case CMD_GLOBALVOLUME: - if (m_nType != MOD_TYPE_IT) param <<= 1; - if (param > 128) param = 128; - nGlbVol = param << 1; - break; - // Global Volume Slide - case CMD_GLOBALVOLSLIDE: - if (param) nOldGlbVolSlide = param; else param = nOldGlbVolSlide; - if (((param & 0x0F) == 0x0F) && (param & 0xF0)) - { - param >>= 4; - if (m_nType != MOD_TYPE_IT) param <<= 1; - nGlbVol += param << 1; - } else - if (((param & 0xF0) == 0xF0) && (param & 0x0F)) - { - param = (param & 0x0F) << 1; - if (m_nType != MOD_TYPE_IT) param <<= 1; - nGlbVol -= param; - } else - if (param & 0xF0) - { - param >>= 4; - param <<= 1; - if (m_nType != MOD_TYPE_IT) param <<= 1; - nGlbVol += param * nMusicSpeed; - } else - { - param = (param & 0x0F) << 1; - if (m_nType != MOD_TYPE_IT) param <<= 1; - nGlbVol -= param * nMusicSpeed; - } - if (nGlbVol < 0) nGlbVol = 0; - if (nGlbVol > 256) nGlbVol = 256; - break; - case CMD_CHANNELVOLUME: - if (param <= 64) chnvols[nChn] = param; - break; - case CMD_CHANNELVOLSLIDE: - if (param) oldparam[nChn] = param; else param = oldparam[nChn]; - pChn->nOldChnVolSlide = param; - if (((param & 0x0F) == 0x0F) && (param & 0xF0)) - { - param = (param >> 4) + chnvols[nChn]; - } else - if (((param & 0xF0) == 0xF0) && (param & 0x0F)) - { - if (chnvols[nChn] > (int)(param & 0x0F)) param = chnvols[nChn] - (param & 0x0F); - else param = 0; - } else - if (param & 0x0F) - { - param = (param & 0x0F) * nMusicSpeed; - param = (chnvols[nChn] > param) ? chnvols[nChn] - param : 0; - } else param = ((param & 0xF0) >> 4) * nMusicSpeed + chnvols[nChn]; - if (param > 64) param = 64; - chnvols[nChn] = param; - break; - } - } - nSpeedCount += nMusicSpeed; - dwElapsedTime += (2500 * nSpeedCount) / nMusicTempo; - } -EndMod: - if ((bAdjust) && (!bTotal)) - { - m_nGlobalVolume = nGlbVol; - m_nOldGlbVolSlide = nOldGlbVolSlide; - for (UINT n=0; n 64) vols[n] = 64; - Chn[n].nVolume = vols[n] << 2; - } - } - } - return (dwElapsedTime+500) / 1000; -} - - -////////////////////////////////////////////////////////////////////////////////////////////////// -// Effects - -void CSoundFile::InstrumentChange(MODCHANNEL *pChn, UINT instr, BOOL bPorta, BOOL bUpdVol, BOOL bResetEnv) -//-------------------------------------------------------------------------------------------------------- -{ - BOOL bInstrumentChanged = FALSE; - - if (instr >= MAX_INSTRUMENTS) return; - INSTRUMENTHEADER *penv = (m_dwSongFlags & SONG_INSTRUMENTMODE) ? Headers[instr] : NULL; - MODINSTRUMENT *psmp = &Ins[instr]; - UINT note = pChn->nNewNote; - if ((penv) && (note) && (note <= 128)) - { - if (penv->NoteMap[note-1] >= 0xFE) return; - UINT n = penv->Keyboard[note-1]; - psmp = ((n) && (n < MAX_SAMPLES)) ? &Ins[n] : NULL; - pChn->dwFlags &= ~CHN_SUSTAINLOOP; // turn off sustain - } else - if (m_dwSongFlags & SONG_INSTRUMENTMODE) - { - if (note >= 0xFE) return; - psmp = NULL; - } - // Update Volume - if (bUpdVol) pChn->nVolume = (psmp) ? psmp->nVolume : 0; - // bInstrumentChanged is used for IT carry-on env option - if (penv != pChn->pHeader) - { - bInstrumentChanged = TRUE; - pChn->pHeader = penv; - } else - // Special XM hack - if ((bPorta) && (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) && (penv) - && (pChn->pInstrument) && (psmp != pChn->pInstrument)) - { - // FT2 doesn't change the sample in this case, - // but still uses the sample info from the old one (bug?) - return; - } - // Instrument adjust - pChn->nNewIns = 0; - if (psmp) - { - psmp->played = 1; - if (penv) - { - penv->played = 1; - pChn->nInsVol = (psmp->nGlobalVol * penv->nGlobalVol) >> 7; - if (penv->dwFlags & ENV_SETPANNING) pChn->nPan = penv->nPan; - pChn->nNNA = penv->nNNA; - } else - { - pChn->nInsVol = psmp->nGlobalVol; - } - if (psmp->uFlags & CHN_PANNING) pChn->nPan = psmp->nPan; - } - // Reset envelopes - if (bResetEnv) - { - if ((!bPorta) || (!(m_nType & MOD_TYPE_IT)) || (m_dwSongFlags & SONG_ITCOMPATMODE) - || (!pChn->nLength) || ((pChn->dwFlags & CHN_NOTEFADE) && (!pChn->nFadeOutVol))) - { - pChn->dwFlags |= CHN_FASTVOLRAMP; - if ((m_nType & MOD_TYPE_IT) && (!bInstrumentChanged) && (penv) && (!(pChn->dwFlags & (CHN_KEYOFF|CHN_NOTEFADE)))) - { - if (!(penv->dwFlags & ENV_VOLCARRY)) pChn->nVolEnvPosition = 0; - if (!(penv->dwFlags & ENV_PANCARRY)) pChn->nPanEnvPosition = 0; - if (!(penv->dwFlags & ENV_PITCHCARRY)) pChn->nPitchEnvPosition = 0; - } else - { - pChn->nVolEnvPosition = 0; - pChn->nPanEnvPosition = 0; - pChn->nPitchEnvPosition = 0; - } - pChn->nAutoVibDepth = 0; - pChn->nAutoVibPos = 0; - } else - if ((penv) && (!(penv->dwFlags & ENV_VOLUME))) - { - pChn->nVolEnvPosition = 0; - pChn->nAutoVibDepth = 0; - pChn->nAutoVibPos = 0; - } - } - // Invalid sample ? - if (!psmp) - { - pChn->pInstrument = NULL; - pChn->nInsVol = 0; - return; - } - // Tone-Portamento doesn't reset the pingpong direction flag - if ((bPorta) && (psmp == pChn->pInstrument)) - { - if (m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT)) return; - pChn->dwFlags &= ~(CHN_KEYOFF|CHN_NOTEFADE); - pChn->dwFlags = (pChn->dwFlags & (0xFFFFFF00 | CHN_PINGPONGFLAG)) | (psmp->uFlags); - } else - { - pChn->dwFlags &= ~(CHN_KEYOFF|CHN_NOTEFADE|CHN_VOLENV|CHN_PANENV|CHN_PITCHENV); - pChn->dwFlags = (pChn->dwFlags & 0xFFFFFF00) | (psmp->uFlags); - if (penv) - { - if (penv->dwFlags & ENV_VOLUME) pChn->dwFlags |= CHN_VOLENV; - if (penv->dwFlags & ENV_PANNING) pChn->dwFlags |= CHN_PANENV; - if (penv->dwFlags & ENV_PITCH) pChn->dwFlags |= CHN_PITCHENV; - if ((penv->dwFlags & ENV_PITCH) && (penv->dwFlags & ENV_FILTER)) - { - if (!pChn->nCutOff) pChn->nCutOff = 0x7F; - } - if (penv->nIFC & 0x80) pChn->nCutOff = penv->nIFC & 0x7F; - if (penv->nIFR & 0x80) pChn->nResonance = penv->nIFR & 0x7F; - } - pChn->nVolSwing = pChn->nPanSwing = 0; - } - pChn->pInstrument = psmp; - pChn->nLength = psmp->nLength; - pChn->nLoopStart = psmp->nLoopStart; - pChn->nLoopEnd = psmp->nLoopEnd; - pChn->nC4Speed = psmp->nC4Speed; - pChn->pSample = psmp->pSample; - pChn->nTranspose = psmp->RelativeTone; - pChn->nFineTune = psmp->nFineTune; - if (pChn->dwFlags & CHN_SUSTAINLOOP) - { - pChn->nLoopStart = psmp->nSustainStart; - pChn->nLoopEnd = psmp->nSustainEnd; - pChn->dwFlags |= CHN_LOOP; - if (pChn->dwFlags & CHN_PINGPONGSUSTAIN) pChn->dwFlags |= CHN_PINGPONGLOOP; - } - if ((pChn->dwFlags & CHN_LOOP) && (pChn->nLoopEnd < pChn->nLength)) pChn->nLength = pChn->nLoopEnd; -} - - -void CSoundFile::NoteChange(UINT nChn, int note, BOOL bPorta, BOOL bResetEnv, BOOL bManual) -//----------------------------------------------------------------------------------------- -{ - if (note < 1) return; - MODCHANNEL * const pChn = &Chn[nChn]; - MODINSTRUMENT *pins = pChn->pInstrument; - INSTRUMENTHEADER *penv = (m_dwSongFlags & SONG_INSTRUMENTMODE) ? pChn->pHeader : NULL; - if ((penv) && (note <= 0x80)) - { - UINT n = penv->Keyboard[note - 1]; - if ((n) && (n < MAX_SAMPLES)) pins = &Ins[n]; - note = penv->NoteMap[note-1]; - pChn->dwFlags &= ~CHN_SUSTAINLOOP; // turn off sustain - } - // Key Off - if (note >= 0x80) // 0xFE or invalid note => key off - { - // technically this is "wrong", as anything besides ^^^, ===, and a valid note - // should cause a note fade... (oh well, it's just a quick hack anyway.) - if (note == 0xFD) { - pChn->dwFlags |= CHN_NOTEFADE; - return; - } - - // Key Off - KeyOff(nChn); - // Note Cut - if (note == 0xFE) - { - pChn->dwFlags |= (CHN_NOTEFADE|CHN_FASTVOLRAMP); - if ((!(m_nType & MOD_TYPE_IT)) || (m_dwSongFlags & SONG_INSTRUMENTMODE)) - pChn->nVolume = 0; - pChn->nFadeOutVol = 0; - } - return; - } - if (!pins) return; - if ((!bPorta) && (m_nType & (MOD_TYPE_XM|MOD_TYPE_MED|MOD_TYPE_MT2))) - { - pChn->nTranspose = pins->RelativeTone; - pChn->nFineTune = pins->nFineTune; - } - if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2|MOD_TYPE_MED)) note += pChn->nTranspose; - if (note < 1) note = 1; - if (note > 132) note = 132; - pChn->nNote = note; - if ((!bPorta) || (m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT))) pChn->nNewIns = 0; - UINT period = GetPeriodFromNote(note, pChn->nFineTune, pChn->nC4Speed); - if (period) - { - if ((!bPorta) || (!pChn->nPeriod)) pChn->nPeriod = period; - pChn->nPortamentoDest = period; - if ((!bPorta) || ((!pChn->nLength) && (!(m_nType & MOD_TYPE_S3M)))) - { - pChn->pInstrument = pins; - pChn->pSample = pins->pSample; - pChn->nLength = pins->nLength; - pChn->nLoopEnd = pins->nLength; - pChn->nLoopStart = 0; - pChn->dwFlags = (pChn->dwFlags & 0xFFFFFF00) | (pins->uFlags); - if (pChn->dwFlags & CHN_SUSTAINLOOP) - { - pChn->nLoopStart = pins->nSustainStart; - pChn->nLoopEnd = pins->nSustainEnd; - pChn->dwFlags &= ~CHN_PINGPONGLOOP; - pChn->dwFlags |= CHN_LOOP; - if (pChn->dwFlags & CHN_PINGPONGSUSTAIN) pChn->dwFlags |= CHN_PINGPONGLOOP; - if (pChn->nLength > pChn->nLoopEnd) pChn->nLength = pChn->nLoopEnd; - } else - if (pChn->dwFlags & CHN_LOOP) - { - pChn->nLoopStart = pins->nLoopStart; - pChn->nLoopEnd = pins->nLoopEnd; - if (pChn->nLength > pChn->nLoopEnd) pChn->nLength = pChn->nLoopEnd; - } - pChn->nPos = 0; - pChn->nPosLo = 0; - if (pChn->nVibratoType < 4) pChn->nVibratoPos = ((m_nType & MOD_TYPE_IT) && (!(m_dwSongFlags & SONG_ITOLDEFFECTS))) ? 0x10 : 0; - if (pChn->nTremoloType < 4) pChn->nTremoloPos = 0; - } - if (pChn->nPos >= pChn->nLength) pChn->nPos = pChn->nLoopStart; - } else bPorta = FALSE; - if ((!bPorta) || (!(m_nType & MOD_TYPE_IT)) - || ((pChn->dwFlags & CHN_NOTEFADE) && (!pChn->nFadeOutVol)) - || ((m_dwSongFlags & SONG_ITCOMPATMODE) && (pChn->nRowInstr))) - { - if ((m_nType & MOD_TYPE_IT) && (pChn->dwFlags & CHN_NOTEFADE) && (!pChn->nFadeOutVol)) - { - pChn->nVolEnvPosition = 0; - pChn->nPanEnvPosition = 0; - pChn->nPitchEnvPosition = 0; - pChn->nAutoVibDepth = 0; - pChn->nAutoVibPos = 0; - pChn->dwFlags &= ~CHN_NOTEFADE; - pChn->nFadeOutVol = 65536; - } - if ((!bPorta) || (!(m_dwSongFlags & SONG_ITCOMPATMODE)) || (pChn->nRowInstr)) - { - if ((!(m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2))) || (pChn->nRowInstr)) - { - pChn->dwFlags &= ~CHN_NOTEFADE; - pChn->nFadeOutVol = 65536; - } - } - } - pChn->dwFlags &= ~(CHN_EXTRALOUD|CHN_KEYOFF); - // Enable Ramping - if (!bPorta) - { - pChn->nVUMeter = 0x100; - pChn->nLeftVU = pChn->nRightVU = 0xFF; - pChn->dwFlags &= ~CHN_FILTER; - pChn->dwFlags |= CHN_FASTVOLRAMP; - pChn->nRetrigCount = 0; - pChn->nTremorCount = 0; - if (bResetEnv) - { - pChn->nVolSwing = pChn->nPanSwing = 0; - if (penv) - { - if (!(penv->dwFlags & ENV_VOLCARRY)) pChn->nVolEnvPosition = 0; - if (!(penv->dwFlags & ENV_PANCARRY)) pChn->nPanEnvPosition = 0; - if (!(penv->dwFlags & ENV_PITCHCARRY)) pChn->nPitchEnvPosition = 0; - if (m_nType & MOD_TYPE_IT) - { - // Volume Swing - if (penv->nVolSwing) - { - /* this was wrong */ - int d = ((LONG)penv->nVolSwing*(LONG)((rand() & 0xFF) - 0x7F)) / 256; - pChn->nVolSwing = (signed short)((d * pChn->nVolume + 1)/256); - } - // Pan Swing - if (penv->nPanSwing) - { - int d = ((LONG)penv->nPanSwing*(LONG)((rand() & 0xFF) - 0x7F)) / 128; - pChn->nPanSwing = (signed short)d; - } - } - } - pChn->nAutoVibDepth = 0; - pChn->nAutoVibPos = 0; - } - pChn->nLeftVol = pChn->nRightVol = 0; - BOOL bFlt = (m_dwSongFlags & SONG_MPTFILTERMODE) ? FALSE : TRUE; - // Setup Initial Filter for this note - if (penv) - { - if (penv->nIFR & 0x80) { pChn->nResonance = penv->nIFR & 0x7F; bFlt = TRUE; } - if (penv->nIFC & 0x80) { pChn->nCutOff = penv->nIFC & 0x7F; bFlt = TRUE; } - } else - { - pChn->nVolSwing = pChn->nPanSwing = 0; - } -#ifndef NO_FILTER - if ((pChn->nCutOff < 0x7F) && (bFlt)) SetupChannelFilter(pChn, TRUE); -#endif // NO_FILTER - } - // Special case for MPT - if (bManual) pChn->dwFlags &= ~CHN_MUTE; - if (((pChn->dwFlags & CHN_MUTE) && (gdwSoundSetup & SNDMIX_MUTECHNMODE)) - || ((pChn->pInstrument) && (pChn->pInstrument->uFlags & CHN_MUTE) && (!bManual)) - || ((m_dwSongFlags & SONG_INSTRUMENTMODE) && (pChn->pHeader) - && (pChn->pHeader->dwFlags & ENV_MUTE) && (!bManual))) - { - if (!bManual) pChn->nPeriod = 0; - } -} - - -UINT CSoundFile::GetNNAChannel(UINT nChn) -//--------------------------------------------- -{ - MODCHANNEL *pChn = &Chn[nChn]; - // Check for empty channel - MODCHANNEL *pi = &Chn[m_nChannels]; - for (UINT i=m_nChannels; inLength) { - if (pi->dwFlags & CHN_MUTE) { - if (pi->dwFlags & CHN_NNAMUTE) { - pi->dwFlags &= ~(CHN_NNAMUTE|CHN_MUTE); - } else { - /* this channel is muted; skip */ - continue; - } - } - return i; - } - } - if (!pChn->nFadeOutVol) return 0; - // All channels are used: check for lowest volume - UINT result = 0; - DWORD vol = 64*65536; // 25% - int envpos = 0xFFFFFF; - const MODCHANNEL *pj = &Chn[m_nChannels]; - for (UINT j=m_nChannels; jnFadeOutVol) return j; - DWORD v = pj->nVolume; - if (pj->dwFlags & CHN_NOTEFADE) - v = v * pj->nFadeOutVol; - else - v <<= 16; - if (pj->dwFlags & CHN_LOOP) v >>= 1; - if ((v < vol) || ((v == vol) && (pj->nVolEnvPosition > envpos))) - { - envpos = pj->nVolEnvPosition; - vol = v; - result = j; - } - } - if (result) { - /* unmute new nna channel */ - Chn[result].dwFlags &= ~(CHN_MUTE|CHN_NNAMUTE); - } - return result; -} - - -void CSoundFile::CheckNNA(UINT nChn, UINT instr, int note, BOOL bForceCut) -//------------------------------------------------------------------------ -{ - MODCHANNEL *p; - MODCHANNEL *pChn = &Chn[nChn]; - INSTRUMENTHEADER *penv = (m_dwSongFlags & SONG_INSTRUMENTMODE) ? pChn->pHeader : NULL; - INSTRUMENTHEADER *pHeader; - signed char *pSample; - if (note > 0x80) note = 0; - if (note < 1) return; - // Always NNA cut - using - if ((!(m_nType & (MOD_TYPE_IT|MOD_TYPE_MT2))) || (!(m_dwSongFlags & SONG_INSTRUMENTMODE)) || (bForceCut)) - { - if ((m_dwSongFlags & SONG_CPUVERYHIGH) - || (!pChn->nLength) || (pChn->dwFlags & CHN_MUTE) - || ((!pChn->nLeftVol) && (!pChn->nRightVol))) return; - UINT n = GetNNAChannel(nChn); - if (!n) return; - p = &Chn[n]; - // Copy Channel - *p = *pChn; - p->dwFlags &= ~(CHN_VIBRATO|CHN_TREMOLO|CHN_PANBRELLO|CHN_PORTAMENTO); - p->nMasterChn = nChn+1; - p->nCommand = 0; - // Cut the note - p->nFadeOutVol = 0; - p->dwFlags |= (CHN_NOTEFADE|CHN_FASTVOLRAMP); - // Stop this channel - pChn->nLength = pChn->nPos = pChn->nPosLo = 0; - pChn->nROfs = pChn->nLOfs = 0; - pChn->nLeftVol = pChn->nRightVol = 0; - return; - } - if (instr >= MAX_INSTRUMENTS) instr = 0; - pSample = pChn->pSample; - pHeader = pChn->pHeader; - if ((instr) && (note)) - { - pHeader = (m_dwSongFlags & SONG_INSTRUMENTMODE) ? Headers[instr] : NULL; - if (pHeader) - { - UINT n = 0; - if (note <= 0x80) - { - n = pHeader->Keyboard[note-1]; - note = pHeader->NoteMap[note-1]; - if ((n) && (n < MAX_SAMPLES)) pSample = Ins[n].pSample; - } - } else pSample = NULL; - } - if (!penv) return; - p = pChn; - for (UINT i=nChn; i= m_nChannels) || (p == pChn)) - { - if (((p->nMasterChn == nChn+1) || (p == pChn)) && (p->pHeader)) - { - BOOL bOk = FALSE; - // Duplicate Check Type - switch(p->pHeader->nDCT) - { - // Note - case DCT_NOTE: - if ((note) && ((int)p->nNote == note) && (pHeader == p->pHeader)) bOk = TRUE; - break; - // Sample - case DCT_SAMPLE: - if ((pSample) && (pSample == p->pSample)) bOk = TRUE; - break; - // Instrument - case DCT_INSTRUMENT: - if (pHeader == p->pHeader) bOk = TRUE; - break; - } - // Duplicate Note Action - if (bOk) - { - switch(p->pHeader->nDNA) - { - // Cut - case DNA_NOTECUT: - KeyOff(i); - p->nVolume = 0; - break; - // Note Off - case DNA_NOTEOFF: - KeyOff(i); - break; - // Note Fade - case DNA_NOTEFADE: - p->dwFlags |= CHN_NOTEFADE; - break; - } - if (!p->nVolume) - { - p->nFadeOutVol = 0; - p->dwFlags |= (CHN_NOTEFADE|CHN_FASTVOLRAMP); - } - } - } - } - if (pChn->dwFlags & CHN_MUTE) return; - // New Note Action - if ((pChn->nVolume) && (pChn->nLength)) - { - UINT n = GetNNAChannel(nChn); - if (n) - { - p = &Chn[n]; - // Copy Channel - *p = *pChn; - p->dwFlags &= ~(CHN_VIBRATO|CHN_TREMOLO|CHN_PANBRELLO|CHN_PORTAMENTO); - p->nMasterChn = nChn+1; - p->nCommand = 0; - // Key Off the note - switch(pChn->nNNA) - { - case NNA_NOTEOFF: KeyOff(n); break; - case NNA_NOTECUT: - p->nFadeOutVol = 0; - case NNA_NOTEFADE: p->dwFlags |= CHN_NOTEFADE; break; - } - if (!p->nVolume) - { - p->nFadeOutVol = 0; - p->dwFlags |= (CHN_NOTEFADE|CHN_FASTVOLRAMP); - } - // Stop this channel - pChn->nLength = pChn->nPos = pChn->nPosLo = 0; - pChn->nROfs = pChn->nLOfs = 0; - } - } -} - - -BOOL CSoundFile::ProcessEffects() -//------------------------------- -{ - int nBreakRow = -1, nPosJump = -1, nPatLoopRow = -1; - MODCHANNEL *pChn = Chn; - for (UINT nChn=0; nChnnCommand=0; - - UINT instr = pChn->nRowInstr; - UINT volcmd = pChn->nRowVolCmd; - UINT vol = pChn->nRowVolume; - UINT cmd = pChn->nRowCommand; - UINT param = pChn->nRowParam; - BOOL bPorta = ((cmd != CMD_TONEPORTAMENTO) && (cmd != CMD_TONEPORTAVOL) && (volcmd != VOLCMD_TONEPORTAMENTO)) ? FALSE : TRUE; - UINT nStartTick = pChn->nTickStart; - - pChn->dwFlags &= ~CHN_FASTVOLRAMP; - // Process special effects (note delay, pattern delay, pattern loop) - if (((cmd == CMD_MODCMDEX) || (cmd == CMD_S3MCMDEX))) - { - if ((!param) && (m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT))) param = pChn->nOldCmdEx; else pChn->nOldCmdEx = param; - // Note Delay ? - if ((param & 0xF0) == 0xD0) - { - nStartTick = param & 0x0F; - } else - if (!m_nTickCount) - { - // Pattern Loop ? - if ((((param & 0xF0) == 0x60) && (cmd == CMD_MODCMDEX)) - || (((param & 0xF0) == 0xB0) && (cmd == CMD_S3MCMDEX))) - { - int nloop = PatternLoop(pChn, param & 0x0F); - if (nloop >= 0) nPatLoopRow = nloop; - } else - // Pattern Delay - if ((param & 0xF0) == 0xE0) - { - m_nPatternDelay = param & 0x0F; - } - } - } - - // Handles note/instrument/volume changes - if (m_nTickCount == nStartTick) // can be delayed by a note delay effect - { - UINT note = pChn->nRowNote; - if (instr) pChn->nNewIns = instr; - // XM: Key-Off + Sample == Note Cut - if (m_nType & (MOD_TYPE_MOD|MOD_TYPE_XM|MOD_TYPE_MT2)) - { - if ((note == 0xFF) && ((!pChn->pHeader) || (!(pChn->pHeader->dwFlags & ENV_VOLUME)))) - { - pChn->dwFlags |= CHN_FASTVOLRAMP; - pChn->nVolume = 0; - note = instr = 0; - } - } - if ((!note) && (instr)) - { - if (m_dwSongFlags & SONG_INSTRUMENTMODE) - { - if (pChn->pInstrument) pChn->nVolume = pChn->pInstrument->nVolume; - if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) - { - pChn->dwFlags |= CHN_FASTVOLRAMP; - pChn->nVolEnvPosition = 0; - pChn->nPanEnvPosition = 0; - pChn->nPitchEnvPosition = 0; - pChn->nAutoVibDepth = 0; - pChn->nAutoVibPos = 0; - pChn->dwFlags &= ~CHN_NOTEFADE; - pChn->nFadeOutVol = 65536; - } - } else - { - if (instr < MAX_SAMPLES) pChn->nVolume = Ins[instr].nVolume; - } - if (!(m_nType & MOD_TYPE_IT)) instr = 0; - } - // Invalid Instrument ? - if (instr >= MAX_INSTRUMENTS) instr = 0; - // Note Cut/Off => ignore instrument - if (note >= 0xFE) instr = 0; - if ((note) && (note <= 128)) pChn->nNewNote = note; - // New Note Action ? (not when paused!!!) - if ((note) && (note <= 128) && (!bPorta)) - { - CheckNNA(nChn, instr, note, FALSE); - } - // Instrument Change ? - if (instr) - { - MODINSTRUMENT *psmp = pChn->pInstrument; - InstrumentChange(pChn, instr, bPorta, TRUE); - pChn->nNewIns = 0; - // Special IT case: portamento+note causes sample change -> ignore portamento - if ((m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT)) - && (psmp != pChn->pInstrument) && (note) && (note < 0x80)) - { - bPorta = FALSE; - } - } - // New Note ? - if (note) - { - if ((!instr) && (pChn->nNewIns) && (note < 0x80)) - { - InstrumentChange(pChn, pChn->nNewIns, bPorta, FALSE, (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) ? FALSE : TRUE); - pChn->nNewIns = 0; - } - NoteChange(nChn, note, bPorta, (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) ? FALSE : TRUE); - if ((bPorta) && (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) && (instr)) - { - pChn->dwFlags |= CHN_FASTVOLRAMP; - pChn->nVolEnvPosition = 0; - pChn->nPanEnvPosition = 0; - pChn->nPitchEnvPosition = 0; - pChn->nAutoVibDepth = 0; - pChn->nAutoVibPos = 0; - } - } - // Tick-0 only volume commands - if (volcmd == VOLCMD_VOLUME) - { - if (vol > 64) vol = 64; - pChn->nVolume = vol << 2; - pChn->dwFlags |= CHN_FASTVOLRAMP; - } else - if (volcmd == VOLCMD_PANNING) - { - if (vol > 64) vol = 64; - pChn->nPan = vol << 2; - pChn->dwFlags |= CHN_FASTVOLRAMP; - pChn->dwFlags &= ~CHN_SURROUND; - } - } - - // Volume Column Effect (except volume & panning) - if ((volcmd > VOLCMD_PANNING) && (m_nTickCount >= nStartTick)) - { - if (volcmd == VOLCMD_TONEPORTAMENTO) - { - if (m_nType & MOD_TYPE_IT) - TonePortamento(pChn, ImpulseTrackerPortaVolCmd[vol & 0x0F]); - else - TonePortamento(pChn, vol * 16); - } else - { - if (vol) pChn->nOldVolParam = vol; else vol = pChn->nOldVolParam; - switch(volcmd) - { - case VOLCMD_VOLSLIDEUP: - VolumeSlide(pChn, vol << 4); - break; - - case VOLCMD_VOLSLIDEDOWN: - VolumeSlide(pChn, vol); - break; - - case VOLCMD_FINEVOLUP: - if (m_nType & MOD_TYPE_IT) - { - if (m_nTickCount == nStartTick) VolumeSlide(pChn, (vol << 4) | 0x0F); - } else - FineVolumeUp(pChn, vol); - break; - - case VOLCMD_FINEVOLDOWN: - if (m_nType & MOD_TYPE_IT) - { - if (m_nTickCount == nStartTick) VolumeSlide(pChn, 0xF0 | vol); - } else - FineVolumeDown(pChn, vol); - break; - - case VOLCMD_VIBRATOSPEED: - Vibrato(pChn, vol << 4); - break; - - case VOLCMD_VIBRATO: - Vibrato(pChn, vol); - break; - - case VOLCMD_PANSLIDELEFT: - PanningSlide(pChn, vol); - break; - - case VOLCMD_PANSLIDERIGHT: - PanningSlide(pChn, vol << 4); - break; - - case VOLCMD_PORTAUP: - PortamentoUp(pChn, vol << 2); - break; - - case VOLCMD_PORTADOWN: - PortamentoDown(pChn, vol << 2); - break; - } - } - } - - // Effects - if (cmd) switch (cmd) - { - // Set Volume - case CMD_VOLUME: - if (!m_nTickCount) - { - pChn->nVolume = (param < 64) ? param*4 : 256; - pChn->dwFlags |= CHN_FASTVOLRAMP; - for (UINT i=m_nChannels; inMasterChn == (nChn+1)) { - c->nVolume = pChn->nVolume; - c->dwFlags |= CHN_FASTVOLRAMP; - } - } - } - break; - - // Portamento Up - case CMD_PORTAMENTOUP: - if ((!param) && (m_nType & MOD_TYPE_MOD)) break; - PortamentoUp(pChn, param); - break; - - // Portamento Down - case CMD_PORTAMENTODOWN: - if ((!param) && (m_nType & MOD_TYPE_MOD)) break; - PortamentoDown(pChn, param); - break; - - // Volume Slide - case CMD_VOLUMESLIDE: - if ((param) || (m_nType != MOD_TYPE_MOD)) VolumeSlide(pChn, param); - break; - - // Tone-Portamento - case CMD_TONEPORTAMENTO: - TonePortamento(pChn, param); - break; - - // Tone-Portamento + Volume Slide - case CMD_TONEPORTAVOL: - if ((param) || (m_nType != MOD_TYPE_MOD)) VolumeSlide(pChn, param); - TonePortamento(pChn, 0); - break; - - // Vibrato - case CMD_VIBRATO: - Vibrato(pChn, param); - break; - - // Vibrato + Volume Slide - case CMD_VIBRATOVOL: - if ((param) || (m_nType != MOD_TYPE_MOD)) VolumeSlide(pChn, param); - Vibrato(pChn, 0); - break; - - // Set Speed - case CMD_SPEED: - if (!m_nTickCount) SetSpeed(param); - break; - - // Set Tempo - case CMD_TEMPO: - if (!m_nTickCount) - { - if (m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT)) - { - if (param) pChn->nOldTempo = param; else param = pChn->nOldTempo; - } - SetTempo(param); - } else { - param = pChn->nOldTempo; // this just got set on tick zero - - switch (param >> 4) { - case 0: - m_nMusicTempo -= param & 0xf; - if (m_nMusicTempo < 32) - m_nMusicTempo = 32; - break; - case 1: - m_nMusicTempo += param & 0xf; - if (m_nMusicTempo > 255) - m_nMusicTempo = 255; - break; - } - } - break; - - // Set Offset - case CMD_OFFSET: - if (m_nTickCount) break; - if (param) pChn->nOldOffset = param; else param = pChn->nOldOffset; - param <<= 8; - param |= (UINT)(pChn->nOldHiOffset) << 16; - if ((pChn->nRowNote) && (pChn->nRowNote < 0x80)) - { - if (bPorta) - pChn->nPos = param; - else - pChn->nPos += param; - if (pChn->nPos >= pChn->nLength) - { - if (!(m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2))) - { - pChn->nPos = pChn->nLoopStart; - if ((m_dwSongFlags & SONG_ITOLDEFFECTS) && (pChn->nLength > 4)) - { - pChn->nPos = pChn->nLength - 2; - } - } - } - } else - if ((param < pChn->nLength) && (m_nType & (MOD_TYPE_MTM|MOD_TYPE_DMF))) - { - pChn->nPos = param; - } - break; - - // Arpeggio - case CMD_ARPEGGIO: - pChn->nCommand = CMD_ARPEGGIO; - if ((m_nTickCount) || (!pChn->nPeriod) || (!pChn->nNote)) break; - if ((!param) && (!(m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT)))) break; - if (param) pChn->nArpeggio = param; - break; - - // Retrig - case CMD_RETRIG: - if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) - { - if (!(param & 0xF0)) param |= pChn->nRetrigParam & 0xF0; - if (!(param & 0x0F)) param |= pChn->nRetrigParam & 0x0F; - param |= 0x100; // increment retrig count on first row - } - // various bits of retriggery commented out here & below, reverting to old method... - // -Storlek 04aug07 - // if (pChn->nRowNote && !m_nTickCount) pChn->nRetrigCount = 0; - if (param) pChn->nRetrigParam = (BYTE)(param & 0xFF); else param = pChn->nRetrigParam; - // pChn->nCommand = CMD_RETRIG; - RetrigNote(nChn, param); - break; - - // Tremor - case CMD_TREMOR: - pChn->nCommand = CMD_TREMOR; - if (m_nTickCount) break; - if (param) pChn->nTremorParam = param; - break; - - // Set Global Volume - case CMD_GLOBALVOLUME: - if (m_nTickCount) break; - if (m_nType != MOD_TYPE_IT) param <<= 1; - if (param > 128) param = 128; - m_nGlobalVolume = param << 1; - break; - - // Global Volume Slide - case CMD_GLOBALVOLSLIDE: - GlobalVolSlide(param); - break; - - // Set 8-bit Panning - case CMD_PANNING8: - if (m_nTickCount) break; - if (!(m_dwSongFlags & SONG_SURROUNDPAN)) pChn->dwFlags &= ~CHN_SURROUND; - if (m_nType & (MOD_TYPE_IT|MOD_TYPE_XM|MOD_TYPE_MT2)) - { - pChn->nPan = param; - } else - if (param <= 0x80) - { - pChn->nPan = param << 1; - } else - if (param == 0xA4) - { - pChn->dwFlags |= CHN_SURROUND; - pChn->nPan = 0x80; - } - pChn->dwFlags |= CHN_FASTVOLRAMP; - break; - - // Panning Slide - case CMD_PANNINGSLIDE: - PanningSlide(pChn, param); - break; - - // Tremolo - case CMD_TREMOLO: - Tremolo(pChn, param); - break; - - // Fine Vibrato - case CMD_FINEVIBRATO: - FineVibrato(pChn, param); - break; - - // MOD/XM Exx Extended Commands - case CMD_MODCMDEX: - ExtendedMODCommands(nChn, param); - break; - - // S3M/IT Sxx Extended Commands - case CMD_S3MCMDEX: - ExtendedS3MCommands(nChn, param); - break; - - // Key Off - case CMD_KEYOFF: - if (!m_nTickCount) KeyOff(nChn); - break; - - // Extra-fine porta up/down - case CMD_XFINEPORTAUPDOWN: - switch(param & 0xF0) - { - case 0x10: ExtraFinePortamentoUp(pChn, param & 0x0F); break; - case 0x20: ExtraFinePortamentoDown(pChn, param & 0x0F); break; - // Modplug XM Extensions - case 0x50: - case 0x60: - case 0x70: - case 0x90: - case 0xA0: ExtendedS3MCommands(nChn, param); break; - } - break; - - // Set Channel Global Volume - case CMD_CHANNELVOLUME: - if (m_nTickCount) break; - if (param <= 64) - { - pChn->nGlobalVol = param; - pChn->dwFlags |= CHN_FASTVOLRAMP; - for (UINT i=m_nChannels; inMasterChn == (nChn+1)) { - c->nGlobalVol = param; - c->dwFlags |= CHN_FASTVOLRAMP; - } - } - } - break; - - // Channel volume slide - case CMD_CHANNELVOLSLIDE: - { - int saw_self = 0; - - for (UINT i=m_nChannels; inMasterChn == (nChn+1)) { - if (c == pChn) saw_self = 1; - ChannelVolSlide(c, param); - } - } - if (!saw_self) { - ChannelVolSlide(pChn, param); - } - } - - break; - - // Panbrello (IT) - case CMD_PANBRELLO: - Panbrello(pChn, param); - break; - - // Set Envelope Position - case CMD_SETENVPOSITION: - if (!m_nTickCount) - { - pChn->nVolEnvPosition = param; - pChn->nPanEnvPosition = param; - pChn->nPitchEnvPosition = param; - if ((m_dwSongFlags & SONG_INSTRUMENTMODE) && pChn->pHeader) - { - INSTRUMENTHEADER *penv = pChn->pHeader; - if ((pChn->dwFlags & CHN_PANENV) && (penv->PanEnv.nNodes) && ((int)param > penv->PanEnv.Ticks[penv->PanEnv.nNodes-1])) - { - pChn->dwFlags &= ~CHN_PANENV; - } - } - } - break; - - // Position Jump - case CMD_POSITIONJUMP: - nPosJump = param; - break; - - // Pattern Break - case CMD_PATTERNBREAK: - nBreakRow = param; - break; - - // Midi Controller - case CMD_MIDI: - if (m_nTickCount) break; - if (param < 0x80) - { - ProcessMidiMacro(nChn, &m_MidiCfg.szMidiSFXExt[pChn->nActiveMacro << 5], param); - } else - { - ProcessMidiMacro(nChn, &m_MidiCfg.szMidiZXXExt[(param & 0x7F) << 5], 0); - } - break; - } - } - - // Navigation Effects - if (!m_nTickCount) - { - // Pattern Loop - if (nPatLoopRow >= 0) - { - m_nNextPattern = m_nCurrentPattern; - m_nNextRow = nPatLoopRow; - if (m_nPatternDelay) m_nNextRow++; - } else - // Pattern Break / Position Jump only if no loop running - if ((nBreakRow >= 0) || (nPosJump >= 0)) - { - BOOL bNoLoop = FALSE; - if (nPosJump < 0) nPosJump = m_nCurrentPattern+1; - if (nBreakRow < 0) nBreakRow = 0; - // Modplug Tracker & ModPlugin allow backward jumps - #ifndef MODPLUG_FASTSOUNDLIB - if ((nPosJump < (int)m_nCurrentPattern) - || ((nPosJump == (int)m_nCurrentPattern) && (nBreakRow <= (int)m_nRow))) - { - if (!IsValidBackwardJump(m_nCurrentPattern, m_nRow, nPosJump, nBreakRow)) - { - if (m_nRepeatCount) - { - if (m_nRepeatCount > 0) m_nRepeatCount--; - } else - { - #ifdef MODPLUG_TRACKER - if (gdwSoundSetup & SNDMIX_NOBACKWARDJUMPS) - #endif - // Backward jump disabled - bNoLoop = TRUE; - //reset repeat count incase there are multiple loops. - //(i.e. Unreal tracks) - m_nRepeatCount = m_nInitialRepeatCount; - } - } - } - #endif // MODPLUG_FASTSOUNDLIB - if (((!bNoLoop) && (nPosJump < MAX_ORDERS)) - && ((nPosJump != (int)m_nCurrentPattern) || (nBreakRow != (int)m_nRow))) - { - if (nPosJump != (int)m_nCurrentPattern) - { - for (UINT i=0; inOldPortaUpDown = param; else param = pChn->nOldPortaUpDown; - if (m_dwSongFlags & SONG_ITCOMPATMODE) pChn->nPortamentoSlide=param*4; - else pChn->nPortamentoDest=0; - if ((m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT|MOD_TYPE_STM)) && ((param & 0xF0) >= 0xE0)) - { - if (param & 0x0F) - { - if ((param & 0xF0) == 0xF0) - { - FinePortamentoUp(pChn, param & 0x0F); - } else - if ((param & 0xF0) == 0xE0) - { - ExtraFinePortamentoUp(pChn, param & 0x0F); - } - } - return; - } - // Regular Slide - if (!(m_dwSongFlags & SONG_FIRSTTICK)) - { - DoFreqSlide(pChn, -(int)(param * 4)); - } -} - - -void CSoundFile::PortamentoDown(MODCHANNEL *pChn, UINT param) -//----------------------------------------------------------- -{ - if (param) pChn->nOldPortaUpDown = param; else param = pChn->nOldPortaUpDown; - if (m_dwSongFlags & SONG_ITCOMPATMODE) pChn->nPortamentoSlide=param*4; - else pChn->nPortamentoDest=0; - if ((m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT|MOD_TYPE_STM)) && ((param & 0xF0) >= 0xE0)) - { - if (param & 0x0F) - { - if ((param & 0xF0) == 0xF0) - { - FinePortamentoDown(pChn, param & 0x0F); - } else - if ((param & 0xF0) == 0xE0) - { - ExtraFinePortamentoDown(pChn, param & 0x0F); - } - } - return; - } - if (!(m_dwSongFlags & SONG_FIRSTTICK)) DoFreqSlide(pChn, (int)(param << 2)); -} - - -void CSoundFile::FinePortamentoUp(MODCHANNEL *pChn, UINT param) -//------------------------------------------------------------- -{ - if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) - { - if (param) pChn->nOldFinePortaUpDown = param; else param = pChn->nOldFinePortaUpDown; - } - if (m_dwSongFlags & SONG_FIRSTTICK) - { - if ((pChn->nPeriod) && (param)) - { - if ((m_dwSongFlags & SONG_LINEARSLIDES) && (!(m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)))) - { - pChn->nPeriod = _muldivr(pChn->nPeriod, LinearSlideDownTable[param & 0x0F], 65536); - } else - { - pChn->nPeriod -= (int)(param * 4); - } - if (pChn->nPeriod < 1) pChn->nPeriod = 1; - } - } -} - - -void CSoundFile::FinePortamentoDown(MODCHANNEL *pChn, UINT param) -//--------------------------------------------------------------- -{ - if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) - { - if (param) pChn->nOldFinePortaUpDown = param; else param = pChn->nOldFinePortaUpDown; - } - if (m_dwSongFlags & SONG_FIRSTTICK) - { - if ((pChn->nPeriod) && (param)) - { - if ((m_dwSongFlags & SONG_LINEARSLIDES) && (!(m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)))) - { - pChn->nPeriod = _muldivr(pChn->nPeriod, LinearSlideUpTable[param & 0x0F], 65536); - } else - { - pChn->nPeriod += (int)(param * 4); - } - if (pChn->nPeriod > 0xFFFF) pChn->nPeriod = 0xFFFF; - } - } -} - - -void CSoundFile::ExtraFinePortamentoUp(MODCHANNEL *pChn, UINT param) -//------------------------------------------------------------------ -{ - if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) - { - if (param) pChn->nOldFinePortaUpDown = param; else param = pChn->nOldFinePortaUpDown; - } - if (m_dwSongFlags & SONG_FIRSTTICK) - { - if ((pChn->nPeriod) && (param)) - { - if ((m_dwSongFlags & SONG_LINEARSLIDES) && (!(m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)))) - { - pChn->nPeriod = _muldivr(pChn->nPeriod, FineLinearSlideDownTable[param & 0x0F], 65536); - } else - { - pChn->nPeriod -= (int)(param); - } - if (pChn->nPeriod < 1) pChn->nPeriod = 1; - } - } -} - - -void CSoundFile::ExtraFinePortamentoDown(MODCHANNEL *pChn, UINT param) -//-------------------------------------------------------------------- -{ - if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) - { - if (param) pChn->nOldFinePortaUpDown = param; else param = pChn->nOldFinePortaUpDown; - } - if (m_dwSongFlags & SONG_FIRSTTICK) - { - if ((pChn->nPeriod) && (param)) - { - if ((m_dwSongFlags & SONG_LINEARSLIDES) && (!(m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)))) - { - pChn->nPeriod = _muldivr(pChn->nPeriod, FineLinearSlideUpTable[param & 0x0F], 65536); - } else - { - pChn->nPeriod += (int)(param); - } - if (pChn->nPeriod > 0xFFFF) pChn->nPeriod = 0xFFFF; - } - } -} - - -// Portamento Slide -void CSoundFile::TonePortamento(MODCHANNEL *pChn, UINT param) -//----------------------------------------------------------- -{ - if (param) pChn->nPortamentoSlide = param * 4; - pChn->dwFlags |= CHN_PORTAMENTO; - if ((pChn->nPeriod) && (pChn->nPortamentoDest) && (!(m_dwSongFlags & SONG_FIRSTTICK))) - { - if (pChn->nPeriod < pChn->nPortamentoDest) - { - LONG delta = (int)pChn->nPortamentoSlide; - if ((m_dwSongFlags & SONG_LINEARSLIDES) && (!(m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)))) - { - UINT n = pChn->nPortamentoSlide >> 2; - if (n > 255) n = 255; - delta = _muldivr(pChn->nPeriod, LinearSlideUpTable[n], 65536) - pChn->nPeriod; - if (delta < 1) delta = 1; - } - pChn->nPeriod += delta; - if (pChn->nPeriod > pChn->nPortamentoDest) pChn->nPeriod = pChn->nPortamentoDest; - } else - if (pChn->nPeriod > pChn->nPortamentoDest) - { - LONG delta = - (int)pChn->nPortamentoSlide; - if ((m_dwSongFlags & SONG_LINEARSLIDES) && (!(m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)))) - { - UINT n = pChn->nPortamentoSlide >> 2; - if (n > 255) n = 255; - delta = _muldivr(pChn->nPeriod, LinearSlideDownTable[n], 65536) - pChn->nPeriod; - if (delta > -1) delta = -1; - } - pChn->nPeriod += delta; - if (pChn->nPeriod < pChn->nPortamentoDest) pChn->nPeriod = pChn->nPortamentoDest; - } - } -} - - -void CSoundFile::Vibrato(MODCHANNEL *p, UINT param) -//------------------------------------------------- -{ - if (param & 0x0F) p->nVibratoDepth = (param & 0x0F) * 4; - if (param & 0xF0) p->nVibratoSpeed = (param >> 4) & 0x0F; - p->dwFlags |= CHN_VIBRATO; -} - - -void CSoundFile::FineVibrato(MODCHANNEL *p, UINT param) -//----------------------------------------------------- -{ - if (param & 0x0F) p->nVibratoDepth = param & 0x0F; - if (param & 0xF0) p->nVibratoSpeed = (param >> 4) & 0x0F; - p->dwFlags |= CHN_VIBRATO; -} - - -void CSoundFile::Panbrello(MODCHANNEL *p, UINT param) -//--------------------------------------------------- -{ - if (param & 0x0F) p->nPanbrelloDepth = param & 0x0F; - if (param & 0xF0) p->nPanbrelloSpeed = (param >> 4) & 0x0F; - p->dwFlags |= CHN_PANBRELLO; -} - - -void CSoundFile::VolumeSlide(MODCHANNEL *pChn, UINT param) -//-------------------------------------------------------- -{ - if (param) pChn->nOldVolumeSlide = param; else param = pChn->nOldVolumeSlide; - LONG newvolume = pChn->nVolume; - if (m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT|MOD_TYPE_STM|MOD_TYPE_AMF)) - { - if ((param & 0x0F) == 0x0F) - { - if (param & 0xF0) - { - FineVolumeUp(pChn, (param >> 4)); - return; - } else - { - if ((m_dwSongFlags & SONG_FIRSTTICK) && (!(m_dwSongFlags & SONG_FASTVOLSLIDES))) - { - newvolume -= 0x0F * 4; - } - } - } else - if ((param & 0xF0) == 0xF0) - { - if (param & 0x0F) - { - FineVolumeDown(pChn, (param & 0x0F)); - return; - } else - { - if ((m_dwSongFlags & SONG_FIRSTTICK) && (!(m_dwSongFlags & SONG_FASTVOLSLIDES))) - { - newvolume += 0x0F * 4; - } - } - } - } - if ((!(m_dwSongFlags & SONG_FIRSTTICK)) || (m_dwSongFlags & SONG_FASTVOLSLIDES)) - { - if (param & 0x0F) newvolume -= (int)((param & 0x0F) * 4); - else newvolume += (int)((param & 0xF0) >> 2); - if (m_nType & MOD_TYPE_MOD) pChn->dwFlags |= CHN_FASTVOLRAMP; - } - if (newvolume < 0) newvolume = 0; - if (newvolume > 256) newvolume = 256; - pChn->nVolume = newvolume; -} - - -void CSoundFile::PanningSlide(MODCHANNEL *pChn, UINT param) -//--------------------------------------------------------- -{ - LONG nPanSlide = 0; - if (param) pChn->nOldPanSlide = param; else param = pChn->nOldPanSlide; - if (m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT|MOD_TYPE_STM)) - { - if (((param & 0x0F) == 0x0F) && (param & 0xF0)) - { - if (m_dwSongFlags & SONG_FIRSTTICK) - { - param = (param & 0xF0) >> 2; - nPanSlide = - (int)param; - } - } else - if (((param & 0xF0) == 0xF0) && (param & 0x0F)) - { - if (m_dwSongFlags & SONG_FIRSTTICK) - { - nPanSlide = (param & 0x0F) << 2; - } - } else - { - if (!(m_dwSongFlags & SONG_FIRSTTICK)) - { - if (param & 0x0F) nPanSlide = (int)((param & 0x0F) << 2); - else nPanSlide = -(int)((param & 0xF0) >> 2); - } - } - } else - { - if (!(m_dwSongFlags & SONG_FIRSTTICK)) - { - if (param & 0x0F) nPanSlide = -(int)((param & 0x0F) << 2); - else nPanSlide = (int)((param & 0xF0) >> 2); - } - } - if (nPanSlide) - { - nPanSlide += pChn->nPan; - if (nPanSlide < 0) nPanSlide = 0; - if (nPanSlide > 256) nPanSlide = 256; - pChn->nPan = nPanSlide; - } - pChn->dwFlags &= ~CHN_SURROUND; -} - - -void CSoundFile::FineVolumeUp(MODCHANNEL *pChn, UINT param) -//--------------------------------------------------------- -{ - if (param) pChn->nOldFineVolUpDown = param; else param = pChn->nOldFineVolUpDown; - if (m_dwSongFlags & SONG_FIRSTTICK) - { - pChn->nVolume += param * 4; - if (pChn->nVolume > 256) pChn->nVolume = 256; - if (m_nType & MOD_TYPE_MOD) pChn->dwFlags |= CHN_FASTVOLRAMP; - } -} - - -void CSoundFile::FineVolumeDown(MODCHANNEL *pChn, UINT param) -//----------------------------------------------------------- -{ - if (param) pChn->nOldFineVolUpDown = param; else param = pChn->nOldFineVolUpDown; - if (m_dwSongFlags & SONG_FIRSTTICK) - { - pChn->nVolume -= param * 4; - if (pChn->nVolume < 0) pChn->nVolume = 0; - if (m_nType & MOD_TYPE_MOD) pChn->dwFlags |= CHN_FASTVOLRAMP; - } -} - - -void CSoundFile::Tremolo(MODCHANNEL *p, UINT param) -//------------------------------------------------- -{ - if (param & 0x0F) p->nTremoloDepth = (param & 0x0F) << 2; - if (param & 0xF0) p->nTremoloSpeed = (param >> 4) & 0x0F; - p->dwFlags |= CHN_TREMOLO; -} - - -void CSoundFile::ChannelVolSlide(MODCHANNEL *pChn, UINT param) -//------------------------------------------------------------ -{ - LONG nChnSlide = 0; - if (param) pChn->nOldChnVolSlide = param; else param = pChn->nOldChnVolSlide; - if (((param & 0x0F) == 0x0F) && (param & 0xF0)) - { - if (m_dwSongFlags & SONG_FIRSTTICK) nChnSlide = param >> 4; - } else - if (((param & 0xF0) == 0xF0) && (param & 0x0F)) - { - if (m_dwSongFlags & SONG_FIRSTTICK) nChnSlide = - (int)(param & 0x0F); - } else - { - if (!(m_dwSongFlags & SONG_FIRSTTICK)) - { - if (param & 0x0F) nChnSlide = -(int)(param & 0x0F); - else nChnSlide = (int)((param & 0xF0) >> 4); - } - } - if (nChnSlide) - { - nChnSlide += pChn->nGlobalVol; - if (nChnSlide < 0) nChnSlide = 0; - if (nChnSlide > 64) nChnSlide = 64; - pChn->nGlobalVol = nChnSlide; - } -} - - -void CSoundFile::ExtendedMODCommands(UINT nChn, UINT param) -//--------------------------------------------------------- -{ - MODCHANNEL *pChn = &Chn[nChn]; - UINT command = param & 0xF0; - param &= 0x0F; - switch(command) - { - // E0x: Set Filter - // E1x: Fine Portamento Up - case 0x10: if ((param) || (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2))) FinePortamentoUp(pChn, param); break; - // E2x: Fine Portamento Down - case 0x20: if ((param) || (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2))) FinePortamentoDown(pChn, param); break; - // E3x: Set Glissando Control - case 0x30: pChn->dwFlags &= ~CHN_GLISSANDO; if (param) pChn->dwFlags |= CHN_GLISSANDO; break; - // E4x: Set Vibrato WaveForm - case 0x40: pChn->nVibratoType = param & 0x07; break; - // E5x: Set FineTune - case 0x50: if (m_nTickCount) break; - pChn->nC4Speed = S3MFineTuneTable[param]; - if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) - pChn->nFineTune = param*2; - else - pChn->nFineTune = MOD2XMFineTune(param); - if (pChn->nPeriod) pChn->nPeriod = GetPeriodFromNote(pChn->nNote, pChn->nFineTune, pChn->nC4Speed); - break; - // E6x: Pattern Loop - // E7x: Set Tremolo WaveForm - case 0x70: pChn->nTremoloType = param & 0x07; break; - // E8x: Set 4-bit Panning - case 0x80: if (!m_nTickCount) { pChn->nPan = (param << 4) + 8; pChn->dwFlags |= CHN_FASTVOLRAMP; } break; - // E9x: Retrig - case 0x90: RetrigNote(nChn, param); break; - // EAx: Fine Volume Up - case 0xA0: if ((param) || (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2))) FineVolumeUp(pChn, param); break; - // EBx: Fine Volume Down - case 0xB0: if ((param) || (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2))) FineVolumeDown(pChn, param); break; - // ECx: Note Cut - case 0xC0: NoteCut(nChn, param); break; - // EDx: Note Delay - // EEx: Pattern Delay - // EFx: MOD: Invert Loop, XM: Set Active Midi Macro - case 0xF0: pChn->nActiveMacro = param; break; - } -} - - -void CSoundFile::ExtendedS3MCommands(UINT nChn, UINT param) -//--------------------------------------------------------- -{ - MODCHANNEL *pChn = &Chn[nChn]; - UINT command = param & 0xF0; - param &= 0x0F; - switch(command) - { - // S0x: Set Filter - // S1x: Set Glissando Control - case 0x10: pChn->dwFlags &= ~CHN_GLISSANDO; if (param) pChn->dwFlags |= CHN_GLISSANDO; break; - // S2x: Set FineTune - case 0x20: if (m_nTickCount) break; - pChn->nC4Speed = S3MFineTuneTable[param & 0x0F]; - pChn->nFineTune = MOD2XMFineTune(param); - if (pChn->nPeriod) pChn->nPeriod = GetPeriodFromNote(pChn->nNote, pChn->nFineTune, pChn->nC4Speed); - break; - // S3x: Set Vibrato WaveForm - case 0x30: pChn->nVibratoType = param & 0x07; break; - // S4x: Set Tremolo WaveForm - case 0x40: pChn->nTremoloType = param & 0x07; break; - // S5x: Set Panbrello WaveForm - case 0x50: pChn->nPanbrelloType = param & 0x07; break; - // S6x: Pattern Delay for x frames - case 0x60: m_nFrameDelay = param; break; - // S7x: Envelope Control - case 0x70: if (m_nTickCount) break; - switch(param) - { - case 0: - case 1: - case 2: - { - MODCHANNEL *bkp = &Chn[m_nChannels]; - for (UINT i=m_nChannels; inMasterChn == nChn+1) - { - if (param == 1) KeyOff(i); else - if (param == 2) bkp->dwFlags |= CHN_NOTEFADE; else - { bkp->dwFlags |= CHN_NOTEFADE; bkp->nFadeOutVol = 0; } - } - } - } - break; - case 3: pChn->nNNA = NNA_NOTECUT; break; - case 4: pChn->nNNA = NNA_CONTINUE; break; - case 5: pChn->nNNA = NNA_NOTEOFF; break; - case 6: pChn->nNNA = NNA_NOTEFADE; break; - case 7: pChn->dwFlags &= ~CHN_VOLENV; break; - case 8: pChn->dwFlags |= CHN_VOLENV; break; - case 9: pChn->dwFlags &= ~CHN_PANENV; break; - case 10: pChn->dwFlags |= CHN_PANENV; break; - case 11: pChn->dwFlags &= ~CHN_PITCHENV; break; - case 12: pChn->dwFlags |= CHN_PITCHENV; break; - } - break; - // S8x: Set 4-bit Panning - case 0x80: - pChn->dwFlags &= ~CHN_SURROUND; - if (!m_nTickCount) { - pChn->nPan = (param << 4) + 8; - pChn->dwFlags |= CHN_FASTVOLRAMP; - } - break; - // S9x: Set Surround - case 0x90: ExtendedChannelEffect(pChn, param & 0x0F); break; - // SAx: Set 64k Offset - case 0xA0: if (!m_nTickCount) - { - if (m_nType & MOD_TYPE_S3M) { - pChn->nPan = ((param ^ 8) << 4) + 8; - pChn->dwFlags &= ~CHN_SURROUND; - pChn->dwFlags |= CHN_FASTVOLRAMP; - } else { - pChn->nOldHiOffset = param; - if ((pChn->nRowNote) && (pChn->nRowNote < 0x80)) - { - DWORD pos = param << 16; - if (pos < pChn->nLength) pChn->nPos = pos; - } - } - } - break; - // SBx: Pattern Loop - // SCx: Note Cut - case 0xC0: NoteCut(nChn, param); break; - // SDx: Note Delay - // case 0xD0: break; - // SEx: Pattern Delay for x rows - // SFx: S3M: Funk Repeat, IT: Set Active Midi Macro - case 0xF0: pChn->nActiveMacro = param; break; - } -} - - -void CSoundFile::ExtendedChannelEffect(MODCHANNEL *pChn, UINT param) -//------------------------------------------------------------------ -{ - // S9x and X9x commands (S3M/XM/IT only) - if (m_nTickCount) return; - switch(param & 0x0F) - { - // S91: Surround On - case 0x01: pChn->dwFlags |= CHN_SURROUND; pChn->nPan = 128; break; - //////////////////////////////////////////////////////////// - // Modplug Extensions - // S90: Surround Off - case 0x00: pChn->dwFlags &= ~CHN_SURROUND; break; - // S98: Reverb Off - case 0x08: - pChn->dwFlags &= ~CHN_REVERB; - pChn->dwFlags |= CHN_NOREVERB; - break; - // S99: Reverb On - case 0x09: - pChn->dwFlags &= ~CHN_NOREVERB; - pChn->dwFlags |= CHN_REVERB; - break; - // S9A: 2-Channels surround mode - case 0x0A: - m_dwSongFlags &= ~SONG_SURROUNDPAN; - break; - // S9B: 4-Channels surround mode - case 0x0B: - m_dwSongFlags |= SONG_SURROUNDPAN; - break; - // S9C: IT Filter Mode - case 0x0C: - m_dwSongFlags &= ~SONG_MPTFILTERMODE; - break; - // S9D: MPT Filter Mode - case 0x0D: - m_dwSongFlags |= SONG_MPTFILTERMODE; - break; - // S9E: Go forward - case 0x0E: - pChn->dwFlags &= ~(CHN_PINGPONGFLAG); - break; - // S9F: Go backward (set position at the end for non-looping samples) - case 0x0F: - if ((!(pChn->dwFlags & CHN_LOOP)) && (!pChn->nPos) && (pChn->nLength)) - { - pChn->nPos = pChn->nLength - 1; - pChn->nPosLo = 0xFFFF; - } - pChn->dwFlags |= CHN_PINGPONGFLAG; - break; - } -} - -// this is all brisby -void CSoundFile::MidiSend(unsigned char *data, unsigned int len, UINT nChn, int fake) -{ - MODCHANNEL *pChn = &Chn[nChn]; - int oldcutoff; - - if (len > 2 && data[0] == 0xF0 && data[1] == 0xF0) { - /* impulse tracker filter control (mfg. 0xF0) */ - if (len == 5) { - switch (data[2]) { - case 0x00: /* set cutoff */ - oldcutoff = pChn->nCutOff; - if (data[3] < 0x80) pChn->nCutOff = data[3]; -#ifndef NO_FILTER - oldcutoff -= pChn->nCutOff; - - if (oldcutoff < 0) oldcutoff = -oldcutoff; - if ((pChn->nVolume > 0) || (oldcutoff < 0x10) - || (!(pChn->dwFlags & CHN_FILTER)) - || (!(pChn->nLeftVol|pChn->nRightVol))) - SetupChannelFilter(pChn, (pChn->dwFlags & CHN_FILTER) - ? FALSE : TRUE); -#endif // NO_FILTER - break; - case 0x01: /* set resonance */ - if (data[3] < 0x80) pChn->nResonance = data[3]; -#ifndef NO_FILTER - SetupChannelFilter(pChn, (pChn->dwFlags & CHN_FILTER) ? FALSE : TRUE); -#endif // NO_FILTER - break; - }; - } - } - - if (!fake && _midi_out_raw) { - /* okay, this is kind of how it works. - we pass m_nBufferCount as here because while - 1000 * ((8((buffer_size/2) - m_nBufferCount)) / sample_rate) - is the number of msec we need to delay by, libmodplug simply doesn't know - what the buffer size is at this point so m_nBufferCount simply has no - frame of reference. - - fortunately, schism does and can complete this (tags: _schism_midi_out_raw ) - - */ - _midi_out_raw(data, len, m_nBufferCount); - } -} - -static int _was_complete_midi(unsigned char *q, unsigned int len, int nextc) -{ - if (len == 0) return 0; - if (*q == 0xF0) return (q[len-1] == 0xF7 ? 1 : 0); - return ((nextc & 0x80) ? 1 : 0); -} - -void CSoundFile::ProcessMidiMacro(UINT nChn, LPCSTR pszMidiMacro, UINT param, - UINT note, UINT velocity, UINT use_instr) -//--------------------------------------------------------------------------- -{ -/* this was all wrong. -mrsb */ - MODCHANNEL *pChn = &Chn[nChn]; - INSTRUMENTHEADER *penv = (m_dwSongFlags & SONG_INSTRUMENTMODE) - ? Headers[use_instr - ?use_instr - :pChn->nLastInstr] - : NULL; - unsigned char outbuffer[64]; - unsigned char cx; - int mc, fake = 0; - int saw_c; - int i, j, x; - - saw_c = 0; - if (!penv || penv->nMidiChannel == 0) { - /* okay, there _IS_ no real midi channel. forget this for now... */ - mc = 15; - fake = 1; - - } else if (penv->nMidiChannel > 16) { - mc = (nChn-1) % 16; - } else { - mc = (penv->nMidiChannel-1); - } - - for (i = j = x = 0, cx =0; i <= 32 && pszMidiMacro[i]; i++) { - int c, cw; - if (pszMidiMacro[i] >= '0' && pszMidiMacro[i] <= '9') { - c = pszMidiMacro[i] - '0'; - cw = 1; - } else if (pszMidiMacro[i] >= 'A' && pszMidiMacro[i] <= 'F') { - c = (pszMidiMacro[i] - 'A') + 10; - cw = 1; - } else if (pszMidiMacro[i] == 'c') { - c = mc; - cw = 1; - saw_c = 1; - } else if (pszMidiMacro[i] == 'n') { - c = (note-1); - cw = 2; - } else if (pszMidiMacro[i] == 'v') { - c = velocity; - cw = 2; - } else if (pszMidiMacro[i] == 'u') { - c = (pChn->nVolume >> 1); - if (c > 127) c = 127; - cw = 2; - } else if (pszMidiMacro[i] == 'x') { - c = pChn->nPan; - if (c > 127) c = 127; - cw = 2; - } else if (pszMidiMacro[i] == 'y') { - c = pChn->nRealPan; - if (c > 127) c = 127; - cw = 2; - } else if (pszMidiMacro[i] == 'a') { - if (!penv) - c = 0; - else - c = (penv->wMidiBank >> 7) & 127; - cw = 2; - } else if (pszMidiMacro[i] == 'b') { - if (!penv) - c = 0; - else - c = penv->wMidiBank & 127; - cw = 2; - } else if (pszMidiMacro[i] == 'z' || pszMidiMacro[i] == 'p') { - c = param & 0x7F; - cw = 2; - } else { - continue; - } - if (j == 0 && cw == 1) { - cx = c; - j = 1; - continue; - } else if (j == 1 && cw == 1) { - cx = (cx << 4) | c; - j = 0; - } else if (j == 0) { - cx = c; - } else if (j == 1) { - outbuffer[x] = cx; - x++; - - cx = c; - j = 0; - } - // start of midi message - if (_was_complete_midi(outbuffer,x,cx)) { - MidiSend(outbuffer, x, nChn,saw_c && fake); - x = 0; - } - outbuffer[x] = cx; - x++; - } - if (j == 1) { - outbuffer[x] = cx; - x++; - } - if (x) { - // terminate sysex - if (!_was_complete_midi(outbuffer,x,0xFF)) { - if (*outbuffer == 0xF0) { - outbuffer[x] = 0xF7; - x++; - } - } - MidiSend(outbuffer, x, nChn,saw_c && fake); - } -} - - -void CSoundFile::RetrigNote(UINT nChn, UINT param) -//------------------------------------------------ -{ - // Retrig: bit 8 is set if it's the new XM retrig - MODCHANNEL *pChn = &Chn[nChn]; - UINT nRetrigSpeed = param & 0x0F; - UINT nRetrigCount = pChn->nRetrigCount; - BOOL bDoRetrig = FALSE; - - if (m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT)) - { - if (!nRetrigSpeed) nRetrigSpeed = 1; - if (m_nMusicSpeed < nRetrigSpeed) { - if (nRetrigCount >= nRetrigSpeed) { - bDoRetrig = TRUE; - nRetrigCount = 0; - } else { - nRetrigCount++; - } - } else { - if ((nRetrigCount) && (!(nRetrigCount % nRetrigSpeed))) bDoRetrig = TRUE; - nRetrigCount++; - } - } else { - UINT realspeed = nRetrigSpeed; - if ((param & 0x100) && (pChn->nRowVolCmd == VOLCMD_VOLUME) && (pChn->nRowParam & 0xF0)) realspeed++; - if ((m_nTickCount) || (param & 0x100)) - { - if (!realspeed) realspeed = 1; - if ((!(param & 0x100)) && (m_nMusicSpeed) && (!(m_nTickCount % realspeed))) bDoRetrig = TRUE; - nRetrigCount++; - } else if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) nRetrigCount = 0; - if (nRetrigCount >= realspeed) - { - if ((m_nTickCount) || ((param & 0x100) && (!pChn->nRowNote))) bDoRetrig = TRUE; - } - } - if (bDoRetrig) - { - UINT dv = (param >> 4) & 0x0F; - if (dv) - { - int vol = pChn->nVolume; - if (retrigTable1[dv]) - vol = (vol * retrigTable1[dv]) >> 4; - else - vol += ((int)retrigTable2[dv]) << 2; - if (vol < 0) vol = 0; - if (vol > 256) vol = 256; - pChn->nVolume = vol; - pChn->dwFlags |= CHN_FASTVOLRAMP; - } - UINT nNote = pChn->nNewNote; - LONG nOldPeriod = pChn->nPeriod; - if ((nNote) && (nNote <= 120) && (pChn->nLength)) CheckNNA(nChn, 0, nNote, TRUE); - BOOL bResetEnv = FALSE; - if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) - { - if ((pChn->nRowInstr) && (param < 0x100)) { InstrumentChange(pChn, pChn->nRowInstr, FALSE, FALSE); bResetEnv = TRUE; } - if (param < 0x100) bResetEnv = TRUE; - } - NoteChange(nChn, nNote, FALSE, bResetEnv); - if ((m_nType & MOD_TYPE_IT) && (!pChn->nRowNote) && (nOldPeriod)) pChn->nPeriod = nOldPeriod; - if (!(m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT))) nRetrigCount = 0; - } - pChn->nRetrigCount = (BYTE)nRetrigCount; -} - - -void CSoundFile::DoFreqSlide(MODCHANNEL *pChn, LONG nFreqSlide) -//------------------------------------------------------------- -{ - // IT Linear slides - if (!pChn->nPeriod) return; - if ((m_dwSongFlags & SONG_LINEARSLIDES) && (!(m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)))) - { - if (nFreqSlide < 0) - { - UINT n = (- nFreqSlide) >> 2; - if (n > 255) n = 255; - pChn->nPeriod = _muldivr(pChn->nPeriod, LinearSlideDownTable[n], 65536); - } else - { - UINT n = (nFreqSlide) >> 2; - - if (n > 255) n = 255; - pChn->nPeriod = _muldivr(pChn->nPeriod, LinearSlideUpTable[n], 65536); - } - } else - { - pChn->nPeriod += nFreqSlide; - } - if (pChn->nPeriod < 1) - { - pChn->nPeriod = 1; - if (m_nType & MOD_TYPE_IT) - { - pChn->dwFlags |= CHN_NOTEFADE; - pChn->nFadeOutVol = 0; - } - } -} - - -void CSoundFile::NoteCut(UINT nChn, UINT nTick) -//--------------------------------------------- -{ - if (m_nTickCount == nTick) - { - MODCHANNEL *pChn = &Chn[nChn]; - // if (m_dwSongFlags & SONG_INSTRUMENTMODE) KeyOff(pChn); ? - pChn->nVolume = 0; - pChn->dwFlags |= CHN_FASTVOLRAMP; - pChn->nLength = 0; - } -} - - -void CSoundFile::KeyOff(UINT nChn) -//-------------------------------- -{ - MODCHANNEL *pChn = &Chn[nChn]; - BOOL bKeyOn = (pChn->dwFlags & CHN_KEYOFF) ? FALSE : TRUE; - pChn->dwFlags |= CHN_KEYOFF; - //if ((!pChn->pHeader) || (!(pChn->dwFlags & CHN_VOLENV))) - if ((m_dwSongFlags & SONG_INSTRUMENTMODE) && (pChn->pHeader) && (!(pChn->dwFlags & CHN_VOLENV))) - { - pChn->dwFlags |= CHN_NOTEFADE; - } - if (!pChn->nLength) return; - if ((pChn->dwFlags & CHN_SUSTAINLOOP) && (pChn->pInstrument) && (bKeyOn)) - { - MODINSTRUMENT *psmp = pChn->pInstrument; - if (psmp->uFlags & CHN_LOOP) - { - if (psmp->uFlags & CHN_PINGPONGLOOP) - pChn->dwFlags |= CHN_PINGPONGLOOP; - else - pChn->dwFlags &= ~(CHN_PINGPONGLOOP|CHN_PINGPONGFLAG); - pChn->dwFlags |= CHN_LOOP; - pChn->nLength = psmp->nLength; - pChn->nLoopStart = psmp->nLoopStart; - pChn->nLoopEnd = psmp->nLoopEnd; - if (pChn->nLength > pChn->nLoopEnd) pChn->nLength = pChn->nLoopEnd; - } else - { - pChn->dwFlags &= ~(CHN_LOOP|CHN_PINGPONGLOOP|CHN_PINGPONGFLAG); - pChn->nLength = psmp->nLength; - } - } - if ((m_dwSongFlags & SONG_INSTRUMENTMODE) && pChn->pHeader) - { - INSTRUMENTHEADER *penv = pChn->pHeader; - if (((penv->dwFlags & ENV_VOLLOOP) || (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2))) && (penv->nFadeOut)) - pChn->dwFlags |= CHN_NOTEFADE; - } -} - - -////////////////////////////////////////////////////////// -// CSoundFile: Global Effects - - -void CSoundFile::SetSpeed(UINT param) -//----------------------------------- -{ - if (param) - m_nMusicSpeed = param; -} - - -void CSoundFile::SetTempo(UINT param) -//----------------------------------- -{ - if (param < 0x20) - { -#if 0 // argh... this is completely wrong - // Tempo Slide - if ((param & 0xF0) == 0x10) - { - m_nMusicTempo += (param & 0x0F) * 2; - if (m_nMusicTempo > 255) m_nMusicTempo = 255; - } else - { - m_nMusicTempo -= (param & 0x0F) * 2; - if ((LONG)m_nMusicTempo < 32) m_nMusicTempo = 32; - } -#endif - } else - { - m_nMusicTempo = param; - } -} - - -int CSoundFile::PatternLoop(MODCHANNEL *pChn, UINT param) -//------------------------------------------------------- -{ - if (param) - { - if (pChn->nPatternLoopCount) - { - pChn->nPatternLoopCount--; - if (!pChn->nPatternLoopCount) { - // this should get rid of that nasty infinite loop for cases like - // ... .. .. SB0 - // ... .. .. SB1 - // ... .. .. SB1 - // it still doesn't work right in a few strange cases, but oh well :P - pChn->nPatternLoop = m_nRow + 1; - return -1; - } - } else - { - // hmm. the pattern loop shouldn't care about - // other channels at all... i'm not really - // sure what this code is doing :/ -#if 0 - MODCHANNEL *p = Chn; - for (UINT i=0; inPatternLoopCount) return -1; - } -#endif - pChn->nPatternLoopCount = param; - } - return pChn->nPatternLoop; - } else - { - pChn->nPatternLoop = m_nRow; - } - return -1; -} - - -void CSoundFile::GlobalVolSlide(UINT param) -//----------------------------------------- -{ - LONG nGlbSlide = 0; - if (param) m_nOldGlbVolSlide = param; else param = m_nOldGlbVolSlide; - if (((param & 0x0F) == 0x0F) && (param & 0xF0)) - { - if (m_dwSongFlags & SONG_FIRSTTICK) nGlbSlide = (param >> 4) * 2; - } else - if (((param & 0xF0) == 0xF0) && (param & 0x0F)) - { - if (m_dwSongFlags & SONG_FIRSTTICK) nGlbSlide = - (int)((param & 0x0F) * 2); - } else - { - if (!(m_dwSongFlags & SONG_FIRSTTICK)) - { - if (param & 0xF0) nGlbSlide = (int)((param & 0xF0) >> 4) * 2; - else nGlbSlide = -(int)((param & 0x0F) * 2); - } - } - if (nGlbSlide) - { - if (m_nType != MOD_TYPE_IT) nGlbSlide *= 2; - nGlbSlide += m_nGlobalVolume; - if (nGlbSlide < 0) nGlbSlide = 0; - if (nGlbSlide > 256) nGlbSlide = 256; - m_nGlobalVolume = nGlbSlide; - } -} - - -DWORD CSoundFile::IsSongFinished(UINT nStartOrder, UINT nStartRow) const -//---------------------------------------------------------------------- -{ - UINT nOrd; - - for (nOrd=nStartOrder; nOrd= MAX_PATTERNS) break; - p = Patterns[nPat]; - if (p) - { - UINT len = PatternSize[nPat] * m_nChannels; - UINT pos = (nOrd == nStartOrder) ? nStartRow : 0; - pos *= m_nChannels; - while (pos < len) - { - UINT cmd; - if ((p[pos].note) || (p[pos].volcmd)) return 0; - cmd = p[pos].command; - if (cmd == CMD_MODCMDEX) - { - UINT cmdex = p[pos].param & 0xF0; - if ((!cmdex) || (cmdex == 0x60) || (cmdex == 0xE0) || (cmdex == 0xF0)) cmd = 0; - } - if ((cmd) && (cmd != CMD_SPEED) && (cmd != CMD_TEMPO)) return 0; - pos++; - } - } - } - } - return (nOrd < MAX_ORDERS) ? nOrd : MAX_ORDERS-1; -} - - -BOOL CSoundFile::IsValidBackwardJump(UINT nStartOrder, UINT nStartRow, UINT nJumpOrder, UINT nJumpRow) const -//---------------------------------------------------------------------------------------------------------- -{ - while ((nJumpOrder < MAX_PATTERNS) && (Order[nJumpOrder] == 0xFE)) nJumpOrder++; - if ((nStartOrder >= MAX_PATTERNS) || (nJumpOrder >= MAX_PATTERNS)) return FALSE; - // Treat only case with jumps in the same pattern - if (nJumpOrder > nStartOrder) return TRUE; - if ((nJumpOrder < nStartOrder) || (nJumpRow >= PatternSize[nStartOrder]) - || (!Patterns[nStartOrder]) || (nStartRow >= 256) || (nJumpRow >= 256)) return FALSE; - // See if the pattern is being played backward - BYTE row_hist[256]; - memset(row_hist, 0, sizeof(row_hist)); - UINT nRows = PatternSize[nStartOrder], row = nJumpRow; - if (nRows > 256) nRows = 256; - row_hist[nStartRow] = TRUE; - while ((row < 256) && (!row_hist[row])) - { - if (row >= nRows) return TRUE; - row_hist[row] = TRUE; - MODCOMMAND *p = Patterns[nStartOrder] + row * m_nChannels; - row++; - int breakrow = -1, posjump = 0; - for (UINT i=0; icommand == CMD_POSITIONJUMP) - { - if (p->param < nStartOrder) return FALSE; - if (p->param > nStartOrder) return TRUE; - posjump = TRUE; - } else - if (p->command == CMD_PATTERNBREAK) - { - breakrow = p->param; - } - } - if (breakrow >= 0) - { - if (!posjump) return TRUE; - row = breakrow; - } - if (row >= nRows) return TRUE; - } - return FALSE; -} - - -////////////////////////////////////////////////////// -// Note/Period/Frequency functions - -UINT CSoundFile::GetNoteFromPeriod(UINT period) const -//--------------------------------------------------- -{ - if (!period) return 0; - if (m_nType & (MOD_TYPE_MED|MOD_TYPE_MOD|MOD_TYPE_MTM|MOD_TYPE_669|MOD_TYPE_OKT|MOD_TYPE_AMF0)) - { - period >>= 2; - for (UINT i=0; i<6*12; i++) - { - if (period >= ProTrackerPeriodTable[i]) - { - if ((period != ProTrackerPeriodTable[i]) && (i)) - { - UINT p1 = ProTrackerPeriodTable[i-1]; - UINT p2 = ProTrackerPeriodTable[i]; - if (p1 - period < (period - p2)) return i+36; - } - return i+1+36; - } - } - return 6*12+36; - } else - { - for (UINT i=1; i<120; i++) - { - LONG n = GetPeriodFromNote(i, 0, 0); - if ((n > 0) && (n <= (LONG)period)) return i; - } - return 120; - } -} - -// this last param was nC4Speed -UINT CSoundFile::GetLinearPeriodFromNote(UINT note, int nFineTune, UINT) const -{ - if ((!note) || (note > 0xF0)) return 0; - if (m_nType & (MOD_TYPE_IT|MOD_TYPE_S3M|MOD_TYPE_STM|MOD_TYPE_MDL|MOD_TYPE_ULT|MOD_TYPE_WAV - |MOD_TYPE_FAR|MOD_TYPE_DMF|MOD_TYPE_PTM|MOD_TYPE_AMS|MOD_TYPE_DBM|MOD_TYPE_AMF|MOD_TYPE_PSM)) - { - note--; - return (FreqS3MTable[note % 12] << 5) >> (note / 12); - } else - if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) - { - if (note < 13) note = 13; - note -= 13; - LONG l = ((120 - note) << 6) - (nFineTune / 2); - if (l < 1) l = 1; - return (UINT)l; - } else - { - note--; - nFineTune = XM2MODFineTune(nFineTune); - if ((nFineTune) || (note < 36) || (note >= 36+6*12)) - return (ProTrackerTunedPeriods[nFineTune*12 + note % 12] << 5) >> (note / 12); - else - return (ProTrackerPeriodTable[note-36] << 2); - } -} - - -UINT CSoundFile::GetPeriodFromNote(UINT note, int nFineTune, UINT nC4Speed) const -//------------------------------------------------------------------------------- -{ - if ((!note) || (note > 0xF0)) return 0; - if (m_nType & (MOD_TYPE_IT|MOD_TYPE_S3M|MOD_TYPE_STM|MOD_TYPE_MDL|MOD_TYPE_ULT|MOD_TYPE_WAV - |MOD_TYPE_FAR|MOD_TYPE_DMF|MOD_TYPE_PTM|MOD_TYPE_AMS|MOD_TYPE_DBM|MOD_TYPE_AMF|MOD_TYPE_PSM)) - { - note--; - if (m_dwSongFlags & SONG_LINEARSLIDES) - { - return (FreqS3MTable[note % 12] << 5) >> (note / 12); - } else - { - if (!nC4Speed) nC4Speed = 8363; - return _muldiv(8363, (FreqS3MTable[note % 12] << 5), nC4Speed << (note / 12)); - } - } else - if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) - { - if (note < 13) note = 13; - note -= 13; - if (m_dwSongFlags & SONG_LINEARSLIDES) - { - LONG l = ((120 - note) << 6) - (nFineTune / 2); - if (l < 1) l = 1; - return (UINT)l; - } else - { - int finetune = nFineTune; - UINT rnote = (note % 12) << 3; - UINT roct = note / 12; - int rfine = finetune / 16; - int i = rnote + rfine + 8; - if (i < 0) i = 0; - if (i >= 104) i = 103; - UINT per1 = XMPeriodTable[i]; - if ( finetune < 0 ) - { - rfine--; - finetune = -finetune; - } else rfine++; - i = rnote+rfine+8; - if (i < 0) i = 0; - if (i >= 104) i = 103; - UINT per2 = XMPeriodTable[i]; - rfine = finetune & 0x0F; - per1 *= 16-rfine; - per2 *= rfine; - return ((per1 + per2) << 1) >> roct; - } - } else - { - note--; - nFineTune = XM2MODFineTune(nFineTune); - if ((nFineTune) || (note < 36) || (note >= 36+6*12)) - return (ProTrackerTunedPeriods[nFineTune*12 + note % 12] << 5) >> (note / 12); - else - return (ProTrackerPeriodTable[note-36] << 2); - } -} - - -UINT CSoundFile::GetFreqFromPeriod(UINT period, UINT nC4Speed, int nPeriodFrac) const -//----------------------------------------------------------------------------------- -{ - if (!period) return 0; - if (m_nType & (MOD_TYPE_MED|MOD_TYPE_MOD|MOD_TYPE_MTM|MOD_TYPE_669|MOD_TYPE_OKT|MOD_TYPE_AMF0)) - { - return (3546895L*4) / period; - } else - if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) - { - if (m_dwSongFlags & SONG_LINEARSLIDES) - return XMLinearTable[period % 768] >> (period / 768); - else - return 8363 * 1712L / period; - } else - { - if (m_dwSongFlags & SONG_LINEARSLIDES) - { - if (!nC4Speed) nC4Speed = 8363; - return _muldiv(nC4Speed, 1712L << 8, (period << 8)+nPeriodFrac); - } else - { - return _muldiv(8363, 1712L << 8, (period << 8)+nPeriodFrac); - } - } -} - - diff -Nru audacious-plugins-2.4.4/src/modplug/sndmix.cxx audacious-plugins-3.2/src/modplug/sndmix.cxx --- audacious-plugins-2.4.4/src/modplug/sndmix.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/sndmix.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,1246 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque -*/ - -#include "stdafx.h" -#include "sndfile.h" - - -// Volume ramp length, in 1/10 ms -#define VOLUMERAMPLEN 146 // 1.46ms = 64 samples at 44.1kHz - -// VU-Meter -#define VUMETER_DECAY 16 - -// SNDMIX: These are global flags for playback control -LONG CSoundFile::m_nStreamVolume = 0x8000; -UINT CSoundFile::m_nMaxMixChannels = 256; -// Mixing Configuration (SetWaveConfig) -DWORD CSoundFile::gdwSysInfo = 0; -DWORD CSoundFile::gnChannels = 1; -DWORD CSoundFile::gdwSoundSetup = SNDMIX_NOBACKWARDJUMPS; // Do not allow song to loop infinitely -DWORD CSoundFile::gdwMixingFreq = 44100; -DWORD CSoundFile::gnBitsPerSample = 16; -// Mixing data initialized in -UINT CSoundFile::gnAGC = AGC_UNITY; -UINT CSoundFile::gnVolumeRampSamples = 64; -UINT CSoundFile::gnVULeft = 0; -UINT CSoundFile::gnVURight = 0; -UINT CSoundFile::gnCPUUsage = 0; -LPSNDMIXHOOKPROC CSoundFile::gpSndMixHook = NULL; -PMIXPLUGINCREATEPROC CSoundFile::gpMixPluginCreateProc = NULL; -LONG gnDryROfsVol = 0; -LONG gnDryLOfsVol = 0; -LONG gnRvbROfsVol = 0; -LONG gnRvbLOfsVol = 0; -int gbInitPlugins = 0; - -typedef DWORD (MPPASMCALL * LPCONVERTPROC)(LPVOID, int *, DWORD, LPLONG, LPLONG); - -extern DWORD MPPASMCALL Convert32To8(LPVOID lpBuffer, int *, DWORD nSamples, LONG mins[2], LONG maxs[2]); -extern DWORD MPPASMCALL Convert32To16(LPVOID lpBuffer, int *, DWORD nSamples, LONG mins[2], LONG maxs[2]); -extern DWORD MPPASMCALL Convert32To24(LPVOID lpBuffer, int *, DWORD nSamples, LONG mins[2], LONG maxs[2]); -extern DWORD MPPASMCALL Convert32To32(LPVOID lpBuffer, int *, DWORD nSamples, LONG mins[2], LONG maxs[2]); -extern UINT MPPASMCALL AGC(int *pBuffer, UINT nSamples, UINT nAGC); -extern VOID MPPASMCALL Dither(int *pBuffer, UINT nSamples, UINT nBits); -extern VOID MPPASMCALL InterleaveFrontRear(int *pFrontBuf, int *pRearBuf, DWORD nSamples); -extern VOID MPPASMCALL StereoFill(int *pBuffer, UINT nSamples, LPLONG lpROfs, LPLONG lpLOfs); -extern VOID MPPASMCALL MonoFromStereo(int *pMixBuf, UINT nSamples); - -extern short int ModSinusTable[64]; -extern short int ModRampDownTable[64]; -extern short int ModSquareTable[64]; -extern short int ModRandomTable[64]; -extern DWORD LinearSlideUpTable[256]; -extern DWORD LinearSlideDownTable[256]; -extern DWORD FineLinearSlideUpTable[16]; -extern DWORD FineLinearSlideDownTable[16]; -extern signed char ft2VibratoTable[256]; // -64 .. +64 -extern int MixSoundBuffer[MIXBUFFERSIZE*4]; -extern int MixRearBuffer[MIXBUFFERSIZE*2]; -UINT gnReverbSend; - - -// Log tables for pre-amp -// We don't want the tracker to get too loud -const UINT PreAmpTable[16] = -{ - 0x60, 0x60, 0x60, 0x70, // 0-7 - 0x80, 0x88, 0x90, 0x98, // 8-15 - 0xA0, 0xA4, 0xA8, 0xB0, // 16-23 - 0xB4, 0xB8, 0xBC, 0xC0, // 24-31 -}; - -const UINT PreAmpAGCTable[16] = -{ - 0x60, 0x60, 0x60, 0x60, - 0x68, 0x70, 0x78, 0x80, - 0x84, 0x88, 0x8C, 0x90, - 0x94, 0x98, 0x9C, 0xA0, -}; - - -BOOL CSoundFile::InitPlayer(BOOL bReset) -//-------------------------------------- -{ - if (m_nMaxMixChannels > MAX_CHANNELS) m_nMaxMixChannels = MAX_CHANNELS; - if (gdwMixingFreq < 4000) gdwMixingFreq = 4000; - if (gdwMixingFreq > MAX_SAMPLE_RATE) gdwMixingFreq = MAX_SAMPLE_RATE; - gnVolumeRampSamples = (gdwMixingFreq * VOLUMERAMPLEN) / 100000; - if (gnVolumeRampSamples < 8) gnVolumeRampSamples = 8; - gnDryROfsVol = gnDryLOfsVol = 0; - gnRvbROfsVol = gnRvbLOfsVol = 0; - if (bReset) - { - gnVULeft = 0; - gnVURight = 0; - gnCPUUsage = 0; - } - gbInitPlugins = (bReset) ? 3 : 1; - InitializeDSP(bReset); - InitializeEQ(bReset); - return TRUE; -} - - -BOOL CSoundFile::FadeSong(UINT msec) -//---------------------------------- -{ - LONG nsamples = _muldiv(msec, gdwMixingFreq, 1000); - if (nsamples <= 0) return FALSE; - if (nsamples > 0x100000) nsamples = 0x100000; - m_nBufferCount = nsamples; - LONG nRampLength = m_nBufferCount; - // Ramp everything down - for (UINT noff=0; noff < m_nMixChannels; noff++) - { - MODCHANNEL *pramp = &Chn[ChnMix[noff]]; - if (!pramp) continue; - pramp->nNewLeftVol = pramp->nNewRightVol = 0; - pramp->nRightRamp = (-pramp->nRightVol << VOLUMERAMPPRECISION) / nRampLength; - pramp->nLeftRamp = (-pramp->nLeftVol << VOLUMERAMPPRECISION) / nRampLength; - pramp->nRampRightVol = pramp->nRightVol << VOLUMERAMPPRECISION; - pramp->nRampLeftVol = pramp->nLeftVol << VOLUMERAMPPRECISION; - pramp->nRampLength = nRampLength; - pramp->dwFlags |= CHN_VOLUMERAMP; - } - m_dwSongFlags |= SONG_FADINGSONG; - return TRUE; -} - - -BOOL CSoundFile::GlobalFadeSong(UINT msec) -//---------------------------------------- -{ - if (m_dwSongFlags & SONG_GLOBALFADE) return FALSE; - m_nGlobalFadeMaxSamples = _muldiv(msec, gdwMixingFreq, 1000); - m_nGlobalFadeSamples = m_nGlobalFadeMaxSamples; - m_dwSongFlags |= SONG_GLOBALFADE; - return TRUE; -} - - -UINT CSoundFile::Read(LPVOID lpDestBuffer, UINT cbBuffer) -//------------------------------------------------------- -{ - LPBYTE lpBuffer = (LPBYTE)lpDestBuffer; - LPCONVERTPROC pCvt = Convert32To8; - LONG vu_min[2]; - LONG vu_max[2]; - UINT lRead, lMax, lSampleSize, lCount, lSampleCount, nStat=0; -#if 0 - UINT nMaxPlugins; -#endif - - vu_min[0] = vu_min[1] = 0x7FFFFFFF; - vu_max[0] = vu_max[1] = -0x7FFFFFFF; - -#if 0 - { - nMaxPlugins = MAX_MIXPLUGINS; - while ((nMaxPlugins > 0) && (!m_MixPlugins[nMaxPlugins-1].pMixPlugin)) nMaxPlugins--; - } -#endif - m_nMixStat = 0; - lSampleSize = gnChannels; - if (gnBitsPerSample == 16) { lSampleSize *= 2; pCvt = Convert32To16; } - else if (gnBitsPerSample == 24) { lSampleSize *= 3; pCvt = Convert32To24; } - else if (gnBitsPerSample == 32) { lSampleSize *= 4; pCvt = Convert32To32; } - lMax = cbBuffer / lSampleSize; - if ((!lMax) || (!lpBuffer) || (!m_nChannels)) return 0; - lRead = lMax; - if (m_dwSongFlags & SONG_ENDREACHED) goto MixDone; - while (lRead > 0) - { - // Update Channel Data - UINT lTotalSampleCount; - if (!m_nBufferCount) - { - if (!(gdwSoundSetup & SNDMIX_DIRECTTODISK)) - m_nBufferCount = lRead; - if (!ReadNote()) { - m_dwSongFlags |= SONG_ENDREACHED; - if (lRead == lMax) goto MixDone; - if (!(gdwSoundSetup & SNDMIX_DIRECTTODISK)) - m_nBufferCount = lRead; - } - if (!m_nBufferCount) goto MixDone; - } - lCount = m_nBufferCount; - if (lCount > MIXBUFFERSIZE) lCount = MIXBUFFERSIZE; - if (lCount > lRead) lCount = lRead; - if (!lCount) break; - lSampleCount = lCount; -#ifndef MODPLUG_NO_REVERB - gnReverbSend = 0; -#endif - - // Resetting sound buffer - StereoFill(MixSoundBuffer, lSampleCount, &gnDryROfsVol, &gnDryLOfsVol); - if (gnChannels >= 2) - { - lSampleCount *= 2; - m_nMixStat += CreateStereoMix(lCount); -#if 0 - if (nMaxPlugins) ProcessPlugins(lCount); -#endif - ProcessStereoDSP(lCount); - } else - { - m_nMixStat += CreateStereoMix(lCount); -#if 0 - if (nMaxPlugins) ProcessPlugins(lCount); -#endif - MonoFromStereo(MixSoundBuffer, lCount); - ProcessMonoDSP(lCount); - } - - if (gdwSoundSetup & SNDMIX_EQ) - { - if (gnChannels >= 2) - EQStereo(MixSoundBuffer, lCount); - else - EQMono(MixSoundBuffer, lCount); - } - - - nStat++; -#ifndef NO_AGC - // Automatic Gain Control - if (gdwSoundSetup & SNDMIX_AGC) ProcessAGC(lSampleCount); -#endif - lTotalSampleCount = lSampleCount; - // Multichannel - if (gnChannels > 2) - { - InterleaveFrontRear(MixSoundBuffer, MixRearBuffer, lSampleCount); - lTotalSampleCount *= 2; - } - // Hook Function - if (gpSndMixHook) - { - gpSndMixHook(MixSoundBuffer, lTotalSampleCount, gnChannels); - } - // Perform clipping + VU-Meter - lpBuffer += pCvt(lpBuffer, MixSoundBuffer, lTotalSampleCount, vu_min, vu_max); - // Buffer ready - lRead -= lCount; - m_nBufferCount -= lCount; - } -MixDone: - if (lRead) memset(lpBuffer, (gnBitsPerSample == 8) ? 0x80 : 0, lRead * lSampleSize); - // VU-Meter - vu_min[0] >>= 18; - vu_min[1] >>= 18; - vu_max[0] >>= 18; - vu_max[1] >>= 18; - if (vu_max[0] < vu_min[0]) vu_max[0] = vu_min[0]; - if (vu_max[1] < vu_min[1]) vu_max[1] = vu_min[1]; - if ((gnVULeft = (UINT)(vu_max[0] - vu_min[0])) > 0xFF) - gnVULeft = 0xFF; - if ((gnVURight = (UINT)(vu_max[1] - vu_min[1])) > 0xFF) - gnVURight = 0xFF; - if (nStat) { m_nMixStat += nStat-1; m_nMixStat /= nStat; } - return lMax - lRead; -} - - - -///////////////////////////////////////////////////////////////////////////// -// Handles navigation/effects - -BOOL CSoundFile::ProcessRow() -//--------------------------- -{ - if (++m_nTickCount >= m_nMusicSpeed * (m_nPatternDelay+1) + m_nFrameDelay) - { - m_nPatternDelay = 0; - m_nFrameDelay = 0; - m_nTickCount = 0; - m_nRow = m_nNextRow; - // Reset Pattern Loop Effect - if (m_nCurrentPattern != m_nNextPattern) m_nCurrentPattern = m_nNextPattern; - // Check if pattern is valid - if (!(m_dwSongFlags & SONG_PATTERNLOOP)) - { - m_nPattern = (m_nCurrentPattern < MAX_ORDERS) ? Order[m_nCurrentPattern] : 0xFF; - if ((m_nPattern < MAX_PATTERNS) && (!Patterns[m_nPattern])) m_nPattern = 0xFE; - while (m_nPattern >= MAX_PATTERNS) - { - // End of song ? - if ((m_nPattern == 0xFF) || (m_nCurrentPattern >= MAX_ORDERS)) - { - //if (!m_nRepeatCount) - return FALSE; //never repeat entire song - if (!m_nRestartPos) - { - m_nMusicSpeed = m_nDefaultSpeed; - m_nMusicTempo = m_nDefaultTempo; - m_nGlobalVolume = m_nDefaultGlobalVolume; - for (UINT i=0; i 0) m_nRepeatCount--; - m_nCurrentPattern = m_nRestartPos; - m_nRow = 0; - if ((Order[m_nCurrentPattern] >= MAX_PATTERNS) || (!Patterns[Order[m_nCurrentPattern]])) return FALSE; - } else - { - m_nCurrentPattern++; - } - m_nPattern = (m_nCurrentPattern < MAX_ORDERS) ? Order[m_nCurrentPattern] : 0xFF; - if ((m_nPattern < MAX_PATTERNS) && (!Patterns[m_nPattern])) m_nPattern = 0xFE; - } - m_nNextPattern = m_nCurrentPattern; - } - // Weird stuff? - if ((m_nPattern >= MAX_PATTERNS) || (!Patterns[m_nPattern])) return FALSE; - // Should never happen - if (m_nRow >= PatternSize[m_nPattern]) m_nRow = 0; - m_nNextRow = m_nRow + 1; - if (m_nNextRow >= PatternSize[m_nPattern]) - { - if (!(m_dwSongFlags & SONG_PATTERNLOOP)) m_nNextPattern = m_nCurrentPattern + 1; - m_nNextRow = 0; - } - // Reset channel values - MODCHANNEL *pChn = Chn; - MODCOMMAND *m = Patterns[m_nPattern] + m_nRow * m_nChannels; - for (UINT nChn=0; nChnnRowNote = m->note; - pChn->nRowInstr = m->instr; - pChn->nRowVolCmd = m->volcmd; - pChn->nRowVolume = m->vol; - pChn->nRowCommand = m->command; - pChn->nRowParam = m->param; - - pChn->nLeftVol = pChn->nNewLeftVol; - pChn->nRightVol = pChn->nNewRightVol; - pChn->dwFlags &= ~(CHN_PORTAMENTO | CHN_VIBRATO | CHN_TREMOLO | CHN_PANBRELLO); - pChn->nCommand = 0; - } - } - // Should we process tick0 effects? - if (!m_nMusicSpeed) m_nMusicSpeed = 1; - m_dwSongFlags |= SONG_FIRSTTICK; - if (m_nTickCount) - { - m_dwSongFlags &= ~SONG_FIRSTTICK; - if ((!(m_nType & MOD_TYPE_XM)) && (m_nTickCount < m_nMusicSpeed * (1 + m_nPatternDelay))) - { - if (!(m_nTickCount % m_nMusicSpeed)) m_dwSongFlags |= SONG_FIRSTTICK; - } - - } - // Update Effects - return ProcessEffects(); -} - - -//////////////////////////////////////////////////////////////////////////////////////////// -// Handles envelopes & mixer setup - -BOOL CSoundFile::ReadNote() -//------------------------- -{ - // Checking end of row ? - if (m_dwSongFlags & SONG_PAUSED) - { - /*m_nTickCount = 0;*/ - if (!m_nMusicSpeed) m_nMusicSpeed = 6; - if (!m_nMusicTempo) m_nMusicTempo = 125; - m_nPatternDelay = 0; - m_nFrameDelay = 0; - - m_dwSongFlags |= SONG_FIRSTTICK; - if (m_nTickCount) { - m_dwSongFlags &= ~SONG_FIRSTTICK; - } - - ProcessEffects(); - m_nTickCount++; - if (m_nTickCount >= m_nMusicSpeed) { - m_nTickCount = 0; - } - if (!ProcessEffects()) return FALSE; - } else - { - if (!ProcessRow()) return FALSE; - } - - { /* handle realtime closures */ - MODCHANNEL *pChn = Chn; - for (UINT nChn=0; nChnnRealtime && pChn->nRowNote && (pChn->nTickStart % m_nMusicSpeed) == (m_nTickCount % m_nMusicSpeed)) { - pChn->nRealtime = 0; - pChn->nRowNote = 0; - pChn->nRowInstr = 0; - //pChn->nMaster - pChn->nRowVolCmd = 0; - pChn->nRowVolume = 0; - pChn->nRowCommand = 0; - pChn->nRowParam = 0; - pChn->nTickStart = 0; - } - } - }; - - //////////////////////////////////////////////////////////////////////////////////// - m_nTotalCount++; - if (!m_nMusicTempo) return FALSE; - m_nBufferCount = (gdwMixingFreq * 5 * m_nTempoFactor) / (m_nMusicTempo << 8); -#ifdef MODPLUG_TRACKER - if (m_dwSongFlags & SONG_PAUSED) - { - m_nBufferCount = gdwMixingFreq / 64; // 1/64 seconds - } -#endif - - // Master Volume + Pre-Amplification / Attenuation setup - DWORD nMasterVol; - { - int nchn32 = 0; - MODCHANNEL *pChn = Chn; - for (UINT nChn=0; nChn 31) nchn32 = 31; - - int realmastervol = m_nMasterVolume; - if (realmastervol > 0x80) - { - realmastervol = 0x80 + ((realmastervol - 0x80) * (nchn32+4)) / 16; - } - - DWORD mastervol = (realmastervol * (m_nSongPreAmp)) >> 6; -// if (mastervol > 0x200) mastervol = 0x200; - if ((m_dwSongFlags & SONG_GLOBALFADE) && (m_nGlobalFadeMaxSamples)) - { - mastervol = _muldiv(mastervol, m_nGlobalFadeSamples, m_nGlobalFadeMaxSamples); - } - - UINT attenuation = (gdwSoundSetup & SNDMIX_AGC) ? PreAmpAGCTable[nchn32>>1] : PreAmpTable[nchn32>>1]; - if (attenuation < 1) attenuation = 1; - - nMasterVol = (mastervol << 7) / attenuation; - if (nMasterVol > 0x180) nMasterVol = 0x180; - } - //////////////////////////////////////////////////////////////////////////////////// - // Update channels data - if (CSoundFile::gdwSoundSetup & SNDMIX_NOMIXING) return TRUE; - m_nMixChannels = 0; - MODCHANNEL *pChn = Chn; - for (UINT nChn=0; nChndwFlags & CHN_NOTEFADE) && (!(pChn->nFadeOutVol|pChn->nRightVol|pChn->nLeftVol))) - { - pChn->nLength = 0; - pChn->nROfs = pChn->nLOfs = 0; - } - // Check for unused channel - if ((nChn >= m_nChannels) && (!pChn->nLength)) - { - pChn->nLeftVU = pChn->nRightVU = 0; - continue; - } - // Reset channel data - pChn->nInc = 0; - pChn->nRealVolume = 0; - pChn->nRealPan = pChn->nPan + pChn->nPanSwing; - if (pChn->nRealPan < 0) pChn->nRealPan = 0; - if (pChn->nRealPan > 256) pChn->nRealPan = 256; - pChn->nRampLength = 0; - // Calc Frequency - if ((pChn->nPeriod) && (pChn->nLength)) - { - int vol = pChn->nVolume + pChn->nVolSwing; - - if (vol < 0) vol = 0; - if (vol > 256) vol = 256; - // Tremolo - if (pChn->dwFlags & CHN_TREMOLO) - { - UINT trempos = pChn->nTremoloPos & 0x3F; - if (vol > 0) - { - int tremattn = (m_nType & MOD_TYPE_XM) ? 5 : 6; - switch (pChn->nTremoloType & 0x03) - { - case 1: - vol += (ModRampDownTable[trempos] * (int)pChn->nTremoloDepth) >> tremattn; - break; - case 2: - vol += (ModSquareTable[trempos] * (int)pChn->nTremoloDepth) >> tremattn; - break; - case 3: - vol += (ModRandomTable[trempos] * (int)pChn->nTremoloDepth) >> tremattn; - break; - default: - vol += (ModSinusTable[trempos] * (int)pChn->nTremoloDepth) >> tremattn; - } - } - if ((m_nTickCount) || ((m_nType & (MOD_TYPE_STM|MOD_TYPE_S3M|MOD_TYPE_IT)) && (!(m_dwSongFlags & SONG_ITOLDEFFECTS)))) - { - pChn->nTremoloPos = (trempos + pChn->nTremoloSpeed) & 0x3F; - } - } - // Tremor - if (pChn->nCommand == CMD_TREMOR) - { - UINT n = (pChn->nTremorParam >> 4) + (pChn->nTremorParam & 0x0F); - UINT ontime = pChn->nTremorParam >> 4; - if ((!(m_nType & MOD_TYPE_IT)) || (m_dwSongFlags & SONG_ITOLDEFFECTS)) { n += 2; ontime++; } - UINT tremcount = (UINT)pChn->nTremorCount; - if (tremcount >= n) tremcount = 0; - if ((m_nTickCount) || (m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT))) - { - if (tremcount >= ontime) vol = 0; - pChn->nTremorCount = (BYTE)(tremcount + 1); - } - pChn->dwFlags |= CHN_FASTVOLRAMP; - } - // Clip volume - if (vol < 0) vol = 0; - if (vol > 0x100) vol = 0x100; - vol <<= 6; - // Process Envelopes - if ((m_dwSongFlags & SONG_INSTRUMENTMODE) && pChn->pHeader) - { - INSTRUMENTHEADER *penv = pChn->pHeader; - // Volume Envelope - if ((pChn->dwFlags & CHN_VOLENV) && (penv->VolEnv.nNodes)) - { - int envpos = pChn->nVolEnvPosition; - UINT pt = penv->VolEnv.nNodes - 1; - for (UINT i=0; i<(UINT)(penv->VolEnv.nNodes-1); i++) - { - if (envpos <= penv->VolEnv.Ticks[i]) - { - pt = i; - break; - } - } - int x2 = penv->VolEnv.Ticks[pt]; - int x1, envvol; - if (envpos >= x2) - { - envvol = penv->VolEnv.Values[pt] << 2; - x1 = x2; - } else - if (pt) - { - envvol = penv->VolEnv.Values[pt-1] << 2; - x1 = penv->VolEnv.Ticks[pt-1]; - } else - { - envvol = 0; - x1 = 0; - } - if (envpos > x2) envpos = x2; - if ((x2 > x1) && (envpos > x1)) - { - envvol += ((envpos - x1) * (((int)penv->VolEnv.Values[pt]<<2) - envvol)) / (x2 - x1); - } - if (envvol < 0) envvol = 0; - if (envvol > 256) envvol = 256; - vol = (vol * envvol) >> 8; - } - // Panning Envelope - if ((pChn->dwFlags & CHN_PANENV) && (penv->PanEnv.nNodes)) - { - int envpos = pChn->nPanEnvPosition; - UINT pt = penv->PanEnv.nNodes - 1; - for (UINT i=0; i<(UINT)(penv->PanEnv.nNodes-1); i++) - { - if (envpos <= penv->PanEnv.Ticks[i]) - { - pt = i; - break; - } - } - int x2 = penv->PanEnv.Ticks[pt], y2 = penv->PanEnv.Values[pt]; - int x1, envpan; - if (envpos >= x2) - { - envpan = y2; - x1 = x2; - } else - if (pt) - { - envpan = penv->PanEnv.Values[pt-1]; - x1 = penv->PanEnv.Ticks[pt-1]; - } else - { - envpan = 128; - x1 = 0; - } - if ((x2 > x1) && (envpos > x1)) - { - envpan += ((envpos - x1) * (y2 - envpan)) / (x2 - x1); - } - if (envpan < 0) envpan = 0; - if (envpan > 64) envpan = 64; - int pan = pChn->nPan; - if (pan >= 128) - { - pan += ((envpan - 32) * (256 - pan)) / 32; - } else - { - pan += ((envpan - 32) * (pan)) / 32; - } - if (pan < 0) pan = 0; - if (pan > 256) pan = 256; - pChn->nRealPan = pan; - } - // FadeOut volume - if (pChn->dwFlags & CHN_NOTEFADE) - { - UINT fadeout = penv->nFadeOut; - if (fadeout) - { - pChn->nFadeOutVol -= fadeout << 1; - if (pChn->nFadeOutVol <= 0) pChn->nFadeOutVol = 0; - vol = (vol * pChn->nFadeOutVol) >> 16; - } else - if (!pChn->nFadeOutVol) - { - vol = 0; - } - } - // Pitch/Pan separation - if ((penv->nPPS) && (pChn->nRealPan) && (pChn->nNote)) - { - int pandelta = (int)pChn->nRealPan + (int)((int)(pChn->nNote - penv->nPPC - 1) * (int)penv->nPPS) / (int)8; - if (pandelta < 0) pandelta = 0; - if (pandelta > 256) pandelta = 256; - pChn->nRealPan = pandelta; - } - } else - { - // No Envelope: key off => note cut - if (pChn->dwFlags & CHN_NOTEFADE) // 1.41-: CHN_KEYOFF|CHN_NOTEFADE - { - pChn->nFadeOutVol = 0; - vol = 0; - } - } - // vol is 14-bits - if (vol) - { - // IMPORTANT: pChn->nRealVolume is 14 bits !!! - // -> _muldiv( 14+8, 6+6, 18); => RealVolume: 14-bit result (22+12-20) - pChn->nRealVolume = _muldiv(vol * m_nGlobalVolume, pChn->nGlobalVol * pChn->nInsVol, 1 << 20); - } - if (pChn->nPeriod < m_nMinPeriod) pChn->nPeriod = m_nMinPeriod; - int period = pChn->nPeriod; - if ((pChn->dwFlags & (CHN_GLISSANDO|CHN_PORTAMENTO)) == (CHN_GLISSANDO|CHN_PORTAMENTO)) - { - period = GetPeriodFromNote(GetNoteFromPeriod(period), pChn->nFineTune, pChn->nC4Speed); - } - - // Arpeggio ? - if (pChn->nCommand == CMD_ARPEGGIO) - { - switch(m_nTickCount % 3) - { -#if 0 - case 1: period = GetPeriodFromNote(pChn->nNote + (pChn->nArpeggio >> 4), pChn->nFineTune, pChn->nC4Speed); break; - case 2: period = GetPeriodFromNote(pChn->nNote + (pChn->nArpeggio & 0x0F), pChn->nFineTune, pChn->nC4Speed); break; -#else - case 1: period = GetLinearPeriodFromNote(GetNoteFromPeriod(period) + (pChn->nArpeggio >> 4), pChn->nFineTune, pChn->nC4Speed); break; - case 2: period = GetLinearPeriodFromNote(GetNoteFromPeriod(period) + (pChn->nArpeggio & 0x0F), pChn->nFineTune, pChn->nC4Speed); break; -#endif - } - } - - if (m_dwSongFlags & SONG_AMIGALIMITS) - { - if (period < 113*4) period = 113*4; - if (period > 856*4) period = 856*4; - } - - // Pitch/Filter Envelope - int envpitch = 0; - if ((m_dwSongFlags & SONG_INSTRUMENTMODE) && (pChn->pHeader) - && (pChn->dwFlags & CHN_PITCHENV) && (pChn->pHeader->PitchEnv.nNodes)) - { - INSTRUMENTHEADER *penv = pChn->pHeader; - int envpos = pChn->nPitchEnvPosition; - UINT pt = penv->PitchEnv.nNodes - 1; - for (UINT i=0; i<(UINT)(penv->PitchEnv.nNodes-1); i++) - { - if (envpos <= penv->PitchEnv.Ticks[i]) - { - pt = i; - break; - } - } - int x2 = penv->PitchEnv.Ticks[pt]; - int x1; - if (envpos >= x2) - { - envpitch = (((int)penv->PitchEnv.Values[pt]) - 32) * 8; - x1 = x2; - } else - if (pt) - { - envpitch = (((int)penv->PitchEnv.Values[pt-1]) - 32) * 8; - x1 = penv->PitchEnv.Ticks[pt-1]; - } else - { - envpitch = 0; - x1 = 0; - } - if (envpos > x2) envpos = x2; - if ((x2 > x1) && (envpos > x1)) - { - int envpitchdest = (((int)penv->PitchEnv.Values[pt]) - 32) * 8; - envpitch += ((envpos - x1) * (envpitchdest - envpitch)) / (x2 - x1); - } - if (envpitch < -256) envpitch = -256; - if (envpitch > 256) envpitch = 256; - // Pitch Envelope - if (!(penv->dwFlags & ENV_FILTER)) - { - int l = envpitch; - if (l < 0) - { - l = -l; - if (l > 255) l = 255; - period = _muldiv(period, LinearSlideUpTable[l], 0x10000); - } else - { - if (l > 255) l = 255; - period = _muldiv(period, LinearSlideDownTable[l], 0x10000); - } - } - } - - // Vibrato - if (pChn->dwFlags & CHN_VIBRATO) - { - UINT vibpos = pChn->nVibratoPos; - LONG vdelta; - switch (pChn->nVibratoType & 0x03) - { - case 1: - vdelta = ModRampDownTable[vibpos]; - break; - case 2: - vdelta = ModSquareTable[vibpos]; - break; - case 3: - vdelta = ModRandomTable[vibpos]; - break; - default: - vdelta = ModSinusTable[vibpos]; - } - UINT vdepth = ((m_nType != MOD_TYPE_IT) || (m_dwSongFlags & SONG_ITOLDEFFECTS)) ? 6 : 7; - vdelta = (vdelta * (int)pChn->nVibratoDepth) >> vdepth; - if ((m_dwSongFlags & SONG_LINEARSLIDES) && (m_nType & MOD_TYPE_IT)) - { - LONG l = vdelta; - if (l < 0) - { - l = -l; - vdelta = _muldiv(period, LinearSlideDownTable[l >> 2], 0x10000) - period; - if (l & 0x03) vdelta += _muldiv(period, FineLinearSlideDownTable[l & 0x03], 0x10000) - period; - - } else - { - vdelta = _muldiv(period, LinearSlideUpTable[l >> 2], 0x10000) - period; - if (l & 0x03) vdelta += _muldiv(period, FineLinearSlideUpTable[l & 0x03], 0x10000) - period; - - } - } - period += vdelta; - if ((m_nTickCount) || ((m_nType & MOD_TYPE_IT) && (!(m_dwSongFlags & SONG_ITOLDEFFECTS)))) - { - pChn->nVibratoPos = (vibpos + pChn->nVibratoSpeed) & 0x3F; - } - } - // Panbrello - if (pChn->dwFlags & CHN_PANBRELLO) - { - UINT panpos = ((pChn->nPanbrelloPos+0x10) >> 2) & 0x3F; - LONG pdelta; - switch (pChn->nPanbrelloType & 0x03) - { - case 1: - pdelta = ModRampDownTable[panpos]; - break; - case 2: - pdelta = ModSquareTable[panpos]; - break; - case 3: - pdelta = ModRandomTable[panpos]; - break; - default: - pdelta = ModSinusTable[panpos]; - } - pChn->nPanbrelloPos += pChn->nPanbrelloSpeed; - pdelta = ((pdelta * (int)pChn->nPanbrelloDepth) + 2) >> 3; - pdelta += pChn->nRealPan; - if (pdelta < 0) pdelta = 0; - if (pdelta > 256) pdelta = 256; - pChn->nRealPan = pdelta; - } - int nPeriodFrac = 0; - // Instrument Auto-Vibrato - if ((pChn->pInstrument) && (pChn->pInstrument->nVibDepth)) - { - MODINSTRUMENT *pins = pChn->pInstrument; - /* this isn't correct, but its better... */ - - if (pins->nVibSweep == 0) { - pChn->nAutoVibDepth = pins->nVibDepth << 8; - } else { - pChn->nAutoVibDepth += pins->nVibSweep; - if ((pChn->nAutoVibDepth >> 8) > (int)pins->nVibDepth) - pChn->nAutoVibDepth = pins->nVibDepth << 8; - } -#if 0 - if (pins->nVibSweep == 0) - { - pChn->nAutoVibDepth = pins->nVibDepth << 8; - } else - { - if (m_nType & MOD_TYPE_IT) - { - pChn->nAutoVibDepth += pins->nVibSweep; - } else - if (!(pChn->dwFlags & CHN_KEYOFF)) - { - pChn->nAutoVibDepth += (pins->nVibDepth << 8) / pins->nVibSweep; - } - if ((pChn->nAutoVibDepth >> 8) > pins->nVibDepth) - pChn->nAutoVibDepth = pins->nVibDepth << 8; - } -#endif - pChn->nAutoVibPos += ((int)pins->nVibRate); - int val; - switch(pins->nVibType) - { - case 4: // Random - val = ModRandomTable[pChn->nAutoVibPos & 0x3F]; - pChn->nAutoVibPos++; - break; - case 3: // Ramp Down - val = ((0x40 - (pChn->nAutoVibPos >> 1)) & 0x7F) - 0x40; - break; - case 2: // Ramp Up - val = ((0x40 + (pChn->nAutoVibPos >> 1)) & 0x7f) - 0x40; - break; - case 1: // Square - val = (pChn->nAutoVibPos & 128) ? +64 : -64; - break; - default: // Sine - val = ft2VibratoTable[pChn->nAutoVibPos & 255]; - } - int n = ((val * pChn->nAutoVibDepth) >> 8); - // is this right? -mrsb - if (!(m_dwSongFlags & SONG_ITOLDEFFECTS)) - n >>= 1; - - if (m_nType & MOD_TYPE_IT) - { - int df1, df2; - if (n < 0) - { - n = -n; - UINT n1 = n >> 8; - df1 = LinearSlideUpTable[n1]; - df2 = LinearSlideUpTable[n1+1]; - } else - { - UINT n1 = n >> 8; - df1 = LinearSlideDownTable[n1]; - df2 = LinearSlideDownTable[n1+1]; - } - n >>= 2; - period = _muldiv(period, df1 + ((df2-df1)*(n&0x3F)>>6), 256); - nPeriodFrac = period & 0xFF; - period >>= 8; - } else - { - period += (n >> 6); - } - } - // Final Period - if (period <= m_nMinPeriod) - { - if (m_nType & MOD_TYPE_S3M) pChn->nLength = 0; - period = m_nMinPeriod; - } - if (period > m_nMaxPeriod) - { - if ((m_nType & MOD_TYPE_IT) || (period >= 0x100000)) - { - pChn->nFadeOutVol = 0; - pChn->dwFlags |= CHN_NOTEFADE; - pChn->nRealVolume = 0; - } - period = m_nMaxPeriod; - nPeriodFrac = 0; - } - UINT freq = GetFreqFromPeriod(period, pChn->nC4Speed, nPeriodFrac); - - // Filter Envelope: controls cutoff frequency - if (pChn && pChn->pHeader && pChn->pHeader->dwFlags & ENV_FILTER) - { -#ifndef NO_FILTER - SetupChannelFilter(pChn, (pChn->dwFlags & CHN_FILTER) ? FALSE : TRUE, envpitch); -#endif // NO_FILTER - } - -#if 0 - if ((m_nType & MOD_TYPE_IT) && (freq < 256)) - { - pChn->nFadeOutVol = 0; - pChn->dwFlags |= CHN_NOTEFADE; - pChn->nRealVolume = 0; - } -#endif - pChn->sample_freq = freq; - - UINT ninc = _muldiv(freq, 0x10000, gdwMixingFreq); - if ((ninc >= 0xFFB0) && (ninc <= 0x10090)) ninc = 0x10000; - if (m_nFreqFactor != 128) ninc = (ninc * m_nFreqFactor) >> 7; - if (ninc > 0xFF0000) ninc = 0xFF0000; - pChn->nInc = (ninc+1) & ~3; - } - - // Increment envelope position - if ((m_dwSongFlags & SONG_INSTRUMENTMODE) && pChn->pHeader) - { - INSTRUMENTHEADER *penv = pChn->pHeader; - // Volume Envelope - if (pChn->dwFlags & CHN_VOLENV) - { - // Increase position - pChn->nVolEnvPosition++; - // Volume Loop ? - if (penv->dwFlags & ENV_VOLLOOP) - { - int volloopend = penv->VolEnv.Ticks[penv->VolEnv.nLoopEnd]; - if (m_nType != MOD_TYPE_XM) volloopend++; - if (pChn->nVolEnvPosition == volloopend) - { - pChn->nVolEnvPosition = penv->VolEnv.Ticks[penv->VolEnv.nLoopStart]; - if ((penv->VolEnv.nLoopEnd == penv->VolEnv.nLoopStart) && (!penv->VolEnv.Values[penv->VolEnv.nLoopStart]) - && ((!(m_nType & MOD_TYPE_XM)) || (penv->VolEnv.nLoopEnd+1 == penv->VolEnv.nNodes))) - { - pChn->dwFlags |= CHN_NOTEFADE; - pChn->nFadeOutVol = 0; - } - } - } - // Volume Sustain ? - if ((penv->dwFlags & ENV_VOLSUSTAIN) && (!(pChn->dwFlags & CHN_KEYOFF))) - { - if (pChn->nVolEnvPosition == (int)penv->VolEnv.Ticks[penv->VolEnv.nSustainEnd]+1) - pChn->nVolEnvPosition = penv->VolEnv.Ticks[penv->VolEnv.nSustainStart]; - } else - // End of Envelope ? - if (pChn->nVolEnvPosition > penv->VolEnv.Ticks[penv->VolEnv.nNodes - 1]) - { - if ((m_nType & MOD_TYPE_IT) || (pChn->dwFlags & CHN_KEYOFF)) pChn->dwFlags |= CHN_NOTEFADE; - pChn->nVolEnvPosition = penv->VolEnv.Ticks[penv->VolEnv.nNodes - 1]; - if ((!penv->VolEnv.Values[penv->VolEnv.nNodes-1]) && ((nChn >= m_nChannels) || (m_nType & MOD_TYPE_IT))) - { - pChn->dwFlags |= CHN_NOTEFADE; - pChn->nFadeOutVol = 0; - - pChn->nRealVolume = 0; - } - } - } - // Panning Envelope - if (pChn->dwFlags & CHN_PANENV) - { - pChn->nPanEnvPosition++; - if (penv->dwFlags & ENV_PANLOOP) - { - int panloopend = penv->PanEnv.Ticks[penv->PanEnv.nLoopEnd]; - if (m_nType != MOD_TYPE_XM) panloopend++; - if (pChn->nPanEnvPosition == panloopend) - pChn->nPanEnvPosition = penv->PanEnv.Ticks[penv->PanEnv.nLoopStart]; - } - // Panning Sustain ? - if ((penv->dwFlags & ENV_PANSUSTAIN) && (pChn->nPanEnvPosition == (int)penv->PanEnv.Ticks[penv->PanEnv.nSustainEnd]+1) - && (!(pChn->dwFlags & CHN_KEYOFF))) - { - // Panning sustained - pChn->nPanEnvPosition = penv->PanEnv.Ticks[penv->PanEnv.nSustainStart]; - } else - { - if (pChn->nPanEnvPosition > penv->PanEnv.Ticks[penv->PanEnv.nNodes - 1]) - pChn->nPanEnvPosition = penv->PanEnv.Ticks[penv->PanEnv.nNodes - 1]; - } - } - // Pitch Envelope - if (pChn->dwFlags & CHN_PITCHENV) - { - // Increase position - pChn->nPitchEnvPosition++; - // Pitch Loop ? - if (penv->dwFlags & ENV_PITCHLOOP) - { - if (pChn->nPitchEnvPosition >= penv->PitchEnv.Ticks[penv->PitchEnv.nLoopEnd]) - pChn->nPitchEnvPosition = penv->PitchEnv.Ticks[penv->PitchEnv.nLoopStart]; - } - // Pitch Sustain ? - if ((penv->dwFlags & ENV_PITCHSUSTAIN) && (!(pChn->dwFlags & CHN_KEYOFF))) - { - if (pChn->nPitchEnvPosition == (int)penv->PitchEnv.Ticks[penv->PitchEnv.nSustainEnd]+1) - pChn->nPitchEnvPosition = penv->PitchEnv.Ticks[penv->PitchEnv.nSustainStart]; - } else - { - if (pChn->nPitchEnvPosition > penv->PitchEnv.Ticks[penv->PitchEnv.nNodes - 1]) - pChn->nPitchEnvPosition = penv->PitchEnv.Ticks[penv->PitchEnv.nNodes - 1]; - } - } - } -#if 0 - // Limit CPU -> > 80% -> don't ramp - if ((gnCPUUsage >= 80) && (!pChn->nRealVolume)) - { - pChn->nLeftVol = pChn->nRightVol = 0; - } -#endif // MODPLUG_PLAYER - // Volume ramping - pChn->dwFlags &= ~CHN_VOLUMERAMP; - if ((pChn->nRealVolume) || (pChn->nLeftVol) || (pChn->nRightVol)) - pChn->dwFlags |= CHN_VOLUMERAMP; - // Decrease VU-Meter - if (pChn->nVUMeter > VUMETER_DECAY) pChn->nVUMeter -= VUMETER_DECAY; else pChn->nVUMeter = 0; - if (pChn->nLeftVU > VUMETER_DECAY) pChn->nLeftVU -= VUMETER_DECAY; else pChn->nLeftVU = 0; - if (pChn->nRightVU > VUMETER_DECAY) pChn->nRightVU -= VUMETER_DECAY; else pChn->nRightVU = 0; - // Check for too big nInc - if (((pChn->nInc >> 16) + 1) >= (LONG)(pChn->nLoopEnd - pChn->nLoopStart)) pChn->dwFlags &= ~CHN_LOOP; - pChn->nNewRightVol = pChn->nNewLeftVol = 0; - pChn->pCurrentSample = ((pChn->pSample) && (pChn->nLength) && (pChn->nInc)) ? pChn->pSample : NULL; - if (pChn->pCurrentSample) - { - // Update VU-Meter (nRealVolume is 14-bit) - UINT vutmp = pChn->nRealVolume >> (14 - 8); - if (vutmp > 0xFF) vutmp = 0xFF; - if (pChn->nVUMeter >= 0x100) pChn->nVUMeter = vutmp; - vutmp >>= 1; - if (pChn->nVUMeter < vutmp) pChn->nVUMeter = vutmp; - UINT vul = (pChn->nRealVolume * pChn->nRealPan) >> 14; - if (vul > 127) vul = 127; - if (pChn->nLeftVU > 127) pChn->nLeftVU = (BYTE)vul; - vul >>= 1; - if (pChn->nLeftVU < vul) pChn->nLeftVU = (BYTE)vul; - UINT vur = (pChn->nRealVolume * (256-pChn->nRealPan)) >> 14; - if (vur > 127) vur = 127; - if (pChn->nRightVU > 127) pChn->nRightVU = (BYTE)vur; - vur >>= 1; - if (pChn->nRightVU < vur) pChn->nRightVU = (BYTE)vur; -#ifdef MODPLUG_TRACKER - UINT kChnMasterVol = (pChn->dwFlags & CHN_EXTRALOUD) ? 0x100 : nMasterVol; -#else -#define kChnMasterVol nMasterVol -#endif // MODPLUG_TRACKER - // Adjusting volumes - if (gnChannels >= 2) - { - int pan = ((int)pChn->nRealPan) - 128; - pan *= (int)m_nStereoSeparation; - pan /= 128; - pan += 128; - - if (pan < 0) pan = 0; - if (pan > 256) pan = 256; - if (gdwSoundSetup & SNDMIX_REVERSESTEREO) pan = 256 - pan; - if (m_dwSongFlags & SONG_NOSTEREO) pan = 128; - LONG realvol = (pChn->nRealVolume * kChnMasterVol) >> (8-1); - if (gdwSoundSetup & SNDMIX_SOFTPANNING) - { - if (pan < 128) - { - pChn->nNewLeftVol = (realvol * pan) >> 8; - pChn->nNewRightVol = (realvol * 128) >> 8; - } else - { - pChn->nNewLeftVol = (realvol * 128) >> 8; - pChn->nNewRightVol = (realvol * (256 - pan)) >> 8; - } - } else - { - pChn->nNewLeftVol = (realvol * pan) >> 8; - pChn->nNewRightVol = (realvol * (256 - pan)) >> 8; - } - } else - { - pChn->nNewRightVol = (pChn->nRealVolume * kChnMasterVol) >> 8; - pChn->nNewLeftVol = pChn->nNewRightVol; - } - // Clipping volumes - if (pChn->nNewRightVol > 0xFFFF) pChn->nNewRightVol = 0xFFFF; - if (pChn->nNewLeftVol > 0xFFFF) pChn->nNewLeftVol = 0xFFFF; - // Check IDO - if (gdwSoundSetup & SNDMIX_NORESAMPLING) - { - pChn->dwFlags &= ~(CHN_HQSRC); - pChn->dwFlags |= CHN_NOIDO; - } else - { - pChn->dwFlags &= ~(CHN_NOIDO|CHN_HQSRC); - if( pChn->nInc == 0x10000 ) - { pChn->dwFlags |= CHN_NOIDO; - } - else - { if( ((gdwSoundSetup & SNDMIX_HQRESAMPLER) == 0) && ((gdwSoundSetup & SNDMIX_ULTRAHQSRCMODE) == 0) ) - { if (pChn->nInc >= 0xFF00) pChn->dwFlags |= CHN_NOIDO; - } - } - } - pChn->nNewRightVol >>= MIXING_ATTENUATION; - pChn->nNewLeftVol >>= MIXING_ATTENUATION; - pChn->nRightRamp = pChn->nLeftRamp = 0; - // Dolby Pro-Logic Surround - if ((pChn->dwFlags & CHN_SURROUND) && (gnChannels <= 2) && (gdwSoundSetup & SNDMIX_NOSURROUND) == 0) - pChn->nNewLeftVol = -pChn->nNewLeftVol; - // Checking Ping-Pong Loops - if (pChn->dwFlags & CHN_PINGPONGFLAG) pChn->nInc = -pChn->nInc; - // Setting up volume ramp - if (!(gdwSoundSetup & SNDMIX_NORAMPING) - && (pChn->dwFlags & CHN_VOLUMERAMP) - && ((pChn->nRightVol != pChn->nNewRightVol) - || (pChn->nLeftVol != pChn->nNewLeftVol))) - { - LONG nRampLength = gnVolumeRampSamples; - LONG nRightDelta = ((pChn->nNewRightVol - pChn->nRightVol) << VOLUMERAMPPRECISION); - LONG nLeftDelta = ((pChn->nNewLeftVol - pChn->nLeftVol) << VOLUMERAMPPRECISION); -#if 0 - if ((gdwSoundSetup & SNDMIX_DIRECTTODISK) - || ((gdwSysInfo & (SYSMIX_ENABLEMMX|SYSMIX_FASTCPU)) - && (gdwSoundSetup & SNDMIX_HQRESAMPLER) && (gnCPUUsage <= 20))) -#else - if (gdwSoundSetup & SNDMIX_HQRESAMPLER) -#endif - { - if ((pChn->nRightVol|pChn->nLeftVol) && (pChn->nNewRightVol|pChn->nNewLeftVol) && (!(pChn->dwFlags & CHN_FASTVOLRAMP))) - { - nRampLength = m_nBufferCount; - if (nRampLength > (1 << (VOLUMERAMPPRECISION-1))) nRampLength = (1 << (VOLUMERAMPPRECISION-1)); - if (nRampLength < (LONG)gnVolumeRampSamples) nRampLength = gnVolumeRampSamples; - } - } - pChn->nRightRamp = nRightDelta / nRampLength; - pChn->nLeftRamp = nLeftDelta / nRampLength; - pChn->nRightVol = pChn->nNewRightVol - ((pChn->nRightRamp * nRampLength) >> VOLUMERAMPPRECISION); - pChn->nLeftVol = pChn->nNewLeftVol - ((pChn->nLeftRamp * nRampLength) >> VOLUMERAMPPRECISION); - if (pChn->nRightRamp|pChn->nLeftRamp) - { - pChn->nRampLength = nRampLength; - } else - { - pChn->dwFlags &= ~CHN_VOLUMERAMP; - pChn->nRightVol = pChn->nNewRightVol; - pChn->nLeftVol = pChn->nNewLeftVol; - } - } else - { - pChn->dwFlags &= ~CHN_VOLUMERAMP; - pChn->nRightVol = pChn->nNewRightVol; - pChn->nLeftVol = pChn->nNewLeftVol; - } - pChn->nRampRightVol = pChn->nRightVol << VOLUMERAMPPRECISION; - pChn->nRampLeftVol = pChn->nLeftVol << VOLUMERAMPPRECISION; - // Adding the channel in the channel list - if (!(pChn->dwFlags & CHN_MUTE)) { - ChnMix[m_nMixChannels++] = nChn; - if (m_nMixChannels >= MAX_CHANNELS) break; - } - } else - { - // Note change but no sample - if (pChn->nLeftVU > 128) pChn->nLeftVU = 0; - if (pChn->nRightVU > 128) pChn->nRightVU = 0; - if (pChn->nVUMeter > 0xFF) pChn->nVUMeter = 0; - pChn->nLeftVol = pChn->nRightVol = 0; - pChn->nLength = 0; - } - } - // Checking Max Mix Channels reached: ordering by volume - if ((m_nMixChannels >= m_nMaxMixChannels) && (!(gdwSoundSetup & SNDMIX_DIRECTTODISK))) - { - for (UINT i=0; i m_nBufferCount) - m_nGlobalFadeSamples -= m_nBufferCount; - else - m_nGlobalFadeSamples = 0; - } - return TRUE; -} - - diff -Nru audacious-plugins-2.4.4/src/modplug/stdafx.h audacious-plugins-3.2/src/modplug/stdafx.h --- audacious-plugins-2.4.4/src/modplug/stdafx.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/stdafx.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,94 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Rani Assaf , - * Olivier Lapicque , - * Adam Goode (endian and char fixes for PPC) -*/ - -#ifndef _STDAFX_H_ -#define _STDAFX_H_ - -#ifdef MSC_VER - -#pragma warning (disable:4201) -#pragma warning (disable:4514) -#include -#include -#include -#include - -inline void ProcessPlugins(int n) {} - -#else - -#include -#include -#include - -typedef signed char CHAR; -typedef unsigned char UCHAR; -typedef unsigned char* PUCHAR; -typedef unsigned short USHORT; -typedef unsigned int ULONG; -typedef unsigned int UINT; -typedef unsigned int DWORD; -typedef int LONG; -typedef unsigned short WORD; -typedef unsigned char BYTE; -typedef unsigned char * LPBYTE; -#ifdef __cplusplus -typedef bool BOOL; -#endif -typedef char * LPSTR; -typedef void * LPVOID; -typedef int * LPLONG; -typedef unsigned int * LPDWORD; -typedef unsigned short * LPWORD; -typedef const char * LPCSTR; -typedef long long LONGLONG; -typedef void * PVOID; -typedef void VOID; - - -#define NO_AGC -#define LPCTSTR LPCSTR -#define lstrcpyn strncpy -#define lstrcpy strcpy -#define lstrcmp strcmp -#define WAVE_FORMAT_PCM 1 -//#define ENABLE_EQ - -#define GHND 0 - -#ifdef __cplusplus -inline signed char * GlobalAllocPtr(unsigned int, size_t size) -{ - signed char * p = (signed char *) malloc(size); - - if (p != NULL) memset(p, 0, size); - return p; -} - -inline void ProcessPlugins(int) {} - -#define GlobalFreePtr(p) free((void *)(p)) - -#define strnicmp(a,b,c) strncasecmp(a,b,c) -#define wsprintf sprintf -#endif - -#ifndef FALSE -#define FALSE false -#endif - -#ifndef TRUE -#define TRUE true -#endif - -#endif // MSC_VER - -#endif - - - diff -Nru audacious-plugins-2.4.4/src/modplug/tables.cxx audacious-plugins-3.2/src/modplug/tables.cxx --- audacious-plugins-2.4.4/src/modplug/tables.cxx 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/modplug/tables.cxx 1970-01-01 00:00:00.000000000 +0000 @@ -1,373 +0,0 @@ -/* - * This source code is public domain. - * - * Authors: Olivier Lapicque - */ - -#include "stdafx.h" -#include "sndfile.h" - -BYTE ImpulseTrackerPortaVolCmd[16] = -{ - 0x00, 0x01, 0x04, 0x08, 0x10, 0x20, 0x40, 0x60, - 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF -}; - -// Period table for Protracker octaves 0-5: -WORD ProTrackerPeriodTable[6*12] = -{ - 1712,1616,1524,1440,1356,1280,1208,1140,1076,1016,960,907, - 856,808,762,720,678,640,604,570,538,508,480,453, - 428,404,381,360,339,320,302,285,269,254,240,226, - 214,202,190,180,170,160,151,143,135,127,120,113, - 107,101,95,90,85,80,75,71,67,63,60,56, - 53,50,47,45,42,40,37,35,33,31,30,28 -}; - - -WORD ProTrackerTunedPeriods[16*12] = -{ - 1712,1616,1524,1440,1356,1280,1208,1140,1076,1016,960,907, - 1700,1604,1514,1430,1348,1274,1202,1134,1070,1010,954,900, - 1688,1592,1504,1418,1340,1264,1194,1126,1064,1004,948,894, - 1676,1582,1492,1408,1330,1256,1184,1118,1056,996,940,888, - 1664,1570,1482,1398,1320,1246,1176,1110,1048,990,934,882, - 1652,1558,1472,1388,1310,1238,1168,1102,1040,982,926,874, - 1640,1548,1460,1378,1302,1228,1160,1094,1032,974,920,868, - 1628,1536,1450,1368,1292,1220,1150,1086,1026,968,914,862, - 1814,1712,1616,1524,1440,1356,1280,1208,1140,1076,1016,960, - 1800,1700,1604,1514,1430,1350,1272,1202,1134,1070,1010,954, - 1788,1688,1592,1504,1418,1340,1264,1194,1126,1064,1004,948, - 1774,1676,1582,1492,1408,1330,1256,1184,1118,1056,996,940, - 1762,1664,1570,1482,1398,1320,1246,1176,1110,1048,988,934, - 1750,1652,1558,1472,1388,1310,1238,1168,1102,1040,982,926, - 1736,1640,1548,1460,1378,1302,1228,1160,1094,1032,974,920, - 1724,1628,1536,1450,1368,1292,1220,1150,1086,1026,968,914 -}; - - -// S3M C-4 periods -WORD FreqS3MTable[16] = -{ - 1712,1616,1524,1440,1356,1280, - 1208,1140,1076,1016,960,907, - 0,0,0,0 -}; - - -// S3M FineTune frequencies -WORD S3MFineTuneTable[16] = -{ - 7895,7941,7985,8046,8107,8169,8232,8280, - 8363,8413,8463,8529,8581,8651,8723,8757, // 8363*2^((i-8)/(12*8)) -}; - - -// Sinus table -short int ModSinusTable[64] = -{ - 0,12,25,37,49,60,71,81,90,98,106,112,117,122,125,126, - 127,126,125,122,117,112,106,98,90,81,71,60,49,37,25,12, - 0,-12,-25,-37,-49,-60,-71,-81,-90,-98,-106,-112,-117,-122,-125,-126, - -127,-126,-125,-122,-117,-112,-106,-98,-90,-81,-71,-60,-49,-37,-25,-12 -}; - -// Triangle wave table (ramp down) -short int ModRampDownTable[64] = -{ - 0,-4,-8,-12,-16,-20,-24,-28,-32,-36,-40,-44,-48,-52,-56,-60, - -64,-68,-72,-76,-80,-84,-88,-92,-96,-100,-104,-108,-112,-116,-120,-124, - 127,123,119,115,111,107,103,99,95,91,87,83,79,75,71,67, - 63,59,55,51,47,43,39,35,31,27,23,19,15,11,7,3 -}; - -// Square wave table -short int ModSquareTable[64] = -{ - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, - -127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127, - -127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127,-127 -}; - -// Random wave table -short int ModRandomTable[64] = -{ - 98,-127,-43,88,102,41,-65,-94,125,20,-71,-86,-70,-32,-16,-96, - 17,72,107,-5,116,-69,-62,-40,10,-61,65,109,-18,-38,-13,-76, - -23,88,21,-94,8,106,21,-112,6,109,20,-88,-30,9,-127,118, - 42,-34,89,-4,-51,-72,21,-29,112,123,84,-101,-92,98,-54,-95 -}; - - -// volume fade tables for Retrig Note: -signed char retrigTable1[16] = -{ 0, 0, 0, 0, 0, 0, 10, 8, 0, 0, 0, 0, 0, 0, 24, 32 }; - -signed char retrigTable2[16] = -{ 0, -1, -2, -4, -8, -16, 0, 0, 0, 1, 2, 4, 8, 16, 0, 0 }; - - - - -WORD XMPeriodTable[104] = -{ - 907,900,894,887,881,875,868,862,856,850,844,838,832,826,820,814, - 808,802,796,791,785,779,774,768,762,757,752,746,741,736,730,725, - 720,715,709,704,699,694,689,684,678,675,670,665,660,655,651,646, - 640,636,632,628,623,619,614,610,604,601,597,592,588,584,580,575, - 570,567,563,559,555,551,547,543,538,535,532,528,524,520,516,513, - 508,505,502,498,494,491,487,484,480,477,474,470,467,463,460,457, - 453,450,447,443,440,437,434,431 -}; - - -UINT XMLinearTable[768] = -{ - 535232,534749,534266,533784,533303,532822,532341,531861, - 531381,530902,530423,529944,529466,528988,528511,528034, - 527558,527082,526607,526131,525657,525183,524709,524236, - 523763,523290,522818,522346,521875,521404,520934,520464, - 519994,519525,519057,518588,518121,517653,517186,516720, - 516253,515788,515322,514858,514393,513929,513465,513002, - 512539,512077,511615,511154,510692,510232,509771,509312, - 508852,508393,507934,507476,507018,506561,506104,505647, - 505191,504735,504280,503825,503371,502917,502463,502010, - 501557,501104,500652,500201,499749,499298,498848,498398, - 497948,497499,497050,496602,496154,495706,495259,494812, - 494366,493920,493474,493029,492585,492140,491696,491253, - 490809,490367,489924,489482,489041,488600,488159,487718, - 487278,486839,486400,485961,485522,485084,484647,484210, - 483773,483336,482900,482465,482029,481595,481160,480726, - 480292,479859,479426,478994,478562,478130,477699,477268, - 476837,476407,475977,475548,475119,474690,474262,473834, - 473407,472979,472553,472126,471701,471275,470850,470425, - 470001,469577,469153,468730,468307,467884,467462,467041, - 466619,466198,465778,465358,464938,464518,464099,463681, - 463262,462844,462427,462010,461593,461177,460760,460345, - 459930,459515,459100,458686,458272,457859,457446,457033, - 456621,456209,455797,455386,454975,454565,454155,453745, - 453336,452927,452518,452110,451702,451294,450887,450481, - 450074,449668,449262,448857,448452,448048,447644,447240, - 446836,446433,446030,445628,445226,444824,444423,444022, - 443622,443221,442821,442422,442023,441624,441226,440828, - 440430,440033,439636,439239,438843,438447,438051,437656, - 437261,436867,436473,436079,435686,435293,434900,434508, - 434116,433724,433333,432942,432551,432161,431771,431382, - 430992,430604,430215,429827,429439,429052,428665,428278, - 427892,427506,427120,426735,426350,425965,425581,425197, - 424813,424430,424047,423665,423283,422901,422519,422138, - 421757,421377,420997,420617,420237,419858,419479,419101, - 418723,418345,417968,417591,417214,416838,416462,416086, - 415711,415336,414961,414586,414212,413839,413465,413092, - 412720,412347,411975,411604,411232,410862,410491,410121, - 409751,409381,409012,408643,408274,407906,407538,407170, - 406803,406436,406069,405703,405337,404971,404606,404241, - 403876,403512,403148,402784,402421,402058,401695,401333, - 400970,400609,400247,399886,399525,399165,398805,398445, - 398086,397727,397368,397009,396651,396293,395936,395579, - 395222,394865,394509,394153,393798,393442,393087,392733, - 392378,392024,391671,391317,390964,390612,390259,389907, - 389556,389204,388853,388502,388152,387802,387452,387102, - 386753,386404,386056,385707,385359,385012,384664,384317, - 383971,383624,383278,382932,382587,382242,381897,381552, - 381208,380864,380521,380177,379834,379492,379149,378807, - - 378466,378124,377783,377442,377102,376762,376422,376082, - 375743,375404,375065,374727,374389,374051,373714,373377, - 373040,372703,372367,372031,371695,371360,371025,370690, - 370356,370022,369688,369355,369021,368688,368356,368023, - 367691,367360,367028,366697,366366,366036,365706,365376, - 365046,364717,364388,364059,363731,363403,363075,362747, - 362420,362093,361766,361440,361114,360788,360463,360137, - 359813,359488,359164,358840,358516,358193,357869,357547, - 357224,356902,356580,356258,355937,355616,355295,354974, - 354654,354334,354014,353695,353376,353057,352739,352420, - 352103,351785,351468,351150,350834,350517,350201,349885, - 349569,349254,348939,348624,348310,347995,347682,347368, - 347055,346741,346429,346116,345804,345492,345180,344869, - 344558,344247,343936,343626,343316,343006,342697,342388, - 342079,341770,341462,341154,340846,340539,340231,339924, - 339618,339311,339005,338700,338394,338089,337784,337479, - 337175,336870,336566,336263,335959,335656,335354,335051, - 334749,334447,334145,333844,333542,333242,332941,332641, - 332341,332041,331741,331442,331143,330844,330546,330247, - 329950,329652,329355,329057,328761,328464,328168,327872, - 327576,327280,326985,326690,326395,326101,325807,325513, - 325219,324926,324633,324340,324047,323755,323463,323171, - 322879,322588,322297,322006,321716,321426,321136,320846, - 320557,320267,319978,319690,319401,319113,318825,318538, - 318250,317963,317676,317390,317103,316817,316532,316246, - 315961,315676,315391,315106,314822,314538,314254,313971, - 313688,313405,313122,312839,312557,312275,311994,311712, - 311431,311150,310869,310589,310309,310029,309749,309470, - 309190,308911,308633,308354,308076,307798,307521,307243, - 306966,306689,306412,306136,305860,305584,305308,305033, - 304758,304483,304208,303934,303659,303385,303112,302838, - 302565,302292,302019,301747,301475,301203,300931,300660, - 300388,300117,299847,299576,299306,299036,298766,298497, - 298227,297958,297689,297421,297153,296884,296617,296349, - 296082,295815,295548,295281,295015,294749,294483,294217, - 293952,293686,293421,293157,292892,292628,292364,292100, - 291837,291574,291311,291048,290785,290523,290261,289999, - 289737,289476,289215,288954,288693,288433,288173,287913, - 287653,287393,287134,286875,286616,286358,286099,285841, - 285583,285326,285068,284811,284554,284298,284041,283785, - 283529,283273,283017,282762,282507,282252,281998,281743, - 281489,281235,280981,280728,280475,280222,279969,279716, - 279464,279212,278960,278708,278457,278206,277955,277704, - 277453,277203,276953,276703,276453,276204,275955,275706, - 275457,275209,274960,274712,274465,274217,273970,273722, - 273476,273229,272982,272736,272490,272244,271999,271753, - 271508,271263,271018,270774,270530,270286,270042,269798, - 269555,269312,269069,268826,268583,268341,268099,267857 -}; - - -signed char ft2VibratoTable[256] = -{ - 0,-2,-3,-5,-6,-8,-9,-11,-12,-14,-16,-17,-19,-20,-22,-23, - -24,-26,-27,-29,-30,-32,-33,-34,-36,-37,-38,-39,-41,-42, - -43,-44,-45,-46,-47,-48,-49,-50,-51,-52,-53,-54,-55,-56, - -56,-57,-58,-59,-59,-60,-60,-61,-61,-62,-62,-62,-63,-63, - -63,-64,-64,-64,-64,-64,-64,-64,-64,-64,-64,-64,-63,-63, - -63,-62,-62,-62,-61,-61,-60,-60,-59,-59,-58,-57,-56,-56, - -55,-54,-53,-52,-51,-50,-49,-48,-47,-46,-45,-44,-43,-42, - -41,-39,-38,-37,-36,-34,-33,-32,-30,-29,-27,-26,-24,-23, - -22,-20,-19,-17,-16,-14,-12,-11,-9,-8,-6,-5,-3,-2,0, - 2,3,5,6,8,9,11,12,14,16,17,19,20,22,23,24,26,27,29,30, - 32,33,34,36,37,38,39,41,42,43,44,45,46,47,48,49,50,51, - 52,53,54,55,56,56,57,58,59,59,60,60,61,61,62,62,62,63, - 63,63,64,64,64,64,64,64,64,64,64,64,64,63,63,63,62,62, - 62,61,61,60,60,59,59,58,57,56,56,55,54,53,52,51,50,49, - 48,47,46,45,44,43,42,41,39,38,37,36,34,33,32,30,29,27, - 26,24,23,22,20,19,17,16,14,12,11,9,8,6,5,3,2 -}; - - - -DWORD FineLinearSlideUpTable[16] = -{ - 65536, 65595, 65654, 65714, 65773, 65832, 65892, 65951, - 66011, 66071, 66130, 66190, 66250, 66309, 66369, 66429 -}; - - -DWORD FineLinearSlideDownTable[16] = -{ - 65535, 65477, 65418, 65359, 65300, 65241, 65182, 65123, - 65065, 65006, 64947, 64888, 64830, 64772, 64713, 64645 -}; - - -DWORD LinearSlideUpTable[256] = -{ - 65536, 65773, 66010, 66249, 66489, 66729, 66971, 67213, - 67456, 67700, 67945, 68190, 68437, 68685, 68933, 69182, - 69432, 69684, 69936, 70189, 70442, 70697, 70953, 71209, - 71467, 71725, 71985, 72245, 72507, 72769, 73032, 73296, - 73561, 73827, 74094, 74362, 74631, 74901, 75172, 75444, - 75717, 75991, 76265, 76541, 76818, 77096, 77375, 77655, - 77935, 78217, 78500, 78784, 79069, 79355, 79642, 79930, - 80219, 80509, 80800, 81093, 81386, 81680, 81976, 82272, - 82570, 82868, 83168, 83469, 83771, 84074, 84378, 84683, - 84989, 85297, 85605, 85915, 86225, 86537, 86850, 87164, - 87480, 87796, 88113, 88432, 88752, 89073, 89395, 89718, - 90043, 90369, 90695, 91023, 91353, 91683, 92015, 92347, - 92681, 93017, 93353, 93691, 94029, 94370, 94711, 95053, - 95397, 95742, 96088, 96436, 96785, 97135, 97486, 97839, - 98193, 98548, 98904, 99262, 99621, 99981, 100343, 100706, - 101070, 101435, 101802, 102170, 102540, 102911, 103283, 103657, - 104031, 104408, 104785, 105164, 105545, 105926, 106309, 106694, - 107080, 107467, 107856, 108246, 108637, 109030, 109425, 109820, - 110217, 110616, 111016, 111418, 111821, 112225, 112631, 113038, - 113447, 113857, 114269, 114682, 115097, 115514, 115931, 116351, - 116771, 117194, 117618, 118043, 118470, 118898, 119328, 119760, - 120193, 120628, 121064, 121502, 121941, 122382, 122825, 123269, - 123715, 124162, 124611, 125062, 125514, 125968, 126424, 126881, - 127340, 127801, 128263, 128727, 129192, 129660, 130129, 130599, - 131072, 131546, 132021, 132499, 132978, 133459, 133942, 134426, - 134912, 135400, 135890, 136381, 136875, 137370, 137866, 138365, - 138865, 139368, 139872, 140378, 140885, 141395, 141906, 142419, - 142935, 143451, 143970, 144491, 145014, 145538, 146064, 146593, - 147123, 147655, 148189, 148725, 149263, 149803, 150344, 150888, - 151434, 151982, 152531, 153083, 153637, 154192, 154750, 155310, - 155871, 156435, 157001, 157569, 158138, 158710, 159284, 159860, - 160439, 161019, 161601, 162186, 162772, 163361, 163952, 164545, -}; - - -DWORD LinearSlideDownTable[256] = -{ - 65536, 65299, 65064, 64830, 64596, 64363, 64131, 63900, - 63670, 63440, 63212, 62984, 62757, 62531, 62305, 62081, - 61857, 61634, 61412, 61191, 60970, 60751, 60532, 60314, - 60096, 59880, 59664, 59449, 59235, 59021, 58809, 58597, - 58385, 58175, 57965, 57757, 57548, 57341, 57134, 56928, - 56723, 56519, 56315, 56112, 55910, 55709, 55508, 55308, - 55108, 54910, 54712, 54515, 54318, 54123, 53928, 53733, - - 53540, 53347, 53154, 52963, 52772, 52582, 52392, 52204, - 52015, 51828, 51641, 51455, 51270, 51085, 50901, 50717, - 50535, 50353, 50171, 49990, 49810, 49631, 49452, 49274, - 49096, 48919, 48743, 48567, 48392, 48218, 48044, 47871, - 47698, 47526, 47355, 47185, 47014, 46845, 46676, 46508, - 46340, 46173, 46007, 45841, 45676, 45511, 45347, 45184, - 45021, 44859, 44697, 44536, 44376, 44216, 44056, 43898, - 43740, 43582, 43425, 43268, 43112, 42957, 42802, 42648, - 42494, 42341, 42189, 42037, 41885, 41734, 41584, 41434, - 41285, 41136, 40988, 40840, 40693, 40546, 40400, 40254, - 40109, 39965, 39821, 39677, 39534, 39392, 39250, 39108, - 38967, 38827, 38687, 38548, 38409, 38270, 38132, 37995, - 37858, 37722, 37586, 37450, 37315, 37181, 37047, 36913, - 36780, 36648, 36516, 36384, 36253, 36122, 35992, 35862, - 35733, 35604, 35476, 35348, 35221, 35094, 34968, 34842, - 34716, 34591, 34466, 34342, 34218, 34095, 33972, 33850, - 33728, 33606, 33485, 33364, 33244, 33124, 33005, 32886, - 32768, 32649, 32532, 32415, 32298, 32181, 32065, 31950, - 31835, 31720, 31606, 31492, 31378, 31265, 31152, 31040, - 30928, 30817, 30706, 30595, 30485, 30375, 30266, 30157, - 30048, 29940, 29832, 29724, 29617, 29510, 29404, 29298, - 29192, 29087, 28982, 28878, 28774, 28670, 28567, 28464, - 28361, 28259, 28157, 28056, 27955, 27854, 27754, 27654, - 27554, 27455, 27356, 27257, 27159, 27061, 26964, 26866, - 26770, 26673, 26577, 26481, 26386, 26291, 26196, 26102, -}; - - -int SpectrumSinusTable[256*2] = -{ - 0, 1, 1, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9, 10, 10, 11, - 12, 13, 14, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22, 22, 23, - 24, 25, 25, 26, 27, 28, 28, 29, 30, 30, 31, 32, 32, 33, 34, 34, - 35, 36, 36, 37, 38, 38, 39, 39, 40, 41, 41, 42, 42, 43, 44, 44, - 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, - 53, 53, 53, 54, 54, 55, 55, 55, 56, 56, 57, 57, 57, 58, 58, 58, - 59, 59, 59, 59, 60, 60, 60, 60, 61, 61, 61, 61, 61, 62, 62, 62, - 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 62, 62, - 62, 62, 62, 62, 61, 61, 61, 61, 61, 60, 60, 60, 60, 59, 59, 59, - 59, 58, 58, 58, 57, 57, 57, 56, 56, 55, 55, 55, 54, 54, 53, 53, - 53, 52, 52, 51, 51, 50, 50, 49, 49, 48, 48, 47, 47, 46, 46, 45, - 45, 44, 44, 43, 42, 42, 41, 41, 40, 39, 39, 38, 38, 37, 36, 36, - 35, 34, 34, 33, 32, 32, 31, 30, 30, 29, 28, 28, 27, 26, 25, 25, - 24, 23, 22, 22, 21, 20, 20, 19, 18, 17, 17, 16, 15, 14, 14, 13, - 12, 11, 10, 10, 9, 8, 7, 7, 6, 5, 4, 3, 3, 2, 1, 0, - 0, -1, -1, -2, -3, -3, -4, -5, -6, -7, -7, -8, -9, -10, -10, -11, - -12, -13, -14, -14, -15, -16, -17, -17, -18, -19, -20, -20, -21, -22, -22, -23, - -24, -25, -25, -26, -27, -28, -28, -29, -30, -30, -31, -32, -32, -33, -34, -34, - -35, -36, -36, -37, -38, -38, -39, -39, -40, -41, -41, -42, -42, -43, -44, -44, - -45, -45, -46, -46, -47, -47, -48, -48, -49, -49, -50, -50, -51, -51, -52, -52, - -53, -53, -53, -54, -54, -55, -55, -55, -56, -56, -57, -57, -57, -58, -58, -58, - -59, -59, -59, -59, -60, -60, -60, -60, -61, -61, -61, -61, -61, -62, -62, -62, - -62, -62, -62, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, - -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -62, -62, - -62, -62, -62, -62, -61, -61, -61, -61, -61, -60, -60, -60, -60, -59, -59, -59, - -59, -58, -58, -58, -57, -57, -57, -56, -56, -55, -55, -55, -54, -54, -53, -53, - -53, -52, -52, -51, -51, -50, -50, -49, -49, -48, -48, -47, -47, -46, -46, -45, - -45, -44, -44, -43, -42, -42, -41, -41, -40, -39, -39, -38, -38, -37, -36, -36, - -35, -34, -34, -33, -32, -32, -31, -30, -30, -29, -28, -28, -27, -26, -25, -25, - -24, -23, -22, -22, -21, -20, -20, -19, -18, -17, -17, -16, -15, -14, -14, -13, - -12, -11, -10, -10, -9, -8, -7, -7, -6, -5, -4, -3, -3, -2, -1, 0, -}; - diff -Nru audacious-plugins-2.4.4/src/mpg123/id3skip.c audacious-plugins-3.2/src/mpg123/id3skip.c --- audacious-plugins-2.4.4/src/mpg123/id3skip.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/id3skip.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -/* - * id3skip.c - * Copyright 2010 John Lindgren - * - * This file is part of Audacious. - * - * Audacious is free software: you can redistribute it and/or modify it under - * the terms of the GNU General Public License as published by the Free Software - * Foundation, version 2 or version 3 of the License. - * - * Audacious 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with - * Audacious. If not, see . - * - * The Audacious team does not consider modular code linking to Audacious or - * using our public API to be a derived work. - */ - -#include - -#include - -#pragma pack(push) /* must be byte-aligned */ -#pragma pack(1) -struct id3_header -{ - gchar magic[3]; - guchar version; - guchar revision; - guchar flags; - guint32 size; -}; -#pragma pack(pop) - -static guint32 unsyncsafe (guint32 x) -{ - return (x & 0x7f) | ((x & 0x7f00) >> 1) | ((x & 0x7f0000) >> 2) | ((x & - 0x7f000000) >> 3); -} - -gint id3_header_size (const guchar * data, gint size) -{ - struct id3_header header; - - if (size < sizeof (struct id3_header)) - return 0; - - memcpy (& header, data, sizeof (struct id3_header)); - - if (memcmp (header.magic, "ID3", 3)) - return 0; - - return sizeof (struct id3_header) + unsyncsafe (GUINT32_FROM_BE (header.size)); -} diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/aligncheck.h audacious-plugins-3.2/src/mpg123/libmpg123/aligncheck.h --- audacious-plugins-2.4.4/src/mpg123/libmpg123/aligncheck.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/aligncheck.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -/* - aligncheck: Some insane hacking to ensure stack alignment on library entry. - - copyright 2010 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - - intially written by Thomas Orgis - - Include this header once at the appropriate place. It is not supposed for general use... -*/ - - -#define ALIGNCHECK(mh) -#define ALIGNCHECKK -/* On compilers that support data alignment but not the automatic stack realignment. - We check for properly aligned stack before risking a crash because of badly compiled - client program. */ -#if (defined CCALIGN) && (defined NEED_ALIGNCHECK) && ((defined DEBUG) || (defined CHECK_ALIGN)) - -/* Common building block. */ -#define ALIGNMAINPART \ - /* minimum size of 16 bytes, not all compilers would align a smaller piece of data */ \ - double ALIGNED(16) altest[2]; \ - debug2("testing alignment, with %lu %% 16 = %lu", \ - (unsigned long)altest, (unsigned long)((size_t)altest % 16)); \ - if((size_t)altest % 16 != 0) - -#undef ALIGNCHECK -#define ALIGNCHECK(mh) \ - ALIGNMAINPART \ - { \ - error("Stack variable is not aligned! Your combination of compiler/library is dangerous!"); \ - if(mh != NULL) mh->err = MPG123_BAD_ALIGN; \ -\ - return MPG123_ERR; \ - } -#undef ALIGNCHECKK -#define ALIGNCHECKK \ - ALIGNMAINPART \ - { \ - error("Stack variable is not aligned! Your combination of compiler/library is dangerous!"); \ - return MPG123_BAD_ALIGN; \ - } - -#endif diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/AUTHORS audacious-plugins-3.2/src/mpg123/libmpg123/AUTHORS --- audacious-plugins-2.4.4/src/mpg123/libmpg123/AUTHORS 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/AUTHORS 1970-01-01 00:00:00.000000000 +0000 @@ -1,145 +0,0 @@ -This is an attempt to give credit to the people who contributed in some way to the mpg123 project. -There are names and email addresses listed. Please use these addresses only to contact contributors with some question about their mpg123 contribution. -You are explicitly not allowed to send them unwanted business offers or to question the quality of their sex life. --------------------- - -Current maintainers with various sorts of contributions: - Thomas Orgis - Nicholas J Humfrey - -Generic address pointing to the current maintainer (hopefully still works in future in case maintainership will change again): - -The creator: Michael Hipp (email: hippm@informatik.uni-tuebingen.de - please bother maintainers first) - -Contributions/ideas Thomas Orgis era (includes backports from mhipp trunk): - -Jonathan Yong (jon_y) <10walls@gmail.com>: win32 hacking -Malcolm Boczek : Common language runtime wrapper -Elbert Pol (TeLLie) : OS/2 port fixup -Jeroen Valkonet : motivate pitch control, suggestive patch for pitch command in generic control interface -Andy Hefner : patch for that second UTF16 issue -Taihei Monma : A whole lot of new/improved assembler code, including Altivec! -Christian Weisgerber : sndio output -Patrick Dehne (P4tr3ck) : more MSVC++ porting, patch to handle missing bit reservoirs -Thorsten Glaser : icy2utf8, suggest utf8 locale stuff -Dan Smith : ABI fixes for ensuring stack alignment (esp. for MinGW-built DLL with MSVC) -Michael Ryzhykh : mpg123.spec.in -Stefan Lenselink : initial aRts output -Sergej Kvachonok : win32 audio rewrite -Winston: SunOS-4.1.4/gcc-2.7.0 testing and suggestions for fixes (legacy Makefile, integer type headers) -Mika Tiainen: pointing out the fix for the UTF to ASCII filtering of tags to actually work -Nick Kurshev : extended 3dnow (from mplayer) -Zuxy Meng : SSE (from mplayer) -Honza : idea and prototype patch for ICY meta data support -Petr Baudis : patches: term sigcont, id3 display unicode fallback and condensed output -Petr Salinger : i486 enhancement -mpdavig@users.sourceforge.net: linux-ppc-nas Makefile.legacy entry -Adrian Bacon : patched decode_i586_dither (noise shaped float/int rounding) -Cool Feet Audio project : realtime equalizer control -Steve Grundell : clean stdout in control mode with stdout decoding -Romain Dolbeau : Altivec support (taken from mplayer) -higway : MMX Patch -Clemens Ladisch : ALSA 0.9/1.0 support - -Debian Daniel Kobras era: - -Steve Kemp -Dan Olson -Syuuhei Kashiyama -Rupert Levene -Andreas Dilger -Erik B. Andersen -Chris Butler -Martin Sjogren -Chet Hosey -Roland Rosenfeld - - -Debian Colin Watson era: - -Helge Deller -Chet Hosey -Christopher C. Chimelis -Roland Rosenfeld -Marcelo E. Magallon - - -Initial Debianers: - -Tommi Virtanen -Paul Haggart - - -Contributions/ideas Michael Hipp era: - -Mikko Tommila: DCT9 -Oliver Fromme -MPEG Software Simulation Group: reference decoder package -Tobias Bading: idea for DCT64 in subband synthesis from maplay package -Jeff Tsay and Mikko Tommila: MDCT36 from maplay package -Philipp Knirsch : DCT36/manual unroll idea -Thomas Woerner: SGI Audio -Damien Clermonte: HP-UX audio fixes -Niclas Lindstrom : OS2 port -Stefan Bieschewski : Pentium optimizations, decode_i586.s -Martin Denn : NAS port -Niklas Beisert : MPEG 2.5 tables - and : NetBSD Patch(es) -Kevin Brintnall : BSD patch -Tony Million: win32 port -Steven Tiger Lang: advanced shuffle -Eric B. Mitchell: esd port -Ryan R. Prosser : esd port for Solaris -Andreas Neuhaus: initial generic control interface - -(additionally fetched from changelog:) - -Ralf Hildebrandt : audio_alib changes -: BSDOS 4.0 with gcc added to Makefile -Bertrand Petit : frontend changes -Erik Mouw : SGI audio fix for non RAD machines -Daniel O'Connor : freebsd-esd make-entry -D. Skarda <0rfelyus@atrey.karlin.mff.cuni.cz>: enhanced head_check -Wilson, Jeff D : xterm-title -Robert Bihlmeyer : esd changes -Hannu Napari's : SGI audio patches -: native AIX support -: playlist patch -Gilles Zunino : SGI audio patches -Matthew Parslow : esdserver patch -: equalizer patch (equalfile setting) -Ducroquet Erwan : HPUX/ALib support -Shane Wegner : genrepatch -Samuel Audet : wav-File patch -"J. Dean Brederson" : SGI-RAD support -Chou Ye-chi : sajberplay/FreeBSD patch -Fabrice Bellard : 486 optimizations -A. Hermansen and J. Kysela : ALSA output -KIMURA Takuhiro : K6-3DNow -Petr Stehlik : MINT -Andy : float2int speed up proposal -Brian Foutz : TK3Play -Thomas Niederreiter : RIFF header fix -Stefan Gybas : m68k patch -Grant Erickson : Linux PPC patch -Peter Berger : BSDi patch -Henrik P Johnson : HTTP auth -Steven Tiger Lang : advanced shuffle -"Brian J. Swetland" : front-end (remote) patch - -Tillmann Steinbrecher : shuffle patch -M.Stekelenburg : i386-getbits -Antti Andreimann : outburst patch -Hur TaeSung : 'http accept' patch - -(from post-0.59 changes that yet have to go into new trunk:) - -Hans Schwengeler : audio_dec additions -Wojciech Barañski's Mp3Play (check the tools folder): Mp3Play frontend -Daniel Koukola: audio_oss.c patch -Munechika SUMIKAWA : IPv6 -TEMNOTA : HTTP,FTP patch/playlist fix -Peter Surda : VBR patch -Ben : ARM startup time improvements -Dave MacKenzie : init_output() patch -pasky's : close-on-stop patch diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/compat.c audacious-plugins-3.2/src/mpg123/libmpg123/compat.c --- audacious-plugins-2.4.4/src/mpg123/libmpg123/compat.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/compat.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,150 +0,0 @@ -/* - compat: Some compatibility functions. - - The mpg123 code is determined to keep it's legacy. A legacy of old, old UNIX. - So anything possibly somewhat advanced should be considered to be put here, with proper #ifdef;-) - - copyright 2007-8 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis, Windows Unicode stuff by JonY. -*/ - -#include "config.h" -#include "compat.h" - -#ifdef _MSC_VER -#include -#else -#include -#endif - -#ifdef WANT_WIN32_UNICODE -#include -#include -#include -#endif - -#include "debug.h" - -/* A safe realloc also for very old systems where realloc(NULL, size) returns NULL. */ -void *safe_realloc(void *ptr, size_t size) -{ - if(ptr == NULL) return malloc(size); - else return realloc(ptr, size); -} - -#ifndef HAVE_STRERROR -const char *strerror(int errnum) -{ - extern int sys_nerr; - extern char *sys_errlist[]; - - return (errnum < sys_nerr) ? sys_errlist[errnum] : ""; -} -#endif - -#ifndef HAVE_STRDUP -char *strdup(const char *src) -{ - char *dest; - - if (!(dest = (char *) malloc(strlen(src)+1))) - return NULL; - else - return strcpy(dest, src); -} -#endif - -int compat_open(const char *filename, int mode) -{ - int ret; -#if defined (WANT_WIN32_UNICODE) - const wchar_t *frag = NULL; - - ret = win32_utf8_wide(filename, &frag, NULL); - if ((frag == NULL) || (ret == 0)) goto fallback; /* Fallback to plain open when ucs-2 conversion fails */ - - ret = _wopen(frag, mode); /*Try _wopen */ - if (ret != -1 ) goto open_ok; /* msdn says -1 means failure */ - -fallback: -#endif - -#ifdef __MSVCRT__ /* MSDN says POSIX function is deprecated beginning in Visual C++ 2005 */ - ret = _open (filename, mode); /* Try plain old _open(), if it fails, do nothing */ -#else - ret = open (filename, mode); -#endif - -#if defined (WANT_WIN32_UNICODE) -open_ok: - free ((void *)frag); /* Freeing a NULL should be OK */ -#endif - - return ret; -} - -int compat_close(int infd) -{ -#ifdef __MSVCRT__ /* MSDN says POSIX function is deprecated beginning in Visual C++ 2005 */ - return _close(infd); -#else - return close(infd); -#endif -} - -/* Windows Unicode stuff */ - -#ifdef WANT_WIN32_UNICODE -int win32_wide_utf8(const wchar_t * const wptr, const char **const mbptr, size_t * const buflen) -{ - size_t len; - char *buf; - int ret; - - len = WideCharToMultiByte(CP_UTF8, 0, wptr, -1, NULL, 0, NULL, NULL); /* Get utf-8 string length */ - buf = calloc(len, sizeof (char)); /* Can we assume sizeof char always = 1? */ - debug2("win32_wide_utf8 allocated %u bytes at %p", len, buf); - - if(buf != NULL) - { - ret = WideCharToMultiByte(CP_UTF8, 0, wptr, -1, buf, len, NULL, NULL); /*Do actual conversion*/ - *mbptr = buf; /* Set string pointer to allocated buffer */ - if(buflen != NULL) *buflen = len * sizeof (char); /* Give length of allocated memory if needed. */ - - return ret; - } - else - { - if(buflen != NULL) *buflen = 0; - - return 0; - } -} - -int win32_utf8_wide(const char *const mbptr, const wchar_t ** const wptr, size_t * const buflen) -{ - size_t len; - wchar_t *buf; - int ret; - - len = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, mbptr, -1, NULL, 0); /* Get converted size */ - buf = calloc(len, sizeof (wchar_t)); /* Allocate memory accordingly */ - debug2("win32_utf8_wide allocated %u bytes at %p", len, buf); - - if(buf != NULL) - { - ret = MultiByteToWideChar (CP_UTF8, MB_ERR_INVALID_CHARS, mbptr, -1, buf, len); /* Do conversion */ - *wptr = buf; /* Set string pointer to allocated buffer */ - if (buflen != NULL) *buflen = len * sizeof (wchar_t); /* Give length of allocated memory if needed. */ - - return ret; - } - else - { - if (buflen != NULL) *buflen = 0; - - return 0; - } -} -#endif diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/compat.h audacious-plugins-3.2/src/mpg123/libmpg123/compat.h --- audacious-plugins-2.4.4/src/mpg123/libmpg123/compat.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/compat.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,177 +0,0 @@ -/* - compat: Some compatibility functions and header inclusions. - Basic standard C stuff, that may barely be above/around C89. - - The mpg123 code is determined to keep it's legacy. A legacy of old, old UNIX. - It is envisioned to include this compat header instead of any of the "standard" headers, to catch compatibility issues. - So, don't include stdlib.h or string.h ... include compat.h. - - copyright 2007-8 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis -*/ - -#ifndef MPG123_COMPAT_H -#define MPG123_COMPAT_H - -#include "config.h" - -#ifdef HAVE_STDLIB_H -/* realloc, size_t */ -#include -#endif - -#include -#include - -#ifdef HAVE_SIGNAL_H -#include -#else -#ifdef HAVE_SYS_SIGNAL_H -#include -#endif -#endif - -#ifdef HAVE_UNISTD_H -#include -#endif - -/* Types, types, types. */ -/* Do we actually need these two in addition to sys/types.h? As replacement? */ -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_INTTYPES_H -#include -#endif -#ifdef HAVE_STDINT_H -#include -#endif -/* We want SIZE_MAX, etc. */ -#ifdef HAVE_LIMITS_H -#include -#endif - -#ifndef SIZE_MAX -#define SIZE_MAX ((size_t)-1) -#endif -#ifndef ULONG_MAX -#define ULONG_MAX ((unsigned long)-1) -#endif - -#ifdef HAVE_STRING_H -#include -#endif - -#ifdef OS2 -#include -#endif - -#ifdef HAVE_SYS_TIME_H -#include -#endif -/* For select(), I need select.h according to POSIX 2001, else: sys/time.h sys/types.h unistd.h */ -#ifdef HAVE_SYS_SELECT_H -#include -#endif - -/* To parse big numbers... */ -#ifdef HAVE_ATOLL -#define atobigint atoll -#else -#define atobigint atol -#endif - -typedef unsigned char byte; - -/* A safe realloc also for very old systems where realloc(NULL, size) returns NULL. */ -void *safe_realloc(void *ptr, size_t size); -#ifndef HAVE_STRERROR -const char *strerror(int errnum); -#endif - -#ifndef HAVE_STRDUP -char *strdup(const char *s); -#endif - -/* If we have the size checks enabled, try to derive some sane printfs. - Simple start: Use max integer type and format if long is not big enough. - I am hesitating to use %ll without making sure that it's there... */ -#if !(defined PLAIN_C89) && (defined SIZEOF_OFF_T) && (SIZEOF_OFF_T > SIZEOF_LONG) && (defined PRIiMAX) -# define OFF_P PRIiMAX -typedef intmax_t off_p; -#else -# define OFF_P "li" -typedef long off_p; -#endif - -#if !(defined PLAIN_C89) && (defined SIZEOF_SIZE_T) && (SIZEOF_SIZE_T > SIZEOF_LONG) && (defined PRIuMAX) -# define SIZE_P PRIuMAX -typedef uintmax_t size_p; -#else -# define SIZE_P "lu" -typedef unsigned long size_p; -#endif - -#if !(defined PLAIN_C89) && (defined SIZEOF_SSIZE_T) && (SIZEOF_SSIZE_T > SIZEOF_LONG) && (defined PRIiMAX) -# define SSIZE_P PRIuMAX -typedef intmax_t ssize_p; -#else -# define SSIZE_P "li" -typedef long ssize_p; -#endif - -/** - * Opening a file handle can be different. - * This function here is defined to take a path in native encoding (ISO8859 / UTF-8 / ...), or, when MS Windows Unicode support is enabled, an UTF-8 string that will be converted back to native UCS-2 (wide character) before calling the system's open function. - * @param[in] wptr Pointer to wide string. - * @param[in] mbptr Pointer to multibyte string. - * @return file descriptor (>=0) or error code. - */ -int compat_open(const char *filename, int mode); - -/** - * Closing a file handle can be platform specific. - * This function takes a file descriptor that is to be closed. - * @param[in] infd File descriptor to be closed. - * @return 0 if the file was successfully closed. A return value of -1 indicates an error. - */ -int compat_close(int infd); - -/* Those do make sense in a separate file, but I chose to include them in compat.c because that's the one source whose object is shared between mpg123 and libmpg123 -- and both need the functionality internally. */ - -#ifdef WANT_WIN32_UNICODE -/** - * win32_uni2mbc - * Converts a null terminated UCS-2 string to a multibyte (UTF-8) equivalent. - * Caller is supposed to free allocated buffer. - * @param[in] wptr Pointer to wide string. - * @param[out] mbptr Pointer to multibyte string. - * @param[out] buflen Optional parameter for length of allocated buffer. - * @return status of WideCharToMultiByte conversion. - * - * WideCharToMultiByte - http://msdn.microsoft.com/en-us/library/dd374130(VS.85).aspx - */ -int win32_wide_utf8 (const wchar_t * const wptr, const char **const mbptr, size_t * const buflen); - -/** - * win32_mbc2uni - * Converts a null terminated UTF-8 string to a UCS-2 equivalent. - * Caller is supposed to free allocated buffer. - * @param[out] mbptr Pointer to multibyte string. - * @param[in] wptr Pointer to wide string. - * @param[out] buflen Optional parameter for length of allocated buffer. - * @return status of WideCharToMultiByte conversion. - * - * MultiByteToWideChar - http://msdn.microsoft.com/en-us/library/dd319072(VS.85).aspx - */ - -int win32_utf8_wide (const char *const mbptr, const wchar_t ** const wptr, size_t * const buflen); -#endif - -/* That one comes from Tellie on OS/2, needed in resolver. */ -#ifdef __KLIBC__ -typedef int socklen_t; -#endif - -#endif diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/config.h audacious-plugins-3.2/src/mpg123/libmpg123/config.h --- audacious-plugins-2.4.4/src/mpg123/libmpg123/config.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/config.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -#ifndef AUDACIOUS_LIBMPG123_CONFIG_H -#define AUDACIOUS_LIBMPG123_CONFIG_H - -#include -#include -#include -#include - -#define HAVE_STRDUP -#define HAVE_STRERROR - -#define OPT_GENERIC - -#define FIFO 1 -#define FRAME_INDEX 1 -#define GAPLESS 1 -#define IEEE_FLOAT 1 -#define INDEX_SIZE 1000 - -#define NO_8BIT -#define NO_32BIT -#define NO_DOWNSAMPLE -#define NO_NTOM -#define NO_REAL -#define NO_ID3V2 - -#endif diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/COPYING audacious-plugins-3.2/src/mpg123/libmpg123/COPYING --- audacious-plugins-2.4.4/src/mpg123/libmpg123/COPYING 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/COPYING 1970-01-01 00:00:00.000000000 +0000 @@ -1,773 +0,0 @@ -This is the file that contains the terms of use, copying, etc. for the mpg123 distribution package. - -Main message: - - Code is copyrighted by Michael Hipp, who made it free software under the terms of the LGPL 2.1. - -But that is not all of it. -mpg123 is licensed under the GNU General Lesser Public License, version 2.1, and in parts under the GNU General Public License, version 2. -That means that _all_ of mpg123 is licensed under GPL and the major part also under the LGPL. - -Actually, the "major part" currently is the whole distributed package of mpg123. There are some files (old alsa output, libao output) that you get from our svn repository and that do not fall under LGPL. - -When the copyright marker in a source file says "the mpg123 project" that means that the file contains code copyrighted by contributors to mpg123, the "initially written by" naming the person(s) that created the file and thus may have the largest part of copyrights on it. -I am explaining this here to emphasize that the copyright always actually lies by the individual member (i.e. contributor to) of the mpg123 project who wrote a specific section of code. -Usage of a source code management system like Subversion should provide keeping track of individual copyright traces... - -Please consider that any code that is contributed to the mpg123 project shall be licensed under LGPL 2.1 . -If you want to contribute, but don't agree to that (i.e. you want to have your code GPL only) please say so - then, we either you convince is to include your code under GPL, we convince you to make it LGPL instead or, as a last resort, you'll have to do you own GPLed fork. -But we should try to avoid the last option... - -All files in the distribution that don't carry a license note on their own are licensed under the terms of the LGPL 2.1; all files that do carry either a LGPL or GPL note are licensed respectively under the LGPL or GPL as follows: - - -======================= -1. The LGPL version 2.1 -======================= - - - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - -==================== -2. The GPL version 2 -==================== - - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/dct64.c audacious-plugins-3.2/src/mpg123/libmpg123/dct64.c --- audacious-plugins-2.4.4/src/mpg123/libmpg123/dct64.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/dct64.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,174 +0,0 @@ -/* - dct64.c: DCT64, the plain C version - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp -*/ - -/* - * Discrete Cosine Tansform (DCT) for subband synthesis - * - * -funroll-loops (for gcc) will remove the loops for better performance - * using loops in the source-code enhances readabillity - * - * - * TODO: write an optimized version for the down-sampling modes - * (in these modes the bands 16-31 (2:1) or 8-31 (4:1) are zero - */ - -#include "mpg123lib_intern.h" - -void dct64(real *out0,real *out1,real *samples) -{ - real bufs[64]; - - { - register int i,j; - register real *b1,*b2,*bs,*costab; - - b1 = samples; - bs = bufs; - costab = pnts[0]+16; - b2 = b1 + 32; - - for(i=15;i>=0;i--) - *bs++ = (*b1++ + *--b2); - for(i=15;i>=0;i--) - *bs++ = REAL_MUL((*--b2 - *b1++), *--costab); - - b1 = bufs; - costab = pnts[1]+8; - b2 = b1 + 16; - - { - for(i=7;i>=0;i--) - *bs++ = (*b1++ + *--b2); - for(i=7;i>=0;i--) - *bs++ = REAL_MUL((*--b2 - *b1++), *--costab); - b2 += 32; - costab += 8; - for(i=7;i>=0;i--) - *bs++ = (*b1++ + *--b2); - for(i=7;i>=0;i--) - *bs++ = REAL_MUL((*b1++ - *--b2), *--costab); - b2 += 32; - } - - bs = bufs; - costab = pnts[2]; - b2 = b1 + 8; - - for(j=2;j;j--) - { - for(i=3;i>=0;i--) - *bs++ = (*b1++ + *--b2); - for(i=3;i>=0;i--) - *bs++ = REAL_MUL((*--b2 - *b1++), costab[i]); - b2 += 16; - for(i=3;i>=0;i--) - *bs++ = (*b1++ + *--b2); - for(i=3;i>=0;i--) - *bs++ = REAL_MUL((*b1++ - *--b2), costab[i]); - b2 += 16; - } - - b1 = bufs; - costab = pnts[3]; - b2 = b1 + 4; - - for(j=4;j;j--) - { - *bs++ = (*b1++ + *--b2); - *bs++ = (*b1++ + *--b2); - *bs++ = REAL_MUL((*--b2 - *b1++), costab[1]); - *bs++ = REAL_MUL((*--b2 - *b1++), costab[0]); - b2 += 8; - *bs++ = (*b1++ + *--b2); - *bs++ = (*b1++ + *--b2); - *bs++ = REAL_MUL((*b1++ - *--b2), costab[1]); - *bs++ = REAL_MUL((*b1++ - *--b2), costab[0]); - b2 += 8; - } - bs = bufs; - costab = pnts[4]; - - for(j=8;j;j--) - { - real v0,v1; - v0=*b1++; v1 = *b1++; - *bs++ = (v0 + v1); - *bs++ = REAL_MUL((v0 - v1), (*costab)); - v0=*b1++; v1 = *b1++; - *bs++ = (v0 + v1); - *bs++ = REAL_MUL((v1 - v0), (*costab)); - } - - } - - - { - register real *b1; - register int i; - - for(b1=bufs,i=8;i;i--,b1+=4) - b1[2] += b1[3]; - - for(b1=bufs,i=4;i;i--,b1+=8) - { - b1[4] += b1[6]; - b1[6] += b1[5]; - b1[5] += b1[7]; - } - - for(b1=bufs,i=2;i;i--,b1+=16) - { - b1[8] += b1[12]; - b1[12] += b1[10]; - b1[10] += b1[14]; - b1[14] += b1[9]; - b1[9] += b1[13]; - b1[13] += b1[11]; - b1[11] += b1[15]; - } - } - - - out0[0x10*16] = REAL_SCALE_DCT64(bufs[0]); - out0[0x10*15] = REAL_SCALE_DCT64(bufs[16+0] + bufs[16+8]); - out0[0x10*14] = REAL_SCALE_DCT64(bufs[8]); - out0[0x10*13] = REAL_SCALE_DCT64(bufs[16+8] + bufs[16+4]); - out0[0x10*12] = REAL_SCALE_DCT64(bufs[4]); - out0[0x10*11] = REAL_SCALE_DCT64(bufs[16+4] + bufs[16+12]); - out0[0x10*10] = REAL_SCALE_DCT64(bufs[12]); - out0[0x10* 9] = REAL_SCALE_DCT64(bufs[16+12] + bufs[16+2]); - out0[0x10* 8] = REAL_SCALE_DCT64(bufs[2]); - out0[0x10* 7] = REAL_SCALE_DCT64(bufs[16+2] + bufs[16+10]); - out0[0x10* 6] = REAL_SCALE_DCT64(bufs[10]); - out0[0x10* 5] = REAL_SCALE_DCT64(bufs[16+10] + bufs[16+6]); - out0[0x10* 4] = REAL_SCALE_DCT64(bufs[6]); - out0[0x10* 3] = REAL_SCALE_DCT64(bufs[16+6] + bufs[16+14]); - out0[0x10* 2] = REAL_SCALE_DCT64(bufs[14]); - out0[0x10* 1] = REAL_SCALE_DCT64(bufs[16+14] + bufs[16+1]); - out0[0x10* 0] = REAL_SCALE_DCT64(bufs[1]); - - out1[0x10* 0] = REAL_SCALE_DCT64(bufs[1]); - out1[0x10* 1] = REAL_SCALE_DCT64(bufs[16+1] + bufs[16+9]); - out1[0x10* 2] = REAL_SCALE_DCT64(bufs[9]); - out1[0x10* 3] = REAL_SCALE_DCT64(bufs[16+9] + bufs[16+5]); - out1[0x10* 4] = REAL_SCALE_DCT64(bufs[5]); - out1[0x10* 5] = REAL_SCALE_DCT64(bufs[16+5] + bufs[16+13]); - out1[0x10* 6] = REAL_SCALE_DCT64(bufs[13]); - out1[0x10* 7] = REAL_SCALE_DCT64(bufs[16+13] + bufs[16+3]); - out1[0x10* 8] = REAL_SCALE_DCT64(bufs[3]); - out1[0x10* 9] = REAL_SCALE_DCT64(bufs[16+3] + bufs[16+11]); - out1[0x10*10] = REAL_SCALE_DCT64(bufs[11]); - out1[0x10*11] = REAL_SCALE_DCT64(bufs[16+11] + bufs[16+7]); - out1[0x10*12] = REAL_SCALE_DCT64(bufs[7]); - out1[0x10*13] = REAL_SCALE_DCT64(bufs[16+7] + bufs[16+15]); - out1[0x10*14] = REAL_SCALE_DCT64(bufs[15]); - out1[0x10*15] = REAL_SCALE_DCT64(bufs[16+15]); - -} - - diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/debug.h audacious-plugins-3.2/src/mpg123/libmpg123/debug.h --- audacious-plugins-2.4.4/src/mpg123/libmpg123/debug.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/debug.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,171 +0,0 @@ -/* - debug.h: - if DEBUG defined: debugging macro fprintf wrappers - else: macros defined to do nothing - That saves typing #ifdef DEBUG all the time and still preserves - lean code without debugging. - - public domain (or LGPL / GPL, if you like that more;-) - generated by debugdef.pl, what was - trivially written by Thomas Orgis -*/ - -#include "config.h" - -/* - I could do that with variadic macros available: - #define sdebug(me, s) fprintf(stderr, "[location] " s "\n") - #define debug(me, s, ...) fprintf(stderr, "[location] " s "}n", __VA_ARGS__) - - Variadic macros are a C99 feature... - Now just predefining stuff non-variadic for up to 15 arguments. - It's cumbersome to have them all with different names, though... -*/ - -#ifdef DEBUG -#include -#define debug(s) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__) -#define debug1(s, a) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a) -#define debug2(s, a, b) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b) -#define debug3(s, a, b, c) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c) -#define debug4(s, a, b, c, d) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d) -#define debug5(s, a, b, c, d, e) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e) -#define debug6(s, a, b, c, d, e, f) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f) -#define debug7(s, a, b, c, d, e, f, g) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g) -#define debug8(s, a, b, c, d, e, f, g, h) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h) -#define debug9(s, a, b, c, d, e, f, g, h, i) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i) -#define debug10(s, a, b, c, d, e, f, g, h, i, j) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j) -#define debug11(s, a, b, c, d, e, f, g, h, i, j, k) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k) -#define debug12(s, a, b, c, d, e, f, g, h, i, j, k, l) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l) -#define debug13(s, a, b, c, d, e, f, g, h, i, j, k, l, m) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m) -#define debug14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n) -#define debug15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) fprintf(stderr, "[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -#else -#define debug(s) -#define debug1(s, a) -#define debug2(s, a, b) -#define debug3(s, a, b, c) -#define debug4(s, a, b, c, d) -#define debug5(s, a, b, c, d, e) -#define debug6(s, a, b, c, d, e, f) -#define debug7(s, a, b, c, d, e, f, g) -#define debug8(s, a, b, c, d, e, f, g, h) -#define debug9(s, a, b, c, d, e, f, g, h, i) -#define debug10(s, a, b, c, d, e, f, g, h, i, j) -#define debug11(s, a, b, c, d, e, f, g, h, i, j, k) -#define debug12(s, a, b, c, d, e, f, g, h, i, j, k, l) -#define debug13(s, a, b, c, d, e, f, g, h, i, j, k, l, m) -#define debug14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) -#define debug15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -#endif - -/* warning macros also here... */ -#ifndef NO_WARNING -#define warning(s) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__) -#define warning1(s, a) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a) -#define warning2(s, a, b) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b) -#define warning3(s, a, b, c) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c) -#define warning4(s, a, b, c, d) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d) -#define warning5(s, a, b, c, d, e) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e) -#define warning6(s, a, b, c, d, e, f) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f) -#define warning7(s, a, b, c, d, e, f, g) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g) -#define warning8(s, a, b, c, d, e, f, g, h) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h) -#define warning9(s, a, b, c, d, e, f, g, h, i) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i) -#define warning10(s, a, b, c, d, e, f, g, h, i, j) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j) -#define warning11(s, a, b, c, d, e, f, g, h, i, j, k) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k) -#define warning12(s, a, b, c, d, e, f, g, h, i, j, k, l) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l) -#define warning13(s, a, b, c, d, e, f, g, h, i, j, k, l, m) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m) -#define warning14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n) -#define warning15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) fprintf(stderr, "[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -#else -#define warning(s) -#define warning1(s, a) -#define warning2(s, a, b) -#define warning3(s, a, b, c) -#define warning4(s, a, b, c, d) -#define warning5(s, a, b, c, d, e) -#define warning6(s, a, b, c, d, e, f) -#define warning7(s, a, b, c, d, e, f, g) -#define warning8(s, a, b, c, d, e, f, g, h) -#define warning9(s, a, b, c, d, e, f, g, h, i) -#define warning10(s, a, b, c, d, e, f, g, h, i, j) -#define warning11(s, a, b, c, d, e, f, g, h, i, j, k) -#define warning12(s, a, b, c, d, e, f, g, h, i, j, k, l) -#define warning13(s, a, b, c, d, e, f, g, h, i, j, k, l, m) -#define warning14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) -#define warning15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -#endif - -/* error macros also here... */ -#ifndef NO_ERROR -#define error(s) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__) -#define error1(s, a) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a) -#define error2(s, a, b) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b) -#define error3(s, a, b, c) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c) -#define error4(s, a, b, c, d) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d) -#define error5(s, a, b, c, d, e) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e) -#define error6(s, a, b, c, d, e, f) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f) -#define error7(s, a, b, c, d, e, f, g) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g) -#define error8(s, a, b, c, d, e, f, g, h) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h) -#define error9(s, a, b, c, d, e, f, g, h, i) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i) -#define error10(s, a, b, c, d, e, f, g, h, i, j) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j) -#define error11(s, a, b, c, d, e, f, g, h, i, j, k) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k) -#define error12(s, a, b, c, d, e, f, g, h, i, j, k, l) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l) -#define error13(s, a, b, c, d, e, f, g, h, i, j, k, l, m) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m) -#define error14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n) -#define error15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) fprintf(stderr, "[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -#else -#define error(s) -#define error1(s, a) -#define error2(s, a, b) -#define error3(s, a, b, c) -#define error4(s, a, b, c, d) -#define error5(s, a, b, c, d, e) -#define error6(s, a, b, c, d, e, f) -#define error7(s, a, b, c, d, e, f, g) -#define error8(s, a, b, c, d, e, f, g, h) -#define error9(s, a, b, c, d, e, f, g, h, i) -#define error10(s, a, b, c, d, e, f, g, h, i, j) -#define error11(s, a, b, c, d, e, f, g, h, i, j, k) -#define error12(s, a, b, c, d, e, f, g, h, i, j, k, l) -#define error13(s, a, b, c, d, e, f, g, h, i, j, k, l, m) -#define error14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) -#define error15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -#endif - -/* ereturn macros also here... */ -#ifndef NO_ERETURN -#define ereturn(rv, s) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__); return rv; }while(0) -#define ereturn1(rv, s, a) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a); return rv; }while(0) -#define ereturn2(rv, s, a, b) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b); return rv; }while(0) -#define ereturn3(rv, s, a, b, c) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c); return rv; }while(0) -#define ereturn4(rv, s, a, b, c, d) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d); return rv; }while(0) -#define ereturn5(rv, s, a, b, c, d, e) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e); return rv; }while(0) -#define ereturn6(rv, s, a, b, c, d, e, f) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f); return rv; }while(0) -#define ereturn7(rv, s, a, b, c, d, e, f, g) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g); return rv; }while(0) -#define ereturn8(rv, s, a, b, c, d, e, f, g, h) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h); return rv; }while(0) -#define ereturn9(rv, s, a, b, c, d, e, f, g, h, i) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i); return rv; }while(0) -#define ereturn10(rv, s, a, b, c, d, e, f, g, h, i, j) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j); return rv; }while(0) -#define ereturn11(rv, s, a, b, c, d, e, f, g, h, i, j, k) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k); return rv; }while(0) -#define ereturn12(rv, s, a, b, c, d, e, f, g, h, i, j, k, l) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l); return rv; }while(0) -#define ereturn13(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m); return rv; }while(0) -#define ereturn14(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n); return rv; }while(0) -#define ereturn15(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) do{ fprintf(stderr, "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o); return rv; }while(0) -#else -#define ereturn(rv, s) return rv -#define ereturn1(rv, s, a) return rv -#define ereturn2(rv, s, a, b) return rv -#define ereturn3(rv, s, a, b, c) return rv -#define ereturn4(rv, s, a, b, c, d) return rv -#define ereturn5(rv, s, a, b, c, d, e) return rv -#define ereturn6(rv, s, a, b, c, d, e, f) return rv -#define ereturn7(rv, s, a, b, c, d, e, f, g) return rv -#define ereturn8(rv, s, a, b, c, d, e, f, g, h) return rv -#define ereturn9(rv, s, a, b, c, d, e, f, g, h, i) return rv -#define ereturn10(rv, s, a, b, c, d, e, f, g, h, i, j) return rv -#define ereturn11(rv, s, a, b, c, d, e, f, g, h, i, j, k) return rv -#define ereturn12(rv, s, a, b, c, d, e, f, g, h, i, j, k, l) return rv -#define ereturn13(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m) return rv -#define ereturn14(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) return rv -#define ereturn15(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) return rv -#endif diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/decode.h audacious-plugins-3.2/src/mpg123/libmpg123/decode.h --- audacious-plugins-2.4.4/src/mpg123/libmpg123/decode.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/decode.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,262 +0,0 @@ -/* - decode.h: common definitions for decode functions - - This file is strongly tied with optimize.h concerning the synth functions. - Perhaps one should restructure that a bit. - - copyright 2007-8 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis, taking WRITE_SAMPLE from decode.c -*/ -#ifndef MPG123_DECODE_H -#define MPG123_DECODE_H - -/* Selection of class of output routines for basic format. */ -#ifndef REAL_IS_FIXED -#define OUT_FORMATS 4 /* Basic output formats: 16bit, 8bit, real and s32 */ -#else -#define OUT_FORMATS 2 /* Only up to 16bit */ -#endif - -#define OUT_16 0 -#define OUT_8 1 -/* Those are defined but not supported for fixed point decoding! */ -#define OUT_REAL 2 /* Write a floating point sample (that is, one matching the internal real type). */ -#define OUT_S32 3 - -#ifdef NO_NTOM -#define NTOM_MAX 1 -#else -#define NTOM_MAX 8 /* maximum allowed factor for upsampling */ -#define NTOM_MAX_FREQ 96000 /* maximum frequency to upsample to / downsample from */ -#define NTOM_MUL (32768) -void ntom_set_ntom(mpg123_handle *fr, off_t num); -#endif - -/* Let's collect all possible synth functions here, for an overview. - If they are actually defined and used depends on preprocessor machinery. - See synth.c and optimize.h for that, also some special C and assembler files. */ - -#ifndef NO_16BIT -/* The signed-16bit-producing variants. */ -int synth_1to1 (real*, int, mpg123_handle*, int); -int synth_1to1_dither (real*, int, mpg123_handle*, int); -int synth_1to1_i386 (real*, int, mpg123_handle*, int); -int synth_1to1_i586 (real*, int, mpg123_handle*, int); -int synth_1to1_i586_dither(real*, int, mpg123_handle*, int); -int synth_1to1_mmx (real*, int, mpg123_handle*, int); -int synth_1to1_3dnow (real*, int, mpg123_handle*, int); -int synth_1to1_sse (real*, int, mpg123_handle*, int); -int synth_1to1_stereo_sse (real*, real*, mpg123_handle*); -int synth_1to1_3dnowext (real*, int, mpg123_handle*, int); -int synth_1to1_altivec (real*, int, mpg123_handle*, int); -int synth_1to1_stereo_altivec(real*, real*, mpg123_handle*); -int synth_1to1_x86_64 (real*, int, mpg123_handle*, int); -int synth_1to1_stereo_x86_64(real*, real*, mpg123_handle*); -int synth_1to1_arm (real*, int, mpg123_handle*, int); -/* This is different, special usage in layer3.c only. - Hence, the name... and now forget about it. - Never use it outside that special portion of code inside layer3.c! */ -int absynth_1to1_i486(real*, int, mpg123_handle*, int); -/* These mono/stereo converters use one of the above for the grunt work. */ -int synth_1to1_mono (real*, mpg123_handle*); -int synth_1to1_mono2stereo(real*, mpg123_handle*); - -/* Sample rate decimation comes in less flavours. */ -#ifndef NO_DOWNSAMPLE -int synth_2to1 (real*, int, mpg123_handle*, int); -int synth_2to1_dither (real*, int, mpg123_handle*, int); -int synth_2to1_i386 (real*, int, mpg123_handle*, int); -int synth_2to1_mono (real*, mpg123_handle*); -int synth_2to1_mono2stereo(real*, mpg123_handle*); -int synth_4to1 (real *,int, mpg123_handle*, int); -int synth_4to1_dither (real *,int, mpg123_handle*, int); -int synth_4to1_i386 (real*, int, mpg123_handle*, int); -int synth_4to1_mono (real*, mpg123_handle*); -int synth_4to1_mono2stereo(real*, mpg123_handle*); -#endif -#ifndef NO_NTOM -/* NtoM is really just one implementation. */ -int synth_ntom (real *,int, mpg123_handle*, int); -int synth_ntom_mono (real *, mpg123_handle *); -int synth_ntom_mono2stereo (real *, mpg123_handle *); -#endif -#endif - -#ifndef NO_8BIT -/* The 8bit-producing variants. */ -/* There are direct 8-bit synths and wrappers over a possibly optimized 16bit one. */ -int synth_1to1_8bit (real*, int, mpg123_handle*, int); -int synth_1to1_8bit_i386 (real*, int, mpg123_handle*, int); -#ifndef NO_16BIT -int synth_1to1_8bit_wrap (real*, int, mpg123_handle*, int); -int synth_1to1_8bit_mono (real*, mpg123_handle*); -#endif -int synth_1to1_8bit_mono2stereo(real*, mpg123_handle*); -#ifndef NO_16BIT -int synth_1to1_8bit_wrap_mono (real*, mpg123_handle*); -int synth_1to1_8bit_wrap_mono2stereo(real*, mpg123_handle*); -#endif -#ifndef NO_DOWNSAMPLE -int synth_2to1_8bit (real*, int, mpg123_handle*, int); -int synth_2to1_8bit_i386 (real*, int, mpg123_handle*, int); -int synth_2to1_8bit_mono (real*, mpg123_handle*); -int synth_2to1_8bit_mono2stereo(real*, mpg123_handle*); -int synth_4to1_8bit (real*, int, mpg123_handle*, int); -int synth_4to1_8bit_i386 (real*, int, mpg123_handle*, int); -int synth_4to1_8bit_mono (real*, mpg123_handle*); -int synth_4to1_8bit_mono2stereo(real*, mpg123_handle*); -#endif -#ifndef NO_NTOM -int synth_ntom_8bit (real*, int, mpg123_handle*, int); -int synth_ntom_8bit_mono (real*, mpg123_handle*); -int synth_ntom_8bit_mono2stereo(real*, mpg123_handle*); -#endif -#endif - -#ifndef REAL_IS_FIXED - -#ifndef NO_REAL -/* The real-producing variants. */ -int synth_1to1_real (real*, int, mpg123_handle*, int); -int synth_1to1_real_i386 (real*, int, mpg123_handle*, int); -int synth_1to1_real_sse (real*, int, mpg123_handle*, int); -int synth_1to1_real_stereo_sse (real*, real*, mpg123_handle*); -int synth_1to1_real_x86_64 (real*, int, mpg123_handle*, int); -int synth_1to1_real_stereo_x86_64(real*, real*, mpg123_handle*); -int synth_1to1_real_altivec (real*, int, mpg123_handle*, int); -int synth_1to1_real_stereo_altivec(real*, real*, mpg123_handle*); -int synth_1to1_real_mono (real*, mpg123_handle*); -int synth_1to1_real_mono2stereo(real*, mpg123_handle*); -#ifndef NO_DOWNSAMPLE -int synth_2to1_real (real*, int, mpg123_handle*, int); -int synth_2to1_real_i386 (real*, int, mpg123_handle*, int); -int synth_2to1_real_mono (real*, mpg123_handle*); -int synth_2to1_real_mono2stereo(real*, mpg123_handle*); -int synth_4to1_real (real*, int, mpg123_handle*, int); -int synth_4to1_real_i386 (real*, int, mpg123_handle*, int); -int synth_4to1_real_mono (real*, mpg123_handle*); -int synth_4to1_real_mono2stereo(real*, mpg123_handle*); -#endif -#ifndef NO_NTOM -int synth_ntom_real (real*, int, mpg123_handle*, int); -int synth_ntom_real_mono (real*, mpg123_handle*); -int synth_ntom_real_mono2stereo(real*, mpg123_handle*); -#endif -#endif - -#ifndef NO_32BIT -/* 32bit integer */ -int synth_1to1_s32 (real*, int, mpg123_handle*, int); -int synth_1to1_s32_i386 (real*, int, mpg123_handle*, int); -int synth_1to1_s32_sse (real*, int, mpg123_handle*, int); -int synth_1to1_s32_stereo_sse (real*, real*, mpg123_handle*); -int synth_1to1_s32_x86_64 (real*, int, mpg123_handle*, int); -int synth_1to1_s32_stereo_x86_64(real*, real*, mpg123_handle*); -int synth_1to1_s32_altivec (real*, int, mpg123_handle*, int); -int synth_1to1_s32_stereo_altivec(real*, real*, mpg123_handle*); -int synth_1to1_s32_mono (real*, mpg123_handle*); -int synth_1to1_s32_mono2stereo(real*, mpg123_handle*); -#ifndef NO_DOWNSAMPLE -int synth_2to1_s32 (real*, int, mpg123_handle*, int); -int synth_2to1_s32_i386 (real*, int, mpg123_handle*, int); -int synth_2to1_s32_mono (real*, mpg123_handle*); -int synth_2to1_s32_mono2stereo(real*, mpg123_handle*); -int synth_4to1_s32 (real*, int, mpg123_handle*, int); -int synth_4to1_s32_i386 (real*, int, mpg123_handle*, int); -int synth_4to1_s32_mono (real*, mpg123_handle*); -int synth_4to1_s32_mono2stereo(real*, mpg123_handle*); -#endif -#ifndef NO_NTOM -int synth_ntom_s32 (real*, int, mpg123_handle*, int); -int synth_ntom_s32_mono (real*, mpg123_handle*); -int synth_ntom_s32_mono2stereo(real*, mpg123_handle*); -#endif -#endif - -#endif /* FIXED */ - - -/* Inside these synth functions, some dct64 variants may be used. - The special optimized ones that only appear in assembler code are not mentioned here. - And, generally, these functions are only employed in a matching synth function. */ -void dct64 (real *,real *,real *); -void dct64_i386 (real *,real *,real *); -void dct64_altivec(real *,real *,real *); -void dct64_i486(int*, int* , real*); /* Yeah, of no use outside of synth_i486.c .*/ - -/* This is used by the layer 3 decoder, one generic function and 3DNow variants. */ -void dct36 (real *,real *,real *,real *,real *); -void dct36_3dnow (real *,real *,real *,real *,real *); -void dct36_3dnowext(real *,real *,real *,real *,real *); - -/* Tools for NtoM resampling synth, defined in ntom.c . */ -int synth_ntom_set_step(mpg123_handle *fr); /* prepare ntom decoding */ -unsigned long ntom_val(mpg123_handle *fr, off_t frame); /* compute ntom_val for frame offset */ -/* Frame and sample offsets. */ -#ifndef NO_NTOM -/* - Outsamples of _this_ frame. - To be exact: The samples to be expected from the next frame decode (using the current ntom_val). When you already decoded _this_ frame, this is the number of samples to be expected from the next one. -*/ -off_t ntom_frame_outsamples(mpg123_handle *fr); -/* Total out/insample offset. */ -off_t ntom_frmouts(mpg123_handle *fr, off_t frame); -off_t ntom_ins2outs(mpg123_handle *fr, off_t ins); -off_t ntom_frameoff(mpg123_handle *fr, off_t soff); -#endif - -/* Initialization of any static data that majy be needed at runtime. - Make sure you call these once before it is too late. */ -#ifndef NO_LAYER3 -void init_layer3(void); -real init_layer3_gainpow2(mpg123_handle *fr, int i); -void init_layer3_stuff(mpg123_handle *fr, real (*gainpow2)(mpg123_handle *fr, int i)); -#endif -#ifndef NO_LAYER12 -void init_layer12(void); -real* init_layer12_table(mpg123_handle *fr, real *table, int m); -void init_layer12_stuff(mpg123_handle *fr, real* (*init_table)(mpg123_handle *fr, real *table, int m)); -#endif - -void prepare_decode_tables(void); - -extern real *pnts[5]; /* tabinit provides, dct64 needs */ - -/* Runtime (re)init functions; needed more often. */ -void make_decode_tables(mpg123_handle *fr); /* For every volume change. */ -/* Stuff needed after updating synth setup (see set_synth_functions()). */ - -#ifdef OPT_MMXORSSE -/* Special treatment for mmx-like decoders, these functions go into the slots below. */ -void make_decode_tables_mmx(mpg123_handle *fr); -#ifndef NO_LAYER3 -real init_layer3_gainpow2_mmx(mpg123_handle *fr, int i); -#endif -#ifndef NO_LAYER12 -real* init_layer12_table_mmx(mpg123_handle *fr, real *table, int m); -#endif -#endif - -#ifndef NO_8BIT -/* Needed when switching to 8bit output. */ -int make_conv16to8_table(mpg123_handle *fr); -#endif - -/* These are the actual workers. - They operate on the parsed frame data and handle decompression to audio samples. - The synth functions defined above are called from inside the layer handlers. */ - -#ifndef NO_LAYER3 -int do_layer3(mpg123_handle *fr); -#endif -#ifndef NO_LAYER2 -int do_layer2(mpg123_handle *fr); -#endif -#ifndef NO_LAYER1 -int do_layer1(mpg123_handle *fr); -#endif -/* There's an 3DNow counterpart in asm. */ -void do_equalizer(real *bandPtr,int channel, real equalizer[2][32]); - -#endif diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/equalizer.c audacious-plugins-3.2/src/mpg123/libmpg123/equalizer.c --- audacious-plugins-2.4.4/src/mpg123/libmpg123/equalizer.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/equalizer.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -/* - equalizer.c: equalizer settings - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp -*/ - - -#include "mpg123lib_intern.h" - -void do_equalizer(real *bandPtr,int channel, real equalizer[2][32]) -{ - int i; - for(i=0;i<32;i++) - bandPtr[i] = REAL_MUL(bandPtr[i], equalizer[channel][i]); -} diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/feature.c audacious-plugins-3.2/src/mpg123/libmpg123/feature.c --- audacious-plugins-2.4.4/src/mpg123/libmpg123/feature.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/feature.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,106 +0,0 @@ -#include "mpg123lib_intern.h" - -int mpg123_feature(const enum mpg123_feature_set key) -{ - switch(key) - { - case MPG123_FEATURE_ABI_UTF8OPEN: -#ifdef WANT_WIN32_UNICODE - return 1; -#else - return 0; -#endif /* WANT_WIN32_UNICODE */ - - case MPG123_FEATURE_OUTPUT_8BIT: -#ifdef NO_8BIT - return 0; -#else - return 1; -#endif /* mpg123_output_8bit */ - - case MPG123_FEATURE_OUTPUT_16BIT: -#ifdef NO_16BIT - return 0; -#else - return 1; -#endif /* mpg123_output_16bit */ - - case MPG123_FEATURE_OUTPUT_32BIT: -#ifdef NO_32BIT - return 0; -#else - return 1; -#endif /* mpg123_output_32bit */ - - case MPG123_FEATURE_PARSE_ID3V2: -#ifdef NO_ID3V2 - return 0; -#else - return 1; -#endif /* NO_ID3V2 */ - - case MPG123_FEATURE_DECODE_LAYER1: -#ifdef NO_LAYER1 - return 0; -#else - return 1; -#endif /* NO_LAYER1 */ - - case MPG123_FEATURE_DECODE_LAYER2: -#ifdef NO_LAYER2 - return 0; -#else - return 1; -#endif /* NO_LAYER2 */ - - case MPG123_FEATURE_DECODE_LAYER3: -#ifdef NO_LAYER3 - return 0; -#else - return 1; -#endif /* NO_LAYER3 */ - - case MPG123_FEATURE_DECODE_ACCURATE: -#ifdef ACCURATE_ROUNDING - return 1; -#else - return 0; -#endif /* ACCURATE_ROUNDING */ - - case MPG123_FEATURE_DECODE_DOWNSAMPLE: -#ifdef NO_DOWNSAMPLE - return 0; -#else - return 1; -#endif /* NO_DOWNSAMPLE */ - - case MPG123_FEATURE_DECODE_NTOM: -#ifdef NO_NTOM - return 0; -#else - return 1; -#endif /* NO_NTOM */ - - case MPG123_FEATURE_PARSE_ICY: -#ifdef NO_ICY - return 0; -#else - return 1; -#endif /* NO_ICY */ - - case MPG123_FEATURE_INDEX: -#ifdef FRAME_INDEX - return 1; -#else - return 0; -#endif /* FRAME_INDEX */ - case MPG123_FEATURE_TIMEOUT_READ: -#ifdef TIMEOUT_READ - return 1; -#else - return 0; -#endif - - default: return 0; - } -} diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/format.c audacious-plugins-3.2/src/mpg123/libmpg123/format.c --- audacious-plugins-2.4.4/src/mpg123/libmpg123/format.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/format.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,395 +0,0 @@ -/* - format:routines to deal with audio (output) format - - copyright 2008-9 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis, starting with parts of the old audio.c, with only faintly manage to show now -*/ - -#include "mpg123lib_intern.h" -#include "debug.h" - -/* static int chans[NUM_CHANNELS] = { 1 , 2 }; */ -static const long my_rates[MPG123_RATES] = /* only the standard rates */ -{ - 8000, 11025, 12000, - 16000, 22050, 24000, - 32000, 44100, 48000, -}; - -static const int my_encodings[MPG123_ENCODINGS] = -{ - MPG123_ENC_SIGNED_16, - MPG123_ENC_UNSIGNED_16, - MPG123_ENC_SIGNED_32, - MPG123_ENC_UNSIGNED_32, - MPG123_ENC_FLOAT_32, - MPG123_ENC_FLOAT_64, - MPG123_ENC_SIGNED_8, - MPG123_ENC_UNSIGNED_8, - MPG123_ENC_ULAW_8, - MPG123_ENC_ALAW_8 -}; - -/* Only one type of float is supported. */ -# ifdef REAL_IS_FLOAT -# define MPG123_FLOAT_ENC MPG123_ENC_FLOAT_32 -# else -# define MPG123_FLOAT_ENC MPG123_ENC_FLOAT_64 -# endif - -/* The list of actually possible encodings. */ -static const int good_encodings[] = -{ -#ifndef NO_16BIT - MPG123_ENC_SIGNED_16, - MPG123_ENC_UNSIGNED_16, -#endif -#ifndef NO_32BIT - MPG123_ENC_SIGNED_32, - MPG123_ENC_UNSIGNED_32, -#endif -#ifndef NO_REAL - MPG123_FLOAT_ENC, -#endif -#ifndef NO_8BIT - MPG123_ENC_SIGNED_8, - MPG123_ENC_UNSIGNED_8, - MPG123_ENC_ULAW_8, - MPG123_ENC_ALAW_8 -#endif -}; - -/* Check if encoding is a valid one in this build. - ...lazy programming: linear search. */ -static int good_enc(const int enc) -{ - size_t i; - for(i=0; iforce_rate != 0 && mp->force_rate == r) return MPG123_RATES; -#endif - - return -1; -} - -static int enc2num(int encoding) -{ - int i; - for(i=0;ichannels-1; - int rn = rate2num(&fr->p, nf->rate); - if(rn >= 0) for(i=f0;ip.audio_caps[c][rn][i]) - { - nf->encoding = my_encodings[i]; - return 1; - } - } - return 0; -} - -static int freq_fit(mpg123_handle *fr, struct audioformat *nf, int f0, int f2) -{ - nf->rate = frame_freq(fr)>>fr->p.down_sample; - if(cap_fit(fr,nf,f0,f2)) return 1; - nf->rate>>=1; - if(cap_fit(fr,nf,f0,f2)) return 1; - nf->rate>>=1; - if(cap_fit(fr,nf,f0,f2)) return 1; -#ifndef NO_NTOM - /* If nothing worked, try the other rates, only without constrains from user. - In case you didn't guess: We enable flexible resampling if we find a working rate. */ - if(!fr->p.force_rate && fr->p.down_sample == 0) - { - int i; - int c = nf->channels-1; - int rn = rate2num(&fr->p, frame_freq(fr)); - int rrn; - if(rn < 0) return 0; - /* Try higher rates first. */ - for(i=f0;ip.audio_caps[c][rrn][i]) - { - nf->rate = my_rates[rrn]; - nf->encoding = my_encodings[i]; - return 1; - } - /* Then lower rates. */ - for(i=f0;i=0; --rrn) - if(fr->p.audio_caps[c][rrn][i]) - { - nf->rate = my_rates[rrn]; - nf->encoding = my_encodings[i]; - return 1; - } - } -#endif - - return 0; -} - -/* match constraints against supported audio formats, store possible setup in frame - return: -1: error; 0: no format change; 1: format change */ -int frame_output_format(mpg123_handle *fr) -{ - struct audioformat nf; - int f0=0; - int f2=MPG123_ENCODINGS; /* Omit the 32bit and float encodings. */ - mpg123_pars *p = &fr->p; - /* initialize new format, encoding comes later */ - nf.channels = fr->stereo; - - /* All this forcing should be removed in favour of the capabilities table... */ - if(p->flags & MPG123_FORCE_8BIT) - { - f0 = 6; - f2 = 10; - } - if(p->flags & MPG123_FORCE_FLOAT) - { - f0 = 4; - f2 = 6; - } - - /* force stereo is stronger */ - if(p->flags & MPG123_FORCE_MONO) nf.channels = 1; - if(p->flags & MPG123_FORCE_STEREO) nf.channels = 2; - -#ifndef NO_NTOM - if(p->force_rate) - { - nf.rate = p->force_rate; - if(cap_fit(fr,&nf,f0,2)) goto end; /* 16bit encodings */ - if(cap_fit(fr,&nf,f0<=2 ? 2 : f0,f2)) goto end; /* 8bit encodings */ - - /* try again with different stereoness */ - if(nf.channels == 2 && !(p->flags & MPG123_FORCE_STEREO)) nf.channels = 1; - else if(nf.channels == 1 && !(p->flags & MPG123_FORCE_MONO)) nf.channels = 2; - - if(cap_fit(fr,&nf,f0,2)) goto end; /* 16bit encodings */ - if(cap_fit(fr,&nf,f0<=2 ? 2 : f0,f2)) goto end; /* 8bit encodings */ - - if(NOQUIET) - error3( "Unable to set up output format! Constraints: %s%s%liHz.", - ( p->flags & MPG123_FORCE_STEREO ? "stereo, " : - (p->flags & MPG123_FORCE_MONO ? "mono, " : "") ), - (p->flags & MPG123_FORCE_8BIT ? "8bit, " : ""), - p->force_rate ); -/* if(NOQUIET && p->verbose <= 1) print_capabilities(fr); */ - - fr->err = MPG123_BAD_OUTFORMAT; - return -1; - } -#endif - - if(freq_fit(fr, &nf, f0, 2)) goto end; /* try rates with 16bit */ - if(freq_fit(fr, &nf, f0<=2 ? 2 : f0, f2)) goto end; /* ... 8bit */ - - /* try again with different stereoness */ - if(nf.channels == 2 && !(p->flags & MPG123_FORCE_STEREO)) nf.channels = 1; - else if(nf.channels == 1 && !(p->flags & MPG123_FORCE_MONO)) nf.channels = 2; - - if(freq_fit(fr, &nf, f0, 2)) goto end; /* try rates with 16bit */ - if(freq_fit(fr, &nf, f0<=2 ? 2 : f0, f2)) goto end; /* ... 8bit */ - - /* Here is the _bad_ end. */ - if(NOQUIET) - { - error5( "Unable to set up output format! Constraints: %s%s%li, %li or %liHz.", - ( p->flags & MPG123_FORCE_STEREO ? "stereo, " : - (p->flags & MPG123_FORCE_MONO ? "mono, " : "") ), - (p->flags & MPG123_FORCE_8BIT ? "8bit, " : ""), - frame_freq(fr), frame_freq(fr)>>1, frame_freq(fr)>>2 ); - } -/* if(NOQUIET && p->verbose <= 1) print_capabilities(fr); */ - - fr->err = MPG123_BAD_OUTFORMAT; - return -1; - -end: /* Here is the _good_ end. */ - /* we had a successful match, now see if there's a change */ - if(nf.rate == fr->af.rate && nf.channels == fr->af.channels && nf.encoding == fr->af.encoding) - { - debug2("Old format with %i channels, and FORCE_MONO=%li", nf.channels, p->flags & MPG123_FORCE_MONO); - return 0; /* the same format as before */ - } - else /* a new format */ - { - debug1("New format with %i channels!", nf.channels); - fr->af.rate = nf.rate; - fr->af.channels = nf.channels; - fr->af.encoding = nf.encoding; - /* Cache the size of one sample in bytes, for ease of use. */ - if(fr->af.encoding & MPG123_ENC_8) - fr->af.encsize = 1; - else if(fr->af.encoding & MPG123_ENC_16) - fr->af.encsize = 2; - else if(fr->af.encoding & MPG123_ENC_32 || fr->af.encoding == MPG123_ENC_FLOAT_32) - fr->af.encsize = 4; - else if(fr->af.encoding == MPG123_ENC_FLOAT_64) - fr->af.encsize = 8; - else - { - if(NOQUIET) error1("Some unknown encoding??? (%i)", fr->af.encoding); - - fr->err = MPG123_BAD_OUTFORMAT; - return -1; - } - return 1; - } -} - -int attribute_align_arg mpg123_format_none(mpg123_handle *mh) -{ - int r; - if(mh == NULL) return MPG123_ERR; - - r = mpg123_fmt_none(&mh->p); - if(r != MPG123_OK){ mh->err = r; r = MPG123_ERR; } - - return r; -} - -int attribute_align_arg mpg123_fmt_none(mpg123_pars *mp) -{ - if(mp == NULL) return MPG123_BAD_PARS; - - if(PVERB(mp,3)) fprintf(stderr, "Note: Disabling all formats.\n"); - - memset(mp->audio_caps,0,sizeof(mp->audio_caps)); - return MPG123_OK; -} - -int attribute_align_arg mpg123_format_all(mpg123_handle *mh) -{ - int r; - if(mh == NULL) return MPG123_ERR; - - r = mpg123_fmt_all(&mh->p); - if(r != MPG123_OK){ mh->err = r; r = MPG123_ERR; } - - return r; -} - -int attribute_align_arg mpg123_fmt_all(mpg123_pars *mp) -{ - size_t rate, ch, enc; - if(mp == NULL) return MPG123_BAD_PARS; - - if(PVERB(mp,3)) fprintf(stderr, "Note: Enabling all formats.\n"); - - for(ch=0; ch < NUM_CHANNELS; ++ch) - for(rate=0; rate < MPG123_RATES+1; ++rate) - for(enc=0; enc < MPG123_ENCODINGS; ++enc) - mp->audio_caps[ch][rate][enc] = good_enc(my_encodings[enc]) ? 1 : 0; - - return MPG123_OK; -} - -int attribute_align_arg mpg123_format(mpg123_handle *mh, long rate, int channels, int encodings) -{ - int r; - if(mh == NULL) return MPG123_ERR; - r = mpg123_fmt(&mh->p, rate, channels, encodings); - if(r != MPG123_OK){ mh->err = r; r = MPG123_ERR; } - - return r; -} - -int attribute_align_arg mpg123_fmt(mpg123_pars *mp, long rate, int channels, int encodings) -{ - int ie, ic, ratei; - int ch[2] = {0, 1}; - if(mp == NULL) return MPG123_BAD_PARS; - if(!(channels & (MPG123_MONO|MPG123_STEREO))) return MPG123_BAD_CHANNEL; - - if(PVERB(mp,3)) fprintf(stderr, "Note: Want to enable format %li/%i for encodings 0x%x.\n", rate, channels, encodings); - - if(!(channels & MPG123_STEREO)) ch[1] = 0; /* {0,0} */ - else if(!(channels & MPG123_MONO)) ch[0] = 1; /* {1,1} */ - ratei = rate2num(mp, rate); - if(ratei < 0) return MPG123_BAD_RATE; - - /* now match the encodings */ - for(ic = 0; ic < 2; ++ic) - { - for(ie = 0; ie < MPG123_ENCODINGS; ++ie) - if(good_enc(my_encodings[ie]) && ((my_encodings[ie] & encodings) == my_encodings[ie])) - mp->audio_caps[ch[ic]][ratei][ie] = 1; - - if(ch[0] == ch[1]) break; /* no need to do it again */ - } - - return MPG123_OK; -} - -int attribute_align_arg mpg123_format_support(mpg123_handle *mh, long rate, int encoding) -{ - if(mh == NULL) return 0; - else return mpg123_fmt_support(&mh->p, rate, encoding); -} - -int attribute_align_arg mpg123_fmt_support(mpg123_pars *mp, long rate, int encoding) -{ - int ch = 0; - int ratei, enci; - ratei = rate2num(mp, rate); - enci = enc2num(encoding); - if(mp == NULL || ratei < 0 || enci < 0) return 0; - if(mp->audio_caps[0][ratei][enci]) ch |= MPG123_MONO; - if(mp->audio_caps[1][ratei][enci]) ch |= MPG123_STEREO; - return ch; -} - -/* Call this one to ensure that any valid format will be something different than this. */ -void invalidate_format(struct audioformat *af) -{ - af->encoding = 0; - af->rate = 0; - af->channels = 0; -} - -/* take into account: channels, bytes per sample -- NOT resampling!*/ -off_t samples_to_bytes(mpg123_handle *fr , off_t s) -{ - return s * fr->af.encsize * fr->af.channels; -} - -off_t bytes_to_samples(mpg123_handle *fr , off_t b) -{ - return b / fr->af.encsize / fr->af.channels; -} diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/frame.c audacious-plugins-3.2/src/mpg123/libmpg123/frame.c --- audacious-plugins-2.4.4/src/mpg123/libmpg123/frame.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/frame.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,988 +0,0 @@ -/* - frame: Heap of routines dealing with the core mpg123 data structure. - - copyright 2008-2010 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis -*/ - -#include "mpg123lib_intern.h" -#include "getcpuflags.h" -#include "debug.h" - -static void frame_fixed_reset(mpg123_handle *fr); - -/* that's doubled in decode_ntom.c */ -#define NTOM_MUL (32768) - -#define aligned_pointer(p, type, alignment) align_the_pointer(p, alignment) -static void *align_the_pointer(void *base, unsigned int alignment) -{ - /* - Work in unsigned integer realm, explicitly. - Tricking the compiler into integer operations like % by invoking base-NULL is dangerous: It results into ptrdiff_t, which gets negative on big addresses. Big screw up, that. - I try to do it "properly" here: Casting only to uintptr_t and no artihmethic with void*. - */ - uintptr_t baseval = (uintptr_t)(char*)base; - uintptr_t aoff = baseval % alignment; - - debug3("align_the_pointer: pointer %p is off by %u from %u", - base, (unsigned int)aoff, alignment); - - if(aoff) return (char*)base+alignment-aoff; - else return base; -} - -void frame_default_pars(mpg123_pars *mp) -{ - mp->outscale = 1.0; -#ifdef GAPLESS - mp->flags = MPG123_GAPLESS; -#else - mp->flags = 0; -#endif -#ifndef NO_NTOM - mp->force_rate = 0; -#endif - mp->down_sample = 0; - mp->rva = 0; - mp->halfspeed = 0; - mp->doublespeed = 0; - mp->verbose = 0; -#ifndef NO_ICY - mp->icy_interval = 0; -#endif - mp->timeout = 0; - mp->resync_limit = 1024; -#ifdef FRAME_INDEX - mp->index_size = INDEX_SIZE; -#endif - mp->preframes = 4; /* That's good for layer 3 ISO compliance bitstream. */ - mpg123_fmt_all(mp); -} - -void frame_init(mpg123_handle *fr) -{ - frame_init_par(fr, NULL); -} - -void frame_init_par(mpg123_handle *fr, mpg123_pars *mp) -{ - fr->own_buffer = FALSE; - fr->buffer.data = NULL; - fr->rawbuffs = NULL; - fr->rawbuffss = 0; - fr->rawdecwin = NULL; - fr->rawdecwins = 0; -#ifndef NO_8BIT - fr->conv16to8_buf = NULL; -#endif -#ifdef OPT_DITHER - fr->dithernoise = NULL; -#endif - fr->layerscratch = NULL; - fr->xing_toc = NULL; - fr->cpu_opts.type = defdec(); - fr->cpu_opts.class = decclass(fr->cpu_opts.type); -#ifndef NO_NTOM - /* these two look unnecessary, check guarantee for synth_ntom_set_step (in control_generic, even)! */ - fr->ntom_val[0] = NTOM_MUL>>1; - fr->ntom_val[1] = NTOM_MUL>>1; - fr->ntom_step = NTOM_MUL; -#endif - /* unnecessary: fr->buffer.size = fr->buffer.fill = 0; */ - mpg123_reset_eq(fr); - init_icy(&fr->icy); - init_id3(fr); - /* frame_outbuffer is missing... */ - /* frame_buffers is missing... that one needs cpu opt setting! */ - /* after these... frame_reset is needed before starting full decode */ - invalidate_format(&fr->af); - fr->rdat.r_read = NULL; - fr->rdat.r_lseek = NULL; - fr->rdat.iohandle = NULL; - fr->rdat.r_read_handle = NULL; - fr->rdat.r_lseek_handle = NULL; - fr->rdat.cleanup_handle = NULL; - fr->wrapperdata = NULL; - fr->wrapperclean = NULL; - fr->decoder_change = 1; - fr->err = MPG123_OK; - if(mp == NULL) frame_default_pars(&fr->p); - else memcpy(&fr->p, mp, sizeof(struct mpg123_pars_struct)); - - fr->down_sample = 0; /* Initialize to silence harmless errors when debugging. */ - frame_fixed_reset(fr); /* Reset only the fixed data, dynamic buffers are not there yet! */ - fr->synth = NULL; - fr->synth_mono = NULL; - fr->make_decode_tables = NULL; -#ifdef FRAME_INDEX - fi_init(&fr->index); - frame_index_setup(fr); /* Apply the size setting. */ -#endif -} - -#ifdef OPT_DITHER -/* Also, only allocate the memory for the table on demand. - In future, one could create special noise for different sampling frequencies(?). */ -int frame_dither_init(mpg123_handle *fr) -{ - /* run-time dither noise table generation */ - if(fr->dithernoise == NULL) - { - fr->dithernoise = malloc(sizeof(float)*DITHERSIZE); - if(fr->dithernoise == NULL) return 0; - - dither_table_init(fr->dithernoise); - } - return 1; -} -#endif - -mpg123_pars attribute_align_arg *mpg123_new_pars(int *error) -{ - mpg123_pars *mp = malloc(sizeof(struct mpg123_pars_struct)); - if(mp != NULL){ frame_default_pars(mp); if(error != NULL) *error = MPG123_OK; } - else if(error != NULL) *error = MPG123_OUT_OF_MEM; - return mp; -} - -void attribute_align_arg mpg123_delete_pars(mpg123_pars* mp) -{ - if(mp != NULL) free(mp); -} - -int attribute_align_arg mpg123_reset_eq(mpg123_handle *mh) -{ - int i; - mh->have_eq_settings = 0; - for(i=0; i < 32; ++i) mh->equalizer[0][i] = mh->equalizer[1][i] = DOUBLE_TO_REAL(1.0); - - return MPG123_OK; -} - -int frame_outbuffer(mpg123_handle *fr) -{ - size_t size = mpg123_safe_buffer()*AUDIOBUFSIZE; - if(!fr->own_buffer) fr->buffer.data = NULL; - if(fr->buffer.data != NULL && fr->buffer.size != size) - { - free(fr->buffer.data); - fr->buffer.data = NULL; - } - fr->buffer.size = size; - if(fr->buffer.data == NULL) fr->buffer.data = (unsigned char*) malloc(fr->buffer.size); - if(fr->buffer.data == NULL) - { - fr->err = MPG123_OUT_OF_MEM; - return -1; - } - fr->own_buffer = TRUE; - fr->buffer.fill = 0; - return 0; -} - -int attribute_align_arg mpg123_replace_buffer(mpg123_handle *mh, unsigned char *data, size_t size) -{ - if(data == NULL || size < mpg123_safe_buffer()) - { - mh->err = MPG123_BAD_BUFFER; - return MPG123_ERR; - } - if(mh->own_buffer && mh->buffer.data != NULL) free(mh->buffer.data); - mh->own_buffer = FALSE; - mh->buffer.data = data; - mh->buffer.size = size; - mh->buffer.fill = 0; - return MPG123_OK; -} - -#ifdef FRAME_INDEX -int frame_index_setup(mpg123_handle *fr) -{ - int ret = MPG123_ERR; - if(fr->p.index_size >= 0) - { /* Simple fixed index. */ - fr->index.grow_size = 0; - debug1("resizing index to %li", fr->p.index_size); - ret = fi_resize(&fr->index, (size_t)fr->p.index_size); - debug2("index resized... %lu at %p", (unsigned long)fr->index.size, (void*)fr->index.data); - } - else - { /* A growing index. We give it a start, though. */ - fr->index.grow_size = (size_t)(- fr->p.index_size); - if(fr->index.size < fr->index.grow_size) - ret = fi_resize(&fr->index, fr->index.grow_size); - else - ret = MPG123_OK; /* We have minimal size already... and since growing is OK... */ - } - debug2("set up frame index of size %lu (ret=%i)", (unsigned long)fr->index.size, ret); - - return ret; -} -#endif - -static void frame_decode_buffers_reset(mpg123_handle *fr) -{ - memset(fr->rawbuffs, 0, fr->rawbuffss); -} - -int frame_buffers(mpg123_handle *fr) -{ - int buffssize = 0; - debug1("frame %p buffer", (void*)fr); -/* - the used-to-be-static buffer of the synth functions, has some subtly different types/sizes - - 2to1, 4to1, ntom, generic, i386: real[2][2][0x110] - mmx, sse: short[2][2][0x110] - i586(_dither): 4352 bytes; int/long[2][2][0x110] - i486: int[2][2][17*FIR_BUFFER_SIZE] - altivec: static real __attribute__ ((aligned (16))) buffs[4][4][0x110] - - Huh, altivec looks like fun. Well, let it be large... then, the 16 byte alignment seems to be implicit on MacOSX malloc anyway. - Let's make a reasonable attempt to allocate enough memory... - Keep in mind: biggest ones are i486 and altivec (mutually exclusive!), then follows i586 and normal real. - mmx/sse use short but also real for resampling. - Thus, minimum is 2*2*0x110*sizeof(real). -*/ - if(fr->cpu_opts.type == altivec) buffssize = 4*4*0x110*sizeof(real); -#ifdef OPT_I486 - else if(fr->cpu_opts.type == ivier) buffssize = 2*2*17*FIR_BUFFER_SIZE*sizeof(int); -#endif - else if(fr->cpu_opts.type == ifuenf || fr->cpu_opts.type == ifuenf_dither || fr->cpu_opts.type == dreidnow) - buffssize = 2*2*0x110*4; /* don't rely on type real, we need 4352 bytes */ - - if(2*2*0x110*sizeof(real) > buffssize) - buffssize = 2*2*0x110*sizeof(real); - buffssize += 15; /* For 16-byte alignment (SSE likes that). */ - - if(fr->rawbuffs != NULL && fr->rawbuffss != buffssize) - { - free(fr->rawbuffs); - fr->rawbuffs = NULL; - } - - if(fr->rawbuffs == NULL) fr->rawbuffs = (unsigned char*) malloc(buffssize); - if(fr->rawbuffs == NULL) return -1; - fr->rawbuffss = buffssize; - fr->short_buffs[0][0] = aligned_pointer(fr->rawbuffs,short,16); - fr->short_buffs[0][1] = fr->short_buffs[0][0] + 0x110; - fr->short_buffs[1][0] = fr->short_buffs[0][1] + 0x110; - fr->short_buffs[1][1] = fr->short_buffs[1][0] + 0x110; - fr->real_buffs[0][0] = aligned_pointer(fr->rawbuffs,real,16); - fr->real_buffs[0][1] = fr->real_buffs[0][0] + 0x110; - fr->real_buffs[1][0] = fr->real_buffs[0][1] + 0x110; - fr->real_buffs[1][1] = fr->real_buffs[1][0] + 0x110; -#ifdef OPT_I486 - if(fr->cpu_opts.type == ivier) - { - fr->int_buffs[0][0] = (int*) fr->rawbuffs; - fr->int_buffs[0][1] = fr->int_buffs[0][0] + 17*FIR_BUFFER_SIZE; - fr->int_buffs[1][0] = fr->int_buffs[0][1] + 17*FIR_BUFFER_SIZE; - fr->int_buffs[1][1] = fr->int_buffs[1][0] + 17*FIR_BUFFER_SIZE; - } -#endif -#ifdef OPT_ALTIVEC - if(fr->cpu_opts.type == altivec) - { - int i,j; - fr->areal_buffs[0][0] = (real*) fr->rawbuffs; - for(i=0; i<4; ++i) for(j=0; j<4; ++j) - fr->areal_buffs[i][j] = fr->areal_buffs[0][0] + (i*4+j)*0x110; - } -#endif - /* now the different decwins... all of the same size, actually */ - /* The MMX ones want 32byte alignment, which I'll try to ensure manually */ - { - int decwin_size = (512+32)*sizeof(real); -#ifdef OPT_MMXORSSE -#ifdef OPT_MULTI - if(fr->cpu_opts.class == mmxsse) - { -#endif - /* decwin_mmx will share, decwins will be appended ... sizeof(float)==4 */ - if(decwin_size < (512+32)*4) decwin_size = (512+32)*4; - - /* the second window + alignment zone -- we align for 32 bytes for SSE as - requirement, 64 byte for matching cache line size (that matters!) */ - decwin_size += (512+32)*4 + 63; - /* (512+32)*4/32 == 2176/32 == 68, so one decwin block retains alignment for 32 or 64 bytes */ -#ifdef OPT_MULTI - } -#endif -#endif -#if defined(OPT_ALTIVEC) || defined(OPT_ARM) - if(decwin_size < (512+32)*4) decwin_size = (512+32)*4; - decwin_size += 512*4; -#endif - /* Hm, that's basically realloc() ... */ - if(fr->rawdecwin != NULL && fr->rawdecwins != decwin_size) - { - free(fr->rawdecwin); - fr->rawdecwin = NULL; - } - - if(fr->rawdecwin == NULL) - fr->rawdecwin = (unsigned char*) malloc(decwin_size); - - if(fr->rawdecwin == NULL) return -1; - - fr->rawdecwins = decwin_size; - fr->decwin = (real*) fr->rawdecwin; -#ifdef OPT_MMXORSSE -#ifdef OPT_MULTI - if(fr->cpu_opts.class == mmxsse) - { -#endif - /* align decwin, assign that to decwin_mmx, append decwins */ - /* I need to add to decwin what is missing to the next full 64 byte -- also I want to make gcc -pedantic happy... */ - fr->decwin = aligned_pointer(fr->rawdecwin,real,64); - debug1("aligned decwin: %p", (void*)fr->decwin); - fr->decwin_mmx = (float*)fr->decwin; - fr->decwins = fr->decwin_mmx+512+32; -#ifdef OPT_MULTI - } - else debug("no decwins/decwin_mmx for that class"); -#endif -#endif - } - - /* Layer scratch buffers are of compile-time fixed size, so allocate only once. */ - if(fr->layerscratch == NULL) - { - /* Allocate specific layer1/2/3 buffers, so that we know they'll work for SSE. */ - size_t scratchsize = 0; - real *scratcher; -#ifndef NO_LAYER1 - scratchsize += sizeof(real) * 2 * SBLIMIT; -#endif -#ifndef NO_LAYER2 - scratchsize += sizeof(real) * 2 * 4 * SBLIMIT; -#endif -#ifndef NO_LAYER3 - scratchsize += sizeof(real) * 2 * SBLIMIT * SSLIMIT; /* hybrid_in */ - scratchsize += sizeof(real) * 2 * SSLIMIT * SBLIMIT; /* hybrid_out */ -#endif - /* - Now figure out correct alignment: - We need 16 byte minimum, smallest unit of the blocks is 2*SBLIMIT*sizeof(real), which is 64*4=256. Let's do 64bytes as heuristic for cache line (as proven useful in buffs above). - */ - fr->layerscratch = malloc(scratchsize+63); - if(fr->layerscratch == NULL) return -1; - - /* Get aligned part of the memory, then divide it up. */ - scratcher = aligned_pointer(fr->layerscratch,real,64); - /* Those funky pointer casts silence compilers... - One might change the code at hand to really just use 1D arrays, but in practice, that would not make a (positive) difference. */ -#ifndef NO_LAYER1 - fr->layer1.fraction = (real(*)[SBLIMIT])scratcher; - scratcher += 2 * SBLIMIT; -#endif -#ifndef NO_LAYER2 - fr->layer2.fraction = (real(*)[4][SBLIMIT])scratcher; - scratcher += 2 * 4 * SBLIMIT; -#endif -#ifndef NO_LAYER3 - fr->layer3.hybrid_in = (real(*)[SBLIMIT][SSLIMIT])scratcher; - scratcher += 2 * SBLIMIT * SSLIMIT; - fr->layer3.hybrid_out = (real(*)[SSLIMIT][SBLIMIT])scratcher; - scratcher += 2 * SSLIMIT * SBLIMIT; -#endif - /* Note: These buffers don't need resetting here. */ - } - - /* Only reset the buffers we created just now. */ - frame_decode_buffers_reset(fr); - - debug1("frame %p buffer done", (void*)fr); - return 0; -} - -int frame_buffers_reset(mpg123_handle *fr) -{ - fr->buffer.fill = 0; /* hm, reset buffer fill... did we do a flush? */ - fr->bsnum = 0; - /* Wondering: could it be actually _wanted_ to retain buffer contents over different files? (special gapless / cut stuff) */ - fr->bsbuf = fr->bsspace[1]; - fr->bsbufold = fr->bsbuf; - fr->bitreservoir = 0; /* Not entirely sure if this is the right place for that counter. */ - frame_decode_buffers_reset(fr); - memset(fr->bsspace, 0, 2*(MAXFRAMESIZE+512)); - memset(fr->ssave, 0, 34); - fr->hybrid_blc[0] = fr->hybrid_blc[1] = 0; - memset(fr->hybrid_block, 0, sizeof(real)*2*2*SBLIMIT*SSLIMIT); - return 0; -} - -void frame_icy_reset(mpg123_handle* fr) -{ -#ifndef NO_ICY - if(fr->icy.data != NULL) free(fr->icy.data); - fr->icy.data = NULL; - fr->icy.interval = 0; - fr->icy.next = 0; -#endif -} - -void frame_free_toc(mpg123_handle *fr) -{ - if(fr->xing_toc != NULL){ free(fr->xing_toc); fr->xing_toc = NULL; } -} - -/* Just copy the Xing TOC over... */ -int frame_fill_toc(mpg123_handle *fr, unsigned char* in) -{ - if(fr->xing_toc == NULL) fr->xing_toc = malloc(100); - if(fr->xing_toc != NULL) - { - memcpy(fr->xing_toc, in, 100); -#ifdef DEBUG - debug("Got a TOC! Showing the values..."); - { - int i; - for(i=0; i<100; ++i) - debug2("entry %i = %i", i, fr->xing_toc[i]); - } -#endif - return TRUE; - } - return FALSE; -} - -/* Prepare the handle for a new track. - Reset variables, buffers... */ -int frame_reset(mpg123_handle* fr) -{ - frame_buffers_reset(fr); - frame_fixed_reset(fr); - frame_free_toc(fr); -#ifdef FRAME_INDEX - fi_reset(&fr->index); -#endif - - return 0; -} - -/* Reset everythign except dynamic memory. */ -static void frame_fixed_reset(mpg123_handle *fr) -{ - frame_icy_reset(fr); - open_bad(fr); - fr->to_decode = FALSE; - fr->to_ignore = FALSE; - fr->metaflags = 0; - fr->outblock = mpg123_safe_buffer(); - fr->num = -1; - fr->playnum = -1; - fr->accurate = TRUE; - fr->silent_resync = 0; - fr->audio_start = 0; - fr->clip = 0; - fr->oldhead = 0; - fr->firsthead = 0; - fr->vbr = MPG123_CBR; - fr->abr_rate = 0; - fr->track_frames = 0; - fr->track_samples = -1; - fr->framesize=0; - fr->mean_frames = 0; - fr->mean_framesize = 0; - fr->freesize = 0; - fr->lastscale = -1; - fr->rva.level[0] = -1; - fr->rva.level[1] = -1; - fr->rva.gain[0] = 0; - fr->rva.gain[1] = 0; - fr->rva.peak[0] = 0; - fr->rva.peak[1] = 0; - fr->fsizeold = 0; - fr->firstframe = 0; - fr->ignoreframe = fr->firstframe-fr->p.preframes; - fr->lastframe = -1; - fr->fresh = 1; - fr->new_format = 0; -#ifdef GAPLESS - frame_gapless_init(fr,0,0); - fr->lastoff = 0; - fr->firstoff = 0; -#endif -#ifdef OPT_I486 - fr->i486bo[0] = fr->i486bo[1] = FIR_SIZE-1; -#endif - fr->bo = 1; /* the usual bo */ -#ifdef OPT_DITHER - fr->ditherindex = 0; -#endif - reset_id3(fr); - reset_icy(&fr->icy); - /* ICY stuff should go into icy.c, eh? */ -#ifndef NO_ICY - fr->icy.interval = 0; - fr->icy.next = 0; -#endif - fr->halfphase = 0; /* here or indeed only on first-time init? */ - fr->error_protection = 0; - fr->freeformat_framesize = -1; -} - -void frame_free_buffers(mpg123_handle *fr) -{ - if(fr->rawbuffs != NULL) free(fr->rawbuffs); - fr->rawbuffs = NULL; - fr->rawbuffss = 0; - if(fr->rawdecwin != NULL) free(fr->rawdecwin); - fr->rawdecwin = NULL; - fr->rawdecwins = 0; -#ifndef NO_8BIT - if(fr->conv16to8_buf != NULL) free(fr->conv16to8_buf); - fr->conv16to8_buf = NULL; -#endif - if(fr->layerscratch != NULL) free(fr->layerscratch); -} - -void frame_exit(mpg123_handle *fr) -{ - if(fr->own_buffer && fr->buffer.data != NULL) - { - debug1("freeing buffer at %p", (void*)fr->buffer.data); - free(fr->buffer.data); - } - fr->buffer.data = NULL; - frame_free_buffers(fr); - frame_free_toc(fr); -#ifdef FRAME_INDEX - fi_exit(&fr->index); -#endif -#ifdef OPT_DITHER - if(fr->dithernoise != NULL) - { - free(fr->dithernoise); - fr->dithernoise = NULL; - } -#endif - exit_id3(fr); - clear_icy(&fr->icy); - /* Clean up possible mess from LFS wrapper. */ - if(fr->wrapperclean != NULL) - { - fr->wrapperclean(fr->wrapperdata); - fr->wrapperdata = NULL; - } -} - -int attribute_align_arg mpg123_info(mpg123_handle *mh, struct mpg123_frameinfo *mi) -{ - if(mh == NULL) return MPG123_ERR; - if(mi == NULL) - { - mh->err = MPG123_ERR_NULL; - return MPG123_ERR; - } - mi->version = mh->mpeg25 ? MPG123_2_5 : (mh->lsf ? MPG123_2_0 : MPG123_1_0); - mi->layer = mh->lay; - mi->rate = frame_freq(mh); - switch(mh->mode) - { - case 0: mi->mode = MPG123_M_STEREO; break; - case 1: mi->mode = MPG123_M_JOINT; break; - case 2: mi->mode = MPG123_M_DUAL; break; - case 3: mi->mode = MPG123_M_MONO; break; - default: error("That mode cannot be!"); - } - mi->mode_ext = mh->mode_ext; - mi->framesize = mh->framesize+4; /* Include header. */ - mi->flags = 0; - if(mh->error_protection) mi->flags |= MPG123_CRC; - if(mh->copyright) mi->flags |= MPG123_COPYRIGHT; - if(mh->extension) mi->flags |= MPG123_PRIVATE; - if(mh->original) mi->flags |= MPG123_ORIGINAL; - mi->emphasis = mh->emphasis; - mi->bitrate = frame_bitrate(mh); - mi->abr_rate = mh->abr_rate; - mi->vbr = mh->vbr; - return MPG123_OK; -} - - -/* - Fuzzy frame offset searching (guessing). - When we don't have an accurate position, we may use an inaccurate one. - Possibilities: - - use approximate positions from Xing TOC (not yet parsed) - - guess wildly from mean framesize and offset of first frame / beginning of file. -*/ - -off_t frame_fuzzy_find(mpg123_handle *fr, off_t want_frame, off_t* get_frame) -{ - /* Default is to go to the beginning. */ - off_t ret = fr->audio_start; - *get_frame = 0; - - /* But we try to find something better. */ - /* Xing VBR TOC works with relative positions, both in terms of audio frames and stream bytes. - Thus, it only works when whe know the length of things. - Oh... I assume the offsets are relative to the _total_ file length. */ - if(fr->xing_toc != NULL && fr->track_frames > 0 && fr->rdat.filelen > 0) - { - /* One could round... */ - int toc_entry = (int) ((double)want_frame*100./fr->track_frames); - /* It is an index in the 100-entry table. */ - if(toc_entry < 0) toc_entry = 0; - if(toc_entry > 99) toc_entry = 99; - - /* Now estimate back what frame we get. */ - *get_frame = (off_t) ((double)toc_entry/100. * fr->track_frames); - fr->accurate = FALSE; - fr->silent_resync = 1; - /* Question: Is the TOC for whole file size (with/without ID3) or the "real" audio data only? - ID3v1 info could also matter. */ - ret = (off_t) ((double)fr->xing_toc[toc_entry]/256.* fr->rdat.filelen); - } - else if(fr->mean_framesize > 0) - { /* Just guess with mean framesize (may be exact with CBR files). */ - /* Query filelen here or not? */ - fr->accurate = FALSE; /* Fuzzy! */ - fr->silent_resync = 1; - *get_frame = want_frame; - ret = (off_t) (fr->audio_start+fr->mean_framesize*want_frame); - } - debug5("fuzzy: want %li of %li, get %li at %li B of %li B", - (long)want_frame, (long)fr->track_frames, (long)*get_frame, (long)ret, (long)(fr->rdat.filelen-fr->audio_start)); - return ret; -} - -/* - find the best frame in index just before the wanted one, seek to there - then step to just before wanted one with read_frame - do not care tabout the stuff that was in buffer but not played back - everything that left the decoder is counted as played - - Decide if you want low latency reaction and accurate timing info or stable long-time playback with buffer! -*/ - -off_t frame_index_find(mpg123_handle *fr, off_t want_frame, off_t* get_frame) -{ - /* default is file start if no index position */ - off_t gopos = 0; - *get_frame = 0; -#ifdef FRAME_INDEX - /* Possibly use VBRI index, too? I'd need an example for this... */ - if(fr->index.fill) - { - /* find in index */ - size_t fi; - /* at index fi there is frame step*fi... */ - fi = want_frame/fr->index.step; - if(fi >= fr->index.fill) /* If we are beyond the end of frame index...*/ - { - /* When fuzzy seek is allowed, we have some limited tolerance for the frames we want to read rather then jump over. */ - if(fr->p.flags & MPG123_FUZZY && want_frame - (fr->index.fill-1)*fr->index.step > 10) - { - gopos = frame_fuzzy_find(fr, want_frame, get_frame); - if(gopos > fr->audio_start) return gopos; /* Only in that case, we have a useful guess. */ - /* Else... just continue, fuzzyness didn't help. */ - } - /* Use the last available position, slowly advancing from that one. */ - fi = fr->index.fill - 1; - } - /* We have index position, that yields frame and byte offsets. */ - *get_frame = fi*fr->index.step; - gopos = fr->index.data[fi]; - fr->accurate = TRUE; /* When using the frame index, we are accurate. */ - } - else - { -#endif - if(fr->p.flags & MPG123_FUZZY) - return frame_fuzzy_find(fr, want_frame, get_frame); - /* A bit hackish here... but we need to be fresh when looking for the first header again. */ - fr->firsthead = 0; - fr->oldhead = 0; -#ifdef FRAME_INDEX - } -#endif - debug2("index: 0x%lx for frame %li", (unsigned long)gopos, (long) *get_frame); - return gopos; -} - -off_t frame_ins2outs(mpg123_handle *fr, off_t ins) -{ - off_t outs = 0; - switch(fr->down_sample) - { - case 0: -# ifndef NO_DOWNSAMPLE - case 1: - case 2: -# endif - outs = ins>>fr->down_sample; - break; -# ifndef NO_NTOM - case 3: outs = ntom_ins2outs(fr, ins); break; -# endif - default: error1("Bad down_sample (%i) ... should not be possible!!", fr->down_sample); - } - return outs; -} - -off_t frame_outs(mpg123_handle *fr, off_t num) -{ - off_t outs = 0; - switch(fr->down_sample) - { - case 0: -# ifndef NO_DOWNSAMPLE - case 1: - case 2: -# endif - outs = (spf(fr)>>fr->down_sample)*num; - break; -#ifndef NO_NTOM - case 3: outs = ntom_frmouts(fr, num); break; -#endif - default: error1("Bad down_sample (%i) ... should not be possible!!", fr->down_sample); - } - return outs; -} - -/* Compute the number of output samples we expect from this frame. - This is either simple spf() or a tad more elaborate for ntom. */ -off_t frame_expect_outsamples(mpg123_handle *fr) -{ - off_t outs = 0; - switch(fr->down_sample) - { - case 0: -# ifndef NO_DOWNSAMPLE - case 1: - case 2: -# endif - outs = spf(fr)>>fr->down_sample; - break; -#ifndef NO_NTOM - case 3: outs = ntom_frame_outsamples(fr); break; -#endif - default: error1("Bad down_sample (%i) ... should not be possible!!", fr->down_sample); - } - return outs; -} - -off_t frame_offset(mpg123_handle *fr, off_t outs) -{ - off_t num = 0; - switch(fr->down_sample) - { - case 0: -# ifndef NO_DOWNSAMPLE - case 1: - case 2: -# endif - num = outs/(spf(fr)>>fr->down_sample); - break; -#ifndef NO_NTOM - case 3: num = ntom_frameoff(fr, outs); break; -#endif - default: error("Bad down_sample ... should not be possible!!"); - } - return num; -} - -#ifdef GAPLESS -/* input in _input_ samples */ -void frame_gapless_init(mpg123_handle *fr, off_t b, off_t e) -{ - fr->begin_s = b; - fr->end_s = e; - /* These will get proper values later, from above plus resampling info. */ - fr->begin_os = 0; - fr->end_os = 0; - debug2("frame_gapless_init: from %lu to %lu samples", (long unsigned)fr->begin_s, (long unsigned)fr->end_s); -} - -void frame_gapless_realinit(mpg123_handle *fr) -{ - fr->begin_os = frame_ins2outs(fr, fr->begin_s); - fr->end_os = frame_ins2outs(fr, fr->end_s); - debug2("frame_gapless_realinit: from %lu to %lu samples", (long unsigned)fr->begin_os, (long unsigned)fr->end_os); -} - -/* When we got a new sample count, update the gaplessness. */ -void frame_gapless_update(mpg123_handle *fr, off_t total_samples) -{ - if(fr->end_s < 1) - { - fr->end_s = total_samples; - frame_gapless_realinit(fr); - } - else if(fr->end_s > total_samples) - { - if(NOQUIET) error2("end sample count smaller than gapless end! (%"OFF_P" < %"OFF_P").", (off_p)total_samples, (off_p)fr->end_s); - /* Humbly disabling gapless stuff on track end. */ - fr->end_s = 0; - frame_gapless_realinit(fr); - fr->lastframe = -1; - fr->lastoff = 0; - } -} - -#endif - -/* Compute the needed frame to ignore from, for getting accurate/consistent output for intended firstframe. */ -static off_t ignoreframe(mpg123_handle *fr) -{ - off_t preshift = fr->p.preframes; - /* Layer 3 _really_ needs at least one frame before. */ - if(fr->lay==3 && preshift < 1) preshift = 1; - /* Layer 1 & 2 reall do not need more than 2. */ - if(fr->lay!=3 && preshift > 2) preshift = 2; - - return fr->firstframe - preshift; -} - -/* The frame seek... This is not simply the seek to fe*spf(fr) samples in output because we think of _input_ frames here. - Seek to frame offset 1 may be just seek to 200 samples offset in output since the beginning of first frame is delay/padding. - Hm, is that right? OK for the padding stuff, but actually, should the decoder delay be better totally hidden or not? - With gapless, even the whole frame position could be advanced further than requested (since Homey don't play dat). */ -void frame_set_frameseek(mpg123_handle *fr, off_t fe) -{ - fr->firstframe = fe; -#ifdef GAPLESS - if(fr->p.flags & MPG123_GAPLESS) - { - /* Take care of the beginning... */ - off_t beg_f = frame_offset(fr, fr->begin_os); - if(fe <= beg_f) - { - fr->firstframe = beg_f; - fr->firstoff = fr->begin_os - frame_outs(fr, beg_f); - } - else fr->firstoff = 0; - /* The end is set once for a track at least, on the frame_set_frameseek called in get_next_frame() */ - if(fr->end_os > 0) - { - fr->lastframe = frame_offset(fr,fr->end_os); - fr->lastoff = fr->end_os - frame_outs(fr, fr->lastframe); - } else fr->lastoff = 0; - } else { fr->firstoff = fr->lastoff = 0; fr->lastframe = -1; } -#endif - fr->ignoreframe = ignoreframe(fr); -#ifdef GAPLESS - debug5("frame_set_frameseek: begin at %li frames and %li samples, end at %li and %li; ignore from %li", - (long) fr->firstframe, (long) fr->firstoff, - (long) fr->lastframe, (long) fr->lastoff, (long) fr->ignoreframe); -#else - debug3("frame_set_frameseek: begin at %li frames, end at %li; ignore from %li", - (long) fr->firstframe, (long) fr->lastframe, (long) fr->ignoreframe); -#endif -} - -void frame_skip(mpg123_handle *fr) -{ -#ifndef NO_LAYER3 - if(fr->lay == 3) set_pointer(fr, 512); -#endif -} - -/* Sample accurate seek prepare for decoder. */ -/* This gets unadjusted output samples and takes resampling into account */ -void frame_set_seek(mpg123_handle *fr, off_t sp) -{ - fr->firstframe = frame_offset(fr, sp); -#ifndef NO_NTOM - if(fr->down_sample == 3) ntom_set_ntom(fr, fr->firstframe); -#endif - fr->ignoreframe = ignoreframe(fr); -#ifdef GAPLESS /* The sample offset is used for non-gapless mode, too! */ - fr->firstoff = sp - frame_outs(fr, fr->firstframe); - debug5("frame_set_seek: begin at %li frames and %li samples, end at %li and %li; ignore from %li", - (long) fr->firstframe, (long) fr->firstoff, - (long) fr->lastframe, (long) fr->lastoff, (long) fr->ignoreframe); -#else - debug3("frame_set_seek: begin at %li frames, end at %li; ignore from %li", - (long) fr->firstframe, (long) fr->lastframe, (long) fr->ignoreframe); -#endif - /* Old bit reservoir should be invalid, eh? */ - fr->bitreservoir = 0; -} - -int attribute_align_arg mpg123_volume_change(mpg123_handle *mh, double change) -{ - if(mh == NULL) return MPG123_ERR; - return mpg123_volume(mh, change + (double) mh->p.outscale); -} - -int attribute_align_arg mpg123_volume(mpg123_handle *mh, double vol) -{ - if(mh == NULL) return MPG123_ERR; - - if(vol >= 0) mh->p.outscale = vol; - else mh->p.outscale = 0.; - - do_rva(mh); - return MPG123_OK; -} - -static int get_rva(mpg123_handle *fr, double *peak, double *gain) -{ - double p = -1; - double g = 0; - int ret = 0; - if(fr->p.rva) - { - int rt = 0; - /* Should one assume a zero RVA as no RVA? */ - if(fr->p.rva == 2 && fr->rva.level[1] != -1) rt = 1; - if(fr->rva.level[rt] != -1) - { - p = fr->rva.peak[rt]; - g = fr->rva.gain[rt]; - ret = 1; /* Success. */ - } - } - if(peak != NULL) *peak = p; - if(gain != NULL) *gain = g; - return ret; -} - -/* adjust the volume, taking both fr->outscale and rva values into account */ -void do_rva(mpg123_handle *fr) -{ - double peak = 0; - double gain = 0; - double newscale; - double rvafact = 1; - if(get_rva(fr, &peak, &gain)) - { - if(NOQUIET && fr->p.verbose > 1) fprintf(stderr, "Note: doing RVA with gain %f\n", gain); - rvafact = pow(10,gain/20); - } - - newscale = fr->p.outscale*rvafact; - - /* if peak is unknown (== 0) this check won't hurt */ - if((peak*newscale) > 1.0) - { - newscale = 1.0/peak; - warning2("limiting scale value to %f to prevent clipping with indicated peak factor of %f", newscale, peak); - } - /* first rva setting is forced with fr->lastscale < 0 */ - if(newscale != fr->lastscale || fr->decoder_change) - { - debug3("changing scale value from %f to %f (peak estimated to %f)", fr->lastscale != -1 ? fr->lastscale : fr->p.outscale, newscale, (double) (newscale*peak)); - fr->lastscale = newscale; - /* It may be too early, actually. */ - if(fr->make_decode_tables != NULL) fr->make_decode_tables(fr); /* the actual work */ - } -} - - -int attribute_align_arg mpg123_getvolume(mpg123_handle *mh, double *base, double *really, double *rva_db) -{ - if(mh == NULL) return MPG123_ERR; - if(base) *base = mh->p.outscale; - if(really) *really = mh->lastscale; - get_rva(mh, NULL, rva_db); - return MPG123_OK; -} - diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/frame.h audacious-plugins-3.2/src/mpg123/libmpg123/frame.h --- audacious-plugins-2.4.4/src/mpg123/libmpg123/frame.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/frame.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,401 +0,0 @@ -/* - frame: Central data structures and opmitization hooks. - - copyright 2007 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis -*/ - -#ifndef MPG123_FRAME_H -#define MPG123_FRAME_H - -#include -#include "config.h" -#include "mpg123.h" -#include "optimize.h" -#include "id3.h" -#include "icy.h" -#include "reader.h" -#ifdef FRAME_INDEX -#include "index.h" -#endif -#include "synths.h" - -#ifdef OPT_DITHER -#include "dither.h" -int frame_dither_init(mpg123_handle *fr); -#endif - -/* max = 1728 */ -#define MAXFRAMESIZE 3456 - -struct al_table -{ - short bits; - short d; -}; - -/* the output buffer, used to be pcm_sample, pcm_point and audiobufsize */ -struct outbuffer -{ - unsigned char *data; - unsigned char *p; /* read pointer */ - size_t fill; /* fill from read pointer */ - size_t size; /* that's actually more like a safe size, after we have more than that, flush it */ -}; - -struct audioformat -{ - int encoding; - int encsize; /* Size of one sample in bytes, plain int should be fine here... */ - int channels; - long rate; -}; - -void invalidate_format(struct audioformat *af); - -struct mpg123_pars_struct -{ - int verbose; /* verbose level */ - long flags; /* combination of above */ -#ifndef NO_NTOM - long force_rate; -#endif - int down_sample; - int rva; /* (which) rva to do: 0: nothing, 1: radio/mix/track 2: album/audiophile */ - long halfspeed; - long doublespeed; - long timeout; -#define NUM_CHANNELS 2 - char audio_caps[NUM_CHANNELS][MPG123_RATES+1][MPG123_ENCODINGS]; -/* long start_frame; */ /* frame offset to begin with */ -/* long frame_number;*/ /* number of frames to decode */ -#ifndef NO_ICY - long icy_interval; -#endif - double outscale; - long resync_limit; - long index_size; /* Long, because: negative values have a meaning. */ - long preframes; -}; - - - -/* There is a lot to condense here... many ints can be merged as flags; though the main space is still consumed by buffers. */ -struct mpg123_handle_struct -{ - int fresh; /* to be moved into flags */ - int new_format; - real hybrid_block[2][2][SBLIMIT*SSLIMIT]; - int hybrid_blc[2]; - /* the scratch vars for the decoders, sometimes real, sometimes short... sometimes int/long */ - short *short_buffs[2][2]; - real *real_buffs[2][2]; - unsigned char *rawbuffs; - int rawbuffss; -#ifdef OPT_I486 - int i486bo[2]; -#endif - int bo; /* Just have it always here. */ -#ifdef OPT_DITHER - int ditherindex; - float *dithernoise; -#endif - unsigned char* rawdecwin; /* the block with all decwins */ - int rawdecwins; /* size of rawdecwin memory */ - real *decwin; /* _the_ decode table */ -#ifdef OPT_MMXORSSE - /* I am not really sure that I need both of them... used in assembler */ - float *decwin_mmx; - float *decwins; -#endif - int have_eq_settings; - real equalizer[2][32]; - - /* for halfspeed mode */ - unsigned char ssave[34]; - int halfphase; -#ifndef NO_8BIT - /* a raw buffer and a pointer into the middle for signed short conversion, only allocated on demand */ - unsigned char *conv16to8_buf; - unsigned char *conv16to8; -#endif - /* There's some possible memory saving for stuff that is not _really_ dynamic. */ - - /* layer3 */ - int longLimit[9][23]; - int shortLimit[9][14]; - real gainpow2[256+118+4]; /* not really dynamic, just different for mmx */ - - /* layer2 */ - real muls[27][64]; /* also used by layer 1 */ - -#ifndef NO_NTOM - /* decode_ntom */ - unsigned long ntom_val[2]; - unsigned long ntom_step; -#endif - /* special i486 fun */ -#ifdef OPT_I486 - int *int_buffs[2][2]; -#endif - /* special altivec... */ -#ifdef OPT_ALTIVEC - real *areal_buffs[4][4]; -#endif - struct synth_s synths; - struct - { -#ifdef OPT_MULTI - -#ifndef NO_LAYER3 -#if (defined OPT_3DNOW || defined OPT_3DNOWEXT) - void (*the_dct36)(real *,real *,real *,real *,real *); -#endif -#endif - -#endif - enum optdec type; - enum optcla class; - } cpu_opts; - - int verbose; /* 0: nothing, 1: just print chosen decoder, 2: be verbose */ - - const struct al_table *alloc; - /* The runtime-chosen decoding, based on input and output format. */ - func_synth synth; - func_synth_stereo synth_stereo; - func_synth_mono synth_mono; - /* Yes, this function is runtime-switched, too. */ - void (*make_decode_tables)(mpg123_handle *fr); /* That is the volume control. */ - - int stereo; /* I _think_ 1 for mono and 2 for stereo */ - int jsbound; -#define SINGLE_STEREO -1 -#define SINGLE_LEFT 0 -#define SINGLE_RIGHT 1 -#define SINGLE_MIX 3 - int single; - int II_sblimit; - int down_sample_sblimit; - int lsf; /* 0: MPEG 1.0; 1: MPEG 2.0/2.5 -- both used as bool and array index! */ - /* Many flags in disguise as integers... wasting bytes. */ - int mpeg25; - int down_sample; - int header_change; - int lay; - int (*do_layer)(mpg123_handle *); - int error_protection; - int bitrate_index; - int sampling_frequency; - int padding; - int extension; - int mode; - int mode_ext; - int copyright; - int original; - int emphasis; - int framesize; /* computed framesize */ - int freesize; /* free format frame size */ - enum mpg123_vbr vbr; /* 1 if variable bitrate was detected */ - off_t num; /* frame offset ... */ - off_t playnum; /* playback offset... includes repetitions, reset at seeks */ - off_t audio_start; /* The byte offset in the file where audio data begins. */ - char accurate; /* Flag to see if we trust the frame number. */ - char silent_resync; /* Do not complain for the next n resyncs. */ - unsigned char* xing_toc; /* The seek TOC from Xing header. */ - int freeformat; - long freeformat_framesize; - - /* bitstream info; bsi */ - int bitindex; - unsigned char *wordpointer; - /* temporary storage for getbits stuff */ - unsigned long ultmp; - unsigned char uctmp; - - /* rva data, used in common.c, set in id3.c */ - - double maxoutburst; /* The maximum amplitude in current sample represenation. */ - double lastscale; - struct - { - int level[2]; - float gain[2]; - float peak[2]; - } rva; - - /* input data */ - off_t track_frames; - off_t track_samples; - double mean_framesize; - off_t mean_frames; - int fsizeold; - int ssize; - unsigned int bitreservoir; - unsigned char bsspace[2][MAXFRAMESIZE+512]; /* MAXFRAMESIZE */ - unsigned char *bsbuf; - unsigned char *bsbufold; - int bsnum; - unsigned long oldhead; - unsigned long firsthead; - int abr_rate; -#ifdef FRAME_INDEX - struct frame_index index; -#endif - - /* output data */ - struct outbuffer buffer; - struct audioformat af; - int own_buffer; - size_t outblock; /* number of bytes that this frame produces (upper bound) */ - int to_decode; /* this frame holds data to be decoded */ - int to_ignore; /* the same, somehow */ - off_t firstframe; /* start decoding from here */ - off_t lastframe; /* last frame to decode (for gapless or num_frames limit) */ - off_t ignoreframe; /* frames to decode but discard before firstframe */ -#ifdef GAPLESS - off_t firstoff; /* number of samples to ignore from firstframe */ - off_t lastoff; /* number of samples to use from lastframe */ - off_t begin_s; /* overall begin offset in samples */ - off_t begin_os; - off_t end_s; /* overall end offset in samples */ - off_t end_os; -#endif - unsigned int crc; /* Well, I need a safe 16bit type, actually. But wider doesn't hurt. */ - struct reader *rd; /* pointer to the reading functions */ - struct reader_data rdat; /* reader data and state info */ - struct mpg123_pars_struct p; - int err; - int decoder_change; - int delayed_change; - long clip; - /* the meta crap */ - int metaflags; - unsigned char id3buf[128]; -#ifndef NO_ID3V2 - mpg123_id3v2 id3v2; -#endif -#ifndef NO_ICY - struct icy_meta icy; -#endif - /* - More variables needed for decoders, layerX.c. - This time it is not about static variables but about the need for alignment which cannot be guaranteed on the stack by certain compilers (Sun Studio). - We do not require the compiler to align stuff for our hand-written assembly. We only hope that it's able to align stuff for SSE and similar ops it generates itself. - */ - /* - Those layer-specific structs could actually share memory, as they are not in use simultaneously. One might allocate on decoder switch, too. - They all reside in one lump of memory (after each other), allocated to layerscratch. - */ - real *layerscratch; -#ifndef NO_LAYER1 - struct - { - real (*fraction)[SBLIMIT]; /* ALIGNED(16) real fraction[2][SBLIMIT]; */ - } layer1; -#endif -#ifndef NO_LAYER2 - struct - { - real (*fraction)[4][SBLIMIT]; /* ALIGNED(16) real fraction[2][4][SBLIMIT] */ - } layer2; -#endif -#ifndef NO_LAYER3 - /* These are significant chunks of memory already... */ - struct - { - real (*hybrid_in)[SBLIMIT][SSLIMIT]; /* ALIGNED(16) real hybridIn[2][SBLIMIT][SSLIMIT]; */ - real (*hybrid_out)[SSLIMIT][SBLIMIT]; /* ALIGNED(16) real hybridOut[2][SSLIMIT][SBLIMIT]; */ - } layer3; -#endif - /* A place for storing additional data for the large file wrapper. - This is cruft! */ - void *wrapperdata; - /* A callback used to properly destruct the wrapper data. */ - void (*wrapperclean)(void*); -}; - -/* generic init, does not include dynamic buffers */ -void frame_init(mpg123_handle *fr); -void frame_init_par(mpg123_handle *fr, mpg123_pars *mp); -/* output buffer and format */ -int frame_outbuffer(mpg123_handle *fr); -int frame_output_format(mpg123_handle *fr); - -int frame_buffers(mpg123_handle *fr); /* various decoder buffers, needed once */ -int frame_reset(mpg123_handle* fr); /* reset for next track */ -int frame_buffers_reset(mpg123_handle *fr); -void frame_exit(mpg123_handle *fr); /* end, free all buffers */ - -/* Index functions... */ -/* Well... print it... */ -int mpg123_print_index(mpg123_handle *fr, FILE* out); -/* Find a seek position in index. */ -off_t frame_index_find(mpg123_handle *fr, off_t want_frame, off_t* get_frame); -/* Apply index_size setting. */ -int frame_index_setup(mpg123_handle *fr); - -void do_volume(mpg123_handle *fr, double factor); -void do_rva(mpg123_handle *fr); - -/* samples per frame ... -Layer I -Layer II -Layer III -MPEG-1 -384 -1152 -1152 -MPEG-2 LSF -384 -1152 -576 -MPEG 2.5 -384 -1152 -576 -*/ -#define spf(fr) ((fr)->lay == 1 ? 384 : ((fr)->lay==2 ? 1152 : ((fr)->lsf || (fr)->mpeg25 ? 576 : 1152))) - -#ifdef GAPLESS -/* well, I take that one for granted... at least layer3 */ -#define GAPLESS_DELAY 529 -/* still fine-tuning the "real music" window... see read_frame */ -void frame_gapless_init(mpg123_handle *fr, off_t b, off_t e); -void frame_gapless_realinit(mpg123_handle *fr); -void frame_gapless_update(mpg123_handle *mh, off_t total_samples); -/*void frame_gapless_position(mpg123_handle* fr); -void frame_gapless_bytify(mpg123_handle *fr); -void frame_gapless_ignore(mpg123_handle *fr, off_t frames);*/ -/* void frame_gapless_buffercheck(mpg123_handle *fr); */ -#endif - -/* Number of samples the decoding of the current frame should yield. */ -off_t frame_expect_outsamples(mpg123_handle *fr); - -/* Skip this frame... do some fake action to get away without actually decoding it. */ -void frame_skip(mpg123_handle *fr); - -/* - Seeking core functions: - - convert input sample offset to output sample offset - - convert frame offset to output sample offset - - get leading frame offset for output sample offset - The offsets are "unadjusted"/internal; resampling is being taken care of. -*/ -off_t frame_ins2outs(mpg123_handle *fr, off_t ins); -off_t frame_outs(mpg123_handle *fr, off_t num); -/* This one just computes the expected sample count for _this_ frame. */ -off_t frame_expect_outsampels(mpg123_handle *fr); -off_t frame_offset(mpg123_handle *fr, off_t outs); -void frame_set_frameseek(mpg123_handle *fr, off_t fe); -void frame_set_seek(mpg123_handle *fr, off_t sp); -off_t frame_tell_seek(mpg123_handle *fr); -/* Take a copy of the Xing VBR TOC for fuzzy seeking. */ -int frame_fill_toc(mpg123_handle *fr, unsigned char* in); - - -/* adjust volume to current outscale and rva values if wanted */ -void do_rva(mpg123_handle *fr); -#endif diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/getbits.h audacious-plugins-3.2/src/mpg123/libmpg123/getbits.h --- audacious-plugins-2.4.4/src/mpg123/libmpg123/getbits.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/getbits.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,100 +0,0 @@ -/* - getbits - - copyright ?-2009 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp - - All code is in the header to suggest/force inlining of these small often-used functions. - This indeed has some impact on performance. -*/ - -#ifndef _MPG123_GETBITS_H_ -#define _MPG123_GETBITS_H_ - -#include "mpg123lib_intern.h" - -#define backbits(fr,nob) ((void)( \ - fr->bitindex -= nob, \ - fr->wordpointer += (fr->bitindex>>3), \ - fr->bitindex &= 0x7 )) - -#define getbitoffset(fr) ((-fr->bitindex)&0x7) -#define getbyte(fr) (*fr->wordpointer++) - -/* There is something wrong with that macro... the function below works also for the layer1 test case. */ -#define macro_getbits(fr, nob) ( \ - fr->ultmp = fr->wordpointer[0],\ - fr->ultmp <<= 8, \ - fr->ultmp |= fr->wordpointer[1], \ - fr->ultmp <<= 8, \ - fr->ultmp |= fr->wordpointer[2], \ - fr->ultmp <<= fr->bitindex, \ - fr->ultmp &= 0xffffff, \ - fr->bitindex += nob, \ - fr->ultmp >>= (24-nob), \ - fr->wordpointer += (fr->bitindex>>3), \ - fr->bitindex &= 7, \ - fr->ultmp) - -static unsigned int getbits(mpg123_handle *fr, int number_of_bits) -{ - unsigned long rval; - -#ifdef DEBUG_GETBITS -fprintf(stderr,"g%d",number_of_bits); -#endif - -/* This is actually slow: if(!number_of_bits) - return 0; */ - -#if 0 - check_buffer_range(number_of_bits+fr->bitindex); -#endif - - { - rval = fr->wordpointer[0]; - rval <<= 8; - rval |= fr->wordpointer[1]; - rval <<= 8; - rval |= fr->wordpointer[2]; - - rval <<= fr->bitindex; - rval &= 0xffffff; - - fr->bitindex += number_of_bits; - - rval >>= (24-number_of_bits); - - fr->wordpointer += (fr->bitindex>>3); - fr->bitindex &= 7; - } - -#ifdef DEBUG_GETBITS -fprintf(stderr,":%lx\n",rval); -#endif - - return rval; -} - - -#define skipbits(fr, nob) fr->ultmp = ( \ - fr->ultmp = fr->wordpointer[0], fr->ultmp <<= 8, fr->ultmp |= fr->wordpointer[1], \ - fr->ultmp <<= 8, fr->ultmp |= fr->wordpointer[2], fr->ultmp <<= fr->bitindex, \ - fr->ultmp &= 0xffffff, fr->bitindex += nob, \ - fr->ultmp >>= (24-nob), fr->wordpointer += (fr->bitindex>>3), \ - fr->bitindex &= 7 ) - -#define getbits_fast(fr, nob) ( \ - fr->ultmp = (unsigned char) (fr->wordpointer[0] << fr->bitindex), \ - fr->ultmp |= ((unsigned long) fr->wordpointer[1]<bitindex)>>8, \ - fr->ultmp <<= nob, fr->ultmp >>= 8, \ - fr->bitindex += nob, fr->wordpointer += (fr->bitindex>>3), \ - fr->bitindex &= 7, fr->ultmp ) - -#define get1bit(fr) ( \ - fr->uctmp = *fr->wordpointer << fr->bitindex, fr->bitindex++, \ - fr->wordpointer += (fr->bitindex>>3), fr->bitindex &= 7, fr->uctmp>>7 ) - - -#endif diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/getcpuflags.h audacious-plugins-3.2/src/mpg123/libmpg123/getcpuflags.h --- audacious-plugins-2.4.4/src/mpg123/libmpg123/getcpuflags.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/getcpuflags.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -/* - getcpucpuflags: get cpuflags for ia32 - - copyright ?-2007 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http:#mpg123.org - initially written by KIMURA Takuhiro (for 3DNow!) - extended for general use by Thomas Orgis -*/ - -#ifndef MPG123_H_GETCPUFLAGS -#define MPG123_H_GETCPUFLAGS - -/* standard level flags part 1 (ECX)*/ -#define FLAG_SSE3 0x00000001 - -/* standard level flags part 2 (EDX) */ -#define FLAG2_MMX 0x00800000 -#define FLAG2_SSE 0x02000000 -#define FLAG2_SSE2 0x04000000 -#define FLAG2_FPU 0x00000001 -/* cpuid extended level 1 (AMD) */ -#define XFLAG_MMX 0x00800000 -#define XFLAG_3DNOW 0x80000000 -#define XFLAG_3DNOWEXT 0x40000000 - -struct cpuflags -{ - unsigned int id; - unsigned int std; - unsigned int std2; - unsigned int ext; -}; - -extern struct cpuflags cpu_flags; - -unsigned int getcpuflags(struct cpuflags* cf); - -/* checks the family */ -#define cpu_i586(s) ( ((s.id & 0xf00)>>8) == 0 || ((s.id & 0xf00)>>8) > 4 ) -/* checking some flags... */ -#define cpu_fpu(s) (FLAG2_FPU & s.std2) -#define cpu_mmx(s) (FLAG2_MMX & s.std2 || XFLAG_MMX & s.ext) -#define cpu_3dnow(s) (XFLAG_3DNOW & s.ext) -#define cpu_3dnowext(s) (XFLAG_3DNOWEXT & s.ext) -#define cpu_sse(s) (FLAG2_SSE & s.std2) -#define cpu_sse2(s) (FLAG2_SSE2 & s.std2) -#define cpu_sse3(s) (FLAG_SSE3 & s.std) - -#endif diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/huffman.h audacious-plugins-3.2/src/mpg123/libmpg123/huffman.h --- audacious-plugins-2.4.4/src/mpg123/libmpg123/huffman.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/huffman.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,340 +0,0 @@ -/* - huffman.h: huffman tables ... recalcualted to work with optimzed decoder scheme (MH) - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp - - probably we could save a few bytes of memory, because the - smaller tables are often the part of a bigger table -*/ - - -#ifndef _MPG123_HUFFMAN_H_ -#define _MPG123_HUFFMAN_H_ - -struct newhuff -{ - unsigned int linbits; - short *table; -}; - -static short tab0[] = -{ - 0 -}; - -static short tab1[] = -{ - -5, -3, -1, 17, 1, 16, 0 -}; - -static short tab2[] = -{ - -15, -11, -9, -5, -3, -1, 34, 2, 18, -1, 33, 32, 17, -1, 1, - 16, 0 -}; - -static short tab3[] = -{ - -13, -11, -9, -5, -3, -1, 34, 2, 18, -1, 33, 32, 16, 17, -1, - 1, 0 -}; - -static short tab5[] = -{ - -29, -25, -23, -15, -7, -5, -3, -1, 51, 35, 50, 49, -3, -1, 19, - 3, -1, 48, 34, -3, -1, 18, 33, -1, 2, 32, 17, -1, 1, 16, - 0 -}; - -static short tab6[] = -{ - -25, -19, -13, -9, -5, -3, -1, 51, 3, 35, -1, 50, 48, -1, 19, - 49, -3, -1, 34, 2, 18, -3, -1, 33, 32, 1, -1, 17, -1, 16, - 0 -}; - -static short tab7[] = -{ - -69, -65, -57, -39, -29, -17, -11, -7, -3, -1, 85, 69, -1, 84, 83, - -1, 53, 68, -3, -1, 37, 82, 21, -5, -1, 81, -1, 5, 52, -1, - 80, -1, 67, 51, -5, -3, -1, 36, 66, 20, -1, 65, 64, -11, -7, - -3, -1, 4, 35, -1, 50, 3, -1, 19, 49, -3, -1, 48, 34, 18, - -5, -1, 33, -1, 2, 32, 17, -1, 1, 16, 0 -}; - -static short tab8[] = -{ - -65, -63, -59, -45, -31, -19, -13, -7, -5, -3, -1, 85, 84, 69, 83, - -3, -1, 53, 68, 37, -3, -1, 82, 5, 21, -5, -1, 81, -1, 52, - 67, -3, -1, 80, 51, 36, -5, -3, -1, 66, 20, 65, -3, -1, 4, - 64, -1, 35, 50, -9, -7, -3, -1, 19, 49, -1, 3, 48, 34, -1, - 2, 32, -1, 18, 33, 17, -3, -1, 1, 16, 0 -}; - -static short tab9[] = -{ - -63, -53, -41, -29, -19, -11, -5, -3, -1, 85, 69, 53, -1, 83, -1, - 84, 5, -3, -1, 68, 37, -1, 82, 21, -3, -1, 81, 52, -1, 67, - -1, 80, 4, -7, -3, -1, 36, 66, -1, 51, 64, -1, 20, 65, -5, - -3, -1, 35, 50, 19, -1, 49, -1, 3, 48, -5, -3, -1, 34, 2, - 18, -1, 33, 32, -3, -1, 17, 1, -1, 16, 0 -}; - -static short tab10[] = -{ --125,-121,-111, -83, -55, -35, -21, -13, -7, -3, -1, 119, 103, -1, 118, - 87, -3, -1, 117, 102, 71, -3, -1, 116, 86, -1, 101, 55, -9, -3, - -1, 115, 70, -3, -1, 85, 84, 99, -1, 39, 114, -11, -5, -3, -1, - 100, 7, 112, -1, 98, -1, 69, 53, -5, -1, 6, -1, 83, 68, 23, - -17, -5, -1, 113, -1, 54, 38, -5, -3, -1, 37, 82, 21, -1, 81, - -1, 52, 67, -3, -1, 22, 97, -1, 96, -1, 5, 80, -19, -11, -7, - -3, -1, 36, 66, -1, 51, 4, -1, 20, 65, -3, -1, 64, 35, -1, - 50, 3, -3, -1, 19, 49, -1, 48, 34, -7, -3, -1, 18, 33, -1, - 2, 32, 17, -1, 1, 16, 0 -}; - -static short tab11[] = -{ --121,-113, -89, -59, -43, -27, -17, -7, -3, -1, 119, 103, -1, 118, 117, - -3, -1, 102, 71, -1, 116, -1, 87, 85, -5, -3, -1, 86, 101, 55, - -1, 115, 70, -9, -7, -3, -1, 69, 84, -1, 53, 83, 39, -1, 114, - -1, 100, 7, -5, -1, 113, -1, 23, 112, -3, -1, 54, 99, -1, 96, - -1, 68, 37, -13, -7, -5, -3, -1, 82, 5, 21, 98, -3, -1, 38, - 6, 22, -5, -1, 97, -1, 81, 52, -5, -1, 80, -1, 67, 51, -1, - 36, 66, -15, -11, -7, -3, -1, 20, 65, -1, 4, 64, -1, 35, 50, - -1, 19, 49, -5, -3, -1, 3, 48, 34, 33, -5, -1, 18, -1, 2, - 32, 17, -3, -1, 1, 16, 0 -}; - -static short tab12[] = -{ --115, -99, -73, -45, -27, -17, -9, -5, -3, -1, 119, 103, 118, -1, 87, - 117, -3, -1, 102, 71, -1, 116, 101, -3, -1, 86, 55, -3, -1, 115, - 85, 39, -7, -3, -1, 114, 70, -1, 100, 23, -5, -1, 113, -1, 7, - 112, -1, 54, 99, -13, -9, -3, -1, 69, 84, -1, 68, -1, 6, 5, - -1, 38, 98, -5, -1, 97, -1, 22, 96, -3, -1, 53, 83, -1, 37, - 82, -17, -7, -3, -1, 21, 81, -1, 52, 67, -5, -3, -1, 80, 4, - 36, -1, 66, 20, -3, -1, 51, 65, -1, 35, 50, -11, -7, -5, -3, - -1, 64, 3, 48, 19, -1, 49, 34, -1, 18, 33, -7, -5, -3, -1, - 2, 32, 0, 17, -1, 1, 16 -}; - -static short tab13[] = -{ --509,-503,-475,-405,-333,-265,-205,-153,-115, -83, -53, -35, -21, -13, -9, - -7, -5, -3, -1, 254, 252, 253, 237, 255, -1, 239, 223, -3, -1, 238, - 207, -1, 222, 191, -9, -3, -1, 251, 206, -1, 220, -1, 175, 233, -1, - 236, 221, -9, -5, -3, -1, 250, 205, 190, -1, 235, 159, -3, -1, 249, - 234, -1, 189, 219, -17, -9, -3, -1, 143, 248, -1, 204, -1, 174, 158, - -5, -1, 142, -1, 127, 126, 247, -5, -1, 218, -1, 173, 188, -3, -1, - 203, 246, 111, -15, -7, -3, -1, 232, 95, -1, 157, 217, -3, -1, 245, - 231, -1, 172, 187, -9, -3, -1, 79, 244, -3, -1, 202, 230, 243, -1, - 63, -1, 141, 216, -21, -9, -3, -1, 47, 242, -3, -1, 110, 156, 15, - -5, -3, -1, 201, 94, 171, -3, -1, 125, 215, 78, -11, -5, -3, -1, - 200, 214, 62, -1, 185, -1, 155, 170, -1, 31, 241, -23, -13, -5, -1, - 240, -1, 186, 229, -3, -1, 228, 140, -1, 109, 227, -5, -1, 226, -1, - 46, 14, -1, 30, 225, -15, -7, -3, -1, 224, 93, -1, 213, 124, -3, - -1, 199, 77, -1, 139, 184, -7, -3, -1, 212, 154, -1, 169, 108, -1, - 198, 61, -37, -21, -9, -5, -3, -1, 211, 123, 45, -1, 210, 29, -5, - -1, 183, -1, 92, 197, -3, -1, 153, 122, 195, -7, -5, -3, -1, 167, - 151, 75, 209, -3, -1, 13, 208, -1, 138, 168, -11, -7, -3, -1, 76, - 196, -1, 107, 182, -1, 60, 44, -3, -1, 194, 91, -3, -1, 181, 137, - 28, -43, -23, -11, -5, -1, 193, -1, 152, 12, -1, 192, -1, 180, 106, - -5, -3, -1, 166, 121, 59, -1, 179, -1, 136, 90, -11, -5, -1, 43, - -1, 165, 105, -1, 164, -1, 120, 135, -5, -1, 148, -1, 119, 118, 178, - -11, -3, -1, 27, 177, -3, -1, 11, 176, -1, 150, 74, -7, -3, -1, - 58, 163, -1, 89, 149, -1, 42, 162, -47, -23, -9, -3, -1, 26, 161, - -3, -1, 10, 104, 160, -5, -3, -1, 134, 73, 147, -3, -1, 57, 88, - -1, 133, 103, -9, -3, -1, 41, 146, -3, -1, 87, 117, 56, -5, -1, - 131, -1, 102, 71, -3, -1, 116, 86, -1, 101, 115, -11, -3, -1, 25, - 145, -3, -1, 9, 144, -1, 72, 132, -7, -5, -1, 114, -1, 70, 100, - 40, -1, 130, 24, -41, -27, -11, -5, -3, -1, 55, 39, 23, -1, 113, - -1, 85, 7, -7, -3, -1, 112, 54, -1, 99, 69, -3, -1, 84, 38, - -1, 98, 53, -5, -1, 129, -1, 8, 128, -3, -1, 22, 97, -1, 6, - 96, -13, -9, -5, -3, -1, 83, 68, 37, -1, 82, 5, -1, 21, 81, - -7, -3, -1, 52, 67, -1, 80, 36, -3, -1, 66, 51, 20, -19, -11, - -5, -1, 65, -1, 4, 64, -3, -1, 35, 50, 19, -3, -1, 49, 3, - -1, 48, 34, -3, -1, 18, 33, -1, 2, 32, -3, -1, 17, 1, 16, - 0 -}; - -static short tab15[] = -{ --495,-445,-355,-263,-183,-115, -77, -43, -27, -13, -7, -3, -1, 255, 239, - -1, 254, 223, -1, 238, -1, 253, 207, -7, -3, -1, 252, 222, -1, 237, - 191, -1, 251, -1, 206, 236, -7, -3, -1, 221, 175, -1, 250, 190, -3, - -1, 235, 205, -1, 220, 159, -15, -7, -3, -1, 249, 234, -1, 189, 219, - -3, -1, 143, 248, -1, 204, 158, -7, -3, -1, 233, 127, -1, 247, 173, - -3, -1, 218, 188, -1, 111, -1, 174, 15, -19, -11, -3, -1, 203, 246, - -3, -1, 142, 232, -1, 95, 157, -3, -1, 245, 126, -1, 231, 172, -9, - -3, -1, 202, 187, -3, -1, 217, 141, 79, -3, -1, 244, 63, -1, 243, - 216, -33, -17, -9, -3, -1, 230, 47, -1, 242, -1, 110, 240, -3, -1, - 31, 241, -1, 156, 201, -7, -3, -1, 94, 171, -1, 186, 229, -3, -1, - 125, 215, -1, 78, 228, -15, -7, -3, -1, 140, 200, -1, 62, 109, -3, - -1, 214, 227, -1, 155, 185, -7, -3, -1, 46, 170, -1, 226, 30, -5, - -1, 225, -1, 14, 224, -1, 93, 213, -45, -25, -13, -7, -3, -1, 124, - 199, -1, 77, 139, -1, 212, -1, 184, 154, -7, -3, -1, 169, 108, -1, - 198, 61, -1, 211, 210, -9, -5, -3, -1, 45, 13, 29, -1, 123, 183, - -5, -1, 209, -1, 92, 208, -1, 197, 138, -17, -7, -3, -1, 168, 76, - -1, 196, 107, -5, -1, 182, -1, 153, 12, -1, 60, 195, -9, -3, -1, - 122, 167, -1, 166, -1, 192, 11, -1, 194, -1, 44, 91, -55, -29, -15, - -7, -3, -1, 181, 28, -1, 137, 152, -3, -1, 193, 75, -1, 180, 106, - -5, -3, -1, 59, 121, 179, -3, -1, 151, 136, -1, 43, 90, -11, -5, - -1, 178, -1, 165, 27, -1, 177, -1, 176, 105, -7, -3, -1, 150, 74, - -1, 164, 120, -3, -1, 135, 58, 163, -17, -7, -3, -1, 89, 149, -1, - 42, 162, -3, -1, 26, 161, -3, -1, 10, 160, 104, -7, -3, -1, 134, - 73, -1, 148, 57, -5, -1, 147, -1, 119, 9, -1, 88, 133, -53, -29, - -13, -7, -3, -1, 41, 103, -1, 118, 146, -1, 145, -1, 25, 144, -7, - -3, -1, 72, 132, -1, 87, 117, -3, -1, 56, 131, -1, 102, 71, -7, - -3, -1, 40, 130, -1, 24, 129, -7, -3, -1, 116, 8, -1, 128, 86, - -3, -1, 101, 55, -1, 115, 70, -17, -7, -3, -1, 39, 114, -1, 100, - 23, -3, -1, 85, 113, -3, -1, 7, 112, 54, -7, -3, -1, 99, 69, - -1, 84, 38, -3, -1, 98, 22, -3, -1, 6, 96, 53, -33, -19, -9, - -5, -1, 97, -1, 83, 68, -1, 37, 82, -3, -1, 21, 81, -3, -1, - 5, 80, 52, -7, -3, -1, 67, 36, -1, 66, 51, -1, 65, -1, 20, - 4, -9, -3, -1, 35, 50, -3, -1, 64, 3, 19, -3, -1, 49, 48, - 34, -9, -7, -3, -1, 18, 33, -1, 2, 32, 17, -3, -1, 1, 16, - 0 -}; - -static short tab16[] = -{ --509,-503,-461,-323,-103, -37, -27, -15, -7, -3, -1, 239, 254, -1, 223, - 253, -3, -1, 207, 252, -1, 191, 251, -5, -1, 175, -1, 250, 159, -3, - -1, 249, 248, 143, -7, -3, -1, 127, 247, -1, 111, 246, 255, -9, -5, - -3, -1, 95, 245, 79, -1, 244, 243, -53, -1, 240, -1, 63, -29, -19, - -13, -7, -5, -1, 206, -1, 236, 221, 222, -1, 233, -1, 234, 217, -1, - 238, -1, 237, 235, -3, -1, 190, 205, -3, -1, 220, 219, 174, -11, -5, - -1, 204, -1, 173, 218, -3, -1, 126, 172, 202, -5, -3, -1, 201, 125, - 94, 189, 242, -93, -5, -3, -1, 47, 15, 31, -1, 241, -49, -25, -13, - -5, -1, 158, -1, 188, 203, -3, -1, 142, 232, -1, 157, 231, -7, -3, - -1, 187, 141, -1, 216, 110, -1, 230, 156, -13, -7, -3, -1, 171, 186, - -1, 229, 215, -1, 78, -1, 228, 140, -3, -1, 200, 62, -1, 109, -1, - 214, 155, -19, -11, -5, -3, -1, 185, 170, 225, -1, 212, -1, 184, 169, - -5, -1, 123, -1, 183, 208, 227, -7, -3, -1, 14, 224, -1, 93, 213, - -3, -1, 124, 199, -1, 77, 139, -75, -45, -27, -13, -7, -3, -1, 154, - 108, -1, 198, 61, -3, -1, 92, 197, 13, -7, -3, -1, 138, 168, -1, - 153, 76, -3, -1, 182, 122, 60, -11, -5, -3, -1, 91, 137, 28, -1, - 192, -1, 152, 121, -1, 226, -1, 46, 30, -15, -7, -3, -1, 211, 45, - -1, 210, 209, -5, -1, 59, -1, 151, 136, 29, -7, -3, -1, 196, 107, - -1, 195, 167, -1, 44, -1, 194, 181, -23, -13, -7, -3, -1, 193, 12, - -1, 75, 180, -3, -1, 106, 166, 179, -5, -3, -1, 90, 165, 43, -1, - 178, 27, -13, -5, -1, 177, -1, 11, 176, -3, -1, 105, 150, -1, 74, - 164, -5, -3, -1, 120, 135, 163, -3, -1, 58, 89, 42, -97, -57, -33, - -19, -11, -5, -3, -1, 149, 104, 161, -3, -1, 134, 119, 148, -5, -3, - -1, 73, 87, 103, 162, -5, -1, 26, -1, 10, 160, -3, -1, 57, 147, - -1, 88, 133, -9, -3, -1, 41, 146, -3, -1, 118, 9, 25, -5, -1, - 145, -1, 144, 72, -3, -1, 132, 117, -1, 56, 131, -21, -11, -5, -3, - -1, 102, 40, 130, -3, -1, 71, 116, 24, -3, -1, 129, 128, -3, -1, - 8, 86, 55, -9, -5, -1, 115, -1, 101, 70, -1, 39, 114, -5, -3, - -1, 100, 85, 7, 23, -23, -13, -5, -1, 113, -1, 112, 54, -3, -1, - 99, 69, -1, 84, 38, -3, -1, 98, 22, -1, 97, -1, 6, 96, -9, - -5, -1, 83, -1, 53, 68, -1, 37, 82, -1, 81, -1, 21, 5, -33, - -23, -13, -7, -3, -1, 52, 67, -1, 80, 36, -3, -1, 66, 51, 20, - -5, -1, 65, -1, 4, 64, -1, 35, 50, -3, -1, 19, 49, -3, -1, - 3, 48, 34, -3, -1, 18, 33, -1, 2, 32, -3, -1, 17, 1, 16, - 0 -}; - -static short tab24[] = -{ --451,-117, -43, -25, -15, -7, -3, -1, 239, 254, -1, 223, 253, -3, -1, - 207, 252, -1, 191, 251, -5, -1, 250, -1, 175, 159, -1, 249, 248, -9, - -5, -3, -1, 143, 127, 247, -1, 111, 246, -3, -1, 95, 245, -1, 79, - 244, -71, -7, -3, -1, 63, 243, -1, 47, 242, -5, -1, 241, -1, 31, - 240, -25, -9, -1, 15, -3, -1, 238, 222, -1, 237, 206, -7, -3, -1, - 236, 221, -1, 190, 235, -3, -1, 205, 220, -1, 174, 234, -15, -7, -3, - -1, 189, 219, -1, 204, 158, -3, -1, 233, 173, -1, 218, 188, -7, -3, - -1, 203, 142, -1, 232, 157, -3, -1, 217, 126, -1, 231, 172, 255,-235, --143, -77, -45, -25, -15, -7, -3, -1, 202, 187, -1, 141, 216, -5, -3, - -1, 14, 224, 13, 230, -5, -3, -1, 110, 156, 201, -1, 94, 186, -9, - -5, -1, 229, -1, 171, 125, -1, 215, 228, -3, -1, 140, 200, -3, -1, - 78, 46, 62, -15, -7, -3, -1, 109, 214, -1, 227, 155, -3, -1, 185, - 170, -1, 226, 30, -7, -3, -1, 225, 93, -1, 213, 124, -3, -1, 199, - 77, -1, 139, 184, -31, -15, -7, -3, -1, 212, 154, -1, 169, 108, -3, - -1, 198, 61, -1, 211, 45, -7, -3, -1, 210, 29, -1, 123, 183, -3, - -1, 209, 92, -1, 197, 138, -17, -7, -3, -1, 168, 153, -1, 76, 196, - -3, -1, 107, 182, -3, -1, 208, 12, 60, -7, -3, -1, 195, 122, -1, - 167, 44, -3, -1, 194, 91, -1, 181, 28, -57, -35, -19, -7, -3, -1, - 137, 152, -1, 193, 75, -5, -3, -1, 192, 11, 59, -3, -1, 176, 10, - 26, -5, -1, 180, -1, 106, 166, -3, -1, 121, 151, -3, -1, 160, 9, - 144, -9, -3, -1, 179, 136, -3, -1, 43, 90, 178, -7, -3, -1, 165, - 27, -1, 177, 105, -1, 150, 164, -17, -9, -5, -3, -1, 74, 120, 135, - -1, 58, 163, -3, -1, 89, 149, -1, 42, 162, -7, -3, -1, 161, 104, - -1, 134, 119, -3, -1, 73, 148, -1, 57, 147, -63, -31, -15, -7, -3, - -1, 88, 133, -1, 41, 103, -3, -1, 118, 146, -1, 25, 145, -7, -3, - -1, 72, 132, -1, 87, 117, -3, -1, 56, 131, -1, 102, 40, -17, -7, - -3, -1, 130, 24, -1, 71, 116, -5, -1, 129, -1, 8, 128, -1, 86, - 101, -7, -5, -1, 23, -1, 7, 112, 115, -3, -1, 55, 39, 114, -15, - -7, -3, -1, 70, 100, -1, 85, 113, -3, -1, 54, 99, -1, 69, 84, - -7, -3, -1, 38, 98, -1, 22, 97, -5, -3, -1, 6, 96, 53, -1, - 83, 68, -51, -37, -23, -15, -9, -3, -1, 37, 82, -1, 21, -1, 5, - 80, -1, 81, -1, 52, 67, -3, -1, 36, 66, -1, 51, 20, -9, -5, - -1, 65, -1, 4, 64, -1, 35, 50, -1, 19, 49, -7, -5, -3, -1, - 3, 48, 34, 18, -1, 33, -1, 2, 32, -3, -1, 17, 1, -1, 16, - 0 -}; - -static short tab_c0[] = -{ - -29, -21, -13, -7, -3, -1, 11, 15, -1, 13, 14, -3, -1, 7, 5, - 9, -3, -1, 6, 3, -1, 10, 12, -3, -1, 2, 1, -1, 4, 8, - 0 -}; - -static short tab_c1[] = -{ - -15, -7, -3, -1, 15, 14, -1, 13, 12, -3, -1, 11, 10, -1, 9, - 8, -7, -3, -1, 7, 6, -1, 5, 4, -3, -1, 3, 2, -1, 1, - 0 -}; - - - -static struct newhuff ht[] = -{ - { /* 0 */ 0 , tab0 } , - { /* 2 */ 0 , tab1 } , - { /* 3 */ 0 , tab2 } , - { /* 3 */ 0 , tab3 } , - { /* 0 */ 0 , tab0 } , - { /* 4 */ 0 , tab5 } , - { /* 4 */ 0 , tab6 } , - { /* 6 */ 0 , tab7 } , - { /* 6 */ 0 , tab8 } , - { /* 6 */ 0 , tab9 } , - { /* 8 */ 0 , tab10 } , - { /* 8 */ 0 , tab11 } , - { /* 8 */ 0 , tab12 } , - { /* 16 */ 0 , tab13 } , - { /* 0 */ 0 , tab0 } , - { /* 16 */ 0 , tab15 } , - - { /* 16 */ 1 , tab16 } , - { /* 16 */ 2 , tab16 } , - { /* 16 */ 3 , tab16 } , - { /* 16 */ 4 , tab16 } , - { /* 16 */ 6 , tab16 } , - { /* 16 */ 8 , tab16 } , - { /* 16 */ 10, tab16 } , - { /* 16 */ 13, tab16 } , - { /* 16 */ 4 , tab24 } , - { /* 16 */ 5 , tab24 } , - { /* 16 */ 6 , tab24 } , - { /* 16 */ 7 , tab24 } , - { /* 16 */ 8 , tab24 } , - { /* 16 */ 9 , tab24 } , - { /* 16 */ 11, tab24 } , - { /* 16 */ 13, tab24 } -}; - -static struct newhuff htc[] = -{ - { /* 1 , 1 , */ 0 , tab_c0 } , - { /* 1 , 1 , */ 0 , tab_c1 } -}; - - -#endif diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/icy2utf8.c audacious-plugins-3.2/src/mpg123/libmpg123/icy2utf8.c --- audacious-plugins-2.4.4/src/mpg123/libmpg123/icy2utf8.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/icy2utf8.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,438 +0,0 @@ -/* mpg123 note: This is BSD-licensed code that is no problem for mpg123 usage under LGPL. - It's Free, understood? ;-) */ - -/* Another note: This code is basically written by Thorsten Glaser, - Thomas Orgis did just some rearrangements and comments. */ - -/*- - * Copyright (c) 2008 - * Thorsten Glaser - * - * Provided that these terms and disclaimer and all copyright notices - * are retained or reproduced in an accompanying document, permission - * is granted to deal in this work without restriction, including un- - * limited rights to use, publicly perform, distribute, sell, modify, - * merge, give away, or sublicence. - * - * This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to - * the utmost extent permitted by applicable law, neither express nor - * implied; without malicious intent or gross negligence. In no event - * may a licensor, author or contributor be held liable for indirect, - * direct, other damage, loss, or other issues arising in any way out - * of dealing in the work, even if advised of the possibility of such - * damage or existence of a defect, except proven that it results out - * of said person's immediate fault when using the work as intended. - *- - * Convert from ICY encoding (windows-1252 codepage) to UTF-8 - */ - -/* Includes string and stdlib headers... */ -#include "compat.h" - -/* ThOr: too lazy for this type check; also we use char/short all around anyway. - Of cource, it would be the proper way to use _these_ kind of types all around. */ -#define uint8_t unsigned char -#define uint16_t unsigned short - -static const uint8_t cp1252_utf8[] = { - /* 0x00 @ 0 */ 0x00, - /* 0x01 @ 1 */ 0x01, - /* 0x02 @ 2 */ 0x02, - /* 0x03 @ 3 */ 0x03, - /* 0x04 @ 4 */ 0x04, - /* 0x05 @ 5 */ 0x05, - /* 0x06 @ 6 */ 0x06, - /* 0x07 @ 7 */ 0x07, - /* 0x08 @ 8 */ 0x08, - /* 0x09 @ 9 */ 0x09, - /* 0x0A @ 10 */ 0x0A, - /* 0x0B @ 11 */ 0x0B, - /* 0x0C @ 12 */ 0x0C, - /* 0x0D @ 13 */ 0x0D, - /* 0x0E @ 14 */ 0x0E, - /* 0x0F @ 15 */ 0x0F, - /* 0x10 @ 16 */ 0x10, - /* 0x11 @ 17 */ 0x11, - /* 0x12 @ 18 */ 0x12, - /* 0x13 @ 19 */ 0x13, - /* 0x14 @ 20 */ 0x14, - /* 0x15 @ 21 */ 0x15, - /* 0x16 @ 22 */ 0x16, - /* 0x17 @ 23 */ 0x17, - /* 0x18 @ 24 */ 0x18, - /* 0x19 @ 25 */ 0x19, - /* 0x1A @ 26 */ 0x1A, - /* 0x1B @ 27 */ 0x1B, - /* 0x1C @ 28 */ 0x1C, - /* 0x1D @ 29 */ 0x1D, - /* 0x1E @ 30 */ 0x1E, - /* 0x1F @ 31 */ 0x1F, - /* 0x20 @ 32 */ 0x20, - /* 0x21 @ 33 */ 0x21, - /* 0x22 @ 34 */ 0x22, - /* 0x23 @ 35 */ 0x23, - /* 0x24 @ 36 */ 0x24, - /* 0x25 @ 37 */ 0x25, - /* 0x26 @ 38 */ 0x26, - /* 0x27 @ 39 */ 0x27, - /* 0x28 @ 40 */ 0x28, - /* 0x29 @ 41 */ 0x29, - /* 0x2A @ 42 */ 0x2A, - /* 0x2B @ 43 */ 0x2B, - /* 0x2C @ 44 */ 0x2C, - /* 0x2D @ 45 */ 0x2D, - /* 0x2E @ 46 */ 0x2E, - /* 0x2F @ 47 */ 0x2F, - /* 0x30 @ 48 */ 0x30, - /* 0x31 @ 49 */ 0x31, - /* 0x32 @ 50 */ 0x32, - /* 0x33 @ 51 */ 0x33, - /* 0x34 @ 52 */ 0x34, - /* 0x35 @ 53 */ 0x35, - /* 0x36 @ 54 */ 0x36, - /* 0x37 @ 55 */ 0x37, - /* 0x38 @ 56 */ 0x38, - /* 0x39 @ 57 */ 0x39, - /* 0x3A @ 58 */ 0x3A, - /* 0x3B @ 59 */ 0x3B, - /* 0x3C @ 60 */ 0x3C, - /* 0x3D @ 61 */ 0x3D, - /* 0x3E @ 62 */ 0x3E, - /* 0x3F @ 63 */ 0x3F, - /* 0x40 @ 64 */ 0x40, - /* 0x41 @ 65 */ 0x41, - /* 0x42 @ 66 */ 0x42, - /* 0x43 @ 67 */ 0x43, - /* 0x44 @ 68 */ 0x44, - /* 0x45 @ 69 */ 0x45, - /* 0x46 @ 70 */ 0x46, - /* 0x47 @ 71 */ 0x47, - /* 0x48 @ 72 */ 0x48, - /* 0x49 @ 73 */ 0x49, - /* 0x4A @ 74 */ 0x4A, - /* 0x4B @ 75 */ 0x4B, - /* 0x4C @ 76 */ 0x4C, - /* 0x4D @ 77 */ 0x4D, - /* 0x4E @ 78 */ 0x4E, - /* 0x4F @ 79 */ 0x4F, - /* 0x50 @ 80 */ 0x50, - /* 0x51 @ 81 */ 0x51, - /* 0x52 @ 82 */ 0x52, - /* 0x53 @ 83 */ 0x53, - /* 0x54 @ 84 */ 0x54, - /* 0x55 @ 85 */ 0x55, - /* 0x56 @ 86 */ 0x56, - /* 0x57 @ 87 */ 0x57, - /* 0x58 @ 88 */ 0x58, - /* 0x59 @ 89 */ 0x59, - /* 0x5A @ 90 */ 0x5A, - /* 0x5B @ 91 */ 0x5B, - /* 0x5C @ 92 */ 0x5C, - /* 0x5D @ 93 */ 0x5D, - /* 0x5E @ 94 */ 0x5E, - /* 0x5F @ 95 */ 0x5F, - /* 0x60 @ 96 */ 0x60, - /* 0x61 @ 97 */ 0x61, - /* 0x62 @ 98 */ 0x62, - /* 0x63 @ 99 */ 0x63, - /* 0x64 @ 100 */ 0x64, - /* 0x65 @ 101 */ 0x65, - /* 0x66 @ 102 */ 0x66, - /* 0x67 @ 103 */ 0x67, - /* 0x68 @ 104 */ 0x68, - /* 0x69 @ 105 */ 0x69, - /* 0x6A @ 106 */ 0x6A, - /* 0x6B @ 107 */ 0x6B, - /* 0x6C @ 108 */ 0x6C, - /* 0x6D @ 109 */ 0x6D, - /* 0x6E @ 110 */ 0x6E, - /* 0x6F @ 111 */ 0x6F, - /* 0x70 @ 112 */ 0x70, - /* 0x71 @ 113 */ 0x71, - /* 0x72 @ 114 */ 0x72, - /* 0x73 @ 115 */ 0x73, - /* 0x74 @ 116 */ 0x74, - /* 0x75 @ 117 */ 0x75, - /* 0x76 @ 118 */ 0x76, - /* 0x77 @ 119 */ 0x77, - /* 0x78 @ 120 */ 0x78, - /* 0x79 @ 121 */ 0x79, - /* 0x7A @ 122 */ 0x7A, - /* 0x7B @ 123 */ 0x7B, - /* 0x7C @ 124 */ 0x7C, - /* 0x7D @ 125 */ 0x7D, - /* 0x7E @ 126 */ 0x7E, - /* 0x7F @ 127 */ 0x7F, - /* 0x80 @ 128 */ 0xE2, 0x82, 0xAC, - /* 0x81 @ 131 */ 0xEF, 0xBF, 0xBD, - /* 0x82 @ 134 */ 0xE2, 0x80, 0x9A, - /* 0x83 @ 137 */ 0xC6, 0x92, - /* 0x84 @ 139 */ 0xE2, 0x80, 0x9E, - /* 0x85 @ 142 */ 0xE2, 0x80, 0xA6, - /* 0x86 @ 145 */ 0xE2, 0x80, 0xA0, - /* 0x87 @ 148 */ 0xE2, 0x80, 0xA1, - /* 0x88 @ 151 */ 0xCB, 0x86, - /* 0x89 @ 153 */ 0xE2, 0x80, 0xB0, - /* 0x8A @ 156 */ 0xC5, 0xA0, - /* 0x8B @ 158 */ 0xE2, 0x80, 0xB9, - /* 0x8C @ 161 */ 0xC5, 0x92, - /* 0x8D @ 163 */ 0xEF, 0xBF, 0xBD, - /* 0x8E @ 166 */ 0xC5, 0xBD, - /* 0x8F @ 168 */ 0xEF, 0xBF, 0xBD, - /* 0x90 @ 171 */ 0xEF, 0xBF, 0xBD, - /* 0x91 @ 174 */ 0xE2, 0x80, 0x98, - /* 0x92 @ 177 */ 0xE2, 0x80, 0x99, - /* 0x93 @ 180 */ 0xE2, 0x80, 0x9C, - /* 0x94 @ 183 */ 0xE2, 0x80, 0x9D, - /* 0x95 @ 186 */ 0xE2, 0x80, 0xA2, - /* 0x96 @ 189 */ 0xE2, 0x80, 0x93, - /* 0x97 @ 192 */ 0xE2, 0x80, 0x94, - /* 0x98 @ 195 */ 0xCB, 0x9C, - /* 0x99 @ 197 */ 0xE2, 0x84, 0xA2, - /* 0x9A @ 200 */ 0xC5, 0xA1, - /* 0x9B @ 202 */ 0xE2, 0x80, 0xBA, - /* 0x9C @ 205 */ 0xC5, 0x93, - /* 0x9D @ 207 */ 0xEF, 0xBF, 0xBD, - /* 0x9E @ 210 */ 0xC5, 0xBE, - /* 0x9F @ 212 */ 0xC5, 0xB8, - /* 0xA0 @ 214 */ 0xC2, 0xA0, - /* 0xA1 @ 216 */ 0xC2, 0xA1, - /* 0xA2 @ 218 */ 0xC2, 0xA2, - /* 0xA3 @ 220 */ 0xC2, 0xA3, - /* 0xA4 @ 222 */ 0xC2, 0xA4, - /* 0xA5 @ 224 */ 0xC2, 0xA5, - /* 0xA6 @ 226 */ 0xC2, 0xA6, - /* 0xA7 @ 228 */ 0xC2, 0xA7, - /* 0xA8 @ 230 */ 0xC2, 0xA8, - /* 0xA9 @ 232 */ 0xC2, 0xA9, - /* 0xAA @ 234 */ 0xC2, 0xAA, - /* 0xAB @ 236 */ 0xC2, 0xAB, - /* 0xAC @ 238 */ 0xC2, 0xAC, - /* 0xAD @ 240 */ 0xC2, 0xAD, - /* 0xAE @ 242 */ 0xC2, 0xAE, - /* 0xAF @ 244 */ 0xC2, 0xAF, - /* 0xB0 @ 246 */ 0xC2, 0xB0, - /* 0xB1 @ 248 */ 0xC2, 0xB1, - /* 0xB2 @ 250 */ 0xC2, 0xB2, - /* 0xB3 @ 252 */ 0xC2, 0xB3, - /* 0xB4 @ 254 */ 0xC2, 0xB4, - /* 0xB5 @ 256 */ 0xC2, 0xB5, - /* 0xB6 @ 258 */ 0xC2, 0xB6, - /* 0xB7 @ 260 */ 0xC2, 0xB7, - /* 0xB8 @ 262 */ 0xC2, 0xB8, - /* 0xB9 @ 264 */ 0xC2, 0xB9, - /* 0xBA @ 266 */ 0xC2, 0xBA, - /* 0xBB @ 268 */ 0xC2, 0xBB, - /* 0xBC @ 270 */ 0xC2, 0xBC, - /* 0xBD @ 272 */ 0xC2, 0xBD, - /* 0xBE @ 274 */ 0xC2, 0xBE, - /* 0xBF @ 276 */ 0xC2, 0xBF, - /* 0xC0 @ 278 */ 0xC3, 0x80, - /* 0xC1 @ 280 */ 0xC3, 0x81, - /* 0xC2 @ 282 */ 0xC3, 0x82, - /* 0xC3 @ 284 */ 0xC3, 0x83, - /* 0xC4 @ 286 */ 0xC3, 0x84, - /* 0xC5 @ 288 */ 0xC3, 0x85, - /* 0xC6 @ 290 */ 0xC3, 0x86, - /* 0xC7 @ 292 */ 0xC3, 0x87, - /* 0xC8 @ 294 */ 0xC3, 0x88, - /* 0xC9 @ 296 */ 0xC3, 0x89, - /* 0xCA @ 298 */ 0xC3, 0x8A, - /* 0xCB @ 300 */ 0xC3, 0x8B, - /* 0xCC @ 302 */ 0xC3, 0x8C, - /* 0xCD @ 304 */ 0xC3, 0x8D, - /* 0xCE @ 306 */ 0xC3, 0x8E, - /* 0xCF @ 308 */ 0xC3, 0x8F, - /* 0xD0 @ 310 */ 0xC3, 0x90, - /* 0xD1 @ 312 */ 0xC3, 0x91, - /* 0xD2 @ 314 */ 0xC3, 0x92, - /* 0xD3 @ 316 */ 0xC3, 0x93, - /* 0xD4 @ 318 */ 0xC3, 0x94, - /* 0xD5 @ 320 */ 0xC3, 0x95, - /* 0xD6 @ 322 */ 0xC3, 0x96, - /* 0xD7 @ 324 */ 0xC3, 0x97, - /* 0xD8 @ 326 */ 0xC3, 0x98, - /* 0xD9 @ 328 */ 0xC3, 0x99, - /* 0xDA @ 330 */ 0xC3, 0x9A, - /* 0xDB @ 332 */ 0xC3, 0x9B, - /* 0xDC @ 334 */ 0xC3, 0x9C, - /* 0xDD @ 336 */ 0xC3, 0x9D, - /* 0xDE @ 338 */ 0xC3, 0x9E, - /* 0xDF @ 340 */ 0xC3, 0x9F, - /* 0xE0 @ 342 */ 0xC3, 0xA0, - /* 0xE1 @ 344 */ 0xC3, 0xA1, - /* 0xE2 @ 346 */ 0xC3, 0xA2, - /* 0xE3 @ 348 */ 0xC3, 0xA3, - /* 0xE4 @ 350 */ 0xC3, 0xA4, - /* 0xE5 @ 352 */ 0xC3, 0xA5, - /* 0xE6 @ 354 */ 0xC3, 0xA6, - /* 0xE7 @ 356 */ 0xC3, 0xA7, - /* 0xE8 @ 358 */ 0xC3, 0xA8, - /* 0xE9 @ 360 */ 0xC3, 0xA9, - /* 0xEA @ 362 */ 0xC3, 0xAA, - /* 0xEB @ 364 */ 0xC3, 0xAB, - /* 0xEC @ 366 */ 0xC3, 0xAC, - /* 0xED @ 368 */ 0xC3, 0xAD, - /* 0xEE @ 370 */ 0xC3, 0xAE, - /* 0xEF @ 372 */ 0xC3, 0xAF, - /* 0xF0 @ 374 */ 0xC3, 0xB0, - /* 0xF1 @ 376 */ 0xC3, 0xB1, - /* 0xF2 @ 378 */ 0xC3, 0xB2, - /* 0xF3 @ 380 */ 0xC3, 0xB3, - /* 0xF4 @ 382 */ 0xC3, 0xB4, - /* 0xF5 @ 384 */ 0xC3, 0xB5, - /* 0xF6 @ 386 */ 0xC3, 0xB6, - /* 0xF7 @ 388 */ 0xC3, 0xB7, - /* 0xF8 @ 390 */ 0xC3, 0xB8, - /* 0xF9 @ 392 */ 0xC3, 0xB9, - /* 0xFA @ 394 */ 0xC3, 0xBA, - /* 0xFB @ 396 */ 0xC3, 0xBB, - /* 0xFC @ 398 */ 0xC3, 0xBC, - /* 0xFD @ 400 */ 0xC3, 0xBD, - /* 0xFE @ 402 */ 0xC3, 0xBE, - /* 0xFF @ 404 */ 0xC3, 0xBF, -}; - -static const uint16_t tblofs[257] = { - /* 0x00 */ 0, 1, 2, 3, 4, 5, 6, 7, - /* 0x08 */ 8, 9, 10, 11, 12, 13, 14, 15, - /* 0x10 */ 16, 17, 18, 19, 20, 21, 22, 23, - /* 0x18 */ 24, 25, 26, 27, 28, 29, 30, 31, - /* 0x20 */ 32, 33, 34, 35, 36, 37, 38, 39, - /* 0x28 */ 40, 41, 42, 43, 44, 45, 46, 47, - /* 0x30 */ 48, 49, 50, 51, 52, 53, 54, 55, - /* 0x38 */ 56, 57, 58, 59, 60, 61, 62, 63, - /* 0x40 */ 64, 65, 66, 67, 68, 69, 70, 71, - /* 0x48 */ 72, 73, 74, 75, 76, 77, 78, 79, - /* 0x50 */ 80, 81, 82, 83, 84, 85, 86, 87, - /* 0x58 */ 88, 89, 90, 91, 92, 93, 94, 95, - /* 0x60 */ 96, 97, 98, 99, 100, 101, 102, 103, - /* 0x68 */ 104, 105, 106, 107, 108, 109, 110, 111, - /* 0x70 */ 112, 113, 114, 115, 116, 117, 118, 119, - /* 0x78 */ 120, 121, 122, 123, 124, 125, 126, 127, - /* 0x80 */ 128, 131, 134, 137, 139, 142, 145, 148, - /* 0x88 */ 151, 153, 156, 158, 161, 163, 166, 168, - /* 0x90 */ 171, 174, 177, 180, 183, 186, 189, 192, - /* 0x98 */ 195, 197, 200, 202, 205, 207, 210, 212, - /* 0xA0 */ 214, 216, 218, 220, 222, 224, 226, 228, - /* 0xA8 */ 230, 232, 234, 236, 238, 240, 242, 244, - /* 0xB0 */ 246, 248, 250, 252, 254, 256, 258, 260, - /* 0xB8 */ 262, 264, 266, 268, 270, 272, 274, 276, - /* 0xC0 */ 278, 280, 282, 284, 286, 288, 290, 292, - /* 0xC8 */ 294, 296, 298, 300, 302, 304, 306, 308, - /* 0xD0 */ 310, 312, 314, 316, 318, 320, 322, 324, - /* 0xD8 */ 326, 328, 330, 332, 334, 336, 338, 340, - /* 0xE0 */ 342, 344, 346, 348, 350, 352, 354, 356, - /* 0xE8 */ 358, 360, 362, 364, 366, 368, 370, 372, - /* 0xF0 */ 374, 376, 378, 380, 382, 384, 386, 388, - /* 0xF8 */ 390, 392, 394, 396, 398, 400, 402, 404, - /* sizeof (cp1252_utf8) */ 406 -}; - -/* Check if a string qualifies as UTF-8. */ -static int -is_utf8(const char* src) -{ - uint8_t ch; - size_t i; - const uint8_t* s = (const uint8_t*) src; - - /* We make a loop over every character, until we find a null one. - Remember: The string is supposed to end with a NUL, so ahead checks are safe. */ - while ((ch = *s++)) { - /* Ye olde 7bit ASCII chars 'rr fine for anything */ - if(ch < 0x80) continue; - - /* Now, we watch out for non-UTF conform sequences. */ - else if ((ch < 0xC2) || (ch > 0xFD)) - return 0; - /* check for some misformed sequences */ - if (((ch == 0xC2) && (s[0] < 0xA0)) || - ((ch == 0xEF) && (s[0] == 0xBF) && (s[1] > 0xBD))) - /* XXX add more for outside the BMP */ - return 0; - - /* Check the continuation bytes. */ - if (ch < 0xE0) i = 1; - else if (ch < 0xF0) i = 2; - else if (ch < 0xF8) i = 3; - else if (ch < 0xFC) i = 4; - else - i = 5; - - while (i--) - if ((*s++ & 0xC0) != 0x80) - return 0; - } - - /* If no check failed, the string indeed looks like valid UTF-8. */ - return 1; -} - -/* The main conversion routine. - ICY in CP-1252 (or UTF-8 alreay) to UTF-8 encoded string. - If force is applied, it will always encode to UTF-8, without checking. */ -char * -icy2utf8(const char *src, int force) -{ - const uint8_t *s = (const uint8_t *)src; - size_t srclen, dstlen, i, k; - uint8_t ch, *d; - char *dst; - - /* Some funny streams from Apple/iTunes give ICY info in UTF-8 already. - So, be prepared and don't try to re-encode such. Unless forced. */ - if(!force && is_utf8(src)) return (strdup(src)); - - srclen = strlen(src) + 1; - /* allocate conservatively */ - if ((d = malloc(srclen * 3)) == NULL) - return (NULL); - - i = 0; - dstlen = 0; - while (i < srclen) { - ch = s[i++]; - k = tblofs[ch]; - while (k < tblofs[ch + 1]) - d[dstlen++] = cp1252_utf8[k++]; - } - - /* dstlen includes trailing NUL since srclen also does */ - if ((dst = realloc(d, dstlen)) == NULL) { - free(d); - return (NULL); - } - return (dst); -} - -/* This stuff is for testing only. */ -#ifdef TEST -static const char intext[] = "\225 Gr\374\337e kosten 0,55 \200\205"; - -#include - -int -main(void) -{ - char *t, *t2; - - if ((t = icy2utf8(intext, 0)) == NULL) { - fprintf(stderr, "out of memory\n"); - return (1); - } - - /* make sure it won't be converted twice */ - if ((t2 = icy2utf8(t), 0) == NULL) { - fprintf(stderr, "out of memory\n"); - return (1); - } - - printf("Result is:\t\343\200\214%s\343\200\215\n" - "\t\t\343\200\214%s\343\200\215\n", t, t2); - - free(t); - free(t2); - return (0); -} -#endif diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/icy2utf8.h audacious-plugins-3.2/src/mpg123/libmpg123/icy2utf8.h --- audacious-plugins-2.4.4/src/mpg123/libmpg123/icy2utf8.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/icy2utf8.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -/* You expect a license plate for _this_ file? */ -#ifndef MPG123_ICY2UTF_H -#define MPG123_ICY2UTF_H - -#ifndef NO_ICY -/* (string, force conversion) */ -char *icy2utf8(const char *, int); -#endif - -#endif diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/icy.c audacious-plugins-3.2/src/mpg123/libmpg123/icy.c --- audacious-plugins-2.4.4/src/mpg123/libmpg123/icy.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/icy.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -/* - icy: Puny code to pretend for a serious ICY data structure. - - copyright 2007 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis -*/ - -#include "icy.h" - -void init_icy(struct icy_meta *icy) -{ - icy->data = NULL; -} - -void clear_icy(struct icy_meta *icy) -{ - if(icy->data != NULL) free(icy->data); - init_icy(icy); -} - -void reset_icy(struct icy_meta *icy) -{ - clear_icy(icy); - init_icy(icy); -} -/*void set_icy(struct icy_meta *icy, char* new_data) -{ - if(icy->data) free(icy->data); - icy->data = new_data; - icy->changed = 1; -}*/ diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/icy.h audacious-plugins-3.2/src/mpg123/libmpg123/icy.h --- audacious-plugins-2.4.4/src/mpg123/libmpg123/icy.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/icy.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -/* - icy: support for SHOUTcast ICY meta info, an attempt to keep it organized - - copyright 2006-7 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis and modelled after patch by Honza -*/ -#ifndef MPG123_ICY_H -#define MPG123_ICY_H - -#ifndef NO_ICY - -#include "compat.h" -#include "mpg123.h" - -struct icy_meta -{ - char* data; - off_t interval; - off_t next; -}; - -void init_icy(struct icy_meta *); -void clear_icy(struct icy_meta *); -void reset_icy(struct icy_meta *); - -#else - -#define init_icy(a) -#define clear_icy(a) -#define reset_icy(a) - -#endif /* NO_ICY */ - -#endif diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/id3.c audacious-plugins-3.2/src/mpg123/libmpg123/id3.c --- audacious-plugins-2.4.4/src/mpg123/libmpg123/id3.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/id3.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,991 +0,0 @@ -/* - id3: ID3v2.3 and ID3v2.4 parsing (a relevant subset) - - copyright 2006-2008 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis -*/ - -#include "mpg123lib_intern.h" -#include "id3.h" -#include "debug.h" - -#ifndef NO_ID3V2 /* Only the main parsing routine will always be there. */ - -/* We know the usual text frames plus some specifics. */ -#define KNOWN_FRAMES 4 -static const char frame_type[KNOWN_FRAMES][5] = { "COMM", "TXXX", "RVA2", "USLT" }; -enum frame_types { unknown = -2, text = -1, comment, extra, rva2, uslt }; - -/* UTF support definitions */ - -typedef void (*text_converter)(mpg123_string *sb, const unsigned char* source, size_t len, const int noquiet); - -static void convert_latin1 (mpg123_string *sb, const unsigned char* source, size_t len, const int noquiet); -static void convert_utf16bom(mpg123_string *sb, const unsigned char* source, size_t len, const int noquiet); -static void convert_utf8 (mpg123_string *sb, const unsigned char* source, size_t len, const int noquiet); - -static const text_converter text_converters[4] = -{ - convert_latin1, - /* We always check for (multiple) BOM in 16bit unicode. Without BOM, UTF16 BE is the default. - Errors in encoding are detected anyway. */ - convert_utf16bom, - convert_utf16bom, - convert_utf8 -}; - -const unsigned int encoding_widths[4] = { 1, 2, 2, 1 }; - -/* the code starts here... */ - -static void null_id3_links(mpg123_handle *fr) -{ - fr->id3v2.title = NULL; - fr->id3v2.artist = NULL; - fr->id3v2.album = NULL; - fr->id3v2.year = NULL; - fr->id3v2.genre = NULL; - fr->id3v2.comment = NULL; -} - -void init_id3(mpg123_handle *fr) -{ - fr->id3v2.version = 0; /* nothing there */ - null_id3_links(fr); - fr->id3v2.comments = 0; - fr->id3v2.comment_list = NULL; - fr->id3v2.texts = 0; - fr->id3v2.text = NULL; - fr->id3v2.extras = 0; - fr->id3v2.extra = NULL; -} - -/* Managing of the text, comment and extra lists. */ - -/* Initialize one element. */ -static void init_mpg123_text(mpg123_text *txt) -{ - mpg123_init_string(&txt->text); - mpg123_init_string(&txt->description); - txt->id[0] = 0; - txt->id[1] = 0; - txt->id[2] = 0; - txt->id[3] = 0; - txt->lang[0] = 0; - txt->lang[1] = 0; - txt->lang[2] = 0; -} - -/* Free memory of one element. */ -static void free_mpg123_text(mpg123_text *txt) -{ - mpg123_free_string(&txt->text); - mpg123_free_string(&txt->description); -} - -/* Free memory of whole list. */ -#define free_comment(mh) free_id3_text(&((mh)->id3v2.comment_list), &((mh)->id3v2.comments)) -#define free_text(mh) free_id3_text(&((mh)->id3v2.text), &((mh)->id3v2.texts)) -#define free_extra(mh) free_id3_text(&((mh)->id3v2.extra), &((mh)->id3v2.extras)) -static void free_id3_text(mpg123_text **list, size_t *size) -{ - size_t i; - for(i=0; i<*size; ++i) free_mpg123_text(&((*list)[i])); - - free(*list); - *list = NULL; - *size = 0; -} - -/* Add items to the list. */ -#define add_comment(mh) add_id3_text(&((mh)->id3v2.comment_list), &((mh)->id3v2.comments)) -#define add_text(mh) add_id3_text(&((mh)->id3v2.text), &((mh)->id3v2.texts)) -#define add_extra(mh) add_id3_text(&((mh)->id3v2.extra), &((mh)->id3v2.extras)) -static mpg123_text *add_id3_text(mpg123_text **list, size_t *size) -{ - mpg123_text *x = safe_realloc(*list, sizeof(mpg123_text)*(*size+1)); - if(x == NULL) return NULL; /* bad */ - - *list = x; - *size += 1; - init_mpg123_text(&((*list)[*size-1])); - - return &((*list)[*size-1]); /* Return pointer to the added text. */ -} - -/* Remove the last item. */ -#define pop_comment(mh) pop_id3_text(&((mh)->id3v2.comment_list), &((mh)->id3v2.comments)) -#define pop_text(mh) pop_id3_text(&((mh)->id3v2.text), &((mh)->id3v2.texts)) -#define pop_extra(mh) pop_id3_text(&((mh)->id3v2.extra), &((mh)->id3v2.extras)) -static void pop_id3_text(mpg123_text **list, size_t *size) -{ - mpg123_text *x; - if(*size < 1) return; - - free_mpg123_text(&((*list)[*size-1])); - if(*size > 1) - { - x = safe_realloc(*list, sizeof(mpg123_text)*(*size-1)); - if(x != NULL){ *list = x; *size -= 1; } - } - else - { - free(*list); - *list = NULL; - *size = 0; - } -} - -/* OK, back t the higher level functions. */ - -void exit_id3(mpg123_handle *fr) -{ - free_comment(fr); - free_extra(fr); - free_text(fr); -} - -void reset_id3(mpg123_handle *fr) -{ - exit_id3(fr); - init_id3(fr); -} - -/* Set the id3v2.artist id3v2.title ... links to elements of the array. */ -void id3_link(mpg123_handle *fr) -{ - size_t i; - mpg123_id3v2 *v2 = &fr->id3v2; - debug("linking ID3v2"); - null_id3_links(fr); - for(i=0; itexts; ++i) - { - mpg123_text *entry = &v2->text[i]; - if (!strncmp("TIT2", entry->id, 4)) v2->title = &entry->text; - else if(!strncmp("TALB", entry->id, 4)) v2->album = &entry->text; - else if(!strncmp("TPE1", entry->id, 4)) v2->artist = &entry->text; - else if(!strncmp("TYER", entry->id, 4)) v2->year = &entry->text; - else if(!strncmp("TCON", entry->id, 4)) v2->genre = &entry->text; - } - for(i=0; icomments; ++i) - { - mpg123_text *entry = &v2->comment_list[i]; - if(entry->description.fill == 0 || entry->description.p[0] == 0) - v2->comment = &entry->text; - } - /* When no generic comment found, use the last non-generic one. */ - if(v2->comment == NULL && v2->comments > 0) - v2->comment = &v2->comment_list[v2->comments-1].text; -} - -/* - Store ID3 text data in an mpg123_string; either verbatim copy or everything translated to UTF-8 encoding. - Preserve the zero string separator (I don't need strlen for the total size). - - ID3v2 standard says that there should be one text frame of specific type per tag, and subsequent tags overwrite old values. - So, I always replace the text that may be stored already (perhaps with a list of zero-separated strings, though). -*/ -void store_id3_text(mpg123_string *sb, char *source, size_t source_size, const int noquiet, const int notranslate) -{ - if(!source_size) - { - debug("Empty id3 data!"); - return; - } - - /* We shall just copy the data. Client wants to decode itself. */ - if(notranslate) - { - /* Future: Add a path for ID3 errors. */ - if(!mpg123_resize_string(sb, source_size)) - { - if(noquiet) error("Cannot resize target string, out of memory?"); - return; - } - memcpy(sb->p, source, source_size); - sb->fill = source_size; - debug1("stored undecoded ID3 text of size %"SIZE_P, (size_p)source_size); - return; - } - - id3_to_utf8(sb, ((unsigned char *)source)[0], (unsigned char*)source+1, source_size-1, noquiet); - - if(sb->fill) debug1("UTF-8 string (the first one): %s", sb->p); - else if(noquiet) error("unable to convert string to UTF-8 (out of memory, junk input?)!"); -} - -/* On error, sb->size is 0. */ -void id3_to_utf8(mpg123_string *sb, unsigned char encoding, const unsigned char *source, size_t source_size, int noquiet) -{ - unsigned int bwidth; - debug1("encoding: %u", encoding); - /* A note: ID3v2.3 uses UCS-2 non-variable 16bit encoding, v2.4 uses UTF16. - UTF-16 uses a reserved/private range in UCS-2 to add the magic, so we just always treat it as UTF. */ - if(encoding > mpg123_id3_enc_max) - { - if(noquiet) error1("Unknown text encoding %u, I take no chances, sorry!", encoding); - - mpg123_free_string(sb); - return; - } - bwidth = encoding_widths[encoding]; - /* Hack! I've seen a stray zero byte before BOM. Is that supposed to happen? */ - if(encoding != mpg123_id3_utf16be) /* UTF16be _can_ beging with a null byte! */ - while(source_size > bwidth && source[0] == 0) - { - --source_size; - ++source; - debug("skipped leading zero"); - } - if(source_size % bwidth) - { - /* When we need two bytes for a character, it's strange to have an uneven bytestream length. */ - if(noquiet) warning2("Weird tag size %d for encoding %u - I will probably trim too early or something but I think the MP3 is broken.", (int)source_size, encoding); - source_size -= source_size % bwidth; - } - text_converters[encoding](sb, source, source_size, noquiet); -} - -char *next_text(char* prev, int encoding, size_t limit) -{ - char *text = prev; - size_t width = encoding_widths[encoding]; - - /* So I go lengths to find zero or double zero... - Remember bug 2834636: Only check for aligned NULLs! */ - while(text-prev < (ssize_t)limit) - { - if(text[0] == 0) - { - if(width <= limit-(text-prev)) - { - size_t i = 1; - for(; i= limit) text = NULL; - - return text; -} - -static const char *enc_name(int enc) -{ - switch(enc) - { - case 0: return "Latin 1"; - case 1: return "UTF-16 BOM"; - case 2: return "UTF-16 BE"; - case 3: return "UTF-8"; - default: return "unknown!"; - } -} - -static void process_text(mpg123_handle *fr, char *realdata, size_t realsize, char *id) -{ - /* Text encoding $xx */ - /* The text (encoded) ... */ - mpg123_text *t = add_text(fr); - if(VERBOSE4) fprintf(stderr, "Note: Storing text from %s encoding\n", enc_name(realdata[0])); - if(t == NULL) - { - if(NOQUIET) error("Unable to attach new text!"); - return; - } - memcpy(t->id, id, 4); - store_id3_text(&t->text, realdata, realsize, NOQUIET, fr->p.flags & MPG123_PLAIN_ID3TEXT); - if(VERBOSE4) fprintf(stderr, "Note: ID3v2 %c%c%c%c text frame: %s\n", id[0], id[1], id[2], id[3], t->text.p); -} - -/* Store a new comment that perhaps is a RVA / RVA_ALBUM/AUDIOPHILE / RVA_MIX/RADIO one - Special gimmik: It also stores USLT to the texts. Stucture is the same as for comments. */ -static void process_comment(mpg123_handle *fr, enum frame_types tt, char *realdata, size_t realsize, int rva_level, char *id) -{ - /* Text encoding $xx */ - /* Language $xx xx xx */ - /* Short description (encoded!) $00 (00) */ - /* Then the comment text (encoded) ... */ - char encoding = realdata[0]; - char *lang = realdata+1; /* I'll only use the 3 bytes! */ - char *descr = realdata+4; - char *text = NULL; - mpg123_text *xcom = NULL; - mpg123_text localcom; /* UTF-8 variant for local processing. */ - - if((int)realsize < descr-realdata) - { - if(NOQUIET) error1("Invalid frame size of %lu (too small for anything).", (unsigned long)realsize); - return; - } - xcom = (tt == uslt ? add_text(fr) : add_comment(fr)); - if(VERBOSE4) fprintf(stderr, "Note: Storing comment from %s encoding\n", enc_name(realdata[0])); - if(xcom == NULL) - { - if(NOQUIET) error("Unable to attach new comment!"); - return; - } - memcpy(xcom->lang, lang, 3); - memcpy(xcom->id, id, 4); - /* Now I can abuse a byte from lang for the encoding. */ - descr[-1] = encoding; - /* Be careful with finding the end of description, I have to honor encoding here. */ - text = next_text(descr, encoding, realsize-(descr-realdata)); - if(text == NULL) - { - if(NOQUIET) error("No comment text / valid description?"); - pop_comment(fr); - return; - } - - init_mpg123_text(&localcom); - /* Store the text, without translation to UTF-8, but for comments always a local copy in UTF-8. - Reminder: No bailing out from here on without freeing the local comment data! */ - store_id3_text(&xcom->description, descr-1, text-descr+1, NOQUIET, fr->p.flags & MPG123_PLAIN_ID3TEXT); - if(tt == comment) - store_id3_text(&localcom.description, descr-1, text-descr+1, NOQUIET, 0); - - text[-1] = encoding; /* Byte abusal for encoding... */ - store_id3_text(&xcom->text, text-1, realsize+1-(text-realdata), NOQUIET, fr->p.flags & MPG123_PLAIN_ID3TEXT); - /* Remember: I will probably decode the above (again) for rva comment checking. So no messing around, please. */ - - if(VERBOSE4) /* Do _not_ print the verbatim text: The encoding might be funny! */ - { - fprintf(stderr, "Note: ID3 comm/uslt desc of length %"SIZE_P".\n", (size_p)xcom->description.fill); - fprintf(stderr, "Note: ID3 comm/uslt text of length %"SIZE_P".\n", (size_p)xcom->text.fill); - } - /* Look out for RVA info only when we really deal with a straight comment. */ - if(tt == comment && localcom.description.fill > 0) - { - int rva_mode = -1; /* mix / album */ - if( !strcasecmp(localcom.description.p, "rva") - || !strcasecmp(localcom.description.p, "rva_mix") - || !strcasecmp(localcom.description.p, "rva_track") - || !strcasecmp(localcom.description.p, "rva_radio") ) - rva_mode = 0; - else if( !strcasecmp(localcom.description.p, "rva_album") - || !strcasecmp(localcom.description.p, "rva_audiophile") - || !strcasecmp(localcom.description.p, "rva_user") ) - rva_mode = 1; - if((rva_mode > -1) && (fr->rva.level[rva_mode] <= rva_level)) - { - /* Only translate the contents in here where we really need them. */ - store_id3_text(&localcom.text, text-1, realsize+1-(text-realdata), NOQUIET, 0); - if(localcom.text.fill > 0) - { - fr->rva.gain[rva_mode] = (float) atof(localcom.text.p); - if(VERBOSE3) fprintf(stderr, "Note: RVA value %fdB\n", fr->rva.gain[rva_mode]); - fr->rva.peak[rva_mode] = 0; - fr->rva.level[rva_mode] = rva_level; - } - } - } - /* Make sure to free the local memory... */ - free_mpg123_text(&localcom); -} - -void process_extra(mpg123_handle *fr, char* realdata, size_t realsize, int rva_level, char *id) -{ - /* Text encoding $xx */ - /* Description ... $00 (00) */ - /* Text ... */ - char encoding = realdata[0]; - char *descr = realdata+1; /* remember, the encoding is descr[-1] */ - char *text; - mpg123_text *xex; - mpg123_text localex; - - if((int)realsize < descr-realdata) - { - if(NOQUIET) error1("Invalid frame size of %lu (too small for anything).", (unsigned long)realsize); - return; - } - text = next_text(descr, encoding, realsize-(descr-realdata)); - if(VERBOSE4) fprintf(stderr, "Note: Storing extra from %s encoding\n", enc_name(realdata[0])); - if(text == NULL) - { - if(NOQUIET) error("No extra frame text / valid description?"); - return; - } - xex = add_extra(fr); - if(xex == NULL) - { - if(NOQUIET) error("Unable to attach new extra text!"); - return; - } - memcpy(xex->id, id, 4); - init_mpg123_text(&localex); /* For our local copy. */ - - /* The outside storage gets reencoded to UTF-8 only if not requested otherwise. - Remember that we really need the -1 here to hand in the encoding byte!*/ - store_id3_text(&xex->description, descr-1, text-descr+1, NOQUIET, fr->p.flags & MPG123_PLAIN_ID3TEXT); - /* Our local copy is always stored in UTF-8! */ - store_id3_text(&localex.description, descr-1, text-descr+1, NOQUIET, 0); - /* At first, only store the outside copy of the payload. We may not need the local copy. */ - text[-1] = encoding; - store_id3_text(&xex->text, text-1, realsize-(text-realdata)+1, NOQUIET, fr->p.flags & MPG123_PLAIN_ID3TEXT); - - /* Now check if we would like to interpret this extra info for RVA. */ - if(localex.description.fill > 0) - { - int is_peak = 0; - int rva_mode = -1; /* mix / album */ - - if(!strncasecmp(localex.description.p, "replaygain_track_",17)) - { - if(VERBOSE3) fprintf(stderr, "Note: RVA ReplayGain track gain/peak\n"); - - rva_mode = 0; - if(!strcasecmp(localex.description.p, "replaygain_track_peak")) is_peak = 1; - else if(strcasecmp(localex.description.p, "replaygain_track_gain")) rva_mode = -1; - } - else - if(!strncasecmp(localex.description.p, "replaygain_album_",17)) - { - if(VERBOSE3) fprintf(stderr, "Note: RVA ReplayGain album gain/peak\n"); - - rva_mode = 1; - if(!strcasecmp(localex.description.p, "replaygain_album_peak")) is_peak = 1; - else if(strcasecmp(localex.description.p, "replaygain_album_gain")) rva_mode = -1; - } - if((rva_mode > -1) && (fr->rva.level[rva_mode] <= rva_level)) - { - /* Now we need the translated copy of the data. */ - store_id3_text(&localex.text, text-1, realsize-(text-realdata)+1, NOQUIET, 0); - if(localex.text.fill > 0) - { - if(is_peak) - { - fr->rva.peak[rva_mode] = (float) atof(localex.text.p); - if(VERBOSE3) fprintf(stderr, "Note: RVA peak %f\n", fr->rva.peak[rva_mode]); - } - else - { - fr->rva.gain[rva_mode] = (float) atof(localex.text.p); - if(VERBOSE3) fprintf(stderr, "Note: RVA gain %fdB\n", fr->rva.gain[rva_mode]); - } - fr->rva.level[rva_mode] = rva_level; - } - } - } - - free_mpg123_text(&localex); -} - -/* Make a ID3v2.3+ 4-byte ID from a ID3v2.2 3-byte ID - Note that not all frames survived to 2.4; the mapping goes to 2.3 . - A notable miss is the old RVA frame, which is very unspecific anyway. - This function returns -1 when a not known 3 char ID was encountered, 0 otherwise. */ -int promote_framename(mpg123_handle *fr, char *id) /* fr because of VERBOSE macros */ -{ - size_t i; - char *old[] = - { - "COM", "TAL", "TBP", "TCM", "TCO", "TCR", "TDA", "TDY", "TEN", "TFT", - "TIM", "TKE", "TLA", "TLE", "TMT", "TOA", "TOF", "TOL", "TOR", "TOT", - "TP1", "TP2", "TP3", "TP4", "TPA", "TPB", "TRC", "TDA", "TRK", "TSI", - "TSS", "TT1", "TT2", "TT3", "TXT", "TXX", "TYE" - }; - char *new[] = - { - "COMM", "TALB", "TBPM", "TCOM", "TCON", "TCOP", "TDAT", "TDLY", "TENC", "TFLT", - "TIME", "TKEY", "TLAN", "TLEN", "TMED", "TOPE", "TOFN", "TOLY", "TORY", "TOAL", - "TPE1", "TPE2", "TPE3", "TPE4", "TPOS", "TPUB", "TSRC", "TRDA", "TRCK", "TSIZ", - "TSSE", "TIT1", "TIT2", "TIT3", "TEXT", "TXXX", "TYER" - }; - for(i=0; ird->read_frame_body(fr, buf, 6)) < 0) /* read more header information */ - return ret2; - - if(buf[0] == 0xff) return 0; /* Revision, will never be 0xff. */ - - /* second new byte are some nice flags, if these are invalid skip the whole thing */ - flags = buf[1]; - debug1("ID3v2: flags 0x%08x", flags); - /* use 4 bytes from buf to construct 28bit uint value and return 1; return 0 if bytes are not synchsafe */ - #define synchsafe_to_long(buf,res) \ - ( \ - (((buf)[0]|(buf)[1]|(buf)[2]|(buf)[3]) & 0x80) ? 0 : \ - (res = (((unsigned long) (buf)[0]) << 21) \ - | (((unsigned long) (buf)[1]) << 14) \ - | (((unsigned long) (buf)[2]) << 7) \ - | ((unsigned long) (buf)[3]) \ - ,1) \ - ) - /* id3v2.3 does not store synchsafe frame sizes, but synchsafe tag size - doh! */ - #define bytes_to_long(buf,res) \ - ( \ - major == 3 ? \ - (res = (((unsigned long) (buf)[0]) << 24) \ - | (((unsigned long) (buf)[1]) << 16) \ - | (((unsigned long) (buf)[2]) << 8) \ - | ((unsigned long) (buf)[3]) \ - ,1) : synchsafe_to_long(buf,res) \ - ) - /* for id3v2.2 only */ - #define threebytes_to_long(buf,res) \ - ( \ - res = (((unsigned long) (buf)[0]) << 16) \ - | (((unsigned long) (buf)[1]) << 8) \ - | ((unsigned long) (buf)[2]) \ - ,1 \ - ) - - /* length-10 or length-20 (footer present); 4 synchsafe integers == 28 bit number */ - /* we have already read 10 bytes, so left are length or length+10 bytes belonging to tag */ - if(!synchsafe_to_long(buf+2,length)) - { - if(NOQUIET) error4("Bad tag length (not synchsafe): 0x%02x%02x%02x%02x; You got a bad ID3 tag here.", buf[2],buf[3],buf[4],buf[5]); - return 0; - } - debug1("ID3v2: tag data length %lu", length); -#ifndef NO_ID3V2 - if(VERBOSE2) fprintf(stderr,"Note: ID3v2.%i rev %i tag of %lu bytes\n", major, buf[0], length); - /* skip if unknown version/scary flags, parse otherwise */ - if((flags & UNKNOWN_FLAGS) || (major > 4) || (major < 2)) - { - /* going to skip because there are unknown flags set */ - if(NOQUIET) warning2("ID3v2: Won't parse the ID3v2 tag with major version %u and flags 0x%xu - some extra code may be needed", major, flags); -#endif - if((ret2 = fr->rd->skip_bytes(fr,length)) < 0) /* will not store data in backbuff! */ - ret = ret2; -#ifndef NO_ID3V2 - } - else - { - unsigned char* tagdata = NULL; - fr->id3v2.version = major; - /* try to interpret that beast */ - if((tagdata = (unsigned char*) malloc(length+1)) != NULL) - { - debug("ID3v2: analysing frames..."); - if((ret2 = fr->rd->read_frame_body(fr,tagdata,length)) > 0) - { - unsigned long tagpos = 0; - debug1("ID3v2: have read at all %lu bytes for the tag now", (unsigned long)length+6); - /* going to apply strlen for strings inside frames, make sure that it doesn't overflow! */ - tagdata[length] = 0; - if(flags & EXTHEAD_FLAG) - { - debug("ID3v2: skipping extended header"); - if(!bytes_to_long(tagdata, tagpos)) - { - ret = 0; - if(NOQUIET) error4("Bad (non-synchsafe) tag offset: 0x%02x%02x%02x%02x", tagdata[0], tagdata[1], tagdata[2], tagdata[3]); - } - } - if(ret > 0) - { - char id[5]; - unsigned long framesize; - unsigned long fflags; /* need 16 bits, actually */ - id[4] = 0; - /* pos now advanced after ext head, now a frame has to follow */ - while(tagpos < length-10) /* I want to read at least a full header */ - { - int i = 0; - unsigned long pos = tagpos; - int head_part = fr->id3v2.version == 2 ? 3 : 4; /* bytes of frame title and of framesize value */ - /* level 1,2,3 - 0 is info from lame/info tag! */ - /* rva tags with ascending significance, then general frames */ - enum frame_types tt = unknown; - /* we may have entered the padding zone or any other strangeness: check if we have valid frame id characters */ - for(i=0; i< head_part; ++i) - if( !( ((tagdata[tagpos+i] > 47) && (tagdata[tagpos+i] < 58)) - || ((tagdata[tagpos+i] > 64) && (tagdata[tagpos+i] < 91)) ) ) - { - debug5("ID3v2: real tag data apparently ended after %lu bytes with 0x%02x%02x%02x%02x", tagpos, tagdata[tagpos], tagdata[tagpos+1], tagdata[tagpos+2], tagdata[tagpos+3]); - /* This is no hard error... let's just hope that we got something meaningful already (ret==1 in that case). */ - goto tagparse_cleanup; /* Need to escape two loops here. */ - } - if(ret > 0) - { - /* 4 or 3 bytes id */ - strncpy(id, (char*) tagdata+pos, head_part); - pos += head_part; - tagpos += head_part; - /* size as 32 bits or 28 bits */ - if(fr->id3v2.version == 2) threebytes_to_long(tagdata+pos, framesize); - else - if(!bytes_to_long(tagdata+pos, framesize)) - { - /* Just assume that up to now there was some good data. */ - if(NOQUIET) error1("ID3v2: non-syncsafe size of %s frame, skipping the remainder of tag", id); - break; - } - if(VERBOSE3) fprintf(stderr, "Note: ID3v2 %s frame of size %lu\n", id, framesize); - tagpos += head_part + framesize; /* the important advancement in whole tag */ - if(tagpos > length) - { - if(NOQUIET) error("Whoa! ID3v2 frame claims to be larger than the whole rest of the tag."); - break; - } - pos += head_part; - if(fr->id3v2.version > 2) - { - fflags = (((unsigned long) tagdata[pos]) << 8) | ((unsigned long) tagdata[pos+1]); - pos += 2; - tagpos += 2; - } - else fflags = 0; - /* for sanity, after full parsing tagpos should be == pos */ - /* debug4("ID3v2: found %s frame, size %lu (as bytes: 0x%08lx), flags 0x%016lx", id, framesize, framesize, fflags); */ - /* %0abc0000 %0h00kmnp */ - #define BAD_FFLAGS (unsigned long) 36784 - #define PRES_TAG_FFLAG 16384 - #define PRES_FILE_FFLAG 8192 - #define READ_ONLY_FFLAG 4096 - #define GROUP_FFLAG 64 - #define COMPR_FFLAG 8 - #define ENCR_FFLAG 4 - #define UNSYNC_FFLAG 2 - #define DATLEN_FFLAG 1 - if(head_part < 4 && promote_framename(fr, id) != 0) continue; - - /* shall not or want not handle these */ - if(fflags & (BAD_FFLAGS | COMPR_FFLAG | ENCR_FFLAG)) - { - if(NOQUIET) warning("ID3v2: skipping invalid/unsupported frame"); - continue; - } - - for(i = 0; i < KNOWN_FRAMES; ++i) - if(!strncmp(frame_type[i], id, 4)){ tt = i; break; } - - if(id[0] == 'T' && tt != extra) tt = text; - - if(tt != unknown) - { - int rva_mode = -1; /* mix / album */ - unsigned long realsize = framesize; - unsigned char* realdata = tagdata+pos; - if((flags & UNSYNC_FLAG) || (fflags & UNSYNC_FFLAG)) - { - unsigned long ipos = 0; - unsigned long opos = 0; - debug("Id3v2: going to de-unsync the frame data"); - /* de-unsync: FF00 -> FF; real FF00 is simply represented as FF0000 ... */ - /* damn, that means I have to delete bytes from withing the data block... thus need temporal storage */ - /* standard mandates that de-unsync should always be safe if flag is set */ - realdata = (unsigned char*) malloc(framesize); /* will need <= bytes */ - if(realdata == NULL) - { - if(NOQUIET) error("ID3v2: unable to allocate working buffer for de-unsync"); - continue; - } - /* now going byte per byte through the data... */ - realdata[0] = tagdata[pos]; - opos = 1; - for(ipos = pos+1; ipos < pos+framesize; ++ipos) - { - if(!((tagdata[ipos] == 0) && (tagdata[ipos-1] == 0xff))) - { - realdata[opos++] = tagdata[ipos]; - } - } - realsize = opos; - debug2("ID3v2: de-unsync made %lu out of %lu bytes", realsize, framesize); - } - pos = 0; /* now at the beginning again... */ - switch(tt) - { - case comment: - case uslt: - process_comment(fr, tt, (char*)realdata, realsize, comment+1, id); - break; - case extra: /* perhaps foobar2000's work */ - process_extra(fr, (char*)realdata, realsize, extra+1, id); - break; - case rva2: /* "the" RVA tag */ - { - /* starts with null-terminated identification */ - if(VERBOSE3) fprintf(stderr, "Note: RVA2 identification \"%s\"\n", realdata); - /* default: some individual value, mix mode */ - rva_mode = 0; - if( !strncasecmp((char*)realdata, "album", 5) - || !strncasecmp((char*)realdata, "audiophile", 10) - || !strncasecmp((char*)realdata, "user", 4)) - rva_mode = 1; - if(fr->rva.level[rva_mode] <= rva2+1) - { - pos += strlen((char*) realdata) + 1; - if(realdata[pos] == 1) - { - ++pos; - /* only handle master channel */ - debug("ID3v2: it is for the master channel"); - /* two bytes adjustment, one byte for bits representing peak - n bytes, eh bits, for peak */ - /* 16 bit signed integer = dB * 512 ... the double cast is needed to preserve the sign of negative values! */ - fr->rva.gain[rva_mode] = (float) ( (((short)((signed char)realdata[pos])) << 8) | realdata[pos+1] ) / 512; - pos += 2; - if(VERBOSE3) fprintf(stderr, "Note: RVA value %fdB\n", fr->rva.gain[rva_mode]); - /* heh, the peak value is represented by a number of bits - but in what manner? Skipping that part */ - fr->rva.peak[rva_mode] = 0; - fr->rva.level[rva_mode] = rva2+1; - } - } - } - break; - /* non-rva metainfo, simply store... */ - case text: - process_text(fr, (char*)realdata, realsize, id); - break; - default: if(NOQUIET) error1("ID3v2: unknown frame type %i", tt); - } - if((flags & UNSYNC_FLAG) || (fflags & UNSYNC_FFLAG)) free(realdata); - } - #undef BAD_FFLAGS - #undef PRES_TAG_FFLAG - #undef PRES_FILE_FFLAG - #undef READ_ONLY_FFLAG - #undef GROUP_FFLAG - #undef COMPR_FFLAG - #undef ENCR_FFLAG - #undef UNSYNC_FFLAG - #undef DATLEN_FFLAG - } - else break; - #undef KNOWN_FRAMES - } - } - } - else - { - /* There are tags with zero length. Strictly not an error, then. */ - if(length > 0 && NOQUIET) error("ID3v2: Duh, not able to read ID3v2 tag data."); - ret = ret2; - } -tagparse_cleanup: - free(tagdata); - } - else - { - if(NOQUIET) error1("ID3v2: Arrg! Unable to allocate %lu bytes for interpreting ID3v2 data - trying to skip instead.", length); - if((ret2 = fr->rd->skip_bytes(fr,length)) < 0) ret = ret2; /* will not store data in backbuff! */ - else ret = 0; - } - } -#endif /* NO_ID3V2 */ - /* skip footer if present */ - if((ret > 0) && (flags & FOOTER_FLAG) && ((ret2 = fr->rd->skip_bytes(fr,length)) < 0)) ret = ret2; - - return ret; - #undef UNSYNC_FLAG - #undef EXTHEAD_FLAG - #undef EXP_FLAG - #undef FOOTER_FLAG - #undef UNKOWN_FLAGS -} - -#ifndef NO_ID3V2 /* Disabling all the rest... */ - -static void convert_latin1(mpg123_string *sb, const unsigned char* s, size_t l, const int noquiet) -{ - size_t length = l; - size_t i; - unsigned char *p; - /* determine real length, a latin1 character can at most take 2 in UTF8 */ - for(i=0; i= 0x80) ++length; - - debug1("UTF-8 length: %lu", (unsigned long)length); - /* one extra zero byte for paranoia */ - if(!mpg123_resize_string(sb, length+1)){ mpg123_free_string(sb); return ; } - - p = (unsigned char*) sb->p; /* Signedness doesn't matter but it shows I thought about the non-issue */ - for(i=0; i>6); - *(p+1) = 0x80 | (s[i] & 0x3f); - p+=2; - } - - sb->p[length] = 0; - sb->fill = length+1; -} - -/* - Check if we have a byte oder mark(s) there, return: - -1: little endian - 0: no BOM - 1: big endian - - This modifies source and len to indicate the data _after_ the BOM(s). - Note on nasty data: The last encountered BOM determines the endianess. - I have seen data with multiple BOMS, namely from "the" id3v2 program. - Not nice, but what should I do? -*/ -static int check_bom(const unsigned char** source, size_t *len) -{ - int this_bom = 0; - int further_bom = 0; - - if(*len < 2) return 0; - - if((*source)[0] == 0xff && (*source)[1] == 0xfe) - this_bom = -1; - - if((*source)[0] == 0xfe && (*source)[1] == 0xff) - this_bom = 1; - - /* Skip the detected BOM. */ - if(this_bom != 0) - { - *source += 2; - *len -= 2; - /* Check for following BOMs. The last one wins! */ - further_bom = check_bom(source, len); - if(further_bom == 0) return this_bom; /* End of the recursion. */ - else return further_bom; - } - else return 0; -} - -#define FULLPOINT(f,s) ( (((f)&0x3ff)<<10) + ((s)&0x3ff) + 0x10000 ) -/* Remember: There's a limit at 0x1ffff. */ -#define UTF8LEN(x) ( (x)<0x80 ? 1 : ((x)<0x800 ? 2 : ((x)<0x10000 ? 3 : 4))) -static void convert_utf16bom(mpg123_string *sb, const unsigned char* s, size_t l, const int noquiet) -{ - size_t i; - size_t n; /* number bytes that make up full pairs */ - unsigned char *p; - size_t length = 0; /* the resulting UTF-8 length */ - /* Determine real length... extreme case can be more than utf-16 length. */ - size_t high = 0; - size_t low = 1; - int bom_endian; - - debug1("convert_utf16 with length %lu", (unsigned long)l); - - bom_endian = check_bom(&s, &l); - debug1("UTF16 endianess check: %i", bom_endian); - - if(bom_endian == -1) /* little-endian */ - { - high = 1; /* The second byte is the high byte. */ - low = 0; /* The first byte is the low byte. */ - } - - n = (l/2)*2; /* number bytes that make up full pairs */ - - /* first: get length, check for errors -- stop at first one */ - for(i=0; i < n; i+=2) - { - unsigned long point = ((unsigned long) s[i+high]<<8) + s[i+low]; - if((point & 0xd800) == 0xd800) /* lead surrogate */ - { - unsigned short second = (i+3 < l) ? (s[i+2+high]<<8) + s[i+2+low] : 0; - if((second & 0xdc00) == 0xdc00) /* good... */ - { - point = FULLPOINT(point,second); - length += UTF8LEN(point); /* possibly 4 bytes */ - i+=2; /* We overstepped one word. */ - } - else /* if no valid pair, break here */ - { - if(noquiet) error2("Invalid UTF16 surrogate pair at %li (0x%04lx).", (unsigned long)i, point); - n = i; /* Forget the half pair, END! */ - break; - } - } - else length += UTF8LEN(point); /* 1,2 or 3 bytes */ - } - - if(!mpg123_resize_string(sb, length+1)){ mpg123_free_string(sb); return ; } - - /* Now really convert, skip checks as these have been done just before. */ - p = (unsigned char*) sb->p; /* Signedness doesn't matter but it shows I thought about the non-issue */ - for(i=0; i < n; i+=2) - { - unsigned long codepoint = ((unsigned long) s[i+high]<<8) + s[i+low]; - if((codepoint & 0xd800) == 0xd800) /* lead surrogate */ - { - unsigned short second = (s[i+2+high]<<8) + s[i+2+low]; - codepoint = FULLPOINT(codepoint,second); - i+=2; /* We overstepped one word. */ - } - if(codepoint < 0x80) *p++ = (unsigned char) codepoint; - else if(codepoint < 0x800) - { - *p++ = (unsigned char) (0xc0 | (codepoint>>6)); - *p++ = (unsigned char) (0x80 | (codepoint & 0x3f)); - } - else if(codepoint < 0x10000) - { - *p++ = (unsigned char) (0xe0 | (codepoint>>12)); - *p++ = 0x80 | ((codepoint>>6) & 0x3f); - *p++ = 0x80 | (codepoint & 0x3f); - } - else if (codepoint < 0x200000) - { - *p++ = (unsigned char) (0xf0 | codepoint>>18); - *p++ = (unsigned char) (0x80 | ((codepoint>>12) & 0x3f)); - *p++ = (unsigned char) (0x80 | ((codepoint>>6) & 0x3f)); - *p++ = (unsigned char) (0x80 | (codepoint & 0x3f)); - } /* ignore bigger ones (that are not possible here anyway) */ - } - sb->p[sb->size-1] = 0; /* paranoia... */ - sb->fill = sb->size; -} -#undef UTF8LEN -#undef FULLPOINT - -static void convert_utf8(mpg123_string *sb, const unsigned char* source, size_t len, const int noquiet) -{ - if(mpg123_resize_string(sb, len+1)) - { - memcpy(sb->p, source, len); - sb->p[len] = 0; - sb->fill = len+1; - } - else mpg123_free_string(sb); -} - -#endif diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/id3.h audacious-plugins-3.2/src/mpg123/libmpg123/id3.h --- audacious-plugins-2.4.4/src/mpg123/libmpg123/id3.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/id3.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ -/* - id3: ID3v2.3 and ID3v2.4 parsing (a relevant subset) - - copyright 2006-2007 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis -*/ - -#ifndef MPG123_ID3_H -#define MPG123_ID3_H - -/* really need it _here_! */ -#include "frame.h" - -#ifdef NO_ID3V2 -# define init_id3(fr) -# define exit_id3(fr) -# define reset_id3(fr) -# define id3_link(fr) -#else -void init_id3(mpg123_handle *fr); -void exit_id3(mpg123_handle *fr); -void reset_id3(mpg123_handle *fr); -void id3_link(mpg123_handle *fr); -#endif -int parse_new_id3(mpg123_handle *fr, unsigned long first4bytes); -/* Convert text from some ID3 encoding to UTf-8. - On error, sb->fill is 0. The noquiet flag enables warning/error messages. */ -void id3_to_utf8(mpg123_string *sb, unsigned char encoding, const unsigned char *source, size_t source_size, int noquiet); - -#endif diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/index.c audacious-plugins-3.2/src/mpg123/libmpg123/index.c --- audacious-plugins-2.4.4/src/mpg123/libmpg123/index.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/index.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,134 +0,0 @@ -/* - index: frame index data structure and functions - - copyright 2007-8 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis -*/ - -#include "index.h" -#include "debug.h" - -/* The next expected frame offset, one step ahead. */ -static off_t fi_next(struct frame_index *fi) -{ - return (off_t)fi->fill*fi->step; -} - -/* Shrink down the used index to the half. - Be careful with size = 1 ... there's no shrinking possible there. */ -static void fi_shrink(struct frame_index *fi) -{ - if(fi->fill < 2) return; /* Won't shrink below 1. */ - else - { /* Double the step, half the fill. Should work as well for fill%2 = 1 */ - size_t c; - debug2("shrink index with fill %lu and step %lu", (unsigned long)fi->fill, (unsigned long)fi->step); - fi->step *= 2; - fi->fill /= 2; - /* Move the data down. */ - for(c = 0; c < fi->fill; ++c) - fi->data[c] = fi->data[2*c]; - } - - fi->next = fi_next(fi); -} - -void fi_init(struct frame_index *fi) -{ - fi->data = NULL; - fi->step = 1; - fi->fill = 0; - fi->size = 0; - fi->grow_size = 0; - fi->next = fi_next(fi); -} - -void fi_exit(struct frame_index *fi) -{ - debug2("fi_exit: %p and %lu", (void*)fi->data, (unsigned long)fi->size); - if(fi->size && fi->data != NULL) free(fi->data); - - fi_init(fi); /* Be prepared for further fun, still. */ -} - -int fi_resize(struct frame_index *fi, size_t newsize) -{ - off_t *newdata = NULL; - if(newsize == fi->size) return 0; - - if(newsize > 0 && newsize < fi->size) - { /* When we reduce buffer size a bit, shrink stuff. */ - while(fi->fill > newsize){ fi_shrink(fi); } - } - - newdata = safe_realloc(fi->data, newsize*sizeof(off_t)); - if(newsize == 0 || newdata != NULL) - { - fi->data = newdata; - fi->size = newsize; - if(fi->fill > fi->size) fi->fill = fi->size; - - fi->next = fi_next(fi); - debug2("new index of size %lu at %p", (unsigned long)fi->size, (void*)fi->data); - return 0; - } - else - { - error("failed to resize index!"); - return -1; - } -} - -void fi_add(struct frame_index *fi, off_t pos) -{ - debug3("wanting to add to fill %lu, step %lu, size %lu", (unsigned long)fi->fill, (unsigned long)fi->step, (unsigned long)fi->size); - if(fi->fill == fi->size) - { /* Index is full, we need to shrink... or grow. */ - /* Store the current frame number to check later if we still want it. */ - off_t framenum = fi->fill*fi->step; - /* If we want not / cannot grow, we shrink. */ - if( !(fi->grow_size && fi_resize(fi, fi->size+fi->grow_size)==0) ) - fi_shrink(fi); - - /* Now check if we still want to add this frame (could be that not, because of changed step). */ - if(fi->next != framenum) return; - } - /* When we are here, we want that frame. */ - if(fi->fill < fi->size) /* safeguard for size=1, or just generally */ - { - debug1("adding to index at %p", (void*)(fi->data+fi->fill)); - fi->data[fi->fill] = pos; - ++fi->fill; - fi->next = fi_next(fi); - debug3("added pos %li to index with fill %lu and step %lu", (long) pos, (unsigned long)fi->fill, (unsigned long)fi->step); - } -} - -int fi_set(struct frame_index *fi, off_t *offsets, off_t step, size_t fill) -{ - if(fi_resize(fi, fill) == -1) return -1; - fi->step = step; - if(offsets != NULL) - { - memcpy(fi->data, offsets, fill*sizeof(off_t)); - fi->fill = fill; - } - else - { - /* allocation only, no entries in index yet */ - fi->fill = 0; - } - fi->next = fi_next(fi); - debug3("set new index of fill %lu, size %lu at %p", - (unsigned long)fi->fill, (unsigned long)fi->size, (void*)fi->data); - return 0; -} - -void fi_reset(struct frame_index *fi) -{ - debug1("reset with size %"SIZE_P, (size_p)fi->size); - fi->fill = 0; - fi->step = 1; - fi->next = fi_next(fi); -} diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/index.h audacious-plugins-3.2/src/mpg123/libmpg123/index.h --- audacious-plugins-2.4.4/src/mpg123/libmpg123/index.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/index.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -#ifndef MPG123_H_INDEX -#define MPG123_H_INDEX - -/* - index: frame index data structure and functions - - This is for keeping track of frame positions for accurate seeking. - Now in it's own file, with initial code from frame.c and parse.c . - - The idea of the index with a certain amount of entries is to cover - all yet-encountered frame positions with minimal coarseness. - Meaning: At first every frame position is recorded, then, when - the index is full, every second position is trown away to make - space. Next time it is full, the same happens. And so on. - In this manner we maintain a good resolution with the given - maximum index size while covering the whole stream. - - copyright 2007-8 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Thomas Orgis -*/ - -#include "config.h" -#include "compat.h" - -struct frame_index -{ - off_t *data; /* actual data, the frame positions */ - off_t step; /* advancement in frame number per index point */ - off_t next; /* frame offset supposed to come next into the index */ - size_t size; /* total number of possible entries */ - size_t fill; /* number of used entries */ - size_t grow_size; /* if > 0: index allowed to grow on need with these steps, instead of lowering resolution */ -}; - -/* The condition for a framenum to be appended to the index. - if(FI_NEXT(fr->index, fr->num)) fi_add(offset); */ -#define FI_NEXT(fi, framenum) ((fi).size && framenum == (fi).next) - -/* Initialize stuff, set things to zero and NULL... */ -void fi_init(struct frame_index *fi); -/* Deallocate/zero things. */ -void fi_exit(struct frame_index *fi); - -/* Prepare a given size, preserving current fill, if possible. - If the new size is smaller than fill, the entry density is reduced. - Return 0 on success. */ -int fi_resize(struct frame_index *fi, size_t newsize); - -/* Append a frame position, reducing index density if needed. */ -void fi_add(struct frame_index *fi, off_t pos); - -/* Replace the frame index */ -int fi_set(struct frame_index *fi, off_t *offsets, off_t step, size_t fill); - -/* Empty the index (setting fill=0 and step=1), but keep current size. */ -void fi_reset(struct frame_index *fi); - -#endif diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/l12_integer_tables.h audacious-plugins-3.2/src/mpg123/libmpg123/l12_integer_tables.h --- audacious-plugins-2.4.4/src/mpg123/libmpg123/l12_integer_tables.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/l12_integer_tables.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,278 +0,0 @@ -/* - l12_integer_tables.h: Layer1/2 Constant tables for integer decoders - - copyright 1995-2009 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Taihei Monma -*/ - -#ifndef MPG123_L12_INTEGER_TABLES_H -#define MPG123_L12_INTEGER_TABLES_H - -static const real layer12_table[27][64] = -{ - { - }, - { - -1431655765,-1136305934,-901886617,-715827883,-568152967,-450943309,-357913941,-284076483, - -225471654,-178956971,-142038242,-112735827,-89478485,-71019121,-56367914,-44739243, - -35509560,-28183957,-22369621,-17754780,-14091978,-11184811,-8877390,-7045989, - -5592405,-4438695,-3522995,-2796203,-2219348,-1761497,-1398101,-1109674, - -880749,-699051,-554837,-440374,-349525,-277418,-220187,-174763, - -138709,-110094,-87381,-69355,-55047,-43691,-34677,-27523, - -21845,-17339,-13762,-10923,-8669,-6881,-5461,-4335, - -3440,-2731,-2167,-1720,-1365,-1084,-860,0 - }, - { - 1431655765,1136305934,901886617,715827883,568152967,450943309,357913941,284076483, - 225471654,178956971,142038242,112735827,89478485,71019121,56367914,44739243, - 35509560,28183957,22369621,17754780,14091978,11184811,8877390,7045989, - 5592405,4438695,3522995,2796203,2219348,1761497,1398101,1109674, - 880749,699051,554837,440374,349525,277418,220187,174763, - 138709,110094,87381,69355,55047,43691,34677,27523, - 21845,17339,13762,10923,8669,6881,5461,4335, - 3440,2731,2167,1720,1365,1084,860,0 - }, - { - 613566757,486988257,386522836,306783378,243494129,193261418,153391689,121747064, - 96630709,76695845,60873532,48315355,38347922,30436766,24157677,19173961, - 15218383,12078839,9586981,7609192,6039419,4793490,3804596,3019710, - 2396745,1902298,1509855,1198373,951149,754927,599186,475574, - 377464,299593,237787,188732,149797,118894,94366,74898, - 59447,47183,37449,29723,23591,18725,14862,11796, - 9362,7431,5898,4681,3715,2949,2341,1858, - 1474,1170,929,737,585,464,369,0 - }, - { - 286331153,227261187,180377323,143165577,113630593,90188662,71582788,56815297, - 45094331,35791394,28407648,22547165,17895697,14203824,11273583,8947849, - 7101912,5636791,4473924,3550956,2818396,2236962,1775478,1409198, - 1118481,887739,704599,559241,443870,352299,279620,221935, - 176150,139810,110967,88075,69905,55484,44037,34953, - 27742,22019,17476,13871,11009,8738,6935,5505, - 4369,3468,2752,2185,1734,1376,1092,867, - 688,546,433,344,273,217,172,0 - }, - { - 138547332,109965090,87279350,69273666,54982545,43639675,34636833,27491273, - 21819838,17318417,13745636,10909919,8659208,6872818,5454959,4329604, - 3436409,2727480,2164802,1718205,1363740,1082401,859102,681870, - 541201,429551,340935,270600,214776,170467,135300,107388, - 85234,67650,53694,42617,33825,26847,21308,16913, - 13423,10654,8456,6712,5327,4228,3356,2664, - 2114,1678,1332,1057,839,666,529,419, - 333,264,210,166,132,105,83,0 - }, - { - 68174084,54109806,42946982,34087042,27054903,21473491,17043521,13527452, - 10736745,8521761,6763726,5368373,4260880,3381863,2684186,2130440, - 1690931,1342093,1065220,845466,671047,532610,422733,335523, - 266305,211366,167762,133153,105683,83881,66576,52842, - 41940,33288,26421,20970,16644,13210,10485,8322, - 6605,5243,4161,3303,2621,2081,1651,1311, - 1040,826,655,520,413,328,260,206, - 164,130,103,82,65,52,41,0 - }, - { - 33818640,26841872,21304408,16909320,13420936,10652204,8454660,6710468, - 5326102,4227330,3355234,2663051,2113665,1677617,1331526,1056833, - 838809,665763,528416,419404,332881,264208,209702,166441, - 132104,104851,83220,66052,52426,41610,33026,26213, - 20805,16513,13106,10403,8257,6553,5201,4128, - 3277,2601,2064,1638,1300,1032,819,650, - 516,410,325,258,205,163,129,102, - 81,65,51,41,32,26,20,0 - }, - { - 16843009,13368305,10610431,8421505,6684153,5305215,4210752,3342076, - 2652608,2105376,1671038,1326304,1052688,835519,663152,526344, - 417760,331576,263172,208880,165788,131586,104440,82894, - 65793,52220,41447,32897,26110,20723,16448,13055, - 10362,8224,6527,5181,4112,3264,2590,2056, - 1632,1295,1028,816,648,514,408,324, - 257,204,162,129,102,81,64,51, - 40,32,25,20,16,13,10,0 - }, - { - 8405024,6671072,5294833,4202512,3335536,2647417,2101256,1667768, - 1323708,1050628,833884,661854,525314,416942,330927,262657, - 208471,165464,131329,104236,82732,65664,52118,41366, - 32832,26059,20683,16416,13029,10341,8208,6515, - 5171,4104,3257,2585,2052,1629,1293,1026, - 814,646,513,407,323,257,204,162, - 128,102,81,64,51,40,32,25, - 20,16,13,10,8,6,5,0 - }, - { - 4198404,3332275,2644829,2099202,1666138,1322414,1049601,833069, - 661207,524801,416534,330604,262400,208267,165302,131200, - 104134,82651,65600,52067,41325,32800,26033,20663, - 16400,13017,10331,8200,6508,5166,4100,3254, - 2583,2050,1627,1291,1025,814,646,513, - 407,323,256,203,161,128,102,81, - 64,51,40,32,25,20,16,13, - 10,8,6,5,4,3,3,0 - }, - { - 2098177,1665324,1321768,1049088,832662,660884,524544,416331, - 330442,262272,208165,165221,131136,104083,82611,65568, - 52041,41305,32784,26021,20653,16392,13010,10326, - 8196,6505,5163,4098,3253,2582,2049,1626, - 1291,1025,813,645,512,407,323,256, - 203,161,128,102,81,64,51,40, - 32,25,20,16,13,10,8,6, - 5,4,3,3,2,2,1,0 - }, - { - 1048832,832459,660723,524416,416229,330361,262208,208115, - 165181,131104,104057,82590,65552,52029,41295,32776, - 26014,20648,16388,13007,10324,8194,6504,5162, - 4097,3252,2581,2049,1626,1290,1024,813, - 645,512,406,323,256,203,161,128, - 102,81,64,51,40,32,25,20, - 16,13,10,8,6,5,4,3, - 3,2,2,1,1,1,1,0 - }, - { - 524352,416178,330321,262176,208089,165161,131088,104045, - 82580,65544,52022,41290,32772,26011,20645,16386, - 13006,10323,8193,6503,5161,4097,3251,2581, - 2048,1626,1290,1024,813,645,512,406, - 323,256,203,161,128,102,81,64, - 51,40,32,25,20,16,13,10, - 8,6,5,4,3,3,2,2, - 1,1,1,1,1,0,0,0 - }, - { - 262160,208077,165150,131080,104038,82575,65540,52019, - 41288,32770,26010,20644,16385,13005,10322,8193, - 6502,5161,4096,3251,2580,2048,1626,1290, - 1024,813,645,512,406,323,256,203, - 161,128,102,81,64,51,40,32, - 25,20,16,13,10,8,6,5, - 4,3,3,2,2,1,1,1, - 1,1,0,0,0,0,0,0 - }, - { - 131076,104035,82573,65538,52018,41286,32769,26009, - 20643,16385,13004,10322,8192,6502,5161,4096, - 3251,2580,2048,1626,1290,1024,813,645, - 512,406,323,256,203,161,128,102, - 81,64,51,40,32,25,20,16, - 13,10,8,6,5,4,3,3, - 2,2,1,1,1,1,1,0, - 0,0,0,0,0,0,0,0 - }, - { - 65537,52017,41286,32769,26008,20643,16384,13004, - 10321,8192,6502,5161,4096,3251,2580,2048, - 1626,1290,1024,813,645,512,406,323, - 256,203,161,128,102,81,64,51, - 40,32,25,20,16,13,10,8, - 6,5,4,3,3,2,2,1, - 1,1,1,1,0,0,0,0, - 0,0,0,0,0,0,0,0 - }, - { - -1717986918,-1363567121,-1082263941,-858993459,-681783560,-541131970,-429496730,-340891780, - -270565985,-214748365,-170445890,-135282993,-107374182,-85222945,-67641496,-53687091, - -42611473,-33820748,-26843546,-21305736,-16910374,-13421773,-10652868,-8455187, - -6710886,-5326434,-4227594,-3355443,-2663217,-2113797,-1677722,-1331609, - -1056898,-838861,-665804,-528449,-419430,-332902,-264225,-209715, - -166451,-132112,-104858,-83226,-66056,-52429,-41613,-33028, - -26214,-20806,-16514,-13107,-10403,-8257,-6554,-5202, - -4129,-3277,-2601,-2064,-1638,-1300,-1032,0 - }, - { - -858993459,-681783560,-541131970,-429496730,-340891780,-270565985,-214748365,-170445890, - -135282993,-107374182,-85222945,-67641496,-53687091,-42611473,-33820748,-26843546, - -21305736,-16910374,-13421773,-10652868,-8455187,-6710886,-5326434,-4227594, - -3355443,-2663217,-2113797,-1677722,-1331609,-1056898,-838861,-665804, - -528449,-419430,-332902,-264225,-209715,-166451,-132112,-104858, - -83226,-66056,-52429,-41613,-33028,-26214,-20806,-16514, - -13107,-10403,-8257,-6554,-5202,-4129,-3277,-2601, - -2064,-1638,-1300,-1032,-819,-650,-516,0 - }, - { - 858993459,681783560,541131970,429496730,340891780,270565985,214748365,170445890, - 135282993,107374182,85222945,67641496,53687091,42611473,33820748,26843546, - 21305736,16910374,13421773,10652868,8455187,6710886,5326434,4227594, - 3355443,2663217,2113797,1677722,1331609,1056898,838861,665804, - 528449,419430,332902,264225,209715,166451,132112,104858, - 83226,66056,52429,41613,33028,26214,20806,16514, - 13107,10403,8257,6554,5202,4129,3277,2601, - 2064,1638,1300,1032,819,650,516,0 - }, - { - 1717986918,1363567121,1082263941,858993459,681783560,541131970,429496730,340891780, - 270565985,214748365,170445890,135282993,107374182,85222945,67641496,53687091, - 42611473,33820748,26843546,21305736,16910374,13421773,10652868,8455187, - 6710886,5326434,4227594,3355443,2663217,2113797,1677722,1331609, - 1056898,838861,665804,528449,419430,332902,264225,209715, - 166451,132112,104858,83226,66056,52429,41613,33028, - 26214,20806,16514,13107,10403,8257,6554,5202, - 4129,3277,2601,2064,1638,1300,1032,0 - }, - { - -1908874354,-1515074579,-1202515490,-954437177,-757537289,-601257745,-477218588,-378768645, - -300628872,-238609294,-189384322,-150314436,-119304647,-94692161,-75157218,-59652324, - -47346081,-37578609,-29826162,-23673040,-18789305,-14913081,-11836520,-9394652, - -7456540,-5918260,-4697326,-3728270,-2959130,-2348663,-1864135,-1479565, - -1174332,-932068,-739783,-587166,-466034,-369891,-293583,-233017, - -184946,-146791,-116508,-92473,-73396,-58254,-46236,-36698, - -29127,-23118,-18349,-14564,-11559,-9174,-7282,-5780, - -4587,-3641,-2890,-2294,-1820,-1445,-1147,0 - }, - { - -954437177,-757537289,-601257745,-477218588,-378768645,-300628872,-238609294,-189384322, - -150314436,-119304647,-94692161,-75157218,-59652324,-47346081,-37578609,-29826162, - -23673040,-18789305,-14913081,-11836520,-9394652,-7456540,-5918260,-4697326, - -3728270,-2959130,-2348663,-1864135,-1479565,-1174332,-932068,-739783, - -587166,-466034,-369891,-293583,-233017,-184946,-146791,-116508, - -92473,-73396,-58254,-46236,-36698,-29127,-23118,-18349, - -14564,-11559,-9174,-7282,-5780,-4587,-3641,-2890, - -2294,-1820,-1445,-1147,-910,-722,-573,0 - }, - { - -477218588,-378768645,-300628872,-238609294,-189384322,-150314436,-119304647,-94692161, - -75157218,-59652324,-47346081,-37578609,-29826162,-23673040,-18789305,-14913081, - -11836520,-9394652,-7456540,-5918260,-4697326,-3728270,-2959130,-2348663, - -1864135,-1479565,-1174332,-932068,-739783,-587166,-466034,-369891, - -293583,-233017,-184946,-146791,-116508,-92473,-73396,-58254, - -46236,-36698,-29127,-23118,-18349,-14564,-11559,-9174, - -7282,-5780,-4587,-3641,-2890,-2294,-1820,-1445, - -1147,-910,-722,-573,-455,-361,-287,0 - }, - { - 477218588,378768645,300628872,238609294,189384322,150314436,119304647,94692161, - 75157218,59652324,47346081,37578609,29826162,23673040,18789305,14913081, - 11836520,9394652,7456540,5918260,4697326,3728270,2959130,2348663, - 1864135,1479565,1174332,932068,739783,587166,466034,369891, - 293583,233017,184946,146791,116508,92473,73396,58254, - 46236,36698,29127,23118,18349,14564,11559,9174, - 7282,5780,4587,3641,2890,2294,1820,1445, - 1147,910,722,573,455,361,287,0 - }, - { - 954437177,757537289,601257745,477218588,378768645,300628872,238609294,189384322, - 150314436,119304647,94692161,75157218,59652324,47346081,37578609,29826162, - 23673040,18789305,14913081,11836520,9394652,7456540,5918260,4697326, - 3728270,2959130,2348663,1864135,1479565,1174332,932068,739783, - 587166,466034,369891,293583,233017,184946,146791,116508, - 92473,73396,58254,46236,36698,29127,23118,18349, - 14564,11559,9174,7282,5780,4587,3641,2890, - 2294,1820,1445,1147,910,722,573,0 - }, - { - 1908874354,1515074579,1202515490,954437177,757537289,601257745,477218588,378768645, - 300628872,238609294,189384322,150314436,119304647,94692161,75157218,59652324, - 47346081,37578609,29826162,23673040,18789305,14913081,11836520,9394652, - 7456540,5918260,4697326,3728270,2959130,2348663,1864135,1479565, - 1174332,932068,739783,587166,466034,369891,293583,233017, - 184946,146791,116508,92473,73396,58254,46236,36698, - 29127,23118,18349,14564,11559,9174,7282,5780, - 4587,3641,2890,2294,1820,1445,1147,0 - }, -}; - -#endif diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/l2tables.h audacious-plugins-3.2/src/mpg123/libmpg123/l2tables.h --- audacious-plugins-2.4.4/src/mpg123/libmpg123/l2tables.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/l2tables.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,164 +0,0 @@ -/* - l2tables.h: Layer 2 Alloc tables - - copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp - - most other tables are calculated on program start (which is (of course) not ISO-conform) - Layer-3 huffman table is in huffman.h -*/ - - -#ifndef _MPG123_L2TABLES_H_ -#define _MPG123_L2TABLES_H_ - -const struct al_table alloc_0[] = { - {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, - {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, - {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, - {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, - {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, - {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767} }; - -const struct al_table alloc_1[] = { - {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, - {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, - {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, - {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, - {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, - {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767}, - {2,0},{5,3},{7,5},{16,-32767} }; - -const struct al_table alloc_2[] = { - {4,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255}, - {10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383}, - {4,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255}, - {10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63} }; - -const struct al_table alloc_3[] = { - {4,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255}, - {10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383}, - {4,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255}, - {10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63} }; - -const struct al_table alloc_4[] = { - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191}, - {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, - {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9}, - {2,0},{5,3},{7,5},{10,9} }; - -#endif - diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/l3_integer_tables.h audacious-plugins-3.2/src/mpg123/libmpg123/l3_integer_tables.h --- audacious-plugins-2.4.4/src/mpg123/libmpg123/l3_integer_tables.h 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/l3_integer_tables.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,1002 +0,0 @@ -/* - l3_integer_tables.h: Layer3 Constant tables for integer decoders - - copyright 1995-2009 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Taihei Monma -*/ - -#ifndef MPG123_L3_INTEGER_TABLES_H -#define MPG123_L3_INTEGER_TABLES_H - -#ifdef PRECALC_TABLES -static const real ispow[8207] = -{ - 0,8192,20643,35445,52016,70041,89315,109695,131072,153360, - 176491,200407,225060,250408,276414,303048,330281,358087,386444,415331, - 444730,474623,504995,535830,567116,598839,630988,663552,696521,729884, - 763633,797760,832255,867112,902323,937880,973778,1010010,1046569,1083451, - 1120650,1158160,1195976,1234093,1272507,1311213,1350207,1389485,1429042,1468875, - 1508979,1549352,1589990,1630889,1672046,1713458,1755122,1797035,1839193,1881594, - 1924236,1967115,2010229,2053576,2097152,2140956,2184985,2229238,2273710,2318402, - 2363310,2408432,2453767,2499312,2545065,2591025,2637190,2683558,2730126,2776895, - 2823861,2871023,2918379,2965929,3013670,3061600,3109719,3158025,3206517,3255192, - 3304050,3353089,3402309,3451707,3501282,3551033,3600960,3651060,3701332,3751776, - 3802390,3853172,3904123,3955241,4006524,4057972,4109583,4161357,4213293,4265389, - 4317644,4370058,4422630,4475359,4528243,4581282,4634476,4687822,4741320,4794970, - 4848770,4902720,4956819,5011066,5065460,5120000,5174686,5229517,5284492,5339610, - 5394871,5450274,5505818,5561502,5617327,5673290,5729391,5785631,5842007,5898519, - 5955168,6011951,6068869,6125920,6183105,6240422,6297871,6355451,6413162,6471004, - 6528974,6587074,6645302,6703658,6762141,6820751,6879487,6938349,6997336,7056447, - 7115683,7175042,7234524,7294129,7353855,7413703,7473672,7533762,7593972,7654301, - 7714750,7775317,7836002,7896805,7957725,8018762,8079916,8141185,8202570,8264070, - 8325685,8387413,8449256,8511212,8573281,8635462,8697756,8760161,8822678,8885305, - 8948043,9010892,9073850,9136917,9200094,9263379,9326772,9390274,9453882,9517598, - 9581421,9645351,9709386,9773527,9837774,9902125,9966582,10031143,10095807,10160576, - 10225448,10290423,10355500,10420681,10485963,10551347,10616832,10682419,10748106,10813894, - 10879782,10945770,11011857,11078044,11144330,11210715,11277198,11343779,11410458,11477234, - 11544108,11611079,11678147,11745311,11812571,11879927,11947378,12014925,12082567,12150304, - 12218135,12286061,12354081,12422194,12490401,12558701,12627094,12695580,12764158,12832829, - 12901592,12970446,13039392,13108429,13177557,13246776,13316085,13385485,13454975,13524554, - 13594224,13663982,13733830,13803767,13873792,13943906,14014108,14084398,14154776,14225242, - 14295794,14366435,14437162,14507975,14578876,14649862,14720935,14792093,14863337,14934667, - 15006082,15077582,15149167,15220837,15292591,15364429,15436351,15508358,15580448,15652621, - 15724878,15797217,15869640,15942146,16014734,16087404,16160156,16232991,16305907,16378905, - 16451984,16525145,16598386,16671709,16745112,16818596,16892160,16965804,17039528,17113332, - 17187216,17261179,17335222,17409343,17483544,17557824,17632182,17706618,17781133,17855726, - 17930397,18005146,18079973,18154877,18229858,18304917,18380052,18455265,18530554,18605920, - 18681362,18756880,18832475,18908145,18983891,19059713,19135610,19211583,19287630,19363753, - 19439951,19516223,19592571,19668992,19745488,19822058,19898702,19975420,20052211,20129076, - 20206015,20283027,20360112,20437270,20514501,20591805,20669181,20746630,20824151,20901745, - 20979410,21057148,21134957,21212838,21290791,21368815,21446910,21525076,21603314,21681622, - 21760001,21838451,21916971,21995561,22074222,22152953,22231754,22310625,22389566,22468576, - 22547656,22626806,22706024,22785312,22864669,22944094,23023589,23103152,23182783,23262484, - 23342252,23422089,23501993,23581966,23662007,23742115,23822291,23902534,23982845,24063223, - 24143669,24224181,24304761,24385407,24466120,24546899,24627745,24708658,24789637,24870682, - 24951793,25032970,25114213,25195521,25276895,25358335,25439841,25521411,25603047,25684748, - 25766514,25848345,25930241,26012201,26094226,26176316,26258469,26340688,26422970,26505317, - 26587727,26670202,26752740,26835342,26918008,27000737,27083530,27166386,27249305,27332287, - 27415332,27498440,27581611,27664845,27748142,27831501,27914922,27998406,28081952,28165561, - 28249231,28332963,28416758,28500614,28584532,28668511,28752552,28836655,28920819,29005044, - 29089330,29173677,29258086,29342555,29427085,29511676,29596328,29681040,29765813,29850646, - 29935539,30020493,30105507,30190581,30275714,30360908,30446162,30531475,30616848,30702280, - 30787772,30873323,30958934,31044604,31130332,31216120,31301967,31387873,31473838,31559862, - 31645944,31732084,31818284,31904541,31990857,32077231,32163664,32250154,32336703,32423309, - 32509974,32596696,32683476,32770313,32857208,32944161,33031171,33118238,33205363,33292544, - 33379783,33467079,33554432,33641842,33729308,33816832,33904412,33992048,34079741,34167491, - 34255297,34343159,34431078,34519052,34607083,34695170,34783312,34871511,34959765,35048075, - 35136441,35224862,35313339,35401872,35490459,35579102,35667801,35756554,35845363,35934226, - 36023145,36112118,36201147,36290230,36379367,36468560,36557807,36647108,36736464,36825875, - 36915339,37004858,37094431,37184058,37273739,37363474,37453263,37543106,37633003,37722953, - 37812957,37903015,37993126,38083291,38173509,38263780,38354105,38444483,38534914,38625398, - 38715935,38806525,38897168,38987864,39078612,39169414,39260268,39351174,39442133,39533145, - 39624209,39715325,39806494,39897714,39988987,40080312,40171690,40263119,40354600,40446133, - 40537718,40629354,40721042,40812782,40904574,40996417,41088311,41180257,41272254,41364303, - 41456402,41548553,41640755,41733008,41825313,41917668,42010074,42102530,42195038,42287596, - 42380205,42472865,42565575,42658336,42751147,42844009,42936921,43029883,43122895,43215958, - 43309070,43402233,43495446,43588709,43682022,43775384,43868797,43962259,44055771,44149332, - 44242943,44336604,44430314,44524073,44617882,44711741,44805648,44899605,44993611,45087666, - 45181770,45275923,45370126,45464377,45558677,45653025,45747423,45841869,45936364,46030908, - 46125500,46220141,46314830,46409567,46504353,46599187,46694070,46789001,46883980,46979007, - 47074082,47169205,47264376,47359595,47454862,47550177,47645540,47740950,47836408,47931914, - 48027467,48123068,48218716,48314412,48410155,48505945,48601783,48697668,48793601,48889580, - 48985607,49081681,49177802,49273969,49370184,49466446,49562754,49659109,49755511,49851960, - 49948456,50044998,50141586,50238222,50334903,50431631,50528406,50625227,50722094,50819007, - 50915967,51012973,51110025,51207123,51304267,51401457,51498694,51595976,51693304,51790677, - 51888097,51985562,52083073,52180630,52278232,52375880,52473573,52571312,52669097,52766926, - 52864801,52962722,53060688,53158699,53256755,53354856,53453002,53551194,53649430,53747712, - 53846038,53944410,54042826,54141287,54239793,54338344,54436939,54535579,54634263,54732993, - 54831766,54930585,55029447,55128354,55227306,55326302,55425342,55524426,55623555,55722728, - 55821945,55921206,56020511,56119860,56219253,56318690,56418171,56517696,56617265,56716877, - 56816534,56916234,57015977,57115764,57215595,57315470,57415388,57515349,57615354,57715403, - 57815494,57915629,58015808,58116029,58216294,58316602,58416954,58517348,58617785,58718266, - 58818789,58919356,59019965,59120617,59221312,59322050,59422831,59523654,59624521,59725429, - 59826381,59927375,60028412,60129491,60230613,60331777,60432983,60534232,60635524,60736857, - 60838233,60939651,61041112,61142614,61244159,61345746,61447375,61549046,61650759,61752513, - 61854310,61956149,62058030,62159952,62261916,62363922,62465970,62568059,62670191,62772363, - 62874578,62976833,63079131,63181470,63283850,63386272,63488735,63591239,63693785,63796372, - 63899001,64001670,64104381,64207133,64309926,64412760,64515636,64618552,64721509,64824507, - 64927546,65030627,65133747,65236909,65340112,65443355,65546639,65649964,65753329,65856735, - 65960182,66063669,66167197,66270765,66374374,66478023,66581713,66685443,66789213,66893024, - 66996875,67100766,67204698,67308669,67412681,67516733,67620825,67724957,67829130,67933342, - 68037594,68141886,68246218,68350590,68455002,68559454,68663945,68768476,68873047,68977658, - 69082308,69186998,69291728,69396497,69501306,69606154,69711042,69815969,69920936,70025942, - 70130987,70236072,70341196,70446360,70551562,70656804,70762085,70867406,70972765,71078164, - 71183601,71289078,71394594,71500149,71605742,71711375,71817046,71922757,72028506,72134294, - 72240121,72345987,72451891,72557835,72663817,72769837,72875896,72981994,73088130,73194305, - 73300519,73406770,73513061,73619389,73725757,73832162,73938606,74045088,74151609,74258168, - 74364765,74471400,74578073,74684785,74791535,74898323,75005149,75112012,75218914,75325854, - 75432832,75539848,75646902,75753994,75861123,75968291,76075496,76182739,76290020,76397338, - 76504694,76612088,76719520,76826989,76934495,77042040,77149622,77257241,77364898,77472592, - 77580324,77688093,77795899,77903743,78011625,78119543,78227499,78335492,78443522,78551590, - 78659695,78767836,78876015,78984232,79092485,79200775,79309102,79417467,79525868,79634306, - 79742781,79851293,79959842,80068428,80177050,80285710,80394406,80503139,80611908,80720715, - 80829558,80938438,81047354,81156307,81265296,81374322,81483385,81592484,81701620,81810792, - 81920000,82029245,82138526,82247844,82357198,82466588,82576014,82685477,82794976,82904512, - 83014083,83123691,83233334,83343014,83452730,83562482,83672271,83782095,83891955,84001851, - 84111783,84221751,84331755,84441795,84551870,84661982,84772129,84882312,84992531,85102786, - 85213076,85323402,85433764,85544161,85654594,85765063,85875567,85986107,86096682,86207293, - 86317939,86428621,86539338,86650091,86760879,86871702,86982561,87093455,87204384,87315349, - 87426349,87537384,87648455,87759560,87870701,87981877,88093088,88204334,88315616,88426932, - 88538283,88649670,88761091,88872548,88984039,89095565,89207126,89318723,89430353,89542019, - 89653720,89765455,89877226,89989030,90100870,90212745,90324654,90436598,90548576,90660589, - 90772637,90884719,90996836,91108987,91221173,91333394,91445648,91557938,91670262,91782620, - 91895012,92007439,92119901,92232396,92344926,92457491,92570089,92682722,92795389,92908090, - 93020826,93133595,93246399,93359237,93472109,93585015,93697955,93810929,93923937,94036980, - 94150056,94263166,94376310,94489488,94602700,94715946,94829225,94942539,95055886,95169267, - 95282682,95396131,95509613,95623129,95736679,95850263,95963880,96077530,96191215,96304933, - 96418684,96532470,96646288,96760140,96874026,96987945,97101898,97215884,97329904,97443956, - 97558043,97672162,97786315,97900502,98014721,98128974,98243260,98357580,98471933,98586318, - 98700737,98815190,98929675,99044194,99158745,99273330,99387948,99502598,99617282,99731999, - 99846749,99961532,100076348,100191197,100306078,100420993,100535940,100650921,100765934,100880980, - 100996059,101111170,101226315,101341492,101456702,101571944,101687220,101802528,101917868,102033241, - 102148647,102264086,102379557,102495061,102610597,102726166,102841767,102957401,103073067,103188765, - 103304497,103420260,103536056,103651884,103767745,103883638,103999563,104115521,104231511,104347533, - 104463588,104579675,104695794,104811945,104928128,105044344,105160592,105276871,105393183,105509527, - 105625904,105742312,105858752,105975224,106091729,106208265,106324833,106441433,106558066,106674730, - 106791426,106908154,107024913,107141705,107258528,107375384,107492271,107609190,107726140,107843123, - 107960137,108077182,108194260,108311369,108428510,108545683,108662887,108780122,108897390,109014689, - 109132019,109249381,109366775,109484200,109601656,109719144,109836664,109954215,110071797,110189411, - 110307056,110424733,110542441,110660180,110777950,110895752,111013585,111131450,111249346,111367273, - 111485231,111603220,111721241,111839292,111957375,112075489,112193635,112311811,112430018,112548257, - 112666526,112784827,112903159,113021521,113139915,113258339,113376795,113495282,113613799,113732347, - 113850927,113969537,114088178,114206850,114325552,114444286,114563050,114681845,114800671,114919528, - 115038415,115157333,115276282,115395262,115514272,115633313,115752384,115871486,115990619,116109783, - 116228976,116348201,116467456,116586742,116706058,116825404,116944781,117064189,117183627,117303095, - 117422594,117542124,117661683,117781273,117900894,118020545,118140226,118259937,118379679,118499451, - 118619253,118739086,118858948,118978842,119098765,119218718,119338702,119458716,119578759,119698834, - 119818938,119939072,120059236,120179431,120299655,120419910,120540194,120660509,120780854,120901228, - 121021633,121142067,121262532,121383026,121503550,121624105,121744689,121865303,121985946,122106620, - 122227323,122348057,122468820,122589613,122710435,122831287,122952170,123073081,123194023,123314994, - 123435995,123557025,123678085,123799175,123920295,124041444,124162622,124283830,124405068,124526335, - 124647632,124768959,124890314,125011700,125133114,125254559,125376032,125497536,125619068,125740630, - 125862221,125983842,126105492,126227171,126348880,126470618,126592386,126714182,126836008,126957863, - 127079748,127201661,127323604,127445576,127567578,127689608,127811668,127933756,128055874,128178021, - 128300197,128422403,128544637,128666900,128789193,128911514,129033865,129156244,129278652,129401090, - 129523556,129646052,129768576,129891129,130013711,130136323,130258963,130381631,130504329,130627056, - 130749811,130872595,130995408,131118250,131241120,131364020,131486948,131609905,131732890,131855904, - 131978947,132102019,132225119,132348248,132471406,132594592,132717807,132841050,132964323,133087623, - 133210952,133334310,133457696,133581111,133704554,133828026,133951527,134075055,134198613,134322198, - 134445812,134569455,134693126,134816825,134940553,135064309,135188094,135311906,135435747,135559617, - 135683515,135807441,135931395,136055378,136179388,136303427,136427495,136551590,136675714,136799866, - 136924046,137048254,137172490,137296755,137421048,137545368,137669717,137794094,137918499,138042932, - 138167393,138291882,138416400,138540945,138665518,138790119,138914748,139039405,139164090,139288803, - 139413544,139538313,139663110,139787934,139912787,140037667,140162575,140287511,140412475,140537467, - 140662486,140787533,140912608,141037711,141162842,141288000,141413186,141538399,141663641,141788910, - 141914207,142039531,142164883,142290263,142415670,142541105,142666567,142792057,142917575,143043120, - 143168693,143294294,143419921,143545577,143671260,143796970,143922708,144048473,144174266,144300086, - 144425934,144551809,144677712,144803641,144929599,145055583,145181595,145307635,145433701,145559795, - 145685917,145812065,145938241,146064445,146190675,146316933,146443218,146569530,146695869,146822236, - 146948630,147075051,147201499,147327974,147454477,147581007,147707563,147834147,147960758,148087396, - 148214061,148340754,148467473,148594219,148720993,148847793,148974620,149101475,149228356,149355264, - 149482200,149609162,149736151,149863167,149990210,150117280,150244377,150371501,150498652,150625829, - 150753033,150880265,151007523,151134807,151262119,151389457,151516823,151644215,151771633,151899079, - 152026551,152154050,152281576,152409128,152536707,152664313,152791945,152919604,153047290,153175002, - 153302741,153430507,153558299,153686118,153813963,153941835,154069734,154197659,154325610,154453588, - 154581593,154709624,154837682,154965766,155093876,155222013,155350177,155478367,155606583,155734826, - 155863095,155991391,156119713,156248061,156376436,156504837,156633264,156761718,156890198,157018704, - 157147237,157275796,157404381,157532993,157661630,157790294,157918985,158047701,158176444,158305212, - 158434008,158562829,158691676,158820550,158949449,159078375,159207327,159336305,159465310,159594340, - 159723396,159852479,159981587,160110722,160239882,160369069,160498282,160627520,160756785,160886076, - 161015392,161144735,161274103,161403498,161532918,161662365,161791837,161921335,162050859,162180409, - 162309985,162439587,162569215,162698868,162828547,162958252,163087983,163217740,163347523,163477331, - 163607165,163737025,163866910,163996822,164126759,164256722,164386710,164516724,164646764,164776830, - 164906921,165037038,165167181,165297349,165427543,165557762,165688007,165818278,165948574,166078896, - 166209243,166339616,166470015,166600439,166730888,166861363,166991864,167122390,167252942,167383519, - 167514122,167644750,167775403,167906082,168036786,168167516,168298271,168429052,168559858,168690689, - 168821546,168952428,169083335,169214268,169345226,169476210,169607219,169738253,169869312,170000397, - 170131507,170262642,170393802,170524988,170656199,170787435,170918696,171049983,171181295,171312632, - 171443994,171575381,171706793,171838231,171969694,172101182,172232695,172364233,172495796,172627384, - 172758997,172890636,173022299,173153988,173285702,173417440,173549204,173680993,173812806,173944645, - 174076509,174208397,174340311,174472249,174604213,174736201,174868215,175000253,175132316,175264404, - 175396517,175528655,175660818,175793005,175925218,176057455,176189717,176322004,176454316,176586653, - 176719014,176851400,176983811,177116247,177248708,177381193,177513703,177646237,177778797,177911381, - 178043990,178176624,178309282,178441965,178574672,178707405,178840162,178972943,179105749,179238580, - 179371435,179504316,179637220,179770149,179903103,180036082,180169084,180302112,180435164,180568240, - 180701342,180834467,180967617,181100792,181233991,181367214,181500462,181633735,181767032,181900353, - 182033699,182167069,182300464,182433883,182567326,182700794,182834286,182967803,183101344,183234909, - 183368499,183502113,183635751,183769414,183903101,184036812,184170548,184304307,184438092,184571900, - 184705732,184839589,184973470,185107376,185241305,185375259,185509237,185643239,185777266,185911316, - 186045391,186179490,186313613,186447760,186581931,186716126,186850346,186984590,187118857,187253149, - 187387465,187521805,187656169,187790557,187924969,188059405,188193866,188328350,188462858,188597390, - 188731946,188866527,189001131,189135759,189270411,189405087,189539787,189674511,189809259,189944031, - 190078827,190213646,190348490,190483357,190618249,190753164,190888103,191023066,191158052,191293063, - 191428097,191563155,191698237,191833343,191968473,192103626,192238803,192374004,192509229,192644477, - 192779749,192915045,193050365,193185708,193321075,193456466,193591881,193727319,193862781,193998266, - 194133775,194269308,194404864,194540444,194676048,194811675,194947326,195083001,195218699,195354421, - 195490166,195625935,195761727,195897543,196033383,196169246,196305132,196441042,196576976,196712933, - 196848914,196984918,197120945,197256996,197393071,197529169,197665290,197801435,197937603,198073795, - 198210010,198346249,198482510,198618796,198755104,198891437,199027792,199164171,199300573,199436998, - 199573447,199709919,199846415,199982934,200119476,200256041,200392630,200529242,200665877,200802535, - 200939217,201075922,201212650,201349402,201486176,201622974,201759795,201896639,202033507,202170398, - 202307311,202444248,202581209,202718192,202855198,202992228,203129281,203266357,203403456,203540578, - 203677723,203814891,203952082,204089297,204226534,204363795,204501078,204638385,204775715,204913067, - 205050443,205187842,205325264,205462708,205600176,205737667,205875180,206012717,206150277,206287859, - 206425465,206563093,206700745,206838419,206976116,207113836,207251579,207389345,207527134,207664946, - 207802780,207940638,208078518,208216421,208354347,208492295,208630267,208768261,208906279,209044319, - 209182381,209320467,209458575,209596706,209734860,209873037,210011236,210149458,210287703,210425971, - 210564261,210702574,210840910,210979268,211117649,211256053,211394480,211532929,211671400,211809895, - 211948412,212086952,212225514,212364099,212502706,212641337,212779989,212918665,213057363,213196083, - 213334826,213473592,213612380,213751191,213890024,214028880,214167758,214306659,214445582,214584528, - 214723497,214862488,215001501,215140537,215279595,215418676,215557779,215696904,215836053,215975223, - 216114416,216253631,216392869,216532129,216671412,216810717,216950044,217089394,217228766,217368160, - 217507577,217647016,217786477,217925961,218065467,218204996,218344546,218484119,218623715,218763332, - 218902972,219042634,219182319,219322026,219461754,219601506,219741279,219881075,220020893,220160733, - 220300595,220440479,220580386,220720315,220860266,221000239,221140235,221280252,221420292,221560354, - 221700438,221840544,221980672,222120823,222260995,222401190,222541406,222681645,222821906,222962189, - 223102494,223242821,223383170,223523541,223663934,223804350,223944787,224085246,224225728,224366231, - 224506756,224647303,224787873,224928464,225069077,225209712,225350370,225491049,225631750,225772473, - 225913218,226053985,226194773,226335584,226476417,226617271,226758148,226899046,227039966,227180908, - 227321872,227462858,227603865,227744895,227885946,228027019,228168114,228309231,228450369,228591529, - 228732712,228873916,229015141,229156389,229297658,229438949,229580262,229721596,229862953,230004331, - 230145730,230287152,230428595,230570060,230711546,230853055,230994585,231136136,231277709,231419304, - 231560921,231702559,231844219,231985901,232127604,232269329,232411076,232552844,232694633,232836445, - 232978278,233120132,233262008,233403906,233545825,233687766,233829728,233971712,234113717,234255744, - 234397793,234539863,234681954,234824068,234966202,235108358,235250536,235392735,235534955,235677197, - 235819461,235961746,236104052,236246380,236388729,236531100,236673492,236815905,236958340,237100797, - 237243274,237385774,237528294,237670836,237813399,237955984,238098590,238241217,238383866,238526536, - 238669228,238811940,238954674,239097430,239240207,239383005,239525824,239668664,239811526,239954409, - 240097314,240240240,240383187,240526155,240669144,240812155,240955187,241098240,241241314,241384410, - 241527527,241670665,241813824,241957005,242100206,242243429,242386673,242529938,242673224,242816532, - 242959860,243103210,243246581,243389973,243533386,243676820,243820276,243963752,244107249,244250768, - 244394308,244537869,244681450,244825053,244968677,245112322,245255989,245399676,245543384,245687113, - 245830863,245974635,246118427,246262240,246406074,246549930,246693806,246837703,246981621,247125560, - 247269521,247413502,247557504,247701527,247845571,247989635,248133721,248277828,248421956,248566104, - 248710273,248854464,248998675,249142907,249287160,249431434,249575729,249720044,249864381,250008738, - 250153116,250297515,250441935,250586375,250730837,250875319,251019822,251164346,251308890,251453456, - 251598042,251742649,251887277,252031925,252176594,252321284,252465995,252610727,252755479,252900252, - 253045045,253189860,253334695,253479551,253624427,253769324,253914242,254059181,254204140,254349120, - 254494121,254639142,254784184,254929246,255074329,255219433,255364558,255509703,255654868,255800054, - 255945261,256090489,256235737,256381006,256526295,256671605,256816935,256962286,257107657,257253049, - 257398462,257543895,257689349,257834823,257980318,258125833,258271369,258416925,258562502,258708099, - 258853717,258999355,259145014,259290693,259436392,259582112,259727853,259873614,260019395,260165197, - 260311019,260456862,260602725,260748609,260894513,261040437,261186382,261332347,261478333,261624339, - 261770365,261916411,262062478,262208566,262354674,262500802,262646950,262793119,262939308,263085517, - 263231747,263377997,263524267,263670558,263816869,263963200,264109551,264255923,264402315,264548728, - 264695160,264841613,264988086,265134579,265281093,265427627,265574181,265720755,265867349,266013964, - 266160599,266307254,266453929,266600625,266747340,266894076,267040832,267187608,267334404,267481221, - 267628057,267774914,267921791,268068688,268215605,268362542,268509500,268656477,268803475,268950493, - 269097530,269244588,269391666,269538764,269685882,269833021,269980179,270127357,270274555,270421774, - 270569012,270716271,270863549,271010848,271158166,271305505,271452863,271600242,271747640,271895059, - 272042497,272189956,272337434,272484933,272632451,272779990,272927548,273075126,273222724,273370342, - 273517981,273665639,273813316,273961014,274108732,274256470,274404227,274552005,274699802,274847619, - 274995456,275143313,275291190,275439087,275587003,275734940,275882896,276030872,276178868,276326884, - 276474919,276622975,276771050,276919145,277067260,277215394,277363549,277511723,277659917,277808130, - 277956364,278104617,278252890,278401183,278549496,278697828,278846180,278994552,279142943,279291354, - 279439785,279588236,279736706,279885196,280033706,280182236,280330785,280479353,280627942,280776550, - 280925178,281073825,281222493,281371179,281519886,281668612,281817358,281966123,282114908,282263713, - 282412537,282561381,282710244,282859127,283008030,283156952,283305894,283454855,283603836,283752836, - 283901856,284050896,284199955,284349034,284498132,284647250,284796387,284945544,285094721,285243917, - 285393132,285542367,285691621,285840895,285990189,286139502,286288834,286438186,286587557,286736948, - 286886358,287035788,287185237,287334706,287484194,287633701,287783228,287932774,288082340,288231925, - 288381530,288531154,288680797,288830460,288980142,289129844,289279565,289429305,289579065,289728844, - 289878642,290028460,290178297,290328153,290478029,290627924,290777839,290927773,291077726,291227698, - 291377690,291527701,291677731,291827781,291977850,292127938,292278045,292428172,292578318,292728484, - 292878668,293028872,293179095,293329337,293479599,293629880,293780180,293930499,294080837,294231195, - 294381572,294531968,294682383,294832818,294983272,295133744,295284237,295434748,295585278,295735828, - 295886396,296036984,296187591,296338218,296488863,296639527,296790211,296940914,297091636,297242377, - 297393137,297543916,297694714,297845532,297996368,298147224,298298098,298448992,298599905,298750837, - 298901788,299052758,299203747,299354755,299505782,299656829,299807894,299958978,300110081,300261204, - 300412345,300563505,300714685,300865883,301017101,301168337,301319592,301470867,301622160,301773472, - 301924804,302076154,302227523,302378911,302530318,302681744,302833189,302984653,303136136,303287638, - 303439159,303590698,303742257,303893834,304045431,304197046,304348680,304500333,304652005,304803696, - 304955405,305107134,305258881,305410648,305562433,305714237,305866060,306017901,306169762,306321641, - 306473539,306625456,306777392,306929347,307081320,307233312,307385323,307537353,307689402,307841469, - 307993555,308145660,308297784,308449927,308602088,308754268,308906467,309058684,309210921,309363176, - 309515449,309667742,309820053,309972383,310124732,310277099,310429485,310581890,310734313,310886755, - 311039216,311191696,311344194,311496711,311649247,311801801,311954374,312106965,312259575,312412204, - 312564852,312717518,312870203,313022906,313175628,313328369,313481128,313633906,313786703,313939518, - 314092351,314245204,314398074,314550964,314703872,314856799,315009744,315162708,315315690,315468691, - 315621710,315774748,315927805,316080880,316233973,316387086,316540216,316693365,316846533,316999719, - 317152924,317306147,317459389,317612649,317765928,317919225,318072541,318225875,318379228,318532599, - 318685988,318839396,318992823,319146268,319299731,319453213,319606713,319760232,319913769,320067324, - 320220898,320374491,320528101,320681731,320835378,320989044,321142729,321296431,321450153,321603892, - 321757650,321911426,322065221,322219034,322372865,322526715,322680583,322834470,322988374,323142297, - 323296239,323450199,323604177,323758173,323912188,324066221,324220272,324374342,324528430,324682536, - 324836660,324990803,325144964,325299144,325453341,325607557,325761791,325916044,326070314,326224603, - 326378910,326533236,326687579,326841941,326996321,327150720,327305136,327459571,327614024,327768495, - 327922984,328077492,328232018,328386562,328541124,328695704,328850302,329004919,329159554,329314207, - 329468878,329623567,329778275,329933000,330087744,330242506,330397286,330552084,330706900,330861735, - 331016587,331171458,331326347,331481254,331636178,331791121,331946083,332101062,332256059,332411074, - 332566108,332721159,332876229,333031317,333186422,333341546,333496688,333651848,333807026,333962221, - 334117435,334272667,334427917,334583185,334738471,334893776,335049098,335204438,335359796,335515172, - 335670566,335825978,335981408,336136856,336292322,336447806,336603308,336758828,336914365,337069921, - 337225495,337381087,337536696,337692324,337847969,338003633,338159314,338315013,338470730,338626465, - 338782218,338937989,339093778,339249585,339405409,339561252,339717112,339872990,340028886,340184800, - 340340732,340496682,340652650,340808635,340964638,341120659,341276698,341432755,341588830,341744922, - 341901032,342057161,342213306,342369470,342525652,342681851,342838068,342994303,343150556,343306826, - 343463115,343619421,343775745,343932086,344088446,344244823,344401218,344557631,344714061,344870509, - 345026975,345183459,345339960,345496480,345653016,345809571,345966143,346122733,346279341,346435967, - 346592610,346749271,346905949,347062646,347219359,347376091,347532840,347689607,347846392,348003194, - 348160014,348316852,348473707,348630580,348787471,348944379,349101305,349258249,349415210,349572189, - 349729185,349886199,350043231,350200280,350357347,350514432,350671534,350828653,350985791,351142946, - 351300118,351457308,351614516,351771741,351928984,352086244,352243522,352400817,352558130,352715461, - 352872809,353030175,353187558,353344959,353502377,353659813,353817266,353974737,354132225,354289731, - 354447254,354604795,354762354,354919929,355077523,355235134,355392762,355550408,355708071,355865752, - 356023450,356181166,356338899,356496649,356654418,356812203,356970006,357127826,357285664,357443520, - 357601392,357759282,357917190,358075115,358233057,358391017,358548994,358706989,358865001,359023030, - 359181077,359339141,359497223,359655322,359813438,359971572,360129723,360287891,360446077,360604280, - 360762501,360920738,361078994,361237266,361395556,361553863,361712188,361870530,362028889,362187265, - 362345659,362504070,362662499,362820944,362979407,363137888,363296385,363454900,363613432,363771982, - 363930549,364089133,364247734,364406353,364564988,364723642,364882312,365041000,365199704,365358426, - 365517166,365675922,365834696,365993487,366152296,366311121,366469964,366628824,366787701,366946595, - 367105507,367264435,367423381,367582344,367741325,367900322,368059337,368218369,368377418,368536484, - 368695567,368854668,369013785,369172920,369332072,369491241,369650428,369809631,369968852,370128089, - 370287344,370446616,370605905,370765211,370924535,371083875,371243232,371402607,371561999,371721408, - 371880833,372040276,372199737,372359214,372518708,372678219,372837748,372997293,373156856,373316435, - 373476032,373635645,373795276,373954924,374114589,374274270,374433969,374593685,374753418,374913168, - 375072935,375232719,375392520,375552338,375712173,375872025,376031894,376191780,376351683,376511603, - 376671540,376831494,376991465,377151453,377311458,377471479,377631518,377791574,377951647,378111736, - 378271843,378431966,378592107,378752264,378912439,379072630,379232838,379393063,379553305,379713564, - 379873840,380034133,380194443,380354769,380515113,380675473,380835850,380996244,381156655,381317083, - 381477528,381637990,381798468,381958964,382119476,382280005,382440551,382601114,382761694,382922290, - 383082903,383243534,383404181,383564844,383725525,383886223,384046937,384207668,384368416,384529181, - 384689962,384850761,385011576,385172408,385333256,385494122,385655004,385815903,385976819,386137752, - 386298701,386459667,386620650,386781650,386942667,387103700,387264750,387425816,387586900,387748000, - 387909117,388070251,388231401,388392568,388553752,388714952,388876170,389037404,389198654,389359922, - 389521206,389682507,389843824,390005158,390166509,390327877,390489261,390650662,390812079,390973513, - 391134964,391296432,391457916,391619417,391780934,391942469,392104019,392265587,392427171,392588772, - 392750389,392912023,393073674,393235341,393397025,393558725,393720442,393882176,394043926,394205693, - 394367477,394529277,394691093,394852927,395014776,395176643,395338526,395500425,395662342,395824274, - 395986224,396148189,396310172,396472171,396634186,396796218,396958267,397120332,397282414,397444512, - 397606627,397768758,397930906,398093070,398255251,398417448,398579662,398741892,398904139,399066402, - 399228682,399390979,399553291,399715621,399877966,400040329,400202707,400365103,400527514,400689943, - 400852387,401014848,401177326,401339820,401502330,401664857,401827400,401989960,402152536,402315129, - 402477738,402640363,402803005,402965664,403128338,403291030,403453737,403616461,403779201,403941958, - 404104731,404267521,404430327,404593149,404755988,404918843,405081715,405244602,405407507,405570427, - 405733364,405896317,406059287,406222273,406385275,406548294,406711329,406874381,407037448,407200532, - 407363633,407526750,407689883,407853032,408016198,408179380,408342578,408505793,408669024,408832271, - 408995534,409158814,409322110,409485423,409648751,409812096,409975457,410138835,410302229,410465639, - 410629065,410792508,410955967,411119442,411282933,411446441,411609964,411773505,411937061,412100633, - 412264222,412427827,412591449,412755086,412918740,413082410,413246096,413409798,413573517,413737251, - 413901002,414064769,414228553,414392352,414556168,414720000,414883848,415047712,415211593,415375489, - 415539402,415703331,415867276,416031238,416195215,416359209,416523218,416687244,416851286,417015344, - 417179419,417343509,417507616,417671738,417835877,418000032,418164203,418328390,418492594,418656813, - 418821048,418985300,419149568,419313852,419478151,419642467,419806800,419971148,420135512,420299892, - 420464289,420628701,420793130,420957574,421122035,421286511,421451004,421615513,421780038,421944579, - 422109136,422273709,422438298,422602903,422767524,422932161,423096814,423261483,423426168,423590870, - 423755587,423920320,424085069,424249834,424414616,424579413,424744226,424909055,425073900,425238762, - 425403639,425568532,425733441,425898366,426063307,426228264,426393237,426558226,426723231,426888252, - 427053288,427218341,427383410,427548494,427713595,427878711,428043844,428208992,428374156,428539337, - 428704533,428869745,429034973,429200217,429365476,429530752,429696043,429861351,430026674,430192013, - 430357369,430522740,430688126,430853529,431018948,431184382,431349833,431515299,431680781,431846279, - 432011793,432177323,432342868,432508430,432674007,432839600,433005209,433170834,433336474,433502131, - 433667803,433833491,433999195,434164914,434330650,434496401,434662168,434827951,434993750,435159565, - 435325395,435491241,435657103,435822981,435988874,436154784,436320709,436486650,436652606,436818579, - 436984567,437150571,437316590,437482626,437648677,437814744,437980827,438146925,438313039,438479169, - 438645315,438811476,438977653,439143846,439310055,439476279,439642519,439808775,439975046,440141333, - 440307636,440473955,440640289,440806639,440973005,441139386,441305783,441472196,441638624,441805068, - 441971528,442138004,442304495,442471002,442637524,442804062,442970616,443137185,443303770,443470371, - 443636988,443803620,443970267,444136931,444303610,444470304,444637014,444803740,444970482,445137239, - 445304012,445470800,445637604,445804423,445971259,446138109,446304976,446471858,446638755,446805668, - 446972597,447139542,447306501,447473477,447640468,447807475,447974497,448141535,448308588,448475657, - 448642742,448809842,448976957,449144088,449311235,449478397,449645575,449812768,449979977,450147202, - 450314442,450481697,450648968,450816255,450983557,451150874,451318207,451485556,451652920,451820300, - 451987695,452155105,452322531,452489973,452657430,452824903,452992391,453159894,453327413,453494948, - 453662498,453830063,453997644,454165240,454332852,454500480,454668122,454835781,455003454,455171143, - 455338848,455506568,455674303,455842054,456009821,456177602,456345399,456513212,456681040,456848884, - 457016742,457184617,457352506,457520411,457688332,457856268,458024219,458192186,458360168,458528165, - 458696178,458864207,459032250,459200309,459368384,459536474,459704579,459872699,460040835,460208986, - 460377153,460545335,460713532,460881745,461049973,461218216,461386475,461554749,461723039,461891343, - 462059663,462227999,462396350,462564716,462733097,462901494,463069906,463238333,463406776,463575234, - 463743707,463912196,464080699,464249219,464417753,464586303,464754868,464923448,465092044,465260655, - 465429281,465597922,465766579,465935251,466103938,466272641,466441358,466610091,466778840,466947603, - 467116382,467285176,467453985,467622810,467791650,467960505,468129375,468298260,468467161,468636077, - 468805008,468973954,469142916,469311893,469480885,469649892,469818914,469987952,470157005,470326073, - 470495156,470664254,470833368,471002497,471171641,471340800,471509974,471679164,471848368,472017588, - 472186823,472356073,472525339,472694619,472863915,473033226,473202552,473371893,473541249,473710620, - 473880007,474049409,474218825,474388257,474557704,474727167,474896644,475066136,475235644,475405167, - 475574704,475744257,475913825,476083408,476253007,476422620,476592248,476761892,476931550,477101224, - 477270913,477440617,477610336,477780070,477949819,478119583,478289362,478459157,478628966,478798790, - 478968630,479138484,479308354,479478239,479648138,479818053,479987983,480157928,480327888,480497863, - 480667853,480837858,481007878,481177913,481347963,481518028,481688108,481858203,482028313,482198438, - 482368578,482538734,482708904,482879089,483049289,483219504,483389734,483559979,483730240,483900515, - 484070805,484241110,484411430,484581765,484752115,484922480,485092860,485263254,485433664,485604089, - 485774529,485944983,486115453,486285938,486456437,486626952,486797481,486968025,487138585,487309159, - 487479748,487650352,487820971,487991605,488162254,488332917,488503596,488674290,488844998,489015721, - 489186460,489357213,489527981,489698764,489869562,490040374,490211202,490382044,490552902,490723774, - 490894661,491065563,491236480,491407412,491578358,491749320,491920296,492091287,492262294,492433314, - 492604350,492775401,492946466,493117547,493288642,493459752,493630876,493802016,493973171,494144340, - 494315524,494486723,494657937,494829165,495000409,495171667,495342940,495514228,495685530,495856848, - 496028180,496199527,496370889,496542265,496713657,496885063,497056484,497227919,497399370,497570835, - 497742315,497913810,498085320,498256844,498428383,498599937,498771506,498943089,499114687,499286300, - 499457928,499629570,499801227,499972899,500144586,500316287,500488003,500659734,500831480,501003240, - 501175015,501346805,501518609,501690428,501862262,502034111,502205974,502377852,502549745,502721652, - 502893574,503065511,503237462,503409429,503581409,503753405,503925415,504097440,504269480,504441534, - 504613603,504785686,504957785,505129897,505302025,505474167,505646324,505818496,505990682,506162883, - 506335098,506507328,506679573,506851833,507024107,507196395,507368699,507541017,507713349,507885697, - 508058058,508230435,508402826,508575232,508747652,508920087,509092536,509265000,509437479,509609972, - 509782480,509955003,510127540,510300092,510472658,510645239,510817834,510990444,511163069,511335708, - 511508362,511681030,511853713,512026411,512199123,512371849,512544590,512717346,512890116,513062901, - 513235701,513408514,513581343,513754186,513927043,514099916,514272802,514445703,514618619,514791549, - 514964494,515137453,515310427,515483415,515656418,515829435,516002467,516175513,516348574,516521649, - 516694739,516867844,517040962,517214096,517387243,517560406,517733582,517906774,518079979,518253200, - 518426434,518599683,518772947,518946225,519119518,519292825,519466146,519639482,519812833,519986197, - 520159577,520332970,520506379,520679801,520853238,521026690,521200156,521373636,521547131,521720640, - 521894164,522067702,522241255,522414822,522588403,522761999,522935609,523109234,523282873,523456526, - 523630194,523803876,523977573,524151284,524325009,524498749,524672503,524846272,525020055,525193852, - 525367664,525541490,525715330,525889185,526063054,526236938,526410836,526584748,526758675,526932616, - 527106571,527280541,527454525,527628524,527802536,527976563,528150605,528324661,528498731,528672815, - 528846914,529021027,529195155,529369297,529543453,529717623,529891808,530066007,530240220,530414448, - 530588690,530762946,530937217,531111502,531285801,531460115,531634442,531808785,531983141,532157512, - 532331897,532506296,532680709,532855137,533029579,533204036,533378506,533552991,533727490,533902004, - 534076531,534251073,534425630,534600200,534774785,534949384,535123997,535298624,535473266,535647922, - 535822592,535997276,536171975,536346688,536521415,536696156,536870912,537045682,537220466,537395264, - 537570076,537744903,537919744,538094599,538269468,538444352,538619249,538794161,538969087,539144028, - 539318982,539493951,539668934,539843931,540018942,540193967,540369007,540544060,540719128,540894210, - 541069307,541244417,541419542,541594680,541769833,541945000,542120182,542295377,542470587,542645810, - 542821048,542996300,543171566,543346846,543522141,543697449,543872772,544048109,544223460,544398825, - 544574204,544749597,544925004,545100426,545275862,545451311,545626775,545802253,545977745,546153251, - 546328772,546504306,546679854,546855417,547030994,547206584,547382189,547557808,547733441,547909088, - 548084749,548260425,548436114,548611817,548787535,548963266,549139012,549314771,549490545,549666333, - 549842135,550017950,550193780,550369624,550545482,550721354,550897241,551073141,551249055,551424983, - 551600925,551776882,551952852,552128836,552304835,552480847,552656873,552832914,553008968,553185037, - 553361119,553537215,553713326,553889450,554065589,554241741,554417908,554594088,554770283,554946491, - 555122714,555298950,555475201,555651465,555827743,556004036,556180342,556356662,556532997,556709345, - 556885707,557062083,557238473,557414877,557591295,557767727,557944173,558120633,558297107,558473595, - 558650097,558826612,559003142,559179686,559356243,559532814,559709400,559885999,560062612,560239240, - 560415881,560592536,560769205,560945887,561122584,561299295,561476019,561652758,561829510,562006276, - 562183057,562359851,562536659,562713480,562890316,563067166,563244029,563420907,563597798,563774703, - 563951622,564128555,564305502,564482463,564659437,564836426,565013428,565190444,565367474,565544518, - 565721576,565898647,566075733,566252832,566429945,566607072,566784213,566961368,567138536,567315719, - 567492915,567670125,567847349,568024586,568201838,568379103,568556382,568733675,568910982,569088303, - 569265637,569442985,569620347,569797723,569975113,570152516,570329933,570507365,570684809,570862268, - 571039740,571217227,571394727,571572240,571749768,571927309,572104865,572282433,572460016,572637613, - 572815223,572992847,573170485,573348136,573525802,573703481,573881173,574058880,574236600,574414334, - 574592082,574769844,574947619,575125408,575303211,575481028,575658858,575836702,576014560,576192431, - 576370316,576548215,576726128,576904054,577081994,577259948,577437916,577615897,577793892,577971901, - 578149923,578327959,578506009,578684072,578862149,579040240,579218345,579396463,579574595,579752741, - 579930900,580109073,580287260,580465460,580643674,580821902,581000143,581178399,581356667,581534950, - 581713246,581891555,582069879,582248216,582426567,582604931,582783309,582961701,583140106,583318525, - 583496958,583675404,583853864,584032337,584210825,584389325,584567840,584746368,584924910,585103465, - 585282034,585460616,585639213,585817822,585996446,586175083,586353733,586532398,586711076,586889767, - 587068472,587247191,587425923,587604669,587783428,587962201,588140988,588319788,588498602,588677429, - 588856270,589035125,589213993,589392875,589571770,589750679,589929601,590108537,590287487,590466450, - 590645427,590824417,591003421,591182438,591361469,591540513,591719571,591898643,592077728,592256827, - 592435939,592615065,592794204,592973357,593152523,593331703,593510896,593690103,593869324,594048558, - 594227805,594407066,594586341,594765629,594944930,595124245,595303574,595482916,595662271,595841640, - 596021023,596200419,596379829,596559252,596738688,596918138,597097602,597277079,597456569,597636073, - 597815591,597995122,598174666,598354224,598533795,598713380,598892979,599072590,599252216,599431854, - 599611506,599791172,599970851,600150544,600330250,600509969,600689702,600869448,601049208,601228981, - 601408768,601588568,601768381,601948208,602128049,602307902,602487770,602667650,602847544,603027452, - 603207373,603387307,603567255,603747216,603927191,604107179,604287180,604467195,604647223,604827265, - 605007320,605187388,605367470,605547565,605727674,605907796,606087931,606268080,606448242,606628417, - 606808606,606988808,607169024,607349253,607529496,607709751,607890020,608070303,608250599,608430908, - 608611231,608791566,608971916,609152278,609332654,609513044,609693446,609873862,610054292,610234735, - 610415191,610595660,610776143,610956639,611137148,611317671,611498207,611678756,611859319,612039895, - 612220484,612401087,612581703,612762332,612942975,613123631,613304300,613484983,613665679,613846388, - 614027110,614207846,614388595,614569357,614750133,614930922,615111724,615292540,615473368,615654210, - 615835066,616015934,616196816,616377712,616558620,616739542,616920477,617101425,617282386,617463361, - 617644349,617825351,618006365,618187393,618368434,618549488,618730556,618911637,619092731,619273838, - 619454959,619636093,619817240,619998400,620179573,620360760,620541960,620723173,620904400,621085639, - 621266892,621448158,621629438,621810730,621992036,622173355,622354687,622536032,622717391,622898763, - 623080148,623261546,623442957,623624382,623805820,623987271,624168735,624350212,624531703,624713207, - 624894724,625076254,625257797,625439354,625620923,625802506,625984102,626165711,626347334,626528969, - 626710618,626892280,627073955,627255643,627437344,627619058,627800786,627982527,628164281,628346048, - 628527828,628709621,628891428,629073248,629255080,629436926,629618785,629800658,629982543,630164441, - 630346353,630528278,630710215,630892166,631074130,631256108,631438098,631620101,631802118,631984147, - 632166190,632348246,632530315,632712397,632894492,633076600,633258722,633440856,633623004,633805164, - 633987338,634169525,634351725,634533938,634716164,634898403,635080655,635262921,635445199,635627490, - 635809795,635992113,636174443,636356787,636539144,636721514,636903896,637086292,637268701,637451123, - 637633559,637816007,637998468,638180942,638363430,638545930,638728443,638910970,639093509,639276062, - 639458627,639641206,639823797,640006402,640189020,640371650,640554294,640736951,640919621,641102303, - 641284999,641467708,641650430,641833165,642015912,642198673,642381447,642564234,642747034,642929846, - 643112672,643295511,643478363,643661228,643844105,644026996,644209900,644392817,644575746,644758689, - 644941645,645124613,645307595,645490590,645673597,645856618,646039651,646222698,646405757,646588830, - 646771915,646955013,647138125,647321249,647504386,647687536,647870699,648053875,648237064,648420266, - 648603481,648786709,648969949,649153203,649336470,649519749,649703042,649886347,650069665,650252997, - 650436341,650619698,650803068,650986451,651169847,651353255,651536677,651720112,651903559,652087020, - 652270493,652453979,652637478,652820990,653004515,653188053,653371604,653555167,653738744,653922333, - 654105935,654289550,654473178,654656819,654840473,655024140,655207819,655391512,655575217,655758935, - 655942666,656126410,656310167,656493936,656677719,656861514,657045322,657229143,657412977,657596824, - 657780683,657964556,658148441,658332339,658516250,658700174,658884111,659068060,659252023,659435998, - 659619986,659803987,659988000,660172027,660356066,660540118,660724183,660908261,661092351,661276455, - 661460571,661644700,661828842,662012997,662197164,662381344,662565538,662749743,662933962,663118194, - 663302438,663486695,663670965,663855247,664039543,664223851,664408172,664592506,664776853,664961212, - 665145584,665329969,665514367,665698777,665883200,666067636,666252085,666436547,666621021,666805508, - 666990008,667174521,667359046,667543584,667728135,667912699,668097275,668281864,668466466,668651081, - 668835708,669020348,669205001,669389667,669574345,669759036,669943740,670128456,670313185,670497927, - 670682682,670867450,671052230,671237023,671421828,671606647,671791478,671976321,672161178,672346047, - 672530929,672715823,672900731,673085651,673270583,673455529,673640487,673825458,674010441,674195437, - 674380446,674565468,674750502,674935549,675120609,675305681,675490766,675675863,675860974,676046097, - 676231232,676416381,676601542,676786716,676971902,677157101,677342313,677527537,677712774,677898024, - 678083286,678268561,678453849,678639149,678824462,679009787,679195126,679380477,679565840,679751216, - 679936605,680122006,680307421,680492847,680678287,680863739,681049203,681234680,681420170,681605673, - 681791188,681976716,682162256,682347809,682533374,682718953,682904543,683090147,683275763,683461391, - 683647033,683832687,684018353,684204032,684389724,684575428,684761145,684946874,685132616,685318371, - 685504138,685689918,685875710,686061515,686247332,686433163,686619005,686804861,686990728,687176609, - 687362502,687548407,687734325,687920256,688106199,688292155,688478123,688664104,688850098,689036104, - 689222122,689408154,689594197,689780254,689966322,690152404,690338498,690524604,690710723,690896854, - 691082998,691269155,691455324,691641506,691827700,692013907,692200126,692386358,692572602,692758859, - 692945128,693131410,693317704,693504011,693690330,693876662,694063007,694249364,694435733,694622115, - 694808509,694994916,695181336,695367768,695554212,695740669,695927138,696113620,696300115,696486621, - 696673141,696859673,697046217,697232774,697419343,697605925,697792519,697979126,698165745,698352377, - 698539021,698725677,698912347,699099028,699285722,699472429,699659147,699845879,700032623,700219379, - 700406148,700592929,700779723,700966529,701153347,701340178,701527022,701713878,701900746,702087627, - 702274520,702461425,702648343,702835274,703022217,703209172,703396140,703583120,703770113,703957118, - 704144135,704331165,704518208,704705262,704892329,705079409,705266501,705453605,705640722,705827851, - 706014993,706202147,706389313,706576492,706763683,706950887,707138103,707325331,707512572,707699825, - 707887090,708074368,708261659,708448961,708636276,708823604,709010944,709198296,709385660,709573037, - 709760427,709947828,710135242,710322669,710510107,710697559,710885022,711072498,711259986,711447487, - 711635000,711822525,712010063,712197613,712385175,712572750,712760337,712947936,713135548,713323172, - 713510808,713698457,713886118,714073791,714261477,714449175,714636885,714824608,715012343,715200090, - 715387850,715575622,715763406,715951203,716139012,716326833,716514667,716702513,716890371,717078242, - 717266124,717454019,717641927,717829847,718017779,718205723,718393680,718581648,718769630,718957623, - 719145629,719333647,719521677,719709720,719897775,720085842,720273922,720462013,720650117,720838234, - 721026362,721214503,721402656,721590822,721778999,721967189,722155392,722343606,722531833,722720072, - 722908323,723096587,723284862,723473150,723661451,723849763,724038088,724226425,724414774,724603136, - 724791509,724979895,725168294,725356704,725545127,725733562,725922009,726110468,726298940,726487424, - 726675920,726864428,727052949,727241481,727430026,727618583,727807153,727995734,728184328,728372934, - 728561553,728750183,728938826,729127480,729316148,729504827,729693518,729882222,730070938,730259666, - 730448406,730637159,730825923,731014700,731203489,731392290,731581104,731769929,731958767,732147617, - 732336479,732525353,732714240,732903139,733092049,733280972,733469908,733658855,733847814,734036786, - 734225770,734414766,734603774,734792794,734981827,735170871,735359928,735548997,735738078,735927171, - 736116277,736305394,736494524,736683666,736872820,737061986,737251164,737440354,737629557,737818771, - 738007998,738197237,738386488,738575751,738765026,738954314,739143613,739332925,739522249,739711585, - 739900933,740090293,740279665,740469049,740658446,740847854,741037275,741226708,741416152,741605609, - 741795078,741984560,742174053,742363558,742553076,742742605,742932147,743121701,743311266,743500844, - 743690434,743880036,744069651,744259277,744448915,744638566,744828228,745017903,745207589,745397288, - 745586999,745776721,745966456,746156203,746345962,746535733,746725517,746915312,747105119,747294938, - 747484770,747674613,747864469,748054336,748244216,748434107,748624011,748813927,749003855,749193794, - 749383746,749573710,749763686,749953674,750143674,750333686,750523710,750713746,750903794,751093854, - 751283926,751474011,751664107,751854215,752044335,752234467,752424612,752614768,752804936,752995117, - 753185309,753375513,753565729,753755958,753946198,754136450,754326715,754516991,754707279,754897580, - 755087892,755278216,755468553,755658901,755849261,756039633,756230018,756420414,756610822,756801242, - 756991675,757182119,757372575,757563043,757753523,757944015,758134519,758325035,758515563,758706103, - 758896655,759087219,759277794,759468382,759658982,759849593,760040217,760230853,760421500,760612160, - 760802831,760993514,761184210,761374917,761565636,761756367,761947110,762137866,762328632,762519411, - 762710202,762901005,763091820,763282646,763473485,763664335,763855198,764046072,764236958,764427856, - 764618767,764809689,765000622,765191568,765382526,765573496,765764477,765955471,766146476,766337493, - 766528523,766719564,766910617,767101682,767292758,767483847,767674948,767866060,768057185,768248321, - 768439469,768630629,768821801,769012985,769204180,769395388,769586607,769777839,769969082,770160337, - 770351604,770542883,770734174,770925476,771116791,771308117,771499455,771690805,771882167,772073541, - 772264926,772456324,772647733,772839155,773030588,773222032,773413489,773604958,773796438,773987931, - 774179435,774370951,774562479,774754018,774945570,775137133,775328708,775520295,775711894,775903505, - 776095127,776286762,776478408,776670066,776861736,777053417,777245111,777436816,777628533,777820262, - 778012003,778203755,778395520,778587296,778779084,778970884,779162695,779354519,779546354,779738201, - 779930060,780121930,780313813,780505707,780697613,780889531,781081460,781273402,781465355,781657320, - 781849297,782041285,782233285,782425297,782617321,782809357,783001404,783193464,783385535,783577617, - 783769712,783961818,784153936,784346066,784538208,784730361,784922526,785114703,785306892,785499092, - 785691304,785883528,786075764,786268012,786460271,786652542,786844824,787037119,787229425,787421743, - 787614073,787806414,787998767,788191132,788383509,788575897,788768297,788960709,789153133,789345568, - 789538015,789730474,789922944,790115426,790307920,790500426,790692943,790885472,791078013,791270566, - 791463130,791655706,791848294,792040893,792233504,792426127,792618762,792811408,793004066,793196735, - 793389417,793582110,793774814,793967531,794160259,794352999,794545750,794738513,794931288,795124075, - 795316873,795509683,795702505,795895338,796088183,796281039,796473908,796666788,796859680,797052583, - 797245498,797438425,797631363,797824313,798017275,798210248,798403233,798596230,798789238,798982258, - 799175290,799368333,799561388,799754455,799947533,800140623,800333725,800526838,800719963,800913099, - 801106248,801299407,801492579,801685762,801878957,802072163,802265381,802458611,802651852,802845105, - 803038370,803231646,803424934,803618233,803811544,804004867,804198201,804391547,804584905,804778274, - 804971654,805165047,805358451,805551866,805745294,805938733,806132183,806325645,806519119,806712604, - 806906101,807099609,807293129,807486661,807680204,807873759,808067326,808260904,808454493,808648094, - 808841707,809035332,809228968,809422615,809616274,809809945,810003627,810197321,810391027,810584744, - 810778472,810972213,811165964,811359728,811553503,811747289,811941087,812134897,812328718,812522551, - 812716395,812910251,813104118,813297997,813491888,813685790,813879703,814073628,814267565,814461513, - 814655473,814849445,815043427,815237422,815431428,815625445,815819475,816013515,816207567,816401631, - 816595706,816789793,816983891,817178001,817372122,817566255,817760400,817954555,818148723,818342902, - 818537092,818731294,818925508,819119733,819313969,819508217,819702477,819896748,820091031,820285325, - 820479630,820673947,820868276,821062616,821256968,821451331,821645705,821840091,822034489,822228898, - 822423319,822617751,822812194,823006649,823201116,823395594,823590083,823784584,823979097,824173621, - 824368156,824562703,824757261,824951831,825146413,825341005,825535610,825730225,825924853,826119491, - 826314141,826508803,826703476,826898160,827092856,827287564,827482283,827677013,827871755,828066508, - 828261273,828456049,828650837,828845636,829040446,829235268,829430102,829624946,829819803,830014670, - 830209550,830404440,830599342,830794256,830989181,831184117,831379065,831574024,831768994,831963976, - 832158970,832353975,832548991,832744019,832939058,833134109,833329170,833524244,833719329,833914425, - 834109533,834304652,834499782,834694924,834890077,835085242,835280418,835475605,835670804,835866015, - 836061236,836256469,836451714,836646970,836842237,837037516,837232806,837428107,837623420,837818744, - 838014080,838209427,838404785,838600155,838795536,838990928,839186332,839381747,839577174,839772612, - 839968061,840163522,840358994,840554478,840749972,840945479,841140996,841336525,841532065,841727617, - 841923180,842118754,842314340,842509937,842705546,842901165,843096797,843292439,843488093,843683758, - 843879435,844075122,844270822,844466532,844662254,844857987,845053732,845249488,845445255,845641034, - 845836823,846032625,846228437,846424261,846620096,846815943,847011801,847207670,847403550,847599442, - 847795345,847991260,848187186,848383123,848579071,848775031,848971002,849166984,849362978,849558983, - 849754999,849951027,850147065,850343116,850539177,850735250,850931334,851127429,851323536,851519654, - 851715783,851911924,852108076,852304239,852500413,852696599,852892796,853089004,853285224,853481454, - 853677697,853873950,854070215,854266491,854462778,854659076,854855386,855051707,855248039,855444383, - 855640738,855837104,856033481,856229870,856426270,856622681,856819103,857015537,857211982,857408438, - 857604905,857801384,857997874,858194375,858390888,858587411,858783946,858980492,859177050,859373619, - 859570198,859766790,859963392,860160006,860356630,860553267,860749914,860946572,861143242,861339923, - 861536615,861733319,861930034,862126760,862323497,862520245,862717005,862913775,863110557,863307351, - 863504155,863700971,863897798,864094636,864291485,864488346,864685217,864882100,865078994,865275900, - 865472816,865669744,865866683,866063633,866260595,866457567,866654551,866851546,867048552,867245569, - 867442598,867639637,867836688,868033750,868230823,868427908,868625004,868822110,869019228,869216357, - 869413498,869610649,869807812,870004986,870202171,870399367,870596574,870793793,870991023,871188264, - 871385516,871582779,871780053,871977339,872174635,872371943,872569262,872766592,872963934,873161286, - 873358650,873556024,873753410,873950807,874148216,874345635,874543065,874740507,874937960,875135424, - 875332899,875530385,875727882,875925391,876122910,876320441,876517983,876715536,876913100,877110675, - 877308262,877505859,877703468,877901088,878098719,878296361,878494014,878691678,878889353,879087040, - 879284737,879482446,879680166,879877897,880075639,880273392,880471156,880668932,880866718,881064516, - 881262324,881460144,881657975,881855817,882053670,882251534,882449409,882647296,882845193,883043102, - 883241021,883438952,883636894,883834847,884032811,884230786,884428772,884626769,884824777,885022797, - 885220827,885418869,885616921,885814985,886013060,886211145,886409242,886607350,886805469,887003599, - 887201741,887399893,887598056,887796230,887994416,888192612,888390820,888589038,888787268,888985509, - 889183760,889382023,889580297,889778582,889976878,890175185,890373503,890571832,890770172,890968523, - 891166885,891365258,891563643,891762038,891960444,892158862,892357290,892555729,892754180,892952641, - 893151114,893349597,893548092,893746597,893945114,894143642,894342180,894540730,894739291,894937862, - 895136445,895335039,895533644,895732259,895930886,896129524,896328173,896526833,896725503,896924185, - 897122878,897321582,897520297,897719022,897917759,898116507,898315266,898514036,898712816,898911608, - 899110411,899309225,899508050,899706885,899905732,900104590,900303458,900502338,900701229,900900130, - 901099043,901297967,901496901,901695847,901894803,902093771,902292749,902491739,902690739,902889750, - 903088773,903287806,903486850,903685906,903884972,904084049,904283137,904482236,904681346,904880467, - 905079599,905278742,905477896,905677061,905876237,906075423,906274621,906473829,906673049,906872279, - 907071521,907270773,907470037,907669311,907868596,908067892,908267199,908466517,908665846,908865186, - 909064537,909263899,909463271,909662655,909862049,910061455,910260871,910460298,910659737,910859186, - 911058646,911258117,911457599,911657091,911856595,912056110,912255635,912455172,912654719,912854277, - 913053846,913253426,913453017,913652619,913852232,914051856,914251490,914451136,914650792,914850459, - 915050138,915249827,915449527,915649237,915848959,916048692,916248435,916448190,916647955,916847731, - 917047518,917247316,917447125,917646945,917846775,918046617,918246469,918446332,918646206,918846091, - 919045987,919245894,919445811,919645740,919845679,920045629,920245590,920445562,920645545,920845538, - 921045543,921245558,921445584,921645621,921845669,922045728,922245797,922445878,922645969,922846071, - 923046184,923246308,923446443,923646588,923846745,924046912,924247090,924447279,924647479,924847689, - 925047911,925248143,925448386,925648640,925848904,926049180,926249466,926449764,926650072,926850391, - 927050720,927251061,927451412,927651774,927852147,928052531,928252926,928453331,928653747,928854174, - 929054612,929255061,929455521,929655991,929856472,930056964,930257467,930457980,930658504,930859040, - 931059586,931260142,931460710,931661288,931861877,932062477,932263088,932463709,932664342,932864985, - 933065639,933266303,933466979,933667665,933868362,934069070,934269789,934470518,934671258,934872009, - 935072771,935273543,935474326,935675120,935875925,936076741,936277567,936478404,936679252,936880111, - 937080980,937281861,937482751,937683653,937884566,938085489,938286423,938487368,938688323,938889289, - 939090266,939291254,939492253,939693262,939894282,940095313,940296354,940497407,940698470,940899543, - 941100628,941301723,941502829,941703946,941905073,942106212,942307361,942508520,942709691,942910872, - 943112064,943313266,943514480,943715704,943916938,944118184,944319440,944520707,944721985,944923273, - 945124572,945325882,945527203,945728534,945929876,946131229,946332592,946533966,946735351,946936747, - 947138153,947339570,947540998,947742436,947943885,948145345,948346815,948548297,948749789,948951291, - 949152804,949354328,949555863,949757409,949958965,950160531,950362109,950563697,950765296,950966905, - 951168526,951370156,951571798,951773450,951975113,952176787,952378471,952580166,952781872,952983588, - 953185315,953387053,953588801,953790560,953992330,954194110,954395901,954597703,954799515,955001338, - 955203172,955405016,955606871,955808737,956010613,956212500,956414398,956616306,956818225,957020155, - 957222095,957424046,957626008,957827980,958029963,958231956,958433960,958635975,958838001,959040037, - 959242083,959444141,959646209,959848287,960050377,960252477,960454587,960656708,960858840,961060983, - 961263136,961465299,961667474,961869659,962071854,962274060,962476277,962678505,962880743,963082991, - 963285251,963487521,963689801,963892092,964094394,964296707,964499030,964701363,964903707,965106062, - 965308428,965510804,965713190,965915588,966117995,966320414,966522843,966725283,966927733,967130194, - 967332665,967535147,967737640,967940143,968142657,968345181,968547716,968750262,968952818,969155385, - 969357962,969560550,969763149,969965758,970168378,970371008,970573649,970776300,970978962,971181635, - 971384318,971587011,971789716,971992431,972195156,972397892,972600639,972803396,973006163,973208942, - 973411731,973614530,973817340,974020160,974222991,974425833,974628685,974831548,975034421,975237305, - 975440200,975643105,975846020,976048946,976251883,976454830,976657788,976860756,977063735,977266724, - 977469724,977672734,977875755,978078787,978281829,978484881,978687944,978891018,979094102,979297197, - 979500302,979703418,979906544,980109681,980312828,980515986,980719154,980922333,981125523,981328723, - 981531933,981735154,981938386,982141628,982344880,982548143,982751417,982954701,983157995,983361300, - 983564616,983767942,983971279,984174626,984377983,984581352,984784730,984988119,985191519,985394929, - 985598350,985801781,986005222,986208675,986412137,986615610,986819094,987022588,987226092,987429608, - 987633133,987836669,988040216,988243773,988447340,988650918,988854506,989058105,989261715,989465335, - 989668965,989872606,990076257,990279919,990483591,990687274,990890967,991094671,991298385,991502109, - 991705844,991909590,992113346,992317112,992520889,992724677,992928475,993132283,993336102,993539931, - 993743770,993947620,994151481,994355352,994559234,994763125,994967028,995170941,995374864,995578798, - 995782742,995986696,996190661,996394637,996598623,996802619,997006626,997210643,997414671,997618709, - 997822757,998026816,998230886,998434965,998639056,998843156,999047267,999251389,999455521,999659663, - 999863816,1000067979,1000272153,1000476337,1000680531,1000884736,1001088952,1001293177,1001497413,1001701660, - 1001905917,1002110184,1002314462,1002518750,1002723049,1002927358,1003131677,1003336007,1003540347,1003744698, - 1003949059,1004153430,1004357812,1004562204,1004766607,1004971020,1005175443,1005379877,1005584321,1005788776, - 1005993241,1006197716,1006402202,1006606698,1006811205,1007015722,1007220249,1007424787,1007629335,1007833893, - 1008038462,1008243041,1008447631,1008652231,1008856841,1009061462,1009266093,1009470734,1009675386,1009880048, - 1010084721,1010289404,1010494097,1010698801,1010903515,1011108239,1011312974,1011517719,1011722475,1011927241, - 1012132017,1012336803,1012541600,1012746407,1012951225,1013156053,1013360891,1013565740,1013770599,1013975469, - 1014180348,1014385238,1014590139,1014795050,1014999971,1015204902,1015409844,1015614796,1015819759,1016024732, - 1016229715,1016434708,1016639712,1016844726,1017049751,1017254786,1017459831,1017664886,1017869952,1018075028, - 1018280115,1018485212,1018690319,1018895436,1019100564,1019305702,1019510851,1019716009,1019921179,1020126358, - 1020331548,1020536748,1020741958,1020947179,1021152410,1021357651,1021562903,1021768165,1021973437,1022178719, - 1022384012,1022589315,1022794629,1022999953,1023205287,1023410631,1023615986,1023821351,1024026726,1024232111, - 1024437507,1024642913,1024848330,1025053757,1025259194,1025464641,1025670099,1025875566,1026081045,1026286533, - 1026492032,1026697541,1026903060,1027108590,1027314130,1027519680,1027725240,1027930811,1028136392,1028341984, - 1028547585,1028753197,1028958819,1029164451,1029370094,1029575747,1029781410,1029987084,1030192768,1030398462, - 1030604166,1030809880,1031015605,1031221340,1031427086,1031632841,1031838607,1032044383,1032250170,1032455966, - 1032661773,1032867590,1033073418,1033279255,1033485103,1033690961,1033896830,1034102708,1034308597,1034514496, - 1034720406,1034926325,1035132255,1035338195,1035544146,1035750106,1035956077,1036162058,1036368050,1036574051, - 1036780063,1036986085,1037192117,1037398160,1037604212,1037810275,1038016348,1038222432,1038428526,1038634629, - 1038840743,1039046868,1039253002,1039459147,1039665302,1039871467,1040077643,1040283828,1040490024,1040696230, - 1040902446,1041108673,1041314910,1041521157,1041727414,1041933681,1042139959,1042346246,1042552544,1042758852, - 1042965171,1043171499,1043377838,1043584187,1043790546,1043996916,1044203295,1044409685,1044616085,1044822495, - 1045028916,1045235346,1045441787,1045648238,1045854699,1046061170,1046267652,1046474144,1046680645,1046887158, - 1047093680,1047300212,1047506755,1047713308,1047919871,1048126444,1048333027,1048539621,1048746224,1048952838, - 1049159462,1049366097,1049572741,1049779396,1049986060,1050192735,1050399420,1050606116,1050812821,1051019537, - 1051226262,1051432998,1051639744,1051846500,1052053267,1052260043,1052466830,1052673627,1052880434,1053087251, - 1053294079,1053500916,1053707764,1053914622,1054121489,1054328368,1054535256,1054742154,1054949063,1055155981, - 1055362910,1055569849,1055776798,1055983758,1056190727,1056397707,1056604696,1056811696,1057018706,1057225726, - 1057432756,1057639797,1057846847,1058053908,1058260979,1058468059,1058675150,1058882252,1059089363,1059296484, - 1059503616,1059710757,1059917909,1060125071,1060332243,1060539425,1060746617,1060953820,1061161032,1061368255, - 1061575488,1061782730,1061989983,1062197246,1062404520,1062611803,1062819096,1063026400,1063233713,1063441037, - 1063648371,1063855715,1064063069,1064270433,1064477807,1064685192,1064892586,1065099990,1065307405,1065514830, - 1065722265,1065929709,1066137164,1066344630,1066552105,1066759590,1066967085,1067174591,1067382106,1067589632, - 1067797168,1068004714,1068212269,1068419835,1068627411,1068834998,1069042594,1069250200,1069457816,1069665443, - 1069873079,1070080726,1070288383,1070496049,1070703726,1070911413,1071119110,1071326817,1071534534,1071742261, - 1071949998,1072157746,1072365503,1072573270,1072781048,1072988835,1073196633,1073404441,1073612258,1073820086, - 1074027924,1074235772,1074443630,1074651498,1074859376,1075067264,1075275162,1075483070,1075690988,1075898917, - 1076106855,1076314803,1076522762,1076730730,1076938709,1077146697,1077354696,1077562705,1077770723,1077978752, - 1078186791,1078394839,1078602898,1078810967,1079019046,1079227135,1079435234,1079643343,1079851462,1080059591, - 1080267730,1080475879,1080684038,1080892207,1081100386,1081308576,1081516775,1081724984,1081933203,1082141432, - 1082349672,1082557921,1082766180,1082974450,1083182729,1083391018,1083599318,1083807627,1084015947,1084224276, - 1084432615,1084640965,1084849324,1085057694,1085266073,1085474462,1085682862,1085891271,1086099691,1086308120, - 1086516560,1086725009,1086933468,1087141938,1087350417,1087558907,1087767406,1087975915,1088184435,1088392964, - 1088601503,1088810053,1089018612,1089227181,1089435761,1089644350,1089852949,1090061559,1090270178,1090478807, - 1090687446,1090896095,1091104754,1091313424,1091522103,1091730792,1091939491,1092148200,1092356919,1092565648, - 1092774387,1092983136,1093191894,1093400663,1093609442,1093818231,1094027030,1094235838,1094444657,1094653486, - 1094862324,1095071173,1095280031,1095488900,1095697778,1095906666,1096115565,1096324473,1096533391,1096742319, - 1096951257,1097160206,1097369164,1097578132,1097787109,1097996097,1098205095,1098414103,1098623121,1098832148, - 1099041186,1099250233,1099459291,1099668358,1099877435,1100086523,1100295620,1100504727,1100713844,1100922971, - 1101132108,1101341255,1101550412,1101759578,1101968755,1102177942,1102387138,1102596345,1102805561,1103014787, - 1103224023,1103433270,1103642526,1103851792,1104061067,1104270353,1104479649,1104688955,1104898270,1105107596, - 1105316931,1105526276,1105735631,1105944997,1106154372,1106363756,1106573151,1106782556,1106991971,1107201395, - 1107410830,1107620274,1107829728,1108039192,1108248667,1108458150,1108667644,1108877148,1109086662,1109296185, - 1109505719,1109715262,1109924815,1110134378,1110343951,1110553534,1110763127,1110972730,1111182342,1111391965, - 1111601597,1111811239,1112020891,1112230553,1112440225,1112649907,1112859598,1113069300,1113279011,1113488733, - 1113698464,1113908205,1114117956,1114327716,1114537487,1114747267,1114957058,1115166858,1115376668,1115586488, - 1115796318,1116006157,1116216007,1116425866,1116635736,1116845615,1117055504,1117265403,1117475311,1117685230, - 1117895158,1118105097,1118315045,1118525003,1118734971,1118944948,1119154936,1119364933,1119574941,1119784958, - 1119994985,1120205022,1120415068,1120625125,1120835191,1121045267,1121255353,1121465449,1121675555,1121885670, - 1122095796,1122305931,1122516076,1122726231,1122936396,1123146570,1123356755,1123566949,1123777153,1123987367, - 1124197590,1124407824,1124618067,1124828321,1125038584,1125248856,1125459139,1125669432,1125879734,1126090046, - 1126300368,1126510700,1126721041,1126931393,1127141754,1127352125,1127562506,1127772897,1127983297,1128193707, - 1128404127,1128614557,1128824997,1129035447,1129245906,1129456375,1129666854,1129877343,1130087841,1130298350, - 1130508868,1130719396,1130929934,1131140481,1131351039,1131561606,1131772183,1131982769,1132193366,1132403972, - 1132614588,1132825214,1133035850,1133246496,1133457151,1133667816,1133878491,1134089176,1134299870,1134510574, - 1134721288,1134932012,1135142746,1135353489,1135564242,1135775005,1135985778,1136196560,1136407352,1136618154, - 1136828966,1137039788,1137250619,1137461460,1137672311,1137883172,1138094042,1138304922,1138515812,1138726712, - 1138937622,1139148541,1139359470,1139570409,1139781357,1139992315,1140203284,1140414261,1140625249,1140836246, - 1141047253,1141258270,1141469297,1141680333,1141891379,1142102435,1142313501,1142524576,1142735661,1142946756, - 1143157861,1143368975,1143580099,1143791233,1144002377,1144213530,1144424693,1144635866,1144847048,1145058241, - 1145269443,1145480655,1145691876,1145903107,1146114348,1146325599,1146536859,1146748130,1146959410,1147170699, - 1147381999,1147593308,1147804626,1148015955,1148227293,1148438641,1148649999,1148861367,1149072744,1149284131, - 1149495527,1149706934,1149918350,1150129775,1150341211,1150552656,1150764111,1150975576,1151187050,1151398534, - 1151610028,1151821531,1152033044,1152244567,1152456100,1152667642,1152879194,1153090756,1153302327,1153513909, - 1153725499,1153937100,1154148710,1154360330,1154571960,1154783599,1154995248,1155206907,1155418575,1155630253, - 1155841941,1156053639,1156265346,1156477063,1156688789,1156900526,1157112272,1157324027,1157535793,1157747568, - 1157959352,1158171147,1158382951,1158594765,1158806588,1159018421,1159230264,1159442116,1159653979,1159865850, - 1160077732,1160289623,1160501524,1160713435,1160925355,1161137285,1161349224,1161561173,1161773132,1161985101, - 1162197079,1162409067,1162621064,1162833072,1163045089,1163257115,1163469151,1163681197,1163893253,1164105318, - 1164317393,1164529477,1164741571,1164953675,1165165789,1165377912,1165590045,1165802187,1166014339,1166226501, - 1166438672,1166650853,1166863044,1167075244,1167287454,1167499674,1167711903,1167924142,1168136390,1168348649, - 1168560916,1168773194,1168985481,1169197778,1169410084,1169622400,1169834726,1170047061,1170259406,1170471761, - 1170684125,1170896499,1171108882,1171321275,1171533678,1171746090,1171958512,1172170944,1172383385,1172595836, - 1172808296,1173020766,1173233246,1173445735,1173658234,1173870743,1174083261,1174295789,1174508326,1174720873, - 1174933430,1175145996,1175358572,1175571158,1175783753,1175996357,1176208972,1176421596,1176634229,1176846872, - 1177059525,1177272187,1177484859,1177697541,1177910232,1178122933,1178335643,1178548363,1178761093,1178973832, - 1179186581,1179399339,1179612107,1179824884,1180037672,1180250468,1180463275,1180676090,1180888916,1181101751, - 1181314596,1181527450,1181740314,1181953187,1182166070,1182378963,1182591865,1182804777,1183017698,1183230629, - 1183443570,1183656520,1183869480,1184082449,1184295428,1184508416,1184721414,1184934422,1185147439,1185360465, - 1185573502,1185786548,1185999603,1186212668,1186425743,1186638827,1186851920,1187065024,1187278136,1187491259, - 1187704391,1187917532,1188130683,1188343844,1188557014,1188770194,1188983383,1189196582,1189409790,1189623008, - 1189836236,1190049473,1190262720,1190475976,1190689242,1190902517,1191115802,1191329096,1191542400,1191755713, - 1191969036,1192182369,1192395711,1192609063,1192822424,1193035795,1193249175,1193462565,1193675964,1193889373, - 1194102791,1194316219,1194529657,1194743104,1194956561,1195170027,1195383502,1195596987,1195810482,1196023986, - 1196237500,1196451023,1196664556,1196878099,1197091650,1197305212,1197518783,1197732363,1197945953,1198159553, - 1198373162,1198586780,1198800408,1199014046,1199227693,1199441349,1199655015,1199868691,1200082376,1200296071, - 1200509775,1200723489,1200937212,1201150944,1201364687,1201578438,1201792200,1202005970,1202219750,1202433540, - 1202647339,1202861148,1203074966,1203288794,1203502631,1203716478,1203930334,1204144200,1204358075,1204571960, - 1204785854,1204999758,1205213671,1205427594,1205641526,1205855467,1206069419,1206283379,1206497349,1206711329, - 1206925318,1207139317,1207353325,1207567342,1207781369,1207995406,1208209452,1208423507,1208637572,1208851647, - 1209065731,1209279824,1209493927,1209708039,1209922161,1210136293,1210350433,1210564584,1210778743,1210992912, - 1211207091,1211421279,1211635477,1211849684,1212063900,1212278126,1212492362,1212706607,1212920861,1213135125, - 1213349398,1213563681,1213777973,1213992275,1214206586,1214420907,1214635237,1214849576,1215063925,1215278284, - 1215492652,1215707029,1215921416,1216135812,1216350218,1216564633,1216779057,1216993491,1217207935,1217422388, - 1217636850,1217851322,1218065803,1218280294,1218494794,1218709304,1218923823,1219138351,1219352889,1219567436, - 1219781993,1219996559,1220211135,1220425720,1220640314,1220854918,1221069532,1221284154,1221498787,1221713428, - 1221928079,1222142740,1222357410,1222572089,1222786778,1223001476,1223216184,1223430901,1223645627,1223860363, - 1224075109,1224289863,1224504627,1224719401,1224934184,1225148976,1225363778,1225578589,1225793410,1226008240, - 1226223080,1226437928,1226652787,1226867654,1227082531,1227297418,1227512314,1227727219,1227942134,1228157058, - 1228371992,1228586934,1228801887,1229016849,1229231820,1229446800,1229661790,1229876789,1230091798,1230306816, - 1230521844,1230736881,1230951927,1231166983,1231382048,1231597122,1231812206,1232027299,1232242402,1232457514, - 1232672636,1232887766,1233102907,1233318056,1233533215,1233748383,1233963561,1234178748,1234393945,1234609151, - 1234824366,1235039590,1235254824,1235470068,1235685321,1235900583,1236115854,1236331135,1236546425,1236761725, - 1236977034,1237192352,1237407680,1237623017,1237838364,1238053719,1238269085,1238484459,1238699843,1238915236, - 1239130639,1239346051,1239561472,1239776903,1239992343,1240207793,1240423251,1240638720,1240854197,1241069684, - 1241285180,1241500686,1241716201,1241931725,1242147259,1242362802,1242578354,1242793916,1243009487,1243225067, - 1243440657,1243656256,1243871864,1244087482,1244303109,1244518745,1244734391,1244950046,1245165711,1245381385, - 1245597068,1245812760,1246028462,1246244173,1246459894,1246675623,1246891363,1247107111,1247322869,1247538636, - 1247754413,1247970198,1248185993,1248401798,1248617612,1248833435,1249049267,1249265109,1249480960,1249696820, - 1249912690,1250128569,1250344458,1250560355,1250776262,1250992179,1251208104,1251424039,1251639983,1251855937, - 1252071900,1252287872,1252503854,1252719845,1252935845,1253151854,1253367873,1253583901,1253799938,1254015985, - 1254232041,1254448106,1254664181,1254880265,1255096358,1255312461,1255528572,1255744693,1255960824,1256176964, - 1256393113,1256609271,1256825438,1257041615,1257257802,1257473997,1257690202,1257906416,1258122639,1258338872, - 1258555114,1258771365,1258987626,1259203895,1259420174,1259636463,1259852760,1260069067,1260285384,1260501709, - 1260718044,1260934388,1261150741,1261367104,1261583476,1261799857,1262016248,1262232647,1262449056,1262665475, - 1262881902,1263098339,1263314785,1263531241,1263747705,1263964179,1264180662,1264397155,1264613657,1264830168, - 1265046688,1265263217,1265479756,1265696304,1265912861,1266129428,1266346004,1266562589,1266779183,1266995787, - 1267212400,1267429022,1267645653,1267862294,1268078944,1268295603,1268512271,1268728949,1268945636,1269162332, - 1269379038,1269595752,1269812476,1270029209,1270245952,1270462703,1270679464,1270896234,1271113014,1271329802, - 1271546600,1271763407,1271980224,1272197049,1272413884,1272630728,1272847582,1273064444,1273281316,1273498197, - 1273715087,1273931987,1274148895,1274365813,1274582740,1274799677,1275016622,1275233577,1275450541,1275667515, - 1275884497,1276101489,1276318490,1276535500,1276752520,1276969548,1277186586,1277403633,1277620690,1277837755, - 1278054830,1278271914,1278489007,1278706110,1278923221,1279140342,1279357472,1279574611,1279791760,1280008918, - 1280226085,1280443261,1280660446,1280877641,1281094844,1281312057,1281529279,1281746511,1281963751,1282181001, - 1282398260,1282615528,1282832806,1283050092,1283267388,1283484693,1283702007,1283919331,1284136663,1284354005, - 1284571356,1284788716,1285006085,1285223464,1285440852,1285658249,1285875655,1286093070,1286310494,1286527928, - 1286745371,1286962823,1287180284,1287397755,1287615234,1287832723,1288050221,1288267728,1288485245,1288702770, - 1288920305,1289137849,1289355402,1289572964,1289790535,1290008116,1290225706,1290443305,1290660913,1290878530, - 1291096157,1291313792,1291531437,1291749091,1291966754,1292184426,1292402108,1292619799,1292837498,1293055207, - 1293272925,1293490653,1293708389,1293926135,1294143890,1294361654,1294579427,1294797209,1295015000,1295232801, - 1295450611,1295668430,1295886258,1296104095,1296321941,1296539797,1296757661,1296975535,1297193418,1297411310, - 1297629211,1297847122,1298065041,1298282970,1298500908,1298718855,1298936811,1299154776,1299372751,1299590734, - 1299808727,1300026729,1300244740,1300462760,1300680789,1300898828,1301116875,1301334932,1301552998,1301771072, - 1301989157,1302207250,1302425352,1302643464,1302861584,1303079714,1303297853,1303516001,1303734158,1303952324, - 1304170499,1304388684,1304606878,1304825080,1305043292,1305261513,1305479743,1305697982,1305916231,1306134488, - 1306352755,1306571030,1306789315,1307007609,1307225912,1307444224,1307662546,1307880876,1308099216,1308317564, - 1308535922,1308754289,1308972665,1309191050,1309409444,1309627847,1309846259,1310064681,1310283112,1310501551, - 1310720000,1310938458,1311156925,1311375401,1311593886,1311812380,1312030884,1312249396,1312467918,1312686449, - 1312904988,1313123537,1313342095,1313560662,1313779238,1313997824,1314216418,1314435021,1314653634,1314872255, - 1315090886,1315309526,1315528175,1315746833,1315965500,1316184176,1316402861,1316621555,1316840259,1317058971, - 1317277693,1317496423,1317715163,1317933912,1318152669,1318371436,1318590212,1318808997,1319027792,1319246595, - 1319465407,1319684228,1319903059,1320121898,1320340747,1320559605,1320778471,1320997347,1321216232,1321435126, - 1321654029,1321872941,1322091862,1322310792,1322529731,1322748679,1322967637,1323186603,1323405579,1323624563, - 1323843557,1324062559,1324281571,1324500592,1324719622,1324938661,1325157708,1325376765,1325595831,1325814906, - 1326033991,1326253084,1326472186,1326691297,1326910418,1327129547,1327348685,1327567833,1327786989,1328006155, - 1328225329,1328444513,1328663706,1328882907,1329102118,1329321338,1329540567,1329759804,1329979051,1330198307, - 1330417572,1330636846,1330856129,1331075421,1331294722,1331514033,1331733352,1331952680,1332172017,1332391363, - 1332610719,1332830083,1333049456,1333268839,1333488230,1333707630,1333927040,1334146458,1334365886,1334585322, - 1334804768,1335024222,1335243686,1335463158,1335682640,1335902131,1336121630,1336341139,1336560657,1336780183, - 1336999719,1337219264,1337438817,1337658380,1337877952,1338097532,1338317122,1338536721,1338756329,1338975945, - 1339195571,1339415206,1339634850,1339854503,1340074164,1340293835,1340513515,1340733204,1340952901,1341172608, - 1341392324,1341612049,1341831783,1342051525,1342271277,1342491038,1342710808,1342930586,1343150374,1343370171, - 1343589977,1343809791,1344029615,1344249448,1344469289,1344689140,1344909000,1345128868,1345348746,1345568633, - 1345788528,1346008433,1346228346,1346448269,1346668200,1346888141,1347108090,1347328049,1347548016,1347767993, - 1347987978,1348207972,1348427976,1348647988,1348868009,1349088040,1349308079,1349528127,1349748184,1349968250, - 1350188326,1350408410,1350628503,1350848605,1351068716,1351288836,1351508965,1351729102,1351949249,1352169405, - 1352389570,1352609744,1352829926,1353050118,1353270318,1353490528,1353710747,1353930974,1354151210,1354371456, - 1354591710,1354811973,1355032246,1355252527,1355472817,1355693116,1355913424, -}; - -static real aa_cs[8] = -{ - 14386344,14793176,15932125,16497281,16702017,16763133,16775525,16777101 -}; - -static real aa_ca[8] = -{ - -8631806,-7914349,-5257601,-3051997,-1586692,-687288,-238212,-62075 -}; - -static real win[4][36] = -{ - { - 541609,1798624,3379171,5462936,8388608,12881122,20824265,39123649,129925287,-141788570,-50986933,-32687548, - -24744405,-20251891,-17326219,-15242454,-13661907,-12404893,-11366990,-10483150,-9710514,-9019459,-8388608,-7801881, - -7246655,-6712557,-6190623,-5672661,-5150726,-4616628,-4061402,-3474675,-2843824,-2152769,-1380133,-496293 - }, - { - 541609,1798624,3379171,5462936,8388608,12881122,20824265,39123649,129925287,-141788570,-50986933,-32687548, - -24744405,-20251891,-17326219,-15242454,-13661907,-12404893,-11377819,-10573609,-9946281,-9457165,-9079764,-8795700, - -8518771,-7816938,-6661470,-5111526,-3237882,-1121518, - }, - { - 1798624,8388608,39123649,-50986933,-20251891,-13661907,-10483150,-8388608,-6712557,-5150726,-3474675,-1380133, - }, - { - 0,0,0,0,0,0,5058839,24594154,117073194,-152572757,-59375541,-38425694, - -27896396,-21920489,-18167045,-15612533,-13779795,-12416710,-11366990,-10483150,-9710514,-9019459,-8388608,-7801881, - -7246655,-6712557,-6190623,-5672661,-5150726,-4616628,-4061402,-3474675,-2843824,-2152769,-1380133,-496293 - } -}; - -const real COS9[9] = -{ - 16777216,16522332,15765426,14529495,12852093,10784187,8388608,5738146,2913333 -}; - -static const real COS6_1 = 14529495; - -static const real COS6_2 = 8388608; - -const real tfcos36[9] = -{ - 8420651,8684526,9255805,10240599,11863283,14625092,19849138,32411092,96248483 -}; - -static const real tfcos12[3] = -{ - 8684526,11863283,32411092 -}; - -#ifdef NEW_DCT9 -static const real cos9[3] = -{ - 15765426,-2913333,-12852093 -}; - -static const real cos18[3] = -{ - 16522332,-5738146,-10784187 -}; -#endif - -static const real tan1_1[16] = -{ - 0,6925,11994,16384,20774,25843,32768,44762,77530,2147483647,-44762,-11994,0,6925,11994,16384 -}; - -static const real tan2_1[16] = -{ - 32768,25843,20774,16384,11994,6925,0,-11994,-44762,2147483647,77530,44762,32768,25843,20774,16384 -}; - -static const real tan1_2[16] = -{ - 0,9793,16962,23170,29379,36548,46341,63303,109644,2147483647,-63303,-16962,0,9793,16962,23170 -}; - -static real tan2_2[16] = -{ - 46341,36548,29379,23170,16962,9793,0,-16962,-63303,2147483647,109644,63303,46341,36548,29379,23170 -}; - -static const real pow1_1[2][16] = -{ - {32768,27554,32768,23170,32768,19484,32768,16384,32768,13777,32768,11585,32768,9742,32768,8192}, - {32768,23170,32768,16384,32768,11585,32768,8192,32768,5793,32768,4096,32768,2896,32768,2048} -}; - -static const real pow2_1[2][16] = -{ - {32768,32768,27554,32768,23170,32768,19484,32768,16384,32768,13777,32768,11585,32768,9742,32768}, - {32768,32768,23170,32768,16384,32768,11585,32768,8192,32768,5793,32768,4096,32768,2896,32768} -}; - -static const real pow1_2[2][16] = -{ - {46341,38968,46341,32768,46341,27554,46341,23170,46341,19484,46341,16384,46341,13777,46341,11585}, - {46341,32768,46341,23170,46341,16384,46341,11585,46341,8192,46341,5793,46341,4096,46341,2896} -}; - -static const real pow2_2[2][16] = -{ - {46341,46341,38968,46341,32768,46341,27554,46341,23170,46341,19484,46341,16384,46341,13777,46341}, - {46341,46341,32768,46341,23170,46341,16384,46341,11585,46341,8192,46341,5793,46341,4096,46341} -}; - -static const real gainpow2[256+118+4] = -{ - 1518500250,1276901417,1073741824,1805811301,1518500250,1276901417,1073741824,1805811301,1518500250,1276901417, - 1073741824,1805811301,1518500250,1276901417,1073741824,1805811301,1518500250,1276901417,1073741824,1805811301, - 1518500250,1276901417,1073741824,1805811301,1518500250,1276901417,1073741824,1805811301,1518500250,1276901417, - 1073741824,1805811301,1518500250,1276901417,1073741824,1805811301,1518500250,1276901417,1073741824,1805811301, - 1518500250,1276901417,1073741824,1805811301,1518500250,1276901417,1073741824,1805811301,1518500250,1276901417, - 1073741824,1805811301,1518500250,1276901417,1073741824,1805811301,1518500250,1276901417,1073741824,1805811301, - 1518500250,1276901417,1073741824,902905651,759250125,638450708,536870912,451452825,379625062,319225354, - 268435456,225726413,189812531,159612677,134217728,112863206,94906266,79806339,67108864,56431603, - 47453133,39903169,33554432,28215802,23726566,19951585,16777216,14107901,11863283,9975792, - 8388608,7053950,5931642,4987896,4194304,3526975,2965821,2493948,2097152,1763488, - 1482910,1246974,1048576,881744,741455,623487,524288,440872,370728,311744, - 262144,220436,185364,155872,131072,110218,92682,77936,65536,55109, - 46341,38968,32768,27554,23170,19484,16384,13777,11585,9742, - 8192,6889,5793,4871,4096,3444,2896,2435,2048,1722, - 1448,1218,1024,861,724,609,512,431,362,304, - 256,215,181,152,128,108,91,76,64,54, - 45,38,32,27,23,19,16,13,11,10, - 8,7,6,5,4,3,3,2,2,2, - 1,1,1,1,1,1,1, -}; - -#else -static real ispow[8207]; -static real aa_ca[8],aa_cs[8]; -static real win[4][36]; -static real win1[4][36]; -real COS9[9]; /* dct36_3dnow wants to use that */ -static real COS6_1,COS6_2; -real tfcos36[9]; /* dct36_3dnow wants to use that */ -static real tfcos12[3]; -#ifdef NEW_DCT9 -static real cos9[3],cos18[3]; -static real tan1_1[16],tan2_1[16],tan1_2[16],tan2_2[16]; -static real pow1_1[2][16],pow2_1[2][16],pow1_2[2][16],pow2_2[2][16]; -#endif -#endif - -static real win1[4][36]; - -static const char gainpow2_scale[256+118+4+1] = -{ - 19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27, - 27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,34, - 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, - 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, - 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, - 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, - 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, - 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, - 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, - 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, - 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, - 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,0 -}; - -#endif diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/layer1.c audacious-plugins-3.2/src/mpg123/libmpg123/layer1.c --- audacious-plugins-2.4.4/src/mpg123/libmpg123/layer1.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/layer1.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,155 +0,0 @@ -/* - layer1.c: the layer 1 decoder - - copyright 1995-2009 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp - - may have a few bugs after last optimization ... -*/ - -#include "mpg123lib_intern.h" -#include "getbits.h" - -void I_step_one(unsigned int balloc[], unsigned int scale_index[2][SBLIMIT],mpg123_handle *fr) -{ - unsigned int *ba=balloc; - unsigned int *sca = (unsigned int *) scale_index; - - if(fr->stereo == 2) - { - int i; - int jsbound = fr->jsbound; - for(i=0;istereo == 2) - { - int jsbound = fr->jsbound; - register real *f0 = fraction[0]; - register real *f1 = fraction[1]; - ba = balloc; - for(sample=smpb,i=0;imuls[n+1][*sca++]); - else *f0++ = DOUBLE_TO_REAL(0.0); - - if((n=*ba++)) - *f1++ = REAL_MUL_SCALE_LAYER12(DOUBLE_TO_REAL_15( ((-1)<muls[n+1][*sca++]); - else *f1++ = DOUBLE_TO_REAL(0.0); - } - for(i=jsbound;imuls[n+1][*sca++]); - *f1++ = REAL_MUL_SCALE_LAYER12(samp, fr->muls[n+1][*sca++]); - } - else *f0++ = *f1++ = DOUBLE_TO_REAL(0.0); - } - for(i=fr->down_sample_sblimit;i<32;i++) - fraction[0][i] = fraction[1][i] = 0.0; - } - else - { - register real *f0 = fraction[0]; - ba = balloc; - for(sample=smpb,i=0;imuls[n+1][*sca++]); - else *f0++ = DOUBLE_TO_REAL(0.0); - } - for(i=fr->down_sample_sblimit;i<32;i++) - fraction[0][i] = DOUBLE_TO_REAL(0.0); - } -} - -int do_layer1(mpg123_handle *fr) -{ - int clip=0; - int i,stereo = fr->stereo; - unsigned int balloc[2*SBLIMIT]; - unsigned int scale_index[2][SBLIMIT]; - real (*fraction)[SBLIMIT] = fr->layer1.fraction; /* fraction[2][SBLIMIT] */ - int single = fr->single; - - fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ? (fr->mode_ext<<2)+4 : 32; - - if(stereo == 1 || single == SINGLE_MIX) /* I don't see mixing handled here */ - single = SINGLE_LEFT; - - I_step_one(balloc,scale_index,fr); - - for(i=0;isynth_mono)(fraction[single], fr); - else - clip += (fr->synth_stereo)(fraction[0], fraction[1], fr); - } - - return clip; -} - - diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/layer2.c audacious-plugins-3.2/src/mpg123/libmpg123/layer2.c --- audacious-plugins-2.4.4/src/mpg123/libmpg123/layer2.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/layer2.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,371 +0,0 @@ -/* - layer2.c: the layer 2 decoder, root of mpg123 - - copyright 1994-2009 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp - - mpg123 started as mp2 decoder a long time ago... - part of this file is required for layer 1, too. -*/ - - -#include "mpg123lib_intern.h" -#ifndef NO_LAYER2 -#include "l2tables.h" -#endif -#include "getbits.h" - -#ifndef NO_LAYER12 /* Stuff needed for layer I and II. */ - -static int grp_3tab[32 * 3] = { 0, }; /* used: 27 */ -static int grp_5tab[128 * 3] = { 0, }; /* used: 125 */ -static int grp_9tab[1024 * 3] = { 0, }; /* used: 729 */ - -#if defined(REAL_IS_FIXED) && defined(PRECALC_TABLES) -#include "l12_integer_tables.h" -#else -static const double mulmul[27] = -{ - 0.0 , -2.0/3.0 , 2.0/3.0 , - 2.0/7.0 , 2.0/15.0 , 2.0/31.0, 2.0/63.0 , 2.0/127.0 , 2.0/255.0 , - 2.0/511.0 , 2.0/1023.0 , 2.0/2047.0 , 2.0/4095.0 , 2.0/8191.0 , - 2.0/16383.0 , 2.0/32767.0 , 2.0/65535.0 , - -4.0/5.0 , -2.0/5.0 , 2.0/5.0, 4.0/5.0 , - -8.0/9.0 , -4.0/9.0 , -2.0/9.0 , 2.0/9.0 , 4.0/9.0 , 8.0/9.0 -}; -#endif - -void init_layer12(void) -{ - const int base[3][9] = - { - { 1 , 0, 2 , } , - { 17, 18, 0 , 19, 20 , } , - { 21, 1, 22, 23, 0, 24, 25, 2, 26 } - }; - int i,j,k,l,len; - const int tablen[3] = { 3 , 5 , 9 }; - int *itable; - int *tables[3] = { grp_3tab , grp_5tab , grp_9tab }; - - for(i=0;i<3;i++) - { - itable = tables[i]; - len = tablen[i]; - for(j=0;jmuls[k], k); - *table++ = 0.0; - } -} - -real* init_layer12_table(mpg123_handle *fr, real *table, int m) -{ -#if defined(REAL_IS_FIXED) && defined(PRECALC_TABLES) - int i; - for(i=0;i<63;i++) - *table++ = layer12_table[m][i]; -#else - int i,j; - for(j=3,i=0;i<63;i++,j--) - *table++ = DOUBLE_TO_REAL_SCALE_LAYER12(mulmul[m] * pow(2.0,(double) j / 3.0)); -#endif - - return table; -} - -#ifdef OPT_MMXORSSE -real* init_layer12_table_mmx(mpg123_handle *fr, real *table, int m) -{ - int i,j; - if(!fr->p.down_sample) - { - for(j=3,i=0;i<63;i++,j--) - *table++ = DOUBLE_TO_REAL(16384 * mulmul[m] * pow(2.0,(double) j / 3.0)); - } - else - { - for(j=3,i=0;i<63;i++,j--) - *table++ = DOUBLE_TO_REAL(mulmul[m] * pow(2.0,(double) j / 3.0)); - } - return table; -} -#endif - -#endif /* NO_LAYER12 */ - -/* The rest is the actual decoding of layer II data. */ - -#ifndef NO_LAYER2 - -void II_step_one(unsigned int *bit_alloc,int *scale,mpg123_handle *fr) -{ - int stereo = fr->stereo-1; - int sblimit = fr->II_sblimit; - int jsbound = fr->jsbound; - int sblimit2 = fr->II_sblimit<alloc; - int i; - unsigned int scfsi_buf[64]; - unsigned int *scfsi,*bita; - int sc,step; - - bita = bit_alloc; - if(stereo) - { - for(i=jsbound;i;i--,alloc1+=(1<bits; - *bita++ = (char) getbits(fr, step); - *bita++ = (char) getbits(fr, step); - } - for(i=sblimit-jsbound;i;i--,alloc1+=(1<bits; - bita[0] = (char) getbits(fr, step); - bita[1] = bita[0]; - bita+=2; - } - bita = bit_alloc; - scfsi=scfsi_buf; - - for(i=sblimit2;i;i--) - if(*bita++) *scfsi++ = (char) getbits_fast(fr, 2); - } - else /* mono */ - { - for(i=sblimit;i;i--,alloc1+=(1<bits; - *bita++ = (char) getbits(fr, step); - } - bita = bit_alloc; - scfsi=scfsi_buf; - for(i=sblimit;i;i--) - if(*bita++) *scfsi++ = (char) getbits_fast(fr, 2); - } - - bita = bit_alloc; - scfsi=scfsi_buf; - for(i=sblimit2;i;i--) - if(*bita++) - switch(*scfsi++) - { - case 0: - *scale++ = getbits_fast(fr, 6); - *scale++ = getbits_fast(fr, 6); - *scale++ = getbits_fast(fr, 6); - break; - case 1 : - *scale++ = sc = getbits_fast(fr, 6); - *scale++ = sc; - *scale++ = getbits_fast(fr, 6); - break; - case 2: - *scale++ = sc = getbits_fast(fr, 6); - *scale++ = sc; - *scale++ = sc; - break; - default: /* case 3 */ - *scale++ = getbits_fast(fr, 6); - *scale++ = sc = getbits_fast(fr, 6); - *scale++ = sc; - break; - } -} - - -void II_step_two(unsigned int *bit_alloc,real fraction[2][4][SBLIMIT],int *scale,mpg123_handle *fr,int x1) -{ - int i,j,k,ba; - int stereo = fr->stereo; - int sblimit = fr->II_sblimit; - int jsbound = fr->jsbound; - const struct al_table *alloc2,*alloc1 = fr->alloc; - unsigned int *bita=bit_alloc; - int d1,step; - - for(i=0;ibits; - for(j=0;jbits; - if( (d1=alloc2->d) < 0) - { - real cm=fr->muls[k][scale[x1]]; - fraction[j][0][i] = REAL_MUL_SCALE_LAYER12(DOUBLE_TO_REAL_15((int)getbits(fr, k) + d1), cm); - fraction[j][1][i] = REAL_MUL_SCALE_LAYER12(DOUBLE_TO_REAL_15((int)getbits(fr, k) + d1), cm); - fraction[j][2][i] = REAL_MUL_SCALE_LAYER12(DOUBLE_TO_REAL_15((int)getbits(fr, k) + d1), cm); - } - else - { - const int *table[] = { 0,0,0,grp_3tab,0,grp_5tab,0,0,0,grp_9tab }; - unsigned int idx,*tab,m=scale[x1]; - idx = (unsigned int) getbits(fr, k); - tab = (unsigned int *) (table[d1] + idx + idx + idx); - fraction[j][0][i] = REAL_SCALE_LAYER12(fr->muls[*tab++][m]); - fraction[j][1][i] = REAL_SCALE_LAYER12(fr->muls[*tab++][m]); - fraction[j][2][i] = REAL_SCALE_LAYER12(fr->muls[*tab][m]); - } - scale+=3; - } - else - fraction[j][0][i] = fraction[j][1][i] = fraction[j][2][i] = DOUBLE_TO_REAL(0.0); - } - } - - for(i=jsbound;ibits; - bita++; /* channel 1 and channel 2 bitalloc are the same */ - if( (ba=*bita++) ) - { - k=(alloc2 = alloc1+ba)->bits; - if( (d1=alloc2->d) < 0) - { - real cm; - cm=fr->muls[k][scale[x1+3]]; - fraction[0][0][i] = DOUBLE_TO_REAL_15((int)getbits(fr, k) + d1); - fraction[0][1][i] = DOUBLE_TO_REAL_15((int)getbits(fr, k) + d1); - fraction[0][2][i] = DOUBLE_TO_REAL_15((int)getbits(fr, k) + d1); - fraction[1][0][i] = REAL_MUL_SCALE_LAYER12(fraction[0][0][i], cm); - fraction[1][1][i] = REAL_MUL_SCALE_LAYER12(fraction[0][1][i], cm); - fraction[1][2][i] = REAL_MUL_SCALE_LAYER12(fraction[0][2][i], cm); - cm=fr->muls[k][scale[x1]]; - fraction[0][0][i] = REAL_MUL_SCALE_LAYER12(fraction[0][0][i], cm); - fraction[0][1][i] = REAL_MUL_SCALE_LAYER12(fraction[0][1][i], cm); - fraction[0][2][i] = REAL_MUL_SCALE_LAYER12(fraction[0][2][i], cm); - } - else - { - const int *table[] = { 0,0,0,grp_3tab,0,grp_5tab,0,0,0,grp_9tab }; - unsigned int idx,*tab,m1,m2; - m1 = scale[x1]; m2 = scale[x1+3]; - idx = (unsigned int) getbits(fr, k); - tab = (unsigned int *) (table[d1] + idx + idx + idx); - fraction[0][0][i] = REAL_SCALE_LAYER12(fr->muls[*tab][m1]); fraction[1][0][i] = REAL_SCALE_LAYER12(fr->muls[*tab++][m2]); - fraction[0][1][i] = REAL_SCALE_LAYER12(fr->muls[*tab][m1]); fraction[1][1][i] = REAL_SCALE_LAYER12(fr->muls[*tab++][m2]); - fraction[0][2][i] = REAL_SCALE_LAYER12(fr->muls[*tab][m1]); fraction[1][2][i] = REAL_SCALE_LAYER12(fr->muls[*tab][m2]); - } - scale+=6; - } - else - { - fraction[0][0][i] = fraction[0][1][i] = fraction[0][2][i] = - fraction[1][0][i] = fraction[1][1][i] = fraction[1][2][i] = DOUBLE_TO_REAL(0.0); - } -/* - Historic comment... - should we use individual scalefac for channel 2 or - is the current way the right one , where we just copy channel 1 to - channel 2 ?? - The current 'strange' thing is, that we throw away the scalefac - values for the second channel ...!! - -> changed .. now we use the scalefac values of channel one !! -*/ - } - - if(sblimit > (fr->down_sample_sblimit) ) - sblimit = fr->down_sample_sblimit; - - for(i=sblimit;isampling_frequency >= 3) /* Or equivalent: (fr->lsf == 1) */ - table = 4; - else - table = translate[fr->sampling_frequency][2-fr->stereo][fr->bitrate_index]; - - sblim = sblims[table]; - fr->alloc = tables[table]; - fr->II_sblimit = sblim; -} - - -int do_layer2(mpg123_handle *fr) -{ - int clip=0; - int i,j; - int stereo = fr->stereo; - /* pick_table clears unused subbands */ - /* replacement for real fraction[2][4][SBLIMIT], needs alignment. */ - real (*fraction)[4][SBLIMIT] = fr->layer2.fraction; - unsigned int bit_alloc[64]; - int scale[192]; - int single = fr->single; - - II_select_table(fr); - fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ? (fr->mode_ext<<2)+4 : fr->II_sblimit; - - if(fr->jsbound > fr->II_sblimit) - { - fprintf(stderr, "Truncating stereo boundary to sideband limit.\n"); - fr->jsbound=fr->II_sblimit; - } - - /* TODO: What happens with mono mixing, actually? */ - if(stereo == 1 || single == SINGLE_MIX) /* also, mix not really handled */ - single = SINGLE_LEFT; - - II_step_one(bit_alloc, scale, fr); - - for(i=0;i>2); - for(j=0;j<3;j++) - { - if(single != SINGLE_STEREO) - clip += (fr->synth_mono)(fraction[single][j], fr); - else - clip += (fr->synth_stereo)(fraction[0][j], fraction[1][j], fr); - } - } - - return clip; -} - -#endif /* NO_LAYER2 */ diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/layer3.c audacious-plugins-3.2/src/mpg123/libmpg123/layer3.c --- audacious-plugins-2.4.4/src/mpg123/libmpg123/layer3.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/layer3.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,2058 +0,0 @@ -/* - layer3.c: the layer 3 decoder - - copyright 1995-2009 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - initially written by Michael Hipp - - Dear visitor: - If you feel you don't understand fully the works of this file, your feeling might be correct. - - Optimize-TODO: put short bands into the band-field without the stride of 3 reals - Length-optimze: unify long and short band code where it is possible - - The int-vs-pointer situation has to be cleaned up. -*/ - -#include "mpg123lib_intern.h" -#include "huffman.h" -#include "getbits.h" -#include "debug.h" - -/* define CUT_SFB21 if you want to cut-off the frequency above 16kHz */ -#if 0 -#define CUT_SFB21 -#endif - -#ifdef REAL_IS_FIXED -#define NEW_DCT9 -#include "l3_integer_tables.h" -#else -/* static one-time calculated tables... or so */ -static real ispow[8207]; -static real aa_ca[8],aa_cs[8]; -static real win[4][36]; -static real win1[4][36]; -real COS9[9]; /* dct36_3dnow wants to use that */ -static real COS6_1,COS6_2; -real tfcos36[9]; /* dct36_3dnow wants to use that */ -static real tfcos12[3]; -#define NEW_DCT9 -#ifdef NEW_DCT9 -static real cos9[3],cos18[3]; -static real tan1_1[16],tan2_1[16],tan1_2[16],tan2_2[16]; -static real pow1_1[2][16],pow2_1[2][16],pow1_2[2][16],pow2_2[2][16]; -#endif -#endif - -/* Decoder state data, living on the stack of do_layer3. */ - -struct gr_info_s -{ - int scfsi; - unsigned part2_3_length; - unsigned big_values; - unsigned scalefac_compress; - unsigned block_type; - unsigned mixed_block_flag; - unsigned table_select[3]; - /* Making those two signed int as workaround for open64/pathscale/sun compilers, and also for consistency, since they're worked on together with other signed variables. */ - int maxband[3]; - int maxbandl; - unsigned maxb; - unsigned region1start; - unsigned region2start; - unsigned preflag; - unsigned scalefac_scale; - unsigned count1table_select; - real *full_gain[3]; - real *pow2gain; -}; - -struct III_sideinfo -{ - unsigned main_data_begin; - unsigned private_bits; - /* Hm, funny... struct inside struct... */ - struct { struct gr_info_s gr[2]; } ch[2]; -}; - -struct bandInfoStruct -{ - int longIdx[23]; - int longDiff[22]; - int shortIdx[14]; - int shortDiff[13]; -}; - -/* Techy details about our friendly MPEG data. Fairly constant over the years;-) */ -const struct bandInfoStruct bandInfo[9] = -{ - { /* MPEG 1.0 */ - {0,4,8,12,16,20,24,30,36,44,52,62,74, 90,110,134,162,196,238,288,342,418,576}, - {4,4,4,4,4,4,6,6,8, 8,10,12,16,20,24,28,34,42,50,54, 76,158}, - {0,4*3,8*3,12*3,16*3,22*3,30*3,40*3,52*3,66*3, 84*3,106*3,136*3,192*3}, - {4,4,4,4,6,8,10,12,14,18,22,30,56} - }, - { - {0,4,8,12,16,20,24,30,36,42,50,60,72, 88,106,128,156,190,230,276,330,384,576}, - {4,4,4,4,4,4,6,6,6, 8,10,12,16,18,22,28,34,40,46,54, 54,192}, - {0,4*3,8*3,12*3,16*3,22*3,28*3,38*3,50*3,64*3, 80*3,100*3,126*3,192*3}, - {4,4,4,4,6,6,10,12,14,16,20,26,66} - }, - { - {0,4,8,12,16,20,24,30,36,44,54,66,82,102,126,156,194,240,296,364,448,550,576}, - {4,4,4,4,4,4,6,6,8,10,12,16,20,24,30,38,46,56,68,84,102, 26}, - {0,4*3,8*3,12*3,16*3,22*3,30*3,42*3,58*3,78*3,104*3,138*3,180*3,192*3}, - {4,4,4,4,6,8,12,16,20,26,34,42,12} - }, - { /* MPEG 2.0 */ - {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, - {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54 } , - {0,4*3,8*3,12*3,18*3,24*3,32*3,42*3,56*3,74*3,100*3,132*3,174*3,192*3} , - {4,4,4,6,6,8,10,14,18,26,32,42,18 } - }, - { /* Twiddling 3 values here (not just 330->332!) fixed bug 1895025. */ - {0,6,12,18,24,30,36,44,54,66,80,96,114,136,162,194,232,278,332,394,464,540,576}, - {6,6,6,6,6,6,8,10,12,14,16,18,22,26,32,38,46,54,62,70,76,36 }, - {0,4*3,8*3,12*3,18*3,26*3,36*3,48*3,62*3,80*3,104*3,136*3,180*3,192*3}, - {4,4,4,6,8,10,12,14,18,24,32,44,12 } - }, - { - {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, - {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54 }, - {0,4*3,8*3,12*3,18*3,26*3,36*3,48*3,62*3,80*3,104*3,134*3,174*3,192*3}, - {4,4,4,6,8,10,12,14,18,24,30,40,18 } - }, - { /* MPEG 2.5 */ - {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, - {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54}, - {0,12,24,36,54,78,108,144,186,240,312,402,522,576}, - {4,4,4,6,8,10,12,14,18,24,30,40,18} - }, - { - {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, - {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54}, - {0,12,24,36,54,78,108,144,186,240,312,402,522,576}, - {4,4,4,6,8,10,12,14,18,24,30,40,18} - }, - { - {0,12,24,36,48,60,72,88,108,132,160,192,232,280,336,400,476,566,568,570,572,574,576}, - {12,12,12,12,12,12,16,20,24,28,32,40,48,56,64,76,90,2,2,2,2,2}, - {0, 24, 48, 72,108,156,216,288,372,480,486,492,498,576}, - {8,8,8,12,16,20,24,28,36,2,2,2,26} - } -}; - -static int mapbuf0[9][152]; -static int mapbuf1[9][156]; -static int mapbuf2[9][44]; -static int *map[9][3]; -static int *mapend[9][3]; - -static unsigned int n_slen2[512]; /* MPEG 2.0 slen for 'normal' mode */ -static unsigned int i_slen2[256]; /* MPEG 2.0 slen for intensity stereo */ - -/* Some helpers used in init_layer3 */ - -#ifdef OPT_MMXORSSE -real init_layer3_gainpow2_mmx(mpg123_handle *fr, int i) -{ - if(!fr->p.down_sample) return DOUBLE_TO_REAL(16384.0 * pow((double)2.0,-0.25 * (double) (i+210) )); - else return DOUBLE_TO_REAL(pow((double)2.0,-0.25 * (double) (i+210))); -} -#endif - -real init_layer3_gainpow2(mpg123_handle *fr, int i) -{ -#if defined(REAL_IS_FIXED) && defined(PRECALC_TABLES) - return gainpow2[i+256]; -#else - return DOUBLE_TO_REAL_SCALE_LAYER3(pow((double)2.0,-0.25 * (double) (i+210)),i+256); -#endif -} - - -/* init tables for layer-3 ... specific with the downsampling... */ -void init_layer3(void) -{ - int i,j,k,l; - -#if !defined(REAL_IS_FIXED) || !defined(PRECALC_TABLES) - for(i=0;i<8207;i++) - ispow[i] = DOUBLE_TO_REAL_POW43(pow((double)i,(double)4.0/3.0)); - - for(i=0;i<8;i++) - { - const double Ci[8] = {-0.6,-0.535,-0.33,-0.185,-0.095,-0.041,-0.0142,-0.0037}; - double sq = sqrt(1.0+Ci[i]*Ci[i]); - aa_cs[i] = DOUBLE_TO_REAL(1.0/sq); - aa_ca[i] = DOUBLE_TO_REAL(Ci[i]/sq); - } - - for(i=0;i<18;i++) - { - win[0][i] = win[1][i] = - DOUBLE_TO_REAL( 0.5*sin(M_PI/72.0 * (double)(2*(i+0) +1)) / cos(M_PI * (double)(2*(i+0) +19) / 72.0) ); - win[0][i+18] = win[3][i+18] = - DOUBLE_TO_REAL( 0.5*sin(M_PI/72.0 * (double)(2*(i+18)+1)) / cos(M_PI * (double)(2*(i+18)+19) / 72.0) ); - } - for(i=0;i<6;i++) - { - win[1][i+18] = DOUBLE_TO_REAL(0.5 / cos ( M_PI * (double) (2*(i+18)+19) / 72.0 )); - win[3][i+12] = DOUBLE_TO_REAL(0.5 / cos ( M_PI * (double) (2*(i+12)+19) / 72.0 )); - win[1][i+24] = DOUBLE_TO_REAL(0.5 * sin( M_PI / 24.0 * (double) (2*i+13) ) / cos ( M_PI * (double) (2*(i+24)+19) / 72.0 )); - win[1][i+30] = win[3][i] = DOUBLE_TO_REAL(0.0); - win[3][i+6 ] = DOUBLE_TO_REAL(0.5 * sin( M_PI / 24.0 * (double) (2*i+1 ) ) / cos ( M_PI * (double) (2*(i+6 )+19) / 72.0 )); - } - - for(i=0;i<9;i++) - COS9[i] = DOUBLE_TO_REAL(cos( M_PI / 18.0 * (double) i)); - - for(i=0;i<9;i++) - tfcos36[i] = DOUBLE_TO_REAL(0.5 / cos ( M_PI * (double) (i*2+1) / 36.0 )); - - for(i=0;i<3;i++) - tfcos12[i] = DOUBLE_TO_REAL(0.5 / cos ( M_PI * (double) (i*2+1) / 12.0 )); - - COS6_1 = DOUBLE_TO_REAL(cos( M_PI / 6.0 * (double) 1)); - COS6_2 = DOUBLE_TO_REAL(cos( M_PI / 6.0 * (double) 2)); - -#ifdef NEW_DCT9 - cos9[0] = DOUBLE_TO_REAL(cos(1.0*M_PI/9.0)); - cos9[1] = DOUBLE_TO_REAL(cos(5.0*M_PI/9.0)); - cos9[2] = DOUBLE_TO_REAL(cos(7.0*M_PI/9.0)); - cos18[0] = DOUBLE_TO_REAL(cos(1.0*M_PI/18.0)); - cos18[1] = DOUBLE_TO_REAL(cos(11.0*M_PI/18.0)); - cos18[2] = DOUBLE_TO_REAL(cos(13.0*M_PI/18.0)); -#endif - - for(i=0;i<12;i++) - { - win[2][i] = DOUBLE_TO_REAL(0.5 * sin( M_PI / 24.0 * (double) (2*i+1) ) / cos ( M_PI * (double) (2*i+7) / 24.0 )); - } - - for(i=0;i<16;i++) - { - double t = tan( (double) i * M_PI / 12.0 ); - tan1_1[i] = DOUBLE_TO_REAL_15(t / (1.0+t)); - tan2_1[i] = DOUBLE_TO_REAL_15(1.0 / (1.0 + t)); - tan1_2[i] = DOUBLE_TO_REAL_15(M_SQRT2 * t / (1.0+t)); - tan2_2[i] = DOUBLE_TO_REAL_15(M_SQRT2 / (1.0 + t)); - - for(j=0;j<2;j++) - { - double base = pow(2.0,-0.25*(j+1.0)); - double p1=1.0,p2=1.0; - if(i > 0) - { - if( i & 1 ) p1 = pow(base,(i+1.0)*0.5); - else p2 = pow(base,i*0.5); - } - pow1_1[j][i] = DOUBLE_TO_REAL_15(p1); - pow2_1[j][i] = DOUBLE_TO_REAL_15(p2); - pow1_2[j][i] = DOUBLE_TO_REAL_15(M_SQRT2 * p1); - pow2_2[j][i] = DOUBLE_TO_REAL_15(M_SQRT2 * p2); - } - } -#endif - - for(j=0;j<4;j++) - { - const int len[4] = { 36,36,12,36 }; - for(i=0;ilongDiff; - for(i=0,cb = 0; cb < 8 ; cb++,i+=*bdf++) - { - *mp++ = (*bdf) >> 1; - *mp++ = i; - *mp++ = 3; - *mp++ = cb; - } - bdf = bi->shortDiff+3; - for(cb=3;cb<13;cb++) - { - int l = (*bdf++) >> 1; - for(lwin=0;lwin<3;lwin++) - { - *mp++ = l; - *mp++ = i + lwin; - *mp++ = lwin; - *mp++ = cb; - } - i += 6*l; - } - mapend[j][0] = mp; - - mp = map[j][1] = mapbuf1[j]; - bdf = bi->shortDiff+0; - for(i=0,cb=0;cb<13;cb++) - { - int l = (*bdf++) >> 1; - for(lwin=0;lwin<3;lwin++) - { - *mp++ = l; - *mp++ = i + lwin; - *mp++ = lwin; - *mp++ = cb; - } - i += 6*l; - } - mapend[j][1] = mp; - - mp = map[j][2] = mapbuf2[j]; - bdf = bi->longDiff; - for(cb = 0; cb < 22 ; cb++) - { - *mp++ = (*bdf++) >> 1; - *mp++ = cb; - } - mapend[j][2] = mp; - } - - /* Now for some serious loopings! */ - for(i=0;i<5;i++) - for(j=0;j<6;j++) - for(k=0;k<6;k++) - { - int n = k + j * 6 + i * 36; - i_slen2[n] = i|(j<<3)|(k<<6)|(3<<12); - } - for(i=0;i<4;i++) - for(j=0;j<4;j++) - for(k=0;k<4;k++) - { - int n = k + j * 4 + i * 16; - i_slen2[n+180] = i|(j<<3)|(k<<6)|(4<<12); - } - for(i=0;i<4;i++) - for(j=0;j<3;j++) - { - int n = j + i * 3; - i_slen2[n+244] = i|(j<<3) | (5<<12); - n_slen2[n+500] = i|(j<<3) | (2<<12) | (1<<15); - } - for(i=0;i<5;i++) - for(j=0;j<5;j++) - for(k=0;k<4;k++) - for(l=0;l<4;l++) - { - int n = l + k * 4 + j * 16 + i * 80; - n_slen2[n] = i|(j<<3)|(k<<6)|(l<<9)|(0<<12); - } - for(i=0;i<5;i++) - for(j=0;j<5;j++) - for(k=0;k<4;k++) - { - int n = k + j * 4 + i * 20; - n_slen2[n+400] = i|(j<<3)|(k<<6)|(1<<12); - } -} - - -void init_layer3_stuff(mpg123_handle *fr, real (*gainpow2)(mpg123_handle *fr, int i)) -{ - int i,j; - - for(i=-256;i<118+4;i++) fr->gainpow2[i+256] = gainpow2(fr,i); - - for(j=0;j<9;j++) - { - for(i=0;i<23;i++) - { - fr->longLimit[j][i] = (bandInfo[j].longIdx[i] - 1 + 8) / 18 + 1; - if(fr->longLimit[j][i] > (fr->down_sample_sblimit) ) - fr->longLimit[j][i] = fr->down_sample_sblimit; - } - for(i=0;i<14;i++) - { - fr->shortLimit[j][i] = (bandInfo[j].shortIdx[i] - 1) / 18 + 1; - if(fr->shortLimit[j][i] > (fr->down_sample_sblimit) ) - fr->shortLimit[j][i] = fr->down_sample_sblimit; - } - } -} - -/* - Observe! - Now come the actualy decoding routines. -*/ - -/* read additional side information (for MPEG 1 and MPEG 2) */ -static int III_get_side_info(mpg123_handle *fr, struct III_sideinfo *si,int stereo, int ms_stereo,long sfreq,int single) -{ - int ch, gr; - int powdiff = (single == SINGLE_MIX) ? 4 : 0; - - const int tabs[2][5] = { { 2,9,5,3,4 } , { 1,8,1,2,9 } }; - const int *tab = tabs[fr->lsf]; - - si->main_data_begin = getbits(fr, tab[1]); - - if(si->main_data_begin > fr->bitreservoir) - { - if(VERBOSE2) fprintf(stderr, "Note: missing %d bytes in bit reservoir for frame %li\n", (int)(si->main_data_begin - fr->bitreservoir), (long)fr->num); - - /* overwrite main_data_begin for the really available bit reservoir */ - backbits(fr, tab[1]); - if(fr->lsf == 0) - { - fr->wordpointer[0] = (unsigned char) (fr->bitreservoir >> 1); - fr->wordpointer[1] = (unsigned char) ((fr->bitreservoir & 1) << 7); - } - else fr->wordpointer[0] = (unsigned char) fr->bitreservoir; - - /* zero "side-info" data for a silence-frame - without touching audio data used as bit reservoir for following frame */ - memset(fr->wordpointer+2, 0, fr->ssize-2); - - /* reread the new bit reservoir offset */ - si->main_data_begin = getbits(fr, tab[1]); - } - - /* Keep track of the available data bytes for the bit reservoir. - Think: Substract the 2 crc bytes in parser already? */ - fr->bitreservoir = fr->bitreservoir + fr->framesize - fr->ssize - (fr->error_protection ? 2 : 0); - /* Limit the reservoir to the max for MPEG 1.0 or 2.x . */ - if(fr->bitreservoir > (unsigned int) (fr->lsf == 0 ? 511 : 255)) - fr->bitreservoir = (fr->lsf == 0 ? 511 : 255); - - /* Now back into less commented territory. It's code. It works. */ - - if (stereo == 1) - si->private_bits = getbits_fast(fr, tab[2]); - else - si->private_bits = getbits_fast(fr, tab[3]); - - if(!fr->lsf) for(ch=0; chch[ch].gr[0].scfsi = -1; - si->ch[ch].gr[1].scfsi = getbits_fast(fr, 4); - } - - for (gr=0; grch[ch].gr[gr]); - - gr_info->part2_3_length = getbits(fr, 12); - gr_info->big_values = getbits(fr, 9); - if(gr_info->big_values > 288) - { - if(NOQUIET) error("big_values too large!"); - gr_info->big_values = 288; - } - gr_info->pow2gain = fr->gainpow2+256 - getbits_fast(fr, 8) + powdiff; - if(ms_stereo) gr_info->pow2gain += 2; - - gr_info->scalefac_compress = getbits(fr, tab[4]); - - if(get1bit(fr)) - { /* window switch flag */ - int i; - gr_info->block_type = getbits_fast(fr, 2); - gr_info->mixed_block_flag = get1bit(fr); - gr_info->table_select[0] = getbits_fast(fr, 5); - gr_info->table_select[1] = getbits_fast(fr, 5); - /* - table_select[2] not needed, because there is no region2, - but to satisfy some verification tools we set it either. - */ - gr_info->table_select[2] = 0; - for(i=0;i<3;i++) - gr_info->full_gain[i] = gr_info->pow2gain + (getbits_fast(fr, 3)<<3); - - if(gr_info->block_type == 0) - { - if(NOQUIET) error("Blocktype == 0 and window-switching == 1 not allowed."); - return 1; - } - - /* region_count/start parameters are implicit in this case. */ - if( (!fr->lsf || (gr_info->block_type == 2)) && !fr->mpeg25) - { - gr_info->region1start = 36>>1; - gr_info->region2start = 576>>1; - } - else - { - if(fr->mpeg25) - { - int r0c,r1c; - if((gr_info->block_type == 2) && (!gr_info->mixed_block_flag) ) r0c = 5; - else r0c = 7; - - r1c = 20 - r0c; - gr_info->region1start = bandInfo[sfreq].longIdx[r0c+1] >> 1 ; - gr_info->region2start = bandInfo[sfreq].longIdx[r0c+1+r1c+1] >> 1; - } - else - { - gr_info->region1start = 54>>1; - gr_info->region2start = 576>>1; - } - } - } - else - { - int i,r0c,r1c; - for (i=0; i<3; i++) - gr_info->table_select[i] = getbits_fast(fr, 5); - - r0c = getbits_fast(fr, 4); - r1c = getbits_fast(fr, 3); - gr_info->region1start = bandInfo[sfreq].longIdx[r0c+1] >> 1 ; - gr_info->region2start = bandInfo[sfreq].longIdx[r0c+1+r1c+1] >> 1; - - if(r0c + r1c + 2 > 22) gr_info->region2start = 576>>1; - else gr_info->region2start = bandInfo[sfreq].longIdx[r0c+1+r1c+1] >> 1; - - gr_info->block_type = 0; - gr_info->mixed_block_flag = 0; - } - if(!fr->lsf) gr_info->preflag = get1bit(fr); - - gr_info->scalefac_scale = get1bit(fr); - gr_info->count1table_select = get1bit(fr); - } - return 0; -} - - -/* read scalefactors */ -static int III_get_scale_factors_1(mpg123_handle *fr, int *scf,struct gr_info_s *gr_info,int ch,int gr) -{ - const unsigned char slen[2][16] = - { - {0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4}, - {0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3} - }; - int numbits; - int num0 = slen[0][gr_info->scalefac_compress]; - int num1 = slen[1][gr_info->scalefac_compress]; - - if(gr_info->block_type == 2) - { - int i=18; - numbits = (num0 + num1) * 18; - - if(gr_info->mixed_block_flag) - { - for (i=8;i;i--) - *scf++ = getbits_fast(fr, num0); - - i = 9; - numbits -= num0; /* num0 * 17 + num1 * 18 */ - } - - for(;i;i--) *scf++ = getbits_fast(fr, num0); - - for(i = 18; i; i--) *scf++ = getbits_fast(fr, num1); - - *scf++ = 0; *scf++ = 0; *scf++ = 0; /* short[13][0..2] = 0 */ - } - else - { - int i; - int scfsi = gr_info->scfsi; - - if(scfsi < 0) - { /* scfsi < 0 => granule == 0 */ - for(i=11;i;i--) *scf++ = getbits_fast(fr, num0); - - for(i=10;i;i--) *scf++ = getbits_fast(fr, num1); - - numbits = (num0 + num1) * 10 + num0; - *scf++ = 0; - } - else - { - numbits = 0; - if(!(scfsi & 0x8)) - { - for (i=0;i<6;i++) *scf++ = getbits_fast(fr, num0); - - numbits += num0 * 6; - } - else scf += 6; - - if(!(scfsi & 0x4)) - { - for (i=0;i<5;i++) *scf++ = getbits_fast(fr, num0); - - numbits += num0 * 5; - } - else scf += 5; - - if(!(scfsi & 0x2)) - { - for(i=0;i<5;i++) *scf++ = getbits_fast(fr, num1); - - numbits += num1 * 5; - } - else scf += 5; - - if(!(scfsi & 0x1)) - { - for (i=0;i<5;i++) *scf++ = getbits_fast(fr, num1); - - numbits += num1 * 5; - } - else scf += 5; - - *scf++ = 0; /* no l[21] in original sources */ - } - } - return numbits; -} - - -static int III_get_scale_factors_2(mpg123_handle *fr, int *scf,struct gr_info_s *gr_info,int i_stereo) -{ - const unsigned char *pnt; - int i,j,n=0,numbits=0; - unsigned int slen; - - const unsigned char stab[3][6][4] = - { - { - { 6, 5, 5,5 } , { 6, 5, 7,3 } , { 11,10,0,0}, - { 7, 7, 7,0 } , { 6, 6, 6,3 } , { 8, 8,5,0} - }, - { - { 9, 9, 9,9 } , { 9, 9,12,6 } , { 18,18,0,0}, - {12,12,12,0 } , {12, 9, 9,6 } , { 15,12,9,0} - }, - { - { 6, 9, 9,9 } , { 6, 9,12,6 } , { 15,18,0,0}, - { 6,15,12,0 } , { 6,12, 9,6 } , { 6,18,9,0} - } - }; - - if(i_stereo) /* i_stereo AND second channel -> do_layer3() checks this */ - slen = i_slen2[gr_info->scalefac_compress>>1]; - else - slen = n_slen2[gr_info->scalefac_compress]; - - gr_info->preflag = (slen>>15) & 0x1; - - n = 0; - if( gr_info->block_type == 2 ) - { - n++; - if(gr_info->mixed_block_flag) n++; - } - - pnt = stab[n][(slen>>12)&0x7]; - - for(i=0;i<4;i++) - { - int num = slen & 0x7; - slen >>= 3; - if(num) - { - for(j=0;j<(int)(pnt[i]);j++) *scf++ = getbits_fast(fr, num); - - numbits += pnt[i] * num; - } - else - for(j=0;j<(int)(pnt[i]);j++) *scf++ = 0; - } - - n = (n << 1) + 1; - for(i=0;iscalefac_scale; - real *xrpnt = (real *) xr; - int l[3],l3; - int part2remain = gr_info->part2_3_length - part2bits; - int *me; -#ifdef REAL_IS_FIXED - int gainpow2_scale_idx = 378; -#endif - - /* mhipp tree has this split up a bit... */ - int num=getbitoffset(fr); - long mask; - /* We must split this, because for num==0 the shift is undefined if you do it in one step. */ - mask = ((unsigned long) getbits(fr, num))<big_values; - int region1 = gr_info->region1start; - int region2 = gr_info->region2start; - if(region1 > region2) - { - /* - That's not optimal: it fixes a segfault with fuzzed data, but also apparently triggers where it shouldn't, see bug 1641196. - The benefit of not crashing / having this security risk is bigger than these few frames of a lame-3.70 file that aren't audible anyway. - But still, I want to know if indeed this check or the old lame is at fault. - */ - if(NOQUIET) error("You got some really nasty file there... region1>region2!"); - return 1; - } - l3 = ((576>>1)-bv)>>1; - - /* we may lose the 'odd' bit here !! check this later again */ - if(bv <= region1) - { - l[0] = bv; - l[1] = 0; - l[2] = 0; - } - else - { - l[0] = region1; - if(bv <= region2) - { - l[1] = bv - l[0]; - l[2] = 0; - } - else - { - l[1] = region2 - l[0]; - l[2] = bv - region2; - } - } - } - - if(gr_info->block_type == 2) - { - /* decoding with short or mixed mode BandIndex table */ - int i,max[4]; - int step=0,lwin=3,cb=0; - register real v = 0.0; - register int *m,mc; - - if(gr_info->mixed_block_flag) - { - max[3] = -1; - max[0] = max[1] = max[2] = 2; - m = map[sfreq][0]; - me = mapend[sfreq][0]; - } - else - { - max[0] = max[1] = max[2] = max[3] = -1; - /* max[3] not really needed in this case */ - m = map[sfreq][1]; - me = mapend[sfreq][1]; - } - - mc = 0; - for(i=0;i<2;i++) - { - int lp = l[i]; - struct newhuff *h = ht+gr_info->table_select[i]; - for(;lp;lp--,mc--) - { - register int x,y; - if( (!mc) ) - { - mc = *m++; - xrpnt = ((real *) xr) + (*m++); - lwin = *m++; - cb = *m++; - if(lwin == 3) - { -#ifdef REAL_IS_FIXED - gainpow2_scale_idx = (int)(gr_info->pow2gain + (*scf << shift) - fr->gainpow2); -#endif - v = gr_info->pow2gain[(*scf++) << shift]; - step = 1; - } - else - { -#ifdef REAL_IS_FIXED - gainpow2_scale_idx = (int)(gr_info->full_gain[lwin] + (*scf << shift) - fr->gainpow2); -#endif - v = gr_info->full_gain[lwin][(*scf++) << shift]; - step = 3; - } - } - { - register short *val = h->table; - REFRESH_MASK; - while((y=*val++)<0) - { - if (mask < 0) val -= y; - - num--; - mask <<= 1; - } - x = y >> 4; - y &= 0xf; - } - if(x == 15 && h->linbits) - { - max[lwin] = cb; - REFRESH_MASK; - x += ((unsigned long) mask) >> (BITSHIFT+8-h->linbits); - num -= h->linbits+1; - mask <<= h->linbits; - if(mask < 0) *xrpnt = REAL_MUL_SCALE_LAYER3(-ispow[x], v, gainpow2_scale_idx); - else *xrpnt = REAL_MUL_SCALE_LAYER3( ispow[x], v, gainpow2_scale_idx); - - mask <<= 1; - } - else if(x) - { - max[lwin] = cb; - if(mask < 0) *xrpnt = REAL_MUL_SCALE_LAYER3(-ispow[x], v, gainpow2_scale_idx); - else *xrpnt = REAL_MUL_SCALE_LAYER3( ispow[x], v, gainpow2_scale_idx); - - num--; - mask <<= 1; - } - else *xrpnt = DOUBLE_TO_REAL(0.0); - - xrpnt += step; - if(y == 15 && h->linbits) - { - max[lwin] = cb; - REFRESH_MASK; - y += ((unsigned long) mask) >> (BITSHIFT+8-h->linbits); - num -= h->linbits+1; - mask <<= h->linbits; - if(mask < 0) *xrpnt = REAL_MUL_SCALE_LAYER3(-ispow[y], v, gainpow2_scale_idx); - else *xrpnt = REAL_MUL_SCALE_LAYER3( ispow[y], v, gainpow2_scale_idx); - - mask <<= 1; - } - else if(y) - { - max[lwin] = cb; - if(mask < 0) *xrpnt = REAL_MUL_SCALE_LAYER3(-ispow[y], v, gainpow2_scale_idx); - else *xrpnt = REAL_MUL_SCALE_LAYER3( ispow[y], v, gainpow2_scale_idx); - - num--; - mask <<= 1; - } - else *xrpnt = DOUBLE_TO_REAL(0.0); - - xrpnt += step; - } - } - - for(;l3 && (part2remain+num > 0);l3--) - { - struct newhuff* h; - register short* val; - register short a; - /* - This is only a humble hack to prevent a special segfault. - More insight into the real workings is still needed. - Especially why there are (valid?) files that make xrpnt exceed the array with 4 bytes without segfaulting, more seems to be really bad, though. - */ - #ifdef DEBUG - if(!(xrpnt < &xr[SBLIMIT][0])) - { - if(VERBOSE) debug2("attempted soft xrpnt overflow (%p !< %p) ?", (void*) xrpnt, (void*) &xr[SBLIMIT][0]); - } - #endif - if(!(xrpnt < &xr[SBLIMIT][0]+5)) - { - if(NOQUIET) error2("attempted xrpnt overflow (%p !< %p)", (void*) xrpnt, (void*) &xr[SBLIMIT][0]); - return 2; - } - h = htc+gr_info->count1table_select; - val = h->table; - - REFRESH_MASK; - while((a=*val++)<0) - { - if(mask < 0) val -= a; - - num--; - mask <<= 1; - } - if(part2remain+num <= 0) - { - num -= part2remain+num; - break; - } - - for(i=0;i<4;i++) - { - if(!(i & 1)) - { - if(!mc) - { - mc = *m++; - xrpnt = ((real *) xr) + (*m++); - lwin = *m++; - cb = *m++; - if(lwin == 3) - { -#ifdef REAL_IS_FIXED - gainpow2_scale_idx = (int)(gr_info->pow2gain + (*scf << shift) - fr->gainpow2); -#endif - v = gr_info->pow2gain[(*scf++) << shift]; - step = 1; - } - else - { -#ifdef REAL_IS_FIXED - gainpow2_scale_idx = (int)(gr_info->full_gain[lwin] + (*scf << shift) - fr->gainpow2); -#endif - v = gr_info->full_gain[lwin][(*scf++) << shift]; - step = 3; - } - } - mc--; - } - if( (a & (0x8>>i)) ) - { - max[lwin] = cb; - if(part2remain+num <= 0) - break; - - if(mask < 0) *xrpnt = -REAL_SCALE_LAYER3(v, gainpow2_scale_idx); - else *xrpnt = REAL_SCALE_LAYER3(v, gainpow2_scale_idx); - - num--; - mask <<= 1; - } - else *xrpnt = DOUBLE_TO_REAL(0.0); - - xrpnt += step; - } - } - - if(lwin < 3) - { /* short band? */ - while(1) - { - for(;mc > 0;mc--) - { - *xrpnt = DOUBLE_TO_REAL(0.0); xrpnt += 3; /* short band -> step=3 */ - *xrpnt = DOUBLE_TO_REAL(0.0); xrpnt += 3; - } - if(m >= me) - break; - - mc = *m++; - xrpnt = ((real *) xr) + *m++; - if(*m++ == 0) - break; /* optimize: field will be set to zero at the end of the function */ - - m++; /* cb */ - } - } - - gr_info->maxband[0] = max[0]+1; - gr_info->maxband[1] = max[1]+1; - gr_info->maxband[2] = max[2]+1; - gr_info->maxbandl = max[3]+1; - - { - int rmax = max[0] > max[1] ? max[0] : max[1]; - rmax = (rmax > max[2] ? rmax : max[2]) + 1; - gr_info->maxb = rmax ? fr->shortLimit[sfreq][rmax] : fr->longLimit[sfreq][max[3]+1]; - } - - } - else - { - /* decoding with 'long' BandIndex table (block_type != 2) */ - const int *pretab = gr_info->preflag ? pretab1 : pretab2; - int i,max = -1; - int cb = 0; - int *m = map[sfreq][2]; - register real v = 0.0; - int mc = 0; - - /* long hash table values */ - for(i=0;i<3;i++) - { - int lp = l[i]; - struct newhuff *h = ht+gr_info->table_select[i]; - - for(;lp;lp--,mc--) - { - int x,y; - if(!mc) - { - mc = *m++; - cb = *m++; -#ifdef CUT_SFB21 - if(cb == 21) - v = 0.0; - else -#endif - { -#ifdef REAL_IS_FIXED - gainpow2_scale_idx = (int)(gr_info->pow2gain + (*scf << shift) - fr->gainpow2); -#endif - v = gr_info->pow2gain[(*(scf++) + (*pretab++)) << shift]; - } - } - { - register short *val = h->table; - REFRESH_MASK; - while((y=*val++)<0) - { - if (mask < 0) val -= y; - - num--; - mask <<= 1; - } - x = y >> 4; - y &= 0xf; - } - - if(x == 15 && h->linbits) - { - max = cb; - REFRESH_MASK; - x += ((unsigned long) mask) >> (BITSHIFT+8-h->linbits); - num -= h->linbits+1; - mask <<= h->linbits; - if(mask < 0) *xrpnt++ = REAL_MUL_SCALE_LAYER3(-ispow[x], v, gainpow2_scale_idx); - else *xrpnt++ = REAL_MUL_SCALE_LAYER3( ispow[x], v, gainpow2_scale_idx); - - mask <<= 1; - } - else if(x) - { - max = cb; - if(mask < 0) *xrpnt++ = REAL_MUL_SCALE_LAYER3(-ispow[x], v, gainpow2_scale_idx); - else *xrpnt++ = REAL_MUL_SCALE_LAYER3( ispow[x], v, gainpow2_scale_idx); - num--; - - mask <<= 1; - } - else *xrpnt++ = DOUBLE_TO_REAL(0.0); - - if(y == 15 && h->linbits) - { - max = cb; - REFRESH_MASK; - y += ((unsigned long) mask) >> (BITSHIFT+8-h->linbits); - num -= h->linbits+1; - mask <<= h->linbits; - if(mask < 0) *xrpnt++ = REAL_MUL_SCALE_LAYER3(-ispow[y], v, gainpow2_scale_idx); - else *xrpnt++ = REAL_MUL_SCALE_LAYER3( ispow[y], v, gainpow2_scale_idx); - - mask <<= 1; - } - else if(y) - { - max = cb; - if(mask < 0) *xrpnt++ = REAL_MUL_SCALE_LAYER3(-ispow[y], v, gainpow2_scale_idx); - else *xrpnt++ = REAL_MUL_SCALE_LAYER3( ispow[y], v, gainpow2_scale_idx); - - num--; - mask <<= 1; - } - else *xrpnt++ = DOUBLE_TO_REAL(0.0); - } - } - - /* short (count1table) values */ - for(;l3 && (part2remain+num > 0);l3--) - { - struct newhuff *h = htc+gr_info->count1table_select; - register short *val = h->table,a; - - REFRESH_MASK; - while((a=*val++)<0) - { - if (mask < 0) val -= a; - - num--; - mask <<= 1; - } - if(part2remain+num <= 0) - { - num -= part2remain+num; - break; - } - - for(i=0;i<4;i++) - { - if(!(i & 1)) - { - if(!mc) - { - mc = *m++; - cb = *m++; -#ifdef CUT_SFB21 - if(cb == 21) - v = 0.0; - else -#endif - { -#ifdef REAL_IS_FIXED - gainpow2_scale_idx = (int)(gr_info->pow2gain + (*scf << shift) - fr->gainpow2); -#endif - v = gr_info->pow2gain[((*scf++) + (*pretab++)) << shift]; - } - } - mc--; - } - if( (a & (0x8>>i)) ) - { - max = cb; - if(part2remain+num <= 0) - break; - - if(mask < 0) *xrpnt++ = -REAL_SCALE_LAYER3(v, gainpow2_scale_idx); - else *xrpnt++ = REAL_SCALE_LAYER3(v, gainpow2_scale_idx); - - num--; - mask <<= 1; - } - else *xrpnt++ = DOUBLE_TO_REAL(0.0); - } - } - - gr_info->maxbandl = max+1; - gr_info->maxb = fr->longLimit[sfreq][gr_info->maxbandl]; - } - - part2remain += num; - backbits(fr, num); - num = 0; - - while(xrpnt < &xr[SBLIMIT][0]) - *xrpnt++ = DOUBLE_TO_REAL(0.0); - - while( part2remain > 16 ) - { - skipbits(fr, 16); /* Dismiss stuffing Bits */ - part2remain -= 16; - } - if(part2remain > 0) skipbits(fr, part2remain); - else if(part2remain < 0) - { - debug1("Can't rewind stream by %d bits!",-part2remain); - return 1; /* -> error */ - } - return 0; -} - - -/* calculate real channel values for Joint-I-Stereo-mode */ -static void III_i_stereo(real xr_buf[2][SBLIMIT][SSLIMIT],int *scalefac, struct gr_info_s *gr_info,int sfreq,int ms_stereo,int lsf) -{ - real (*xr)[SBLIMIT*SSLIMIT] = (real (*)[SBLIMIT*SSLIMIT] ) xr_buf; - const struct bandInfoStruct *bi = &bandInfo[sfreq]; - - const real *tab1,*tab2; - -#if 1 - int tab; -/* TODO: optimize as static */ - const real *tabs[3][2][2] = - { - { { tan1_1,tan2_1 } , { tan1_2,tan2_2 } }, - { { pow1_1[0],pow2_1[0] } , { pow1_2[0],pow2_2[0] } }, - { { pow1_1[1],pow2_1[1] } , { pow1_2[1],pow2_2[1] } } - }; - - tab = lsf + (gr_info->scalefac_compress & lsf); - tab1 = tabs[tab][ms_stereo][0]; - tab2 = tabs[tab][ms_stereo][1]; -#else - if(lsf) - { - int p = gr_info->scalefac_compress & 0x1; - if(ms_stereo) - { - tab1 = pow1_2[p]; - tab2 = pow2_2[p]; - } - else - { - tab1 = pow1_1[p]; - tab2 = pow2_1[p]; - } - } - else - { - if(ms_stereo) - { - tab1 = tan1_2; - tab2 = tan2_2; - } - else - { - tab1 = tan1_1; - tab2 = tan2_1; - } - } -#endif - - if(gr_info->block_type == 2) - { - int lwin,do_l = 0; - if( gr_info->mixed_block_flag ) do_l = 1; - - for(lwin=0;lwin<3;lwin++) - { /* process each window */ - /* get first band with zero values */ - int is_p,sb,idx,sfb = gr_info->maxband[lwin]; /* sfb is minimal 3 for mixed mode */ - if(sfb > 3) do_l = 0; - - for(;sfb<12;sfb++) - { - is_p = scalefac[sfb*3+lwin-gr_info->mixed_block_flag]; /* scale: 0-15 */ - if(is_p != 7) - { - real t1,t2; - sb = bi->shortDiff[sfb]; - idx = bi->shortIdx[sfb] + lwin; - t1 = tab1[is_p]; t2 = tab2[is_p]; - for (; sb > 0; sb--,idx+=3) - { - real v = xr[0][idx]; - xr[0][idx] = REAL_MUL_15(v, t1); - xr[1][idx] = REAL_MUL_15(v, t2); - } - } - } - -#if 1 -/* in the original: copy 10 to 11 , here: copy 11 to 12 -maybe still wrong??? (copy 12 to 13?) */ - is_p = scalefac[11*3+lwin-gr_info->mixed_block_flag]; /* scale: 0-15 */ - sb = bi->shortDiff[12]; - idx = bi->shortIdx[12] + lwin; -#else - is_p = scalefac[10*3+lwin-gr_info->mixed_block_flag]; /* scale: 0-15 */ - sb = bi->shortDiff[11]; - idx = bi->shortIdx[11] + lwin; -#endif - if(is_p != 7) - { - real t1,t2; - t1 = tab1[is_p]; t2 = tab2[is_p]; - for( ; sb > 0; sb--,idx+=3 ) - { - real v = xr[0][idx]; - xr[0][idx] = REAL_MUL_15(v, t1); - xr[1][idx] = REAL_MUL_15(v, t2); - } - } - } /* end for(lwin; .. ; . ) */ - - /* also check l-part, if ALL bands in the three windows are 'empty' and mode = mixed_mode */ - if(do_l) - { - int sfb = gr_info->maxbandl; - int idx; - if(sfb > 21) return; /* similarity fix related to CVE-2006-1655 */ - - idx = bi->longIdx[sfb]; - for( ; sfb<8; sfb++ ) - { - int sb = bi->longDiff[sfb]; - int is_p = scalefac[sfb]; /* scale: 0-15 */ - if(is_p != 7) - { - real t1,t2; - t1 = tab1[is_p]; t2 = tab2[is_p]; - for( ; sb > 0; sb--,idx++) - { - real v = xr[0][idx]; - xr[0][idx] = REAL_MUL_15(v, t1); - xr[1][idx] = REAL_MUL_15(v, t2); - } - } - else idx += sb; - } - } - } - else - { /* ((gr_info->block_type != 2)) */ - int sfb = gr_info->maxbandl; - int is_p,idx; - if(sfb > 21) return; /* tightened fix for CVE-2006-1655 */ - - idx = bi->longIdx[sfb]; - for ( ; sfb<21; sfb++) - { - int sb = bi->longDiff[sfb]; - is_p = scalefac[sfb]; /* scale: 0-15 */ - if(is_p != 7) - { - real t1,t2; - t1 = tab1[is_p]; t2 = tab2[is_p]; - for( ; sb > 0; sb--,idx++) - { - real v = xr[0][idx]; - xr[0][idx] = REAL_MUL_15(v, t1); - xr[1][idx] = REAL_MUL_15(v, t2); - } - } - else idx += sb; - } - - is_p = scalefac[20]; - if(is_p != 7) - { /* copy l-band 20 to l-band 21 */ - int sb; - real t1 = tab1[is_p],t2 = tab2[is_p]; - - for( sb = bi->longDiff[21]; sb > 0; sb--,idx++ ) - { - real v = xr[0][idx]; - xr[0][idx] = REAL_MUL_15(v, t1); - xr[1][idx] = REAL_MUL_15(v, t2); - } - } - } -} - - -static void III_antialias(real xr[SBLIMIT][SSLIMIT],struct gr_info_s *gr_info) -{ - int sblim; - - if(gr_info->block_type == 2) - { - if(!gr_info->mixed_block_flag) return; - - sblim = 1; - } - else sblim = gr_info->maxb-1; - - /* 31 alias-reduction operations between each pair of sub-bands */ - /* with 8 butterflies between each pair */ - - { - int sb; - real *xr1=(real *) xr[1]; - - for(sb=sblim; sb; sb--,xr1+=10) - { - int ss; - real *cs=aa_cs,*ca=aa_ca; - real *xr2 = xr1; - - for(ss=7;ss>=0;ss--) - { /* upper and lower butterfly inputs */ - register real bu = *--xr2,bd = *xr1; - *xr2 = REAL_MUL(bu, *cs) - REAL_MUL(bd, *ca); - *xr1++ = REAL_MUL(bd, *cs++) + REAL_MUL(bu, *ca++); - } - } - } -} - -/* - This is an optimized DCT from Jeff Tsay's maplay 1.2+ package. - Saved one multiplication by doing the 'twiddle factor' stuff - together with the window mul. (MH) - - This uses Byeong Gi Lee's Fast Cosine Transform algorithm, but the - 9 point IDCT needs to be reduced further. Unfortunately, I don't - know how to do that, because 9 is not an even number. - Jeff. - - Original Message: - - 9 Point Inverse Discrete Cosine Transform - - This piece of code is Copyright 1997 Mikko Tommila and is freely usable - by anybody. The algorithm itself is of course in the public domain. - - Again derived heuristically from the 9-point WFTA. - - The algorithm is optimized (?) for speed, not for small rounding errors or - good readability. - - 36 additions, 11 multiplications - - Again this is very likely sub-optimal. - - The code is optimized to use a minimum number of temporary variables, - so it should compile quite well even on 8-register Intel x86 processors. - This makes the code quite obfuscated and very difficult to understand. - - References: - [1] S. Winograd: "On Computing the Discrete Fourier Transform", - Mathematics of Computation, Volume 32, Number 141, January 1978, - Pages 175-199 -*/ - -/* Calculation of the inverse MDCT - used to be static without 3dnow - does that really matter? */ -void dct36(real *inbuf,real *o1,real *o2,real *wintab,real *tsbuf) -{ -#ifdef NEW_DCT9 - real tmp[18]; -#endif - - { - register real *in = inbuf; - - in[17]+=in[16]; in[16]+=in[15]; in[15]+=in[14]; - in[14]+=in[13]; in[13]+=in[12]; in[12]+=in[11]; - in[11]+=in[10]; in[10]+=in[9]; in[9] +=in[8]; - in[8] +=in[7]; in[7] +=in[6]; in[6] +=in[5]; - in[5] +=in[4]; in[4] +=in[3]; in[3] +=in[2]; - in[2] +=in[1]; in[1] +=in[0]; - - in[17]+=in[15]; in[15]+=in[13]; in[13]+=in[11]; in[11]+=in[9]; - in[9] +=in[7]; in[7] +=in[5]; in[5] +=in[3]; in[3] +=in[1]; - - -#ifdef NEW_DCT9 -#if 1 - { - real t3; - { - real t0, t1, t2; - - t0 = REAL_MUL(COS6_2, (in[8] + in[16] - in[4])); - t1 = REAL_MUL(COS6_2, in[12]); - - t3 = in[0]; - t2 = t3 - t1 - t1; - tmp[1] = tmp[7] = t2 - t0; - tmp[4] = t2 + t0 + t0; - t3 += t1; - - t2 = REAL_MUL(COS6_1, (in[10] + in[14] - in[2])); - tmp[1] -= t2; - tmp[7] += t2; - } - { - real t0, t1, t2; - - t0 = REAL_MUL(cos9[0], (in[4] + in[8] )); - t1 = REAL_MUL(cos9[1], (in[8] - in[16])); - t2 = REAL_MUL(cos9[2], (in[4] + in[16])); - - tmp[2] = tmp[6] = t3 - t0 - t2; - tmp[0] = tmp[8] = t3 + t0 + t1; - tmp[3] = tmp[5] = t3 - t1 + t2; - } - } - { - real t1, t2, t3; - - t1 = REAL_MUL(cos18[0], (in[2] + in[10])); - t2 = REAL_MUL(cos18[1], (in[10] - in[14])); - t3 = REAL_MUL(COS6_1, in[6]); - - { - real t0 = t1 + t2 + t3; - tmp[0] += t0; - tmp[8] -= t0; - } - - t2 -= t3; - t1 -= t3; - - t3 = REAL_MUL(cos18[2], (in[2] + in[14])); - - t1 += t3; - tmp[3] += t1; - tmp[5] -= t1; - - t2 -= t3; - tmp[2] += t2; - tmp[6] -= t2; - } - -#else - { - real t0, t1, t2, t3, t4, t5, t6, t7; - - t1 = REAL_MUL(COS6_2, in[12]); - t2 = REAL_MUL(COS6_2, (in[8] + in[16] - in[4])); - - t3 = in[0] + t1; - t4 = in[0] - t1 - t1; - t5 = t4 - t2; - tmp[4] = t4 + t2 + t2; - - t0 = REAL_MUL(cos9[0], (in[4] + in[8])); - t1 = REAL_MUL(cos9[1], (in[8] - in[16])); - - t2 = REAL_MUL(cos9[2], (in[4] + in[16])); - - t6 = t3 - t0 - t2; - t0 += t3 + t1; - t3 += t2 - t1; - - t2 = REAL_MUL(cos18[0], (in[2] + in[10])); - t4 = REAL_MUL(cos18[1], (in[10] - in[14])); - t7 = REAL_MUL(COS6_1, in[6]); - - t1 = t2 + t4 + t7; - tmp[0] = t0 + t1; - tmp[8] = t0 - t1; - t1 = REAL_MUL(cos18[2], (in[2] + in[14])); - t2 += t1 - t7; - - tmp[3] = t3 + t2; - t0 = REAL_MUL(COS6_1, (in[10] + in[14] - in[2])); - tmp[5] = t3 - t2; - - t4 -= t1 + t7; - - tmp[1] = t5 - t0; - tmp[7] = t5 + t0; - tmp[2] = t6 + t4; - tmp[6] = t6 - t4; - } -#endif - - { - real t0, t1, t2, t3, t4, t5, t6, t7; - - t1 = REAL_MUL(COS6_2, in[13]); - t2 = REAL_MUL(COS6_2, (in[9] + in[17] - in[5])); - - t3 = in[1] + t1; - t4 = in[1] - t1 - t1; - t5 = t4 - t2; - - t0 = REAL_MUL(cos9[0], (in[5] + in[9])); - t1 = REAL_MUL(cos9[1], (in[9] - in[17])); - - tmp[13] = REAL_MUL((t4 + t2 + t2), tfcos36[17-13]); - t2 = REAL_MUL(cos9[2], (in[5] + in[17])); - - t6 = t3 - t0 - t2; - t0 += t3 + t1; - t3 += t2 - t1; - - t2 = REAL_MUL(cos18[0], (in[3] + in[11])); - t4 = REAL_MUL(cos18[1], (in[11] - in[15])); - t7 = REAL_MUL(COS6_1, in[7]); - - t1 = t2 + t4 + t7; - tmp[17] = REAL_MUL((t0 + t1), tfcos36[17-17]); - tmp[9] = REAL_MUL((t0 - t1), tfcos36[17-9]); - t1 = REAL_MUL(cos18[2], (in[3] + in[15])); - t2 += t1 - t7; - - tmp[14] = REAL_MUL((t3 + t2), tfcos36[17-14]); - t0 = REAL_MUL(COS6_1, (in[11] + in[15] - in[3])); - tmp[12] = REAL_MUL((t3 - t2), tfcos36[17-12]); - - t4 -= t1 + t7; - - tmp[16] = REAL_MUL((t5 - t0), tfcos36[17-16]); - tmp[10] = REAL_MUL((t5 + t0), tfcos36[17-10]); - tmp[15] = REAL_MUL((t6 + t4), tfcos36[17-15]); - tmp[11] = REAL_MUL((t6 - t4), tfcos36[17-11]); - } - -#define MACRO(v) { \ - real tmpval; \ - tmpval = tmp[(v)] + tmp[17-(v)]; \ - out2[9+(v)] = REAL_MUL(tmpval, w[27+(v)]); \ - out2[8-(v)] = REAL_MUL(tmpval, w[26-(v)]); \ - tmpval = tmp[(v)] - tmp[17-(v)]; \ - ts[SBLIMIT*(8-(v))] = out1[8-(v)] + REAL_MUL(tmpval, w[8-(v)]); \ - ts[SBLIMIT*(9+(v))] = out1[9+(v)] + REAL_MUL(tmpval, w[9+(v)]); } - - { - register real *out2 = o2; - register real *w = wintab; - register real *out1 = o1; - register real *ts = tsbuf; - - MACRO(0); - MACRO(1); - MACRO(2); - MACRO(3); - MACRO(4); - MACRO(5); - MACRO(6); - MACRO(7); - MACRO(8); - } - -#else - - { - -#define MACRO0(v) { \ - real tmp; \ - out2[9+(v)] = REAL_MUL((tmp = sum0 + sum1), w[27+(v)]); \ - out2[8-(v)] = REAL_MUL(tmp, w[26-(v)]); } \ - sum0 -= sum1; \ - ts[SBLIMIT*(8-(v))] = out1[8-(v)] + REAL_MUL(sum0, w[8-(v)]); \ - ts[SBLIMIT*(9+(v))] = out1[9+(v)] + REAL_MUL(sum0, w[9+(v)]); -#define MACRO1(v) { \ - real sum0,sum1; \ - sum0 = tmp1a + tmp2a; \ - sum1 = REAL_MUL((tmp1b + tmp2b), tfcos36[(v)]); \ - MACRO0(v); } -#define MACRO2(v) { \ - real sum0,sum1; \ - sum0 = tmp2a - tmp1a; \ - sum1 = REAL_MUL((tmp2b - tmp1b), tfcos36[(v)]); \ - MACRO0(v); } - - register const real *c = COS9; - register real *out2 = o2; - register real *w = wintab; - register real *out1 = o1; - register real *ts = tsbuf; - - real ta33,ta66,tb33,tb66; - - ta33 = REAL_MUL(in[2*3+0], c[3]); - ta66 = REAL_MUL(in[2*6+0], c[6]); - tb33 = REAL_MUL(in[2*3+1], c[3]); - tb66 = REAL_MUL(in[2*6+1], c[6]); - - { - real tmp1a,tmp2a,tmp1b,tmp2b; - tmp1a = REAL_MUL(in[2*1+0], c[1]) + ta33 + REAL_MUL(in[2*5+0], c[5]) + REAL_MUL(in[2*7+0], c[7]); - tmp1b = REAL_MUL(in[2*1+1], c[1]) + tb33 + REAL_MUL(in[2*5+1], c[5]) + REAL_MUL(in[2*7+1], c[7]); - tmp2a = REAL_MUL(in[2*2+0], c[2]) + REAL_MUL(in[2*4+0], c[4]) + ta66 + REAL_MUL(in[2*8+0], c[8]); - tmp2b = REAL_MUL(in[2*2+1], c[2]) + REAL_MUL(in[2*4+1], c[4]) + tb66 + REAL_MUL(in[2*8+1], c[8]); - - MACRO1(0); - MACRO2(8); - } - - { - real tmp1a,tmp2a,tmp1b,tmp2b; - tmp1a = REAL_MUL(( in[2*1+0] - in[2*5+0] - in[2*7+0] ), c[3]); - tmp1b = REAL_MUL(( in[2*1+1] - in[2*5+1] - in[2*7+1] ), c[3]); - tmp2a = REAL_MUL(( in[2*2+0] - in[2*4+0] - in[2*8+0] ), c[6]) - in[2*6+0] + in[2*0+0]; - tmp2b = REAL_MUL(( in[2*2+1] - in[2*4+1] - in[2*8+1] ), c[6]) - in[2*6+1] + in[2*0+1]; - - MACRO1(1); - MACRO2(7); - } - - { - real tmp1a,tmp2a,tmp1b,tmp2b; - tmp1a = REAL_MUL(in[2*1+0], c[5]) - ta33 - REAL_MUL(in[2*5+0], c[7]) + REAL_MUL(in[2*7+0], c[1]); - tmp1b = REAL_MUL(in[2*1+1], c[5]) - tb33 - REAL_MUL(in[2*5+1], c[7]) + REAL_MUL(in[2*7+1], c[1]); - tmp2a = - REAL_MUL(in[2*2+0], c[8]) - REAL_MUL(in[2*4+0], c[2]) + ta66 + REAL_MUL(in[2*8+0], c[4]); - tmp2b = - REAL_MUL(in[2*2+1], c[8]) - REAL_MUL(in[2*4+1], c[2]) + tb66 + REAL_MUL(in[2*8+1], c[4]); - - MACRO1(2); - MACRO2(6); - } - - { - real tmp1a,tmp2a,tmp1b,tmp2b; - tmp1a = REAL_MUL(in[2*1+0], c[7]) - ta33 + REAL_MUL(in[2*5+0], c[1]) - REAL_MUL(in[2*7+0], c[5]); - tmp1b = REAL_MUL(in[2*1+1], c[7]) - tb33 + REAL_MUL(in[2*5+1], c[1]) - REAL_MUL(in[2*7+1], c[5]); - tmp2a = - REAL_MUL(in[2*2+0], c[4]) + REAL_MUL(in[2*4+0], c[8]) + ta66 - REAL_MUL(in[2*8+0], c[2]); - tmp2b = - REAL_MUL(in[2*2+1], c[4]) + REAL_MUL(in[2*4+1], c[8]) + tb66 - REAL_MUL(in[2*8+1], c[2]); - - MACRO1(3); - MACRO2(5); - } - - { - real sum0,sum1; - sum0 = in[2*0+0] - in[2*2+0] + in[2*4+0] - in[2*6+0] + in[2*8+0]; - sum1 = REAL_MUL((in[2*0+1] - in[2*2+1] + in[2*4+1] - in[2*6+1] + in[2*8+1] ), tfcos36[4]); - MACRO0(4); - } - } -#endif - - } -} - - -/* new DCT12 */ -static void dct12(real *in,real *rawout1,real *rawout2,register real *wi,register real *ts) -{ -#define DCT12_PART1 \ - in5 = in[5*3]; \ - in5 += (in4 = in[4*3]); \ - in4 += (in3 = in[3*3]); \ - in3 += (in2 = in[2*3]); \ - in2 += (in1 = in[1*3]); \ - in1 += (in0 = in[0*3]); \ - \ - in5 += in3; in3 += in1; \ - \ - in2 = REAL_MUL(in2, COS6_1); \ - in3 = REAL_MUL(in3, COS6_1); - -#define DCT12_PART2 \ - in0 += REAL_MUL(in4, COS6_2); \ - \ - in4 = in0 + in2; \ - in0 -= in2; \ - \ - in1 += REAL_MUL(in5, COS6_2); \ - \ - in5 = REAL_MUL((in1 + in3), tfcos12[0]); \ - in1 = REAL_MUL((in1 - in3), tfcos12[2]); \ - \ - in3 = in4 + in5; \ - in4 -= in5; \ - \ - in2 = in0 + in1; \ - in0 -= in1; - - { - real in0,in1,in2,in3,in4,in5; - register real *out1 = rawout1; - ts[SBLIMIT*0] = out1[0]; ts[SBLIMIT*1] = out1[1]; ts[SBLIMIT*2] = out1[2]; - ts[SBLIMIT*3] = out1[3]; ts[SBLIMIT*4] = out1[4]; ts[SBLIMIT*5] = out1[5]; - - DCT12_PART1 - - { - real tmp0,tmp1 = (in0 - in4); - { - real tmp2 = REAL_MUL((in1 - in5), tfcos12[1]); - tmp0 = tmp1 + tmp2; - tmp1 -= tmp2; - } - ts[(17-1)*SBLIMIT] = out1[17-1] + REAL_MUL(tmp0, wi[11-1]); - ts[(12+1)*SBLIMIT] = out1[12+1] + REAL_MUL(tmp0, wi[6+1]); - ts[(6 +1)*SBLIMIT] = out1[6 +1] + REAL_MUL(tmp1, wi[1]); - ts[(11-1)*SBLIMIT] = out1[11-1] + REAL_MUL(tmp1, wi[5-1]); - } - - DCT12_PART2 - - ts[(17-0)*SBLIMIT] = out1[17-0] + REAL_MUL(in2, wi[11-0]); - ts[(12+0)*SBLIMIT] = out1[12+0] + REAL_MUL(in2, wi[6+0]); - ts[(12+2)*SBLIMIT] = out1[12+2] + REAL_MUL(in3, wi[6+2]); - ts[(17-2)*SBLIMIT] = out1[17-2] + REAL_MUL(in3, wi[11-2]); - - ts[(6 +0)*SBLIMIT] = out1[6+0] + REAL_MUL(in0, wi[0]); - ts[(11-0)*SBLIMIT] = out1[11-0] + REAL_MUL(in0, wi[5-0]); - ts[(6 +2)*SBLIMIT] = out1[6+2] + REAL_MUL(in4, wi[2]); - ts[(11-2)*SBLIMIT] = out1[11-2] + REAL_MUL(in4, wi[5-2]); - } - - in++; - - { - real in0,in1,in2,in3,in4,in5; - register real *out2 = rawout2; - - DCT12_PART1 - - { - real tmp0,tmp1 = (in0 - in4); - { - real tmp2 = REAL_MUL((in1 - in5), tfcos12[1]); - tmp0 = tmp1 + tmp2; - tmp1 -= tmp2; - } - out2[5-1] = REAL_MUL(tmp0, wi[11-1]); - out2[0+1] = REAL_MUL(tmp0, wi[6+1]); - ts[(12+1)*SBLIMIT] += REAL_MUL(tmp1, wi[1]); - ts[(17-1)*SBLIMIT] += REAL_MUL(tmp1, wi[5-1]); - } - - DCT12_PART2 - - out2[5-0] = REAL_MUL(in2, wi[11-0]); - out2[0+0] = REAL_MUL(in2, wi[6+0]); - out2[0+2] = REAL_MUL(in3, wi[6+2]); - out2[5-2] = REAL_MUL(in3, wi[11-2]); - - ts[(12+0)*SBLIMIT] += REAL_MUL(in0, wi[0]); - ts[(17-0)*SBLIMIT] += REAL_MUL(in0, wi[5-0]); - ts[(12+2)*SBLIMIT] += REAL_MUL(in4, wi[2]); - ts[(17-2)*SBLIMIT] += REAL_MUL(in4, wi[5-2]); - } - - in++; - - { - real in0,in1,in2,in3,in4,in5; - register real *out2 = rawout2; - out2[12]=out2[13]=out2[14]=out2[15]=out2[16]=out2[17]=0.0; - - DCT12_PART1 - - { - real tmp0,tmp1 = (in0 - in4); - { - real tmp2 = REAL_MUL((in1 - in5), tfcos12[1]); - tmp0 = tmp1 + tmp2; - tmp1 -= tmp2; - } - out2[11-1] = REAL_MUL(tmp0, wi[11-1]); - out2[6 +1] = REAL_MUL(tmp0, wi[6+1]); - out2[0+1] += REAL_MUL(tmp1, wi[1]); - out2[5-1] += REAL_MUL(tmp1, wi[5-1]); - } - - DCT12_PART2 - - out2[11-0] = REAL_MUL(in2, wi[11-0]); - out2[6 +0] = REAL_MUL(in2, wi[6+0]); - out2[6 +2] = REAL_MUL(in3, wi[6+2]); - out2[11-2] = REAL_MUL(in3, wi[11-2]); - - out2[0+0] += REAL_MUL(in0, wi[0]); - out2[5-0] += REAL_MUL(in0, wi[5-0]); - out2[0+2] += REAL_MUL(in4, wi[2]); - out2[5-2] += REAL_MUL(in4, wi[5-2]); - } -} - - -static void III_hybrid(real fsIn[SBLIMIT][SSLIMIT], real tsOut[SSLIMIT][SBLIMIT], int ch,struct gr_info_s *gr_info, mpg123_handle *fr) -{ - real (*block)[2][SBLIMIT*SSLIMIT] = fr->hybrid_block; - int *blc = fr->hybrid_blc; - - real *tspnt = (real *) tsOut; - real *rawout1,*rawout2; - int bt = 0; - size_t sb = 0; - - { - int b = blc[ch]; - rawout1=block[b][ch]; - b=-b+1; - rawout2=block[b][ch]; - blc[ch] = b; - } - - if(gr_info->mixed_block_flag) - { - sb = 2; - opt_dct36(fr)(fsIn[0],rawout1,rawout2,win[0],tspnt); - opt_dct36(fr)(fsIn[1],rawout1+18,rawout2+18,win1[0],tspnt+1); - rawout1 += 36; rawout2 += 36; tspnt += 2; - } - - bt = gr_info->block_type; - if(bt == 2) - { - for(; sbmaxb; sb+=2,tspnt+=2,rawout1+=36,rawout2+=36) - { - dct12(fsIn[sb] ,rawout1 ,rawout2 ,win[2] ,tspnt); - dct12(fsIn[sb+1],rawout1+18,rawout2+18,win1[2],tspnt+1); - } - } - else - { - for(; sbmaxb; sb+=2,tspnt+=2,rawout1+=36,rawout2+=36) - { - opt_dct36(fr)(fsIn[sb],rawout1,rawout2,win[bt],tspnt); - opt_dct36(fr)(fsIn[sb+1],rawout1+18,rawout2+18,win1[bt],tspnt+1); - } - } - - for(;sbstereo; - int single = fr->single; - int ms_stereo,i_stereo; - int sfreq = fr->sampling_frequency; - int stereo1,granules; - - if(stereo == 1) - { /* stream is mono */ - stereo1 = 1; - single = SINGLE_LEFT; - } - else if(single != SINGLE_STEREO) /* stream is stereo, but force to mono */ - stereo1 = 1; - else - stereo1 = 2; - - if(fr->mode == MPG_MD_JOINT_STEREO) - { - ms_stereo = (fr->mode_ext & 0x2)>>1; - i_stereo = fr->mode_ext & 0x1; - } - else ms_stereo = i_stereo = 0; - - granules = fr->lsf ? 1 : 2; - - /* quick hack to keep the music playing */ - /* after having seen this nasty test file... */ - if(III_get_side_info(fr, &sideinfo,stereo,ms_stereo,sfreq,single)) - { - if(NOQUIET) error("bad frame - unable to get valid sideinfo"); - return clip; - } - - set_pointer(fr,sideinfo.main_data_begin); - - for(gr=0;grlayer3.hybrid_in; - /* hybridOut[2][SSLIMIT][SBLIMIT] */ - real (*hybridOut)[SSLIMIT][SBLIMIT] = fr->layer3.hybrid_out; - - { - struct gr_info_s *gr_info = &(sideinfo.ch[0].gr[gr]); - long part2bits; - if(fr->lsf) - part2bits = III_get_scale_factors_2(fr, scalefacs[0],gr_info,0); - else - part2bits = III_get_scale_factors_1(fr, scalefacs[0],gr_info,0,gr); - - if(III_dequantize_sample(fr, hybridIn[0], scalefacs[0],gr_info,sfreq,part2bits)) - { - if(VERBOSE2) error("dequantization failed!"); - return clip; - } - } - - if(stereo == 2) - { - struct gr_info_s *gr_info = &(sideinfo.ch[1].gr[gr]); - long part2bits; - if(fr->lsf) - part2bits = III_get_scale_factors_2(fr, scalefacs[1],gr_info,i_stereo); - else - part2bits = III_get_scale_factors_1(fr, scalefacs[1],gr_info,1,gr); - - if(III_dequantize_sample(fr, hybridIn[1],scalefacs[1],gr_info,sfreq,part2bits)) - { - if(VERBOSE2) error("dequantization failed!"); - return clip; - } - - if(ms_stereo) - { - int i; - unsigned int maxb = sideinfo.ch[0].gr[gr].maxb; - if(sideinfo.ch[1].gr[gr].maxb > maxb) maxb = sideinfo.ch[1].gr[gr].maxb; - - for(i=0;ilsf); - - if(ms_stereo || i_stereo || (single == SINGLE_MIX) ) - { - if(gr_info->maxb > sideinfo.ch[0].gr[gr].maxb) - sideinfo.ch[0].gr[gr].maxb = gr_info->maxb; - else - gr_info->maxb = sideinfo.ch[0].gr[gr].maxb; - } - - switch(single) - { - case SINGLE_MIX: - { - register int i; - register real *in0 = (real *) hybridIn[0],*in1 = (real *) hybridIn[1]; - for(i=0;imaxb;i++,in0++) - *in0 = (*in0 + *in1++); /* *0.5 done by pow-scale */ - } - break; - case SINGLE_RIGHT: - { - register int i; - register real *in0 = (real *) hybridIn[0],*in1 = (real *) hybridIn[1]; - for(i=0;imaxb;i++) - *in0++ = *in1++; - } - break; - } - } - - for(ch=0;chaf.encoding != MPG123_ENC_SIGNED_16 || fr->down_sample != 0) - { -#endif - for(ss=0;sssynth_mono)(hybridOut[0][ss], fr); - else - clip += (fr->synth_stereo)(hybridOut[0][ss], hybridOut[1][ss], fr); - - } -#ifdef OPT_I486 - } else - { - /* Only stereo, 16 bits benefit from the 486 optimization. */ - ss=0; - while(ss < SSLIMIT) - { - int n; - n=(fr->buffer.size - fr->buffer.fill) / (2*2*32); - if(n > (SSLIMIT-ss)) n=SSLIMIT-ss; - - /* Clip counting makes no sense with this function. */ - absynth_1to1_i486(hybridOut[0][ss], 0, fr, n); - absynth_1to1_i486(hybridOut[1][ss], 1, fr, n); - ss+=n; - fr->buffer.fill+=(2*2*32)*n; - } - } -#endif - } - - return clip; -} diff -Nru audacious-plugins-2.4.4/src/mpg123/libmpg123/libmpg123.c audacious-plugins-3.2/src/mpg123/libmpg123/libmpg123.c --- audacious-plugins-2.4.4/src/mpg123/libmpg123/libmpg123.c 2011-02-22 17:29:46.000000000 +0000 +++ audacious-plugins-3.2/src/mpg123/libmpg123/libmpg123.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1673 +0,0 @@ -/* - libmpg123: MPEG Audio Decoder library - - copyright 1995-2010 by the mpg123 project - free software under the terms of the LGPL 2.1 - see COPYING and AUTHORS files in distribution or http://mpg123.org - -*/ - -#include "mpg123lib_intern.h" -#include "icy2utf8.h" -#include "debug.h" - -#ifdef GAPLESS -#define SAMPLE_ADJUST(x) ((x) - ((mh->p.flags & MPG123_GAPLESS) ? mh->begin_os : 0)) -#define SAMPLE_UNADJUST(x) ((x) + ((mh->p.flags & MPG123_GAPLESS) ? mh->begin_os : 0)) -#else -#define SAMPLE_ADJUST(x) (x) -#define SAMPLE_UNADJUST(x) (x) -#endif - -#define SEEKFRAME(mh) ((mh)->ignoreframe < 0 ? 0 : (mh)->ignoreframe) - -static int initialized = 0; - -#include "aligncheck.h" - -#ifdef GAPLESS -/* - Take the buffer after a frame decode (strictly: it is the data from frame fr->num!) and cut samples out. - fr->buffer.fill may then be smaller than before... -*/ -static void frame_buffercheck(mpg123_handle *fr) -{ - /* When we have no accurate position, gapless code does not make sense. */ - if(!fr->accurate) return; - - /* Important: We first cut samples from the end, then cut from beginning (including left-shift of the buffer). - This order works also for the case where firstframe == lastframe. */ - - /* The last interesting (planned) frame: Only use some leading samples. - Note a difference from the below: The last frame and offset are unchanges by seeks. - The lastoff keeps being valid. */ - if(fr->lastframe > -1 && fr->num >= fr->lastframe) - { - /* There can be more than one frame of padding at the end, so we ignore the whole frame if we are beyond lastframe. */ - off_t byteoff = (fr->num == fr->lastframe) ? samples_to_bytes(fr, fr->lastoff) : 0; - if((off_t)fr->buffer.fill > byteoff) - { - fr->buffer.fill = byteoff; - } - debug1("Cut frame buffer on end of stream, fill now %"SIZE_P" bytes.", (size_p)fr->buffer.fill); - } - - /* The first interesting frame: Skip some leading samples. */ - if(fr->firstoff && fr->num == fr->firstframe) - { - off_t byteoff = samples_to_bytes(fr, fr->firstoff); - if((off_t)fr->buffer.fill > byteoff) - { - fr->buffer.fill -= byteoff; - /* buffer.p != buffer.data only for own buffer */ - debug6("cutting %li samples/%li bytes on begin, own_buffer=%i at %p=%p, buf[1]=%i", - (long)fr->firstoff, (long)byteoff, fr->own_buffer, (void*)fr->buffer.p, (void*)fr->buffer.data, ((short*)fr->buffer.p)[2]); - if(fr->own_buffer) fr->buffer.p = fr->buffer.data + byteoff; - else memmove(fr->buffer.data, fr->buffer.data + byteoff, fr->buffer.fill); - debug3("done cutting, buffer at %p =? %p, buf[1]=%i", - (void*)fr->buffer.p, (void*)fr->buffer.data, ((short*)fr->buffer.p)[2]); - } - else fr->buffer.fill = 0; - /* We can only reach this frame again by seeking. And on seeking, firstoff will be recomputed. - So it is safe to null it here (and it makes the if() decision abort earlier). */ - fr->firstoff = 0; - } -} -#endif - -int attribute_align_arg mpg123_init(void) -{ - ALIGNCHECKK - if((sizeof(short) != 2) || (sizeof(long) < 4)) return MPG123_BAD_TYPES; - - if(initialized) return MPG123_OK; /* no need to initialize twice */ - -#ifndef NO_LAYER12 - init_layer12(); /* inits also shared tables with layer1 */ -#endif -#ifndef NO_LAYER3 - init_layer3(); -#endif - prepare_decode_tables(); - check_decoders(); - initialized = 1; - return MPG123_OK; -} - -void attribute_align_arg mpg123_exit(void) -{ - /* nothing yet, but something later perhaps */ -} - -/* create a new handle with specified decoder, decoder can be "", "auto" or NULL for auto-detection */ -mpg123_handle attribute_align_arg *mpg123_new(const char* decoder, int *error) -{ - return mpg123_parnew(NULL, decoder, error); -} - -/* ...the full routine with optional initial parameters to override defaults. */ -mpg123_handle attribute_align_arg *mpg123_parnew(mpg123_pars *mp, const char* decoder, int *error) -{ - mpg123_handle *fr = NULL; - int err = MPG123_OK; -#if (defined CCALIGN) && (defined NEED_ALIGNCHECK) && ((defined DEBUG) || (defined CHECK_ALIGN)) -#ifdef CCALIGN - double ALIGNED(16) altest[4]; - if(((size_t)altest) % 16 != 0) - { - error("Stack variable is not aligned! Your combination of compiler/library is dangerous!"); - *error = MPG123_BAD_ALIGN; - return NULL; - } -#endif -#endif - if(initialized) fr = (mpg123_handle*) malloc(sizeof(mpg123_handle)); - else err = MPG123_NOT_INITIALIZED; - if(fr != NULL) - { - frame_init_par(fr, mp); - debug("cpu opt setting"); - if(frame_cpu_opt(fr, decoder) != 1) - { - err = MPG123_BAD_DECODER; - frame_exit(fr); - free(fr); - fr = NULL; - } - } - if(fr != NULL) - { - /* Cleanup that mess! ... use mpg123_decoder / decode_update! */ - if(frame_outbuffer(fr) != 0) - { - err = MPG123_NO_BUFFERS; - frame_exit(fr); - free(fr); - fr = NULL; - } - else - { - /* I smell cleanup here... with get_next_frame() */ -/* if(decode_update(fr) != 0) - { - err = fr->err != MPG123_OK ? fr->err : MPG123_BAD_DECODER; - frame_exit(fr); - free(fr); - fr = NULL; - } - else */ - fr->decoder_change = 1; - } - } - else if(err == MPG123_OK) err = MPG123_OUT_OF_MEM; - - if(error != NULL) *error = err; - return fr; -} - -int attribute_align_arg mpg123_decoder(mpg123_handle *mh, const char* decoder) -{ - enum optdec dt = dectype(decoder); - ALIGNCHECK(mh); - if(mh == NULL) return MPG123_ERR; - - if(dt == nodec) - { - mh->err = MPG123_BAD_DECODER; - return MPG123_ERR; - } - if(dt == mh->cpu_opts.type) return MPG123_OK; - - /* Now really change. */ - /* frame_exit(mh); - frame_init(mh); */ - debug("cpu opt setting"); - if(frame_cpu_opt(mh, decoder) != 1) - { - mh->err = MPG123_BAD_DECODER; - frame_exit(mh); - return MPG123_ERR; - } - /* New buffers for decoder are created in frame_buffers() */ - if((frame_outbuffer(mh) != 0)) - { - mh->err = MPG123_NO_BUFFERS; - frame_exit(mh); - return MPG123_ERR; - } - /* I smell cleanup here... with get_next_frame() */ - decode_update(mh); - mh->decoder_change = 1; - return MPG123_OK; -} - -int attribute_align_arg mpg123_param(mpg123_handle *mh, enum mpg123_parms key, long val, double fval) -{ - int r; - ALIGNCHECK(mh); - if(mh == NULL) return MPG123_ERR; - r = mpg123_par(&mh->p, key, val, fval); - if(r != MPG123_OK){ mh->err = r; r = MPG123_ERR; } - else - { /* Special treatment for some settings. */ -#ifdef FRAME_INDEX - if(key == MPG123_INDEX_SIZE) - { /* Apply frame index size and grow property on the fly. */ - r = frame_index_setup(mh); - if(r != MPG123_OK) mh->err = MPG123_INDEX_FAIL; - } -#endif - } - return r; -} - -int attribute_align_arg mpg123_par(mpg123_pars *mp, enum mpg123_parms key, long val, double fval) -{ - int ret = MPG123_OK; - ALIGNCHECKK - if(mp == NULL) return MPG123_BAD_PARS; - switch(key) - { - case MPG123_VERBOSE: - mp->verbose = val; - break; - case MPG123_FLAGS: -#ifndef GAPLESS - if(val & MPG123_GAPLESS) ret = MPG123_NO_GAPLESS; -#endif - if(ret == MPG123_OK) mp->flags = val; - debug1("set flags to 0x%lx", (unsigned long) mp->flags); - break; - case MPG123_ADD_FLAGS: -#ifndef GAPLESS - /* Enabling of gapless mode doesn't work when it's not there, but disabling (below) is no problem. */ - if(val & MPG123_GAPLESS) ret = MPG123_NO_GAPLESS; - else -#endif - mp->flags |= val; - debug1("set flags to 0x%lx", (unsigned long) mp->flags); - break; - case MPG123_REMOVE_FLAGS: - mp->flags &= ~val; - debug1("set flags to 0x%lx", (unsigned long) mp->flags); - break; - case MPG123_FORCE_RATE: /* should this trigger something? */ -#ifdef NO_NTOM - if(val > 0) - ret = MPG123_BAD_RATE; -#else - if(val > 96000) ret = MPG123_BAD_RATE; - else mp->force_rate = val < 0 ? 0 : val; /* >0 means enable, 0 disable */ -#endif - break; - case MPG123_DOWN_SAMPLE: -#ifdef NO_DOWNSAMPLE - if(val != 0) ret = MPG123_BAD_RATE; -#else - if(val < 0 || val > 2) ret = MPG123_BAD_RATE; - else mp->down_sample = (int)val; -#endif - break; - case MPG123_RVA: - if(val < 0 || val > MPG123_RVA_MAX) ret = MPG123_BAD_RVA; - else mp->rva = (int)val; - break; - case MPG123_DOWNSPEED: - mp->halfspeed = val < 0 ? 0 : val; - break; - case MPG123_UPSPEED: - mp->doublespeed = val < 0 ? 0 : val; - break; - case MPG123_ICY_INTERVAL: -#ifndef NO_ICY - mp->icy_interval = val > 0 ? val : 0; -#else - if(val > 0) ret = MPG123_BAD_PARAM; -#endif - break; - case MPG123_OUTSCALE: - /* Choose the value that is non-zero, if any. - Downscaling integers to 1.0 . */ - mp->outscale = val == 0 ? fval : (double)val/SHORT_SCALE; - break; - case MPG123_TIMEOUT: -#ifdef TIMEOUT_READ - mp->timeout = val >= 0 ? val : 0; -#else - if(val > 0) ret = MPG123_NO_TIMEOUT; -#endif - break; - case MPG123_RESYNC_LIMIT: - mp->resync_limit = val; - break; - case MPG123_INDEX_SIZE: -#ifdef FRAME_INDEX - mp->index_size = val; -#else - ret = MPG123_NO_INDEX; -#endif - break; - case MPG123_PREFRAMES: - if(val >= 0) mp->preframes = val; - else ret = MPG123_BAD_VALUE; - break; - default: - ret = MPG123_BAD_PARAM; - } - return ret; -} - -int attribute_align_arg mpg123_getparam(mpg123_handle *mh, enum mpg123_parms key, long *val, double *fval) -{ - int r; - ALIGNCHECK(mh); - if(mh == NULL) return MPG123_ERR; - r = mpg123_getpar(&mh->p, key, val, fval); - if(r != MPG123_OK){ mh->err = r; r = MPG123_ERR; } - return r; -} - -int attribute_align_arg mpg123_getpar(mpg123_pars *mp, enum mpg123_parms key, long *val, double *fval) -{ - int ret = 0; - ALIGNCHECKK - if(mp == NULL) return MPG123_BAD_PARS; - switch(key) - { - case MPG123_VERBOSE: - if(val) *val = mp->verbose; - break; - case MPG123_FLAGS: - case MPG123_ADD_FLAGS: - if(val) *val = mp->flags; - break; - case MPG123_FORCE_RATE: - if(val) -#ifdef NO_NTOM - *val = 0; -#else - *val = mp->force_rate; -#endif - break; - case MPG123_DOWN_SAMPLE: - if(val) *val = mp->down_sample; - break; - case MPG123_RVA: - if(val) *val = mp->rva; - break; - case MPG123_DOWNSPEED: - if(val) *val = mp->halfspeed; - break; - case MPG123_UPSPEED: - if(val) *val = mp->doublespeed; - break; - case MPG123_ICY_INTERVAL: -#ifndef NO_ICY - if(val) *val = (long)mp->icy_interval; -#else - if(val) *val = 0; -#endif - break; - case MPG123_OUTSCALE: - if(fval) *fval = mp->outscale; - if(val) *val = (long)(mp->outscale*SHORT_SCALE); - break; - case MPG123_RESYNC_LIMIT: - if(val) *val = mp->resync_limit; - break; - case MPG123_INDEX_SIZE: - if(val) -#ifdef FRAME_INDEX - *val = mp->index_size; -#else - *val = 0; /* graceful fallback: no index is index of zero size */ -#endif - break; - case MPG123_PREFRAMES: - *val = mp->preframes; - break; - default: - ret = MPG123_BAD_PARAM; - } - return ret; -} - -int attribute_align_arg mpg123_getstate(mpg123_handle *mh, enum mpg123_state key, long *val, double *fval) -{ - int ret = MPG123_OK; - long theval = 0; - double thefval = 0.; - ALIGNCHECK(mh); - if(mh == NULL) return MPG123_ERR; - - switch(key) - { - case MPG123_ACCURATE: - theval = mh->accurate; - break; - default: - mh->err = MPG123_BAD_KEY; - ret = MPG123_ERR; - } - - if(val != NULL) *val = theval; - if(fval != NULL) *fval = thefval; - - return ret; -} - -int attribute_align_arg mpg123_eq(mpg123_handle *mh, enum mpg123_channels channel, int band, double val) -{ - ALIGNCHECK(mh); - if(mh == NULL) return MPG123_ERR; - if(band < 0 || band > 31){ mh->err = MPG123_BAD_BAND; return MPG123_ERR; } - switch(channel) - { - case MPG123_LEFT|MPG123_RIGHT: - mh->equalizer[0][band] = mh->equalizer[1][band] = DOUBLE_TO_REAL(val); - break; - case MPG123_LEFT: mh->equalizer[0][band] = DOUBLE_TO_REAL(val); break; - case MPG123_RIGHT: mh->equalizer[1][band] = DOUBLE_TO_REAL(val); break; - default: - mh->err=MPG123_BAD_CHANNEL; - return MPG123_ERR; - } - mh->have_eq_settings = TRUE; - return MPG123_OK; -} - -double attribute_align_arg mpg123_geteq(mpg123_handle *mh, enum mpg123_channels channel, int band) -{ - double ret = 0.; - ALIGNCHECK(mh); - if(mh == NULL) return MPG123_ERR; - - /* Handle this gracefully. When there is no band, it has no volume. */ - if(band > -1 && band < 32) - switch(channel) - { - case MPG123_LEFT|MPG123_RIGHT: - ret = 0.5*(REAL_TO_DOUBLE(mh->equalizer[0][band])+REAL_TO_DOUBLE(mh->equalizer[1][band])); - break; - case MPG123_LEFT: ret = REAL_TO_DOUBLE(mh->equalizer[0][band]); break; - case MPG123_RIGHT: ret = REAL_TO_DOUBLE(mh->equalizer[1][band]); break; - /* Default case is already handled: ret = 0 */ - } - - return ret; -} - - -/* plain file access, no http! */ -int attribute_align_arg mpg123_open(mpg123_handle *mh, const char *path) -{ - ALIGNCHECK(mh); - if(mh == NULL) return MPG123_ERR; - - mpg123_close(mh); - return open_stream(mh, path, -1); -} - -int attribute_align_arg mpg123_open_fd(mpg123_handle *mh, int fd) -{ - ALIGNCHECK(mh); - if(mh == NULL) return MPG123_ERR; - - mpg123_close(mh); - return open_stream(mh, NULL, fd); -} - -int attribute_align_arg mpg123_open_handle(mpg123_handle *mh, void *iohandle) -{ - ALIGNCHECK(mh); - if(mh == NULL) return MPG123_ERR; - - mpg123_close(mh); - if(mh->rdat.r_read_handle == NULL) - { - mh->err = MPG123_BAD_CUSTOM_IO; - return MPG123_ERR; - } - return open_stream_handle(mh, iohandle); -} - -int attribute_align_arg mpg123_open_feed(mpg123_handle *mh) -{ - ALIGNCHECK(mh); - if(mh == NULL) return MPG123_ERR; - - mpg123_close(mh); - return open_feed(mh); -} - -int attribute_align_arg mpg123_replace_reader( mpg123_handle *mh, - ssize_t (*r_read) (int, void *, size_t), - off_t (*r_lseek)(int, off_t, int) ) -{ - ALIGNCHECK(mh); - if(mh == NULL) return MPG123_ERR; - - mpg123_close(mh); - mh->rdat.r_read = r_read; - mh->rdat.r_lseek = r_lseek; - return MPG123_OK; -} - -int attribute_align_arg mpg123_replace_reader_handle( mpg123_handle *mh, - ssize_t (*r_read) (void*, void *, size_t), - off_t (*r_lseek)(void*, off_t, int), - void (*cleanup)(void*) ) -{ - ALIGNCHECK(mh); - if(mh == NULL) return MPG123_ERR; - - mpg123_close(mh); - mh->rdat.r_read_handle = r_read; - mh->rdat.r_lseek_handle = r_lseek; - mh->rdat.cleanup_handle = cleanup; - return MPG123_OK; -} - -int decode_update(mpg123_handle *mh) -{ - long native_rate; - int b; - ALIGNCHECK(mh); - native_rate = frame_freq(mh); - - b = frame_output_format(mh); /* Select the new output format based on given constraints. */ - if(b < 0) return MPG123_ERR; - - if(b == 1) mh->new_format = 1; /* Store for later... */ - - debug3("updating decoder structure with native rate %li and af.rate %li (new format: %i)", native_rate, mh->af.rate, mh->new_format); - if(mh->af.rate == native_rate) mh->down_sample = 0; - else if(mh->af.rate == native_rate>>1) mh->down_sample = 1; - else if(mh->af.rate == native_rate>>2) mh->down_sample = 2; - else mh->down_sample = 3; /* flexible (fixed) rate */ - switch(mh->down_sample) - { - case 0: - case 1: - case 2: - mh->down_sample_sblimit = SBLIMIT>>(mh->down_sample); - /* With downsampling I get less samples per frame */ - mh->outblock = samples_to_bytes(mh, (spf(mh)>>mh->down_sample)); - break; -#ifndef NO_NTOM - case 3: - { - if(synth_ntom_set_step(mh) != 0) return -1; - if(frame_freq(mh) > mh->af.rate) - { - mh->down_sample_sblimit = SBLIMIT * mh->af.rate; - mh->down_sample_sblimit /= frame_freq(mh); - } - else mh->down_sample_sblimit = SBLIMIT; - mh->outblock = mh->af.encsize * mh->af.channels * - ( ( NTOM_MUL-1+spf(mh) - * (((size_t)NTOM_MUL*mh->af.rate)/frame_freq(mh)) - )/NTOM_MUL ); - } - break; -#endif - } - - if(!(mh->p.flags & MPG123_FORCE_MONO)) - { - if(mh->af.channels == 1) mh->single = SINGLE_MIX; - else mh->single = SINGLE_STEREO; - } - else mh->single = (mh->p.flags & MPG123_FORCE_MONO)-1; - if(set_synth_functions(mh) != 0) return -1;; - - do_rva(mh); - debug3("done updating decoder structure with native rate %li and af.rate %li and down_sample %i", frame_freq(mh), mh->af.rate, mh->down_sample); - - return 0; -} - -size_t attribute_align_arg mpg123_safe_buffer(void) -{ - /* real is the largest possible output (it's 32bit float, 32bit int or 64bit double). */ - return sizeof(real)*2*1152*NTOM_MAX; -} - -size_t attribute_align_arg mpg123_outblock(mpg123_handle *mh) -{ - if(mh != NULL) return mh->outblock; - else return mpg123_safe_buffer(); -} - -static int get_next_frame(mpg123_handle *mh) -{ - int change = mh->decoder_change; - do - { - int b; - /* Decode & discard some frame(s) before beginning. */ - if(mh->to_ignore && mh->num < mh->firstframe && mh->num >= mh->ignoreframe) - { - debug1("ignoring frame %li", (long)mh->num); - /* Decoder structure must be current! decode_update has been called before... */ - (mh->do_layer)(mh); mh->buffer.fill = 0; -#ifndef NO_NTOM - /* The ignored decoding may have failed. Make sure ntom stays consistent. */ - if(mh->down_sample == 3) ntom_set_ntom(mh, mh->num+1); -#endif - mh->to_ignore = mh->to_decode = FALSE; - } - /* Read new frame data; possibly breaking out here for MPG123_NEED_MORE. */ - debug("read frame"); - mh->to_decode = FALSE; - b = read_frame(mh); /* That sets to_decode only if a full frame was read. */ - debug4("read of frame %li returned %i (to_decode=%i) at sample %li", (long)mh->num, b, mh->to_decode, (long)mpg123_tell(mh)); - if(b == MPG123_NEED_MORE) return MPG123_NEED_MORE; /* need another call with data */ - else if(b <= 0) - { - /* More sophisticated error control? */ - if(b==0 || mh->rdat.filepos == mh->rdat.filelen) - { /* We simply reached the end. */ - mh->track_frames = mh->num + 1; - debug("What about updating/checking gapless sample count here?"); - return MPG123_DONE; - } - else return MPG123_ERR; /* Some real error. */ - } - /* Now, there should be new data to decode ... and also possibly new stream properties */ - if(mh->header_change > 1) - { - debug("big header change"); - change = 1; - } - /* Now some accounting: Look at the numbers and decide if we want this frame. */ - ++mh->playnum; - /* Plain skipping without decoding, only when frame is not ignored on next cycle. */ - if(mh->num < mh->firstframe || (mh->p.doublespeed && (mh->playnum % mh->p.doublespeed))) - { - if(!(mh->to_ignore && mh->num < mh->firstframe && mh->num >= mh->ignoreframe)) - { - frame_skip(mh); - /* Should one fix NtoM here or not? - It is not work the trouble for doublespeed, but what with leading frames? */ - } - } - /* Or, we are finally done and have a new frame. */ - else break; - } while(1); - - if(change) - { - if(decode_update(mh) < 0) /* dito... */ - return MPG123_ERR; - -debug1("new format: %i", mh->new_format); - - mh->decoder_change = 0; - if(mh->fresh) - { -#ifdef GAPLESS - int b=0; - /* Prepare offsets for gapless decoding. */ - debug1("preparing gapless stuff with native rate %li", frame_freq(mh)); - frame_gapless_realinit(mh); - frame_set_frameseek(mh, mh->num); -#endif - mh->fresh = 0; -#ifdef GAPLESS - /* Could this possibly happen? With a real big gapless offset... */ - if(mh->num < mh->firstframe) b = get_next_frame(mh); - if(b < 0) return b; /* Could be error, need for more, new format... */ -#endif - } - } - return MPG123_OK; -} - -/* Assumption: A buffer full of zero samples can be constructed by repetition of this byte. - Only to be used by decode_the_frame() ... */ -static int zero_byte(mpg123_handle *fr) -{ -#ifndef NO_8BIT - return fr->af.encoding & MPG123_ENC_8 ? fr->conv16to8[0] : 0; -#else - return 0; /* All normal signed formats have the zero here (even in byte form -- that may be an assumption for your funny machine...). */ -#endif -} - -/* - Not part of the api. This just decodes the frame and fills missing bits with zeroes. - There can be frames that are broken and thus make do_layer() fail. -*/ -void decode_the_frame(mpg123_handle *fr) -{ - size_t needed_bytes = samples_to_bytes(fr, frame_expect_outsamples(fr)); fr->clip += (fr->do_layer)(fr); - /*fprintf(stderr, "frame %"OFF_P": got %"SIZE_P" / %"SIZE_P"\n", fr->num,(size_p)fr->buffer.fill, (size_p)needed_bytes);*/ - /* There could be less data than promised. - Also, then debugging, we look out for coding errors that could result in _more_ data than expected. */ -#ifdef DEBUG - if(fr->buffer.fill != needed_bytes) - { -#endif - if(fr->buffer.fill < needed_bytes) - { - if(VERBOSE2) - fprintf(stderr, "Note: broken frame %li, filling up with %"SIZE_P" zeroes, from %"SIZE_P"\n", (long)fr->num, (size_p)(needed_bytes-fr->buffer.fill), (size_p)fr->buffer.fill); - - /* - One could do a loop with individual samples instead... but zero is zero - Actually, that is wrong: zero is mostly a series of null bytes, - but we have funny 8bit formats that have a different opinion on zero... - Unsigned 16 or 32 bit formats are handled later. - */ - memset( fr->buffer.data + fr->buffer.fill, zero_byte(fr), needed_bytes - fr->buffer.fill ); - - fr->buffer.fill = needed_bytes; -#ifndef NO_NTOM - /* ntom_val will be wrong when the decoding wasn't carried out completely */ - ntom_set_ntom(fr, fr->num+1); -#endif - } -#ifdef DEBUG - else - { - if(NOQUIET) - error2("I got _more_ bytes than expected (%"SIZE_P" / %"SIZE_P"), that should not be possible!", (size_p)fr->buffer.fill, (size_p)needed_bytes); - } - } -#endif - /* Handle unsigned output formats via reshifting after decode here. */ -#ifndef NO_32BIT - if(fr->af.encoding == MPG123_ENC_UNSIGNED_32) - { /* 32bit signed -> unsigned */ - size_t i; - int32_t *ssamples; - uint32_t *usamples; - ssamples = (int32_t*)fr->buffer.data; - usamples = (uint32_t*)fr->buffer.data; - debug("converting output to unsigned 32 bit integer"); - for(i=0; ibuffer.fill/sizeof(int32_t); ++i) - { - /* Different strategy since we don't have a larger type at hand. - Also watch out for silly +-1 fun because integer constants are signed in C90! */ - if(ssamples[i] >= 0) - usamples[i] = (uint32_t)ssamples[i] + 2147483647+1; - /* The smalles value goes zero. */ - else if(ssamples[i] == ((int32_t)-2147483647-1)) - usamples[i] = 0; - /* Now -value is in the positive range of signed int ... so it's a possible value at all. */ - else - usamples[i] = (uint32_t)2147483647+1 - (uint32_t)(-ssamples[i]); - } - } -#endif -#ifndef NO_16BIT - if(fr->af.encoding == MPG123_ENC_UNSIGNED_16) - { - size_t i; - short *ssamples; - unsigned short *usamples; - ssamples = (short*)fr->buffer.data; - usamples = (unsigned short*)fr->buffer.data; - debug("converting output to unsigned 16 bit integer"); - for(i=0; ibuffer.fill/sizeof(short); ++i) - { - long tmp = (long)ssamples[i]+32768; - usamples[i] = (unsigned short)tmp; - } - } -#endif -} - -/* - Decode the current frame into the frame structure's buffer, accessible at the location stored in + @@ -117,9 +114,6 @@ - - - diff -Nru audacious-plugins-2.4.4/src/skins/ui/playlist.ui audacious-plugins-3.2/src/skins/ui/playlist.ui --- audacious-plugins-2.4.4/src/skins/ui/playlist.ui 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui/playlist.ui 2012-01-20 19:48:30.000000000 +0000 @@ -1,100 +1,100 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru audacious-plugins-2.4.4/src/skins/ui_dock.c audacious-plugins-3.2/src/skins/ui_dock.c --- audacious-plugins-2.4.4/src/skins/ui_dock.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_dock.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,383 +1,384 @@ -/* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2007 Audacious development team +/* + * ui_dock.c + * Copyright 2011 John Lindgren + * + * This file is part of Audacious. * - * Based on BMP: - * Copyright (C) 2003-2004 BMP development team. + * Audacious is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 2 or version 3 of the License. * - * Based on XMMS: - * Copyright (C) 1998-2003 XMMS development team. + * Audacious 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 General Public License for more details. * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. + * You should have received a copy of the GNU General Public License along with + * Audacious. If not, see . * - * This program 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 General Public License for more details. + * The Audacious team does not consider modular code linking to Audacious or + * using our public API to be a derived work. + */ + +/* + * Rough outline + * ============= * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * When moving a window: + * 1. If this is the main window, find (recursively) the windows docked to it. + * 2. Adjust the offsets to snap to another window (not docked) or a screen edge. + * 3. Move the docked windows by the same offsets. * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. + * When resizing a window: + * 1. Find (recursively) the windows docked to the bottom edge of this one. + * If we are making the window shorter, exclude windows that are docked to + * the bottom of another window (not docked) to avoid overlap. + * 2. Move the docked windows by the difference in window height. + * 3. Repeat the process for windows docked to the right edge of this one. */ -#include "ui_dock.h" -#include "skins_cfg.h" -#include #include -#include -#include "ui_skinned_window.h" -#include "platform/smartinclude.h" -#include "util.h" +#include "ui_dock.h" #define SNAP_DISTANCE 10 -static GList *dock_window_list = NULL; - -struct _DockedWindow { - GtkWindow *w; - gint offset_x, offset_y; +enum { + DOCK_TYPE_LEFT = 1 << 0, + DOCK_TYPE_RIGHT = 1 << 1, + DOCK_TYPE_TOP = 1 << 2, + DOCK_TYPE_BOTTOM = 1 << 3 }; -typedef struct _DockedWindow DockedWindow; +#define DOCK_TYPE_ANY (DOCK_TYPE_LEFT | DOCK_TYPE_RIGHT | DOCK_TYPE_TOP | DOCK_TYPE_BOTTOM) + +typedef struct { + GtkWidget * window; + gint * x, * y; + gint w, h; + gboolean main; + gboolean docked; +} DockWindow; +static GSList * windows; +static gint last_x, last_y; -static gint -docked_list_compare(DockedWindow * a, DockedWindow * b) +static inline gint least_abs (gint a, gint b) { - if (a->w == b->w) - return 0; - return 1; -} - -static void -snap_edge(gint * x, gint * y, gint w, gint h, gint bx, gint by, - gint bw, gint bh) -{ - gint sd = SNAP_DISTANCE; - - if ((*x + w > bx - sd) && (*x + w < bx + sd) && - (*y > by - h - sd) && (*y < by + bh + sd)) { - *x = bx - w; - if ((*y > by - sd) && (*y < by + sd)) - *y = by; - if ((*y + h > by + bh - sd) && (*y + h < by + bh + sd)) - *y = by + bh - h; - } - if ((*x > bx + bw - sd) && (*x < bx + bw + sd) && - (*y > by - h - sd) && (*y < by + bh + sd)) { - *x = bx + bw; - if ((*y > by - sd) && (*y < by + sd)) - *y = by; - if ((*y + h > by + bh - sd) && (*y + h < by + bh + sd)) - *y = by + bh - h; - } -} - -static void -snap(gint * x, gint * y, gint w, gint h, gint bx, gint by, gint bw, gint bh) -{ - snap_edge(x, y, w, h, bx, by, bw, bh); - snap_edge(y, x, h, w, by, bx, bh, bw); -} - -static void -calc_snap_offset(GList * dlist, GList * wlist, gint x, gint y, - gint * off_x, gint * off_y) -{ - gint nx, ny, nw, nh, sx, sy, sw, sh; - GtkWindow *w; - GList *dnode, *wnode; - DockedWindow temp, *dw; - - *off_x = 0; - *off_y = 0; - - /* - * FIXME: Why not break out of the loop when we find someting - * to snap to? - */ - for (dnode = dlist; dnode; dnode = g_list_next(dnode)) { - dw = dnode->data; - gtk_window_get_size(dw->w, &nw, &nh); - - nx = dw->offset_x + *off_x + x; - ny = dw->offset_y + *off_y + y; - - /* Snap to screen edges */ - if (abs(nx) < SNAP_DISTANCE) - *off_x -= nx; - if (abs(ny) < SNAP_DISTANCE) - *off_y -= ny; - if (abs(nx + nw - gdk_screen_width()) < SNAP_DISTANCE) - *off_x -= nx + nw - gdk_screen_width(); - if (abs(ny + nh - gdk_screen_height()) < SNAP_DISTANCE) - *off_y -= ny + nh - gdk_screen_height(); - - /* Snap to other windows */ - for (wnode = wlist; wnode; wnode = g_list_next(wnode)) { - temp.w = wnode->data; - if (g_list_find_custom - (dlist, &temp, (GCompareFunc) docked_list_compare)) - /* These windows are already docked */ - continue; + return (abs (a) < abs (b)) ? a : b; +} - w = GTK_WINDOW(wnode->data); - gtk_window_get_position(w, &sx, &sy); - gtk_window_get_size(w, &sw, &sh); +static DockWindow * find_window (GSList * list, GtkWidget * window) +{ + for (GSList * node = list; node; node = node->next) + { + DockWindow * dw = node->data; + if (dw->window == window) + return dw; + } + + return NULL; +} - nx = dw->offset_x + *off_x + x; - ny = dw->offset_y + *off_y + y; +void dock_add_window (GtkWidget * window, gint * x, gint * y, gint w, gint h, + gboolean main) +{ + DockWindow * dw = g_slice_new0 (DockWindow); + dw->window = window; + dw->x = x; + dw->y = y; + dw->w = w; + dw->h = h; + dw->main = main; - snap(&nx, &ny, nw, nh, sx, sy, sw, sh); + windows = g_slist_prepend (windows, dw); +} - *off_x += nx - (dw->offset_x + *off_x + x); - *off_y += ny - (dw->offset_y + *off_y + y); - } +void dock_remove_window (GtkWidget * window) +{ + DockWindow * dw = find_window (windows, window); + g_return_if_fail (dw); + + windows = g_slist_remove (windows, dw); + g_slice_free (DockWindow, dw); +} + +static void dock_sync (void) +{ + for (GSList * node = windows; node; node = node->next) + { + DockWindow * dw = node->data; + gtk_window_get_position ((GtkWindow *) dw->window, dw->x, dw->y); } } +static void clear_docked (void) +{ + for (GSList * node = windows; node; node = node->next) + { + DockWindow * dw = node->data; + dw->docked = FALSE; + } +} -static gboolean -is_docked(gint a_x, gint a_y, gint a_w, gint a_h, - gint b_x, gint b_y, gint b_w, gint b_h) +static gboolean is_docked (DockWindow * dw, DockWindow * base, gint type) { - if (((a_x == b_x + b_w) || (a_x + a_w == b_x)) && - (b_y + b_h >= a_y) && (b_y <= a_y + a_h)) + if ((type & DOCK_TYPE_LEFT) && * dw->x + dw->w == * base->x) return TRUE; - - if (((a_y == b_y + b_h) || (a_y + a_h == b_y)) && - (b_x >= a_x - b_w) && (b_x <= a_x + a_w)) + if ((type & DOCK_TYPE_RIGHT) && * dw->x == * base->x + base->w) + return TRUE; + if ((type & DOCK_TYPE_TOP) && * dw->y + dw->h == * base->y) + return TRUE; + if ((type & DOCK_TYPE_BOTTOM) && * dw->y == * base->y + base->h) return TRUE; return FALSE; } -/* - * Builds a list of all windows that are docked to the window "w". - * Recursively adds all windows that are docked to the windows that are - * docked to "w" and so on... - * FIXME: init_off_? ? - */ - -static GList * -get_docked_list(GList * dlist, GList * wlist, GtkWindow * w, - gint init_off_x, gint init_off_y) -{ - GList *node; - DockedWindow *dwin, temp; - gint w_x, w_y, w_width, w_height; - gint t_x, t_y, t_width, t_height; - - - gtk_window_get_position(w, &w_x, &w_y); - gtk_window_get_size(w, &w_width, &w_height); - if (!dlist) { - dwin = g_new0(DockedWindow, 1); - dwin->w = w; - dlist = g_list_append(dlist, dwin); - } - - for (node = wlist; node; node = g_list_next(node)) { - temp.w = node->data; - if (g_list_find_custom - (dlist, &temp, (GCompareFunc) docked_list_compare)) +static void find_docked (DockWindow * base, gint type) +{ + for (GSList * node = windows; node; node = node->next) + { + DockWindow * dw = node->data; + if (dw->docked || dw == base) continue; - gtk_window_get_position(GTK_WINDOW(node->data), &t_x, &t_y); - gtk_window_get_size(GTK_WINDOW(node->data), &t_width, &t_height); - if (is_docked - (w_x, w_y, w_width, w_height, t_x, t_y, t_width, t_height)) { - dwin = g_new0(DockedWindow, 1); - dwin->w = node->data; - - dwin->offset_x = t_x - w_x + init_off_x; - dwin->offset_y = t_y - w_y + init_off_y; - - dlist = g_list_append(dlist, dwin); - - dlist = - get_docked_list(dlist, wlist, dwin->w, dwin->offset_x, - dwin->offset_y); - } + dw->docked = is_docked (dw, base, type); + if (dw->docked) + find_docked (dw, type); } - return dlist; } -static void -free_docked_list(GList * dlist) +static void invert_docked (void) { - GList *node; - - for (node = dlist; node; node = g_list_next(node)) - g_free(node->data); - g_list_free(dlist); + for (GSList * node = windows; node; node = node->next) + { + DockWindow * dw = node->data; + dw->docked = ! dw->docked; + } } -static void move_skinned_window (SkinnedWindow * window, int x, int y) +void dock_set_size (GtkWidget * window, gint w, gint h) { - gtk_window_move (GTK_WINDOW (window), x, y); + DockWindow * base = find_window (windows, window); + g_return_if_fail (base); - *(window->x) = x; - *(window->y) = y; -} + dock_sync (); -static void -docked_list_move(GList * list, gint x, gint y) -{ - GList *node; - DockedWindow *dw; + if (h != base->h) + { + /* 1. Find the windows docked below this one. */ + + clear_docked (); + find_docked (base, DOCK_TYPE_BOTTOM); + + if (h < base->h) + { + /* 2. This part is tricky. By flipping the docked flag on all the + windows, we consider the windows not docked to this one as a + docked group. We then add (recursively) any other windows + docked to these ones (i.e. the windows docked to these *and* + to the one being shortened). The one being shortened must be + excluded from the search. Since at this point it is marked as + docked, it is excluded automatically. Finally, flipping the + docked flag back again leaves us with only the windows docked + to the one being shortened and not to any others. */ + + invert_docked (); + + for (GSList * node = windows; node; node = node->next) + { + DockWindow * dw = node->data; + if (! dw->docked || dw == base) + continue; + + find_docked (dw, DOCK_TYPE_BOTTOM); + } + + invert_docked (); + } - for (node = list; node; node = g_list_next(node)) { - dw = node->data; - move_skinned_window (SKINNED_WINDOW (dw->w), x + dw->offset_x, - y + dw->offset_y); + /* 3. Move the docked windows by the difference in height. */ + + for (GSList * node = windows; node; node = node->next) + { + DockWindow * dw = node->data; + if (! dw->docked) + continue; + + * dw->y += h - base->h; + gtk_window_move ((GtkWindow *) dw->window, * dw->x, * dw->y); + } } -} -static void move_attached (GtkWindow * window, GList * * others, int offset) { - int x, y, width, height, x2, y2; - GList * move, * scan, * next; - gtk_window_get_position (window, & x, & y); - gtk_window_get_size (window, & width, & height); - move = 0; - for (scan = * others; scan; scan = next) { - next = g_list_next (scan); - gtk_window_get_position (scan->data, & x2, & y2); - if (y2 == y + height) { - * others = g_list_remove_link (* others, scan); - move = g_list_concat (move, scan); - } - } - for (; move; move = g_list_delete_link (move, move)) - move_attached (move->data, others, offset); - move_skinned_window (SKINNED_WINDOW (window), x, y + offset); + if (w != base->w) + { + /* 4. Repeat the process for the windows docked to the right. */ + + clear_docked (); + find_docked (base, DOCK_TYPE_RIGHT); + + if (w < base->w) + { + invert_docked (); + + for (GSList * node = windows; node; node = node->next) + { + DockWindow * dw = node->data; + if (! dw->docked || dw == base) + continue; + + find_docked (dw, DOCK_TYPE_RIGHT); + } + + invert_docked (); + } + + for (GSList * node = windows; node; node = node->next) + { + DockWindow * dw = node->data; + if (! dw->docked) + continue; + + * dw->x += w - base->w; + gtk_window_move ((GtkWindow *) dw->window, * dw->x, * dw->y); + } + } + + /* 5. Set the window size. (The actual resize is done by the caller.) */ + + base->w = w; + base->h = h; } -void dock_shade(GList *window_list, GtkWindow *window, gint new_height) +void dock_move_start (GtkWidget * window, gint x, gint y) { - gint x, y, width, height, x2, y2; - GList *move, *others, *scan, *next; + DockWindow * dw = find_window (windows, window); + g_return_if_fail (dw); + + dock_sync (); - gtk_window_get_size(window, &width, &height); + last_x = x; + last_y = y; - if (! config.show_wm_decorations) { - gtk_window_get_position (window, & x, & y); - others = g_list_copy (window_list); - others = g_list_remove (others, window); - move = 0; - for (scan = others; scan; scan = next) { - next = g_list_next (scan); - gtk_window_get_position (scan->data, & x2, & y2); - if (y2 == y + height) { - others = g_list_remove_link (others, scan); - move = g_list_concat (move, scan); - } - } - for (; move; move = g_list_delete_link (move, move)) - move_attached (move->data, & others, new_height - height); - g_list_free (others); - } + /* 1. If this is the main window, find the windows docked to it. */ - resize_window((GtkWidget *) window, width, new_height); + clear_docked (); + dw->docked = TRUE; + if (dw->main) + find_docked (dw, DOCK_TYPE_ANY); } -void -dock_move_press(GList * window_list, GtkWindow * w, - GdkEventButton * event, gboolean move_list) +void dock_move (gint x, gint y) { - gint mx, my; - DockedWindow *dwin; + gint hori, vert; - if (config.show_wm_decorations) + if (x == last_x && y == last_y) return; - gtk_window_present(w); - mx = event->x; - my = event->y; - g_object_set_data(G_OBJECT(w), "move_offset_x", GINT_TO_POINTER(mx)); - g_object_set_data(G_OBJECT(w), "move_offset_y", GINT_TO_POINTER(my)); - if (move_list) - g_object_set_data(G_OBJECT(w), "docked_list", - get_docked_list(NULL, window_list, w, 0, 0)); - else { - dwin = g_new0(DockedWindow, 1); - dwin->w = w; - g_object_set_data(G_OBJECT(w), "docked_list", - g_list_append(NULL, dwin)); - } - g_object_set_data(G_OBJECT(w), "window_list", window_list); - g_object_set_data(G_OBJECT(w), "is_moving", GINT_TO_POINTER(1)); -} - -void -dock_move_motion(GtkWindow * w, GdkEventMotion * event) -{ - gint offset_x, offset_y, x, y; - GList *dlist; - GList *window_list; + /* 2. Nominally move all the windows in the group the requested distance, + and update the reference point. */ - if (!g_object_get_data(G_OBJECT(w), "is_moving")) - return; + hori = x - last_x; + vert = y - last_y; - offset_x = - GPOINTER_TO_INT(g_object_get_data(G_OBJECT(w), "move_offset_x")); - offset_y = - GPOINTER_TO_INT(g_object_get_data(G_OBJECT(w), "move_offset_y")); - dlist = g_object_get_data(G_OBJECT(w), "docked_list"); - window_list = g_object_get_data(G_OBJECT(w), "window_list"); + for (GSList * node = windows; node; node = node->next) + { + DockWindow * dw = node->data; + if (! dw->docked) + continue; - x = event->x_root - offset_x; - y = event->y_root - offset_y; + * dw->x += hori; + * dw->y += vert; + } - calc_snap_offset(dlist, window_list, x, y, &offset_x, &offset_y); - x += offset_x; - y += offset_y; + last_x = x; + last_y = y; - docked_list_move(dlist, x, y); -} -void -dock_move_release(GtkWindow * w) -{ - GList *dlist; - g_object_set_data(G_OBJECT(w), "is_moving", NULL); - g_object_set_data(G_OBJECT(w), "move_offset_x", NULL); - g_object_set_data(G_OBJECT(w), "move_offset_y", NULL); - if ((dlist = g_object_get_data(G_OBJECT(w), "docked_list")) != NULL) - free_docked_list(dlist); - g_object_set_data(G_OBJECT(w), "docked_list", NULL); - g_object_set_data(G_OBJECT(w), "window_list", NULL); -} + /* 3. Find the least snap distance we must move so that + (a) a window in the group is touching a screen edge or + (b) a window in the group is touching a window not in the group. */ -gboolean -dock_is_moving(GtkWindow * w) -{ - if (g_object_get_data(G_OBJECT(w), "is_moving")) - return TRUE; - return FALSE; -} + hori = SNAP_DISTANCE + 1; + vert = SNAP_DISTANCE + 1; -void dock_window_set_decorated (GtkWidget * widget) -{ - if (config.show_wm_decorations) - dock_window_list = g_list_remove (dock_window_list, widget); - else - dock_window_list = g_list_append (dock_window_list, widget); + GdkScreen * screen = gdk_screen_get_default (); + gint monitors = gdk_screen_get_n_monitors (screen); - gtk_window_set_decorated (GTK_WINDOW (widget), config.show_wm_decorations); -} + for (gint m = 0; m < monitors; m ++) + { + GdkRectangle rect; + gdk_screen_get_monitor_geometry (screen, m, & rect); -GList * -get_dock_window_list() { - return dock_window_list; -} + for (GSList * node = windows; node; node = node->next) + { + DockWindow * dw = node->data; + if (! dw->docked) + continue; -void clear_dock_window_list (void) -{ - g_list_free (dock_window_list); - dock_window_list = NULL; + /* We only test half the combinations here, as it is not very + helpful to have e.g. the right edge of a window touching the left + edge of a monitor (think about it). */ + + hori = least_abs (hori, rect.x - * dw->x); + hori = least_abs (hori, (rect.x + rect.width) - (* dw->x + dw->w)); + vert = least_abs (vert, rect.y - * dw->y); + vert = least_abs (vert, (rect.y + rect.height) - (* dw->y + dw->h)); + } + } + + for (GSList * node = windows; node; node = node->next) + { + DockWindow * dw = node->data; + if (! dw->docked) + continue; + + for (GSList * node2 = windows; node2; node2 = node2->next) + { + DockWindow * dw2 = node2->data; + if (dw2->docked) + continue; + + hori = least_abs (hori, * dw2->x - * dw->x); + hori = least_abs (hori, * dw2->x - (* dw->x + dw->w)); + hori = least_abs (hori, (* dw2->x + dw2->w) - * dw->x); + hori = least_abs (hori, (* dw2->x + dw2->w) - (* dw->x + dw->w)); + vert = least_abs (vert, * dw2->y - * dw->y); + vert = least_abs (vert, * dw2->y - (* dw->y + dw->h)); + vert = least_abs (vert, (* dw2->y + dw2->h) - * dw->y); + vert = least_abs (vert, (* dw2->y + dw2->h) - (* dw->y + dw->h)); + } + } + + /* 4. If the snap distances are within range, nominally move all the windows + in the group, and update the reference point again. */ + + if (abs (hori) > SNAP_DISTANCE) + hori = 0; + if (abs (vert) > SNAP_DISTANCE) + vert = 0; + + for (GSList * node = windows; node; node = node->next) + { + DockWindow * dw = node->data; + if (! dw->docked) + continue; + + * dw->x += hori; + * dw->y += vert; + } + + last_x += hori; + last_y += vert; + + /* 5. Really move the windows. */ + + for (GSList * node = windows; node; node = node->next) + { + DockWindow * dw = node->data; + if (! dw->docked) + continue; + + gtk_window_move ((GtkWindow *) dw->window, * dw->x, * dw->y); + } } diff -Nru audacious-plugins-2.4.4/src/skins/ui_dock.h audacious-plugins-3.2/src/skins/ui_dock.h --- audacious-plugins-2.4.4/src/skins/ui_dock.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_dock.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,46 +1,36 @@ -/* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2007 Audacious development team +/* + * ui_dock.h + * Copyright 2011 John Lindgren * - * Based on BMP: - * Copyright (C) 2003-2004 BMP development team. + * This file is part of Audacious. * - * Based on XMMS: - * Copyright (C) 1998-2003 XMMS development team. + * Audacious is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 2 or version 3 of the License. * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. + * Audacious 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 General Public License for more details. * - * This program 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 General Public License for more details. + * You should have received a copy of the GNU General Public License along with + * Audacious. If not, see . * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. + * The Audacious team does not consider modular code linking to Audacious or + * using our public API to be a derived work. */ -#ifndef DOCK_H -#define DOCK_H +#ifndef SKINS_UI_DOCK_H +#define SKINS_UI_DOCK_H -#include #include -void dock_set_uposition(GtkWindow * widget, gint x, gint y); -void dock_move_press(GList * window_list, GtkWindow * w, - GdkEventButton * event, gboolean move_list); -void dock_move_motion(GtkWindow * w, GdkEventMotion * event); -void dock_move_release(GtkWindow * w); -void dock_get_widget_pos(GtkWindow * w, gint * x, gint * y); -gboolean dock_is_moving(GtkWindow * w); -void dock_shade(GList *window_list, GtkWindow *widget, gint new_height); +void dock_add_window (GtkWidget * window, gint * x, gint * y, gint w, gint h, + gboolean main); +void dock_remove_window (GtkWidget * window); -void dock_window_set_decorated (GtkWidget * widget); +void dock_set_size (GtkWidget * window, gint w, gint h); -GList *get_dock_window_list(); -void clear_dock_window_list (void); +void dock_move_start (GtkWidget * window, gint x, gint y); +void dock_move (gint x, gint y); #endif diff -Nru audacious-plugins-2.4.4/src/skins/ui_equalizer.c audacious-plugins-3.2/src/skins/ui_equalizer.c --- audacious-plugins-2.4.4/src/skins/ui_equalizer.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_equalizer.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,5 @@ /* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2007 Audacious development team. + * Copyright (C) 2005-2011 Audacious development team. * * Based on BMP: * Copyright (C) 2003-2004 BMP development team. @@ -23,51 +23,43 @@ * Audacious or using our public API to be a derived work. */ -/*#define AUD_DEBUG*/ - -#include "config.h" - -#include "ui_equalizer.h" - -#include #include -#include -#include -#include -#include "platform/smartinclude.h" -#include "ui_skin.h" -#include "ui_manager.h" -#include "actions-equalizer.h" -#include "util.h" -#include "ui_main.h" -#include "ui_playlist.h" - -#include #include +#include #include #include #include #include #include -#include "images/audacious_eq.xpm" - -#include "ui_dock.h" -#include "ui_skinned_window.h" +#include "actions-equalizer.h" +#include "config.h" +#include "skins_cfg.h" +#include "ui_equalizer.h" +#include "ui_main.h" +#include "ui_manager.h" #include "ui_skinned_button.h" -#include "ui_skinned_horizontal_slider.h" -#include "ui_skinned_equalizer_slider.h" #include "ui_skinned_equalizer_graph.h" -#include "skins_cfg.h" +#include "ui_skinned_equalizer_slider.h" +#include "ui_skinned_horizontal_slider.h" +#include "ui_skinned_window.h" +#include "util.h" + +#include "images/audacious_eq.xpm" enum PresetViewCols { PRESET_VIEW_COL_NAME, PRESET_VIEW_N_COLS }; +static gfloat equalizerwin_get_preamp (void); +static gfloat equalizerwin_get_band (gint band); +static void equalizerwin_set_preamp (gfloat preamp); +static void equalizerwin_set_band (gint band, gfloat value); + GtkWidget *equalizerwin; -GtkWidget *equalizerwin_graph; +static GtkWidget *equalizerwin_graph; static GtkWidget *equalizerwin_load_window = NULL; static GtkWidget *equalizerwin_load_auto_window = NULL; @@ -86,17 +78,9 @@ static GtkWidget *equalizerwin_preamp,*equalizerwin_bands[10]; static GtkWidget *equalizerwin_volume, *equalizerwin_balance; -static GList *equalizer_presets = NULL, *equalizer_auto_presets = NULL; +static Index * equalizer_presets = NULL, * equalizer_auto_presets = NULL; -EqualizerPreset * -equalizer_preset_new(const gchar * name) -{ - EqualizerPreset *preset = g_new0(EqualizerPreset, 1); - preset->name = g_strdup(name); - return preset; -} - -void +static void equalizer_preset_free(EqualizerPreset * preset) { if (!preset) @@ -108,69 +92,13 @@ void equalizerwin_set_shape (void) { - if (config.show_wm_decorations) - gtk_widget_shape_combine_mask (equalizerwin, 0, 0, 0); - else - gtk_widget_shape_combine_mask (equalizerwin, skin_get_mask - (aud_active_skin, config.equalizer_shaded ? SKIN_MASK_EQ_SHADE : - SKIN_MASK_EQ), 0, 0); -} - -void -equalizerwin_set_scaled(gboolean ds) -{ - gint height; - GList * list; - SkinnedWindow * skinned; - GtkFixed * fixed; - GtkFixedChild * child; + gint id = config.equalizer_shaded ? SKIN_MASK_EQ_SHADE : SKIN_MASK_EQ; - if (config.equalizer_shaded) - height = 14; - else - height = 116; - - if (config.scaled) - resize_window(equalizerwin, 275 * config.scale_factor, height * - config.scale_factor); - else - resize_window(equalizerwin, 275, height); - - skinned = (SkinnedWindow *) equalizerwin; - fixed = (GtkFixed *) skinned->normal; - - for (list = fixed->children; list; list = list->next) - { - child = (GtkFixedChild *) list->data; - g_signal_emit_by_name ((GObject *) child->widget, "toggle-scaled"); - } - - fixed = (GtkFixed *) skinned->shaded; - - for (list = fixed->children; list; list = list->next) - { - child = (GtkFixedChild *) list->data; - g_signal_emit_by_name ((GObject *) child->widget, "toggle-scaled"); - } - - equalizerwin_set_shape (); -} - -void -equalizerwin_set_shade_menu_cb(gboolean shaded) -{ - config.equalizer_shaded = shaded; - ui_skinned_window_set_shade(equalizerwin, shaded); - - if (shaded) { - dock_shade(get_dock_window_list(), GTK_WINDOW(equalizerwin), - 14 * EQUALIZER_SCALE_FACTOR); - } else { - dock_shade(get_dock_window_list(), GTK_WINDOW(equalizerwin), - 116 * EQUALIZER_SCALE_FACTOR); - } - - equalizerwin_set_shape (); +#ifdef MASK_IS_REGION + gtk_widget_shape_combine_region (equalizerwin, active_skin->masks[id]); +#else + gtk_widget_shape_combine_mask (equalizerwin, active_skin->masks[id], 0, 0); +#endif } static void @@ -190,13 +118,13 @@ void equalizerwin_eq_changed(void) { - gint i; + aud_set_double (NULL, "equalizer_preamp", equalizerwin_get_preamp ()); - aud_cfg->equalizer_preamp = equalizerwin_get_preamp(); - for (i = 0; i < AUD_EQUALIZER_NBANDS; i++) - aud_cfg->equalizer_bands[i] = equalizerwin_get_band(i); + double bands[AUD_EQUALIZER_NBANDS]; + for (gint i = 0; i < AUD_EQUALIZER_NBANDS; i ++) + bands[i] = equalizerwin_get_band (i); - hook_call("equalizer changed", NULL); + aud_eq_set_bands (bands); } static void @@ -212,39 +140,29 @@ equalizerwin_set_band(i, preset->bands[i]); } -static void -equalizerwin_on_pushed(void) -{ - equalizerwin_activate(!aud_cfg->equalizer_active); -} +static void eq_on_cb (GtkWidget * button, GdkEventButton * event) + {aud_set_bool (NULL, "equalizer_active", button_get_active (button)); } +static void eq_auto_cb (GtkWidget * button, GdkEventButton * event) + {aud_set_bool (NULL, "equalizer_autoload", button_get_active (equalizerwin_auto)); } -static void -update_from_config(void *unused1, void *unused2) +static void update_from_config (void * unused1, void * unused2) { - gint i; + button_set_active (equalizerwin_on, aud_get_bool (NULL, "equalizer_active")); + eq_slider_set_val (equalizerwin_preamp, aud_get_double (NULL, "equalizer_preamp")); - ui_skinned_button_set_inside(equalizerwin_on, aud_cfg->equalizer_active); - ui_skinned_equalizer_slider_set_position(equalizerwin_preamp, aud_cfg->equalizer_preamp); - for (i = 0; i < AUD_EQUALIZER_NBANDS; i++) - ui_skinned_equalizer_slider_set_position(equalizerwin_bands[i], aud_cfg->equalizer_bands[i]); - ui_skinned_equalizer_graph_update(equalizerwin_graph); -} + gdouble bands[AUD_EQUALIZER_NBANDS]; + aud_eq_get_bands (bands); -static void -equalizerwin_presets_pushed(void) -{ - GdkModifierType modmask; - gint x, y; + for (gint i = 0; i < AUD_EQUALIZER_NBANDS; i ++) + eq_slider_set_val (equalizerwin_bands[i], bands[i]); - gdk_window_get_pointer(NULL, &x, &y, &modmask); - ui_popup_menu_show(UI_MENU_EQUALIZER_PRESET, x, y, FALSE, FALSE, 1, - GDK_CURRENT_TIME); + eq_graph_update (equalizerwin_graph); } -static void -equalizerwin_auto_pushed(void) +static void eq_presets_cb (GtkWidget * button, GdkEventButton * event) { - aud_cfg->equalizer_autoload = UI_SKINNED_BUTTON(equalizerwin_auto)->inside; + ui_popup_menu_show (UI_MENU_EQUALIZER_PRESET, event->x_root, event->y_root, + FALSE, FALSE, event->button, event->time); } static GtkWidget * get_eq_effects_menu (void) @@ -257,15 +175,13 @@ return menu; } -gboolean +static gboolean equalizerwin_press(GtkWidget * widget, GdkEventButton * event, gpointer callback_data) { if (event->button == 1 && event->type == GDK_2BUTTON_PRESS && event->y < 14) { equalizerwin_set_shade(!config.equalizer_shaded); - if (dock_is_moving(GTK_WINDOW(equalizerwin))) - dock_move_release(GTK_WINDOW(equalizerwin)); return TRUE; } @@ -287,189 +203,180 @@ static gboolean equalizerwin_delete(GtkWidget *widget, void *data) { - if (config.show_wm_decorations) - equalizerwin_show(FALSE); - else - aud_drct_quit(); - + aud_drct_quit (); return TRUE; } -gint -equalizerwin_volume_frame_cb(gint pos) +static void eqwin_volume_set_knob (void) { - if (equalizerwin_volume) { - gint x; - if (pos < 32) - x = 1; - else if (pos < 63) - x = 4; - else - x = 7; + gint pos = hslider_get_pos (equalizerwin_volume); - UI_SKINNED_HORIZONTAL_SLIDER(equalizerwin_volume)->knob_nx = x; - UI_SKINNED_HORIZONTAL_SLIDER(equalizerwin_volume)->knob_px = x; - } - return 1; + gint x; + if (pos < 32) + x = 1; + else if (pos < 63) + x = 4; + else + x = 7; + + hslider_set_knob (equalizerwin_volume, x, 30, x, 30); } -static void -equalizerwin_volume_motion_cb(GtkWidget *widget, gint pos) +void equalizerwin_set_volume_slider (gint percent) +{ + hslider_set_pos (equalizerwin_volume, (percent * 94 + 50) / 100); + eqwin_volume_set_knob (); +} + +static void eqwin_volume_motion_cb (void) { - gint v = (gint) rint(pos * 100 / 94.0); + eqwin_volume_set_knob (); + gint pos = hslider_get_pos (equalizerwin_volume); + gint v = (pos * 100 + 47) / 94; + mainwin_adjust_volume_motion(v); mainwin_set_volume_slider(v); } -static void -equalizerwin_volume_release_cb(GtkWidget *widget, gint pos) +static void eqwin_volume_release_cb (void) { + eqwin_volume_set_knob (); mainwin_adjust_volume_release(); } -static gint -equalizerwin_balance_frame_cb(gint pos) +static void eqwin_balance_set_knob (void) { - if (equalizerwin_balance) { - gint x; - if (pos < 13) - x = 11; - else if (pos < 26) - x = 14; - else - x = 17; + gint pos = hslider_get_pos (equalizerwin_balance); - UI_SKINNED_HORIZONTAL_SLIDER(equalizerwin_balance)->knob_nx = x; - UI_SKINNED_HORIZONTAL_SLIDER(equalizerwin_balance)->knob_px = x; - } + gint x; + if (pos < 13) + x = 11; + else if (pos < 26) + x = 14; + else + x = 17; - return 1; + hslider_set_knob (equalizerwin_balance, x, 30, x, 30); } -static void -equalizerwin_balance_motion_cb(GtkWidget *widget, gint pos) +void equalizerwin_set_balance_slider (gint percent) { - gint b; + if (percent > 0) + hslider_set_pos (equalizerwin_balance, 19 + (percent * 19 + 50) / 100); + else + hslider_set_pos (equalizerwin_balance, 19 + (percent * 19 - 50) / 100); + + eqwin_balance_set_knob (); +} + +static void eqwin_balance_motion_cb (void) +{ + eqwin_balance_set_knob (); + gint pos = hslider_get_pos (equalizerwin_balance); pos = MIN(pos, 38); /* The skin uses a even number of pixels for the balance-slider *sigh* */ - b = (gint) rint((pos - 19) * 100 / 19.0); + gint b; + if (pos > 19) + b = ((pos - 19) * 100 + 9) / 19; + else + b = ((pos - 19) * 100 - 9) / 19; + mainwin_adjust_balance_motion(b); mainwin_set_balance_slider(b); } -static void -equalizerwin_balance_release_cb(GtkWidget *widget, gint pos) +static void eqwin_balance_release_cb (void) { + eqwin_balance_set_knob (); mainwin_adjust_balance_release(); } -void -equalizerwin_set_balance_slider(gint percent) +static void +equalizerwin_create_widgets(void) { - ui_skinned_horizontal_slider_set_position(equalizerwin_balance, - (gint) rint((percent * 19 / 100.0) + 19)); -} + equalizerwin_on = button_new_toggle (25, 12, 10, 119, 128, 119, 69, 119, 187, 119, SKIN_EQMAIN, SKIN_EQMAIN); + window_put_widget (equalizerwin, FALSE, equalizerwin_on, 14, 18); + button_set_active (equalizerwin_on, aud_get_bool (NULL, "equalizer_active")); + button_on_release (equalizerwin_on, eq_on_cb); -void -equalizerwin_set_volume_slider(gint percent) -{ - ui_skinned_horizontal_slider_set_position(equalizerwin_volume, - (gint) rint(percent * 94 / 100.0)); + equalizerwin_auto = button_new_toggle (33, 12, 35, 119, 153, 119, 94, 119, 212, 119, SKIN_EQMAIN, SKIN_EQMAIN); + window_put_widget (equalizerwin, FALSE, equalizerwin_auto, 39, 18); + button_set_active (equalizerwin_auto, aud_get_bool (NULL, "equalizer_autoload")); + button_on_release (equalizerwin_auto, eq_auto_cb); + + equalizerwin_presets = button_new (44, 12, 224, 164, 224, 176, SKIN_EQMAIN, SKIN_EQMAIN); + window_put_widget (equalizerwin, FALSE, equalizerwin_presets, 217, 18); + button_on_release (equalizerwin_presets, eq_presets_cb); + + equalizerwin_close = button_new (9, 9, 0, 116, 0, 125, SKIN_EQMAIN, SKIN_EQMAIN); + window_put_widget (equalizerwin, FALSE, equalizerwin_close, 264, 3); + button_on_release (equalizerwin_close, (ButtonCB) equalizerwin_close_cb); + + equalizerwin_shade = button_new (9, 9, 254, 137, 1, 38, SKIN_EQMAIN, SKIN_EQ_EX); + window_put_widget (equalizerwin, FALSE, equalizerwin_shade, 254, 3); + button_on_release (equalizerwin_shade, (ButtonCB) equalizerwin_shade_toggle); + + equalizerwin_shaded_close = button_new (9, 9, 11, 38, 11, 47, SKIN_EQ_EX, SKIN_EQ_EX); + window_put_widget (equalizerwin, TRUE, equalizerwin_shaded_close, 264, 3); + button_on_release (equalizerwin_shaded_close, (ButtonCB) equalizerwin_close_cb); + + equalizerwin_shaded_shade = button_new (9, 9, 254, 3, 1, 47, SKIN_EQ_EX, SKIN_EQ_EX); + window_put_widget (equalizerwin, TRUE, equalizerwin_shaded_shade, 254, 3); + button_on_release (equalizerwin_shaded_shade, (ButtonCB) equalizerwin_shade_toggle); + + equalizerwin_graph = eq_graph_new (); + window_put_widget (equalizerwin, FALSE, equalizerwin_graph, 86, 17); + + equalizerwin_preamp = eq_slider_new (_("Preamp")); + window_put_widget (equalizerwin, FALSE, equalizerwin_preamp, 21, 38); + eq_slider_set_val (equalizerwin_preamp, aud_get_double (NULL, "equalizer_preamp")); + + const gchar * const bandnames[AUD_EQUALIZER_NBANDS] = {N_("31 Hz"), + N_("63 Hz"), N_("125 Hz"), N_("250 Hz"), N_("500 Hz"), N_("1 kHz"), + N_("2 kHz"), N_("4 kHz"), N_("8 kHz"), N_("16 kHz")}; + gdouble bands[AUD_EQUALIZER_NBANDS]; + aud_eq_get_bands (bands); + + for (gint i = 0; i < AUD_EQUALIZER_NBANDS; i ++) + { + equalizerwin_bands[i] = eq_slider_new (_(bandnames[i])); + window_put_widget (equalizerwin, FALSE, equalizerwin_bands[i], 78 + 18 * i, 38); + eq_slider_set_val (equalizerwin_bands[i], bands[i]); + } + + equalizerwin_volume = hslider_new (0, 94, SKIN_EQ_EX, 97, 8, 61, 4, 3, 7, 1, 30, 1, 30); + window_put_widget (equalizerwin, TRUE, equalizerwin_volume, 61, 4); + hslider_on_motion (equalizerwin_volume, eqwin_volume_motion_cb); + hslider_on_release (equalizerwin_volume, eqwin_volume_release_cb); + + equalizerwin_balance = hslider_new (0, 39, SKIN_EQ_EX, 42, 8, 164, 4, 3, 7, 11, 30, 11, 30); + window_put_widget (equalizerwin, TRUE, equalizerwin_balance, 164, 4); + hslider_on_motion (equalizerwin_balance, eqwin_balance_motion_cb); + hslider_on_release (equalizerwin_balance, eqwin_balance_release_cb); } -static void -equalizerwin_create_widgets(void) +static void eq_win_draw (GtkWidget * window, cairo_t * cr) { - gint i; + gint height = config.equalizer_shaded ? 14 : 116; - equalizerwin_on = ui_skinned_button_new(); - ui_skinned_toggle_button_setup(equalizerwin_on, SKINNED_WINDOW(equalizerwin)->normal, - 14, 18, 25, 12, 10, 119, 128, 119, 69, 119, 187, 119, SKIN_EQMAIN); - g_signal_connect(equalizerwin_on, "clicked", equalizerwin_on_pushed, NULL); - ui_skinned_button_set_inside (equalizerwin_on, aud_cfg->equalizer_active); - - equalizerwin_auto = ui_skinned_button_new(); - ui_skinned_toggle_button_setup(equalizerwin_auto, SKINNED_WINDOW(equalizerwin)->normal, - 39, 18, 33, 12, 35, 119, 153, 119, 94, 119, 212, 119, SKIN_EQMAIN); - g_signal_connect(equalizerwin_auto, "clicked", equalizerwin_auto_pushed, NULL); - ui_skinned_button_set_inside(equalizerwin_auto, aud_cfg->equalizer_autoload); - - equalizerwin_presets = ui_skinned_button_new(); - ui_skinned_push_button_setup(equalizerwin_presets, SKINNED_WINDOW(equalizerwin)->normal, - 217, 18, 44, 12, 224, 164, 224, 176, SKIN_EQMAIN); - g_signal_connect(equalizerwin_presets, "clicked", equalizerwin_presets_pushed, NULL ); - - equalizerwin_close = ui_skinned_button_new(); - ui_skinned_push_button_setup(equalizerwin_close, SKINNED_WINDOW(equalizerwin)->normal, - 264, 3, 9, 9, 0, 116, 0, 125, SKIN_EQMAIN); - g_signal_connect(equalizerwin_close, "clicked", equalizerwin_close_cb, NULL ); - - equalizerwin_shade = ui_skinned_button_new(); - ui_skinned_push_button_setup(equalizerwin_shade, SKINNED_WINDOW(equalizerwin)->normal, - 254, 3, 9, 9, 254, 137, 1, 38, SKIN_EQMAIN); - ui_skinned_button_set_skin_index2(equalizerwin_shade, SKIN_EQ_EX); - g_signal_connect(equalizerwin_shade, "clicked", equalizerwin_shade_toggle, NULL ); - - equalizerwin_shaded_close = ui_skinned_button_new(); - ui_skinned_push_button_setup(equalizerwin_shaded_close, SKINNED_WINDOW(equalizerwin)->shaded, - 264, 3, 9, 9, 11, 38, 11, 47, SKIN_EQ_EX); - g_signal_connect(equalizerwin_shaded_close, "clicked", equalizerwin_close_cb, NULL ); - - equalizerwin_shaded_shade = ui_skinned_button_new(); - ui_skinned_push_button_setup(equalizerwin_shaded_shade, SKINNED_WINDOW(equalizerwin)->shaded, - 254, 3, 9, 9, 254, 3, 1, 47, SKIN_EQ_EX); - g_signal_connect(equalizerwin_shaded_shade, "clicked", equalizerwin_shade_toggle, NULL ); - - equalizerwin_graph = ui_skinned_equalizer_graph_new(SKINNED_WINDOW(equalizerwin)->normal, 86, 17); - - equalizerwin_preamp = ui_skinned_equalizer_slider_new(SKINNED_WINDOW(equalizerwin)->normal, 21, 38); - ui_skinned_equalizer_slider_set_position (equalizerwin_preamp, - aud_cfg->equalizer_preamp); - - for (i = 0; i < AUD_EQUALIZER_NBANDS; i++) { - equalizerwin_bands[i] = - ui_skinned_equalizer_slider_new(SKINNED_WINDOW(equalizerwin)->normal, 78 + (i * 18), 38); - ui_skinned_equalizer_slider_set_position (equalizerwin_bands [i], - aud_cfg->equalizer_bands [i]); - } - - equalizerwin_volume = - ui_skinned_horizontal_slider_new(SKINNED_WINDOW(equalizerwin)->shaded, - 61, 4, 97, 8, 1, 30, 1, 30, 3, 7, 4, 61, 0, 94, - equalizerwin_volume_frame_cb, SKIN_EQ_EX); - g_signal_connect(equalizerwin_volume, "motion", G_CALLBACK(equalizerwin_volume_motion_cb), NULL); - g_signal_connect(equalizerwin_volume, "release", G_CALLBACK(equalizerwin_volume_release_cb), NULL); - - - equalizerwin_balance = - ui_skinned_horizontal_slider_new(SKINNED_WINDOW(equalizerwin)->shaded, - 164, 4, 42, 8, 11, 30, 11, 30, 3, 7, 4, 164, 0, 39, - equalizerwin_balance_frame_cb, SKIN_EQ_EX); - g_signal_connect(equalizerwin_balance, "motion", G_CALLBACK(equalizerwin_balance_motion_cb), NULL); - g_signal_connect(equalizerwin_balance, "release", G_CALLBACK(equalizerwin_balance_release_cb), NULL); -} + skin_draw_pixbuf (cr, SKIN_EQMAIN, 0, 0, 0, 0, 275, height); + if (config.equalizer_shaded) + skin_draw_pixbuf (cr, SKIN_EQ_EX, 0, 0, 0, 0, 275, 14); + else + skin_draw_pixbuf (cr, SKIN_EQMAIN, 0, 134, 0, 0, 275, 14); +} static void equalizerwin_create_window(void) { GdkPixbuf *icon; - gint width, height; - width = 275; - height = config.equalizer_shaded ? 14 : 116; + equalizerwin = window_new (& config.equalizer_x, & config.equalizer_y, 275, + config.equalizer_shaded ? 14 : 116, FALSE, config.equalizer_shaded, + eq_win_draw); - equalizerwin = ui_skinned_window_new("equalizer", &config.equalizer_x, &config.equalizer_y); gtk_window_set_title(GTK_WINDOW(equalizerwin), _("Audacious Equalizer")); - gtk_window_set_role(GTK_WINDOW(equalizerwin), "equalizer"); - gtk_window_set_resizable(GTK_WINDOW(equalizerwin), FALSE); - - if (config.scaled && config.eq_scaled_linked) { - width *= config.scale_factor; - height *= config.scale_factor; - } - - gtk_widget_set_size_request(equalizerwin, width, height); /* this will hide only mainwin. it's annoying! yaz */ gtk_window_set_transient_for(GTK_WINDOW(equalizerwin), @@ -490,6 +397,13 @@ mainwin_keypress, 0); } +static void equalizerwin_destroyed (void) +{ + hook_dissociate ("set equalizer_active", (HookFunction) update_from_config); + hook_dissociate ("set equalizer_bands", (HookFunction) update_from_config); + hook_dissociate ("set equalizer_preamp", (HookFunction) update_from_config); +} + void equalizerwin_create(void) { @@ -501,128 +415,96 @@ gtk_window_add_accel_group( GTK_WINDOW(equalizerwin) , ui_manager_get_accel_group() ); equalizerwin_create_widgets(); + window_show_all (equalizerwin); - hook_associate("equalizer changed", (HookFunction) update_from_config, NULL); + g_signal_connect (equalizerwin, "destroy", (GCallback) equalizerwin_destroyed, NULL); - gtk_widget_show_all (((SkinnedWindow *) equalizerwin)->normal); - gtk_widget_show_all (((SkinnedWindow *) equalizerwin)->shaded); + hook_associate ("set equalizer_active", (HookFunction) update_from_config, NULL); + hook_associate ("set equalizer_bands", (HookFunction) update_from_config, NULL); + hook_associate ("set equalizer_preamp", (HookFunction) update_from_config, NULL); } -static void equalizerwin_real_show (void) +static void equalizerwin_real_show (gboolean show) { - if (config.scaled && config.eq_scaled_linked) - gtk_widget_set_size_request(equalizerwin, 275 * config.scale_factor, - ((config.equalizer_shaded ? 14 : 116) * config.scale_factor)); + if (show) + gtk_window_present ((GtkWindow *) equalizerwin); else - gtk_widget_set_size_request(equalizerwin, 275, - (config.equalizer_shaded ? 14 : 116)); - ui_skinned_button_set_inside(mainwin_eq, TRUE); - - gtk_window_present(GTK_WINDOW(equalizerwin)); + gtk_widget_hide (equalizerwin); } -static void equalizerwin_real_hide (void) +void equalizerwin_show (gboolean show) { - gtk_widget_hide(equalizerwin); - ui_skinned_button_set_inside(mainwin_eq, FALSE); -} - -void -equalizerwin_show(gboolean show) -{ - GtkAction * a; - - a = gtk_action_group_get_action (toggleaction_group_others, "show equalizer"); + GtkAction * a = gtk_action_group_get_action (toggleaction_group_others, + "show equalizer"); if (a && gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (a)) != show) gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (a), show); else { - if (show != config.equalizer_visible) { - config.equalizer_visible = show; - config.equalizer_visible_prev = !show; - aud_cfg->equalizer_visible = show; - } - - if (show) - equalizerwin_real_show (); - else - equalizerwin_real_hide (); + config.equalizer_visible = show; + button_set_active (mainwin_eq, show); + equalizerwin_real_show (config.player_visible && show); } - } +} -static EqualizerPreset * -equalizerwin_find_preset(GList * list, const gchar * name) +static int equalizerwin_find_preset (Index * list, const char * name) { - GList *node = list; - EqualizerPreset *preset; - - while (node) { - preset = node->data; + for (int p = 0; p < index_count (list); p ++) + { + EqualizerPreset * preset = index_get (list, p); if (!strcasecmp(preset->name, name)) - return preset; - node = g_list_next(node); + return p; } - return NULL; + + return -1; } -static gboolean -equalizerwin_load_preset(GList * list, const gchar * name) +static bool_t equalizerwin_load_preset (Index * list, const char * name) { - EqualizerPreset *preset; - gint i; + int p = equalizerwin_find_preset (list, name); + if (p < 0) + return FALSE; - if ((preset = equalizerwin_find_preset(list, name)) != NULL) { - equalizerwin_set_preamp(preset->preamp); - for (i = 0; i < AUD_EQUALIZER_NBANDS; i++) - equalizerwin_set_band(i, preset->bands[i]); + EqualizerPreset * preset = index_get (list, p); + equalizerwin_set_preamp (preset->preamp); - return TRUE; - } - return FALSE; + for (int i = 0; i < AUD_EQUALIZER_NBANDS; i ++) + equalizerwin_set_band (i, preset->bands[i]); + + return TRUE; } -static GList * -equalizerwin_save_preset(GList * list, const gchar * name, - const gchar * filename) +static void equalizerwin_save_preset (Index * list, const char * name, + const char * filename) { - gint i; - EqualizerPreset *preset; + int p = equalizerwin_find_preset (list, name); + EqualizerPreset * preset = (p >= 0) ? index_get (list, p) : NULL; - if (!(preset = equalizerwin_find_preset(list, name))) { + if (! preset) + { preset = g_new0(EqualizerPreset, 1); preset->name = g_strdup(name); - list = g_list_append(list, preset); + index_append (list, preset); } preset->preamp = equalizerwin_get_preamp(); - for (i = 0; i < AUD_EQUALIZER_NBANDS; i++) + for (int i = 0; i < AUD_EQUALIZER_NBANDS; i ++) preset->bands[i] = equalizerwin_get_band(i); aud_equalizer_write_preset_file(list, filename); - - return list; } -static GList * -equalizerwin_delete_preset(GList * list, gchar * name, gchar * filename) +static void equalizerwin_delete_preset (Index * list, gchar * name, gchar * filename) { - EqualizerPreset *preset; - GList *node; - - if (!(preset = equalizerwin_find_preset(list, name))) - return list; - - if (!(node = g_list_find(list, preset))) - return list; + int p = equalizerwin_find_preset (list, name); + if (p < 0) + return; - list = g_list_remove_link(list, node); + EqualizerPreset * preset = index_get (list, p); equalizer_preset_free(preset); - g_list_free_1(node); + index_delete (list, p, 1); aud_equalizer_write_preset_file(list, filename); - - return list; } static void @@ -661,40 +543,43 @@ gtk_tree_model_get(model, &iter, 0, &text, -1); if (!strcmp(filename, "eq.preset")) - equalizer_presets = equalizerwin_delete_preset(equalizer_presets, text, filename); + equalizerwin_delete_preset (equalizer_presets, text, filename); else if (!strcmp(filename, "eq.auto_preset")) - equalizer_auto_presets = equalizerwin_delete_preset(equalizer_auto_presets, text, filename); + equalizerwin_delete_preset (equalizer_auto_presets, text, filename); gtk_list_store_remove(GTK_LIST_STORE(model), &iter); } } -static void -free_cb (gpointer data, gpointer user_data) +static void free_presets (Index * presets) { - equalizer_preset_free((EqualizerPreset*)data); + for (int p = 0; p < index_count (presets); p ++) + equalizer_preset_free (index_get (presets, p)); + + index_free (presets); } static void equalizerwin_read_winamp_eqf(VFSFile * file) { - GList *presets; - gint i; - + Index * presets; if ((presets = aud_import_winamp_eqf(file)) == NULL) return; + if (! index_count (presets)) + goto DONE; + /* just get the first preset --asphyx */ - EqualizerPreset *preset = (EqualizerPreset*)presets->data; + EqualizerPreset * preset = index_get (presets, 0); equalizerwin_set_preamp(preset->preamp); - for (i = 0; i < AUD_EQUALIZER_NBANDS; i++) + for (int i = 0; i < AUD_EQUALIZER_NBANDS; i ++) equalizerwin_set_band(i, preset->bands[i]); - g_list_foreach(presets, free_cb, NULL); - g_list_free(presets); - equalizerwin_eq_changed(); + +DONE: + free_presets (presets); } static gboolean equalizerwin_read_aud_preset (const gchar * file) @@ -715,9 +600,10 @@ const gchar *text; text = gtk_entry_get_text(GTK_ENTRY(equalizerwin_save_entry)); - if (strlen(text) != 0) - equalizer_presets = - equalizerwin_save_preset(equalizer_presets, text, "eq.preset"); + + if (text[0]) + equalizerwin_save_preset (equalizer_presets, text, "eq.preset"); + gtk_widget_destroy(equalizerwin_save_window); } @@ -786,10 +672,10 @@ const gchar *text; text = gtk_entry_get_text(GTK_ENTRY(equalizerwin_save_auto_entry)); - if (strlen(text) != 0) - equalizer_auto_presets = - equalizerwin_save_preset(equalizer_auto_presets, text, - "eq.auto_preset"); + + if (text[0]) + equalizerwin_save_preset (equalizer_auto_presets, text, "eq.auto_preset"); + gtk_widget_destroy(equalizerwin_save_auto_window); } @@ -887,16 +773,20 @@ static void import_winamp_file(const gchar * filename) { - VFSFile *file; - GList *list; - - if (!(file = open_vfs_file(filename, "rb")) || - !(list = aud_import_winamp_eqf(file))) + VFSFile * file = open_vfs_file (filename, "r"); + if (! file) return; - equalizer_presets = g_list_concat(equalizer_presets, list); + Index * list = aud_import_winamp_eqf (file); + if (! list) + goto CLOSE; + + index_merge_append (equalizer_presets, list); + index_free (list); + aud_equalizer_write_preset_file(equalizer_presets, "eq.preset"); +CLOSE: vfs_fclose(file); } @@ -936,8 +826,7 @@ return FALSE; } -static GtkWidget * -equalizerwin_create_list_window(GList *preset_list, +static GtkWidget * equalizerwin_create_list_window (Index * preset_list, const gchar *title, GtkWidget **window, GtkSelectionMode sel_mode, @@ -948,7 +837,6 @@ { GtkWidget *vbox, *scrolled_window, *bbox, *view; GtkWidget *button_cancel, *button_action; - GList *node; GtkListStore *store; GtkTreeIter iter; @@ -980,12 +868,11 @@ /* fill the store with the names of all available presets */ store = gtk_list_store_new(1, G_TYPE_STRING); - for (node = preset_list; node; node = g_list_next(node)) + for (int p = 0; p < index_count (preset_list); p ++) { + EqualizerPreset * preset = index_get (preset_list, p); gtk_list_store_append(store, &iter); - gtk_list_store_set(store, &iter, - 0, ((EqualizerPreset*)node->data)->name, - -1); + gtk_list_store_set (store, & iter, 0, preset->name, -1); } model = GTK_TREE_MODEL(store); @@ -1023,14 +910,13 @@ gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); button_cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL); - g_signal_connect_swapped(button_cancel, "clicked", - G_CALLBACK(gtk_widget_destroy), - GTK_OBJECT(*window)); + g_signal_connect_swapped (button_cancel, "clicked", (GCallback) + gtk_widget_destroy, * window); gtk_box_pack_start(GTK_BOX(bbox), button_cancel, TRUE, TRUE, 0); button_action = gtk_button_new_from_stock(action_name); g_signal_connect(button_action, "clicked", G_CALLBACK(action_func), view); - GTK_WIDGET_SET_FLAGS(button_action, GTK_CAN_DEFAULT); + gtk_widget_set_can_default (button_action, TRUE); if (select_row_func) g_signal_connect(view, "row-activated", G_CALLBACK(select_row_func), NULL); @@ -1046,32 +932,28 @@ return *window; } -void -equalizerwin_set_preamp(gfloat preamp) +static void equalizerwin_set_preamp (gfloat preamp) { - ui_skinned_equalizer_slider_set_position(equalizerwin_preamp, preamp); + eq_slider_set_val (equalizerwin_preamp, preamp); equalizerwin_eq_changed(); } -void -equalizerwin_set_band(gint band, gfloat value) +static void equalizerwin_set_band (gint band, gfloat value) { g_return_if_fail(band >= 0 && band < AUD_EQUALIZER_NBANDS); - ui_skinned_equalizer_slider_set_position(equalizerwin_bands[band], value); + eq_slider_set_val (equalizerwin_bands[band], value); equalizerwin_eq_changed(); } -gfloat -equalizerwin_get_preamp(void) +static gfloat equalizerwin_get_preamp (void) { - return ui_skinned_equalizer_slider_get_position(equalizerwin_preamp); + return eq_slider_get_val (equalizerwin_preamp); } -gfloat -equalizerwin_get_band(gint band) +static gfloat equalizerwin_get_band (gint band) { g_return_val_if_fail(band >= 0 && band < AUD_EQUALIZER_NBANDS, 0.0); - return ui_skinned_equalizer_slider_get_position(equalizerwin_bands[band]); + return eq_slider_get_val (equalizerwin_bands[band]); } void @@ -1083,7 +965,7 @@ } equalizerwin_create_list_window(equalizer_presets, - Q_("Load preset"), + _("Load preset"), &equalizerwin_load_window, GTK_SELECTION_SINGLE, NULL, GTK_STOCK_OK, @@ -1100,7 +982,7 @@ } equalizerwin_create_list_window(equalizer_auto_presets, - Q_("Load auto-preset"), + _("Load auto-preset"), &equalizerwin_load_auto_window, GTK_SELECTION_SINGLE, NULL, GTK_STOCK_OK, @@ -1130,7 +1012,7 @@ GtkWidget *dialog; gchar *file_uri; - dialog = make_filebrowser(Q_("Load equalizer preset"), FALSE); + dialog = make_filebrowser(_("Load equalizer preset"), FALSE); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { file_uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog)); @@ -1148,7 +1030,7 @@ GtkWidget *dialog; gchar *file_uri; - dialog = make_filebrowser(Q_("Load equalizer preset"), FALSE); + dialog = make_filebrowser(_("Load equalizer preset"), FALSE); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { file_uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog)); @@ -1164,7 +1046,7 @@ GtkWidget *dialog; gchar *file_uri; - dialog = make_filebrowser(Q_("Load equalizer preset"), FALSE); + dialog = make_filebrowser(_("Load equalizer preset"), FALSE); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { file_uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog)); @@ -1183,7 +1065,7 @@ } equalizerwin_create_list_window(equalizer_presets, - Q_("Save preset"), + _("Save preset"), &equalizerwin_save_window, GTK_SELECTION_SINGLE, &equalizerwin_save_entry, @@ -1195,13 +1077,11 @@ void action_equ_save_auto_preset(void) { - gchar *name; - if (equalizerwin_save_auto_window) gtk_window_present(GTK_WINDOW(equalizerwin_save_auto_window)); else equalizerwin_create_list_window(equalizer_auto_presets, - Q_("Save auto-preset"), + _("Save auto-preset"), &equalizerwin_save_auto_window, GTK_SELECTION_SINGLE, &equalizerwin_save_auto_entry, @@ -1209,21 +1089,19 @@ G_CALLBACK(equalizerwin_save_auto_ok), G_CALLBACK(equalizerwin_save_auto_select)); - name = aud_drct_pl_get_file (aud_drct_pl_get_pos ()); + char * name = aud_drct_get_filename (); if (name != NULL) { gtk_entry_set_text(GTK_ENTRY(equalizerwin_save_auto_entry), g_basename(name)); - g_free(name); + str_unref (name); } } -void -action_equ_save_default_preset(void) +void action_equ_save_default_preset (void) { - equalizer_presets = - equalizerwin_save_preset(equalizer_presets, Q_("Default"), "eq.preset"); + equalizerwin_save_preset (equalizer_presets, _("Default"), "eq.preset"); } void @@ -1231,10 +1109,9 @@ { GtkWidget *dialog; gchar *file_uri; - gchar *songname; gint i; - dialog = make_filebrowser(Q_("Save equalizer preset"), TRUE); + dialog = make_filebrowser(_("Save equalizer preset"), TRUE); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { file_uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog)); @@ -1248,16 +1125,17 @@ g_free(file_uri); } - songname = aud_drct_pl_get_file (aud_drct_pl_get_pos ()); + char * songname = aud_drct_get_filename (); if (songname != NULL) { - gchar *eqname = g_strdup_printf("%s.%s", songname, - aud_cfg->eqpreset_extension); - g_free(songname); + gchar * ext = aud_get_string (NULL, "eqpreset_extension"); + gchar * eqname = g_strdup_printf ("%s.%s", songname, ext); gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), eqname); - g_free(eqname); + g_free (eqname); + g_free (ext); + str_unref (songname); } gtk_widget_destroy(dialog); @@ -1269,7 +1147,7 @@ GtkWidget *dialog; gchar *file_uri; - dialog = make_filebrowser(Q_("Save equalizer preset"), TRUE); + dialog = make_filebrowser(_("Save equalizer preset"), TRUE); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { file_uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog)); @@ -1288,9 +1166,9 @@ } equalizerwin_create_list_window(equalizer_presets, - Q_("Delete preset"), + _("Delete preset"), &equalizerwin_delete_window, - GTK_SELECTION_EXTENDED, NULL, + GTK_SELECTION_MULTIPLE, NULL, GTK_STOCK_DELETE, G_CALLBACK(equalizerwin_delete_delete), NULL); @@ -1305,53 +1183,49 @@ } equalizerwin_create_list_window(equalizer_auto_presets, - Q_("Delete auto-preset"), + _("Delete auto-preset"), &equalizerwin_delete_auto_window, - GTK_SELECTION_EXTENDED, NULL, + GTK_SELECTION_MULTIPLE, NULL, GTK_STOCK_DELETE, G_CALLBACK(equalizerwin_delete_auto_delete), NULL); } -void -equalizerwin_activate(gboolean active) -{ - aud_cfg->equalizer_active = active; - ui_skinned_button_set_inside(equalizerwin_on, active); - equalizerwin_eq_changed(); -} - static void load_auto_preset (const gchar * filename) { - gchar * base; - - if (aud_cfg->eqpreset_extension != NULL) + gchar * ext = aud_get_string (NULL, "eqpreset_extension"); + if (ext[0]) { - gchar * eq_file = g_strconcat (filename, ".", - aud_cfg->eqpreset_extension, NULL); + gchar * eq_file = g_strconcat (filename, ".", ext, NULL); gboolean success = equalizerwin_read_aud_preset (eq_file); - g_free (eq_file); if (success) + { + g_free (ext); return; + } } + g_free (ext); - if (aud_cfg->eqpreset_default_file != NULL) + gchar * deffile = aud_get_string (NULL, "eqpreset_default_file"); + if (deffile[0]) { gchar * folder = g_path_get_dirname (filename); - gchar * eq_file = g_build_filename (folder, - aud_cfg->eqpreset_default_file, NULL); + gchar * eq_file = g_build_filename (folder, deffile, NULL); gboolean success = equalizerwin_read_aud_preset (eq_file); - g_free (folder); g_free (eq_file); if (success) + { + g_free (deffile); return; + } } + g_free (deffile); - base = g_path_get_basename (filename); + gchar * base = g_path_get_basename (filename); if (! equalizerwin_load_preset (equalizer_auto_presets, base)) { @@ -1367,15 +1241,20 @@ gint playlist = GPOINTER_TO_INT (data); gint position = aud_playlist_get_position (playlist); - if (! aud_cfg->equalizer_autoload || playlist != aud_playlist_get_playing () - || position == -1) + if (! aud_get_bool (NULL, "equalizer_autoload") || playlist != + aud_playlist_get_playing () || position == -1) return; - load_auto_preset (aud_playlist_entry_get_filename (playlist, position)); + gchar * filename = aud_playlist_entry_get_filename (playlist, position); + load_auto_preset (filename); + str_unref (filename); } void eq_init_hooks (void) { + equalizer_presets = index_new (); + equalizer_auto_presets = index_new (); + gint playlist = aud_playlist_get_playing (); /* Load preset for the first song. FIXME: Doing this at interface load is @@ -1390,4 +1269,23 @@ void eq_end_hooks (void) { hook_dissociate ("playlist position", position_cb); + + free_presets (equalizer_presets); + free_presets (equalizer_auto_presets); + equalizer_presets = NULL; + equalizer_auto_presets = NULL; +} + +void action_show_equalizer (GtkToggleAction * action) +{ + equalizerwin_show (gtk_toggle_action_get_active (action)); +} + +void action_roll_up_equalizer (GtkToggleAction * action) +{ + config.equalizer_shaded = gtk_toggle_action_get_active (action); + + window_set_shaded (equalizerwin, config.equalizer_shaded); + window_set_size (equalizerwin, 275, config.equalizer_shaded ? 14 : 116); + equalizerwin_set_shape (); } diff -Nru audacious-plugins-2.4.4/src/skins/ui_equalizer.h audacious-plugins-3.2/src/skins/ui_equalizer.h --- audacious-plugins-2.4.4/src/skins/ui_equalizer.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_equalizer.h 2012-01-20 19:48:30.000000000 +0000 @@ -23,48 +23,21 @@ * Audacious or using our public API to be a derived work. */ -#ifndef AUDACIOUS_UI_EQUALIZER_H -#define AUDACIOUS_UI_EQUALIZER_H +#ifndef SKINS_UI_EQUALIZER_H +#define SKINS_UI_EQUALIZER_H -#include #include -#include "skins_cfg.h" - -#define EQUALIZER_SCALED (config.scaled && config.eq_scaled_linked) -#define EQUALIZER_SCALE_FACTOR (EQUALIZER_SCALED ? config.scale_factor : 1) - -#define EQUALIZER_HEIGHT ((config.equalizer_shaded ? 14 : 116) * (EQUALIZER_SCALE_FACTOR)) -#define EQUALIZER_WIDTH (275 * EQUALIZER_SCALE_FACTOR) - -#define EQUALIZER_DEFAULT_POS_X 20 -#define EQUALIZER_DEFAULT_POS_Y 136 - -#define EQUALIZER_DEFAULT_DIR_PRESET "dir_default.preset" -#define EQUALIZER_DEFAULT_PRESET_EXT "preset" void eq_init_hooks (void); void eq_end_hooks (void); void equalizerwin_set_shape (void); -void equalizerwin_set_scaled(gboolean ds); -void equalizerwin_set_shade_menu_cb(gboolean shaded); -void draw_equalizer_window(gboolean force); void equalizerwin_create(void); void equalizerwin_show(gboolean show); void equalizerwin_set_volume_slider(gint percent); void equalizerwin_set_balance_slider(gint percent); void equalizerwin_eq_changed(void); -void equalizerwin_set_preamp(gfloat preamp); -void equalizerwin_set_band(gint band, gfloat value); -gfloat equalizerwin_get_preamp(void); -gfloat equalizerwin_get_band(gint band); - -gboolean equalizerwin_has_focus(void); extern GtkWidget *equalizerwin; -extern GtkWidget *equalizerwin_graph; -extern gboolean equalizerwin_focus; - -void equalizerwin_activate(gboolean active); -#endif /* AUDACIOUS_UI_EQUALIZER_H */ +#endif /* SKINS_UI_EQUALIZER_H */ diff -Nru audacious-plugins-2.4.4/src/skins/ui_hints.c audacious-plugins-3.2/src/skins/ui_hints.c --- audacious-plugins-2.4.4/src/skins/ui_hints.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_hints.c 2012-01-20 19:48:30.000000000 +0000 @@ -23,17 +23,13 @@ * Audacious or using our public API to be a derived work. */ -#include "ui_hints.h" - -#include #include #include "ui_equalizer.h" +#include "ui_hints.h" #include "ui_main.h" #include "ui_playlist.h" -#include "platform/smartinclude.h" - void hint_set_always(gboolean always) { @@ -56,4 +52,3 @@ gtk_window_unstick(GTK_WINDOW(playlistwin)); } } - diff -Nru audacious-plugins-2.4.4/src/skins/ui_hints.h audacious-plugins-3.2/src/skins/ui_hints.h --- audacious-plugins-2.4.4/src/skins/ui_hints.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_hints.h 2012-01-20 19:48:30.000000000 +0000 @@ -23,13 +23,12 @@ * Audacious or using our public API to be a derived work. */ -#ifndef AUDACIOUS_UI_HINTS_H -#define AUDACIOUS_UI_HINTS_H +#ifndef SKINS_UI_HINTS_H +#define SKINS_UI_HINTS_H -#include #include void hint_set_always(gboolean always); void hint_set_sticky(gboolean sticky); -#endif /* AUDACIOUS_UI_HINTS_H */ +#endif /* SKINS_UI_HINTS_H */ diff -Nru audacious-plugins-2.4.4/src/skins/ui_main.c audacious-plugins-3.2/src/skins/ui_main.c --- audacious-plugins-2.4.4/src/skins/ui_main.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_main.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,5 @@ /* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2006 Audacious development team. + * Copyright (C) 2005-2011 Audacious development team. * * BMP - Cross-platform multimedia player * Copyright (C) 2003-2004 BMP development team. @@ -23,59 +23,42 @@ * Audacious or using our public API to be a derived work. */ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include -#include #include #include -#include -#include +#include + +#include +#include -#include #include +#include #include -#include +#include #include #include #include -/* GDK including */ -#include "platform/smartinclude.h" - -#if defined(USE_REGEX_ONIGURUMA) -#include -#elif defined(USE_REGEX_PCRE) -#include -#else -#include -#endif - +#include "actions-mainwin.h" #include "actions-playlist.h" +#include "config.h" +#include "dnd.h" +#include "skins_cfg.h" +#include "ui_equalizer.h" +#include "ui_hints.h" #include "ui_main.h" -#include "ui_dock.h" -#include "actions-mainwin.h" +#include "ui_main_evlisteners.h" #include "ui_manager.h" -#include "ui_equalizer.h" #include "ui_playlist.h" -#include "ui_hints.h" -#include "dnd.h" -#include "plugin.h" -#include "ui_skinned_window.h" #include "ui_skinned_button.h" -#include "ui_skinned_textbox.h" -#include "ui_skinned_number.h" #include "ui_skinned_horizontal_slider.h" #include "ui_skinned_menurow.h" -#include "ui_skinned_playstatus.h" #include "ui_skinned_monostereo.h" +#include "ui_skinned_number.h" #include "ui_skinned_playlist.h" -#include "ui_main_evlisteners.h" -#include "skins_cfg.h" +#include "ui_skinned_playstatus.h" +#include "ui_skinned_textbox.h" +#include "ui_skinned_window.h" +#include "ui_vis.h" #include "util.h" #define SEEK_THRESHOLD 200 /* milliseconds */ @@ -85,9 +68,7 @@ GtkWidget *mainwin = NULL; static gint balance; -static gint seek_source = 0, seek_start, seek_event_time, seek_time; - -static GtkWidget *mainwin_jtt = NULL; +static gint seek_source = 0, seek_start, seek_time; static GtkWidget *mainwin_menubtn, *mainwin_minimize, *mainwin_shade, *mainwin_close; static GtkWidget *mainwin_shaded_menubtn, *mainwin_shaded_minimize, *mainwin_shaded_shade, *mainwin_shaded_close; @@ -128,39 +109,31 @@ static int ab_position_a = -1; static int ab_position_b = -1; -static void mainwin_refresh_visible(void); - -static void set_timer_mode_menu_cb(TimerMode mode); -static void set_timer_mode(TimerMode mode); static void change_timer_mode(void); +static void mainwin_position_motion_cb (void); +static void mainwin_position_release_cb (void); +static void mainwin_set_volume_diff (gint diff); -static void mainwin_position_motion_cb(GtkWidget *widget, gint pos); -static void mainwin_position_release_cb(GtkWidget *widget, gint pos); - -static void set_scaled(gboolean scaled); -static void mainwin_eq_pushed(gboolean toggled); -static void mainwin_pl_pushed(gboolean toggled); - -static void -mainwin_set_title_scroll(gboolean scroll) -{ - config.autoscroll = scroll; - ui_skinned_textbox_set_scroll(mainwin_info, config.autoscroll); -} - -void mainwin_set_sticky (gboolean sticky) +static void format_time (gchar buf[7], gint time, gint length) { - gtk_toggle_action_set_active ((GtkToggleAction *) - gtk_action_group_get_action (toggleaction_group_others, - "view put on all workspaces"), sticky); -} + if (config.timer_mode == TIMER_REMAINING && length > 0) + { + if (length - time < 60000) /* " -0:SS" */ + snprintf (buf, 7, " -0:%02d", (length - time) / 1000); + else if (length - time < 6000000) /* "-MM:SS" */ + snprintf (buf, 7, "%3d:%02d", (time - length) / 60000, (length - time) / 1000 % 60); + else /* "-HH:MM" */ + snprintf (buf, 7, "%3d:%02d", (time - length) / 3600000, (length - time) / 60000 % 60); + } + else + { + if (time < 60000000) /* MMM:SS */ + snprintf (buf, 7, "%3d:%02d", time / 60000, time / 1000 % 60); + else /* HHH:MM */ + snprintf (buf, 7, "%3d:%02d", time / 3600000, time / 60000 % 60); + } -void -mainwin_set_always_on_top(gboolean always) -{ - GtkAction *action = gtk_action_group_get_action(toggleaction_group_others, - "view always on top"); - gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(action) , always ); + buf[3] = 0; } static void @@ -173,60 +146,16 @@ void mainwin_set_shape (void) { - if (config.show_wm_decorations) - gtk_widget_shape_combine_mask (mainwin, 0, 0, 0); - else - gtk_widget_shape_combine_mask (mainwin, skin_get_mask (aud_active_skin, - config.player_shaded ? SKIN_MASK_MAIN_SHADE : SKIN_MASK_MAIN), 0, 0); -} - -static void -mainwin_set_shade_menu_cb(gboolean shaded) -{ - config.player_shaded = shaded; - ui_skinned_window_set_shade(mainwin, shaded); - - if (shaded) { - dock_shade(get_dock_window_list(), GTK_WINDOW(mainwin), - MAINWIN_SHADED_HEIGHT * MAINWIN_SCALE_FACTOR); - } else { - gint height = !aud_active_skin->properties.mainwin_height ? MAINWIN_HEIGHT : - aud_active_skin->properties.mainwin_height; - - dock_shade(get_dock_window_list(), GTK_WINDOW(mainwin), height * MAINWIN_SCALE_FACTOR); - } + gint id = config.player_shaded ? SKIN_MASK_MAIN_SHADE : SKIN_MASK_MAIN; - mainwin_set_shape (); -} - -static void -mainwin_vis_set_afalloff(FalloffSpeed speed) -{ - config.analyzer_falloff = speed; -} - -static void -mainwin_vis_set_pfalloff(FalloffSpeed speed) -{ - config.peaks_falloff = speed; -} - -static void -mainwin_vis_set_analyzer_mode(AnalyzerMode mode) -{ - config.analyzer_mode = mode; -} - -static void -mainwin_vis_set_analyzer_type(AnalyzerType mode) -{ - config.analyzer_type = mode; - ui_vis_clear_data (mainwin_vis); - ui_svis_clear_data (mainwin_svis); +#ifdef MASK_IS_REGION + gtk_widget_shape_combine_region (mainwin, active_skin->masks[id]); +#else + gtk_widget_shape_combine_mask (mainwin, active_skin->masks[id], 0, 0); +#endif } -void -mainwin_vis_set_type(VisType mode) +static void mainwin_vis_set_type (VisType mode) { GtkAction *action; @@ -255,27 +184,15 @@ } static void -mainwin_vis_set_type_menu_cb(VisType mode) -{ - config.vis_type = mode; - ui_vis_clear_data (mainwin_vis); - ui_svis_clear_data (mainwin_svis); - - start_stop_visual (FALSE); -} - -static void mainwin_menubtn_cb(void) { gint x, y; gtk_window_get_position(GTK_WINDOW(mainwin), &x, &y); - ui_popup_menu_show(UI_MENU_MAIN, x + 6 * MAINWIN_SCALE_FACTOR, y + - MAINWIN_SHADED_HEIGHT * MAINWIN_SCALE_FACTOR, FALSE, FALSE, 1, - GDK_CURRENT_TIME); + ui_popup_menu_show (UI_MENU_MAIN, x + 6, y + MAINWIN_SHADED_HEIGHT, FALSE, + FALSE, 1, GDK_CURRENT_TIME); } -void -mainwin_minimize_cb(void) +static void mainwin_minimize_cb (void) { if (!mainwin) return; @@ -289,8 +206,7 @@ mainwin_set_shade(!config.player_shaded); } -gboolean -mainwin_vis_cb(GtkWidget *widget, GdkEventButton *event) +static gboolean mainwin_vis_cb (GtkWidget * widget, GdkEventButton * event) { if (event->button == 1) { config.vis_type++; @@ -323,31 +239,30 @@ static gchar *mainwin_tb_old_text = NULL; -void -mainwin_lock_info_text(const gchar * text) +static void mainwin_lock_info_text (const gchar * text) { if (mainwin_info_text_locked != TRUE) - mainwin_tb_old_text = g_strdup(aud_active_skin->properties.mainwin_othertext_is_status ? - UI_SKINNED_TEXTBOX(mainwin_othertext)->text : UI_SKINNED_TEXTBOX(mainwin_info)->text); + mainwin_tb_old_text = g_strdup + (active_skin->properties.mainwin_othertext_is_status ? + textbox_get_text (mainwin_othertext) : textbox_get_text (mainwin_info)); mainwin_info_text_locked = TRUE; - if (aud_active_skin->properties.mainwin_othertext_is_status) - ui_skinned_textbox_set_text(mainwin_othertext, text); + if (active_skin->properties.mainwin_othertext_is_status) + textbox_set_text (mainwin_othertext, text); else - ui_skinned_textbox_set_text(mainwin_info, text); + textbox_set_text (mainwin_info, text); } -void -mainwin_release_info_text(void) +static void mainwin_release_info_text (void) { mainwin_info_text_locked = FALSE; if (mainwin_tb_old_text != NULL) { - if (aud_active_skin->properties.mainwin_othertext_is_status) - ui_skinned_textbox_set_text(mainwin_othertext, mainwin_tb_old_text); + if (active_skin->properties.mainwin_othertext_is_status) + textbox_set_text (mainwin_othertext, mainwin_tb_old_text); else - ui_skinned_textbox_set_text(mainwin_info, mainwin_tb_old_text); + textbox_set_text (mainwin_info, mainwin_tb_old_text); g_free(mainwin_tb_old_text); mainwin_tb_old_text = NULL; } @@ -369,7 +284,7 @@ return FALSE; } -static void show_status_message (const gchar * message) +void mainwin_show_status_message (const gchar * message) { if (! status_message_enabled) return; @@ -398,7 +313,7 @@ g_free(mainwin_title_text); mainwin_release_info_text (); - ui_skinned_textbox_set_text (mainwin_info, title != NULL ? title : ""); + textbox_set_text (mainwin_info, title != NULL ? title : ""); } static void show_hide_widget (GtkWidget * widget, char show) @@ -413,153 +328,89 @@ mainwin_refresh_visible(void) { show_hide_widget (mainwin_info, - aud_active_skin->properties.mainwin_text_visible); + active_skin->properties.mainwin_text_visible); show_hide_widget (mainwin_vis, - aud_active_skin->properties.mainwin_vis_visible); + active_skin->properties.mainwin_vis_visible); show_hide_widget (mainwin_menurow, - aud_active_skin->properties.mainwin_menurow_visible); + active_skin->properties.mainwin_menurow_visible); show_hide_widget (mainwin_rate_text, - ! aud_active_skin->properties.mainwin_othertext); + active_skin->properties.mainwin_streaminfo_visible); show_hide_widget (mainwin_freq_text, - ! aud_active_skin->properties.mainwin_othertext); + active_skin->properties.mainwin_streaminfo_visible); show_hide_widget (mainwin_monostereo, - ! aud_active_skin->properties.mainwin_othertext); + active_skin->properties.mainwin_streaminfo_visible); show_hide_widget (mainwin_othertext, - aud_active_skin->properties.mainwin_othertext && - aud_active_skin->properties.mainwin_othertext_visible); + active_skin->properties.mainwin_othertext_visible); } void mainwin_refresh_hints(void) { - /* positioning and size attributes */ - if (aud_active_skin->properties.mainwin_vis_x && aud_active_skin->properties.mainwin_vis_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_vis), aud_active_skin->properties.mainwin_vis_x, - aud_active_skin->properties.mainwin_vis_y); - - if (aud_active_skin->properties.mainwin_vis_width) - gtk_widget_set_size_request(mainwin_vis, aud_active_skin->properties.mainwin_vis_width * MAINWIN_SCALE_FACTOR, - UI_VIS(mainwin_vis)->height* MAINWIN_SCALE_FACTOR); - - if (aud_active_skin->properties.mainwin_text_x && aud_active_skin->properties.mainwin_text_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_info), aud_active_skin->properties.mainwin_text_x, - aud_active_skin->properties.mainwin_text_y); - - if (aud_active_skin->properties.mainwin_text_width) { - UI_SKINNED_TEXTBOX(mainwin_info)->width = aud_active_skin->properties.mainwin_text_width; - gtk_widget_set_size_request (mainwin_info, aud_active_skin->properties. - mainwin_text_width * MAINWIN_SCALE_FACTOR, -1); - } - - if (aud_active_skin->properties.mainwin_infobar_x && aud_active_skin->properties.mainwin_infobar_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_othertext), aud_active_skin->properties.mainwin_infobar_x, - aud_active_skin->properties.mainwin_infobar_y); - - if (aud_active_skin->properties.mainwin_number_0_x && aud_active_skin->properties.mainwin_number_0_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_minus_num), aud_active_skin->properties.mainwin_number_0_x, - aud_active_skin->properties.mainwin_number_0_y); - - if (aud_active_skin->properties.mainwin_number_1_x && aud_active_skin->properties.mainwin_number_1_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_10min_num), aud_active_skin->properties.mainwin_number_1_x, - aud_active_skin->properties.mainwin_number_1_y); - - if (aud_active_skin->properties.mainwin_number_2_x && aud_active_skin->properties.mainwin_number_2_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_min_num), aud_active_skin->properties.mainwin_number_2_x, - aud_active_skin->properties.mainwin_number_2_y); - - if (aud_active_skin->properties.mainwin_number_3_x && aud_active_skin->properties.mainwin_number_3_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_10sec_num), aud_active_skin->properties.mainwin_number_3_x, - aud_active_skin->properties.mainwin_number_3_y); - - if (aud_active_skin->properties.mainwin_number_4_x && aud_active_skin->properties.mainwin_number_4_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_sec_num), aud_active_skin->properties.mainwin_number_4_x, - aud_active_skin->properties.mainwin_number_4_y); - - if (aud_active_skin->properties.mainwin_playstatus_x && aud_active_skin->properties.mainwin_playstatus_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), mainwin_playstatus, aud_active_skin->properties.mainwin_playstatus_x, - aud_active_skin->properties.mainwin_playstatus_y); - - if (aud_active_skin->properties.mainwin_volume_x && aud_active_skin->properties.mainwin_volume_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_volume), aud_active_skin->properties.mainwin_volume_x, - aud_active_skin->properties.mainwin_volume_y); - - if (aud_active_skin->properties.mainwin_balance_x && aud_active_skin->properties.mainwin_balance_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_balance), aud_active_skin->properties.mainwin_balance_x, - aud_active_skin->properties.mainwin_balance_y); - - if (aud_active_skin->properties.mainwin_position_x && aud_active_skin->properties.mainwin_position_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_position), aud_active_skin->properties.mainwin_position_x, - aud_active_skin->properties.mainwin_position_y); - - if (aud_active_skin->properties.mainwin_previous_x && aud_active_skin->properties.mainwin_previous_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), mainwin_rew, aud_active_skin->properties.mainwin_previous_x, - aud_active_skin->properties.mainwin_previous_y); - - if (aud_active_skin->properties.mainwin_play_x && aud_active_skin->properties.mainwin_play_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_play), aud_active_skin->properties.mainwin_play_x, - aud_active_skin->properties.mainwin_play_y); - - if (aud_active_skin->properties.mainwin_pause_x && aud_active_skin->properties.mainwin_pause_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_pause), aud_active_skin->properties.mainwin_pause_x, - aud_active_skin->properties.mainwin_pause_y); - - if (aud_active_skin->properties.mainwin_stop_x && aud_active_skin->properties.mainwin_stop_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_stop), aud_active_skin->properties.mainwin_stop_x, - aud_active_skin->properties.mainwin_stop_y); - - if (aud_active_skin->properties.mainwin_next_x && aud_active_skin->properties.mainwin_next_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_fwd), aud_active_skin->properties.mainwin_next_x, - aud_active_skin->properties.mainwin_next_y); - - if (aud_active_skin->properties.mainwin_eject_x && aud_active_skin->properties.mainwin_eject_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_eject), aud_active_skin->properties.mainwin_eject_x, - aud_active_skin->properties.mainwin_eject_y); - - if (aud_active_skin->properties.mainwin_eqbutton_x && aud_active_skin->properties.mainwin_eqbutton_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_eq), aud_active_skin->properties.mainwin_eqbutton_x, - aud_active_skin->properties.mainwin_eqbutton_y); - - if (aud_active_skin->properties.mainwin_plbutton_x && aud_active_skin->properties.mainwin_plbutton_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_pl), aud_active_skin->properties.mainwin_plbutton_x, - aud_active_skin->properties.mainwin_plbutton_y); - - if (aud_active_skin->properties.mainwin_shuffle_x && aud_active_skin->properties.mainwin_shuffle_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_shuffle), aud_active_skin->properties.mainwin_shuffle_x, - aud_active_skin->properties.mainwin_shuffle_y); - - if (aud_active_skin->properties.mainwin_repeat_x && aud_active_skin->properties.mainwin_repeat_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_repeat), aud_active_skin->properties.mainwin_repeat_x, - aud_active_skin->properties.mainwin_repeat_y); - - if (aud_active_skin->properties.mainwin_about_x && aud_active_skin->properties.mainwin_about_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_about), aud_active_skin->properties.mainwin_about_x, - aud_active_skin->properties.mainwin_about_y); - - if (aud_active_skin->properties.mainwin_minimize_x && aud_active_skin->properties.mainwin_minimize_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_minimize), config.player_shaded ? 244 : aud_active_skin->properties.mainwin_minimize_x, - config.player_shaded ? 3 : aud_active_skin->properties.mainwin_minimize_y); - - if (aud_active_skin->properties.mainwin_shade_x && aud_active_skin->properties.mainwin_shade_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_shade), aud_active_skin->properties.mainwin_shade_x, - aud_active_skin->properties.mainwin_shade_y); - - if (aud_active_skin->properties.mainwin_close_x && aud_active_skin->properties.mainwin_close_y) - gtk_fixed_move(GTK_FIXED(SKINNED_WINDOW(mainwin)->normal), GTK_WIDGET(mainwin_close), aud_active_skin->properties.mainwin_close_x, - aud_active_skin->properties.mainwin_close_y); + SkinProperties * p = & active_skin->properties; + + if (p->mainwin_vis_x && p->mainwin_vis_y) + window_move_widget (mainwin, FALSE, mainwin_vis, p->mainwin_vis_x, p->mainwin_vis_y); + if (p->mainwin_text_x && p->mainwin_text_y) + window_move_widget (mainwin, FALSE, mainwin_info, p->mainwin_text_x, p->mainwin_text_y); + if (p->mainwin_text_width) + textbox_set_width (mainwin_info, p->mainwin_text_width); + if (p->mainwin_infobar_x && p->mainwin_infobar_y) + window_move_widget (mainwin, FALSE, mainwin_othertext, p->mainwin_infobar_x, p->mainwin_infobar_y); + if (p->mainwin_number_0_x && p->mainwin_number_0_y) + window_move_widget (mainwin, FALSE, mainwin_minus_num, p->mainwin_number_0_x, p->mainwin_number_0_y); + if (p->mainwin_number_1_x && p->mainwin_number_1_y) + window_move_widget (mainwin, FALSE, mainwin_10min_num, p->mainwin_number_1_x, p->mainwin_number_1_y); + if (p->mainwin_number_2_x && p->mainwin_number_2_y) + window_move_widget (mainwin, FALSE, mainwin_min_num, p->mainwin_number_2_x, p->mainwin_number_2_y); + if (p->mainwin_number_3_x && p->mainwin_number_3_y) + window_move_widget (mainwin, FALSE, mainwin_10sec_num, p->mainwin_number_3_x, p->mainwin_number_3_y); + if (p->mainwin_number_4_x && p->mainwin_number_4_y) + window_move_widget (mainwin, FALSE, mainwin_sec_num, p->mainwin_number_4_x, p->mainwin_number_4_y); + if (p->mainwin_playstatus_x && p->mainwin_playstatus_y) + window_move_widget (mainwin, FALSE, mainwin_playstatus, p->mainwin_playstatus_x, p->mainwin_playstatus_y); + if (p->mainwin_volume_x && p->mainwin_volume_y) + window_move_widget (mainwin, FALSE, mainwin_volume, p->mainwin_volume_x, p->mainwin_volume_y); + if (p->mainwin_balance_x && p->mainwin_balance_y) + window_move_widget (mainwin, FALSE, mainwin_balance, p->mainwin_balance_x, p->mainwin_balance_y); + if (p->mainwin_position_x && p->mainwin_position_y) + window_move_widget (mainwin, FALSE, mainwin_position, p->mainwin_position_x, p->mainwin_position_y); + if (p->mainwin_previous_x && p->mainwin_previous_y) + window_move_widget (mainwin, FALSE, mainwin_rew, p->mainwin_previous_x, p->mainwin_previous_y); + if (p->mainwin_play_x && p->mainwin_play_y) + window_move_widget (mainwin, FALSE, mainwin_play, p->mainwin_play_x, p->mainwin_play_y); + if (p->mainwin_pause_x && p->mainwin_pause_y) + window_move_widget (mainwin, FALSE, mainwin_pause, p->mainwin_pause_x, p->mainwin_pause_y); + if (p->mainwin_stop_x && p->mainwin_stop_y) + window_move_widget (mainwin, FALSE, mainwin_stop, p->mainwin_stop_x, p->mainwin_stop_y); + if (p->mainwin_next_x && p->mainwin_next_y) + window_move_widget (mainwin, FALSE, mainwin_fwd, p->mainwin_next_x, p->mainwin_next_y); + if (p->mainwin_eject_x && p->mainwin_eject_y) + window_move_widget (mainwin, FALSE, mainwin_eject, p->mainwin_eject_x, p->mainwin_eject_y); + if (p->mainwin_eqbutton_x && p->mainwin_eqbutton_y) + window_move_widget (mainwin, FALSE, mainwin_eq, p->mainwin_eqbutton_x, p->mainwin_eqbutton_y); + if (p->mainwin_plbutton_x && p->mainwin_plbutton_y) + window_move_widget (mainwin, FALSE, mainwin_pl, p->mainwin_plbutton_x, p->mainwin_plbutton_y); + if (p->mainwin_shuffle_x && p->mainwin_shuffle_y) + window_move_widget (mainwin, FALSE, mainwin_shuffle, p->mainwin_shuffle_x, p->mainwin_shuffle_y); + if (p->mainwin_repeat_x && p->mainwin_repeat_y) + window_move_widget (mainwin, FALSE, mainwin_repeat, p->mainwin_repeat_x, p->mainwin_repeat_y); + if (p->mainwin_about_x && p->mainwin_about_y) + window_move_widget (mainwin, FALSE, mainwin_about, p->mainwin_about_x, p->mainwin_about_y); + if (p->mainwin_minimize_x && p->mainwin_minimize_y) + window_move_widget (mainwin, FALSE, mainwin_minimize, p->mainwin_minimize_x, p->mainwin_minimize_y); + if (p->mainwin_shade_x && p->mainwin_shade_y) + window_move_widget (mainwin, FALSE, mainwin_shade, p->mainwin_shade_x, p->mainwin_shade_y); + if (p->mainwin_close_x && p->mainwin_close_y) + window_move_widget (mainwin, FALSE, mainwin_close, p->mainwin_close_x, p->mainwin_close_y); mainwin_refresh_visible(); if (config.player_shaded) - resize_window(mainwin, MAINWIN_SHADED_WIDTH * MAINWIN_SCALE_FACTOR, - MAINWIN_SHADED_HEIGHT * MAINWIN_SCALE_FACTOR); - else if (aud_active_skin->properties.mainwin_height > 0 && - aud_active_skin->properties.mainwin_width > 0) - resize_window(mainwin, aud_active_skin->properties.mainwin_width * - MAINWIN_SCALE_FACTOR, aud_active_skin->properties.mainwin_height * - MAINWIN_SCALE_FACTOR); + window_set_size (mainwin, MAINWIN_SHADED_WIDTH, MAINWIN_SHADED_HEIGHT); + else if (p->mainwin_height && p->mainwin_width) + window_set_size (mainwin, p->mainwin_width, p->mainwin_height); else - resize_window(mainwin, MAINWIN_WIDTH * MAINWIN_SCALE_FACTOR, - MAINWIN_HEIGHT * MAINWIN_SCALE_FACTOR); + window_set_size (mainwin, MAINWIN_WIDTH, MAINWIN_HEIGHT); } void mainwin_set_song_info (gint bitrate, gint samplerate, gint channels) @@ -574,18 +425,18 @@ else snprintf (scratch, sizeof scratch, "%2dH", bitrate / 100000); - ui_skinned_textbox_set_text (mainwin_rate_text, scratch); + textbox_set_text (mainwin_rate_text, scratch); } else - ui_skinned_textbox_set_text (mainwin_rate_text, ""); + textbox_set_text (mainwin_rate_text, ""); if (samplerate > 0) { snprintf (scratch, sizeof scratch, "%2d", samplerate / 1000); - ui_skinned_textbox_set_text (mainwin_freq_text, scratch); + textbox_set_text (mainwin_freq_text, scratch); } else - ui_skinned_textbox_set_text (mainwin_freq_text, ""); + textbox_set_text (mainwin_freq_text, ""); ui_skinned_monostereo_set_num_channels (mainwin_monostereo, channels); @@ -609,7 +460,7 @@ _("mono")); } - ui_skinned_textbox_set_text (mainwin_othertext, scratch); + textbox_set_text (mainwin_othertext, scratch); } void @@ -630,14 +481,14 @@ gtk_widget_hide (mainwin_position); gtk_widget_hide (mainwin_sposition); - UI_SKINNED_HORIZONTAL_SLIDER(mainwin_position)->pressed = FALSE; - UI_SKINNED_HORIZONTAL_SLIDER(mainwin_sposition)->pressed = FALSE; + hslider_set_pressed (mainwin_position, FALSE); + hslider_set_pressed (mainwin_sposition, FALSE); /* clear sampling parameter displays */ - ui_skinned_textbox_set_text(mainwin_rate_text, " "); - ui_skinned_textbox_set_text(mainwin_freq_text, " "); + textbox_set_text (mainwin_rate_text, " "); + textbox_set_text (mainwin_freq_text, " "); ui_skinned_monostereo_set_num_channels(mainwin_monostereo, 0); - ui_skinned_textbox_set_text (mainwin_othertext, ""); + textbox_set_text (mainwin_othertext, ""); if (mainwin_playstatus != NULL) ui_skinned_playstatus_set_status(mainwin_playstatus, STATUS_STOP); @@ -655,9 +506,8 @@ gtk_widget_hide(mainwin_sposition); } -void -mainwin_scrolled(GtkWidget *widget, GdkEventScroll *event, - gpointer callback_data) +static void mainwin_scrolled (GtkWidget * widget, GdkEventScroll * event, void * + unused) { switch (event->direction) { case GDK_SCROLL_UP: @@ -676,56 +526,32 @@ } static gboolean -mainwin_widget_contained(GdkEventButton *event, int x, int y, int w, int h) -{ - gint ex = event->x / MAINWIN_SCALE_FACTOR; - gint ey = event->y / MAINWIN_SCALE_FACTOR; - - return (ex > x && ey > y && ex < x + w && ey < y + h); -} - -static gboolean mainwin_mouse_button_press(GtkWidget * widget, GdkEventButton * event, gpointer callback_data) { - if (event->button == 1 && event->type == GDK_2BUTTON_PRESS && event->y / - MAINWIN_SCALE_FACTOR < 14) + if (event->button == 1 && event->type == GDK_2BUTTON_PRESS && event->y < 14) { mainwin_set_shade(!config.player_shaded); - if (dock_is_moving(GTK_WINDOW(mainwin))) - dock_move_release(GTK_WINDOW(mainwin)); return TRUE; } - if (event->button == 3) { - /* Pop up playback menu if right clicked over playback-control widgets, - * otherwise popup general menu - */ - if (mainwin_widget_contained(event, aud_active_skin->properties.mainwin_position_x, - aud_active_skin->properties.mainwin_position_y, 248, 10) || - mainwin_widget_contained(event, aud_active_skin->properties.mainwin_previous_x, - aud_active_skin->properties.mainwin_previous_y, 23, 18) || - mainwin_widget_contained(event, aud_active_skin->properties.mainwin_play_x, - aud_active_skin->properties.mainwin_play_y, 23, 18) || - mainwin_widget_contained(event, aud_active_skin->properties.mainwin_pause_x, - aud_active_skin->properties.mainwin_pause_y, 23, 18) || - mainwin_widget_contained(event, aud_active_skin->properties.mainwin_stop_x, - aud_active_skin->properties.mainwin_stop_y, 23, 18) || - mainwin_widget_contained(event, aud_active_skin->properties.mainwin_next_x, - aud_active_skin->properties.mainwin_next_y, 23, 18)) - ui_popup_menu_show(UI_MENU_PLAYBACK, event->x_root, event->y_root, - FALSE, FALSE, 3, event->time); - else - ui_popup_menu_show(UI_MENU_MAIN, event->x_root, event->y_root, - FALSE, FALSE, 3, event->time); - + if (event->button == 3) + { + ui_popup_menu_show (UI_MENU_MAIN, event->x_root, event->y_root, FALSE, + FALSE, event->button, event->time); return TRUE; } return FALSE; } +static void mainwin_playback_rpress (GtkWidget * button, GdkEventButton * event) +{ + ui_popup_menu_show (UI_MENU_PLAYBACK, event->x_root, event->y_root, + FALSE, FALSE, event->button, event->time); +} + gboolean mainwin_keypress (GtkWidget * widget, GdkEventKey * event, void * unused) { @@ -757,7 +583,7 @@ aud_drct_pl_next (); break; case GDK_KP_Insert: - action_jump_to_file(); + audgui_jump_to_track (); break; case GDK_space: aud_drct_pause(); @@ -779,127 +605,6 @@ return TRUE; } -static void -mainwin_jump_to_time_cb(GtkWidget * widget, - GtkWidget * entry) -{ - guint min = 0, sec = 0, params; - gint time; - - params = sscanf(gtk_entry_get_text(GTK_ENTRY(entry)), "%u:%u", - &min, &sec); - if (params == 2) - time = (min * 60) + sec; - else if (params == 1) - time = min; - else - return; - - aud_drct_seek (time*1000); - gtk_widget_destroy (mainwin_jtt); -} - - -void -mainwin_jump_to_time(void) -{ - GtkWidget *vbox, *hbox_new, *hbox_total; - GtkWidget *time_entry, *label, *bbox, *jump, *cancel; - GtkWidget *dialog; - guint tindex; - gchar time_str[10]; - - if (!aud_drct_get_playing()) { - dialog = - gtk_message_dialog_new (GTK_WINDOW (mainwin), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_CLOSE, - _("Can't jump to time when no track is being played.\n")); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - return; - } - - if (mainwin_jtt) { - gtk_window_present(GTK_WINDOW(mainwin_jtt)); - return; - } - - mainwin_jtt = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_type_hint(GTK_WINDOW(mainwin_jtt), - GDK_WINDOW_TYPE_HINT_DIALOG); - - gtk_window_set_title(GTK_WINDOW(mainwin_jtt), _("Jump to Time")); - gtk_window_set_position(GTK_WINDOW(mainwin_jtt), GTK_WIN_POS_CENTER); - gtk_window_set_transient_for(GTK_WINDOW(mainwin_jtt), - GTK_WINDOW(mainwin)); - - g_signal_connect(mainwin_jtt, "destroy", - G_CALLBACK(gtk_widget_destroyed), &mainwin_jtt); - gtk_container_set_border_width(GTK_CONTAINER(mainwin_jtt), 10); - - vbox = gtk_vbox_new(FALSE, 5); - gtk_container_add(GTK_CONTAINER(mainwin_jtt), vbox); - - hbox_new = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(vbox), hbox_new, TRUE, TRUE, 5); - - time_entry = gtk_entry_new(); - gtk_box_pack_start(GTK_BOX(hbox_new), time_entry, FALSE, FALSE, 5); - g_signal_connect(time_entry, "activate", - G_CALLBACK(mainwin_jump_to_time_cb), time_entry); - - gtk_widget_set_size_request(time_entry, 70, -1); - label = gtk_label_new(_("minutes:seconds")); - gtk_box_pack_start(GTK_BOX(hbox_new), label, FALSE, FALSE, 5); - - hbox_total = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(vbox), hbox_total, TRUE, TRUE, 5); - gtk_widget_show(hbox_total); - - /* FIXME: Disable display of current track length. It's not - updated when track changes */ - - label = gtk_label_new(_("Track length:")); - gtk_box_pack_start(GTK_BOX(hbox_total), label, FALSE, FALSE, 5); - - gint len = aud_drct_get_length () / 1000; - g_snprintf(time_str, sizeof(time_str), "%u:%2.2u", len / 60, len % 60); - label = gtk_label_new(time_str); - - gtk_box_pack_start(GTK_BOX(hbox_total), label, FALSE, FALSE, 10); - - bbox = gtk_hbutton_box_new(); - gtk_box_pack_start(GTK_BOX(vbox), bbox, TRUE, TRUE, 0); - gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); - gtk_box_set_spacing(GTK_BOX(bbox), 5); - - cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL); - GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT); - gtk_container_add(GTK_CONTAINER(bbox), cancel); - g_signal_connect_swapped(cancel, "clicked", - G_CALLBACK(gtk_widget_destroy), mainwin_jtt); - - jump = gtk_button_new_from_stock(GTK_STOCK_JUMP_TO); - GTK_WIDGET_SET_FLAGS(jump, GTK_CAN_DEFAULT); - gtk_container_add(GTK_CONTAINER(bbox), jump); - g_signal_connect(jump, "clicked", - G_CALLBACK(mainwin_jump_to_time_cb), time_entry); - - tindex = aud_drct_get_time() / 1000; - g_snprintf(time_str, sizeof(time_str), "%u:%2.2u", tindex / 60, - tindex % 60); - gtk_entry_set_text(GTK_ENTRY(time_entry), time_str); - - gtk_editable_select_region(GTK_EDITABLE(time_entry), 0, strlen(time_str)); - - gtk_widget_show_all(mainwin_jtt); - - gtk_widget_grab_focus(time_entry); - gtk_widget_grab_default(jump); -} - /* * Rewritten 09/13/06: * @@ -920,11 +625,14 @@ gpointer user_data) { g_return_if_fail(selection_data != NULL); - g_return_if_fail(selection_data->data != NULL); - if (str_has_prefix_nocase((gchar *) selection_data->data, "fonts:///")) + const gchar * data = (const gchar *) gtk_selection_data_get_data + (selection_data); + g_return_if_fail (data); + + if (str_has_prefix_nocase (data, "fonts:///")) { - gchar *path = (gchar *) selection_data->data; + const gchar * path = data; gchar *decoded = g_filename_from_uri(path, NULL, NULL); if (decoded == NULL) @@ -938,218 +646,102 @@ return; } - /* perhaps make suffix check case-insensitive -- desowin */ - if (str_has_prefix_nocase((char*)selection_data->data, "file:///")) { - if (str_has_suffix_nocase((char*)selection_data->data, ".wsz\r\n") || - str_has_suffix_nocase((char*)selection_data->data, ".zip\r\n")) { - on_skin_view_drag_data_received(GTK_WIDGET(user_data), context, x, y, selection_data, info, time, NULL); + if (str_has_prefix_nocase (data, "file:///")) + { + if (str_has_suffix_nocase (data, ".wsz\r\n") || str_has_suffix_nocase + (data, ".zip\r\n")) + { + on_skin_view_drag_data_received (0, context, x, y, selection_data, info, time, 0); return; } } - audgui_urilist_open ((const gchar *) selection_data->data); -} - -static void -on_visibility_warning_toggle(GtkToggleButton *tbt, gpointer unused) -{ - config.warn_about_win_visibility = !gtk_toggle_button_get_active(tbt); -} - -static void -on_visibility_warning_response(GtkDialog *dlg, gint r_id, gpointer unused) -{ - switch (r_id) - { - case GTK_RESPONSE_OK: - mainwin_show(TRUE); - break; - case GTK_RESPONSE_CANCEL: - default: - break; - } - gtk_widget_destroy(GTK_WIDGET(dlg)); + audgui_urilist_open (data); } -void -mainwin_show_visibility_warning(void) +static gint time_now (void) { - if (config.warn_about_win_visibility) - { - GtkWidget *label, *checkbt, *vbox; - GtkWidget *warning_dlg = - gtk_dialog_new_with_buttons( _("Audacious - visibility warning") , - GTK_WINDOW(mainwin) , - GTK_DIALOG_DESTROY_WITH_PARENT , - _("Show main player window") , - GTK_RESPONSE_OK , _("Ignore") , - GTK_RESPONSE_CANCEL , NULL ); - - vbox = gtk_vbox_new( FALSE , 4 ); - gtk_container_set_border_width( GTK_CONTAINER(vbox) , 4 ); - gtk_box_pack_start( GTK_BOX(GTK_DIALOG(warning_dlg)->vbox) , vbox , TRUE , TRUE , 0 ); - label = gtk_label_new( _("Audacious has been started with all of its windows hidden.\n" - "You may want to show the player window again to control Audacious; " - "otherwise, you'll have to control it remotely via audtool or " - "enabled plugins (such as the statusicon plugin).") ); - gtk_label_set_line_wrap( GTK_LABEL(label) , TRUE ); - gtk_misc_set_alignment( GTK_MISC(label) , 0.0 , 0.0 ); - checkbt = gtk_check_button_new_with_label( _("Always ignore, show/hide is controlled remotely") ); - gtk_box_pack_start( GTK_BOX(vbox) , label , TRUE , TRUE , 0 ); - gtk_box_pack_start( GTK_BOX(vbox) , checkbt , TRUE , TRUE , 0 ); - g_signal_connect( G_OBJECT(checkbt) , "toggled" , - G_CALLBACK(on_visibility_warning_toggle) , NULL ); - g_signal_connect( G_OBJECT(warning_dlg) , "response" , - G_CALLBACK(on_visibility_warning_response) , NULL ); - gtk_widget_show_all(warning_dlg); - } + struct timeval tv; + gettimeofday (& tv, NULL); + return (tv.tv_sec % (24 * 3600) * 1000 + tv.tv_usec / 1000); } -static void -on_broken_gtk_engine_warning_toggle(GtkToggleButton *tbt, gpointer unused) +static gint time_diff (gint a, gint b) { - config.warn_about_broken_gtk_engines = !gtk_toggle_button_get_active(tbt); + if (a > 18 * 3600 * 1000 && b < 6 * 3600 * 1000) /* detect midnight */ + b += 24 * 3600 * 1000; + return (b > a) ? b - a : 0; } -void -ui_main_check_theme_engine(void) +static gboolean seek_timeout (void * rewind) { - GtkSettings *settings; - GtkWidget *widget; - gchar *theme = NULL; - - widget = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_widget_ensure_style(widget); - - settings = gtk_settings_get_default(); - g_object_get(G_OBJECT(settings), "gtk-theme-name", &theme, NULL); - gtk_widget_destroy(widget); - - if (theme == NULL) - return; - - if (g_ascii_strcasecmp(theme, "Qt")) - { - g_free(theme); - return; - } - - if (config.warn_about_broken_gtk_engines) + if (! aud_drct_get_playing ()) { - gchar *msg; - GtkWidget *label, *checkbt, *vbox; - GtkWidget *warning_dlg = - gtk_dialog_new_with_buttons( _("Audacious - broken GTK engine usage warning") , - GTK_WINDOW(mainwin) , GTK_DIALOG_DESTROY_WITH_PARENT , - GTK_STOCK_CLOSE, GTK_RESPONSE_OK, NULL ); - vbox = gtk_vbox_new( FALSE , 4 ); - gtk_container_set_border_width( GTK_CONTAINER(vbox) , 4 ); - gtk_box_pack_start( GTK_BOX(GTK_DIALOG(warning_dlg)->vbox) , vbox , - TRUE , TRUE , 0 ); - - msg = g_strdup_printf(_("Broken GTK engine in use\n\n" - "Audacious has detected that you are using a broken GTK engine.\n\n" - "The theme engine you are using, %s, is incompatible with some of the features " - "used by modern skins. The incompatible features have been disabled for this session.\n\n" - "To use these features, please consider using a different GTK theme engine."), theme); - label = gtk_label_new(msg); - gtk_label_set_use_markup(GTK_LABEL(label), TRUE); - g_free(msg); - - gtk_label_set_line_wrap( GTK_LABEL(label) , TRUE ); - gtk_misc_set_alignment( GTK_MISC(label) , 0.0 , 0.0 ); - checkbt = gtk_check_button_new_with_label( _("Do not display this warning again") ); - gtk_box_pack_start( GTK_BOX(vbox) , label , TRUE , TRUE , 0 ); - gtk_box_pack_start( GTK_BOX(vbox) , checkbt , TRUE , TRUE , 0 ); - g_signal_connect( G_OBJECT(checkbt) , "toggled" , - G_CALLBACK(on_broken_gtk_engine_warning_toggle) , NULL ); - g_signal_connect( G_OBJECT(warning_dlg) , "response" , - G_CALLBACK(gtk_widget_destroy) , NULL ); - gtk_widget_show_all(warning_dlg); - gtk_window_stick(GTK_WINDOW(warning_dlg)); + seek_source = 0; + return FALSE; } - config.disable_inline_gtk = TRUE; - - g_free(theme); -} - -void -mainwin_eject_pushed(void) -{ - action_play_file(); -} - -static gboolean seek_timeout (void * rewind) -{ - struct timeval tv; - gint now, held, position; - - gettimeofday (& tv, NULL); - now = tv.tv_sec % 86400 * 1000 + tv.tv_usec / 1000; - held = (now >= seek_time) ? now - seek_time : 86400000 + now - seek_time; - + gint held = time_diff (seek_time, time_now ()); if (held < SEEK_THRESHOLD) return TRUE; + gint position; if (GPOINTER_TO_INT (rewind)) position = seek_start - held / SEEK_SPEED; else position = seek_start + held / SEEK_SPEED; position = CLAMP (position, 0, 219); - ui_skinned_horizontal_slider_set_position (mainwin_position, position); - mainwin_position_motion_cb (mainwin_position, position); + hslider_set_pos (mainwin_position, position); + mainwin_position_motion_cb (); return TRUE; } static gboolean seek_press (GtkWidget * widget, GdkEventButton * event, - void * rewind) + gboolean rewind) { - struct timeval tv; - - if (event->button != 1 || seek_source != 0) + if (event->button != 1 || seek_source) return FALSE; - seek_start = ui_skinned_horizontal_slider_get_position (mainwin_position); - seek_event_time = event->time; - gettimeofday (& tv, NULL); - seek_time = tv.tv_sec % 86400 * 1000 + tv.tv_usec / 1000; - - seek_source = g_timeout_add (SEEK_TIMEOUT, seek_timeout, rewind); - + seek_start = hslider_get_pos (mainwin_position); + seek_time = time_now (); + seek_source = g_timeout_add (SEEK_TIMEOUT, seek_timeout, GINT_TO_POINTER + (rewind)); return FALSE; } static gboolean seek_release (GtkWidget * widget, GdkEventButton * event, - void * rewind) + gboolean rewind) { - gint held; - - if (event->button != 1) + if (event->button != 1 || ! seek_source) return FALSE; - held = (event->time >= seek_event_time) ? event->time - seek_event_time : - 86400000 + event->time - seek_event_time; - - if (held < SEEK_THRESHOLD) + if (! aud_drct_get_playing () || time_diff (seek_time, time_now ()) < + SEEK_THRESHOLD) { - if (GPOINTER_TO_INT (rewind)) + if (rewind) aud_drct_pl_prev (); else aud_drct_pl_next (); } else - mainwin_position_release_cb (mainwin_position, - ui_skinned_horizontal_slider_get_position (mainwin_position)); + mainwin_position_release_cb (); g_source_remove (seek_source); seek_source = 0; - return FALSE; } +static void mainwin_rew_press (GtkWidget * button, GdkEventButton * event) + {seek_press (button, event, TRUE); } +static void mainwin_rew_release (GtkWidget * button, GdkEventButton * event) + {seek_release (button, event, TRUE); } +static void mainwin_fwd_press (GtkWidget * button, GdkEventButton * event) + {seek_press (button, event, FALSE); } +static void mainwin_fwd_release (GtkWidget * button, GdkEventButton * event) + {seek_release (button, event, FALSE); } + void mainwin_play_pushed(void) { @@ -1159,138 +751,75 @@ aud_drct_play (); } -void -mainwin_stop_pushed(void) -{ - aud_drct_stop(); - mainwin_clear_song_info(); - ab_position_a = ab_position_b = -1; -} - -void -mainwin_shuffle_pushed(gboolean toggled) -{ - check_set( toggleaction_group_others , "playback shuffle" , toggled ); -} - -void mainwin_shuffle_pushed_cb(void) { - mainwin_shuffle_pushed(UI_SKINNED_BUTTON(mainwin_shuffle)->inside); -} - -void -mainwin_repeat_pushed(gboolean toggled) -{ - check_set( toggleaction_group_others , "playback repeat" , toggled ); -} - -void mainwin_repeat_pushed_cb(void) { - mainwin_repeat_pushed(UI_SKINNED_BUTTON(mainwin_repeat)->inside); -} - -void mainwin_equalizer_pushed_cb(void) { - mainwin_eq_pushed(UI_SKINNED_BUTTON(mainwin_eq)->inside); -} +static void mainwin_shuffle_cb (GtkWidget * button, GdkEventButton * event) + {check_set (toggleaction_group_others, "playback shuffle", button_get_active (button)); } +static void mainwin_repeat_cb (GtkWidget * button, GdkEventButton * event) + {check_set (toggleaction_group_others, "playback repeat", button_get_active (button)); } +static void mainwin_eq_cb (GtkWidget * button, GdkEventButton * event) + {equalizerwin_show (button_get_active (button)); } +static void mainwin_pl_cb (GtkWidget * button, GdkEventButton * event) + {playlistwin_show (button_get_active (button)); } + +static void mainwin_spos_set_knob (void) +{ + gint pos = hslider_get_pos (mainwin_sposition); + + gint x; + if (pos < 6) + x = 17; + else if (pos < 9) + x = 20; + else + x = 23; -void mainwin_playlist_pushed_cb(void) { - mainwin_pl_pushed(UI_SKINNED_BUTTON(mainwin_pl)->inside); + hslider_set_knob (mainwin_sposition, x, 36, x, 36); } -void -mainwin_eq_pushed(gboolean toggled) +static void mainwin_spos_motion_cb (void) { - equalizerwin_show(toggled); -} + mainwin_spos_set_knob (); -void -mainwin_pl_pushed(gboolean toggled) -{ - playlistwin_show (toggled); -} + gint pos = hslider_get_pos (mainwin_sposition); + gint length = aud_drct_get_length (); + gint time = (pos - 1) * length / 12; -gint -mainwin_spos_frame_cb(gint pos) -{ - if (mainwin_sposition) { - gint x = 0; - if (pos < 6) - x = 17; - else if (pos < 9) - x = 20; - else - x = 23; + gchar buf[7]; + format_time (buf, time, length); - UI_SKINNED_HORIZONTAL_SLIDER(mainwin_sposition)->knob_nx = x; - UI_SKINNED_HORIZONTAL_SLIDER(mainwin_sposition)->knob_px = x; - } - return 1; + textbox_set_text (mainwin_stime_min, buf); + textbox_set_text (mainwin_stime_sec, buf + 4); } -void -mainwin_spos_motion_cb(GtkWidget *widget, gint pos) +static void mainwin_spos_release_cb (void) { - gint time; - gchar *time_msg; - - pos--; - - time = aud_drct_get_length () / 1000 * pos / 12; - - if (config.timer_mode == TIMER_REMAINING) { - time = aud_drct_get_length () / 1000 - time; - time_msg = g_strdup_printf("-%2.2d", time / 60); - ui_skinned_textbox_set_text(mainwin_stime_min, time_msg); - g_free(time_msg); - } - else { - time_msg = g_strdup_printf(" %2.2d", time / 60); - ui_skinned_textbox_set_text(mainwin_stime_min, time_msg); - g_free(time_msg); - } - - time_msg = g_strdup_printf("%2.2d", time % 60); - ui_skinned_textbox_set_text(mainwin_stime_sec, time_msg); - g_free(time_msg); -} + mainwin_spos_set_knob (); -void -mainwin_spos_release_cb(GtkWidget *widget, gint pos) -{ + gint pos = hslider_get_pos (mainwin_sposition); aud_drct_seek (aud_drct_get_length () * (pos - 1) / 12); } -void -mainwin_position_motion_cb(GtkWidget *widget, gint pos) +static void mainwin_position_motion_cb (void) { - gint length, time; - gchar *seek_msg; + gint length = aud_drct_get_length () / 1000; + gint pos = hslider_get_pos (mainwin_position); + gint time = pos * length / 219; - length = aud_drct_get_length () / 1000; - time = (length * pos) / 219; - seek_msg = g_strdup_printf(_("Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)"), - time / 60, time % 60, - length / 60, length % 60, - (length != 0) ? (time * 100) / length : 0); + gchar * seek_msg = g_strdup_printf (_("Seek to %d:%-2.2d / %d:%-2.2d"), time + / 60, time % 60, length / 60, length % 60); mainwin_lock_info_text(seek_msg); g_free(seek_msg); } -void -mainwin_position_release_cb(GtkWidget *widget, gint pos) +static void mainwin_position_release_cb (void) { - gint length, time; + gint length = aud_drct_get_length (); + gint pos = hslider_get_pos (mainwin_position); + gint time = (gint64) pos * length / 219; - length = aud_drct_get_length(); - time = (gint64) length * pos / 219; aud_drct_seek(time); mainwin_release_info_text(); } -gint -mainwin_volume_frame_cb(gint pos) -{ - return (gint) rint((pos / 52.0) * 28); -} - void mainwin_adjust_volume_motion(gint v) { @@ -1335,56 +864,74 @@ mainwin_release_info_text(); } -void -mainwin_set_volume_slider(gint percent) +static void mainwin_volume_set_frame (void) { - ui_skinned_horizontal_slider_set_position(mainwin_volume, (gint) rint((percent * 51) / 100.0)); + gint pos = hslider_get_pos (mainwin_volume); + gint frame = (pos * 27 + 25) / 51; + hslider_set_frame (mainwin_volume, 0, 15 * frame); } -void -mainwin_set_balance_slider(gint percent) +void mainwin_set_volume_slider (gint percent) { - ui_skinned_horizontal_slider_set_position(mainwin_balance, (gint) rint(((percent * 12) / 100.0) + 12)); + hslider_set_pos (mainwin_volume, (percent * 51 + 50) / 100); + mainwin_volume_set_frame (); } -void -mainwin_volume_motion_cb(GtkWidget *widget, gint pos) +static void mainwin_volume_motion_cb (void) { + mainwin_volume_set_frame (); + gint pos = hslider_get_pos (mainwin_volume); + gint vol = (pos * 100 + 25) / 51; - gint vol = (pos * 100) / 51; mainwin_adjust_volume_motion(vol); equalizerwin_set_volume_slider(vol); } -gboolean -mainwin_volume_release_cb(GtkWidget *widget, gint pos) +static void mainwin_volume_release_cb (void) { + mainwin_volume_set_frame (); mainwin_adjust_volume_release(); - return FALSE; } -gint -mainwin_balance_frame_cb(gint pos) +static void mainwin_balance_set_frame (void) { - return ((abs(pos - 12) * 28) / 13); + gint pos = hslider_get_pos (mainwin_balance); + gint frame = (abs (pos - 12) * 27 + 6) / 12; + hslider_set_frame (mainwin_balance, 9, 15 * frame); } -void -mainwin_balance_motion_cb(GtkWidget *widget, gint pos) +void mainwin_set_balance_slider (gint percent) { - gint bal = ((pos - 12) * 100) / 12; + if (percent > 0) + hslider_set_pos (mainwin_balance, 12 + (percent * 12 + 50) / 100); + else + hslider_set_pos (mainwin_balance, 12 + (percent * 12 - 50) / 100); + + mainwin_balance_set_frame (); +} + +static void mainwin_balance_motion_cb (void) +{ + mainwin_balance_set_frame (); + gint pos = hslider_get_pos (mainwin_balance); + + gint bal; + if (pos > 12) + bal = ((pos - 12) * 100 + 6) / 12; + else + bal = ((pos - 12) * 100 - 6) / 12; + mainwin_adjust_balance_motion(bal); equalizerwin_set_balance_slider(bal); } -void -mainwin_balance_release_cb(GtkWidget *widget, gint pos) +static void mainwin_balance_release_cb (void) { + mainwin_balance_set_frame (); mainwin_adjust_volume_release(); } -void -mainwin_set_volume_diff(gint diff) +static void mainwin_set_volume_diff (gint diff) { gint vol; @@ -1400,26 +947,14 @@ g_timeout_add(700, (GSourceFunc)(mainwin_volume_release_cb), NULL); } -void -mainwin_set_balance_diff(gint diff) -{ - gint b; - b = CLAMP(balance + diff, -100, 100); - mainwin_adjust_balance_motion(b); - mainwin_set_balance_slider(b); - equalizerwin_set_balance_slider(b); -} - -static void mainwin_real_show (void) +static void mainwin_real_show (gboolean show) { start_stop_visual (FALSE); - gtk_window_present(GTK_WINDOW(mainwin)); -} -static void mainwin_real_hide (void) -{ - gtk_widget_hide(mainwin); - start_stop_visual (FALSE); + if (show) + gtk_window_present ((GtkWindow *) mainwin); + else + gtk_widget_hide (mainwin); } void mainwin_show (gboolean show) @@ -1432,193 +967,21 @@ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (a), show); else { - if (show != config.player_visible) { - config.player_visible = show; - config.player_visible_prev = !show; - aud_cfg->player_visible = show; - } - - if (show) - mainwin_real_show (); - else - mainwin_real_hide (); + config.player_visible = show; + playlistwin_show (config.playlist_visible); + equalizerwin_show (config.equalizer_visible); + mainwin_real_show (show); } } -void -mainwin_set_noplaylistadvance(gboolean no_advance) -{ - aud_cfg->no_playlist_advance = no_advance; - check_set(toggleaction_group_others, "playback no playlist advance", aud_cfg->no_playlist_advance); -} - -static void -mainwin_set_scaled(gboolean scaled) -{ - GList * list; - SkinnedWindow * skinned; - GtkFixed * fixed; - GtkFixedChild * child; - - skinned = (SkinnedWindow *) mainwin; - fixed = (GtkFixed *) skinned->normal; - - for (list = fixed->children; list; list = list->next) - { - child = (GtkFixedChild *) list->data; - g_signal_emit_by_name ((GObject *) child->widget, "toggle-scaled"); - } - - fixed = (GtkFixed *) skinned->shaded; - - for (list = fixed->children; list; list = list->next) - { - child = (GtkFixedChild *) list->data; - g_signal_emit_by_name ((GObject *) child->widget, "toggle-scaled"); - } - - mainwin_refresh_hints(); - mainwin_set_shape (); -} - -void -set_scaled(gboolean scaled) -{ - config.scaled = scaled; - - mainwin_set_scaled(scaled); - - if (config.eq_scaled_linked) - equalizerwin_set_scaled(scaled); -} - - - -void -mainwin_general_menu_callback(gpointer data, - guint action, - GtkWidget * item) -{ - switch (action) { - case MAINWIN_GENERAL_PREFS: - action_preferences(); - break; - case MAINWIN_GENERAL_ABOUT: - action_about_audacious(); - break; - case MAINWIN_GENERAL_PLAYFILE: { - audgui_run_filebrowser(FALSE); /* FALSE = NO_PLAY_BUTTON */ - break; - } - case MAINWIN_GENERAL_PLAYLOCATION: - action_play_location(); - break; - case MAINWIN_GENERAL_FILEINFO: - audgui_infowin_show_current (); - break; - case MAINWIN_GENERAL_FOCUSPLWIN: - gtk_window_present(GTK_WINDOW(playlistwin)); - break; - case MAINWIN_GENERAL_SHOWMWIN: - mainwin_show(GTK_CHECK_MENU_ITEM(item)->active); - break; - case MAINWIN_GENERAL_SHOWPLWIN: - playlistwin_show (GTK_CHECK_MENU_ITEM(item) ->active); - break; - case MAINWIN_GENERAL_SHOWEQWIN: - equalizerwin_show (GTK_CHECK_MENU_ITEM (item)->active); - break; - case MAINWIN_GENERAL_PREV: - aud_drct_pl_prev (); - break; - case MAINWIN_GENERAL_PLAY: - mainwin_play_pushed(); - break; - case MAINWIN_GENERAL_PAUSE: - aud_drct_pause(); - break; - case MAINWIN_GENERAL_STOP: - mainwin_stop_pushed(); - break; - case MAINWIN_GENERAL_NEXT: - aud_drct_pl_next (); - break; -#if 0 - case MAINWIN_GENERAL_BACK5SEC: - if (aud_drct_get_playing() - && aud_playlist_get_current_length(playlist) != -1) - playback_seek_relative(-5); - break; - case MAINWIN_GENERAL_FWD5SEC: - if (aud_drct_get_playing() - && aud_playlist_get_current_length(playlist) != -1) - playback_seek_relative(5); - break; -#endif - case MAINWIN_GENERAL_START: - aud_drct_pl_set_pos (0); - break; - case MAINWIN_GENERAL_JTT: - mainwin_jump_to_time(); - break; - case MAINWIN_GENERAL_JTF: - action_jump_to_file(); - break; - case MAINWIN_GENERAL_EXIT: - aud_drct_quit (); - break; - case MAINWIN_GENERAL_SETAB: - if (aud_drct_get_length () > 0) - { - if (ab_position_a == -1) { - ab_position_a = aud_drct_get_time(); - ab_position_b = -1; - mainwin_lock_info_text("'Loop-Point A Position' set."); - } else if (ab_position_b == -1) { - int time = aud_drct_get_time(); - if (time > ab_position_a) - ab_position_b = time; - mainwin_release_info_text(); - } else { - ab_position_a = aud_drct_get_time(); - ab_position_b = -1; - mainwin_lock_info_text("'Loop-Point A Position' reset."); - } - } - break; - case MAINWIN_GENERAL_CLEARAB: - if (aud_drct_get_length () > 0) - { - ab_position_a = ab_position_b = -1; - mainwin_release_info_text(); - } - break; - case MAINWIN_GENERAL_NEW_PL: - { - gint playlist = aud_playlist_count (); - - aud_playlist_insert (playlist); - aud_playlist_set_active (playlist); - } - break; - case MAINWIN_GENERAL_PREV_PL: - aud_playlist_set_active (aud_playlist_get_active () - 1); - break; - case MAINWIN_GENERAL_NEXT_PL: - aud_playlist_set_active (aud_playlist_get_active () + 1); - break; - } -} - -static void -mainwin_mr_change(GtkWidget *widget, MenuRowItem i) +void mainwin_mr_change (MenuRowItem i) { switch (i) { case MENUROW_OPTIONS: mainwin_lock_info_text(_("Options Menu")); break; case MENUROW_ALWAYS: - if (UI_SKINNED_MENUROW(mainwin_menurow)->always_selected) + if (config.always_on_top) mainwin_lock_info_text(_("Disable 'Always On Top'")); else mainwin_lock_info_text(_("Enable 'Always On Top'")); @@ -1627,10 +990,6 @@ mainwin_lock_info_text(_("File Info Box")); break; case MENUROW_SCALE: - if (UI_SKINNED_MENUROW(mainwin_menurow)->scale_selected) - mainwin_lock_info_text(_("Disable 'GUI Scaling'")); - else - mainwin_lock_info_text(_("Enable 'GUI Scaling'")); break; case MENUROW_VISUALIZATION: mainwin_lock_info_text(_("Visualization Menu")); @@ -1640,8 +999,7 @@ } } -static void -mainwin_mr_release(GtkWidget *widget, MenuRowItem i, GdkEventButton *event) +void mainwin_mr_release (MenuRowItem i, GdkEventButton * event) { switch (i) { case MENUROW_OPTIONS: @@ -1649,19 +1007,14 @@ FALSE, FALSE, 1, event->time); break; case MENUROW_ALWAYS: - gtk_toggle_action_set_active( - GTK_TOGGLE_ACTION(gtk_action_group_get_action( - toggleaction_group_others , "view always on top" )) , - UI_SKINNED_MENUROW(mainwin_menurow)->always_selected ); + gtk_toggle_action_set_active ((GtkToggleAction *) + gtk_action_group_get_action (toggleaction_group_others, + "view always on top"), config.always_on_top); break; case MENUROW_FILEINFOBOX: audgui_infowin_show_current (); break; case MENUROW_SCALE: - gtk_toggle_action_set_active( - GTK_TOGGLE_ACTION(gtk_action_group_get_action( - toggleaction_group_others , "view scaled" )) , - UI_SKINNED_MENUROW(mainwin_menurow)->scale_selected ); break; case MENUROW_VISUALIZATION: ui_popup_menu_show(UI_MENU_VISUALIZATION, event->x_root, @@ -1674,20 +1027,6 @@ mainwin_release_info_text(); } -void -ui_main_set_initial_volume(void) -{ - gint b, v; - - aud_drct_get_volume_main (& v); - aud_drct_get_volume_balance (& b); - - mainwin_set_volume_slider(v); - equalizerwin_set_volume_slider(v); - mainwin_set_balance_slider(b); - equalizerwin_set_balance_slider(b); -} - static void set_timer_mode(TimerMode mode) { @@ -1697,12 +1036,6 @@ check_set(radioaction_group_viewtime, "view time remaining", TRUE); } -static void -set_timer_mode_menu_cb(TimerMode mode) -{ - config.timer_mode = mode; -} - gboolean change_timer_mode_cb(GtkWidget *widget, GdkEventButton *event) { @@ -1723,18 +1056,6 @@ mainwin_update_song_info(); } -static void -mainwin_aud_playlist_prev(void) -{ - aud_drct_pl_prev (); -} - -static void -mainwin_aud_playlist_next(void) -{ - aud_drct_pl_next (); -} - void mainwin_setup_menus(void) { @@ -1747,21 +1068,21 @@ check_set(toggleaction_group_others, "roll up player", config.player_shaded); check_set(toggleaction_group_others, "roll up playlist editor", config.playlist_shaded); check_set(toggleaction_group_others, "roll up equalizer", config.equalizer_shaded); - check_set(toggleaction_group_others, "view easy move", config.easy_move); - check_set(toggleaction_group_others, "view scaled", config.scaled); mainwin_enable_status_message (FALSE); /* Songname menu */ check_set(toggleaction_group_others, "autoscroll songname", config.autoscroll); - check_set(toggleaction_group_others, "stop after current song", aud_cfg->stopaftersong); + check_set (toggleaction_group_others, "stop after current song", + aud_get_bool (NULL, "stop_after_current_song")); /* Playback menu */ - check_set(toggleaction_group_others, "playback repeat", aud_cfg->repeat); - check_set(toggleaction_group_others, "playback shuffle", aud_cfg->shuffle); - check_set(toggleaction_group_others, "playback no playlist advance", aud_cfg->no_playlist_advance); + check_set (toggleaction_group_others, "playback repeat", aud_get_bool (NULL, "repeat")); + check_set (toggleaction_group_others, "playback shuffle", aud_get_bool (NULL, "shuffle")); + check_set (toggleaction_group_others, "playback no playlist advance", + aud_get_bool (NULL, "no_playlist_advance")); mainwin_enable_status_message (TRUE); @@ -1891,220 +1212,216 @@ } } -static void mainwin_info_double_clicked_cb (void) +static gboolean mainwin_info_button_press (GtkWidget * widget, GdkEventButton * + event) { - audgui_infowin_show_current (); -} + if (event->type == GDK_BUTTON_PRESS && event->button == 3) + { + ui_popup_menu_show (UI_MENU_SONGNAME, event->x_root, event->y_root, + FALSE, FALSE, event->button, event->time); + return TRUE; + } -static void mainwin_info_right_clicked_cb(GtkWidget *widget, GdkEventButton - *event) -{ - ui_popup_menu_show(UI_MENU_SONGNAME, event->x_root, event->y_root, FALSE, - FALSE, 3, event->time); + if (event->type == GDK_2BUTTON_PRESS && event->button == 1) + { + audgui_infowin_show_current (); + return TRUE; + } + + return FALSE; } static void mainwin_create_widgets(void) { - mainwin_menubtn = ui_skinned_button_new(); - ui_skinned_push_button_setup(mainwin_menubtn, SKINNED_WINDOW(mainwin)->normal, - 6, 3, 9, 9, 0, 0, 0, 9, SKIN_TITLEBAR); - g_signal_connect(mainwin_menubtn, "clicked", mainwin_menubtn_cb, NULL ); - - mainwin_minimize = ui_skinned_button_new(); - ui_skinned_push_button_setup(mainwin_minimize, SKINNED_WINDOW(mainwin)->normal, - 244, 3, 9, 9, 9, 0, 9, 9, SKIN_TITLEBAR); - g_signal_connect(mainwin_minimize, "clicked", mainwin_minimize_cb, NULL ); - - mainwin_shade = ui_skinned_button_new(); - ui_skinned_push_button_setup(mainwin_shade, SKINNED_WINDOW(mainwin)->normal, - 254, 3, 9, 9, 0, 18, 9, 18, SKIN_TITLEBAR); - g_signal_connect(mainwin_shade, "clicked", mainwin_shade_toggle, NULL ); - - mainwin_close = ui_skinned_button_new(); - ui_skinned_push_button_setup(mainwin_close, SKINNED_WINDOW(mainwin)->normal, - 264, 3, 9, 9, 18, 0, 18, 9, SKIN_TITLEBAR); - g_signal_connect ((GObject *) mainwin_close, "clicked", aud_drct_quit, - 0); - - mainwin_rew = ui_skinned_button_new(); - ui_skinned_push_button_setup(mainwin_rew, SKINNED_WINDOW(mainwin)->normal, - 16, 88, 23, 18, 0, 0, 0, 18, SKIN_CBUTTONS); - g_signal_connect (mainwin_rew, "button-press-event", (GCallback) - seek_press, GINT_TO_POINTER (TRUE)); - g_signal_connect (mainwin_rew, "button-release-event", (GCallback) - seek_release, GINT_TO_POINTER (TRUE)); - - mainwin_fwd = ui_skinned_button_new(); - ui_skinned_push_button_setup(mainwin_fwd, SKINNED_WINDOW(mainwin)->normal, - 108, 88, 22, 18, 92, 0, 92, 18, SKIN_CBUTTONS); - g_signal_connect (mainwin_fwd, "button-press-event", (GCallback) - seek_press, GINT_TO_POINTER (FALSE)); - g_signal_connect (mainwin_fwd, "button-release-event", (GCallback) - seek_release, GINT_TO_POINTER (FALSE)); - - mainwin_play = ui_skinned_button_new(); - ui_skinned_push_button_setup(mainwin_play, SKINNED_WINDOW(mainwin)->normal, - 39, 88, 23, 18, 23, 0, 23, 18, SKIN_CBUTTONS); - g_signal_connect(mainwin_play, "clicked", mainwin_play_pushed, NULL ); - - mainwin_pause = ui_skinned_button_new(); - ui_skinned_push_button_setup(mainwin_pause, SKINNED_WINDOW(mainwin)->normal, - 62, 88, 23, 18, 46, 0, 46, 18, SKIN_CBUTTONS); - g_signal_connect(mainwin_pause, "clicked", aud_drct_pause, NULL ); - - mainwin_stop = ui_skinned_button_new(); - ui_skinned_push_button_setup(mainwin_stop, SKINNED_WINDOW(mainwin)->normal, - 85, 88, 23, 18, 69, 0, 69, 18, SKIN_CBUTTONS); - g_signal_connect(mainwin_stop, "clicked", mainwin_stop_pushed, NULL ); - - mainwin_eject = ui_skinned_button_new(); - ui_skinned_push_button_setup(mainwin_eject, SKINNED_WINDOW(mainwin)->normal, - 136, 89, 22, 16, 114, 0, 114, 16, SKIN_CBUTTONS); - g_signal_connect(mainwin_eject, "clicked", mainwin_eject_pushed, NULL); - - mainwin_shuffle = ui_skinned_button_new(); - ui_skinned_toggle_button_setup(mainwin_shuffle, SKINNED_WINDOW(mainwin)->normal, - 164, 89, 46, 15, 28, 0, 28, 15, 28, 30, 28, 45, SKIN_SHUFREP); - g_signal_connect(mainwin_shuffle, "clicked", mainwin_shuffle_pushed_cb, NULL); - - mainwin_repeat = ui_skinned_button_new(); - ui_skinned_toggle_button_setup(mainwin_repeat, SKINNED_WINDOW(mainwin)->normal, - 210, 89, 28, 15, 0, 0, 0, 15, 0, 30, 0, 45, SKIN_SHUFREP); - g_signal_connect(mainwin_repeat, "clicked", mainwin_repeat_pushed_cb, NULL); - - mainwin_eq = ui_skinned_button_new(); - ui_skinned_toggle_button_setup(mainwin_eq, SKINNED_WINDOW(mainwin)->normal, - 219, 58, 23, 12, 0, 61, 46, 61, 0, 73, 46, 73, SKIN_SHUFREP); - g_signal_connect(mainwin_eq, "clicked", mainwin_equalizer_pushed_cb, NULL); - ui_skinned_button_set_inside(mainwin_eq, config.equalizer_visible); - - mainwin_pl = ui_skinned_button_new(); - ui_skinned_toggle_button_setup(mainwin_pl, SKINNED_WINDOW(mainwin)->normal, - 242, 58, 23, 12, 23, 61, 69, 61, 23, 73, 69, 73, SKIN_SHUFREP); - g_signal_connect(mainwin_pl, "clicked", mainwin_playlist_pushed_cb, NULL); - ui_skinned_button_set_inside(mainwin_pl, config.playlist_visible); - - mainwin_info = ui_skinned_textbox_new(SKINNED_WINDOW(mainwin)->normal, 112, 27, 153, 1, SKIN_TEXT); - ui_skinned_textbox_set_scroll(mainwin_info, config.autoscroll); - ui_skinned_textbox_set_xfont(mainwin_info, !config.mainwin_use_bitmapfont, config.mainwin_font); - g_signal_connect(mainwin_info, "double-clicked", mainwin_info_double_clicked_cb, NULL); - g_signal_connect(mainwin_info, "right-clicked", G_CALLBACK(mainwin_info_right_clicked_cb), NULL); - - mainwin_othertext = ui_skinned_textbox_new(SKINNED_WINDOW(mainwin)->normal, 112, 43, 153, 1, SKIN_TEXT); - - mainwin_rate_text = ui_skinned_textbox_new(SKINNED_WINDOW(mainwin)->normal, 111, 43, 15, 0, SKIN_TEXT); - - mainwin_freq_text = ui_skinned_textbox_new(SKINNED_WINDOW(mainwin)->normal, 156, 43, 10, 0, SKIN_TEXT); - - mainwin_menurow = ui_skinned_menurow_new(SKINNED_WINDOW(mainwin)->normal, 10, 22, 304, 0, 304, 44, SKIN_TITLEBAR); - g_signal_connect(mainwin_menurow, "change", G_CALLBACK(mainwin_mr_change), NULL); - g_signal_connect(mainwin_menurow, "release", G_CALLBACK(mainwin_mr_release), NULL); - - mainwin_volume = ui_skinned_horizontal_slider_new(SKINNED_WINDOW(mainwin)->normal, 107, 57, 68, - 13, 15, 422, 0, 422, 14, 11, 15, 0, 0, 51, - mainwin_volume_frame_cb, SKIN_VOLUME); - g_signal_connect(mainwin_volume, "motion", G_CALLBACK(mainwin_volume_motion_cb), NULL); - g_signal_connect(mainwin_volume, "release", G_CALLBACK(mainwin_volume_release_cb), NULL); - - mainwin_balance = ui_skinned_horizontal_slider_new(SKINNED_WINDOW(mainwin)->normal, 177, 57, 38, - 13, 15, 422, 0, 422, 14, 11, 15, 9, 0, 24, - mainwin_balance_frame_cb, SKIN_BALANCE); - g_signal_connect(mainwin_balance, "motion", G_CALLBACK(mainwin_balance_motion_cb), NULL); - g_signal_connect(mainwin_balance, "release", G_CALLBACK(mainwin_balance_release_cb), NULL); + mainwin_menubtn = button_new (9, 9, 0, 0, 0, 9, SKIN_TITLEBAR, SKIN_TITLEBAR); + window_put_widget (mainwin, FALSE, mainwin_menubtn, 6, 3); + button_on_release (mainwin_menubtn, (ButtonCB) mainwin_menubtn_cb); + + mainwin_minimize = button_new (9, 9, 9, 0, 9, 9, SKIN_TITLEBAR, SKIN_TITLEBAR); + window_put_widget (mainwin, FALSE, mainwin_minimize, 244, 3); + button_on_release (mainwin_minimize, (ButtonCB) mainwin_minimize_cb); + + mainwin_shade = button_new (9, 9, 0, 18, 9, 18, SKIN_TITLEBAR, SKIN_TITLEBAR); + window_put_widget (mainwin, FALSE, mainwin_shade, 254, 3); + button_on_release (mainwin_shade, (ButtonCB) mainwin_shade_toggle); + + mainwin_close = button_new (9, 9, 18, 0, 18, 9, SKIN_TITLEBAR, SKIN_TITLEBAR); + window_put_widget (mainwin, FALSE, mainwin_close, 264, 3); + button_on_release (mainwin_close, (ButtonCB) aud_drct_quit); + + mainwin_rew = button_new (23, 18, 0, 0, 0, 18, SKIN_CBUTTONS, SKIN_CBUTTONS); + window_put_widget (mainwin, FALSE, mainwin_rew, 16, 88); + button_on_press (mainwin_rew, mainwin_rew_press); + button_on_release (mainwin_rew, mainwin_rew_release); + button_on_rpress (mainwin_rew, mainwin_playback_rpress); + + mainwin_fwd = button_new (22, 18, 92, 0, 92, 18, SKIN_CBUTTONS, SKIN_CBUTTONS); + window_put_widget (mainwin, FALSE, mainwin_fwd, 108, 88); + button_on_press (mainwin_fwd, mainwin_fwd_press); + button_on_release (mainwin_fwd, mainwin_fwd_release); + button_on_rpress (mainwin_fwd, mainwin_playback_rpress); + + mainwin_play = button_new (23, 18, 23, 0, 23, 18, SKIN_CBUTTONS, SKIN_CBUTTONS); + window_put_widget (mainwin, FALSE, mainwin_play, 39, 88); + button_on_release (mainwin_play, (ButtonCB) mainwin_play_pushed); + button_on_rpress (mainwin_play, mainwin_playback_rpress); + + mainwin_pause = button_new (23, 18, 46, 0, 46, 18, SKIN_CBUTTONS, SKIN_CBUTTONS); + window_put_widget (mainwin, FALSE, mainwin_pause, 62, 88); + button_on_release (mainwin_pause, (ButtonCB) aud_drct_pause); + button_on_rpress (mainwin_pause, mainwin_playback_rpress); + + mainwin_stop = button_new (23, 18, 69, 0, 69, 18, SKIN_CBUTTONS, SKIN_CBUTTONS); + window_put_widget (mainwin, FALSE, mainwin_stop, 85, 88); + button_on_release (mainwin_stop, (ButtonCB) aud_drct_stop); + button_on_rpress (mainwin_stop, mainwin_playback_rpress); + + mainwin_eject = button_new (22, 16, 114, 0, 114, 16, SKIN_CBUTTONS, SKIN_CBUTTONS); + window_put_widget (mainwin, FALSE, mainwin_eject, 136, 89); + button_on_release (mainwin_eject, (ButtonCB) action_play_file); + + mainwin_shuffle = button_new_toggle (46, 15, 28, 0, 28, 15, 28, 30, 28, 45, SKIN_SHUFREP, SKIN_SHUFREP); + window_put_widget (mainwin, FALSE, mainwin_shuffle, 164, 89); + button_on_release (mainwin_shuffle, mainwin_shuffle_cb); + + mainwin_repeat = button_new_toggle (28, 15, 0, 0, 0, 15, 0, 30, 0, 45, SKIN_SHUFREP, SKIN_SHUFREP); + window_put_widget (mainwin, FALSE, mainwin_repeat, 210, 89); + button_on_release (mainwin_repeat, mainwin_repeat_cb); + + mainwin_eq = button_new_toggle (23, 12, 0, 61, 46, 61, 0, 73, 46, 73, SKIN_SHUFREP, SKIN_SHUFREP); + window_put_widget (mainwin, FALSE, mainwin_eq, 219, 58); + button_on_release (mainwin_eq, mainwin_eq_cb); + + mainwin_pl = button_new_toggle (23, 12, 23, 61, 69, 61, 23, 73, 69, 73, SKIN_SHUFREP, SKIN_SHUFREP); + window_put_widget (mainwin, FALSE, mainwin_pl, 242, 58); + button_on_release (mainwin_pl, mainwin_pl_cb); + + mainwin_info = textbox_new (153, "", config.mainwin_use_bitmapfont ? NULL : + config.mainwin_font, config.autoscroll); + window_put_widget (mainwin, FALSE, mainwin_info, 112, 27); + g_signal_connect (mainwin_info, "button-press-event", (GCallback) + mainwin_info_button_press, NULL); + + mainwin_othertext = textbox_new (153, "", NULL, FALSE); + window_put_widget (mainwin, FALSE, mainwin_othertext, 112, 43); + + mainwin_rate_text = textbox_new (15, "", NULL, FALSE); + window_put_widget (mainwin, FALSE, mainwin_rate_text, 111, 43); + + mainwin_freq_text = textbox_new (10, "", NULL, FALSE); + window_put_widget (mainwin, FALSE, mainwin_freq_text, 156, 43); + + mainwin_menurow = ui_skinned_menurow_new (); + window_put_widget (mainwin, FALSE, mainwin_menurow, 10, 22); + + mainwin_volume = hslider_new (0, 51, SKIN_VOLUME, 68, 13, 0, 0, 14, 11, 15, 422, 0, 422); + window_put_widget (mainwin, FALSE, mainwin_volume, 107, 57); + hslider_on_motion (mainwin_volume, mainwin_volume_motion_cb); + hslider_on_release (mainwin_volume, mainwin_volume_release_cb); + + mainwin_balance = hslider_new (0, 24, SKIN_BALANCE, 38, 13, 9, 0, 14, 11, 15, 422, 0, 422); + window_put_widget (mainwin, FALSE, mainwin_balance, 177, 57); + hslider_on_motion (mainwin_balance, mainwin_balance_motion_cb); + hslider_on_release (mainwin_balance, mainwin_balance_release_cb); - mainwin_monostereo = ui_skinned_monostereo_new(SKINNED_WINDOW(mainwin)->normal, 212, 41, SKIN_MONOSTEREO); + mainwin_monostereo = ui_skinned_monostereo_new (); + window_put_widget (mainwin, FALSE, mainwin_monostereo, 212, 41); - mainwin_playstatus = ui_skinned_playstatus_new(SKINNED_WINDOW(mainwin)->normal, 24, 28); + mainwin_playstatus = ui_skinned_playstatus_new (); + window_put_widget (mainwin, FALSE, mainwin_playstatus, 24, 28); - mainwin_minus_num = ui_skinned_number_new(SKINNED_WINDOW(mainwin)->normal, 36, 26, SKIN_NUMBERS); + mainwin_minus_num = ui_skinned_number_new (); + window_put_widget (mainwin, FALSE, mainwin_minus_num, 36, 26); g_signal_connect(mainwin_minus_num, "button-press-event", G_CALLBACK(change_timer_mode_cb), NULL); - mainwin_10min_num = ui_skinned_number_new(SKINNED_WINDOW(mainwin)->normal, 48, 26, SKIN_NUMBERS); + mainwin_10min_num = ui_skinned_number_new (); + window_put_widget (mainwin, FALSE, mainwin_10min_num, 48, 26); g_signal_connect(mainwin_10min_num, "button-press-event", G_CALLBACK(change_timer_mode_cb), NULL); - mainwin_min_num = ui_skinned_number_new(SKINNED_WINDOW(mainwin)->normal, 60, 26, SKIN_NUMBERS); + mainwin_min_num = ui_skinned_number_new (); + window_put_widget (mainwin, FALSE, mainwin_min_num, 60, 26); g_signal_connect(mainwin_min_num, "button-press-event", G_CALLBACK(change_timer_mode_cb), NULL); - mainwin_10sec_num = ui_skinned_number_new(SKINNED_WINDOW(mainwin)->normal, 78, 26, SKIN_NUMBERS); + mainwin_10sec_num = ui_skinned_number_new (); + window_put_widget (mainwin, FALSE, mainwin_10sec_num, 78, 26); g_signal_connect(mainwin_10sec_num, "button-press-event", G_CALLBACK(change_timer_mode_cb), NULL); - mainwin_sec_num = ui_skinned_number_new(SKINNED_WINDOW(mainwin)->normal, 90, 26, SKIN_NUMBERS); + mainwin_sec_num = ui_skinned_number_new (); + window_put_widget (mainwin, FALSE, mainwin_sec_num, 90, 26); g_signal_connect(mainwin_sec_num, "button-press-event", G_CALLBACK(change_timer_mode_cb), NULL); - mainwin_about = ui_skinned_button_new(); - ui_skinned_small_button_setup(mainwin_about, SKINNED_WINDOW(mainwin)->normal, 247, 83, 20, 25); - g_signal_connect(mainwin_about, "clicked", G_CALLBACK(action_about_audacious), NULL); + mainwin_about = button_new_small (20, 25); + window_put_widget (mainwin, FALSE, mainwin_about, 247, 83); + button_on_release (mainwin_about, (ButtonCB) audgui_show_about_window); - mainwin_vis = ui_vis_new(SKINNED_WINDOW(mainwin)->normal, 24, 43, 76); + mainwin_vis = ui_vis_new (); + window_put_widget (mainwin, FALSE, mainwin_vis, 24, 43); g_signal_connect(mainwin_vis, "button-press-event", G_CALLBACK(mainwin_vis_cb), NULL); - mainwin_position = ui_skinned_horizontal_slider_new(SKINNED_WINDOW(mainwin)->normal, 16, 72, 248, - 10, 248, 0, 278, 0, 29, 10, 10, 0, 0, 219, - NULL, SKIN_POSBAR); - g_signal_connect(mainwin_position, "motion", G_CALLBACK(mainwin_position_motion_cb), NULL); - g_signal_connect(mainwin_position, "release", G_CALLBACK(mainwin_position_release_cb), NULL); + mainwin_position = hslider_new (0, 219, SKIN_POSBAR, 248, 10, 0, 0, 29, 10, 248, 0, 278, 0); + window_put_widget (mainwin, FALSE, mainwin_position, 16, 72); + hslider_on_motion (mainwin_position, mainwin_position_motion_cb); + hslider_on_release (mainwin_position, mainwin_position_release_cb); /* shaded */ - mainwin_shaded_menubtn = ui_skinned_button_new(); - ui_skinned_push_button_setup(mainwin_shaded_menubtn, SKINNED_WINDOW(mainwin)->shaded, - 6, 3, 9, 9, 0, 0, 0, 9, SKIN_TITLEBAR); - g_signal_connect(mainwin_shaded_menubtn, "clicked", mainwin_menubtn_cb, NULL ); - - mainwin_shaded_minimize = ui_skinned_button_new(); - ui_skinned_push_button_setup(mainwin_shaded_minimize, SKINNED_WINDOW(mainwin)->shaded, - 244, 3, 9, 9, 9, 0, 9, 9, SKIN_TITLEBAR); - g_signal_connect(mainwin_shaded_minimize, "clicked", mainwin_minimize_cb, NULL ); - - mainwin_shaded_shade = ui_skinned_button_new(); - ui_skinned_push_button_setup(mainwin_shaded_shade, SKINNED_WINDOW(mainwin)->shaded, - 254, 3, 9, 9, 0, 27, 9, 27, SKIN_TITLEBAR); - g_signal_connect(mainwin_shaded_shade, "clicked", mainwin_shade_toggle, NULL ); - - mainwin_shaded_close = ui_skinned_button_new(); - ui_skinned_push_button_setup(mainwin_shaded_close, SKINNED_WINDOW(mainwin)->shaded, - 264, 3, 9, 9, 18, 0, 18, 9, SKIN_TITLEBAR); - g_signal_connect ((GObject *) mainwin_shaded_close, "clicked", - aud_drct_quit, 0); - - mainwin_srew = ui_skinned_button_new(); - ui_skinned_small_button_setup(mainwin_srew, SKINNED_WINDOW(mainwin)->shaded, 169, 4, 8, 7); - g_signal_connect(mainwin_srew, "clicked", mainwin_aud_playlist_prev, NULL); - - mainwin_splay = ui_skinned_button_new(); - ui_skinned_small_button_setup(mainwin_splay, SKINNED_WINDOW(mainwin)->shaded, 177, 4, 10, 7); - g_signal_connect(mainwin_splay, "clicked", mainwin_play_pushed, NULL); - - mainwin_spause = ui_skinned_button_new(); - ui_skinned_small_button_setup(mainwin_spause, SKINNED_WINDOW(mainwin)->shaded, 187, 4, 10, 7); - g_signal_connect(mainwin_spause, "clicked", aud_drct_pause, NULL); - - mainwin_sstop = ui_skinned_button_new(); - ui_skinned_small_button_setup(mainwin_sstop, SKINNED_WINDOW(mainwin)->shaded, 197, 4, 9, 7); - g_signal_connect(mainwin_sstop, "clicked", mainwin_stop_pushed, NULL); - - mainwin_sfwd = ui_skinned_button_new(); - ui_skinned_small_button_setup(mainwin_sfwd, SKINNED_WINDOW(mainwin)->shaded, 206, 4, 8, 7); - g_signal_connect(mainwin_sfwd, "clicked", mainwin_aud_playlist_next, NULL); - - mainwin_seject = ui_skinned_button_new(); - ui_skinned_small_button_setup(mainwin_seject, SKINNED_WINDOW(mainwin)->shaded, 216, 4, 9, 7); - g_signal_connect(mainwin_seject, "clicked", mainwin_eject_pushed, NULL); + mainwin_shaded_menubtn = button_new (9, 9, 0, 0, 0, 9, SKIN_TITLEBAR, SKIN_TITLEBAR); + window_put_widget (mainwin, TRUE, mainwin_shaded_menubtn, 6, 3); + button_on_release (mainwin_shaded_menubtn, (ButtonCB) mainwin_menubtn_cb); + + mainwin_shaded_minimize = button_new (9, 9, 9, 0, 9, 9, SKIN_TITLEBAR, SKIN_TITLEBAR); + window_put_widget (mainwin, TRUE, mainwin_shaded_minimize, 244, 3); + button_on_release (mainwin_shaded_minimize, (ButtonCB) mainwin_minimize_cb); + + mainwin_shaded_shade = button_new (9, 9, 0, 27, 9, 27, SKIN_TITLEBAR, SKIN_TITLEBAR); + window_put_widget (mainwin, TRUE, mainwin_shaded_shade, 254, 3); + button_on_release (mainwin_shaded_shade, (ButtonCB) mainwin_shade_toggle); + + mainwin_shaded_close = button_new (9, 9, 18, 0, 18, 9, SKIN_TITLEBAR, SKIN_TITLEBAR); + window_put_widget (mainwin, TRUE, mainwin_shaded_close, 264, 3); + button_on_release (mainwin_shaded_close, (ButtonCB) aud_drct_quit); + + mainwin_srew = button_new_small (8, 7); + window_put_widget (mainwin, TRUE, mainwin_srew, 169, 4); + button_on_release (mainwin_srew, (ButtonCB) aud_drct_pl_prev); + + mainwin_splay = button_new_small (10, 7); + window_put_widget (mainwin, TRUE, mainwin_splay, 177, 4); + button_on_release (mainwin_splay, (ButtonCB) mainwin_play_pushed); + + mainwin_spause = button_new_small (10, 7); + window_put_widget (mainwin, TRUE, mainwin_spause, 187, 4); + button_on_release (mainwin_spause, (ButtonCB) aud_drct_pause); + + mainwin_sstop = button_new_small (9, 7); + window_put_widget (mainwin, TRUE, mainwin_sstop, 197, 4); + button_on_release (mainwin_sstop, (ButtonCB) aud_drct_stop); + + mainwin_sfwd = button_new_small (8, 7); + window_put_widget (mainwin, TRUE, mainwin_sfwd, 206, 4); + button_on_release (mainwin_sfwd, (ButtonCB) aud_drct_pl_next); + + mainwin_seject = button_new_small (9, 7); + window_put_widget (mainwin, TRUE, mainwin_seject, 216, 4); + button_on_release (mainwin_seject, (ButtonCB) action_play_file); - mainwin_svis = ui_svis_new(SKINNED_WINDOW(mainwin)->shaded, 79, 5); + mainwin_svis = ui_svis_new (); + window_put_widget (mainwin, TRUE, mainwin_svis, 79, 5); g_signal_connect(mainwin_svis, "button-press-event", G_CALLBACK(mainwin_vis_cb), NULL); - mainwin_sposition = ui_skinned_horizontal_slider_new(SKINNED_WINDOW(mainwin)->shaded, 226, 4, 17, - 7, 17, 36, 17, 36, 3, 7, 36, 0, 1, 13, - mainwin_spos_frame_cb, SKIN_TITLEBAR); - g_signal_connect(mainwin_sposition, "motion", G_CALLBACK(mainwin_spos_motion_cb), NULL); - g_signal_connect(mainwin_sposition, "release", G_CALLBACK(mainwin_spos_release_cb), NULL); + mainwin_sposition = hslider_new (1, 13, SKIN_TITLEBAR, 17, 7, 0, 36, 3, 7, 17, 36, 17, 36); + window_put_widget (mainwin, TRUE, mainwin_sposition, 226, 4); + hslider_on_motion (mainwin_sposition, mainwin_spos_motion_cb); + hslider_on_release (mainwin_sposition, mainwin_spos_release_cb); - mainwin_stime_min = ui_skinned_textbox_new(SKINNED_WINDOW(mainwin)->shaded, 130, 4, 15, FALSE, SKIN_TEXT); - g_signal_connect(mainwin_stime_min, "button-press-event", G_CALLBACK(change_timer_mode_cb), NULL); + mainwin_stime_min = textbox_new (15, "", NULL, FALSE); + window_put_widget (mainwin, TRUE, mainwin_stime_min, 130, 4); + + mainwin_stime_sec = textbox_new (10, "", NULL, FALSE); + window_put_widget (mainwin, TRUE, mainwin_stime_sec, 147, 4); - mainwin_stime_sec = ui_skinned_textbox_new(SKINNED_WINDOW(mainwin)->shaded, 147, 4, 10, FALSE, SKIN_TEXT); + g_signal_connect(mainwin_stime_min, "button-press-event", G_CALLBACK(change_timer_mode_cb), NULL); g_signal_connect(mainwin_stime_sec, "button-press-event", G_CALLBACK(change_timer_mode_cb), NULL); } @@ -2128,28 +1445,37 @@ gtk_widget_set_no_show_all (mainwin_monostereo, TRUE); gtk_widget_set_no_show_all (mainwin_othertext, TRUE); - gtk_widget_show_all (((SkinnedWindow *) mainwin)->normal); - gtk_widget_show_all (((SkinnedWindow *) mainwin)->shaded); - - ui_skinned_window_set_shade (mainwin, config.player_shaded); + window_set_shaded (mainwin, config.player_shaded); + window_show_all (mainwin); } -#if 0 /* This can be enabled when at least two window managers send the event - correctly. Currently, I don't know of any that do (see Debian #567607, - #567608, and #567609. -jlindgren */ static gboolean state_cb (GtkWidget * widget, GdkEventWindowState * event, void * unused) { if (event->changed_mask & GDK_WINDOW_STATE_STICKY) - mainwin_set_sticky (event->new_window_state & GDK_WINDOW_STATE_STICKY); + { + config.sticky = (event->new_window_state & GDK_WINDOW_STATE_STICKY) ? + TRUE : FALSE; + + GtkToggleAction * action = (GtkToggleAction *) + gtk_action_group_get_action (toggleaction_group_others, + "view put on all workspaces"); + gtk_toggle_action_set_active (action, config.sticky); + } if (event->changed_mask & GDK_WINDOW_STATE_ABOVE) - mainwin_set_always_on_top (event->new_window_state & - GDK_WINDOW_STATE_ABOVE); + { + config.always_on_top = (event->new_window_state & + GDK_WINDOW_STATE_ABOVE) ? TRUE : FALSE; + + GtkToggleAction * action = (GtkToggleAction *) + gtk_action_group_get_action (toggleaction_group_others, + "view always on top"); + gtk_toggle_action_set_active (action, config.always_on_top); + } return TRUE; } -#endif static gboolean delete_cb (GtkWidget * widget, GdkEvent * event, void * unused) { @@ -2157,32 +1483,32 @@ return TRUE; } -static void -mainwin_create_window(void) +static void mainwin_draw (GtkWidget * window, cairo_t * cr) { - gint width, height; + gint width = config.player_shaded ? MAINWIN_SHADED_WIDTH : active_skin->properties.mainwin_width; + gint height = config.player_shaded ? MAINWIN_SHADED_HEIGHT : active_skin->properties.mainwin_height; - mainwin = ui_skinned_window_new("player", &config.player_x, &config.player_y); - gtk_window_set_title(GTK_WINDOW(mainwin), _("Audacious")); - gtk_window_set_role(GTK_WINDOW(mainwin), "player"); - gtk_window_set_resizable(GTK_WINDOW(mainwin), FALSE); + skin_draw_pixbuf (cr, SKIN_MAIN, 0, 0, 0, 0, width, height); + skin_draw_mainwin_titlebar (cr, config.player_shaded, TRUE); +} - width = config.player_shaded ? MAINWIN_SHADED_WIDTH : aud_active_skin->properties.mainwin_width; - height = config.player_shaded ? MAINWIN_SHADED_HEIGHT : aud_active_skin->properties.mainwin_height; +static void +mainwin_create_window(void) +{ + gint width = config.player_shaded ? MAINWIN_SHADED_WIDTH : active_skin->properties.mainwin_width; + gint height = config.player_shaded ? MAINWIN_SHADED_HEIGHT : active_skin->properties.mainwin_height; - if (config.scaled) { - width *= config.scale_factor; - height *= config.scale_factor; - } + mainwin = window_new (& config.player_x, & config.player_y, width, height, + TRUE, config.player_shaded, mainwin_draw); - gtk_widget_set_size_request(mainwin, width, height); + gtk_window_set_title(GTK_WINDOW(mainwin), _("Audacious")); g_signal_connect(mainwin, "button_press_event", G_CALLBACK(mainwin_mouse_button_press), NULL); g_signal_connect(mainwin, "scroll_event", G_CALLBACK(mainwin_scrolled), NULL); - aud_drag_dest_set(mainwin); + drag_dest_set(mainwin); g_signal_connect ((GObject *) mainwin, "drag-data-received", (GCallback) mainwin_drag_data_received, 0); @@ -2191,10 +1517,8 @@ ui_main_evlistener_init(); -#if 0 g_signal_connect ((GObject *) mainwin, "window-state-event", (GCallback) state_cb, NULL); -#endif g_signal_connect ((GObject *) mainwin, "delete-event", (GCallback) delete_cb, NULL); } @@ -2234,35 +1558,14 @@ aud_drct_get_volume_balance (& balance); mainwin_set_volume_slider (volume); mainwin_set_balance_slider (balance); + equalizerwin_set_volume_slider (volume); + equalizerwin_set_balance_slider (balance); } static void mainwin_update_time_display (gint time, gint length) { gchar scratch[7]; - - if (config.timer_mode == TIMER_REMAINING && length > 0) - { - if (length - time < 60000) /* " -0:SS" */ - snprintf (scratch, sizeof scratch, " -0:%02d", (length - time) / - 1000); - else if (length - time < 6000000) /* "-MM:SS" */ - snprintf (scratch, sizeof scratch, "%3d:%02d", (time - length) / - 60000, (length - time) / 1000 % 60); - else /* "-HH:MM" */ - snprintf (scratch, sizeof scratch, "%3d:%02d", (time - length) / - 3600000, (length - time) / 60000 % 60); - } - else - { - if (time < 60000000) /* MMM:SS */ - snprintf (scratch, sizeof scratch, "%3d:%02d", time / 60000, time / - 1000 % 60); - else /* HHH:MM */ - snprintf (scratch, sizeof scratch, "%3d:%02d", time / 3600000, time - / 60000 % 60); - } - - scratch[3] = 0; + format_time (scratch, time, length); ui_skinned_number_set (mainwin_minus_num, scratch[0]); ui_skinned_number_set (mainwin_10min_num, scratch[1]); @@ -2270,10 +1573,10 @@ ui_skinned_number_set (mainwin_10sec_num, scratch[4]); ui_skinned_number_set (mainwin_sec_num, scratch[5]); - if (! ((UiSkinnedHorizontalSlider *) mainwin_sposition)->pressed) + if (! hslider_get_pressed (mainwin_sposition)) { - ui_skinned_textbox_set_text (mainwin_stime_min, scratch); - ui_skinned_textbox_set_text (mainwin_stime_sec, scratch + 4); + textbox_set_text (mainwin_stime_min, scratch); + textbox_set_text (mainwin_stime_sec, scratch + 4); } playlistwin_set_time (scratch, scratch + 4); @@ -2288,30 +1591,35 @@ { if (time < length) { - ui_skinned_horizontal_slider_set_position (mainwin_position, time * - (gint64) 219 / length); - ui_skinned_horizontal_slider_set_position (mainwin_sposition, 1 + - time * (gint64) 12 / length); + hslider_set_pos (mainwin_position, time * (gint64) 219 / length); + hslider_set_pos (mainwin_sposition, 1 + time * (gint64) 12 / length); } else { - ui_skinned_horizontal_slider_set_position (mainwin_position, 219); - ui_skinned_horizontal_slider_set_position (mainwin_sposition, 13); + hslider_set_pos (mainwin_position, 219); + hslider_set_pos (mainwin_sposition, 13); } + + mainwin_spos_set_knob (); } } void mainwin_update_song_info (void) { - gint time, length; - mainwin_update_volume (); if (! aud_drct_get_playing ()) return; - time = aud_drct_get_time (); - length = aud_drct_get_length (); + gint time = 0, length = 0; + if (aud_drct_get_ready ()) + { + time = aud_drct_get_time (); + length = aud_drct_get_length (); + } + + mainwin_update_time_display (time, length); + mainwin_update_time_slider (time, length); /* Ugh, this does NOT belong here. -jlindgren */ if (ab_position_a > -1 && ab_position_b > -1 && time >= ab_position_b) @@ -2319,130 +1627,96 @@ aud_drct_seek (ab_position_a); return; } - - mainwin_update_time_display (time, length); - mainwin_update_time_slider (time, length); } /* toggleactionentries actions */ -void -action_anamode_peaks( GtkToggleAction * action ) +void action_anamode_peaks (GtkToggleAction * action) { - config.analyzer_peaks = gtk_toggle_action_get_active( action ); + config.analyzer_peaks = gtk_toggle_action_get_active (action); + ui_vis_clear_data (mainwin_vis); + ui_svis_clear_data (mainwin_svis); } -void -action_autoscroll_songname( GtkToggleAction * action ) +void action_autoscroll_songname (GtkToggleAction * action) { - mainwin_set_title_scroll(gtk_toggle_action_get_active(action)); - playlistwin_set_sinfo_scroll(config.autoscroll); /* propagate scroll setting to playlistwin_sinfo */ + config.autoscroll = gtk_toggle_action_get_active (action); + textbox_set_scroll (mainwin_info, config.autoscroll); + textbox_set_scroll (playlistwin_sinfo, config.autoscroll); } -void -action_playback_noplaylistadvance( GtkToggleAction * action ) +void action_playback_noplaylistadvance (GtkToggleAction * action) { - aud_cfg->no_playlist_advance = gtk_toggle_action_get_active( action ); + aud_set_bool (NULL, "no_playlist_advance", gtk_toggle_action_get_active (action)); - if (aud_cfg->no_playlist_advance) - show_status_message (_("Single mode.")); + if (gtk_toggle_action_get_active (action)) + mainwin_show_status_message (_("Single mode.")); else - show_status_message (_("Playlist mode.")); + mainwin_show_status_message (_("Playlist mode.")); } -void -action_playback_repeat( GtkToggleAction * action ) +void action_playback_repeat (GtkToggleAction * action) { - aud_cfg->repeat = gtk_toggle_action_get_active( action ); - ui_skinned_button_set_inside(mainwin_repeat, aud_cfg->repeat); + aud_set_bool (NULL, "repeat", gtk_toggle_action_get_active (action)); + button_set_active (mainwin_repeat, gtk_toggle_action_get_active (action)); } -void -action_playback_shuffle( GtkToggleAction * action ) +void action_playback_shuffle (GtkToggleAction * action) { - aud_cfg->shuffle = gtk_toggle_action_get_active( action ); - ui_skinned_button_set_inside(mainwin_shuffle, aud_cfg->shuffle); + aud_set_bool (NULL, "shuffle", gtk_toggle_action_get_active (action)); + button_set_active (mainwin_shuffle, gtk_toggle_action_get_active (action)); } void action_stop_after_current_song (GtkToggleAction * action) { gboolean active = gtk_toggle_action_get_active (action); - if (active != aud_cfg->stopaftersong) + if (active != aud_get_bool (NULL, "stop_after_current_song")) { if (active) - show_status_message (_("Stopping after song.")); + mainwin_show_status_message (_("Stopping after song.")); else - show_status_message (_("Not stopping after song.")); + mainwin_show_status_message (_("Not stopping after song.")); - aud_cfg->stopaftersong = active; - hook_call ("toggle stop after song", NULL); + aud_set_bool (NULL, "stop_after_current_song", active); } } -void -action_view_always_on_top( GtkToggleAction * action ) -{ - UI_SKINNED_MENUROW(mainwin_menurow)->always_selected = gtk_toggle_action_get_active( action ); - ui_skinned_menurow_update (mainwin_menurow); - config.always_on_top = UI_SKINNED_MENUROW(mainwin_menurow)->always_selected; - hint_set_always(config.always_on_top); -} - -void -action_view_scaled( GtkToggleAction * action ) -{ - UI_SKINNED_MENUROW(mainwin_menurow)->scale_selected = gtk_toggle_action_get_active( action ); - ui_skinned_menurow_update (mainwin_menurow); - set_scaled(UI_SKINNED_MENUROW(mainwin_menurow)->scale_selected); - gdk_flush(); -} - -void -action_view_easymove( GtkToggleAction * action ) -{ - config.easy_move = gtk_toggle_action_get_active( action ); -} - -void -action_view_on_all_workspaces( GtkToggleAction * action ) +void action_view_always_on_top (GtkToggleAction * action) { - config.sticky = gtk_toggle_action_get_active( action ); - hint_set_sticky(config.sticky); -} + gboolean on_top = gtk_toggle_action_get_active (action); -void -action_roll_up_equalizer( GtkToggleAction * action ) -{ - equalizerwin_set_shade_menu_cb(gtk_toggle_action_get_active(action)); + if (config.always_on_top != on_top) + { + config.always_on_top = on_top; + ui_skinned_menurow_update (mainwin_menurow); + hint_set_always (config.always_on_top); + } } -void -action_roll_up_player( GtkToggleAction * action ) +void action_view_on_all_workspaces (GtkToggleAction * action) { - mainwin_set_shade_menu_cb(gtk_toggle_action_get_active(action)); -} + gboolean sticky = gtk_toggle_action_get_active (action); -void -action_roll_up_playlist_editor( GtkToggleAction * action ) -{ - playlistwin_set_shade(gtk_toggle_action_get_active(action)); + if (config.sticky != sticky) + { + config.sticky = sticky; + hint_set_sticky (sticky); + } } -void -action_show_equalizer( GtkToggleAction * action ) +void action_roll_up_player (GtkToggleAction * action) { - equalizerwin_show (gtk_toggle_action_get_active (action)); -} + config.player_shaded = gtk_toggle_action_get_active (action); + window_set_shaded (mainwin, config.player_shaded); -void -action_show_playlist_editor( GtkToggleAction * action ) -{ - playlistwin_show (gtk_toggle_action_get_active (action)); + gint width = config.player_shaded ? MAINWIN_SHADED_WIDTH : active_skin->properties.mainwin_width; + gint height = config.player_shaded ? MAINWIN_SHADED_HEIGHT : active_skin->properties.mainwin_height; + window_set_size (mainwin, width, height); + mainwin_set_shape (); } -void -action_show_player( GtkToggleAction * action ) +void action_show_player (GtkToggleAction * action) { mainwin_show(gtk_toggle_action_get_active(action)); } @@ -2450,83 +1724,83 @@ /* radioactionentries actions (one callback for each radio group) */ -void -action_anafoff( GtkAction *action, GtkRadioAction *current ) +void action_anafoff (GtkAction * action, GtkRadioAction * current) { - mainwin_vis_set_afalloff(gtk_radio_action_get_current_value(current)); + config.analyzer_falloff = gtk_radio_action_get_current_value (current); + ui_vis_clear_data (mainwin_vis); + ui_svis_clear_data (mainwin_svis); } -void -action_anamode( GtkAction *action, GtkRadioAction *current ) +void action_anamode (GtkAction * action, GtkRadioAction * current) { - mainwin_vis_set_analyzer_mode(gtk_radio_action_get_current_value(current)); + config.analyzer_mode = gtk_radio_action_get_current_value (current); + ui_vis_clear_data (mainwin_vis); + ui_svis_clear_data (mainwin_svis); } -void -action_anatype( GtkAction *action, GtkRadioAction *current ) +void action_anatype (GtkAction * action, GtkRadioAction * current) { - mainwin_vis_set_analyzer_type(gtk_radio_action_get_current_value(current)); + config.analyzer_type = gtk_radio_action_get_current_value (current); + ui_vis_clear_data (mainwin_vis); + ui_svis_clear_data (mainwin_svis); } -void -action_peafoff( GtkAction *action, GtkRadioAction *current ) +void action_peafoff (GtkAction * action, GtkRadioAction * current) { - mainwin_vis_set_pfalloff(gtk_radio_action_get_current_value(current)); + config.peaks_falloff = gtk_radio_action_get_current_value (current); + ui_vis_clear_data (mainwin_vis); + ui_svis_clear_data (mainwin_svis); } -void -action_scomode( GtkAction *action, GtkRadioAction *current ) +void action_scomode (GtkAction * action, GtkRadioAction * current) { - config.scope_mode = gtk_radio_action_get_current_value(current); + config.scope_mode = gtk_radio_action_get_current_value (current); + ui_vis_clear_data (mainwin_vis); + ui_svis_clear_data (mainwin_svis); } -void -action_vismode( GtkAction *action, GtkRadioAction *current ) +void action_vismode (GtkAction * action, GtkRadioAction * current) { - mainwin_vis_set_type_menu_cb(gtk_radio_action_get_current_value(current)); + config.vis_type = gtk_radio_action_get_current_value (current); + ui_vis_clear_data (mainwin_vis); + ui_svis_clear_data (mainwin_svis); + + start_stop_visual (FALSE); } -void -action_vprmode( GtkAction *action, GtkRadioAction *current ) +void action_vprmode (GtkAction * action, GtkRadioAction * current) { config.voiceprint_mode = gtk_radio_action_get_current_value(current); + ui_vis_clear_data (mainwin_vis); + ui_svis_clear_data (mainwin_svis); } -void -action_wshmode( GtkAction *action, GtkRadioAction *current ) +void action_wshmode (GtkAction * action, GtkRadioAction * current) { config.vu_mode = gtk_radio_action_get_current_value(current); + ui_vis_clear_data (mainwin_vis); + ui_svis_clear_data (mainwin_svis); } -void -action_viewtime( GtkAction *action, GtkRadioAction *current ) +void action_viewtime (GtkAction * action, GtkRadioAction * current) { - set_timer_mode_menu_cb(gtk_radio_action_get_current_value(current)); + config.timer_mode = gtk_radio_action_get_current_value (current); } /* actionentries actions */ -void -action_about_audacious( void ) -{ - audgui_show_about_window(); -} - -void -action_play_file( void ) +void action_play_file (void) { audgui_run_filebrowser(TRUE); /* TRUE = PLAY_BUTTON */ } -void -action_play_location( void ) +void action_play_location (void) { audgui_show_add_url_window (TRUE); } -void -action_ab_set( void ) +void action_ab_set (void) { if (aud_drct_get_length () > 0) { @@ -2552,8 +1826,7 @@ } } -void -action_ab_clear( void ) +void action_ab_clear (void) { if (aud_drct_get_length () > 0) { @@ -2561,69 +1834,3 @@ mainwin_release_info_text(); } } - -void -action_current_track_info( void ) -{ - audgui_infowin_show_current (); -} - -void -action_jump_to_file( void ) -{ - audgui_jump_to_track(); -} - -void -action_jump_to_playlist_start( void ) -{ - aud_drct_pl_set_pos (0); -} - -void -action_jump_to_time( void ) -{ - mainwin_jump_to_time(); -} - -void -action_playback_next( void ) -{ - aud_drct_pl_next (); -} - -void -action_playback_previous( void ) -{ - aud_drct_pl_prev (); -} - -void -action_playback_play( void ) -{ - mainwin_play_pushed(); -} - -void -action_playback_pause( void ) -{ - aud_drct_pause(); -} - -void -action_playback_stop( void ) -{ - mainwin_stop_pushed(); -} - -void -action_preferences( void ) -{ - show_preferences_window(TRUE); -} - -void -action_quit( void ) -{ - aud_drct_quit (); -} diff -Nru audacious-plugins-2.4.4/src/skins/ui_main_evlisteners.c audacious-plugins-3.2/src/skins/ui_main_evlisteners.c --- audacious-plugins-2.4.4/src/skins/ui_main_evlisteners.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_main_evlisteners.c 2012-01-20 19:48:30.000000000 +0000 @@ -18,35 +18,41 @@ * Audacious or using our public API to be a derived work. */ -#include #include -#include #include #include #include #include "skins_cfg.h" -#include "ui_equalizer.h" #include "ui_main.h" +#include "ui_main_evlisteners.h" #include "ui_manager.h" -#include "ui_playlist.h" +#include "ui_skin.h" #include "ui_skinned_playstatus.h" -#include "ui_skinned_textbox.h" -#include "ui_skinned_window.h" +#include "ui_vis.h" #include "util.h" -static void ui_main_evlistener_title_change (void * data, void * user_data) +static void title_change (void) { - gchar * title; + if (aud_drct_get_ready ()) + { + gchar * title = aud_drct_get_title (); + mainwin_set_song_title (title); + str_unref (title); + } + else + mainwin_set_song_title ("Buffering ..."); +} - /* may be called asynchronously */ - if (! aud_drct_get_playing ()) - return; +static void info_change (void) +{ + gint bitrate = 0, samplerate = 0, channels = 0; + + if (aud_drct_get_ready ()) + aud_drct_get_info (& bitrate, & samplerate, & channels); - title = aud_drct_get_title (); - mainwin_set_song_title (title); - g_free (title); + mainwin_set_song_info (bitrate, samplerate, channels); } static void @@ -68,14 +74,16 @@ gtk_widget_show (mainwin_10sec_num); gtk_widget_show (mainwin_sec_num); - if (aud_drct_get_length () > 0) + if (aud_drct_get_ready () && aud_drct_get_length () > 0) { gtk_widget_show (mainwin_position); gtk_widget_show (mainwin_sposition); } ui_skinned_playstatus_set_status(mainwin_playstatus, STATUS_PLAY); - ui_main_evlistener_title_change (NULL, NULL); + + title_change (); + info_change (); } static void @@ -84,11 +92,23 @@ mainwin_clear_song_info (); } +static void repeat_toggled (void * data, void * user) +{ + bool_t repeat = aud_get_bool (NULL, "repeat"); + check_set (toggleaction_group_others, "playback repeat", repeat); +} + +static void shuffle_toggled (void * data, void * user) +{ + bool_t shuffle = aud_get_bool (NULL, "shuffle"); + check_set (toggleaction_group_others, "playback shuffle", shuffle); +} + static void stop_after_song_toggled (void * hook_data, void * user_data) { mainwin_enable_status_message (FALSE); check_set (toggleaction_group_others, "stop after current song", - aud_cfg->stopaftersong); + aud_get_bool (NULL, "stop_after_current_song")); mainwin_enable_status_message (TRUE); } @@ -103,257 +123,188 @@ ui_skinned_playstatus_set_status(mainwin_playstatus, STATUS_PLAY); } -static void -ui_main_evlistener_playback_play_file(gpointer hook_data, gpointer user_data) -{ - if (config.random_skin_on_play) - skin_set_random_skin(); -} - -static void vis_clear_cb (void * unused, void * another) +static void vis_clear_cb (void) { ui_vis_clear_data (mainwin_vis); ui_svis_clear_data (mainwin_svis); } -void info_change (void) +static void render_mono_pcm (const gfloat * pcm) { - gint bitrate, samplerate, channels; + guchar data[512]; - /* may be called asynchronously */ - if (! aud_drct_get_playing ()) + if (config.vis_type != VIS_SCOPE) return; - aud_drct_get_info (& bitrate, & samplerate, & channels); - mainwin_set_song_info (bitrate, samplerate, channels); -} + for (gint i = 0; i < 75; i ++) + { + /* the signal is amplified by 2x */ + /* output values are in the range 0 to 16 */ + gint val = 8 + roundf (16 * pcm[i * 512 / 75]); + data[i] = CLAMP (val, 0, 16); + } -static void -ui_main_evlistener_mainwin_set_always_on_top(gpointer hook_data, gpointer user_data) -{ - gboolean *ontop = (gboolean*)hook_data; - mainwin_set_always_on_top(*ontop); + if (config.player_shaded) + ui_svis_timeout_func (mainwin_svis, data); + else + ui_vis_timeout_func (mainwin_vis, data); } -static void -ui_main_evlistener_mainwin_show(gpointer hook_data, gpointer user_data) +/* calculate peak dB level, where 1 is 0 dB */ +static gfloat calc_peak_level (const gfloat * pcm, gint step) { - gboolean show = GPOINTER_TO_INT(hook_data); - mainwin_show(show); + gfloat peak = 0.0001; /* must be > 0, or level = -inf */ + + for (gint i = 0; i < 512; i ++) + { + peak = MAX (peak, * pcm); + pcm += step; + } + + return 20 * log10 (peak); } -static void -ui_main_evlistener_equalizerwin_show(gpointer hook_data, gpointer user_data) +static void render_multi_pcm (const gfloat * pcm, gint channels) { - gboolean *show = (gboolean*)hook_data; - equalizerwin_show(*show); + /* "VU meter" */ + if (config.vis_type != VIS_VOICEPRINT || ! config.player_shaded) + return; + + guchar data[512]; + + gint level = 38 + calc_peak_level (pcm, channels); + data[0] = CLAMP (level, 0, 38); + + if (channels >= 2) + { + level = 38 + calc_peak_level (pcm + 1, channels); + data[1] = CLAMP (level, 0, 38); + } + else + data[1] = data[0]; + + ui_svis_timeout_func (mainwin_svis, data); } -static void ui_main_evlistener_visualization_timeout (const VisNode * vis, - void * user) +/* convert linear frequency graph to logarithmic one */ +static void make_log_graph (const gfloat * freq, gint bands, gint db_range, gint + int_range, guchar * graph) { - guint8 intern_vis_data[512]; - gint16 mono_freq[2][256]; - gboolean mono_freq_calced = FALSE; - gint16 mono_pcm[2][512], stereo_pcm[2][512]; - gboolean mono_pcm_calced = FALSE, stereo_pcm_calced = FALSE; - gint i; + static gint last_bands = 0; + static gfloat * xscale = NULL; - if (! vis || config.vis_type == VIS_OFF) - return; + /* conversion table for the x-axis */ + if (bands != last_bands) + { + xscale = g_realloc (xscale, sizeof (gfloat) * (bands + 1)); + for (gint i = 0; i <= bands; i ++) + xscale[i] = powf (257, (gfloat) i / bands) - 1; - if (config.vis_type == VIS_ANALYZER) + last_bands = bands; + } + + for (gint i = 0; i < bands; i ++) { - /* logarithmic scale - 1 */ - const gfloat xscale13[14] = {0.00, 0.53, 1.35, 2.60, 4.51, 7.45, 12.0, - 18.8, 29.4, 45.6, 70.4, 108, 167, 256}; - const gfloat xscale19[20] = {0.00, 0.34, 0.79, 1.40, 2.22, 3.31, 4.77, - 6.72, 9.34, 12.9, 17.6, 23.8, 32.3, 43.6, 58.7, 78.9, 106, 142, 191, - 256}; - const gfloat xscale37[38] = {0.00, 0.16, 0.35, 0.57, 0.82, 1.12, 1.46, - 1.86, 2.32, 2.86, 3.48, 4.21, 5.05, 6.03, 7.16, 8.48, 10.0, 11.8, 13.9, - 16.3, 19.1, 22.3, 26.1, 30.5, 35.6, 41.5, 48.4, 56.4, 65.6, 76.4, 88.9, - 104, 120, 140, 163, 189, 220, 256}; - const gfloat xscale75[76] = {0.00, 0.08, 0.16, 0.25, 0.34, 0.45, 0.56, - 0.68, 0.81, 0.95, 1.10, 1.26, 1.43, 1.62, 1.82, 2.03, 2.27, 2.52, 2.79, - 3.08, 3.39, 3.73, 4.09, 4.48, 4.90, 5.36, 5.85, 6.37, 6.94, 7.55, 8.20, - 8.91, 9.67, 10.5, 11.4, 12.3, 13.3, 14.4, 15.6, 16.9, 18.3, 19.8, 21.4, - 23.1, 24.9, 26.9, 29.1, 31.4, 33.9, 36.5, 39.4, 42.5, 45.9, 49.5, 53.3, - 57.5, 62.0, 66.9, 72.0, 77.7, 83.7, 90.2, 97.2, 105, 113, 122, 131, - 141, 152, 164, 177, 190, 205, 221, 238, 256}; + /* sum up values in freq array between xscale[i] and xscale[i + 1], + including fractional parts */ + gint a = ceilf (xscale[i]); + gint b = floorf (xscale[i + 1]); + gfloat sum = 0; + + if (b < a) + sum += freq[b] * (xscale[i + 1] - xscale[i]); + else + { + if (a > 0) + sum += freq[a - 1] * (a - xscale[i]); + for (; a < b; a ++) + sum += freq[a]; + if (b < 256) + sum += freq[b] * (xscale[i + 1] - b); + } + + /* fudge factor to make the graph have the same overall height as a + 12-band one no matter how many bands there are */ + sum = sum * bands / 12; + + /* convert to dB */ + gfloat val = 20 * log10f (sum); + + /* scale (-db_range, 0.0) to (0.0, int_range) */ + val = (1.0 + val / db_range) * int_range; + + graph[i] = CLAMP (val, 0, int_range); + } +} - const gfloat * xscale; - gint bands, i; +static void render_freq (const gfloat * freq) +{ + guchar data[512]; + if (config.vis_type == VIS_ANALYZER) + { if (config.analyzer_type == ANALYZER_BARS) { if (config.player_shaded) - { - bands = 13; - xscale = xscale13; - } + make_log_graph (freq, 13, 40, 8, data); else - { - bands = 19; - xscale = xscale19; - } + make_log_graph (freq, 19, 40, 16, data); } else { if (config.player_shaded) - { - bands = 37; - xscale = xscale37; - } + make_log_graph (freq, 37, 40, 8, data); else - { - bands = 75; - xscale = xscale75; - } - } - - aud_calc_mono_freq (mono_freq, vis->data, vis->nch); - - for (i = 0; i < bands; i ++) - { - gint a = ceil (xscale[i]); - gint b = floor (xscale[i + 1]); - gint n = 0; - - if (b < a) - n += mono_freq[0][b] * (xscale[i + 1] - xscale[i]); - else - { - if (a > 0) - n += mono_freq[0][a - 1] * (a - xscale[i]); - for (; a < b; a ++) - n += mono_freq[0][a]; - if (b < 256) - n += mono_freq[0][b] * (xscale[i + 1] - b); - } - - /* 30 dB range, amplified 10 dB + extra for narrower bands */ - /* 0.000235 == 1 / 13 / 32767 * 10^(40/20) */ - n = 10 * log10 (n * bands * 0.000235); - intern_vis_data[i] = CLAMP (n, 0, 15); - } - } - else if(config.vis_type == VIS_VOICEPRINT){ - if (config.player_shaded) { - /* VU */ - gint vu, val; - - if (!stereo_pcm_calced) - aud_calc_stereo_pcm(stereo_pcm, vis->data, vis->nch); - vu = 0; - for (i = 0; i < 512; i++) { - val = abs(stereo_pcm[0][i]); - if (val > vu) - vu = val; - } - intern_vis_data[0] = (vu * 37) >> 15; - if (intern_vis_data[0] > 37) - intern_vis_data[0] = 37; - if (vis->nch == 2) { - vu = 0; - for (i = 0; i < 512; i++) { - val = abs(stereo_pcm[1][i]); - if (val > vu) - vu = val; - } - intern_vis_data[1] = (vu * 37) >> 15; - if (intern_vis_data[1] > 37) - intern_vis_data[1] = 37; - } - else - intern_vis_data[1] = intern_vis_data[0]; - } - else { /*Voiceprint*/ - if (!mono_freq_calced) - aud_calc_mono_freq(mono_freq, vis->data, vis->nch); - memset(intern_vis_data, 0, 256); - - /* For the values [0-16] we use the frequency that's 3/2 as much. - If we assume the 512 values calculated by calc_mono_freq to - cover 0-22kHz linearly we get a range of - [0-16] * 3/2 * 22000/512 = [0-1,031] Hz. - Most stuff above that is harmonics and we want to utilize the - 16 samples we have to the max[tm] - */ - for (i = 0; i < 50 ; i+=3){ - intern_vis_data[i/3] += (mono_freq[0][i/2] >> 5); - - /*Boost frequencies above 257Hz a little*/ - //if(i > 4 * 3) - // intern_vis_data[i/3] += 8; - } - } - } - else { /* (config.vis_type == VIS_SCOPE) */ - - /* Oscilloscope */ - gint pos, step; - - if (!mono_pcm_calced) - aud_calc_mono_pcm(mono_pcm, vis->data, vis->nch); - - step = (vis->length << 8) / 74; - for (i = 0, pos = 0; i < 75; i++, pos += step) { - intern_vis_data[i] = ((mono_pcm[0][pos >> 8]) >> 12) + 7; - if (intern_vis_data[i] == 255) - intern_vis_data[i] = 0; - else if (intern_vis_data[i] > 12) - intern_vis_data[i] = 12; - /* Do not see the point of that? (comparison always false) -larne. - if (intern_vis_data[i] < 0) - intern_vis_data[i] = 0; */ + make_log_graph (freq, 75, 40, 16, data); } } + else if (config.vis_type == VIS_VOICEPRINT && ! config.player_shaded) + make_log_graph (freq, 17, 40, 255, data); + else + return; if (config.player_shaded) - ui_svis_timeout_func(mainwin_svis, intern_vis_data); + ui_svis_timeout_func (mainwin_svis, data); else - ui_vis_timeout_func(mainwin_vis, intern_vis_data); + ui_vis_timeout_func (mainwin_vis, data); } void ui_main_evlistener_init(void) { - hook_associate("title change", ui_main_evlistener_title_change, NULL); hook_associate("hide seekbar", ui_main_evlistener_hide_seekbar, NULL); hook_associate("playback begin", ui_main_evlistener_playback_begin, NULL); + hook_associate("playback ready", ui_main_evlistener_playback_begin, NULL); hook_associate("playback stop", ui_main_evlistener_playback_stop, NULL); hook_associate("playback pause", ui_main_evlistener_playback_pause, NULL); hook_associate("playback unpause", ui_main_evlistener_playback_unpause, NULL); - hook_associate("playback play file", ui_main_evlistener_playback_play_file, NULL); - hook_associate ("visualization clear", vis_clear_cb, NULL); + hook_associate ("title change", (HookFunction) title_change, NULL); hook_associate ("info change", (HookFunction) info_change, NULL); - hook_associate("mainwin set always on top", ui_main_evlistener_mainwin_set_always_on_top, NULL); - hook_associate("mainwin show", ui_main_evlistener_mainwin_show, NULL); - hook_associate("equalizerwin show", ui_main_evlistener_equalizerwin_show, NULL); hook_associate("playback seek", (HookFunction) mainwin_update_song_info, NULL); - hook_associate ("toggle stop after song", stop_after_song_toggled, NULL); + + hook_associate ("set repeat", repeat_toggled, NULL); + hook_associate ("set shuffle", shuffle_toggled, NULL); + hook_associate ("set stop_after_current_song", stop_after_song_toggled, NULL); } void ui_main_evlistener_dissociate(void) { - hook_dissociate("title change", ui_main_evlistener_title_change); hook_dissociate("hide seekbar", ui_main_evlistener_hide_seekbar); hook_dissociate("playback begin", ui_main_evlistener_playback_begin); + hook_dissociate("playback ready", ui_main_evlistener_playback_begin); hook_dissociate("playback stop", ui_main_evlistener_playback_stop); hook_dissociate("playback pause", ui_main_evlistener_playback_pause); hook_dissociate("playback unpause", ui_main_evlistener_playback_unpause); - hook_dissociate("playback play file", ui_main_evlistener_playback_play_file); - hook_dissociate ("visualization clear", vis_clear_cb); + hook_dissociate ("title change", (HookFunction) title_change); hook_dissociate ("info change", (HookFunction) info_change); - hook_dissociate("mainwin set always on top", ui_main_evlistener_mainwin_set_always_on_top); - hook_dissociate("mainwin show", ui_main_evlistener_mainwin_show); - hook_dissociate("equalizerwin show", ui_main_evlistener_equalizerwin_show); hook_dissociate("playback seek", (HookFunction) mainwin_update_song_info); - hook_dissociate ("toggle stop after song", stop_after_song_toggled); + + hook_dissociate ("set repeat", repeat_toggled); + hook_dissociate ("set shuffle", shuffle_toggled); + hook_dissociate ("set stop_after_current_song", stop_after_song_toggled); } void start_stop_visual (gboolean exiting) @@ -364,7 +315,10 @@ { if (! started) { - aud_vis_runner_add_hook(ui_main_evlistener_visualization_timeout, NULL); + aud_vis_func_add (AUD_VIS_TYPE_CLEAR, (VisFunc) vis_clear_cb); + aud_vis_func_add (AUD_VIS_TYPE_MONO_PCM, (VisFunc) render_mono_pcm); + aud_vis_func_add (AUD_VIS_TYPE_MULTI_PCM, (VisFunc) render_multi_pcm); + aud_vis_func_add (AUD_VIS_TYPE_FREQ, (VisFunc) render_freq); started = 1; } } @@ -372,7 +326,10 @@ { if (started) { - aud_vis_runner_remove_hook(ui_main_evlistener_visualization_timeout); + aud_vis_func_remove ((VisFunc) vis_clear_cb); + aud_vis_func_remove ((VisFunc) render_mono_pcm); + aud_vis_func_remove ((VisFunc) render_multi_pcm); + aud_vis_func_remove ((VisFunc) render_freq); started = 0; } } diff -Nru audacious-plugins-2.4.4/src/skins/ui_main_evlisteners.h audacious-plugins-3.2/src/skins/ui_main_evlisteners.h --- audacious-plugins-2.4.4/src/skins/ui_main_evlisteners.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_main_evlisteners.h 2012-01-20 19:48:30.000000000 +0000 @@ -20,16 +20,15 @@ #include -#ifndef AUDACIOUS_UI_MAIN_EVLISTENERS_H -#define AUDACIOUS_UI_MAIN_EVLISTENERS_H +#ifndef SKINS_UI_MAIN_EVLISTENERS_H +#define SKINS_UI_MAIN_EVLISTENERS_H void ui_main_evlistener_init(void); void ui_main_evlistener_dissociate(void); void ui_main_evlistener_playback_begin (void * hook_data, void * user_data); void ui_main_evlistener_playback_pause (void * hook_data, void * user_data); -void info_change (void); void start_stop_visual (gboolean exiting); -#endif /* AUDACIOUS_UI_MAIN_EVLISTENERS_H */ +#endif /* SKINS_UI_MAIN_EVLISTENERS_H */ diff -Nru audacious-plugins-2.4.4/src/skins/ui_main.h audacious-plugins-3.2/src/skins/ui_main.h --- audacious-plugins-2.4.4/src/skins/ui_main.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_main.h 2012-01-20 19:48:30.000000000 +0000 @@ -20,81 +20,24 @@ * Audacious or using our public API to be a derived work. */ -#ifndef AUDACIOUS_UI_MAIN_H -#define AUDACIOUS_UI_MAIN_H +#ifndef SKINS_UI_MAIN_H +#define SKINS_UI_MAIN_H #include -#include "ui_vis.h" -#include "ui_svis.h" - /* yes, main window size is fixed */ #define MAINWIN_WIDTH (gint)275 #define MAINWIN_HEIGHT (gint)116 #define MAINWIN_TITLEBAR_HEIGHT (gint)14 #define MAINWIN_SHADED_WIDTH MAINWIN_WIDTH #define MAINWIN_SHADED_HEIGHT MAINWIN_TITLEBAR_HEIGHT -#define MAINWIN_SCALE_FACTOR (config.scaled ? config.scale_factor : 1) - -#define MAINWIN_DEFAULT_POS_X 20 -#define MAINWIN_DEFAULT_POS_Y 20 - -#define MAINWIN_DEFAULT_FONT "Sans Bold 9" - typedef enum { TIMER_ELAPSED, TIMER_REMAINING } TimerMode; -enum { - MAINWIN_GENERAL_ABOUT, - - MAINWIN_GENERAL_PLAYFILE, - MAINWIN_GENERAL_PLAYLOCATION, - - MAINWIN_GENERAL_FILEINFO, - MAINWIN_GENERAL_PREFS, - - MAINWIN_GENERAL_SHOWMWIN, - MAINWIN_GENERAL_SHOWPLWIN, - - MAINWIN_GENERAL_FOCUSMWIN, - MAINWIN_GENERAL_FOCUSPLWIN, - - MAINWIN_GENERAL_SHOWEQWIN, - MAINWIN_GENERAL_EXIT, - - MAINWIN_GENERAL_PREV, - MAINWIN_GENERAL_PLAY, - MAINWIN_GENERAL_PAUSE, - MAINWIN_GENERAL_STOP, - MAINWIN_GENERAL_NEXT, - MAINWIN_GENERAL_STOPFADE, - MAINWIN_GENERAL_BACK5SEC, - MAINWIN_GENERAL_FWD5SEC, - MAINWIN_GENERAL_START, - MAINWIN_GENERAL_BACK10, - MAINWIN_GENERAL_FWD10, - MAINWIN_GENERAL_JTT, - MAINWIN_GENERAL_JTF, - MAINWIN_GENERAL_QUEUE, - MAINWIN_GENERAL_CQUEUE, - MAINWIN_GENERAL_VOLUP, - MAINWIN_GENERAL_VOLDOWN, - MAINWIN_GENERAL_SETAB, - MAINWIN_GENERAL_CLEARAB, - - MAINWIN_GENERAL_NEXT_PL, - MAINWIN_GENERAL_PREV_PL, - MAINWIN_GENERAL_NEW_PL -}; - extern GtkWidget *mainwin; -extern GtkWidget *err; - -extern gboolean mainwin_moving; -extern gboolean mainwin_focus; extern GtkWidget *mainwin_eq, *mainwin_pl; extern GtkWidget *mainwin_info; @@ -113,18 +56,8 @@ void mainwin_create(void); void mainwin_unhook (void); -void ui_main_set_initial_volume(void); -void mainwin_lock_info_text(const gchar * text); -void mainwin_release_info_text(void); void mainwin_play_pushed(void); -void mainwin_stop_pushed(void); -void mainwin_eject_pushed(void); - -void mainwin_rev_pushed(void); -void mainwin_rev_release(void); -void mainwin_fwd_pushed(void); -void mainwin_fwd_release(void); void mainwin_adjust_volume_motion(gint v); void mainwin_adjust_volume_release(void); @@ -133,32 +66,18 @@ void mainwin_set_volume_slider(gint percent); void mainwin_set_balance_slider(gint percent); -void mainwin_vis_set_type(VisType mode); - void mainwin_refresh_hints(void); void mainwin_set_song_title (const gchar * title); void mainwin_set_song_info(gint rate, gint freq, gint nch); void mainwin_clear_song_info(void); -void mainwin_set_noplaylistadvance(gboolean no_advance); -void mainwin_set_sticky (gboolean sticky); -void mainwin_set_always_on_top(gboolean always); void mainwin_set_shape (void); -void mainwin_set_volume_diff(gint diff); -void mainwin_set_balance_diff(gint diff); void mainwin_show(gboolean); -void mainwin_move(gint x, gint y); -void mainwin_shuffle_pushed(gboolean toggled); -void mainwin_repeat_pushed(gboolean toggled); void mainwin_disable_seekbar(void); -void mainwin_set_title(const gchar * text); -void mainwin_minimize_cb(void); -void mainwin_general_menu_callback(gpointer cb_data, - guint action, - GtkWidget * widget); void mainwin_update_song_info (void); +void mainwin_show_status_message (const gchar * message); void mainwin_enable_status_message (gboolean enable); void mainwin_drag_data_received(GtkWidget * widget, @@ -173,17 +92,8 @@ void mainwin_setup_menus(void); gboolean change_timer_mode_cb(GtkWidget *widget, GdkEventButton *event); -void mainwin_jump_to_file(void); -void mainwin_jump_to_time(void); - -void mainwin_ewmh_activate(void); - -void mainwin_show_visibility_warning(void); - /* widget should be null if called manually. */ gboolean mainwin_keypress (GtkWidget * widget, GdkEventKey * event, void * unused); -void ui_main_check_theme_engine(void); - -#endif /* AUDACIOUS_UI_MAIN_H */ +#endif /* SKINS_UI_MAIN_H */ diff -Nru audacious-plugins-2.4.4/src/skins/ui_manager.c audacious-plugins-3.2/src/skins/ui_manager.c --- audacious-plugins-2.4.4/src/skins/ui_manager.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_manager.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,5 @@ /* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2007 Audacious development team. + * Copyright (C) 2005-2011 Audacious development team. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,28 +17,45 @@ * Audacious or using our public API to be a derived work. */ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif +#include +#include +#include +#include +#include -#include "ui_manager.h" +#include "actions-equalizer.h" #include "actions-mainwin.h" #include "actions-playlist.h" -#include "actions-equalizer.h" - -/* TODO ui_main.h is only included because ui_manager.c needs the values of - TimerMode enum; move that enum elsewhere so we can get rid of this include */ +#include "config.h" +#include "skins_cfg.h" #include "ui_main.h" +#include "ui_manager.h" +#include "ui_vis.h" -#if 0 -#include "sync-menu.h" -#endif -#include "plugin.h" +static GtkWidget * ui_manager_get_popup_menu (GtkUIManager * self, const gchar * + path); -#include -#include -#include -#include +GtkActionGroup *toggleaction_group_others; +GtkActionGroup *radioaction_group_anamode; /* Analyzer mode */ +GtkActionGroup *radioaction_group_anatype; /* Analyzer type */ +GtkActionGroup *radioaction_group_scomode; /* Scope mode */ +GtkActionGroup *radioaction_group_vprmode; /* Voiceprint mode */ +GtkActionGroup *radioaction_group_wshmode; /* WindowShade VU mode */ +GtkActionGroup *radioaction_group_anafoff; /* Analyzer Falloff */ +GtkActionGroup *radioaction_group_peafoff; /* Peak Falloff */ +GtkActionGroup *radioaction_group_vismode; /* Visualization mode */ +GtkActionGroup *radioaction_group_viewtime; /* View time (remaining/elapsed) */ + +static GtkActionGroup *action_group_playback; +static GtkActionGroup *action_group_visualization; +static GtkActionGroup *action_group_view; +static GtkActionGroup *action_group_others; +static GtkActionGroup *action_group_playlist; +static GtkActionGroup *action_group_playlist_add; +static GtkActionGroup *action_group_playlist_select; +static GtkActionGroup *action_group_playlist_delete; +static GtkActionGroup *action_group_playlist_sort; +static GtkActionGroup *action_group_equalizer; static GtkUIManager *ui_manager = NULL; static GList * attached_menus = NULL; @@ -88,12 +105,6 @@ { "roll up equalizer", NULL , N_("Roll up Equalizer"), "W", N_("Roll up Equalizer"), G_CALLBACK(action_roll_up_equalizer) , FALSE }, - - { "view scaled", NULL , N_("Scale"), "D", - N_("DoubleSize"), G_CALLBACK(action_view_scaled) , FALSE }, - - { "view easy move", NULL , N_("Easy Move"), "E", - N_("Easy Move"), G_CALLBACK(action_view_easymove) , FALSE } }; @@ -165,19 +176,19 @@ { "playback", NULL, N_("Playback") }, { "playback play", GTK_STOCK_MEDIA_PLAY , N_("Play"), "X", - N_("Play"), G_CALLBACK(action_playback_play) }, + N_("Play"), G_CALLBACK(aud_drct_play) }, { "playback pause", GTK_STOCK_MEDIA_PAUSE , N_("Pause"), "C", - N_("Pause"), G_CALLBACK(action_playback_pause) }, + N_("Pause"), G_CALLBACK(aud_drct_pause) }, { "playback stop", GTK_STOCK_MEDIA_STOP , N_("Stop"), "V", - N_("Stop"), G_CALLBACK(action_playback_stop) }, + N_("Stop"), G_CALLBACK(aud_drct_stop) }, { "playback previous", GTK_STOCK_MEDIA_PREVIOUS , N_("Previous"), "Z", - N_("Previous"), G_CALLBACK(action_playback_previous) }, + N_("Previous"), G_CALLBACK(aud_drct_pl_prev) }, { "playback next", GTK_STOCK_MEDIA_NEXT , N_("Next"), "B", - N_("Next"), G_CALLBACK(action_playback_next) } + N_("Next"), G_CALLBACK(aud_drct_pl_next) } }; @@ -209,28 +220,24 @@ N_("Delete Playlist"), G_CALLBACK(action_playlist_delete) }, {"playlist load", GTK_STOCK_OPEN, N_("Import Playlist"), "O", - N_("Loads a playlist file into the selected playlist."), G_CALLBACK(action_playlist_load_list) }, + N_("Loads a playlist file into the selected playlist."), (GCallback) + audgui_import_playlist}, {"playlist save", GTK_STOCK_SAVE, N_("Export Playlist"), "S", - N_("Saves the selected playlist."), G_CALLBACK(action_playlist_save_list) }, - - { "playlist save all", GTK_STOCK_SAVE, N_("Save All Playlists"), - "S", N_("Saves all the playlists that are open. Note that this " - "is done automatically when Audacious quits."), - action_playlist_save_all_playlists}, + N_("Saves the selected playlist."), (GCallback) audgui_export_playlist}, { "playlist refresh", GTK_STOCK_REFRESH, N_("Refresh List"), "F5", N_("Refreshes metadata associated with a playlist entry."), G_CALLBACK(action_playlist_refresh_list) }, - { "playlist manager", AUD_STOCK_PLAYLIST , N_("List Manager"), "P", - N_("Opens the playlist manager."), - G_CALLBACK(action_open_list_manager) } -}; + {"playlist manager", AUD_STOCK_PLAYLIST, N_("Playlist Manager"), "P", NULL, (GCallback) audgui_playlist_manager}, + {"queue manager", AUD_STOCK_QUEUETOGGLE, N_("Queue Manager"), "U", NULL, (GCallback) audgui_queue_manager_show}}; static GtkActionEntry action_entries_view[] = { {"view", NULL, N_("View")}, - {"iface menu", NULL, N_("Interface")}}; + {"iface menu", NULL, N_("Interface")}, + {"iface prefs", GTK_STOCK_PREFERENCES, N_("Interface Preferences ..."), NULL, + NULL, (GCallback) skins_configure}}; static GtkActionEntry action_entries_playlist_add[] = { { "playlist add url", GTK_STOCK_NETWORK, N_("Add Internet Address..."), "H", @@ -377,13 +384,13 @@ { "plugins-menu", AUD_STOCK_PLUGIN, N_("Plugin Services") }, { "current track info", GTK_STOCK_INFO , N_("View Track Details"), "I", - N_("View track details"), G_CALLBACK(action_current_track_info) }, + N_("View track details"), G_CALLBACK(audgui_infowin_show_current) }, { "playlist track info", GTK_STOCK_INFO , N_("View Track Details"), "I", N_("View track details"), G_CALLBACK(action_playlist_track_info) }, { "about audacious", GTK_STOCK_DIALOG_INFO , N_("About Audacious"), NULL, - N_("About Audacious"), G_CALLBACK(action_about_audacious) }, + N_("About Audacious"), G_CALLBACK(audgui_show_about_window) }, { "play file", GTK_STOCK_OPEN , N_("Play File"), "L", N_("Load and play a file"), G_CALLBACK(action_play_file) }, @@ -394,10 +401,10 @@ { "plugins", NULL , N_("Plugin services") }, { "preferences", GTK_STOCK_PREFERENCES , N_("Preferences"), "P", - N_("Open preferences window"), G_CALLBACK(action_preferences) }, + N_("Open preferences window"), G_CALLBACK(aud_show_prefs_window) }, { "quit", GTK_STOCK_QUIT , N_("_Quit"), NULL, - N_("Quit Audacious"), G_CALLBACK(action_quit) }, + N_("Quit Audacious"), G_CALLBACK(aud_drct_quit) }, { "ab set", NULL , N_("Set A-B"), "A", N_("Set A-B"), G_CALLBACK(action_ab_set) }, @@ -405,14 +412,11 @@ { "ab clear", NULL , N_("Clear A-B"), "A", N_("Clear A-B"), G_CALLBACK(action_ab_clear) }, - { "jump to playlist start", GTK_STOCK_GOTO_TOP , N_("Jump to Playlist Start"), "Z", - N_("Jump to Playlist Start"), G_CALLBACK(action_jump_to_playlist_start) }, - { "jump to file", GTK_STOCK_JUMP_TO , N_("Jump to File"), "J", - N_("Jump to File"), G_CALLBACK(action_jump_to_file) }, + N_("Jump to File"), G_CALLBACK(audgui_jump_to_track) }, { "jump to time", GTK_STOCK_JUMP_TO , N_("Jump to Time"), "J", - N_("Jump to Time"), G_CALLBACK(action_jump_to_time) }, + N_("Jump to Time"), (GCallback) audgui_jump_to_time}, { "queue toggle", AUD_STOCK_QUEUETOGGLE , N_("Queue Toggle"), "Q", N_("Enables/disables the entry in the playlist's queue."), @@ -486,7 +490,7 @@ ui_manager_new_action_group( const gchar * group_name ) { GtkActionGroup *group = gtk_action_group_new( group_name ); - gtk_action_group_set_translation_domain( group , PACKAGE_NAME ); + gtk_action_group_set_translation_domain (group, PACKAGE); return group; } @@ -622,17 +626,17 @@ return; } -#ifdef GDK_WINDOWING_QUARTZ -static GtkWidget *carbon_menubar; -#endif - void ui_manager_create_menus ( void ) { + const gchar * data = aud_get_path (AUD_PATH_DATA_DIR); + gchar * path; GError *gerr = NULL; /* attach xml menu definitions */ - gtk_ui_manager_add_ui_from_file( ui_manager , DATA_DIR "/ui/mainwin.ui" , &gerr ); + path = g_strdup_printf ("%s/ui/mainwin.ui", data); + gtk_ui_manager_add_ui_from_file (ui_manager, path, & gerr); + g_free (path); if ( gerr != NULL ) { @@ -641,21 +645,9 @@ return; } -#ifdef GDK_WINDOWING_QUARTZ - gtk_ui_manager_add_ui_from_file( ui_manager , DATA_DIR "/ui/carbon-menubar.ui" , &gerr ); - - if ( gerr != NULL ) - { - g_critical( "Error creating UI: %s" , gerr->message ); - g_error_free( gerr ); - return; - } - - carbon_menubar = ui_manager_get_popup_menu( ui_manager , "/carbon-menubar/main-menu" ); - sync_menu_takeover_menu(GTK_MENU_SHELL(carbon_menubar)); -#endif - - gtk_ui_manager_add_ui_from_file( ui_manager , DATA_DIR "/ui/playlist.ui" , &gerr ); + path = g_strdup_printf ("%s/ui/playlist.ui", data); + gtk_ui_manager_add_ui_from_file (ui_manager, path, & gerr); + g_free (path); if ( gerr != NULL ) { @@ -664,7 +656,9 @@ return; } - gtk_ui_manager_add_ui_from_file( ui_manager , DATA_DIR "/ui/equalizer.ui" , &gerr ); + path = g_strdup_printf ("%s/ui/equalizer.ui", data); + gtk_ui_manager_add_ui_from_file (ui_manager, path, & gerr); + g_free (path); if ( gerr != NULL ) { @@ -688,30 +682,32 @@ templates[UI_MENUS] = { {"/mainwin-menus/main-menu", "/mainwin-menus/main-menu/plugins-menu", - AUDACIOUS_MENU_MAIN}, + AUD_MENU_MAIN}, {"/mainwin-menus/main-menu/playback", NULL, 0}, {"/mainwin-menus/main-menu/playlist", NULL, 0}, {"/mainwin-menus/songname-menu", NULL, 0}, {"/mainwin-menus/main-menu/view", NULL, 0}, {"/mainwin-menus/main-menu/visualization", NULL, 0}, {"/playlist-menus/add-menu", "/playlist-menus/add-menu/plugins-menu", - AUDACIOUS_MENU_PLAYLIST_ADD}, + AUD_MENU_PLAYLIST_ADD}, {"/playlist-menus/del-menu", "/playlist-menus/del-menu/plugins-menu", - AUDACIOUS_MENU_PLAYLIST_REMOVE}, + AUD_MENU_PLAYLIST_REMOVE}, {"/playlist-menus/select-menu", "/playlist-menus/select-menu/" - "plugins-menu", AUDACIOUS_MENU_PLAYLIST_SELECT}, + "plugins-menu", AUD_MENU_PLAYLIST_SELECT}, {"/playlist-menus/misc-menu", "/playlist-menus/misc-menu/plugins-menu", - AUDACIOUS_MENU_PLAYLIST_MISC}, + AUD_MENU_PLAYLIST_MISC}, {"/playlist-menus/playlist-menu", "/playlist-menus/playlist-menu/" - "plugins-menu", AUDACIOUS_MENU_PLAYLIST}, + "plugins-menu", AUD_MENU_PLAYLIST}, {"/playlist-menus/playlist-rightclick-menu", "/playlist-menus/" - "playlist-rightclick-menu/plugins-menu", AUDACIOUS_MENU_PLAYLIST_RCLICK}, + "playlist-rightclick-menu/plugins-menu", AUD_MENU_PLAYLIST_RCLICK}, {"/equalizer-menus/preset-menu", NULL, 0}, }; if (menus[id] == NULL) { menus[id] = ui_manager_get_popup_menu(ui_manager, templates[id].name); + g_signal_connect (menus[id], "destroy", (GCallback) + gtk_widget_destroyed, & menus[id]); if (templates[id].plug_name != NULL) { @@ -750,9 +746,8 @@ return gtk_ui_manager_get_accel_group( ui_manager ); } - -GtkWidget * -ui_manager_get_popup_menu ( GtkUIManager * self , const gchar * path ) +static GtkWidget * ui_manager_get_popup_menu (GtkUIManager * self, const gchar * + path) { GtkWidget *menu_item = gtk_ui_manager_get_widget( self , path ); @@ -850,4 +845,3 @@ g_object_unref(G_OBJECT(action_group_equalizer)); g_object_unref(G_OBJECT(ui_manager)); } - diff -Nru audacious-plugins-2.4.4/src/skins/ui_manager.h audacious-plugins-3.2/src/skins/ui_manager.h --- audacious-plugins-2.4.4/src/skins/ui_manager.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_manager.h 2012-01-20 19:48:30.000000000 +0000 @@ -17,14 +17,11 @@ * Audacious or using our public API to be a derived work. */ -#ifndef AUDACIOUS_UI_MANAGER_H -#define AUDACIOUS_UI_MANAGER_H +#ifndef SKINS_UI_MANAGER_H +#define SKINS_UI_MANAGER_H -#include #include -G_BEGIN_DECLS - enum { UI_MENU_MAIN, @@ -43,36 +40,22 @@ UI_MENUS }; -GtkActionGroup *toggleaction_group_others; -GtkActionGroup *radioaction_group_anamode; /* Analyzer mode */ -GtkActionGroup *radioaction_group_anatype; /* Analyzer type */ -GtkActionGroup *radioaction_group_scomode; /* Scope mode */ -GtkActionGroup *radioaction_group_vprmode; /* Voiceprint mode */ -GtkActionGroup *radioaction_group_wshmode; /* WindowShade VU mode */ -GtkActionGroup *radioaction_group_anafoff; /* Analyzer Falloff */ -GtkActionGroup *radioaction_group_peafoff; /* Peak Falloff */ -GtkActionGroup *radioaction_group_vismode; /* Visualization mode */ -GtkActionGroup *radioaction_group_viewtime; /* View time (remaining/elapsed) */ -GtkActionGroup *action_group_playback; -GtkActionGroup *action_group_visualization; -GtkActionGroup *action_group_view; -GtkActionGroup *action_group_others; -GtkActionGroup *action_group_playlist; -GtkActionGroup *action_group_playlist_add; -GtkActionGroup *action_group_playlist_select; -GtkActionGroup *action_group_playlist_delete; -GtkActionGroup *action_group_playlist_sort; -GtkActionGroup *action_group_equalizer; - +extern GtkActionGroup *toggleaction_group_others; +extern GtkActionGroup *radioaction_group_anamode; /* Analyzer mode */ +extern GtkActionGroup *radioaction_group_anatype; /* Analyzer type */ +extern GtkActionGroup *radioaction_group_scomode; /* Scope mode */ +extern GtkActionGroup *radioaction_group_vprmode; /* Voiceprint mode */ +extern GtkActionGroup *radioaction_group_wshmode; /* WindowShade VU mode */ +extern GtkActionGroup *radioaction_group_anafoff; /* Analyzer Falloff */ +extern GtkActionGroup *radioaction_group_peafoff; /* Peak Falloff */ +extern GtkActionGroup *radioaction_group_vismode; /* Visualization mode */ +extern GtkActionGroup *radioaction_group_viewtime; /* View time (remaining/elapsed) */ void ui_manager_init ( void ); void ui_manager_create_menus ( void ); GtkAccelGroup * ui_manager_get_accel_group ( void ); -GtkWidget * ui_manager_get_popup_menu ( GtkUIManager * , const gchar * ); void ui_popup_menu_show(gint id, gint x, gint y, gboolean leftward, gboolean upward, gint button, gint time); void ui_manager_destroy( void ); -G_END_DECLS - -#endif /* AUDACIOUS_UI_MANAGER_H */ +#endif /* SKINS_UI_MANAGER_H */ diff -Nru audacious-plugins-2.4.4/src/skins/ui_playlist.c audacious-plugins-3.2/src/skins/ui_playlist.c --- audacious-plugins-2.4.4/src/skins/ui_playlist.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_playlist.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,5 @@ /* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2009 Audacious development team. + * Copyright (C) 2005-2011 Audacious development team. * * BMP - Cross-platform multimedia player * Copyright (C) 2003-2004 BMP development team. @@ -23,54 +23,46 @@ * Audacious or using our public API to be a derived work. */ -/* #define AUD_DEBUG 1 */ - -#include "ui_playlist.h" +#include -#include -#include #include #include -#include - -#include "platform/smartinclude.h" -#include -#include -#include - -#include #include #include +#include #include #include #include -#include #include #include -#include -#include "actions-playlist.h" +#include "actions-mainwin.h" +#include "config.h" #include "dnd.h" -#include "plugin.h" -#include "ui_dock.h" -#include "ui_equalizer.h" +#include "drag-handle.h" +#include "skins_cfg.h" #include "ui_main.h" #include "ui_manager.h" -#include "ui_playlist_evlisteners.h" -#include "util.h" -#include "ui_skinned_window.h" +#include "ui_playlist.h" #include "ui_skinned_button.h" -#include "ui_skinned_textbox.h" -#include "ui_skinned_playlist_slider.h" #include "ui_skinned_playlist.h" +#include "ui_skinned_playlist_slider.h" +#include "ui_skinned_textbox.h" +#include "ui_skinned_window.h" #include "images/audacious_playlist.xpm" +#define PLAYLISTWIN_MIN_WIDTH MAINWIN_WIDTH +#define PLAYLISTWIN_MIN_HEIGHT MAINWIN_HEIGHT +#define PLAYLISTWIN_WIDTH_SNAP 25 +#define PLAYLISTWIN_HEIGHT_SNAP 29 +#define PLAYLISTWIN_SHADED_HEIGHT MAINWIN_SHADED_HEIGHT + gint active_playlist; gchar * active_title; glong active_length; -GtkWidget * playlistwin, * playlistwin_list; +GtkWidget * playlistwin, * playlistwin_list, * playlistwin_sinfo; static GMutex *resize_mutex = NULL; @@ -79,11 +71,14 @@ static GtkWidget *playlistwin_slider; static GtkWidget *playlistwin_time_min, *playlistwin_time_sec; -static GtkWidget *playlistwin_info, *playlistwin_sinfo; +static GtkWidget *playlistwin_info; static GtkWidget *playlistwin_srew, *playlistwin_splay; static GtkWidget *playlistwin_spause, *playlistwin_sstop; static GtkWidget *playlistwin_sfwd, *playlistwin_seject; static GtkWidget *playlistwin_sscroll_up, *playlistwin_sscroll_down; +static GtkWidget * resize_handle, * sresize_handle; +static GtkWidget * button_add, * button_sub, * button_sel, * button_misc, + * button_list; static void playlistwin_select_search_cbt_cb(GtkWidget *called_cbt, gpointer other_cbt); @@ -91,55 +86,17 @@ GdkEventKey *event, gpointer searchdlg_win); -static gboolean playlistwin_resizing = FALSE; -static gint playlistwin_resize_x, playlistwin_resize_y; +static gint resize_base_width, resize_base_height; static int drop_position; static gboolean song_changed; -gboolean -playlistwin_is_shaded(void) -{ - return config.playlist_shaded; -} - -gint -playlistwin_get_width(void) -{ - config.playlist_width /= PLAYLISTWIN_WIDTH_SNAP; - config.playlist_width *= PLAYLISTWIN_WIDTH_SNAP; - return config.playlist_width; -} - -gint -playlistwin_get_height_unshaded(void) -{ - config.playlist_height /= PLAYLISTWIN_HEIGHT_SNAP; - config.playlist_height *= PLAYLISTWIN_HEIGHT_SNAP; - return config.playlist_height; -} - -gint -playlistwin_get_height_shaded(void) -{ - return PLAYLISTWIN_SHADED_HEIGHT; -} - -gint -playlistwin_get_height(void) -{ - if (playlistwin_is_shaded()) - return playlistwin_get_height_shaded(); - else - return playlistwin_get_height_unshaded(); -} - static void playlistwin_update_info (void) { gchar *text, *sel_text, *tot_text; gint64 selection, total; - total = aud_playlist_get_total_length (active_playlist, TRUE) / 1000; - selection = aud_playlist_get_selected_length (active_playlist, TRUE) / 1000; + total = aud_playlist_get_total_length (active_playlist) / 1000; + selection = aud_playlist_get_selected_length (active_playlist) / 1000; if (selection >= 3600) sel_text = g_strdup_printf ("%" PRId64 ":%02" PRId64 ":%02" PRId64, @@ -156,7 +113,7 @@ total / 60, total % 60); text = g_strconcat(sel_text, "/", tot_text, NULL); - ui_skinned_textbox_set_text (playlistwin_info, text); + textbox_set_text (playlistwin_info, text); g_free(text); g_free(tot_text); g_free(sel_text); @@ -172,20 +129,22 @@ if (entry > -1) { - gint length = aud_playlist_entry_get_length (playlist, entry, FALSE); + gint length = aud_playlist_entry_get_length (playlist, entry, TRUE); - if (aud_cfg->show_numbers_in_pl) + if (aud_get_bool (NULL, "show_numbers_in_pl")) snprintf (scratch, sizeof scratch, "%d. ", 1 + entry); + gchar * title = aud_playlist_entry_get_title (playlist, entry, TRUE); snprintf (scratch + strlen (scratch), sizeof scratch - strlen (scratch), - "%s", aud_playlist_entry_get_title (playlist, entry, FALSE)); + "%s", title); + str_unref (title); if (length > 0) snprintf (scratch + strlen (scratch), sizeof scratch - strlen (scratch), " (%d:%02d)", length / 60000, length / 1000 % 60); } - ui_skinned_textbox_set_text (playlistwin_sinfo, scratch); + textbox_set_text (playlistwin_sinfo, scratch); } static void real_update (void) @@ -202,85 +161,6 @@ } static void -playlistwin_set_geometry_hints(gboolean shaded) -{ - GdkGeometry geometry; - - geometry.min_width = PLAYLISTWIN_MIN_WIDTH; - geometry.width_inc = PLAYLISTWIN_WIDTH_SNAP; - geometry.max_width = 65535; - - if (shaded) - { - geometry.min_height = PLAYLISTWIN_SHADED_HEIGHT; - geometry.height_inc = 0; - geometry.max_height = PLAYLISTWIN_SHADED_HEIGHT; - } - else - { - geometry.min_height = PLAYLISTWIN_MIN_HEIGHT; - geometry.height_inc = PLAYLISTWIN_HEIGHT_SNAP; - geometry.max_height = 65535; - } - - gtk_window_set_geometry_hints ((GtkWindow *) playlistwin, NULL, & geometry, - GDK_HINT_MIN_SIZE | GDK_HINT_RESIZE_INC | GDK_HINT_MAX_SIZE); -} - -void -playlistwin_set_sinfo_font(gchar *font) -{ - gchar *tmp = NULL, *tmp2 = NULL, *tmp3 = NULL; - - g_return_if_fail(font); - AUDDBG("Attempt to set font \"%s\"\n", font); - - tmp = g_strdup(font); - g_return_if_fail(tmp); - - tmp3 = strrchr(tmp, ' '); - if (tmp3 != NULL) - tmp3 = '\0'; - - tmp2 = g_strdup_printf("%s 8", tmp); - g_return_if_fail(tmp2); - - ui_skinned_textbox_set_xfont(playlistwin_sinfo, !config.mainwin_use_bitmapfont, tmp2); - - g_free(tmp); - g_free(tmp2); -} - -void -playlistwin_set_sinfo_scroll(gboolean scroll) -{ - if(playlistwin_is_shaded()) - ui_skinned_textbox_set_scroll(playlistwin_sinfo, config.autoscroll); - else - ui_skinned_textbox_set_scroll(playlistwin_sinfo, FALSE); -} - -void -playlistwin_set_shade(gboolean shaded) -{ - config.playlist_shaded = shaded; - ui_skinned_window_set_shade(playlistwin, shaded); - - if (shaded) { - playlistwin_set_sinfo_font(config.playlist_font); - playlistwin_set_sinfo_scroll(config.autoscroll); - } - else { - playlistwin_set_sinfo_scroll(FALSE); - } - - playlistwin_set_geometry_hints(config.playlist_shaded); - - dock_shade(get_dock_window_list(), GTK_WINDOW(playlistwin), - playlistwin_get_height()); -} - -static void playlistwin_set_shade_menu(gboolean shaded) { GtkAction *action = gtk_action_group_get_action( @@ -289,21 +169,12 @@ playlistwin_update (); } -void +static void playlistwin_shade_toggle(void) { playlistwin_set_shade_menu(!config.playlist_shaded); } -static gboolean -playlistwin_release(GtkWidget * widget, - GdkEventButton * event, - gpointer callback_data) -{ - playlistwin_resizing = FALSE; - return FALSE; -} - static void playlistwin_scroll (gboolean up) { gint rows, first, focused; @@ -339,7 +210,8 @@ { gint entries = aud_playlist_entry_count (playlist); gint new = aud_playlist_count (); - struct index * copy = index_new (); + Index * filenames = index_new (); + Index * tuples = index_new (); gint entry; aud_playlist_insert (new); @@ -347,11 +219,13 @@ for (entry = 0; entry < entries; entry ++) { if (aud_playlist_entry_get_selected (playlist, entry)) - index_append (copy, g_strdup (aud_playlist_entry_get_filename - (playlist, entry))); + { + index_append (filenames, aud_playlist_entry_get_filename (playlist, entry)); + index_append (tuples, aud_playlist_entry_get_tuple (playlist, entry, TRUE)); + } } - aud_playlist_entry_insert_batch (new, 0, copy, NULL); + aud_playlist_entry_insert_batch (new, 0, filenames, tuples, FALSE); aud_playlist_set_active (new); } @@ -459,7 +333,8 @@ 0 , 2 , 7 , 8 , GTK_FILL | GTK_EXPAND , GTK_FILL | GTK_EXPAND , 0 , 1 ); gtk_container_set_border_width( GTK_CONTAINER(searchdlg_table) , 5 ); - gtk_container_add( GTK_CONTAINER(GTK_DIALOG(searchdlg_win)->vbox) , searchdlg_table ); + gtk_container_add ((GtkContainer *) gtk_dialog_get_content_area + ((GtkDialog *) searchdlg_win), searchdlg_table); gtk_widget_show_all( searchdlg_win ); result = gtk_dialog_run( GTK_DIALOG(searchdlg_win) ); @@ -473,28 +348,27 @@ searchdata = (gchar*)gtk_entry_get_text( GTK_ENTRY(searchdlg_entry_title) ); AUDDBG("title=\"%s\"\n", searchdata); - tuple_associate_string(tuple, FIELD_TITLE, NULL, searchdata); + tuple_set_str(tuple, FIELD_TITLE, NULL, searchdata); searchdata = (gchar*)gtk_entry_get_text( GTK_ENTRY(searchdlg_entry_album) ); AUDDBG("album=\"%s\"\n", searchdata); - tuple_associate_string(tuple, FIELD_ALBUM, NULL, searchdata); + tuple_set_str(tuple, FIELD_ALBUM, NULL, searchdata); searchdata = (gchar*)gtk_entry_get_text( GTK_ENTRY(searchdlg_entry_performer) ); AUDDBG("performer=\"%s\"\n", searchdata); - tuple_associate_string(tuple, FIELD_ARTIST, NULL, searchdata); + tuple_set_str(tuple, FIELD_ARTIST, NULL, searchdata); searchdata = (gchar*)gtk_entry_get_text( GTK_ENTRY(searchdlg_entry_file_name) ); AUDDBG("filename=\"%s\"\n", searchdata); - tuple_associate_string(tuple, FIELD_FILE_NAME, NULL, searchdata); + tuple_set_str(tuple, FIELD_FILE_NAME, NULL, searchdata); /* check if previous selection should be cleared before searching */ if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(searchdlg_checkbt_clearprevsel)) == TRUE ) playlistwin_select_none(); - /* now send this tuple to the real search function */ + aud_playlist_select_by_patterns (active_playlist, tuple); + tuple_unref (tuple); - /* we do not need the tuple and its data anymore */ - mowgli_object_unref(tuple); /* check if a new playlist should be created after searching */ if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(searchdlg_checkbt_newplaylist)) == TRUE ) copy_selected_to_new (active_playlist); @@ -539,22 +413,21 @@ ! aud_playlist_entry_get_selected (active_playlist, entry)); } -static void -playlistwin_resize(gint width, gint height) +/* note: height is ignored if the window is shaded */ +static void playlistwin_resize (gint w, gint h) { gint tx, ty; - gint dx, dy; - g_return_if_fail(width > 0 && height > 0); + g_return_if_fail(w > 0 && h > 0); - tx = (width - PLAYLISTWIN_MIN_WIDTH) / PLAYLISTWIN_WIDTH_SNAP; + tx = (w - PLAYLISTWIN_MIN_WIDTH) / PLAYLISTWIN_WIDTH_SNAP; tx = (tx * PLAYLISTWIN_WIDTH_SNAP) + PLAYLISTWIN_MIN_WIDTH; if (tx < PLAYLISTWIN_MIN_WIDTH) tx = PLAYLISTWIN_MIN_WIDTH; if (!config.playlist_shaded) { - ty = (height - PLAYLISTWIN_MIN_HEIGHT) / PLAYLISTWIN_HEIGHT_SNAP; + ty = (h - PLAYLISTWIN_MIN_HEIGHT) / PLAYLISTWIN_HEIGHT_SNAP; ty = (ty * PLAYLISTWIN_HEIGHT_SNAP) + PLAYLISTWIN_MIN_HEIGHT; if (ty < PLAYLISTWIN_MIN_HEIGHT) ty = PLAYLISTWIN_MIN_HEIGHT; @@ -565,65 +438,48 @@ if (tx == config.playlist_width && ty == config.playlist_height) return; - /* difference between previous size and new size */ - dx = tx - config.playlist_width; - dy = ty - config.playlist_height; - - config.playlist_width = width = tx; - config.playlist_height = height = ty; + config.playlist_width = w = tx; + config.playlist_height = h = ty; g_mutex_lock(resize_mutex); - ui_skinned_playlist_resize_relative(playlistwin_list, dx, dy); - ui_skinned_playlist_slider_move_relative(playlistwin_slider, dx); - ui_skinned_playlist_slider_resize_relative(playlistwin_slider, dy); + ui_skinned_playlist_resize (playlistwin_list, w - 31, h - 58); + window_move_widget (playlistwin, FALSE, playlistwin_slider, w - 15, 20); + ui_skinned_playlist_slider_resize (playlistwin_slider, h - 58); + + window_move_widget (playlistwin, TRUE, playlistwin_shaded_shade, w - 21, 3); + window_move_widget (playlistwin, TRUE, playlistwin_shaded_close, w - 11, 3); + window_move_widget (playlistwin, FALSE, playlistwin_shade, w - 21, 3); + window_move_widget (playlistwin, FALSE, playlistwin_close, w - 11, 3); + + window_move_widget (playlistwin, FALSE, playlistwin_time_min, w - 82, h - 15); + window_move_widget (playlistwin, FALSE, playlistwin_time_sec, w - 64, h - 15); + window_move_widget (playlistwin, FALSE, playlistwin_info, w - 143, h - 28); + + window_move_widget (playlistwin, FALSE, playlistwin_srew, w - 144, h - 16); + window_move_widget (playlistwin, FALSE, playlistwin_splay, w - 138, h - 16); + window_move_widget (playlistwin, FALSE, playlistwin_spause, w - 128, h - 16); + window_move_widget (playlistwin, FALSE, playlistwin_sstop, w - 118, h - 16); + window_move_widget (playlistwin, FALSE, playlistwin_sfwd, w - 109, h - 16); + window_move_widget (playlistwin, FALSE, playlistwin_seject, w - 100, h - 16); + window_move_widget (playlistwin, FALSE, playlistwin_sscroll_up, w - 14, h - 35); + window_move_widget (playlistwin, FALSE, playlistwin_sscroll_down, w - 14, h - 30); + + window_move_widget (playlistwin, FALSE, resize_handle, w - 20, h - 20); + window_move_widget (playlistwin, TRUE, sresize_handle, w - 31, 0); + + textbox_set_width (playlistwin_sinfo, w - 35); + + window_move_widget (playlistwin, FALSE, button_add, 12, h - 29); + window_move_widget (playlistwin, FALSE, button_sub, 40, h - 29); + window_move_widget (playlistwin, FALSE, button_sel, 68, h - 29); + window_move_widget (playlistwin, FALSE, button_misc, 100, h - 29); + window_move_widget (playlistwin, FALSE, button_list, w - 46, h - 29); - ui_skinned_button_move_relative(playlistwin_shade, dx, 0); - ui_skinned_button_move_relative(playlistwin_close, dx, 0); - ui_skinned_button_move_relative(playlistwin_shaded_shade, dx, 0); - ui_skinned_button_move_relative(playlistwin_shaded_close, dx, 0); - ui_skinned_textbox_move_relative(playlistwin_time_min, dx, dy); - ui_skinned_textbox_move_relative(playlistwin_time_sec, dx, dy); - ui_skinned_textbox_move_relative(playlistwin_info, dx, dy); - ui_skinned_button_move_relative(playlistwin_srew, dx, dy); - ui_skinned_button_move_relative(playlistwin_splay, dx, dy); - ui_skinned_button_move_relative(playlistwin_spause, dx, dy); - ui_skinned_button_move_relative(playlistwin_sstop, dx, dy); - ui_skinned_button_move_relative(playlistwin_sfwd, dx, dy); - ui_skinned_button_move_relative(playlistwin_seject, dx, dy); - ui_skinned_button_move_relative(playlistwin_sscroll_up, dx, dy); - ui_skinned_button_move_relative(playlistwin_sscroll_down, dx, dy); - - gtk_widget_set_size_request(playlistwin_sinfo, playlistwin_get_width() - 35, - aud_active_skin->properties.textbox_bitmap_font_height); g_mutex_unlock(resize_mutex); } static void -playlistwin_motion(GtkWidget * widget, - GdkEventMotion * event, - gpointer callback_data) -{ - /* - * GDK2's resize is broken and doesn't really play nice, so we have - * to do all of this stuff by hand. - */ - if (playlistwin_resizing == TRUE) - { - if (event->x + playlistwin_resize_x != playlistwin_get_width() || - event->y + playlistwin_resize_y != playlistwin_get_height()) - { - playlistwin_resize(event->x + playlistwin_resize_x, - event->y + playlistwin_resize_y); - resize_window(playlistwin, config.playlist_width, - playlistwin_get_height()); - } - } - else if (dock_is_moving(GTK_WINDOW(playlistwin))) - dock_move_motion(GTK_WINDOW(playlistwin), event); -} - -static void playlistwin_fileinfo(void) { gint rows, first, focused; @@ -633,219 +489,6 @@ } static void -show_playlist_save_error(GtkWindow *parent, - const gchar *filename) -{ - GtkWidget *dialog; - - g_return_if_fail(GTK_IS_WINDOW(parent)); - g_return_if_fail(filename); - - dialog = gtk_message_dialog_new(GTK_WINDOW(parent), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("Error writing playlist \"%s\": %s"), - filename, strerror(errno)); - - gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER); /* centering */ - gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); -} - -static gboolean -show_playlist_overwrite_prompt(GtkWindow * parent, - const gchar * filename) -{ - GtkWidget *dialog; - gint result; - - g_return_val_if_fail(GTK_IS_WINDOW(parent), FALSE); - g_return_val_if_fail(filename != NULL, FALSE); - - dialog = gtk_message_dialog_new(GTK_WINDOW(parent), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_QUESTION, - GTK_BUTTONS_YES_NO, - _("%s already exist. Continue?"), - filename); - - gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER); /* centering */ - result = gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); - - return (result == GTK_RESPONSE_YES); -} - -static void -playlistwin_save_playlist(const gchar * filename) -{ - str_replace_in(&aud_cfg->playlist_path, g_path_get_dirname(filename)); - - if (g_file_test(filename, G_FILE_TEST_IS_REGULAR)) - if (!show_playlist_overwrite_prompt(GTK_WINDOW(playlistwin), filename)) - return; - - if (! aud_playlist_save (active_playlist, filename)) - show_playlist_save_error(GTK_WINDOW(playlistwin), filename); -} - -static void -playlistwin_load_playlist(const gchar * filename) -{ - str_replace_in(&aud_cfg->playlist_path, g_path_get_dirname(filename)); - - aud_playlist_entry_delete (active_playlist, 0, aud_playlist_entry_count - (active_playlist)); - aud_playlist_insert_playlist (active_playlist, 0, filename); - aud_playlist_set_filename (active_playlist, filename); - - if (aud_playlist_get_title (active_playlist) == NULL) - aud_playlist_set_title (active_playlist, filename); -} - -static gchar * -playlist_file_selection_load(const gchar * title, - const gchar * default_filename) -{ - GtkWidget *dialog; - gchar *filename; - - g_return_val_if_fail(title != NULL, NULL); - - dialog = make_filebrowser(title, FALSE); - gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), aud_cfg->playlist_path); - if (default_filename) - gtk_file_chooser_set_uri (GTK_FILE_CHOOSER(dialog), default_filename); - gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER); /* centering */ - - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - filename = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER(dialog)); - else - filename = NULL; - - gtk_widget_destroy(dialog); - return filename; -} - -#if 0 -static void -on_static_toggle(GtkToggleButton *button, gpointer data) -{ - active_playlist->attribute = - gtk_toggle_button_get_active(button) ? - active_playlist->attribute | PLAYLIST_STATIC : active_playlist->attribute & - ~PLAYLIST_STATIC; -} - -static void -on_relative_toggle(GtkToggleButton *button, gpointer data) -{ - active_playlist->attribute = - gtk_toggle_button_get_active(button) ? - active_playlist->attribute | PLAYLIST_USE_RELATIVE : - active_playlist->attribute & ~PLAYLIST_USE_RELATIVE; -} -#endif - -static gchar * -playlist_file_selection_save(const gchar * title, - const gchar * default_filename) -{ - GtkWidget *dialog; - gchar *filename; -#if 0 - GtkWidget *hbox; - GtkWidget *toggle, *toggle2; -#endif - - g_return_val_if_fail(title != NULL, NULL); - - dialog = make_filebrowser(title, TRUE); - gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), aud_cfg->playlist_path); - gtk_file_chooser_set_uri (GTK_FILE_CHOOSER(dialog), default_filename); - -#if 0 - hbox = gtk_hbox_new(FALSE, 5); - - /* static playlist */ - toggle = gtk_check_button_new_with_label(_("Save as Static Playlist")); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), - (active_playlist->attribute & PLAYLIST_STATIC) ? 1 : 0); - g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(on_static_toggle), dialog); - gtk_box_pack_start(GTK_BOX(hbox), toggle, FALSE, FALSE, 0); - - /* use relative path */ - toggle2 = gtk_check_button_new_with_label(_("Use Relative Path")); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle2), - (active_playlist->attribute & PLAYLIST_USE_RELATIVE) ? 1 : 0); - g_signal_connect(G_OBJECT(toggle2), "toggled", G_CALLBACK(on_relative_toggle), dialog); - gtk_box_pack_start(GTK_BOX(hbox), toggle2, FALSE, FALSE, 0); - - gtk_widget_show_all(hbox); - gtk_file_chooser_set_extra_widget(GTK_FILE_CHOOSER(dialog), hbox); -#endif - - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) - filename = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER(dialog)); - else - filename = NULL; - - gtk_widget_destroy(dialog); - return filename; -} - -void -playlistwin_select_playlist_to_load(const gchar * default_filename) -{ - gchar *filename = - playlist_file_selection_load(_("Load Playlist"), default_filename); - - if (filename) { - playlistwin_load_playlist(filename); - g_free(filename); - } -} - -static void -playlistwin_select_playlist_to_save(const gchar * default_filename) -{ - gchar *dot = NULL, *basename = NULL; - gchar *filename = - playlist_file_selection_save(_("Save Playlist"), default_filename); - - if (filename) { - /* Default extension */ - basename = g_path_get_basename(filename); - dot = strrchr(basename, '.'); - if( dot == NULL || dot == basename) { - gchar *oldname = filename; -#ifdef HAVE_XSPF_PLAYLIST - filename = g_strconcat(oldname, ".xspf", NULL); -#else - filename = g_strconcat(oldname, ".m3u", NULL); -#endif - g_free(oldname); - } - g_free(basename); - - playlistwin_save_playlist(filename); - g_free(filename); - } -} - -#define REGION_L(x1,x2,y1,y2) \ - (event->x >= (x1) && event->x < (x2) && \ - event->y >= config.playlist_height - (y1) && \ - event->y < config.playlist_height - (y2)) - -#define REGION_R(x1,x2,y1,y2) \ - (event->x >= playlistwin_get_width() - (x1) && \ - event->x < playlistwin_get_width() - (x2) && \ - event->y >= config.playlist_height - (y1) && \ - event->y < config.playlist_height - (y2)) - -static void playlistwin_scrolled(GtkWidget * widget, GdkEventScroll * event, gpointer callback_data) @@ -868,59 +511,8 @@ GdkEventButton * event, gpointer callback_data) { - gint xpos, ypos; - - gtk_window_get_position(GTK_WINDOW(playlistwin), &xpos, &ypos); - - if (event->button == 1 && !config.show_wm_decorations && - ((!config.playlist_shaded && - event->x > playlistwin_get_width() - 20 && - event->y > config.playlist_height - 20) || - (config.playlist_shaded && - event->x >= playlistwin_get_width() - 31 && - event->x < playlistwin_get_width() - 22))) { - - if (event->type != GDK_2BUTTON_PRESS && - event->type != GDK_3BUTTON_PRESS) { - playlistwin_resizing = TRUE; - playlistwin_resize_x = config.playlist_width - event->x; - playlistwin_resize_y = config.playlist_height - event->y; - } - } - else if (event->button == 1 && REGION_L(12, 37, 29, 11)) - /* ADD button menu */ - ui_popup_menu_show(UI_MENU_PLAYLIST_ADD, xpos + 12, ypos + - playlistwin_get_height() - 8, FALSE, TRUE, event->button, event->time); - else if (event->button == 1 && REGION_L(41, 66, 29, 11)) - /* SUB button menu */ - ui_popup_menu_show(UI_MENU_PLAYLIST_REMOVE, xpos + 40, ypos + - playlistwin_get_height() - 8, FALSE, TRUE, event->button, event->time); - else if (event->button == 1 && REGION_L(70, 95, 29, 11)) - /* SEL button menu */ - ui_popup_menu_show(UI_MENU_PLAYLIST_SELECT, xpos + 68, ypos + - playlistwin_get_height() - 8, FALSE, TRUE, event->button, event->time); - else if (event->button == 1 && REGION_L(99, 124, 29, 11)) - /* MISC button menu */ - ui_popup_menu_show(UI_MENU_PLAYLIST_SORT, xpos + 100, ypos + - playlistwin_get_height() - 8, FALSE, TRUE, event->button, event->time); - else if (event->button == 1 && REGION_R(46, 23, 29, 11)) - /* LIST button menu */ - ui_popup_menu_show(UI_MENU_PLAYLIST_GENERAL, xpos + - playlistwin_get_width() - 12, ypos + playlistwin_get_height() - 8, - TRUE, TRUE, event->button, event->time); - else if (event->button == 1 && event->type == GDK_BUTTON_PRESS && - (config.easy_move || event->y < 14)) - { - return FALSE; - } - else if (event->button == 1 && event->type == GDK_2BUTTON_PRESS - && event->y < 14) { - /* double click on title bar */ + if (event->button == 1 && event->type == GDK_2BUTTON_PRESS && event->y < 14) playlistwin_shade_toggle(); - if (dock_is_moving(GTK_WINDOW(playlistwin))) - dock_move_release(GTK_WINDOW(playlistwin)); - return TRUE; - } else if (event->button == 3) ui_popup_menu_show(UI_MENU_PLAYLIST, event->x_root, event->y_root, FALSE, FALSE, 3, event->time); @@ -930,25 +522,21 @@ static gboolean playlistwin_delete(GtkWidget *widget, void *data) { - if (config.show_wm_decorations) - playlistwin_show(FALSE); - else - aud_drct_quit(); - + aud_drct_quit (); return TRUE; } void playlistwin_hide_timer(void) { - ui_skinned_textbox_set_text(playlistwin_time_min, " "); - ui_skinned_textbox_set_text(playlistwin_time_sec, " "); + textbox_set_text (playlistwin_time_min, " "); + textbox_set_text (playlistwin_time_sec, " "); } void playlistwin_set_time (const gchar * minutes, const gchar * seconds) { - ui_skinned_textbox_set_text (playlistwin_time_min, minutes); - ui_skinned_textbox_set_text (playlistwin_time_sec, seconds); + textbox_set_text (playlistwin_time_min, minutes); + textbox_set_text (playlistwin_time_sec, seconds); } static void drag_motion (GtkWidget * widget, GdkDragContext * context, gint x, @@ -981,160 +569,188 @@ gint x, gint y, GtkSelectionData * data, guint info, guint time, void * unused) { audgui_urilist_insert (active_playlist, drop_position, (const gchar *) - data->data); + gtk_selection_data_get_data (data)); drop_position = -1; } -static void -local_playlist_prev(void) +static void playlistwin_hide (void) { - aud_drct_pl_prev (); + playlistwin_show (0); } -static void -local_playlist_next(void) +static void resize_press (void) { - aud_drct_pl_next (); + resize_base_width = config.playlist_width; + resize_base_height = config.playlist_height; } -static void playlistwin_hide (void) +static void resize_drag (gint x_offset, gint y_offset) { - playlistwin_show (0); + /* compromise between rounding and truncating; this has no real + * justification at all other than it "looks about right". */ + playlistwin_resize (resize_base_width + x_offset + PLAYLISTWIN_WIDTH_SNAP / + 3, resize_base_height + y_offset + PLAYLISTWIN_HEIGHT_SNAP / 3); + window_set_size (playlistwin, config.playlist_width, config.playlist_shaded + ? PLAYLISTWIN_SHADED_HEIGHT : config.playlist_height); +} + +static void button_add_cb (GtkWidget * button, GdkEventButton * event) +{ + gint xpos, ypos; + gtk_window_get_position ((GtkWindow *) playlistwin, & xpos, & ypos); + ui_popup_menu_show (UI_MENU_PLAYLIST_ADD, xpos + 12, ypos + + config.playlist_height - 8, FALSE, TRUE, event->button, event->time); +} + +static void button_sub_cb (GtkWidget * button, GdkEventButton * event) +{ + gint xpos, ypos; + gtk_window_get_position ((GtkWindow *) playlistwin, & xpos, & ypos); + ui_popup_menu_show (UI_MENU_PLAYLIST_REMOVE, xpos + 40, ypos + + config.playlist_height - 8, FALSE, TRUE, event->button, event->time); +} + +static void button_sel_cb (GtkWidget * button, GdkEventButton * event) +{ + gint xpos, ypos; + gtk_window_get_position ((GtkWindow *) playlistwin, & xpos, & ypos); + ui_popup_menu_show (UI_MENU_PLAYLIST_SELECT, xpos + 68, ypos + + config.playlist_height - 8, FALSE, TRUE, event->button, event->time); +} + +static void button_misc_cb (GtkWidget * button, GdkEventButton * event) +{ + gint xpos, ypos; + gtk_window_get_position ((GtkWindow *) playlistwin, & xpos, & ypos); + ui_popup_menu_show (UI_MENU_PLAYLIST_SORT, xpos + 100, ypos + + config.playlist_height - 8, FALSE, TRUE, event->button, event->time); +} + +static void button_list_cb (GtkWidget * button, GdkEventButton * event) +{ + gint xpos, ypos; + gtk_window_get_position ((GtkWindow *) playlistwin, & xpos, & ypos); + ui_popup_menu_show (UI_MENU_PLAYLIST_GENERAL, xpos + config.playlist_width - + 12, ypos + config.playlist_height - 8, TRUE, TRUE, event->button, + event->time); } static void playlistwin_create_widgets(void) { - /* This function creates the custom widgets used by the playlist editor */ + gint w = config.playlist_width, h = config.playlist_height; + + playlistwin_sinfo = textbox_new (w - 35, "", NULL, config.autoscroll); + window_put_widget (playlistwin, TRUE, playlistwin_sinfo, 4, 4); + + playlistwin_shaded_shade = button_new (9, 9, 128, 45, 150, 42, SKIN_PLEDIT, SKIN_PLEDIT); + window_put_widget (playlistwin, TRUE, playlistwin_shaded_shade, w - 21, 3); + button_on_release (playlistwin_shaded_shade, (ButtonCB) playlistwin_shade_toggle); + + playlistwin_shaded_close = button_new (9, 9, 138, 45, 52, 42, SKIN_PLEDIT, SKIN_PLEDIT); + window_put_widget (playlistwin, TRUE, playlistwin_shaded_close, w - 11, 3); + button_on_release (playlistwin_shaded_close, (ButtonCB) playlistwin_hide); - /* text box for displaying song title in shaded mode */ - playlistwin_sinfo = ui_skinned_textbox_new(SKINNED_WINDOW(playlistwin)->shaded, - 4, 4, playlistwin_get_width() - 35, TRUE, SKIN_TEXT); - - playlistwin_set_sinfo_font(config.playlist_font); - - - playlistwin_shaded_shade = ui_skinned_button_new(); - ui_skinned_push_button_setup(playlistwin_shaded_shade, SKINNED_WINDOW(playlistwin)->shaded, - playlistwin_get_width() - 21, 3, - 9, 9, 128, 45, 150, 42, SKIN_PLEDIT); - g_signal_connect(playlistwin_shaded_shade, "clicked", playlistwin_shade_toggle, NULL ); - - playlistwin_shaded_close = ui_skinned_button_new(); - ui_skinned_push_button_setup(playlistwin_shaded_close, SKINNED_WINDOW(playlistwin)->shaded, - playlistwin_get_width() - 11, 3, 9, 9, 138, 45, 52, 42, SKIN_PLEDIT); - g_signal_connect(playlistwin_shaded_close, "clicked", playlistwin_hide, NULL ); - - playlistwin_shade = ui_skinned_button_new(); - ui_skinned_push_button_setup(playlistwin_shade, SKINNED_WINDOW(playlistwin)->normal, - playlistwin_get_width() - 21, 3, - 9, 9, 157, 3, 62, 42, SKIN_PLEDIT); - g_signal_connect(playlistwin_shade, "clicked", playlistwin_shade_toggle, NULL ); - - playlistwin_close = ui_skinned_button_new(); - ui_skinned_push_button_setup(playlistwin_close, SKINNED_WINDOW(playlistwin)->normal, - playlistwin_get_width() - 11, 3, 9, 9, 167, 3, 52, 42, SKIN_PLEDIT); - g_signal_connect(playlistwin_close, "clicked", playlistwin_hide, NULL ); - - /* playlist list box */ - playlistwin_list = ui_skinned_playlist_new(SKINNED_WINDOW(playlistwin)->normal, 12, 20, - playlistwin_get_width() - 31, - config.playlist_height - 58, config.playlist_font); + playlistwin_shade = button_new (9, 9, 157, 3, 62, 42, SKIN_PLEDIT, SKIN_PLEDIT); + window_put_widget (playlistwin, FALSE, playlistwin_shade, w - 21, 3); + button_on_release (playlistwin_shade, (ButtonCB) playlistwin_shade_toggle); + + playlistwin_close = button_new (9, 9, 167, 3, 52, 42, SKIN_PLEDIT, SKIN_PLEDIT); + window_put_widget (playlistwin, FALSE, playlistwin_close, w - 11, 3); + button_on_release (playlistwin_close, (ButtonCB) playlistwin_hide); + + playlistwin_list = ui_skinned_playlist_new (w - 31, h - 58, config.playlist_font); + window_put_widget (playlistwin, FALSE, playlistwin_list, 12, 20); /* playlist list box slider */ - playlistwin_slider = ui_skinned_playlist_slider_new(SKINNED_WINDOW(playlistwin)->normal, playlistwin_get_width() - 15, - 20, config.playlist_height - 58, playlistwin_list); + playlistwin_slider = ui_skinned_playlist_slider_new (playlistwin_list, h - 58); + window_put_widget (playlistwin, FALSE, playlistwin_slider, w - 15, 20); ui_skinned_playlist_set_slider (playlistwin_list, playlistwin_slider); - /* track time (minute) */ - playlistwin_time_min = ui_skinned_textbox_new(SKINNED_WINDOW(playlistwin)->normal, - playlistwin_get_width() - 82, - config.playlist_height - 15, 15, FALSE, SKIN_TEXT); - g_signal_connect(playlistwin_time_min, "button-press-event", G_CALLBACK(change_timer_mode_cb), NULL); + playlistwin_time_min = textbox_new (15, "", NULL, FALSE); + window_put_widget (playlistwin, FALSE, playlistwin_time_min, w - 82, h - 15); - /* track time (second) */ - playlistwin_time_sec = ui_skinned_textbox_new(SKINNED_WINDOW(playlistwin)->normal, - playlistwin_get_width() - 64, - config.playlist_height - 15, 10, FALSE, SKIN_TEXT); + playlistwin_time_sec = textbox_new (10, "", NULL, FALSE); + window_put_widget (playlistwin, FALSE, playlistwin_time_sec, w - 64, h - 15); + + g_signal_connect(playlistwin_time_min, "button-press-event", G_CALLBACK(change_timer_mode_cb), NULL); g_signal_connect(playlistwin_time_sec, "button-press-event", G_CALLBACK(change_timer_mode_cb), NULL); - /* playlist information (current track length / total track length) */ - playlistwin_info = ui_skinned_textbox_new(SKINNED_WINDOW(playlistwin)->normal, - playlistwin_get_width() - 143, - config.playlist_height - 28, 90, FALSE, SKIN_TEXT); + playlistwin_info = textbox_new (90, "", NULL, FALSE); + window_put_widget (playlistwin, FALSE, playlistwin_info, w - 143, h - 28); /* mini play control buttons at right bottom corner */ - /* rewind button */ - playlistwin_srew = ui_skinned_button_new(); - ui_skinned_small_button_setup(playlistwin_srew, SKINNED_WINDOW(playlistwin)->normal, - playlistwin_get_width() - 144, - config.playlist_height - 16, 8, 7); - g_signal_connect(playlistwin_srew, "clicked", local_playlist_prev, NULL); - - /* play button */ - playlistwin_splay = ui_skinned_button_new(); - ui_skinned_small_button_setup(playlistwin_splay, SKINNED_WINDOW(playlistwin)->normal, - playlistwin_get_width() - 138, - config.playlist_height - 16, 10, 7); - g_signal_connect(playlistwin_splay, "clicked", mainwin_play_pushed, NULL); - - /* pause button */ - playlistwin_spause = ui_skinned_button_new(); - ui_skinned_small_button_setup(playlistwin_spause, SKINNED_WINDOW(playlistwin)->normal, - playlistwin_get_width() - 128, - config.playlist_height - 16, 10, 7); - g_signal_connect(playlistwin_spause, "clicked", aud_drct_pause, NULL); - - /* stop button */ - playlistwin_sstop = ui_skinned_button_new(); - ui_skinned_small_button_setup(playlistwin_sstop, SKINNED_WINDOW(playlistwin)->normal, - playlistwin_get_width() - 118, - config.playlist_height - 16, 9, 7); - g_signal_connect(playlistwin_sstop, "clicked", mainwin_stop_pushed, NULL); - - /* forward button */ - playlistwin_sfwd = ui_skinned_button_new(); - ui_skinned_small_button_setup(playlistwin_sfwd, SKINNED_WINDOW(playlistwin)->normal, - playlistwin_get_width() - 109, - config.playlist_height - 16, 8, 7); - g_signal_connect(playlistwin_sfwd, "clicked", local_playlist_next, NULL); - - /* eject button */ - playlistwin_seject = ui_skinned_button_new(); - ui_skinned_small_button_setup(playlistwin_seject, SKINNED_WINDOW(playlistwin)->normal, - playlistwin_get_width() - 100, - config.playlist_height - 16, 9, 7); - g_signal_connect(playlistwin_seject, "clicked", mainwin_eject_pushed, NULL); - - playlistwin_sscroll_up = ui_skinned_button_new(); - ui_skinned_small_button_setup(playlistwin_sscroll_up, SKINNED_WINDOW(playlistwin)->normal, - playlistwin_get_width() - 14, - config.playlist_height - 35, 8, 5); - g_signal_connect(playlistwin_sscroll_up, "clicked", playlistwin_scroll_up_pushed, NULL); - - playlistwin_sscroll_down = ui_skinned_button_new(); - ui_skinned_small_button_setup(playlistwin_sscroll_down, SKINNED_WINDOW(playlistwin)->normal, - playlistwin_get_width() - 14, - config.playlist_height - 30, 8, 5); - g_signal_connect(playlistwin_sscroll_down, "clicked", playlistwin_scroll_down_pushed, NULL); + playlistwin_srew = button_new_small (8, 7); + window_put_widget (playlistwin, FALSE, playlistwin_srew, w - 144, h - 16); + button_on_release (playlistwin_srew, (ButtonCB) aud_drct_pl_prev); - ui_playlist_evlistener_init(); -} + playlistwin_splay = button_new_small (10, 7); + window_put_widget (playlistwin, FALSE, playlistwin_splay, w - 138, h - 16); + button_on_release (playlistwin_splay, (ButtonCB) mainwin_play_pushed); -static void -selection_received(GtkWidget * widget, - GtkSelectionData * selection_data, gpointer data) -{ - if (selection_data->type == GDK_SELECTION_TYPE_STRING && - selection_data->length > 0) - aud_playlist_entry_insert (active_playlist, -1, g_strdup ((gchar *) - selection_data->data), NULL); + playlistwin_spause = button_new_small (10, 7); + window_put_widget (playlistwin, FALSE, playlistwin_spause, w - 128, h - 16); + button_on_release (playlistwin_spause, (ButtonCB) aud_drct_pause); + + playlistwin_sstop = button_new_small (9, 7); + window_put_widget (playlistwin, FALSE, playlistwin_sstop, w - 118, h - 16); + button_on_release (playlistwin_sstop, (ButtonCB) aud_drct_stop); + + playlistwin_sfwd = button_new_small (8, 7); + window_put_widget (playlistwin, FALSE, playlistwin_sfwd, w - 109, h - 16); + button_on_release (playlistwin_sfwd, (ButtonCB) aud_drct_pl_next); + + playlistwin_seject = button_new_small (9, 7); + window_put_widget (playlistwin, FALSE, playlistwin_seject, w - 100, h - 16); + button_on_release (playlistwin_seject, (ButtonCB) action_play_file); + + playlistwin_sscroll_up = button_new_small (8, 5); + window_put_widget (playlistwin, FALSE, playlistwin_sscroll_up, w - 14, h - 35); + button_on_release (playlistwin_sscroll_up, (ButtonCB) playlistwin_scroll_up_pushed); + + playlistwin_sscroll_down = button_new_small (8, 5); + window_put_widget (playlistwin, FALSE, playlistwin_sscroll_down, w - 14, h - 30); + button_on_release (playlistwin_sscroll_down, (ButtonCB) playlistwin_scroll_down_pushed); + + /* resize handles */ + + resize_handle = drag_handle_new (20, 20, resize_press, resize_drag); + window_put_widget (playlistwin, FALSE, resize_handle, w - 20, h - 20); + + sresize_handle = drag_handle_new (9, PLAYLISTWIN_SHADED_HEIGHT, resize_press, resize_drag); + window_put_widget (playlistwin, TRUE, sresize_handle, w - 31, 0); + + /* lower button row */ + + button_add = button_new_small (25, 18); + window_put_widget (playlistwin, FALSE, button_add, 12, h - 29); + button_on_press (button_add, button_add_cb); + + button_sub = button_new_small (25, 18); + window_put_widget (playlistwin, FALSE, button_sub, 40, h - 29); + button_on_press (button_sub, button_sub_cb); + + button_sel = button_new_small (25, 18); + window_put_widget (playlistwin, FALSE, button_sel, 68, h - 29); + button_on_press (button_sel, button_sel_cb); + + button_misc = button_new_small (25, 18); + window_put_widget (playlistwin, FALSE, button_misc, 100, h - 29); + button_on_press (button_misc, button_misc_cb); + + button_list = button_new_small (23, 18); + window_put_widget (playlistwin, FALSE, button_list, w - 46, h - 29); + button_on_press (button_list, button_list_cb); } -static void size_allocate (GtkWidget * widget, GtkAllocation * allocation) +static void pl_win_draw (GtkWidget * window, cairo_t * cr) { - playlistwin_resize (allocation->width, allocation->height); + if (config.playlist_shaded) + skin_draw_playlistwin_shaded (cr, config.playlist_width, TRUE); + else + skin_draw_playlistwin_frame (cr, config.playlist_width, + config.playlist_height, TRUE); } static void @@ -1142,14 +758,11 @@ { GdkPixbuf *icon; - playlistwin = ui_skinned_window_new("playlist", &config.playlist_x, &config.playlist_y); + playlistwin = window_new (& config.playlist_x, & config.playlist_y, + config.playlist_width, config.playlist_shaded ? PLAYLISTWIN_SHADED_HEIGHT : + config.playlist_height, FALSE, config.playlist_shaded, pl_win_draw); + gtk_window_set_title(GTK_WINDOW(playlistwin), _("Audacious Playlist Editor")); - gtk_window_set_role(GTK_WINDOW(playlistwin), "playlist"); - gtk_window_set_default_size(GTK_WINDOW(playlistwin), - playlistwin_get_width(), - playlistwin_get_height()); - gtk_window_set_resizable(GTK_WINDOW(playlistwin), TRUE); - playlistwin_set_geometry_hints(config.playlist_shaded); gtk_window_set_transient_for(GTK_WINDOW(playlistwin), GTK_WINDOW(mainwin)); @@ -1168,14 +781,10 @@ G_CALLBACK(playlistwin_delete), NULL); g_signal_connect(playlistwin, "button_press_event", G_CALLBACK(playlistwin_press), NULL); - g_signal_connect(playlistwin, "button_release_event", - G_CALLBACK(playlistwin_release), NULL); g_signal_connect(playlistwin, "scroll_event", G_CALLBACK(playlistwin_scrolled), NULL); - g_signal_connect(playlistwin, "motion_notify_event", - G_CALLBACK(playlistwin_motion), NULL); - aud_drag_dest_set(playlistwin); + drag_dest_set(playlistwin); drop_position = -1; g_signal_connect ((GObject *) playlistwin, "drag-motion", (GCallback) @@ -1189,11 +798,6 @@ g_signal_connect ((GObject *) playlistwin, "key-press-event", (GCallback) mainwin_keypress, 0); - g_signal_connect(playlistwin, "selection_received", - G_CALLBACK(selection_received), NULL); - - g_signal_connect (playlistwin, "size-allocate", G_CALLBACK (size_allocate), - 0); } static void get_title (void) @@ -1203,9 +807,12 @@ g_free (active_title); if (playlists > 1) - active_title = g_strdup_printf (_("%s (%d of %d)"), - aud_playlist_get_title (active_playlist), 1 + active_playlist, - playlists); + { + gchar * title = aud_playlist_get_title (active_playlist); + active_title = g_strdup_printf (_("%s (%d of %d)"), title, 1 + + active_playlist, playlists); + str_unref (title); + } else active_title = NULL; } @@ -1226,7 +833,8 @@ if (song_changed) { - ui_skinned_playlist_follow (playlistwin_list); + ui_skinned_playlist_set_focused (playlistwin_list, + aud_playlist_get_position (active_playlist)); song_changed = FALSE; } @@ -1235,8 +843,14 @@ static void follow_cb (void * data, void * another) { - /* active_playlist may be out of date at this point */ - if (GPOINTER_TO_INT (data) == aud_playlist_get_active ()) + gint list = GPOINTER_TO_INT (data); + aud_playlist_select_all (list, FALSE); + + gint row = aud_playlist_get_position (list); + if (row >= 0) + aud_playlist_entry_set_selected (list, row, TRUE); + + if (list == active_playlist) song_changed = TRUE; } @@ -1252,47 +866,42 @@ playlistwin_create_window(); playlistwin_create_widgets(); - - gtk_widget_show_all (((SkinnedWindow *) playlistwin)->normal); - gtk_widget_show_all (((SkinnedWindow *) playlistwin)->shaded); + window_show_all (playlistwin); gtk_window_add_accel_group(GTK_WINDOW(playlistwin), ui_manager_get_accel_group()); - /* calls playlistwin_update */ - ui_skinned_playlist_follow (playlistwin_list); + aud_playlist_select_all (active_playlist, FALSE); + + gint row = aud_playlist_get_position (active_playlist); + if (row >= 0) + aud_playlist_entry_set_selected (active_playlist, row, TRUE); + + ui_skinned_playlist_set_focused (playlistwin_list, row); + song_changed = FALSE; - hook_associate ("playlist position", follow_cb, 0); - hook_associate ("playlist update", update_cb, 0); + hook_associate ("playlist position", follow_cb, NULL); + hook_associate ("playlist activate", update_cb, NULL); + hook_associate ("playlist update", update_cb, NULL); } void playlistwin_unhook (void) { hook_dissociate ("playlist position", follow_cb); + hook_dissociate ("playlist activate", update_cb); hook_dissociate ("playlist update", update_cb); - ui_playlist_evlistener_dissociate (); g_free (active_title); active_title = NULL; g_mutex_free (resize_mutex); resize_mutex = NULL; } -static void playlistwin_real_show (void) +static void playlistwin_real_show (gboolean show) { - ui_skinned_button_set_inside(mainwin_pl, TRUE); - gtk_window_present(GTK_WINDOW(playlistwin)); -} - -static void playlistwin_real_hide (void) -{ - gtk_widget_hide(playlistwin); - ui_skinned_button_set_inside(mainwin_pl, FALSE); - - if ( config.player_visible ) - { - gtk_window_present(GTK_WINDOW(mainwin)); - gtk_widget_grab_focus(mainwin); - } + if (show) + gtk_window_present ((GtkWindow *) playlistwin); + else + gtk_widget_hide (playlistwin); } void playlistwin_show (char show) @@ -1305,17 +914,10 @@ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (a), show); else { - if (show != config.playlist_visible) { - config.playlist_visible = show; - config.playlist_visible_prev = !show; - aud_cfg->playlist_visible = show; - } - - if (show) - playlistwin_real_show (); - else - playlistwin_real_hide (); - } + config.playlist_visible = show; + button_set_active (mainwin_pl, show); + playlistwin_real_show (config.player_visible && show); + } } void action_playlist_track_info(void) @@ -1518,12 +1120,14 @@ void action_playlist_prev (void) { - aud_playlist_set_active (active_playlist - 1); + if (active_playlist > 0) + aud_playlist_set_active (active_playlist - 1); } void action_playlist_next (void) { - aud_playlist_set_active (active_playlist + 1); + if (active_playlist + 1 < aud_playlist_count ()) + aud_playlist_set_active (active_playlist + 1); } void action_playlist_delete (void) @@ -1531,23 +1135,6 @@ audgui_confirm_playlist_delete (active_playlist); } -void action_playlist_save_list (void) -{ - playlistwin_select_playlist_to_save (aud_playlist_get_filename - (active_playlist)); -} - -void action_playlist_save_all_playlists (void) -{ - aud_save_playlists (); -} - -void action_playlist_load_list (void) -{ - playlistwin_select_playlist_to_load (aud_playlist_get_filename - (active_playlist)); -} - void action_playlist_refresh_list(void) { @@ -1555,12 +1142,6 @@ } void -action_open_list_manager(void) -{ - audgui_playlist_manager_ui_show(mainwin); -} - -void action_playlist_search_and_select(void) { playlistwin_select_search(); @@ -1600,14 +1181,22 @@ switch (event->keyval) { case GDK_Return: - if (gtk_im_context_filter_keypress (GTK_ENTRY (entry)->im_context, event)) { - GTK_ENTRY (entry)->need_im_reset = TRUE; - return TRUE; - } else { - gtk_dialog_response(GTK_DIALOG(searchdlg_win), GTK_RESPONSE_ACCEPT); - return TRUE; - } + gtk_dialog_response(GTK_DIALOG(searchdlg_win), GTK_RESPONSE_ACCEPT); + return TRUE; default: return FALSE; } } + +void action_show_playlist_editor (GtkToggleAction * action) +{ + playlistwin_show (gtk_toggle_action_get_active (action)); +} + +void action_roll_up_playlist_editor (GtkToggleAction * action) +{ + config.playlist_shaded = gtk_toggle_action_get_active (action); + window_set_shaded (playlistwin, config.playlist_shaded); + window_set_size (playlistwin, config.playlist_width, config.playlist_shaded + ? PLAYLISTWIN_SHADED_HEIGHT : config.playlist_height); +} diff -Nru audacious-plugins-2.4.4/src/skins/ui_playlist_evlisteners.c audacious-plugins-3.2/src/skins/ui_playlist_evlisteners.c --- audacious-plugins-2.4.4/src/skins/ui_playlist_evlisteners.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_playlist_evlisteners.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ -/* - * Audacious - * Copyright (c) 2006-2007 Audacious development team. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. - */ - -#include -#include - -#include "ui_playlist.h" -#include "ui_playlist_evlisteners.h" - -static void -ui_playlist_evlistener_playlistwin_show(gpointer hook_data, gpointer user_data) -{ - gboolean *show = (gboolean*)hook_data; - playlistwin_show (* show); -} - -void ui_playlist_evlistener_init(void) -{ - hook_associate("playlistwin show", ui_playlist_evlistener_playlistwin_show, NULL); -} - -void ui_playlist_evlistener_dissociate(void) -{ - hook_dissociate("playlistwin show", ui_playlist_evlistener_playlistwin_show); -} diff -Nru audacious-plugins-2.4.4/src/skins/ui_playlist_evlisteners.h audacious-plugins-3.2/src/skins/ui_playlist_evlisteners.h --- audacious-plugins-2.4.4/src/skins/ui_playlist_evlisteners.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_playlist_evlisteners.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -/* - * Audacious - * Copyright (c) 2006-2007 Audacious development team. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. - */ - -#ifndef AUDACIOUS_UI_PLAYLIST_EVLISTENERS_H -#define AUDACIOUS_UI_PLAYLIST_EVLISTENERS_H - -void ui_playlist_evlistener_init(void); -void ui_playlist_evlistener_dissociate(void); - -#endif /* AUDACIOUS_UI_PLAYLIST_EVLISTENERS_H */ diff -Nru audacious-plugins-2.4.4/src/skins/ui_playlist.h audacious-plugins-3.2/src/skins/ui_playlist.h --- audacious-plugins-2.4.4/src/skins/ui_playlist.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_playlist.h 2012-01-20 19:48:30.000000000 +0000 @@ -20,58 +20,21 @@ * Audacious or using our public API to be a derived work. */ -#ifndef AUDACIOUS_UI_PLAYLIST_H -#define AUDACIOUS_UI_PLAYLIST_H +#ifndef SKINS_UI_PLAYLIST_H +#define SKINS_UI_PLAYLIST_H -#include +#include -#include "ui_main.h" -#include -#include "skins_cfg.h" - -#define PLAYLISTWIN_FRAME_TOP_HEIGHT 20 -#define PLAYLISTWIN_FRAME_BOTTOM_HEIGHT 38 -#define PLAYLISTWIN_FRAME_LEFT_WIDTH 12 -#define PLAYLISTWIN_FRAME_RIGHT_WIDTH 19 - -#define PLAYLISTWIN_MIN_WIDTH MAINWIN_WIDTH -#define PLAYLISTWIN_MIN_HEIGHT MAINWIN_HEIGHT -#define PLAYLISTWIN_WIDTH_SNAP 25 -#define PLAYLISTWIN_HEIGHT_SNAP 29 -#define PLAYLISTWIN_SHADED_HEIGHT MAINWIN_SHADED_HEIGHT -#define PLAYLISTWIN_WIDTH config.playlist_width -#define PLAYLISTWIN_HEIGHT \ - (config.playlist_shaded ? PLAYLISTWIN_SHADED_HEIGHT : config.playlist_height) - -#define PLAYLISTWIN_DEFAULT_WIDTH 275 -#define PLAYLISTWIN_DEFAULT_HEIGHT 232 -#define PLAYLISTWIN_DEFAULT_POS_X 295 -#define PLAYLISTWIN_DEFAULT_POS_Y 20 - -#define PLAYLISTWIN_DEFAULT_FONT "Sans Bold 8" - -gboolean playlistwin_is_shaded(void); -gint playlistwin_get_width(void); -gint playlistwin_get_height(void); void playlistwin_update (void); -void playlistwin_set_toprow(gint top); -void playlistwin_set_shade_menu_cb(gboolean shaded); -void playlistwin_set_shade(gboolean shaded); -void playlistwin_shade_toggle(void); void playlistwin_create(void); void playlistwin_unhook (void); void playlistwin_hide_timer(void); void playlistwin_set_time (const gchar * minutes, const gchar * seconds); void playlistwin_show (char show); -void playlistwin_select_playlist_to_load(const gchar * default_filename); -void playlistwin_set_sinfo_font(gchar *font); -void playlistwin_set_sinfo_scroll(gboolean scroll); -gint playlistwin_list_get_visible_count(void); -gint playlistwin_list_get_first(void); extern gint active_playlist; extern gchar * active_title; extern glong active_length; -extern GtkWidget * playlistwin, * playlistwin_list; +extern GtkWidget * playlistwin, * playlistwin_list, * playlistwin_sinfo; -#endif /* AUDACIOUS_UI_PLAYLIST_H */ +#endif /* SKINS_UI_PLAYLIST_H */ diff -Nru audacious-plugins-2.4.4/src/skins/ui_skin.c audacious-plugins-3.2/src/skins/ui_skin.c --- audacious-plugins-2.4.4/src/skins/ui_skin.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skin.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,5 @@ /* Audacious - * Copyright (C) 2005-2007 Audacious development team. + * Copyright (C) 2005-2011 Audacious development team. * * BMP - Cross-platform multimedia player * Copyright (C) 2003-2004 BMP development team. @@ -23,39 +23,32 @@ * Audacious or using our public API to be a derived work. */ -/*#define AUD_DEBUG*/ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -/* TODO: enforce default sizes! */ - -#include -#include -#include +#include #include #include -#include +#include + +#include #include -#include +#include +#include #include "plugin.h" -#include "ui_skin.h" -#include "util.h" -#include "ui_main.h" +#include "skins_cfg.h" +#include "surface.h" #include "ui_equalizer.h" +#include "ui_hints.h" +#include "ui_main.h" #include "ui_playlist.h" -#include "ui_skinselector.h" -#include "debug.h" - -#include "platform/smartinclude.h" - -#include "ui_skinned_window.h" -#include "ui_skinned_button.h" +#include "ui_skin.h" #include "ui_skinned_number.h" -#include "ui_skinned_horizontal_slider.h" #include "ui_skinned_playstatus.h" +#include "ui_skinned_textbox.h" +#include "ui_skinned_window.h" +#include "ui_skinselector.h" +#include "ui_vis.h" +#include "util.h" #define EXTENSION_TARGETS 7 @@ -73,20 +66,14 @@ gint width, height; gchar *inistr; }; -/* I know, it's not nice to copy'n'paste stuff, but I wanted it to - be atleast parially working, before dealing with such things */ - -typedef struct { - const gchar *to_match; - gchar *match; - gboolean found; -} FindFileContext; typedef struct _SkinPixmapIdMapping SkinPixmapIdMapping; typedef struct _SkinMaskInfo SkinMaskInfo; +static gboolean skin_load (Skin * skin, const gchar * path); +static void skin_parse_hints (Skin * skin, const gchar * path_p); -Skin *aud_active_skin = NULL; +Skin *active_skin = NULL; static gint skin_current_num; @@ -116,102 +103,75 @@ static guint skin_pixmap_id_map_size = G_N_ELEMENTS(skin_pixmap_id_map); -static const guchar skin_default_viscolor[24][3] = { - {9, 34, 53}, - {10, 18, 26}, - {0, 54, 108}, - {0, 58, 116}, - {0, 62, 124}, - {0, 66, 132}, - {0, 70, 140}, - {0, 74, 148}, - {0, 78, 156}, - {0, 82, 164}, - {0, 86, 172}, - {0, 92, 184}, - {0, 98, 196}, - {0, 104, 208}, - {0, 110, 220}, - {0, 116, 232}, - {0, 122, 244}, - {0, 128, 255}, - {0, 128, 255}, - {0, 104, 208}, - {0, 80, 160}, - {0, 56, 112}, - {0, 32, 64}, - {200, 200, 200} +static const guint32 default_vis_colors[24] = { + COLOR (9, 34, 53), + COLOR (10, 18, 26), + COLOR (0, 54, 108), + COLOR (0, 58, 116), + COLOR (0, 62, 124), + COLOR (0, 66, 132), + COLOR (0, 70, 140), + COLOR (0, 74, 148), + COLOR (0, 78, 156), + COLOR (0, 82, 164), + COLOR (0, 86, 172), + COLOR (0, 92, 184), + COLOR (0, 98, 196), + COLOR (0, 104, 208), + COLOR (0, 110, 220), + COLOR (0, 116, 232), + COLOR (0, 122, 244), + COLOR (0, 128, 255), + COLOR (0, 128, 255), + COLOR (0, 104, 208), + COLOR (0, 80, 160), + COLOR (0, 56, 112), + COLOR (0, 32, 64), + COLOR (200, 200, 200) }; -static gchar *original_gtk_theme = NULL; - -static GdkBitmap *skin_create_transparent_mask(const gchar *, - const gchar *, - const gchar *, - GdkWindow *, - gint, gint, gboolean); - -static void skin_set_default_vis_color(Skin * skin); - -void -skin_lock(Skin * skin) -{ - g_mutex_lock(skin->lock); -} - -void -skin_unlock(Skin * skin) -{ - g_mutex_unlock(skin->lock); -} - -gboolean -aud_active_skin_reload(void) -{ - AUDDBG("\n"); - return aud_active_skin_load(aud_active_skin->path); -} +#ifdef MASK_IS_REGION +static cairo_region_t * skin_create_transparent_mask (const gchar * path, const + gchar * file, const gchar * section, GdkWindow * window, gint width, gint + height); +#else +static GdkBitmap * skin_create_transparent_mask (const gchar * path, const + gchar * file, const gchar * section, GdkWindow * window, gint width, gint + height); +#endif -gboolean -aud_active_skin_load(const gchar * path) +gboolean active_skin_load (const gchar * path) { AUDDBG("%s\n", path); - g_return_val_if_fail(aud_active_skin != NULL, FALSE); + g_return_val_if_fail(active_skin != NULL, FALSE); - if (!skin_load(aud_active_skin, path)) { + if (!skin_load(active_skin, path)) { AUDDBG("loading failed\n"); return FALSE; } mainwin_refresh_hints (); + textbox_update_all (); ui_vis_set_colors (); - ui_skinned_window_draw_all(mainwin); - ui_skinned_window_draw_all(equalizerwin); - ui_skinned_window_draw_all(playlistwin); - - SkinPixmap *pixmap; - pixmap = &aud_active_skin->pixmaps[SKIN_POSBAR]; - /* last 59 pixels of SKIN_POSBAR are knobs (normal and selected) */ - gtk_widget_set_size_request(mainwin_position, pixmap->width - 59, pixmap->height); + gtk_widget_queue_draw (mainwin); + gtk_widget_queue_draw (equalizerwin); + gtk_widget_queue_draw (playlistwin); - return TRUE; -} - -static void skin_pixmap_free (SkinPixmap * pixmap) -{ - if (pixmap->pixbuf != NULL) + /* path may in fact be the same string as config.skin */ + if (! config.skin || strcmp (path, config.skin)) { - g_object_unref (pixmap->pixbuf); - pixmap->pixbuf = NULL; + g_free (config.skin); + config.skin = g_strdup (path); } + + return TRUE; } -Skin * +static Skin * skin_new(void) { Skin *skin; skin = g_new0(Skin, 1); - skin->lock = g_mutex_new(); return skin; } @@ -221,7 +181,7 @@ * Does not free skin itself or lock variable so that the skin can immediately * populated with new skin data if needed. */ -void +static void skin_free(Skin * skin) { gint i; @@ -229,49 +189,38 @@ g_return_if_fail(skin != NULL); for (i = 0; i < SKIN_PIXMAP_COUNT; i++) - skin_pixmap_free(&skin->pixmaps[i]); + { + if (skin->pixmaps[i]) + { + cairo_surface_destroy (skin->pixmaps[i]); + skin->pixmaps[i] = NULL; + } + } for (i = 0; i < SKIN_MASK_COUNT; i++) { if (skin->masks[i]) - g_object_unref(skin->masks[i]); - if (skin->scaled_masks[i]) - g_object_unref(skin->scaled_masks[i]); +#ifdef MASK_IS_REGION + cairo_region_destroy (skin->masks[i]); +#else + g_object_unref (skin->masks[i]); +#endif skin->masks[i] = NULL; - skin->scaled_masks[i] = NULL; - } - - for (i = 0; i < SKIN_COLOR_COUNT; i++) { - if (skin->colors[i]) - g_free(skin->colors[i]); - - skin->colors[i] = NULL; } g_free(skin->path); skin->path = NULL; - - skin_set_default_vis_color(skin); - - if (original_gtk_theme != NULL) - { - gtk_settings_set_string_property (gtk_settings_get_default (), - "gtk-theme-name", original_gtk_theme, "audacious"); - g_free (original_gtk_theme); - original_gtk_theme = NULL; - } } -void +static void skin_destroy(Skin * skin) { g_return_if_fail(skin != NULL); skin_free(skin); - g_mutex_free(skin->lock); g_free(skin); } -const SkinPixmapIdMapping * +static const SkinPixmapIdMapping * skin_pixmap_id_lookup(guint id) { guint i; @@ -285,26 +234,7 @@ return NULL; } -const gchar * -skin_pixmap_id_to_name(SkinPixmapId id) -{ - guint i; - - for (i = 0; i < skin_pixmap_id_map_size; i++) { - if (id == skin_pixmap_id_map[i].id) - return skin_pixmap_id_map[i].name; - } - return NULL; -} - -static void -skin_set_default_vis_color(Skin * skin) -{ - memcpy(skin->vis_color, skin_default_viscolor, - sizeof(skin_default_viscolor)); -} - -gchar * skin_pixmap_locate (const gchar * dirname, gchar * * basenames) +static gchar * skin_pixmap_locate (const gchar * dirname, gchar * * basenames) { gchar * filename = NULL; gint i; @@ -386,10 +316,10 @@ { const SkinPixmapIdMapping *pixmap_id_mapping; gchar *filename; - SkinPixmap *pm = NULL; g_return_val_if_fail(skin != NULL, FALSE); g_return_val_if_fail(id < SKIN_PIXMAP_COUNT, FALSE); + g_return_val_if_fail(! skin->pixmaps[id], FALSE); pixmap_id_mapping = skin_pixmap_id_lookup(id); g_return_val_if_fail(pixmap_id_mapping != NULL, FALSE); @@ -399,55 +329,28 @@ if (filename == NULL) return FALSE; - AUDDBG("loaded %s\n", filename); - - pm = &skin->pixmaps[id]; - GdkPixbuf *pix = gdk_pixbuf_new_from_file(filename, NULL); - - if (pix == NULL) - return FALSE; - - if (config.colorize_r == 255 && config.colorize_g == 255 && - config.colorize_b == 255) - pm->pixbuf = pix; - else - { - pm->pixbuf = audacious_create_colorized_pixbuf(pix, config.colorize_r, - config.colorize_g, config.colorize_b); - g_object_unref(pix); - } - - pm->width = gdk_pixbuf_get_width(pm->pixbuf); - pm->height = gdk_pixbuf_get_height(pm->pixbuf); - pm->current_width = pm->width; - pm->current_height = pm->height; - - g_free(filename); + skin->pixmaps[id] = surface_new_from_file (filename); - return TRUE; + g_free (filename); + return skin->pixmaps[id] ? TRUE : FALSE; } -void -skin_mask_create(Skin * skin, - const gchar * path, - gint id, - GdkWindow * window) -{ - skin->masks[id] = - skin_create_transparent_mask(path, "region.txt", - skin_mask_info[id].inistr, window, - skin_mask_info[id].width, - skin_mask_info[id].height, FALSE); - - skin->scaled_masks[id] = - skin_create_transparent_mask(path, "region.txt", - skin_mask_info[id].inistr, window, - skin_mask_info[id].width * 2, - skin_mask_info[id].height * 2, TRUE); +static void skin_mask_create (Skin * skin, const gchar * path, gint id, + GdkWindow * window) +{ + skin->masks[id] = skin_create_transparent_mask (path, "region.txt", + skin_mask_info[id].inistr, window, skin_mask_info[id].width, + skin_mask_info[id].height); } -static GdkBitmap * -create_default_mask(GdkWindow * parent, gint w, gint h) +#ifdef MASK_IS_REGION +static cairo_region_t * create_default_mask (GdkWindow * parent, gint w, gint h) +{ + cairo_rectangle_int_t rect = {0, 0, w, h}; + return cairo_region_create_rectangle (& rect); +} +#else +static GdkBitmap * create_default_mask (GdkWindow * parent, gint w, gint h) { GdkBitmap *ret; GdkGC *gc; @@ -462,81 +365,46 @@ return ret; } - -static void -skin_query_color(GdkColormap * cm, GdkColor * c) -{ -#ifdef GDK_WINDOWING_X11 - XColor xc = { 0,0,0,0,0,0 }; - - xc.pixel = c->pixel; - XQueryColor(GDK_COLORMAP_XDISPLAY(cm), GDK_COLORMAP_XCOLORMAP(cm), &xc); - c->red = xc.red; - c->green = xc.green; - c->blue = xc.blue; -#else - /* do nothing. see what breaks? */ #endif -} -static glong -skin_calc_luminance(GdkColor * c) +static gint color_diff (guint32 a, guint32 b) { - return (0.212671 * c->red + 0.715160 * c->green + 0.072169 * c->blue); + return abs (COLOR_R (a) - COLOR_R (b)) + abs (COLOR_G (a) - COLOR_G (b)) + + abs (COLOR_B (a) - COLOR_B (b)); } -static void -skin_get_textcolors(GdkPixbuf * pix, GdkColor * bgc, GdkColor * fgc) +static void skin_get_textcolors (Skin * skin, cairo_surface_t * s) { /* * Try to extract reasonable background and foreground colors * from the font pixmap */ - GdkImage *gi; - GdkColormap *cm; - gint i; - - g_return_if_fail(pix != NULL); + /* Get a pixel from the middle of the space character */ + skin->colors[SKIN_TEXTBG] = surface_get_pixel (s, 152, 3); - GdkPixmap *text = gdk_pixmap_new(NULL, gdk_pixbuf_get_width(pix), gdk_pixbuf_get_height(pix), gdk_rgb_get_visual()->depth); - gdk_draw_pixbuf(text, NULL, pix, 0, 0, 0, 0, gdk_pixbuf_get_width(pix), gdk_pixbuf_get_height(pix), - GDK_RGB_DITHER_NONE, 0, 0); - /* Get the first line of text */ - gi = gdk_drawable_get_image(text, 0, 0, 152, 6); - cm = gdk_colormap_get_system(); - - for (i = 0; i < 6; i++) { - GdkColor c; - gint x; - glong d, max_d; - - /* Get a pixel from the middle of the space character */ - bgc[i].pixel = gdk_image_get_pixel(gi, 151, i); - skin_query_color(cm, &bgc[i]); - - max_d = 0; - for (x = 1; x < 150; x++) { - c.pixel = gdk_image_get_pixel(gi, x, i); - skin_query_color(cm, &c); - - d = labs(skin_calc_luminance(&c) - skin_calc_luminance(&bgc[i])); - if (d > max_d) { - memcpy(&fgc[i], &c, sizeof(GdkColor)); + gint max_d = -1; + for (gint y = 0; y < 6; y ++) + { + for (gint x = 1; x < 150; x ++) + { + gint c = surface_get_pixel (s, x, y); + gint d = color_diff (skin->colors[SKIN_TEXTBG], c); + if (d > max_d) + { + skin->colors[SKIN_TEXTFG] = c; max_d = d; } } } - g_object_unref(gi); - g_object_unref(text); } gboolean init_skins(const gchar * path) { - aud_active_skin = skin_new(); + active_skin = skin_new(); - skin_parse_hints(aud_active_skin, NULL); + skin_parse_hints(active_skin, NULL); /* create the windows if they haven't been created yet, needed for bootstrapping */ if (mainwin == NULL) @@ -544,32 +412,39 @@ mainwin_create(); equalizerwin_create(); playlistwin_create(); + + hint_set_sticky (config.sticky); + hint_set_always (config.always_on_top); } - if (!aud_active_skin_load(path)) { + if (! path || ! active_skin_load (path)) + { if (path != NULL) AUDDBG("Unable to load skin (%s), trying default...\n", path); else AUDDBG("Skin not defined: trying default...\n"); /* can't load configured skin, retry with default */ - if (!aud_active_skin_load(BMP_DEFAULT_SKIN_PATH)) { - AUDDBG("Unable to load default skin (%s)! Giving up.\n", - BMP_DEFAULT_SKIN_PATH); + gchar * def = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "Skins" + G_DIR_SEPARATOR_S "Default", aud_get_path (AUD_PATH_DATA_DIR)); + + if (! active_skin_load (def)) + { + AUDDBG ("Unable to load default skin (%s)! Giving up.\n", def); + g_free (def); return FALSE; } - } - if (config.random_skin_on_play) - skinlist_update(); + g_free (def); + } return TRUE; } void cleanup_skins() { - skin_destroy(aud_active_skin); - aud_active_skin = NULL; + skin_destroy(active_skin); + active_skin = NULL; gtk_widget_destroy (mainwin); mainwin = NULL; @@ -585,18 +460,15 @@ * Hints files are somewhat like "scripts" in Winamp3/5. * We'll probably add scripts to it next. */ -void -skin_parse_hints(Skin * skin, gchar *path_p) +static void skin_parse_hints (Skin * skin, const gchar * path_p) { - gchar *filename, *tmp; + gchar *filename; INIFile *inifile; path_p = path_p ? path_p : skin->path; - skin->properties.mainwin_othertext = FALSE; skin->properties.mainwin_vis_x = 24; skin->properties.mainwin_vis_y = 43; - skin->properties.mainwin_vis_width = 76; skin->properties.mainwin_text_x = 112; skin->properties.mainwin_text_y = 27; skin->properties.mainwin_text_width = 153; @@ -615,6 +487,7 @@ skin->properties.mainwin_playstatus_x = 24; skin->properties.mainwin_playstatus_y = 28; skin->properties.mainwin_menurow_visible = TRUE; + skin->properties.mainwin_streaminfo_visible = TRUE; skin->properties.mainwin_volume_x = 107; skin->properties.mainwin_volume_y = 57; skin->properties.mainwin_balance_x = 177; @@ -622,7 +495,7 @@ skin->properties.mainwin_position_x = 16; skin->properties.mainwin_position_y = 72; skin->properties.mainwin_othertext_is_status = FALSE; - skin->properties.mainwin_othertext_visible = skin->properties.mainwin_othertext; + skin->properties.mainwin_othertext_visible = FALSE; skin->properties.mainwin_text_visible = TRUE; skin->properties.mainwin_vis_visible = TRUE; skin->properties.mainwin_previous_x = 16; @@ -672,766 +545,335 @@ if (!inifile) return; - tmp = read_ini_string(inifile, "skin", "mainwinOthertext"); + struct { + const gchar * name; + gint * value; + } pairs[] = { + {"mainwinVisX", & skin->properties.mainwin_vis_x}, + {"mainwinVisY", & skin->properties.mainwin_vis_y}, + {"mainwinTextX", & skin->properties.mainwin_text_x}, + {"mainwinTextY", & skin->properties.mainwin_text_y}, + {"mainwinTextWidth", & skin->properties.mainwin_text_width}, + {"mainwinInfoBarX", & skin->properties.mainwin_infobar_x}, + {"mainwinInfoBarY", & skin->properties.mainwin_infobar_y}, + {"mainwinNumber0X", & skin->properties.mainwin_number_0_x}, + {"mainwinNumber0Y", & skin->properties.mainwin_number_0_y}, + {"mainwinNumber1X", & skin->properties.mainwin_number_1_x}, + {"mainwinNumber1Y", & skin->properties.mainwin_number_1_y}, + {"mainwinNumber2X", & skin->properties.mainwin_number_2_x}, + {"mainwinNumber2Y", & skin->properties.mainwin_number_2_y}, + {"mainwinNumber3X", & skin->properties.mainwin_number_3_x}, + {"mainwinNumber3Y", & skin->properties.mainwin_number_3_y}, + {"mainwinNumber4X", & skin->properties.mainwin_number_4_x}, + {"mainwinNumber4Y", & skin->properties.mainwin_number_4_y}, + {"mainwinPlayStatusX", & skin->properties.mainwin_playstatus_x}, + {"mainwinPlayStatusY", & skin->properties.mainwin_playstatus_y}, + {"mainwinMenurowVisible", & skin->properties.mainwin_menurow_visible}, + {"mainwinStreaminfoVisible", & skin->properties.mainwin_streaminfo_visible}, + {"mainwinVolumeX", & skin->properties.mainwin_volume_x}, + {"mainwinVolumeY", & skin->properties.mainwin_volume_y}, + {"mainwinBalanceX", & skin->properties.mainwin_balance_x}, + {"mainwinBalanceY", & skin->properties.mainwin_balance_y}, + {"mainwinPositionX", & skin->properties.mainwin_position_x}, + {"mainwinPositionY", & skin->properties.mainwin_position_y}, + {"mainwinOthertextIsStatus", & skin->properties.mainwin_othertext_is_status}, + {"mainwinOthertextVisible", & skin->properties.mainwin_othertext_visible}, + {"mainwinTextVisible", & skin->properties.mainwin_text_visible}, + {"mainwinVisVisible", & skin->properties.mainwin_vis_visible}, + {"mainwinPreviousX", & skin->properties.mainwin_previous_x}, + {"mainwinPreviousY", & skin->properties.mainwin_previous_y}, + {"mainwinPlayX", & skin->properties.mainwin_play_x}, + {"mainwinPlayY", & skin->properties.mainwin_play_y}, + {"mainwinPauseX", & skin->properties.mainwin_pause_x}, + {"mainwinPauseY", & skin->properties.mainwin_pause_y}, + {"mainwinStopX", & skin->properties.mainwin_stop_x}, + {"mainwinStopY", & skin->properties.mainwin_stop_y}, + {"mainwinNextX", & skin->properties.mainwin_next_x}, + {"mainwinNextY", & skin->properties.mainwin_next_y}, + {"mainwinEjectX", & skin->properties.mainwin_eject_x}, + {"mainwinEjectY", & skin->properties.mainwin_eject_y}, + {"mainwinWidth", & skin->properties.mainwin_width}, + {"mainwinHeight", & skin->properties.mainwin_height}, + {"mainwinAboutX", & skin->properties.mainwin_about_x}, + {"mainwinAboutY", & skin->properties.mainwin_about_y}, + {"mainwinShuffleX", & skin->properties.mainwin_shuffle_x}, + {"mainwinShuffleY", & skin->properties.mainwin_shuffle_y}, + {"mainwinRepeatX", & skin->properties.mainwin_repeat_x}, + {"mainwinRepeatY", & skin->properties.mainwin_repeat_y}, + {"mainwinEQButtonX", & skin->properties.mainwin_eqbutton_x}, + {"mainwinEQButtonY", & skin->properties.mainwin_eqbutton_y}, + {"mainwinPLButtonX", & skin->properties.mainwin_plbutton_x}, + {"mainwinPLButtonY", & skin->properties.mainwin_plbutton_y}, + {"textboxBitmapFontWidth", & skin->properties.textbox_bitmap_font_width}, + {"textboxBitmapFontHeight", & skin->properties.textbox_bitmap_font_height}, + {"mainwinMinimizeX", & skin->properties.mainwin_minimize_x}, + {"mainwinMinimizeY", & skin->properties.mainwin_minimize_y}, + {"mainwinShadeX", & skin->properties.mainwin_shade_x}, + {"mainwinShadeY", & skin->properties.mainwin_shade_y}, + {"mainwinCloseX", & skin->properties.mainwin_close_x}, + {"mainwinCloseY", & skin->properties.mainwin_close_y}}; - if (tmp != NULL) + for (gint i = 0; i < G_N_ELEMENTS (pairs); i ++) { - skin->properties.mainwin_othertext = atoi(tmp); - g_free(tmp); + gchar * s = read_ini_string (inifile, "skin", pairs[i].name); + if (s) + { + * pairs[i].value = atoi (s); + g_free (s); + } } - tmp = read_ini_string(inifile, "skin", "mainwinVisX"); - - if (tmp != NULL) - { - skin->properties.mainwin_vis_x = atoi(tmp); - g_free(tmp); - } + skin_mask_info[0].height = skin->properties.mainwin_height; + skin_mask_info[0].width = skin->properties.mainwin_width; - tmp = read_ini_string(inifile, "skin", "mainwinVisY"); + if (filename != NULL) + g_free(filename); - if (tmp != NULL) - { - skin->properties.mainwin_vis_y = atoi(tmp); - g_free(tmp); - } + close_ini_file(inifile); +} - tmp = read_ini_string(inifile, "skin", "mainwinVisWidth"); +static gint hex_chars_to_int (gchar hi, gchar lo) +{ + /* + * Converts a value in the range 0x00-0xFF + * to a integer in the range 0-255 + */ + gchar str[3] = {hi, lo, 0}; + return strtol (str, NULL, 16); +} - if (tmp != NULL) - { - skin->properties.mainwin_vis_width = atoi(tmp); - g_free(tmp); - } +static guint32 skin_load_color (INIFile * inifile, const gchar * section, + const gchar * key, const gchar * default_hex) +{ + gchar * value = NULL; - tmp = read_ini_string(inifile, "skin", "mainwinTextX"); + if (inifile) + value = read_ini_string (inifile, section, key); - if (tmp != NULL) - { - skin->properties.mainwin_text_x = atoi(tmp); - g_free(tmp); - } + if (! value && default_hex) + value = g_strdup (default_hex); - tmp = read_ini_string(inifile, "skin", "mainwinTextY"); + if (! value) + return 0; - if (tmp != NULL) - { - skin->properties.mainwin_text_y = atoi(tmp); - g_free(tmp); - } + g_strstrip (value); + gchar * ptr = value; + if (* ptr == '#') + ptr ++; - tmp = read_ini_string(inifile, "skin", "mainwinTextWidth"); + gint red = 0, green = 0, blue = 0; - if (tmp != NULL) + /* + * The handling of incomplete values is done this way + * to maximize winamp compatibility + */ + gint len = strlen (ptr); + if (len >= 6) { - skin->properties.mainwin_text_width = atoi(tmp); - g_free(tmp); + red = hex_chars_to_int (ptr[0], ptr[1]); + ptr += 2; } - - tmp = read_ini_string(inifile, "skin", "mainwinInfoBarX"); - - if (tmp != NULL) + if (len >= 4) { - skin->properties.mainwin_infobar_x = atoi(tmp); - g_free(tmp); + green = hex_chars_to_int (ptr[0], ptr[1]); + ptr += 2; } + if (len >= 2) + blue = hex_chars_to_int (ptr[0], ptr[1]); - tmp = read_ini_string(inifile, "skin", "mainwinInfoBarY"); + g_free (value); + return COLOR (red, green, blue); +} - if (tmp != NULL) - { - skin->properties.mainwin_infobar_y = atoi(tmp); - g_free(tmp); - } +#ifdef MASK_IS_REGION +static cairo_region_t * skin_create_transparent_mask (const gchar * path, const + gchar * file, const gchar * section, GdkWindow * window, gint width, gint + height) +#else +static GdkBitmap * skin_create_transparent_mask (const gchar * path, const + gchar * file, const gchar * section, GdkWindow * window, gint width, gint + height) +#endif +{ + gchar *filename = NULL; + INIFile *inifile = NULL; + gboolean created_mask = FALSE; + GArray *num, *point; + guint i, j; + gint k; - tmp = read_ini_string(inifile, "skin", "mainwinNumber0X"); + if (path != NULL) + filename = find_file_case_uri (path, file); - if (tmp != NULL) - { - skin->properties.mainwin_number_0_x = atoi(tmp); - g_free(tmp); - } + /* filename will be null if path wasn't set */ + if (!filename) + return create_default_mask(window, width, height); - tmp = read_ini_string(inifile, "skin", "mainwinNumber0Y"); + inifile = open_ini_file(filename); - if (tmp != NULL) - { - skin->properties.mainwin_number_0_y = atoi(tmp); - g_free(tmp); + if ((num = read_ini_array(inifile, section, "NumPoints")) == NULL) { + g_free(filename); + close_ini_file(inifile); + return NULL; } - tmp = read_ini_string(inifile, "skin", "mainwinNumber1X"); - - if (tmp != NULL) - { - skin->properties.mainwin_number_1_x = atoi(tmp); - g_free(tmp); + if ((point = read_ini_array(inifile, section, "PointList")) == NULL) { + g_array_free(num, TRUE); + g_free(filename); + close_ini_file(inifile); + return NULL; } - tmp = read_ini_string(inifile, "skin", "mainwinNumber1Y"); + close_ini_file(inifile); - if (tmp != NULL) - { - skin->properties.mainwin_number_1_y = atoi(tmp); - g_free(tmp); - } +#ifdef MASK_IS_REGION + cairo_region_t * mask = cairo_region_create (); +#else + GdkBitmap * mask = gdk_pixmap_new (window, width, height, 1); + GdkGC * gc = gdk_gc_new (mask); - tmp = read_ini_string(inifile, "skin", "mainwinNumber2X"); + GdkColor pattern; + pattern.pixel = 0; + gdk_gc_set_foreground(gc, &pattern); + gdk_draw_rectangle(mask, gc, TRUE, 0, 0, width, height); + pattern.pixel = 1; + gdk_gc_set_foreground(gc, &pattern); +#endif - if (tmp != NULL) + j = 0; + for (i = 0; i < num->len; i ++) { - skin->properties.mainwin_number_2_x = atoi(tmp); - g_free(tmp); - } + gint n_points = g_array_index (num, gint, i); + if (n_points <= 0 || j + 2 * n_points > point->len) + break; - tmp = read_ini_string(inifile, "skin", "mainwinNumber2Y"); + GdkPoint gpoints[n_points]; + for (k = 0; k < n_points; k ++) + { + gpoints[k].x = g_array_index (point, gint, j + k * 2); + gpoints[k].y = g_array_index (point, gint, j + k * 2 + 1); + } - if (tmp != NULL) - { - skin->properties.mainwin_number_2_y = atoi(tmp); - g_free(tmp); - } +#ifdef MASK_IS_REGION + gint xmin = width, ymin = height, xmax = 0, ymax = 0; + for (k = 0; k < n_points; k ++) + { + xmin = MIN (xmin, gpoints[k].x); + ymin = MIN (ymin, gpoints[k].y); + xmax = MAX (xmax, gpoints[k].x); + ymax = MAX (ymax, gpoints[k].y); + } - tmp = read_ini_string(inifile, "skin", "mainwinNumber3X"); + if (xmax > xmin && ymax > ymin) + { + cairo_rectangle_int_t rect = {xmin, ymin, xmax - xmin, ymax - ymin}; + cairo_region_union_rectangle (mask, & rect); + } +#else + gdk_draw_polygon (mask, gc, TRUE, gpoints, n_points); +#endif - if (tmp != NULL) - { - skin->properties.mainwin_number_3_x = atoi(tmp); - g_free(tmp); + created_mask = TRUE; + j += n_points * 2; } - tmp = read_ini_string(inifile, "skin", "mainwinNumber3Y"); + g_array_free(num, TRUE); + g_array_free(point, TRUE); + g_free(filename); - if (tmp != NULL) + if (!created_mask) { - skin->properties.mainwin_number_3_y = atoi(tmp); - g_free(tmp); +#ifdef MASK_IS_REGION + cairo_rectangle_int_t rect = {0, 0, width, height}; + cairo_region_union_rectangle (mask, & rect); +#else + gdk_draw_rectangle(mask, gc, TRUE, 0, 0, width, height); +#endif } - tmp = read_ini_string(inifile, "skin", "mainwinNumber4X"); - - if (tmp != NULL) - { - skin->properties.mainwin_number_4_x = atoi(tmp); - g_free(tmp); - } +#ifndef MASK_IS_REGION + g_object_unref(gc); +#endif - tmp = read_ini_string(inifile, "skin", "mainwinNumber4Y"); + return mask; +} - if (tmp != NULL) - { - skin->properties.mainwin_number_4_y = atoi(tmp); - g_free(tmp); - } +static void skin_load_viscolor (Skin * skin, const gchar * path, const gchar * + basename) +{ + gchar * filename, * buffer, * string, * next; + gint line; - tmp = read_ini_string(inifile, "skin", "mainwinPlayStatusX"); + memcpy (skin->vis_colors, default_vis_colors, sizeof skin->vis_colors); - if (tmp != NULL) - { - skin->properties.mainwin_playstatus_x = atoi(tmp); - g_free(tmp); - } + filename = find_file_case_uri (path, basename); + if (filename == NULL) + return; - tmp = read_ini_string(inifile, "skin", "mainwinPlayStatusY"); + buffer = load_text_file (filename); + g_free (filename); + string = buffer; - if (tmp != NULL) + for (line = 0; string != NULL && line < 24; line ++) { - skin->properties.mainwin_playstatus_y = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinMenurowVisible"); + GArray * array; - if (tmp != NULL) - { - skin->properties.mainwin_menurow_visible = atoi(tmp); - g_free(tmp); - } + next = text_parse_line (string); + array = string_to_garray (string); - tmp = read_ini_string(inifile, "skin", "mainwinVolumeX"); + if (array->len >= 3) + skin->vis_colors[line] = COLOR (g_array_index (array, gint, 0), + g_array_index (array, gint, 1), g_array_index (array, gint, 2)); - if (tmp != NULL) - { - skin->properties.mainwin_volume_x = atoi(tmp); - g_free(tmp); + g_array_free (array, TRUE); + string = next; } - tmp = read_ini_string(inifile, "skin", "mainwinVolumeY"); + g_free (buffer); +} - if (tmp != NULL) - { - skin->properties.mainwin_volume_y = atoi(tmp); - g_free(tmp); - } +static void +skin_numbers_generate_dash(Skin * skin) +{ + g_return_if_fail(skin != NULL); - tmp = read_ini_string(inifile, "skin", "mainwinBalanceX"); + cairo_surface_t * old = skin->pixmaps[SKIN_NUMBERS]; + if (! old || cairo_image_surface_get_width (old) < 99) + return; - if (tmp != NULL) - { - skin->properties.mainwin_balance_x = atoi(tmp); - g_free(tmp); - } + gint h = cairo_image_surface_get_height (old); + cairo_surface_t * new = surface_new (108, h); - tmp = read_ini_string(inifile, "skin", "mainwinBalanceY"); + surface_copy_rect (old, 0, 0, 99, h, new, 0, 0); + surface_copy_rect (old, 90, 0, 9, h, new, 99, 0); + surface_copy_rect (old, 20, 6, 5, 1, new, 101, 6); - if (tmp != NULL) - { - skin->properties.mainwin_balance_y = atoi(tmp); - g_free(tmp); - } + cairo_surface_destroy (old); + skin->pixmaps[SKIN_NUMBERS] = new; +} - tmp = read_ini_string(inifile, "skin", "mainwinPositionX"); +static gboolean +skin_load_pixmaps(Skin * skin, const gchar * path) +{ + guint i; + gchar *filename; + INIFile *inifile; - if (tmp != NULL) - { - skin->properties.mainwin_position_x = atoi(tmp); - g_free(tmp); - } + if(!skin) return FALSE; + if(!path) return FALSE; - tmp = read_ini_string(inifile, "skin", "mainwinPositionY"); + AUDDBG("Loading pixmaps in %s\n", path); - if (tmp != NULL) - { - skin->properties.mainwin_position_y = atoi(tmp); - g_free(tmp); - } + for (i = 0; i < SKIN_PIXMAP_COUNT; i++) + if (! skin_load_pixmap_id (skin, i, path)) + return FALSE; - tmp = read_ini_string(inifile, "skin", "mainwinOthertextIsStatus"); + if (skin->pixmaps[SKIN_TEXT]) + skin_get_textcolors (skin, skin->pixmaps[SKIN_TEXT]); - if (tmp != NULL) - { - skin->properties.mainwin_othertext_is_status = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinOthertextVisible"); - - if (tmp != NULL) - { - skin->properties.mainwin_othertext_visible = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinTextVisible"); - - if (tmp != NULL) - { - skin->properties.mainwin_text_visible = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinVisVisible"); - - if (tmp != NULL) - { - skin->properties.mainwin_vis_visible = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinPreviousX"); - - if (tmp != NULL) - { - skin->properties.mainwin_previous_x = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinPreviousY"); - - if (tmp != NULL) - { - skin->properties.mainwin_previous_y = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinPlayX"); - - if (tmp != NULL) - { - skin->properties.mainwin_play_x = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinPlayY"); - - if (tmp != NULL) - { - skin->properties.mainwin_play_y = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinPauseX"); - - if (tmp != NULL) - { - skin->properties.mainwin_pause_x = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinPauseY"); - - if (tmp != NULL) - { - skin->properties.mainwin_pause_y = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinStopX"); - - if (tmp != NULL) - { - skin->properties.mainwin_stop_x = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinStopY"); - - if (tmp != NULL) - { - skin->properties.mainwin_stop_y = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinNextX"); - - if (tmp != NULL) - { - skin->properties.mainwin_next_x = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinNextY"); - - if (tmp != NULL) - { - skin->properties.mainwin_next_y = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinEjectX"); - - if (tmp != NULL) - { - skin->properties.mainwin_eject_x = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinEjectY"); - - if (tmp != NULL) - { - skin->properties.mainwin_eject_y = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinWidth"); - - if (tmp != NULL) - { - skin->properties.mainwin_width = atoi(tmp); - g_free(tmp); - } - - skin_mask_info[0].width = skin->properties.mainwin_width; - - tmp = read_ini_string(inifile, "skin", "mainwinHeight"); - - if (tmp != NULL) - { - skin->properties.mainwin_height = atoi(tmp); - g_free(tmp); - } - - skin_mask_info[0].height = skin->properties.mainwin_height; - - tmp = read_ini_string(inifile, "skin", "mainwinAboutX"); - - if (tmp != NULL) - { - skin->properties.mainwin_about_x = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinAboutY"); - - if (tmp != NULL) - { - skin->properties.mainwin_about_y = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinShuffleX"); - - if (tmp != NULL) - { - skin->properties.mainwin_shuffle_x = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinShuffleY"); - - if (tmp != NULL) - { - skin->properties.mainwin_shuffle_y = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinRepeatX"); - - if (tmp != NULL) - { - skin->properties.mainwin_repeat_x = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinRepeatY"); - - if (tmp != NULL) - { - skin->properties.mainwin_repeat_y = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinEQButtonX"); - - if (tmp != NULL) - { - skin->properties.mainwin_eqbutton_x = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinEQButtonY"); - - if (tmp != NULL) - { - skin->properties.mainwin_eqbutton_y = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinPLButtonX"); - - if (tmp != NULL) - { - skin->properties.mainwin_plbutton_x = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinPLButtonY"); - - if (tmp != NULL) - { - skin->properties.mainwin_plbutton_y = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "textboxBitmapFontWidth"); - - if (tmp != NULL) - { - skin->properties.textbox_bitmap_font_width = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "textboxBitmapFontHeight"); - - if (tmp != NULL) - { - skin->properties.textbox_bitmap_font_height = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinMinimizeX"); - - if (tmp != NULL) - { - skin->properties.mainwin_minimize_x = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinMinimizeY"); - - if (tmp != NULL) - { - skin->properties.mainwin_minimize_y = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinShadeX"); - - if (tmp != NULL) - { - skin->properties.mainwin_shade_x = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinShadeY"); - - if (tmp != NULL) - { - skin->properties.mainwin_shade_y = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinCloseX"); - - if (tmp != NULL) - { - skin->properties.mainwin_close_x = atoi(tmp); - g_free(tmp); - } - - tmp = read_ini_string(inifile, "skin", "mainwinCloseY"); - - if (tmp != NULL) - { - skin->properties.mainwin_close_y = atoi(tmp); - g_free(tmp); - } - - if (filename != NULL) - g_free(filename); - - close_ini_file(inifile); -} - -static guint -hex_chars_to_int(gchar hi, gchar lo) -{ - /* - * Converts a value in the range 0x00-0xFF - * to a integer in the range 0-65535 - */ - gchar str[3]; - - str[0] = hi; - str[1] = lo; - str[2] = 0; - - return (CLAMP(strtol(str, NULL, 16), 0, 0xFF) << 8); -} - -static GdkColor * -skin_load_color(INIFile *inifile, - const gchar * section, const gchar * key, - gchar * default_hex) -{ - gchar *value; - GdkColor *color = NULL; - - if (inifile || default_hex) { - if (inifile) { - value = read_ini_string(inifile, section, key); - if (value == NULL) { - value = g_strdup(default_hex); - } - } else { - value = g_strdup(default_hex); - } - if (value) { - gchar *ptr = value; - gint len; - - color = g_new0(GdkColor, 1); - g_strstrip(value); - - if (value[0] == '#') - ptr++; - len = strlen(ptr); - /* - * The handling of incomplete values is done this way - * to maximize winamp compatibility - */ - if (len >= 6) { - color->red = hex_chars_to_int(*ptr, *(ptr + 1)); - ptr += 2; - } - if (len >= 4) { - color->green = hex_chars_to_int(*ptr, *(ptr + 1)); - ptr += 2; - } - if (len >= 2) - color->blue = hex_chars_to_int(*ptr, *(ptr + 1)); - - g_free(value); - } - } - return color; -} - - - -GdkBitmap * -skin_create_transparent_mask(const gchar * path, - const gchar * file, - const gchar * section, - GdkWindow * window, - gint width, - gint height, gboolean scale) -{ - GdkBitmap *mask = NULL; - GdkGC *gc = NULL; - GdkColor pattern; - GdkPoint *gpoints; - - gchar *filename = NULL; - INIFile *inifile = NULL; - gboolean created_mask = FALSE; - GArray *num, *point; - guint i, j; - gint k; - - if (path != NULL) - filename = find_file_case_uri (path, file); - - /* filename will be null if path wasn't set */ - if (!filename) - return create_default_mask(window, width, height); - - inifile = open_ini_file(filename); - - if ((num = read_ini_array(inifile, section, "NumPoints")) == NULL) { - g_free(filename); - close_ini_file(inifile); - return NULL; - } - - if ((point = read_ini_array(inifile, section, "PointList")) == NULL) { - g_array_free(num, TRUE); - g_free(filename); - close_ini_file(inifile); - return NULL; - } - - close_ini_file(inifile); - - mask = gdk_pixmap_new(window, width, height, 1); - gc = gdk_gc_new(mask); - - pattern.pixel = 0; - gdk_gc_set_foreground(gc, &pattern); - gdk_draw_rectangle(mask, gc, TRUE, 0, 0, width, height); - pattern.pixel = 1; - gdk_gc_set_foreground(gc, &pattern); - - j = 0; - for (i = 0; i < num->len; i++) { - if ((int)(point->len - j) >= (g_array_index(num, gint, i) * 2)) { - created_mask = TRUE; - gpoints = g_new(GdkPoint, g_array_index(num, gint, i)); - for (k = 0; k < g_array_index(num, gint, i); k++) { - gpoints[k].x = - g_array_index(point, gint, j + k * 2) * (scale ? config.scale_factor : 1 ); - gpoints[k].y = - g_array_index(point, gint, - j + k * 2 + 1) * (scale ? config.scale_factor : 1); - } - j += k * 2; - gdk_draw_polygon(mask, gc, TRUE, gpoints, - g_array_index(num, gint, i)); - g_free(gpoints); - } - } - g_array_free(num, TRUE); - g_array_free(point, TRUE); - g_free(filename); - - if (!created_mask) - gdk_draw_rectangle(mask, gc, TRUE, 0, 0, width, height); - - g_object_unref(gc); - - return mask; -} - -static void skin_load_viscolor (Skin * skin, const gchar * path, const gchar * - basename) -{ - gchar * filename, * buffer, * string, * next; - gint line; - - skin_set_default_vis_color (skin); - - filename = find_file_case_uri (path, basename); - if (filename == NULL) - return; - - buffer = load_text_file (filename); - g_free (filename); - string = buffer; - - for (line = 0; string != NULL && line < 24; line ++) - { - GArray * array; - gint column; - - next = text_parse_line (string); - array = string_to_garray (string); - - if (array->len >= 3) - { - for (column = 0; column < 3; column ++) - skin->vis_color[line][column] = g_array_index (array, gint, - column); - } - - g_array_free (array, TRUE); - string = next; - } - - g_free (buffer); -} - -static void -skin_numbers_generate_dash(Skin * skin) -{ - GdkPixbuf *pixbuf; - SkinPixmap *numbers; - - g_return_if_fail(skin != NULL); - - numbers = &skin->pixmaps[SKIN_NUMBERS]; - if (!numbers->pixbuf || numbers->current_width < 99) - return; - - pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, - 108, numbers->current_height); - - skin_draw_pixbuf(NULL, skin, pixbuf, SKIN_NUMBERS, 0, 0, 0, 0, 99, numbers->current_height); - skin_draw_pixbuf(NULL, skin, pixbuf, SKIN_NUMBERS, 90, 0, 99, 0, 9, numbers->current_height); - skin_draw_pixbuf(NULL, skin, pixbuf, SKIN_NUMBERS, 20, 6, 101, 6, 5, 1); - - g_object_unref(numbers->pixbuf); - - numbers->pixbuf = pixbuf; - numbers->current_width = 108; - numbers->width = 108; -} - -static gboolean -skin_load_pixmaps(Skin * skin, const gchar * path) -{ - GdkPixbuf *text_pb; - guint i; - gchar *filename; - INIFile *inifile; - - if(!skin) return FALSE; - if(!path) return FALSE; - - AUDDBG("Loading pixmaps in %s\n", path); - - for (i = 0; i < SKIN_PIXMAP_COUNT; i++) - if (!skin_load_pixmap_id(skin, i, path) && !config.allow_broken_skins) - return FALSE; - - text_pb = skin->pixmaps[SKIN_TEXT].pixbuf; - - if (text_pb) - skin_get_textcolors(text_pb, skin->textbg, skin->textfg); - - if (skin->pixmaps[SKIN_NUMBERS].pixbuf && - skin->pixmaps[SKIN_NUMBERS].width < 108 ) - skin_numbers_generate_dash(skin); + if (skin->pixmaps[SKIN_NUMBERS] && cairo_image_surface_get_width + (skin->pixmaps[SKIN_NUMBERS]) < 108) + skin_numbers_generate_dash (skin); filename = find_file_case_uri (path, "pledit.txt"); inifile = (filename != NULL) ? open_ini_file (filename) : NULL; @@ -1451,39 +893,16 @@ if (filename) g_free(filename); - skin_mask_create(skin, path, SKIN_MASK_MAIN, mainwin->window); - skin_mask_create(skin, path, SKIN_MASK_MAIN_SHADE, mainwin->window); - - skin_mask_create(skin, path, SKIN_MASK_EQ, equalizerwin->window); - skin_mask_create(skin, path, SKIN_MASK_EQ_SHADE, equalizerwin->window); + skin_mask_create (skin, path, SKIN_MASK_MAIN, gtk_widget_get_window (mainwin)); + skin_mask_create (skin, path, SKIN_MASK_MAIN_SHADE, gtk_widget_get_window (mainwin)); + skin_mask_create (skin, path, SKIN_MASK_EQ, gtk_widget_get_window (equalizerwin)); + skin_mask_create (skin, path, SKIN_MASK_EQ_SHADE, gtk_widget_get_window (equalizerwin)); skin_load_viscolor(skin, path, "viscolor.txt"); return TRUE; } -static void -skin_set_gtk_theme(GtkSettings * settings, Skin * skin) -{ - if (original_gtk_theme == NULL) - g_object_get(settings, "gtk-theme-name", &original_gtk_theme, NULL); - - /* the way GTK does things can be very broken. --nenolod */ - - gchar path[PATH_MAX]; - - snprintf (path, sizeof path, "%s/.themes", g_get_home_dir ()); - g_mkdir_with_parents (path, 0755); - - snprintf (path, sizeof path, "%s/.themes/aud-%s", g_get_home_dir (), basename - (skin->path)); - if (! g_file_test (path, G_FILE_TEST_EXISTS) && symlink (skin->path, path)) - fprintf (stderr, "Failed to create symlink %s.\n", path); - - gtk_settings_set_string_property (settings, "gtk-theme-name", basename - (path), "audacious"); -} - /** * Checks if all pixmap files exist that skin needs. */ @@ -1506,7 +925,6 @@ static gboolean skin_load_nolock(Skin * skin, const gchar * path, gboolean force) { - gchar *gtkrcpath; gchar *newpath, *skin_path; int archive = 0; @@ -1514,9 +932,8 @@ g_return_val_if_fail(skin != NULL, FALSE); g_return_val_if_fail(path != NULL, FALSE); - REQUIRE_LOCK(skin->lock); - if (!g_file_test(path, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_IS_DIR)) + if (! g_file_test (path, G_FILE_TEST_EXISTS)) return FALSE; if(force) AUDDBG("reloading forced!\n"); @@ -1537,7 +954,7 @@ } // Check if skin path has all necessary files. - if (!config.allow_broken_skins && !skin_check_pixmaps(skin, skin_path)) { + if (!skin_check_pixmaps(skin, skin_path)) { if(archive) del_directory(skin_path); g_free(skin_path); AUDDBG("Skin path (%s) doesn't have all wanted pixmaps\n", skin_path); @@ -1564,18 +981,6 @@ return FALSE; } -#ifndef _WIN32 - if (! config.disable_inline_gtk && ! archive) - { - gtkrcpath = g_strdup_printf ("%s/gtk-2.0/gtkrc", skin->path); - - if (g_file_test (gtkrcpath, G_FILE_TEST_IS_REGULAR)) - skin_set_gtk_theme (gtk_settings_get_default (), skin); - - g_free (gtkrcpath); - } -#endif - if(archive) del_directory(skin_path); g_free(skin_path); @@ -1585,33 +990,51 @@ return TRUE; } -void -skin_install_skin(const gchar * path) +void skin_install_skin (const gchar * path) { - gchar *command; +#ifdef S_IRGRP + const mode_t mode = S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH; +#else + const mode_t mode = S_IRWXU; +#endif - g_return_if_fail(path != NULL); + if (g_mkdir_with_parents (skins_paths[SKINS_PATH_USER_SKIN_DIR], mode) < 0) + { + fprintf (stderr, "Failed to create %s: %s\n", + skins_paths[SKINS_PATH_USER_SKIN_DIR], strerror (errno)); + return; + } - command = g_strdup_printf("cp %s %s", - path, skins_paths[SKINS_PATH_USER_SKIN_DIR]); - if (system(command)) { - AUDDBG("Unable to install skin (%s) into user directory (%s)\n", - path, skins_paths[SKINS_PATH_USER_SKIN_DIR]); + GError * err = 0; + gchar * data; + gsize len; + + if (! g_file_get_contents (path, & data, & len, & err)) + { + fprintf (stderr, "Failed to read %s: %s\n", path, err->message); + g_error_free (err); + return; } - g_free(command); -} -static SkinPixmap * -skin_get_pixmap(Skin * skin, SkinPixmapId map_id) -{ - g_return_val_if_fail(skin != NULL, NULL); - g_return_val_if_fail(map_id < SKIN_PIXMAP_COUNT, NULL); + gchar * base = g_path_get_basename (path); + gchar * target = g_build_filename (skins_paths[SKINS_PATH_USER_SKIN_DIR], base, NULL); + + if (! g_file_set_contents (target, data, len, & err)) + { + fprintf (stderr, "Failed to write %s: %s\n", path, err->message); + g_error_free (err); + g_free (data); + g_free (base); + g_free (target); + return; + } - return &skin->pixmaps[map_id]; + g_free (data); + g_free (base); + g_free (target); } -gboolean -skin_load(Skin * skin, const gchar * path) +static gboolean skin_load (Skin * skin, const gchar * path) { gboolean ret; @@ -1620,210 +1043,56 @@ if (!path) return FALSE; - skin_lock(skin); ret = skin_load_nolock(skin, path, FALSE); - skin_unlock(skin); if(!ret) { AUDDBG("loading failed\n"); return FALSE; /* don't try to update anything if loading failed --asphyx */ } - SkinPixmap *pixmap = NULL; - pixmap = skin_get_pixmap(skin, SKIN_NUMBERS); - if (pixmap) { - ui_skinned_number_set_size(mainwin_minus_num, 9, pixmap->height); - ui_skinned_number_set_size(mainwin_10min_num, 9, pixmap->height); - ui_skinned_number_set_size(mainwin_min_num, 9, pixmap->height); - ui_skinned_number_set_size(mainwin_10sec_num, 9, pixmap->height); - ui_skinned_number_set_size(mainwin_sec_num, 9, pixmap->height); - } - - pixmap = skin_get_pixmap(skin, SKIN_MAIN); - if (pixmap && skin->properties.mainwin_height > pixmap->height) - skin->properties.mainwin_height = pixmap->height; - - pixmap = skin_get_pixmap(skin, SKIN_PLAYPAUSE); - if (pixmap) - ui_skinned_playstatus_set_size(mainwin_playstatus, 11, pixmap->height); - - pixmap = skin_get_pixmap(skin, SKIN_EQMAIN); - if (pixmap->height >= 313) - gtk_widget_show(equalizerwin_graph); - - return TRUE; -} - -gboolean -skin_reload_forced(void) -{ - gboolean error; - AUDDBG("\n"); - - skin_lock(aud_active_skin); - error = skin_load_nolock(aud_active_skin, aud_active_skin->path, TRUE); - skin_unlock(aud_active_skin); - - return error; -} - -void -skin_reload(Skin * skin) -{ - AUDDBG("\n"); - g_return_if_fail(skin != NULL); - skin_load_nolock(skin, skin->path, TRUE); -} - -GdkBitmap * -skin_get_mask(Skin * skin, SkinMaskId mi) -{ - GdkBitmap **masks; - - g_return_val_if_fail(skin != NULL, NULL); - g_return_val_if_fail(mi < SKIN_PIXMAP_COUNT, NULL); - - masks = config.scaled ? skin->scaled_masks : skin->masks; - return masks[mi]; -} - -GdkColor * -skin_get_color(Skin * skin, SkinColorId color_id) -{ - GdkColor *ret = NULL; - - g_return_val_if_fail(skin != NULL, NULL); - - switch (color_id) { - case SKIN_TEXTBG: - if (skin->pixmaps[SKIN_TEXT].pixbuf) - ret = skin->textbg; - else - ret = skin->def_textbg; - break; - case SKIN_TEXTFG: - if (skin->pixmaps[SKIN_TEXT].pixbuf) - ret = skin->textfg; - else - ret = skin->def_textfg; - break; - default: - if (color_id < SKIN_COLOR_COUNT) - ret = skin->colors[color_id]; - break; + if (skin->pixmaps[SKIN_NUMBERS]) + { + gint h = cairo_image_surface_get_height (skin->pixmaps[SKIN_NUMBERS]); + ui_skinned_number_set_size (mainwin_minus_num, 9, h); + ui_skinned_number_set_size (mainwin_10min_num, 9, h); + ui_skinned_number_set_size (mainwin_min_num, 9, h); + ui_skinned_number_set_size (mainwin_10sec_num, 9, h); + ui_skinned_number_set_size (mainwin_sec_num, 9, h); } - return ret; -} -void -skin_get_viscolor(Skin * skin, guchar vis_color[24][3]) -{ - gint i; - - g_return_if_fail(skin != NULL); - - for (i = 0; i < 24; i++) { - vis_color[i][0] = skin->vis_color[i][0]; - vis_color[i][1] = skin->vis_color[i][1]; - vis_color[i][2] = skin->vis_color[i][2]; - } -} + if (skin->pixmaps[SKIN_PLAYPAUSE]) + ui_skinned_playstatus_set_size (mainwin_playstatus, 11, + cairo_image_surface_get_height (skin->pixmaps[SKIN_PLAYPAUSE])); -gint -skin_get_id(void) -{ - return skin_current_num; + return TRUE; } -void -skin_draw_pixbuf(GtkWidget *widget, Skin * skin, GdkPixbuf * pix, - SkinPixmapId pixmap_id, - gint xsrc, gint ysrc, gint xdest, gint ydest, - gint width, gint height) +void skin_draw_pixbuf (cairo_t * cr, SkinPixmapId id, gint xsrc, gint ysrc, gint + xdest, gint ydest, gint width, gint height) { - SkinPixmap *pixmap; - - g_return_if_fail(skin != NULL); - - pixmap = skin_get_pixmap(skin, pixmap_id); - g_return_if_fail(pixmap != NULL); - g_return_if_fail(pixmap->pixbuf != NULL); - - /* perhaps we should use transparency or resize widget? */ - if (xsrc+width > pixmap->width || ysrc+height > pixmap->height) { - if (widget) { - /* it's better to hide widget using SKIN_PLAYPAUSE/SKIN_POSBAR than display mess */ - if ((pixmap_id == SKIN_PLAYPAUSE && pixmap->width != 42) || pixmap_id == SKIN_POSBAR) { - gtk_widget_hide(widget); - return; - } - - /* Some skins include SKIN_VOLUME and/or SKIN_BALANCE without knobs */ - if (pixmap_id == SKIN_VOLUME || pixmap_id == SKIN_BALANCE) { - if (ysrc+height > 421 && xsrc+width <= pixmap->width) - return; - } - - /* XMMS skins seems to have SKIN_MONOSTEREO with size 58x20 instead of 58x24 */ - if (pixmap_id == SKIN_MONOSTEREO) - height = pixmap->height/2; - - if (gtk_widget_get_parent(widget) == SKINNED_WINDOW(equalizerwin)->normal) { - if (!(pixmap_id == SKIN_EQMAIN && ysrc == 314)) /* equalizer preamp on equalizer graph */ - gtk_widget_hide(widget); - } - - if (gtk_widget_get_parent(widget) == SKINNED_WINDOW(playlistwin)->normal) { - /* I haven't seen any skin with substandard playlist */ - gtk_widget_hide(widget); - } - } else - return; - } + if (! active_skin->pixmaps[id]) + return; - width = MIN(width, pixmap->width - xsrc); - height = MIN(height, pixmap->height - ysrc); - gdk_pixbuf_copy_area(pixmap->pixbuf, xsrc, ysrc, width, height, - pix, xdest, ydest); + cairo_set_source_surface (cr, active_skin->pixmaps[id], xdest - xsrc, + ydest - ysrc); + cairo_rectangle (cr, xdest, ydest, width, height); + cairo_fill (cr); } -void -skin_get_eq_spline_colors(Skin * skin, guint32 colors[19]) +void skin_get_eq_spline_colors (Skin * skin, guint32 colors[19]) { - gint i; - GdkPixbuf *pixbuf; - SkinPixmap *eqmainpm; - guchar* pixels,*p; - guint rowstride, n_channels; - g_return_if_fail(skin != NULL); - - eqmainpm = &skin->pixmaps[SKIN_EQMAIN]; - if (eqmainpm->pixbuf && - eqmainpm->current_width >= 116 && eqmainpm->current_height >= 313) - pixbuf = eqmainpm->pixbuf; - else - return; - - if (!GDK_IS_PIXBUF(pixbuf)) - return; - - pixels = gdk_pixbuf_get_pixels (pixbuf); - rowstride = gdk_pixbuf_get_rowstride (pixbuf); - n_channels = gdk_pixbuf_get_n_channels (pixbuf); - for (i = 0; i < 19; i++) + if (! skin->pixmaps[SKIN_EQMAIN]) { - p = pixels + rowstride * (i + 294) + 115 * n_channels; - colors[i] = (p[0] << 16) | (p[1] << 8) | p[2]; - /* should we really treat the Alpha channel? */ - /*if (n_channels == 4) - colors[i] = (colors[i] << 8) | p[3];*/ + memset (colors, 0, sizeof (guint32) * 19); + return; } -} + for (gint i = 0; i < 19; i ++) + colors[i] = surface_get_pixel (skin->pixmaps[SKIN_EQMAIN], 115, i + 294); +} -static void -skin_draw_playlistwin_frame_top(Skin * skin, GdkPixbuf * pix, - gint width, gint height, gboolean focus) +static void skin_draw_playlistwin_frame_top (cairo_t * cr, gint width, gint + height, gboolean focus) { /* The title bar skin consists of 2 sets of 4 images, 1 set * for focused state and the other for unfocused. The 4 images @@ -1846,15 +1115,13 @@ y = 21; /* left corner */ - skin_draw_pixbuf(NULL, skin, pix, SKIN_PLEDIT, 0, y, 0, 0, 25, 20); + skin_draw_pixbuf (cr, SKIN_PLEDIT, 0, y, 0, 0, 25, 20); /* titlebar title */ - skin_draw_pixbuf(NULL, skin, pix, SKIN_PLEDIT, 26, y, - (width - 100) / 2, 0, 100, 20); + skin_draw_pixbuf (cr, SKIN_PLEDIT, 26, y, (width - 100) / 2, 0, 100, 20); /* titlebar right corner */ - skin_draw_pixbuf(NULL, skin, pix, SKIN_PLEDIT, 153, y, - width - 25, 0, 25, 20); + skin_draw_pixbuf (cr, SKIN_PLEDIT, 153, y, width - 25, 0, 25, 20); /* tile draw the remaining frame */ @@ -1863,27 +1130,25 @@ for (i = 0; i < c / 2; i++) { /* left of title */ - skin_draw_pixbuf(NULL, skin, pix, SKIN_PLEDIT, 127, y, - 25 + i * 25, 0, 25, 20); + skin_draw_pixbuf (cr, SKIN_PLEDIT, 127, y, 25 + i * 25, 0, 25, 20); /* right of title */ - skin_draw_pixbuf(NULL, skin, pix, SKIN_PLEDIT, 127, y, - (width + 100) / 2 + i * 25, 0, 25, 20); + skin_draw_pixbuf (cr, SKIN_PLEDIT, 127, y, (width + 100) / 2 + i * 25, + 0, 25, 20); } if (c & 1) { /* Odd tile count, so one remaining to draw. Here we split * it into two and draw half on either side of the title */ - skin_draw_pixbuf(NULL, skin, pix, SKIN_PLEDIT, 127, y, - ((c / 2) * 25) + 25, 0, 12, 20); - skin_draw_pixbuf(NULL, skin, pix, SKIN_PLEDIT, 127, y, - (width / 2) + ((c / 2) * 25) + 50, 0, 13, 20); + skin_draw_pixbuf (cr, SKIN_PLEDIT, 127, y, ((c / 2) * 25) + 25, 0, 12, + 20); + skin_draw_pixbuf (cr, SKIN_PLEDIT, 127, y, (width / 2) + ((c / 2) * 25) + + 50, 0, 13, 20); } } -static void -skin_draw_playlistwin_frame_bottom(Skin * skin, GdkPixbuf * pix, - gint width, gint height, gboolean focus) +static void skin_draw_playlistwin_frame_bottom (cairo_t * cr, gint width, gint + height, gboolean focus) { /* The bottom frame skin consists of 1 set of 4 images. The 4 * images are: @@ -1899,31 +1164,29 @@ gint i, c; /* bottom left corner (menu buttons) */ - skin_draw_pixbuf(NULL, skin, pix, SKIN_PLEDIT, 0, 72, - 0, height - 38, 125, 38); + skin_draw_pixbuf (cr, SKIN_PLEDIT, 0, 72, 0, height - 38, 125, 38); c = (width - 275) / 25; /* draw visualization window, if width allows */ if (c >= 3) { c -= 3; - skin_draw_pixbuf(NULL, skin, pix, SKIN_PLEDIT, 205, 0, - width - (150 + 75), height - 38, 75, 38); + skin_draw_pixbuf (cr, SKIN_PLEDIT, 205, 0, width - (150 + 75), height - + 38, 75, 38); } /* Bottom right corner (playbuttons etc) */ - skin_draw_pixbuf(NULL, skin, pix, SKIN_PLEDIT, - 126, 72, width - 150, height - 38, 150, 38); + skin_draw_pixbuf (cr, SKIN_PLEDIT, 126, 72, width - 150, height - 38, 150, + 38); /* Tile draw the remaining undrawn portions */ for (i = 0; i < c; i++) - skin_draw_pixbuf(NULL, skin, pix, SKIN_PLEDIT, 179, 0, - 125 + i * 25, height - 38, 25, 38); + skin_draw_pixbuf (cr, SKIN_PLEDIT, 179, 0, 125 + i * 25, height - 38, + 25, 38); } -static void -skin_draw_playlistwin_frame_sides(Skin * skin, GdkPixbuf * pix, - gint width, gint height, gboolean focus) +static void skin_draw_playlistwin_frame_sides (cairo_t * cr, gint width, gint + height, gboolean focus) { /* The side frames consist of 2 tile images. 1 for the left, 1 for * the right. @@ -1936,29 +1199,23 @@ /* frame sides */ for (i = 0; i < (height - (20 + 38)) / 29; i++) { /* left */ - skin_draw_pixbuf(NULL, skin, pix, SKIN_PLEDIT, 0, 42, - 0, 20 + i * 29, 12, 29); + skin_draw_pixbuf (cr, SKIN_PLEDIT, 0, 42, 0, 20 + i * 29, 12, 29); /* right */ - skin_draw_pixbuf(NULL, skin, pix, SKIN_PLEDIT, 32, 42, - width - 19, 20 + i * 29, 19, 29); + skin_draw_pixbuf (cr, SKIN_PLEDIT, 32, 42, width - 19, 20 + i * 29, 19, + 29); } } - -void -skin_draw_playlistwin_frame(Skin * skin, GdkPixbuf * pix, - gint width, gint height, gboolean focus) +void skin_draw_playlistwin_frame (cairo_t * cr, gint width, gint height, + gboolean focus) { - skin_draw_playlistwin_frame_top(skin, pix, width, height, focus); - skin_draw_playlistwin_frame_bottom(skin, pix, width, height, focus); - skin_draw_playlistwin_frame_sides(skin, pix, width, height, focus); + skin_draw_playlistwin_frame_top (cr, width, height, focus); + skin_draw_playlistwin_frame_bottom (cr, width, height, focus); + skin_draw_playlistwin_frame_sides (cr, width, height, focus); } - -void -skin_draw_playlistwin_shaded(Skin * skin, GdkPixbuf * pix, - gint width, gboolean focus) +void skin_draw_playlistwin_shaded (cairo_t * cr, gint width, gboolean focus) { /* The shade mode titlebar skin consists of 4 images: * a) left corner offset (72,42) size (25,14) @@ -1970,22 +1227,18 @@ gint i; /* left corner */ - skin_draw_pixbuf(NULL, skin, pix, SKIN_PLEDIT, 72, 42, 0, 0, 25, 14); + skin_draw_pixbuf (cr, SKIN_PLEDIT, 72, 42, 0, 0, 25, 14); /* bar tile */ for (i = 0; i < (width - 75) / 25; i++) - skin_draw_pixbuf(NULL, skin, pix, SKIN_PLEDIT, 72, 57, - (i * 25) + 25, 0, 25, 14); + skin_draw_pixbuf (cr, SKIN_PLEDIT, 72, 57, (i * 25) + 25, 0, 25, 14); /* right corner */ - skin_draw_pixbuf(NULL, skin, pix, SKIN_PLEDIT, 99, focus ? 42 : 57, - width - 50, 0, 50, 14); + skin_draw_pixbuf (cr, SKIN_PLEDIT, 99, focus ? 42 : 57, width - 50, 0, 50, + 14); } - -void -skin_draw_mainwin_titlebar(Skin * skin, GdkPixbuf * pix, - gboolean shaded, gboolean focus) +void skin_draw_mainwin_titlebar (cairo_t * cr, gboolean shaded, gboolean focus) { /* The titlebar skin consists of 2 sets of 2 images, one for for * shaded and the other for unshaded mode, giving a total of 4. @@ -2013,36 +1266,6 @@ y_offset = 15; } - skin_draw_pixbuf(NULL, skin, pix, SKIN_TITLEBAR, 27, y_offset, - 0, 0, aud_active_skin->properties.mainwin_width, MAINWIN_TITLEBAR_HEIGHT); -} - - -void -skin_set_random_skin(void) -{ - SkinNode *node; - guint32 randval; - - /* Get a random value to select the skin to use */ - randval = g_random_int_range(0, g_list_length(skinlist)); - node = g_list_nth(skinlist, randval)->data; - aud_active_skin_load(node->path); -} - -void ui_skinned_widget_draw_with_coordinates(GtkWidget *widget, GdkPixbuf *obj, gint width, gint height, gint destx, gint desty, gboolean scale) { - g_return_if_fail(widget != NULL); - g_return_if_fail(obj != NULL); - - if (scale) { - GdkPixbuf *image = gdk_pixbuf_scale_simple(obj, width * config.scale_factor, height* config.scale_factor, GDK_INTERP_NEAREST); - gdk_draw_pixbuf(widget->window, NULL, image, 0, 0, destx, desty, width * config.scale_factor , height * config.scale_factor, GDK_RGB_DITHER_NONE, 0, 0); - g_object_unref(image); - } else { - gdk_draw_pixbuf(widget->window, NULL, obj, 0, 0, destx, desty, width, height, GDK_RGB_DITHER_NONE, 0, 0); - } -} - -void ui_skinned_widget_draw(GtkWidget *widget, GdkPixbuf *obj, gint width, gint height, gboolean scale) { - ui_skinned_widget_draw_with_coordinates(widget, obj, width, height, 0, 0, scale); + skin_draw_pixbuf (cr, SKIN_TITLEBAR, 27, y_offset, 0, 0, + active_skin->properties.mainwin_width, MAINWIN_TITLEBAR_HEIGHT); } diff -Nru audacious-plugins-2.4.4/src/skins/ui_skin.h audacious-plugins-3.2/src/skins/ui_skin.h --- audacious-plugins-2.4.4/src/skins/ui_skin.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skin.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,5 @@ /* Audacious - * Copyright (C) 2005-2007 Audacious development team. + * Copyright (C) 2005-2011 Audacious development team. * * BMP - Cross-platform multimedia player * Copyright (C) 2003-2004 BMP development team. @@ -26,12 +26,16 @@ #ifndef SKIN_H #define SKIN_H -#include -#include #include -#define BMP_DEFAULT_SKIN_PATH \ - DATA_DIR G_DIR_SEPARATOR_S "Skins" G_DIR_SEPARATOR_S "Default" +#if GTK_CHECK_VERSION (3, 0, 0) +#define MASK_IS_REGION +#endif + +#define COLOR(r,g,b) (((guint32) (r) << 16) | ((guint32) (g) << 8) | (guint32) (b)) +#define COLOR_R(c) ((gint) (((c) & 0xff0000) >> 16)) +#define COLOR_G(c) ((gint) (((c) & 0xff00) >> 8)) +#define COLOR_B(c) ((gint) ((c) & 0xff)) typedef enum { SKIN_MAIN = 0, @@ -69,177 +73,138 @@ SKIN_COLOR_COUNT } SkinColorId; -typedef struct _SkinProperties { - /* this enables the othertext engine, not it's visibility -nenolod */ - gboolean mainwin_othertext; - - /* Vis properties */ - gint mainwin_vis_x; - gint mainwin_vis_y; - gint mainwin_vis_width; - gboolean mainwin_vis_visible; +typedef struct { + /* Vis properties */ + gint mainwin_vis_x; + gint mainwin_vis_y; + gboolean mainwin_vis_visible; - /* Text properties */ - gint mainwin_text_x; - gint mainwin_text_y; - gint mainwin_text_width; - gboolean mainwin_text_visible; + /* Text properties */ + gint mainwin_text_x; + gint mainwin_text_y; + gint mainwin_text_width; + gboolean mainwin_text_visible; - /* Infobar properties */ - gint mainwin_infobar_x; - gint mainwin_infobar_y; - gboolean mainwin_othertext_visible; + /* Infobar properties */ + gint mainwin_infobar_x; + gint mainwin_infobar_y; + gboolean mainwin_othertext_visible; - gint mainwin_number_0_x; - gint mainwin_number_0_y; + gint mainwin_number_0_x; + gint mainwin_number_0_y; - gint mainwin_number_1_x; - gint mainwin_number_1_y; + gint mainwin_number_1_x; + gint mainwin_number_1_y; - gint mainwin_number_2_x; - gint mainwin_number_2_y; + gint mainwin_number_2_x; + gint mainwin_number_2_y; - gint mainwin_number_3_x; - gint mainwin_number_3_y; + gint mainwin_number_3_x; + gint mainwin_number_3_y; - gint mainwin_number_4_x; - gint mainwin_number_4_y; + gint mainwin_number_4_x; + gint mainwin_number_4_y; - gint mainwin_playstatus_x; - gint mainwin_playstatus_y; + gint mainwin_playstatus_x; + gint mainwin_playstatus_y; - gint mainwin_volume_x; - gint mainwin_volume_y; + gint mainwin_volume_x; + gint mainwin_volume_y; - gint mainwin_balance_x; - gint mainwin_balance_y; + gint mainwin_balance_x; + gint mainwin_balance_y; - gint mainwin_position_x; - gint mainwin_position_y; + gint mainwin_position_x; + gint mainwin_position_y; - gint mainwin_previous_x; - gint mainwin_previous_y; + gint mainwin_previous_x; + gint mainwin_previous_y; - gint mainwin_play_x; - gint mainwin_play_y; + gint mainwin_play_x; + gint mainwin_play_y; - gint mainwin_pause_x; - gint mainwin_pause_y; + gint mainwin_pause_x; + gint mainwin_pause_y; - gint mainwin_stop_x; - gint mainwin_stop_y; + gint mainwin_stop_x; + gint mainwin_stop_y; - gint mainwin_next_x; - gint mainwin_next_y; + gint mainwin_next_x; + gint mainwin_next_y; - gint mainwin_eject_x; - gint mainwin_eject_y; + gint mainwin_eject_x; + gint mainwin_eject_y; - gint mainwin_eqbutton_x; - gint mainwin_eqbutton_y; + gint mainwin_eqbutton_x; + gint mainwin_eqbutton_y; - gint mainwin_plbutton_x; - gint mainwin_plbutton_y; + gint mainwin_plbutton_x; + gint mainwin_plbutton_y; - gint mainwin_shuffle_x; - gint mainwin_shuffle_y; + gint mainwin_shuffle_x; + gint mainwin_shuffle_y; - gint mainwin_repeat_x; - gint mainwin_repeat_y; + gint mainwin_repeat_x; + gint mainwin_repeat_y; - gint mainwin_about_x; - gint mainwin_about_y; + gint mainwin_about_x; + gint mainwin_about_y; - gint mainwin_minimize_x; - gint mainwin_minimize_y; + gint mainwin_minimize_x; + gint mainwin_minimize_y; - gint mainwin_shade_x; - gint mainwin_shade_y; + gint mainwin_shade_x; + gint mainwin_shade_y; - gint mainwin_close_x; - gint mainwin_close_y; + gint mainwin_close_x; + gint mainwin_close_y; - gint mainwin_width; - gint mainwin_height; + gint mainwin_width; + gint mainwin_height; - gboolean mainwin_menurow_visible; - gboolean mainwin_othertext_is_status; + gboolean mainwin_menurow_visible; + gboolean mainwin_streaminfo_visible; + gboolean mainwin_othertext_is_status; - gint textbox_bitmap_font_width; - gint textbox_bitmap_font_height; + gint textbox_bitmap_font_width; + gint textbox_bitmap_font_height; } SkinProperties; -#define SKIN_PIXMAP(x) ((SkinPixmap *)(x)) -typedef struct _SkinPixmap { - GdkPixbuf *pixbuf; - - /* The real size of the pixmap */ - gint width, height; - - /* The size of the pixmap from the current skin, - which might be smaller */ - gint current_width, current_height; -} SkinPixmap; - - -#define SKIN(x) ((Skin *)(x)) -typedef struct _Skin { - GMutex *lock; +typedef struct { gchar *path; - gchar *def_path; - SkinPixmap pixmaps[SKIN_PIXMAP_COUNT]; - GdkColor textbg[6], def_textbg[6]; - GdkColor textfg[6], def_textfg[6]; - GdkColor *colors[SKIN_COLOR_COUNT]; - guchar vis_color[24][3]; - GdkBitmap *masks[SKIN_MASK_COUNT]; - GdkBitmap *scaled_masks[SKIN_MASK_COUNT]; + cairo_surface_t * pixmaps[SKIN_PIXMAP_COUNT]; + guint32 colors[SKIN_COLOR_COUNT]; + guint32 vis_colors[24]; +#ifdef MASK_IS_REGION + cairo_region_t * masks[SKIN_MASK_COUNT]; +#else + GdkBitmap * masks[SKIN_MASK_COUNT]; +#endif SkinProperties properties; } Skin; -extern Skin *aud_active_skin; +extern Skin * active_skin; gboolean init_skins(const gchar * path); void cleanup_skins(void); -gboolean aud_active_skin_load(const gchar * path); -gboolean aud_active_skin_reload(void); +gboolean active_skin_load(const gchar * path); -Skin *skin_new(void); -gboolean skin_load(Skin * skin, const gchar * path); -gboolean skin_reload_forced(void); -void skin_reload(Skin * skin); -void skin_free(Skin * skin); -void skin_destroy(Skin * skin); - -GdkBitmap *skin_get_mask(Skin * skin, SkinMaskId mi); -GdkColor *skin_get_color(Skin * skin, SkinColorId color_id); - -void skin_get_viscolor(Skin * skin, guchar vis_color[24][3]); -gint skin_get_id(void); -void skin_draw_pixbuf(GtkWidget *widget, Skin * skin, GdkPixbuf * pix, - SkinPixmapId pixmap_id, - gint xsrc, gint ysrc, gint xdest, gint ydest, - gint width, gint height); +void skin_draw_pixbuf (cairo_t * cr, SkinPixmapId id, gint xsrc, gint ysrc, + gint xdest, gint ydest, gint width, gint height); void skin_get_eq_spline_colors(Skin * skin, guint32 colors[19]); void skin_install_skin(const gchar * path); -void skin_draw_playlistwin_shaded(Skin * skin, GdkPixbuf * pix, - gint width, gboolean focus); -void skin_draw_playlistwin_frame(Skin * skin, GdkPixbuf * pix, - gint width, gint height, gboolean focus); - -void skin_draw_mainwin_titlebar(Skin * skin, GdkPixbuf * pix, - gboolean shaded, gboolean focus); - - -void skin_parse_hints(Skin * skin, gchar *path_p); - - -void skin_set_random_skin(void); - -void ui_skinned_widget_draw_with_coordinates(GtkWidget *widget, GdkPixbuf *obj, gint width, gint height, gint destx, gint desty, gboolean scale); -void ui_skinned_widget_draw(GtkWidget *widget, GdkPixbuf *obj, gint width, gint height, gboolean scale); +void skin_draw_playlistwin_shaded (cairo_t * cr, gint width, gboolean focus); +void skin_draw_playlistwin_frame (cairo_t * cr, gint width, gint height, + gboolean focus); +void skin_draw_mainwin_titlebar (cairo_t * cr, gboolean shaded, gboolean focus); + +static inline void set_cairo_color (cairo_t * cr, guint32 c) +{ + cairo_set_source_rgb (cr, COLOR_R(c) / 255.0, COLOR_G(c) / 255.0, COLOR_B(c) + / 255.0); +} #endif diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_button.c audacious-plugins-3.2/src/skins/ui_skinned_button.c --- audacious-plugins-2.4.4/src/skins/ui_skinned_button.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_button.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,489 +19,264 @@ * Audacious or using our public API to be a derived work. */ +#include "draw-compat.h" #include "ui_skinned_button.h" -#include "skins_cfg.h" -#include "util.h" -#include +enum {BUTTON_TYPE_NORMAL, BUTTON_TYPE_TOGGLE, BUTTON_TYPE_SMALL}; -#define UI_SKINNED_BUTTON_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), ui_skinned_button_get_type(), UiSkinnedButtonPrivate)) -typedef struct _UiSkinnedButtonPrivate UiSkinnedButtonPrivate; +typedef struct { + gint type; + gint w, h; + gint nx, ny, px, py; + gint pnx, pny, ppx, ppy; + SkinPixmapId si1, si2; + gboolean pressed, rpressed, active; + ButtonCB on_press, on_release, on_rpress, on_rrelease; +} ButtonData; + +DRAW_FUNC_BEGIN (button_draw) + ButtonData * data = g_object_get_data ((GObject *) wid, "buttondata"); + g_return_val_if_fail (data, FALSE); -enum { - PRESSED, - RELEASED, - CLICKED, - DOUBLED, - LAST_SIGNAL -}; - -struct _UiSkinnedButtonPrivate { - //Skinned part - GdkGC *gc; - gint w; - gint h; - SkinPixmapId skin_index1; - SkinPixmapId skin_index2; - gboolean scaled; - gint move_x, move_y; - - gint nx, ny, px, py; - //Toogle button needs also those - gint pnx, pny, ppx, ppy; -}; - - -static GtkWidgetClass *parent_class = NULL; -static void ui_skinned_button_class_init(UiSkinnedButtonClass *klass); -static void ui_skinned_button_init(UiSkinnedButton *button); -static void ui_skinned_button_destroy(GtkObject *object); -static void ui_skinned_button_realize(GtkWidget *widget); -static void ui_skinned_button_unrealize(GtkWidget *widget); -static void ui_skinned_button_map(GtkWidget *widget); -static void ui_skinned_button_unmap(GtkWidget *widget); -static void ui_skinned_button_size_request(GtkWidget *widget, GtkRequisition *requisition); -static gint ui_skinned_button_expose(GtkWidget *widget,GdkEventExpose *event); - -static void ui_skinned_button_size_allocate(GtkWidget *widget, GtkAllocation *allocation); -static void ui_skinned_button_update_state(UiSkinnedButton *button); - -static guint button_signals[LAST_SIGNAL] = { 0 }; -static gint ui_skinned_button_button_press(GtkWidget *widget, GdkEventButton *event); -static gint ui_skinned_button_button_release(GtkWidget *widget, GdkEventButton *event); -static void button_pressed(UiSkinnedButton *button); -static void button_released(UiSkinnedButton *button); -static void ui_skinned_button_pressed(UiSkinnedButton *button); -static void ui_skinned_button_released(UiSkinnedButton *button); -static void ui_skinned_button_clicked(UiSkinnedButton *button); -static void ui_skinned_button_set_pressed (UiSkinnedButton *button, gboolean pressed); - -static void ui_skinned_button_toggle_scaled(UiSkinnedButton *button); - -static gint ui_skinned_button_enter_notify(GtkWidget *widget, GdkEventCrossing *event); -static gint ui_skinned_button_leave_notify(GtkWidget *widget, GdkEventCrossing *event); - -GType ui_skinned_button_get_type() { - static GType button_type = 0; - if (!button_type) { - static const GTypeInfo button_info = { - sizeof (UiSkinnedButtonClass), - NULL, - NULL, - (GClassInitFunc) ui_skinned_button_class_init, - NULL, - NULL, - sizeof (UiSkinnedButton), - 0, - (GInstanceInitFunc) ui_skinned_button_init, - }; - button_type = g_type_register_static (GTK_TYPE_WIDGET, "UiSkinnedButton", &button_info, 0); + switch (data->type) + { + case BUTTON_TYPE_NORMAL: + if (data->pressed) + skin_draw_pixbuf (cr, data->si2, data->px, data->py, 0, 0, data->w, data->h); + else + skin_draw_pixbuf (cr, data->si1, data->nx, data->ny, 0, 0, data->w, data->h); + break; + case BUTTON_TYPE_TOGGLE: + if (data->active) + { + if (data->pressed) + skin_draw_pixbuf (cr, data->si2, data->ppx, data->ppy, 0, 0, data->w, data->h); + else + skin_draw_pixbuf (cr, data->si1, data->pnx, data->pny, 0, 0, data->w, data->h); + } + else + { + if (data->pressed) + skin_draw_pixbuf (cr, data->si2, data->px, data->py, 0, 0, data->w, data->h); + else + skin_draw_pixbuf (cr, data->si1, data->nx, data->ny, 0, 0, data->w, data->h); + } + break; } +DRAW_FUNC_END - return button_type; -} - -static void ui_skinned_button_class_init (UiSkinnedButtonClass *klass) { - GObjectClass *gobject_class; - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - gobject_class = G_OBJECT_CLASS(klass); - object_class = (GtkObjectClass*) klass; - widget_class = (GtkWidgetClass*) klass; - parent_class = g_type_class_peek_parent(klass); - - object_class->destroy = ui_skinned_button_destroy; - - widget_class->realize = ui_skinned_button_realize; - widget_class->unrealize = ui_skinned_button_unrealize; - widget_class->map = ui_skinned_button_map; - widget_class->unmap = ui_skinned_button_unmap; - widget_class->expose_event = ui_skinned_button_expose; - widget_class->size_request = ui_skinned_button_size_request; - widget_class->size_allocate = ui_skinned_button_size_allocate; - widget_class->button_press_event = ui_skinned_button_button_press; - widget_class->button_release_event = ui_skinned_button_button_release; - widget_class->enter_notify_event = ui_skinned_button_enter_notify; - widget_class->leave_notify_event = ui_skinned_button_leave_notify; - - klass->pressed = button_pressed; - klass->released = button_released; - klass->clicked = NULL; - klass->scaled = ui_skinned_button_toggle_scaled; - - button_signals[PRESSED] = - g_signal_new ("pressed", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (UiSkinnedButtonClass, pressed), NULL, NULL, - g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - - button_signals[RELEASED] = - g_signal_new ("released", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (UiSkinnedButtonClass, released), NULL, NULL, - g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - - button_signals[CLICKED] = - g_signal_new ("clicked", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSkinnedButtonClass, clicked), NULL, NULL, - g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - - button_signals[DOUBLED] = - g_signal_new ("toggle-scaled", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSkinnedButtonClass, scaled), NULL, NULL, - g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - - g_type_class_add_private (gobject_class, sizeof (UiSkinnedButtonPrivate)); -} - -static void ui_skinned_button_init (UiSkinnedButton *button) { - UiSkinnedButtonPrivate *priv = UI_SKINNED_BUTTON_GET_PRIVATE (button); - button->inside = FALSE; - button->type = TYPE_NOT_SET; - priv->move_x = 0; - priv->move_y = 0; - button->event_window = NULL; - - GTK_WIDGET_SET_FLAGS (button, GTK_NO_WINDOW); -} - -static void ui_skinned_button_destroy (GtkObject *object) { - UiSkinnedButton *button; - - g_return_if_fail (object != NULL); - g_return_if_fail (UI_SKINNED_IS_BUTTON (object)); - - button = UI_SKINNED_BUTTON(object); - - if (GTK_OBJECT_CLASS (parent_class)->destroy) - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); -} - -static void ui_skinned_button_realize (GtkWidget *widget) { - g_return_if_fail (widget != NULL); - g_return_if_fail (UI_SKINNED_IS_BUTTON(widget)); - - if (GTK_WIDGET_CLASS (parent_class)->realize) - (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); - - UiSkinnedButton *button = UI_SKINNED_BUTTON (widget); - GdkWindowAttr attributes; - gint attributes_mask; - - attributes.x = widget->allocation.x; - attributes.y = widget->allocation.y; - attributes.width = widget->allocation.width; - attributes.height = widget->allocation.height; - attributes.wclass = GDK_INPUT_ONLY; - attributes.window_type = GDK_WINDOW_CHILD; - attributes.event_mask = gtk_widget_get_events(widget); - attributes.event_mask |= GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK; - - attributes.wclass = GDK_INPUT_ONLY; - attributes_mask = GDK_WA_X | GDK_WA_Y; - button->event_window = gdk_window_new (widget->window, &attributes, attributes_mask); - - gdk_window_set_user_data(button->event_window, widget); -} - -static void ui_skinned_button_unrealize (GtkWidget *widget) { - UiSkinnedButton *button = UI_SKINNED_BUTTON (widget); +static gboolean button_press (GtkWidget * button, GdkEventButton * event) +{ + ButtonData * data = g_object_get_data ((GObject *) button, "buttondata"); + g_return_val_if_fail (data, FALSE); - if ( button->event_window != NULL ) + /* pass events through to the parent widget only if neither the press nor + * release signals are connected; sending one and not the other causes + * problems (in particular with dragging windows around) */ + if (event->button == 1 && (data->on_press || data->on_release)) { - gdk_window_set_user_data( button->event_window , NULL ); - gdk_window_destroy( button->event_window ); - button->event_window = NULL; + data->pressed = TRUE; + if (data->on_press) + data->on_press (button, event); } + else if (event->button == 3 && (data->on_rpress || data->on_rrelease)) + { + data->rpressed = TRUE; + if (data->on_rpress) + data->on_rpress (button, event); + } + else + return FALSE; - if (GTK_WIDGET_CLASS (parent_class)->unrealize) - (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); -} - -static void ui_skinned_button_map (GtkWidget *widget) -{ - UiSkinnedButton *button = UI_SKINNED_BUTTON (widget); - - if (button->event_window != NULL) - gdk_window_show (button->event_window); + if (data->type != BUTTON_TYPE_SMALL) + gtk_widget_queue_draw (button); - if (GTK_WIDGET_CLASS (parent_class)->map) - (* GTK_WIDGET_CLASS (parent_class)->map) (widget); + return TRUE; } -static void ui_skinned_button_unmap (GtkWidget *widget) +static gboolean button_release (GtkWidget * button, GdkEventButton * event) { - UiSkinnedButton *button = UI_SKINNED_BUTTON (widget); - - if (button->event_window != NULL) - gdk_window_hide (button->event_window); - - if (GTK_WIDGET_CLASS (parent_class)->unmap) - (* GTK_WIDGET_CLASS (parent_class)->unmap) (widget); -} - -static void ui_skinned_button_size_request(GtkWidget *widget, GtkRequisition *requisition) { - UiSkinnedButtonPrivate *priv = UI_SKINNED_BUTTON_GET_PRIVATE(widget); - requisition->width = priv->w*(priv->scaled ? config.scale_factor : 1); - requisition->height = priv->h*(priv->scaled ? config.scale_factor : 1); -} - -static void ui_skinned_button_size_allocate(GtkWidget *widget, GtkAllocation *allocation) { - UiSkinnedButton *button = UI_SKINNED_BUTTON (widget); - UiSkinnedButtonPrivate *priv = UI_SKINNED_BUTTON_GET_PRIVATE (button); - widget->allocation = *allocation; - widget->allocation.x = ceil(widget->allocation.x*(priv->scaled ? config.scale_factor : 1)); - widget->allocation.y = ceil(widget->allocation.y*(priv->scaled ? config.scale_factor : 1)); + ButtonData * data = g_object_get_data ((GObject *) button, "buttondata"); + g_return_val_if_fail (data, FALSE); - if (GTK_WIDGET_REALIZED (widget)) + if (event->button == 1 && (data->on_press || data->on_release)) { - if ( button->event_window != NULL ) - gdk_window_move_resize(button->event_window, ceil(allocation->x*(priv->scaled ? config.scale_factor : 1)), ceil(allocation->y*(priv->scaled ? config.scale_factor : 1)), allocation->width, allocation->height); - else - gdk_window_move_resize(widget->window, ceil(allocation->x*(priv->scaled ? config.scale_factor : 1)), ceil(allocation->y*(priv->scaled ? config.scale_factor : 1)), allocation->width, allocation->height); - } + if (! data->pressed) + return TRUE; - if (button->x + priv->move_x == ceil(widget->allocation.x/(priv->scaled ? config.scale_factor : 1))) - priv->move_x = 0; - if (button->y + priv->move_y == ceil(widget->allocation.y/(priv->scaled ? config.scale_factor : 1))) - priv->move_y = 0; - - button->x = ceil(widget->allocation.x/(priv->scaled ? config.scale_factor : 1)); - button->y = ceil(widget->allocation.y/(priv->scaled ? config.scale_factor : 1)); -} - -static gboolean ui_skinned_button_expose(GtkWidget *widget, GdkEventExpose *event) { - UiSkinnedButton *button = UI_SKINNED_BUTTON (widget); - UiSkinnedButtonPrivate *priv = UI_SKINNED_BUTTON_GET_PRIVATE (button); - g_return_val_if_fail (priv->w > 0 && priv->h > 0, FALSE); - - //TYPE_SMALL doesn't have its own face - if (button->type == TYPE_SMALL || button->type == TYPE_NOT_SET) - return FALSE; + data->pressed = FALSE; + if (data->type == BUTTON_TYPE_TOGGLE) + data->active = ! data->active; + if (data->on_release) + data->on_release (button, event); + } + else if (event->button == 3 && (data->on_rpress || data->on_rrelease)) + { + if (! data->rpressed) + return TRUE; - GdkPixbuf *obj; - obj = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, priv->w, priv->h); - gdk_pixbuf_fill(obj, 0x00000000); /* fill with alpha */ - - switch (button->type) { - case TYPE_PUSH: - skin_draw_pixbuf(widget, aud_active_skin, obj, - button->pressed ? priv->skin_index2 : priv->skin_index1, - button->pressed ? priv->px : priv->nx, - button->pressed ? priv->py : priv->ny, - 0, 0, priv->w, priv->h); - break; - case TYPE_TOGGLE: - if (button->inside) - skin_draw_pixbuf(widget, aud_active_skin, obj, - button->pressed ? priv->skin_index2 : priv->skin_index1, - button->pressed ? priv->ppx : priv->pnx, - button->pressed ? priv->ppy : priv->pny, - 0, 0, priv->w, priv->h); - else - skin_draw_pixbuf(widget, aud_active_skin, obj, - button->pressed ? priv->skin_index2 : priv->skin_index1, - button->pressed ? priv->px : priv->nx, - button->pressed ? priv->py : priv->ny, - 0, 0, priv->w, priv->h); - break; - default: - break; + data->rpressed = FALSE; + if (data->on_rrelease) + data->on_rrelease (button, event); } + else + return FALSE; - ui_skinned_widget_draw_with_coordinates(widget, obj, priv->w, priv->h, - widget->allocation.x, - widget->allocation.y, - priv->scaled); - g_object_unref(obj); + if (data->type != BUTTON_TYPE_SMALL) + gtk_widget_queue_draw (button); - return FALSE; + return TRUE; } -GtkWidget* ui_skinned_button_new () { - UiSkinnedButton *button = g_object_new (ui_skinned_button_get_type (), NULL); - - return GTK_WIDGET(button); -} +static gboolean leave_notify (GtkWidget * button, GdkEventCrossing * event) +{ + ButtonData * data = g_object_get_data ((GObject *) button, "buttondata"); + g_return_val_if_fail (data, FALSE); -void ui_skinned_push_button_setup(GtkWidget *button, GtkWidget *fixed, gint x, gint y, gint w, gint h, gint nx, gint ny, gint px, gint py, SkinPixmapId si) { + if (data->pressed || data->rpressed) + { + data->pressed = FALSE; + data->rpressed = FALSE; - UiSkinnedButton *sbutton = UI_SKINNED_BUTTON(button); - UiSkinnedButtonPrivate *priv = UI_SKINNED_BUTTON_GET_PRIVATE(sbutton); - priv->w = w; - priv->h = h; - sbutton->x = x; - sbutton->y = y; - priv->nx = nx; - priv->ny = ny; - priv->px = px; - priv->py = py; - sbutton->type = TYPE_PUSH; - priv->skin_index1 = si; - priv->skin_index2 = si; - priv->scaled = FALSE; + if (data->type != BUTTON_TYPE_SMALL) + gtk_widget_queue_draw (button); + } - gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(button), sbutton->x, sbutton->y); + return TRUE; } -void ui_skinned_toggle_button_setup(GtkWidget *button, GtkWidget *fixed, gint x, gint y, gint w, gint h, gint nx, gint ny, gint px, gint py, gint pnx, gint pny, gint ppx, gint ppy, SkinPixmapId si) { - - UiSkinnedButton *sbutton = UI_SKINNED_BUTTON(button); - UiSkinnedButtonPrivate *priv = UI_SKINNED_BUTTON_GET_PRIVATE(sbutton); - priv->w = w; - priv->h = h; - sbutton->x = x; - sbutton->y = y; - priv->nx = nx; - priv->ny = ny; - priv->px = px; - priv->py = py; - priv->pnx = pnx; - priv->pny = pny; - priv->ppx = ppx; - priv->ppy = ppy; - sbutton->type = TYPE_TOGGLE; - priv->skin_index1 = si; - priv->skin_index2 = si; - priv->scaled = FALSE; - - gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(button), sbutton->x, sbutton->y); +static void button_destroy (GtkWidget * button) +{ + g_free (g_object_get_data ((GObject *) button, "buttondata")); } -void ui_skinned_small_button_setup(GtkWidget *button, GtkWidget *fixed, gint x, gint y, gint w, gint h) { - - UiSkinnedButton *sbutton = UI_SKINNED_BUTTON(button); - UiSkinnedButtonPrivate *priv = UI_SKINNED_BUTTON_GET_PRIVATE(sbutton); - priv->w = w; - priv->h = h; - sbutton->x = x; - sbutton->y = y; - sbutton->type = TYPE_SMALL; - priv->scaled = FALSE; - - gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(button), sbutton->x, sbutton->y); -} +static GtkWidget * button_new_base (gint type, gint w, gint h) +{ + GtkWidget * button; -static void button_pressed(UiSkinnedButton *button) { - button->button_down = TRUE; - ui_skinned_button_update_state(button); -} + if (type == BUTTON_TYPE_SMALL) + { + button = gtk_event_box_new (); + gtk_event_box_set_visible_window ((GtkEventBox *) button, FALSE); + } + else + button = gtk_drawing_area_new (); -static void button_released(UiSkinnedButton *button) { - if(button->hover && button->button_down) ui_skinned_button_clicked(button); - button->button_down = FALSE; - ui_skinned_button_update_state(button); -} + gtk_widget_set_size_request (button, w, h); + gtk_widget_add_events (button, GDK_BUTTON_PRESS_MASK | + GDK_BUTTON_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK); + + if (type != BUTTON_TYPE_SMALL) + DRAW_CONNECT (button, button_draw); + + g_signal_connect (button, "button-press-event", (GCallback) button_press, + NULL); + g_signal_connect (button, "button-release-event", (GCallback) + button_release, NULL); + g_signal_connect (button, "leave-notify-event", (GCallback) leave_notify, + NULL); + g_signal_connect (button, "destroy", (GCallback) button_destroy, NULL); + + ButtonData * data = g_malloc0 (sizeof (ButtonData)); + data->type = type; + data->w = w; + data->h = h; + g_object_set_data ((GObject *) button, "buttondata", data); -static void ui_skinned_button_update_state(UiSkinnedButton *button) { - ui_skinned_button_set_pressed(button, button->button_down); + return button; } -static void ui_skinned_button_set_pressed (UiSkinnedButton *button, gboolean pressed) { - if (pressed == button->pressed) - return; - - button->pressed = pressed; +GtkWidget * button_new (gint w, gint h, gint nx, gint ny, gint px, gint py, + SkinPixmapId si1, SkinPixmapId si2) +{ + GtkWidget * button = button_new_base (BUTTON_TYPE_NORMAL, w, h); + ButtonData * data = g_object_get_data ((GObject *) button, "buttondata"); + g_return_val_if_fail (data, NULL); + + data->nx = nx; + data->ny = ny; + data->px = px; + data->py = py; + data->si1 = si1; + data->si2 = si2; - if (widget_really_drawable ((GtkWidget *) button)) - ui_skinned_button_expose ((GtkWidget *) button, 0); + return button; } -static gboolean ui_skinned_button_button_press(GtkWidget *widget, GdkEventButton *event) { - UiSkinnedButton * button = (UiSkinnedButton *) widget; - UiSkinnedButtonPrivate * priv = UI_SKINNED_BUTTON_GET_PRIVATE (button); - gint scale = priv->scaled ? config.scale_factor : 1; - - if (event->type == GDK_BUTTON_PRESS) { - if (event->button == 1) - ui_skinned_button_pressed (button); - else if (event->button == 3) { - event->x = event->x + button->x * scale; - event->y = event->y + button->y * scale; - return FALSE; - } - } - - return TRUE; -} +GtkWidget * button_new_toggle (gint w, gint h, gint nx, gint ny, gint px, gint + py, gint pnx, gint pny, gint ppx, gint ppy, SkinPixmapId si1, SkinPixmapId si2) +{ + GtkWidget * button = button_new_base (BUTTON_TYPE_TOGGLE, w, h); + ButtonData * data = g_object_get_data ((GObject *) button, "buttondata"); + g_return_val_if_fail (data, NULL); + + data->nx = nx; + data->ny = ny; + data->px = px; + data->py = py; + data->pnx = pnx; + data->pny = pny; + data->ppx = ppx; + data->ppy = ppy; + data->si1 = si1; + data->si2 = si2; -static gboolean ui_skinned_button_button_release(GtkWidget *widget, GdkEventButton *event) { - UiSkinnedButton *button; - if (event->button == 1) { - button = UI_SKINNED_BUTTON(widget); - ui_skinned_button_released(button); - } - return TRUE; + return button; } -static void ui_skinned_button_pressed(UiSkinnedButton *button) { - g_return_if_fail(UI_SKINNED_IS_BUTTON(button)); - g_signal_emit(button, button_signals[PRESSED], 0); +GtkWidget * button_new_small (gint w, gint h) +{ + return button_new_base (BUTTON_TYPE_SMALL, w, h); } -static void ui_skinned_button_released(UiSkinnedButton *button) { - g_return_if_fail(UI_SKINNED_IS_BUTTON(button)); - g_signal_emit(button, button_signals[RELEASED], 0); -} +void button_on_press (GtkWidget * button, ButtonCB callback) +{ + ButtonData * data = g_object_get_data ((GObject *) button, "buttondata"); + g_return_if_fail (data); -static void ui_skinned_button_clicked(UiSkinnedButton *button) { - g_return_if_fail(UI_SKINNED_IS_BUTTON(button)); - button->inside = !button->inside; - g_signal_emit(button, button_signals[CLICKED], 0); + data->on_press = callback; } -static gboolean ui_skinned_button_enter_notify(GtkWidget *widget, GdkEventCrossing *event) { - UiSkinnedButton *button; - - button = UI_SKINNED_BUTTON(widget); - button->hover = TRUE; - if(button->button_down) ui_skinned_button_set_pressed(button, TRUE); +void button_on_release (GtkWidget * button, ButtonCB callback) +{ + ButtonData * data = g_object_get_data ((GObject *) button, "buttondata"); + g_return_if_fail (data); - return FALSE; + data->on_release = callback; } -static gboolean ui_skinned_button_leave_notify(GtkWidget *widget, GdkEventCrossing *event) { - UiSkinnedButton *button; - - button = UI_SKINNED_BUTTON (widget); - button->hover = FALSE; - if(button->button_down) ui_skinned_button_set_pressed(button, FALSE); +void button_on_rpress (GtkWidget * button, ButtonCB callback) +{ + ButtonData * data = g_object_get_data ((GObject *) button, "buttondata"); + g_return_if_fail (data); - return FALSE; + data->on_rpress = callback; } -static void ui_skinned_button_toggle_scaled(UiSkinnedButton *button) { - GtkWidget *widget = GTK_WIDGET (button); - UiSkinnedButtonPrivate *priv = UI_SKINNED_BUTTON_GET_PRIVATE (button); - priv->scaled = !priv->scaled; - - gtk_widget_set_size_request(widget, priv->w*(priv->scaled ? config.scale_factor : 1), priv->h*(priv->scaled ? config.scale_factor : 1)); +void button_on_rrelease (GtkWidget * button, ButtonCB callback) +{ + ButtonData * data = g_object_get_data ((GObject *) button, "buttondata"); + g_return_if_fail (data); - if (widget_really_drawable (widget)) - ui_skinned_button_expose (widget, 0); + data->on_rrelease = callback; } -void ui_skinned_button_set_skin_index2(GtkWidget *button, SkinPixmapId si) { - UiSkinnedButtonPrivate *priv = UI_SKINNED_BUTTON_GET_PRIVATE (button); - priv->skin_index2 = si; -} +gboolean button_get_active (GtkWidget * button) +{ + ButtonData * data = g_object_get_data ((GObject *) button, "buttondata"); + g_return_val_if_fail (data && data->type == BUTTON_TYPE_TOGGLE, FALSE); -void ui_skinned_button_move_relative(GtkWidget *widget, gint x, gint y) { - UiSkinnedButton *button = UI_SKINNED_BUTTON(widget); - UiSkinnedButtonPrivate *priv = UI_SKINNED_BUTTON_GET_PRIVATE(widget); - priv->move_x += x; - priv->move_y += y; - gtk_fixed_move(GTK_FIXED(gtk_widget_get_parent(widget)), widget, - button->x+priv->move_x, button->y+priv->move_y); + return data->active; } -void ui_skinned_button_set_inside(GtkWidget *widget, gboolean inside) { - UiSkinnedButton * button = (UiSkinnedButton *) widget; +void button_set_active (GtkWidget * button, gboolean active) +{ + ButtonData * data = g_object_get_data ((GObject *) button, "buttondata"); + g_return_if_fail (data && data->type == BUTTON_TYPE_TOGGLE); - if (inside == button->inside) + if (data->active == active) return; - button->inside = inside; - - if (widget_really_drawable ((GtkWidget *) button)) - ui_skinned_button_expose ((GtkWidget *) button, 0); + data->active = active; + gtk_widget_queue_draw (button); } diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_button.h audacious-plugins-3.2/src/skins/ui_skinned_button.h --- audacious-plugins-2.4.4/src/skins/ui_skinned_button.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_button.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,54 +19,28 @@ * Audacious or using our public API to be a derived work. */ -#ifndef AUDACIOUS_UI_SKINNED_BUTTON_H -#define AUDACIOUS_UI_SKINNED_BUTTON_H +#ifndef SKINS_UI_SKINNED_BUTTON_H +#define SKINS_UI_SKINNED_BUTTON_H #include + #include "ui_skin.h" -#define UI_SKINNED_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ui_skinned_button_get_type(), UiSkinnedButton)) -#define UI_SKINNED_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ui_skinned_button_get_type(), UiSkinnedButtonClass)) -#define UI_SKINNED_IS_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ui_skinned_button_get_type())) - -typedef struct _UiSkinnedButton UiSkinnedButton; -typedef struct _UiSkinnedButtonClass UiSkinnedButtonClass; - -enum { - TYPE_NOT_SET, - TYPE_PUSH, - TYPE_TOGGLE, - TYPE_SMALL -}; - -struct _UiSkinnedButton { - GtkWidget widget; - - GdkWindow *event_window; - gboolean button_down; - gboolean pressed; - gboolean hover; - gboolean inside; - gint type; - gint x, y; -}; - -struct _UiSkinnedButtonClass { - GtkWidgetClass parent_class; - void (* pressed) (UiSkinnedButton *button); - void (* released) (UiSkinnedButton *button); - void (* clicked) (UiSkinnedButton *button); - void (* right_clicked) (UiSkinnedButton *button); - void (* scaled) (UiSkinnedButton *button); -}; - -GType ui_skinned_button_get_type(void) G_GNUC_CONST; -GtkWidget* ui_skinned_button_new(); -void ui_skinned_push_button_setup(GtkWidget *button, GtkWidget *fixed, gint x, gint y, gint w, gint h, gint nx, gint ny, gint px, gint py, SkinPixmapId si); -void ui_skinned_toggle_button_setup(GtkWidget *button, GtkWidget *fixed, gint x, gint y, gint w, gint h, gint nx, gint ny, gint px, gint py, gint pnx, gint pny, gint ppx, gint ppy, SkinPixmapId si); -void ui_skinned_small_button_setup(GtkWidget *button, GtkWidget *fixed, gint x, gint y, gint w, gint h); -void ui_skinned_button_set_skin_index2(GtkWidget *button, SkinPixmapId si); -void ui_skinned_button_move_relative(GtkWidget *button, gint x, gint y); -void ui_skinned_button_set_inside(GtkWidget *widget, gboolean inside); +typedef void (* ButtonCB) (GtkWidget * button, GdkEventButton * event); + +GtkWidget * button_new (gint w, gint h, gint nx, gint ny, gint px, + gint py, SkinPixmapId si1, SkinPixmapId si2); +GtkWidget * button_new_toggle (gint w, gint h, gint nx, gint ny, + gint px, gint py, gint pnx, gint pny, gint ppx, gint ppy, SkinPixmapId si1, + SkinPixmapId si2); +GtkWidget * button_new_small (gint w, gint h); + +void button_on_press (GtkWidget * button, ButtonCB callback); +void button_on_release (GtkWidget * button, ButtonCB callback); +void button_on_rpress (GtkWidget * button, ButtonCB callback); +void button_on_rrelease (GtkWidget * button, ButtonCB callback); + +gboolean button_get_active (GtkWidget * button); +void button_set_active (GtkWidget * button, gboolean active); -#endif /* AUDACIOUS_UI_SKINNED_BUTTON_H */ +#endif diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_equalizer_graph.c audacious-plugins-3.2/src/skins/ui_skinned_equalizer_graph.c --- audacious-plugins-2.4.4/src/skins/ui_skinned_equalizer_graph.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_equalizer_graph.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -21,149 +22,28 @@ * along with this program; If not, see . */ +#include + +#include "draw-compat.h" #include "ui_skin.h" #include "ui_skinned_equalizer_graph.h" -#include "skins_cfg.h" -#include "util.h" - -#include - -#define UI_TYPE_SKINNED_EQUALIZER_GRAPH (ui_skinned_equalizer_graph_get_type()) - -enum { - DOUBLED, - LAST_SIGNAL -}; - -static void ui_skinned_equalizer_graph_class_init (UiSkinnedEqualizerGraphClass *klass); -static void ui_skinned_equalizer_graph_init (UiSkinnedEqualizerGraph *equalizer_graph); -static void ui_skinned_equalizer_graph_destroy (GtkObject *object); -static void ui_skinned_equalizer_graph_realize (GtkWidget *widget); -static void ui_skinned_equalizer_graph_size_request (GtkWidget *widget, GtkRequisition *requisition); -static void ui_skinned_equalizer_graph_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -static gboolean ui_skinned_equalizer_graph_expose (GtkWidget *widget, GdkEventExpose *event); -static void ui_skinned_equalizer_graph_toggle_scaled (UiSkinnedEqualizerGraph *equalizer_graph); - -static GtkWidgetClass *parent_class = NULL; -static guint equalizer_graph_signals[LAST_SIGNAL] = { 0 }; - -GType ui_skinned_equalizer_graph_get_type() { - static GType equalizer_graph_type = 0; - if (!equalizer_graph_type) { - static const GTypeInfo equalizer_graph_info = { - sizeof (UiSkinnedEqualizerGraphClass), - NULL, - NULL, - (GClassInitFunc) ui_skinned_equalizer_graph_class_init, - NULL, - NULL, - sizeof (UiSkinnedEqualizerGraph), - 0, - (GInstanceInitFunc) ui_skinned_equalizer_graph_init, - }; - equalizer_graph_type = g_type_register_static (GTK_TYPE_WIDGET, "UiSkinnedEqualizerGraph", &equalizer_graph_info, 0); - } - - return equalizer_graph_type; -} - -static void ui_skinned_equalizer_graph_class_init(UiSkinnedEqualizerGraphClass *klass) { - GObjectClass *gobject_class; - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - gobject_class = G_OBJECT_CLASS(klass); - object_class = (GtkObjectClass*) klass; - widget_class = (GtkWidgetClass*) klass; - parent_class = g_type_class_peek_parent(klass); - - object_class->destroy = ui_skinned_equalizer_graph_destroy; - - widget_class->realize = ui_skinned_equalizer_graph_realize; - widget_class->expose_event = ui_skinned_equalizer_graph_expose; - widget_class->size_request = ui_skinned_equalizer_graph_size_request; - widget_class->size_allocate = ui_skinned_equalizer_graph_size_allocate; - - klass->scaled = ui_skinned_equalizer_graph_toggle_scaled; - - equalizer_graph_signals[DOUBLED] = - g_signal_new ("toggle-scaled", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSkinnedEqualizerGraphClass, scaled), NULL, NULL, - g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); -} - -static void ui_skinned_equalizer_graph_init(UiSkinnedEqualizerGraph *equalizer_graph) { - equalizer_graph->width = 113; - equalizer_graph->height = 19; - - GTK_WIDGET_SET_FLAGS(equalizer_graph, GTK_NO_WINDOW); -} - -GtkWidget* ui_skinned_equalizer_graph_new(GtkWidget *fixed, gint x, gint y) { - UiSkinnedEqualizerGraph *equalizer_graph = g_object_new (ui_skinned_equalizer_graph_get_type (), NULL); - equalizer_graph->x = x; - equalizer_graph->y = y; - equalizer_graph->skin_index = SKIN_EQMAIN; - equalizer_graph->scaled = FALSE; - - gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(equalizer_graph), equalizer_graph->x, equalizer_graph->y); - - return GTK_WIDGET(equalizer_graph); -} - -static void ui_skinned_equalizer_graph_destroy(GtkObject *object) { - UiSkinnedEqualizerGraph *equalizer_graph; - - g_return_if_fail (object != NULL); - g_return_if_fail (UI_SKINNED_IS_EQUALIZER_GRAPH (object)); - - equalizer_graph = UI_SKINNED_EQUALIZER_GRAPH (object); - - if (GTK_OBJECT_CLASS (parent_class)->destroy) - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); -} - -static void ui_skinned_equalizer_graph_realize(GtkWidget *widget) { - if (GTK_WIDGET_CLASS (parent_class)->realize) - (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); -} - -static void ui_skinned_equalizer_graph_size_request(GtkWidget *widget, GtkRequisition *requisition) { - UiSkinnedEqualizerGraph *equalizer_graph = UI_SKINNED_EQUALIZER_GRAPH(widget); - - requisition->width = equalizer_graph->width*(equalizer_graph->scaled ? config.scale_factor : 1); - requisition->height = equalizer_graph->height*(equalizer_graph->scaled ? config.scale_factor : 1); -} - -static void ui_skinned_equalizer_graph_size_allocate(GtkWidget *widget, GtkAllocation *allocation) { - UiSkinnedEqualizerGraph *equalizer_graph = UI_SKINNED_EQUALIZER_GRAPH (widget); - - widget->allocation = *allocation; - widget->allocation.x *= (equalizer_graph->scaled ? config.scale_factor : 1); - widget->allocation.y *= (equalizer_graph->scaled ? config.scale_factor : 1); - - equalizer_graph->x = widget->allocation.x/(equalizer_graph->scaled ? config.scale_factor : 1); - equalizer_graph->y = widget->allocation.y/(equalizer_graph->scaled ? config.scale_factor : 1); -} - -void -init_spline(gfloat * x, gfloat * y, gint n, gfloat * y2) +static void init_spline (const gdouble * x, const gdouble * y, gint n, gdouble * y2) { gint i, k; - gfloat p, qn, sig, un, *u; + gdouble p, qn, sig, un, *u; - u = (gfloat *) g_malloc(n * sizeof(gfloat)); + u = (gdouble *) g_malloc(n * sizeof(gdouble)); y2[0] = u[0] = 0.0; for (i = 1; i < n - 1; i++) { - sig = ((gfloat) x[i] - x[i - 1]) / ((gfloat) x[i + 1] - x[i - 1]); + sig = ((gdouble) x[i] - x[i - 1]) / ((gdouble) x[i + 1] - x[i - 1]); p = sig * y2[i - 1] + 2.0; y2[i] = (sig - 1.0) / p; u[i] = - (((gfloat) y[i + 1] - y[i]) / (x[i + 1] - x[i])) - - (((gfloat) y[i] - y[i - 1]) / (x[i] - x[i - 1])); + (((gdouble) y[i + 1] - y[i]) / (x[i + 1] - x[i])) - + (((gdouble) y[i] - y[i - 1]) / (x[i] - x[i - 1])); u[i] = (6.0 * u[i] / (x[i + 1] - x[i - 1]) - sig * u[i - 1]) / p; } qn = un = 0.0; @@ -174,11 +54,11 @@ g_free(u); } -gfloat -eval_spline(gfloat xa[], gfloat ya[], gfloat y2a[], gint n, gfloat x) +gdouble eval_spline (const gdouble * xa, const gdouble * ya, const gdouble * y2a, + gint n, gdouble x) { gint klo, khi, k; - gfloat h, b, a; + gdouble h, b, a; klo = 0; khi = n - 1; @@ -197,94 +77,67 @@ (b * b * b - b) * y2a[khi]) * (h * h) / 6.0); } -static gboolean ui_skinned_equalizer_graph_expose(GtkWidget *widget, GdkEventExpose *event) { - UiSkinnedEqualizerGraph *equalizer_graph = UI_SKINNED_EQUALIZER_GRAPH (widget); - g_return_val_if_fail (equalizer_graph->width > 0 && equalizer_graph->height > 0, FALSE); - - GdkPixbuf *obj = NULL; - - obj = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, equalizer_graph->width, equalizer_graph->height); - - guint32 cols[19], rowstride; - gint i, y, ymin, ymax, py = 0; - gfloat x[] = { 0, 11, 23, 35, 47, 59, 71, 83, 97, 109 }, yf[10]; - guchar* pixels, *p; - gint n_channels; - /* - * This avoids the init_spline() function to be inlined. - * Inlining the function caused troubles when compiling with - * `-O' (at least on FreeBSD). - */ - void (*__init_spline) (gfloat *, gfloat *, gint, gfloat *) = init_spline; - - skin_draw_pixbuf(widget, aud_active_skin, obj, equalizer_graph->skin_index, 0, 294, 0, 0, - equalizer_graph->width, equalizer_graph->height); - skin_draw_pixbuf(widget, aud_active_skin, obj, equalizer_graph->skin_index, 0, 314, - 0, 9 + ((aud_cfg->equalizer_preamp * 9) / 20), - equalizer_graph->width, 1); - - skin_get_eq_spline_colors(aud_active_skin, cols); - - __init_spline(x, aud_cfg->equalizer_bands, 10, yf); - for (i = 0; i < 109; i++) { - y = 9 - - (gint) ((eval_spline(x, aud_cfg->equalizer_bands, yf, 10, i) * - 9.0) / EQUALIZER_MAX_GAIN); - if (y < 0) - y = 0; - if (y > 18) - y = 18; +DRAW_FUNC_BEGIN (eq_graph_draw) + static const gdouble x[10] = {0, 11, 23, 35, 47, 59, 71, 83, 97, 109}; + + skin_draw_pixbuf (cr, SKIN_EQMAIN, 0, 294, 0, 0, 113, 19); + skin_draw_pixbuf (cr, SKIN_EQMAIN, 0, 314, 0, 9 + (aud_get_double (NULL, + "equalizer_preamp") * 9 + EQUALIZER_MAX_GAIN / 2) / EQUALIZER_MAX_GAIN, 113, 1); + + guint32 cols[19]; + skin_get_eq_spline_colors(active_skin, cols); + + gdouble bands[AUD_EQUALIZER_NBANDS]; + aud_eq_get_bands (bands); + + gdouble yf[10]; + init_spline (x, bands, 10, yf); + + /* now draw a pixelated line with vector graphics ... -- jlindgren */ + gint py = 0; + for (gint i = 0; i < 109; i ++) + { + gint y = 9.5 - eval_spline (x, bands, yf, 10, i) * 9 / EQUALIZER_MAX_GAIN; + y = CLAMP (y, 0, 18); + if (!i) py = y; - if (y < py) { - ymin = y; - ymax = py; - } - else { - ymin = py; + + gint ymin, ymax; + + if (y > py) + { + ymin = py + 1; ymax = y; } - py = y; + else if (y < py) + { + ymin = y; + ymax = py - 1; + } + else + ymin = ymax = y; - pixels = gdk_pixbuf_get_pixels(obj); - rowstride = gdk_pixbuf_get_rowstride(obj); - n_channels = gdk_pixbuf_get_n_channels(obj); + py = y; for (y = ymin; y <= ymax; y++) { - p = pixels + (y * rowstride) + (( i + 2) * n_channels); - p[0] = (cols[y] & 0xff0000) >> 16; - p[1] = (cols[y] & 0x00ff00) >> 8; - p[2] = (cols[y] & 0x0000ff); - /* do we really need to treat the alpha channel? */ - /*if (n_channels == 4) - p[3] = cols[y] >> 24;*/ + cairo_rectangle (cr, i + 2, y, 1, 1); + set_cairo_color (cr, cols[y]); + cairo_fill (cr); } } +DRAW_FUNC_END - ui_skinned_widget_draw_with_coordinates(widget, obj, equalizer_graph->width, equalizer_graph->height, - widget->allocation.x, - widget->allocation.y, - equalizer_graph->scaled); - - g_object_unref(obj); - - return FALSE; -} - -static void ui_skinned_equalizer_graph_toggle_scaled(UiSkinnedEqualizerGraph *equalizer_graph) { - GtkWidget *widget = GTK_WIDGET (equalizer_graph); - - equalizer_graph->scaled = !equalizer_graph->scaled; - gtk_widget_set_size_request(widget, equalizer_graph->width*(equalizer_graph->scaled ? config.scale_factor : 1), - equalizer_graph->height*(equalizer_graph->scaled ? config.scale_factor : 1)); - - if (widget_really_drawable (widget)) - ui_skinned_equalizer_graph_expose (widget, NULL); +GtkWidget * eq_graph_new (void) +{ + GtkWidget * graph = gtk_drawing_area_new (); + gtk_widget_set_size_request (graph, 113, 19); + DRAW_CONNECT (graph, eq_graph_draw); + return graph; } -void ui_skinned_equalizer_graph_update (GtkWidget * graph) +void eq_graph_update (GtkWidget * graph) { - if (widget_really_drawable (graph)) - ui_skinned_equalizer_graph_expose (graph, NULL); + gtk_widget_queue_draw (graph); } diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_equalizer_graph.h audacious-plugins-3.2/src/skins/ui_skinned_equalizer_graph.h --- audacious-plugins-2.4.4/src/skins/ui_skinned_equalizer_graph.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_equalizer_graph.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -24,41 +25,12 @@ * Audacious or using our public API to be a derived work. */ -#ifndef AUDACIOUS_UI_SKINNED_EQUALIZER_GRAPH_H -#define AUDACIOUS_UI_SKINNED_EQUALIZER_GRAPH_H +#ifndef SKINS_UI_SKINNED_EQUALIZER_GRAPH_H +#define SKINS_UI_SKINNED_EQUALIZER_GRAPH_H #include -#include "ui_skin.h" -#ifdef __cplusplus -extern "C" { -#endif - -#define UI_SKINNED_EQUALIZER_GRAPH(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, ui_skinned_equalizer_graph_get_type (), UiSkinnedEqualizerGraph) -#define UI_SKINNED_EQUALIZER_GRAPH_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, ui_skinned_equalizer_graph_get_type (), UiSkinnedEqualizerGraphClass) -#define UI_SKINNED_IS_EQUALIZER_GRAPH(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, ui_skinned_equalizer_graph_get_type ()) - -typedef struct _UiSkinnedEqualizerGraph UiSkinnedEqualizerGraph; -typedef struct _UiSkinnedEqualizerGraphClass UiSkinnedEqualizerGraphClass; - -struct _UiSkinnedEqualizerGraph { - GtkWidget widget; +GtkWidget * eq_graph_new (); +void eq_graph_update (GtkWidget * graph); - gint x, y, width, height; - SkinPixmapId skin_index; - gboolean scaled; -}; - -struct _UiSkinnedEqualizerGraphClass { - GtkWidgetClass parent_class; - void (* scaled) (UiSkinnedEqualizerGraph *eq_graph); -}; - -GtkWidget* ui_skinned_equalizer_graph_new(GtkWidget *fixed, gint x, gint y); -void ui_skinned_equalizer_graph_update (GtkWidget * graph); - -#ifdef __cplusplus -} #endif - -#endif /* AUDACIOUS_UI_SKINNED_EQUALIZER_GRAPH_H */ diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_equalizer_slider.c audacious-plugins-3.2/src/skins/ui_skinned_equalizer_slider.c --- audacious-plugins-2.4.4/src/skins/ui_skinned_equalizer_slider.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_equalizer_slider.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -21,428 +22,171 @@ * along with this program; If not, see . */ -#include "config.h" - #include +#include -#include "ui_skin.h" +#include "config.h" +#include "draw-compat.h" #include "ui_equalizer.h" #include "ui_main.h" -#include "skins_cfg.h" +#include "ui_skin.h" #include "ui_skinned_equalizer_slider.h" -#include "util.h" - -#define UI_TYPE_SKINNED_EQUALIZER_SLIDER (ui_skinned_equalizer_slider_get_type()) -#define UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), UI_TYPE_SKINNED_EQUALIZER_SLIDER, UiSkinnedEqualizerSliderPrivate)) -typedef struct _UiSkinnedEqualizerSliderPrivate UiSkinnedEqualizerSliderPrivate; - -enum { - DOUBLED, - LAST_SIGNAL -}; - -struct _UiSkinnedEqualizerSliderPrivate { - SkinPixmapId skin_index; - gboolean scaled; - gint position; - gint width, height; - gboolean pressed; - gint drag_y; - gfloat value; /* store gain as is to prevent truncation --asphyx */ -}; - -static void ui_skinned_equalizer_slider_class_init (UiSkinnedEqualizerSliderClass *klass); -static void ui_skinned_equalizer_slider_init (UiSkinnedEqualizerSlider *equalizer_slider); -static void ui_skinned_equalizer_slider_destroy (GtkObject *object); -static void ui_skinned_equalizer_slider_realize (GtkWidget *widget); -static void ui_skinned_equalizer_slider_unrealize (GtkWidget *widget); -static void ui_skinned_equalizer_slider_map (GtkWidget *widget); -static void ui_skinned_equalizer_slider_unmap (GtkWidget *widget); -static void ui_skinned_equalizer_slider_size_request (GtkWidget *widget, GtkRequisition *requisition); -static void ui_skinned_equalizer_slider_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -static gboolean ui_skinned_equalizer_slider_expose (GtkWidget *widget, GdkEventExpose *event); -static gboolean ui_skinned_equalizer_slider_button_press (GtkWidget *widget, GdkEventButton *event); -static gboolean ui_skinned_equalizer_slider_button_release (GtkWidget *widget, GdkEventButton *event); -static gboolean ui_skinned_equalizer_slider_motion_notify (GtkWidget *widget, GdkEventMotion *event); -static gboolean ui_skinned_equalizer_slider_scroll (GtkWidget *widget, GdkEventScroll *event); -static void ui_skinned_equalizer_slider_toggle_scaled (UiSkinnedEqualizerSlider *equalizer_slider); -void ui_skinned_equalizer_slider_set_mainwin_text (UiSkinnedEqualizerSlider * es); - -static GtkWidgetClass *parent_class = NULL; -static guint equalizer_slider_signals[LAST_SIGNAL] = { 0 }; - -GType ui_skinned_equalizer_slider_get_type() { - static GType equalizer_slider_type = 0; - if (!equalizer_slider_type) { - static const GTypeInfo equalizer_slider_info = { - sizeof (UiSkinnedEqualizerSliderClass), - NULL, - NULL, - (GClassInitFunc) ui_skinned_equalizer_slider_class_init, - NULL, - NULL, - sizeof (UiSkinnedEqualizerSlider), - 0, - (GInstanceInitFunc) ui_skinned_equalizer_slider_init, - }; - equalizer_slider_type = g_type_register_static (GTK_TYPE_WIDGET, "UiSkinnedEqualizerSlider", &equalizer_slider_info, 0); - } - - return equalizer_slider_type; -} -static void ui_skinned_equalizer_slider_class_init(UiSkinnedEqualizerSliderClass *klass) { - GObjectClass *gobject_class; - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - gobject_class = G_OBJECT_CLASS(klass); - object_class = (GtkObjectClass*) klass; - widget_class = (GtkWidgetClass*) klass; - parent_class = g_type_class_peek_parent(klass); - - object_class->destroy = ui_skinned_equalizer_slider_destroy; - - widget_class->realize = ui_skinned_equalizer_slider_realize; - widget_class->unrealize = ui_skinned_equalizer_slider_unrealize; - widget_class->map = ui_skinned_equalizer_slider_map; - widget_class->unmap = ui_skinned_equalizer_slider_unmap; - widget_class->expose_event = ui_skinned_equalizer_slider_expose; - widget_class->size_request = ui_skinned_equalizer_slider_size_request; - widget_class->size_allocate = ui_skinned_equalizer_slider_size_allocate; - widget_class->button_press_event = ui_skinned_equalizer_slider_button_press; - widget_class->button_release_event = ui_skinned_equalizer_slider_button_release; - widget_class->motion_notify_event = ui_skinned_equalizer_slider_motion_notify; - widget_class->scroll_event = ui_skinned_equalizer_slider_scroll; - - klass->scaled = ui_skinned_equalizer_slider_toggle_scaled; - - equalizer_slider_signals[DOUBLED] = - g_signal_new ("toggle-scaled", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSkinnedEqualizerSliderClass, scaled), NULL, NULL, - g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); +typedef struct { + gchar * name; + gint pos; + gfloat val; + gboolean pressed; +} EqSliderData; + +DRAW_FUNC_BEGIN (eq_slider_draw) + EqSliderData * data = g_object_get_data ((GObject *) wid, "eqsliderdata"); + g_return_val_if_fail (data, FALSE); - g_type_class_add_private (gobject_class, sizeof (UiSkinnedEqualizerSliderPrivate)); -} + gint frame = 27 - data->pos * 27 / 50; + if (frame < 14) + skin_draw_pixbuf (cr, SKIN_EQMAIN, 13 + 15 * frame, 164, 0, 0, 14, 63); + else + skin_draw_pixbuf (cr, SKIN_EQMAIN, 13 + 15 * (frame - 14), 229, 0, 0, + 14, 63); -static void ui_skinned_equalizer_slider_init(UiSkinnedEqualizerSlider *equalizer_slider) { - UiSkinnedEqualizerSliderPrivate *priv = UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(equalizer_slider); - priv->pressed = FALSE; + if (data->pressed) + skin_draw_pixbuf (cr, SKIN_EQMAIN, 0, 176, 1, data->pos, 11, 11); + else + skin_draw_pixbuf (cr, SKIN_EQMAIN, 0, 164, 1, data->pos, 11, 11); +DRAW_FUNC_END - equalizer_slider->event_window = NULL; - GTK_WIDGET_SET_FLAGS(equalizer_slider, GTK_NO_WINDOW); -} +static void eq_slider_moved (EqSliderData * data, gint pos) +{ + data->pos = CLAMP (pos, 0, 50); + if (data->pos == 24 || data->pos == 26) + data->pos = 25; -GtkWidget* ui_skinned_equalizer_slider_new(GtkWidget *fixed, gint x, gint y) { - UiSkinnedEqualizerSlider *es = g_object_new (ui_skinned_equalizer_slider_get_type (), NULL); - UiSkinnedEqualizerSliderPrivate *priv = UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(es); - - es->x = x; - es->y = y; - priv->width = 14; - priv->height = 63; - priv->skin_index = SKIN_EQMAIN; + data->val = (gfloat) (25 - data->pos) * EQUALIZER_MAX_GAIN / 25; - gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(es), es->x, es->y); + equalizerwin_eq_changed (); - return GTK_WIDGET(es); + gchar buf[100]; + snprintf (buf, sizeof buf, "%s: %+.1f dB", data->name, data->val); + mainwin_show_status_message (buf); } -static void ui_skinned_equalizer_slider_destroy(GtkObject *object) { - UiSkinnedEqualizerSlider *equalizer_slider; +static gboolean eq_slider_button_press (GtkWidget * slider, GdkEventButton * + event) +{ + EqSliderData * data = g_object_get_data ((GObject *) slider, "eqsliderdata"); + g_return_val_if_fail (data, FALSE); - g_return_if_fail (object != NULL); - g_return_if_fail (UI_SKINNED_IS_EQUALIZER_SLIDER (object)); + if (event->button != 1) + return FALSE; - equalizer_slider = UI_SKINNED_EQUALIZER_SLIDER (object); + data->pressed = TRUE; - if (GTK_OBJECT_CLASS (parent_class)->destroy) - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); + eq_slider_moved (data, event->y - 5); + gtk_widget_queue_draw (slider); + return TRUE; } -static void ui_skinned_equalizer_slider_realize(GtkWidget *widget) { - UiSkinnedEqualizerSlider *equalizer_slider; - GdkWindowAttr attributes; - gint attributes_mask; - - g_return_if_fail (widget != NULL); - g_return_if_fail (UI_SKINNED_IS_EQUALIZER_SLIDER(widget)); - - if (GTK_WIDGET_CLASS (parent_class)->realize) - (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); - equalizer_slider = UI_SKINNED_EQUALIZER_SLIDER(widget); - - attributes.x = widget->allocation.x; - attributes.y = widget->allocation.y; - attributes.width = widget->allocation.width; - attributes.height = widget->allocation.height; - attributes.wclass = GDK_INPUT_ONLY; - attributes.window_type = GDK_WINDOW_CHILD; - attributes.event_mask = gtk_widget_get_events(widget); - attributes.event_mask |= GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | - GDK_POINTER_MOTION_MASK | GDK_SCROLL_MASK; - - attributes_mask = GDK_WA_X | GDK_WA_Y; - equalizer_slider->event_window = gdk_window_new(widget->parent->window, &attributes, attributes_mask); +static gboolean eq_slider_button_release (GtkWidget * slider, GdkEventButton * + event) +{ + EqSliderData * data = g_object_get_data ((GObject *) slider, "eqsliderdata"); + g_return_val_if_fail (data, FALSE); - gdk_window_set_user_data(equalizer_slider->event_window, widget); -} + if (event->button != 1) + return FALSE; -static void ui_skinned_equalizer_slider_unrealize(GtkWidget *widget) { - UiSkinnedEqualizerSlider *equalizer_slider = UI_SKINNED_EQUALIZER_SLIDER(widget); + if (! data->pressed) + return TRUE; - if ( equalizer_slider->event_window != NULL ) - { - gdk_window_set_user_data( equalizer_slider->event_window , NULL ); - gdk_window_destroy( equalizer_slider->event_window ); - equalizer_slider->event_window = NULL; - } + data->pressed = FALSE; - if (GTK_WIDGET_CLASS (parent_class)->unrealize) - (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); + eq_slider_moved (data, event->y - 5); + gtk_widget_queue_draw (slider); + return TRUE; } -static void ui_skinned_equalizer_slider_map (GtkWidget *widget) +static gboolean eq_slider_motion (GtkWidget * slider, GdkEventMotion * event) { - UiSkinnedEqualizerSlider *equalizer_slider = UI_SKINNED_EQUALIZER_SLIDER(widget); + EqSliderData * data = g_object_get_data ((GObject *) slider, "eqsliderdata"); + g_return_val_if_fail (data, FALSE); - if (equalizer_slider->event_window != NULL) - gdk_window_show (equalizer_slider->event_window); + if (! data->pressed) + return TRUE; - if (GTK_WIDGET_CLASS (parent_class)->map) - (* GTK_WIDGET_CLASS (parent_class)->map) (widget); + eq_slider_moved (data, event->y - 5); + gtk_widget_queue_draw (slider); + return TRUE; } -static void ui_skinned_equalizer_slider_unmap (GtkWidget *widget) +static gboolean eq_slider_scroll (GtkWidget * slider, GdkEventScroll * event) { - UiSkinnedEqualizerSlider *equalizer_slider = UI_SKINNED_EQUALIZER_SLIDER(widget); - - if (equalizer_slider->event_window != NULL) - gdk_window_hide (equalizer_slider->event_window); - - if (GTK_WIDGET_CLASS (parent_class)->unmap) - (* GTK_WIDGET_CLASS (parent_class)->unmap) (widget); -} - -static void ui_skinned_equalizer_slider_size_request(GtkWidget *widget, GtkRequisition *requisition) { - UiSkinnedEqualizerSliderPrivate *priv = UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(widget); - - requisition->width = priv->width*(priv->scaled ? config.scale_factor : 1); - requisition->height = priv->height*(priv->scaled ? config.scale_factor : 1); -} - -static void ui_skinned_equalizer_slider_size_allocate(GtkWidget *widget, GtkAllocation *allocation) { - UiSkinnedEqualizerSlider *equalizer_slider = UI_SKINNED_EQUALIZER_SLIDER (widget); - UiSkinnedEqualizerSliderPrivate *priv = UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(equalizer_slider); - - widget->allocation = *allocation; - widget->allocation.x *= (priv->scaled ? config.scale_factor : 1); - widget->allocation.y *= (priv->scaled ? config.scale_factor : 1); - if (GTK_WIDGET_REALIZED (widget)) - if (equalizer_slider->event_window) - gdk_window_move_resize(equalizer_slider->event_window, widget->allocation.x, widget->allocation.y, allocation->width, allocation->height); - - equalizer_slider->x = widget->allocation.x/(priv->scaled ? config.scale_factor : 1); - equalizer_slider->y = widget->allocation.y/(priv->scaled ? config.scale_factor : 1); -} - -static gboolean ui_skinned_equalizer_slider_expose(GtkWidget *widget, GdkEventExpose *event) { - UiSkinnedEqualizerSlider *es = UI_SKINNED_EQUALIZER_SLIDER (widget); - UiSkinnedEqualizerSliderPrivate *priv = UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(es); - g_return_val_if_fail (priv->width > 0 && priv->height > 0, FALSE); - - GdkPixbuf *obj = NULL; - obj = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, priv->width, priv->height); + EqSliderData * data = g_object_get_data ((GObject *) slider, "eqsliderdata"); + g_return_val_if_fail (data, FALSE); - gint frame; - frame = 27 - ((priv->position * 27) / 50); - if (frame < 14) - skin_draw_pixbuf(widget, aud_active_skin, obj, priv->skin_index, (frame * 15) + 13, 164, 0, 0, priv->width, priv->height); - else - skin_draw_pixbuf(widget, aud_active_skin, obj, priv->skin_index, ((frame - 14) * 15) + 13, 229, 0, 0, priv->width, priv->height); - - if (priv->pressed) - skin_draw_pixbuf(widget, aud_active_skin, obj, priv->skin_index, 0, 176, 1, priv->position, 11, 11); + if (event->direction == GDK_SCROLL_UP) + eq_slider_moved (data, data->pos - 2); else - skin_draw_pixbuf(widget, aud_active_skin, obj, priv->skin_index, 0, 164, 1, priv->position, 11, 11); - - ui_skinned_widget_draw_with_coordinates(widget, obj, priv->width, priv->height, - widget->allocation.x, - widget->allocation.y, - priv->scaled); - - g_object_unref(obj); - - return FALSE; -} - -static gboolean ui_skinned_equalizer_slider_button_press(GtkWidget *widget, GdkEventButton *event) { - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (UI_SKINNED_IS_EQUALIZER_SLIDER (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - UiSkinnedEqualizerSlider *es = UI_SKINNED_EQUALIZER_SLIDER (widget); - UiSkinnedEqualizerSliderPrivate *priv = UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(es); - - gint y; - - if (event->type == GDK_BUTTON_PRESS) { - if (event->button == 1) { - priv->pressed = TRUE; - y = event->y/(priv->scaled ? config.scale_factor : 1); - - if (y >= priv->position && y < priv->position + 11) - priv->drag_y = y - priv->position; - else { - priv->position = y - 5; - priv->drag_y = 5; - if (priv->position < 0) - priv->position = 0; - if (priv->position > 50) - priv->position = 50; - if (priv->position >= 24 && priv->position <= 26) - priv->position = 25; - - priv->value = ((gfloat) (25 - priv->position) * EQUALIZER_MAX_GAIN / 25.0 ); - equalizerwin_eq_changed(); - } - - ui_skinned_equalizer_slider_set_mainwin_text(es); - - if (widget_really_drawable (widget)) - ui_skinned_equalizer_slider_expose (widget, 0); - } - } - - return TRUE; -} - -static gboolean ui_skinned_equalizer_slider_button_release(GtkWidget *widget, GdkEventButton *event) { - UiSkinnedEqualizerSliderPrivate *priv = UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(widget); - - if (event->button == 1) { - priv->pressed = FALSE; - mainwin_release_info_text(); - - if (widget_really_drawable (widget)) - ui_skinned_equalizer_slider_expose (widget, 0); - } - return TRUE; -} - -static gboolean ui_skinned_equalizer_slider_motion_notify(GtkWidget *widget, GdkEventMotion *event) { - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (UI_SKINNED_IS_EQUALIZER_SLIDER (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - UiSkinnedEqualizerSlider *es = UI_SKINNED_EQUALIZER_SLIDER(widget); - UiSkinnedEqualizerSliderPrivate *priv = UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(widget); - - if (priv->pressed) { - gint y; - - y = event->y/(priv->scaled ? config.scale_factor : 1); - priv->position = y - priv->drag_y; - - if (priv->position < 0) - priv->position = 0; - if (priv->position > 50) - priv->position = 50; - if (priv->position >= 24 && priv->position <= 26) - priv->position = 25; - - priv->value = ((gfloat) (25 - priv->position) * EQUALIZER_MAX_GAIN / 25.0 ); - ui_skinned_equalizer_slider_set_mainwin_text(es); - equalizerwin_eq_changed(); - - if (widget_really_drawable (widget)) - ui_skinned_equalizer_slider_expose (widget, 0); - } + eq_slider_moved (data, data->pos + 2); + gtk_widget_queue_draw (slider); return TRUE; } -static gboolean ui_skinned_equalizer_slider_scroll(GtkWidget *widget, GdkEventScroll *event) { - g_return_val_if_fail (UI_SKINNED_IS_EQUALIZER_SLIDER (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - UiSkinnedEqualizerSliderPrivate *priv = UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(widget); - - if (event->direction == GDK_SCROLL_UP) { - priv->position -= 2; - - if (priv->position < 0) - priv->position = 0; - } - else { - priv->position += 2; - - if (priv->position > 50) - priv->position = 50; - } +void eq_slider_set_val (GtkWidget * slider, gfloat val) +{ + EqSliderData * data = g_object_get_data ((GObject *) slider, "eqsliderdata"); + g_return_if_fail (data); - priv->value = ((gfloat) (25 - priv->position) * EQUALIZER_MAX_GAIN / 25.0 ); - equalizerwin_eq_changed(); + if (data->pressed) + return; - if (widget_really_drawable (widget)) - ui_skinned_equalizer_slider_expose (widget, 0); + data->val = val; + data->pos = 25 - (gint) (val * 25 / EQUALIZER_MAX_GAIN); + data->pos = CLAMP (data->pos, 0, 50); - return TRUE; + gtk_widget_queue_draw (slider); } -static void ui_skinned_equalizer_slider_toggle_scaled(UiSkinnedEqualizerSlider *equalizer_slider) { - GtkWidget *widget = GTK_WIDGET (equalizer_slider); - UiSkinnedEqualizerSliderPrivate *priv = UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(equalizer_slider); - - priv->scaled = !priv->scaled; - - gtk_widget_set_size_request(widget, priv->width*(priv->scaled ? config.scale_factor : 1), - priv->height*(priv->scaled ? config.scale_factor : 1)); +gfloat eq_slider_get_val (GtkWidget * slider) +{ + EqSliderData * data = g_object_get_data ((GObject *) slider, "eqsliderdata"); + g_return_val_if_fail (data, 0); - if (widget_really_drawable (widget)) - ui_skinned_equalizer_slider_expose (widget, 0); + return data->val; } -void ui_skinned_equalizer_slider_set_position(GtkWidget *widget, gfloat pos) { - g_return_if_fail (UI_SKINNED_IS_EQUALIZER_SLIDER (widget)); - UiSkinnedEqualizerSliderPrivate *priv = UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(widget); - - if (priv->pressed) - return; - - priv->value = (pos > EQUALIZER_MAX_GAIN) ? EQUALIZER_MAX_GAIN : ((pos < -EQUALIZER_MAX_GAIN) ? -EQUALIZER_MAX_GAIN : pos); - priv->position = 25 - (gint) ((pos * 25.0) / EQUALIZER_MAX_GAIN); - - if (priv->position < 0) - priv->position = 0; - - if (priv->position > 50) - priv->position = 50; - - if (priv->position >= 24 && priv->position <= 26) - priv->position = 25; +static void eq_slider_destroy (GtkWidget * slider) +{ + EqSliderData * data = g_object_get_data ((GObject *) slider, "eqsliderdata"); + g_return_if_fail (data); - if (widget_really_drawable (widget)) - ui_skinned_equalizer_slider_expose (widget, 0); + g_free (data->name); + g_free (data); } -gfloat ui_skinned_equalizer_slider_get_position(GtkWidget *widget) { - g_return_val_if_fail (UI_SKINNED_IS_EQUALIZER_SLIDER (widget), -1); - UiSkinnedEqualizerSliderPrivate *priv = UI_SKINNED_EQUALIZER_SLIDER_GET_PRIVATE(widget); - return priv->value; -} +GtkWidget * eq_slider_new (const gchar * name) +{ + GtkWidget * slider = gtk_drawing_area_new (); + gtk_widget_set_size_request (slider, 14, 63); + gtk_widget_add_events (slider, GDK_BUTTON_PRESS_MASK | + GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK); + + DRAW_CONNECT (slider, eq_slider_draw); + + g_signal_connect (slider, "button-press-event", (GCallback) + eq_slider_button_press, NULL); + g_signal_connect (slider, "button-release-event", (GCallback) + eq_slider_button_release, NULL); + g_signal_connect (slider, "motion-notify-event", (GCallback) + eq_slider_motion, NULL); + g_signal_connect (slider, "scroll-event", (GCallback) eq_slider_scroll, + NULL); + g_signal_connect (slider, "destroy", (GCallback) eq_slider_destroy, NULL); + + EqSliderData * data = g_malloc0 (sizeof (EqSliderData)); + data->name = g_strdup (name); + g_object_set_data ((GObject *) slider, "eqsliderdata", data); -void ui_skinned_equalizer_slider_set_mainwin_text(UiSkinnedEqualizerSlider * es) { - gint band = 0; - const gchar * const bandname[11] = {N_("Preamp"), N_("31 Hz"), N_("63 Hz"), - N_("125 Hz"), N_("250 Hz"), N_("500 Hz"), N_("1 kHz"), N_("2 kHz"), - N_("4 kHz"), N_("8 kHz"), N_("16 kHz")}; - gchar *tmp; - - if (es->x > 21) - band = ((es->x - 78) / 18) + 1; - - tmp = - g_strdup_printf("EQ: %s: %+.1f DB", _(bandname[band]), - ui_skinned_equalizer_slider_get_position(GTK_WIDGET(es))); - mainwin_lock_info_text(tmp); - g_free(tmp); + return slider; } diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_equalizer_slider.h audacious-plugins-3.2/src/skins/ui_skinned_equalizer_slider.h --- audacious-plugins-2.4.4/src/skins/ui_skinned_equalizer_slider.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_equalizer_slider.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -21,41 +22,13 @@ * along with this program; If not, see . */ -#ifndef AUDACIOUS_UI_SKINNED_EQUALIZER_SLIDER_H -#define AUDACIOUS_UI_SKINNED_EQUALIZER_SLIDER_H +#ifndef SKINS_UI_SKINNED_EQUALIZER_SLIDER_H +#define SKINS_UI_SKINNED_EQUALIZER_SLIDER_H #include -#include "ui_skin.h" -#ifdef __cplusplus -extern "C" { -#endif - -#define UI_SKINNED_EQUALIZER_SLIDER(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, ui_skinned_equalizer_slider_get_type (), UiSkinnedEqualizerSlider) -#define UI_SKINNED_EQUALIZER_SLIDER_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, ui_skinned_equalizer_slider_get_type (), UiSkinnedEqualizerSliderClass) -#define UI_SKINNED_IS_EQUALIZER_SLIDER(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, ui_skinned_equalizer_slider_get_type ()) - -typedef struct _UiSkinnedEqualizerSlider UiSkinnedEqualizerSlider; -typedef struct _UiSkinnedEqualizerSliderClass UiSkinnedEqualizerSliderClass; - -struct _UiSkinnedEqualizerSlider { - GtkWidget widget; - GdkWindow *event_window; - gint x, y; -}; +GtkWidget * eq_slider_new (const gchar * name); +void eq_slider_set_val (GtkWidget * widget, gfloat val); +gfloat eq_slider_get_val (GtkWidget * widget); -struct _UiSkinnedEqualizerSliderClass { - GtkWidgetClass parent_class; - void (* scaled) (UiSkinnedEqualizerSlider *equalizer_slider); -}; - -GtkWidget* ui_skinned_equalizer_slider_new(GtkWidget *fixed, gint x, gint y); -GType ui_skinned_equalizer_slider_get_type(void); -void ui_skinned_equalizer_slider_set_position(GtkWidget *widget, gfloat pos); -gfloat ui_skinned_equalizer_slider_get_position(GtkWidget *widget); - -#ifdef __cplusplus -} #endif - -#endif /* AUDACIOUS_UI_SKINNED_EQUALIZER_SLIDER_H */ diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_horizontal_slider.c audacious-plugins-3.2/src/skins/ui_skinned_horizontal_slider.c --- audacious-plugins-2.4.4/src/skins/ui_skinned_horizontal_slider.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_horizontal_slider.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -24,415 +25,214 @@ * Audacious or using our public API to be a derived work. */ +#include "draw-compat.h" +#include "ui_skin.h" #include "ui_skinned_horizontal_slider.h" -#include "skins_cfg.h" -#include "util.h" -#include +typedef struct { + gint min, max, pos; + gboolean pressed; + SkinPixmapId si; + gint w, h; + gint fx, fy; + gint kw, kh; + gint knx, kny, kpx, kpy; + void (* on_motion) (void); + void (* on_release) (void); +} HSliderData; + +DRAW_FUNC_BEGIN (hslider_draw) + HSliderData * data = g_object_get_data ((GObject *) wid, "hsliderdata"); + g_return_val_if_fail (data, FALSE); + + skin_draw_pixbuf (cr, data->si, data->fx, data->fy, 0, 0, data->w, data->h); + + if (data->pressed) + skin_draw_pixbuf (cr, data->si, data->kpx, data->kpy, data->pos, + (data->h - data->kh) / 2, data->kw, data->kh); + else + skin_draw_pixbuf (cr, data->si, data->knx, data->kny, data->pos, + (data->h - data->kh) / 2, data->kw, data->kh); +DRAW_FUNC_END -#define UI_SKINNED_HORIZONTAL_SLIDER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), ui_skinned_horizontal_slider_get_type(), UiSkinnedHorizontalSliderPrivate)) -typedef struct _UiSkinnedHorizontalSliderPrivate UiSkinnedHorizontalSliderPrivate; +static gboolean hslider_button_press (GtkWidget * hslider, GdkEventButton * + event) +{ + HSliderData * data = g_object_get_data ((GObject *) hslider, "hsliderdata"); + g_return_val_if_fail (data, FALSE); -enum { - MOTION, - RELEASE, - DOUBLED, - LAST_SIGNAL -}; - -struct _UiSkinnedHorizontalSliderPrivate { - SkinPixmapId skin_index; - gboolean scaled; - gint frame, frame_offset, frame_height, min, max; - gint knob_width, knob_height; - gint position; - gint width, height; - gint (*frame_cb) (gint); -}; - -static void ui_skinned_horizontal_slider_class_init (UiSkinnedHorizontalSliderClass *klass); -static void ui_skinned_horizontal_slider_init (UiSkinnedHorizontalSlider *horizontal_slider); -static void ui_skinned_horizontal_slider_destroy (GtkObject *object); -static void ui_skinned_horizontal_slider_realize (GtkWidget *widget); -static void ui_skinned_horizontal_slider_unrealize (GtkWidget *widget); -static void ui_skinned_horizontal_slider_map (GtkWidget *widget); -static void ui_skinned_horizontal_slider_unmap (GtkWidget *widget); -static void ui_skinned_horizontal_slider_size_request (GtkWidget *widget, GtkRequisition *requisition); -static void ui_skinned_horizontal_slider_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -static gboolean ui_skinned_horizontal_slider_expose (GtkWidget *widget, GdkEventExpose *event); -static gboolean ui_skinned_horizontal_slider_button_press (GtkWidget *widget, GdkEventButton *event); -static gboolean ui_skinned_horizontal_slider_button_release (GtkWidget *widget, GdkEventButton *event); -static gboolean ui_skinned_horizontal_slider_motion_notify (GtkWidget *widget, GdkEventMotion *event); -static void ui_skinned_horizontal_slider_toggle_scaled (UiSkinnedHorizontalSlider *horizontal_slider); - -static GtkWidgetClass *parent_class = NULL; -static guint horizontal_slider_signals[LAST_SIGNAL] = { 0 }; - -GType ui_skinned_horizontal_slider_get_type() { - static GType horizontal_slider_type = 0; - if (!horizontal_slider_type) { - static const GTypeInfo horizontal_slider_info = { - sizeof (UiSkinnedHorizontalSliderClass), - NULL, - NULL, - (GClassInitFunc) ui_skinned_horizontal_slider_class_init, - NULL, - NULL, - sizeof (UiSkinnedHorizontalSlider), - 0, - (GInstanceInitFunc) ui_skinned_horizontal_slider_init, - }; - horizontal_slider_type = g_type_register_static (GTK_TYPE_WIDGET, "UiSkinnedHorizontalSlider", &horizontal_slider_info, 0); - } - - return horizontal_slider_type; -} - -static void ui_skinned_horizontal_slider_class_init(UiSkinnedHorizontalSliderClass *klass) { - GObjectClass *gobject_class; - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - gobject_class = G_OBJECT_CLASS(klass); - object_class = (GtkObjectClass*) klass; - widget_class = (GtkWidgetClass*) klass; - parent_class = g_type_class_peek_parent(klass); - - object_class->destroy = ui_skinned_horizontal_slider_destroy; - - widget_class->realize = ui_skinned_horizontal_slider_realize; - widget_class->unrealize = ui_skinned_horizontal_slider_unrealize; - widget_class->map = ui_skinned_horizontal_slider_map; - widget_class->unmap = ui_skinned_horizontal_slider_unmap; - widget_class->expose_event = ui_skinned_horizontal_slider_expose; - widget_class->size_request = ui_skinned_horizontal_slider_size_request; - widget_class->size_allocate = ui_skinned_horizontal_slider_size_allocate; - widget_class->button_press_event = ui_skinned_horizontal_slider_button_press; - widget_class->button_release_event = ui_skinned_horizontal_slider_button_release; - widget_class->motion_notify_event = ui_skinned_horizontal_slider_motion_notify; - - klass->motion = NULL; - klass->release = NULL; - klass->scaled = ui_skinned_horizontal_slider_toggle_scaled; - - horizontal_slider_signals[MOTION] = - g_signal_new ("motion", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSkinnedHorizontalSliderClass, motion), NULL, NULL, - g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT); - - horizontal_slider_signals[RELEASE] = - g_signal_new ("release", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSkinnedHorizontalSliderClass, release), NULL, NULL, - g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT); - - horizontal_slider_signals[DOUBLED] = - g_signal_new ("toggle-scaled", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSkinnedHorizontalSliderClass, scaled), NULL, NULL, - g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - - g_type_class_add_private (gobject_class, sizeof (UiSkinnedHorizontalSliderPrivate)); -} - -static void ui_skinned_horizontal_slider_init(UiSkinnedHorizontalSlider *horizontal_slider) { - horizontal_slider->pressed = FALSE; - - horizontal_slider->event_window = NULL; - GTK_WIDGET_SET_FLAGS(horizontal_slider, GTK_NO_WINDOW); -} - -GtkWidget* ui_skinned_horizontal_slider_new(GtkWidget *fixed, gint x, gint y, gint w, gint h, gint knx, gint kny, - gint kpx, gint kpy, gint kw, gint kh, gint fh, - gint fo, gint min, gint max, gint(*fcb) (gint), SkinPixmapId si) { - - UiSkinnedHorizontalSlider *hs = g_object_new (ui_skinned_horizontal_slider_get_type (), NULL); - UiSkinnedHorizontalSliderPrivate *priv = UI_SKINNED_HORIZONTAL_SLIDER_GET_PRIVATE(hs); - - hs->x = x; - hs->y = y; - priv->width = w; - priv->height = h; - hs->knob_nx = knx; - hs->knob_ny = kny; - hs->knob_px = kpx; - hs->knob_py = kpy; - priv->knob_width = kw; - priv->knob_height = kh; - priv->frame_height = fh; - priv->frame_offset = fo; - priv->min = min; - priv->position = min; - priv->max = max; - priv->frame_cb = fcb; - if (priv->frame_cb) - priv->frame = priv->frame_cb(0); - priv->skin_index = si; - - gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(hs), hs->x, hs->y); - - return GTK_WIDGET(hs); -} - -static void ui_skinned_horizontal_slider_destroy(GtkObject *object) { - UiSkinnedHorizontalSlider *horizontal_slider; - - g_return_if_fail (object != NULL); - g_return_if_fail (UI_SKINNED_IS_HORIZONTAL_SLIDER (object)); - - horizontal_slider = UI_SKINNED_HORIZONTAL_SLIDER (object); - - if (GTK_OBJECT_CLASS (parent_class)->destroy) - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); -} - -static void ui_skinned_horizontal_slider_realize(GtkWidget *widget) { - UiSkinnedHorizontalSlider *horizontal_slider; - GdkWindowAttr attributes; - gint attributes_mask; - - g_return_if_fail (widget != NULL); - g_return_if_fail (UI_SKINNED_IS_HORIZONTAL_SLIDER(widget)); - - if (GTK_WIDGET_CLASS (parent_class)->realize) - (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); - horizontal_slider = UI_SKINNED_HORIZONTAL_SLIDER(widget); - - attributes.x = widget->allocation.x; - attributes.y = widget->allocation.y; - attributes.width = widget->allocation.width; - attributes.height = widget->allocation.height; - attributes.wclass = GDK_INPUT_ONLY; - attributes.window_type = GDK_WINDOW_CHILD; - attributes.event_mask = gtk_widget_get_events(widget); - attributes.event_mask |= GDK_BUTTON_PRESS_MASK | - GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK; - - attributes_mask = GDK_WA_X | GDK_WA_Y; - horizontal_slider->event_window = gdk_window_new(widget->window, &attributes, attributes_mask); - - gdk_window_set_user_data(horizontal_slider->event_window, widget); -} - -static void ui_skinned_horizontal_slider_unrealize(GtkWidget *widget) { - UiSkinnedHorizontalSlider *horizontal_slider = UI_SKINNED_HORIZONTAL_SLIDER(widget); - - if ( horizontal_slider->event_window != NULL ) - { - gdk_window_set_user_data( horizontal_slider->event_window , NULL ); - gdk_window_destroy( horizontal_slider->event_window ); - horizontal_slider->event_window = NULL; - } - - if (GTK_WIDGET_CLASS (parent_class)->unrealize) - (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); -} - -static void ui_skinned_horizontal_slider_map (GtkWidget *widget) -{ - UiSkinnedHorizontalSlider *horizontal_slider = UI_SKINNED_HORIZONTAL_SLIDER(widget); - - if (horizontal_slider->event_window != NULL) - gdk_window_show (horizontal_slider->event_window); - - if (GTK_WIDGET_CLASS (parent_class)->map) - (* GTK_WIDGET_CLASS (parent_class)->map) (widget); -} - -static void ui_skinned_horizontal_slider_unmap (GtkWidget *widget) -{ - UiSkinnedHorizontalSlider *horizontal_slider = UI_SKINNED_HORIZONTAL_SLIDER(widget); - - if (horizontal_slider->event_window != NULL) - gdk_window_hide (horizontal_slider->event_window); - - if (GTK_WIDGET_CLASS (parent_class)->unmap) - (* GTK_WIDGET_CLASS (parent_class)->unmap) (widget); -} - -static void ui_skinned_horizontal_slider_size_request(GtkWidget *widget, GtkRequisition *requisition) { - UiSkinnedHorizontalSliderPrivate *priv = UI_SKINNED_HORIZONTAL_SLIDER_GET_PRIVATE(widget); - - requisition->width = priv->width*(priv->scaled ? config.scale_factor : 1); - requisition->height = priv->height*(priv->scaled ? config.scale_factor : 1); -} - -static void ui_skinned_horizontal_slider_size_allocate(GtkWidget *widget, GtkAllocation *allocation) { - UiSkinnedHorizontalSlider *horizontal_slider = UI_SKINNED_HORIZONTAL_SLIDER (widget); - UiSkinnedHorizontalSliderPrivate *priv = UI_SKINNED_HORIZONTAL_SLIDER_GET_PRIVATE(horizontal_slider); - - widget->allocation = *allocation; - widget->allocation.x = ceil(widget->allocation.x*(priv->scaled ? config.scale_factor : 1)); - widget->allocation.y = ceil(widget->allocation.y*(priv->scaled ? config.scale_factor : 1)); - - if (priv->knob_height == priv->height) - priv->knob_height = ceil(allocation->height/(priv->scaled ? config.scale_factor : 1)); - priv->width = ceil(allocation->width/(priv->scaled ? config.scale_factor : 1)); - priv->height = ceil(allocation->height/(priv->scaled ? config.scale_factor : 1)); - - if (GTK_WIDGET_REALIZED (widget)) - if (horizontal_slider->event_window) - gdk_window_move_resize(horizontal_slider->event_window, widget->allocation.x, widget->allocation.y, allocation->width, allocation->height); - - horizontal_slider->x = ceil(widget->allocation.x/(priv->scaled ? config.scale_factor : 1)); - horizontal_slider->y = ceil(widget->allocation.y/(priv->scaled ? config.scale_factor : 1)); -} - -static gboolean ui_skinned_horizontal_slider_expose(GtkWidget *widget, GdkEventExpose *event) { - UiSkinnedHorizontalSlider *hs = UI_SKINNED_HORIZONTAL_SLIDER (widget); - UiSkinnedHorizontalSliderPrivate *priv = UI_SKINNED_HORIZONTAL_SLIDER_GET_PRIVATE(hs); - g_return_val_if_fail (priv->width > 0 && priv->height > 0, FALSE); - - GdkPixbuf *obj = NULL; - - if (priv->position > priv->max) priv->position = priv->max; - else if (priv->position < priv->min) priv->position = priv->min; - - obj = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, priv->width, priv->height); - - skin_draw_pixbuf(widget, aud_active_skin, obj, - priv->skin_index, priv->frame_offset, - priv->frame * priv->frame_height, - 0, 0, priv->width, priv->height); - if (hs->pressed) - skin_draw_pixbuf(widget, aud_active_skin, obj, - priv->skin_index, hs->knob_px, - hs->knob_py, priv->position, - ((priv->height - priv->knob_height) / 2), - priv->knob_width, priv->knob_height); - else - skin_draw_pixbuf(widget, aud_active_skin, obj, - priv->skin_index, hs->knob_nx, - hs->knob_ny, priv->position, - ((priv->height - priv->knob_height) / 2), - priv->knob_width, priv->knob_height); - - ui_skinned_widget_draw_with_coordinates(widget, obj, priv->width, priv->height, - widget->allocation.x, - widget->allocation.y, - priv->scaled); - - g_object_unref(obj); - - return FALSE; -} - -static gboolean ui_skinned_horizontal_slider_button_press(GtkWidget *widget, GdkEventButton *event) { - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (UI_SKINNED_IS_HORIZONTAL_SLIDER (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - UiSkinnedHorizontalSlider *hs = UI_SKINNED_HORIZONTAL_SLIDER (widget); - UiSkinnedHorizontalSliderPrivate *priv = UI_SKINNED_HORIZONTAL_SLIDER_GET_PRIVATE(hs); - gint scale = priv->scaled ? config.scale_factor : 1; - - if (event->type == GDK_BUTTON_PRESS) { - if (event->button == 1) { - hs->pressed = TRUE; - - priv->position = event->x / scale - priv->knob_width / 2; - if (priv->position < priv->min) - priv->position = priv->min; - if (priv->position > priv->max) - priv->position = priv->max; - if (priv->frame_cb) - priv->frame = priv->frame_cb(priv->position); - - g_signal_emit_by_name(widget, "motion", priv->position); - - if (widget_really_drawable (widget)) - ui_skinned_horizontal_slider_expose (widget, 0); - } else if (event->button == 3) { - if (hs->pressed) { - hs->pressed = FALSE; - g_signal_emit_by_name(widget, "release", priv->position); - - if (widget_really_drawable (widget)) - ui_skinned_horizontal_slider_expose (widget, 0); - } - event->x = event->x + hs->x * scale; - event->y = event->y + hs->y * scale; - return FALSE; - } - } + if (event->button != 1) + return FALSE; + + data->pressed = TRUE; + data->pos = event->x - data->kw / 2; + data->pos = CLAMP (data->pos, data->min, data->max); + + if (data->on_motion) + data->on_motion (); + + gtk_widget_queue_draw (hslider); return TRUE; } -static gboolean ui_skinned_horizontal_slider_button_release(GtkWidget *widget, GdkEventButton *event) { - UiSkinnedHorizontalSlider *hs = UI_SKINNED_HORIZONTAL_SLIDER(widget); - UiSkinnedHorizontalSliderPrivate *priv = UI_SKINNED_HORIZONTAL_SLIDER_GET_PRIVATE(widget); - - if (hs->pressed) { - hs->pressed = FALSE; - g_signal_emit_by_name(widget, "release", priv->position); - - if (widget_really_drawable (widget)) - ui_skinned_horizontal_slider_expose (widget, 0); - } +static gboolean hslider_button_release (GtkWidget * hslider, GdkEventButton * + event) +{ + HSliderData * data = g_object_get_data ((GObject *) hslider, "hsliderdata"); + g_return_val_if_fail (data, FALSE); + + if (event->button != 1) + return FALSE; + + if (! data->pressed) + return TRUE; + + data->pressed = FALSE; + data->pos = event->x - data->kw / 2; + data->pos = CLAMP (data->pos, data->min, data->max); + + if (data->on_release) + data->on_release (); + + gtk_widget_queue_draw (hslider); return TRUE; } -static gboolean ui_skinned_horizontal_slider_motion_notify(GtkWidget *widget, GdkEventMotion *event) { - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (UI_SKINNED_IS_HORIZONTAL_SLIDER (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - UiSkinnedHorizontalSlider *hs = UI_SKINNED_HORIZONTAL_SLIDER(widget); - UiSkinnedHorizontalSliderPrivate *priv = UI_SKINNED_HORIZONTAL_SLIDER_GET_PRIVATE(widget); +static gboolean hslider_motion_notify (GtkWidget * hslider, GdkEventMotion * + event) +{ + HSliderData * data = g_object_get_data ((GObject *) hslider, "hsliderdata"); + g_return_val_if_fail (data, FALSE); - if (hs->pressed) { - gint x = event->x - priv->knob_width * (priv->scaled ? config.scale_factor : 1) / 2; + if (! data->pressed) + return TRUE; - priv->position = x/(priv->scaled ? config.scale_factor : 1); + data->pressed = TRUE; + data->pos = event->x - data->kw / 2; + data->pos = CLAMP (data->pos, data->min, data->max); - if (priv->position < priv->min) - priv->position = priv->min; + if (data->on_motion) + data->on_motion (); - if (priv->position > priv->max) - priv->position = priv->max; + gtk_widget_queue_draw (hslider); + return TRUE; +} - if (priv->frame_cb) - priv->frame = priv->frame_cb(priv->position); +static void hslider_destroy (GtkWidget * hslider) +{ + g_free (g_object_get_data ((GObject *) hslider, "hsliderdata")); +} + +GtkWidget * hslider_new (gint min, gint max, SkinPixmapId si, gint w, gint h, + gint fx, gint fy, gint kw, gint kh, gint knx, gint kny, gint kpx, gint kpy) +{ + GtkWidget * hslider = gtk_drawing_area_new (); + gtk_widget_set_size_request (hslider, w, h); + gtk_widget_add_events (hslider, GDK_BUTTON_PRESS_MASK | + GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK); + + DRAW_CONNECT (hslider, hslider_draw); + + g_signal_connect (hslider, "button-press-event", (GCallback) + hslider_button_press, NULL); + g_signal_connect (hslider, "button-release-event", (GCallback) + hslider_button_release, NULL); + g_signal_connect (hslider, "motion-notify-event", (GCallback) + hslider_motion_notify, NULL); + g_signal_connect (hslider, "destroy", (GCallback) hslider_destroy, NULL); + + HSliderData * data = g_malloc0 (sizeof (HSliderData)); + data->min = min; + data->max = max; + data->pos = min; + data->si = si; + data->w = w; + data->h = h; + data->fx = fx; + data->fy = fy; + data->kw = kw; + data->kh = kh; + data->knx = knx; + data->kny = kny; + data->kpx = kpx; + data->kpy = kpy; + g_object_set_data ((GObject *) hslider, "hsliderdata", data); - g_signal_emit_by_name(widget, "motion", priv->position); + return hslider; +} - if (widget_really_drawable (widget)) - ui_skinned_horizontal_slider_expose (widget, 0); - } +void hslider_set_frame (GtkWidget * hslider, gint fx, gint fy) +{ + HSliderData * data = g_object_get_data ((GObject *) hslider, "hsliderdata"); + g_return_if_fail (data); - return TRUE; + data->fx = fx; + data->fy = fy; + gtk_widget_queue_draw (hslider); } -static void ui_skinned_horizontal_slider_toggle_scaled(UiSkinnedHorizontalSlider *horizontal_slider) { - GtkWidget *widget = GTK_WIDGET (horizontal_slider); - UiSkinnedHorizontalSliderPrivate *priv = UI_SKINNED_HORIZONTAL_SLIDER_GET_PRIVATE(horizontal_slider); +void hslider_set_knob (GtkWidget * hslider, gint knx, gint kny, gint kpx, gint + kpy) +{ + HSliderData * data = g_object_get_data ((GObject *) hslider, "hsliderdata"); + g_return_if_fail (data); - priv->scaled = !priv->scaled; + data->knx = knx; + data->kny = kny; + data->kpx = kpx; + data->kpy = kpy; + gtk_widget_queue_draw (hslider); +} - gtk_widget_set_size_request(widget, - priv->width*(priv->scaled ? config.scale_factor : 1), - priv->height*(priv->scaled ? config.scale_factor : 1)); +gint hslider_get_pos (GtkWidget * hslider) +{ + HSliderData * data = g_object_get_data ((GObject *) hslider, "hsliderdata"); + g_return_val_if_fail (data, 0); - if (widget_really_drawable (widget)) - ui_skinned_horizontal_slider_expose (widget, 0); + return data->pos; } -void ui_skinned_horizontal_slider_set_position(GtkWidget *widget, gint pos) { - g_return_if_fail (UI_SKINNED_IS_HORIZONTAL_SLIDER (widget)); - UiSkinnedHorizontalSlider *hs = UI_SKINNED_HORIZONTAL_SLIDER(widget); - UiSkinnedHorizontalSliderPrivate *priv = UI_SKINNED_HORIZONTAL_SLIDER_GET_PRIVATE(widget); +void hslider_set_pos (GtkWidget * hslider, gint pos) +{ + HSliderData * data = g_object_get_data ((GObject *) hslider, "hsliderdata"); + g_return_if_fail (data); - if (pos == priv->position || hs->pressed) + if (data->pressed) return; - priv->position = pos; + data->pos = CLAMP (pos, data->min, data->max); + gtk_widget_queue_draw (hslider); +} - if (priv->frame_cb) - priv->frame = priv->frame_cb(priv->position); +gboolean hslider_get_pressed (GtkWidget * hslider) +{ + HSliderData * data = g_object_get_data ((GObject *) hslider, "hsliderdata"); + g_return_val_if_fail (data, FALSE); - if (widget_really_drawable (widget)) - ui_skinned_horizontal_slider_expose (widget, 0); + return data->pressed; } -gint ui_skinned_horizontal_slider_get_position(GtkWidget *widget) { - g_return_val_if_fail (UI_SKINNED_IS_HORIZONTAL_SLIDER (widget), -1); - UiSkinnedHorizontalSliderPrivate *priv = UI_SKINNED_HORIZONTAL_SLIDER_GET_PRIVATE(widget); - return priv->position; +void hslider_set_pressed (GtkWidget * hslider, gboolean pressed) +{ + HSliderData * data = g_object_get_data ((GObject *) hslider, "hsliderdata"); + g_return_if_fail (data); + + data->pressed = pressed; + gtk_widget_queue_draw (hslider); +} + +void hslider_on_motion (GtkWidget * hslider, void (* callback) (void)) +{ + HSliderData * data = g_object_get_data ((GObject *) hslider, "hsliderdata"); + g_return_if_fail (data); + + data->on_motion = callback; +} + +void hslider_on_release (GtkWidget * hslider, void (* callback) (void)) +{ + HSliderData * data = g_object_get_data ((GObject *) hslider, "hsliderdata"); + g_return_if_fail (data); + + data->on_release = callback; } diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_horizontal_slider.h audacious-plugins-3.2/src/skins/ui_skinned_horizontal_slider.h --- audacious-plugins-2.4.4/src/skins/ui_skinned_horizontal_slider.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_horizontal_slider.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -24,46 +25,21 @@ * Audacious or using our public API to be a derived work. */ -#ifndef AUDACIOUS_UI_SKINNED_HORIZONTAL_SLIDER_H -#define AUDACIOUS_UI_SKINNED_HORIZONTAL_SLIDER_H +#ifndef SKINS_UI_SKINNED_HORIZONTAL_SLIDER_H +#define SKINS_UI_SKINNED_HORIZONTAL_SLIDER_H #include -#include "ui_skin.h" -#ifdef __cplusplus -extern "C" { -#endif - -#define UI_SKINNED_HORIZONTAL_SLIDER(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, ui_skinned_horizontal_slider_get_type (), UiSkinnedHorizontalSlider) -#define UI_SKINNED_HORIZONTAL_SLIDER_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, ui_skinned_horizontal_slider_get_type (), UiSkinnedHorizontalSliderClass) -#define UI_SKINNED_IS_HORIZONTAL_SLIDER(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, ui_skinned_horizontal_slider_get_type ()) - -typedef struct _UiSkinnedHorizontalSlider UiSkinnedHorizontalSlider; -typedef struct _UiSkinnedHorizontalSliderClass UiSkinnedHorizontalSliderClass; +GtkWidget * hslider_new (gint min, gint max, SkinPixmapId si, gint w, gint h, + gint fx, gint fy, gint kw, gint kh, gint knx, gint kny, gint kpx, gint kpy); +void hslider_set_frame (GtkWidget * hslider, gint fx, gint fy); +void hslider_set_knob (GtkWidget * hslider, gint knx, gint kny, gint kpx, gint + kpy); +gint hslider_get_pos (GtkWidget * hslider); +void hslider_set_pos (GtkWidget * hslider, gint pos); +gboolean hslider_get_pressed (GtkWidget * hslider); +void hslider_set_pressed (GtkWidget * hslider, gboolean pressed); +void hslider_on_motion (GtkWidget * hslider, void (* callback) (void)); +void hslider_on_release (GtkWidget * hslider, void (* callback) (void)); -struct _UiSkinnedHorizontalSlider { - GtkWidget widget; - GdkWindow *event_window; - gboolean pressed; - gint x, y; - gint knob_nx, knob_ny, knob_px, knob_py; -}; - -struct _UiSkinnedHorizontalSliderClass { - GtkWidgetClass parent_class; - void (* motion) (UiSkinnedHorizontalSlider *horizontal_slider); - void (* release) (UiSkinnedHorizontalSlider *horizontal_slider); - void (* scaled) (UiSkinnedHorizontalSlider *horizontal_slider); -}; -GtkWidget* ui_skinned_horizontal_slider_new(GtkWidget *fixed, gint x, gint y, gint w, gint h, gint knx, gint kny, - gint kpx, gint kpy, gint kw, gint kh, gint fh, - gint fo, gint min, gint max, gint(*fcb) (gint), SkinPixmapId si); -GType ui_skinned_horizontal_slider_get_type(void); -void ui_skinned_horizontal_slider_set_position(GtkWidget *widget, gint pos); -gint ui_skinned_horizontal_slider_get_position(GtkWidget *widget); - -#ifdef __cplusplus -} #endif - -#endif /* AUDACIOUS_UI_SKINNED_HORIZONTAL_SLIDER_H */ diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_menurow.c audacious-plugins-3.2/src/skins/ui_skinned_menurow.c --- audacious-plugins-2.4.4/src/skins/ui_skinned_menurow.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_menurow.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -24,358 +25,130 @@ * Audacious or using our public API to be a derived work. */ -#include -#include "plugin.h" +#include "draw-compat.h" +#include "skins_cfg.h" +#include "ui_skin.h" #include "ui_skinned_menurow.h" -#include "util.h" -enum { - DOUBLED, - CHANGE, - RELEASE, - LAST_SIGNAL -}; - -static void ui_skinned_menurow_class_init (UiSkinnedMenurowClass *klass); -static void ui_skinned_menurow_init (UiSkinnedMenurow *menurow); -static void ui_skinned_menurow_destroy (GtkObject *object); -static void ui_skinned_menurow_realize (GtkWidget *widget); -static void ui_skinned_menurow_unrealize (GtkWidget *widget); -static void ui_skinned_menurow_map (GtkWidget *widget); -static void ui_skinned_menurow_unmap (GtkWidget *widget); -static void ui_skinned_menurow_size_request (GtkWidget *widget, GtkRequisition *requisition); -static void ui_skinned_menurow_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -static gboolean ui_skinned_menurow_expose (GtkWidget *widget, GdkEventExpose *event); -static MenuRowItem menurow_find_selected (UiSkinnedMenurow * mr, gint x, gint y); -static gboolean ui_skinned_menurow_button_press (GtkWidget *widget, GdkEventButton *event); -static gboolean ui_skinned_menurow_button_release (GtkWidget *widget, GdkEventButton *event); -static gboolean ui_skinned_menurow_motion_notify (GtkWidget *widget, GdkEventMotion *event); -static void ui_skinned_menurow_toggle_scaled (UiSkinnedMenurow *menurow); - -static GtkWidgetClass *parent_class = NULL; -static guint menurow_signals[LAST_SIGNAL] = { 0 }; - -GType ui_skinned_menurow_get_type() { - static GType menurow_type = 0; - if (!menurow_type) { - static const GTypeInfo menurow_info = { - sizeof (UiSkinnedMenurowClass), - NULL, - NULL, - (GClassInitFunc) ui_skinned_menurow_class_init, - NULL, - NULL, - sizeof (UiSkinnedMenurow), - 0, - (GInstanceInitFunc) ui_skinned_menurow_init, - }; - menurow_type = g_type_register_static (GTK_TYPE_WIDGET, "UiSkinnedMenurow", &menurow_info, 0); - } - - return menurow_type; -} - -static void ui_skinned_menurow_class_init(UiSkinnedMenurowClass *klass) { - GObjectClass *gobject_class; - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - gobject_class = G_OBJECT_CLASS(klass); - object_class = (GtkObjectClass*) klass; - widget_class = (GtkWidgetClass*) klass; - parent_class = g_type_class_peek_parent(klass); - - object_class->destroy = ui_skinned_menurow_destroy; - - widget_class->realize = ui_skinned_menurow_realize; - widget_class->unrealize = ui_skinned_menurow_unrealize; - widget_class->map = ui_skinned_menurow_map; - widget_class->unmap = ui_skinned_menurow_unmap; - widget_class->expose_event = ui_skinned_menurow_expose; - widget_class->size_request = ui_skinned_menurow_size_request; - widget_class->size_allocate = ui_skinned_menurow_size_allocate; - widget_class->button_press_event = ui_skinned_menurow_button_press; - widget_class->button_release_event = ui_skinned_menurow_button_release; - widget_class->motion_notify_event = ui_skinned_menurow_motion_notify; - - klass->scaled = ui_skinned_menurow_toggle_scaled; - klass->change = NULL; - klass->release = NULL; - - menurow_signals[DOUBLED] = - g_signal_new ("toggle-scaled", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSkinnedMenurowClass, scaled), NULL, NULL, - g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - - - menurow_signals[CHANGE] = - g_signal_new ("change", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSkinnedMenurowClass, change), NULL, NULL, - g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT); - - menurow_signals[RELEASE] = - g_signal_new ("release", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSkinnedMenurowClass, release), NULL, NULL, - g_cclosure_marshal_VOID__UINT_POINTER, G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_POINTER); - -} - -static void ui_skinned_menurow_init(UiSkinnedMenurow *menurow) { - menurow->scale_selected = config.scaled; - menurow->always_selected = config.always_on_top; - - menurow->event_window = NULL; - GTK_WIDGET_SET_FLAGS(menurow, GTK_NO_WINDOW); -} - -GtkWidget* ui_skinned_menurow_new(GtkWidget *fixed, gint x, gint y, gint nx, gint ny, gint sx, gint sy, SkinPixmapId si) { - UiSkinnedMenurow *menurow = g_object_new (ui_skinned_menurow_get_type (), NULL); - - menurow->x = x; - menurow->y = y; - menurow->width = 8; - menurow->height = 43; - menurow->nx = nx; - menurow->ny = ny; - menurow->sx = sx; - menurow->sy = sy; - menurow->selected = MENUROW_NONE; - - menurow->skin_index = si; - - menurow->scaled = FALSE; - - gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(menurow), menurow->x, menurow->y); - - return GTK_WIDGET(menurow); -} - -static void ui_skinned_menurow_destroy(GtkObject *object) { - UiSkinnedMenurow *menurow; +static struct { + MenuRowItem selected; + gboolean pushed; +} mr; - g_return_if_fail (object != NULL); - g_return_if_fail (UI_SKINNED_IS_MENUROW (object)); - - menurow = UI_SKINNED_MENUROW (object); - - if (GTK_OBJECT_CLASS (parent_class)->destroy) - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); -} - -static void ui_skinned_menurow_realize(GtkWidget *widget) { - UiSkinnedMenurow *menurow; - GdkWindowAttr attributes; - gint attributes_mask; - - g_return_if_fail (widget != NULL); - g_return_if_fail (UI_SKINNED_IS_MENUROW(widget)); - - if (GTK_WIDGET_CLASS (parent_class)->realize) - (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); - menurow = UI_SKINNED_MENUROW(widget); - - attributes.x = widget->allocation.x; - attributes.y = widget->allocation.y; - attributes.width = widget->allocation.width; - attributes.height = widget->allocation.height; - attributes.wclass = GDK_INPUT_ONLY; - attributes.window_type = GDK_WINDOW_CHILD; - attributes.event_mask = gtk_widget_get_events(widget); - attributes.event_mask |= GDK_BUTTON_PRESS_MASK | - GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK; - - attributes_mask = GDK_WA_X | GDK_WA_Y; - menurow->event_window = gdk_window_new(widget->window, &attributes, attributes_mask); - - gdk_window_set_user_data(menurow->event_window, widget); -} - -static void ui_skinned_menurow_unrealize(GtkWidget *widget) { - UiSkinnedMenurow *menurow = UI_SKINNED_MENUROW(widget); - - if ( menurow->event_window != NULL ) +DRAW_FUNC_BEGIN (menurow_draw) + if (mr.selected == MENUROW_NONE) { - gdk_window_set_user_data( menurow->event_window , NULL ); - gdk_window_destroy( menurow->event_window ); - menurow->event_window = NULL; + if (mr.pushed) + skin_draw_pixbuf (cr, SKIN_TITLEBAR, 304, 0, 0, 0, 8, 43); + else + skin_draw_pixbuf (cr, SKIN_TITLEBAR, 312, 0, 0, 0, 8, 43); } + else + skin_draw_pixbuf (cr, SKIN_TITLEBAR, 304 + 8 * (mr.selected - 1), 44, 0, + 0, 8, 43); - if (GTK_WIDGET_CLASS (parent_class)->unrealize) - (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); -} - -static void ui_skinned_menurow_map (GtkWidget *widget) -{ - UiSkinnedMenurow *menurow = UI_SKINNED_MENUROW(widget); - - if (menurow->event_window != NULL) - gdk_window_show (menurow->event_window); - - if (GTK_WIDGET_CLASS (parent_class)->map) - (* GTK_WIDGET_CLASS (parent_class)->map) (widget); -} + if (mr.pushed) + { + if (config.always_on_top) + skin_draw_pixbuf (cr, SKIN_TITLEBAR, 312, 54, 0, 10, 8, 8); +#if 0 + if (config.scaled) + skin_draw_pixbuf (cr, SKIN_TITLEBAR, 328, 70, 0, 26, 8, 8); +#endif + } +DRAW_FUNC_END -static void ui_skinned_menurow_unmap (GtkWidget *widget) +static MenuRowItem menurow_find_selected (gint x, gint y) { - UiSkinnedMenurow *menurow = UI_SKINNED_MENUROW(widget); - - if (menurow->event_window != NULL) - gdk_window_hide (menurow->event_window); - - if (GTK_WIDGET_CLASS (parent_class)->unmap) - (* GTK_WIDGET_CLASS (parent_class)->unmap) (widget); -} - -static void ui_skinned_menurow_size_request(GtkWidget *widget, GtkRequisition *requisition) { - UiSkinnedMenurow *menurow = UI_SKINNED_MENUROW(widget); - - requisition->width = menurow->width*(menurow->scaled ? config.scale_factor : 1); - requisition->height = menurow->height*(menurow->scaled ? config.scale_factor : 1); -} - -static void ui_skinned_menurow_size_allocate(GtkWidget *widget, GtkAllocation *allocation) { - UiSkinnedMenurow *menurow = UI_SKINNED_MENUROW (widget); - - widget->allocation = *allocation; - widget->allocation.x *= (menurow->scaled ? config.scale_factor : 1); - widget->allocation.y *= (menurow->scaled ? config.scale_factor : 1); - if (GTK_WIDGET_REALIZED (widget)) - if (menurow->event_window) - gdk_window_move_resize(menurow->event_window, widget->allocation.x, widget->allocation.y, allocation->width, allocation->height); - - menurow->x = widget->allocation.x/(menurow->scaled ? config.scale_factor : 1); - menurow->y = widget->allocation.y/(menurow->scaled ? config.scale_factor : 1); -} - -static gboolean ui_skinned_menurow_expose(GtkWidget *widget, GdkEventExpose *event) { - UiSkinnedMenurow *menurow = UI_SKINNED_MENUROW (widget); - g_return_val_if_fail (menurow->width > 0 && menurow->height > 0, FALSE); - - GdkPixbuf *obj = NULL; - obj = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, menurow->width, menurow->height); - - if (menurow->selected == MENUROW_NONE) { - if (config.always_show_cb || menurow->pushed) - skin_draw_pixbuf(widget, aud_active_skin, obj, menurow->skin_index, - menurow->nx, menurow->ny, 0, 0, 8, 43); - else - skin_draw_pixbuf(widget, aud_active_skin, obj, menurow->skin_index, - menurow->nx + 8, menurow->ny, 0, 0, 8, 43); - } - else { - skin_draw_pixbuf(widget, aud_active_skin, obj, menurow->skin_index, - menurow->sx + ((menurow->selected - 1) * 8), - menurow->sy, 0, 0, 8, 43); - } - if (config.always_show_cb || menurow->pushed) { - if (menurow->always_selected) - skin_draw_pixbuf(widget, aud_active_skin, obj, menurow->skin_index, - menurow->sx + 8, menurow->sy + 10, 0, 10, 8, 8); - if (menurow->scale_selected) - skin_draw_pixbuf(widget, aud_active_skin, obj, menurow->skin_index, - menurow->sx + 24, menurow->sy + 26, 0, 26, 8, 8); + if (x >= 0 && x < 8) + { + if (y >= 0 && y < 10) + return MENUROW_OPTIONS; + if (y >= 10 && y < 18) + return MENUROW_ALWAYS; + if (y >= 18 && y < 26) + return MENUROW_FILEINFOBOX; + if (y >= 26 && y < 34) + return MENUROW_SCALE; + if (y >= 34 && y < 43) + return MENUROW_VISUALIZATION; } - ui_skinned_widget_draw_with_coordinates(widget, obj, menurow->width, menurow->height, - widget->allocation.x, - widget->allocation.y, - menurow->scaled); - - g_object_unref(obj); - - return FALSE; + return MENUROW_NONE; } -void ui_skinned_menurow_update (GtkWidget * row) +static gboolean menurow_button_press (GtkWidget * widget, GdkEventButton * event) { - if (widget_really_drawable (row)) - ui_skinned_menurow_expose (row, 0); -} + if (event->button != 1) + return FALSE; -static MenuRowItem menurow_find_selected(UiSkinnedMenurow * mr, gint x, gint y) { - MenuRowItem ret = MENUROW_NONE; + mr.pushed = TRUE; + mr.selected = menurow_find_selected (event->x, event->y); - x = x/(mr->scaled ? config.scale_factor : 1); - y = y/(mr->scaled ? config.scale_factor : 1); - if (x > 0 && x < 8) { - if (y >= 0 && y <= 10) - ret = MENUROW_OPTIONS; - if (y >= 10 && y <= 17) - ret = MENUROW_ALWAYS; - if (y >= 18 && y <= 25) - ret = MENUROW_FILEINFOBOX; - if (y >= 26 && y <= 33) - ret = MENUROW_SCALE; - if (y >= 34 && y <= 42) - ret = MENUROW_VISUALIZATION; - } - return ret; -} - -static gboolean ui_skinned_menurow_button_press(GtkWidget *widget, GdkEventButton *event) { - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (UI_SKINNED_IS_MENUROW (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - UiSkinnedMenurow *menurow = UI_SKINNED_MENUROW (widget); - - if (event->type == GDK_BUTTON_PRESS) { - if (event->button == 1) { - - menurow->pushed = TRUE; - menurow->selected = menurow_find_selected(menurow, event->x, event->y); - - ui_skinned_menurow_update (widget); - g_signal_emit_by_name(widget, "change", menurow->selected); - } - } + mainwin_mr_change (mr.selected); + gtk_widget_queue_draw (widget); return TRUE; } -static gboolean ui_skinned_menurow_button_release(GtkWidget *widget, GdkEventButton *event) { - UiSkinnedMenurow *menurow = UI_SKINNED_MENUROW(widget); - if (menurow->pushed) { - menurow->pushed = FALSE; - - if (menurow->selected == MENUROW_ALWAYS) - menurow->always_selected = !menurow->always_selected; +static gboolean menurow_button_release (GtkWidget * widget, GdkEventButton * + event) +{ + if (event->button != 1) + return FALSE; - if (menurow->selected == MENUROW_SCALE) - menurow->scale_selected = !menurow->scale_selected; + if (! mr.pushed) + return TRUE; - if ((int)(menurow->selected) != -1) - g_signal_emit_by_name(widget, "release", menurow->selected, event); + if (mr.selected == MENUROW_ALWAYS) + config.always_on_top = ! config.always_on_top; +#if 0 + else if (mr.selected == MENUROW_SCALE) + config.scaled = ! config.scaled; +#endif - menurow->selected = MENUROW_NONE; - ui_skinned_menurow_update (widget); - } + mainwin_mr_release (mr.selected, event); + mr.pushed = FALSE; + mr.selected = MENUROW_NONE; + + gtk_widget_queue_draw (widget); return TRUE; } -static gboolean ui_skinned_menurow_motion_notify(GtkWidget *widget, GdkEventMotion *event) { - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (UI_SKINNED_IS_MENUROW (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - UiSkinnedMenurow *menurow = UI_SKINNED_MENUROW(widget); +static gboolean menurow_motion_notify (GtkWidget * widget, GdkEventMotion * + event) +{ + if (! mr.pushed) + return TRUE; - if (menurow->pushed) { - menurow->selected = menurow_find_selected(menurow, event->x, event->y); + mr.selected = menurow_find_selected (event->x, event->y); - ui_skinned_menurow_update (widget); - g_signal_emit_by_name(widget, "change", menurow->selected); - } + mainwin_mr_change (mr.selected); + gtk_widget_queue_draw (widget); return TRUE; } -static void ui_skinned_menurow_toggle_scaled(UiSkinnedMenurow *menurow) { - GtkWidget *widget = GTK_WIDGET (menurow); +GtkWidget * ui_skinned_menurow_new (void) +{ + GtkWidget * wid = gtk_drawing_area_new (); + gtk_widget_set_size_request (wid, 8, 43); + gtk_widget_add_events (wid, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + | GDK_POINTER_MOTION_MASK); + + DRAW_CONNECT (wid, menurow_draw); + g_signal_connect (wid, "button-press-event", (GCallback) + menurow_button_press, NULL); + g_signal_connect (wid, "button-release-event", (GCallback) + menurow_button_release, NULL); + g_signal_connect (wid, "motion-notify-event", (GCallback) + menurow_motion_notify, NULL); - menurow->scaled = !menurow->scaled; - gtk_widget_set_size_request(widget, menurow->width* (menurow->scaled ? config.scale_factor : 1), - menurow->height * (menurow->scaled ? config.scale_factor : 1)); + return wid; +} - ui_skinned_menurow_update (widget); +void ui_skinned_menurow_update (GtkWidget * menurow) +{ + gtk_widget_queue_draw (menurow); } diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_menurow.h audacious-plugins-3.2/src/skins/ui_skinned_menurow.h --- audacious-plugins-2.4.4/src/skins/ui_skinned_menurow.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_menurow.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -24,56 +25,21 @@ * Audacious or using our public API to be a derived work. */ -#ifndef AUDACIOUS_UI_SKINNED_MENUROW_H -#define AUDACIOUS_UI_SKINNED_MENUROW_H +#ifndef SKINS_UI_SKINNED_MENUROW_H +#define SKINS_UI_SKINNED_MENUROW_H #include -#include "ui_skin.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define UI_SKINNED_MENUROW(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, ui_skinned_menurow_get_type (), UiSkinnedMenurow) -#define UI_SKINNED_MENUROW_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, ui_skinned_menurow_get_type (), UiSkinnedMenurowClass) -#define UI_SKINNED_IS_MENUROW(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, ui_skinned_menurow_get_type ()) - -typedef struct _UiSkinnedMenurow UiSkinnedMenurow; -typedef struct _UiSkinnedMenurowClass UiSkinnedMenurowClass; typedef enum { MENUROW_NONE, MENUROW_OPTIONS, MENUROW_ALWAYS, MENUROW_FILEINFOBOX, MENUROW_SCALE, MENUROW_VISUALIZATION } MenuRowItem; -struct _UiSkinnedMenurow { - GtkWidget widget; +GtkWidget * ui_skinned_menurow_new (void); +void ui_skinned_menurow_update (GtkWidget * menurow); - GdkWindow *event_window; - gint x, y, width, height; - gboolean scaled; - gint nx, ny; - gint sx, sy; - MenuRowItem selected; - gboolean always_selected; - gboolean scale_selected; - gboolean pushed; - SkinPixmapId skin_index; -}; - -struct _UiSkinnedMenurowClass { - GtkWidgetClass parent_class; - void (* scaled) (UiSkinnedMenurow *menurow); - void (* change) (UiSkinnedMenurow *menurow); - void (* release) (UiSkinnedMenurow *menurow); -}; - -GtkWidget* ui_skinned_menurow_new (GtkWidget *fixed, gint x, gint y, gint nx, gint ny, gint sx, gint sy, SkinPixmapId si); -GType ui_skinned_menurow_get_type(void); -void ui_skinned_menurow_update (GtkWidget * row); +/* callbacks in ui_main.c */ +void mainwin_mr_change (MenuRowItem i); +void mainwin_mr_release (MenuRowItem i, GdkEventButton * event); -#ifdef __cplusplus -} #endif - -#endif /* AUDACIOUS_UI_SKINNED_MENUROW_H */ diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_monostereo.c audacious-plugins-3.2/src/skins/ui_skinned_monostereo.c --- audacious-plugins-2.4.4/src/skins/ui_skinned_monostereo.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_monostereo.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -24,177 +25,41 @@ * Audacious or using our public API to be a derived work. */ +#include "draw-compat.h" #include "ui_skin.h" #include "ui_skinned_monostereo.h" -#include "skins_cfg.h" -#include "util.h" -enum { - DOUBLED, - LAST_SIGNAL -}; +static gint monostereo_num_channels; -static void ui_skinned_monostereo_class_init (UiSkinnedMonoStereoClass *klass); -static void ui_skinned_monostereo_init (UiSkinnedMonoStereo *monostereo); -static void ui_skinned_monostereo_destroy (GtkObject *object); -static void ui_skinned_monostereo_realize (GtkWidget *widget); -static void ui_skinned_monostereo_size_request (GtkWidget *widget, GtkRequisition *requisition); -static void ui_skinned_monostereo_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -static gboolean ui_skinned_monostereo_expose (GtkWidget *widget, GdkEventExpose *event); -static void ui_skinned_monostereo_toggle_scaled (UiSkinnedMonoStereo *monostereo); - -static GtkWidgetClass *parent_class = NULL; -static guint monostereo_signals[LAST_SIGNAL] = { 0 }; - -GType ui_skinned_monostereo_get_type() { - static GType monostereo_type = 0; - if (!monostereo_type) { - static const GTypeInfo monostereo_info = { - sizeof (UiSkinnedMonoStereoClass), - NULL, - NULL, - (GClassInitFunc) ui_skinned_monostereo_class_init, - NULL, - NULL, - sizeof (UiSkinnedMonoStereo), - 0, - (GInstanceInitFunc) ui_skinned_monostereo_init, - }; - monostereo_type = g_type_register_static (GTK_TYPE_WIDGET, "UiSkinnedMonoStereo", &monostereo_info, 0); - } - - return monostereo_type; -} - -static void ui_skinned_monostereo_class_init(UiSkinnedMonoStereoClass *klass) { - GObjectClass *gobject_class; - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - gobject_class = G_OBJECT_CLASS(klass); - object_class = (GtkObjectClass*) klass; - widget_class = (GtkWidgetClass*) klass; - parent_class = g_type_class_peek_parent(klass); - - object_class->destroy = ui_skinned_monostereo_destroy; - - widget_class->realize = ui_skinned_monostereo_realize; - widget_class->expose_event = ui_skinned_monostereo_expose; - widget_class->size_request = ui_skinned_monostereo_size_request; - widget_class->size_allocate = ui_skinned_monostereo_size_allocate; - - klass->scaled = ui_skinned_monostereo_toggle_scaled; - - monostereo_signals[DOUBLED] = - g_signal_new ("toggle-scaled", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSkinnedMonoStereoClass, scaled), NULL, NULL, - g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); -} - -static void ui_skinned_monostereo_init(UiSkinnedMonoStereo *monostereo) { - monostereo->width = 56; - monostereo->height = 12; - - GTK_WIDGET_SET_FLAGS(monostereo, GTK_NO_WINDOW); -} - -GtkWidget* ui_skinned_monostereo_new(GtkWidget *fixed, gint x, gint y, SkinPixmapId si) { - UiSkinnedMonoStereo *monostereo = g_object_new (ui_skinned_monostereo_get_type (), NULL); - - monostereo->x = x; - monostereo->y = y; - monostereo->skin_index = si; - monostereo->scaled = FALSE; - - gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(monostereo), monostereo->x, monostereo->y); - - return GTK_WIDGET(monostereo); -} - -static void ui_skinned_monostereo_destroy(GtkObject *object) { - UiSkinnedMonoStereo *monostereo; - - g_return_if_fail (object != NULL); - g_return_if_fail (UI_SKINNED_IS_MONOSTEREO (object)); - - monostereo = UI_SKINNED_MONOSTEREO (object); - - if (GTK_OBJECT_CLASS (parent_class)->destroy) - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); -} - -static void ui_skinned_monostereo_realize(GtkWidget *widget) { - if (GTK_WIDGET_CLASS (parent_class)->realize) - (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); -} - -static void ui_skinned_monostereo_size_request(GtkWidget *widget, GtkRequisition *requisition) { - UiSkinnedMonoStereo *monostereo = UI_SKINNED_MONOSTEREO(widget); - - requisition->width = monostereo->width*(monostereo->scaled ? config.scale_factor : 1); - requisition->height = monostereo->height*(monostereo->scaled ? config.scale_factor : 1); -} - -static void ui_skinned_monostereo_size_allocate(GtkWidget *widget, GtkAllocation *allocation) { - UiSkinnedMonoStereo *monostereo = UI_SKINNED_MONOSTEREO (widget); - - widget->allocation = *allocation; - widget->allocation.x *= (monostereo->scaled ? config.scale_factor : 1); - widget->allocation.y *= (monostereo->scaled ? config.scale_factor : 1); - - monostereo->x = widget->allocation.x/(monostereo->scaled ? config.scale_factor : 1); - monostereo->y = widget->allocation.y/(monostereo->scaled ? config.scale_factor : 1); -} - -static gboolean ui_skinned_monostereo_expose(GtkWidget *widget, GdkEventExpose *event) { - UiSkinnedMonoStereo *monostereo = UI_SKINNED_MONOSTEREO (widget); - g_return_val_if_fail (monostereo->width > 0 && monostereo->height > 0, FALSE); - - GdkPixbuf *obj = NULL; - obj = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, monostereo->width, monostereo->height); - - switch (monostereo->num_channels) { +DRAW_FUNC_BEGIN (monostereo_draw) + switch (monostereo_num_channels) + { case -1: case 0: - skin_draw_pixbuf(widget, aud_active_skin, obj, monostereo->skin_index, 29, 12, 0, 0, 27, 12); - skin_draw_pixbuf(widget, aud_active_skin, obj, monostereo->skin_index, 0, 12, 27, 0, 29, 12); + skin_draw_pixbuf (cr, SKIN_MONOSTEREO, 29, 12, 0, 0, 27, 12); + skin_draw_pixbuf (cr, SKIN_MONOSTEREO, 0, 12, 27, 0, 29, 12); break; case 1: - skin_draw_pixbuf(widget, aud_active_skin, obj, monostereo->skin_index, 29, 0, 0, 0, 27, 12); - skin_draw_pixbuf(widget, aud_active_skin, obj, monostereo->skin_index, 0, 12, 27, 0, 29, 12); + skin_draw_pixbuf (cr, SKIN_MONOSTEREO, 29, 0, 0, 0, 27, 12); + skin_draw_pixbuf (cr, SKIN_MONOSTEREO, 0, 12, 27, 0, 29, 12); break; default: - skin_draw_pixbuf(widget, aud_active_skin, obj, monostereo->skin_index, 29, 12, 0, 0, 27, 12); - skin_draw_pixbuf(widget, aud_active_skin, obj, monostereo->skin_index, 0, 0, 27, 0, 29, 12); + skin_draw_pixbuf (cr, SKIN_MONOSTEREO, 29, 12, 0, 0, 27, 12); + skin_draw_pixbuf (cr, SKIN_MONOSTEREO, 0, 0, 27, 0, 29, 12); break; } +DRAW_FUNC_END - ui_skinned_widget_draw_with_coordinates(widget, obj, monostereo->width, monostereo->height, - widget->allocation.x, - widget->allocation.y, - monostereo->scaled); - - g_object_unref(obj); - - return FALSE; +GtkWidget * ui_skinned_monostereo_new (void) +{ + GtkWidget * monostereo = gtk_drawing_area_new (); + gtk_widget_set_size_request (monostereo, 56, 12); + DRAW_CONNECT (monostereo, monostereo_draw); + return monostereo; } -static void ui_skinned_monostereo_toggle_scaled(UiSkinnedMonoStereo *monostereo) { - GtkWidget *widget = GTK_WIDGET (monostereo); - - monostereo->scaled = !monostereo->scaled; - gtk_widget_set_size_request(widget, monostereo->width*(monostereo->scaled ? config.scale_factor : 1), monostereo->height*(monostereo->scaled ? config.scale_factor : 1)); - - if (widget_really_drawable (widget)) - ui_skinned_monostereo_expose (widget, 0); -} - -void ui_skinned_monostereo_set_num_channels(GtkWidget *widget, gint nch) { - g_return_if_fail (UI_SKINNED_IS_MONOSTEREO (widget)); - UiSkinnedMonoStereo *monostereo = UI_SKINNED_MONOSTEREO (widget); - - monostereo->num_channels = nch; - - if (widget_really_drawable (widget)) - ui_skinned_monostereo_expose (widget, 0); +void ui_skinned_monostereo_set_num_channels (GtkWidget * monostereo, gint nch) +{ + monostereo_num_channels = nch; + gtk_widget_queue_draw (monostereo); } diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_monostereo.h audacious-plugins-3.2/src/skins/ui_skinned_monostereo.h --- audacious-plugins-2.4.4/src/skins/ui_skinned_monostereo.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_monostereo.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -24,43 +25,12 @@ * Audacious or using our public API to be a derived work. */ -#ifndef AUDACIOUS_UI_SKINNED_MONOSTEREO_H -#define AUDACIOUS_UI_SKINNED_MONOSTEREO_H +#ifndef SKINS_UI_SKINNED_MONOSTEREO_H +#define SKINS_UI_SKINNED_MONOSTEREO_H #include -#include "ui_skin.h" -#ifdef __cplusplus -extern "C" { -#endif - -#define UI_SKINNED_MONOSTEREO(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, ui_skinned_monostereo_get_type (), UiSkinnedMonoStereo) -#define UI_SKINNED_MONOSTEREO_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, ui_skinned_monostereo_get_type (), UiSkinnedMonoStereoClass) -#define UI_SKINNED_IS_MONOSTEREO(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, ui_skinned_monostereo_get_type ()) - -typedef struct _UiSkinnedMonoStereo UiSkinnedMonoStereo; -typedef struct _UiSkinnedMonoStereoClass UiSkinnedMonoStereoClass; - -struct _UiSkinnedMonoStereo { - GtkWidget widget; - - gint x, y, width, height; - gint num_channels; - SkinPixmapId skin_index; - gboolean scaled; -}; - -struct _UiSkinnedMonoStereoClass { - GtkWidgetClass parent_class; - void (* scaled) (UiSkinnedMonoStereo *menurow); -}; - -GtkWidget* ui_skinned_monostereo_new (GtkWidget *fixed, gint x, gint y, SkinPixmapId si); -GType ui_skinned_monostereo_get_type(void); +GtkWidget * ui_skinned_monostereo_new (void); void ui_skinned_monostereo_set_num_channels(GtkWidget *widget, gint nch); -#ifdef __cplusplus -} #endif - -#endif /* AUDACIOUS_UI_SKINNED_MONOSTEREO_H */ diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_number.c audacious-plugins-3.2/src/skins/ui_skinned_number.c --- audacious-plugins-2.4.4/src/skins/ui_skinned_number.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_number.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -24,258 +25,68 @@ * Audacious or using our public API to be a derived work. */ +#include "draw-compat.h" +#include "ui_skin.h" #include "ui_skinned_number.h" -#include "skins_cfg.h" -#include "util.h" -#include -#include -#include -#include - -#define UI_TYPE_SKINNED_NUMBER (ui_skinned_number_get_type()) - -enum { - DOUBLED, - LAST_SIGNAL -}; - -static void ui_skinned_number_class_init (UiSkinnedNumberClass *klass); -static void ui_skinned_number_init (UiSkinnedNumber *number); -static void ui_skinned_number_destroy (GtkObject *object); -static void ui_skinned_number_realize (GtkWidget *widget); -static void ui_skinned_number_unrealize (GtkWidget *widget); -static void ui_skinned_number_map (GtkWidget *widget); -static void ui_skinned_number_unmap (GtkWidget *widget); -static void ui_skinned_number_size_request (GtkWidget *widget, GtkRequisition *requisition); -static void ui_skinned_number_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -static gboolean ui_skinned_number_expose (GtkWidget *widget, GdkEventExpose *event); -static void ui_skinned_number_toggle_scaled (UiSkinnedNumber *number); - -static GtkWidgetClass *parent_class = NULL; -static guint number_signals[LAST_SIGNAL] = { 0 }; - -GType ui_skinned_number_get_type() { - static GType number_type = 0; - if (!number_type) { - static const GTypeInfo number_info = { - sizeof (UiSkinnedNumberClass), - NULL, - NULL, - (GClassInitFunc) ui_skinned_number_class_init, - NULL, - NULL, - sizeof (UiSkinnedNumber), - 0, - (GInstanceInitFunc) ui_skinned_number_init, - }; - number_type = g_type_register_static (GTK_TYPE_WIDGET, "UiSkinnedNumber", &number_info, 0); - } +typedef struct { + gint w, h; + gint num; +} NumberData; + +DRAW_FUNC_BEGIN (number_draw) + NumberData * data = g_object_get_data ((GObject *) wid, "numberdata"); + g_return_val_if_fail (data, FALSE); - return number_type; -} - -static void ui_skinned_number_class_init(UiSkinnedNumberClass *klass) { - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass*) klass; - widget_class = (GtkWidgetClass*) klass; - parent_class = g_type_class_peek_parent(klass); - - object_class->destroy = ui_skinned_number_destroy; - - widget_class->realize = ui_skinned_number_realize; - widget_class->unrealize = ui_skinned_number_unrealize; - widget_class->map = ui_skinned_number_map; - widget_class->unmap = ui_skinned_number_unmap; - widget_class->expose_event = ui_skinned_number_expose; - widget_class->size_request = ui_skinned_number_size_request; - widget_class->size_allocate = ui_skinned_number_size_allocate; - - klass->scaled = ui_skinned_number_toggle_scaled; - - number_signals[DOUBLED] = - g_signal_new ("toggle-scaled", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSkinnedNumberClass, scaled), NULL, NULL, - g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); -} - -static void ui_skinned_number_init(UiSkinnedNumber *number) { - number->width = 9; - number->height = 13; - - number->event_window = NULL; - GTK_WIDGET_SET_FLAGS(number, GTK_NO_WINDOW); -} - -GtkWidget* ui_skinned_number_new(GtkWidget *fixed, gint x, gint y, SkinPixmapId si) { - UiSkinnedNumber *number = g_object_new (ui_skinned_number_get_type (), NULL); - - number->x = x; - number->y = y; - number->num = 0; - number->skin_index = si; - - number->scaled = FALSE; - - gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(number), number->x, number->y); - - return GTK_WIDGET(number); -} + skin_draw_pixbuf (cr, SKIN_NUMBERS, data->num * 9, 0, 0, 0, data->w, data->h); +DRAW_FUNC_END -static void ui_skinned_number_destroy(GtkObject *object) { - UiSkinnedNumber *number; - - g_return_if_fail (object != NULL); - g_return_if_fail (UI_SKINNED_IS_NUMBER (object)); - - number = UI_SKINNED_NUMBER (object); - - if (GTK_OBJECT_CLASS (parent_class)->destroy) - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); -} - -static void ui_skinned_number_realize(GtkWidget *widget) { - UiSkinnedNumber *number; - GdkWindowAttr attributes; - gint attributes_mask; - - g_return_if_fail (widget != NULL); - g_return_if_fail (UI_SKINNED_IS_NUMBER(widget)); - - if (GTK_WIDGET_CLASS (parent_class)->realize) - (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); - number = UI_SKINNED_NUMBER(widget); - - attributes.x = widget->allocation.x; - attributes.y = widget->allocation.y; - attributes.width = widget->allocation.width; - attributes.height = widget->allocation.height; - attributes.wclass = GDK_INPUT_ONLY; - attributes.window_type = GDK_WINDOW_CHILD; - attributes.event_mask = gtk_widget_get_events(widget); - attributes.event_mask |= GDK_BUTTON_PRESS_MASK; - - attributes_mask = GDK_WA_X | GDK_WA_Y; - number->event_window = gdk_window_new (widget->window, &attributes, attributes_mask); - - gdk_window_set_user_data(number->event_window, widget); -} - -static void ui_skinned_number_unrealize(GtkWidget *widget) { - UiSkinnedNumber *number = UI_SKINNED_NUMBER(widget); - - if ( number->event_window != NULL ) - { - gdk_window_set_user_data( number->event_window , NULL ); - gdk_window_destroy( number->event_window ); - number->event_window = NULL; - } - - if (GTK_WIDGET_CLASS (parent_class)->unrealize) - (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); -} - -static void ui_skinned_number_map (GtkWidget *widget) +static void number_destroy (GtkWidget * number) { - UiSkinnedNumber *number = UI_SKINNED_NUMBER (widget); - - if (number->event_window != NULL) - gdk_window_show (number->event_window); - - if (GTK_WIDGET_CLASS (parent_class)->map) - (* GTK_WIDGET_CLASS (parent_class)->map) (widget); + g_free (g_object_get_data ((GObject *) number, "numberdata")); } -static void ui_skinned_number_unmap (GtkWidget *widget) +GtkWidget * ui_skinned_number_new (void) { - UiSkinnedNumber *number = UI_SKINNED_NUMBER (widget); - - if (number->event_window != NULL) - gdk_window_hide (number->event_window); - - if (GTK_WIDGET_CLASS (parent_class)->unmap) - (* GTK_WIDGET_CLASS (parent_class)->unmap) (widget); -} + GtkWidget * number = gtk_drawing_area_new (); + gtk_widget_set_size_request (number, 9, 13); -static void ui_skinned_number_size_request(GtkWidget *widget, GtkRequisition *requisition) { - UiSkinnedNumber *number = UI_SKINNED_NUMBER(widget); + gtk_widget_add_events (number, GDK_BUTTON_PRESS_MASK | + GDK_BUTTON_RELEASE_MASK); - requisition->width = number->width * ( number->scaled ? config.scale_factor : 1 ); - requisition->height = number->height*( number->scaled ? config.scale_factor : 1); -} - -static void ui_skinned_number_size_allocate(GtkWidget *widget, GtkAllocation *allocation) { - UiSkinnedNumber *number = UI_SKINNED_NUMBER (widget); + DRAW_CONNECT (number, number_draw); + g_signal_connect (number, "destroy", (GCallback) number_destroy, NULL); - widget->allocation = *allocation; - widget->allocation.x *= (number->scaled ? config.scale_factor: 1 ); - widget->allocation.y *= (number->scaled ? config.scale_factor: 1 ); - if (GTK_WIDGET_REALIZED (widget)) - if (number->event_window) - gdk_window_move_resize(number->event_window, widget->allocation.x, widget->allocation.y, allocation->width, allocation->height); + NumberData * data = g_malloc0 (sizeof (NumberData)); + data->w = 9; + data->h = 13; + g_object_set_data ((GObject *) number, "numberdata", data); - number->x = widget->allocation.x/(number->scaled ? config.scale_factor : 1); - number->y = widget->allocation.y/(number->scaled ? config.scale_factor : 1); + return number; } -static gboolean ui_skinned_number_expose(GtkWidget *widget, GdkEventExpose *event) { - UiSkinnedNumber *number = UI_SKINNED_NUMBER (widget); - g_return_val_if_fail (number->width > 0 && number->height > 0, FALSE); - - GdkPixbuf *obj; - obj = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, number->width, number->height); - - if (number->num > 11 || number->num < 0) - number->num = 10; - - skin_draw_pixbuf(widget, aud_active_skin, obj, - number->skin_index, number->num * 9, 0, - 0, 0, number->width, number->height); - - ui_skinned_widget_draw_with_coordinates(widget, obj, number->width, number->height, - widget->allocation.x, - widget->allocation.y, - number->scaled); - - g_object_unref(obj); - - return FALSE; -} - -static void ui_skinned_number_toggle_scaled(UiSkinnedNumber *number) { - GtkWidget *widget = GTK_WIDGET (number); - number->scaled = !number->scaled; - - gtk_widget_set_size_request(widget, number->width * ( number->scaled ? config.scale_factor : 1), - number->height * ( number->scaled ? config.scale_factor : 1) ); - - if (widget_really_drawable (widget)) - ui_skinned_number_expose (widget, 0); -} - -void ui_skinned_number_set (GtkWidget * widget, gchar c) +void ui_skinned_number_set (GtkWidget * number, gchar c) { - UiSkinnedNumber * number = (UiSkinnedNumber *) widget; + NumberData * data = g_object_get_data ((GObject *) number, "numberdata"); + g_return_if_fail (data); + gint value = (c >= '0' && c <= '9') ? c - '0' : (c == '-') ? 11 : 10; - if (number->num == value) + if (data->num == value) return; - number->num = value; - - if (widget_really_drawable (widget)) - ui_skinned_number_expose (widget, 0); + data->num = value; + gtk_widget_queue_draw (number); } -void ui_skinned_number_set_size(GtkWidget *widget, gint width, gint height) { - g_return_if_fail(UI_SKINNED_IS_NUMBER(widget)); - UiSkinnedNumber *number = UI_SKINNED_NUMBER (widget); +void ui_skinned_number_set_size (GtkWidget * number, gint width, gint height) +{ + NumberData * data = g_object_get_data ((GObject *) number, "numberdata"); + g_return_if_fail (data); - number->width = width; - number->height = height; + data->w = width; + data->h = height; - gtk_widget_set_size_request(widget, width*(number->scaled ? config.scale_factor : 1 ), - height*(number->scaled ? config.scale_factor : 1 )); + gtk_widget_set_size_request (number, width, height); + gtk_widget_queue_draw (number); } diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_number.h audacious-plugins-3.2/src/skins/ui_skinned_number.h --- audacious-plugins-2.4.4/src/skins/ui_skinned_number.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_number.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,45 +19,13 @@ * Audacious or using our public API to be a derived work. */ -#ifndef AUDACIOUS_UI_SKINNED_NUMBER_H -#define AUDACIOUS_UI_SKINNED_NUMBER_H +#ifndef SKINS_UI_SKINNED_NUMBER_H +#define SKINS_UI_SKINNED_NUMBER_H #include -#include "ui_skin.h" -#ifdef __cplusplus -extern "C" { -#endif - -#define UI_SKINNED_NUMBER(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, ui_skinned_number_get_type (), UiSkinnedNumber) -#define UI_SKINNED_NUMBER_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, ui_skinned_number_get_type (), UiSkinnedNumberClass) -#define UI_SKINNED_IS_NUMBER(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, ui_skinned_number_get_type ()) - -typedef struct _UiSkinnedNumber UiSkinnedNumber; -typedef struct _UiSkinnedNumberClass UiSkinnedNumberClass; - -struct _UiSkinnedNumber { - GtkWidget widget; - - GdkWindow *event_window; - gint x, y, width, height; - gint num; - gboolean scaled; - SkinPixmapId skin_index; -}; - -struct _UiSkinnedNumberClass { - GtkWidgetClass parent_class; - void (* scaled) (UiSkinnedNumber *textbox); -}; - -GtkWidget* ui_skinned_number_new (GtkWidget *fixed, gint x, gint y, SkinPixmapId si); -GType ui_skinned_number_get_type(void); +GtkWidget * ui_skinned_number_new (); void ui_skinned_number_set (GtkWidget * widget, gchar c); void ui_skinned_number_set_size(GtkWidget *widget, gint width, gint height); -#ifdef __cplusplus -} #endif - -#endif /* AUDACIOUS_UI_SKINNED_NUMBER_H */ diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_playlist.c audacious-plugins-3.2/src/skins/ui_skinned_playlist.c --- audacious-plugins-2.4.4/src/skins/ui_skinned_playlist.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_playlist.c 2012-01-20 19:48:30.000000000 +0000 @@ -2,7 +2,7 @@ * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ * Copyright (c) 2008 William Pitcock - * Copyright 2009 John Lindgren + * Copyright (c) 2009-2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -27,668 +27,451 @@ * Audacious or using our public API to be a derived work. */ -/* - * A note about Pango and some funky spacey fonts: Weirdly baselined - * fonts, or fonts with weird ascents or descents _will_ display a - * little bit weird in the playlist widget, but the display engine - * won't make it look too bad, just a little deranged. I honestly - * don't think it's worth fixing (around...), it doesn't have to be - * perfectly fitting, just the general look has to be ok, which it - * IMHO is. - * - * A second note: The numbers aren't perfectly aligned, but in the - * end it looks better when using a single Pango layout for each - * number. - */ - #include -#include "ui_skinned_playlist.h" -#include "ui_skinned_playlist_slider.h" - -#include "debug.h" +#include "draw-compat.h" +#include "skins_cfg.h" #include "ui_playlist.h" #include "ui_manager.h" #include "ui_skin.h" -#include "util.h" -#include "skins_cfg.h" +#include "ui_skinned_playlist.h" +#include "ui_skinned_playlist_slider.h" -#include #include +#include +#include #include #include -#define UI_SKINNED_PLAYLIST_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), ui_skinned_playlist_get_type(), UiSkinnedPlaylistPrivate)) -typedef struct _UiSkinnedPlaylistPrivate UiSkinnedPlaylistPrivate; - enum {DRAG_SELECT = 1, DRAG_MOVE}; -struct _UiSkinnedPlaylistPrivate { +typedef struct { GtkWidget * slider; PangoFontDescription * font; - gint width, height, resize_width, resize_height, ascent, descent, - letter_width, digit_width, row_height, offset, rows, first, focused, - scroll, scroll_source, hover; - gboolean slanted, drag; -}; - -static void ui_skinned_playlist_class_init (UiSkinnedPlaylistClass *klass); -static void ui_skinned_playlist_init (UiSkinnedPlaylist *playlist); -static void ui_skinned_playlist_destroy (GtkObject *object); -static void ui_skinned_playlist_realize (GtkWidget *widget); -static void ui_skinned_playlist_size_request (GtkWidget *widget, GtkRequisition *requisition); -static void ui_skinned_playlist_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -static gboolean ui_skinned_playlist_expose (GtkWidget *widget, GdkEventExpose *event); -static gboolean ui_skinned_playlist_button_press (GtkWidget *widget, GdkEventButton *event); -static gboolean ui_skinned_playlist_button_release (GtkWidget *widget, GdkEventButton *event); -static gboolean ui_skinned_playlist_motion_notify (GtkWidget *widget, GdkEventMotion *event); -static gboolean ui_skinned_playlist_leave_notify (GtkWidget *widget, GdkEventCrossing *event); -static gboolean ui_skinned_playlist_popup_show (gpointer data); -static void ui_skinned_playlist_popup_hide (GtkWidget *widget); -static void ui_skinned_playlist_popup_timer_start (GtkWidget *widget); -static void ui_skinned_playlist_popup_timer_stop (GtkWidget *widget); - -static GtkWidgetClass *parent_class = NULL; - -GType ui_skinned_playlist_get_type() { - static GType playlist_type = 0; - if (!playlist_type) { - static const GTypeInfo playlist_info = { - sizeof (UiSkinnedPlaylistClass), - NULL, - NULL, - (GClassInitFunc) ui_skinned_playlist_class_init, - NULL, - NULL, - sizeof (UiSkinnedPlaylist), - 0, - (GInstanceInitFunc) ui_skinned_playlist_init, - }; - playlist_type = g_type_register_static (GTK_TYPE_WIDGET, "UiSkinnedPlaylist", &playlist_info, 0); - } - - return playlist_type; -} - -static void ui_skinned_playlist_class_init(UiSkinnedPlaylistClass *klass) { - GObjectClass *gobject_class; - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - gobject_class = G_OBJECT_CLASS(klass); - object_class = (GtkObjectClass*) klass; - widget_class = (GtkWidgetClass*) klass; - parent_class = g_type_class_peek_parent(klass); - - object_class->destroy = ui_skinned_playlist_destroy; - - widget_class->realize = ui_skinned_playlist_realize; - widget_class->expose_event = ui_skinned_playlist_expose; - widget_class->size_request = ui_skinned_playlist_size_request; - widget_class->size_allocate = ui_skinned_playlist_size_allocate; - widget_class->button_press_event = ui_skinned_playlist_button_press; - widget_class->button_release_event = ui_skinned_playlist_button_release; - widget_class->motion_notify_event = ui_skinned_playlist_motion_notify; - widget_class->leave_notify_event = ui_skinned_playlist_leave_notify; - - g_type_class_add_private (gobject_class, sizeof (UiSkinnedPlaylistPrivate)); -} - -static void ui_skinned_playlist_init(UiSkinnedPlaylist *playlist) { - UiSkinnedPlaylistPrivate *priv = UI_SKINNED_PLAYLIST_GET_PRIVATE(playlist); - priv->resize_width = 0; - priv->resize_height = 0; - priv->rows = 0; - priv->first = 0; - priv->focused = -1; - priv->drag = FALSE; - priv->scroll = 0; - priv->hover = -1; - - g_object_set_data(G_OBJECT(playlist), "timer_id", GINT_TO_POINTER(0)); - g_object_set_data(G_OBJECT(playlist), "timer_active", GINT_TO_POINTER(0)); - - g_object_set_data(G_OBJECT(playlist), "popup_active", GINT_TO_POINTER(0)); - g_object_set_data(G_OBJECT(playlist), "popup_position", GINT_TO_POINTER(-1)); -} - -GtkWidget * ui_skinned_playlist_new (GtkWidget * fixed, gint x, gint y, gint - width, gint height, const gchar * font) -{ - UiSkinnedPlaylist *hs = g_object_new (ui_skinned_playlist_get_type (), NULL); - UiSkinnedPlaylistPrivate *priv = UI_SKINNED_PLAYLIST_GET_PRIVATE(hs); - - priv->width = width; - priv->height = height; - priv->slider = NULL; + gint width, height, row_height, offset, rows, first, focused, scroll, + scroll_source, hover, drag; + gint popup_pos, popup_source; + gboolean popup_shown; +} PlaylistData; - ui_skinned_playlist_set_font ((GtkWidget *) hs, font); +static gboolean playlist_button_press (GtkWidget * list, GdkEventButton * event); +static gboolean playlist_button_release (GtkWidget * list, GdkEventButton * + event); +static gboolean playlist_motion (GtkWidget * list, GdkEventMotion * event); +static gboolean playlist_leave (GtkWidget * list, GdkEventCrossing * event); - gtk_fixed_put ((GtkFixed *) fixed, (GtkWidget *) hs, x, y); - gtk_widget_set_double_buffered(GTK_WIDGET(hs), TRUE); +static void popup_trigger (GtkWidget * list, PlaylistData * data, gint pos); +static void popup_hide (GtkWidget * list, PlaylistData * data); - return GTK_WIDGET(hs); -} - -void ui_skinned_playlist_set_slider (GtkWidget * list, GtkWidget * slider) -{ - UI_SKINNED_PLAYLIST_GET_PRIVATE ((UiSkinnedPlaylist *) list)->slider = - slider; -} - -static void cancel_all (GtkWidget * widget, UiSkinnedPlaylistPrivate * private) +static void calc_layout (PlaylistData * data) { - private->drag = FALSE; + data->rows = data->height / data->row_height; - if (private->scroll) + if (data->rows && active_title) { - private->scroll = 0; - g_source_remove (private->scroll_source); + data->offset = data->row_height; + data->rows --; } + else + data->offset = 0; - if (private->hover != -1) - { - private->hover = -1; - gtk_widget_queue_draw (widget); - } - - ui_skinned_playlist_popup_hide (widget); - ui_skinned_playlist_popup_timer_stop (widget); -} - -static void ui_skinned_playlist_destroy(GtkObject *object) { - g_return_if_fail (object != NULL); - g_return_if_fail (UI_SKINNED_IS_PLAYLIST (object)); - - cancel_all ((GtkWidget *) object, UI_SKINNED_PLAYLIST_GET_PRIVATE - ((UiSkinnedPlaylist *) object)); - - if (GTK_OBJECT_CLASS (parent_class)->destroy) - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); + if (data->first + data->rows > active_length) + data->first = active_length - data->rows; + if (data->first < 0) + data->first = 0; } -static void ui_skinned_playlist_realize(GtkWidget *widget) { - UiSkinnedPlaylist *playlist; - GdkWindowAttr attributes; - gint attributes_mask; - - g_return_if_fail (widget != NULL); - g_return_if_fail (UI_SKINNED_IS_PLAYLIST(widget)); - - GTK_WIDGET_SET_FLAGS(widget, GTK_REALIZED); - playlist = UI_SKINNED_PLAYLIST(widget); - - attributes.x = widget->allocation.x; - attributes.y = widget->allocation.y; - attributes.width = widget->allocation.width; - attributes.height = widget->allocation.height; - attributes.wclass = GDK_INPUT_OUTPUT; - attributes.window_type = GDK_WINDOW_CHILD; - attributes.event_mask = gtk_widget_get_events(widget); - attributes.event_mask |= GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | - GDK_LEAVE_NOTIFY_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK; - attributes.visual = gtk_widget_get_visual(widget); - attributes.colormap = gtk_widget_get_colormap(widget); - - attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; - widget->window = gdk_window_new(widget->parent->window, &attributes, attributes_mask); +static gint calc_position (PlaylistData * data, gint y) +{ + if (y < data->offset) + return -1; - widget->style = gtk_style_attach(widget->style, widget->window); - gdk_window_set_user_data(widget->window, widget); -} + gint position = data->first + (y - data->offset) / data->row_height; -static void ui_skinned_playlist_size_request(GtkWidget *widget, GtkRequisition *requisition) { - UiSkinnedPlaylistPrivate *priv = UI_SKINNED_PLAYLIST_GET_PRIVATE(widget); + if (position >= data->first + data->rows || position >= active_length) + return active_length; - requisition->width = priv->width; - requisition->height = priv->height; + return position; } -static void calc_layout (UiSkinnedPlaylistPrivate * private) +static gint adjust_position (PlaylistData * data, gboolean relative, gint + position) { - private->row_height = private->ascent - private->descent; - private->rows = private->height / private->row_height; + if (active_length == 0) + return -1; - if (private->rows && active_title != NULL) + if (relative) { - private->offset = private->row_height; - private->rows --; - } - else - private->offset = 0; + if (data->focused == -1) + return 0; - if (private->first + private->rows > active_length) - private->first = active_length - private->rows; - if (private->first < 0) - private->first = 0; -} + position += data->focused; + } -static void scroll_to (UiSkinnedPlaylistPrivate * private, int position) -{ - if (position < private->first || position >= private->first + private->rows) - private->first = position - private->rows / 2; + if (position < 0) + return 0; + if (position >= active_length) + return active_length - 1; - calc_layout (private); + return position; } -static void ui_skinned_playlist_size_allocate(GtkWidget *widget, GtkAllocation *allocation) { - UiSkinnedPlaylist *playlist = UI_SKINNED_PLAYLIST (widget); - UiSkinnedPlaylistPrivate *priv = UI_SKINNED_PLAYLIST_GET_PRIVATE(playlist); - - widget->allocation = *allocation; - if (GTK_WIDGET_REALIZED (widget)) - gdk_window_move_resize(widget->window, widget->allocation.x, widget->allocation.y, allocation->width, allocation->height); +static void cancel_all (GtkWidget * list, PlaylistData * data) +{ + data->drag = FALSE; - if (priv->height != widget->allocation.height || priv->width != widget->allocation.width) { - priv->width = priv->width + priv->resize_width; - priv->height = priv->height + priv->resize_height; - priv->resize_width = 0; - priv->resize_height = 0; + if (data->scroll) + { + data->scroll = 0; + g_source_remove (data->scroll_source); } - calc_layout (priv); - gtk_widget_queue_draw (widget); + if (data->hover != -1) + { + data->hover = -1; + gtk_widget_queue_draw (list); + } - if (priv->slider != NULL) - ui_skinned_playlist_slider_update (priv->slider); + popup_hide (list, data); } -static void -playlist_list_draw_string(cairo_t *cr, UiSkinnedPlaylist *pl, - PangoFontDescription * font, - gint line, - gint width, - const gchar * text, - guint ppos) -{ - UiSkinnedPlaylistPrivate * private; - gint plist_length_int, padding; - PangoLayout *layout; - - private = UI_SKINNED_PLAYLIST_GET_PRIVATE (pl); - - cairo_new_path(cr); +DRAW_FUNC_BEGIN (playlist_draw) + PlaylistData * data = g_object_get_data ((GObject *) wid, "playlistdata"); + g_return_val_if_fail (data, FALSE); - if (aud_cfg->show_numbers_in_pl) - { - gchar *pos_string = g_strdup_printf(config.show_separator_in_pl == TRUE ? "%d" : "%d.", ppos); - plist_length_int = - gint_count_digits (active_length) + ! config.show_separator_in_pl + 1; - - padding = private->digit_width * (plist_length_int + 1); + gint active_entry = aud_playlist_get_position (active_playlist); + gint left = 3, right = 3; + PangoLayout * layout; + gint width; - layout = gtk_widget_create_pango_layout(playlistwin, pos_string); - pango_layout_set_font_description (layout, private->font); - pango_layout_set_width(layout, plist_length_int * 100); + /* background */ - pango_layout_set_alignment(layout, PANGO_ALIGN_LEFT); + set_cairo_color (cr, active_skin->colors[SKIN_PLEDIT_NORMALBG]); + cairo_paint (cr); - cairo_move_to (cr, (private->digit_width * - (-1 + plist_length_int - strlen(pos_string))) + - private->digit_width / 4, private->offset + private->row_height * line); - pango_cairo_show_layout(cr, layout); + /* playlist title */ - g_free(pos_string); - g_object_unref(layout); + if (data->offset) + { + layout = gtk_widget_create_pango_layout (wid, active_title); + pango_layout_set_font_description (layout, data->font); + pango_layout_set_width (layout, PANGO_SCALE * (data->width - left - + right)); + pango_layout_set_alignment (layout, PANGO_ALIGN_CENTER); + pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_MIDDLE); - if (!config.show_separator_in_pl) - padding -= private->digit_width * 1.5; - } else { - padding = 3; + cairo_move_to (cr, left, 0); + set_cairo_color (cr, active_skin->colors[SKIN_PLEDIT_NORMAL]); + pango_cairo_show_layout (cr, layout); + g_object_unref (layout); } - width -= padding; + /* selection highlight */ - layout = gtk_widget_create_pango_layout(playlistwin, text); + for (gint i = data->first; i < data->first + data->rows && i < + active_length; i ++) + { + if (! aud_playlist_entry_get_selected (active_playlist, i)) + continue; - pango_layout_set_font_description (layout, private->font); - pango_layout_set_width(layout, width * PANGO_SCALE); - pango_layout_set_single_paragraph_mode(layout, TRUE); - pango_layout_set_ellipsize(layout, PANGO_ELLIPSIZE_END); + cairo_rectangle (cr, 0, data->offset + data->row_height * (i - + data->first), data->width, data->row_height); + set_cairo_color (cr, active_skin->colors[SKIN_PLEDIT_SELECTEDBG]); + cairo_fill (cr); + } - cairo_move_to (cr, padding + private->letter_width / 4, private->offset + - private->row_height * line); - pango_cairo_show_layout(cr, layout); + /* entry numbers */ - g_object_unref(layout); -} - -static gboolean ui_skinned_playlist_expose(GtkWidget *widget, GdkEventExpose *event) { - UiSkinnedPlaylist *pl = UI_SKINNED_PLAYLIST (widget); - UiSkinnedPlaylistPrivate *priv = UI_SKINNED_PLAYLIST_GET_PRIVATE(pl); - gint active_entry = aud_playlist_get_position (active_playlist); - PangoLayout *layout; - gint width, height; - gint i; - guint padding, padding_dwidth; - guint max_time_len = 0; - gfloat queue_tailpadding = 0; - gint tpadding; - gsize tpadding_dwidth = 0; - gint x, y; - guint tail_width; - guint tail_len; + if (aud_get_bool (NULL, "show_numbers_in_pl")) + { + width = 0; - gchar tail[100]; - gchar queuepos[255]; - gchar length[40]; + for (gint i = data->first; i < data->first + data->rows && i < + active_length; i ++) + { + gchar buf[16]; + snprintf (buf, sizeof buf, "%d.", 1 + i); - gchar **frags; - gchar *frag0; + layout = gtk_widget_create_pango_layout (wid, buf); + pango_layout_set_font_description (layout, data->font); - gint plw_w, plw_h; + PangoRectangle rect; + pango_layout_get_pixel_extents (layout, NULL, & rect); + width = MAX (width, rect.width); - cairo_t *cr; + cairo_move_to (cr, left, data->offset + data->row_height * (i - + data->first)); + set_cairo_color (cr, active_skin->colors[(i == active_entry) ? + SKIN_PLEDIT_CURRENT : SKIN_PLEDIT_NORMAL]); + pango_cairo_show_layout (cr, layout); + g_object_unref (layout); + } - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (UI_SKINNED_IS_PLAYLIST (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); + left += width + 4; + } - cr = gdk_cairo_create(widget->window); + /* entry lengths */ - width = priv->width; - height = priv->height; + width = 0; - plw_w = playlistwin_get_width(); - plw_h = playlistwin_get_height(); + for (gint i = data->first; i < data->first + data->rows && i < + active_length; i ++) + { + gint len = aud_playlist_entry_get_length (active_playlist, i, TRUE); + gchar buf[16]; - gdk_cairo_set_source_color(cr, skin_get_color(aud_active_skin, SKIN_PLEDIT_NORMALBG)); + if (len > 0) + snprintf (buf, sizeof buf, "%d:%02d", len / 60000, len / 1000 % 60); + else + buf[0] = 0; - cairo_rectangle(cr, 0, 0, width, height); - cairo_paint(cr); + layout = gtk_widget_create_pango_layout (wid, buf); + pango_layout_set_font_description (layout, data->font); - if (priv->offset) - { - layout = gtk_widget_create_pango_layout (widget, active_title); - pango_layout_set_font_description (layout, priv->font); - pango_layout_set_width (layout, PANGO_SCALE * width); - pango_layout_set_alignment (layout, PANGO_ALIGN_CENTER); - pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_MIDDLE); - cairo_move_to (cr, 0, 0); - gdk_cairo_set_source_color (cr, skin_get_color (aud_active_skin, - SKIN_PLEDIT_NORMAL)); + PangoRectangle rect; + pango_layout_get_pixel_extents (layout, NULL, & rect); + width = MAX (width, rect.width); + + cairo_move_to (cr, data->width - right - rect.width, data->offset + + data->row_height * (i - data->first)); + set_cairo_color (cr, active_skin->colors[(i == active_entry) ? + SKIN_PLEDIT_CURRENT : SKIN_PLEDIT_NORMAL]); pango_cairo_show_layout (cr, layout); - g_object_unref(layout); + g_object_unref (layout); } - for (i = priv->first; i < priv->first + priv->rows && i < active_length; i ++) - { - gint i_length = aud_playlist_entry_get_length (active_playlist, i, TRUE); + right += width + 6; - if (i_length > 0) - g_snprintf (length, sizeof (length), "%d:%02d", i_length / 60000, - i_length / 1000 % 60); - else - length[0] = 0; + /* queue positions */ - tpadding_dwidth = MAX (tpadding_dwidth, strlen (length)); + if (aud_playlist_queue_count (active_playlist)) + { + width = 0; - if (aud_playlist_entry_get_selected (active_playlist, i)) + for (gint i = data->first; i < data->first + data->rows && i < + active_length; i ++) { - gdk_cairo_set_source_color (cr, skin_get_color (aud_active_skin, - SKIN_PLEDIT_SELECTEDBG)); - cairo_new_path (cr); - cairo_rectangle (cr, 0, priv->offset + priv->row_height * (i - - priv->first), width, priv->row_height); - cairo_fill (cr); - } - } + gint pos = aud_playlist_queue_find_entry (active_playlist, i); + if (pos < 0) + continue; - for (i = priv->first; i < priv->first + priv->rows && i < active_length; i ++) - { - const gchar * title = aud_playlist_entry_get_title (active_playlist, i, - TRUE); - gint i_length = aud_playlist_entry_get_length (active_playlist, i, TRUE); - gint pos = aud_playlist_queue_find_entry (active_playlist, i); - - tail[0] = 0; - queuepos[0] = 0; - length[0] = 0; - - if (pos != -1) - g_snprintf(queuepos, sizeof(queuepos), "%d", pos + 1); - - if (i_length > 0) - g_snprintf (length, sizeof (length), "%d:%02d", i_length / 60000, - i_length / 1000 % 60); - else - length[0] = 0; + gchar buf[16]; + snprintf (buf, sizeof buf, "(#%d)", 1 + pos); - strncat(tail, length, sizeof(tail) - 1); - tail_len = strlen(tail); + layout = gtk_widget_create_pango_layout (wid, buf); + pango_layout_set_font_description (layout, data->font); - max_time_len = MAX(max_time_len, tail_len); + PangoRectangle rect; + pango_layout_get_pixel_extents (layout, NULL, & rect); + width = MAX (width, rect.width); - if (pos != -1 && tpadding_dwidth <= 0) - tail_width = width - priv->digit_width * (strlen (queuepos) + 2.25); - else if (pos != -1) - tail_width = width - priv->digit_width * (tpadding_dwidth + strlen - (queuepos) + 4); - else if (tpadding_dwidth > 0) - tail_width = width - priv->digit_width * (tpadding_dwidth + 2.5); - else - tail_width = width; + cairo_move_to (cr, data->width - right - rect.width, data->offset + + data->row_height * (i - data->first)); + set_cairo_color (cr, active_skin->colors[(i == active_entry) ? + SKIN_PLEDIT_CURRENT : SKIN_PLEDIT_NORMAL]); + pango_cairo_show_layout (cr, layout); + g_object_unref (layout); + } - if (i == active_entry) - gdk_cairo_set_source_color(cr, skin_get_color(aud_active_skin, SKIN_PLEDIT_CURRENT)); - else - gdk_cairo_set_source_color(cr, skin_get_color(aud_active_skin, SKIN_PLEDIT_NORMAL)); + right += width + 6; + } - playlist_list_draw_string (cr, pl, priv->font, - i - priv->first, tail_width, title, - i + 1); - - x = width - priv->digit_width * 2; - y = priv->offset + (i - priv->first - 1) * priv->row_height + - priv->ascent; - - frags = NULL; - frag0 = NULL; - - if ((strlen(tail) > 0) && (tail != NULL)) { - frags = g_strsplit(tail, ":", 0); - frag0 = g_strconcat(frags[0], ":", NULL); - - layout = gtk_widget_create_pango_layout(playlistwin, frags[1]); - pango_layout_set_font_description (layout, priv->font); - pango_layout_set_width(layout, tail_len * 100); - pango_layout_set_alignment(layout, PANGO_ALIGN_LEFT); - - cairo_new_path(cr); - cairo_move_to (cr, x - priv->digit_width * 0.5, y - priv->descent); - pango_cairo_show_layout(cr, layout); - g_object_unref(layout); - - layout = gtk_widget_create_pango_layout(playlistwin, frag0); - pango_layout_set_font_description (layout, priv->font); - pango_layout_set_width(layout, tail_len * 100); - pango_layout_set_alignment(layout, PANGO_ALIGN_RIGHT); - - cairo_move_to (cr, x - priv->digit_width * 0.75, y - priv->descent); - pango_cairo_show_layout(cr, layout); - g_object_unref(layout); + /* titles */ - g_free(frag0); - g_strfreev(frags); - } + for (gint i = data->first; i < data->first + data->rows && i < + active_length; i ++) + { + gchar * title = aud_playlist_entry_get_title (active_playlist, i, TRUE); - if (pos != -1) { - if (tpadding_dwidth > 0) - queue_tailpadding = tpadding_dwidth + 1; - else - queue_tailpadding = -0.75; - - cairo_rectangle(cr, - x - - (((queue_tailpadding + - strlen(queuepos)) * - priv->digit_width) + priv->digit_width / 4), y - priv->descent, - (strlen(queuepos)) * - priv->digit_width + priv->digit_width / 2, priv->row_height - 2); - - layout = - gtk_widget_create_pango_layout(playlistwin, queuepos); - pango_layout_set_font_description (layout, priv->font); - pango_layout_set_alignment(layout, PANGO_ALIGN_CENTER); - - cairo_move_to(cr, - x - - ((queue_tailpadding + - strlen (queuepos)) * priv->digit_width) + priv->digit_width / 4, y - - priv->descent); - pango_cairo_show_layout(cr, layout); + layout = gtk_widget_create_pango_layout (wid, title); + pango_layout_set_font_description (layout, data->font); + pango_layout_set_width (layout, PANGO_SCALE * (data->width - left - + right)); + pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END); - g_object_unref(layout); - } + str_unref (title); - cairo_stroke(cr); + cairo_move_to (cr, left, data->offset + data->row_height * (i - + data->first)); + set_cairo_color (cr, active_skin->colors[(i == active_entry) ? + SKIN_PLEDIT_CURRENT : SKIN_PLEDIT_NORMAL]); + pango_cairo_show_layout (cr, layout); + g_object_unref (layout); } - if (priv->focused >= priv->first && priv->focused <= priv->first + - priv->rows - 1) + /* focus rectangle */ + + if (data->focused >= data->first && data->focused <= data->first + + data->rows - 1) { - cairo_set_line_width (cr, 1); - gdk_cairo_set_source_color (cr, skin_get_color (aud_active_skin, - SKIN_PLEDIT_NORMAL)); cairo_new_path (cr); - cairo_rectangle (cr, 0.5, priv->offset + priv->row_height * - (priv->focused - priv->first) + 0.5, width - 1, priv->row_height - 1); + cairo_set_line_width (cr, 1); + cairo_rectangle (cr, 0.5, data->offset + data->row_height * + (data->focused - data->first) + 0.5, data->width - 1, data->row_height + - 1); + set_cairo_color (cr, active_skin->colors[SKIN_PLEDIT_NORMAL]); cairo_stroke (cr); } - if (priv->hover >= priv->first && priv->hover <= priv->first + priv->rows) - { - cairo_set_line_width (cr, 2); - gdk_cairo_set_source_color (cr, skin_get_color (aud_active_skin, - SKIN_PLEDIT_NORMAL)); + /* hover line */ + if (data->hover >= data->first && data->hover <= data->first + data->rows) + { cairo_new_path (cr); - cairo_move_to (cr, 0, priv->offset + priv->row_height * (priv->hover - - priv->first)); - cairo_rel_line_to (cr, width, 0); + cairo_set_line_width (cr, 2); + cairo_move_to (cr, 0, data->offset + data->row_height * (data->hover - + data->first)); + cairo_rel_line_to (cr, data->width, 0); + set_cairo_color (cr, active_skin->colors[SKIN_PLEDIT_NORMAL]); cairo_stroke (cr); } +DRAW_FUNC_END - gdk_cairo_set_source_color(cr, skin_get_color(aud_active_skin, SKIN_PLEDIT_NORMAL)); - cairo_set_line_width(cr, 1); - cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); +static void playlist_destroy (GtkWidget * list) +{ + PlaylistData * data = g_object_get_data ((GObject *) list, "playlistdata"); + g_return_if_fail (data); - if (aud_cfg->show_numbers_in_pl) - { - if (active_length == 0) - padding_dwidth = 0; - else - padding_dwidth = gint_count_digits (active_length); + cancel_all (list, data); - padding = (padding_dwidth + 1) * priv->digit_width; + pango_font_description_free (data->font); + g_free (data); +} - /* For italic or oblique fonts we add another half of the - * approximate width */ - if (priv->slanted) - padding += priv->digit_width / 2; +GtkWidget * ui_skinned_playlist_new (gint width, gint height, const gchar * font) +{ + GtkWidget * list = gtk_drawing_area_new (); + gtk_widget_set_size_request (list, width, height); + gtk_widget_add_events (list, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_MASK); - if (config.show_separator_in_pl) { - cairo_new_path(cr); + DRAW_CONNECT (list, playlist_draw); + g_signal_connect (list, "button-press-event", (GCallback) + playlist_button_press, NULL); + g_signal_connect (list, "button-release-event", (GCallback) + playlist_button_release, NULL); + g_signal_connect (list, "leave-notify-event", (GCallback) playlist_leave, + NULL); + g_signal_connect (list, "motion-notify-event", (GCallback) playlist_motion, + NULL); + g_signal_connect (list, "destroy", (GCallback) playlist_destroy, NULL); - cairo_move_to(cr, padding, 0); - cairo_rel_line_to(cr, 0, priv->height - 1); + PlaylistData * data = g_malloc0 (sizeof (PlaylistData)); + data->width = width; + data->height = height; + data->focused = -1; + data->hover = -1; + data->popup_pos = -1; + g_object_set_data ((GObject *) list, "playlistdata", data); - cairo_stroke(cr); - } - } + ui_skinned_playlist_set_font (list, font); - if (tpadding_dwidth != 0) - { - tpadding = priv->digit_width * (tpadding_dwidth + 1.5); + return list; +} - if (priv->slanted) - tpadding += priv->digit_width / 2; +void ui_skinned_playlist_set_slider (GtkWidget * list, GtkWidget * slider) +{ + PlaylistData * data = g_object_get_data ((GObject *) list, "playlistdata"); + g_return_if_fail (data); - if (config.show_separator_in_pl) { - cairo_new_path(cr); + data->slider = slider; +} - cairo_move_to(cr, priv->width - tpadding, 0); - cairo_rel_line_to(cr, 0, priv->height - 1); +void ui_skinned_playlist_resize (GtkWidget * list, gint width, gint height) +{ + PlaylistData * data = g_object_get_data ((GObject *) list, "playlistdata"); + g_return_if_fail (data); - cairo_stroke(cr); - } - } + gtk_widget_set_size_request (list, width, height); - cairo_destroy(cr); + data->width = width; + data->height = height; - return FALSE; + calc_layout (data); + gtk_widget_queue_draw (list); + + if (data->slider) + ui_skinned_playlist_slider_update (data->slider); } -static gint calc_position (UiSkinnedPlaylistPrivate * private, gint y) +void ui_skinned_playlist_set_font (GtkWidget * list, const gchar * font) { - gint position; + PlaylistData * data = g_object_get_data ((GObject *) list, "playlistdata"); + g_return_if_fail (data); - if (y < private->offset) - return -1; + pango_font_description_free (data->font); + data->font = pango_font_description_from_string (font); - position = private->first + (y - private->offset) / private->row_height; + PangoLayout * layout = gtk_widget_create_pango_layout (list, "A"); + pango_layout_set_font_description (layout, data->font); - if (position >= private->first + private->rows || position >= active_length) - return active_length; + PangoRectangle rect; + pango_layout_get_pixel_extents (layout, NULL, & rect); - return position; + /* make sure row_height is non-zero; we divide by it */ + data->row_height = MAX (rect.height, 1); + + g_object_unref (layout); + + calc_layout (data); + gtk_widget_queue_draw (list); + + if (data->slider) + ui_skinned_playlist_slider_update (data->slider); } -static gint adjust_position (UiSkinnedPlaylistPrivate * private, gboolean - relative, gint position) +void ui_skinned_playlist_update (GtkWidget * list) { - if (active_length == 0) - return -1; + PlaylistData * data = g_object_get_data ((GObject *) list, "playlistdata"); + g_return_if_fail (data); - if (relative) - { - if (private->focused == -1) - return 0; + calc_layout (data); - position += private->focused; - } + if (data->focused != -1) + data->focused = adjust_position (data, TRUE, 0); - if (position < 0) - return 0; - if (position >= active_length) - return active_length - 1; + gtk_widget_queue_draw (list); - return position; + if (data->slider != NULL) + ui_skinned_playlist_slider_update (data->slider); +} + +static void scroll_to (PlaylistData * data, gint position) +{ + if (position < data->first || position >= data->first + data->rows) + data->first = position - data->rows / 2; + + calc_layout (data); } -static void select_single (UiSkinnedPlaylistPrivate * private, gboolean - relative, gint position) +static void select_single (PlaylistData * data, gboolean relative, gint position) { - position = adjust_position (private, relative, position); + position = adjust_position (data, relative, position); if (position == -1) return; - if (private->focused != -1) - aud_playlist_entry_set_selected (active_playlist, private->focused, - FALSE); + if (data->focused != -1) + aud_playlist_entry_set_selected (active_playlist, data->focused, FALSE); if (aud_playlist_selected_count (active_playlist) > 0) aud_playlist_select_all (active_playlist, FALSE); aud_playlist_entry_set_selected (active_playlist, position, TRUE); - private->focused = position; - scroll_to (private, position); + data->focused = position; + scroll_to (data, position); } -static void select_extend (UiSkinnedPlaylistPrivate * private, gboolean - relative, gint position) +static void select_extend (PlaylistData * data, gboolean relative, gint position) { - gint count, sign; + position = adjust_position (data, relative, position); - position = adjust_position (private, relative, position); - - if (position == -1 || position == private->focused) + if (position == -1 || position == data->focused) return; - count = adjust_position (private, TRUE, 0); - sign = (position > count) ? 1 : -1; + gint count = adjust_position (data, TRUE, 0); + gint sign = (position > count) ? 1 : -1; for (; count != position; count += sign) aud_playlist_entry_set_selected (active_playlist, count, @@ -696,26 +479,24 @@ aud_playlist_entry_set_selected (active_playlist, position, TRUE); - private->focused = position; - scroll_to (private, position); + data->focused = position; + scroll_to (data, position); } -static void select_slide (UiSkinnedPlaylistPrivate * private, gboolean relative, - gint position) +static void select_slide (PlaylistData * data, gboolean relative, gint position) { - position = adjust_position (private, relative, position); + position = adjust_position (data, relative, position); if (position == -1) return; - private->focused = position; - scroll_to (private, position); + data->focused = position; + scroll_to (data, position); } -static void select_toggle (UiSkinnedPlaylistPrivate * private, gboolean - relative, gint position) +static void select_toggle (PlaylistData * data, gboolean relative, gint position) { - position = adjust_position (private, relative, position); + position = adjust_position (data, relative, position); if (position == -1) return; @@ -723,29 +504,28 @@ aud_playlist_entry_set_selected (active_playlist, position, ! aud_playlist_entry_get_selected (active_playlist, position)); - private->focused = position; - scroll_to (private, position); + data->focused = position; + scroll_to (data, position); } -static void select_move (UiSkinnedPlaylistPrivate * private, gboolean relative, - gint position) +static void select_move (PlaylistData * data, gboolean relative, gint position) { - position = adjust_position (private, relative, position); + position = adjust_position (data, relative, position); - if (private->focused == -1 || position == -1 || position == private->focused) + if (data->focused == -1 || position == -1 || position == data->focused) return; - private->focused += aud_playlist_shift (active_playlist, private->focused, - position - private->focused); + data->focused += aud_playlist_shift (active_playlist, data->focused, + position - data->focused); - scroll_to (private, private->focused); + scroll_to (data, data->focused); } -static void delete_selected (UiSkinnedPlaylistPrivate * private) +static void delete_selected (PlaylistData * data) { gint shift = 0, count; - for (count = 0; count < private->focused; count ++) + for (count = 0; count < data->focused; count ++) { if (aud_playlist_entry_get_selected (active_playlist, count)) shift --; @@ -753,45 +533,18 @@ aud_playlist_delete_selected (active_playlist); active_length = aud_playlist_entry_count (active_playlist); - calc_layout (private); + calc_layout (data); - private->focused = adjust_position (private, TRUE, shift); - select_single (private, TRUE, 0); + data->focused = adjust_position (data, TRUE, shift); + select_single (data, TRUE, 0); } -void ui_skinned_playlist_update (GtkWidget * widget) +gboolean ui_skinned_playlist_key (GtkWidget * list, GdkEventKey * event) { - UiSkinnedPlaylistPrivate * private = UI_SKINNED_PLAYLIST_GET_PRIVATE - ((UiSkinnedPlaylist *) widget); - - calc_layout (private); - - if (private->focused != -1) - private->focused = adjust_position (private, TRUE, 0); + PlaylistData * data = g_object_get_data ((GObject *) list, "playlistdata"); + g_return_val_if_fail (data, FALSE); - gtk_widget_queue_draw (widget); - - if (private->slider != NULL) - ui_skinned_playlist_slider_update (private->slider); -} - -void ui_skinned_playlist_follow (GtkWidget * widget) -{ - UiSkinnedPlaylistPrivate * private = UI_SKINNED_PLAYLIST_GET_PRIVATE - ((UiSkinnedPlaylist *) widget); - - cancel_all (widget, private); - select_single (private, FALSE, aud_playlist_get_position (active_playlist)); - - playlistwin_update (); -} - -gboolean ui_skinned_playlist_key (GtkWidget * widget, GdkEventKey * event) -{ - UiSkinnedPlaylistPrivate * private = UI_SKINNED_PLAYLIST_GET_PRIVATE - ((UiSkinnedPlaylist *) widget); - - cancel_all (widget, private); + cancel_all (list, data); switch (event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK)) { @@ -799,35 +552,35 @@ switch (event->keyval) { case GDK_Up: - select_single (private, TRUE, -1); + select_single (data, TRUE, -1); break; case GDK_Down: - select_single (private, TRUE, 1); + select_single (data, TRUE, 1); break; case GDK_Page_Up: - select_single (private, TRUE, - private->rows); + select_single (data, TRUE, - data->rows); break; case GDK_Page_Down: - select_single (private, TRUE, private->rows); + select_single (data, TRUE, data->rows); break; case GDK_Home: - select_single (private, FALSE, 0); + select_single (data, FALSE, 0); break; case GDK_End: - select_single (private, FALSE, active_length - 1); + select_single (data, FALSE, active_length - 1); break; case GDK_Return: - select_single (private, TRUE, 0); + select_single (data, TRUE, 0); aud_playlist_set_playing (active_playlist); - aud_playlist_set_position (active_playlist, private->focused); + aud_playlist_set_position (active_playlist, data->focused); aud_drct_play (); break; case GDK_Escape: - select_single (private, FALSE, aud_playlist_get_position + select_single (data, FALSE, aud_playlist_get_position (active_playlist)); break; case GDK_Delete: - delete_selected (private); + delete_selected (data); break; default: return FALSE; @@ -837,22 +590,22 @@ switch (event->keyval) { case GDK_Up: - select_extend (private, TRUE, -1); + select_extend (data, TRUE, -1); break; case GDK_Down: - select_extend (private, TRUE, 1); + select_extend (data, TRUE, 1); break; case GDK_Page_Up: - select_extend (private, TRUE, -private->rows); + select_extend (data, TRUE, -data->rows); break; case GDK_Page_Down: - select_extend (private, TRUE, private->rows); + select_extend (data, TRUE, data->rows); break; case GDK_Home: - select_extend (private, FALSE, 0); + select_extend (data, FALSE, 0); break; case GDK_End: - select_extend (private, FALSE, active_length - 1); + select_extend (data, FALSE, active_length - 1); break; default: return FALSE; @@ -862,25 +615,25 @@ switch (event->keyval) { case GDK_space: - select_toggle (private, TRUE, 0); + select_toggle (data, TRUE, 0); break; case GDK_Up: - select_slide (private, TRUE, -1); + select_slide (data, TRUE, -1); break; case GDK_Down: - select_slide (private, TRUE, 1); + select_slide (data, TRUE, 1); break; case GDK_Page_Up: - select_slide (private, TRUE, -private->rows); + select_slide (data, TRUE, -data->rows); break; case GDK_Page_Down: - select_slide (private, TRUE, private->rows); + select_slide (data, TRUE, data->rows); break; case GDK_Home: - select_slide (private, FALSE, 0); + select_slide (data, FALSE, 0); break; case GDK_End: - select_slide (private, FALSE, active_length - 1); + select_slide (data, FALSE, active_length - 1); break; default: return FALSE; @@ -890,22 +643,22 @@ switch (event->keyval) { case GDK_Up: - select_move (private, TRUE, -1); + select_move (data, TRUE, -1); break; case GDK_Down: - select_move (private, TRUE, 1); + select_move (data, TRUE, 1); break; case GDK_Page_Up: - select_move (private, TRUE, -private->rows); + select_move (data, TRUE, -data->rows); break; case GDK_Page_Down: - select_move (private, TRUE, private->rows); + select_move (data, TRUE, data->rows); break; case GDK_Home: - select_move (private, FALSE, 0); + select_move (data, FALSE, 0); break; case GDK_End: - select_move (private, FALSE, active_length - 1); + select_move (data, FALSE, active_length - 1); break; default: return FALSE; @@ -919,90 +672,91 @@ return TRUE; } -void ui_skinned_playlist_row_info (GtkWidget * widget, gint * rows, gint * - first, gint * focused) +void ui_skinned_playlist_row_info (GtkWidget * list, gint * rows, gint * first, + gint * focused) { - UiSkinnedPlaylistPrivate * private = UI_SKINNED_PLAYLIST_GET_PRIVATE - ((UiSkinnedPlaylist *) widget); + PlaylistData * data = g_object_get_data ((GObject *) list, "playlistdata"); + g_return_if_fail (data); - * rows = private->rows; - * first = private->first; - * focused = private->focused; + * rows = data->rows; + * first = data->first; + * focused = data->focused; } -void ui_skinned_playlist_scroll_to (GtkWidget * widget, gint row) +void ui_skinned_playlist_scroll_to (GtkWidget * list, gint row) { - UiSkinnedPlaylistPrivate * private = UI_SKINNED_PLAYLIST_GET_PRIVATE - ((UiSkinnedPlaylist *) widget); + PlaylistData * data = g_object_get_data ((GObject *) list, "playlistdata"); + g_return_if_fail (data); - cancel_all (widget, private); - private->first = row; - calc_layout (private); + cancel_all (list, data); + data->first = row; + calc_layout (data); - gtk_widget_queue_draw (widget); + gtk_widget_queue_draw (list); - if (private->slider != NULL) - ui_skinned_playlist_slider_update (private->slider); + if (data->slider) + ui_skinned_playlist_slider_update (data->slider); } -void ui_skinned_playlist_set_focused (GtkWidget * widget, gint row) +void ui_skinned_playlist_set_focused (GtkWidget * list, gint row) { - UiSkinnedPlaylistPrivate * private = UI_SKINNED_PLAYLIST_GET_PRIVATE - ((UiSkinnedPlaylist *) widget); + PlaylistData * data = g_object_get_data ((GObject *) list, "playlistdata"); + g_return_if_fail (data); - cancel_all (widget, private); - private->focused = row; - scroll_to (private, row); + cancel_all (list, data); + data->focused = row; + scroll_to (data, row); - gtk_widget_queue_draw (widget); + gtk_widget_queue_draw (list); } -void ui_skinned_playlist_hover (GtkWidget * widget, gint x, gint y) +void ui_skinned_playlist_hover (GtkWidget * list, gint x, gint y) { - UiSkinnedPlaylistPrivate * private = UI_SKINNED_PLAYLIST_GET_PRIVATE - ((UiSkinnedPlaylist *) widget); + PlaylistData * data = g_object_get_data ((GObject *) list, "playlistdata"); + g_return_if_fail (data); + gint new; - if (y < private->offset) - new = private->first; - else if (y > private->offset + private->row_height * private->rows) - new = private->first + private->rows; + if (y < data->offset) + new = data->first; + else if (y > data->offset + data->row_height * data->rows) + new = data->first + data->rows; else - new = private->first + (y - private->offset + private->row_height / 2) / - private->row_height; + new = data->first + (y - data->offset + data->row_height / 2) / + data->row_height; if (new > active_length) new = active_length; - if (new != private->hover) + if (new != data->hover) { - private->hover = new; - gtk_widget_queue_draw (widget); + data->hover = new; + gtk_widget_queue_draw (list); } } -gint ui_skinned_playlist_hover_end (GtkWidget * widget) +gint ui_skinned_playlist_hover_end (GtkWidget * list) { - UiSkinnedPlaylistPrivate * private = UI_SKINNED_PLAYLIST_GET_PRIVATE - ((UiSkinnedPlaylist *) widget); - gint temp = private->hover; + PlaylistData * data = g_object_get_data ((GObject *) list, "playlistdata"); + g_return_val_if_fail (data, -1); - private->hover = -1; + gint temp = data->hover; + data->hover = -1; - gtk_widget_queue_draw (widget); + gtk_widget_queue_draw (list); return temp; } -static gboolean ui_skinned_playlist_button_press (GtkWidget * widget, - GdkEventButton * event) +static gboolean playlist_button_press (GtkWidget * list, GdkEventButton * event) { - UiSkinnedPlaylistPrivate * private = UI_SKINNED_PLAYLIST_GET_PRIVATE - ((UiSkinnedPlaylist *) widget); - gint position = calc_position (private, event->y); + PlaylistData * data = g_object_get_data ((GObject *) list, "playlistdata"); + g_return_val_if_fail (data, FALSE); + + gint position = calc_position (data, event->y); gint state = event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK); - cancel_all (widget, private); + cancel_all (list, data); switch (event->type) { @@ -1017,19 +771,19 @@ { case 0: if (aud_playlist_entry_get_selected (active_playlist, position)) - select_slide (private, FALSE, position); + select_slide (data, FALSE, position); else - select_single (private, FALSE, position); + select_single (data, FALSE, position); - private->drag = DRAG_MOVE; + data->drag = DRAG_MOVE; break; case GDK_SHIFT_MASK: - select_extend (private, FALSE, position); - private->drag = DRAG_SELECT; + select_extend (data, FALSE, position); + data->drag = DRAG_SELECT; break; case GDK_CONTROL_MASK: - select_toggle (private, FALSE, position); - private->drag = DRAG_SELECT; + select_toggle (data, FALSE, position); + data->drag = DRAG_SELECT; break; default: return TRUE; @@ -1043,9 +797,9 @@ if (position != -1 && position != active_length) { if (aud_playlist_entry_get_selected (active_playlist, position)) - select_slide (private, FALSE, position); + select_slide (data, FALSE, position); else - select_single (private, FALSE, position); + select_single (data, FALSE, position); } ui_popup_menu_show ((position == -1) ? UI_MENU_PLAYLIST : @@ -1074,29 +828,30 @@ return TRUE; } -static gboolean ui_skinned_playlist_button_release (GtkWidget * widget, - GdkEventButton * event) +static gboolean playlist_button_release (GtkWidget * list, GdkEventButton * + event) { - cancel_all (widget, UI_SKINNED_PLAYLIST_GET_PRIVATE ((UiSkinnedPlaylist *) - widget)); + PlaylistData * data = g_object_get_data ((GObject *) list, "playlistdata"); + g_return_val_if_fail (data, FALSE); + + cancel_all (list, data); return TRUE; } -static gboolean scroll_cb (void * data) +static gboolean scroll_cb (PlaylistData * data) { - UiSkinnedPlaylistPrivate * private = data; - gint position = adjust_position (private, TRUE, private->scroll); + gint position = adjust_position (data, TRUE, data->scroll); if (position == -1) return TRUE; - switch (private->drag) + switch (data->drag) { case DRAG_SELECT: - select_extend (private, FALSE, position); + select_extend (data, FALSE, position); break; case DRAG_MOVE: - select_move (private, FALSE, position); + select_move (data, FALSE, position); break; } @@ -1104,44 +859,45 @@ return TRUE; } -static gboolean ui_skinned_playlist_motion_notify (GtkWidget * widget, - GdkEventMotion * event) +static gboolean playlist_motion (GtkWidget * list, GdkEventMotion * event) { - UiSkinnedPlaylistPrivate * private = UI_SKINNED_PLAYLIST_GET_PRIVATE - ((UiSkinnedPlaylist *) widget); - gint position = calc_position (private, event->y); + PlaylistData * data = g_object_get_data ((GObject *) list, "playlistdata"); + g_return_val_if_fail (data, FALSE); + + gint position = calc_position (data, event->y); gint new_scroll; - if (private->drag) + if (data->drag) { if (position == -1 || position == active_length) { new_scroll = (position == -1 ? -1 : 1); - if (private->scroll != new_scroll) + if (data->scroll != new_scroll) { - if (private->scroll) - g_source_remove (private->scroll_source); + if (data->scroll) + g_source_remove (data->scroll_source); - private->scroll = new_scroll; - private->scroll_source = g_timeout_add (100, scroll_cb, private); + data->scroll = new_scroll; + data->scroll_source = g_timeout_add (100, (GSourceFunc) + scroll_cb, data); } } else { - if (private->scroll) + if (data->scroll) { - private->scroll = 0; - g_source_remove (private->scroll_source); + data->scroll = 0; + g_source_remove (data->scroll_source); } - switch (private->drag) + switch (data->drag) { case DRAG_SELECT: - select_extend (private, FALSE, position); + select_extend (data, FALSE, position); break; case DRAG_MOVE: - select_move (private, FALSE, position); + select_move (data, FALSE, position); break; } @@ -1151,106 +907,63 @@ else { if (position == -1 || position == active_length) - cancel_all (widget, private); - else if (aud_cfg->show_filepopup_for_tuple && (! GPOINTER_TO_INT - (g_object_get_data ((GObject *) widget, "popup_active")) || position - != GPOINTER_TO_INT (g_object_get_data ((GObject *) widget, - "popup_position")))) + cancel_all (list, data); + else if (aud_get_bool (NULL, "show_filepopup_for_tuple") && data->popup_pos != position) { - cancel_all (widget, private); - g_object_set_data ((GObject *) widget, "popup_position", - GINT_TO_POINTER (position)); - ui_skinned_playlist_popup_timer_start (widget); + cancel_all (list, data); + popup_trigger (list, data, position); } } return TRUE; } -static gboolean ui_skinned_playlist_leave_notify (GtkWidget * widget, - GdkEventCrossing * event) +static gboolean playlist_leave (GtkWidget * list, GdkEventCrossing * event) { - UiSkinnedPlaylistPrivate * private = UI_SKINNED_PLAYLIST_GET_PRIVATE - ((UiSkinnedPlaylist *) widget); + PlaylistData * data = g_object_get_data ((GObject *) list, "playlistdata"); + g_return_val_if_fail (data, FALSE); - if (! private->drag) - cancel_all (widget, private); + if (! data->drag) + cancel_all (list, data); return TRUE; } -void ui_skinned_playlist_set_font (GtkWidget * list, const gchar * font) +static gboolean popup_show (GtkWidget * list) { - UiSkinnedPlaylistPrivate * private = UI_SKINNED_PLAYLIST_GET_PRIVATE - ((UiSkinnedPlaylist *) list); - gchar *font_lower; - - private->font = pango_font_description_from_string (font); - - text_get_extents(font, - "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz ", - & private->letter_width, 0, & private->ascent, & private->descent); - private->letter_width /= 53; - - text_get_extents (font, "0123456789", & private->digit_width, 0, 0, 0); - private->digit_width /= 10; - - font_lower = g_utf8_strdown(font, strlen(font)); - /* This doesn't take any i18n into account, but i think there is none with TTF fonts - * FIXME: This can probably be retrieved trough Pango too - */ - private->slanted = strstr (font_lower, "oblique") != NULL || strstr - (font_lower, "italic") != NULL; + PlaylistData * data = g_object_get_data ((GObject *) list, "playlistdata"); + g_return_val_if_fail (data, FALSE); - g_free(font_lower); + audgui_infopopup_show (active_playlist, data->popup_pos); + data->popup_shown = TRUE; - calc_layout (private); - gtk_widget_queue_draw (list); - - if (private->slider != NULL) - ui_skinned_playlist_slider_update (private->slider); + g_source_remove (data->popup_source); + data->popup_source = 0; + return FALSE; } -void ui_skinned_playlist_resize_relative(GtkWidget *widget, gint w, gint h) { - UiSkinnedPlaylistPrivate *priv = UI_SKINNED_PLAYLIST_GET_PRIVATE(widget); - priv->resize_width += w; - priv->resize_height += h; - gtk_widget_set_size_request(widget, priv->width+priv->resize_width, priv->height+priv->resize_height); -} +static void popup_trigger (GtkWidget * list, PlaylistData * data, gint pos) +{ + popup_hide (list, data); -static gboolean ui_skinned_playlist_popup_show(gpointer data) { - GtkWidget *widget = data; - gint pos = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "popup_position")); + data->popup_pos = pos; + data->popup_source = g_timeout_add (aud_get_int (NULL, "filepopup_delay") * + 100, (GSourceFunc) popup_show, list); +} - if (GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "timer_active")) == 1 && pos != -1) { - audgui_infopopup_show (active_playlist, pos); - g_object_set_data(G_OBJECT(widget), "popup_active" , GINT_TO_POINTER(1)); +static void popup_hide (GtkWidget * list, PlaylistData * data) +{ + if (data->popup_source) + { + g_source_remove (data->popup_source); + data->popup_source = 0; } - ui_skinned_playlist_popup_timer_stop(widget); - return FALSE; -} - -static void ui_skinned_playlist_popup_hide(GtkWidget *widget) { - if (GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "popup_active")) == 1) { - g_object_set_data(G_OBJECT(widget), "popup_active", GINT_TO_POINTER(0)); + if (data->popup_shown) + { audgui_infopopup_hide (); + data->popup_shown = FALSE; } -} - -static void ui_skinned_playlist_popup_timer_start(GtkWidget *widget) { - int timer_id; - - timer_id = g_timeout_add (aud_cfg->filepopup_delay * 100, - ui_skinned_playlist_popup_show, widget); - g_object_set_data(G_OBJECT(widget), "timer_id", GINT_TO_POINTER(timer_id)); - g_object_set_data(G_OBJECT(widget), "timer_active", GINT_TO_POINTER(1)); -} - -static void ui_skinned_playlist_popup_timer_stop(GtkWidget *widget) { - if (GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "timer_active")) == 1) - g_source_remove(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "timer_id"))); - g_object_set_data(G_OBJECT(widget), "timer_id", GINT_TO_POINTER(0)); - g_object_set_data(G_OBJECT(widget), "timer_active", GINT_TO_POINTER(0)); + data->popup_pos = -1; } diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_playlist.h audacious-plugins-3.2/src/skins/ui_skinned_playlist.h --- audacious-plugins-2.4.4/src/skins/ui_skinned_playlist.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_playlist.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,7 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ - * Copyright (c) 2009 John Lindgren + * Copyright (c) 2009-2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -25,53 +25,22 @@ * Audacious or using our public API to be a derived work. */ -#ifndef AUDACIOUS_UI_SKINNED_PLAYLIST_H -#define AUDACIOUS_UI_SKINNED_PLAYLIST_H +#ifndef SKINS_UI_SKINNED_PLAYLIST_H +#define SKINS_UI_SKINNED_PLAYLIST_H #include -#include -#include - -#include "ui_skin.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define UI_SKINNED_PLAYLIST(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, ui_skinned_playlist_get_type (), UiSkinnedPlaylist) -#define UI_SKINNED_PLAYLIST_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, ui_skinned_playlist_get_type (), UiSkinnedPlaylistClass) -#define UI_SKINNED_IS_PLAYLIST(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, ui_skinned_playlist_get_type ()) - -typedef struct _UiSkinnedPlaylist UiSkinnedPlaylist; -typedef struct _UiSkinnedPlaylistClass UiSkinnedPlaylistClass; - -struct _UiSkinnedPlaylist { - GtkWidget widget; -}; - -struct _UiSkinnedPlaylistClass { - GtkWidgetClass parent_class; -}; - -GtkWidget * ui_skinned_playlist_new (GtkWidget * fixed, gint x, gint y, gint - width, gint height, const gchar * font); +GtkWidget * ui_skinned_playlist_new (gint width, gint height, const gchar * font); void ui_skinned_playlist_set_slider (GtkWidget * list, GtkWidget * slider); -GType ui_skinned_playlist_get_type(void); -void ui_skinned_playlist_resize_relative(GtkWidget *widget, gint w, gint h); +void ui_skinned_playlist_resize (GtkWidget * list, gint w, gint h); void ui_skinned_playlist_set_font (GtkWidget * list, const gchar * font); -void ui_skinned_playlist_update (GtkWidget * widget); -void ui_skinned_playlist_follow (GtkWidget * widget); -gboolean ui_skinned_playlist_key (GtkWidget * widget, GdkEventKey * event); -void ui_skinned_playlist_row_info (GtkWidget * widget, gint * rows, gint * - first, gint * focused); -void ui_skinned_playlist_scroll_to (GtkWidget * widget, gint row); -void ui_skinned_playlist_set_focused (GtkWidget * widget, gint row); -void ui_skinned_playlist_hover (GtkWidget * widget, gint x, gint y); -int ui_skinned_playlist_hover_end (GtkWidget * widget); +void ui_skinned_playlist_update (GtkWidget * list); +gboolean ui_skinned_playlist_key (GtkWidget * list, GdkEventKey * event); +void ui_skinned_playlist_row_info (GtkWidget * list, gint * rows, gint * first, + gint * focused); +void ui_skinned_playlist_scroll_to (GtkWidget * list, gint row); +void ui_skinned_playlist_set_focused (GtkWidget * list, gint row); +void ui_skinned_playlist_hover (GtkWidget * list, gint x, gint y); +gint ui_skinned_playlist_hover_end (GtkWidget * list); -#ifdef __cplusplus -} #endif - -#endif /* AUDACIOUS_UI_SKINNED_PLAYLIST_H */ diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_playlist_slider.c audacious-plugins-3.2/src/skins/ui_skinned_playlist_slider.c --- audacious-plugins-2.4.4/src/skins/ui_skinned_playlist_slider.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_playlist_slider.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -24,301 +25,117 @@ * Audacious or using our public API to be a derived work. */ +#include "draw-compat.h" +#include "ui_playlist.h" #include "ui_skin.h" #include "ui_skinned_playlist.h" #include "ui_skinned_playlist_slider.h" -#include "ui_playlist.h" -#include "util.h" - -#define UI_SKINNED_PLAYLIST_SLIDER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), ui_skinned_playlist_slider_get_type(), UiSkinnedPlaylistSliderPrivate)) -typedef struct _UiSkinnedPlaylistSliderPrivate UiSkinnedPlaylistSliderPrivate; - -struct _UiSkinnedPlaylistSliderPrivate { - GtkWidget * list; - SkinPixmapId skin_index; - gint width, height; - - gint resize_height; - gint move_x; - gint prev_y; - gint drag_y; -}; - -static void ui_skinned_playlist_slider_class_init (UiSkinnedPlaylistSliderClass *klass); -static void ui_skinned_playlist_slider_init (UiSkinnedPlaylistSlider *playlist_slider); -static void ui_skinned_playlist_slider_destroy (GtkObject *object); -static void ui_skinned_playlist_slider_realize (GtkWidget *widget); -static void ui_skinned_playlist_slider_size_request (GtkWidget *widget, GtkRequisition *requisition); -static void ui_skinned_playlist_slider_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -static gboolean ui_skinned_playlist_slider_expose (GtkWidget *widget, GdkEventExpose *event); -static void ui_skinned_playlist_slider_set_position (GtkWidget *widget, gint y); -static gboolean ui_skinned_playlist_slider_button_press (GtkWidget *widget, GdkEventButton *event); -static gboolean ui_skinned_playlist_slider_button_release (GtkWidget *widget, GdkEventButton *event); -static gboolean ui_skinned_playlist_slider_motion_notify (GtkWidget *widget, GdkEventMotion *event); - -static GtkWidgetClass *parent_class = NULL; - -GType ui_skinned_playlist_slider_get_type() { - static GType playlist_slider_type = 0; - if (!playlist_slider_type) { - static const GTypeInfo playlist_slider_info = { - sizeof (UiSkinnedPlaylistSliderClass), - NULL, - NULL, - (GClassInitFunc) ui_skinned_playlist_slider_class_init, - NULL, - NULL, - sizeof (UiSkinnedPlaylistSlider), - 0, - (GInstanceInitFunc) ui_skinned_playlist_slider_init, - }; - playlist_slider_type = g_type_register_static (GTK_TYPE_WIDGET, "UiSkinnedPlaylistSlider", &playlist_slider_info, 0); - } - - return playlist_slider_type; -} - -static void ui_skinned_playlist_slider_class_init(UiSkinnedPlaylistSliderClass *klass) { - GObjectClass *gobject_class; - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - gobject_class = G_OBJECT_CLASS(klass); - object_class = (GtkObjectClass*) klass; - widget_class = (GtkWidgetClass*) klass; - parent_class = g_type_class_peek_parent(klass); - - object_class->destroy = ui_skinned_playlist_slider_destroy; - - widget_class->realize = ui_skinned_playlist_slider_realize; - widget_class->expose_event = ui_skinned_playlist_slider_expose; - widget_class->size_request = ui_skinned_playlist_slider_size_request; - widget_class->size_allocate = ui_skinned_playlist_slider_size_allocate; - widget_class->button_press_event = ui_skinned_playlist_slider_button_press; - widget_class->button_release_event = ui_skinned_playlist_slider_button_release; - widget_class->motion_notify_event = ui_skinned_playlist_slider_motion_notify; - - g_type_class_add_private (gobject_class, sizeof (UiSkinnedPlaylistSliderPrivate)); -} - -static void ui_skinned_playlist_slider_init(UiSkinnedPlaylistSlider *playlist_slider) { - UiSkinnedPlaylistSliderPrivate *priv = UI_SKINNED_PLAYLIST_SLIDER_GET_PRIVATE(playlist_slider); - playlist_slider->pressed = FALSE; - priv->resize_height = 0; - priv->move_x = 0; - priv->drag_y = 0; - priv->prev_y = 0; -} - -GtkWidget * ui_skinned_playlist_slider_new (GtkWidget * fixed, gint x, gint y, - gint h, GtkWidget * list) -{ - - UiSkinnedPlaylistSlider *hs = g_object_new (ui_skinned_playlist_slider_get_type (), NULL); - UiSkinnedPlaylistSliderPrivate *priv = UI_SKINNED_PLAYLIST_SLIDER_GET_PRIVATE(hs); - - hs->x = x; - hs->y = y; - priv->width = 8; - priv->height = h; - priv->list = list; - priv->skin_index = SKIN_PLEDIT; - - gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(hs), hs->x, hs->y); - - return GTK_WIDGET(hs); -} - -static void ui_skinned_playlist_slider_destroy(GtkObject *object) { - UiSkinnedPlaylistSlider *playlist_slider; - - g_return_if_fail (object != NULL); - g_return_if_fail (UI_SKINNED_IS_PLAYLIST_SLIDER (object)); - - playlist_slider = UI_SKINNED_PLAYLIST_SLIDER (object); - - if (GTK_OBJECT_CLASS (parent_class)->destroy) - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); -} - -static void ui_skinned_playlist_slider_realize(GtkWidget *widget) { - UiSkinnedPlaylistSlider *playlist_slider; - GdkWindowAttr attributes; - gint attributes_mask; - - g_return_if_fail (widget != NULL); - g_return_if_fail (UI_SKINNED_IS_PLAYLIST_SLIDER(widget)); - - GTK_WIDGET_SET_FLAGS(widget, GTK_REALIZED); - playlist_slider = UI_SKINNED_PLAYLIST_SLIDER(widget); - - attributes.x = widget->allocation.x; - attributes.y = widget->allocation.y; - attributes.width = widget->allocation.width; - attributes.height = widget->allocation.height; - attributes.wclass = GDK_INPUT_OUTPUT; - attributes.window_type = GDK_WINDOW_CHILD; - attributes.event_mask = gtk_widget_get_events(widget); - attributes.event_mask |= GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | - GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK; - attributes.visual = gtk_widget_get_visual(widget); - attributes.colormap = gtk_widget_get_colormap(widget); - - attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; - widget->window = gdk_window_new(widget->parent->window, &attributes, attributes_mask); - - widget->style = gtk_style_attach(widget->style, widget->window); - gdk_window_set_user_data(widget->window, widget); -} -static void ui_skinned_playlist_slider_size_request(GtkWidget *widget, GtkRequisition *requisition) { - UiSkinnedPlaylistSliderPrivate *priv = UI_SKINNED_PLAYLIST_SLIDER_GET_PRIVATE(widget); +static GtkWidget * pl_slider_list; +static gint pl_slider_height; +static gboolean pl_slider_pressed; - requisition->width = priv->width; - requisition->height = priv->height; -} - -static void ui_skinned_playlist_slider_size_allocate(GtkWidget *widget, GtkAllocation *allocation) { - UiSkinnedPlaylistSlider *playlist_slider = UI_SKINNED_PLAYLIST_SLIDER (widget); - UiSkinnedPlaylistSliderPrivate *priv = UI_SKINNED_PLAYLIST_SLIDER_GET_PRIVATE(playlist_slider); - - widget->allocation = *allocation; - if (GTK_WIDGET_REALIZED (widget)) - gdk_window_move_resize(widget->window, widget->allocation.x, widget->allocation.y, allocation->width, allocation->height); - - if (playlist_slider->x + priv->move_x == widget->allocation.x) - priv->move_x = 0; - playlist_slider->x = widget->allocation.x; - playlist_slider->y = widget->allocation.y; - - if (priv->height != widget->allocation.height) { - priv->height = priv->height + priv->resize_height; - priv->resize_height = 0; - ui_skinned_playlist_slider_update (widget); - } -} - -static gboolean ui_skinned_playlist_slider_expose(GtkWidget *widget, GdkEventExpose *event) { - gint rows, first, focused, y; - - UiSkinnedPlaylistSlider *ps = UI_SKINNED_PLAYLIST_SLIDER (widget); - UiSkinnedPlaylistSliderPrivate *priv = UI_SKINNED_PLAYLIST_SLIDER_GET_PRIVATE(ps); - g_return_val_if_fail (priv->width > 0 && priv->height > 0, FALSE); - - GdkPixbuf *obj = NULL; - obj = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, priv->width, priv->height); +DRAW_FUNC_BEGIN (pl_slider_draw) + gint rows, first, focused; + ui_skinned_playlist_row_info (pl_slider_list, & rows, & first, & focused); - ui_skinned_playlist_row_info (priv->list, & rows, & first, & focused); + gint range = active_length - rows; + gint y; if (active_length > rows) - y = first * (priv->height - 19) / (active_length - rows); + y = (first * (pl_slider_height - 19) + range / 2) / range; else y = 0; - if (y < 0) y=0; - if (y > priv->height - 19) y = priv->height - 19; + for (gint i = 0; i < pl_slider_height / 29; i ++) + skin_draw_pixbuf (cr, SKIN_PLEDIT, 36, 42, 0, 29 * i, 8, 29); - priv->prev_y = y; + skin_draw_pixbuf (cr, SKIN_PLEDIT, pl_slider_pressed ? 61 : 52, 53, 0, y, 8, + 18); +DRAW_FUNC_END - /* FIXME: uses aud_active_skin->pixmaps directly and may need calibration */ - /* drawing background */ - gint c; - for (c = 0; c < priv->height / 29; c++) { - gdk_pixbuf_copy_area(aud_active_skin->pixmaps[SKIN_PLEDIT].pixbuf, - 36, 42, priv->width, 29, obj, 0, c*29); - } - - /* drawing knob */ - skin_draw_pixbuf(widget, aud_active_skin, obj, priv->skin_index, ps->pressed ? 61 : 52, 53, 0, y, priv->width, 18); +static void pl_slider_set_pos (gint y) +{ + y = CLAMP (y, 0, pl_slider_height - 19); - ui_skinned_widget_draw(widget, obj, priv->width, priv->height, FALSE); + gint rows, first, focused; + ui_skinned_playlist_row_info (pl_slider_list, & rows, & first, & focused); - g_object_unref(obj); + gint range = pl_slider_height - 19; - return FALSE; + ui_skinned_playlist_scroll_to (pl_slider_list, (y * (active_length - rows) + + range / 2) / range); } -void ui_skinned_playlist_slider_update (GtkWidget * widget) +static gboolean pl_slider_button_press (GtkWidget * slider, GdkEventButton * + event) { - if (widget_really_drawable (widget)) - ui_skinned_playlist_slider_expose (widget, 0); -} - -static void ui_skinned_playlist_slider_set_position(GtkWidget *widget, gint y) { - gint rows, first, focused; - UiSkinnedPlaylistSliderPrivate *priv = UI_SKINNED_PLAYLIST_SLIDER_GET_PRIVATE(widget); + if (event->button != 1) + return FALSE; - y = CLAMP(y, 0, priv->height - 19); + pl_slider_pressed = TRUE; + pl_slider_set_pos (event->y - 9); - ui_skinned_playlist_row_info (priv->list, & rows, & first, & focused); - ui_skinned_playlist_scroll_to (priv->list, y * (active_length - rows) - / (priv->height - 19)); + gtk_widget_queue_draw (slider); + return TRUE; } -static gboolean ui_skinned_playlist_slider_button_press(GtkWidget *widget, GdkEventButton *event) { - UiSkinnedPlaylistSlider *ps = UI_SKINNED_PLAYLIST_SLIDER (widget); - UiSkinnedPlaylistSliderPrivate *priv = UI_SKINNED_PLAYLIST_SLIDER_GET_PRIVATE(widget); - gint rows, first, focused, n; +static gboolean pl_slider_button_release (GtkWidget * slider, GdkEventButton * + event) +{ + if (event->button != 1) + return FALSE; - if (event->button != 1 && event->button != 2) + if (! pl_slider_pressed) return TRUE; - ui_skinned_playlist_row_info (priv->list, & rows, & first, & focused); - - gint y = event->y; - if (event->type == GDK_BUTTON_PRESS) { - ps->pressed = TRUE; - if ((y >= priv->prev_y && y < priv->prev_y + 18)) { - priv->drag_y = y - priv->prev_y; - } else if (event->button == 2) { - ui_skinned_playlist_slider_set_position(widget, y); - priv->drag_y = 0; - } else { - n = rows / 2; - - if (y < priv->prev_y) - n *= -1; + pl_slider_pressed = FALSE; + pl_slider_set_pos (event->y - 9); - ui_skinned_playlist_scroll_to (priv->list, first + n); - } - - ui_skinned_playlist_slider_update (widget); - } + gtk_widget_queue_draw (slider); return TRUE; } -static gboolean ui_skinned_playlist_slider_button_release(GtkWidget *widget, GdkEventButton *event) { - UiSkinnedPlaylistSlider *ps = UI_SKINNED_PLAYLIST_SLIDER(widget); +static gboolean pl_slider_motion (GtkWidget * slider, GdkEventMotion * event) +{ + if (! pl_slider_pressed) + return TRUE; - if (event->button == 1 || event->button == 2) { - ps->pressed = FALSE; - ui_skinned_playlist_slider_update (widget); - } + pl_slider_set_pos (event->y - 9); + + gtk_widget_queue_draw (slider); return TRUE; } -static gboolean ui_skinned_playlist_slider_motion_notify(GtkWidget *widget, GdkEventMotion *event) { - UiSkinnedPlaylistSlider *ps = UI_SKINNED_PLAYLIST_SLIDER(widget); - UiSkinnedPlaylistSliderPrivate *priv = UI_SKINNED_PLAYLIST_SLIDER_GET_PRIVATE(widget); - - if (ps->pressed) { - gint y = event->y - priv->drag_y; - ui_skinned_playlist_slider_set_position(widget, y); - } - return TRUE; +GtkWidget * ui_skinned_playlist_slider_new (GtkWidget * list, gint height) +{ + GtkWidget * slider = gtk_drawing_area_new (); + gtk_widget_set_size_request (slider, 8, height); + gtk_widget_add_events (slider, GDK_BUTTON_PRESS_MASK | + GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK); + + pl_slider_list = list; + pl_slider_height = height; + + DRAW_CONNECT (slider, pl_slider_draw); + g_signal_connect (slider, "button-press-event", (GCallback) + pl_slider_button_press, NULL); + g_signal_connect (slider, "button-release-event", (GCallback) + pl_slider_button_release, NULL); + g_signal_connect (slider, "motion-notify-event", (GCallback) + pl_slider_motion, NULL); + + return slider; } -void ui_skinned_playlist_slider_move_relative(GtkWidget *widget, gint x) { - UiSkinnedPlaylistSlider *playlist_slider = UI_SKINNED_PLAYLIST_SLIDER(widget); - UiSkinnedPlaylistSliderPrivate *priv = UI_SKINNED_PLAYLIST_SLIDER_GET_PRIVATE(widget); - priv->move_x += x; - gtk_fixed_move(GTK_FIXED(gtk_widget_get_parent(widget)), widget, - playlist_slider->x+priv->move_x, playlist_slider->y); +void ui_skinned_playlist_slider_resize (GtkWidget * slider, gint height) +{ + pl_slider_height = height; + gtk_widget_set_size_request (slider, 8, height); + gtk_widget_queue_draw (slider); } -void ui_skinned_playlist_slider_resize_relative(GtkWidget *widget, gint h) { - UiSkinnedPlaylistSlider *playlist_slider = UI_SKINNED_PLAYLIST_SLIDER(widget); - UiSkinnedPlaylistSliderPrivate *priv = UI_SKINNED_PLAYLIST_SLIDER_GET_PRIVATE(widget); - priv->resize_height += h; - gtk_widget_set_size_request(GTK_WIDGET(playlist_slider), priv->width, priv->height+priv->resize_height); +void ui_skinned_playlist_slider_update (GtkWidget * slider) +{ + gtk_widget_queue_draw (slider); } diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_playlist_slider.h audacious-plugins-3.2/src/skins/ui_skinned_playlist_slider.h --- audacious-plugins-2.4.4/src/skins/ui_skinned_playlist_slider.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_playlist_slider.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -24,41 +25,13 @@ * Audacious or using our public API to be a derived work. */ -#ifndef AUDACIOUS_UI_SKINNED_PLAYLIST_SLIDER_H -#define AUDACIOUS_UI_SKINNED_PLAYLIST_SLIDER_H +#ifndef SKINS_UI_SKINNED_PLAYLIST_SLIDER_H +#define SKINS_UI_SKINNED_PLAYLIST_SLIDER_H #include -#ifdef __cplusplus -extern "C" { -#endif - -#define UI_SKINNED_PLAYLIST_SLIDER(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, ui_skinned_playlist_slider_get_type (), UiSkinnedPlaylistSlider) -#define UI_SKINNED_PLAYLIST_SLIDER_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, ui_skinned_playlist_slider_get_type (), UiSkinnedPlaylistSliderClass) -#define UI_SKINNED_IS_PLAYLIST_SLIDER(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, ui_skinned_playlist_slider_get_type ()) - -typedef struct _UiSkinnedPlaylistSlider UiSkinnedPlaylistSlider; -typedef struct _UiSkinnedPlaylistSliderClass UiSkinnedPlaylistSliderClass; - -struct _UiSkinnedPlaylistSlider { - GtkWidget widget; - gboolean pressed; - gint x, y; -}; +GtkWidget * ui_skinned_playlist_slider_new (GtkWidget * list, gint height); +void ui_skinned_playlist_slider_resize (GtkWidget * slider, gint height); +void ui_skinned_playlist_slider_update (GtkWidget * slider); -struct _UiSkinnedPlaylistSliderClass { - GtkWidgetClass parent_class; -}; - -GtkWidget * ui_skinned_playlist_slider_new (GtkWidget * fixed, gint x, gint y, - gint h, GtkWidget * list); -GType ui_skinned_playlist_slider_get_type(void); -void ui_skinned_playlist_slider_move_relative(GtkWidget *widget, gint x); -void ui_skinned_playlist_slider_resize_relative(GtkWidget *widget, gint h); -void ui_skinned_playlist_slider_update (GtkWidget * widget); - -#ifdef __cplusplus -} #endif - -#endif /* AUDACIOUS_UI_SKINNED_PLAYLIST_SLIDER_H */ diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_playstatus.c audacious-plugins-3.2/src/skins/ui_skinned_playstatus.c --- audacious-plugins-2.4.4/src/skins/ui_skinned_playstatus.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_playstatus.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -24,203 +25,57 @@ * Audacious or using our public API to be a derived work. */ +#include "draw-compat.h" #include "ui_skin.h" #include "ui_skinned_playstatus.h" -#include "skins_cfg.h" -#include "util.h" -#define UI_TYPE_SKINNED_PLAYSTATUS (ui_skinned_playstatus_get_type()) +static gint playstatus_width, playstatus_height; +static PStatus playstatus_status; -enum { - DOUBLED, - LAST_SIGNAL -}; - -static void ui_skinned_playstatus_class_init (UiSkinnedPlaystatusClass *klass); -static void ui_skinned_playstatus_init (UiSkinnedPlaystatus *playstatus); -static void ui_skinned_playstatus_destroy (GtkObject *object); -static void ui_skinned_playstatus_realize (GtkWidget *widget); -static void ui_skinned_playstatus_size_request (GtkWidget *widget, GtkRequisition *requisition); -static void ui_skinned_playstatus_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -static gboolean ui_skinned_playstatus_expose (GtkWidget *widget, GdkEventExpose *event); -static void ui_skinned_playstatus_toggle_scaled (UiSkinnedPlaystatus *playstatus); - -static GtkWidgetClass *parent_class = NULL; -static guint playstatus_signals[LAST_SIGNAL] = { 0 }; - -GType ui_skinned_playstatus_get_type() { - static GType playstatus_type = 0; - if (!playstatus_type) { - static const GTypeInfo playstatus_info = { - sizeof (UiSkinnedPlaystatusClass), - NULL, - NULL, - (GClassInitFunc) ui_skinned_playstatus_class_init, - NULL, - NULL, - sizeof (UiSkinnedPlaystatus), - 0, - (GInstanceInitFunc) ui_skinned_playstatus_init, - }; - playstatus_type = g_type_register_static (GTK_TYPE_WIDGET, "UiSkinnedPlaystatus", &playstatus_info, 0); - } - - return playstatus_type; -} - -static void ui_skinned_playstatus_class_init(UiSkinnedPlaystatusClass *klass) { - GObjectClass *gobject_class; - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - gobject_class = G_OBJECT_CLASS(klass); - object_class = (GtkObjectClass*) klass; - widget_class = (GtkWidgetClass*) klass; - parent_class = g_type_class_peek_parent(klass); - - object_class->destroy = ui_skinned_playstatus_destroy; - - widget_class->realize = ui_skinned_playstatus_realize; - widget_class->expose_event = ui_skinned_playstatus_expose; - widget_class->size_request = ui_skinned_playstatus_size_request; - widget_class->size_allocate = ui_skinned_playstatus_size_allocate; - - klass->scaled = ui_skinned_playstatus_toggle_scaled; - - playstatus_signals[DOUBLED] = - g_signal_new ("toggle-scaled", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSkinnedPlaystatusClass, scaled), NULL, NULL, - g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); -} - -static void ui_skinned_playstatus_init(UiSkinnedPlaystatus *playstatus) { - playstatus->width = 11; - playstatus->height = 9; - - GTK_WIDGET_SET_FLAGS(playstatus, GTK_NO_WINDOW); -} - -GtkWidget* ui_skinned_playstatus_new(GtkWidget *fixed, gint x, gint y) { - UiSkinnedPlaystatus *playstatus = g_object_new (ui_skinned_playstatus_get_type (), NULL); - - playstatus->x = x; - playstatus->y = y; - - playstatus->scaled = FALSE; - - gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(playstatus), playstatus->x, playstatus->y); +DRAW_FUNC_BEGIN (playstatus_draw) + if (! playstatus_width || ! playstatus_height) + goto DONE; - return GTK_WIDGET(playstatus); -} - -static void ui_skinned_playstatus_destroy(GtkObject *object) { - UiSkinnedPlaystatus *playstatus; - - g_return_if_fail (object != NULL); - g_return_if_fail (UI_SKINNED_IS_PLAYSTATUS (object)); - - playstatus = UI_SKINNED_PLAYSTATUS (object); - - if (GTK_OBJECT_CLASS (parent_class)->destroy) - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); -} - -static void ui_skinned_playstatus_realize(GtkWidget *widget) { - if (GTK_WIDGET_CLASS (parent_class)->realize) - (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); -} - -static void ui_skinned_playstatus_size_request(GtkWidget *widget, GtkRequisition *requisition) { - UiSkinnedPlaystatus *playstatus = UI_SKINNED_PLAYSTATUS(widget); - - requisition->width = playstatus->width*(playstatus->scaled ? config.scale_factor : 1); - requisition->height = playstatus->height*(playstatus->scaled ? config.scale_factor : 1); -} - -static void ui_skinned_playstatus_size_allocate(GtkWidget *widget, GtkAllocation *allocation) { - UiSkinnedPlaystatus *playstatus = UI_SKINNED_PLAYSTATUS (widget); - - widget->allocation = *allocation; - widget->allocation.x *= (playstatus->scaled ? config.scale_factor : 1); - widget->allocation.y *= (playstatus->scaled ? config.scale_factor : 1); - - playstatus->x = widget->allocation.x/(playstatus->scaled ? config.scale_factor : 1); - playstatus->y = widget->allocation.y/(playstatus->scaled ? config.scale_factor : 1); -} - -static gboolean ui_skinned_playstatus_expose(GtkWidget *widget, GdkEventExpose *event) { - UiSkinnedPlaystatus *playstatus = UI_SKINNED_PLAYSTATUS (widget); - g_return_val_if_fail (playstatus->width > 0 && playstatus->height > 0, FALSE); - - GdkPixbuf *obj = NULL; - obj = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, playstatus->width, playstatus->height); - - if (playstatus->status == STATUS_STOP && playstatus->buffering == TRUE) - playstatus->buffering = FALSE; - if (playstatus->status == STATUS_PLAY && playstatus->buffering == TRUE) - skin_draw_pixbuf(widget, aud_active_skin, obj, SKIN_PLAYPAUSE, 39, 0, 0, 0, 3, playstatus->height); - else if (playstatus->status == STATUS_PLAY) - skin_draw_pixbuf(widget, aud_active_skin, obj, SKIN_PLAYPAUSE, 36, 0, 0, 0, 3, playstatus->height); + if (playstatus_status == STATUS_PLAY) + skin_draw_pixbuf (cr, SKIN_PLAYPAUSE, 36, 0, 0, 0, 3, playstatus_height); else - skin_draw_pixbuf(widget, aud_active_skin, obj, SKIN_PLAYPAUSE, 27, 0, 0, 0, 2, playstatus->height); - switch (playstatus->status) { + skin_draw_pixbuf (cr, SKIN_PLAYPAUSE, 27, 0, 0, 0, 2, playstatus_height); + + switch (playstatus_status) + { case STATUS_STOP: - skin_draw_pixbuf(widget, aud_active_skin, obj, SKIN_PLAYPAUSE, 18, 0, 2, 0, 9, playstatus->height); + skin_draw_pixbuf (cr, SKIN_PLAYPAUSE, 18, 0, 2, 0, 9, playstatus_height); break; case STATUS_PAUSE: - skin_draw_pixbuf(widget, aud_active_skin, obj, SKIN_PLAYPAUSE, 9, 0, 2, 0, 9, playstatus->height); + skin_draw_pixbuf (cr, SKIN_PLAYPAUSE, 9, 0, 2, 0, 9, playstatus_height); break; case STATUS_PLAY: - skin_draw_pixbuf(widget, aud_active_skin, obj, SKIN_PLAYPAUSE, 1, 0, 3, 0, 8, playstatus->height); + skin_draw_pixbuf (cr, SKIN_PLAYPAUSE, 1, 0, 3, 0, 8, playstatus_height); break; } - ui_skinned_widget_draw_with_coordinates(widget, obj, playstatus->width, playstatus->height, - widget->allocation.x, - widget->allocation.y, - playstatus->scaled); - - g_object_unref(obj); - - return FALSE; -} - -static void ui_skinned_playstatus_toggle_scaled(UiSkinnedPlaystatus *playstatus) { - GtkWidget *widget = GTK_WIDGET (playstatus); - - playstatus->scaled = !playstatus->scaled; - gtk_widget_set_size_request(widget, playstatus->width*(playstatus->scaled ? config.scale_factor : 1), playstatus->height*(playstatus->scaled ? config.scale_factor : 1)); - - if (widget_really_drawable (widget)) - ui_skinned_playstatus_expose (widget, 0); -} - -void ui_skinned_playstatus_set_status(GtkWidget *widget, PStatus status) { - g_return_if_fail (UI_SKINNED_IS_PLAYSTATUS (widget)); - UiSkinnedPlaystatus *playstatus = UI_SKINNED_PLAYSTATUS (widget); - - playstatus->status = status; - - if (widget_really_drawable (widget)) - ui_skinned_playstatus_expose (widget, 0); -} - -void ui_skinned_playstatus_set_buffering(GtkWidget *widget, gboolean status) { - g_return_if_fail (UI_SKINNED_IS_PLAYSTATUS (widget)); - UiSkinnedPlaystatus *playstatus = UI_SKINNED_PLAYSTATUS (widget); - - playstatus->buffering = status; - - if (widget_really_drawable (widget)) - ui_skinned_playstatus_expose (widget, 0); -} - -void ui_skinned_playstatus_set_size(GtkWidget *widget, gint width, gint height) { - g_return_if_fail (UI_SKINNED_IS_PLAYSTATUS (widget)); - UiSkinnedPlaystatus *playstatus = UI_SKINNED_PLAYSTATUS (widget); +DONE: +DRAW_FUNC_END - playstatus->width = width; - playstatus->height = height; +GtkWidget * ui_skinned_playstatus_new (void) +{ + GtkWidget * playstatus = gtk_drawing_area_new (); + DRAW_CONNECT (playstatus, playstatus_draw); + return playstatus; +} + +void ui_skinned_playstatus_set_status (GtkWidget * playstatus, PStatus status) +{ + playstatus_status = status; + gtk_widget_queue_draw (playstatus); +} + +void ui_skinned_playstatus_set_size (GtkWidget * playstatus, gint width, gint + height) +{ + playstatus_width = width; + playstatus_height = height; - gtk_widget_set_size_request(widget, width*(playstatus->scaled ? config.scale_factor : 1), height*(playstatus->scaled ? config.scale_factor : 1)); + gtk_widget_set_size_request (playstatus, width, height); + gtk_widget_queue_draw (playstatus); } diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_playstatus.h audacious-plugins-3.2/src/skins/ui_skinned_playstatus.h --- audacious-plugins-2.4.4/src/skins/ui_skinned_playstatus.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_playstatus.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -24,48 +25,17 @@ * Audacious or using our public API to be a derived work. */ -#ifndef AUDACIOUS_UI_SKINNED_PLAYSTATUS_H -#define AUDACIOUS_UI_SKINNED_PLAYSTATUS_H +#ifndef SKINS_UI_SKINNED_PLAYSTATUS_H +#define SKINS_UI_SKINNED_PLAYSTATUS_H #include -#ifdef __cplusplus -extern "C" { -#endif - -#define UI_SKINNED_PLAYSTATUS(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, ui_skinned_playstatus_get_type (), UiSkinnedPlaystatus) -#define UI_SKINNED_PLAYSTATUS_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, ui_skinned_playstatus_get_type (), UiSkinnedPlaystatusClass) -#define UI_SKINNED_IS_PLAYSTATUS(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, ui_skinned_playstatus_get_type ()) - -typedef struct _UiSkinnedPlaystatus UiSkinnedPlaystatus; -typedef struct _UiSkinnedPlaystatusClass UiSkinnedPlaystatusClass; - typedef enum { STATUS_STOP, STATUS_PAUSE, STATUS_PLAY } PStatus; -struct _UiSkinnedPlaystatus { - GtkWidget widget; - - gint x, y, width, height; - gboolean scaled; - PStatus status; - gboolean buffering; -}; - -struct _UiSkinnedPlaystatusClass { - GtkWidgetClass parent_class; - void (* scaled) (UiSkinnedPlaystatus *menurow); -}; - -GtkWidget* ui_skinned_playstatus_new (GtkWidget *fixed, gint x, gint y); -GType ui_skinned_playstatus_get_type(void); +GtkWidget * ui_skinned_playstatus_new (void); void ui_skinned_playstatus_set_status(GtkWidget *widget, PStatus status); -void ui_skinned_playstatus_set_buffering(GtkWidget *widget, gboolean status); void ui_skinned_playstatus_set_size(GtkWidget *widget, gint width, gint height); -#ifdef __cplusplus -} #endif - -#endif /* AUDACIOUS_UI_SKINNED_PLAYSTATUS_H */ diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_textbox.c audacious-plugins-3.2/src/skins/ui_skinned_textbox.c --- audacious-plugins-2.4.4/src/skins/ui_skinned_textbox.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_textbox.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -26,899 +27,380 @@ #include -#include - -#include "ui_skinned_textbox.h" +#include "draw-compat.h" #include "skins_cfg.h" -#include "plugin.h" -#include "util.h" - -#define UI_SKINNED_TEXTBOX_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), ui_skinned_textbox_get_type(), UiSkinnedTextboxPrivate)) -typedef struct _UiSkinnedTextboxPrivate UiSkinnedTextboxPrivate; +#include "ui_skin.h" +#include "ui_skinned_textbox.h" -#define TEXTBOX_SCROLL_SMOOTH_TIMEOUT 30 -#define TEXTBOX_SCROLL_WAIT 80 +#define TIMEOUT 30 +#define DELAY 50 -enum { - CLICKED, - DOUBLE_CLICKED, - RIGHT_CLICKED, - DOUBLED, - LAST_SIGNAL -}; - -struct _UiSkinnedTextboxPrivate { - SkinPixmapId skin_index; - gboolean scaled; - gboolean scroll_back; - gint nominal_y, nominal_height; - gint scroll_timeout; - gint crop; - PangoFontDescription *font; - gchar *fontname; - gchar *pixbuf_text; - gint skin_id; - gint drag_x, drag_off, offset; - gboolean is_scrollable, is_dragging; - gint pixbuf_width; - GdkPixbuf *pixbuf; - gboolean scroll_allowed, scroll_enabled; - gint scroll_dummy; - gint move_x, move_y; -}; - -static void ui_skinned_textbox_class_init (UiSkinnedTextboxClass *klass); -static void ui_skinned_textbox_init (UiSkinnedTextbox *textbox); -static void ui_skinned_textbox_destroy (GtkObject *object); -static void ui_skinned_textbox_realize (GtkWidget *widget); -static void ui_skinned_textbox_unrealize (GtkWidget *widget); -static void ui_skinned_textbox_map (GtkWidget *widget); -static void ui_skinned_textbox_unmap (GtkWidget *widget); -static void ui_skinned_textbox_size_request (GtkWidget *widget, GtkRequisition *requisition); -static void ui_skinned_textbox_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -static gboolean ui_skinned_textbox_expose (GtkWidget *widget, GdkEventExpose *event); -static gboolean ui_skinned_textbox_button_press (GtkWidget *widget, GdkEventButton *event); -static gboolean ui_skinned_textbox_button_release (GtkWidget *widget, GdkEventButton *event); -static gboolean ui_skinned_textbox_motion_notify (GtkWidget *widget, GdkEventMotion *event); -static void ui_skinned_textbox_toggle_scaled (UiSkinnedTextbox *textbox); -static gboolean ui_skinned_textbox_should_scroll (UiSkinnedTextbox *textbox); -static void textbox_generate_xfont_pixmap (UiSkinnedTextbox *textbox, const gchar *pixmaptext); -static gboolean textbox_scroll (gpointer data); -static void textbox_generate_pixmap (UiSkinnedTextbox *textbox); -static void textbox_handle_special_char (gchar *c, gint * x, gint * y); - -static GtkWidgetClass *parent_class = NULL; -static guint textbox_signals[LAST_SIGNAL] = { 0 }; - -GType ui_skinned_textbox_get_type() { - static GType textbox_type = 0; - if (!textbox_type) { - static const GTypeInfo textbox_info = { - sizeof (UiSkinnedTextboxClass), - NULL, - NULL, - (GClassInitFunc) ui_skinned_textbox_class_init, - NULL, - NULL, - sizeof (UiSkinnedTextbox), - 0, - (GInstanceInitFunc) ui_skinned_textbox_init, - }; - textbox_type = g_type_register_static (GTK_TYPE_WIDGET, "UiSkinnedTextbox", &textbox_info, 0); - } - - return textbox_type; -} - -static void ui_skinned_textbox_class_init(UiSkinnedTextboxClass *klass) { - GObjectClass *gobject_class; - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - gobject_class = G_OBJECT_CLASS(klass); - object_class = (GtkObjectClass*) klass; - widget_class = (GtkWidgetClass*) klass; - parent_class = g_type_class_peek_parent(klass); - - object_class->destroy = ui_skinned_textbox_destroy; - - widget_class->realize = ui_skinned_textbox_realize; - widget_class->unrealize = ui_skinned_textbox_unrealize; - widget_class->map = ui_skinned_textbox_map; - widget_class->unmap = ui_skinned_textbox_unmap; - widget_class->expose_event = ui_skinned_textbox_expose; - widget_class->size_request = ui_skinned_textbox_size_request; - widget_class->size_allocate = ui_skinned_textbox_size_allocate; - widget_class->button_press_event = ui_skinned_textbox_button_press; - widget_class->button_release_event = ui_skinned_textbox_button_release; - widget_class->motion_notify_event = ui_skinned_textbox_motion_notify; - - klass->clicked = NULL; - klass->double_clicked = NULL; - klass->right_clicked = NULL; - klass->scaled = ui_skinned_textbox_toggle_scaled; - - textbox_signals[CLICKED] = - g_signal_new ("clicked", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSkinnedTextboxClass, clicked), NULL, NULL, - g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - - textbox_signals[DOUBLE_CLICKED] = - g_signal_new ("double-clicked", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSkinnedTextboxClass, double_clicked), NULL, NULL, - g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - - textbox_signals[RIGHT_CLICKED] = - g_signal_new ("right-clicked", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSkinnedTextboxClass, right_clicked), NULL, NULL, - g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER); - - textbox_signals[DOUBLED] = - g_signal_new ("toggle-scaled", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSkinnedTextboxClass, scaled), NULL, NULL, - g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - - g_type_class_add_private (gobject_class, sizeof (UiSkinnedTextboxPrivate)); -} - -static void ui_skinned_textbox_init(UiSkinnedTextbox *textbox) { - UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(textbox); - priv->move_x = 0; - priv->move_y = 0; - - textbox->event_window = NULL; - GTK_WIDGET_SET_FLAGS (textbox, GTK_NO_WINDOW); -} - -GtkWidget* ui_skinned_textbox_new(GtkWidget *fixed, gint x, gint y, gint w, gboolean allow_scroll, SkinPixmapId si) { - UiSkinnedTextbox *textbox = g_object_new (ui_skinned_textbox_get_type (), NULL); - UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(textbox); - - textbox->height = aud_active_skin->properties.textbox_bitmap_font_height; - textbox->x = x; - textbox->y = y; - textbox->text = g_strdup(""); - textbox->width = w; - priv->scroll_allowed = allow_scroll; - priv->scroll_enabled = TRUE; - priv->skin_index = si; - priv->nominal_y = y; - priv->nominal_height = textbox->height; - priv->scroll_timeout = 0; - priv->scroll_dummy = 0; - - priv->scaled = FALSE; - - gtk_fixed_put(GTK_FIXED(fixed), GTK_WIDGET(textbox), textbox->x, textbox->y); - - return GTK_WIDGET(textbox); -} - -static void ui_skinned_textbox_destroy(GtkObject *object) { - UiSkinnedTextbox *textbox; - UiSkinnedTextboxPrivate *priv; - - g_return_if_fail (object != NULL); - g_return_if_fail (UI_SKINNED_IS_TEXTBOX (object)); - - textbox = UI_SKINNED_TEXTBOX (object); - priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(object); - - if (priv->scroll_timeout) { - g_source_remove(priv->scroll_timeout); - priv->scroll_timeout = 0; - } - - g_free (textbox->text); - textbox->text = NULL; - g_free (priv->pixbuf_text); - priv->pixbuf_text = NULL; - g_free (priv->fontname); - priv->fontname = NULL; - - if (GTK_OBJECT_CLASS (parent_class)->destroy) - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); -} - -static void ui_skinned_textbox_realize(GtkWidget *widget) { - UiSkinnedTextbox *textbox; - GdkWindowAttr attributes; - gint attributes_mask; - - g_return_if_fail (widget != NULL); - g_return_if_fail (UI_SKINNED_IS_TEXTBOX(widget)); - - if (GTK_WIDGET_CLASS (parent_class)->realize) - (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); - - textbox = UI_SKINNED_TEXTBOX(widget); - - attributes.x = widget->allocation.x; - attributes.y = widget->allocation.y; - attributes.width = widget->allocation.width; - attributes.height = widget->allocation.height; - attributes.wclass = GDK_INPUT_ONLY; - attributes.window_type = GDK_WINDOW_CHILD; - attributes.event_mask = gtk_widget_get_events(widget); - attributes.event_mask |= GDK_BUTTON_PRESS_MASK | - GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | - GDK_POINTER_MOTION_HINT_MASK; - - attributes_mask = GDK_WA_X | GDK_WA_Y; - textbox->event_window = gdk_window_new (widget->window, &attributes, attributes_mask); - - widget->style = gtk_style_attach(widget->style, widget->window); - - gdk_window_set_user_data(textbox->event_window, widget); -} - -static void ui_skinned_textbox_unrealize(GtkWidget *widget) { - UiSkinnedTextbox *textbox = UI_SKINNED_TEXTBOX(widget); - - if ( textbox->event_window != NULL ) - { - gdk_window_set_user_data( textbox->event_window , NULL ); - gdk_window_destroy( textbox->event_window ); - textbox->event_window = NULL; - } - - if (GTK_WIDGET_CLASS (parent_class)->unrealize) - (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); -} - -static void ui_skinned_textbox_map (GtkWidget *widget) -{ - UiSkinnedTextbox *textbox = UI_SKINNED_TEXTBOX (widget); - - if (textbox->event_window != NULL) - gdk_window_show (textbox->event_window); - - if (GTK_WIDGET_CLASS (parent_class)->map) - (* GTK_WIDGET_CLASS (parent_class)->map) (widget); -} - -static void ui_skinned_textbox_unmap (GtkWidget *widget) -{ - UiSkinnedTextbox *textbox = UI_SKINNED_TEXTBOX (widget); - - if (textbox->event_window != NULL) - gdk_window_hide (textbox->event_window); - - if (GTK_WIDGET_CLASS (parent_class)->unmap) - (* GTK_WIDGET_CLASS (parent_class)->unmap) (widget); -} - -static void ui_skinned_textbox_size_request(GtkWidget *widget, GtkRequisition *requisition) { - UiSkinnedTextbox *textbox = UI_SKINNED_TEXTBOX(widget); - UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(textbox); - - requisition->width = textbox->width*(priv->scaled ? config.scale_factor : 1); - requisition->height = textbox->height*(priv->scaled ? config.scale_factor : 1 ); -} - -static void ui_skinned_textbox_size_allocate(GtkWidget *widget, GtkAllocation *allocation) { - UiSkinnedTextbox *textbox = UI_SKINNED_TEXTBOX (widget); - UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(textbox); - - widget->allocation = *allocation; - widget->allocation.x *= (priv->scaled ? config.scale_factor : 1); - widget->allocation.y *= (priv->scaled ? config.scale_factor : 1); - if (GTK_WIDGET_REALIZED (widget)) - if (textbox->event_window) - gdk_window_move_resize(textbox->event_window, widget->allocation.x, widget->allocation.y, allocation->width, allocation->height); - - if (textbox->x + priv->move_x - widget->allocation.x/(priv->scaled ? config.scale_factor : 1) <3); - priv->move_x = 0; - if (textbox->y + priv->move_y - widget->allocation.y/(priv->scaled ? config.scale_factor : 1) <3); - priv->move_y = 0; - textbox->x = widget->allocation.x/(priv->scaled ? config.scale_factor : 1); - textbox->y = widget->allocation.y/(priv->scaled ? config.scale_factor : 1); - - if (textbox->width - (guint) (widget->allocation.width / (priv->scaled ? config.scale_factor : 1)) > 2) { - textbox->width = (guint) (widget->allocation.width / (priv->scaled ? config.scale_factor : 1)); - if (priv->pixbuf_text) g_free(priv->pixbuf_text); - priv->pixbuf_text = NULL; - priv->offset = 0; - gtk_widget_set_size_request(widget, textbox->width, textbox->height); - - if (widget_really_drawable (widget)) - ui_skinned_textbox_expose (widget, 0); - } -} - -static gboolean ui_skinned_textbox_expose(GtkWidget *widget, GdkEventExpose *event) { - UiSkinnedTextbox *textbox = UI_SKINNED_TEXTBOX (widget); - UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(textbox); - g_return_val_if_fail (textbox->width > 0 && textbox->height > 0, FALSE); - - GdkPixbuf *obj = NULL; - gint cw; - - if (textbox->text && (!priv->pixbuf_text || strcmp(textbox->text, priv->pixbuf_text))) - textbox_generate_pixmap(textbox); - - if (priv->pixbuf) { - if (skin_get_id() != priv->skin_id) { - priv->skin_id = skin_get_id(); - textbox_generate_pixmap(textbox); - } - obj = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, textbox->width, textbox->height); +typedef struct { + gint width; + gchar * text; + PangoFontDescription * font; + cairo_surface_t * buf; + gint buf_width; + gboolean may_scroll, scrolling, backward; + gint scroll_source; + gint offset, delay; +} TextboxData; + +static GList * textboxes; + +DRAW_FUNC_BEGIN (textbox_draw) + TextboxData * data = g_object_get_data ((GObject *) wid, "textboxdata"); + g_return_val_if_fail (data && data->buf, FALSE); - if (config.twoway_scroll) { // twoway scroll - cw = priv->pixbuf_width - priv->offset; - if (cw > textbox->width) - cw = textbox->width; - gdk_pixbuf_copy_area(priv->pixbuf, priv->offset, 0, cw, textbox->height, obj, 0, 0); - if (cw < textbox->width) - gdk_pixbuf_copy_area(priv->pixbuf, 0, 0, textbox->width - cw, textbox->height, - obj, textbox->width - cw, textbox->height); - } else { // oneway scroll - int cw1, cw2; - - if (priv->offset >= priv->pixbuf_width) - priv->offset = 0; - - if (priv->pixbuf_width - priv->offset > textbox->width) { // case1 - cw1 = textbox->width; - gdk_pixbuf_copy_area(priv->pixbuf, priv->offset, 0, cw1, textbox->height, - obj, 0, 0); - } else { // case 2 - cw1 = priv->pixbuf_width - priv->offset; - gdk_pixbuf_copy_area(priv->pixbuf, priv->offset, 0, cw1, textbox->height, obj, 0, 0); - cw2 = textbox->width - cw1; - gdk_pixbuf_copy_area(priv->pixbuf, 0, 0, cw2, textbox->height, obj, cw1, 0); - } - } + if (data->scrolling) + { + cairo_set_source_surface (cr, data->buf, -data->offset, 0); + cairo_paint (cr); - ui_skinned_widget_draw_with_coordinates(widget, obj, textbox->width, textbox->height, - widget->allocation.x, - widget->allocation.y, - priv->scaled); - - g_object_unref(obj); - } - - return FALSE; -} - -static gboolean ui_skinned_textbox_button_press(GtkWidget *widget, GdkEventButton *event) { - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (UI_SKINNED_IS_TEXTBOX (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - UiSkinnedTextbox *textbox = UI_SKINNED_TEXTBOX (widget); - UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(textbox); - - if (event->type == GDK_BUTTON_PRESS) { - textbox = UI_SKINNED_TEXTBOX(widget); - if (event->button == 3 && !g_signal_has_handler_pending(widget, textbox_signals[RIGHT_CLICKED], 0, TRUE)) - return FALSE; - else if (event->button == 1) { - if (priv->scroll_allowed) { - if ((priv->pixbuf_width > textbox->width) && priv->is_scrollable) { - priv->is_dragging = TRUE; - priv->drag_off = priv->offset; - priv->drag_x = event->x; - } - } else - g_signal_emit(widget, textbox_signals[CLICKED], 0); - - } else if (event->button == 3) { - g_signal_emit(widget, textbox_signals[RIGHT_CLICKED], 0, event); - } else - priv->is_dragging = FALSE; - } else if (event->type == GDK_2BUTTON_PRESS) { - if (event->button == 1) { - if (g_signal_has_handler_pending(widget, textbox_signals[DOUBLE_CLICKED], 0, TRUE)) - g_signal_emit(widget, textbox_signals[DOUBLE_CLICKED], 0); - else - return FALSE; + if (-data->offset + data->buf_width < data->width) + { + cairo_set_source_surface (cr, data->buf, -data->offset + + data->buf_width, 0); + cairo_paint (cr); } } + else + { + cairo_set_source_surface (cr, data->buf, 0, 0); + cairo_paint (cr); + } +DRAW_FUNC_END - return TRUE; -} +static gboolean textbox_scroll (GtkWidget * textbox) +{ + TextboxData * data = g_object_get_data ((GObject *) textbox, "textboxdata"); + g_return_val_if_fail (data, FALSE); -static gboolean ui_skinned_textbox_button_release(GtkWidget *widget, GdkEventButton *event) { - UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(widget); + if (data->delay < DELAY) + { + data->delay ++; + return TRUE; + } - if (event->button == 1) { - priv->is_dragging = FALSE; + if (config.twoway_scroll && data->backward) + data->offset --; + else + data->offset ++; + + if (config.twoway_scroll && (data->backward ? (data->offset <= 0) : + (data->offset + data->width >= data->buf_width))) + { + data->backward = ! data->backward; + data->delay = 0; } + if (! config.twoway_scroll && data->offset >= data->buf_width) + data->offset = 0; + + gtk_widget_queue_draw (textbox); return TRUE; } -static gboolean ui_skinned_textbox_motion_notify(GtkWidget *widget, GdkEventMotion *event) { - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (UI_SKINNED_IS_TEXTBOX (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - UiSkinnedTextbox *textbox = UI_SKINNED_TEXTBOX(widget); - UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(widget); - - if (priv->is_dragging) { - if (priv->scroll_allowed && - priv->pixbuf_width > textbox->width) { - priv->offset = priv->drag_off - (event->x - priv->drag_x); +static void textbox_render_vector (GtkWidget * textbox, TextboxData * data, + const gchar * text) +{ + g_return_if_fail (data->font && ! data->buf && text); - while (priv->offset < 0) - priv->offset = 0; + PangoLayout * layout = gtk_widget_create_pango_layout (textbox, text); + pango_layout_set_font_description (layout, data->font); - while (priv->offset > (priv->pixbuf_width - textbox->width)) - priv->offset = (priv->pixbuf_width - textbox->width); + PangoRectangle rect; + pango_layout_get_pixel_extents (layout, NULL, & rect); + gint crop = (rect.height + 2) / 5; - if (widget_really_drawable (widget)) - ui_skinned_textbox_expose (widget, 0); - } + gtk_widget_set_size_request (textbox, data->width, rect.height - crop); + + data->buf_width = MAX (rect.width, data->width); + data->buf = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, + data->buf_width, rect.height - crop); + + cairo_t * cr = cairo_create (data->buf); + + set_cairo_color (cr, active_skin->colors[SKIN_TEXTBG]); + cairo_paint (cr); + + cairo_move_to (cr, 0, -crop); + set_cairo_color (cr, active_skin->colors[SKIN_TEXTFG]); + pango_cairo_show_layout (cr, layout); + + cairo_destroy (cr); + g_object_unref (layout); +} + +static void lookup_char (const gchar c, gint * x, gint * y) +{ + gint tx, ty; + + switch (c) + { + case '"': tx = 26; ty = 0; break; + case '@': tx = 27; ty = 0; break; + case ' ': tx = 29; ty = 0; break; + case ':': + case ';': + case '|': tx = 12; ty = 1; break; + case '(': + case '{': tx = 13; ty = 1; break; + case ')': + case '}': tx = 14; ty = 1; break; + case '-': + case '~': tx = 15; ty = 1; break; + case '`': + case '\'': tx = 16; ty = 1; break; + case '!': tx = 17; ty = 1; break; + case '_': tx = 18; ty = 1; break; + case '+': tx = 19; ty = 1; break; + case '\\': tx = 20; ty = 1; break; + case '/': tx = 21; ty = 1; break; + case '[': tx = 22; ty = 1; break; + case ']': tx = 23; ty = 1; break; + case '^': tx = 24; ty = 1; break; + case '&': tx = 25; ty = 1; break; + case '%': tx = 26; ty = 1; break; + case '.': + case ',': tx = 27; ty = 1; break; + case '=': tx = 28; ty = 1; break; + case '$': tx = 29; ty = 1; break; + case '#': tx = 30; ty = 1; break; + case '?': tx = 3; ty = 2; break; + case '*': tx = 4; ty = 2; break; + default: tx = 3; ty = 2; break; /* '?' */ } - return TRUE; + * x = tx * active_skin->properties.textbox_bitmap_font_width; + * y = ty * active_skin->properties.textbox_bitmap_font_height; } -static void ui_skinned_textbox_toggle_scaled(UiSkinnedTextbox *textbox) { - GtkWidget *widget = GTK_WIDGET (textbox); - UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(textbox); +static void textbox_render_bitmap (GtkWidget * textbox, TextboxData * data, + const gchar * text) +{ + g_return_if_fail (! data->font && ! data->buf && text); - priv->scaled = !priv->scaled; + gint cw = active_skin->properties.textbox_bitmap_font_width; + gint ch = active_skin->properties.textbox_bitmap_font_height; - gtk_widget_set_size_request(widget, textbox->width*(priv->scaled ? config.scale_factor : 1 ), - textbox->height*(priv->scaled ? config.scale_factor : 1 )); + gtk_widget_set_size_request (textbox, data->width, ch); - if (widget_really_drawable (widget)) - ui_skinned_textbox_expose (widget, 0); -} + glong len; + gunichar * utf32 = g_utf8_to_ucs4 (text, -1, NULL, & len, NULL); + g_return_if_fail (utf32); -static gboolean ui_skinned_textbox_should_scroll(UiSkinnedTextbox *textbox) { - UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(textbox); + data->buf_width = MAX (cw * len, data->width); + data->buf = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, + data->buf_width, ch); - if (!priv->scroll_allowed) - return FALSE; + cairo_t * cr = cairo_create (data->buf); - if (priv->font) { - gint width; - text_get_extents(priv->fontname, textbox->text, &width, NULL, NULL, NULL); + gunichar * s = utf32; + for (gint x = 0; x < data->buf_width; x += cw) + { + gunichar c = * s ? * s ++ : ' '; + gint cx = 0, cy = 0; - if (width <= textbox->width) - return FALSE; + if (c >= 'A' && c <= 'Z') + cx = cw * (c - 'A'); + else if (c >= 'a' && c <= 'z') + cx = cw * (c - 'a'); + else if (c >= '0' && c <= '9') + { + cx = cw * (c - '0'); + cy = ch; + } else - return TRUE; - } + lookup_char (c, & cx, & cy); - if (g_utf8_strlen(textbox->text, -1) * aud_active_skin->properties.textbox_bitmap_font_width > textbox->width) - return TRUE; + skin_draw_pixbuf (cr, SKIN_TEXT, cx, cy, x, 0, cw, ch); + } - return FALSE; + cairo_destroy (cr); + g_free (utf32); } -void ui_skinned_textbox_set_xfont(GtkWidget *widget, gboolean use_xfont, const gchar * fontname) { - UiSkinnedTextbox *textbox = UI_SKINNED_TEXTBOX (widget); - UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(textbox); +static void textbox_render (GtkWidget * textbox, TextboxData * data) +{ + g_return_if_fail (data->text); + + if (data->buf) + { + cairo_surface_destroy (data->buf); + data->buf = NULL; + } + + data->scrolling = FALSE; + data->backward = FALSE; + data->offset = 0; + data->delay = 0; + + if (data->font) + textbox_render_vector (textbox, data, data->text); + else + textbox_render_bitmap (textbox, data, data->text); + + if (data->may_scroll && data->buf_width > data->width) + { + data->scrolling = TRUE; + + if (! config.twoway_scroll) + { + if (data->buf) + { + cairo_surface_destroy (data->buf); + data->buf = NULL; + } - gint ascent, descent; + gchar * temp = g_strdup_printf ("%s --- ", data->text); - g_return_if_fail(textbox != NULL); - gtk_widget_queue_resize (widget); + if (data->font) + textbox_render_vector (textbox, data, temp); + else + textbox_render_bitmap (textbox, data, temp); - if (priv->font) { - pango_font_description_free(priv->font); - priv->font = NULL; + g_free (temp); + } } - textbox->y = priv->nominal_y; - textbox->height = priv->nominal_height; + gtk_widget_queue_draw (textbox); - /* Make sure the pixmap is regenerated */ - if (priv->pixbuf_text) { - g_free(priv->pixbuf_text); - priv->pixbuf_text = NULL; + if (data->scrolling) + { + if (! data->scroll_source) + data->scroll_source = g_timeout_add (TIMEOUT, (GSourceFunc) + textbox_scroll, textbox); + } + else + { + if (data->scroll_source) + { + g_source_remove (data->scroll_source); + data->scroll_source = 0; + } } +} + +void textbox_set_width (GtkWidget * textbox, gint width) +{ + TextboxData * data = g_object_get_data ((GObject *) textbox, "textboxdata"); + g_return_if_fail (data); - if (!use_xfont || strlen(fontname) == 0) + if (data->width == width) return; - priv->font = pango_font_description_from_string(fontname); - g_free (priv->fontname); - priv->fontname = g_strdup(fontname); - - text_get_extents(fontname, - "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz ", - NULL, NULL, &ascent, &descent); + data->width = width; + textbox_render (textbox, data); +} + +const gchar * textbox_get_text (GtkWidget * textbox) +{ + TextboxData * data = g_object_get_data ((GObject *) textbox, "textboxdata"); + g_return_val_if_fail (data, NULL); + + return data->text; +} + +void textbox_set_text (GtkWidget * textbox, const gchar * text) +{ + TextboxData * data = g_object_get_data ((GObject *) textbox, "textboxdata"); + g_return_if_fail (data); - if (priv->font == NULL) + if (! text) + text = ""; + + if (data->text && ! strcmp (data->text, text)) return; - textbox->height = ascent - descent; - priv->crop = textbox->height / 5; - textbox->height -= priv->crop; -} - -void ui_skinned_textbox_set_text(GtkWidget *widget, const gchar *text) { - UiSkinnedTextbox *textbox = UI_SKINNED_TEXTBOX (widget); - UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(textbox); - - if (!strcmp(textbox->text, text)) - return; - if (textbox->text) - g_free(textbox->text); - - textbox->text = str_to_utf8(text); - priv->scroll_back = FALSE; - - if (widget_really_drawable (widget)) - ui_skinned_textbox_expose (widget, 0); -} - -static void textbox_generate_xfont_pixmap(UiSkinnedTextbox *textbox, const gchar *pixmaptext) { - /* FIXME: should operate directly on priv->pixbuf, it shouldn't use pixmap */ - gint length, i; - GdkGC *gc, *maskgc; - GdkColor *c, pattern; - GdkBitmap *mask; - PangoLayout *layout; - gint width; - GdkPixmap *pixmap; + g_free (data->text); + data->text = g_strdup (text); + textbox_render (textbox, data); +} - g_return_if_fail(textbox != NULL); - g_return_if_fail(pixmaptext != NULL); - g_return_if_fail(textbox->height > 0); - - UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(textbox); - - length = g_utf8_strlen(pixmaptext, -1); - - text_get_extents(priv->fontname, pixmaptext, &width, NULL, NULL, NULL); - - priv->pixbuf_width = MAX(width, textbox->width); - pixmap = gdk_pixmap_new(mainwin->window, priv->pixbuf_width, - textbox->height, - gdk_rgb_get_visual()->depth); - gc = gdk_gc_new(pixmap); - c = skin_get_color(aud_active_skin, SKIN_TEXTBG); - for (i = 0; i < textbox->height; i++) { - gdk_gc_set_foreground(gc, &c[6 * i / textbox->height]); - gdk_draw_line(pixmap, gc, 0, i, priv->pixbuf_width, i); - } - - mask = gdk_pixmap_new(mainwin->window, priv->pixbuf_width, textbox->height, 1); - maskgc = gdk_gc_new(mask); - pattern.pixel = 0; - gdk_gc_set_foreground(maskgc, &pattern); - - gdk_draw_rectangle(mask, maskgc, TRUE, 0, 0, priv->pixbuf_width, textbox->height); - pattern.pixel = 1; - gdk_gc_set_foreground(maskgc, &pattern); - - gdk_gc_set_foreground(gc, skin_get_color(aud_active_skin, SKIN_TEXTFG)); - - layout = gtk_widget_create_pango_layout(mainwin, pixmaptext); - pango_layout_set_font_description(layout, priv->font); - - gdk_draw_layout (pixmap, gc, 0, - priv->crop, layout); - g_object_unref(layout); - - g_object_unref(maskgc); - - gdk_gc_set_clip_mask(gc, mask); - c = skin_get_color(aud_active_skin, SKIN_TEXTFG); - for (i = 0; i < textbox->height; i++) { - gdk_gc_set_foreground(gc, &c[6 * i / textbox->height]); - gdk_draw_line(pixmap, gc, 0, i, priv->pixbuf_width, i); - } - priv->pixbuf = gdk_pixbuf_get_from_drawable(NULL, pixmap, gdk_colormap_get_system(), 0, 0, 0, 0, priv->pixbuf_width, textbox->height); - g_object_unref(mask); - g_object_unref(gc); -} - -static gboolean textbox_scroll(gpointer data) { - UiSkinnedTextbox *textbox = UI_SKINNED_TEXTBOX(data); - UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(textbox); - - if (!priv->is_dragging) { - if (priv->scroll_dummy < TEXTBOX_SCROLL_WAIT) - priv->scroll_dummy++; - else { - if(config.twoway_scroll) { - if (priv->scroll_back) - priv->offset -= 1; - else - priv->offset += 1; - - if (priv->offset >= (priv->pixbuf_width - textbox->width)) { - priv->scroll_back = TRUE; - priv->scroll_dummy = 0; - priv->offset = priv->pixbuf_width - textbox->width; - } - if (priv->offset <= 0) { - priv->scroll_back = FALSE; - priv->scroll_dummy = 0; - priv->offset = 0; - } - } - else { // oneway scroll - priv->scroll_back = FALSE; - priv->offset += 1; - } +void textbox_set_font (GtkWidget * textbox, const gchar * font) +{ + TextboxData * data = g_object_get_data ((GObject *) textbox, "textboxdata"); + g_return_if_fail (data); - if (widget_really_drawable (data)) - ui_skinned_textbox_expose (data, 0); - } + if (data->font) + { + pango_font_description_free (data->font); + data->font = NULL; } - return TRUE; + + if (font) + data->font = pango_font_description_from_string (font); + + textbox_render (textbox, data); } -static void textbox_generate_pixmap(UiSkinnedTextbox *textbox) { - gint length, i, x, y, wl; - gchar *pixmaptext; - gchar *tmp, *stxt; - - g_return_if_fail(textbox != NULL); - UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(textbox); - - if (priv->pixbuf) { - g_object_unref(priv->pixbuf); - priv->pixbuf = NULL; - } - - /* - * Don't reset the offset if only text after the last '(' has - * changed. This is a hack to avoid visual noice on vbr files - * where we guess the length. - */ - if (!(priv->pixbuf_text && strrchr(textbox->text, '(') && - !strncmp(priv->pixbuf_text, textbox->text, - strrchr(textbox->text, '(') - textbox->text))) - priv->offset = 0; - - g_free(priv->pixbuf_text); - priv->pixbuf_text = g_strdup(textbox->text); - - /* - * wl is the number of (partial) letters visible. Only makes - * sense when using skinned font. - */ - wl = textbox->width / 5; - if (wl * 5 != textbox->width) - wl++; - - length = g_utf8_strlen(textbox->text, -1); - - priv->is_scrollable = FALSE; - - priv->is_scrollable = ui_skinned_textbox_should_scroll(textbox); - - if (priv->is_scrollable) { - if(!config.twoway_scroll) { - pixmaptext = g_strdup_printf("%s *** ", priv->pixbuf_text); - length += 5; - } else - pixmaptext = g_strdup(priv->pixbuf_text); - } else - if (!priv->font && length <= wl) { - gint pad = wl - length; - gchar *padchars = g_strnfill(pad, ' '); - - pixmaptext = g_strconcat(priv->pixbuf_text, padchars, NULL); - g_free(padchars); - length += pad; - } else - pixmaptext = g_strdup(priv->pixbuf_text); - - if (priv->is_scrollable) { - if (priv->scroll_enabled && !priv->scroll_timeout) { - gint tag; - tag = TEXTBOX_SCROLL_SMOOTH_TIMEOUT; - priv->scroll_timeout = g_timeout_add(tag, textbox_scroll, textbox); - } - } else { - if (priv->scroll_timeout) { - g_source_remove(priv->scroll_timeout); - priv->scroll_timeout = 0; - } - priv->offset = 0; - } +void textbox_set_scroll (GtkWidget * textbox, gboolean scroll) +{ + TextboxData * data = g_object_get_data ((GObject *) textbox, "textboxdata"); + g_return_if_fail (data); - if (priv->font) { - textbox_generate_xfont_pixmap(textbox, pixmaptext); - g_free(pixmaptext); + if (data->may_scroll == scroll) return; - } - priv->pixbuf_width = length * aud_active_skin->properties.textbox_bitmap_font_width; - priv->pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, - priv->pixbuf_width, aud_active_skin->properties.textbox_bitmap_font_height); - - for (tmp = stxt = g_utf8_strup(pixmaptext, -1), i = 0; - tmp != NULL && i < length; i++, tmp = g_utf8_next_char(tmp)) { - gchar c = *tmp; - x = y = -1; - if (c >= 'A' && c <= 'Z') { - x = aud_active_skin->properties.textbox_bitmap_font_width * (c - 'A'); - y = 0; - } - else if (c >= '0' && c <= '9') { - x = aud_active_skin->properties.textbox_bitmap_font_width * (c - '0'); - y = aud_active_skin->properties.textbox_bitmap_font_height; - } - else - textbox_handle_special_char(tmp, &x, &y); + data->may_scroll = scroll; + textbox_render (textbox, data); +} - skin_draw_pixbuf(GTK_WIDGET(textbox), aud_active_skin, - priv->pixbuf, priv->skin_index, - x, y, i * aud_active_skin->properties.textbox_bitmap_font_width, 0, - aud_active_skin->properties.textbox_bitmap_font_width, - aud_active_skin->properties.textbox_bitmap_font_height); - } - g_free(stxt); - g_free(pixmaptext); -} - -void ui_skinned_textbox_set_scroll(GtkWidget *widget, gboolean scroll) { - g_return_if_fail(widget != NULL); - g_return_if_fail(UI_SKINNED_IS_TEXTBOX(widget)); - - UiSkinnedTextbox *textbox = UI_SKINNED_TEXTBOX(widget); - UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(textbox); - - priv->scroll_enabled = scroll; - if (priv->scroll_enabled && priv->is_scrollable && priv->scroll_allowed) { - gint tag; - tag = TEXTBOX_SCROLL_SMOOTH_TIMEOUT; - if (priv->scroll_timeout) { - g_source_remove(priv->scroll_timeout); - priv->scroll_timeout = 0; - } - priv->scroll_timeout = g_timeout_add(tag, textbox_scroll, textbox); +static void textbox_destroy (GtkWidget * textbox) +{ + TextboxData * data = g_object_get_data ((GObject *) textbox, "textboxdata"); + g_return_if_fail (data); - } else { + if (data->font) + pango_font_description_free (data->font); + if (data->buf) + cairo_surface_destroy (data->buf); + if (data->scroll_source) + g_source_remove (data->scroll_source); - if (priv->scroll_timeout) { - g_source_remove(priv->scroll_timeout); - priv->scroll_timeout = 0; - } + g_free (data->text); + g_free (data); - priv->offset = 0; + textboxes = g_list_remove (textboxes, textbox); +} - if (widget_really_drawable (widget)) - ui_skinned_textbox_expose (widget, 0); - } +GtkWidget * textbox_new (gint width, const gchar * text, const gchar * font, + gboolean scroll) +{ + GtkWidget * textbox = gtk_drawing_area_new (); + gtk_widget_set_size_request (textbox, width, 0); + gtk_widget_add_events (textbox, GDK_BUTTON_PRESS_MASK | + GDK_BUTTON_RELEASE_MASK); + + DRAW_CONNECT (textbox, textbox_draw); + g_signal_connect (textbox, "destroy", (GCallback) textbox_destroy, NULL); + + TextboxData * data = g_malloc0 (sizeof (TextboxData)); + data->width = width; + data->text = g_strdup (text); + data->may_scroll = scroll; + g_object_set_data ((GObject *) textbox, "textboxdata", data); + + if (font) + data->font = pango_font_description_from_string (font); + + textboxes = g_list_prepend (textboxes, textbox); + + textbox_render (textbox, data); + return textbox; } -static void textbox_handle_special_char(gchar *c, gint * x, gint * y) { - gint tx, ty; +void textbox_update_all (void) +{ + for (GList * node = textboxes; node; node = node->next) + { + GtkWidget * textbox = node->data; + g_return_if_fail (textbox); + TextboxData * data = g_object_get_data ((GObject *) textbox, + "textboxdata"); + g_return_if_fail (data); - switch (*c) { - case '"': - tx = 26; - ty = 0; - break; - case '\r': - tx = 10; - ty = 1; - break; - case ':': - case ';': - tx = 12; - ty = 1; - break; - case '(': - tx = 13; - ty = 1; - break; - case ')': - tx = 14; - ty = 1; - break; - case '-': - tx = 15; - ty = 1; - break; - case '`': - case '\'': - tx = 16; - ty = 1; - break; - case '!': - tx = 17; - ty = 1; - break; - case '_': - tx = 18; - ty = 1; - break; - case '+': - tx = 19; - ty = 1; - break; - case '\\': - tx = 20; - ty = 1; - break; - case '/': - tx = 21; - ty = 1; - break; - case '[': - tx = 22; - ty = 1; - break; - case ']': - tx = 23; - ty = 1; - break; - case '^': - tx = 24; - ty = 1; - break; - case '&': - tx = 25; - ty = 1; - break; - case '%': - tx = 26; - ty = 1; - break; - case '.': - case ',': - tx = 27; - ty = 1; - break; - case '=': - tx = 28; - ty = 1; - break; - case '$': - tx = 29; - ty = 1; - break; - case '#': - tx = 30; - ty = 1; - break; - case '?': - tx = 3; - ty = 2; - break; - case '*': - tx = 4; - ty = 2; - break; - default: - tx = 29; - ty = 0; - break; - } - - const gchar *change[] = {"Ä„", "A", "Ę", "E", "Ć", "C", "Å", "L", "Ó", "O", "Åš", "S", "Å»", "Z", "Ź", "Z", - "Ń", "N", "Ãœ", "U", NULL}; - int i; - for (i = 0; change[i]; i+=2) { - if (!strncmp(c, change[i], strlen(change[i]))) { - tx = (*change[i+1] - 'A'); - break; - } - } - - /* those are commonly included into skins */ - if (!strncmp(c, "Ã…", strlen("Ã…"))) { - tx = 0; - ty = 2; - } else if (!strncmp(c, "Ö", strlen("Ö"))) { - tx = 1; - ty = 2; - } else if (!strncmp(c, "Ä", strlen("Ä"))) { - tx = 2; - ty = 2; - } - - *x = tx * aud_active_skin->properties.textbox_bitmap_font_width; - *y = ty * aud_active_skin->properties.textbox_bitmap_font_height; -} - -void ui_skinned_textbox_move_relative(GtkWidget *widget, gint x, gint y) { - UiSkinnedTextbox *textbox = UI_SKINNED_TEXTBOX(widget); - UiSkinnedTextboxPrivate *priv = UI_SKINNED_TEXTBOX_GET_PRIVATE(widget); - priv->move_x += x; - priv->move_y += y; - gtk_fixed_move(GTK_FIXED(gtk_widget_get_parent(widget)), widget, - textbox->x+priv->move_x, textbox->y+priv->move_y); + textbox_render (textbox, data); + } } diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_textbox.h audacious-plugins-3.2/src/skins/ui_skinned_textbox.h --- audacious-plugins-2.4.4/src/skins/ui_skinned_textbox.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_textbox.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ /* * Audacious - a cross-platform multimedia player * Copyright (c) 2007 Tomasz MoÅ„ + * Copyright (c) 2011 John Lindgren * * Based on: * BMP - Cross-platform multimedia player @@ -24,48 +25,19 @@ * Audacious or using our public API to be a derived work. */ -#ifndef AUDACIOUS_UI_SKINNED_TEXTBOX_H -#define AUDACIOUS_UI_SKINNED_TEXTBOX_H +#ifndef SKINS_UI_SKINNED_TEXTBOX_H +#define SKINS_UI_SKINNED_TEXTBOX_H #include -#include "ui_skin.h" -#ifdef __cplusplus -extern "C" { -#endif - -#define UI_SKINNED_TEXTBOX(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, ui_skinned_textbox_get_type (), UiSkinnedTextbox) -#define UI_SKINNED_TEXTBOX_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, ui_skinned_textbox_get_type (), UiSkinnedTextboxClass) -#define UI_SKINNED_IS_TEXTBOX(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, ui_skinned_textbox_get_type ()) - -typedef struct _UiSkinnedTextbox UiSkinnedTextbox; -typedef struct _UiSkinnedTextboxClass UiSkinnedTextboxClass; - -struct _UiSkinnedTextbox { - GtkWidget widget; +GtkWidget * textbox_new (gint width, const gchar * text, const gchar * font, + gboolean scroll); +void textbox_set_width (GtkWidget * textbox, gint width); +const gchar * textbox_get_text (GtkWidget * textbox); +void textbox_set_text (GtkWidget * textbox, const gchar * text); +void textbox_set_font (GtkWidget * textbox, const gchar * font); +void textbox_set_scroll (GtkWidget * textbox, gboolean scroll); - GdkWindow *event_window; - gint x, y, width, height; - gchar *text; -}; +void textbox_update_all (void); -struct _UiSkinnedTextboxClass { - GtkWidgetClass parent_class; - void (* clicked) (UiSkinnedTextbox *textbox); - void (* double_clicked) (UiSkinnedTextbox *textbox); - void (* right_clicked) (UiSkinnedTextbox *textbox); - void (* scaled) (UiSkinnedTextbox *textbox); -}; - -GtkWidget* ui_skinned_textbox_new (GtkWidget *fixed, gint x, gint y, gint w, gboolean allow_scroll, SkinPixmapId si); -GType ui_skinned_textbox_get_type(void); -void ui_skinned_textbox_set_xfont(GtkWidget *widget, gboolean use_xfont, const gchar * fontname); -void ui_skinned_textbox_set_text(GtkWidget *widget, const gchar *text); -void ui_skinned_textbox_set_scroll(GtkWidget *widget, gboolean scroll); -void ui_skinned_textbox_move_relative(GtkWidget *widget, gint x, gint y); - -#ifdef __cplusplus -} #endif - -#endif /* AUDACIOUS_UI_SKINNED_TEXTBOX_H */ diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_window.c audacious-plugins-3.2/src/skins/ui_skinned_window.c --- audacious-plugins-2.4.4/src/skins/ui_skinned_window.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_window.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,304 +1,195 @@ /* - * Audacious: A cross-platform multimedia player - * Copyright (c) 2007 William Pitcock + * ui_skinned_window.c + * Copyright 2011 John Lindgren * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. + * This file is part of Audacious. * - * This program 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 General Public License for more details. + * Audacious is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 2 or version 3 of the License. * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * Audacious 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 General Public License for more details. * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. + * You should have received a copy of the GNU General Public License along with + * Audacious. If not, see . + * + * The Audacious team does not consider modular code linking to Audacious or + * using our public API to be a derived work. */ -#include -#include -#include -#include -#include -#include -#include -#include "platform/smartinclude.h" -#include "ui_skin.h" -#include "skins_cfg.h" +#include "draw-compat.h" #include "ui_dock.h" #include "ui_skinned_window.h" -#include "ui_main.h" -#include "ui_playlist.h" - -static void ui_skinned_window_class_init(SkinnedWindowClass *klass); -static void ui_skinned_window_init(GtkWidget *widget); -static void ui_skinned_window_show(GtkWidget *widget); -static void ui_skinned_window_hide(GtkWidget *widget); -static GtkWindowClass *parent = NULL; -GType -ui_skinned_window_get_type(void) -{ - static GType window_type = 0; +typedef struct { + void (* draw) (GtkWidget * window, cairo_t * cr); + GtkWidget * normal, * shaded; + gboolean is_shaded, is_moving; +} WindowData; + +DRAW_FUNC_BEGIN (window_draw) + WindowData * data = g_object_get_data ((GObject *) wid, "windowdata"); + g_return_val_if_fail (data, FALSE); + + if (data->draw) + data->draw (wid, cr); +DRAW_FUNC_END + +static gboolean window_button_press (GtkWidget * window, GdkEventButton * event) +{ + WindowData * data = g_object_get_data ((GObject *) window, "windowdata"); + g_return_val_if_fail (data, FALSE); + + /* pass double clicks through; they are handled elsewhere */ + if (event->button != 1 || event->type == GDK_2BUTTON_PRESS) + return FALSE; - if (!window_type) - { - static const GTypeInfo window_info = - { - sizeof (SkinnedWindowClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) ui_skinned_window_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (SkinnedWindow), - 0, /* n_preallocs */ - (GInstanceInitFunc) ui_skinned_window_init - }; - - window_type = - g_type_register_static (GTK_TYPE_WINDOW, "SkinnedWindow", - &window_info, 0); - } - - return window_type; -} + if (data->is_moving) + return TRUE; -static void -ui_skinned_window_map(GtkWidget *widget) -{ - gdk_window_set_back_pixmap (widget->window, 0, 0); - (* GTK_WIDGET_CLASS (parent)->map) (widget); - gtk_window_set_keep_above(GTK_WINDOW(widget), config.always_on_top); + dock_move_start (window, event->x_root, event->y_root); + data->is_moving = TRUE; + return TRUE; } -static gboolean -ui_skinned_window_motion_notify_event(GtkWidget *widget, - GdkEventMotion *event) +static gboolean window_button_release (GtkWidget * window, GdkEventButton * + event) { - if (dock_is_moving(GTK_WINDOW(widget))) - dock_move_motion(GTK_WINDOW(widget), event); - - return FALSE; -} - -static gboolean ui_skinned_window_focus_in(GtkWidget *widget, GdkEventFocus *focus) { - gboolean val = GTK_WIDGET_CLASS (parent)->focus_in_event (widget, focus); - gtk_widget_queue_draw(widget); - return val; -} - -static gboolean ui_skinned_window_focus_out(GtkWidget *widget, GdkEventFocus *focus) { - gboolean val = GTK_WIDGET_CLASS (parent)->focus_out_event (widget, focus); - gtk_widget_queue_draw(widget); - return val; -} + WindowData * data = g_object_get_data ((GObject *) window, "windowdata"); + g_return_val_if_fail (data, FALSE); -static gboolean ui_skinned_window_button_press(GtkWidget *widget, GdkEventButton *event) { - if (event->button == 1 && event->type == GDK_BUTTON_PRESS && - (config.easy_move || config.equalizer_shaded || (event->y / config.scale_factor) < 14)) { - dock_move_press(get_dock_window_list(), GTK_WINDOW(widget), - event, SKINNED_WINDOW(widget)->type == WINDOW_MAIN ? TRUE : FALSE); - } + if (event->button != 1) + return FALSE; + data->is_moving = FALSE; return TRUE; } -static gboolean ui_skinned_window_button_release(GtkWidget *widget, GdkEventButton *event) { - if (dock_is_moving(GTK_WINDOW(widget))) - dock_move_release(GTK_WINDOW(widget)); +static gboolean window_motion (GtkWidget * window, GdkEventMotion * event) +{ + WindowData * data = g_object_get_data ((GObject *) window, "windowdata"); + g_return_val_if_fail (data, FALSE); + + if (! data->is_moving) + return TRUE; + dock_move (event->x_root, event->y_root); return TRUE; } -static gboolean ui_skinned_window_expose(GtkWidget *widget, GdkEventExpose *event) { - SkinnedWindow *window = SKINNED_WINDOW(gtk_widget_get_parent(widget)); +static void window_destroy (GtkWidget * window) +{ + WindowData * data = g_object_get_data ((GObject *) window, "windowdata"); + g_return_if_fail (data); - GdkPixbuf *obj = NULL; + dock_remove_window (window); - gint width = 0, height = 0; + if (data->is_shaded) + gtk_container_remove ((GtkContainer *) window, data->shaded); + else + gtk_container_remove ((GtkContainer *) window, data->normal); - switch (window->type) { - case WINDOW_MAIN: - width = aud_active_skin->properties.mainwin_width; - height = aud_active_skin->properties.mainwin_height; - break; - case WINDOW_EQ: - width = 275 * (config.scaled ? config.scale_factor : 1); - height = 116 * (config.scaled ? config.scale_factor : 1) ; - break; - case WINDOW_PLAYLIST: - width = playlistwin_get_width(); - height = config.playlist_height; - break; - default: - return FALSE; - } - obj = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, width, height); + g_object_unref (data->normal); + g_object_unref (data->shaded); + g_free (data); +} - gboolean focus = gtk_window_has_toplevel_focus(GTK_WINDOW(window)); +GtkWidget * window_new (gint * x, gint * y, gint w, gint h, gboolean main, + gboolean shaded, void (* draw) (GtkWidget * window, cairo_t * cr)) +{ + GtkWidget * window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_decorated ((GtkWindow *) window, FALSE); + gtk_window_set_resizable ((GtkWindow *) window, FALSE); + gtk_window_move ((GtkWindow *) window, * x, * y); + gtk_widget_set_size_request (window, w, h); + gtk_window_resize ((GtkWindow *) window, w, h); - switch (window->type) { - case WINDOW_MAIN: - skin_draw_pixbuf(widget, aud_active_skin, obj,SKIN_MAIN, 0, 0, 0, 0, width, height); - skin_draw_mainwin_titlebar(aud_active_skin, obj, config.player_shaded, focus || !config.dim_titlebar); - break; - case WINDOW_EQ: - skin_draw_pixbuf(widget, aud_active_skin, obj, SKIN_EQMAIN, 0, 0, 0, 0, width, height); - if (focus || !config.dim_titlebar) { - if (!config.equalizer_shaded) - skin_draw_pixbuf(widget, aud_active_skin, obj, SKIN_EQMAIN, 0, 134, 0, 0, width, 14); - else - skin_draw_pixbuf(widget, aud_active_skin, obj, SKIN_EQ_EX, 0, 0, 0, 0, width, 14); - } else { - if (!config.equalizer_shaded) - skin_draw_pixbuf(widget, aud_active_skin, obj, SKIN_EQMAIN, 0, 149, 0, 0, width, 14); - else - skin_draw_pixbuf(widget, aud_active_skin, obj, SKIN_EQ_EX, 0, 15, 0, 0, width, 14); - } - break; - case WINDOW_PLAYLIST: - focus |= !config.dim_titlebar; - if (config.playlist_shaded) { - skin_draw_playlistwin_shaded(aud_active_skin, obj, width, focus); - } else { - skin_draw_playlistwin_frame(aud_active_skin, obj, width, config.playlist_height, focus); - } - break; - } + gtk_widget_add_events (window, GDK_BUTTON_PRESS_MASK | + GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK); - ui_skinned_widget_draw(widget, obj, width, height, - window->type != WINDOW_PLAYLIST && config.scaled); + DRAW_CONNECT (window, window_draw); + g_signal_connect (window, "button-press-event", (GCallback) window_button_press, NULL); + g_signal_connect (window, "button-release-event", (GCallback) window_button_release, NULL); + g_signal_connect (window, "motion-notify-event", (GCallback) window_motion, NULL); + g_signal_connect (window, "destroy", (GCallback) window_destroy, NULL); - g_object_unref(obj); + WindowData * data = g_malloc0 (sizeof (WindowData)); + g_object_set_data ((GObject *) window, "windowdata", data); - return FALSE; -} + data->normal = gtk_fixed_new (); + g_object_ref (data->normal); -static void -ui_skinned_window_class_init(SkinnedWindowClass *klass) -{ - GtkWidgetClass *widget_class; + data->shaded = gtk_fixed_new (); + g_object_ref (data->shaded); - widget_class = (GtkWidgetClass*) klass; + if (shaded) + gtk_container_add ((GtkContainer *) window, data->shaded); + else + gtk_container_add ((GtkContainer *) window, data->normal); - parent = g_type_class_peek_parent(klass); + data->is_shaded = shaded; + data->draw = draw; - widget_class->show = ui_skinned_window_show; - widget_class->hide = ui_skinned_window_hide; - widget_class->motion_notify_event = ui_skinned_window_motion_notify_event; - widget_class->focus_in_event = ui_skinned_window_focus_in; - widget_class->focus_out_event = ui_skinned_window_focus_out; - widget_class->button_press_event = ui_skinned_window_button_press; - widget_class->button_release_event = ui_skinned_window_button_release; - widget_class->map = ui_skinned_window_map; + dock_add_window (window, x, y, w, h, main); + return window; } -static void -ui_skinned_window_hide(GtkWidget *widget) +void window_set_size (GtkWidget * window, gint w, gint h) { - SkinnedWindow *window; - - g_return_if_fail(SKINNED_CHECK_WINDOW(widget)); - - window = SKINNED_WINDOW(widget); - - if (window->x != NULL && window->y != NULL) - gtk_window_get_position(GTK_WINDOW(window), window->x, window->y); - GTK_WIDGET_CLASS(parent)->hide(widget); + gtk_widget_set_size_request (window, w, h); + gtk_window_resize ((GtkWindow *) window, w, h); + dock_set_size (window, w, h); } -static void -ui_skinned_window_show(GtkWidget *widget) +void window_set_shaded (GtkWidget * window, gboolean shaded) { - SkinnedWindow *window; + WindowData * data = g_object_get_data ((GObject *) window, "windowdata"); + g_return_if_fail (data); - g_return_if_fail(SKINNED_CHECK_WINDOW(widget)); + if (data->is_shaded == shaded) + return; - window = SKINNED_WINDOW(widget); + if (shaded) + { + gtk_container_remove ((GtkContainer *) window, data->normal); + gtk_container_add ((GtkContainer *) window, data->shaded); + } + else + { + gtk_container_remove ((GtkContainer *) window, data->shaded); + gtk_container_add ((GtkContainer *) window, data->normal); + } - if (window->x != NULL && window->y != NULL) - gtk_window_move(GTK_WINDOW(window), *(window->x), *(window->y)); - GTK_WIDGET_CLASS(parent)->show(widget); + data->is_shaded = shaded; } -static void -ui_skinned_window_init(GtkWidget *widget) +void window_put_widget (GtkWidget * window, gboolean shaded, GtkWidget * widget, + gint x, gint y) { - SkinnedWindow *window; - window = SKINNED_WINDOW(widget); - window->x = NULL; - window->y = NULL; + WindowData * data = g_object_get_data ((GObject *) window, "windowdata"); + g_return_if_fail (data); + + GtkWidget * fixed = shaded ? data->shaded : data->normal; + gtk_fixed_put ((GtkFixed *) fixed, widget, x, y); } -GtkWidget * -ui_skinned_window_new(const gchar *wmclass_name, gint *x, gint *y) +void window_move_widget (GtkWidget * window, gboolean shaded, GtkWidget * + widget, gint x, gint y) { - GtkWidget *widget = g_object_new(ui_skinned_window_get_type(), NULL); - GtkWindow *window = GTK_WINDOW(widget); - - window->type = SKINNED_WINDOW_TYPE; - - if (wmclass_name) - gtk_window_set_wmclass(GTK_WINDOW(widget), wmclass_name, "Audacious"); - - gtk_widget_add_events(GTK_WIDGET(widget), - GDK_FOCUS_CHANGE_MASK | GDK_BUTTON_MOTION_MASK | - GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | - GDK_SCROLL_MASK | GDK_KEY_PRESS_MASK | - GDK_VISIBILITY_NOTIFY_MASK | GDK_EXPOSURE_MASK); - - dock_window_set_decorated (widget); - gtk_widget_set_app_paintable(GTK_WIDGET(widget), TRUE); - - if (!strcmp(wmclass_name, "player")) - SKINNED_WINDOW(widget)->type = WINDOW_MAIN; - if (!strcmp(wmclass_name, "equalizer")) - SKINNED_WINDOW(widget)->type = WINDOW_EQ; - if (!strcmp(wmclass_name, "playlist")) - SKINNED_WINDOW(widget)->type = WINDOW_PLAYLIST; - - SKINNED_WINDOW(widget)->x = x; - SKINNED_WINDOW(widget)->y = y; - SKINNED_WINDOW(widget)->normal = gtk_fixed_new(); - SKINNED_WINDOW(widget)->shaded = gtk_fixed_new(); - g_object_ref(SKINNED_WINDOW(widget)->normal); - g_object_ref(SKINNED_WINDOW(widget)->shaded); + WindowData * data = g_object_get_data ((GObject *) window, "windowdata"); + g_return_if_fail (data); - gtk_container_add(GTK_CONTAINER(widget), GTK_WIDGET(SKINNED_WINDOW(widget)->normal)); - - g_signal_connect(SKINNED_WINDOW(widget)->normal, "expose-event", G_CALLBACK(ui_skinned_window_expose), NULL); - g_signal_connect(SKINNED_WINDOW(widget)->shaded, "expose-event", G_CALLBACK(ui_skinned_window_expose), NULL); - - return widget; -} - -void ui_skinned_window_draw_all(GtkWidget *widget) { - gtk_widget_queue_draw (widget); + GtkWidget * fixed = shaded ? data->shaded : data->normal; + gtk_fixed_move ((GtkFixed *) fixed, widget, x, y); } -void ui_skinned_window_set_shade (GtkWidget * widget, gboolean shaded) +void window_show_all (GtkWidget * window) { - SkinnedWindow * skinned = (SkinnedWindow *) widget; - GtkWidget * old, * new; - - if (shaded) - { - old = skinned->normal; - new = skinned->shaded; - } - else - { - old = skinned->shaded; - new = skinned->normal; - } - - if (gtk_widget_get_parent (old) == NULL) - return; + WindowData * data = g_object_get_data ((GObject *) window, "windowdata"); + g_return_if_fail (data); - gtk_container_remove ((GtkContainer *) skinned, old); - gtk_container_add ((GtkContainer *) skinned, new); + gtk_widget_show_all (data->normal); + gtk_widget_show_all (data->shaded); } diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinned_window.h audacious-plugins-3.2/src/skins/ui_skinned_window.h --- audacious-plugins-2.4.4/src/skins/ui_skinned_window.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinned_window.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,64 +1,37 @@ /* - * Audacious: A cross-platform multimedia player - * Copyright (c) 2007 William Pitcock + * ui_skinned_window.h + * Copyright 2011 John Lindgren * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. + * This file is part of Audacious. * - * This program 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 General Public License for more details. + * Audacious is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 2 or version 3 of the License. * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * Audacious 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 General Public License for more details. * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. + * You should have received a copy of the GNU General Public License along with + * Audacious. If not, see . + * + * The Audacious team does not consider modular code linking to Audacious or + * using our public API to be a derived work. */ -#ifndef UI_SKINNED_WINDOW_H -#define UI_SKINNED_WINDOW_H - -#define SKINNED_WINDOW(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, ui_skinned_window_get_type (), SkinnedWindow) -#define SKINNED_WINDOW_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, ui_skinned_window_get_type (), SkinnedWindowClass) -#define SKINNED_CHECK_WINDOW(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, ui_skinned_window_get_type ()) -#define SKINNED_TYPE_WINDOW (ui_skinned_window_get_type()) - -#ifdef GDK_WINDOWING_QUARTZ -# define SKINNED_WINDOW_TYPE GTK_WINDOW_POPUP -#else -# define SKINNED_WINDOW_TYPE GTK_WINDOW_TOPLEVEL -#endif - -enum { - WINDOW_MAIN, - WINDOW_EQ, - WINDOW_PLAYLIST -}; - -typedef struct _SkinnedWindow SkinnedWindow; -typedef struct _SkinnedWindowClass SkinnedWindowClass; - -struct _SkinnedWindow -{ - GtkWindow window; - - gint *x, *y; - gint type; - GtkWidget *normal; - GtkWidget *shaded; -}; +#ifndef SKINS_UI_SKINNED_WINDOW_H +#define SKINS_UI_SKINNED_WINDOW_H -struct _SkinnedWindowClass -{ - GtkWindowClass parent_class; -}; +#include -GType ui_skinned_window_get_type(void); -GtkWidget *ui_skinned_window_new(const gchar *wmclass_name, gint *x, gint *y); -void ui_skinned_window_draw_all(GtkWidget *widget); -void ui_skinned_window_set_shade(GtkWidget *widget, gboolean shaded); +GtkWidget * window_new (gint * x, gint * y, gint w, gint h, gboolean main, + gboolean shaded, void (* draw) (GtkWidget * window, cairo_t * cr)); +void window_set_size (GtkWidget * window, gint w, gint h); +void window_set_shaded (GtkWidget * window, gboolean shaded); +void window_put_widget (GtkWidget * window, gboolean shaded, GtkWidget * widget, + gint x, gint y); +void window_move_widget (GtkWidget * window, gboolean shaded, GtkWidget * + widget, gint x, gint y); +void window_show_all (GtkWidget * window); #endif diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinselector.c audacious-plugins-3.2/src/skins/ui_skinselector.c --- audacious-plugins-2.4.4/src/skins/ui_skinselector.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinselector.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,43 +1,37 @@ -/* BMP - Cross-platform multimedia player - * Copyright (C) 2003-2004 BMP development team. +/* + * ui_skinselector.c + * Copyright 1998-2003 XMMS Development Team + * Copyright 2003-2004 BMP Development Team + * Copyright 2011 John Lindgren * - * Based on XMMS: - * Copyright (C) 1998-2003 XMMS development team. + * This file is part of Audacious. * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. + * Audacious is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 2 or version 3 of the License. * - * This program 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 General Public License for more details. + * Audacious 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 General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * You should have received a copy of the GNU General Public License along with + * Audacious. If not, see . * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. + * The Audacious team does not consider modular code linking to Audacious or + * using our public API to be a derived work. */ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "ui_skinselector.h" - -#include -#include - -#include "platform/smartinclude.h" - #include #include #include +#include +#include +#include "config.h" #include "plugin.h" #include "ui_skin.h" +#include "ui_skinselector.h" #include "util.h" #define EXTENSION_TARGETS 7 @@ -45,10 +39,6 @@ static gchar *ext_targets[EXTENSION_TARGETS] = { "bmp", "xpm", "png", "svg", "gif", "jpg", "jpeg" }; -#define THUMBNAIL_WIDTH 90 -#define THUMBNAIL_HEIGHT 40 - - enum SkinViewCols { SKIN_VIEW_COL_PREVIEW, SKIN_VIEW_COL_FORMATTEDNAME, @@ -56,10 +46,14 @@ SKIN_VIEW_N_COLS }; +typedef struct { + gchar *name; + gchar *desc; + gchar *path; + GTime *time; +} SkinNode; -GList *skinlist = NULL; - - +static GList *skinlist = NULL; static gchar * get_thumbnail_filename(const gchar * path) @@ -124,41 +118,30 @@ return preview; } - -static GdkPixbuf * -skin_get_thumbnail(const gchar * path) +static GdkPixbuf * skin_get_thumbnail (const gchar * path) { - GdkPixbuf *scaled = NULL; - GdkPixbuf *preview; - gchar *thumbname; - - g_return_val_if_fail(path != NULL, NULL); + gchar * thumbname = get_thumbnail_filename (path); + GdkPixbuf * thumb = NULL; - if (g_str_has_suffix(path, "thumbs")) - return NULL; - - thumbname = get_thumbnail_filename(path); - - if (g_file_test(thumbname, G_FILE_TEST_EXISTS)) { - scaled = gdk_pixbuf_new_from_file(thumbname, NULL); - g_free(thumbname); - return scaled; + if (g_file_test (thumbname, G_FILE_TEST_EXISTS)) + { + thumb = gdk_pixbuf_new_from_file (thumbname, NULL); + if (thumb) + goto DONE; } - if (!(preview = skin_get_preview(path))) { - g_free(thumbname); - return NULL; - } + thumb = skin_get_preview (path); + if (! thumb) + goto DONE; - scaled = gdk_pixbuf_scale_simple(preview, - THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT, - GDK_INTERP_BILINEAR); - g_object_unref(preview); + audgui_pixbuf_scale_within (& thumb, 128); - gdk_pixbuf_save(scaled, thumbname, "png", NULL, NULL); - g_free(thumbname); + if (thumb) + gdk_pixbuf_save (thumb, thumbname, "png", NULL, NULL); - return scaled; +DONE: + g_free (thumbname); + return thumb; } static void @@ -219,20 +202,20 @@ } } -static gint -skinlist_compare_func(gconstpointer a, gconstpointer b) +static gint skinlist_compare_func (const void * _a, const void * _b) { - g_return_val_if_fail(a != NULL && SKIN_NODE(a)->name != NULL, 1); - g_return_val_if_fail(b != NULL && SKIN_NODE(b)->name != NULL, 1); - return strcasecmp(SKIN_NODE(a)->name, SKIN_NODE(b)->name); + const SkinNode * a = _a, * b = _b; + g_return_val_if_fail (a && a->name, 1); + g_return_val_if_fail (b && b->name, 1); + return strcasecmp (a->name, b->name); } -static void -skin_free_func(gpointer data) +static void skin_free_func (void * _data) { + SkinNode * data = _data; g_return_if_fail(data != NULL); - g_free(SKIN_NODE(data)->name); - g_free(SKIN_NODE(data)->path); + g_free (data->name); + g_free (data->path); g_slice_free(SkinNode, data); } @@ -248,15 +231,19 @@ skinlist = NULL; } -void +static void skinlist_update(void) { gchar *skinsdir; skinlist_clear(); - scan_skindir(skins_paths[SKINS_PATH_USER_SKIN_DIR]); - scan_skindir(DATA_DIR G_DIR_SEPARATOR_S "Skins"); + if (g_file_test (skins_paths[SKINS_PATH_USER_SKIN_DIR], G_FILE_TEST_EXISTS)) + scan_skindir (skins_paths[SKINS_PATH_USER_SKIN_DIR]); + + gchar * path = g_strdup_printf ("%s/Skins", aud_get_path (AUD_PATH_DATA_DIR)); + scan_skindir (path); + g_free (path); skinsdir = getenv("SKINSDIR"); if (skinsdir) { @@ -294,12 +281,14 @@ skinlist_update(); - for (entry = skinlist; entry; entry = g_list_next(entry)) { - thumbnail = skin_get_thumbnail(SKIN_NODE(entry->data)->path); + for (entry = skinlist; entry; entry = entry->next) + { + SkinNode * node = entry->data; - formattedname = g_strdup_printf("%s\n%s", - SKIN_NODE(entry->data)->name, SKIN_NODE(entry->data)->desc); - name = SKIN_NODE(entry->data)->name; + thumbnail = skin_get_thumbnail (node->path); + formattedname = g_strdup_printf ("%s\n%s", + node->name, node->desc); + name = node->name; gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, @@ -310,8 +299,8 @@ g_object_unref(thumbnail); g_free(formattedname); - if (g_strstr_len(aud_active_skin->path, - strlen(aud_active_skin->path), name) ) { + if (g_strstr_len(active_skin->path, + strlen(active_skin->path), name) ) { iter_current_skin = iter; have_current_skin = TRUE; } @@ -350,14 +339,14 @@ gtk_tree_model_get(model, &iter, SKIN_VIEW_COL_NAME, &name, -1); for (node = skinlist; node; node = g_list_next(node)) { - comp = SKIN_NODE(node->data)->path; + comp = ((SkinNode *) node->data)->path; if (g_strrstr(comp, name)) break; } g_free(name); - aud_active_skin_load(comp); + active_skin_load (comp); } @@ -377,6 +366,7 @@ store = gtk_list_store_new(SKIN_VIEW_N_COLS, GDK_TYPE_PIXBUF, G_TYPE_STRING , G_TYPE_STRING); gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(store)); + g_object_unref (store); column = gtk_tree_view_column_new(); gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); diff -Nru audacious-plugins-2.4.4/src/skins/ui_skinselector.h audacious-plugins-3.2/src/skins/ui_skinselector.h --- audacious-plugins-2.4.4/src/skins/ui_skinselector.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_skinselector.h 2012-01-20 19:48:30.000000000 +0000 @@ -20,26 +20,12 @@ * Audacious or using our public API to be a derived work. */ -#ifndef AUDACIOUS_UI_SKINSELECTOR_H -#define AUDACIOUS_UI_SKINSELECTOR_H +#ifndef SKINS_UI_SKINSELECTOR_H +#define SKINS_UI_SKINSELECTOR_H -#include #include -#define SKIN_NODE(x) ((SkinNode *)(x)) -struct _SkinNode { - gchar *name; - gchar *desc; - gchar *path; - GTime *time; -}; - -typedef struct _SkinNode SkinNode; - -extern GList *skinlist; - -void skinlist_update(); void skin_view_realize(GtkTreeView * treeview); void skin_view_update (GtkTreeView * treeview); -#endif /* AUDACIOUS_UI_SKINSELECTOR_H */ +#endif /* SKINS_UI_SKINSELECTOR_H */ diff -Nru audacious-plugins-2.4.4/src/skins/ui_svis.c audacious-plugins-3.2/src/skins/ui_svis.c --- audacious-plugins-2.4.4/src/skins/ui_svis.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_svis.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ /* * Audacious - a cross-platform multimedia player - * Copyright (c) 2007 Audacious development team. + * Copyright (c) 2007-2011 Audacious development team. * * Based on: * BMP - Cross-platform multimedia player @@ -24,548 +24,182 @@ * Audacious or using our public API to be a derived work. */ -#include "ui_skin.h" -#include "ui_svis.h" -#include "ui_vis.h" -#include "util.h" -#include "skins_cfg.h" - #include -#include -#include -#include -#include - -#include -#include - -#define UI_TYPE_SVIS (ui_svis_get_type()) - -/* FIXME: Are the svis_scope_colors correct? */ -static guint8 svis_scope_colors[] = { 20, 19, 18, 19, 20 }; -static guint8 svis_vu_normal_colors[] = { 17, 17, 17, 12, 12, 12, 2, 2 }; - -#define SVIS_HEIGHT 5 -#define SVIS_WIDTH 38 - -enum -{ - DOUBLED, - LAST_SIGNAL -}; - -static void ui_svis_class_init (UiSVisClass * klass); -static void ui_svis_init (UiSVis * svis); -static void ui_svis_destroy (GtkObject * object); -static void ui_svis_realize (GtkWidget * widget); -static void ui_svis_unrealize (GtkWidget * widget); -static void ui_svis_map (GtkWidget * widget); -static void ui_svis_unmap (GtkWidget * widget); -static void ui_svis_size_request (GtkWidget * widget, - GtkRequisition * requisition); -static void ui_svis_size_allocate (GtkWidget * widget, - GtkAllocation * allocation); -static gboolean ui_svis_expose (GtkWidget * widget, GdkEventExpose * event); -static void ui_svis_toggle_scaled (UiSVis * svis); - -static GtkWidgetClass *parent_class = NULL; -static guint vis_signals[LAST_SIGNAL] = { 0 }; - -GType ui_svis_get_type () -{ - static GType vis_type = 0; - if (!vis_type) - { - static const GTypeInfo vis_info = { - sizeof (UiSVisClass), - NULL, - NULL, - (GClassInitFunc) ui_svis_class_init, - NULL, - NULL, - sizeof (UiSVis), - 0, - (GInstanceInitFunc) ui_svis_init, - }; - vis_type = - g_type_register_static (GTK_TYPE_WIDGET, "UiSVis", &vis_info, 0); - } - - return vis_type; -} - -static void ui_svis_class_init (UiSVisClass * klass) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) klass; - widget_class = (GtkWidgetClass *) klass; - parent_class = g_type_class_peek_parent (klass); - - object_class->destroy = ui_svis_destroy; - - widget_class->realize = ui_svis_realize; - widget_class->unrealize = ui_svis_unrealize; - widget_class->map = ui_svis_map; - widget_class->unmap = ui_svis_unmap; - widget_class->expose_event = ui_svis_expose; - widget_class->size_request = ui_svis_size_request; - widget_class->size_allocate = ui_svis_size_allocate; - - klass->scaled = ui_svis_toggle_scaled; - - vis_signals[DOUBLED] = - g_signal_new ("toggle-scaled", G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSVisClass, scaled), NULL, NULL, - g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); -} - -static void ui_svis_init (UiSVis * svis) -{ - -} - -GtkWidget *ui_svis_new (GtkWidget * fixed, gint x, gint y) -{ - UiSVis *svis = g_object_new (ui_svis_get_type (), NULL); - - svis->x = x; - svis->y = y; - - svis->width = SVIS_WIDTH; - svis->height = SVIS_HEIGHT; - - svis->fixed = fixed; - svis->scaled = FALSE; - - svis->visible_window = TRUE; - svis->event_window = NULL; - - gtk_fixed_put (GTK_FIXED (svis->fixed), GTK_WIDGET (svis), svis->x, - svis->y); - - return GTK_WIDGET (svis); -} - -static void ui_svis_destroy (GtkObject * object) -{ - UiSVis *svis; - g_return_if_fail (object != NULL); - g_return_if_fail (UI_IS_SVIS (object)); - - svis = UI_SVIS (object); - - if (GTK_OBJECT_CLASS (parent_class)->destroy) - (*GTK_OBJECT_CLASS (parent_class)->destroy) (object); -} - -static void ui_svis_realize (GtkWidget * widget) -{ - UiSVis *svis; - GdkWindowAttr attributes; - gint attributes_mask; - - g_return_if_fail (widget != NULL); - g_return_if_fail (UI_IS_SVIS (widget)); - - GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); - svis = UI_SVIS (widget); - - attributes.x = widget->allocation.x; - attributes.y = widget->allocation.y; - attributes.width = widget->allocation.width; - attributes.height = widget->allocation.height; - attributes.window_type = GDK_WINDOW_CHILD; - attributes.event_mask = gtk_widget_get_events (widget); - attributes.event_mask |= - GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK; - - if (svis->visible_window) - { - attributes.visual = gtk_widget_get_visual (widget); - attributes.colormap = gtk_widget_get_colormap (widget); - attributes.wclass = GDK_INPUT_OUTPUT; - attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; - widget->window = - gdk_window_new (widget->parent->window, &attributes, - attributes_mask); - GTK_WIDGET_UNSET_FLAGS (widget, GTK_NO_WINDOW); - gdk_window_set_user_data (widget->window, widget); - } - else - { - widget->window = gtk_widget_get_parent_window (widget); - g_object_ref (widget->window); - - attributes.wclass = GDK_INPUT_ONLY; - attributes_mask = GDK_WA_X | GDK_WA_Y; - svis->event_window = - gdk_window_new (widget->window, &attributes, attributes_mask); - GTK_WIDGET_SET_FLAGS (widget, GTK_NO_WINDOW); - gdk_window_set_user_data (svis->event_window, widget); - } - - widget->style = gtk_style_attach (widget->style, widget->window); -} - -static void ui_svis_unrealize (GtkWidget * widget) -{ - UiSVis *svis; - svis = UI_SVIS (widget); - - if (svis->event_window != NULL) - { - gdk_window_set_user_data (svis->event_window, NULL); - gdk_window_destroy (svis->event_window); - svis->event_window = NULL; - } - - if (GTK_WIDGET_CLASS (parent_class)->unrealize) - (*GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); -} - -static void ui_svis_map (GtkWidget * widget) -{ - UiSVis *svis; - svis = UI_SVIS (widget); - - if (svis->event_window != NULL) - gdk_window_show (svis->event_window); - - if (GTK_WIDGET_CLASS (parent_class)->map) - (*GTK_WIDGET_CLASS (parent_class)->map) (widget); -} - -static void ui_svis_unmap (GtkWidget * widget) -{ - UiSVis *svis; - svis = UI_SVIS (widget); +#include "draw-compat.h" +#include "skins_cfg.h" +#include "surface.h" +#include "ui_skin.h" +#include "ui_vis.h" - if (svis->event_window != NULL) - gdk_window_hide (svis->event_window); +static gint svis_analyzer_colors[] = {14, 11, 8, 5, 2}; +static gint svis_scope_colors[] = {20, 19, 18, 19, 20}; +static gint svis_vu_normal_colors[] = {16, 14, 12, 10, 8, 6, 4, 2}; - if (GTK_WIDGET_CLASS (parent_class)->unmap) - (*GTK_WIDGET_CLASS (parent_class)->unmap) (widget); -} +static struct { + gboolean active; + gint data[75]; +} svis; -static void ui_svis_size_request (GtkWidget * widget, - GtkRequisition * requisition) -{ - UiSVis *svis = UI_SVIS (widget); +#define RGB_SEEK(x,y) (set = rgb + 38 * (y) + (x)) +#define RGB_SET(c) (* set ++ = (c)) +#define RGB_SET_Y(c) do {* set = (c); set += 38;} while (0) +#define RGB_SET_INDEX(c) RGB_SET (active_skin->vis_colors[c]) +#define RGB_SET_INDEX_Y(c) RGB_SET_Y (active_skin->vis_colors[c]) - requisition->width = svis->width * (svis->scaled ? config.scale_factor : 1); - requisition->height = - svis->height * (svis->scaled ? config.scale_factor : 1); -} +DRAW_FUNC_BEGIN (ui_svis_draw) + guint32 rgb[38 * 5]; + guint32 * set; -static void ui_svis_size_allocate (GtkWidget * widget, - GtkAllocation * allocation) -{ - UiSVis *svis = UI_SVIS (widget); + RGB_SEEK (0, 0); + for (gint x = 0; x < 38 * 5; x ++) + RGB_SET_INDEX (0); - widget->allocation = *allocation; - widget->allocation.x *= (svis->scaled ? config.scale_factor : 1); - widget->allocation.y *= (svis->scaled ? config.scale_factor : 1); - if (GTK_WIDGET_REALIZED (widget)) + switch (config.vis_type) { - if (svis->event_window != NULL) - gdk_window_move_resize (svis->event_window, widget->allocation.x, - widget->allocation.y, allocation->width, - allocation->height); - else - gdk_window_move_resize (widget->window, widget->allocation.x, - widget->allocation.y, allocation->width, - allocation->height); - } + case VIS_ANALYZER:; + gboolean bars = (config.analyzer_type == ANALYZER_BARS); - svis->x = widget->allocation.x / (svis->scaled ? config.scale_factor : 1); - svis->y = widget->allocation.y / (svis->scaled ? config.scale_factor : 1); -} - -#define OFFSET_NORMAL(p, x, y) ((p) + SVIS_WIDTH * (y) + (x)) -#define OFFSET_SCALED(p, x, y) ((p) + 4 * SVIS_WIDTH * (y) + 2 * (x)) - -static inline void DRAW_SCALED (guchar * p, guchar value) -{ - p[0] = value; - p[1] = value; - p[2 * SVIS_WIDTH] = value; - p[2 * SVIS_WIDTH + 1] = value; -} - -#define DRAW_DS_PIXEL DRAW_SCALED - -static gboolean ui_svis_expose (GtkWidget * widget, GdkEventExpose * event) -{ - UiSVis *svis = UI_SVIS (widget); - - gint x, y, h; - guchar svis_color[24][3]; - guchar rgb_data[SVIS_WIDTH * 2 * SVIS_HEIGHT * 2], *ptr, c; - guint32 colors[24]; - GdkRgbCmap *cmap; - - if (!GTK_WIDGET_VISIBLE (widget)) - return FALSE; + for (gint x = 0; x < 38; x ++) + { + if (bars && (x % 3) == 2) + continue; - if (!svis->visible_window) - return FALSE; + gint h = svis.data[bars ? (x / 3) : x]; + h = CLAMP (h, 0, 5); + RGB_SEEK (x, 5 - h); - skin_get_viscolor (aud_active_skin, svis_color); - for (y = 0; y < 24; y++) - { - colors[y] = - svis_color[y][0] << 16 | svis_color[y][1] << 8 | svis_color[y][2]; - } - cmap = gdk_rgb_cmap_new (colors, 24); + for (gint y = 0; y < h; y ++) + RGB_SET_INDEX_Y (svis_analyzer_colors[h - 1 - y]); + } - if (!config.scaled) - { - memset (rgb_data, 0, SVIS_WIDTH * SVIS_HEIGHT); - if (config.vis_type == VIS_ANALYZER && !aud_drct_get_paused () - && aud_drct_get_playing ()) + break; + case VIS_VOICEPRINT: + switch (config.vu_mode) { - for (y = 0; y < SVIS_HEIGHT; y++) + case VU_NORMAL: + for (gint y = 0; y < 5; y ++) { - ptr = OFFSET_NORMAL (rgb_data, 0, SVIS_HEIGHT - 1 - y); + if (y == 2) + continue; - if (config.analyzer_type == ANALYZER_BARS) - { - for (x = 0; x < (SVIS_WIDTH + 1) / 3; x ++) - { - if (svis->data[x] > y << 1) - { - ptr[3 * x] = 23; - ptr[3 * x + 1] = 23; - } - } - } - else - { - for (x = 0; x < SVIS_WIDTH; x++) - { - if (svis->data[x] > y << 1) - ptr[x] = 23; - } - } - } - } - else if (config.vis_type == VIS_VOICEPRINT) - { - switch (config.vu_mode) - { - case VU_NORMAL: - for (y = 0; y < 2; y++) - { - ptr = rgb_data + ((y * 3) * 38); - h = (svis->data[y] * 7) / 37; - for (x = 0; x < h; x++, ptr += 5) - { - c = svis_vu_normal_colors[x]; - *(ptr) = c; - *(ptr + 1) = c; - *(ptr + 2) = c; - *(ptr + 38) = c; - *(ptr + 39) = c; - *(ptr + 40) = c; - } - } - break; - case VU_SMOOTH: - for (y = 0; y < 2; y++) + gint h = (svis.data[y / 3] * 8 + 19) / 38; + h = CLAMP (h, 0, 8); + RGB_SEEK (0, y); + + for (gint x = 0; x < h; x ++) { - ptr = rgb_data + ((y * 3) * SVIS_WIDTH); - for (x = 0; x < svis->data[y]; x++, ptr++) - { - c = 17 - ((x * 15) / 37); - *(ptr) = c; - *(ptr + 38) = c; - } + RGB_SET_INDEX (svis_vu_normal_colors[x]); + RGB_SET_INDEX (svis_vu_normal_colors[x]); + RGB_SET_INDEX (svis_vu_normal_colors[x]); + set += 2; } - break; } - } - else if (config.vis_type == VIS_SCOPE) - { - for (x = 0; x < 38; x++) + break; + default: /* VU_SMOOTH */ + for (gint y = 0; y < 5; y ++) { - h = svis->data[x << 1] / 3; - ptr = rgb_data + ((4 - h) * 38) + x; - *ptr = svis_scope_colors[h]; - } - } + if (y == 2) + continue; - } - else - { /*svis scaling, this needs some work, since a lot of stuff is hardcoded --majeru */ + gint h = svis.data[y / 3]; + h = CLAMP (h, 0, 38); + RGB_SEEK (0, y); - memset (rgb_data, 0, - SVIS_WIDTH * config.scale_factor * SVIS_HEIGHT * - config.scale_factor); - if (config.vis_type == VIS_ANALYZER && !aud_drct_get_paused () - && aud_drct_get_playing ()) - { - for (y = 0; y < SVIS_HEIGHT; y++) - { - ptr = OFFSET_SCALED (rgb_data, 0, SVIS_HEIGHT - 1 - y); - - if (config.analyzer_type == ANALYZER_BARS) - { - for (x = 0; x < (SVIS_WIDTH + 1) / 3; x ++) - { - if (svis->data[x] > y << 1) - { - DRAW_SCALED (OFFSET_SCALED (ptr, x * 3, 0), 23); - DRAW_SCALED (OFFSET_SCALED (ptr, x * 3 + 1, 0), 23); - } - } - } - else - { - for (x = 0; x < SVIS_WIDTH; x++) - { - if (svis->data[x] > y << 1) - DRAW_SCALED (OFFSET_SCALED (ptr, x, 0), 23); - } - } + for (gint x = 0; x < h; x ++) + RGB_SET_INDEX (17 - (x * 16) / 38); } + break; } - else if (config.vis_type == VIS_VOICEPRINT) + break; + case VIS_SCOPE:; + static const gint scale[17] = {0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 3, 4, + 4, 4, 4, 4, 4}; + + if (! svis.active) + goto DRAW; + + switch (config.scope_mode) { - switch (config.vu_mode) + case SCOPE_DOT: + for (gint x = 0; x < 38; x ++) { - case VU_NORMAL: - for (y = 0; y < 2; y++) - { - ptr = rgb_data + ((y * 3) * 152); - h = (svis->data[y] * 8) / 37; - for (x = 0; x < h; x++, ptr += 10) - { - c = svis_vu_normal_colors[x]; - DRAW_DS_PIXEL (ptr, c); - DRAW_DS_PIXEL (ptr + 2, c); - DRAW_DS_PIXEL (ptr + 4, c); - DRAW_DS_PIXEL (ptr + 152, c); - DRAW_DS_PIXEL (ptr + 154, c); - DRAW_DS_PIXEL (ptr + 156, c); - } - } - break; - case VU_SMOOTH: - for (y = 0; y < 2; y++) - { - ptr = rgb_data + ((y * 3) * 152); - for (x = 0; x < svis->data[y]; x++, ptr += 2) - { - c = 17 - ((x * 15) / 37); - DRAW_DS_PIXEL (ptr, c); - DRAW_DS_PIXEL (ptr + 152, c); - } - } - break; + gint h = scale[CLAMP (svis.data[2 * x], 0, 16)]; + RGB_SEEK (x, h); + RGB_SET_INDEX (svis_scope_colors[h]); } - } - else if (config.vis_type == VIS_SCOPE) - { - for (x = 0; x < 38; x++) + case SCOPE_LINE: + for (gint x = 0; x < 37; x++) { - h = svis->data[x << 1] / 3; - ptr = rgb_data + ((4 - h) * 152) + (x << 1); - *ptr = svis_scope_colors[h]; - *(ptr + 1) = svis_scope_colors[h]; - *(ptr + 76) = svis_scope_colors[h]; - *(ptr + 77) = svis_scope_colors[h]; - } - } + gint h = scale[CLAMP (svis.data[2 * x], 0, 16)]; + gint h2 = scale[CLAMP (svis.data[2 * (x + 1)], 0, 16)]; + if (h < h2) h2 --; + else if (h > h2) {gint temp = h; h = h2 + 1; h2 = temp;} - } + RGB_SEEK (x, h); + for (gint y = h; y <= h2; y ++) + RGB_SET_INDEX_Y (svis_scope_colors[y]); + } - GdkPixmap *obj = NULL; - GdkGC *gc; - obj = - gdk_pixmap_new (NULL, - svis->width * (svis->scaled ? config.scale_factor : 1), - svis->height * (svis->scaled ? config.scale_factor : 1), - gdk_rgb_get_visual ()->depth); - gc = gdk_gc_new (obj); + gint h = scale[CLAMP (svis.data[74], 0, 16)]; + RGB_SEEK (37, h); + RGB_SET_INDEX (svis_scope_colors[h]); + break; + default: /* SCOPE_SOLID */ + for (gint x = 0; x < 38; x++) + { + gint h = scale[CLAMP (svis.data[2 * x], 0, 16)]; + gint h2; - if (!svis->scaled) - { - gdk_draw_indexed_image (obj, gc, 0, 0, svis->width, svis->height, - GDK_RGB_DITHER_NORMAL, (guchar *) rgb_data, - 38, cmap); - } - else - { - gdk_draw_indexed_image (obj, gc, - 0 << 1, 0 << 1, - svis->width << 1, svis->height << 1, - GDK_RGB_DITHER_NONE, (guchar *) rgb_data, - 76, cmap); - } + if (h < 2) h2 = 2; + else {h2 = h; h = 2;} - gdk_rgb_cmap_free (cmap); - gdk_draw_drawable (widget->window, gc, obj, 0, 0, 0, 0, - svis->width * (svis->scaled ? config.scale_factor : 1), - svis->height * (svis->scaled ? config.scale_factor : 1)); - g_object_unref (obj); - g_object_unref (gc); + RGB_SEEK (x, h); + for (gint y = h; y <= h2; y ++) + RGB_SET_INDEX_Y (svis_scope_colors[y]); + } + break; + } + break; + } - return FALSE; -} +DRAW:; + cairo_surface_t * surf = cairo_image_surface_create_for_data ((void *) rgb, + CAIRO_FORMAT_RGB24, 38, 5, 4 * 38); + cairo_set_source_surface (cr, surf, 0, 0); + cairo_paint (cr); + cairo_surface_destroy (surf); +DRAW_FUNC_END -static void ui_svis_toggle_scaled (UiSVis * svis) +GtkWidget * ui_svis_new (void) { - GtkWidget *widget = GTK_WIDGET (svis); - svis->scaled = !svis->scaled; - - gtk_widget_set_size_request (widget, svis->width * config.scale_factor, - svis->height * config.scale_factor); - - if (widget_really_drawable (widget)) - ui_svis_expose (widget, 0); + GtkWidget * wid = gtk_drawing_area_new (); + gtk_widget_set_size_request (wid, 38, 5); + gtk_widget_add_events (wid, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); + DRAW_CONNECT (wid, ui_svis_draw); + return wid; } void ui_svis_clear_data (GtkWidget * widget) { - g_return_if_fail (UI_IS_SVIS (widget)); - - gint i; - UiSVis *svis = UI_SVIS (widget); - - for (i = 0; i < 75; i++) - { - svis->data[i] = (config.vis_type == VIS_SCOPE) ? 6 : 0; - } - - svis->refresh_delay = 0; - - if (widget_really_drawable (widget)) - ui_svis_expose (widget, 0); + memset (& svis, 0, sizeof svis); + gtk_widget_queue_draw (widget); } void ui_svis_timeout_func (GtkWidget * widget, guchar * data) { - g_return_if_fail (UI_IS_SVIS (widget)); - - UiSVis *svis = UI_SVIS (widget); - gint i; - if (config.vis_type == VIS_VOICEPRINT) { - for (i = 0; i < 2; i++) - svis->data[i] = data[i]; + for (gint i = 0; i < 2; i ++) + svis.data[i] = data[i]; } else { - for (i = 0; i < 75; i++) - svis->data[i] = data[i]; + for (gint i = 0; i < 75; i ++) + svis.data[i] = data[i]; } - if (widget_really_drawable (widget)) - ui_svis_expose (widget, 0); + svis.active = TRUE; + gtk_widget_queue_draw (widget); } diff -Nru audacious-plugins-2.4.4/src/skins/ui_svis.h audacious-plugins-3.2/src/skins/ui_svis.h --- audacious-plugins-2.4.4/src/skins/ui_svis.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_svis.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -/* - * Audacious - a cross-platform multimedia player - * Copyright (c) 2007 Audacious development team. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * The Audacious team does not consider modular code linking to - * Audacious or using our public API to be a derived work. - */ - -#ifndef UISVIS_H -#define UISVIS_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define UI_SVIS(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, ui_svis_get_type (), UiSVis) -#define UI_SVIS_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, ui_svis_get_type (), UiSVisClass) -#define UI_IS_SVIS(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, ui_svis_get_type ()) - -typedef struct _UiSVis UiSVis; -typedef struct _UiSVisClass UiSVisClass; - -struct _UiSVis { - GtkWidget widget; - - gint x, y, width, height; - gint data[75]; - gint refresh_delay; - gboolean scaled; - GtkWidget *fixed; - gboolean visible_window; - GdkWindow *event_window; -}; - -struct _UiSVisClass { - GtkWidgetClass parent_class; - void (* scaled) (UiSVis *vis); -}; - -GtkWidget* ui_svis_new (GtkWidget *fixed, gint x, gint y); -GType ui_svis_get_type(void); -void ui_svis_clear_data(GtkWidget *widget); -void ui_svis_timeout_func(GtkWidget *widget, guchar * data); - -#ifdef __cplusplus -} -#endif - -#endif diff -Nru audacious-plugins-2.4.4/src/skins/ui_vis.c audacious-plugins-3.2/src/skins/ui_vis.c --- audacious-plugins-2.4.4/src/skins/ui_vis.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_vis.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ /* * Audacious - a cross-platform multimedia player - * Copyright (c) 2007-2010 Audacious development team. + * Copyright (c) 2007-2011 Audacious development team. * * Based on: * BMP - Cross-platform multimedia player @@ -24,378 +24,124 @@ * Audacious or using our public API to be a derived work. */ +#include + +#include "draw-compat.h" +#include "skins_cfg.h" +#include "surface.h" #include "ui_skin.h" #include "ui_vis.h" -#include "util.h" -#include "skins_cfg.h" -#include -static const gfloat vis_afalloff_speeds[] = { 0.34, 0.5, 1.0, 1.3, 1.6 }; -static const gfloat vis_pfalloff_speeds[] = { 1.2, 1.3, 1.4, 1.5, 1.6 }; -static const gint vis_scope_colors[16] = {22, 21, 21, 20, 20, 19, 19, 18, 18, +static const gfloat vis_afalloff_speeds[] = {0.34, 0.5, 1.0, 1.3, 1.6}; +static const gfloat vis_pfalloff_speeds[] = {1.2, 1.3, 1.4, 1.5, 1.6}; +static const gint vis_scope_colors[16] = {22, 22, 21, 21, 20, 10, 19, 19, 18, 19, 19, 20, 20, 21, 21, 22}; -static guchar voiceprint_data[76 * 16]; - -enum -{ - DOUBLED, - LAST_SIGNAL -}; - -static void ui_vis_class_init (UiVisClass * klass); -static void ui_vis_init (UiVis * vis); -static void ui_vis_destroy (GtkObject * object); -static void ui_vis_realize (GtkWidget * widget); -static void ui_vis_unrealize (GtkWidget * widget); -static void ui_vis_map (GtkWidget * widget); -static void ui_vis_unmap (GtkWidget * widget); -static void ui_vis_size_request (GtkWidget * widget, - GtkRequisition * requisition); -static void ui_vis_size_allocate (GtkWidget * widget, - GtkAllocation * allocation); -static gboolean ui_vis_expose (GtkWidget * widget, GdkEventExpose * event); -static void ui_vis_toggle_scaled (UiVis * vis); - -static GtkWidgetClass *parent_class = NULL; -static guint vis_signals[LAST_SIGNAL] = { 0 }; - -GType ui_vis_get_type () -{ - static GType vis_type = 0; - if (!vis_type) - { - static const GTypeInfo vis_info = { - sizeof (UiVisClass), - NULL, - NULL, - (GClassInitFunc) ui_vis_class_init, - NULL, - NULL, - sizeof (UiVis), - 0, - (GInstanceInitFunc) ui_vis_init, - }; - vis_type = - g_type_register_static (GTK_TYPE_WIDGET, "UiVis", &vis_info, 0); - } - - return vis_type; -} - -static void ui_vis_class_init (UiVisClass * klass) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) klass; - widget_class = (GtkWidgetClass *) klass; - parent_class = g_type_class_peek_parent (klass); - - object_class->destroy = ui_vis_destroy; - - widget_class->realize = ui_vis_realize; - widget_class->unrealize = ui_vis_unrealize; - widget_class->map = ui_vis_map; - widget_class->unmap = ui_vis_unmap; - widget_class->expose_event = ui_vis_expose; - widget_class->size_request = ui_vis_size_request; - widget_class->size_allocate = ui_vis_size_allocate; - - klass->doubled = ui_vis_toggle_scaled; - - vis_signals[DOUBLED] = - g_signal_new ("toggle-scaled", G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiVisClass, doubled), NULL, NULL, - g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); -} - -static void ui_vis_init (UiVis * vis) -{ - memset (voiceprint_data, 0, 16 * 76); -} - -GtkWidget *ui_vis_new (GtkWidget * fixed, gint x, gint y, gint width) -{ - UiVis *vis = g_object_new (ui_vis_get_type (), NULL); - - vis->x = x; - vis->y = y; - - vis->width = width; - vis->height = 16; - - vis->fixed = fixed; - vis->scaled = FALSE; - - vis->visible_window = TRUE; - vis->event_window = NULL; - - vis->gc = NULL; - - gtk_fixed_put (GTK_FIXED (vis->fixed), GTK_WIDGET (vis), vis->x, vis->y); - - return GTK_WIDGET (vis); -} - -static void ui_vis_destroy (GtkObject * object) -{ - UiVis *vis; - - g_return_if_fail (object != NULL); - g_return_if_fail (UI_IS_VIS (object)); - - vis = UI_VIS (object); - - if (vis->gc != NULL) - g_object_unref (vis->gc), vis->gc = NULL; - - if (GTK_OBJECT_CLASS (parent_class)->destroy) - (*GTK_OBJECT_CLASS (parent_class)->destroy) (object); -} - -static void ui_vis_realize (GtkWidget * widget) -{ - UiVis *vis; - GdkWindowAttr attributes; - gint attributes_mask; - - g_return_if_fail (widget != NULL); - g_return_if_fail (UI_IS_VIS (widget)); - - GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); - vis = UI_VIS (widget); - - attributes.x = widget->allocation.x; - attributes.y = widget->allocation.y; - attributes.width = widget->allocation.width; - attributes.height = widget->allocation.height; - attributes.window_type = GDK_WINDOW_CHILD; - attributes.event_mask = gtk_widget_get_events (widget); - attributes.event_mask |= - GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK; - - if (vis->visible_window) - { - attributes.visual = gtk_widget_get_visual (widget); - attributes.colormap = gtk_widget_get_colormap (widget); - attributes.wclass = GDK_INPUT_OUTPUT; - attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; - widget->window = - gdk_window_new (widget->parent->window, &attributes, - attributes_mask); - GTK_WIDGET_UNSET_FLAGS (widget, GTK_NO_WINDOW); - gdk_window_set_user_data (widget->window, widget); - } - else - { - widget->window = gtk_widget_get_parent_window (widget); - g_object_ref (widget->window); - - attributes.wclass = GDK_INPUT_ONLY; - attributes_mask = GDK_WA_X | GDK_WA_Y; - vis->event_window = - gdk_window_new (widget->window, &attributes, attributes_mask); - GTK_WIDGET_SET_FLAGS (widget, GTK_NO_WINDOW); - gdk_window_set_user_data (vis->event_window, widget); - } - - widget->style = gtk_style_attach (widget->style, widget->window); -} - -static void ui_vis_unrealize (GtkWidget * widget) -{ - UiVis *vis; - vis = UI_VIS (widget); - - if (vis->event_window != NULL) - { - gdk_window_set_user_data (vis->event_window, NULL); - gdk_window_destroy (vis->event_window); - vis->event_window = NULL; - } - - if (GTK_WIDGET_CLASS (parent_class)->unrealize) - (*GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); -} - -static void ui_vis_map (GtkWidget * widget) -{ - UiVis *vis; - vis = UI_VIS (widget); - - if (vis->event_window != NULL) - gdk_window_show (vis->event_window); - - if (GTK_WIDGET_CLASS (parent_class)->map) - (*GTK_WIDGET_CLASS (parent_class)->map) (widget); -} - -static void ui_vis_unmap (GtkWidget * widget) -{ - UiVis *vis; - vis = UI_VIS (widget); - - if (vis->event_window != NULL) - gdk_window_hide (vis->event_window); - - if (GTK_WIDGET_CLASS (parent_class)->unmap) - (*GTK_WIDGET_CLASS (parent_class)->unmap) (widget); -} -static void ui_vis_size_request (GtkWidget * widget, - GtkRequisition * requisition) -{ - UiVis *vis = UI_VIS (widget); - - requisition->width = vis->width * (vis->scaled ? config.scale_factor : 1); - requisition->height = vis->height * (vis->scaled ? config.scale_factor : 1); -} - -static void ui_vis_size_allocate (GtkWidget * widget, - GtkAllocation * allocation) -{ - UiVis *vis = UI_VIS (widget); - - widget->allocation = *allocation; - widget->allocation.x *= (vis->scaled ? config.scale_factor : 1); - widget->allocation.y *= (vis->scaled ? config.scale_factor : 1); - if (GTK_WIDGET_REALIZED (widget)) - { - if (vis->event_window != NULL) - gdk_window_move_resize (vis->event_window, widget->allocation.x, - widget->allocation.y, allocation->width, - allocation->height); - else - gdk_window_move_resize (widget->window, widget->allocation.x, - widget->allocation.y, allocation->width, - allocation->height); - } - - vis->x = widget->allocation.x / (vis->scaled ? config.scale_factor : 1); - vis->y = widget->allocation.y / (vis->scaled ? config.scale_factor : 1); -} - -#define RGB_SEEK(x,y) {set = rgb + 3 * 76 * (y) + 3 * (x);} -#define RGB_SET(c) {guchar * p = (c); * set ++ = * p ++; * set ++ = * p ++; \ - * set ++ = * p ++;} -#define RGB_SET_Y(c) {RGB_SET (c) set += 3 * 75;} -#define RGB_SET_INDEX(c) {RGB_SET (vis_color[c])} -#define RGB_SET_INDEX_Y(c) {RGB_SET_Y (vis_color[c])} - -static guchar vis_color[24][3]; -static guchar vis_voice_color[256][3]; -static guchar vis_voice_color_fire[256][3]; -static guchar vis_voice_color_ice[256][3]; -static guchar pattern_fill[3 * 76 * 2]; +static guint32 vis_voice_color[256]; +static guint32 vis_voice_color_fire[256]; +static guint32 vis_voice_color_ice[256]; +static guint32 pattern_fill[76 * 2]; + +static struct { + gboolean active; + gfloat data[75], peak[75], peak_speed[75]; + guchar voiceprint_data[76 * 16]; + gboolean voiceprint_advance; +} vis; + +#define RGB_SEEK(x,y) (set = rgb + 76 * (y) + (x)) +#define RGB_SET(c) (* set ++ = (c)) +#define RGB_SET_Y(c) do {* set = (c); set += 76;} while (0) +#define RGB_SET_INDEX(c) RGB_SET (active_skin->vis_colors[c]) +#define RGB_SET_INDEX_Y(c) RGB_SET_Y (active_skin->vis_colors[c]) void ui_vis_set_colors (void) { - guchar * set, * end; - gint x, n; + g_return_if_fail (active_skin != NULL); - skin_get_viscolor (aud_active_skin, vis_color); + guint32 fgc = active_skin->colors[SKIN_TEXTFG]; + guint32 bgc = active_skin->colors[SKIN_TEXTBG]; + gint fg[3] = {COLOR_R (fgc), COLOR_G (fgc), COLOR_B (fgc)}; + gint bg[3] = {COLOR_R (bgc), COLOR_G (bgc), COLOR_B (bgc)}; + for (gint x = 0; x < 256; x ++) { - GdkColor * fgc = skin_get_color (aud_active_skin, SKIN_TEXTFG); - GdkColor * bgc = skin_get_color (aud_active_skin, SKIN_TEXTBG); - gint fg[3] = {fgc->red >> 8, fgc->green >> 8, fgc->blue >> 8}; - gint bg[3] = {bgc->red >> 8, bgc->green >> 8, bgc->blue >> 8}; - - for (x = 0; x < 256; x ++) - for (n = 0; n < 3; n ++) - vis_voice_color[x][n] = bg[n] + (fg[n] - bg[n]) * x / 256; + guchar c[3]; + for (gint n = 0; n < 3; n ++) + c[n] = bg[n] + (fg[n] - bg[n]) * x / 255; + vis_voice_color[x] = COLOR (c[0], c[1], c[2]); } - for (x = 0; x < 256; x ++) + for (gint x = 0; x < 256; x ++) { - vis_voice_color_fire[x][0] = (x < 64) ? x << 1 : 255; - vis_voice_color_fire[x][1] = (x < 64) ? 0 : (x < 128) ? (x - 64) << 1 : - 255; - vis_voice_color_fire[x][2] = (x < 128) ? 0 : (x - 128) << 1; + guchar r = MIN (x, 127) * 2; + guchar g = CLAMP (x - 64, 0, 127) * 2; + guchar b = MAX (x - 128, 0) * 2; + vis_voice_color_fire[x] = COLOR (r, g, b); } - for (x = 0; x < 256; x ++) - { - vis_voice_color_ice[x][0] = x; - vis_voice_color_ice[x][1] = (x < 128) ? x << 1 : 255; - vis_voice_color_ice[x][2] = (x < 64) ? x << 2 : 255; - } + for (gint x = 0; x < 256; x ++) + vis_voice_color_ice[x] = COLOR (x / 2, x, MIN (x * 2, 255)); - set = pattern_fill; - end = set + 3 * 76; + guint32 * set = pattern_fill; + guint32 * end = set + 76; while (set < end) - RGB_SET_INDEX (0) + RGB_SET_INDEX (0); - end = set + 3 * 76; + end = set + 76; while (set < end) { - RGB_SET_INDEX (1) - RGB_SET_INDEX (0) + RGB_SET_INDEX (1); + RGB_SET_INDEX (0); } } -static gboolean ui_vis_expose (GtkWidget * widget, GdkEventExpose * event) -{ - UiVis * vis = (UiVis *) widget; - gint x, y, h, h2; - guchar rgb[3 * 76 * 16]; - guchar * get, * set, * end; - guchar (* voice_color)[3]; +DRAW_FUNC_BEGIN (ui_vis_draw) + guint32 rgb[76 * 16]; + guint32 * set; if (config.vis_type != VIS_VOICEPRINT) { - for (set = rgb; set < rgb + sizeof rgb; set += sizeof pattern_fill) + for (set = rgb; set < rgb + 76 * 16; set += 76 * 2) memcpy (set, pattern_fill, sizeof pattern_fill); } switch (config.vis_type) { - case VIS_ANALYZER: - for (x = 0; x < 75; x ++) + case VIS_ANALYZER:; + gboolean bars = (config.analyzer_type == ANALYZER_BARS); + + for (gint x = 0; x < 75; x ++) { - if (config.analyzer_type == ANALYZER_BARS && (x & 3) == 3) + if (bars && (x & 3) == 3) continue; - if (config.analyzer_type == ANALYZER_BARS) - h = vis->data[x >> 2]; - else - h = vis->data[x]; - - h = CLAMP (h, 0, 16); /* sanity check */ - - RGB_SEEK (x, 16 - h) + gint h = vis.data[bars ? (x >> 2) : x]; + h = CLAMP (h, 0, 16); + RGB_SEEK (x, 16 - h); switch (config.analyzer_mode) { case ANALYZER_NORMAL: - for (y = 0; y < h; y ++) + for (gint y = 0; y < h; y ++) RGB_SET_INDEX_Y (18 - h + y); - break; case ANALYZER_FIRE: - for (y = 0; y < h; y ++) + for (gint y = 0; y < h; y ++) RGB_SET_INDEX_Y (2 + y); - break; - /* case ANALYZER_VLINES: */ - default: - for (y = 0; y < h; y ++) + default: /* ANALYZER_VLINES */ + for (gint y = 0; y < h; y ++) RGB_SET_INDEX_Y (18 - h); - break; } if (config.analyzer_peaks) { - if (config.analyzer_type == ANALYZER_BARS) - h = vis->peak[x >> 2]; - else - h = vis->peak[x]; - - h = CLAMP (h, 0, 16); /* sanity check */ + gint h = vis.peak[bars ? (x >> 2) : x]; + h = CLAMP (h, 0, 16); if (h) { @@ -407,242 +153,164 @@ break; case VIS_VOICEPRINT: - /* Move the ribbon only if we are called directly, not on an actual - * expose. */ - if (event == NULL) + if (vis.voiceprint_advance) { - memmove (voiceprint_data, voiceprint_data + 1, sizeof voiceprint_data - - 1); - - for (y = 0; y < 16; y ++) - voiceprint_data[76 * y + 75] = vis->data[y]; - } + vis.voiceprint_advance = FALSE; + memmove (vis.voiceprint_data, vis.voiceprint_data + 1, sizeof + vis.voiceprint_data - 1); - switch (config.voiceprint_mode) - { - case VOICEPRINT_NORMAL: - voice_color = vis_voice_color; - break; - case VOICEPRINT_FIRE: - voice_color = vis_voice_color_fire; - break; - /* case VOICEPRINT_ICE: */ - default: - voice_color = vis_voice_color_ice; - break; + for (gint y = 0; y < 16; y ++) + vis.voiceprint_data[76 * y + 75] = vis.data[y]; } - get = voiceprint_data; + guchar * get = vis.voiceprint_data; + guint32 * colors = (config.voiceprint_mode == VOICEPRINT_NORMAL) ? + vis_voice_color : (config.voiceprint_mode == VOICEPRINT_FIRE) ? + vis_voice_color_fire : /* VOICEPRINT_ICE */ vis_voice_color_ice; set = rgb; - for (y = 0; y < 16; y ++) - for (x = 0; x < 76; x ++) - RGB_SET (voice_color[* get ++]) - + for (gint y = 0; y < 16; y ++) + for (gint x = 0; x < 76; x ++) + RGB_SET (colors[* get ++]); break; case VIS_SCOPE: + if (! vis.active) + goto DRAW; + switch (config.scope_mode) { case SCOPE_DOT: - for (x = 0; x < 75; x ++) + for (gint x = 0; x < 75; x ++) { - h = 1 + vis->data[x]; - h = CLAMP (h, 0, 15); /* sanity check */ - RGB_SEEK (x, h) - RGB_SET_INDEX (vis_scope_colors[h]) + gint h = CLAMP (vis.data[x], 0, 15); + RGB_SEEK (x, h); + RGB_SET_INDEX (vis_scope_colors[h]); } - break; case SCOPE_LINE: - for (x = 0; x < 74; x++) + for (gint x = 0; x < 74; x++) { - h = 1 + vis->data[x]; - h = CLAMP (h, 0, 15); /* sanity check */ - h2 = 1 + vis->data[x + 1]; - h2 = CLAMP (h2, 0, 15); /* sanity check */ - - if (h < h2) - h2 --; - else if (h > h2) - { - y = h; - h = h2 + 1; - h2 = y; - } + gint h = CLAMP (vis.data[x], 0, 15); + gint h2 = CLAMP (vis.data[x + 1], 0, 15); + + if (h < h2) h2 --; + else if (h > h2) {gint temp = h; h = h2 + 1; h2 = temp;} - RGB_SEEK (x, h) + RGB_SEEK (x, h); - for (y = h; y <= h2; y ++) - RGB_SET_INDEX_Y (vis_scope_colors[y]) + for (gint y = h; y <= h2; y ++) + RGB_SET_INDEX_Y (vis_scope_colors[y]); } - h = 1 + vis->data[74]; - h = CLAMP (h, 0, 15); /* sanity check */ - RGB_SEEK (74, h) - RGB_SET_INDEX (vis_scope_colors[h]) + gint h = CLAMP (vis.data[74], 0, 15); + RGB_SEEK (74, h); + RGB_SET_INDEX (vis_scope_colors[h]); break; - /* case SCOPE_SOLID: */ - default: - for (x = 0; x < 75; x++) + default: /* SCOPE_SOLID */ + for (gint x = 0; x < 75; x++) { - h = 1 + vis->data[x]; - h = CLAMP (h, 0, 15); /* sanity check */ + gint h = CLAMP (vis.data[x], 0, 15); + gint h2; - if (h < 8) - h2 = 7; - else - { - h2 = h; - h = 8; - } + if (h < 8) h2 = 8; + else {h2 = h; h = 8;} - RGB_SEEK (x, h) + RGB_SEEK (x, h); - for (y = h; y <= h2; y ++) - RGB_SET_INDEX_Y (vis_scope_colors[y]) + for (gint y = h; y <= h2; y ++) + RGB_SET_INDEX_Y (vis_scope_colors[y]); } - break; } - break; } - if (vis->gc == NULL) - vis->gc = gdk_gc_new (widget->window); - - if (vis->scaled) - { - guchar rgb2[3 * 76 * 2 * 16 * 2]; - - set = rgb2; - - for (y = 0; y < 16 * 2; y ++) - { - get = rgb + 3 * 76 * (y >> 1); - end = get + 3 * 76; - - while (get < end) - { - * set ++ = * get ++; - * set ++ = * get ++; - * set ++ = * get; - get -= 2; - * set ++ = * get ++; - * set ++ = * get ++; - * set ++ = * get ++; - } - } - - gdk_draw_rgb_image (widget->window, vis->gc, 0, 0, 76 * 2, 16 * 2, - GDK_RGB_DITHER_NONE, rgb2, 3 * 76 * 2); - } - else - gdk_draw_rgb_image (widget->window, vis->gc, 0, 0, 76, 16, - GDK_RGB_DITHER_NONE, rgb, 3 * 76); - - return FALSE; -} - -static void ui_vis_toggle_scaled (UiVis * vis) -{ - GtkWidget *widget = GTK_WIDGET (vis); - vis->scaled = !vis->scaled; - - gtk_widget_set_size_request (widget, - vis->width * - (vis->scaled ? config.scale_factor : 1), - vis->height * - (vis->scaled ? config.scale_factor : 1)); - - if (widget_really_drawable (widget)) - ui_vis_expose (widget, 0); +DRAW:; + cairo_surface_t * surf = cairo_image_surface_create_for_data ((void *) rgb, + CAIRO_FORMAT_RGB24, 76, 16, 4 * 76); + cairo_set_source_surface (cr, surf, 0, 0); + cairo_paint (cr); + cairo_surface_destroy (surf); +DRAW_FUNC_END + +GtkWidget * ui_vis_new (void) +{ + GtkWidget * wid = gtk_drawing_area_new (); + gtk_widget_set_size_request (wid, 76, 16); + gtk_widget_add_events (wid, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); + DRAW_CONNECT (wid, ui_vis_draw); + return wid; } -void ui_vis_clear_data (GtkWidget * widget) +void ui_vis_clear_data (GtkWidget * wid) { - g_return_if_fail (UI_IS_VIS (widget)); - - gint i; - UiVis *vis = UI_VIS (widget); - - memset (voiceprint_data, 0, 16 * 76); - for (i = 0; i < 75; i++) - { - vis->data[i] = (config.vis_type == VIS_SCOPE) ? 6 : 0; - vis->peak[i] = 0; - } - - if (widget_really_drawable (widget)) - ui_vis_expose (widget, 0); + memset (& vis, 0, sizeof vis); + gtk_widget_queue_draw (wid); } void ui_vis_timeout_func (GtkWidget * widget, guchar * data) { - g_return_if_fail (UI_IS_VIS (widget)); - - UiVis *vis = UI_VIS (widget); - gint i; - if (config.vis_type == VIS_ANALYZER) { const gint n = (config.analyzer_type == ANALYZER_BARS) ? 19 : 75; - for (i = 0; i < n; i++) + for (gint i = 0; i < n; i++) { - if (data[i] > vis->data[i]) + if (data[i] > vis.data[i]) { - vis->data[i] = data[i]; - if (vis->data[i] > vis->peak[i]) + vis.data[i] = data[i]; + if (vis.data[i] > vis.peak[i]) { - vis->peak[i] = vis->data[i]; - vis->peak_speed[i] = 0.01; + vis.peak[i] = vis.data[i]; + vis.peak_speed[i] = 0.01; } - else if (vis->peak[i] > 0.0) + else if (vis.peak[i] > 0.0) { - vis->peak[i] -= vis->peak_speed[i]; - vis->peak_speed[i] *= + vis.peak[i] -= vis.peak_speed[i]; + vis.peak_speed[i] *= vis_pfalloff_speeds[config.peaks_falloff]; - if (vis->peak[i] < vis->data[i]) - vis->peak[i] = vis->data[i]; - if (vis->peak[i] < 0.0) - vis->peak[i] = 0.0; + if (vis.peak[i] < vis.data[i]) + vis.peak[i] = vis.data[i]; + if (vis.peak[i] < 0.0) + vis.peak[i] = 0.0; } } else { - if (vis->data[i] > 0.0) + if (vis.data[i] > 0.0) { - vis->data[i] -= + vis.data[i] -= vis_afalloff_speeds[config.analyzer_falloff]; - if (vis->data[i] < 0.0) - vis->data[i] = 0.0; + if (vis.data[i] < 0.0) + vis.data[i] = 0.0; } - if (vis->peak[i] > 0.0) + if (vis.peak[i] > 0.0) { - vis->peak[i] -= vis->peak_speed[i]; - vis->peak_speed[i] *= + vis.peak[i] -= vis.peak_speed[i]; + vis.peak_speed[i] *= vis_pfalloff_speeds[config.peaks_falloff]; - if (vis->peak[i] < vis->data[i]) - vis->peak[i] = vis->data[i]; - if (vis->peak[i] < 0.0) - vis->peak[i] = 0.0; + if (vis.peak[i] < vis.data[i]) + vis.peak[i] = vis.data[i]; + if (vis.peak[i] < 0.0) + vis.peak[i] = 0.0; } } } } else if (config.vis_type == VIS_VOICEPRINT) { - for (i = 0; i < 16; i++) - vis->data[i] = data[15 - i]; + for (gint i = 0; i < 16; i++) + vis.data[i] = data[15 - i]; + + vis.voiceprint_advance = TRUE; } else { - for (i = 0; i < 75; i++) - vis->data[i] = data[i]; + for (gint i = 0; i < 75; i++) + vis.data[i] = data[i]; } - if (widget_really_drawable (widget)) - ui_vis_expose (widget, NULL); + vis.active = TRUE; + gtk_widget_queue_draw (widget); } diff -Nru audacious-plugins-2.4.4/src/skins/ui_vis.h audacious-plugins-3.2/src/skins/ui_vis.h --- audacious-plugins-2.4.4/src/skins/ui_vis.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/ui_vis.h 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ /* * Audacious - a cross-platform multimedia player - * Copyright (c) 2007 Audacious development team. + * Copyright (c) 2007-2011 Audacious development team. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,19 +18,11 @@ * Audacious or using our public API to be a derived work. */ -#ifndef UIVIS_H -#define UIVIS_H +#ifndef SKINS_UI_VIS_H +#define SKINS_UI_VIS_H #include -#ifdef __cplusplus -extern "C" { -#endif - -#define UI_VIS(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, ui_vis_get_type (), UiVis) -#define UI_VIS_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, ui_vis_get_type (), UiVisClass) -#define UI_IS_VIS(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, ui_vis_get_type ()) - typedef enum { VIS_ANALYZER, VIS_SCOPE, VIS_VOICEPRINT, VIS_OFF } VisType; @@ -46,52 +38,26 @@ typedef enum { SCOPE_DOT, SCOPE_LINE, SCOPE_SOLID } ScopeMode; + typedef enum { - VOICEPRINT_NORMAL, VOICEPRINT_FIRE, VOICEPRINT_ICE + VOICEPRINT_NORMAL, VOICEPRINT_FIRE, VOICEPRINT_ICE } VoiceprintMode; - typedef enum { VU_NORMAL, VU_SMOOTH } VUMode; typedef enum { - REFRESH_FULL, REFRESH_HALF, REFRESH_QUARTER, REFRESH_EIGTH -} RefreshRate; - -typedef enum { - FALLOFF_SLOWEST, FALLOFF_SLOW, FALLOFF_MEDIUM, FALLOFF_FAST, - FALLOFF_FASTEST + FALLOFF_SLOWEST, FALLOFF_SLOW, FALLOFF_MEDIUM, FALLOFF_FAST, FALLOFF_FASTEST } FalloffSpeed; -typedef struct _UiVis UiVis; -typedef struct _UiVisClass UiVisClass; - -struct _UiVis { - GtkWidget widget; - - gint x, y, width, height; - gfloat data[75], peak[75], peak_speed[75]; - gboolean scaled; - GtkWidget *fixed; - gboolean visible_window; - GdkWindow *event_window; - GdkGC * gc; -}; - -struct _UiVisClass { - GtkWidgetClass parent_class; - void (* doubled) (UiVis *vis); -}; - -GtkWidget* ui_vis_new (GtkWidget *fixed, gint x, gint y, gint width); -GType ui_vis_get_type(void); +GtkWidget * ui_vis_new (void); void ui_vis_set_colors (void); -void ui_vis_clear_data(GtkWidget *widget); -void ui_vis_timeout_func(GtkWidget *widget, guchar * data); +void ui_vis_clear_data (GtkWidget * widget); +void ui_vis_timeout_func (GtkWidget * widget, guchar * data); -#ifdef __cplusplus -} -#endif +GtkWidget * ui_svis_new (void); +void ui_svis_clear_data (GtkWidget * widget); +void ui_svis_timeout_func (GtkWidget * widget, guchar * data); #endif diff -Nru audacious-plugins-2.4.4/src/skins/util.c audacious-plugins-3.2/src/skins/util.c --- audacious-plugins-2.4.4/src/skins/util.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/util.c 2012-01-20 19:48:30.000000000 +0000 @@ -23,31 +23,26 @@ * Audacious or using our public API to be a derived work. */ -/*#define AUD_DEBUG*/ - -#include "config.h" - -#include "util.h" - +#include +#include #include -#include -#include -#include #include #include +#include +#include -#ifdef HAVE_FTS_H -# include -# include -# include -#endif +#include #include +#include #include #include #include +#include -#include "plugin.h" +#include "config.h" +#include "ui_main.h" +#include "util.h" typedef struct { @@ -62,15 +57,16 @@ gchar * find_file_case (const gchar * folder, const gchar * basename) { - static mowgli_dictionary_t * cache = NULL; - GList * list; + static GHashTable * cache = NULL; + GList * list = NULL; + void * vlist; if (cache == NULL) - cache = mowgli_dictionary_create (strcmp); + cache = g_hash_table_new (g_str_hash, g_str_equal); - list = mowgli_dictionary_retrieve (cache, folder); - - if (list == NULL) + if (g_hash_table_lookup_extended (cache, folder, NULL, & vlist)) + list = vlist; + else { DIR * handle; struct dirent * entry; @@ -81,7 +77,7 @@ while ((entry = readdir (handle)) != NULL) list = g_list_prepend (list, g_strdup (entry->d_name)); - mowgli_dictionary_add (cache, folder, list); + g_hash_table_insert (cache, g_strdup (folder), list); closedir (handle); } @@ -297,6 +293,39 @@ return NULL; } +/** + * Escapes characters that are special to the shell inside double quotes. + * + * @param string String to be escaped. + * @return Given string with special characters escaped. Must be freed with g_free(). + */ +static gchar * +escape_shell_chars(const gchar * string) +{ + const gchar *special = "$`\"\\"; /* Characters to escape */ + const gchar *in = string; + gchar *out, *escaped; + gint num = 0; + + while (*in != '\0') + if (strchr(special, *in++)) + num++; + + escaped = g_malloc(strlen(string) + num + 1); + + in = string; + out = escaped; + + while (*in != '\0') { + if (strchr(special, *in)) + *out++ = '\\'; + *out++ = *in++; + } + *out = '\0'; + + return escaped; +} + /* decompress_archive @@ -310,7 +339,11 @@ gchar *tmpdir, *cmd, *escaped_filename; ArchiveType type; #ifndef HAVE_MKDTEMP +#ifdef S_IRGRP mode_t mode755 = S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH; +#else + mode_t mode755 = S_IRWXU; +#endif #endif if ((type = archive_get_type(filename)) <= ARCHIVE_DIR) @@ -354,38 +387,6 @@ return tmpdir; } - -#ifdef HAVE_FTS_H - -void del_directory(const gchar *dirname) -{ - gchar *const argv[2] = { (gchar *)dirname, NULL }; - FTS *fts; - FTSENT *p; - - fts = fts_open(argv, FTS_PHYSICAL, (gint (*)())NULL); - while ((p = fts_read(fts))) - { - switch (p->fts_info) - { - case FTS_D: - break; - case FTS_DNR: - case FTS_ERR: - break; - case FTS_DP: - rmdir(p->fts_accpath); - break; - default: - unlink(p->fts_accpath); - break; - } - } - fts_close(fts); -} - -#else /* !HAVE_FTS */ - static gboolean del_directory_func(const gchar *path, const gchar *basename, void *params) { @@ -410,8 +411,6 @@ rmdir(path); } -#endif /* ifdef HAVE_FTS */ - static void strip_string(GString *string) { while (string->len > 0 && string->str[0] == ' ') @@ -672,7 +671,8 @@ gchar *temp; GArray *a; - g_return_val_if_fail((temp = read_ini_string(inifile, section, key)), NULL); + if (! (temp = read_ini_string (inifile, section, key))) + return NULL; a = string_to_garray(temp); g_free(temp); @@ -702,69 +702,6 @@ return (array); } -/* text_get_extents() taken from The GIMP (C) Spencer Kimball, Peter - * Mattis et al */ -gboolean text_get_extents(const gchar *fontname, const gchar *text, gint *width, - gint *height, gint *ascent, gint *descent) -{ - PangoFontDescription *font_desc; - PangoLayout *layout; - PangoRectangle rect; - - g_return_val_if_fail(fontname != NULL, FALSE); - g_return_val_if_fail(text != NULL, FALSE); - - /* FIXME: resolution */ - layout = gtk_widget_create_pango_layout(GTK_WIDGET(mainwin), text); - - font_desc = pango_font_description_from_string(fontname); - pango_layout_set_font_description(layout, font_desc); - pango_font_description_free(font_desc); - pango_layout_get_pixel_extents(layout, NULL, &rect); - - if (width) - *width = rect.width; - if (height) - *height = rect.height; - - if (ascent || descent) - { - PangoLayoutIter *iter; - PangoLayoutLine *line; - - iter = pango_layout_get_iter(layout); - line = pango_layout_iter_get_line(iter); - pango_layout_iter_free(iter); - - pango_layout_line_get_pixel_extents(line, NULL, &rect); - - if (ascent) - *ascent = PANGO_ASCENT(rect); - if (descent) - *descent = -PANGO_DESCENT(rect); - } - - g_object_unref(layout); - - return TRUE; -} - -/* counts number of digits in a gint */ -guint gint_count_digits(gint n) -{ - guint count = 0; - - n = ABS(n); - do - { - count++; - n /= 10; - } - while (n > 0); - - return count; -} - gboolean dir_foreach(const gchar *path, DirForeachFunc function, gpointer user_data, GError **error) { @@ -814,7 +751,7 @@ GTK_RESPONSE_REJECT); gtk_button_set_use_stock(GTK_BUTTON(button), TRUE); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_widget_set_can_default (button, TRUE); button = gtk_dialog_add_button(GTK_DIALOG(dialog), @@ -839,31 +776,6 @@ } #endif -void resize_window(GtkWidget *window, gint width, gint height) -{ - /* As of GTK+ 2.16, gtk_window_resize is broken on fixed size windows and - * needs this workaround. */ - if (!gtk_window_get_resizable((GtkWindow *)window)) - { - GdkGeometry hints; - - hints.min_width = width; - hints.min_height = height; - hints.max_width = width; - hints.max_height = height; - gtk_window_set_geometry_hints((GtkWindow *)window, NULL, &hints, - GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE); - } - - gtk_window_resize((GtkWindow *)window, width, height); -} - -gboolean widget_really_drawable (GtkWidget * widget) -{ - return GTK_WIDGET_DRAWABLE (widget) && widget->allocation.x >= 0 && - widget->allocation.y >= 0; -} - void check_set (GtkActionGroup * action_group, const gchar * action_name, gboolean is_on) { @@ -872,5 +784,4 @@ g_return_if_fail (action != NULL); gtk_toggle_action_set_active ((GtkToggleAction *) action, is_on); - hook_call (action_name, GINT_TO_POINTER (is_on)); } diff -Nru audacious-plugins-2.4.4/src/skins/util.h audacious-plugins-3.2/src/skins/util.h --- audacious-plugins-2.4.4/src/skins/util.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/skins/util.h 2012-01-20 19:48:30.000000000 +0000 @@ -26,11 +26,8 @@ #ifndef UTIL_H #define UTIL_H -#include #include -G_BEGIN_DECLS -#include "audacious/plugin.h" typedef gboolean(*DirForeachFunc) (const gchar *path, const gchar *basename, gpointer user_data); @@ -56,28 +53,13 @@ GArray *string_to_garray(const gchar *str); -gboolean text_get_extents(const gchar *fontname, const gchar *text, gint *width, - gint *height, gint *ascent, gint *descent); - gboolean file_is_archive(const gchar *filename); gchar *archive_decompress(const gchar *path); gchar *archive_basename(const gchar *path); -guint gint_count_digits(gint n); - - GtkWidget *make_filebrowser(const gchar *title, gboolean save); -GdkPixbuf *audacious_create_colorized_pixbuf(GdkPixbuf *src, gint red, - gint green, gint blue); - -void resize_window(GtkWidget *window, gint width, gint height); -gboolean widget_really_drawable (GtkWidget * widget); -void widget_destroy_on_escape (GtkWidget * widget); - void check_set (GtkActionGroup * action_group, const gchar * action_name, gboolean is_on); -void check_button_toggled (GtkToggleButton * button, void * data); -G_END_DECLS #endif diff -Nru audacious-plugins-2.4.4/src/smb/Makefile audacious-plugins-3.2/src/smb/Makefile --- audacious-plugins-2.4.4/src/smb/Makefile 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/smb/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -8,5 +8,5 @@ plugindir := ${plugindir}/${TRANSPORT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${ARCH_DEFINES} -I../.. +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. LIBS += ${GTK_LIBS} ${GLIB_LIBS} -lsmbclient diff -Nru audacious-plugins-2.4.4/src/smb/smb.c audacious-plugins-3.2/src/smb/smb.c --- audacious-plugins-2.4.4/src/smb/smb.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/smb/smb.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,6 @@ /* Audacious * Copyright (c) 2007 Daniel Bradshaw + * Copyright (c) 2011 John Lindgren * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -37,87 +38,71 @@ typedef struct _SMBFile { int fd; - long length; + gint64 length; } SMBFile; /* TODO: make writing work. */ -VFSFile *smb_vfs_fopen_impl(const gchar * path, const gchar * mode) +void * smb_vfs_fopen_impl (const gchar * path, const gchar * mode) { - VFSFile *file; SMBFile *handle; struct stat st; if (!path || !mode) return NULL; - file = g_new0(VFSFile, 1); handle = g_new0(SMBFile, 1); handle->fd = smbc_open(path, O_RDONLY, 0); - - if (handle->fd < 0) { - g_free(file); - file = NULL; - } else { - smbc_stat(path,&st); - handle->length = st.st_size; - file->handle = (void *)handle; + + if (handle->fd < 0) + { + g_free (handle); + return NULL; } - - return file; + + smbc_stat (path, & st); + handle->length = st.st_size; + + return handle; } gint smb_vfs_fclose_impl(VFSFile * file) { gint ret = 0; - SMBFile *handle; + SMBFile * handle = vfs_get_handle (file); - if (file == NULL) - return -1; - - if (file->handle) - { - handle = (SMBFile *)file->handle; - if (smbc_close(handle->fd) != 0) - ret = -1; - g_free(file->handle); - } + if (smbc_close (handle->fd)) + ret = -1; + g_free (handle); return ret; } -size_t smb_vfs_fread_impl(gpointer ptr, size_t size, size_t nmemb, VFSFile * file) +static gint64 smb_vfs_fread_impl (void * ptr, gint64 size, gint64 nmemb, VFSFile * file) { - SMBFile *handle; - if (file == NULL) - return 0; - handle = (SMBFile *)file->handle; + SMBFile * handle = vfs_get_handle (file); return smbc_read(handle->fd, ptr, size * nmemb); } -size_t smb_vfs_fwrite_impl(gconstpointer ptr, size_t size, size_t nmemb, VFSFile * file) +static gint64 smb_vfs_fwrite_impl (const void * ptr, gint64 size, gint64 nmemb, VFSFile * file) { return 0; } gint smb_vfs_getc_impl(VFSFile *file) { - SMBFile *handle; + SMBFile * handle = vfs_get_handle (file); char temp; - handle = (SMBFile *)file->handle; + smbc_read(handle->fd, &temp, 1); return (gint) temp; } -gint smb_vfs_fseek_impl(VFSFile * file, glong offset, gint whence) +static gint smb_vfs_fseek_impl(VFSFile * file, gint64 offset, gint whence) { - SMBFile *handle; - glong roffset = offset; + SMBFile * handle = vfs_get_handle (file); + gint64 roffset = offset; gint ret = 0; - if (file == NULL) - return 0; - - handle = (SMBFile *)file->handle; - + if (whence == SEEK_END) { roffset = handle->length + offset; @@ -134,7 +119,7 @@ ret = smbc_lseek(handle->fd, roffset, whence); //printf("%ld %d = %d\n",roffset, whence, ret); } - + return ret; } @@ -149,42 +134,35 @@ smb_vfs_fseek_impl(file, 0, SEEK_SET); } -glong -smb_vfs_ftell_impl(VFSFile * file) +static gint64 smb_vfs_ftell_impl(VFSFile * file) { - SMBFile *handle; - handle = (SMBFile *)file->handle; + SMBFile * handle = vfs_get_handle (file); return smbc_lseek(handle->fd, 0, SEEK_CUR); } gboolean smb_vfs_feof_impl(VFSFile * file) { - SMBFile *handle; - off_t at; + SMBFile * handle = vfs_get_handle (file); + gint64 at; at = smb_vfs_ftell_impl(file); - //printf("%d %d %ld %ld\n",sizeof(int), sizeof(off_t), at, handle->length); return (gboolean) (at == handle->length) ? TRUE : FALSE; } -gint -smb_vfs_truncate_impl(VFSFile * file, glong size) +static gint smb_vfs_truncate_impl (VFSFile * file, gint64 size) { return -1; } -off_t -smb_vfs_fsize_impl(VFSFile * file) +static gint64 smb_vfs_fsize_impl (VFSFile * file) { - SMBFile *handle = (SMBFile *)file->handle; - + SMBFile * handle = vfs_get_handle (file); return handle->length; } VFSConstructor smb_const = { - "smb://", smb_vfs_fopen_impl, smb_vfs_fclose_impl, smb_vfs_fread_impl, @@ -199,7 +177,7 @@ smb_vfs_fsize_impl }; -static void init(void) +static gboolean init (void) { int err; @@ -207,29 +185,18 @@ if (err < 0) { g_message("[smb] not starting samba support due to error code %d", err); - return; + return FALSE; } - vfs_register_transport(&smb_const); -} - -static void cleanup(void) -{ -#if 0 - vfs_unregister_transport(&smb_const); -#endif + return TRUE; } -LowlevelPlugin llp_smb = { - NULL, - NULL, - "smb:// URI Transport", - init, - cleanup, -}; - -LowlevelPlugin *get_lplugin_info(void) -{ - return &llp_smb; -} +static const gchar * const smb_schemes[] = {"smb", NULL}; +AUD_TRANSPORT_PLUGIN +( + .name = "SMB transport", + .init = init, + .schemes = smb_schemes, + .vtable = & smb_const +) diff -Nru audacious-plugins-2.4.4/src/sndfile/Makefile audacious-plugins-3.2/src/sndfile/Makefile --- audacious-plugins-2.4.4/src/sndfile/Makefile 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/sndfile/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -9,5 +9,5 @@ plugindir := ${plugindir}/${INPUT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -LIBS += ${MOWGLI_LIBS} ${SNDFILE_LIBS} ${GTK_LIBS} ${GLIB_LIBS} -lm +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. +LIBS += ${SNDFILE_LIBS} ${GTK_LIBS} ${GLIB_LIBS} -lm diff -Nru audacious-plugins-2.4.4/src/sndfile/plugin.c audacious-plugins-3.2/src/sndfile/plugin.c --- audacious-plugins-2.4.4/src/sndfile/plugin.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/sndfile/plugin.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,5 @@ /* Audacious - Cross-platform multimedia player - * Copyright (C) 2005-2010 Audacious development team + * Copyright (C) 2005-2011 Audacious development team * * Based on the xmms_sndfile input plugin: * Copyright (C) 2000, 2002 Erik de Castro Lopo @@ -42,6 +42,8 @@ #include #include +#include + #include #include #include @@ -51,8 +53,8 @@ static GMutex * control_mutex; static GCond * control_cond; -static gboolean pause_flag; -static glong seek_value; +static gint seek_value; +static gboolean stop_flag; /* Virtual file access wrappers for libsndfile @@ -96,39 +98,13 @@ sf_tell }; - -static SNDFILE * -open_sndfile_from_uri(const gchar *filename, VFSFile **vfsfile, SF_INFO *sfinfo) -{ - SNDFILE *snd_file = NULL; - *vfsfile = vfs_fopen(filename, "rb"); - - if (*vfsfile == NULL) - return NULL; - - snd_file = sf_open_virtual (&sf_virtual_io, SFM_READ, sfinfo, *vfsfile); - if (snd_file == NULL) - vfs_fclose(*vfsfile); - - return snd_file; -} - -static void -close_sndfile(SNDFILE *snd_file, VFSFile *vfsfile) -{ - if (snd_file != NULL) - sf_close(snd_file); - if (vfsfile != NULL) - vfs_fclose(vfsfile); -} - - /* Plugin initialization */ -static void plugin_init (void) +static gboolean plugin_init (void) { control_mutex = g_mutex_new (); control_cond = g_cond_new (); + return TRUE; } static void plugin_cleanup (void) @@ -137,35 +113,49 @@ g_mutex_free (control_mutex); } -static Tuple * get_song_tuple (const gchar * filename) +static void copy_string (SNDFILE * sf, gint sf_id, Tuple * tup, gint tup_id) +{ + const gchar * str = sf_get_string (sf, sf_id); + if (str) + tuple_set_str (tup, tup_id, NULL, str); +} + +static void copy_int (SNDFILE * sf, gint sf_id, Tuple * tup, gint tup_id) +{ + const gchar * str = sf_get_string (sf, sf_id); + if (str && atoi (str)) + tuple_set_int (tup, tup_id, NULL, atoi (str)); +} + +static Tuple * get_song_tuple (const gchar * filename, VFSFile * file) { - VFSFile *vfsfile = NULL; SNDFILE *sndfile; SF_INFO sfinfo; - gboolean lossy = FALSE; gchar *codec, *format, *subformat; Tuple * ti; - sndfile = open_sndfile_from_uri(filename, &vfsfile, &sfinfo); + sndfile = sf_open_virtual (& sf_virtual_io, SFM_READ, & sfinfo, file); if (sndfile == NULL) return NULL; ti = tuple_new_from_filename (filename); - if (sf_get_string(sndfile, SF_STR_TITLE) != NULL) - tuple_associate_string(ti, FIELD_TITLE, NULL, sf_get_string(sndfile, SF_STR_TITLE)); - - tuple_associate_string(ti, FIELD_ARTIST, NULL, sf_get_string(sndfile, SF_STR_ARTIST)); - tuple_associate_string(ti, FIELD_COMMENT, NULL, sf_get_string(sndfile, SF_STR_COMMENT)); - tuple_associate_string(ti, FIELD_DATE, NULL, sf_get_string(sndfile, SF_STR_DATE)); - tuple_associate_string(ti, -1, "software", sf_get_string(sndfile, SF_STR_SOFTWARE)); + /* I have no idea version of sndfile ALBUM, GENRE, and TRACKNUMBER were + * added in. -jlindgren */ + copy_string (sndfile, SF_STR_TITLE, ti, FIELD_TITLE); + copy_string (sndfile, SF_STR_ARTIST, ti, FIELD_ARTIST); +/* copy_string (sndfile, SF_STR_ALBUM, ti, FIELD_ALBUM); */ + copy_string (sndfile, SF_STR_COMMENT, ti, FIELD_COMMENT); +/* copy_string (sndfile, SF_STR_GENRE, ti, FIELD_GENRE); */ + copy_int (sndfile, SF_STR_DATE, ti, FIELD_YEAR); +/* copy_int (sndfile, SF_STR_TRACKNUMBER, ti, FIELD_TRACK_NUMBER); */ - close_sndfile (sndfile, vfsfile); + sf_close (sndfile); if (sfinfo.samplerate > 0) { - tuple_associate_int(ti, FIELD_LENGTH, NULL, + tuple_set_int(ti, FIELD_LENGTH, NULL, (gint) ceil (1000.0 * sfinfo.frames / sfinfo.samplerate)); } @@ -261,55 +251,42 @@ break; case SF_FORMAT_ULAW: subformat = "U-Law"; - lossy = TRUE; break; case SF_FORMAT_ALAW: subformat = "A-Law"; - lossy = TRUE; break; case SF_FORMAT_IMA_ADPCM: subformat = "IMA ADPCM"; - lossy = TRUE; break; case SF_FORMAT_MS_ADPCM: subformat = "MS ADPCM"; - lossy = TRUE; break; case SF_FORMAT_GSM610: subformat = "GSM 6.10"; - lossy = TRUE; break; case SF_FORMAT_VOX_ADPCM: subformat = "Oki Dialogic ADPCM"; - lossy = TRUE; break; case SF_FORMAT_G721_32: subformat = "32kbs G721 ADPCM"; - lossy = TRUE; break; case SF_FORMAT_G723_24: subformat = "24kbs G723 ADPCM"; - lossy = TRUE; break; case SF_FORMAT_G723_40: subformat = "40kbs G723 ADPCM"; - lossy = TRUE; break; case SF_FORMAT_DWVW_12: subformat = "12 bit Delta Width Variable Word"; - lossy = TRUE; break; case SF_FORMAT_DWVW_16: subformat = "16 bit Delta Width Variable Word"; - lossy = TRUE; break; case SF_FORMAT_DWVW_24: subformat = "24 bit Delta Width Variable Word"; - lossy = TRUE; break; case SF_FORMAT_DWVW_N: subformat = "N bit Delta Width Variable Word"; - lossy = TRUE; break; case SF_FORMAT_DPCM_8: subformat = "8 bit differential PCM"; @@ -326,34 +303,12 @@ else codec = g_strdup_printf("%s", format); - tuple_associate_string(ti, FIELD_CODEC, NULL, codec); - g_free(codec); - - tuple_associate_string(ti, FIELD_QUALITY, NULL, lossy ? "lossy" : "lossless"); + tuple_set_format (ti, codec, sfinfo.channels, sfinfo.samplerate, 0); + g_free (codec); return ti; } -static gint -is_our_file (const gchar *filename) -{ - VFSFile *vfsfile = NULL; - SNDFILE *tmp_sndfile; - SF_INFO tmp_sfinfo; - - /* Have to open the file to see if libsndfile can handle it. */ - tmp_sndfile = open_sndfile_from_uri(filename, &vfsfile, &tmp_sfinfo); - - if (!tmp_sndfile) - return FALSE; - - /* It can so close file and return TRUE. */ - close_sndfile (tmp_sndfile, vfsfile); - tmp_sndfile = NULL; - - return TRUE; -} - static gboolean play_start (InputPlayback * playback, const gchar * filename, VFSFile * file, gint start_time, gint stop_time, gboolean pause) { @@ -376,25 +331,21 @@ /* Fix me! Find out bitrate from libsndfile. The old calculation was based * on the decoded data and therefore wrong for anything but floating-point * files. */ - playback->set_params (playback, NULL, 0, 0, sfinfo.samplerate, - sfinfo.channels); + playback->set_params (playback, 0, sfinfo.samplerate, sfinfo.channels); - playback->playing = TRUE; - pause_flag = pause; seek_value = (start_time > 0) ? start_time : -1; + stop_flag = FALSE; playback->set_pb_ready(playback); gint size = sfinfo.channels * (sfinfo.samplerate / 50); gfloat * buffer = g_malloc (sizeof (gfloat) * size); - gboolean paused = FALSE, stopped = FALSE; while (stop_time < 0 || playback->output->written_time () < stop_time) { g_mutex_lock (control_mutex); - if (! playback->playing) + if (stop_flag) { - stopped = TRUE; g_mutex_unlock (control_mutex); break; } @@ -408,27 +359,6 @@ g_cond_signal (control_cond); } - if (pause_flag) - { - if (! paused) - { - playback->output->pause (TRUE); - paused = TRUE; - g_cond_signal (control_cond); - } - - g_cond_wait (control_cond, control_mutex); - g_mutex_unlock (control_mutex); - continue; - } - - if (paused) - { - playback->output->pause (FALSE); - paused = FALSE; - g_cond_signal (control_cond); - } - g_mutex_unlock (control_mutex); gint samples = sf_read_float (sndfile, buffer, size); @@ -442,7 +372,7 @@ sf_close (sndfile); g_free (buffer); - if (! stopped) + if (! stop_flag) { while (playback->output->buffer_playing ()) g_usleep (20000); @@ -451,58 +381,50 @@ playback->output->close_audio(); g_mutex_lock (control_mutex); - playback->playing = FALSE; + stop_flag = TRUE; g_cond_signal (control_cond); /* wake up any waiting request */ g_mutex_unlock (control_mutex); return TRUE; } -static void play_pause (InputPlayback * playback, gshort pause) +static void play_pause (InputPlayback * p, gboolean pause) { g_mutex_lock (control_mutex); - if (! playback->playing) - { - g_mutex_unlock (control_mutex); - return; - } + if (! stop_flag) + p->output->pause (pause); - pause_flag = pause; - g_cond_signal (control_cond); - g_cond_wait (control_cond, control_mutex); g_mutex_unlock (control_mutex); } -static void play_stop (InputPlayback * playback) +static void play_stop (InputPlayback * p) { g_mutex_lock (control_mutex); - if (! playback->playing) + if (! stop_flag) { - g_mutex_unlock (control_mutex); - return; + stop_flag = TRUE; + p->output->abort_write (); + g_cond_signal (control_cond); + g_cond_wait (control_cond, control_mutex); } - playback->playing = FALSE; - g_cond_signal (control_cond); - g_cond_wait (control_cond, control_mutex); g_mutex_unlock (control_mutex); } -static void file_mseek (InputPlayback * playback, gulong time) +static void file_mseek (InputPlayback * p, gint time) { g_mutex_lock (control_mutex); - if (! playback->playing) + if (! stop_flag) { - g_mutex_unlock (control_mutex); - return; + seek_value = time; + p->output->abort_write(); + g_cond_signal (control_cond); + g_cond_wait (control_cond, control_mutex); } - seek_value = time; - g_cond_signal (control_cond); - g_cond_wait (control_cond, control_mutex); g_mutex_unlock (control_mutex); } @@ -532,7 +454,7 @@ audgui_simple_message (& aboutbox, GTK_MESSAGE_INFO, _("About sndfile plugin"), - _("Adapted for Audacious usage by Tony Vroon \n" + "Adapted for Audacious usage by Tony Vroon \n" "from the xmms_sndfile plugin which is:\n" "Copyright (C) 2000, 2002 Erik de Castro Lopo\n\n" "This program is free software ; you can redistribute it and/or modify \n" @@ -547,27 +469,22 @@ "License along with this program ; if not, write to \n" "the Free Software Foundation, Inc., \n" "51 Franklin Street, Fifth Floor, \n" - "Boston, MA 02110-1301 USA")); + "Boston, MA 02110-1301 USA"); } - static const gchar *sndfile_fmts[] = { "aiff", "au", "raw", "wav", NULL }; -static InputPlugin sndfile_ip = { - .description = "sndfile plugin", +AUD_INPUT_PLUGIN +( + .name = "libsndfile Support", .init = plugin_init, .about = plugin_about, - .is_our_file = is_our_file, .play = play_start, .stop = play_stop, .pause = play_pause, .cleanup = plugin_cleanup, - .get_song_tuple = get_song_tuple, + .probe_for_tuple = get_song_tuple, .is_our_file_from_vfs = is_our_file_from_vfs, - .vfs_extensions = sndfile_fmts, + .extensions = sndfile_fmts, .mseek = file_mseek, -}; - -static InputPlugin *sndfile_iplist[] = { &sndfile_ip, NULL }; - -SIMPLE_INPUT_PLUGIN(sndfile, sndfile_iplist) +) diff -Nru audacious-plugins-2.4.4/src/sndstretch/Makefile audacious-plugins-3.2/src/sndstretch/Makefile --- audacious-plugins-2.4.4/src/sndstretch/Makefile 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/sndstretch/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -9,5 +9,5 @@ plugindir := ${plugindir}/${EFFECT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${MOWGLI_CFLAGS} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${MOWGLI_LIBS} -lm +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. +LIBS += ${GTK_LIBS} ${GLIB_LIBS} -lm diff -Nru audacious-plugins-2.4.4/src/sndstretch/sndstretch.c audacious-plugins-3.2/src/sndstretch/sndstretch.c --- audacious-plugins-2.4.4/src/sndstretch/sndstretch.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/sndstretch/sndstretch.c 2012-01-20 19:48:30.000000000 +0000 @@ -178,7 +178,7 @@ /*void ringget ( s16 * ringbuff, int ring_size, int pos, s16 *buffer, int size ) { int i; - + if( pos+size > ring_size ){ for( i=pos; i 1.0 ) scaling_first=0; else scaling_first=1; - + if ( !is_init || initialize || speed!=speed_act || pitch!=pitch_act || fade_shift!=fade_shift_act ){ if( !is_init || initialize ) init_me=1; else init_me=0; - + #ifdef DEBUG fprintf(stderr,"snd_stretch_scale - init - pitch:%f, speed:%f\n",pitch,speed); #endif - + speed_act = speed; pitch_act = pitch; fade_shift_act = fade_shift; @@ -815,7 +815,7 @@ // if (buff_help!=0) free(buff_help); if (initialize != -1){ - + dsnr = fade_shift; // dsnr = 1764; // 25Hz // dsnr = 1536; // 30Hz @@ -877,7 +877,7 @@ ring_pos_w = (ring_pos_w+(channels-1))/channels*channels; ring_size_old = ring_size; - + is_init = 1; } else { /* initialize == -1 */ @@ -886,9 +886,9 @@ /* buffers are released -> leave the function */ return 0; /* !!! sloppy */ } - + } - + if ( fabs(speed_eff-1.0)>0.001 ){ /* 0.001 ?! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -925,20 +925,20 @@ } if( 0/*scaling_first*/ ){ - + snr_proc_scale = snr_proc; sndscale ( buff_i, snr_scale_i, snr_scale_o, channels, buff_help, &snr_prod, snr_proc_scale, init_me ); /* buff_o, &snr_prod, snr_proc_scale, 0 ); */ - + if( speed_eff!=1.0 ){ /* add echo only when really stretching */ ringload_IIR_1_div_e_echo_i( ring_buff, ring_size, ring_pos_w, buff_help, snr_prod, dsnr*channels ); } else { ringload( ring_buff, ring_size, ring_pos_w, buff_help, snr_prod ); } ring_pos_w = ringpos( ring_pos_w+snr_prod, ring_size ); - + snr_proc_stretch = snr_prod; sndstretch ( ring_buff, ring_size, ring_pos_r, snr_stretch_i*channels, snr_stretch_o*channels, channels, @@ -957,12 +957,12 @@ ringload( ring_buff, ring_size, ring_pos_w, buff_i, snr_proc ); } ring_pos_w = ringpos( ring_pos_w+snr_proc, ring_size ); - + snr_proc_stretch = snr_proc; sndstretch ( ring_buff, ring_size, ring_pos_r, snr_stretch_i*channels, snr_stretch_o*channels, channels, buff_help, &snr_prod, snr_proc_stretch, init_me ); - + ring_pos_r = ringpos( ring_pos_r+snr_prod, ring_size ); snr_proc_scale = snr_prod; @@ -972,9 +972,9 @@ buff_o, &snr_prod, snr_proc_scale, init_me ); } - + *snr_produced = snr_prod; - + return snr_prod; } @@ -1035,34 +1035,36 @@ #define speed_act job->speed_act #define pitch_act job->pitch_act #define fade_shift_act job->fade_shift_act - + speed_eff = speed/pitch; pitch_eff = pitch; scaling_first=0; // if( pitch > 1.0 ) scaling_first=0; else scaling_first=1; - + if ( !is_init || initialize || speed!=speed_act || pitch!=pitch_act || fade_shift != fade_shift_act ){ if( !is_init || initialize ) init_me=1; else init_me=0; - + #ifdef DEBUG fprintf(stderr,"snd_stretch_scale - init - pitch:%f, speed:%f\n",pitch,speed); #endif - + speed_act = speed; pitch_act = pitch; +#ifdef DEBUG if ( fade_shift != fade_shift_act ){ fprintf(stderr,"changed fade_shift_act\n"); } +#endif fade_shift_act = fade_shift; // if (ring_buff!=0) free(ring_buff); // if (buff_help!=0) free(buff_help); if (initialize != -1){ - + dsnr = fade_shift; // dsnr = 1764; // 25Hz // dsnr = 1536; // 30Hz @@ -1124,7 +1126,7 @@ ring_pos_w = (ring_pos_w+(channels-1))/channels*channels; ring_size_old = ring_size; - + is_init = 1; } else { /* initialize == -1 */ @@ -1133,9 +1135,9 @@ /* buffers are released -> leave the function */ return 0; /* !!! sloppy */ } - + } - + if ( fabs(speed_eff-1.0)>0.001 ){ /* 0.001 ?! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -1172,14 +1174,14 @@ } if( 0/*scaling_first*/ ){ - + snr_proc_scale = snr_proc; sndscale_job ( buff_i, snr_scale_i, snr_scale_o, channels, buff_help, &snr_prod, snr_proc_scale, init_me, &(job->scale_job) ); /* buff_o, &snr_prod, snr_proc_scale, 0 ); */ - + if( speed_eff!=1.0 ){ /* add echo only when really stretching */ if( !vol_corr ){ ringload_IIR_1_div_e_echo_i( ring_buff, ring_size, ring_pos_w, buff_help, snr_prod, dsnr*channels ); @@ -1190,7 +1192,7 @@ ringload( ring_buff, ring_size, ring_pos_w, buff_help, snr_prod ); } ring_pos_w = ringpos( ring_pos_w+snr_prod, ring_size ); - + snr_proc_stretch = snr_prod; sndstretch_job ( ring_buff, ring_size, ring_pos_r, snr_stretch_i*channels, snr_stretch_o*channels, channels, @@ -1215,14 +1217,14 @@ ringload( ring_buff, ring_size, ring_pos_w, buff_i, snr_proc ); } ring_pos_w = ringpos( ring_pos_w+snr_proc, ring_size ); - + snr_proc_stretch = snr_proc; sndstretch_job ( ring_buff, ring_size, ring_pos_r, snr_stretch_i*channels, snr_stretch_o*channels, channels, buff_help, &snr_prod, snr_proc_stretch, init_me, &(job->stretch_job) ); - + ring_pos_r = ringpos( ring_pos_r+snr_prod, ring_size ); snr_proc_scale = snr_prod; @@ -1234,9 +1236,9 @@ ); } - + *snr_produced = snr_prod; - + return snr_prod; #undef ring_buff #undef ring_buff_old diff -Nru audacious-plugins-2.4.4/src/sndstretch/sndstretch_xmms.c audacious-plugins-3.2/src/sndstretch/sndstretch_xmms.c --- audacious-plugins-2.4.4/src/sndstretch/sndstretch_xmms.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/sndstretch/sndstretch_xmms.c 2012-01-20 19:48:30.000000000 +0000 @@ -5,7 +5,7 @@ // Copyright (C) 2001 Florian Berger // Email: florian.berger@jk.uni-linz.ac.at // -// Ported to new Audacious effect API by John Lindgren, 2009 +// Copyright (C) 2009-2011 John Lindgren // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License Version 2 as @@ -33,14 +33,15 @@ #include #include -#include +#include #include +#include #include #include #define SNDSTRETCH_VERSION_STRING "0.7" -void sndstretch_init (void); +gboolean sndstretch_init (void); void sndstretch_about (void); void sndstretch_config (void); @@ -51,8 +52,9 @@ static gint sndstretch_decoder_to_output_time (gint time); static gint sndstretch_output_to_decoder_time (gint time); -EffectPlugin sndstretch_ep = { - .description = "SndStretch", +AUD_EFFECT_PLUGIN +( + .name = "SndStretch", .init = sndstretch_init, .about = sndstretch_about, .configure = sndstretch_config, @@ -63,11 +65,7 @@ .decoder_to_output_time = sndstretch_decoder_to_output_time, .output_to_decoder_time = sndstretch_output_to_decoder_time, .preserves_format = TRUE, -}; - -EffectPlugin *sndstretch_eplist[] = { &sndstretch_ep, NULL }; - -DECLARE_PLUGIN(sndstretch, NULL, NULL, NULL, NULL, sndstretch_eplist, NULL, NULL, NULL); +) struct sndstretch_settings { @@ -88,9 +86,7 @@ double scale; int short_overlap; int volume_corr; - GtkObject * pitch_adj; - GtkObject * speed_adj; - GtkObject * scale_adj; + GtkAdjustment * pitch_adj, * speed_adj, * scale_adj; }; static struct sndstretch_settings SS; @@ -140,14 +136,6 @@ GtkWidget * text; GtkTextBuffer * textbuffer; GtkTextIter iter; - - GdkPixmap * logopix; - GdkBitmap * logomask; - GtkWidget * logo; - - GdkPixmap * FBlogopix; - GdkBitmap * FBlogomask; - GtkWidget * FBlogo; GtkWidget * copyhbox, * copy_rbox, * copy_lbox; @@ -157,21 +145,13 @@ sndstretch_about_dialog = gtk_dialog_new(); gtk_widget_show(sndstretch_about_dialog); - /* title logo */ - logopix = gdk_pixmap_create_from_xpm_d(sndstretch_about_dialog->window, &logomask, - NULL, - (gchar **) sndstretch_xmms_logo_xpm); - logo = gtk_pixmap_new(logopix,logomask); - - /* FB-logo */ - FBlogopix = gdk_pixmap_create_from_xpm_d(sndstretch_about_dialog->window, &FBlogomask, - NULL, - (gchar **) FB_logo_xpm); - FBlogo = gtk_pixmap_new(FBlogopix,FBlogomask); - + GtkWidget * logo = gtk_image_new_from_pixbuf (gdk_pixbuf_new_from_xpm_data + ((const gchar * *) sndstretch_xmms_logo_xpm)); + GtkWidget * FBlogo = gtk_image_new_from_pixbuf (gdk_pixbuf_new_from_xpm_data + ((const gchar * *) FB_logo_xpm)); - gtk_signal_connect(GTK_OBJECT(sndstretch_about_dialog), "destroy", - GTK_SIGNAL_FUNC(sndstretch_about_destroy_cb), NULL); + g_signal_connect (sndstretch_about_dialog, "destroy", (GCallback) + sndstretch_about_destroy_cb, NULL); gtk_window_set_title(GTK_WINDOW(sndstretch_about_dialog), _("About SndStretch")); @@ -189,8 +169,8 @@ gtk_box_pack_start(GTK_BOX(copyhbox), copy_rbox, TRUE, TRUE, 5); vbox = gtk_vbox_new(FALSE, 5); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(sndstretch_about_dialog)->vbox), vbox, - TRUE, TRUE, 5); + gtk_box_pack_start ((GtkBox *) gtk_dialog_get_content_area ((GtkDialog *) + sndstretch_about_dialog), vbox, TRUE, TRUE, 5); scrolltext = gtk_scrolled_window_new(NULL,NULL); text = gtk_text_view_new(); @@ -213,14 +193,13 @@ gtk_box_pack_start(GTK_BOX(vbox), copyhbox, FALSE, TRUE, 5); gtk_box_pack_start(GTK_BOX(vbox), scrolltext, TRUE, TRUE, 5); gtk_container_set_border_width(GTK_CONTAINER(vbox), 8); - gtk_widget_set_usize(scrolltext, -1, 110); button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(sndstretch_about_dialog)->action_area), - button, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - GTK_SIGNAL_FUNC(sndstretch_about_ok_cb), NULL); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_box_pack_start ((GtkBox *) gtk_dialog_get_action_area ((GtkDialog *) + sndstretch_about_dialog), button, FALSE, FALSE, 0); + g_signal_connect (button, "clicked", (GCallback) sndstretch_about_ok_cb, + NULL); + gtk_widget_set_can_default (button, TRUE); gtk_widget_grab_default(button); gtk_widget_show(button); gtk_widget_show_all(sndstretch_about_dialog); @@ -230,30 +209,34 @@ static void speed_change_cb(GtkAdjustment * adj, gpointer data) { - SS.speed = pow(2.0, GTK_ADJUSTMENT(adj)->value / (GTK_ADJUSTMENT(adj)->upper-10)); + SS.speed = pow (2, gtk_adjustment_get_value (adj) / + (gtk_adjustment_get_upper (adj) - 10)); } static void pitch_change_cb(GtkAdjustment * adj, gpointer data) { - SS.pitch = pow(2.0, GTK_ADJUSTMENT(adj)->value / (GTK_ADJUSTMENT(adj)->upper-10)); - gtk_adjustment_set_value(GTK_ADJUSTMENT(SS.scale_adj), - (GTK_ADJUSTMENT(SS.scale_adj)->upper-10.0)*log(SS.pitch)/log(2.0)); + SS.pitch = pow (2, gtk_adjustment_get_value (adj) / + (gtk_adjustment_get_upper (adj) - 10)); + gtk_adjustment_set_value (SS.scale_adj, (gtk_adjustment_get_upper + (SS.scale_adj) - 10) * log (SS.pitch) / log (2)); } static void scale_change_cb(GtkAdjustment * adj, gpointer data) { double speed_eff; - SS.scale = pow(2.0, GTK_ADJUSTMENT(adj)->value / (GTK_ADJUSTMENT(adj)->upper-10)); + SS.scale = pow (2, gtk_adjustment_get_value (adj) / + (gtk_adjustment_get_upper (adj) - 10)); speed_eff= SS.speed/SS.pitch; SS.pitch = SS.scale; SS.speed = speed_eff*SS.scale; if (SS.speed>2.0) SS.speed=2.0; if (SS.speed<0.5) SS.speed=0.5; - gtk_adjustment_set_value(GTK_ADJUSTMENT(SS.speed_adj), - (GTK_ADJUSTMENT(SS.speed_adj)->upper-10.0)*log(SS.speed)/log(2.0)); - gtk_adjustment_set_value(GTK_ADJUSTMENT(SS.pitch_adj), - (GTK_ADJUSTMENT(SS.pitch_adj)->upper-10.0)*log(SS.pitch)/log(2.0)); + + gtk_adjustment_set_value (SS.speed_adj, (gtk_adjustment_get_upper + (SS.speed_adj) - 10) * log (SS.speed) / log (2)); + gtk_adjustment_set_value (SS.pitch_adj, (gtk_adjustment_get_upper + (SS.pitch_adj) - 10) * log (SS.pitch) / log (2)); } static void overlap_toggle_cb(GtkToggleButton *butt, gpointer user_data) @@ -273,15 +256,10 @@ static gint sndstretch_config_destroy_cb(GtkWidget * w, GdkEventAny * e, gpointer data) { - mcs_handle_t *db = aud_cfg_db_open(); - - aud_cfg_db_set_double(db, "sndstretch", "pitch", SS.pitch); - aud_cfg_db_set_double(db, "sndstretch", "speed", SS.speed); - - aud_cfg_db_set_bool(db, "sndstretch", "short_overlap", SS.short_overlap); - aud_cfg_db_set_bool(db, "sndstretch", "volume_corr", SS.volume_corr); - - aud_cfg_db_close(db); + aud_set_double ("sndstretch", "pitch", SS.pitch); + aud_set_double ("sndstretch", "speed", SS.speed); + aud_set_bool ("sndstretch", "short_overlap", SS.short_overlap); + aud_set_bool ("sndstretch", "volume_corr", SS.volume_corr); gtk_widget_destroy(sndstretch_config_dialog); sndstretch_config_dialog = NULL; @@ -295,9 +273,6 @@ GtkWidget * speed_spin, * pitch_spin, * scale_spin; GtkWidget * speed_hbox, * pitch_hbox, * scale_hbox, * opt_hbox; GtkWidget * speed_frame, * pitch_frame, * scale_frame, * opt_frame; - GdkPixmap * logopix; - GdkBitmap * logomask; - GtkWidget * logo; GtkWidget * logohbox; GtkWidget * logobutton; GtkWidget * volume_toggle; @@ -310,49 +285,41 @@ gtk_window_set_type_hint(GTK_WINDOW(sndstretch_config_dialog), GDK_WINDOW_TYPE_HINT_DIALOG); gtk_widget_show(sndstretch_config_dialog); - logopix = gdk_pixmap_create_from_xpm_d(sndstretch_config_dialog->window, &logomask, - NULL, (gchar **)sndstretch_xmms_logo_xpm); - - logo = gtk_pixmap_new(logopix,logomask); + GtkWidget * logo = gtk_image_new_from_pixbuf (gdk_pixbuf_new_from_xpm_data + ((const gchar * *) sndstretch_xmms_logo_xpm)); logobutton = gtk_button_new(); gtk_button_set_relief(GTK_BUTTON(logobutton), GTK_RELIEF_NONE); gtk_container_add(GTK_CONTAINER(logobutton), logo); - gtk_signal_connect(GTK_OBJECT(logobutton), "clicked", - GTK_SIGNAL_FUNC(sndstretch_config_logobutton_cb), NULL); - GTK_WIDGET_SET_FLAGS(logobutton, GTK_CAN_DEFAULT); - gtk_widget_grab_default(logobutton); + g_signal_connect (logobutton, "clicked", (GCallback) + sndstretch_config_logobutton_cb, NULL); + gtk_widget_set_can_default (logobutton, TRUE); logohbox = gtk_hbox_new(FALSE,0); // to make it rightbound gtk_box_pack_end(GTK_BOX(logohbox), logobutton, FALSE, TRUE, 4); - SS.speed_adj = gtk_adjustment_new( 100.0*log(SS.speed)/log(2.0), - -100, 100+10, 2, 10, 10); - SS.pitch_adj = gtk_adjustment_new( 120.0*log(SS.pitch)/log(2.0), - -120, 120+10, 2, 10, 10); - SS.scale_adj = gtk_adjustment_new( 100.0*log(SS.scale)/log(2.0), - -100, 100+10, 2, 10, 10); + SS.speed_adj = (GtkAdjustment *) gtk_adjustment_new (100 * log (SS.speed) / + log (2), -100, 100 + 10, 2, 10, 0); + SS.pitch_adj = (GtkAdjustment *) gtk_adjustment_new (120 * log (SS.pitch) / + log (2), -120, 120 + 10, 2, 10, 0); + SS.scale_adj = (GtkAdjustment *) gtk_adjustment_new (100 * log (SS.scale) / + log (2), -100, 100 + 10, 2, 10, 0); volume_toggle = gtk_check_button_new_with_label(_("Volume corr.")); overlap_toggle = gtk_check_button_new_with_label(_("Short Overlap")); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(volume_toggle), SS.volume_corr ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(overlap_toggle), SS.short_overlap ); - - gtk_signal_connect(GTK_OBJECT(SS.speed_adj), "value-changed", - GTK_SIGNAL_FUNC(speed_change_cb), NULL); - - gtk_signal_connect(GTK_OBJECT(SS.pitch_adj), "value-changed", - GTK_SIGNAL_FUNC(pitch_change_cb), NULL); - - gtk_signal_connect(GTK_OBJECT(SS.scale_adj), "value-changed", - GTK_SIGNAL_FUNC(scale_change_cb), NULL); - - gtk_signal_connect(GTK_OBJECT(volume_toggle), "toggled", - GTK_SIGNAL_FUNC(volume_toggle_cb), NULL); - - gtk_signal_connect(GTK_OBJECT(overlap_toggle), "toggled", - GTK_SIGNAL_FUNC(overlap_toggle_cb), NULL); + g_signal_connect (SS.speed_adj, "value-changed", (GCallback) + speed_change_cb, NULL); + g_signal_connect (SS.pitch_adj, "value-changed", (GCallback) + pitch_change_cb, NULL); + g_signal_connect (SS.scale_adj, "value-changed", (GCallback) + scale_change_cb, NULL); + g_signal_connect (volume_toggle, "toggled", (GCallback) volume_toggle_cb, + NULL); + g_signal_connect (overlap_toggle, "toggled", (GCallback) overlap_toggle_cb, + NULL); speed_scale = gtk_hscale_new(GTK_ADJUSTMENT(SS.speed_adj)); pitch_scale = gtk_hscale_new(GTK_ADJUSTMENT(SS.pitch_adj)); @@ -364,9 +331,6 @@ speed_spin = gtk_spin_button_new(GTK_ADJUSTMENT(SS.speed_adj),1.0,2); pitch_spin = gtk_spin_button_new(GTK_ADJUSTMENT(SS.pitch_adj),1.0,2); scale_spin = gtk_spin_button_new(GTK_ADJUSTMENT(SS.scale_adj),1.0,2); - gtk_widget_set_usize (speed_spin,70,20); - gtk_widget_set_usize (pitch_spin,70,20); - gtk_widget_set_usize (scale_spin,70,20); gtk_entry_set_max_length (GTK_ENTRY(pitch_spin),7); gtk_entry_set_max_length (GTK_ENTRY(speed_spin),7); gtk_entry_set_max_length (GTK_ENTRY(scale_spin),7); @@ -408,22 +372,24 @@ gtk_box_pack_start(GTK_BOX(vbox), opt_frame, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), logohbox, FALSE, TRUE, 0); - gtk_signal_connect(GTK_OBJECT(sndstretch_config_dialog), "destroy", - GTK_SIGNAL_FUNC(sndstretch_config_destroy_cb), NULL); + g_signal_connect (sndstretch_config_dialog, "destroy", (GCallback) + sndstretch_config_destroy_cb, NULL); gtk_window_set_title(GTK_WINDOW(sndstretch_config_dialog), _("SndStretch - Configuration")); gtk_container_add(GTK_CONTAINER(sndstretch_config_dialog), vbox); - gtk_widget_set_usize(sndstretch_config_dialog, -1, -1); + gtk_widget_grab_default(logobutton); gtk_widget_show_all(sndstretch_config_dialog); } +static const gchar * const sndstretch_defaults[] = { + "pitch", "1", + "speed", "1", + "short_overlap", "FALSE", + "volume_corr", "FALSE", + NULL}; -void sndstretch_init(void) +gboolean sndstretch_init (void) { - mcs_handle_t *db; - - db = aud_cfg_db_open(); - SS.fragsize=0; SS.chnr=2; SS.paused=0; @@ -435,18 +401,16 @@ SS.bpsec=176400; SS.vol_r=50; SS.vol_l=50; - SS.pitch=1.0; - SS.speed=1.0; SS.scale=1.0; - gboolean b; - aud_cfg_db_get_double(db, "sndstretch", "pitch", &SS.pitch); - aud_cfg_db_get_double(db, "sndstretch", "speed", &SS.speed); - if (aud_cfg_db_get_bool(db, "sndstretch", "short_overlap", &b)) - SS.short_overlap = b; - if (aud_cfg_db_get_bool(db, "sndstretch", "volume_corr", &b)) - SS.volume_corr = b; - aud_cfg_db_close(db); + aud_config_set_defaults ("sndstretch", sndstretch_defaults); + + SS.pitch = aud_get_double ("sndstretch", "pitch"); + SS.speed = aud_get_double ("sndstretch", "speed"); + SS.short_overlap = aud_get_bool ("sndstretch", "short_overlap"); + SS.volume_corr = aud_get_bool ("sndstretch", "volume_corr"); + + return TRUE; } static gboolean initted = FALSE; diff -Nru audacious-plugins-2.4.4/src/song_change/formatter.c audacious-plugins-3.2/src/song_change/formatter.c --- audacious-plugins-2.4.4/src/song_change/formatter.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/song_change/formatter.c 2012-01-20 19:48:30.000000000 +0000 @@ -22,8 +22,6 @@ * Audacious or using our public API to be a derived work. */ -#include "config.h" - #include #include #include "formatter.h" diff -Nru audacious-plugins-2.4.4/src/song_change/Makefile audacious-plugins-3.2/src/song_change/Makefile --- audacious-plugins-2.4.4/src/song_change/Makefile 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/song_change/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -8,5 +8,5 @@ plugindir := ${plugindir}/${GENERAL_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${BEEP_DEFINES} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. +LIBS += ${GTK_LIBS} ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/song_change/song_change.c audacious-plugins-3.2/src/song_change/song_change.c --- audacious-plugins-2.4.4/src/song_change/song_change.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/song_change/song_change.c 2012-01-20 19:48:30.000000000 +0000 @@ -15,19 +15,21 @@ #include -#include +#include #include #include #include #include +#include #include #include +#include #include "formatter.h" static PluginPreferences preferences; -static void init(void); +static gboolean init (void); static void cleanup(void); static void songchange_playback_begin(gpointer unused, gpointer unused2); static void songchange_playback_end(gpointer unused, gpointer unused2); @@ -36,8 +38,8 @@ typedef struct { - gchar *title; - gchar *filename; + gchar *title; + gchar *filename; } songchange_playback_ttc_prevs_t; static songchange_playback_ttc_prevs_t *ttc_prevs = NULL; @@ -49,35 +51,64 @@ static GtkWidget *cmd_warn_label, *cmd_warn_img; -GeneralPlugin sc_gp = +AUD_GENERAL_PLUGIN +( + .name = "Song Change", + .init = init, + .cleanup = cleanup, + .settings = &preferences, +) + +/** + * Escapes characters that are special to the shell inside double quotes. + * + * @param string String to be escaped. + * @return Given string with special characters escaped. Must be freed with g_free(). + */ +static gchar *escape_shell_chars(const gchar * string) { - .description = "Song Change " PACKAGE_VERSION, - .init = init, - .cleanup = cleanup, - .settings = &preferences, -}; + const gchar *special = "$`\"\\"; /* Characters to escape */ + const gchar *in = string; + gchar *out, *escaped; + gint num = 0; + + while (*in != '\0') + if (strchr(special, *in++)) + num++; + + escaped = g_malloc(strlen(string) + num + 1); + + in = string; + out = escaped; + + while (*in != '\0') { + if (strchr(special, *in)) + *out++ = '\\'; + *out++ = *in++; + } + *out = '\0'; -GeneralPlugin *songchange_gplist[] = { &sc_gp, NULL }; -SIMPLE_GENERAL_PLUGIN(songchange, songchange_gplist); + return escaped; +} static void bury_child(int signal) { - waitpid(-1, NULL, WNOHANG); + waitpid(-1, NULL, WNOHANG); } static void execute_command(char *cmd) { - char *argv[4] = {"/bin/sh", "-c", NULL, NULL}; - int i; - argv[2] = cmd; - signal(SIGCHLD, bury_child); - if (fork() == 0) - { - /* We don't want this process to hog the audio device etc */ - for (i = 3; i < 255; i++) - close(i); - execv("/bin/sh", argv); - } + char *argv[4] = {"/bin/sh", "-c", NULL, NULL}; + int i; + argv[2] = cmd; + signal(SIGCHLD, bury_child); + if (fork() == 0) + { + /* We don't want this process to hog the audio device etc */ + for (i = 3; i < 255; i++) + close(i); + execv("/bin/sh", argv); + } } /* Format codes: @@ -91,276 +122,279 @@ * s - name (since everyone's used to it) * t - playlist position (%02d) * p - currently playing (1 or 0) + * a - artist + * b - album + * r - track title */ /* do_command(): do @cmd after replacing the format codes - @cmd: command to run - @current_file: file name of current song - @pos: playlist_pos */ -static void -do_command(char *cmd, const char *current_file, int pos) -{ - int length; - char *str, *shstring = NULL, *temp, numbuf[32]; - gboolean playing; - Formatter *formatter; - - if (cmd && strlen(cmd) > 0) - { - formatter = formatter_new(); - str = aud_drct_pl_get_title(pos); - if (str) - { - temp = escape_shell_chars(str); - formatter_associate(formatter, 's', temp); - formatter_associate(formatter, 'n', temp); - g_free(str); - g_free(temp); - } - else - { - formatter_associate(formatter, 's', ""); - formatter_associate(formatter, 'n', ""); - } - - if (current_file) - { - temp = escape_shell_chars(current_file); - formatter_associate(formatter, 'f', temp); - g_free(temp); - } - else - formatter_associate(formatter, 'f', ""); - g_snprintf(numbuf, sizeof(numbuf), "%02d", pos + 1); - formatter_associate(formatter, 't', numbuf); - length = aud_drct_pl_get_time(pos); - if (length != -1) - { - g_snprintf(numbuf, sizeof(numbuf), "%d", length); - formatter_associate(formatter, 'l', numbuf); - } - else - formatter_associate(formatter, 'l', "0"); - - playing = aud_drct_get_playing(); - g_snprintf(numbuf, sizeof(numbuf), "%d", playing); - formatter_associate(formatter, 'p', numbuf); - - if (playing) - { - int brate, srate, chans; - aud_drct_get_info (& brate, & srate, & chans); - snprintf (numbuf, sizeof numbuf, "%d", brate); - formatter_associate (formatter, 'r', numbuf); - snprintf (numbuf, sizeof numbuf, "%d", srate); - formatter_associate (formatter, 'F', numbuf); - snprintf (numbuf, sizeof numbuf, "%d", chans); - formatter_associate (formatter, 'c', numbuf); - } - - shstring = formatter_format(formatter, cmd); - formatter_destroy(formatter); - - if (shstring) - { - execute_command(shstring); - /* FIXME: This can possibly be freed too early */ - g_free(shstring); - } - } + @cmd: command to run */ +static void do_command (char * cmd) +{ + int playlist = aud_playlist_get_playing (); + int pos = aud_playlist_get_position (playlist); + + char *shstring = NULL, *temp, numbuf[32]; + gboolean playing; + Formatter *formatter; + + if (cmd && strlen(cmd) > 0) + { + formatter = formatter_new(); + + char * ctitle = aud_playlist_entry_get_title (playlist, pos, FALSE); + if (ctitle) + { + temp = escape_shell_chars (ctitle); + formatter_associate(formatter, 's', temp); + formatter_associate(formatter, 'n', temp); + g_free(temp); + str_unref (ctitle); + } + else + { + formatter_associate(formatter, 's', ""); + formatter_associate(formatter, 'n', ""); + } + + char * filename = aud_playlist_entry_get_filename (playlist, pos); + if (filename) + { + temp = escape_shell_chars (filename); + formatter_associate(formatter, 'f', temp); + g_free(temp); + str_unref (filename); + } + else + formatter_associate(formatter, 'f', ""); + + g_snprintf(numbuf, sizeof(numbuf), "%02d", pos + 1); + formatter_associate(formatter, 't', numbuf); + + int length = aud_playlist_entry_get_length (playlist, pos, FALSE); + if (length > 0) + { + g_snprintf(numbuf, sizeof(numbuf), "%d", length); + formatter_associate(formatter, 'l', numbuf); + } + else + formatter_associate(formatter, 'l', "0"); + + playing = aud_drct_get_playing(); + g_snprintf(numbuf, sizeof(numbuf), "%d", playing); + formatter_associate(formatter, 'p', numbuf); + + if (playing) + { + int brate, srate, chans; + aud_drct_get_info (& brate, & srate, & chans); + snprintf (numbuf, sizeof numbuf, "%d", brate); + formatter_associate (formatter, 'r', numbuf); + snprintf (numbuf, sizeof numbuf, "%d", srate); + formatter_associate (formatter, 'F', numbuf); + snprintf (numbuf, sizeof numbuf, "%d", chans); + formatter_associate (formatter, 'c', numbuf); + } + + Tuple * tuple = aud_playlist_entry_get_tuple + (aud_playlist_get_active (), pos, 0); + + char * artist = tuple ? tuple_get_str (tuple, FIELD_ARTIST, NULL) : NULL; + if (artist) + { + formatter_associate(formatter, 'a', artist); + str_unref(artist); + } + else + formatter_associate(formatter, 'a', ""); + + char * album = tuple ? tuple_get_str (tuple, FIELD_ALBUM, NULL) : NULL; + if (album) + { + formatter_associate(formatter, 'b', album); + str_unref(album); + } + else + formatter_associate(formatter, 'b', ""); + + char * title = tuple ? tuple_get_str (tuple, FIELD_TITLE, NULL) : NULL; + if (title) + { + formatter_associate(formatter, 'T', title); + str_unref(title); + } + else + formatter_associate(formatter, 'T', ""); + + if (tuple) + tuple_unref (tuple); + + shstring = formatter_format(formatter, cmd); + formatter_destroy(formatter); + + if (shstring) + { + execute_command(shstring); + /* FIXME: This can possibly be freed too early */ + g_free(shstring); + } + } } static void read_config(void) { - mcs_handle_t *db; - - db = aud_cfg_db_open(); - if ( !aud_cfg_db_get_string(db, "song_change", "cmd_line", &cmd_line) ) - cmd_line = g_strdup(""); - if ( !aud_cfg_db_get_string(db, "song_change", "cmd_line_after", &cmd_line_after) ) - cmd_line_after = g_strdup(""); - if ( !aud_cfg_db_get_string(db, "song_change", "cmd_line_end", &cmd_line_end) ) - cmd_line_end = g_strdup(""); - if ( !aud_cfg_db_get_string(db, "song_change", "cmd_line_ttc", &cmd_line_ttc) ) - cmd_line_ttc = g_strdup(""); - aud_cfg_db_close(db); + cmd_line = aud_get_string("song_change", "cmd_line"); + cmd_line_after = aud_get_string("song_change", "cmd_line_after"); + cmd_line_end = aud_get_string("song_change", "cmd_line_end"); + cmd_line_ttc = aud_get_string("song_change", "cmd_line_ttc"); } static void cleanup(void) { - hook_dissociate("playback begin", songchange_playback_begin); - hook_dissociate("playback end", songchange_playback_end); - hook_dissociate("playlist end reached", songchange_playlist_eof); -// hook_dissociate( "playlist set info" , songchange_playback_ttc); - - if ( ttc_prevs != NULL ) - { - if ( ttc_prevs->title != NULL ) g_free( ttc_prevs->title ); - if ( ttc_prevs->filename != NULL ) g_free( ttc_prevs->filename ); - g_free( ttc_prevs ); - ttc_prevs = NULL; - } - - g_free(cmd_line); - g_free(cmd_line_after); - g_free(cmd_line_end); - g_free(cmd_line_ttc); - cmd_line = NULL; - cmd_line_after = NULL; - cmd_line_end = NULL; - cmd_line_ttc = NULL; - signal(SIGCHLD, SIG_DFL); + hook_dissociate("playback begin", songchange_playback_begin); + hook_dissociate("playback end", songchange_playback_end); + hook_dissociate("playlist end reached", songchange_playlist_eof); + // hook_dissociate( "playlist set info" , songchange_playback_ttc); + + if ( ttc_prevs != NULL ) + { + if ( ttc_prevs->title != NULL ) g_free( ttc_prevs->title ); + if ( ttc_prevs->filename != NULL ) g_free( ttc_prevs->filename ); + g_free( ttc_prevs ); + ttc_prevs = NULL; + } + + g_free(cmd_line); + g_free(cmd_line_after); + g_free(cmd_line_end); + g_free(cmd_line_ttc); + cmd_line = NULL; + cmd_line_after = NULL; + cmd_line_end = NULL; + cmd_line_ttc = NULL; + signal(SIGCHLD, SIG_DFL); } static void save_and_close(gchar * cmd, gchar * cmd_after, gchar * cmd_end, gchar * cmd_ttc) { - mcs_handle_t *db; - - db = aud_cfg_db_open(); - aud_cfg_db_set_string(db, "song_change", "cmd_line", cmd); - aud_cfg_db_set_string(db, "song_change", "cmd_line_after", cmd_after); - aud_cfg_db_set_string(db, "song_change", "cmd_line_end", cmd_end); - aud_cfg_db_set_string(db, "song_change", "cmd_line_ttc", cmd_ttc); - aud_cfg_db_close(db); + aud_set_string("song_change", "cmd_line", cmd); + aud_set_string("song_change", "cmd_line_after", cmd_after); + aud_set_string("song_change", "cmd_line_end", cmd_end); + aud_set_string("song_change", "cmd_line_ttc", cmd_ttc); - if (cmd_line != NULL) - g_free(cmd_line); + if (cmd_line != NULL) + g_free(cmd_line); - cmd_line = g_strdup(cmd); + cmd_line = g_strdup(cmd); - if (cmd_line_after != NULL) - g_free(cmd_line_after); + if (cmd_line_after != NULL) + g_free(cmd_line_after); - cmd_line_after = g_strdup(cmd_after); + cmd_line_after = g_strdup(cmd_after); - if (cmd_line_end != NULL) - g_free(cmd_line_end); + if (cmd_line_end != NULL) + g_free(cmd_line_end); - cmd_line_end = g_strdup(cmd_end); + cmd_line_end = g_strdup(cmd_end); - if (cmd_line_ttc != NULL) - g_free(cmd_line_ttc); + if (cmd_line_ttc != NULL) + g_free(cmd_line_ttc); - cmd_line_ttc = g_strdup(cmd_ttc); + cmd_line_ttc = g_strdup(cmd_ttc); } static int check_command(char *command) { - const char *dangerous = "fns"; - char *c; - int qu = 0; + const char *dangerous = "fns"; + char *c; + int qu = 0; - for (c = command; *c != '\0'; c++) - { - if (*c == '"' && (c == command || *(c - 1) != '\\')) - qu = !qu; - else if (*c == '%' && !qu && strchr(dangerous, *(c + 1))) - return -1; - } - return 0; + for (c = command; *c != '\0'; c++) + { + if (*c == '"' && (c == command || *(c - 1) != '\\')) + qu = !qu; + else if (*c == '%' && !qu && strchr(dangerous, *(c + 1))) + return -1; + } + return 0; } -static void init(void) +static gboolean init (void) { - read_config(); + read_config(); - hook_associate("playback begin", songchange_playback_begin, NULL); - hook_associate("playback end", songchange_playback_end, NULL); - hook_associate("playlist end reached", songchange_playlist_eof, NULL); + hook_associate("playback begin", songchange_playback_begin, NULL); + hook_associate("playback end", songchange_playback_end, NULL); + hook_associate("playlist end reached", songchange_playlist_eof, NULL); - ttc_prevs = g_malloc0(sizeof(songchange_playback_ttc_prevs_t)); - ttc_prevs->title = NULL; - ttc_prevs->filename = NULL; -// hook_associate( "playlist set info" , songchange_playback_ttc , ttc_prevs ); + ttc_prevs = g_malloc0(sizeof(songchange_playback_ttc_prevs_t)); + ttc_prevs->title = NULL; + ttc_prevs->filename = NULL; + // hook_associate( "playlist set info" , songchange_playback_ttc , ttc_prevs ); + + return TRUE; } -static void -songchange_playback_begin(gpointer unused, gpointer unused2) +static void songchange_playback_begin(gpointer unused, gpointer unused2) { - int pos; - char *current_file; - - pos = aud_drct_pl_get_pos(); - current_file = aud_drct_pl_get_file(pos); - - do_command(cmd_line, current_file, pos); - - g_free(current_file); + do_command (cmd_line); } -static void -songchange_playback_end(gpointer unused, gpointer unused2) +static void songchange_playback_end(gpointer unused, gpointer unused2) { - int pos; - char *current_file; - - pos = aud_drct_pl_get_pos(); - current_file = aud_drct_pl_get_file(pos); - - do_command(cmd_line_after, current_file, pos); - - g_free(current_file); + do_command (cmd_line_after); } #if 0 -static void + static void songchange_playback_ttc(gpointer plentry_gp, gpointer prevs_gp) { - if ( ( aud_ip_state->playing ) && ( strcmp(cmd_line_ttc,"") ) ) - { - songchange_playback_ttc_prevs_t *prevs = prevs_gp; - PlaylistEntry *pl_entry = plentry_gp; + if ( ( aud_ip_state->playing ) && ( strcmp(cmd_line_ttc,"") ) ) + { + songchange_playback_ttc_prevs_t *prevs = prevs_gp; + PlaylistEntry *pl_entry = plentry_gp; - /* same filename but title changed, useful to detect http stream song changes */ + /* same filename but title changed, useful to detect http stream song changes */ - if ( ( prevs->title != NULL ) && ( prevs->filename != NULL ) ) - { - if ( ( pl_entry->filename != NULL ) && ( !strcmp(pl_entry->filename,prevs->filename) ) ) - { - if ( ( pl_entry->title != NULL ) && ( strcmp(pl_entry->title,prevs->title) ) ) - { - int pos = aud_drct_pl_get_pos(); - char *current_file = aud_drct_pl_get_file(pos); - do_command(cmd_line_ttc, current_file, pos); - g_free(current_file); - g_free(prevs->title); - prevs->title = g_strdup(pl_entry->title); - } - } - else - { - g_free(prevs->filename); - prevs->filename = g_strdup(pl_entry->filename); - /* if filename changes, reset title as well */ - if ( prevs->title != NULL ) - g_free(prevs->title); - prevs->title = g_strdup(pl_entry->title); - } - } - else - { - if ( prevs->title != NULL ) - g_free(prevs->title); - prevs->title = g_strdup(pl_entry->title); - if ( prevs->filename != NULL ) - g_free(prevs->filename); - prevs->filename = g_strdup(pl_entry->filename); + if ( ( prevs->title != NULL ) && ( prevs->filename != NULL ) ) + { + if ( ( pl_entry->filename != NULL ) && ( !strcmp(pl_entry->filename,prevs->filename) ) ) + { + if ( ( pl_entry->title != NULL ) && ( strcmp(pl_entry->title,prevs->title) ) ) + { + int pos = aud_drct_pl_get_pos(); + char *current_file = aud_drct_pl_get_file(pos); + do_command(cmd_line_ttc, current_file, pos); + g_free(current_file); + g_free(prevs->title); + prevs->title = g_strdup(pl_entry->title); + } + } + else + { + g_free(prevs->filename); + prevs->filename = g_strdup(pl_entry->filename); + /* if filename changes, reset title as well */ + if ( prevs->title != NULL ) + g_free(prevs->title); + prevs->title = g_strdup(pl_entry->title); + } + } + else + { + if ( prevs->title != NULL ) + g_free(prevs->title); + prevs->title = g_strdup(pl_entry->title); + if ( prevs->filename != NULL ) + g_free(prevs->filename); + prevs->filename = g_strdup(pl_entry->filename); + } } - } } #endif -static void -songchange_playlist_eof(gpointer unused, gpointer unused2) +static void songchange_playlist_eof(gpointer unused, gpointer unused2) { - gint pos; - gchar *current_file; - - pos = aud_drct_pl_get_pos(); - current_file = aud_drct_pl_get_file(pos); - - do_command(cmd_line_end, current_file, pos); - - g_free(current_file); + do_command (cmd_line_end); } typedef struct { @@ -374,59 +408,70 @@ static void configure_ok_cb() { - char *cmd, *cmd_after, *cmd_end, *cmd_ttc; - cmd = g_strdup(config.cmd); - cmd_after = g_strdup(config.cmd_after); - cmd_end = g_strdup(config.cmd_end); - cmd_ttc = g_strdup(config.cmd_ttc); - - if (check_command(cmd) < 0 || check_command(cmd_after) < 0 || - check_command(cmd_end) < 0 || check_command(cmd_ttc) < 0) - { - gtk_widget_show(cmd_warn_img); - gtk_widget_show(cmd_warn_label); - } - else - { - gtk_widget_hide(cmd_warn_img); - gtk_widget_hide(cmd_warn_label); - save_and_close(cmd, cmd_after, cmd_end, cmd_ttc); - } - - g_free(cmd); - g_free(cmd_after); - g_free(cmd_end); - g_free(cmd_ttc); + char *cmd, *cmd_after, *cmd_end, *cmd_ttc; + cmd = g_strdup(config.cmd); + cmd_after = g_strdup(config.cmd_after); + cmd_end = g_strdup(config.cmd_end); + cmd_ttc = g_strdup(config.cmd_ttc); + + if (check_command(cmd) < 0 || check_command(cmd_after) < 0 || + check_command(cmd_end) < 0 || check_command(cmd_ttc) < 0) + { + gtk_widget_show(cmd_warn_img); + gtk_widget_show(cmd_warn_label); + } + else + { + gtk_widget_hide(cmd_warn_img); + gtk_widget_hide(cmd_warn_label); + save_and_close(cmd, cmd_after, cmd_end, cmd_ttc); + } + + g_free(cmd); + g_free(cmd_after); + g_free(cmd_end); + g_free(cmd_ttc); } static PreferencesWidget elements[] = { - {WIDGET_LABEL, N_("Command to run when Audacious starts a new song."), NULL, NULL, NULL, FALSE, {.label = {.single_line = TRUE}}}, - {WIDGET_ENTRY, N_("Command:"), &config.cmd, configure_ok_cb, NULL, FALSE, {.entry = {FALSE}}, VALUE_STRING}, - {WIDGET_SEPARATOR, NULL, NULL, NULL, NULL, FALSE, {.separator = {TRUE}}}, - - {WIDGET_LABEL, N_("Command to run toward the end of a song."), NULL, NULL, NULL, FALSE, {.label = {.single_line = TRUE}}}, - {WIDGET_ENTRY, N_("Command:"), &config.cmd_after, configure_ok_cb, NULL, FALSE, {.entry = {FALSE}}, VALUE_STRING}, - {WIDGET_SEPARATOR, NULL, NULL, NULL, NULL, FALSE, {.separator = {TRUE}}}, - - {WIDGET_LABEL, N_("Command to run when Audacious reaches the end of the playlist."), NULL, NULL, NULL, FALSE, {.label = {.single_line = TRUE}}}, - {WIDGET_ENTRY, N_("Command:"), &config.cmd_end, configure_ok_cb, NULL, FALSE, {.entry = {FALSE}}, VALUE_STRING}, - {WIDGET_SEPARATOR, NULL, NULL, NULL, NULL, FALSE, {.separator = {TRUE}}}, - - {WIDGET_LABEL, N_("Command to run when title changes for a song (i.e. network streams titles)."), NULL, NULL, NULL, FALSE, {.label = {.single_line = TRUE}}}, - {WIDGET_ENTRY, N_("Command:"), &config.cmd_ttc, configure_ok_cb, NULL, FALSE, {.entry = {FALSE}}, VALUE_STRING}, - {WIDGET_SEPARATOR, NULL, NULL, NULL, NULL, FALSE, {.separator = {TRUE}}}, + {WIDGET_LABEL, N_("Command to run when Audacious starts a new song."), + .data = {.label = {.single_line = TRUE}}}, + {WIDGET_ENTRY, N_("Command:"), .cfg_type = VALUE_STRING, + .cfg = & config.cmd, .callback = configure_ok_cb}, + {WIDGET_SEPARATOR, .data = {.separator = {TRUE}}}, + + {WIDGET_LABEL, N_("Command to run toward the end of a song."), + .data = {.label = {.single_line = TRUE}}}, + {WIDGET_ENTRY, N_("Command:"), .cfg_type = VALUE_STRING, + .cfg = & config.cmd_after, .callback = configure_ok_cb}, + {WIDGET_SEPARATOR, .data = {.separator = {TRUE}}}, + + {WIDGET_LABEL, N_("Command to run when Audacious reaches the end of the " + "playlist."), .data = {.label = {.single_line = TRUE}}}, + {WIDGET_ENTRY, N_("Command:"), .cfg_type = VALUE_STRING, + .cfg = & config.cmd_end, .callback = configure_ok_cb}, + {WIDGET_SEPARATOR, .data = {.separator = {TRUE}}}, + + {WIDGET_LABEL, N_("Command to run when title changes for a song (i.e. " + "network streams titles)."), .data = {.label = {.single_line = TRUE}}}, + {WIDGET_ENTRY, N_("Command:"), .cfg_type = VALUE_STRING, + .cfg = & config.cmd_ttc, .callback = configure_ok_cb}, + {WIDGET_SEPARATOR, .data = {.separator = {TRUE}}}, {WIDGET_LABEL, N_("You can use the following format strings which\n" - "will be substituted before calling the command\n" - "(not all are useful for the end-of-playlist command).\n\n" - "%F: Frequency (in hertz)\n" - "%c: Number of channels\n" - "%f: filename (full path)\n" - "%l: length (in milliseconds)\n" - "%n or %s: Song name\n" - "%r: Rate (in bits per second)\n" - "%t: Playlist position (%02d)\n" - "%p: Currently playing (1 or 0)"), NULL, NULL, NULL, FALSE}, + "will be substituted before calling the command\n" + "(not all are useful for the end-of-playlist command).\n\n" + "%F: Frequency (in hertz)\n" + "%c: Number of channels\n" + "%f: filename (full path)\n" + "%l: length (in milliseconds)\n" + "%n or %s: Song name\n" + "%r: Rate (in bits per second)\n" + "%t: Playlist position (%02d)\n" + "%p: Currently playing (1 or 0)\n" + "%a: Artist\n" + "%b: Album\n" + "%T: Track title")}, }; /* static GtkWidget * custom_warning (void) */ @@ -451,16 +496,10 @@ } static PreferencesWidget settings[] = { - {WIDGET_BOX, N_("Commands"), NULL, NULL, NULL, FALSE, - {.box = {elements, G_N_ELEMENTS(elements), - FALSE, TRUE}}}, - {WIDGET_CUSTOM, NULL, NULL, NULL, NULL, FALSE, {.populate = custom_warning}}, -/* {WIDGET_LABEL, N_("Parameters passed to the shell should be encapsulated in quotes. Doing otherwise is a security risk."), - NULL, NULL, NULL, FALSE, {.label = {"gtk-dialog-warning"}}},*/ -}; + {WIDGET_BOX, N_("Commands"), .data = {.box = {elements, G_N_ELEMENTS (elements), .frame = TRUE}}}, + {WIDGET_CUSTOM, .data = {.populate = custom_warning}}}; -static void -configure_init(void) +static void configure_init(void) { read_config(); @@ -470,8 +509,7 @@ config.cmd_ttc = g_strdup(cmd_line_ttc); } -static void -configure_cleanup(void) +static void configure_cleanup(void) { g_free(config.cmd); config.cmd = NULL; @@ -487,8 +525,9 @@ } static PluginPreferences preferences = { + .domain = PACKAGE, .title = N_("Song Change"), - .imgurl = DATA_DIR "/images/plugins.png", + /* .imgurl = DATA_DIR "/images/plugins.png", */ .prefs = settings, .n_prefs = G_N_ELEMENTS(settings), .init = configure_init, diff -Nru audacious-plugins-2.4.4/src/spectrum/logo.xpm audacious-plugins-3.2/src/spectrum/logo.xpm --- audacious-plugins-2.4.4/src/spectrum/logo.xpm 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/spectrum/logo.xpm 1970-01-01 00:00:00.000000000 +0000 @@ -1,123 +0,0 @@ -/* XPM */ -static char * logo_xpm[] = { -"275 116 4 1", -" c #F9E0D7", -". c #F0B19B", -"+ c #EA9172", -"@ c #E16236", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", -" ........................++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"}; diff -Nru audacious-plugins-2.4.4/src/spectrum/Makefile audacious-plugins-3.2/src/spectrum/Makefile --- audacious-plugins-2.4.4/src/spectrum/Makefile 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/spectrum/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -PLUGIN = spectrum${PLUGIN_SUFFIX} - -SRCS = spectrum.c - -include ../../buildsys.mk -include ../../extra.mk - -plugindir := ${plugindir}/${VISUALIZATION_PLUGIN_DIR} - -CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} -lm diff -Nru audacious-plugins-2.4.4/src/spectrum/spectrum.c audacious-plugins-3.2/src/spectrum/spectrum.c --- audacious-plugins-2.4.4/src/spectrum/spectrum.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/spectrum/spectrum.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,222 +0,0 @@ -/* Spectrum Analyzer Visualization Plugin for Audacious - * - * Copyright (C) 2006 William Pitcock - * Copyright (C) 1998-2001 V�gv�lgyi Attila, Peter Alm, Mikael Alm, - * Olle Hallnas, Thomas Nilsson and 4Front Technologies - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "config.h" - -#include -#include -#include -#include - -#include "logo.xpm" - -/* WIDTH should be kept 256, this is the hardwired resolution of the - spectrum given by XMMS */ -#define WIDTH 256 - -/* HEIGHT can be modified at your pleasure */ -#define HEIGHT 128 - -/* Linearity of the amplitude scale (0.5 for linear, keep in [0.1, 0.9]) */ -#define d 0.33 - -/* Time factor of the band dinamics. 3 means that the coefficient of the - last value is half of the current one's. (see source) */ -#define tau 3 - -/* Factor used for the diffusion. 4 means that half of the height is - added to the neighbouring bars */ -#define dif 4 - -static GtkWidget *window = NULL,*area; -static GdkPixmap *bg_pixmap = NULL, *draw_pixmap = NULL, *bar = NULL; -static GdkGC *gc = NULL; -static gint16 bar_heights[WIDTH]; -/*static gint timeout_tag;*/ -static gdouble scale, x00, y00; - -static void fsanalyzer_init(void); -static void fsanalyzer_cleanup(void); -static void fsanalyzer_playback_start(void); -static void fsanalyzer_playback_stop(void); -static void fsanalyzer_render_freq(gint16 data[2][256]); - -VisPlugin fsanalyzer_vp = { - .description = "Spectrum Analyzer", - .num_pcm_chs_wanted = 0, - .num_freq_chs_wanted = 1, - .init = fsanalyzer_init, /* init */ - .cleanup = fsanalyzer_cleanup, /* cleanup */ - .playback_start = fsanalyzer_playback_start, /* playback_start */ - .playback_stop = fsanalyzer_playback_stop, /* playback_stop */ - .render_freq = fsanalyzer_render_freq /* render_freq */ -}; - -VisPlugin *spectrum_vplist[] = { &fsanalyzer_vp, NULL }; - -DECLARE_PLUGIN(spectrum, NULL, NULL, NULL, NULL, NULL, NULL, spectrum_vplist,NULL); - -static void fsanalyzer_destroy_cb(GtkWidget *w,gpointer data) { - fsanalyzer_vp.disable_plugin(&fsanalyzer_vp); -} - -static void fsanalyzer_init(void) { - GdkColor color; - int i; - - if(window) - return; - - window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(window), _("Spectrum Analyzer")); - gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE); - gtk_widget_realize(window); - bg_pixmap = gdk_pixmap_create_from_xpm_d(window->window,NULL,NULL,logo_xpm); - gdk_window_set_back_pixmap(window->window,bg_pixmap,0); - g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(fsanalyzer_destroy_cb),NULL); - g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_widget_destroyed), &window); - gtk_widget_set_size_request(GTK_WIDGET(window), WIDTH, HEIGHT); - gc = gdk_gc_new(window->window); - draw_pixmap = gdk_pixmap_new(window->window,WIDTH,HEIGHT,gdk_rgb_get_visual()->depth); - - bar = gdk_pixmap_new(window->window,25, HEIGHT, gdk_rgb_get_visual()->depth); - for(i = 0; i < HEIGHT / 2; i++) { - color.red = 0xFFFF; - color.green = ((i * 255) / (HEIGHT / 2)) << 8; - color.blue = 0; - - gdk_color_alloc(gdk_colormap_get_system(),&color); - gdk_gc_set_foreground(gc,&color); - gdk_draw_line(bar,gc,0,i,24,i); - } - for(i = 0; i < HEIGHT / 2; i++) { - color.red = (255 - ((i * 255) / (HEIGHT / 2))) <<8; - color.green = 0xFFFF; - color.blue = 0; - - gdk_color_alloc(gdk_colormap_get_system(),&color); - gdk_gc_set_foreground(gc,&color); - gdk_draw_line(bar,gc,0,i + (HEIGHT / 2),24,i + (HEIGHT / 2)); - } - - scale = HEIGHT / ( log((1 - d) / d) * 2 ); - x00 = d*d*32768.0/(2 * d - 1); - y00 = -log(-x00) * scale; - -/* d=0.2, HEIGHT=128 - scale = 46.1662413084; - x00 = -2184.53333333; - y00 = -354.979500941; -*/ - - gdk_color_black(gdk_colormap_get_system(),&color); - gdk_gc_set_foreground(gc,&color); - - area = gtk_drawing_area_new(); - gtk_container_add(GTK_CONTAINER(window),area); - gtk_widget_realize(area); - gdk_window_set_back_pixmap(area->window,bg_pixmap,0); - - gtk_widget_show(area); - gtk_widget_show(window); - gdk_window_clear(window->window); - gdk_window_clear(area->window); -} - -static void fsanalyzer_cleanup(void) { - if(window) { - gtk_widget_destroy(window); - } - if(gc) { - gdk_gc_unref(gc); - gc = NULL; - } - if(bg_pixmap) { - gdk_pixmap_unref(bg_pixmap); - bg_pixmap = NULL; - } - if(draw_pixmap) { - gdk_pixmap_unref(draw_pixmap); - draw_pixmap = NULL; - } - if(bar) { - gdk_pixmap_unref(bar); - bar = NULL; - } -} - -static gint draw_func(gpointer data) { - gint i; - - /* FIXME: should allow spare redrawing like the vis. in the main window */ - if(!window) { -/* timeout_tag = 0;*/ - return FALSE; - } - - GDK_THREADS_ENTER(); - gdk_draw_rectangle(draw_pixmap, gc, TRUE, 0, 0, WIDTH, HEIGHT); - - for(i = 0; i < WIDTH; i++) - gdk_draw_pixmap(draw_pixmap, gc, bar, 0, HEIGHT-1-bar_heights[i], i, HEIGHT-1-bar_heights[i], 1, bar_heights[i]); - - gdk_window_clear(area->window); - GDK_THREADS_LEAVE(); - - return TRUE; -} - -static void fsanalyzer_playback_start(void) { - if(window) { - gdk_window_set_back_pixmap(area->window,draw_pixmap,0); - gdk_window_clear(area->window); - } -} - - -static void fsanalyzer_playback_stop(void) { - if(GTK_WIDGET_REALIZED(area)) { - gdk_window_set_back_pixmap(area->window,bg_pixmap,0); - gdk_window_clear(area->window); - } -} - -static void fsanalyzer_render_freq(gint16 data[2][256]) { - gint i; - gdouble y; - - if(!window) - return; - - /* FIXME: can anything taken out of the main thread? */ - for (i = 0; i < WIDTH; i++) { - y = (gdouble)data[0][i] * (i + 1); /* Compensating the energy */ - y = ( log(y - x00) * scale + y00 ); /* Logarithmic amplitude */ - - y = ( (dif-2)*y + /* FIXME: conditionals should be rolled out of the loop */ - (i==0 ? y : bar_heights[i-1]) + - (i==WIDTH-1 ? y : bar_heights[i+1])) / dif; /* Add some diffusion */ - y = ((tau-1)*bar_heights[i] + y) / tau; /* Add some dynamics */ - bar_heights[i] = (gint16)y; - } - draw_func(NULL); - return; -} diff -Nru audacious-plugins-2.4.4/src/statusicon/config.c audacious-plugins-3.2/src/statusicon/config.c --- audacious-plugins-2.4.4/src/statusicon/config.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/statusicon/config.c 2012-01-20 19:48:30.000000000 +0000 @@ -20,34 +20,38 @@ * */ -#include +#include #include "statusicon.h" +static const gchar * const si_defaults[] = { + "rclick_menu", "0", /* SI_CFG_RCLICK_MENU_SMALL1 */ + "scroll_action", "0", /* SI_CFG_SCROLL_ACTION_VOLUME */ + "volume_delta", "5", + "disable_popup", "FALSE", + "close_to_tray", "FALSE", + "reverse_scroll", "FALSE", + NULL}; + si_cfg_t si_cfg; -void si_cfg_load(void) +void si_cfg_load (void) { - mcs_handle_t *cfgfile = aud_cfg_db_open(); - - if (!aud_cfg_db_get_int(cfgfile, "statusicon", "rclick_menu", &(si_cfg.rclick_menu))) - si_cfg.rclick_menu = SI_CFG_RCLICK_MENU_SMALL1; - - if (!aud_cfg_db_get_int(cfgfile, "statusicon", "scroll_action", &(si_cfg.scroll_action))) - si_cfg.scroll_action = SI_CFG_SCROLL_ACTION_VOLUME; + aud_config_set_defaults ("statusicon", si_defaults); - if (!aud_cfg_db_get_int(cfgfile, "audacious", "mouse_wheel_change", &(si_cfg.volume_delta))) - si_cfg.volume_delta = 5; - - aud_cfg_db_close(cfgfile); + si_cfg.rclick_menu = aud_get_int ("statusicon", "rclick_menu"); + si_cfg.scroll_action = aud_get_int ("statusicon", "scroll_action"); + si_cfg.volume_delta = aud_get_int ("statusicon", "volume_delta"); + si_cfg.disable_popup = aud_get_bool ("statusicon", "disable_popup"); + si_cfg.close_to_tray = aud_get_bool ("statusicon", "close_to_tray"); } -void si_cfg_save(void) +void si_cfg_save (void) { - mcs_handle_t *cfgfile = aud_cfg_db_open(); - - aud_cfg_db_set_int(cfgfile, "statusicon", "rclick_menu", si_cfg.rclick_menu); - aud_cfg_db_set_int(cfgfile, "statusicon", "scroll_action", si_cfg.scroll_action); - aud_cfg_db_close(cfgfile); + aud_set_int ("statusicon", "rclick_menu", si_cfg.rclick_menu); + aud_set_int ("statusicon", "scroll_action", si_cfg.scroll_action); + aud_set_int ("statusicon", "volume_delta", si_cfg.volume_delta); + aud_set_bool ("statusicon", "disable_popup", si_cfg.disable_popup); + aud_set_bool ("statusicon", "close_to_tray", si_cfg.close_to_tray); } diff -Nru audacious-plugins-2.4.4/src/statusicon/Makefile audacious-plugins-3.2/src/statusicon/Makefile --- audacious-plugins-2.4.4/src/statusicon/Makefile 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/statusicon/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -10,5 +10,5 @@ plugindir := ${plugindir}/${GENERAL_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${BEEP_DEFINES} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. LIBS += ${GTK_LIBS} ${GLIB_LIBS} -laudgui diff -Nru audacious-plugins-2.4.4/src/statusicon/statusicon.c audacious-plugins-3.2/src/statusicon/statusicon.c --- audacious-plugins-2.4.4/src/statusicon/statusicon.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/statusicon/statusicon.c 2012-01-20 19:48:30.000000000 +0000 @@ -24,6 +24,7 @@ #include #include +#include #include #include #include @@ -56,7 +57,12 @@ else if (gtk_icon_theme_has_icon(theme, "audacious")) icon = gtk_status_icon_new_from_icon_name("audacious"); else - icon = gtk_status_icon_new_from_file(DATA_DIR "/images/audacious_player.xpm"); + { + gchar * path = g_strdup_printf ("%s/images/audacious_player.xpm", + aud_get_path (AUD_PATH_DATA_DIR)); + icon = gtk_status_icon_new_from_file (path); + g_free (path); + } return icon; } @@ -73,7 +79,8 @@ if (event->state & GDK_SHIFT_MASK) aud_drct_pl_next(); else - hook_call ("interface toggle visibility", NULL); + aud_interface_show (! (aud_interface_is_shown () && + aud_interface_is_focused ())); break; } @@ -110,7 +117,7 @@ si_volume_change(si_cfg.volume_delta); break; case SI_CFG_SCROLL_ACTION_SKIP: - si_playback_skip(-1); + si_playback_skip (aud_get_bool ("statusicon", "reverse_scroll") ? 1 : -1); break; } break; @@ -124,7 +131,7 @@ si_volume_change(-si_cfg.volume_delta); break; case SI_CFG_SCROLL_ACTION_SKIP: - si_playback_skip(1); + si_playback_skip (aud_get_bool ("statusicon", "reverse_scroll") ? -1 : 1); break; } break; @@ -209,6 +216,9 @@ static gboolean si_cb_tooltip(GtkStatusIcon * icon, gint x, gint y, gboolean keyboard_mode, GtkTooltip * tooltip, gpointer user_data) { + if (si_cfg.disable_popup) + return FALSE; + if (!POPUP_IS_ACTIVE && !TIMER_IS_ACTIVE) si_popup_timer_start(icon); @@ -279,11 +289,22 @@ recreate_smallmenu = FALSE; } +static void si_window_close(gpointer data, gpointer user_data) +{ + gboolean *handle = (gboolean*) data; + + if (si_cfg.close_to_tray) + { + *handle = TRUE; + aud_interface_show (FALSE); + } +} + static void si_enable(gboolean enable) { static GtkStatusIcon *si_applet = NULL; - if (enable == TRUE && si_applet == NULL) + if (enable && ! si_applet) { GtkWidget *si_smenu; @@ -311,25 +332,28 @@ g_object_set_data(G_OBJECT(si_applet), "smenu", si_smenu); hook_associate("title change", si_popup_reshow, si_applet); + hook_associate("window close", si_window_close, NULL); } - else if (si_applet != NULL) + + if (! enable && si_applet) { GtkWidget *si_smenu = g_object_get_data(G_OBJECT(si_applet), "smenu"); si_popup_timer_stop(si_applet); /* just in case the timer is active */ - si_smenu = NULL; + gtk_widget_destroy(si_smenu); g_object_unref(si_applet); si_applet = NULL; hook_dissociate("title change", si_popup_reshow); + hook_dissociate("window close", si_window_close); } } -void si_init(void) +static gboolean si_init (void) { plugin_active = TRUE; si_cfg_load(); si_enable(TRUE); - return; + return TRUE; } void si_cleanup(void) @@ -360,6 +384,9 @@ "the system tray area of the window manager.\n")); } +static GtkWidget *prefs_disable_popup_chkbtn; +static GtkWidget *prefs_close_to_tray_chkbtn; +static GtkWidget * reverse_scroll_toggle; void si_prefs_cb_commit(gpointer prefs_win) { @@ -385,6 +412,11 @@ list = g_slist_next(list); } + si_cfg.disable_popup = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs_disable_popup_chkbtn)); + si_cfg.close_to_tray = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs_close_to_tray_chkbtn)); + aud_set_bool ("statusicon", "reverse_scroll", gtk_toggle_button_get_active + ((GtkToggleButton *) reverse_scroll_toggle)); + si_cfg_save(); /* request the recreation of status icon small-menu if necessary */ @@ -401,6 +433,7 @@ GtkWidget *prefs_rclick_frame, *prefs_rclick_vbox; GtkWidget *prefs_rclick_smallmenu1_rbt, *prefs_rclick_smallmenu2_rbt; GtkWidget *prefs_scroll_frame, *prefs_scroll_vbox; + GtkWidget *prefs_other_frame, *prefs_other_vbox; GtkWidget *prefs_scroll_vol_rbt, *prefs_scroll_skip_rbt; GtkWidget *prefs_bbar_bbox; GtkWidget *prefs_bbar_bt_ok, *prefs_bbar_bt_cancel; @@ -458,14 +491,43 @@ prefs_scroll_skip_rbt = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(prefs_scroll_vol_rbt), _("Change playing song")); g_object_set_data(G_OBJECT(prefs_scroll_skip_rbt), "val", GINT_TO_POINTER(SI_CFG_SCROLL_ACTION_SKIP)); g_object_set_data(G_OBJECT(prefs_win), "msa_grp", gtk_radio_button_get_group(GTK_RADIO_BUTTON(prefs_scroll_skip_rbt))); + if (si_cfg.scroll_action == SI_CFG_SCROLL_ACTION_VOLUME) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(prefs_scroll_vol_rbt), TRUE); else gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(prefs_scroll_skip_rbt), TRUE); + gtk_box_pack_start(GTK_BOX(prefs_scroll_vbox), prefs_scroll_vol_rbt, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(prefs_scroll_vbox), prefs_scroll_skip_rbt, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(prefs_vbox), prefs_scroll_frame, TRUE, TRUE, 0); + prefs_other_frame = gtk_frame_new(_("Other settings")); + prefs_other_vbox = gtk_vbox_new(TRUE, 0); + gtk_container_set_border_width(GTK_CONTAINER(prefs_other_vbox), 6); + gtk_container_add(GTK_CONTAINER(prefs_other_frame), prefs_other_vbox); + + prefs_disable_popup_chkbtn = gtk_check_button_new_with_label(_("Disable the popup window")); + + if (si_cfg.disable_popup) + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(prefs_disable_popup_chkbtn), TRUE); + + gtk_box_pack_start(GTK_BOX(prefs_other_vbox), prefs_disable_popup_chkbtn, TRUE, TRUE, 0); + + prefs_close_to_tray_chkbtn = gtk_check_button_new_with_label(_("Close to the notification area (system tray)")); + + if (si_cfg.close_to_tray) + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(prefs_close_to_tray_chkbtn), TRUE); + + gtk_box_pack_start(GTK_BOX(prefs_other_vbox), prefs_close_to_tray_chkbtn, TRUE, TRUE, 0); + + reverse_scroll_toggle = gtk_check_button_new_with_label + (_("Advance in playlist when scrolling upward")); + gtk_toggle_button_set_active ((GtkToggleButton *) reverse_scroll_toggle, + aud_get_bool ("statusicon", "reverse_scroll")); + gtk_box_pack_start ((GtkBox *) prefs_other_vbox, reverse_scroll_toggle, TRUE, TRUE, 0); + + gtk_box_pack_start(GTK_BOX(prefs_vbox), prefs_other_frame, TRUE, TRUE, 0); + /* horizontal separator and buttons */ gtk_box_pack_start(GTK_BOX(prefs_vbox), gtk_hseparator_new(), FALSE, FALSE, 4); prefs_bbar_bbox = gtk_hbutton_box_new(); @@ -481,14 +543,11 @@ gtk_widget_show_all(prefs_win); } -static GeneralPlugin si_gp = { - .description = "Status Icon", +AUD_GENERAL_PLUGIN +( + .name = "Status Icon", .init = si_init, .cleanup = si_cleanup, .about = si_about, .configure = si_config -}; - -static GeneralPlugin *statusicon_gplist[] = { &si_gp, NULL }; - -SIMPLE_GENERAL_PLUGIN(statusicon, statusicon_gplist); +) diff -Nru audacious-plugins-2.4.4/src/statusicon/statusicon.h audacious-plugins-3.2/src/statusicon/statusicon.h --- audacious-plugins-2.4.4/src/statusicon/statusicon.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/statusicon/statusicon.h 2012-01-20 19:48:30.000000000 +0000 @@ -51,16 +51,12 @@ gint rclick_menu; gint scroll_action; gint volume_delta; + gboolean disable_popup; + gboolean close_to_tray; } si_cfg_t; extern si_cfg_t si_cfg; -/* statusicon.c */ -void si_init(void); -void si_cleanup(void); -void si_config(void); -void si_about(void); - /* util.c */ void si_volume_change(gint); void si_playback_skip(gint); diff -Nru audacious-plugins-2.4.4/src/stereo_plugin/Makefile audacious-plugins-3.2/src/stereo_plugin/Makefile --- audacious-plugins-2.4.4/src/stereo_plugin/Makefile 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/stereo_plugin/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -8,5 +8,5 @@ plugindir := ${plugindir}/${EFFECT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. +LIBS += ${GTK_LIBS} ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/stereo_plugin/stereo.c audacious-plugins-3.2/src/stereo_plugin/stereo.c --- audacious-plugins-2.4.4/src/stereo_plugin/stereo.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/stereo_plugin/stereo.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,17 +1,18 @@ /* Extra Stereo Plugin for Audacious * Written by Johan Levin, 1999 - * Ported to new effect API by John Lindgren, 2009 */ + * Modified by John Lindgren, 2009-2011 */ #include "config.h" #include -#include +#include #include +#include #include #include #include -static void init(void); +static gboolean init (void); static void about(void); static void configure(void); @@ -22,12 +23,12 @@ static gint stereo_decoder_to_output_time (gint time); static gint stereo_output_to_decoder_time (gint time); -EffectPlugin stereo_ep = -{ - .description = "Extra Stereo Plugin", /* Description */ - .init = init, - .about = about, - .configure = configure, +AUD_EFFECT_PLUGIN +( + .name = "Extra Stereo", + .init = init, + .about = about, + .configure = configure, .start = stereo_start, .process = stereo_process, .flush = stereo_flush, @@ -35,7 +36,11 @@ .decoder_to_output_time = stereo_decoder_to_output_time, .output_to_decoder_time = stereo_output_to_decoder_time, .preserves_format = TRUE, -}; +) + +static const gchar * const stereo_defaults[] = { + "intensity", "2.5", + NULL}; static const char *about_text = N_("Extra Stereo Plugin\n\n" "By Johan Levin 1999."); @@ -43,17 +48,12 @@ static GtkWidget *conf_dialog = NULL; static gdouble value; -EffectPlugin *stereo_eplist[] = { &stereo_ep, NULL }; - -DECLARE_PLUGIN(stereo, NULL, NULL, NULL, NULL, stereo_eplist, NULL, NULL, NULL); - -static void init(void) +static gboolean init (void) { - mcs_handle_t *db; - db = aud_cfg_db_open(); - if (!aud_cfg_db_get_double(db, "extra_stereo", "intensity", &value)) - value = 2.5; - aud_cfg_db_close(db); + aud_config_set_defaults ("extra_stereo", stereo_defaults); + value = aud_get_double ("extra_stereo", "intensity"); + + return TRUE; } static void about (void) @@ -64,15 +64,11 @@ _("About Extra Stereo Plugin"), _(about_text)); } -static void conf_ok_cb(GtkButton * button, gpointer data) +static void conf_ok_cb (GtkButton * button, GtkAdjustment * adj) { - mcs_handle_t *db; - - value = *(gdouble *) data; + value = gtk_adjustment_get_value (adj); + aud_set_double ("extra_stereo", "intensity", value); - db = aud_cfg_db_open(); - aud_cfg_db_set_double(db, "extra_stereo", "intensity", value); - aud_cfg_db_close(db); gtk_widget_destroy(conf_dialog); } @@ -81,67 +77,62 @@ gtk_widget_destroy(conf_dialog); } -static void conf_apply_cb(GtkButton *button, gpointer data) +static void conf_apply_cb (GtkButton * button, GtkAdjustment * adj) { - value = *(gdouble *) data; + value = gtk_adjustment_get_value (adj); } static void configure(void) { GtkWidget *hbox, *label, *scale, *button, *bbox; - GtkObject *adjustment; if (conf_dialog != NULL) return; conf_dialog = gtk_dialog_new(); - gtk_signal_connect(GTK_OBJECT(conf_dialog), "destroy", - GTK_SIGNAL_FUNC(gtk_widget_destroyed), &conf_dialog); + g_signal_connect (conf_dialog, "destroy", (GCallback) + gtk_widget_destroyed, & conf_dialog); gtk_window_set_title(GTK_WINDOW(conf_dialog), _("Configure Extra Stereo")); label = gtk_label_new(_("Effect intensity:")); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(conf_dialog)->vbox), label, - TRUE, TRUE, 0); + gtk_box_pack_start ((GtkBox *) gtk_dialog_get_content_area + ((GtkDialog *) conf_dialog), label, TRUE, TRUE, 0); gtk_widget_show(label); hbox = gtk_hbox_new(FALSE, 10); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(conf_dialog)->vbox), hbox, - TRUE, TRUE, 10); + gtk_box_pack_start ((GtkBox *) gtk_dialog_get_content_area + ((GtkDialog *) conf_dialog), hbox, TRUE, TRUE, 10); gtk_widget_show(hbox); - adjustment = gtk_adjustment_new(value, 0.0, 15.0 + 1.0, 0.1, 1.0, 1.0); + GtkAdjustment * adjustment = (GtkAdjustment *) gtk_adjustment_new + (value, 0, 15 + 1, 0.1, 1.0, 1.0); scale = gtk_hscale_new(GTK_ADJUSTMENT(adjustment)); gtk_box_pack_start(GTK_BOX(hbox), scale, TRUE, TRUE, 10); gtk_widget_show(scale); bbox = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); - gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); - gtk_box_pack_start(GTK_BOX((GTK_DIALOG(conf_dialog)->action_area)), - bbox, TRUE, TRUE, 0); + gtk_box_pack_start ((GtkBox *) gtk_dialog_get_action_area ((GtkDialog *) + conf_dialog), bbox, TRUE, TRUE, 0); button = gtk_button_new_with_label(_("Ok")); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_widget_set_can_default (button, TRUE); gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - GTK_SIGNAL_FUNC(conf_ok_cb), - >K_ADJUSTMENT(adjustment)->value); + g_signal_connect (button, "clicked", (GCallback) conf_ok_cb, adjustment); gtk_widget_grab_default(button); gtk_widget_show(button); button = gtk_button_new_with_label(_("Cancel")); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_widget_set_can_default (button, TRUE); gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - GTK_SIGNAL_FUNC(conf_cancel_cb), NULL); + g_signal_connect (button, "clicked", (GCallback) conf_cancel_cb, NULL); gtk_widget_show(button); button = gtk_button_new_with_label(_("Apply")); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_widget_set_can_default (button, TRUE); gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - GTK_SIGNAL_FUNC(conf_apply_cb), - >K_ADJUSTMENT(adjustment)->value); + g_signal_connect (button, "clicked", (GCallback) conf_apply_cb, + adjustment); gtk_widget_show(button); gtk_widget_show(bbox); diff -Nru audacious-plugins-2.4.4/src/streambrowser/bookmarks.c audacious-plugins-3.2/src/streambrowser/bookmarks.c --- audacious-plugins-2.4.4/src/streambrowser/bookmarks.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/streambrowser/bookmarks.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,177 +0,0 @@ -/* - * Audacious Streambrowser Plugin - * - * Copyright (c) 2008 Calin Crisan - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - -#include -#include - -#include -#include - -#include "streambrowser.h" -#include "bookmarks.h" - - -static bookmark_t **bookmarks; -static int *bookmarks_count; - -gboolean bookmarks_streaminfo_fetch (category_t * category, - streaminfo_t * streaminfo) -{ - // todo: implement and make use of this - - return FALSE; -} - -gboolean bookmarks_category_fetch (streamdir_t * streamdir, - category_t * category) -{ - AUDDBG("bookmarks: filling category '%s'\n", category->name); - - /* free/remove any existing streaminfos in this category */ - while (streaminfo_get_count (category) > 0) - streaminfo_remove (category, streaminfo_get_by_index (category, 0)); - - int i; - /* find bookmarks that match this category */ - for (i = 0; i < *bookmarks_count; i++) - if (strcmp ((*bookmarks)[i].streamdir_name, category->name) == 0) - { - AUDDBG("bookmarks: adding stream info for '%s/%s'\n", - streamdir->name, category->name); - - streaminfo_t *streaminfo = streaminfo_new ((*bookmarks)[i].name, - (*bookmarks)[i]. - playlist_url, - (*bookmarks)[i].url, ""); - streaminfo_add (category, streaminfo); - - AUDDBG("bookmarks: stream info added\n"); - } - - return TRUE; -} - -streamdir_t *bookmarks_streamdir_fetch (bookmark_t ** p_bookmarks, - int *p_bookmarks_count) -{ - bookmarks = p_bookmarks; - bookmarks_count = p_bookmarks_count; - - streamdir_t *streamdir = streamdir_new (BOOKMARKS_NAME); - - AUDDBG("bookmarks: creating streaming directory for bookmarks\n"); - - category_t *category = category_new ("Shoutcast"); - category_add (streamdir, category); - - category = category_new ("Xiph"); - category_add (streamdir, category); - - AUDDBG("bookmarks: streaming directory successfuly created\n"); - - return streamdir; -} - -void bookmark_add (bookmark_t * bookmark) -{ - AUDDBG - ("bookmarks: adding bookmark with streamdir = '%s', name = '%s', playlist_url = '%s', url = '%s'\n", - bookmark->streamdir_name, bookmark->name, bookmark->playlist_url, - bookmark->url); - - int i; - for (i = 0; i < *bookmarks_count; i++) - if (strcmp ((*bookmarks)[i].name, bookmark->name) == 0) - { - AUDDBG - ("bookmarks: bookmark with name = '%s' already exists, skipping\n", - bookmark->name); - return; - } - - *bookmarks = - realloc (*bookmarks, sizeof (bookmark_t) * ((*bookmarks_count) + 1)); - - strncpy ((*bookmarks)[*bookmarks_count].streamdir_name, - bookmark->streamdir_name, DEF_STRING_LEN); - strncpy ((*bookmarks)[*bookmarks_count].name, bookmark->name, - DEF_STRING_LEN); - strncpy ((*bookmarks)[*bookmarks_count].playlist_url, - bookmark->playlist_url, DEF_STRING_LEN); - strncpy ((*bookmarks)[*bookmarks_count].url, bookmark->url, DEF_STRING_LEN); - - (*bookmarks_count)++; - - AUDDBG("bookmarks: bookmark added, there are now %d bookmarks\n", - *bookmarks_count); - - /* issue a configuration save for immediately saving the new added bookmark */ - config_save (); -} - -void bookmark_remove (gchar * name) -{ - AUDDBG("bookmarks: searching for bookmark with name = '%s'\n", name); - - int pos = -1, i; - - for (i = 0; i < *bookmarks_count; i++) - if (strcmp ((*bookmarks)[i].name, name) == 0) - { - pos = i; - break; - } - - if (pos != -1) - { - AUDDBG - ("bookmarks: removing bookmark with streamdir = '%s', name = '%s', playlist_url = '%s', url = '%s'\n", - (*bookmarks)[i].streamdir_name, (*bookmarks)[i].name, - (*bookmarks)[i].playlist_url, (*bookmarks)[i].url); - - for (i = pos; i < (*bookmarks_count) - 1; i++) - { - /* bookmarks[i] = bookmarks[i + 1] */ - - strncpy ((*bookmarks)[i].streamdir_name, - (*bookmarks)[i + 1].streamdir_name, DEF_STRING_LEN); - strncpy ((*bookmarks)[i].name, (*bookmarks)[i + 1].name, - DEF_STRING_LEN); - strncpy ((*bookmarks)[i].playlist_url, - (*bookmarks)[i + 1].playlist_url, DEF_STRING_LEN); - strncpy ((*bookmarks)[i].url, (*bookmarks)[i + 1].url, - DEF_STRING_LEN); - } - - (*bookmarks_count)--; - if (*bookmarks_count > 0) - *bookmarks = - realloc (*bookmarks, sizeof (bookmark_t) * (*bookmarks_count)); - else - *bookmarks = NULL; - - AUDDBG("bookmarks: bookmark removed, there are now %d bookmarks\n", - *bookmarks_count); - } - else - failure ("bookmarks: cannot find a bookmark with name = '%s'\n", name); - - /* issue a configuration save for immediately saving the remaining bookmarks */ - config_save (); -} diff -Nru audacious-plugins-2.4.4/src/streambrowser/bookmarks.h audacious-plugins-3.2/src/streambrowser/bookmarks.h --- audacious-plugins-2.4.4/src/streambrowser/bookmarks.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/streambrowser/bookmarks.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -/* - * Audacious Streambrowser Plugin - * - * Copyright (c) 2008 Calin Crisan - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - -#ifndef BOOKMARKS_H -#define BOOKMARKS_H - -#include "streambrowser.h" -#include "streamdir.h" - -#define BOOKMARKS_NAME "Bookmarks" -#define BOOKMARKS_ICON DATA_DIR G_DIR_SEPARATOR_S "images" G_DIR_SEPARATOR_S "bookmarks.png" - - -typedef struct -{ - gchar streamdir_name[DEF_STRING_LEN]; - - gchar name[DEF_STRING_LEN]; - gchar playlist_url[DEF_STRING_LEN]; - gchar url[DEF_STRING_LEN]; -} -bookmark_t; - - -gboolean bookmarks_streaminfo_fetch (category_t * category, - streaminfo_t * streaminfo); -gboolean bookmarks_category_fetch (streamdir_t * streamdir, - category_t * category); -streamdir_t *bookmarks_streamdir_fetch (bookmark_t ** p_bookmarks, - int *p_bookmarks_count); - -void bookmark_add (bookmark_t * bookmark); -void bookmark_remove (gchar * name); - - -#endif // BOOKMARKS_H diff -Nru audacious-plugins-2.4.4/src/streambrowser/gui/streambrowser_win.c audacious-plugins-3.2/src/streambrowser/gui/streambrowser_win.c --- audacious-plugins-2.4.4/src/streambrowser/gui/streambrowser_win.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/streambrowser/gui/streambrowser_win.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,649 +0,0 @@ - -#include -#include -#include -#include -#include -#include - -#include "../streambrowser.h" -#include "streambrowser_win.h" -#include "../bookmarks.h" - - -typedef struct { - - streamdir_t* streamdir; - GtkWidget* table; - GtkWidget* tree_view; - -} streamdir_gui_t; - - -void (* update_function) (streamdir_t *streamdir, category_t *category, streaminfo_t *streaminfo, gboolean add_to_playlist); - -static GtkWidget* gtk_label_new_with_icon(gchar *icon_filename, gchar *label_text); -static GtkWidget* gtk_streamdir_tree_view_new(); -static GtkWidget* gtk_streamdir_table_new(GtkWidget *tree_view); - -static gboolean on_notebook_switch_page(GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer data); -static gboolean on_tree_view_cursor_changed(GtkTreeView *tree_view, gpointer data); -static gboolean on_add_button_clicked(GtkButton *button, gpointer data); -static gboolean on_bookmark_button_clicked(GtkButton *button, gpointer data); -static gboolean on_search_entry_key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data); -static gboolean on_tree_view_key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data); -static gboolean on_tree_view_button_pressed(GtkWidget *widget, GdkEventButton *event, gpointer data); - -static streamdir_gui_t* find_streamdir_gui_by_name(gchar *name); -static streamdir_gui_t* find_streamdir_gui_by_table(GtkTable *table); -static streamdir_gui_t* find_streamdir_gui_by_streamdir(streamdir_t *streamdir); -static gboolean tree_view_search_equal_func(GtkTreeModel *model, gint column, const gchar *key, GtkTreeIter *iter, gpointer data); - -static GtkWidget* notebook; -static GtkWidget* search_entry; -static GtkWidget* add_button; -static GtkWidget* bookmark_button; -static GtkWidget* streambrowser_window; -static GList* streamdir_gui_list = NULL; -static GtkCellRenderer* cell_renderer_pixbuf; -static GtkCellRenderer* cell_renderer_text; - -static gboolean tree_view_button_pressed = FALSE; - - - -void streambrowser_win_init() -{ - /* notebook */ - notebook = gtk_notebook_new(); - g_signal_connect(G_OBJECT(notebook), "switch-page", G_CALLBACK(on_notebook_switch_page), NULL); - gtk_widget_show(notebook); - - GtkWidget *search_label = gtk_label_new(_("Search:")); - gtk_widget_show(search_label); - - /* search entry */ - search_entry = gtk_entry_new(); - g_signal_connect(G_OBJECT(search_entry), "key-press-event", G_CALLBACK(on_search_entry_key_pressed), NULL); - gtk_widget_show(search_entry); - - GtkWidget *hbox1 = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(hbox1), search_label, FALSE, TRUE, 3); - gtk_box_pack_start(GTK_BOX(hbox1), search_entry, TRUE, TRUE, 3); - gtk_widget_show(hbox1); - - /* add button */ - add_button = gtk_button_new_from_stock(GTK_STOCK_ADD); - g_signal_connect(G_OBJECT(add_button), "clicked", G_CALLBACK(on_add_button_clicked), NULL); - gtk_widget_show(add_button); - - /* bookmark button */ - bookmark_button = gtk_button_new_with_label(_("Add Bookmark")); - gtk_button_set_image(GTK_BUTTON(bookmark_button), gtk_image_new_from_file(BOOKMARKS_ICON)); - g_signal_connect(G_OBJECT(bookmark_button), "clicked", G_CALLBACK(on_bookmark_button_clicked), NULL); - gtk_widget_show(bookmark_button); - - GtkWidget *vbox1 = gtk_vbox_new(FALSE, 4); - gtk_box_pack_start(GTK_BOX(vbox1), notebook, TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(vbox1), hbox1, FALSE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(vbox1), add_button, FALSE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(vbox1), bookmark_button, FALSE, TRUE, 0); - gtk_widget_show(vbox1); - - /* streambrowser window */ - streambrowser_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(streambrowser_window), _("Stream browser")); - gtk_window_set_position(GTK_WINDOW(streambrowser_window), GTK_WIN_POS_CENTER); - gtk_window_set_default_size(GTK_WINDOW(streambrowser_window), 1000, 700); - gtk_window_set_icon_from_file(GTK_WINDOW(streambrowser_window), STREAMBROWSER_ICON, NULL); - g_signal_connect(G_OBJECT(streambrowser_window), "delete-event", G_CALLBACK(gtk_widget_hide_on_delete), streambrowser_window); - gtk_container_add(GTK_CONTAINER(streambrowser_window), vbox1); - - /* others */ - cell_renderer_pixbuf = gtk_cell_renderer_pixbuf_new(); - cell_renderer_text = gtk_cell_renderer_text_new(); -} - -void streambrowser_win_done() -{ -} - -void streambrowser_win_show() -{ - gtk_widget_show(streambrowser_window); -} - -void streambrowser_win_hide() -{ - gtk_widget_hide(streambrowser_window); -} - -void streambrowser_win_set_streamdir(streamdir_t *streamdir, gchar *icon_filename) -{ - GtkWidget *tree_view = NULL; - - /* search for an old instance of this streamdir and replace it */ - streamdir_gui_t *streamdir_gui = find_streamdir_gui_by_name(streamdir->name); - if (streamdir_gui != NULL) { - streamdir_delete(streamdir_gui->streamdir); - streamdir_gui->streamdir = streamdir; - tree_view = streamdir_gui->tree_view; - } - /* if no older instance of this streamdir has been found, we add a brand new one */ - else { - streamdir_gui = g_malloc(sizeof(streamdir_gui_t)); - - tree_view = gtk_streamdir_tree_view_new(); - - GtkWidget *table = gtk_streamdir_table_new(tree_view); - gtk_widget_show_all(table); - - GtkWidget *label = gtk_label_new_with_icon(icon_filename, streamdir->name); - gtk_widget_show_all(label); - - streamdir_gui->streamdir = streamdir; - streamdir_gui->tree_view = tree_view; - streamdir_gui->table = table; - - streamdir_gui_list = g_list_append(streamdir_gui_list, streamdir_gui); - - gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table, label); - } - - /* fill the tree with categories */ - GtkTreeIter iter; - GtkTreeStore *store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(tree_view))); - - gtk_tree_store_clear(store); - - int i, count = category_get_count(streamdir); - category_t *category; - for (i = 0; i < count; i++) { - category = category_get_by_index(streamdir, i); - - gtk_tree_store_append(store, &iter, NULL); - gtk_tree_store_set(store, &iter, 0, "gtk-directory", 1, category->name, 2, "", 3, PANGO_WEIGHT_NORMAL, -1); - } -} - -void streambrowser_win_set_category(streamdir_t *streamdir, category_t *category) -{ - streamdir_gui_t *streamdir_gui = find_streamdir_gui_by_name(streamdir->name); - if (streamdir_gui == NULL) { - failure("gui: streambrowser_win_set_category() called with non-existent streamdir\n"); - return; - } - - GtkTreeView *tree_view = GTK_TREE_VIEW(streamdir_gui->tree_view); - GtkTreeStore *store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(tree_view))); - GtkTreePath *path; - GtkTreeIter iter, new_iter; - - /* clear all the previously added streaminfo in this category */ - path = gtk_tree_path_new_from_indices(category_get_index(streamdir, category), 0, -1); - if (gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path)) { - while (gtk_tree_store_remove(store, &iter)) - ; - } - - /* find the corresponding category tree iter */ - path = gtk_tree_path_new_from_indices(category_get_index(streamdir, category), -1); - if (!gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path)) - return; - - /* append the new streaminfos to the current category / iter */ - int i, count = streaminfo_get_count(category); - streaminfo_t *streaminfo; - for (i = 0; i < count; i++) { - streaminfo = streaminfo_get_by_index(category, i); - - gtk_tree_store_append(store, &new_iter, &iter); - gtk_tree_store_set(store, &new_iter, 0, "gtk-media-play", 1, streaminfo->name, 2, streaminfo->current_track, 3, PANGO_WEIGHT_NORMAL, -1); - } - - gtk_tree_path_free(path); -} - -void streambrowser_win_set_streaminfo(streamdir_t *streamdir, category_t *category, streaminfo_t *streaminfo) -{ - streamdir_gui_t *streamdir_gui = find_streamdir_gui_by_name(streamdir->name); - if (streamdir_gui == NULL) { - failure("gui: streambrowser_win_set_category() called with non-existent streamdir\n"); - return; - } - - GtkTreeView *tree_view = GTK_TREE_VIEW(streamdir_gui->tree_view); - GtkTreeStore *store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(tree_view))); - GtkTreePath *path; - GtkTreeIter iter, new_iter; - - /* find the corresponding streaminfo tree iter */ - path = gtk_tree_path_new_from_indices(category_get_index(streamdir, category), streaminfo_get_index(category, streaminfo), -1); - if (!gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path)) - return; - - /* update the streaminfo*/ - gtk_tree_store_set(store, &new_iter, 0, "gtk-media-play", 1, streaminfo->name, 2, streaminfo->current_track, 3, PANGO_WEIGHT_NORMAL -1); - - gtk_tree_path_free(path); -} - -void streambrowser_win_set_update_function(void (*function) (streamdir_t *streamdir, category_t *category, streaminfo_t *streaminfo, gboolean add_to_playlist)) -{ - update_function = function; -} - -void streambrowser_win_set_category_state(streamdir_t *streamdir, category_t *category, gboolean fetching) -{ - streamdir_gui_t *streamdir_gui = find_streamdir_gui_by_streamdir(streamdir); - GtkTreeView *tree_view = GTK_TREE_VIEW(streamdir_gui->tree_view); - GtkTreeStore *store = GTK_TREE_STORE(gtk_tree_view_get_model(tree_view)); - GtkTreePath *path; - GtkTreeIter iter; - - /* find the corresponding category tree iter */ - path = gtk_tree_path_new_from_indices(category_get_index(streamdir, category), -1); - if (!gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path)) - return; - - if (fetching) { - gtk_tree_store_set(store, &iter, 0, "gtk-refresh", 1, category->name, 2, "", 3, PANGO_WEIGHT_BOLD, -1); - } - else { - gtk_tree_store_set(store, &iter, 0, "gtk-directory", 1, category->name, 2, "", 3, PANGO_WEIGHT_NORMAL, -1); - - /* we also expand the corresponding category tree element in the treeview */ - gtk_tree_view_expand_row(tree_view, path, FALSE); - } -} - -void streambrowser_win_set_streaminfo_state(streamdir_t *streamdir, category_t *category, streaminfo_t *streaminfo, gboolean fetching) -{ - streamdir_gui_t *streamdir_gui = find_streamdir_gui_by_streamdir(streamdir); - GtkTreeView *tree_view = GTK_TREE_VIEW(streamdir_gui->tree_view); - GtkTreeStore *store = GTK_TREE_STORE(gtk_tree_view_get_model(tree_view)); - GtkTreePath *path; - GtkTreeIter iter; - - /* find the corresponding category tree iter */ - path = gtk_tree_path_new_from_indices(category_get_index(streamdir, category), streaminfo_get_index(category, streaminfo), -1); - if (!gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path)) - return; - - if (fetching) { - gtk_tree_store_set(store, &iter, 0, "gtk-media-play", 1, streaminfo->name, 2, streaminfo->current_track, 3, PANGO_WEIGHT_BOLD, -1); - } - else { - gtk_tree_store_set(store, &iter, 0, "gtk-media-play", 1, streaminfo->name, 2, streaminfo->current_track, 3, PANGO_WEIGHT_NORMAL, -1); - } -} - -static GtkWidget* gtk_label_new_with_icon(gchar *icon_filename, gchar *label_text) -{ - GtkWidget *hbox = gtk_hbox_new(FALSE, 1); - GtkWidget *label = gtk_label_new(label_text); - GtkWidget *icon = gtk_image_new_from_file(icon_filename); - - gtk_box_pack_start(GTK_BOX(hbox), icon, FALSE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); - - return hbox; -} - -static GtkWidget *gtk_streamdir_tree_view_new() -{ - GtkWidget *tree_view = gtk_tree_view_new(); - - GtkTreeStore *store = gtk_tree_store_new(4, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT); - gtk_tree_view_set_model(GTK_TREE_VIEW(tree_view), GTK_TREE_MODEL(store)); - - gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree_view), TRUE); -#if GTK_CHECK_VERSION (2, 10, 0) - gtk_tree_view_set_search_entry(GTK_TREE_VIEW(tree_view), GTK_ENTRY(search_entry)); -#endif - gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(tree_view), tree_view_search_equal_func, NULL, NULL); - gtk_tree_view_set_search_column(GTK_TREE_VIEW(tree_view), 1); - g_signal_connect(G_OBJECT(tree_view), "key-press-event", G_CALLBACK(on_tree_view_key_pressed), NULL); - g_signal_connect(G_OBJECT(tree_view), "cursor-changed", G_CALLBACK(on_tree_view_cursor_changed), NULL); - g_signal_connect(G_OBJECT(tree_view), "button-press-event", G_CALLBACK(on_tree_view_button_pressed), NULL); - - GtkTreeViewColumn *column = gtk_tree_view_column_new(); - gtk_tree_view_column_pack_start(column, cell_renderer_pixbuf, TRUE); - gtk_tree_view_column_add_attribute(column, cell_renderer_pixbuf, "stock-id", 0); - gtk_tree_view_column_set_resizable(column, TRUE); - gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), column); - - column = gtk_tree_view_column_new(); - gtk_tree_view_column_pack_start(column, cell_renderer_text, TRUE); - gtk_tree_view_column_add_attribute(column, cell_renderer_text, "text", 1); - gtk_tree_view_column_add_attribute(column, cell_renderer_text, "weight", 3); - gtk_tree_view_column_set_resizable(column, TRUE); - gtk_tree_view_column_set_title(column, _("Stream name")); - gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), column); - - column = gtk_tree_view_column_new(); - gtk_tree_view_column_pack_start(column, cell_renderer_text, TRUE); - gtk_tree_view_column_add_attribute(column, cell_renderer_text, "text", 2); - gtk_tree_view_column_set_resizable(column, TRUE); - gtk_tree_view_column_set_title(column, _("Now playing")); - gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), column); - - return tree_view; -} - -static GtkWidget* gtk_streamdir_table_new(GtkWidget *tree_view) -{ - GtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL); - gtk_container_add(GTK_CONTAINER(scrolled_window), tree_view); - - GtkWidget *table = gtk_table_new(1, 1, FALSE); - gtk_table_attach(GTK_TABLE(table), scrolled_window, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - - return table; -} - -static gboolean on_notebook_switch_page(GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer data) -{ - if (page_num < 0) - return FALSE; - - /* only enable searching in the current tree (tab) */ - - streamdir_gui_t *streamdir_gui; - int i; - - for (i = 0; i < g_list_length(streamdir_gui_list); i++) { - streamdir_gui = g_list_nth_data(streamdir_gui_list, i); - - if (i == page_num) - gtk_tree_view_set_search_column(GTK_TREE_VIEW(streamdir_gui->tree_view), 1); - else - gtk_tree_view_set_search_column(GTK_TREE_VIEW(streamdir_gui->tree_view), -1); - } - - /* clear the search box */ - gtk_entry_set_text(GTK_ENTRY(search_entry), ""); - - /* if this is the last page, aka the bookmarks page, bookmark button has to say "Remove bookmark", instead of "Add bookmark"0 */ - if (page_num == gtk_notebook_get_n_pages(notebook) - 1) { - gtk_button_set_label(GTK_BUTTON(bookmark_button), _("Remove Bookmark")); - } - else { - gtk_button_set_label(GTK_BUTTON(bookmark_button), _("Add Bookmark")); - } - - return TRUE; -} - - -static gboolean on_tree_view_cursor_changed(GtkTreeView *tree_view, gpointer data) -{ - /* only do the refresh if this cursor change occured due to a mouse click */ - if (!tree_view_button_pressed) - return FALSE; - - tree_view_button_pressed = FALSE; - - GtkTreePath *path; - GtkTreeViewColumn *focus_column; - - /* get the currently selected tree view */ - GtkWidget *table = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook))); - streamdir_gui_t *streamdir_gui = find_streamdir_gui_by_table(GTK_TABLE(table)); - if (streamdir_gui == NULL) - return FALSE; - - /* get the currently selected path in the tree */ - gtk_tree_view_get_cursor(tree_view, &path, &focus_column); - - if (path == NULL || gtk_tree_path_get_depth(path) == 0) - return FALSE; - - gint *indices = gtk_tree_path_get_indices(path); - int category_index = indices[0]; - streamdir_t *streamdir = streamdir_gui->streamdir; - category_t *category = category_get_by_index(streamdir_gui->streamdir, category_index); - - /* if the selected item is a category */ - if (gtk_tree_path_get_depth(path) == 1) { - if (!gtk_tree_view_row_expanded(tree_view, path)) { - gtk_entry_set_text(GTK_ENTRY(search_entry), ""); - update_function(streamdir, category, NULL, FALSE); - } - - gtk_tree_path_free(path); - } - /* if the selected item is a streaminfo */ - else { - int streaminfo_index = indices[1]; - - gtk_tree_path_free(path); - - /* get the currently selected stream (info) */ - streaminfo_t *streaminfo = streaminfo_get_by_index(category, streaminfo_index); - - gtk_entry_set_text(GTK_ENTRY(search_entry), ""); - update_function(streamdir, category, streaminfo, FALSE); - } - - return FALSE; -} - -static gboolean on_tree_view_button_pressed(GtkWidget *widget, GdkEventButton *event, gpointer data) -{ - /* double click adds the currently selected stream to the playlist */ - if (event->type == GDK_2BUTTON_PRESS) { - tree_view_button_pressed = FALSE; - on_add_button_clicked(NULL, NULL); - } - /* single click triggers a refresh of the selected item */ - else { - tree_view_button_pressed = TRUE; - } - - return FALSE; -} - -static gboolean on_add_button_clicked(GtkButton *button, gpointer data) -{ - GtkTreePath *path; - GtkTreeViewColumn *focus_column; - - /* get the currently selected tree view */ - GtkWidget *table = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook))); - streamdir_gui_t *streamdir_gui = find_streamdir_gui_by_table(GTK_TABLE(table)); - if (streamdir_gui == NULL) - return TRUE; - - GtkTreeView *tree_view = GTK_TREE_VIEW(streamdir_gui->tree_view); - - /* get the currently selected path in the tree */ - gtk_tree_view_get_cursor(tree_view, &path, &focus_column); - - if (path == NULL) - return TRUE; - - gint *indices = gtk_tree_path_get_indices(path); - if (gtk_tree_path_get_depth(path) == 1) { - if (gtk_tree_view_row_expanded(tree_view, path)) - gtk_tree_view_collapse_row(tree_view, path); - else - gtk_tree_view_expand_row(tree_view, path, FALSE); - - gtk_tree_path_free(path); - return TRUE; - } - - int category_index = indices[0]; - int streaminfo_index = indices[1]; - - gtk_tree_path_free(path); - - /* get the currently selected stream (info) */ - streamdir_t *streamdir = streamdir_gui->streamdir; - category_t *category = category_get_by_index(streamdir_gui->streamdir, category_index); - streaminfo_t *streaminfo = streaminfo_get_by_index(category, streaminfo_index); - - gtk_entry_set_text(GTK_ENTRY(search_entry), ""); - update_function(streamdir, category, streaminfo, TRUE); - - return TRUE; -} - -static gboolean on_bookmark_button_clicked(GtkButton *button, gpointer data) -{ - GtkTreePath *path; - GtkTreeViewColumn *focus_column; - - /* get the currently selected tree view */ - GtkWidget *table = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook))); - streamdir_gui_t *streamdir_gui = find_streamdir_gui_by_table(GTK_TABLE(table)); - if (streamdir_gui == NULL) - return TRUE; - - GtkTreeView *tree_view = GTK_TREE_VIEW(streamdir_gui->tree_view); - - /* get the currently selected path in the tree */ - gtk_tree_view_get_cursor(tree_view, &path, &focus_column); - - if (path == NULL) - return TRUE; - - gint *indices = gtk_tree_path_get_indices(path); - if (gtk_tree_path_get_depth(path) == 1) { - gtk_tree_path_free(path); - return TRUE; - } - - int category_index = indices[0]; - int streaminfo_index = indices[1]; - - gtk_tree_path_free(path); - - /* get the currently selected stream (info) */ - streamdir_t *streamdir = streamdir_gui->streamdir; - category_t *category = category_get_by_index(streamdir_gui->streamdir, category_index); - streaminfo_t *streaminfo = streaminfo_get_by_index(category, streaminfo_index); - - /* if we have the bookmarks tab focused, we remove the stream, rather than add it. otherwise we simply add it */ - if (strcmp(streamdir->name, BOOKMARKS_NAME) == 0) { - bookmark_remove(streaminfo->name); - - update_function(streamdir, category, NULL, FALSE); - } - else { - bookmark_t bookmark; - strncpy(bookmark.streamdir_name, streamdir->name, DEF_STRING_LEN); - strncpy(bookmark.name, streaminfo->name, DEF_STRING_LEN); - strncpy(bookmark.playlist_url, streaminfo->playlist_url, DEF_STRING_LEN); - strncpy(bookmark.url, streaminfo->url, DEF_STRING_LEN); - - bookmark_add(&bookmark); - - /* find the corresponding category (having the current streamdir name) in the bookmarks */ - streamdir_t *bookmarks_streamdir = find_streamdir_gui_by_name(BOOKMARKS_NAME)->streamdir; - category_t *bookmarks_category = category_get_by_name(bookmarks_streamdir, streamdir->name); - - update_function(bookmarks_streamdir, bookmarks_category, NULL, FALSE); - } - - return TRUE; -} - -static gboolean on_search_entry_key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data) -{ - if (event->keyval == GDK_Return || event->keyval == GDK_KP_Enter) { - on_add_button_clicked(GTK_BUTTON(add_button), NULL); - return TRUE; - } - - if (event->keyval == GDK_Escape) { - gtk_entry_set_text(GTK_ENTRY(search_entry), ""); - return FALSE; - } - - return FALSE; -} - -static gboolean on_tree_view_key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data) -{ - if (event->keyval == GDK_Down || event->keyval == GDK_Up) - return FALSE; - else - if (event->keyval == GDK_Return || event->keyval == GDK_KP_Enter) { - on_add_button_clicked(GTK_BUTTON(add_button), NULL); - return FALSE; - } - - gtk_widget_grab_focus(search_entry); - on_search_entry_key_pressed(widget, event, data); - - return TRUE; -} - -static streamdir_gui_t *find_streamdir_gui_by_name(gchar *name) -{ - GList *iterator; - streamdir_gui_t *streamdir_gui; - - for (iterator = g_list_first(streamdir_gui_list); iterator != NULL; iterator = g_list_next(iterator)) { - streamdir_gui = iterator->data; - - if (strcmp(streamdir_gui->streamdir->name, name) == 0) - return streamdir_gui; - } - - return NULL; -} - -static streamdir_gui_t *find_streamdir_gui_by_table(GtkTable *table) -{ - GList *iterator; - streamdir_gui_t *streamdir_gui; - - for (iterator = g_list_first(streamdir_gui_list); iterator != NULL; iterator = g_list_next(iterator)) { - streamdir_gui = iterator->data; - - if ((void *) streamdir_gui->table == (void *) table) - return streamdir_gui; - } - - return NULL; -} - -static streamdir_gui_t* find_streamdir_gui_by_streamdir(streamdir_t *streamdir) -{ - GList *iterator; - streamdir_gui_t *streamdir_gui; - - for (iterator = g_list_first(streamdir_gui_list); iterator != NULL; iterator = g_list_next(iterator)) { - streamdir_gui = iterator->data; - - if ((void *) streamdir_gui->streamdir == (void *) streamdir) - return streamdir_gui; - } - - return NULL; -} - -static gboolean tree_view_search_equal_func(GtkTreeModel *model, gint column, const gchar *key, GtkTreeIter *iter, gpointer data) -{ - if (column == -1) - return TRUE; - - GValue value = {0, }; - gboolean ret; - - gtk_tree_model_get_value(model, iter, column, &value); - const gchar *string = g_value_get_string(&value); - - if (string == NULL || string[0] == '\0' || key == NULL || key[0] == '\0') - ret = TRUE; - - ret = !mystrcasestr(string, key); - - g_value_unset(&value); - - return ret; -} - diff -Nru audacious-plugins-2.4.4/src/streambrowser/gui/streambrowser_win.h audacious-plugins-3.2/src/streambrowser/gui/streambrowser_win.h --- audacious-plugins-2.4.4/src/streambrowser/gui/streambrowser_win.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/streambrowser/gui/streambrowser_win.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ - -#ifndef STREAMBROWSER_WIN_H -#define STREAMBROWSER_WIN_H - -#include "../streamdir.h" - - -void streambrowser_win_init(); -void streambrowser_win_done(); -void streambrowser_win_show(); -void streambrowser_win_hide(); - -void streambrowser_win_set_streamdir(streamdir_t *streamdir, gchar *icon_filename); -void streambrowser_win_set_category(streamdir_t *streamdir, category_t *category); -void streambrowser_win_set_streaminfo(streamdir_t *streamdir, category_t *category, streaminfo_t *streaminfo); - -void streambrowser_win_set_update_function(void (* update_function) (streamdir_t *streamdir, category_t *category, streaminfo_t *streaminfo, gboolean add_to_playlist)); -void streambrowser_win_set_category_state(streamdir_t *streamdir, category_t *category, gboolean fetching); -void streambrowser_win_set_streaminfo_state(streamdir_t *streamdir, category_t *category, streaminfo_t *streaminfo, gboolean fetching); - - -#endif // STREAMBROWSER_WIN_H - Binary files /tmp/waGA6W9ooR/audacious-plugins-2.4.4/src/streambrowser/images/bookmarks.png and /tmp/bJ3OjJieKN/audacious-plugins-3.2/src/streambrowser/images/bookmarks.png differ Binary files /tmp/waGA6W9ooR/audacious-plugins-2.4.4/src/streambrowser/images/shoutcast.png and /tmp/bJ3OjJieKN/audacious-plugins-3.2/src/streambrowser/images/shoutcast.png differ Binary files /tmp/waGA6W9ooR/audacious-plugins-2.4.4/src/streambrowser/images/streambrowser-16x16.png and /tmp/bJ3OjJieKN/audacious-plugins-3.2/src/streambrowser/images/streambrowser-16x16.png differ Binary files /tmp/waGA6W9ooR/audacious-plugins-2.4.4/src/streambrowser/images/streambrowser-64x64.png and /tmp/bJ3OjJieKN/audacious-plugins-3.2/src/streambrowser/images/streambrowser-64x64.png differ diff -Nru audacious-plugins-2.4.4/src/streambrowser/images/streambrowser.svg audacious-plugins-3.2/src/streambrowser/images/streambrowser.svg --- audacious-plugins-2.4.4/src/streambrowser/images/streambrowser.svg 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/streambrowser/images/streambrowser.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,251 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Binary files /tmp/waGA6W9ooR/audacious-plugins-2.4.4/src/streambrowser/images/xiph.png and /tmp/bJ3OjJieKN/audacious-plugins-3.2/src/streambrowser/images/xiph.png differ diff -Nru audacious-plugins-2.4.4/src/streambrowser/Makefile audacious-plugins-3.2/src/streambrowser/Makefile --- audacious-plugins-2.4.4/src/streambrowser/Makefile 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/streambrowser/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -PLUGIN = streambrowser${PLUGIN_SUFFIX} - -SRCS = streambrowser.c \ - streamdir.c \ - shoutcast.c \ - xiph.c \ - bookmarks.c \ - gui/streambrowser_win.c - -DATA = images/shoutcast.png \ - images/xiph.png \ - images/bookmarks.png \ - images/streambrowser-16x16.png \ - images/streambrowser-64x64.png - -include ../../buildsys.mk -include ../../extra.mk - -PACKAGE = audacious - -plugindir := ${plugindir}/${GENERAL_PLUGIN_DIR} - -CFLAGS += ${PLUGIN_CFLAGS} ${BEEP_DEFINES} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${XML_CFLAGS} ${ARCH_DEFINES} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${MOWGLI_LIBS} ${XML_LIBS} - diff -Nru audacious-plugins-2.4.4/src/streambrowser/shoutcast.c audacious-plugins-3.2/src/streambrowser/shoutcast.c --- audacious-plugins-2.4.4/src/streambrowser/shoutcast.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/streambrowser/shoutcast.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,290 +0,0 @@ -/* - * Audacious Streambrowser Plugin - * - * Copyright (c) 2008 Calin Crisan - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - -#include -#include -#include -#include - -#include -#include - -#include "streambrowser.h" -#include "shoutcast.h" - - -gboolean shoutcast_streaminfo_fetch (category_t * category, - streaminfo_t * streaminfo) -{ - gchar url[DEF_STRING_LEN]; - g_snprintf (url, DEF_STRING_LEN, SHOUTCAST_CATEGORY_URL, category->name); - - /* generate a valid, temporary filename */ - char *temp_filename = tempnam (NULL, "aud_sb"); - if (temp_filename == NULL) - { - failure ("shoutcast: failed to create a temporary file\n"); - return FALSE; - } - - char temp_pathname[DEF_STRING_LEN]; - sprintf (temp_pathname, "file://%s", temp_filename); - - AUDDBG("shoutcast: fetching category file '%s'\n", url); - if (!fetch_remote_to_local_file (url, temp_pathname)) - { - failure - ("shoutcast: category file '%s' could not be downloaded to '%s'\n", - url, temp_pathname); - free (temp_filename); - return FALSE; - } - AUDDBG("shoutcast: category file '%s' successfuly downloaded to '%s'\n", - url, temp_pathname); - - xmlDoc *doc = xmlReadFile (temp_pathname, NULL, 0); - if (doc == NULL) - { - failure ("shoutcast: failed to read '%s' category file\n", - category->name); - free (temp_filename); - return FALSE; - } - - xmlNode *root_node = xmlDocGetRootElement (doc); - xmlNode *node; - - root_node = root_node->children; - - for (node = root_node; node != NULL; node = node->next) - { - if (node->type == XML_ELEMENT_NODE - && !strcmp ((char *) node->name, "station")) - { - gchar *streaminfo_name = - (gchar *) xmlGetProp (node, (xmlChar *) "name"); - gchar *streaminfo_id = - (gchar *) xmlGetProp (node, (xmlChar *) "id"); - gchar streaminfo_playlist_url[DEF_STRING_LEN]; - gchar *streaminfo_current_track = - (gchar *) xmlGetProp (node, (xmlChar *) "ct"); - - g_snprintf (streaminfo_playlist_url, DEF_STRING_LEN, - SHOUTCAST_STREAMINFO_URL, streaminfo_id); - - if (strncmp - (streaminfo_playlist_url, streaminfo->playlist_url, - DEF_STRING_LEN) == 0) - { - AUDDBG - ("shoutcast: updating stream info for '%s' with id %s from '%s'\n", - streaminfo_name, streaminfo_id, url); - - strcpy (streaminfo->name, streaminfo_name); - strcpy (streaminfo->playlist_url, streaminfo_playlist_url); - strcpy (streaminfo->current_track, streaminfo_current_track); - - xmlFree (streaminfo_name); - xmlFree (streaminfo_id); - xmlFree (streaminfo_current_track); - - AUDDBG("shoutcast: stream info added\n"); - - break; - } - } - } - - xmlFreeDoc (doc); - - if (remove (temp_filename) != 0) - { - failure ("shoutcast: cannot remove the temporary file: %s\n", - strerror (errno)); - } - free (temp_filename); - - return TRUE; -} - -gboolean shoutcast_category_fetch (streamdir_t * streamdir, - category_t * category) -{ - gchar url[DEF_STRING_LEN]; - g_snprintf (url, DEF_STRING_LEN, SHOUTCAST_CATEGORY_URL, category->name); - - /* generate a valid, temporary filename */ - char *temp_filename = tempnam (NULL, "aud_sb"); - if (temp_filename == NULL) - { - failure ("shoutcast: failed to create a temporary file\n"); - return FALSE; - } - - char temp_pathname[DEF_STRING_LEN]; - sprintf (temp_pathname, "file://%s", temp_filename); - - AUDDBG("shoutcast: fetching category file '%s'\n", url); - if (!fetch_remote_to_local_file (url, temp_pathname)) - { - failure - ("shoutcast: category file '%s' could not be downloaded to '%s'\n", - url, temp_pathname); - free (temp_filename); - return FALSE; - } - AUDDBG("shoutcast: category file '%s' successfuly downloaded to '%s'\n", - url, temp_pathname); - - xmlDoc *doc = xmlReadFile (temp_pathname, NULL, 0); - if (doc == NULL) - { - failure ("shoutcast: failed to read '%s' category file\n", - category->name); - free (temp_filename); - return FALSE; - } - - /* free/remove any existing streaminfos in this category */ - while (streaminfo_get_count (category) > 0) - streaminfo_remove (category, streaminfo_get_by_index (category, 0)); - - xmlNode *root_node = xmlDocGetRootElement (doc); - xmlNode *node; - - root_node = root_node->children; - - for (node = root_node; node != NULL; node = node->next) - { - if (node->type == XML_ELEMENT_NODE - && !strcmp ((char *) node->name, "station")) - { - gchar *streaminfo_name = - (gchar *) xmlGetProp (node, (xmlChar *) "name"); - gchar *streaminfo_id = - (gchar *) xmlGetProp (node, (xmlChar *) "id"); - gchar streaminfo_playlist_url[DEF_STRING_LEN]; - gchar *streaminfo_current_track = - (gchar *) xmlGetProp (node, (xmlChar *) "ct"); - - g_snprintf (streaminfo_playlist_url, DEF_STRING_LEN, - SHOUTCAST_STREAMINFO_URL, streaminfo_id); - - AUDDBG("shoutcast: adding stream info for '%s/%s' from '%s'\n", - streaminfo_name, streaminfo_id, url); - - streaminfo_t *streaminfo = - streaminfo_new (streaminfo_name, streaminfo_playlist_url, "", - streaminfo_current_track); - streaminfo_add (category, streaminfo); - - xmlFree (streaminfo_name); - xmlFree (streaminfo_id); - xmlFree (streaminfo_current_track); - - AUDDBG("shoutcast: stream info added\n"); - } - } - - xmlFreeDoc (doc); - - if (remove (temp_filename) != 0) - { - failure ("shoutcast: cannot remove the temporary file: %s\n", - strerror (errno)); - } - free (temp_filename); - - return TRUE; -} - - -streamdir_t *shoutcast_streamdir_fetch () -{ - streamdir_t *streamdir = streamdir_new (SHOUTCAST_NAME); - - /* generate a valid, temporary filename */ - char *temp_filename = tempnam (NULL, "aud_sb"); - if (temp_filename == NULL) - { - failure ("shoutcast: failed to create a temporary file\n"); - return NULL; - } - - char temp_pathname[DEF_STRING_LEN]; - sprintf (temp_pathname, "file://%s", temp_filename); - - AUDDBG("shoutcast: fetching streaming directory file '%s'\n", - SHOUTCAST_STREAMDIR_URL); - if (!fetch_remote_to_local_file (SHOUTCAST_STREAMDIR_URL, temp_pathname)) - { - failure - ("shoutcast: stream directory file '%s' could not be downloaded to '%s'\n", - SHOUTCAST_STREAMDIR_URL, temp_pathname); - free (temp_filename); - return NULL; - } - AUDDBG - ("shoutcast: stream directory file '%s' successfuly downloaded to '%s'\n", - SHOUTCAST_STREAMDIR_URL, temp_pathname); - - xmlDoc *doc = xmlReadFile (temp_pathname, NULL, 0); - if (doc == NULL) - { - failure ("shoutcast: failed to read stream directory file\n"); - free (temp_filename); - return NULL; - } - - xmlNode *root_node = xmlDocGetRootElement (doc); - xmlNode *node; - - root_node = root_node->children; - - for (node = root_node; node != NULL; node = node->next) - { - if (node->type == XML_ELEMENT_NODE) - { - gchar *category_name = - (gchar *) xmlGetProp (node, (xmlChar *) "name"); - - AUDDBG("shoutcast: fetching category '%s'\n", category_name); - - category_t *category = category_new (category_name); - category_add (streamdir, category); - - xmlFree (category_name); - - AUDDBG("shoutcast: category added: %s.\n", category_name); - } - } - - xmlFreeDoc (doc); - - if (remove (temp_filename) != 0) - { - failure ("shoutcast: cannot remove the temporary file: %s\n", - strerror (errno)); - } - free (temp_filename); - - AUDDBG("shoutcast: streaming directory successfuly loaded\n"); - - return streamdir; -} diff -Nru audacious-plugins-2.4.4/src/streambrowser/shoutcast.h audacious-plugins-3.2/src/streambrowser/shoutcast.h --- audacious-plugins-2.4.4/src/streambrowser/shoutcast.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/streambrowser/shoutcast.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * Audacious Streambrowser Plugin - * - * Copyright (c) 2008 Calin Crisan - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - -#ifndef SHOUTCAST_H -#define SHOUTCAST_H - -#include "streambrowser.h" -#include "streamdir.h" - -#define SHOUTCAST_NAME "Shoutcast" -#define SHOUTCAST_ICON DATA_DIR G_DIR_SEPARATOR_S "images" G_DIR_SEPARATOR_S "shoutcast.png" -#define SHOUTCAST_STREAMDIR_URL "http://classic.shoutcast.com/sbin/newxml.phtml" -#define SHOUTCAST_CATEGORY_URL "http://classic.shoutcast.com/sbin/newxml.phtml?genre=%s" -#define SHOUTCAST_STREAMINFO_URL "http://classic.shoutcast.com/sbin/shoutcast-playlist.pls?rn=%s&file=filename.pls" - - -gboolean shoutcast_streaminfo_fetch (category_t * category, - streaminfo_t * streaminfo); -gboolean shoutcast_category_fetch (streamdir_t * streamdir, - category_t * category); -streamdir_t *shoutcast_streamdir_fetch (); - - -#endif // SHOUTCAST_H diff -Nru audacious-plugins-2.4.4/src/streambrowser/streambrowser.c audacious-plugins-3.2/src/streambrowser/streambrowser.c --- audacious-plugins-2.4.4/src/streambrowser/streambrowser.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/streambrowser/streambrowser.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,758 +0,0 @@ -/* - * Audacious Streambrowser Plugin - * - * Copyright (c) 2008 Calin Crisan - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "streambrowser.h" -#include "streamdir.h" -#include "shoutcast.h" -#include "xiph.h" -#include "bookmarks.h" -#include "gui/streambrowser_win.h" - - -typedef struct -{ - bookmark_t *bookmarks; - int bookmarks_count; -} -streambrowser_cfg_t; - -typedef struct -{ - streamdir_t *streamdir; - category_t *category; - streaminfo_t *streaminfo; - gboolean add_to_playlist; -} -update_thread_data_t; - - -static void sb_init (); -static void sb_about (); -static void sb_configure (); -static void sb_cleanup (); - -static void gui_init (); -static void gui_done (); - -static void streamdir_update (streamdir_t * streamdir, category_t * category, - streaminfo_t * streaminfo, - gboolean add_to_playlist); -static gpointer update_thread_core (gpointer user_data); -static void streaminfo_add_to_playlist (streaminfo_t * streaminfo); -static void on_plugin_services_menu_item_click (); - -static GtkWidget *playlist_menu_item; -static GtkWidget *main_menu_item; -static GQueue *update_thread_data_queue = NULL; -static GMutex *update_thread_mutex = NULL; - -streambrowser_cfg_t streambrowser_cfg; - -static GeneralPlugin sb_plugin = -{ - .description = "Stream Browser", - .init = sb_init, - .about = sb_about, - .configure = sb_configure, - .cleanup = sb_cleanup -}; - -GeneralPlugin *sb_gplist[] = -{ - &sb_plugin, - NULL -}; - -SIMPLE_GENERAL_PLUGIN (streambrowser, sb_gplist); - -void failure (const char *fmt, ...) -{ - va_list ap; - fprintf (stderr, "! streambrowser: "); - va_start (ap, fmt); - vfprintf (stderr, fmt, ap); - va_end (ap); -} - -gboolean fetch_remote_to_local_file (gchar * remote_url, gchar * local_url) -{ - VFSFile *remote_file = vfs_fopen (remote_url, "r"); - if (remote_file == NULL) - { - failure ("failed to fetch file '%s'\n", remote_url); - return FALSE; - } - - VFSFile *local_file = vfs_fopen (local_url, "w"); - if (local_file == NULL) - { - vfs_fclose (remote_file); - - failure ("failed to create local file '%s'\n", local_file); - return FALSE; - } - - unsigned char buff[DEF_BUFFER_SIZE]; - int size; - while (!vfs_feof (remote_file)) - { - size = vfs_fread (buff, 1, DEF_BUFFER_SIZE, remote_file); - - // i don't know why vfs_feof() doesn't ever return TRUE - // so this is a workaround to properly end the loop - if (size == 0) - break; - - size = vfs_fwrite (buff, 1, size, local_file); - if (size == 0) - { - vfs_fclose (local_file); - vfs_fclose (remote_file); - - failure ("failed to write to local file '%s'\n", local_file); - return FALSE; - } - } - - vfs_fclose (local_file); - vfs_fclose (remote_file); - - return TRUE; -} - -void config_load () -{ - streambrowser_cfg.bookmarks = NULL; - streambrowser_cfg.bookmarks_count = 0; - - mcs_handle_t *db; - if ((db = aud_cfg_db_open ()) == NULL) - { - failure ("failed to load configuration\n"); - return; - } - - aud_cfg_db_get_int (db, "streambrowser", "bookmarks_count", - &streambrowser_cfg.bookmarks_count); - - if (streambrowser_cfg.bookmarks_count == 0) - streambrowser_cfg.bookmarks = NULL; - else - streambrowser_cfg.bookmarks = - g_malloc (sizeof (bookmark_t) * streambrowser_cfg.bookmarks_count); - - int i; - gchar item[DEF_STRING_LEN]; - gchar *value; - for (i = 0; i < streambrowser_cfg.bookmarks_count; i++) - { - g_snprintf (item, DEF_STRING_LEN, "bookmark%d_streamdir_name", i); - if (aud_cfg_db_get_string (db, "streambrowser", item, &value)) - { - strncpy (streambrowser_cfg.bookmarks[i].streamdir_name, value, - DEF_STRING_LEN); - g_free (value); - } - else - streambrowser_cfg.bookmarks[i].streamdir_name[0] = '\0'; - - g_snprintf (item, DEF_STRING_LEN, "bookmark%d_name", i); - if (aud_cfg_db_get_string (db, "streambrowser", item, &value)) - { - strncpy (streambrowser_cfg.bookmarks[i].name, value, - DEF_STRING_LEN); - g_free (value); - } - else - streambrowser_cfg.bookmarks[i].name[0] = '\0'; - - g_snprintf (item, DEF_STRING_LEN, "bookmark%d_playlist_url", i); - if (aud_cfg_db_get_string (db, "streambrowser", item, &value)) - { - strncpy (streambrowser_cfg.bookmarks[i].playlist_url, value, - DEF_STRING_LEN); - g_free (value); - } - else - streambrowser_cfg.bookmarks[i].playlist_url[0] = '\0'; - - g_snprintf (item, DEF_STRING_LEN, "bookmark%d_url", i); - if (aud_cfg_db_get_string (db, "streambrowser", item, &value)) - { - strncpy (streambrowser_cfg.bookmarks[i].url, value, DEF_STRING_LEN); - g_free (value); - } - else - streambrowser_cfg.bookmarks[i].url[0] = '\0'; - - AUDDBG - ("loaded a bookmark with streamdir_name = '%s', name = '%s', playlist_url = '%s', url = '%s'\n", - streambrowser_cfg.bookmarks[i].streamdir_name, - streambrowser_cfg.bookmarks[i].name, - streambrowser_cfg.bookmarks[i].playlist_url, - streambrowser_cfg.bookmarks[i].url); - } - - AUDDBG("loaded %d bookmarks\n", streambrowser_cfg.bookmarks_count); - - aud_cfg_db_close (db); - - AUDDBG("configuration loaded\n"); -} - -void config_save () -{ - mcs_handle_t *db; - if ((db = aud_cfg_db_open ()) == NULL) - { - failure ("failed to save configuration\n"); - return; - } - - int old_bookmarks_count = 0, i; - gchar item[DEF_STRING_LEN]; - aud_cfg_db_get_int (db, "streambrowser", "bookmarks_count", - &old_bookmarks_count); - aud_cfg_db_set_int (db, "streambrowser", "bookmarks_count", - streambrowser_cfg.bookmarks_count); - - for (i = 0; i < streambrowser_cfg.bookmarks_count; i++) - { - AUDDBG - ("saving bookmark with streamdir_name = '%s', name = '%s', playlist_url = '%s', url = '%s'\n", - streambrowser_cfg.bookmarks[i].streamdir_name, - streambrowser_cfg.bookmarks[i].name, - streambrowser_cfg.bookmarks[i].playlist_url, - streambrowser_cfg.bookmarks[i].url); - - g_snprintf (item, DEF_STRING_LEN, "bookmark%d_streamdir_name", i); - aud_cfg_db_set_string (db, "streambrowser", item, - streambrowser_cfg.bookmarks[i].streamdir_name); - - g_snprintf (item, DEF_STRING_LEN, "bookmark%d_name", i); - aud_cfg_db_set_string (db, "streambrowser", item, - streambrowser_cfg.bookmarks[i].name); - - g_snprintf (item, DEF_STRING_LEN, "bookmark%d_playlist_url", i); - aud_cfg_db_set_string (db, "streambrowser", item, - streambrowser_cfg.bookmarks[i].playlist_url); - - g_snprintf (item, DEF_STRING_LEN, "bookmark%d_url", i); - aud_cfg_db_set_string (db, "streambrowser", item, - streambrowser_cfg.bookmarks[i].url); - } - - for (i = streambrowser_cfg.bookmarks_count; i < old_bookmarks_count; i++) - { - g_snprintf (item, DEF_STRING_LEN, "bookmark%d_streamdir_name", i); - aud_cfg_db_unset_key (db, "streambrowser", item); - - g_snprintf (item, DEF_STRING_LEN, "bookmark%d_name", i); - aud_cfg_db_unset_key (db, "streambrowser", item); - - g_snprintf (item, DEF_STRING_LEN, "bookmark%d_playlist_url", i); - aud_cfg_db_unset_key (db, "streambrowser", item); - - g_snprintf (item, DEF_STRING_LEN, "bookmark%d_url", i); - aud_cfg_db_unset_key (db, "streambrowser", item); - } - - aud_cfg_db_close (db); - - AUDDBG("configuration saved\n"); -} - -gboolean mystrcasestr (const char *haystack, const char *needle) -{ - int len_h = strlen (haystack) + 1; - int len_n = strlen (needle) + 1; - int i; - - char *upper_h = malloc (len_h); - char *upper_n = malloc (len_n); - - for (i = 0; i < len_h; i++) - upper_h[i] = toupper (haystack[i]); - for (i = 0; i < len_n; i++) - upper_n[i] = toupper (needle[i]); - - char *p = strstr (upper_h, upper_n); - - free (upper_h); - free (upper_n); - - if (p != NULL) - return TRUE; - else - return FALSE; -} - - -static void sb_init () -{ - AUDDBG("sb_init()\n"); - config_load (); - gui_init (); -} - -static void sb_about (void) -{ - static GtkWidget * about_window = NULL; - - audgui_simple_message (& about_window, GTK_MESSAGE_INFO, - _("About Stream Browser"), - _("Copyright (c) 2008, by Calin Crisan and The Audacious Team.\n\n" - "This is a simple stream browser that includes the most popular streaming directories.\n" - "Many thanks to the Streamtuner developers ,\n" - "\tand of course to the whole Audacious community.\n\n" - "Also thank you Tony Vroon for mentoring & guiding me, again.\n\n" - "This was a Google Summer of Code 2008 project.")); -} - -static void sb_configure () -{ - AUDDBG("sb_configure()\n"); -} - -static void sb_cleanup () -{ - AUDDBG("sb_cleanup()\n"); - - gui_done (); - config_save (); -} - -static void gui_init () -{ - /* the plugin services menu */ - playlist_menu_item = - gtk_image_menu_item_new_with_label (_("Streambrowser")); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (playlist_menu_item), - gtk_image_new_from_file - (STREAMBROWSER_ICON_SMALL)); - gtk_widget_show (playlist_menu_item); - g_signal_connect (G_OBJECT (playlist_menu_item), "activate", - G_CALLBACK (on_plugin_services_menu_item_click), NULL); - aud_menu_plugin_item_add (AUDACIOUS_MENU_PLAYLIST_RCLICK, - playlist_menu_item); - - main_menu_item = gtk_image_menu_item_new_with_label (_("Streambrowser")); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (main_menu_item), - gtk_image_new_from_file - (STREAMBROWSER_ICON_SMALL)); - gtk_widget_show (main_menu_item); - g_signal_connect (G_OBJECT (main_menu_item), "activate", - G_CALLBACK (on_plugin_services_menu_item_click), NULL); - aud_menu_plugin_item_add (AUDACIOUS_MENU_MAIN, main_menu_item); - - /* main streambrowser window */ - streambrowser_win_init (); - streambrowser_win_set_update_function (streamdir_update); - - /* others */ - update_thread_mutex = g_mutex_new (); - update_thread_data_queue = g_queue_new (); - - AUDDBG("gui initialized\n"); -} - -static void gui_done () -{ - /* the plugin services menu */ - aud_menu_plugin_item_remove (AUDACIOUS_MENU_PLAYLIST_RCLICK, - playlist_menu_item); - aud_menu_plugin_item_remove (AUDACIOUS_MENU_MAIN, main_menu_item); - - /* main streambrowser window */ - streambrowser_win_hide (); - streambrowser_win_done (); - - /* others */ - if (update_thread_mutex) - g_mutex_free (update_thread_mutex); - update_thread_mutex = NULL; - if (update_thread_data_queue) - g_queue_free (update_thread_data_queue); - update_thread_data_queue = NULL; - - AUDDBG("gui destroyed\n"); -} - -static void streamdir_update (streamdir_t * streamdir, category_t * category, - streaminfo_t * streaminfo, - gboolean add_to_playlist) -{ - AUDDBG - ("requested streamdir update (streamdir = '%s', category = '%s', streaminfo = '%s', add_to_playlist = %d)\n", - streamdir == NULL ? "" : streamdir->name, - category == NULL ? "" : category->name, - streaminfo == NULL ? "" : streaminfo->name, add_to_playlist); - - if (g_queue_get_length (update_thread_data_queue) >= MAX_UPDATE_THREADS) - { - AUDDBG - ("another %d streamdir updates are pending, this request will be dropped\n", - g_queue_get_length (update_thread_data_queue)); - } - else - { - g_mutex_lock (update_thread_mutex); - - /* do we have a running thread? */ - if (g_queue_get_length (update_thread_data_queue) > 0) - { - int i; - gboolean exists = FALSE; - update_thread_data_t *update_thread_data; - - /* search for another identic update request */ - for (i = 0; i < g_queue_get_length (update_thread_data_queue); i++) - { - update_thread_data = - g_queue_peek_nth (update_thread_data_queue, i); - if (update_thread_data->streamdir == streamdir - && update_thread_data->category == category - && update_thread_data->streaminfo == streaminfo - && update_thread_data->add_to_playlist == add_to_playlist) - { - exists = TRUE; - break; - } - } - - /* if no other similar request exists, we enqueue it */ - if (!exists) - { - AUDDBG - ("another %d streamdir updates are pending, this request will be queued\n", - g_queue_get_length (update_thread_data_queue)); - - update_thread_data = g_malloc (sizeof (update_thread_data_t)); - - update_thread_data->streamdir = streamdir; - update_thread_data->category = category; - update_thread_data->streaminfo = streaminfo; - update_thread_data->add_to_playlist = add_to_playlist; - - g_queue_push_tail (update_thread_data_queue, - update_thread_data); - } - else - { - AUDDBG - ("this request is already present in the queue, dropping\n"); - } - } - /* no thread is currently running, we start one */ - else - { - AUDDBG - ("no other streamdir updates are pending, starting to process this request immediately\n"); - - update_thread_data_t *data = - g_malloc (sizeof (update_thread_data_t)); - - data->streamdir = streamdir; - data->category = category; - data->streaminfo = streaminfo; - data->add_to_playlist = add_to_playlist; - - g_queue_push_tail (update_thread_data_queue, data); - - g_thread_create ((GThreadFunc) update_thread_core, NULL, FALSE, - NULL); - } - - g_mutex_unlock (update_thread_mutex); - } -} - -static gpointer update_thread_core (gpointer user_data) -{ - AUDDBG("entering update thread core\n"); - - /* try to get the last item in the queue, but don't remove it */ - g_mutex_lock (update_thread_mutex); - update_thread_data_t *data = NULL; - if (g_queue_get_length (update_thread_data_queue) > 0) - { - data = g_queue_peek_head (update_thread_data_queue); - } - g_mutex_unlock (update_thread_mutex); - - /* repetitively process the queue elements, until queue is empty */ - while (data != NULL && g_queue_get_length (update_thread_data_queue) > 0) - { - if (data->streamdir && !streamdir_is_valid(data->streamdir)) { - g_free(data); - g_mutex_lock(update_thread_mutex); - /* remove the just processed data from the queue */ - g_queue_pop_head(update_thread_data_queue); - /* try to get the last item in the queue */ - if (g_queue_get_length(update_thread_data_queue) > 0) - data = g_queue_peek_head(update_thread_data_queue); - else - data = NULL; - g_mutex_unlock(update_thread_mutex); - continue; - } - /* update a streaminfo */ - if (data->streaminfo != NULL) - { - gdk_threads_enter (); - streambrowser_win_set_streaminfo_state (data->streamdir, - data->category, - data->streaminfo, TRUE); - gdk_threads_leave (); - - if (data->add_to_playlist) - streaminfo_add_to_playlist (data->streaminfo); - else - { - /* shoutcast */ - if (strncmp - (data->streamdir->name, SHOUTCAST_NAME, - strlen (SHOUTCAST_NAME)) == 0) - { - shoutcast_streaminfo_fetch (data->category, - data->streaminfo); - } - /* xiph */ - else if (strncmp - (data->streamdir->name, XIPH_NAME, - strlen (XIPH_NAME)) == 0) - { - xiph_streaminfo_fetch (data->category, data->streaminfo); - } - /* bookmarks */ - else if (strncmp - (data->streamdir->name, BOOKMARKS_NAME, - strlen (BOOKMARKS_NAME)) == 0) - { - bookmarks_streaminfo_fetch (data->category, - data->streaminfo); - } - } - - gdk_threads_enter (); - if (!data->add_to_playlist) - streambrowser_win_set_streaminfo (data->streamdir, - data->category, - data->streaminfo); - streambrowser_win_set_streaminfo_state (data->streamdir, - data->category, - data->streaminfo, FALSE); - gdk_threads_leave (); - } - /* update a category */ - else if (data->category != NULL) - { - gdk_threads_enter (); - streambrowser_win_set_category_state (data->streamdir, - data->category, TRUE); - gdk_threads_leave (); - - /* shoutcast */ - if (strncmp - (data->streamdir->name, SHOUTCAST_NAME, - strlen (SHOUTCAST_NAME)) == 0) - { - shoutcast_category_fetch (data->streamdir, data->category); - } - /* xiph */ - else if (strncmp - (data->streamdir->name, XIPH_NAME, - strlen (XIPH_NAME)) == 0) - { - xiph_category_fetch (data->streamdir, data->category); - } - /* bookmarks */ - else if (strncmp - (data->streamdir->name, BOOKMARKS_NAME, - strlen (BOOKMARKS_NAME)) == 0) - { - bookmarks_category_fetch (data->streamdir, data->category); - } - - gdk_threads_enter (); - streambrowser_win_set_category (data->streamdir, data->category); - streambrowser_win_set_category_state (data->streamdir, - data->category, FALSE); - gdk_threads_leave (); - } - /* update a streamdir */ - else if (data->streamdir != NULL) - { - /* shoutcast */ - if (strncmp - (data->streamdir->name, SHOUTCAST_NAME, - strlen (SHOUTCAST_NAME)) == 0) - { - streamdir_t *streamdir = shoutcast_streamdir_fetch (); - if (streamdir != NULL) - { - gdk_threads_enter (); - streambrowser_win_set_streamdir (streamdir, SHOUTCAST_ICON); - gdk_threads_leave (); - } - } - /* xiph */ - else if (strncmp - (data->streamdir->name, XIPH_NAME, - strlen (XIPH_NAME)) == 0) - { - streamdir_t *streamdir = xiph_streamdir_fetch (); - if (streamdir != NULL) - { - gdk_threads_enter (); - streambrowser_win_set_streamdir (streamdir, XIPH_ICON); - gdk_threads_leave (); - } - } - /* bookmarks */ - else if (strncmp - (data->streamdir->name, BOOKMARKS_NAME, - strlen (BOOKMARKS_NAME)) == 0) - { - streamdir_t *streamdir = - bookmarks_streamdir_fetch (&streambrowser_cfg.bookmarks, - &streambrowser_cfg.bookmarks_count); - if (streamdir != NULL) - { - gdk_threads_enter (); - streambrowser_win_set_streamdir (streamdir, BOOKMARKS_ICON); - gdk_threads_leave (); - } - } - } - /* update all streamdirs */ - else - { - /* shoutcast */ - streamdir_t *streamdir = shoutcast_streamdir_fetch (); - if (streamdir != NULL) - { - gdk_threads_enter (); - streambrowser_win_set_streamdir (streamdir, SHOUTCAST_ICON); - gdk_threads_leave (); - } - /* xiph */ - streamdir = xiph_streamdir_fetch (); - if (streamdir != NULL) - { - gdk_threads_enter (); - streambrowser_win_set_streamdir (streamdir, XIPH_ICON); - gdk_threads_leave (); - } - /* bookmarks */ - streamdir = - bookmarks_streamdir_fetch (&streambrowser_cfg.bookmarks, - &streambrowser_cfg.bookmarks_count); - if (streamdir != NULL) - { - gdk_threads_enter (); - streambrowser_win_set_streamdir (streamdir, BOOKMARKS_ICON); - gdk_threads_leave (); - - int i; - for (i = 0; i < category_get_count (streamdir); i++) - streamdir_update (streamdir, - category_get_by_index (streamdir, i), - NULL, FALSE); - } - } - - g_free (data); - - g_mutex_lock (update_thread_mutex); - - /* remove the just processed data from the queue */ - g_queue_pop_head (update_thread_data_queue); - - /* try to get the last item in the queue */ - if (g_queue_get_length (update_thread_data_queue) > 0) - data = g_queue_peek_head (update_thread_data_queue); - else - data = NULL; - - g_mutex_unlock (update_thread_mutex); - } - - AUDDBG("leaving update thread core\n"); - - return NULL; -} - -static void streaminfo_add_to_playlist (streaminfo_t * streaminfo) -{ - gint playlist = aud_playlist_get_active (); - gchar * unix_name = g_build_filename (aud_util_get_localdir (), - PLAYLIST_TEMP_FILE, NULL); - gchar * uri_name = g_filename_to_uri (unix_name, NULL, NULL); - - if (strlen (streaminfo->playlist_url) > 0) - { - AUDDBG("fetching stream playlist for station '%s' from '%s'\n", - streaminfo->name, streaminfo->playlist_url); - - if (! fetch_remote_to_local_file (streaminfo->playlist_url, uri_name)) - { - failure ("shoutcast: stream playlist '%s' could not be downloaded " - "to '%s'\n", streaminfo->playlist_url, uri_name); - goto DONE; - } - - AUDDBG("stream playlist '%s' successfuly downloaded to '%s'\n", - streaminfo->playlist_url, uri_name); - - aud_playlist_insert_playlist (playlist, -1, uri_name); - AUDDBG("stream playlist '%s' added\n", streaminfo->playlist_url); - } - - if (strlen (streaminfo->url) > 0) - { - aud_playlist_entry_insert (playlist, -1, g_strdup (streaminfo->url), - NULL); - AUDDBG("stream '%s' added\n", streaminfo->url); - } - -DONE: - g_free (unix_name); - g_free (uri_name); -} - -static void on_plugin_services_menu_item_click () -{ - AUDDBG("on_plugin_services_menu_item_click()\n"); - - streambrowser_win_show (); - streamdir_update (NULL, NULL, NULL, FALSE); -} diff -Nru audacious-plugins-2.4.4/src/streambrowser/streambrowser.h audacious-plugins-3.2/src/streambrowser/streambrowser.h --- audacious-plugins-2.4.4/src/streambrowser/streambrowser.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/streambrowser/streambrowser.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ -/* - * Audacious Streambrowser Plugin - * - * Copyright (c) 2008 Calin Crisan - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - -#ifndef STREAMBROWSER_H -#define STREAMBROWSER_H - -#define DEF_STRING_LEN 1024 -#define DEF_BUFFER_SIZE 512 -#define MAX_UPDATE_THREADS 4 -#define PLAYLIST_TEMP_FILE "streambrowser-playlist-temp.pls" -#define STREAMBROWSER_ICON_SMALL DATA_DIR G_DIR_SEPARATOR_S "images" G_DIR_SEPARATOR_S "streambrowser-16x16.png" -#define STREAMBROWSER_ICON DATA_DIR G_DIR_SEPARATOR_S "images" G_DIR_SEPARATOR_S "streambrowser-64x64.png" - - -#include - -#include -#include - - -void failure (const char *fmt, ...); -gboolean fetch_remote_to_local_file (gchar * remote_url, gchar * local_url); - -void config_load (); -void config_save (); - - /* returns true if the substring has been found, false otherwise */ -gboolean mystrcasestr (const char *haystack, const char *needle); - - -#endif // STREAMBROWSER_H diff -Nru audacious-plugins-2.4.4/src/streambrowser/streamdir.c audacious-plugins-3.2/src/streambrowser/streamdir.c --- audacious-plugins-2.4.4/src/streambrowser/streamdir.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/streambrowser/streamdir.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,187 +0,0 @@ -/* - * Audacious Streambrowser Plugin - * - * Copyright (c) 2008 Calin Crisan - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - -#include -#include - -#include "streambrowser.h" -#include "streamdir.h" - -static GList *all_streamdirs = NULL; - -gboolean streamdir_is_valid(streamdir_t *streamdir) { - return (NULL != g_list_find(all_streamdirs,streamdir)); -} - -streamdir_t *streamdir_new (gchar * name) -{ - streamdir_t *streamdir = (streamdir_t *) g_malloc (sizeof (streamdir_t)); - strncpy (streamdir->name, name, DEF_STRING_LEN); - streamdir->category_list = NULL; - - all_streamdirs = g_list_append(all_streamdirs,streamdir); - return streamdir; -} - -void streamdir_delete (streamdir_t * streamdir) -{ - GList *iterator; - category_t *category; - - for (iterator = g_list_first (streamdir->category_list); iterator != NULL; - iterator = g_list_next (iterator)) - { - category = iterator->data; - category_delete (category); - } - - g_list_free (streamdir->category_list); - g_free (streamdir); - all_streamdirs = g_list_remove(all_streamdirs,streamdir); -} - -category_t *category_new (gchar * name) -{ - category_t *category = (category_t *) g_malloc (sizeof (category_t)); - strncpy (category->name, name, DEF_STRING_LEN); - category->streaminfo_list = NULL; - - return category; -} - -void category_delete (category_t * category) -{ - GList *iterator; - streaminfo_t *streaminfo; - - for (iterator = g_list_first (category->streaminfo_list); iterator != NULL; - iterator = g_list_next (iterator)) - { - streaminfo = iterator->data; - streaminfo_delete (streaminfo); - } - - g_list_free (category->streaminfo_list); - g_free (category); -} - -void category_add (streamdir_t * streamdir, category_t * category) -{ - streamdir->category_list = - g_list_append (streamdir->category_list, category); -} - -void category_remove (streamdir_t * streamdir, category_t * category) -{ - streamdir->category_list = - g_list_remove (streamdir->category_list, category); -} - -category_t *category_get_by_index (streamdir_t * streamdir, gint index) -{ - return (category_t *) g_list_nth_data (streamdir->category_list, index); -} - -category_t *category_get_by_name (streamdir_t * streamdir, gchar * name) -{ - GList *iterator; - category_t *category; - - for (iterator = g_list_first (streamdir->category_list); iterator != NULL; - iterator = g_list_next (iterator)) - { - category = iterator->data; - if (strncasecmp (category->name, name, DEF_STRING_LEN) == 0) - return category; - } - - return NULL; -} - -gint category_get_count (streamdir_t * streamdir) -{ - return g_list_length (streamdir->category_list); -} - -gint category_get_index (streamdir_t * streamdir, category_t * category) -{ - return g_list_index (streamdir->category_list, category); -} - - -streaminfo_t *streaminfo_new (gchar * name, gchar * playlist_url, gchar * url, - gchar * current_track) -{ - streaminfo_t *streaminfo = - (streaminfo_t *) g_malloc (sizeof (streaminfo_t)); - strncpy (streaminfo->name, name, DEF_STRING_LEN); - strncpy (streaminfo->playlist_url, playlist_url, DEF_STRING_LEN); - strncpy (streaminfo->url, url, DEF_STRING_LEN); - strncpy (streaminfo->current_track, current_track, DEF_STRING_LEN); - - return streaminfo; -} - -void streaminfo_delete (streaminfo_t * streaminfo) -{ - g_free (streaminfo); -} - -void streaminfo_add (category_t * category, streaminfo_t * streaminfo) -{ - category->streaminfo_list = - g_list_append (category->streaminfo_list, streaminfo); -} - -void streaminfo_remove (category_t * category, streaminfo_t * streaminfo) -{ - category->streaminfo_list = - g_list_remove (category->streaminfo_list, streaminfo); -} - -streaminfo_t *streaminfo_get_by_index (category_t * category, gint index) -{ - return (streaminfo_t *) g_list_nth_data (category->streaminfo_list, index); -} - -streaminfo_t *streaminfo_get_by_name (category_t * category, gchar * name) -{ - GList *iterator; - streaminfo_t *streaminfo; - - for (iterator = g_list_first (category->streaminfo_list); iterator != NULL; - iterator = g_list_next (iterator)) - { - streaminfo = iterator->data; - if (strncasecmp (streaminfo->name, name, DEF_STRING_LEN) == 0) - return streaminfo; - } - - return NULL; -} - -gint streaminfo_get_count (category_t * category) -{ - return g_list_length (category->streaminfo_list); -} - -gint streaminfo_get_index (category_t * category, streaminfo_t * streaminfo) -{ - return g_list_index (category->streaminfo_list, streaminfo); -} diff -Nru audacious-plugins-2.4.4/src/streambrowser/streamdir.h audacious-plugins-3.2/src/streambrowser/streamdir.h --- audacious-plugins-2.4.4/src/streambrowser/streamdir.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/streambrowser/streamdir.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -/* - * Audacious Streambrowser Plugin - * - * Copyright (c) 2008 Calin Crisan - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - -#ifndef STREAMDIR_H -#define STREAMDIR_H - -#include - -#include "streambrowser.h" - - -typedef struct -{ - gchar name[DEF_STRING_LEN]; - gchar playlist_url[DEF_STRING_LEN]; - gchar url[DEF_STRING_LEN]; - gchar current_track[DEF_STRING_LEN]; -} -streaminfo_t; - -typedef struct -{ - gchar name[DEF_STRING_LEN]; - GList *streaminfo_list; -} -category_t; - -typedef struct -{ - gchar name[DEF_STRING_LEN]; - GList *category_list; -} -streamdir_t; - -gboolean streamdir_is_valid(streamdir_t *streamdir); - -streamdir_t *streamdir_new (gchar * name); -void streamdir_delete (streamdir_t * streamdir); - -category_t *category_new (gchar * name); -void category_delete (category_t * category); -void category_add (streamdir_t * streamdir, category_t * category); -void category_remove (streamdir_t * streamdir, category_t * category); -category_t *category_get_by_index (streamdir_t * streamdir, gint index); -category_t *category_get_by_name (streamdir_t * streamdir, gchar * name); -gint category_get_count (streamdir_t * streamdir); -gint category_get_index (streamdir_t * streamdir, category_t * category); - -streaminfo_t *streaminfo_new (gchar * name, gchar * playlist_url, gchar * url, - gchar * current_track); -void streaminfo_delete (streaminfo_t * streaminfo); -void streaminfo_free (streaminfo_t * streaminfo); -void streaminfo_add (category_t * category, streaminfo_t * streaminfo); -void streaminfo_remove (category_t * category, streaminfo_t * streaminfo); -streaminfo_t *streaminfo_get_by_index (category_t * category, gint index); -streaminfo_t *streaminfo_get_by_name (category_t * category, gchar * name); -gint streaminfo_get_count (category_t * category); -gint streaminfo_get_index (category_t * category, streaminfo_t * streaminfo); - - -#endif // STREAMDIR_H diff -Nru audacious-plugins-2.4.4/src/streambrowser/xiph.c audacious-plugins-3.2/src/streambrowser/xiph.c --- audacious-plugins-2.4.4/src/streambrowser/xiph.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/streambrowser/xiph.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,304 +0,0 @@ -/* - * Audacious Streambrowser Plugin - * - * Copyright (c) 2008 Calin Crisan - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - -#include -#include -#include -#include - -#include -#include - -#include "streambrowser.h" -#include "xiph.h" - - -typedef struct -{ - gchar name[DEF_STRING_LEN]; - gchar url[DEF_STRING_LEN]; - gchar current_song[DEF_STRING_LEN]; - gchar genre[DEF_STRING_LEN]; -} -xiph_entry_t; - - -static xiph_entry_t *xiph_entries = NULL; -static int xiph_entry_count = 0; - -typedef struct -{ - gchar *name; - gchar *match_string; -} -xiph_category_t; - -/* inspired from streamtuner's xiph plugin */ -static xiph_category_t xiph_categories[] = -{ - {"Alternative", - "alternative indie goth college industrial punk hardcore ska"}, - {"Electronic", - "electronic ambient drum trance techno house downtempo breakbeat jungle garage"}, - {"Classical", "classical opera symphonic"}, - {"Country", "country swing"}, - {"Hip-Hop/Rap", "hip hop rap turntable"}, - {"Jazz", "jazz swing"}, - {"Oldies", "oldies disco 50s 60s 70s 80s 90s"}, - {"Rop", "top pop"}, - {"Rock", "rock metal"}, - {"R&B/Soul", "r&b funk soul urban"}, - {"Spiritual", "spiritual gospel christian muslim jewish religio"}, - {"Spoken", "spoken talk comedy"}, - {"World", "world reggae island african european east asia"}, - {"Other", "various mixed misc eclectic film show instrumental"} -}; - - -static void refresh_streamdir (void); - /* returns true if any of the words in string1 is present in string2 */ -static gboolean genre_match (gchar * string1, gchar * string2); - -gboolean xiph_streaminfo_fetch (category_t * category, - streaminfo_t * streaminfo) -{ - gint entryno; - - refresh_streamdir (); - - /* find the corresponding xiph entry */ - for (entryno = 0; entryno < xiph_entry_count; entryno++) - { - if (strcmp (xiph_entries[entryno].name, streaminfo->name) == 0) - { - strcpy (streaminfo->name, xiph_entries[entryno].name); - strcpy (streaminfo->url, xiph_entries[entryno].url); - strcpy (streaminfo->current_track, - xiph_entries[entryno].current_song); - - break; - } - } - - return TRUE; -} - -gboolean xiph_category_fetch (streamdir_t * streamdir, category_t * category) -{ - refresh_streamdir (); - - gint entryno, categoryno; - gint xiph_category_count = - sizeof (xiph_categories) / sizeof (xiph_category_t); - xiph_category_t *xiph_category = NULL; - - for (categoryno = 0; categoryno < xiph_category_count; categoryno++) - if (strcmp (xiph_categories[categoryno].name, category->name) == 0) - { - xiph_category = xiph_categories + categoryno; - break; - } - - /* somehow we've got an invalid/unrecognized category */ - if (xiph_category == NULL) - { - failure ("xiph: got an unrecognized category: '%s'\n", category->name); - return FALSE; - } - - /* free/remove any existing streaminfos in this category */ - while (streaminfo_get_count (category) > 0) - streaminfo_remove (category, streaminfo_get_by_index (category, 0)); - - /* see what entries match this category */ - for (entryno = 0; entryno < xiph_entry_count; entryno++) - { - if (genre_match - (xiph_category->match_string, xiph_entries[entryno].genre)) - { - streaminfo_t *streaminfo = - streaminfo_new (xiph_entries[entryno].name, "", - xiph_entries[entryno].url, - xiph_entries[entryno].current_song); - streaminfo_add (category, streaminfo); - } - } - - /* if the requested category is the last one in the list ("other"), - we fill it with all the entries that don't match the rest of categories */ - if (xiph_category == &xiph_categories[xiph_category_count - 1]) - { - for (entryno = 0; entryno < xiph_entry_count; entryno++) - { - gboolean matched = FALSE; - - for (categoryno = 0; categoryno < xiph_category_count; categoryno++) - if (genre_match - (xiph_entries[entryno].genre, - xiph_categories[categoryno].match_string)) - { - matched = TRUE; - break; - } - - if (!matched) - { - streaminfo_t *streaminfo = - streaminfo_new (xiph_entries[entryno].name, "", - xiph_entries[entryno].url, - xiph_entries[entryno].current_song); - streaminfo_add (category, streaminfo); - } - } - } - - return TRUE; -} - - -streamdir_t *xiph_streamdir_fetch (void) -{ - streamdir_t *streamdir = streamdir_new (XIPH_NAME); - gint categno; - - refresh_streamdir (); - - for (categno = 0; - categno < sizeof (xiph_categories) / sizeof (xiph_category_t); - categno++) - { - category_t *category = category_new (xiph_categories[categno].name); - category_add (streamdir, category); - } - - return streamdir; -} - -static void refresh_streamdir (void) -{ - gchar * unix_name = g_build_filename (aud_util_get_localdir (), - XIPH_TEMP_FILENAME, NULL); - gchar * uri_name = g_filename_to_uri (unix_name, NULL, NULL); - - /* free any previously fetched streamdir data */ - if (xiph_entries != NULL) - { - free (xiph_entries); - xiph_entries = NULL; - } - xiph_entry_count = 0; - - AUDDBG("xiph: fetching streaming directory file '%s'\n", - XIPH_STREAMDIR_URL); - - if (! fetch_remote_to_local_file (XIPH_STREAMDIR_URL, uri_name)) - { - failure ("xiph: stream directory file '%s' could not be downloaded to " - "'%s'\n", XIPH_STREAMDIR_URL, uri_name); - goto DONE; - } - - AUDDBG("xiph: stream directory file '%s' successfuly downloaded to '%s'\n", - XIPH_STREAMDIR_URL, uri_name); - - xmlDoc * doc = xmlReadFile (uri_name, NULL, 0); - - if (doc == NULL) - { - failure ("xiph: failed to read stream directory file\n"); - goto DONE; - } - - xmlNode *root_node = xmlDocGetRootElement (doc); - xmlNode *node, *child; - gchar *content; - - root_node = root_node->children; - - for (node = root_node; node != NULL; node = node->next) - { - if (node->type == XML_ELEMENT_NODE) - { - xiph_entries = - realloc (xiph_entries, - sizeof (xiph_entry_t) * (xiph_entry_count + 1)); - - for (child = node->children; child != NULL; child = child->next) - { - if (strcmp ((gchar *) child->name, "server_name") == 0) - { - content = (gchar *) xmlNodeGetContent (child); - strcpy (xiph_entries[xiph_entry_count].name, content); - xmlFree (content); - } - else if (strcmp ((gchar *) child->name, "listen_url") == 0) - { - content = (gchar *) xmlNodeGetContent (child); - strcpy (xiph_entries[xiph_entry_count].url, content); - xmlFree (content); - } - else if (strcmp ((gchar *) child->name, "current_song") == 0) - { - content = (gchar *) xmlNodeGetContent (child); - strcpy (xiph_entries[xiph_entry_count].current_song, - content); - xmlFree (content); - } - else if (strcmp ((gchar *) child->name, "genre") == 0) - { - content = (gchar *) xmlNodeGetContent (child); - strcpy (xiph_entries[xiph_entry_count].genre, content); - xmlFree (content); - } - } - - xiph_entry_count++; - } - } - - xmlFreeDoc (doc); - - AUDDBG("xiph: streaming directory successfuly loaded\n"); - -DONE: - g_free (unix_name); - g_free (uri_name); -} - -static gboolean genre_match (gchar * string1, gchar * string2) -{ - gchar **genres = g_strsplit (string1, " ", -1); - gboolean matched = FALSE; - gint n; - - if (genres != NULL) - { - for (n = 0; genres[n] != NULL; n++) - { - if (mystrcasestr (string2, genres[n])) - { - matched = TRUE; - break; - } - } - g_strfreev (genres); - } - - return matched; -} diff -Nru audacious-plugins-2.4.4/src/streambrowser/xiph.h audacious-plugins-3.2/src/streambrowser/xiph.h --- audacious-plugins-2.4.4/src/streambrowser/xiph.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/streambrowser/xiph.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,38 +0,0 @@ -/* - * Audacious Streambrowser Plugin - * - * Copyright (c) 2008 Calin Crisan - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; under version 3 of the License. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - -#ifndef XIPH_H -#define XIPH_H - -#include "streambrowser.h" -#include "streamdir.h" - -#define XIPH_NAME "Xiph" -#define XIPH_ICON DATA_DIR G_DIR_SEPARATOR_S "images" G_DIR_SEPARATOR_S "xiph.png" -#define XIPH_STREAMDIR_URL "http://dir.xiph.org/yp.xml" -#define XIPH_TEMP_FILENAME "streambrowser-xiph-temp.xml" - - -gboolean xiph_streaminfo_fetch (category_t * category, - streaminfo_t * streaminfo); -gboolean xiph_category_fetch (streamdir_t * streamdir, category_t * category); -streamdir_t *xiph_streamdir_fetch (); - - -#endif // SHOUTCAST_H diff -Nru audacious-plugins-2.4.4/src/sun/about.c audacious-plugins-3.2/src/sun/about.c --- audacious-plugins-2.4.4/src/sun/about.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/sun/about.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2001 CubeSoft Communications, Inc. - * - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include - -#include "sun.h" -#include - -void sun_about(void) -{ - static GtkWidget *dialog = NULL; - - audgui_simple_message(&dialog, GTK_MESSAGE_INFO, - _("About the Sun Driver"), - _("XMMS BSD Sun Driver\n\n" - "Copyright (c) 2001 CubeSoft Communications, Inc.\n" - "Maintainer: .\n")); -} - diff -Nru audacious-plugins-2.4.4/src/sun/audio.c audacious-plugins-3.2/src/sun/audio.c --- audacious-plugins-2.4.4/src/sun/audio.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/sun/audio.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,506 +0,0 @@ -/* - * Copyright (C) 2001 CubeSoft Communications, Inc. - * - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -/* FIXME: g_error() is used several places, it will exit xmms */ - -#include -#include "sun.h" -#include "resample.h" - -static int sun_bps(int, int, int); -static int sun_format(gint); - -static void sun_setformat(gint, int, int); -static void sun_setparams(void); -static void *sun_loop(void *); -static int sun_downsample(gpointer, guint, guint, guint); - -static gboolean prebuffer, remove_prebuffer; -static pthread_t buffer_thread; -static int (*sun_convert)(void **, int); -static int rd_index, wr_index; -static int buffer_size; -static int prebuffer_size; -static int output_time_offset; -static int device_buffer_used; -static int blocksize; -static char *buffer; -static guint64 output_bytes; -static guint64 written; - -/* - * The format of the data from the input plugin - * This will never change during a song. - */ -struct sun_format input; - -/* - * The format we get from the effect plugin. - * This will be different from input if the effect plugin does - * some kind of format conversion. - */ -struct sun_format effect; - -/* - * The format of the data we actually send to the soundcard. - * This might be different from effect if we need to resample or do - * some other format conversion. - */ -struct sun_format output; - -static int sun_bps(int sunfmt, int rate, int nch) -{ - int bitrate; - - bitrate = rate * nch; - - switch (sunfmt) - { - case AUDIO_ENCODING_ULINEAR_BE: - case AUDIO_ENCODING_ULINEAR_LE: - case AUDIO_ENCODING_SLINEAR_BE: - case AUDIO_ENCODING_SLINEAR_LE: - bitrate *= 2; - break; - } - - return (bitrate); -} - -static int sun_format(gint fmt) -{ - switch (fmt) - { - case FMT_U8: - return (AUDIO_ENCODING_PCM8); - case FMT_S8: - return (AUDIO_ENCODING_SLINEAR); - case FMT_U16_LE: - return (AUDIO_ENCODING_ULINEAR_LE); - case FMT_U16_BE: - return (AUDIO_ENCODING_ULINEAR_BE); - case FMT_S16_LE: - return (AUDIO_ENCODING_SLINEAR_LE); - case FMT_S16_BE: - return (AUDIO_ENCODING_SLINEAR_BE); - } - return -1; -} - -static void sun_setformat(gint fmt, int rate, int nch) -{ - int sun; - - sun = sun_format(fmt); - - effect.format.sun = sun; - effect.format.xmms = fmt; - effect.frequency = rate; - effect.channels = nch; - effect.bps = sun_bps(sun, rate, nch); - - output.format.sun = sun; - output.format.xmms = fmt; - output.frequency = rate; - output.channels = nch; - sun_setparams(); - - output.bps = sun_bps(output.format.sun, output.frequency, - output.channels); - - audio.input = &input; - audio.output = &output; - audio.effect = &effect; -} - -void sun_setparams(void) -{ - audio_info_t info; - audio_encoding_t enc; - - AUDIO_INITINFO(&info); - - info.mode = AUMODE_PLAY; - if (ioctl(audio.fd, AUDIO_SETINFO, &info) != 0) - { - g_error("%s: cannot play (%s)", audio.devaudio, - strerror(errno)); - return; - } - - /* - * Pass 1: try the preferred encoding, if it is supported. - */ - enc.index = 0; - while (ioctl(audio.fd, AUDIO_GETENC, &enc) == 0 && - enc.encoding != output.format.sun) - enc.index++; - - info.play.encoding = enc.encoding; - info.play.precision = enc.precision; - strcpy(output.name, enc.name); - if (ioctl(audio.fd, AUDIO_SETINFO, &info) != 0) - { - g_error("%s: unsupported encoding: %s (%s)", audio.devaudio, - output.name, strerror(errno)); - return; - } - - info.play.channels = output.channels; - ioctl(audio.fd, AUDIO_SETINFO, &info); - - info.play.sample_rate = output.frequency; - if (ioctl(audio.fd, AUDIO_SETINFO, &info) < 0) - { - g_error("%s: cannot handle %i Hz (%s)", audio.devaudio, - output.frequency, strerror(errno)); - return; - } - - if (ioctl(audio.fd, AUDIO_GETINFO, &info) != 0) - { - blocksize = SUN_DEFAULT_BLOCKSIZE; - output.channels = info.play.channels; - } - else - { - blocksize = blocksize; - } - - sun_convert = sun_get_convert_func(output.format.sun, - sun_format(effect.format.xmms)); -#if 0 - if (sun_convert != NULL) - { - g_warning("audio conversion (output=0x%x effect=0x%x)", - output.format.sun, sun_format(effect.format.xmms)); - } -#endif -} - -static inline void sun_bufused(void) -{ - audio_offset_t ooffs; - - if (audio.paused) - device_buffer_used = 0; - else if (ioctl(audio.fd, AUDIO_GETOOFFS, &ooffs) == 0) - device_buffer_used = ooffs.offset; -} - -int sun_written_time(void) -{ - if (!audio.going) - return 0; - - return ((written * 1000) / effect.bps); -} - -int sun_output_time(void) -{ - guint64 bytes; - - if (!audio.fd || !audio.going) - return 0; - - bytes = output_bytes < device_buffer_used ? - 0 : output_bytes - device_buffer_used; - return (output_time_offset + ((bytes * 1000) / output.bps)); -} - -static inline int sun_used(void) -{ - if (wr_index >= rd_index) - return (wr_index - rd_index); - - return (buffer_size - (rd_index - wr_index)); -} - -int sun_playing(void) -{ - if (!audio.going) - return 0; - - if (!sun_used() && (device_buffer_used - (3 * blocksize)) <= 0) - return (FALSE); - - return (TRUE); -} - -int sun_free(void) -{ - if (remove_prebuffer && prebuffer) - { - prebuffer = FALSE; - remove_prebuffer = FALSE; - } - if (prebuffer) - remove_prebuffer = TRUE; - - if (rd_index > wr_index) - return ((rd_index - wr_index) - blocksize - 1); - - return ((buffer_size - (wr_index - rd_index)) - blocksize - 1); -} - -static inline ssize_t write_all(int fd, const void *buf, size_t count) -{ - static ssize_t done; - - for (done = 0; count > done; ) - { - static ssize_t n; - - n = write(fd, buf, count - done); - if (n == -1) - { - if (errno == EINTR) - continue; - else - break; - } - done += n; - } - - return (done); -} - -static inline void sun_write_audio(gpointer data, int length) -{ - if (sun_convert != NULL) - length = sun_convert(&data, length); - - if (effect.frequency == output.frequency) - { - output_bytes += write_all(audio.fd, data, length); - } - else - { - output_bytes += sun_downsample(data, length, - effect.frequency, output.frequency); - } -} - -static void sun_bswap16(guint16 *data, int len) -{ - int i; - - for (i = 0; i < len; i += 2, data++) - *data = GUINT16_SWAP_LE_BE(*data); -} - -static int sun_downsample(gpointer ob, guint length, guint speed, guint espeed) -{ - guint w = 0; - static gpointer nbuffer = NULL; - static int nbuffer_size = 0; - - switch (output.format.sun) { - case AUDIO_ENCODING_SLINEAR_BE: - case AUDIO_ENCODING_SLINEAR_LE: - if (output.channels == 2) - RESAMPLE_STEREO(gint16); - else - RESAMPLE_MONO(gint16); - break; - case AUDIO_ENCODING_ULINEAR_BE: - case AUDIO_ENCODING_ULINEAR_LE: - if (output.channels == 2) - RESAMPLE_STEREO(guint16); - else - RESAMPLE_MONO(guint16); - break; - case AUDIO_ENCODING_SLINEAR: - if (output.channels == 2) - RESAMPLE_STEREO(gint8); - else - RESAMPLE_MONO(gint8); - break; - case AUDIO_ENCODING_ULINEAR: - if (output.channels == 2) - RESAMPLE_STEREO(guint8); - else - RESAMPLE_MONO(guint8); - break; - } - return (w); -} - -void sun_write(gpointer ptr, int length) -{ - int cnt, off = 0; - - remove_prebuffer = FALSE; - written += length; - while (length > 0) - { - cnt = MIN(length, buffer_size - wr_index); - memcpy(buffer + wr_index, (char *) ptr + off, cnt); - wr_index = (wr_index + cnt) % buffer_size; - length -= cnt; - off += cnt; - } -} - -void sun_close(void) -{ - if (!audio.going) - return; - - audio.going = 0; - - pthread_join(buffer_thread, NULL); - - sun_get_convert_buffer(0); - wr_index = 0; - rd_index = 0; -} - -void sun_flush(int time) -{ - ioctl(audio.fd, AUDIO_FLUSH, NULL); - - output_time_offset = time; - written = (guint16)(time / 10) * (guint64)(input.bps / 100); - output_bytes = 0; -} - -void sun_pause(short p) -{ - if (p == TRUE) - audio.do_pause = TRUE; - else - audio.unpause = TRUE; -} - -static void* sun_loop(void *arg) -{ - struct timeval tv; - int length, cnt; - fd_set set; - - while (audio.going) - { - if (sun_used() > prebuffer_size) - prebuffer = FALSE; - - if (sun_used() > 0 && !audio.paused && !prebuffer) - { - tv.tv_sec = 0; - tv.tv_usec = 10000; - FD_ZERO(&set); - FD_SET(audio.fd, &set); - - if (select(audio.fd + 1, NULL, &set, NULL, &tv) > 0) - { - length = MIN(blocksize, sun_used()); - while (length > 0) - { - cnt = MIN(length, - buffer_size - rd_index); - sun_write_audio( - buffer + rd_index, cnt); - rd_index = (rd_index + cnt) % - buffer_size; - length -= cnt; - } - } - } - else - g_usleep(10000); - - sun_bufused(); - - if (audio.do_pause && !audio.paused) - { - audio.do_pause = FALSE; - audio.paused = TRUE; - - rd_index -= device_buffer_used; - output_bytes -= device_buffer_used; - if (rd_index < 0) - rd_index += buffer_size; - ioctl(audio.fd, AUDIO_FLUSH, NULL); - } - else if (audio.unpause && audio.paused) - { - audio.unpause = FALSE; - close(audio.fd); - audio.fd = open(audio.devaudio, O_RDWR); - sun_setparams(); - audio.paused = FALSE; - } - } - - close(audio.fd); - g_free(buffer); - pthread_exit(NULL); -} - -int sun_open(gint fmt, int rate, int nch) -{ - audio_info_t info; - - AUDIO_INITINFO(&info); - - if ((audio.fd = open(audio.devaudio, O_RDWR)) < 0) - { - g_error("%s: %s", audio.devaudio, strerror(errno)); - return 0; - } - - input.format.xmms = fmt; - input.frequency = rate; - input.channels = nch; - input.bps = sun_bps(sun_format(fmt), rate, nch); - sun_setformat(fmt, rate, nch); - - if (ioctl(audio.fd, AUDIO_GETINFO, &info) != 0) - blocksize = SUN_DEFAULT_BLOCKSIZE; - else - blocksize = info.blocksize; - - buffer_size = audio.req_buffer_size; - - if (buffer_size < SUN_MIN_BUFFER_SIZE) - buffer_size = SUN_MIN_BUFFER_SIZE; - - prebuffer_size = (buffer_size * audio.req_prebuffer_size) / 100; - - buffer_size += blocksize; - buffer = g_malloc0(buffer_size); - - prebuffer = TRUE; - wr_index = 0; - rd_index = 0; - output_time_offset = 0; - written = 0; - output_bytes = 0; - - audio.paused = FALSE; - audio.do_pause = FALSE; - audio.unpause = FALSE; - remove_prebuffer = FALSE; - - audio.going++; - - pthread_create(&buffer_thread, NULL, sun_loop, NULL); - - return 1; -} diff -Nru audacious-plugins-2.4.4/src/sun/audioio.h audacious-plugins-3.2/src/sun/audioio.h --- audacious-plugins-2.4.4/src/sun/audioio.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/sun/audioio.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,326 +0,0 @@ -/* $NetBSD: audioio.h,v 1.29 2005/12/11 12:25:20 christos Exp $ */ - -/* - * Copyright (c) 1991-1993 Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the Computer Systems - * Engineering Group at Lawrence Berkeley Laboratory. - * 4. Neither the name of the University nor of the Laboratory may be used - * to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ - -#ifndef _SYS_AUDIOIO_H_ -#define _SYS_AUDIOIO_H_ - -/* - * Audio device - */ -struct audio_prinfo { - u_int sample_rate; /* sample rate in bit/s */ - u_int channels; /* number of channels, usually 1 or 2 */ - u_int precision; /* number of bits/sample */ - u_int encoding; /* data encoding (AUDIO_ENCODING_* below) */ - u_int gain; /* volume level */ - u_int port; /* selected I/O port */ - u_int seek; /* BSD extension */ - u_int avail_ports; /* available I/O ports */ - u_int buffer_size; /* total size audio buffer */ - u_int _ispare[1]; - /* Current state of device: */ - u_int samples; /* number of samples */ - u_int eof; /* End Of File (zero-size writes) counter */ - u_char pause; /* non-zero if paused, zero to resume */ - u_char error; /* non-zero if underflow/overflow ocurred */ - u_char waiting; /* non-zero if another process hangs in open */ - u_char balance; /* stereo channel balance */ - u_char cspare[2]; - u_char open; /* non-zero if currently open */ - u_char active; /* non-zero if I/O is currently active */ -}; -typedef struct audio_prinfo audio_prinfo_t; - -struct audio_info { - struct audio_prinfo play; /* Info for play (output) side */ - struct audio_prinfo record; /* Info for record (input) side */ - - u_int monitor_gain; /* input to output mix */ - /* BSD extensions */ - u_int blocksize; /* H/W read/write block size */ - u_int hiwat; /* output high water mark */ - u_int lowat; /* output low water mark */ - u_int _ispare1; - u_int mode; /* current device mode */ -#define AUMODE_PLAY 0x01 -#define AUMODE_RECORD 0x02 -#define AUMODE_PLAY_ALL 0x04 /* don't do real-time correction */ -}; -typedef struct audio_info audio_info_t; - -#define AUDIO_INITINFO(p) \ - (void)memset((void *)(p), 0xff, sizeof(struct audio_info)) - -/* - * Parameter for the AUDIO_GETDEV ioctl to determine current - * audio devices. - */ -#define MAX_AUDIO_DEV_LEN 16 -typedef struct audio_device { - char name[MAX_AUDIO_DEV_LEN]; - char version[MAX_AUDIO_DEV_LEN]; - char config[MAX_AUDIO_DEV_LEN]; -} audio_device_t; - -typedef struct audio_offset { - u_int samples; /* Total number of bytes transferred */ - u_int deltablks; /* Blocks transferred since last checked */ - u_int offset; /* Physical transfer offset in buffer */ -} audio_offset_t; - -/* - * Supported audio encodings - */ -/* Encoding ID's */ -#define AUDIO_ENCODING_NONE 0 /* no encoding assigned */ -#define AUDIO_ENCODING_ULAW 1 /* ITU G.711 mu-law */ -#define AUDIO_ENCODING_ALAW 2 /* ITU G.711 A-law */ -#define AUDIO_ENCODING_PCM16 3 /* signed linear PCM, obsolete */ -#define AUDIO_ENCODING_LINEAR AUDIO_ENCODING_PCM16 /* SunOS compat */ -#define AUDIO_ENCODING_PCM8 4 /* unsigned linear PCM, obsolete */ -#define AUDIO_ENCODING_LINEAR8 AUDIO_ENCODING_PCM8 /* SunOS compat */ -#define AUDIO_ENCODING_ADPCM 5 /* adaptive differential PCM */ -#define AUDIO_ENCODING_SLINEAR_LE 6 -#define AUDIO_ENCODING_SLINEAR_BE 7 -#define AUDIO_ENCODING_ULINEAR_LE 8 -#define AUDIO_ENCODING_ULINEAR_BE 9 -#define AUDIO_ENCODING_SLINEAR 10 -#define AUDIO_ENCODING_ULINEAR 11 -#define AUDIO_ENCODING_MPEG_L1_STREAM 12 -#define AUDIO_ENCODING_MPEG_L1_PACKETS 13 -#define AUDIO_ENCODING_MPEG_L1_SYSTEM 14 -#define AUDIO_ENCODING_MPEG_L2_STREAM 15 -#define AUDIO_ENCODING_MPEG_L2_PACKETS 16 -#define AUDIO_ENCODING_MPEG_L2_SYSTEM 17 - -typedef struct audio_encoding { - int index; - char name[MAX_AUDIO_DEV_LEN]; - int encoding; - int precision; - int flags; -#define AUDIO_ENCODINGFLAG_EMULATED 1 /* software emulation mode */ -} audio_encoding_t; - -/* - * Balance settings. - */ -#define AUDIO_LEFT_BALANCE 0 /* left channel only */ -#define AUDIO_MID_BALANCE 32 /* equal left/right channel */ -#define AUDIO_RIGHT_BALANCE 64 /* right channel only */ -#define AUDIO_BALANCE_SHIFT 3 - -/* - * Output ports - */ -#define AUDIO_SPEAKER 0x01 /* built-in speaker */ -#define AUDIO_HEADPHONE 0x02 /* headphone jack */ -#define AUDIO_LINE_OUT 0x04 /* line out */ - -/* - * Input ports - */ -#define AUDIO_MICROPHONE 0x01 /* microphone */ -#define AUDIO_LINE_IN 0x02 /* line in */ -#define AUDIO_CD 0x04 /* on-board CD inputs */ -#define AUDIO_INTERNAL_CD_IN AUDIO_CD /* internal CDROM */ - -/* - * Audio device operations - */ -#define AUDIO_GETINFO _IOR('A', 21, struct audio_info) -#define AUDIO_SETINFO _IOWR('A', 22, struct audio_info) -#define AUDIO_DRAIN _IO('A', 23) -#define AUDIO_FLUSH _IO('A', 24) -#define AUDIO_WSEEK _IOR('A', 25, u_long) -#define AUDIO_RERROR _IOR('A', 26, int) -#define AUDIO_GETDEV _IOR('A', 27, struct audio_device) -#define AUDIO_GETENC _IOWR('A', 28, struct audio_encoding) -#define AUDIO_GETFD _IOR('A', 29, int) -#define AUDIO_SETFD _IOWR('A', 30, int) -#define AUDIO_PERROR _IOR('A', 31, int) -#define AUDIO_GETIOFFS _IOR('A', 32, struct audio_offset) -#define AUDIO_GETOOFFS _IOR('A', 33, struct audio_offset) -#define AUDIO_GETPROPS _IOR('A', 34, int) -#define AUDIO_PROP_FULLDUPLEX 0x01 -#define AUDIO_PROP_MMAP 0x02 -#define AUDIO_PROP_INDEPENDENT 0x04 - -/* - * Mixer device - */ -#define AUDIO_MIN_GAIN 0 -#define AUDIO_MAX_GAIN 255 - -typedef struct mixer_level { - int num_channels; - u_char level[8]; /* [num_channels] */ -} mixer_level_t; -#define AUDIO_MIXER_LEVEL_MONO 0 -#define AUDIO_MIXER_LEVEL_LEFT 0 -#define AUDIO_MIXER_LEVEL_RIGHT 1 - -/* - * Device operations - */ - -typedef struct audio_mixer_name { - char name[MAX_AUDIO_DEV_LEN]; - int msg_id; -} audio_mixer_name_t; - -typedef struct mixer_devinfo { - int index; - audio_mixer_name_t label; - int type; -#define AUDIO_MIXER_CLASS 0 -#define AUDIO_MIXER_ENUM 1 -#define AUDIO_MIXER_SET 2 -#define AUDIO_MIXER_VALUE 3 - int mixer_class; - int next, prev; -#define AUDIO_MIXER_LAST -1 - union { - struct audio_mixer_enum { - int num_mem; - struct { - audio_mixer_name_t label; - int ord; - } member[32]; - } e; - struct audio_mixer_set { - int num_mem; - struct { - audio_mixer_name_t label; - int mask; - } member[32]; - } s; - struct audio_mixer_value { - audio_mixer_name_t units; - int num_channels; - int delta; - } v; - } un; -} mixer_devinfo_t; - - -typedef struct mixer_ctrl { - int dev; - int type; - union { - int ord; /* enum */ - int mask; /* set */ - mixer_level_t value; /* value */ - } un; -} mixer_ctrl_t; - -/* - * Mixer operations - */ -#define AUDIO_MIXER_READ _IOWR('M', 0, mixer_ctrl_t) -#define AUDIO_MIXER_WRITE _IOWR('M', 1, mixer_ctrl_t) -#define AUDIO_MIXER_DEVINFO _IOWR('M', 2, mixer_devinfo_t) - -/* - * Well known device names - */ -#define AudioNmicrophone "mic" -#define AudioNline "line" -#define AudioNcd "cd" -#define AudioNdac "dac" -#define AudioNaux "aux" -#define AudioNrecord "record" -#define AudioNvolume "volume" -#define AudioNmonitor "monitor" -#define AudioNtreble "treble" -#define AudioNmid "mid" -#define AudioNbass "bass" -#define AudioNbassboost "bassboost" -#define AudioNspeaker "speaker" -#define AudioNheadphone "headphones" -#define AudioNoutput "output" -#define AudioNinput "input" -#define AudioNmaster "master" -#define AudioNstereo "stereo" -#define AudioNmono "mono" -#define AudioNloudness "loudness" -#define AudioNspatial "spatial" -#define AudioNsurround "surround" -#define AudioNpseudo "pseudo" -#define AudioNmute "mute" -#define AudioNenhanced "enhanced" -#define AudioNpreamp "preamp" -#define AudioNon "on" -#define AudioNoff "off" -#define AudioNmode "mode" -#define AudioNsource "source" -#define AudioNfmsynth "fmsynth" -#define AudioNwave "wave" -#define AudioNmidi "midi" -#define AudioNmixerout "mixerout" -#define AudioNswap "swap" /* swap left and right channels */ -#define AudioNagc "agc" -#define AudioNdelay "delay" -#define AudioNselect "select" /* select destination */ -#define AudioNvideo "video" -#define AudioNcenter "center" -#define AudioNdepth "depth" -#define AudioNlfe "lfe" - -#define AudioEmulaw "mulaw" -#define AudioEalaw "alaw" -#define AudioEadpcm "adpcm" -#define AudioEslinear "slinear" -#define AudioEslinear_le "slinear_le" -#define AudioEslinear_be "slinear_be" -#define AudioEulinear "ulinear" -#define AudioEulinear_le "ulinear_le" -#define AudioEulinear_be "ulinear_be" -#define AudioEmpeg_l1_stream "mpeg_l1_stream" -#define AudioEmpeg_l1_packets "mpeg_l1_packets" -#define AudioEmpeg_l1_system "mpeg_l1_system" -#define AudioEmpeg_l2_stream "mpeg_l2_stream" -#define AudioEmpeg_l2_packets "mpeg_l2_packets" -#define AudioEmpeg_l2_system "mpeg_l2_system" - -#define AudioCinputs "inputs" -#define AudioCoutputs "outputs" -#define AudioCrecord "record" -#define AudioCmonitor "monitor" -#define AudioCequalization "equalization" -#define AudioCmodem "modem" - -#endif /* !_SYS_AUDIOIO_H_ */ diff -Nru audacious-plugins-2.4.4/src/sun/configure.c audacious-plugins-3.2/src/sun/configure.c --- audacious-plugins-2.4.4/src/sun/configure.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/sun/configure.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,575 +0,0 @@ -/* - * Copyright (C) 2001 CubeSoft Communications, Inc. - * - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include - -#include - -#include "sun.h" -#include - -#include "mixer.h" - -struct sun_statsframe stats_frame; - -static GtkWidget *configure_win; -static GtkWidget *buffer_size_spin, *buffer_pre_spin; -static GtkWidget *adevice_entry, *actldevice_entry, *mdevice_entry; -static GtkWidget *keepopen_cbutton; -static char devaudio[64], devaudioctl[64], devmixer[64], mixer_toggle[64]; - -static void configure_win_destroy(); - -static void configure_win_ok_cb(GtkWidget *w, gpointer data) -{ - mcs_handle_t *cfgfile; - - strcpy(audio.devaudio, gtk_entry_get_text(GTK_ENTRY(adevice_entry))); - strcpy(audio.devmixer, gtk_entry_get_text(GTK_ENTRY(mdevice_entry))); - - audio.req_buffer_size = gtk_spin_button_get_value_as_int( - GTK_SPIN_BUTTON(buffer_size_spin)); - audio.req_prebuffer_size = gtk_spin_button_get_value_as_int( - GTK_SPIN_BUTTON(buffer_pre_spin)); - - if (sun_mixer_open() == 0) - { - audio.mixer_keepopen = gtk_toggle_button_get_active( - GTK_TOGGLE_BUTTON(keepopen_cbutton)); - sun_mixer_close(); - } - - cfgfile = aud_cfg_db_open(); - - aud_cfg_db_set_string(cfgfile, "sun", - "audio_devaudio", audio.devaudio); - aud_cfg_db_set_string(cfgfile, "sun", - "audio_devaudioctl", audio.devaudioctl); - aud_cfg_db_set_string(cfgfile, "sun", - "audio_devmixer", audio.devmixer); - - aud_cfg_db_set_string(cfgfile, "sun", - "mixer_voldev", audio.mixer_voldev); - aud_cfg_db_set_bool(cfgfile, "sun", - "mixer_keepopen", audio.mixer_keepopen); - - aud_cfg_db_set_int(cfgfile, "sun", - "buffer_size", audio.req_buffer_size); - aud_cfg_db_set_int(cfgfile, "sun", - "prebuffer_size", audio.req_prebuffer_size); - - aud_cfg_db_close(cfgfile); - - configure_win_destroy(); -} - -static void configure_win_cancel_cb(GtkWidget *w, gpointer data) -{ - configure_win_destroy(); -} - -static void mixer_cbutton_toggled_cb(GtkWidget *w, int id) -{ - mixer_ctrl_t mixer; - - if (sun_mixer_open() == 0) - { - mixer.type = AUDIO_MIXER_ENUM; - mixer.dev = id; - mixer_toggle[id] = !mixer_toggle[id]; - mixer.un.ord = mixer_toggle[id]; - - if (ioctl(audio.mixerfd, AUDIO_MIXER_WRITE, &mixer) != 0) - g_warning("Could not toggle mixer setting %i", id); - sun_mixer_close(); - } -} - -static void configure_win_mixer_volume_dev_cb(GtkWidget *w, gint voldev_index) -{ - mixer_devinfo_t info; - - if (sun_mixer_open() == 0) - { - info.index = voldev_index; - if (!ioctl(audio.mixerfd, AUDIO_MIXER_DEVINFO, &info)) - strcpy(audio.mixer_voldev, info.label.name); - sun_mixer_close(); - } -} - -static void configure_win_destroy(void) -{ - stats_frame.active = 0; - - if (!pthread_mutex_lock(&stats_frame.active_mutex)) - { - if (!pthread_mutex_lock(&stats_frame.audioctl_mutex)) - { - if (stats_frame.fd) - { - close(stats_frame.fd); - stats_frame.fd = 0; - } - pthread_mutex_unlock(&stats_frame.audioctl_mutex); - pthread_mutex_destroy(&stats_frame.audioctl_mutex); - } - pthread_mutex_unlock(&stats_frame.active_mutex); - pthread_mutex_destroy(&stats_frame.active_mutex); - } - gtk_widget_destroy(configure_win); - configure_win = NULL; -} - -static void configure_mixer_volumedev_scan(gchar *type, GtkWidget *option_menu) -{ - mixer_devinfo_t info; - GtkWidget *menu; - - if (sun_mixer_open() < 0) - return; - - menu = gtk_menu_new(); - - /* FIXME: info is used while undefined here */ - for (info.index = 0; - ioctl(audio.mixerfd, AUDIO_MIXER_DEVINFO, &info) == 0; - info.index++) - { - GtkWidget *item; - - if (info.type == AUDIO_MIXER_VALUE) - { - item = gtk_menu_item_new_with_label(info.label.name); - g_signal_connect(G_OBJECT(item), "activate", - (GCallback) configure_win_mixer_volume_dev_cb, - GINT_TO_POINTER(info.index)); - - gtk_widget_show(item); - gtk_menu_append(GTK_MENU(menu), item); - - if (!strcmp(info.label.name, audio.mixer_voldev)) - gtk_menu_reorder_child(GTK_MENU(menu), item, 0); - } - } - - gtk_option_menu_set_menu(GTK_OPTION_MENU(option_menu), menu); - - sun_mixer_close(); -} - -static void configure_adevice_box(GtkWidget *dev_vbox) -{ - GtkWidget *adevice_frame, *adevice_vbox; - - adevice_frame = gtk_frame_new(_("Audio device:")); - gtk_box_pack_start(GTK_BOX(dev_vbox), adevice_frame, FALSE, FALSE, 0); - - adevice_vbox = gtk_vbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(adevice_vbox), 5); - gtk_container_add(GTK_CONTAINER(adevice_frame), adevice_vbox); - - strcpy(devaudio, audio.devaudio); - - adevice_entry = gtk_entry_new(); - gtk_entry_set_text(GTK_ENTRY(adevice_entry), devaudio); - gtk_box_pack_start_defaults(GTK_BOX(adevice_vbox), adevice_entry); -} - -static void configure_actldevice_box(GtkWidget *dev_vbox) -{ - GtkWidget *actldevice_frame, *actldevice_vbox; - - actldevice_frame = gtk_frame_new(_("Audio control device:")); - gtk_box_pack_start(GTK_BOX(dev_vbox), actldevice_frame, - FALSE, FALSE, 0); - - actldevice_vbox = gtk_vbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(actldevice_vbox), 5); - gtk_container_add(GTK_CONTAINER(actldevice_frame), actldevice_vbox); - - strcpy(devaudioctl, audio.devaudioctl); - - actldevice_entry = gtk_entry_new(); - gtk_entry_set_text(GTK_ENTRY(actldevice_entry), devaudioctl); - gtk_box_pack_start_defaults(GTK_BOX(actldevice_vbox), actldevice_entry); -} - -static void configure_mdevice_box(GtkWidget *dev_vbox) -{ - GtkWidget *mdevice_frame, *mdevice_vbox; - - mdevice_frame = gtk_frame_new(_("Mixer device:")); - gtk_box_pack_start(GTK_BOX(dev_vbox), mdevice_frame, FALSE, FALSE, 0); - - mdevice_vbox = gtk_vbox_new(FALSE, 0); - gtk_container_set_border_width(GTK_CONTAINER(mdevice_vbox), 5); - gtk_container_add(GTK_CONTAINER(mdevice_frame), mdevice_vbox); - - strcpy(devmixer, audio.devmixer); - - mdevice_entry = gtk_entry_new(); - gtk_entry_set_text(GTK_ENTRY(mdevice_entry), devmixer); - gtk_box_pack_start_defaults(GTK_BOX(mdevice_vbox), mdevice_entry); - -} - - -static void configure_devices_frame(GtkWidget *vbox, GtkWidget * notebook) -{ - GtkWidget *dev_vbox; - - dev_vbox = gtk_vbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(dev_vbox), 5); - - configure_adevice_box(dev_vbox); - configure_actldevice_box(dev_vbox); - configure_mdevice_box(dev_vbox); - - gtk_notebook_append_page(GTK_NOTEBOOK(notebook), dev_vbox, - gtk_label_new(_("Devices"))); -} - - -static void configure_buffering_frame(GtkWidget *vbox, GtkWidget * notebook) -{ - GtkWidget *buffer_frame, *buffer_vbox, *buffer_table; - GtkWidget *buffer_size_box, *buffer_size_label; - GtkObject *buffer_size_adj, *buffer_pre_adj; - GtkWidget *buffer_pre_box, *buffer_pre_label; - - buffer_frame = gtk_frame_new(_("Buffering:")); - gtk_container_set_border_width(GTK_CONTAINER(buffer_frame), 5); - - buffer_vbox = gtk_vbox_new(FALSE, 0); - gtk_container_add(GTK_CONTAINER(buffer_frame), buffer_vbox); - - buffer_table = gtk_table_new(2, 1, TRUE); - gtk_container_set_border_width(GTK_CONTAINER(buffer_table), 5); - gtk_box_pack_start(GTK_BOX(buffer_vbox), buffer_table, FALSE, FALSE, 0); - - buffer_size_box = gtk_hbox_new(FALSE, 5); - gtk_table_attach_defaults( GTK_TABLE(buffer_table), - buffer_size_box, 0, 1, 0, 1); - buffer_size_label = gtk_label_new(_("Buffer size (ms):")); - - gtk_box_pack_start(GTK_BOX(buffer_size_box), buffer_size_label, - FALSE, FALSE, 0); - - buffer_size_adj = gtk_adjustment_new(audio.req_buffer_size, - 200, 131072, 100, 100, 100); - - buffer_size_spin = gtk_spin_button_new(GTK_ADJUSTMENT(buffer_size_adj), - 8, 0); - - gtk_widget_set_usize(buffer_size_spin, 60, -1); - gtk_box_pack_start(GTK_BOX(buffer_size_box), - buffer_size_spin, FALSE, FALSE, 0); - - buffer_pre_box = gtk_hbox_new(FALSE, 5); - gtk_table_attach_defaults(GTK_TABLE(buffer_table), - buffer_pre_box, 1, 2, 0, 1); - buffer_pre_label = gtk_label_new(_("Pre-buffer (percent):")); - gtk_box_pack_start(GTK_BOX(buffer_pre_box), buffer_pre_label, - FALSE, FALSE, 0); - - buffer_pre_adj = gtk_adjustment_new(audio.req_prebuffer_size, - 0, 90, 1, 1, 1); - buffer_pre_spin = gtk_spin_button_new(GTK_ADJUSTMENT(buffer_pre_adj), - 1, 0); - - gtk_widget_set_usize(buffer_pre_spin, 60, -1); - gtk_box_pack_start(GTK_BOX(buffer_pre_box), buffer_pre_spin, - FALSE, FALSE, 0); - - gtk_notebook_append_page(GTK_NOTEBOOK(notebook), buffer_frame, - gtk_label_new(_("Buffering"))); -} - -static void configure_mixer_toggle_button(GtkWidget *vbox, gchar *devname, gchar *label) -{ - GtkWidget *toggle_cbutton; - gint devid; - mixer_ctrl_t mixer; - - if (!sun_mixer_get_dev(audio.mixerfd, &devid, devname)) - { - mixer.type = AUDIO_MIXER_ENUM; - mixer.dev = devid; - - if (!ioctl(audio.mixerfd, AUDIO_MIXER_READ, &mixer)) - { - toggle_cbutton = - gtk_check_button_new_with_label(_(label)); - gtk_box_pack_start_defaults(GTK_BOX(vbox), - toggle_cbutton); - - if (mixer.un.ord) - { - gtk_toggle_button_set_active( - GTK_TOGGLE_BUTTON(toggle_cbutton), TRUE); - mixer_toggle[mixer.dev]++; - } - else - { - mixer_toggle[mixer.dev] = 0; - } - - gtk_signal_connect(GTK_OBJECT(toggle_cbutton), - "toggled", - GTK_SIGNAL_FUNC(mixer_cbutton_toggled_cb), - GINT_TO_POINTER(mixer.dev)); - } - } -} - - -static void configure_mixer_box(GtkWidget *vbox, GtkWidget *notebook) -{ - GtkWidget *mixervol_frame, *mixervol_box; - GtkWidget *mixervol_menu; - - mixervol_frame = gtk_frame_new(_("Volume controls device:")); - gtk_box_pack_start(GTK_BOX(vbox), mixervol_frame, FALSE, FALSE, 0); - - mixervol_box = gtk_vbox_new(FALSE, 0); - gtk_container_set_border_width(GTK_CONTAINER(mixervol_box), 5); - gtk_container_add(GTK_CONTAINER(mixervol_frame), mixervol_box); - - mixervol_menu = gtk_option_menu_new(); - gtk_box_pack_start(GTK_BOX(mixervol_box), mixervol_menu, TRUE, TRUE, 0); - - configure_mixer_volumedev_scan("Volume devices:", mixervol_menu); - - keepopen_cbutton = gtk_check_button_new_with_label( - _("XMMS uses mixer exclusively.")); - if (audio.mixer_keepopen) - gtk_toggle_button_set_active( - GTK_TOGGLE_BUTTON(keepopen_cbutton), TRUE); - - gtk_box_pack_start_defaults(GTK_BOX(vbox), keepopen_cbutton); - - if (sun_mixer_open() == 0) - { - configure_mixer_toggle_button(vbox, "bassboost", "Bass boost"); - configure_mixer_toggle_button(vbox, "loudness", "Loudness"); - configure_mixer_toggle_button(vbox, "spatial", "Spatial"); - configure_mixer_toggle_button(vbox, "surround", "Surround"); - configure_mixer_toggle_button(vbox, "enhanced", "Enhanced"); - configure_mixer_toggle_button(vbox, "preamp", "Preamp"); - configure_mixer_toggle_button(vbox, "swap", "Swap channels"); - sun_mixer_close(); - } -} - - -static void configure_mixer_frame(GtkWidget *vbox, GtkWidget *notebook) -{ - GtkWidget *mixervol_vbox; - - mixervol_vbox = gtk_vbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(mixervol_vbox), 5); - - configure_mixer_box(mixervol_vbox, notebook); - - gtk_notebook_append_page(GTK_NOTEBOOK(notebook), - mixervol_vbox, gtk_label_new(_("Mixer"))); -} - - -static void configure_stats_loop(void) -{ - if (pthread_mutex_lock(&stats_frame.active_mutex) != 0) - { - perror("active_mutex"); - return; - } - - while (stats_frame.active && stats_frame.fd) - { - audio_info_t info; - char sl[32]; - - pthread_mutex_lock(&stats_frame.audioctl_mutex); - - sl[0] = '\0'; - - if (!ioctl(stats_frame.fd, AUDIO_GETINFO, &info)) - { - char s[128]; - - sprintf(s, "Currently %s", - (info.mode == AUMODE_PLAY) ? "playing" : - (info.mode == AUMODE_RECORD) ? "recording" : - (info.mode == AUMODE_PLAY_ALL) ? "playing" : - "not playing"); - - if (info.mode == AUMODE_PLAY) - { - sprintf(s, "%s at %i Hz (%i-bit %s)", s, - info.play.sample_rate, info.play.precision, - audio.output->name); - sprintf(sl,"%i samples, %i error(s). %s", - info.play.samples, info.play.error, - info.play.active ? - "I/O in progress." : ""); - } - gtk_label_set_text(GTK_LABEL(stats_frame.mode_label), - s); - - sprintf(s, "H/W block: %i bytes. Buffer: %i bytes", - info.blocksize, info.play.buffer_size); - gtk_label_set_text( - GTK_LABEL(stats_frame.blocksize_label), s); - } - gtk_label_set_text(GTK_LABEL(stats_frame.ooffs_label), sl); - - pthread_mutex_unlock(&stats_frame.audioctl_mutex); - g_usleep(400000); - } - pthread_mutex_unlock(&stats_frame.active_mutex); - - pthread_exit(NULL); -} - -static void configure_status_frame(GtkWidget *vbox, GtkWidget *notebook) -{ - GtkWidget *status_vbox; - GtkWidget *name_label, *props_label; - pthread_t loop_thread; - - memset(&stats_frame, 0, sizeof(struct sun_statsframe)); - - if (pthread_mutex_init(&stats_frame.audioctl_mutex, NULL) != 0) - { - perror("audioctl_mutex"); - return; - } - if (pthread_mutex_init(&stats_frame.active_mutex, NULL) != 0) - { - perror("active_mutex"); - return; - } - status_vbox = gtk_vbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(status_vbox), 5); - - name_label = gtk_label_new(NULL); - gtk_container_add(GTK_CONTAINER(status_vbox), name_label); - props_label = gtk_label_new(NULL); - gtk_container_add(GTK_CONTAINER(status_vbox), props_label); - - stats_frame.mode_label = gtk_label_new(NULL); - gtk_container_add(GTK_CONTAINER(status_vbox), stats_frame.mode_label); - stats_frame.blocksize_label = gtk_label_new(NULL); - gtk_container_add(GTK_CONTAINER(status_vbox), - stats_frame.blocksize_label); - stats_frame.ooffs_label = gtk_label_new(NULL); - gtk_container_add(GTK_CONTAINER(status_vbox), stats_frame.ooffs_label); - - gtk_notebook_append_page(GTK_NOTEBOOK(notebook), status_vbox, - gtk_label_new(_("Status"))); - - if ((stats_frame.fd = open(audio.devaudioctl, O_RDWR)) >= 0) - { - audio_device_t device; - int props; - - if (ioctl(stats_frame.fd, AUDIO_GETDEV, &device) >= 0) - { - char *s = g_strdup_printf("%s - %s(4) %s", - device.name, device.config, device.version); - gtk_label_set_text(GTK_LABEL(name_label), s); - g_free(s); - } - if (ioctl(stats_frame.fd, AUDIO_GETPROPS, &props) >= 0) - { - char s[32]; - s[0] = '\0'; - - if ((props & AUDIO_PROP_FULLDUPLEX) == - AUDIO_PROP_FULLDUPLEX) - sprintf(s, "FULLDUPLEX "); - if ((props & AUDIO_PROP_MMAP) == AUDIO_PROP_MMAP) - sprintf(s, "%s MMAP ", s); - if ((props & AUDIO_PROP_INDEPENDENT) == - AUDIO_PROP_INDEPENDENT) - sprintf(s, "%s INDEPENDENT ", s); - - gtk_label_set_text(GTK_LABEL(props_label), s); - } - } - stats_frame.active++; - pthread_create(&loop_thread, NULL, (void *) configure_stats_loop, NULL); -} - -void sun_configure(void) -{ - GtkWidget *vbox, *notebook; - GtkWidget *bbox, *ok, *cancel; - - if (configure_win) - { - gtk_window_present(GTK_WINDOW(configure_win)); - return; - } - configure_win = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_signal_connect(GTK_OBJECT(configure_win), "destroy", - GTK_SIGNAL_FUNC(configure_win_destroy), NULL); - - gtk_window_set_title(GTK_WINDOW(configure_win), - _("Sun driver configuration")); - gtk_window_set_policy(GTK_WINDOW(configure_win), FALSE, FALSE, FALSE); - gtk_window_set_position(GTK_WINDOW(configure_win), GTK_WIN_POS_MOUSE); - gtk_container_border_width(GTK_CONTAINER(configure_win), 10); - - vbox = gtk_vbox_new(FALSE, 10); - gtk_container_add(GTK_CONTAINER(configure_win), vbox); - - notebook = gtk_notebook_new(); - gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0); - - configure_devices_frame(vbox, notebook); - configure_buffering_frame(vbox, notebook); - configure_mixer_frame(vbox, notebook); - configure_status_frame(vbox, notebook); - - bbox = gtk_hbutton_box_new(); - gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); - gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); - gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); - - ok = gtk_button_new_with_label(_("Ok")); - gtk_signal_connect(GTK_OBJECT(ok), "clicked", - GTK_SIGNAL_FUNC(configure_win_ok_cb), NULL); - - GTK_WIDGET_SET_FLAGS(ok, GTK_CAN_DEFAULT); - gtk_box_pack_start(GTK_BOX(bbox), ok, TRUE, TRUE, 0); - gtk_widget_grab_default(ok); - - cancel = gtk_button_new_with_label(_("Cancel")); - gtk_signal_connect_object(GTK_OBJECT(cancel), "clicked", - GTK_SIGNAL_FUNC(configure_win_cancel_cb), - GTK_OBJECT(configure_win)); - - GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT); - gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0); - - gtk_widget_show_all(configure_win); -} - diff -Nru audacious-plugins-2.4.4/src/sun/convert.c audacious-plugins-3.2/src/sun/convert.c --- audacious-plugins-2.4.4/src/sun/convert.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/sun/convert.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,348 +0,0 @@ -/* - * Copyright (C) 2001 Haavard Kvaalen - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "sun.h" - -void * sun_get_convert_buffer(size_t size) -{ - static size_t length; - static void *buffer; - - if (size > 0 && size <= length) - return buffer; - - length = size; - buffer = g_realloc(buffer, size); - return buffer; -} - -static int convert_swap_endian(void **data, int length) -{ - int i; - guint16 *ptr = *data; - - for (i = 0; i < length; i += 2, ptr++) - *ptr = GUINT16_SWAP_LE_BE(*ptr); - - return i; -} - -static int convert_swap_sign_and_endian_to_native(void **data, int length) -{ - int i; - guint16 *ptr = *data; - - for (i = 0; i < length; i += 2, ptr++) - *ptr = GUINT16_SWAP_LE_BE(*ptr) ^ 1 << 15; - - return (i); -} - -static int convert_swap_sign_and_endian_to_alien(void **data, int length) -{ - int i; - guint16 *ptr = *data; - - for (i = 0; i < length; i += 2, ptr++) - *ptr = GUINT16_SWAP_LE_BE(*ptr ^ 1 << 15); - - return i; -} - -static int convert_swap_sign16(void **data, int length) -{ - int i; - gint16 *ptr = *data; - - for (i = 0; i < length; i += 2, ptr++) - *ptr ^= 1 << 15; - - return i; -} - -static int convert_swap_sign8(void **data, int length) -{ - int i; - gint8 *ptr = *data; - - for (i = 0; i < length; i++) - *ptr++ ^= 1 << 7; - - return i; -} - -static int convert_to_8_native_endian(void **data, int length) -{ - int i; - gint16 *input = *data; - gint8 *output = *data; - - for (i = 0; i < length / 2; i++) - *output++ = *input++ >> 8; - - return i; -} - -static int convert_to_8_native_endian_swap_sign(void **data, int length) -{ - int i; - gint16 *input = *data; - gint8 *output = *data; - - for (i = 0; i < length / 2; i++) - *output++ = (*input++ >> 8) ^ (1 << 7); - - return i; -} - - -static int convert_to_8_alien_endian(void **data, int length) -{ - int i; - gint16 *input = *data; - gint8 *output = *data; - - for (i = 0; i < length / 2; i++) - *output++ = *input++ & 0xff; - - return i; -} - -static int convert_to_8_alien_endian_swap_sign(void **data, int length) -{ - int i; - gint16 *input = *data; - gint8 *output = *data; - - for (i = 0; i < length / 2; i++) - *output++ = (*input++ & 0xff) ^ (1 << 7); - - return i; -} - -static int convert_to_16_native_endian(void **data, int length) -{ - int i; - guint16 *output; - guint8 *input = *data; - - *data = sun_get_convert_buffer(length * 2); - output = *data; - - for (i = 0; i < length; i++) - *output++ = *input++ << 8; - - return (i * 2); -} - -static int convert_to_16_native_endian_swap_sign(void **data, int length) -{ - int i; - guint16 *output; - guint8 *input = *data; - - *data = sun_get_convert_buffer(length * 2); - output = *data; - for (i = 0; i < length; i++) - *output++ = (*input++ << 8) ^ (1 << 15); - - return (i * 2); -} - - -static int convert_to_16_alien_endian(void **data, int length) -{ - int i; - guint16 *output; - guint8 *input = *data; - - *data = sun_get_convert_buffer(length * 2); - output = *data; - for (i = 0; i < length; i++) - *output++ = *input++; - - return (i * 2); -} - -static int convert_to_16_alien_endian_swap_sign(void **data, int length) -{ - int i; - guint16 *output; - guint8 *input = *data; - - *data = sun_get_convert_buffer(length * 2); - output = *data; - for (i = 0; i < length; i++) - *output++ = *input++ ^ (1 << 7); - - return (i * 2); -} - -int (*sun_get_convert_func(int output, int input))(void **, int) -{ - if (output == input) - return NULL; - - if ((output == AUDIO_ENCODING_ULINEAR_BE && - input == AUDIO_ENCODING_ULINEAR_LE) || - (output == AUDIO_ENCODING_ULINEAR_LE && - input == AUDIO_ENCODING_ULINEAR_BE) || - (output == AUDIO_ENCODING_SLINEAR_BE && - input == AUDIO_ENCODING_SLINEAR_LE) || - (output == AUDIO_ENCODING_SLINEAR_LE && - input == AUDIO_ENCODING_SLINEAR_BE)) - return convert_swap_endian; - - if ((output == AUDIO_ENCODING_ULINEAR_BE && - input == AUDIO_ENCODING_SLINEAR_BE) || - (output == AUDIO_ENCODING_ULINEAR_LE && - input == AUDIO_ENCODING_SLINEAR_LE) || - (output == AUDIO_ENCODING_SLINEAR_BE && - input == AUDIO_ENCODING_ULINEAR_BE) || - (output == AUDIO_ENCODING_SLINEAR_LE && - input == AUDIO_ENCODING_ULINEAR_LE)) - return convert_swap_sign16; - - if ((IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_ULINEAR_BE && - input == AUDIO_ENCODING_SLINEAR_LE) || - (output == AUDIO_ENCODING_SLINEAR_BE && - input == AUDIO_ENCODING_ULINEAR_LE))) || - (!IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_ULINEAR_LE && - input == AUDIO_ENCODING_SLINEAR_BE) || - (output == AUDIO_ENCODING_SLINEAR_LE && - input == AUDIO_ENCODING_ULINEAR_BE)))) - return convert_swap_sign_and_endian_to_native; - - if ((!IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_ULINEAR_BE && - input == AUDIO_ENCODING_SLINEAR_LE) || - (output == AUDIO_ENCODING_SLINEAR_BE && - input == AUDIO_ENCODING_ULINEAR_LE))) || - (IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_ULINEAR_LE && - input == AUDIO_ENCODING_SLINEAR_BE) || - (output == AUDIO_ENCODING_SLINEAR_LE && - input == AUDIO_ENCODING_ULINEAR_BE)))) - return convert_swap_sign_and_endian_to_alien; - - if ((IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_PCM8 && - input == AUDIO_ENCODING_ULINEAR_BE) || - (output == AUDIO_ENCODING_SLINEAR && - input == AUDIO_ENCODING_SLINEAR_BE))) || - (!IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_PCM8 && - input == AUDIO_ENCODING_ULINEAR_LE) || - (output == AUDIO_ENCODING_SLINEAR && - input == AUDIO_ENCODING_SLINEAR_LE)))) - return convert_to_8_native_endian; - - if ((IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_PCM8 && - input == AUDIO_ENCODING_SLINEAR_BE) || - (output == AUDIO_ENCODING_SLINEAR && - input == AUDIO_ENCODING_ULINEAR_BE))) || - (!IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_PCM8 && - input == AUDIO_ENCODING_SLINEAR_LE) || - (output == AUDIO_ENCODING_SLINEAR && - input == AUDIO_ENCODING_ULINEAR_LE)))) - return convert_to_8_native_endian_swap_sign; - - if ((!IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_PCM8 && - input == AUDIO_ENCODING_ULINEAR_BE) || - (output == AUDIO_ENCODING_SLINEAR && - input == AUDIO_ENCODING_SLINEAR_BE))) || - (IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_PCM8 && - input == AUDIO_ENCODING_ULINEAR_LE) || - (output == AUDIO_ENCODING_SLINEAR && - input == AUDIO_ENCODING_SLINEAR_LE)))) - return convert_to_8_alien_endian; - - if ((!IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_PCM8 && - input == AUDIO_ENCODING_SLINEAR_BE) || - (output == AUDIO_ENCODING_SLINEAR && - input == AUDIO_ENCODING_ULINEAR_BE))) || - (IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_PCM8 && - input == AUDIO_ENCODING_SLINEAR_LE) || - (output == AUDIO_ENCODING_SLINEAR && - input == AUDIO_ENCODING_ULINEAR_LE)))) - return convert_to_8_alien_endian_swap_sign; - - if ((output == AUDIO_ENCODING_PCM8 && - input == AUDIO_ENCODING_SLINEAR) || - (output == AUDIO_ENCODING_SLINEAR && - input == AUDIO_ENCODING_PCM8)) - return convert_swap_sign8; - - if ((IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_ULINEAR_BE && - input == AUDIO_ENCODING_PCM8) || - (output == AUDIO_ENCODING_SLINEAR_BE && - input == AUDIO_ENCODING_SLINEAR))) || - (!IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_ULINEAR_LE && - input == AUDIO_ENCODING_PCM8) || - (output == AUDIO_ENCODING_SLINEAR_LE && - input == AUDIO_ENCODING_SLINEAR)))) - return convert_to_16_native_endian; - - if ((IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_ULINEAR_BE && - input == AUDIO_ENCODING_SLINEAR) || - (output == AUDIO_ENCODING_SLINEAR_BE && - input == AUDIO_ENCODING_PCM8))) || - (!IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_ULINEAR_LE && - input == AUDIO_ENCODING_SLINEAR) || - (output == AUDIO_ENCODING_SLINEAR_LE && - input == AUDIO_ENCODING_PCM8)))) - return convert_to_16_native_endian_swap_sign; - - if ((!IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_ULINEAR_BE && - input == AUDIO_ENCODING_PCM8) || - (output == AUDIO_ENCODING_SLINEAR_BE && - input == AUDIO_ENCODING_SLINEAR))) || - (IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_ULINEAR_LE && - input == AUDIO_ENCODING_PCM8) || - (output == AUDIO_ENCODING_SLINEAR_LE && - input == AUDIO_ENCODING_SLINEAR)))) - return convert_to_16_alien_endian; - - if ((!IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_ULINEAR_BE && - input == AUDIO_ENCODING_SLINEAR) || - (output == AUDIO_ENCODING_SLINEAR_BE && - input == AUDIO_ENCODING_PCM8))) || - (IS_BIG_ENDIAN && - ((output == AUDIO_ENCODING_ULINEAR_LE && - input == AUDIO_ENCODING_SLINEAR) || - (output == AUDIO_ENCODING_SLINEAR_LE && - input == AUDIO_ENCODING_PCM8)))) - return convert_to_16_alien_endian_swap_sign; - - return NULL; -} diff -Nru audacious-plugins-2.4.4/src/sun/Makefile audacious-plugins-3.2/src/sun/Makefile --- audacious-plugins-2.4.4/src/sun/Makefile 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/sun/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -PLUGIN = sun${PLUGIN_SUFFIX} - -SRCS = sun.c \ - audio.c \ - convert.c \ - mixer.c \ - configure.c \ - about.c - -include ../../buildsys.mk -include ../../extra.mk - -plugindir := ${plugindir}/${OUTPUT_PLUGIN_DIR} - -CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/sun/mixer.c audacious-plugins-3.2/src/sun/mixer.c --- audacious-plugins-2.4.4/src/sun/mixer.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/sun/mixer.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,126 +0,0 @@ -/* - * Copyright (C) 2001 CubeSoft Communications, Inc. - * - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "sun.h" -#include "mixer.h" - -int sun_mixer_open(void) -{ - if (pthread_mutex_lock(&audio.mixer_mutex) != 0) - return -1; - - if (!audio.mixer_keepopen || audio.mixerfd < 1) - { - audio.mixerfd = open(audio.devmixer, O_RDWR); - if (audio.mixerfd < 0) - perror(audio.devmixer); - } - return 0; -} - -void sun_mixer_close(void) -{ - if (!audio.mixer_keepopen) - { - close(audio.mixerfd); - audio.mixerfd = 0; - } - pthread_mutex_unlock(&audio.mixer_mutex); -} - -int sun_mixer_get_dev(int fd, int *dev, char *id) -{ - mixer_devinfo_t info; - - for (info.index = 0; ioctl(fd, AUDIO_MIXER_DEVINFO, &info) >= 0; - info.index++) - { - if (!strcmp(id, info.label.name)) - { - *dev = info.index; - return 0; - } - } - return -1; -} - -void sun_get_volume(int *l, int *r) -{ - mixer_ctrl_t mixer; - - if (sun_mixer_open() < 0) - { - *l = 0; - *r = 0; - return; - } - - if ((sun_mixer_get_dev(audio.mixerfd, &mixer.dev, - audio.mixer_voldev) < 0)) - goto closemixer; - - mixer.type = AUDIO_MIXER_VALUE; - if (audio.output != NULL) - mixer.un.value.num_channels = audio.output->channels; - else - mixer.un.value.num_channels = 2; - - if (ioctl(audio.mixerfd, AUDIO_MIXER_READ, &mixer) < 0) - goto closemixer; - *l = (mixer.un.value.level[AUDIO_MIXER_LEVEL_LEFT] * 100) / 255; - if (mixer.un.value.num_channels > 1) - *r = (mixer.un.value.level[AUDIO_MIXER_LEVEL_RIGHT] * 100) / 255; - else - *r = *l; - - closemixer: - sun_mixer_close(); -} - -void sun_set_volume(int l, int r) -{ - mixer_ctrl_t mixer; - - if (sun_mixer_open() < 0) - return; - - if ((sun_mixer_get_dev(audio.mixerfd, &mixer.dev, - audio.mixer_voldev) < 0)) - { - if (!audio.mixer_keepopen) - close(audio.mixerfd); - return; - } - mixer.type = AUDIO_MIXER_VALUE; - if (audio.output != NULL) - mixer.un.value.num_channels = audio.output->channels; - else - mixer.un.value.num_channels = 2; - mixer.un.value.level[AUDIO_MIXER_LEVEL_LEFT] = (l * 255) / 100; - if (mixer.un.value.num_channels > 1) - mixer.un.value.level[AUDIO_MIXER_LEVEL_RIGHT] = (r * 255) / 100; - - if (ioctl(audio.mixerfd, AUDIO_MIXER_WRITE, &mixer) < 0) - { - if (!audio.mixer_keepopen) - close(audio.mixerfd); - return; - } - sun_mixer_close(); -} diff -Nru audacious-plugins-2.4.4/src/sun/mixer.h audacious-plugins-3.2/src/sun/mixer.h --- audacious-plugins-2.4.4/src/sun/mixer.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/sun/mixer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -/* - * Copyright (C) 2001 CubeSoft Communications, Inc. - * - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -int sun_mixer_open(void); -void sun_mixer_close(void); -int sun_mixer_get_dev(int, int *, char *); -void sun_get_volume(int *, int *); -void sun_set_volume(int, int); - diff -Nru audacious-plugins-2.4.4/src/sun/resample.h audacious-plugins-3.2/src/sun/resample.h --- audacious-plugins-2.4.4/src/sun/resample.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/sun/resample.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,110 +0,0 @@ -/* XMMS - Cross-platform multimedia player - * Copyright (C) 1998-2001 Peter Alm, Mikael Alm, Olle Hallnas, - * Thomas Nilsson and 4Front Technologies - * Copyright (C) 1999-2001 Haavard Kvaalen - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#define NOT_NATIVE_ENDIAN \ - ((IS_BIG_ENDIAN && \ - (output.format.sun == AUDIO_ENCODING_SLINEAR_LE || \ - output.format.sun == AUDIO_ENCODING_ULINEAR_LE))|| \ - (!IS_BIG_ENDIAN && \ - (output.format.sun == AUDIO_ENCODING_SLINEAR_BE || \ - output.format.sun == AUDIO_ENCODING_ULINEAR_BE))) - -#define RESAMPLE_STEREO(sample_type) \ -do { \ - const int shift = sizeof (sample_type); \ - int i, in_samples, out_samples, x, delta; \ - sample_type *inptr = (sample_type *)ob, *outptr; \ - guint nlen = (((length >> shift) * espeed) / speed); \ - \ - if (nlen == 0) \ - break; \ - nlen <<= shift; \ - if (NOT_NATIVE_ENDIAN) \ - sun_bswap16(ob, length); \ - if (nlen > nbuffer_size) \ - { \ - nbuffer = g_realloc(nbuffer, nlen); \ - nbuffer_size = nlen; \ - } \ - outptr = (sample_type *)nbuffer; \ - in_samples = length >> shift; \ - out_samples = nlen >> shift; \ - delta = (in_samples << 12) / out_samples; \ - for (x = 0, i = 0; i < out_samples; i++) \ - { \ - int x1, frac; \ - x1 = (x >> 12) << 12; \ - frac = x - x1; \ - *outptr++ = \ - (sample_type) \ - ((inptr[(x1 >> 12) << 1] * \ - ((1<<12) - frac) + \ - inptr[((x1 >> 12) + 1) << 1] * \ - frac) >> 12); \ - *outptr++ = \ - (sample_type) \ - ((inptr[((x1 >> 12) << 1) + 1] * \ - ((1<<12) - frac) + \ - inptr[(((x1 >> 12) + 1) << 1) + 1] * \ - frac) >> 12); \ - x += delta; \ - } \ - if (NOT_NATIVE_ENDIAN) \ - sun_bswap16(nbuffer, nlen); \ - w = write_all(audio.fd, nbuffer, nlen); \ -} while (0) - -#define RESAMPLE_MONO(sample_type) \ -do { \ - const int shift = sizeof (sample_type) - 1; \ - int i, x, delta, in_samples, out_samples; \ - sample_type *inptr = (sample_type *)ob, *outptr; \ - guint nlen = (((length >> shift) * espeed) / speed); \ - \ - if (nlen == 0) \ - break; \ - nlen <<= shift; \ - if (NOT_NATIVE_ENDIAN) \ - sun_bswap16(ob, length); \ - if (nlen > nbuffer_size) \ - { \ - nbuffer = g_realloc(nbuffer, nlen); \ - nbuffer_size = nlen; \ - } \ - outptr = (sample_type *)nbuffer; \ - in_samples = length >> shift; \ - out_samples = nlen >> shift; \ - delta = ((length >> shift) << 12) / out_samples; \ - for (x = 0, i = 0; i < out_samples; i++) \ - { \ - int x1, frac; \ - x1 = (x >> 12) << 12; \ - frac = x - x1; \ - *outptr++ = \ - (sample_type) \ - ((inptr[x1 >> 12] * ((1<<12) - frac) + \ - inptr[(x1 >> 12) + 1] * frac) >> 12); \ - x += delta; \ - } \ - if (NOT_NATIVE_ENDIAN) \ - sun_bswap16(nbuffer, nlen); \ - w = write_all(audio.fd, nbuffer, nlen); \ -} while (0) - diff -Nru audacious-plugins-2.4.4/src/sun/sun.c audacious-plugins-3.2/src/sun/sun.c --- audacious-plugins-2.4.4/src/sun/sun.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/sun/sun.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,131 +0,0 @@ -/* - * Copyright (C) 2001 CubeSoft Communications, Inc. - * - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include - -#include "sun.h" -#include - -#include - -struct sun_audio audio; - -OutputPlugin sun_op = -{ - .description = "BSD/Sun Output Plugin", /* Description */ - .probe_priority = 5, - .init = sun_init, - .cleanup = sun_cleanup, - .about = sun_about, - .configure = sun_configure, - .get_volume = sun_get_volume, - .set_volume = sun_set_volume, - .open_audio = sun_open, - .write_audio = sun_write, - .close_audio = sun_close, - .flush = sun_flush, - .pause = sun_pause, - .buffer_free = sun_free, - .buffer_playing = sun_playing, - .output_time = sun_output_time, - .written_time = sun_written_time, -}; - -OutputPlugin *sun_oplist[] = { &sun_op, NULL }; - -SIMPLE_OUTPUT_PLUGIN(sun, sun_oplist); - -OutputPluginInitStatus sun_init(void) -{ - mcs_handle_t *cfgfile; - char *s; - - memset(&audio, 0, sizeof(struct sun_audio)); - - cfgfile = aud_cfg_db_open(); - /* Devices */ - aud_cfg_db_get_string(cfgfile, "sun", "audio_devaudio", &audio.devaudio); - aud_cfg_db_get_string(cfgfile, "sun", - "audio_devaudioctl", &audio.devaudioctl); - aud_cfg_db_get_string(cfgfile, "sun", "audio_devmixer", &audio.devmixer); - - /* Buffering */ - aud_cfg_db_get_int(cfgfile, "sun", - "buffer_size", &audio.req_buffer_size); - aud_cfg_db_get_int(cfgfile, "sun", - "prebuffer_size", &audio.req_prebuffer_size); - - /* Mixer */ - aud_cfg_db_get_string(cfgfile, "sun", "mixer_voldev", &audio.mixer_voldev); - aud_cfg_db_get_bool(cfgfile, "sun", - "mixer_keepopen", &audio.mixer_keepopen); - - aud_cfg_db_close(cfgfile); - - /* Audio device path */ - if ((s = getenv("AUDIODEVICE"))) - audio.devaudio = g_strdup(s); - else if (!audio.devaudio || !strcmp("", audio.devaudio)) - audio.devaudio = g_strdup(SUN_DEV_AUDIO); - - /* Audio control device path */ - if (!audio.devaudioctl || !strcmp("", audio.devaudioctl)) - audio.devaudioctl = g_strdup(SUN_DEV_AUDIOCTL); - - /* Mixer device path */ - if ((s = getenv("MIXERDEVICE"))) - audio.devmixer = g_strdup(s); - else if (!audio.devmixer || !strcmp("", audio.devmixer)) - audio.devmixer = g_strdup(SUN_DEV_MIXER); - - if (!audio.mixer_voldev || !strcmp("", audio.mixer_voldev)) - audio.mixer_voldev = g_strdup(SUN_DEFAULT_VOLUME_DEV); - - /* Default buffering settings */ - if (!audio.req_buffer_size) - audio.req_buffer_size = SUN_DEFAULT_BUFFER_SIZE; - if (!audio.req_prebuffer_size) - audio.req_prebuffer_size = SUN_DEFAULT_PREBUFFER_SIZE; - - audio.input = NULL; - audio.output = NULL; - audio.effect = NULL; - - if (pthread_mutex_init(&audio.mixer_mutex, NULL) != 0) - perror("mixer_mutex"); - - return OUTPUT_PLUGIN_INIT_FOUND_DEVICES; -} - -void sun_cleanup(void) -{ - g_free(audio.devaudio); - g_free(audio.devaudioctl); - g_free(audio.devmixer); - g_free(audio.mixer_voldev); - - if (!pthread_mutex_lock(&audio.mixer_mutex)) - { - if (audio.mixerfd) - close(audio.mixerfd); - pthread_mutex_unlock(&audio.mixer_mutex); - pthread_mutex_destroy(&audio.mixer_mutex); - } -} - diff -Nru audacious-plugins-2.4.4/src/sun/sun.h audacious-plugins-3.2/src/sun/sun.h --- audacious-plugins-2.4.4/src/sun/sun.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/sun/sun.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,161 +0,0 @@ -/* - * Copyright (C) 2001 CubeSoft Communications, Inc. - * - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "config.h" - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "audioio.h" - -#include -#include -#include -#include - -/* Default path to audio device. */ -#ifndef SUN_DEV_AUDIO -#define SUN_DEV_AUDIO "/dev/audio" -#endif - -/* Default path to audioctl device */ -#ifndef SUN_DEV_AUDIOCTL -#define SUN_DEV_AUDIOCTL "/dev/audioctl" -#endif - -/* Default path to mixer device */ -#ifndef SUN_DEV_MIXER -#define SUN_DEV_MIXER "/dev/mixer" -#endif - -/* Default mixer device to control */ -#ifndef SUN_DEFAULT_VOLUME_DEV -#define SUN_DEFAULT_VOLUME_DEV "dac" -#endif - -/* Default hardware block size */ -#ifndef SUN_DEFAULT_BLOCKSIZE -#define SUN_DEFAULT_BLOCKSIZE 8800 -#endif - -/* Default `requested' buffer size */ -#ifndef SUN_DEFAULT_BUFFER_SIZE -#define SUN_DEFAULT_BUFFER_SIZE 8800 -#endif - -/* Minimum total buffer size */ -#ifndef SUN_MIN_BUFFER_SIZE -#define SUN_MIN_BUFFER_SIZE 14336 -#endif - -/* Default prebuffering (%) */ -#ifndef SUN_DEFAULT_PREBUFFER_SIZE -#define SUN_DEFAULT_PREBUFFER_SIZE 25 -#endif - -#define SUN_VERSION "0.6" - -struct sun_format { - char name[16]; - union { - gint xmms; - gint sun; - } format; - int frequency; - int channels; - int bps; -}; - -struct sun_audio { - struct sun_format *input; - struct sun_format *output; - struct sun_format *effect; - - gchar *devaudio; - gchar *devaudioctl; - gchar *devmixer; - gchar *mixer_voldev; - - gint fd; - gint mixerfd; - - gboolean mixer_keepopen; - - gboolean going; - gboolean paused; - gboolean unpause, do_pause; - - gint req_prebuffer_size; - gint req_buffer_size; - - pthread_mutex_t mixer_mutex; -}; - -struct sun_statsframe { - int fd; - int active; - - GtkWidget *mode_label; - GtkWidget *blocksize_label; - GtkWidget *ooffs_label; - pthread_mutex_t audioctl_mutex; - pthread_mutex_t active_mutex; -}; - -extern OutputPlugin op; - -extern struct sun_audio audio; -extern struct sun_statsframe stats_frame; - -OutputPluginInitStatus sun_init(void); -void sun_about(void); -void sun_configure(void); -void sun_cleanup(void); - -gint sun_open(gint, int, int); -void sun_write(void *, int); -void sun_close(void); -void sun_flush(int); -void sun_pause(short); -gint sun_free(void); -gint sun_playing(void); -gint sun_output_time(void); -gint sun_written_time(void); -void sun_get_volume(int *, int *); -void sun_set_volume(int, int); -void *sun_get_convert_buffer(size_t); -int (*sun_get_convert_func(int, int))(void **, int); - -#ifdef WORDS_BIGENDIAN -#define IS_BIG_ENDIAN TRUE -#else -#define IS_BIG_ENDIAN FALSE -#endif - diff -Nru audacious-plugins-2.4.4/src/tonegen/Makefile audacious-plugins-3.2/src/tonegen/Makefile --- audacious-plugins-2.4.4/src/tonegen/Makefile 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/tonegen/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -8,5 +8,5 @@ plugindir := ${plugindir}/${INPUT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. LIBS += ${GTK_LIBS} ${GLIB_LIBS} -lm diff -Nru audacious-plugins-2.4.4/src/tonegen/tonegen.c audacious-plugins-3.2/src/tonegen/tonegen.c --- audacious-plugins-2.4.4/src/tonegen/tonegen.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/tonegen/tonegen.c 2012-01-20 19:48:30.000000000 +0000 @@ -26,6 +26,7 @@ #include #include +#include #include #define MIN_FREQ 10 @@ -38,12 +39,7 @@ #define PI 3.14159265358979323846 #endif -static InputPlugin tone_ip; - -static void tone_init(void) -{ - aud_uri_set_plugin("tone://", &tone_ip); -} +static gboolean stop_flag = FALSE; static void tone_about (void) { @@ -58,7 +54,7 @@ "e.g. tone://2000;2005 to play a 2000Hz tone and a 2005Hz tone")); } -static gint tone_is_our_file(const gchar * filename) +static gboolean tone_is_our_fd(const gchar *filename, VFSFile *fd) { if (!strncmp(filename, "tone://", 7)) return TRUE; @@ -114,12 +110,13 @@ return title; } -static void tone_play(InputPlayback * playback) +static gboolean tone_play(InputPlayback *playback, const gchar *filename, + VFSFile *file, gint start_time, gint stop_time, gboolean pause) { GArray *frequencies; - gchar *name, *filename = playback->filename; gfloat data[BUF_SAMPLES]; gsize i; + gboolean error = FALSE; struct { gdouble wd; @@ -128,17 +125,18 @@ frequencies = tone_filename_parse(filename); if (frequencies == NULL) - return; + return FALSE; if (playback->output->open_audio(FMT_FLOAT, OUTPUT_FREQ, 1) == 0) { - playback->error = TRUE; + error = TRUE; goto error_exit; } - name = tone_title(filename); - playback->set_params(playback, name, -1, 16 * OUTPUT_FREQ, OUTPUT_FREQ, 1); - g_free(name); + if (pause) + playback->output->pause(TRUE); + + playback->set_params(playback, 16 * OUTPUT_FREQ, OUTPUT_FREQ, 1); tone = g_malloc(frequencies->len * sizeof(*tone)); for (i = 0; i < frequencies->len; i++) @@ -149,11 +147,10 @@ tone[i].t = 0; } - playback->playing = TRUE; - playback->error = FALSE; + stop_flag = FALSE; playback->set_pb_ready(playback); - while (playback->playing) + while (!stop_flag) { for (i = 0; i < BUF_SAMPLES; i++) { @@ -171,7 +168,8 @@ data[i] = (sum_sines * 0.999 / (gdouble) frequencies->len); } - playback->pass_audio(playback, FMT_FLOAT, 1, BUF_BYTES, data, &playback->playing); + if (!stop_flag) + playback->output->write_audio(data, BUF_BYTES); } error_exit: @@ -179,20 +177,24 @@ g_free(tone); playback->output->close_audio(); - playback->playing = FALSE; + stop_flag = TRUE; + + return !error; } static void tone_stop(InputPlayback * playback) { - playback->playing = FALSE; + stop_flag = TRUE; + playback->output->abort_write(); } -static void tone_pause(InputPlayback * playback, gshort paused) +static void tone_pause(InputPlayback * playback, gboolean pause) { - playback->output->pause(paused); + if (!stop_flag) + playback->output->pause(pause); } -static Tuple *tone_get_song_tuple(const gchar * filename) +static Tuple *tone_probe_for_tuple(const gchar *filename, VFSFile *fd) { Tuple *tuple = tuple_new_from_filename(filename); gchar *tmp; @@ -202,24 +204,23 @@ if ((tmp = tone_title(filename)) != NULL) { - tuple_associate_string(tuple, FIELD_TITLE, NULL, tmp); + tuple_set_str(tuple, FIELD_TITLE, NULL, tmp); g_free(tmp); } return tuple; } -static InputPlugin tone_ip = { - .description = "Tone Generator", - .init = tone_init, +static const gchar * const schemes[] = {"tone", NULL}; + +AUD_INPUT_PLUGIN +( + .name = "Tone Generator", + .schemes = schemes, .about = tone_about, - .is_our_file = tone_is_our_file, - .play_file = tone_play, + .is_our_file_from_vfs = tone_is_our_fd, + .play = tone_play, .stop = tone_stop, .pause = tone_pause, - .get_song_tuple = tone_get_song_tuple -}; - -static InputPlugin *tonegen_iplist[] = { &tone_ip, NULL }; - -DECLARE_PLUGIN(tonegen, NULL, NULL, tonegen_iplist, NULL, NULL, NULL, NULL, NULL); + .probe_for_tuple = tone_probe_for_tuple +) diff -Nru audacious-plugins-2.4.4/src/unix-io/gtk.c audacious-plugins-3.2/src/unix-io/gtk.c --- audacious-plugins-2.4.4/src/unix-io/gtk.c 1970-01-01 00:00:00.000000000 +0000 +++ audacious-plugins-3.2/src/unix-io/gtk.c 2012-01-20 19:48:30.000000000 +0000 @@ -0,0 +1,61 @@ +/* + * UNIX Transport Plugin for Audacious + * Copyright 2009-2011 John Lindgren + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions, and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions, and the following disclaimer in the documentation + * provided with the distribution. + * + * This software is provided "as is" and without any warranty, express or + * implied. In no event shall the authors be liable for any damages arising from + * the use of this software. + */ + +#include + +#include + +#include +#include +#include + +#include "config.h" + +void unix_about (void) +{ + static GtkWidget * window = NULL; + + audgui_simple_message (& window, GTK_MESSAGE_INFO, _("About File I/O " + "Plugin"), "File I/O Plugin for Audacious\n" + "Copyright 2009-2011 John Lindgren\n\n" + "THIS PLUGIN IS REQUIRED. DO NOT DISABLE IT.\n\n" + "Redistribution and use in source and binary forms, with or without " + "modification, are permitted provided that the following conditions are " + "met:\n\n" + "1. Redistributions of source code must retain the above copyright " + "notice, this list of conditions, and the following disclaimer.\n\n" + "2. Redistributions in binary form must reproduce the above copyright " + "notice, this list of conditions, and the following disclaimer in the " + "documentation provided with the distribution.\n\n" + "This software is provided \"as is\" and without any warranty, express or " + "implied. In no event shall the authors be liable for any damages arising " + "from the use of this software."); +} + +void unix_error (const gchar * format, ...) +{ + va_list args; + va_start (args, format); + + char * error = g_strdup_vprintf (format, args); + aud_interface_show_error (error); + g_free (error); + + va_end (args); +} diff -Nru audacious-plugins-2.4.4/src/unix-io/Makefile audacious-plugins-3.2/src/unix-io/Makefile --- audacious-plugins-2.4.4/src/unix-io/Makefile 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/unix-io/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -1,10 +1,12 @@ PLUGIN = unix-io${PLUGIN_SUFFIX} -SRCS = unix-io.c +SRCS = gtk.c unix-io.c include ../../buildsys.mk include ../../extra.mk plugindir := ${plugindir}/${TRANSPORT_PLUGIN_DIR} +CPPFLAGS += -I../.. ${GTK_CFLAGS} CFLAGS += ${PLUGIN_CFLAGS} +LIBS += ${GTK_LIBS} \ No newline at end of file diff -Nru audacious-plugins-2.4.4/src/unix-io/unix-io.c audacious-plugins-3.2/src/unix-io/unix-io.c --- audacious-plugins-2.4.4/src/unix-io/unix-io.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/unix-io/unix-io.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,6 @@ /* * UNIX Transport Plugin for Audacious - * Copyright 2009 John Lindgren + * Copyright 2009-2011 John Lindgren * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -28,21 +28,19 @@ #include -#include #include #include -#define error(...) fprintf (stderr, "unix-io: " __VA_ARGS__) +/* in gtk.c */ +void unix_error (const gchar * format, ...); +void unix_about (void); -static VFSFile * unix_fopen (const gchar * uri, const gchar * mode) +static void * unix_fopen (const gchar * uri, const gchar * mode) { - VFSFile * file = NULL; gboolean update; mode_t mode_flag; gint handle; - AUDDBG ("fopen %s, mode = %s\n", uri, mode); - update = (strchr (mode, '+') != NULL); switch (mode[0]) @@ -60,50 +58,55 @@ return NULL; } +#ifdef _WIN32 + mode_flag |= O_BINARY; +#endif + gchar * filename = uri_to_filename (uri); if (! filename) return NULL; if (mode_flag & O_CREAT) +#ifdef S_IRGRP handle = open (filename, mode_flag, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); +#else + handle = open (filename, mode_flag, S_IRUSR | S_IWUSR); +#endif else handle = open (filename, mode_flag); - AUDDBG (" = %d.\n", handle); - if (handle < 0) { - error ("Cannot open %s: %s.\n", filename, strerror (errno)); - goto DONE; + unix_error ("Cannot open %s: %s.", filename, strerror (errno)); + g_free (filename); + return NULL; } +#ifdef HAVE_FCNTL fcntl (handle, F_SETFD, FD_CLOEXEC); +#endif - file = g_malloc (sizeof * file); - file->handle = GINT_TO_POINTER (handle); - -DONE: g_free (filename); - return file; + return GINT_TO_POINTER (handle); } static gint unix_fclose (VFSFile * file) { - gint handle = GPOINTER_TO_INT (file->handle); + gint handle = GPOINTER_TO_INT (vfs_get_handle (file)); gint result = 0; - AUDDBG ("[%d] fclose\n", handle); - +#ifdef HAVE_FSYNC if (fsync (handle) < 0) { - error ("fsync failed: %s.\n", strerror (errno)); + unix_error ("fsync failed: %s.", strerror (errno)); result = -1; } +#endif if (close (handle) < 0) { - error ("close failed: %s.\n", strerror (errno)); + unix_error ("close failed: %s.", strerror (errno)); result = -1; } @@ -112,19 +115,17 @@ static gint64 unix_fread (void * ptr, gint64 size, gint64 nitems, VFSFile * file) { - gint handle = GPOINTER_TO_INT (file->handle); + gint handle = GPOINTER_TO_INT (vfs_get_handle (file)); gint64 goal = size * nitems; gint64 total = 0; -/* AUDDBG ("[%d] fread %d x %d\n", handle, (gint) size, (gint) nitems); */ - while (total < goal) { gint64 readed = read (handle, (gchar *) ptr + total, goal - total); if (readed < 0) { - error ("read failed: %s.\n", strerror (errno)); + unix_error ("read failed: %s.", strerror (errno)); break; } @@ -134,47 +135,39 @@ total += readed; } -/* AUDDBG (" = %d\n", (gint) total); */ - return (size > 0) ? total / size : 0; } static gint64 unix_fwrite (const void * ptr, gint64 size, gint64 nitems, VFSFile * file) { - gint handle = GPOINTER_TO_INT (file->handle); + gint handle = GPOINTER_TO_INT (vfs_get_handle (file)); gint64 goal = size * nitems; gint64 total = 0; - AUDDBG ("[%d] fwrite %d x %d\n", handle, (gint) size, (gint) nitems); - while (total < goal) { gint64 written = write (handle, (gchar *) ptr + total, goal - total); if (written < 0) { - error ("write failed: %s.\n", strerror (errno)); + unix_error ("write failed: %s.", strerror (errno)); break; } total += written; } - AUDDBG (" = %d\n", (gint) total); - return (size > 0) ? total / size : 0; } static gint unix_fseek (VFSFile * file, gint64 offset, gint whence) { - gint handle = GPOINTER_TO_INT (file->handle); - - AUDDBG ("[%d] fseek %d, whence = %d\n", handle, (gint) offset, whence); + gint handle = GPOINTER_TO_INT (vfs_get_handle (file)); if (lseek (handle, offset, whence) < 0) { - error ("lseek failed: %s.\n", strerror (errno)); + unix_error ("lseek failed: %s.", strerror (errno)); return -1; } @@ -183,11 +176,11 @@ static gint64 unix_ftell (VFSFile * file) { - gint handle = GPOINTER_TO_INT (file->handle); + gint handle = GPOINTER_TO_INT (vfs_get_handle (file)); gint64 result = lseek (handle, 0, SEEK_CUR); if (result < 0) - error ("lseek failed: %s.\n", strerror (errno)); + unix_error ("lseek failed: %s.", strerror (errno)); return result; } @@ -222,14 +215,12 @@ static gint unix_ftruncate (VFSFile * file, gint64 length) { - gint handle = GPOINTER_TO_INT (file->handle); - - AUDDBG ("[%d] ftruncate %d\n", handle, (gint) length); + gint handle = GPOINTER_TO_INT (vfs_get_handle (file)); gint result = ftruncate (handle, length); if (result < 0) - error ("ftruncate failed: %s.\n", strerror (errno)); + unix_error ("ftruncate failed: %s.", strerror (errno)); return result; } @@ -254,27 +245,27 @@ return length; } -static VFSConstructor constructor = -{ - .uri_id = "file://", - .vfs_fopen_impl = unix_fopen, - .vfs_fclose_impl = unix_fclose, - .vfs_fread_impl = unix_fread, - .vfs_fwrite_impl = unix_fwrite, - .vfs_getc_impl = unix_getc, - .vfs_ungetc_impl = unix_ungetc, - .vfs_fseek_impl = unix_fseek, - .vfs_rewind_impl = unix_rewind, - .vfs_ftell_impl = unix_ftell, - .vfs_feof_impl = unix_feof, - .vfs_ftruncate_impl = unix_ftruncate, - .vfs_fsize_impl = unix_fsize, - .vfs_get_metadata_impl = NULL, -}; +static const gchar * const unix_schemes[] = {"file", NULL}; -static void unix_init (void) -{ - vfs_register_transport (& constructor); -} +static VFSConstructor constructor = { + .vfs_fopen_impl = unix_fopen, + .vfs_fclose_impl = unix_fclose, + .vfs_fread_impl = unix_fread, + .vfs_fwrite_impl = unix_fwrite, + .vfs_getc_impl = unix_getc, + .vfs_ungetc_impl = unix_ungetc, + .vfs_fseek_impl = unix_fseek, + .vfs_rewind_impl = unix_rewind, + .vfs_ftell_impl = unix_ftell, + .vfs_feof_impl = unix_feof, + .vfs_ftruncate_impl = unix_ftruncate, + .vfs_fsize_impl = unix_fsize +}; -DECLARE_PLUGIN (unix_io, unix_init, NULL) +AUD_TRANSPORT_PLUGIN +( + .name = "File I/O", + .about = unix_about, + .schemes = unix_schemes, + .vtable = & constructor +) diff -Nru audacious-plugins-2.4.4/src/voice_removal/Makefile audacious-plugins-3.2/src/voice_removal/Makefile --- audacious-plugins-2.4.4/src/voice_removal/Makefile 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/voice_removal/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -8,5 +8,5 @@ plugindir := ${plugindir}/${EFFECT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. +LIBS += ${GTK_LIBS} ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/voice_removal/voice_removal.c audacious-plugins-3.2/src/voice_removal/voice_removal.c --- audacious-plugins-2.4.4/src/voice_removal/voice_removal.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/voice_removal/voice_removal.c 2012-01-20 19:48:30.000000000 +0000 @@ -18,6 +18,8 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#include + #include "config.h" #include @@ -69,16 +71,13 @@ return time; } -static EffectPlugin voice = { - .description = "Voice Removal Plugin", +AUD_EFFECT_PLUGIN +( + .name = "Voice Removal", .start = voice_start, .process = voice_process, .finish = voice_finish, .flush = voice_flush, .decoder_to_output_time = voice_decoder_to_output_time, .output_to_decoder_time = voice_output_to_decoder_time -}; - -EffectPlugin *voice_eplist[] = { &voice, NULL }; - -SIMPLE_EFFECT_PLUGIN(voice_removal, voice_eplist); +) diff -Nru audacious-plugins-2.4.4/src/vorbis/configure.c audacious-plugins-3.2/src/vorbis/configure.c --- audacious-plugins-2.4.4/src/vorbis/configure.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/vorbis/configure.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,75 +0,0 @@ -#include "config.h" - -#include "vorbis.h" - -#include -#include -#include - -#include -#include -#include -#include - -vorbis_config_t vorbis_cfg; - -static void -vorbis_save_config() -{ - mcs_handle_t *db; - - db = aud_cfg_db_open(); - aud_cfg_db_set_bool(db, "vorbis", "tag_override", - vorbis_cfg.tag_override); - aud_cfg_db_set_string(db, "vorbis", "tag_format", vorbis_cfg.tag_format); - aud_cfg_db_close(db); -} - -vorbis_config_t config; /* temporary config */ - -static PreferencesWidget settings_elements[] = { - {WIDGET_CHK_BTN, N_("Override generic titles"), &config.tag_override, NULL, NULL, FALSE}, - {WIDGET_ENTRY, N_("Title format:"), &config.tag_format, NULL, NULL, TRUE, {.entry = {FALSE}}, VALUE_STRING}, -}; - -static PreferencesWidget prefs[] = { - {WIDGET_BOX, N_("Ogg Vorbis Tags"), NULL, NULL, NULL, FALSE, - {.box = {settings_elements, - G_N_ELEMENTS(settings_elements), - FALSE /* vertical */, TRUE /* frame */}}}, -}; - -static void -configure_apply() -{ - vorbis_cfg.tag_override = config.tag_override; - - g_free(vorbis_cfg.tag_format); - vorbis_cfg.tag_format = g_strdup(config.tag_format); - - vorbis_save_config(); -} - -static void -configure_init(void) -{ - memcpy(&config, &vorbis_cfg, sizeof(config)); - config.tag_format = g_strdup(vorbis_cfg.tag_format); -} - -static void -configure_cleanup(void) -{ - g_free(config.tag_format); - config.tag_format = NULL; -} - -PluginPreferences preferences = { - .title = N_("Ogg Vorbis Audio Plugin Configuration"), - .prefs = prefs, - .n_prefs = G_N_ELEMENTS(prefs), - .type = PREFERENCES_WINDOW, - .init = configure_init, - .apply = configure_apply, - .cleanup = configure_cleanup, -}; diff -Nru audacious-plugins-2.4.4/src/vorbis/Makefile audacious-plugins-3.2/src/vorbis/Makefile --- audacious-plugins-2.4.4/src/vorbis/Makefile 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/vorbis/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -1,7 +1,6 @@ PLUGIN = vorbis${PLUGIN_SUFFIX} -SRCS = configure.c \ - vcupdate.c \ +SRCS = vcupdate.c \ vcedit.c \ vorbis.c @@ -11,5 +10,5 @@ plugindir := ${plugindir}/${INPUT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${OGG_VORBIS_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -LIBS += ${OGG_VORBIS_LIBS} ${GTK_LIBS} ${GLIB_LIBS} ${MOWGLI_LIBS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${OGG_VORBIS_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. +LIBS += ${OGG_VORBIS_LIBS} ${GTK_LIBS} ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/vorbis/vcedit.c audacious-plugins-3.2/src/vorbis/vcedit.c --- audacious-plugins-2.4.4/src/vorbis/vcedit.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/vorbis/vcedit.c 2012-01-20 19:48:30.000000000 +0000 @@ -145,7 +145,7 @@ { int result; char *buffer; - int bytes; + gint64 bytes; result = ogg_stream_packetout(s->os, p); @@ -189,7 +189,7 @@ vcedit_write_func write_func) { char *buffer; - int bytes, i; + gint64 bytes, i; ogg_packet *header; ogg_packet header_main; ogg_packet header_comments; @@ -317,7 +317,7 @@ ogg_int64_t granpos = 0; int result; char *buffer; - int bytes; + gint64 bytes; int needflush = 0, needout = 0; state->eosin = 0; diff -Nru audacious-plugins-2.4.4/src/vorbis/vcedit.h audacious-plugins-3.2/src/vorbis/vcedit.h --- audacious-plugins-2.4.4/src/vorbis/vcedit.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/vorbis/vcedit.h 2012-01-20 19:48:30.000000000 +0000 @@ -19,8 +19,8 @@ #include #include -typedef size_t (*vcedit_read_func)(void *, size_t, size_t, void *); -typedef size_t (*vcedit_write_func)(const void *, size_t, size_t, void *); +typedef gint64 (*vcedit_read_func)(void *, gint64, gint64, void *); +typedef gint64 (*vcedit_write_func)(const void *, gint64, gint64, void *); typedef struct { ogg_sync_state *oy; diff -Nru audacious-plugins-2.4.4/src/vorbis/vcupdate.c audacious-plugins-3.2/src/vorbis/vcupdate.c --- audacious-plugins-2.4.4/src/vorbis/vcupdate.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/vorbis/vcupdate.c 2012-01-20 19:48:30.000000000 +0000 @@ -37,21 +37,23 @@ #include #include -#include - #include "vorbis.h" #include "vcedit.h" static gboolean write_and_pivot_files(vcedit_state * state); -static mowgli_dictionary_t * -dictionary_from_vorbis_comment(vorbis_comment * vc) +/* str_unref() may be a macro */ +static void str_unref_cb (void * str) +{ + str_unref (str); +} + +static GHashTable * dictionary_from_vorbis_comment (vorbis_comment * vc) { - mowgli_dictionary_t *dict; gint i; - gchar *val; - dict = mowgli_dictionary_create(g_ascii_strcasecmp); + GHashTable * dict = g_hash_table_new_full (g_str_hash, g_str_equal, + str_unref_cb, str_unref_cb); for (i = 0; i < vc->comments; i++) { gchar **frags; @@ -59,13 +61,8 @@ AUDDBG("%s\n", vc->user_comments[i]); frags = g_strsplit(vc->user_comments[i], "=", 2); - /* FIXME: need more rigorous checks to guard against - borqued comments */ - - /* No RHS? */ - val = frags[1] ? frags[1] : ""; - - mowgli_dictionary_add(dict, frags[0], g_strdup(val)); + if (frags[0] && frags[1]) + g_hash_table_insert (dict, str_get (frags[0]), str_get (frags[1])); g_strfreev(frags); /* Don't use g_free() for string lists! --eugene */ } @@ -73,54 +70,43 @@ return dict; } -static void -dictionary_to_vorbis_comment(vorbis_comment * vc, mowgli_dictionary_t * dict) +static void add_tag_cb (void * key, void * field, void * vc) { - mowgli_dictionary_iteration_state_t state; - gchar *field; + vorbis_comment_add_tag (vc, key, field); +} +static void dictionary_to_vorbis_comment (vorbis_comment * vc, GHashTable * dict) +{ vorbis_comment_clear(vc); - - MOWGLI_DICTIONARY_FOREACH(field, &state, dict) { - vorbis_comment_add_tag(vc, state.cur->key, field); - } + g_hash_table_foreach (dict, add_tag_cb, vc); } static void insert_str_tuple_field_to_dictionary (const Tuple * tuple, int - fieldn, mowgli_dictionary_t * dict, char * key) + fieldn, GHashTable * dict, const char * key) { - - if(mowgli_dictionary_find(dict, key) != NULL) g_free(mowgli_dictionary_delete(dict, key)); - - gchar *tmp = (gchar*)tuple_get_string(tuple, fieldn, NULL); - if(tmp != NULL && strlen(tmp) != 0) mowgli_dictionary_add(dict, key, g_strdup(tmp)); + gchar *tmp = (gchar*)tuple_get_str(tuple, fieldn, NULL); + if (tmp && tmp[0]) + g_hash_table_insert (dict, str_get (key), str_get (tmp)); + str_unref(tmp); } static void insert_int_tuple_field_to_dictionary (const Tuple * tuple, int - fieldn, mowgli_dictionary_t * dict, char * key) + fieldn, GHashTable * dict, const char * key) { int val; - if(mowgli_dictionary_find(dict, key) != NULL) g_free(mowgli_dictionary_delete(dict, key)); - if(tuple_get_value_type(tuple, fieldn, NULL) == TUPLE_INT && (val = tuple_get_int(tuple, fieldn, NULL)) >= 0) { - gchar *tmp = g_strdup_printf("%d", val); - mowgli_dictionary_add(dict, key, tmp); + char tmp[16]; + snprintf (tmp, sizeof tmp, "%d", val); + g_hash_table_insert (dict, str_get (key), str_get (tmp)); } } -static void -destroy_cb(mowgli_dictionary_elem_t *delem, void *privdata) -{ - g_free(delem->data); -} - gboolean vorbis_update_song_tuple (const Tuple * tuple, VFSFile * fd) { vcedit_state *state; vorbis_comment *comment; - mowgli_dictionary_t *dict; gboolean ret; if(!tuple || !fd) return FALSE; @@ -133,7 +119,7 @@ } comment = vcedit_comments(state); - dict = dictionary_from_vorbis_comment(comment); + GHashTable * dict = dictionary_from_vorbis_comment (comment); insert_str_tuple_field_to_dictionary(tuple, FIELD_TITLE, dict, "title"); insert_str_tuple_field_to_dictionary(tuple, FIELD_ARTIST, dict, "artist"); @@ -145,7 +131,7 @@ insert_int_tuple_field_to_dictionary(tuple, FIELD_TRACK_NUMBER, dict, "tracknumber"); dictionary_to_vorbis_comment(comment, dict); - mowgli_dictionary_destroy(dict, destroy_cb, NULL); + g_hash_table_destroy (dict); ret = write_and_pivot_files(state); diff -Nru audacious-plugins-2.4.4/src/vorbis/vorbis.c audacious-plugins-3.2/src/vorbis/vorbis.c --- audacious-plugins-2.4.4/src/vorbis/vorbis.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/vorbis/vorbis.c 2012-01-20 19:48:30.000000000 +0000 @@ -4,7 +4,7 @@ * Copyright (C) 2007 William Pitcock * Copyright (C) 2008 Cristi MăgheruÈ™an * Copyright (C) 2008 Eugene Zagidullin - * Copyright (C) 2009 Audacious Developers + * Copyright (C) 2009-2011 Audacious Developers * * ReplayGain processing Copyright (C) 2002 Gian-Carlo Pascutto * @@ -32,13 +32,13 @@ #include #include +#include #include #include #include #include -#include #include #include #include @@ -82,13 +82,11 @@ NULL }; -static volatile gint seek_value = -1; +static gint seek_value; +static gboolean stop_flag = FALSE; static GMutex * seek_mutex = NULL; static GCond * seek_cond = NULL; -gchar **vorbis_tag_encoding_list = NULL; - - static gint vorbis_check_fd(const gchar *filename, VFSFile *stream) { @@ -156,7 +154,7 @@ gchar *str = vorbis_comment_query(comment, key, 0); if (str != NULL) { gchar *tmp = str_to_utf8(str); - tuple_associate_string(tuple, nfield, field, tmp); + tuple_set_str(tuple, nfield, field, tmp); g_free(tmp); } } @@ -174,9 +172,7 @@ (vorbisfile, -1) * 1000; /* associate with tuple */ - tuple_associate_int(tuple, FIELD_LENGTH, NULL, length); - /* maybe, it would be better to display nominal bitrate (like in main win), not average? --eugene */ - tuple_associate_int(tuple, FIELD_BITRATE, NULL, ov_bitrate(vorbisfile, -1) / 1000); + tuple_set_int(tuple, FIELD_LENGTH, NULL, length); if ((comment = ov_comment(vorbisfile, -1)) != NULL) { gchar *tmps; @@ -187,24 +183,17 @@ set_tuple_str(tuple, FIELD_COMMENT, NULL, comment, "comment"); if ((tmps = vorbis_comment_query(comment, "tracknumber", 0)) != NULL) - tuple_associate_int(tuple, FIELD_TRACK_NUMBER, NULL, atoi(tmps)); + tuple_set_int(tuple, FIELD_TRACK_NUMBER, NULL, atoi(tmps)); if ((tmps = vorbis_comment_query (comment, "date", 0)) != NULL) - tuple_associate_int (tuple, FIELD_YEAR, NULL, atoi (tmps)); + tuple_set_int (tuple, FIELD_YEAR, NULL, atoi (tmps)); } - tuple_associate_string(tuple, FIELD_QUALITY, NULL, "lossy"); - - if (comment != NULL && comment->vendor != NULL) - { - gchar *codec = g_strdup_printf("Ogg Vorbis [%s]", comment->vendor); - tuple_associate_string(tuple, FIELD_CODEC, NULL, codec); - g_free(codec); - } - else - tuple_associate_string(tuple, FIELD_CODEC, NULL, "Ogg Vorbis"); + vorbis_info * info = ov_info (vorbisfile, -1); + tuple_set_format (tuple, "Ogg Vorbis", info->channels, info->rate, + info->bitrate_nominal / 1000); - tuple_associate_string(tuple, FIELD_MIMETYPE, NULL, "application/ogg"); + tuple_set_str(tuple, FIELD_MIMETYPE, NULL, "application/ogg"); return tuple; } @@ -314,33 +303,33 @@ gint bytes, channels, samplerate, br; gchar * title = NULL; - playback->error = FALSE; seek_value = (start_time > 0) ? start_time : -1; + stop_flag = FALSE; + memset(&vf, 0, sizeof(vf)); + gboolean error = FALSE; + if (ov_open_callbacks (file, & vf, NULL, 0, vfs_is_streaming (file) ? vorbis_callbacks_stream : vorbis_callbacks) < 0) { - playback->error = TRUE; + error = TRUE; goto play_cleanup; } vi = ov_info(&vf, -1); if (vi->channels > 2) - { - playback->eof = TRUE; goto play_cleanup; - } br = vi->bitrate_nominal; channels = vi->channels; samplerate = vi->rate; - playback->set_params (playback, NULL, 0, br, samplerate, channels); + playback->set_params (playback, br, samplerate, channels); if (!playback->output->open_audio(FMT_FLOAT, samplerate, channels)) { - playback->error = TRUE; + error = TRUE; goto play_cleanup; } @@ -350,14 +339,8 @@ vorbis_update_replaygain(&vf, &rg_info); playback->output->set_replaygain_info (& rg_info); - g_mutex_lock (seek_mutex); - - playback->playing = TRUE; - playback->eof = FALSE; playback->set_pb_ready(playback); - g_mutex_unlock (seek_mutex); - /* * Note that chaining changes things here; A vorbis file may * be a mix of different channels, bitrates and sample rates. @@ -372,7 +355,7 @@ g_mutex_lock (seek_mutex); - if (! playback->playing) + if (stop_flag) { g_mutex_unlock (seek_mutex); break; @@ -399,7 +382,6 @@ while (playback->output->buffer_playing ()) g_usleep (10000); - playback->eof = 1; break; } @@ -415,8 +397,8 @@ g_free (title); title = g_strdup (new_title); - playback->set_tuple (playback, get_tuple_for_vorbisfile - (& vf, playback->filename)); + playback->set_tuple (playback, get_tuple_for_vorbisfile (& vf, + filename)); } } @@ -428,10 +410,8 @@ */ vi = ov_info(&vf, -1); - if (vi->channels > 2) { - playback->eof = TRUE; + if (vi->channels > 2) goto stop_processing; - } if (vi->rate != samplerate || vi->channels != channels) { samplerate = vi->rate; @@ -442,8 +422,7 @@ playback->output->close_audio(); if (!playback->output->open_audio(FMT_FLOAT, vi->rate, vi->channels)) { - playback->error = TRUE; - playback->eof = TRUE; + error = TRUE; goto stop_processing; } @@ -457,20 +436,15 @@ stop_processing: - if (current_section <= last_section) { - /* - * set total play time, bitrate, rate, and channels of - * current section - */ - playback->set_params (playback, NULL, 0, br, samplerate, channels); - + if (current_section <= last_section) + { + playback->set_params (playback, br, samplerate, channels); last_section = current_section; - } } /* main loop */ g_mutex_lock (seek_mutex); - playback->playing = FALSE; + stop_flag = TRUE; g_cond_signal (seek_cond); /* wake up any waiting request */ g_mutex_unlock (seek_mutex); @@ -480,16 +454,16 @@ ov_clear(&vf); g_free (title); - return ! playback->error; + return ! error; } static void vorbis_stop (InputPlayback * playback) { g_mutex_lock (seek_mutex); - if (playback->playing) + if (! stop_flag) { - playback->playing = FALSE; + stop_flag = TRUE; playback->output->abort_write (); g_cond_signal (seek_cond); } @@ -497,21 +471,21 @@ g_mutex_unlock (seek_mutex); } -static void vorbis_pause (InputPlayback * playback, gshort pause) +static void vorbis_pause (InputPlayback * playback, gboolean pause) { g_mutex_lock (seek_mutex); - if (playback->playing) + if (! stop_flag) playback->output->pause (pause); g_mutex_unlock (seek_mutex); } -static void vorbis_mseek (InputPlayback * playback, gulong time) +static void vorbis_mseek (InputPlayback * playback, gint time) { g_mutex_lock (seek_mutex); - if (playback->playing) + if (! stop_flag) { seek_value = time; playback->output->abort_write (); @@ -541,6 +515,56 @@ return tuple; } +static gboolean get_song_image (const gchar * filename, VFSFile * file, + void * * data, gint64 * size) +{ + OggVorbis_File vfile; + + if (ov_open_callbacks (file, & vfile, NULL, 0, vfs_is_streaming (file) ? + vorbis_callbacks_stream : vorbis_callbacks) < 0) + return FALSE; + + vorbis_comment * comment = ov_comment (& vfile, -1); + if (! comment) + goto ERR; + + const gchar * s = vorbis_comment_query (comment, "METADATA_BLOCK_PICTURE", 0); + if (! s) + goto ERR; + + gsize length2; + void * data2 = g_base64_decode (s, & length2); + if (! data2 || length2 < 8) + goto PARSE_ERR; + + gint mime_length = GUINT32_FROM_BE (* (guint32 *) (data2 + 4)); + if (length2 < 8 + mime_length + 4) + goto PARSE_ERR; + + gint desc_length = GUINT32_FROM_BE (* (guint32 *) (data2 + 8 + mime_length)); + if (length2 < 8 + mime_length + 4 + desc_length + 20) + goto PARSE_ERR; + + * size = GUINT32_FROM_BE (* (guint32 *) (data2 + 8 + mime_length + 4 + desc_length + 16)); + if (length2 < 8 + mime_length + 4 + desc_length + 20 + * size) + goto PARSE_ERR; + + * data = g_malloc (* size); + memcpy (* data, data2 + 8 + mime_length + 4 + desc_length + 20, * size); + + g_free (data2); + ov_clear (& vfile); + return TRUE; + +PARSE_ERR: + fprintf (stderr, "vorbis: Error parsing METADATA_BLOCK_PICTURE in %s.\n", filename); + g_free (data2); + +ERR: + ov_clear (& vfile); + return FALSE; +} + static void vorbis_aboutbox (void) { static GtkWidget * about_window = NULL; @@ -566,121 +590,40 @@ "Visit the Xiph.org Foundation at http://www.xiph.org/\n")); } -static InputPlugin vorbis_ip; - -static void -vorbis_init(void) +static gboolean vorbis_init (void) { - mcs_handle_t *db; - gchar *tmp = NULL; - - memset(&vorbis_cfg, 0, sizeof(vorbis_config_t)); - vorbis_cfg.http_buffer_size = 128; - vorbis_cfg.http_prebuffer = 25; - vorbis_cfg.proxy_port = 8080; - vorbis_cfg.proxy_use_auth = FALSE; - vorbis_cfg.proxy_user = NULL; - vorbis_cfg.proxy_pass = NULL; - vorbis_cfg.tag_override = FALSE; - vorbis_cfg.tag_format = NULL; - - db = aud_cfg_db_open(); - aud_cfg_db_get_int(db, "vorbis", "http_buffer_size", - &vorbis_cfg.http_buffer_size); - aud_cfg_db_get_int(db, "vorbis", "http_prebuffer", - &vorbis_cfg.http_prebuffer); - aud_cfg_db_get_bool(db, "vorbis", "save_http_stream", - &vorbis_cfg.save_http_stream); - if (!aud_cfg_db_get_string(db, "vorbis", "save_http_path", - &vorbis_cfg.save_http_path)) - vorbis_cfg.save_http_path = g_strdup(g_get_home_dir()); - - aud_cfg_db_get_bool(db, "vorbis", "tag_override", - &vorbis_cfg.tag_override); - if (!aud_cfg_db_get_string(db, "vorbis", "tag_format", - &vorbis_cfg.tag_format)) - vorbis_cfg.tag_format = g_strdup("%p - %t"); - - aud_cfg_db_get_bool(db, NULL, "use_proxy", &vorbis_cfg.use_proxy); - aud_cfg_db_get_string(db, NULL, "proxy_host", &vorbis_cfg.proxy_host); - aud_cfg_db_get_string(db, NULL, "proxy_port", &tmp); - - if (tmp != NULL) - vorbis_cfg.proxy_port = atoi(tmp); - - aud_cfg_db_get_bool(db, NULL, "proxy_use_auth", &vorbis_cfg.proxy_use_auth); - aud_cfg_db_get_string(db, NULL, "proxy_user", &vorbis_cfg.proxy_user); - aud_cfg_db_get_string(db, NULL, "proxy_pass", &vorbis_cfg.proxy_pass); - - aud_cfg_db_close(db); - seek_mutex = g_mutex_new(); seek_cond = g_cond_new(); - - aud_mime_set_plugin("application/ogg", &vorbis_ip); + return TRUE; } static void vorbis_cleanup(void) { - if (vorbis_cfg.save_http_path) { - g_free(vorbis_cfg.save_http_path); - vorbis_cfg.save_http_path = NULL; - } - - if (vorbis_cfg.proxy_host) { - g_free(vorbis_cfg.proxy_host); - vorbis_cfg.proxy_host = NULL; - } - - if (vorbis_cfg.proxy_user) { - g_free(vorbis_cfg.proxy_user); - vorbis_cfg.proxy_user = NULL; - } - - if (vorbis_cfg.proxy_pass) { - g_free(vorbis_cfg.proxy_pass); - vorbis_cfg.proxy_pass = NULL; - } - - if (vorbis_cfg.tag_format) { - g_free(vorbis_cfg.tag_format); - vorbis_cfg.tag_format = NULL; - } - - if (vorbis_cfg.title_encoding) { - g_free(vorbis_cfg.title_encoding); - vorbis_cfg.title_encoding = NULL; - } - - g_strfreev(vorbis_tag_encoding_list); g_mutex_free(seek_mutex); g_cond_free(seek_cond); } -extern PluginPreferences preferences; - static const gchar *vorbis_fmts[] = { "ogg", "ogm", "oga", NULL }; +static const gchar * const mimes[] = {"application/ogg", NULL}; -static InputPlugin vorbis_ip = { - .description = "Ogg Vorbis Audio Plugin", +AUD_INPUT_PLUGIN +( + .name = "Ogg Vorbis", .init = vorbis_init, .about = vorbis_aboutbox, - .settings = &preferences, .play = vorbis_play, .stop = vorbis_stop, .pause = vorbis_pause, .mseek = vorbis_mseek, .cleanup = vorbis_cleanup, .probe_for_tuple = get_song_tuple, - .is_our_file_from_vfs = vorbis_check_fd, - .vfs_extensions = vorbis_fmts, + .get_song_image = get_song_image, .update_song_tuple = vorbis_update_song_tuple, + .is_our_file_from_vfs = vorbis_check_fd, + .extensions = vorbis_fmts, + .mimes = mimes, /* Vorbis probing is a bit slow; check for MP3 and AAC first. -jlindgren */ .priority = 2, -}; - -static InputPlugin *vorbis_iplist[] = { &vorbis_ip, NULL }; - -SIMPLE_INPUT_PLUGIN (vorbis, vorbis_iplist) +) diff -Nru audacious-plugins-2.4.4/src/vorbis/vorbis.h audacious-plugins-3.2/src/vorbis/vorbis.h --- audacious-plugins-2.4.4/src/vorbis/vorbis.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/vorbis/vorbis.h 2012-01-20 19:48:30.000000000 +0000 @@ -9,22 +9,4 @@ gboolean vorbis_update_song_tuple (const Tuple * tuple, VFSFile * fd); -typedef struct { - gint http_buffer_size; - gint http_prebuffer; - gboolean use_proxy; - gchar *proxy_host; - gint proxy_port; - gboolean proxy_use_auth; - gchar *proxy_user, *proxy_pass; - gboolean save_http_stream; - gchar *save_http_path; - gboolean tag_override; - gchar *tag_format; - gboolean title_encoding_enabled; - gchar *title_encoding; -} vorbis_config_t; - -extern vorbis_config_t vorbis_cfg; - #endif /* __VORBIS_H__ */ diff -Nru audacious-plugins-2.4.4/src/vtx/ay8912.c audacious-plugins-3.2/src/vtx/ay8912.c --- audacious-plugins-2.4.4/src/vtx/ay8912.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/vtx/ay8912.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,6 @@ /* AY/YM emulator implementation. */ +#include #include #include "ayemu.h" @@ -412,7 +413,7 @@ snd_numcount = sound_bufsize / (ay->sndfmt.channels * (ay->sndfmt.bpc >> 3)); while (snd_numcount-- > 0) { mix_l = mix_r = 0; - + for (m = 0 ; m < ay->ChipTacts_per_outcount ; m++) { if (++ay->cnt_a >= ay->regs.tone_a) { ay->cnt_a = 0; @@ -426,15 +427,15 @@ ay->cnt_c = 0; ay->bit_c = ! ay->bit_c; } - + /* GenNoise (c) Hacker KAY & Sergey Bulba */ if (++ay->cnt_n >= (ay->regs.noise * 2)) { ay->cnt_n = 0; ay->Cur_Seed = (ay->Cur_Seed * 2 + 1) ^ \ - (((ay->Cur_Seed >> 16) ^ (ay->Cur_Seed >> 13)) & 1); + (((ay->Cur_Seed >> 16) ^ (ay->Cur_Seed >> 13)) & 1); ay->bit_n = ((ay->Cur_Seed >> 16) & 1); } - + if (++ay->cnt_e >= ay->regs.env_freq) { ay->cnt_e = 0; if (++ay->env_pos > 127) @@ -448,23 +449,23 @@ mix_l += ay->vols[0][tmpvol]; mix_r += ay->vols[1][tmpvol]; } - + if ((ay->bit_b | !ay->regs.R7_tone_b) & (ay->bit_n | !ay->regs.R7_noise_b)) { tmpvol =(ay->regs.env_b)? ENVVOL : ay->regs.vol_b * 2 + 1; mix_l += ay->vols[2][tmpvol]; mix_r += ay->vols[3][tmpvol]; } - + if ((ay->bit_c | !ay->regs.R7_tone_c) & (ay->bit_n | !ay->regs.R7_noise_c)) { tmpvol = (ay->regs.env_c)? ENVVOL : ay->regs.vol_c * 2 + 1; mix_l += ay->vols[4][tmpvol]; mix_r += ay->vols[5][tmpvol]; - } + } } /* end for (m=0; ...) */ - + mix_l /= ay->Amp_Global; mix_r /= ay->Amp_Global; - + if (ay->sndfmt.bpc == 8) { mix_l = (mix_l >> 8) | 128; /* 8 bit sound */ mix_r = (mix_r >> 8) | 128; diff -Nru audacious-plugins-2.4.4/src/vtx/Makefile audacious-plugins-3.2/src/vtx/Makefile --- audacious-plugins-2.4.4/src/vtx/Makefile 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/vtx/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -13,5 +13,5 @@ plugindir := ${plugindir}/${INPUT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${ARCH_DEFINES} -I../.. -I. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${MOWGLI_LIBS} +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -I. +LIBS += ${GTK_LIBS} ${GLIB_LIBS} diff -Nru audacious-plugins-2.4.4/src/vtx/vtx.c audacious-plugins-3.2/src/vtx/vtx.c --- audacious-plugins-2.4.4/src/vtx/vtx.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/vtx/vtx.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,6 +1,7 @@ -/* VTXplugin - VTX player for XMMS +/* VTX Input Plugin for Audacious * * Copyright (C) 2002-2004 Sashnov Alexander + * Copyright (C) 2010 MichaÅ‚ Lipski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,280 +18,258 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#include #include #include #include -#include +#include #include "vtx.h" #include "ayemu.h" -extern InputPlugin vtx_ip; - #define SNDBUFSIZE 1024 -char sndbuf[SNDBUFSIZE]; - -static GThread *play_thread = NULL; - -int seek_to; - -int freq = 44100; -int chans = 2; - -/* NOTE: if you change 'bits' you also need change constant FMT_S16_NE - * to more appropriate in line - * - * (vtx_ip.output->open_audio (FMT_S16_NE, * freq, chans) == 0) - * in function vtx_play_file() - * - * and in produce_audio() function call. - */ -const int bits = 16; +static gchar sndbuf[SNDBUFSIZE]; +static gint freq = 44100; +static gint chans = 2; +static gint bits = 16; + +static GMutex *seek_mutex; +static GCond *seek_cond; +static gint seek_value; +static gboolean stop_flag = FALSE; ayemu_ay_t ay; ayemu_vtx_t vtx; static const gchar *vtx_fmts[] = { "vtx", NULL }; -void -vtx_init(void) +static gboolean vtx_init(void) { - mcs_handle_t *db; - db = aud_cfg_db_open(); + seek_mutex = g_mutex_new(); + seek_cond = g_cond_new(); - aud_cfg_db_get_int(db, NULL, "src_rate", &freq); - if (freq < 4000 || freq > 192000) - freq = 44100; - - aud_cfg_db_close(db); + return TRUE; } -gint -vtx_is_our_fd (const gchar *filename, VFSFile *fp) +static void vtx_cleanup(void) { - char buf[2]; - if (vfs_fread(buf, 1, 2, fp) < 2) - return FALSE; - return (!strncasecmp (buf, "ay", 2) || !strncasecmp (buf, "ym", 2)); + g_mutex_free(seek_mutex); + g_cond_free(seek_cond); } -gint -vtx_is_our_file (const gchar *filename) +gint vtx_is_our_fd(const gchar * filename, VFSFile * fp) { - gboolean ret; - VFSFile *fp; - - fp = vfs_fopen(filename, "rb"); - ret = vtx_is_our_fd(filename, fp); - vfs_fclose(fp); - - return ret; + gchar buf[2]; + if (vfs_fread(buf, 1, 2, fp) < 2) + return FALSE; + return (!strncasecmp(buf, "ay", 2) || !strncasecmp(buf, "ym", 2)); } -Tuple * -vtx_get_song_tuple_from_vtx(const gchar *filename, ayemu_vtx_t *in) +Tuple *vtx_get_song_tuple_from_vtx(const gchar * filename, ayemu_vtx_t * in) { - Tuple *out = tuple_new_from_filename(filename); + Tuple *out = tuple_new_from_filename(filename); - tuple_associate_string(out, FIELD_ARTIST, NULL, in->hdr.author); - tuple_associate_string(out, FIELD_TITLE, NULL, in->hdr.title); + tuple_set_str(out, FIELD_ARTIST, NULL, in->hdr.author); + tuple_set_str(out, FIELD_TITLE, NULL, in->hdr.title); - tuple_associate_int(out, FIELD_LENGTH, NULL, in->hdr.regdata_size / 14 * 1000 / 50); + tuple_set_int(out, FIELD_LENGTH, NULL, in->hdr.regdata_size / 14 * 1000 / 50); - tuple_associate_string(out, FIELD_GENRE, NULL, (in->hdr.chiptype == AYEMU_AY)? "AY chiptunes" : "YM chiptunes"); - tuple_associate_string(out, FIELD_ALBUM, NULL, in->hdr.from); - tuple_associate_string(out, -1, "game", in->hdr.from); + tuple_set_str(out, FIELD_GENRE, NULL, (in->hdr.chiptype == AYEMU_AY) ? "AY chiptunes" : "YM chiptunes"); + tuple_set_str(out, FIELD_ALBUM, NULL, in->hdr.from); + tuple_set_str(out, -1, "game", in->hdr.from); - tuple_associate_string(out, FIELD_QUALITY, NULL, "sequenced"); - tuple_associate_string(out, FIELD_CODEC, NULL, in->hdr.tracker); - tuple_associate_string(out, -1, "tracker", in->hdr.tracker); + tuple_set_str(out, FIELD_QUALITY, NULL, "sequenced"); + tuple_set_str(out, FIELD_CODEC, NULL, in->hdr.tracker); + tuple_set_str(out, -1, "tracker", in->hdr.tracker); - tuple_associate_int(out, FIELD_YEAR, NULL, in->hdr.year); + tuple_set_int(out, FIELD_YEAR, NULL, in->hdr.year); - return out; + return out; } -Tuple * -vtx_get_song_tuple(const gchar *filename) +Tuple *vtx_probe_for_tuple(const gchar *filename, VFSFile *fd) { - ayemu_vtx_t tmp; + ayemu_vtx_t tmp; - if (ayemu_vtx_open (&tmp, filename)) + if (ayemu_vtx_open(&tmp, filename)) { - Tuple *ti = vtx_get_song_tuple_from_vtx(filename, &tmp); - ayemu_vtx_free(&tmp); - return ti; + Tuple *ti = vtx_get_song_tuple_from_vtx(filename, &tmp); + ayemu_vtx_free(&tmp); + return ti; } - return NULL; + return NULL; } -/* sound playing thread, runing by vtx_play_file() */ -static gpointer -play_loop (gpointer args) +static gboolean vtx_play(InputPlayback * playback, const gchar * filename, + VFSFile * file, gint start_time, gint stop_time, gboolean pause) { - InputPlayback *playback = (InputPlayback *) args; - void *stream; /* pointer to current position in sound buffer */ - unsigned char regs[14]; - int need; - int left; /* how many sound frames can play with current AY register frame */ - int donow; - int rate; + gboolean error = FALSE; + gboolean eof = FALSE; + void *stream; /* pointer to current position in sound buffer */ + guchar regs[14]; + gint need; + gint left; /* how many sound frames can play with current AY register frame */ + gint donow; + gint rate; + + left = 0; + rate = chans * (bits / 8); - left = 0; - rate = chans * (bits / 8); + memset(&ay, 0, sizeof(ay)); - while (playback->playing && !playback->eof) + if (!ayemu_vtx_open(&vtx, filename)) { - /* fill sound buffer */ - stream = sndbuf; - for (need = SNDBUFSIZE / rate ; need > 0 ; need -= donow) - if (left > 0) - { /* use current AY register frame */ - donow = (need > left) ? left : need; - left -= donow; - stream = ayemu_gen_sound (&ay, (char *)stream, donow * rate); - } - else - { /* get next AY register frame */ - if (ayemu_vtx_get_next_frame (&vtx, (char *)regs) == 0) - { - playback->eof = TRUE; - donow = need; - memset (stream, 0, donow * rate); - } - else - { - left = freq / vtx.hdr.playerFreq; - ayemu_set_regs (&ay, regs); - donow = 0; - } - } - - if (playback->playing && seek_to == -1) - playback->pass_audio(playback, FMT_S16_NE, - chans , SNDBUFSIZE, sndbuf, &playback->playing); - - if (playback->eof) - { - while (playback->output->buffer_playing()) - g_usleep(10000); - playback->playing = 0; - } - - /* jump to time in seek_to (in seconds) */ - if (seek_to != -1) - { - vtx.pos = seek_to * 50; /* (time in sec) * 50 = offset in AY register data frames */ - playback->output->flush (seek_to * 1000); - seek_to = -1; - } + g_print("libvtx: Error read vtx header from %s\n", filename); + error = TRUE; + goto ERR_NO_CLOSE; + } + else if (!ayemu_vtx_load_data(&vtx)) + { + g_print("libvtx: Error read vtx data from %s\n", filename); + error = TRUE; + goto ERR_NO_CLOSE; } - ayemu_vtx_free (&vtx); - return NULL; -} -void vtx_play_file (InputPlayback *playback) -{ - gchar *filename = playback->filename; - gchar *buf; - Tuple *ti; - - memset (&ay, 0, sizeof(ay)); - - if (!ayemu_vtx_open (&vtx, filename)) - g_print ("libvtx: Error read vtx header from %s\n", filename); - else if (!ayemu_vtx_load_data (&vtx)) - g_print ("libvtx: Error read vtx data from %s\n", filename); - else + ayemu_init(&ay); + ayemu_set_chip_type(&ay, vtx.hdr.chiptype, NULL); + ayemu_set_chip_freq(&ay, vtx.hdr.chipFreq); + ayemu_set_stereo(&ay, vtx.hdr.stereo, NULL); + + if (playback->output->open_audio(FMT_S16_NE, freq, chans) == 0) { - ayemu_init(&ay); - ayemu_set_chip_type(&ay, vtx.hdr.chiptype, NULL); - ayemu_set_chip_freq(&ay, vtx.hdr.chipFreq); - ayemu_set_stereo(&ay, vtx.hdr.stereo, NULL); - - playback->error = FALSE; - if (playback->output->open_audio (FMT_S16_NE, freq, chans) == 0) - { - g_print ("libvtx: output audio error!\n"); - playback->error = TRUE; - playback->playing = FALSE; - return; - } - - playback->eof = FALSE; - seek_to = -1; - - ti = vtx_get_song_tuple_from_vtx(playback->filename, &vtx); - buf = tuple_formatter_make_title_string(ti, aud_get_gentitle_format()); - - playback->set_params (playback, buf, vtx.hdr.regdata_size / 14 * 1000 / 50, - 14 * 50 * 8, freq, bits / 8); - - g_free (buf); - - tuple_free(ti); - - playback->playing = TRUE; - play_thread = g_thread_self(); - playback->set_pb_ready(playback); - play_loop(playback); + g_print("libvtx: output audio error!\n"); + error = TRUE; + goto ERR_NO_CLOSE; } -} -void -vtx_stop (InputPlayback *playback) -{ - if (playback->playing && play_thread != NULL) + if (pause) + playback->output->pause (TRUE); + + stop_flag = FALSE; + + playback->set_params(playback, 14 * 50 * 8, freq, bits / 8); + playback->set_pb_ready(playback); + + while (!stop_flag) { - playback->playing = FALSE; + g_mutex_lock(seek_mutex); + + if (seek_value >= 0) + { + vtx.pos = seek_value * 50 / 1000; /* (time in sec) * 50 = offset in AY register data frames */ + playback->output->flush(seek_value); + seek_value = -1; + g_cond_signal(seek_cond); + } + + g_mutex_unlock(seek_mutex); + + /* fill sound buffer */ + stream = sndbuf; + + for (need = SNDBUFSIZE / rate; need > 0; need -= donow) + if (left > 0) + { /* use current AY register frame */ + donow = (need > left) ? left : need; + left -= donow; + stream = ayemu_gen_sound(&ay, (char *)stream, donow * rate); + } + else + { /* get next AY register frame */ + if (ayemu_vtx_get_next_frame(&vtx, (char *)regs) == 0) + { + donow = need; + memset(stream, 0, donow * rate); + eof = TRUE; + } + else + { + left = freq / vtx.hdr.playerFreq; + ayemu_set_regs(&ay, regs); + donow = 0; + } + } + + if (!stop_flag) + playback->output->write_audio(sndbuf, SNDBUFSIZE); + + if (eof) + { + AUDDBG("EOF.\n"); - g_thread_join (play_thread); - play_thread = NULL; - playback->output->close_audio (); - ayemu_vtx_free (&vtx); + while (!stop_flag && playback->output->buffer_playing()) + g_usleep(10000); + + goto CLEANUP; + } } + +CLEANUP: + ayemu_vtx_free(&vtx); + + g_mutex_lock(seek_mutex); + stop_flag = TRUE; + g_cond_signal(seek_cond); /* wake up any waiting request */ + g_mutex_unlock(seek_mutex); + + playback->output->close_audio(); + +ERR_NO_CLOSE: + + return !error; } -/* seek to specified number of seconds */ -void -vtx_seek (InputPlayback *playback, gint time) +void vtx_stop(InputPlayback * playback) { - if (time * 50 < vtx.hdr.regdata_size / 14) - { - playback->eof = FALSE; - seek_to = time; + g_mutex_lock(seek_mutex); - /* wait for affect changes in parallel thread */ - while (seek_to != -1) - g_usleep (10000); + if (!stop_flag) + { + stop_flag = TRUE; + playback->output->abort_write(); + g_cond_signal(seek_cond); } + + g_mutex_unlock (seek_mutex); } -/* Pause or unpause */ -void -vtx_pause (InputPlayback *playback, gshort p) +void vtx_seek(InputPlayback * playback, gint time) { - playback->output->pause (p); + g_mutex_lock(seek_mutex); + + if (!stop_flag) + { + seek_value = time; + playback->output->abort_write(); + g_cond_signal(seek_cond); + g_cond_wait(seek_cond, seek_mutex); + } + + g_mutex_unlock(seek_mutex); } -InputPlugin vtx_ip = { - .description = "VTX Audio Plugin", /* Plugin description */ - .init = vtx_init, /* Initialization */ - .about = vtx_about, /* Show aboutbox */ - .configure = NULL, - .is_our_file = vtx_is_our_file, /* Check file, return 1 if the plugin can handle this file */ - .play_file = vtx_play_file, /* Play given file */ - .stop = vtx_stop, /* Stop playing */ - .pause = vtx_pause, /* Pause playing */ - .seek = vtx_seek, /* Seek time */ - .file_info_box = vtx_file_info, /* Show file-information dialog */ - .get_song_tuple = vtx_get_song_tuple, /* Tuple */ - .is_our_file_from_vfs = vtx_is_our_fd, /* VFS */ - .vfs_extensions = vtx_fmts /* ext assist */ -}; +void vtx_pause(InputPlayback * playback, gboolean pause) +{ + g_mutex_lock(seek_mutex); + + if (!stop_flag) + playback->output->pause(pause); -InputPlugin *vtx_iplist[] = { &vtx_ip, NULL }; + g_mutex_unlock(seek_mutex); +} -SIMPLE_INPUT_PLUGIN(vtx, vtx_iplist); +AUD_INPUT_PLUGIN +( + .name = "VTX Audio", + .init = vtx_init, + .cleanup = vtx_cleanup, + .about = vtx_about, + .play = vtx_play, + .stop = vtx_stop, + .pause = vtx_pause, + .mseek = vtx_seek, + .file_info_box = vtx_file_info, + .probe_for_tuple = vtx_probe_for_tuple, + .is_our_file_from_vfs = vtx_is_our_fd, + .extensions = vtx_fmts +) diff -Nru audacious-plugins-2.4.4/src/vtx/vtxfile.c audacious-plugins-3.2/src/vtx/vtxfile.c --- audacious-plugins-2.4.4/src/vtx/vtxfile.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/vtx/vtxfile.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,3 +1,4 @@ +#include #include #include #include @@ -49,7 +50,7 @@ } /* read 32-bit integer from file. - * Returns 1 if error occurs + * Returns 1 if error occurs */ static int read_word32(VFSFile *fp, int32_t *p) { @@ -173,12 +174,12 @@ fprintf(stderr, "ayemu_vtx_load_data: tune file not open yet (do you call ayemu_vtx_open first?)\n"); return NULL; } - packed_size = 0; + packed_size = 0; buf_alloc = 4096; packed_data = (char *) malloc (buf_alloc); /* read packed AY register data to end of file. */ while ((c = vfs_getc (vtx->fp)) != EOF) { - if (buf_alloc < packed_size) { + if (buf_alloc < packed_size) { buf_alloc *= 2; packed_data = (char *) realloc (packed_data, buf_alloc); if (packed_data == NULL) { @@ -188,7 +189,7 @@ } } packed_data[packed_size++] = c; - } + } vfs_fclose (vtx->fp); vtx->fp = NULL; if ((vtx->regdata = (char *) malloc (vtx->hdr.regdata_size)) == NULL) { diff -Nru audacious-plugins-2.4.4/src/vtx/vtx.h audacious-plugins-3.2/src/vtx/vtx.h --- audacious-plugins-2.4.4/src/vtx/vtx.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/vtx/vtx.h 2012-01-20 19:48:30.000000000 +0000 @@ -10,6 +10,6 @@ #include void vtx_about(void); -void vtx_file_info(const gchar *filename); +void vtx_file_info(const char *filename); #endif diff -Nru audacious-plugins-2.4.4/src/wavpack/Makefile audacious-plugins-3.2/src/wavpack/Makefile --- audacious-plugins-2.4.4/src/wavpack/Makefile 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/wavpack/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -8,5 +8,5 @@ plugindir := ${plugindir}/${INPUT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${WAVPACK_CFLAGS} -I../.. +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${WAVPACK_CFLAGS} -I../.. LIBS += ${WAVPACK_LIBS} ${GTK_LIBS} ${GLIB_LIBS} -laudtag diff -Nru audacious-plugins-2.4.4/src/wavpack/wavpack.c audacious-plugins-3.2/src/wavpack/wavpack.c --- audacious-plugins-2.4.4/src/wavpack/wavpack.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/wavpack/wavpack.c 2012-01-20 19:48:30.000000000 +0000 @@ -1,5 +1,3 @@ -//#define AUD_DEBUG - #include "config.h" #include @@ -23,8 +21,7 @@ static GMutex *ctrl_mutex = NULL; static GCond *ctrl_cond = NULL; static gint64 seek_value = -1; -static gboolean pause_flag; - +static gboolean stop_flag = FALSE; /* Audacious VFS wrappers for Wavpack stream reading */ @@ -125,20 +122,19 @@ if (file == NULL) return FALSE; - gshort paused = 0; gint32 *input = NULL; void *output = NULL; gint sample_rate, num_channels, bits_per_sample; - guint num_samples, length; - gchar error[1024]; // fixme?! FIX ME halb apua hilfe scheisse --ccr + guint num_samples; WavpackContext *ctx = NULL; VFSFile *wvc_input = NULL; + gboolean error = FALSE; - if (! wv_attach (filename, file, & wvc_input, & ctx, error, OPEN_TAGS | + if (! wv_attach (filename, file, & wvc_input, & ctx, NULL, OPEN_TAGS | OPEN_WVC)) { - g_warning("Error opening Wavpack file '%s'.", playback->filename); - playback->error = 2; + g_warning("Error opening Wavpack file '%s'.", filename); + error = TRUE; goto error_exit; } @@ -146,15 +142,17 @@ num_channels = WavpackGetNumChannels(ctx); bits_per_sample = WavpackGetBitsPerSample(ctx); num_samples = WavpackGetNumSamples(ctx); - length = num_samples / sample_rate; if (!playback->output->open_audio(SAMPLE_FMT(bits_per_sample), sample_rate, num_channels)) { g_warning("Error opening audio output."); - playback->error = 1; + error = TRUE; goto error_exit; } + if (pause) + playback->output->pause(TRUE); + input = g_malloc(BUFFER_SIZE * num_channels * sizeof(guint32)); output = g_malloc(BUFFER_SIZE * num_channels * SAMPLE_SIZE(bits_per_sample)); if (input == NULL || output == NULL) @@ -164,20 +162,17 @@ g_mutex_lock(ctrl_mutex); - playback->set_params(playback, NULL, 0, - (gint) WavpackGetAverageBitrate(ctx, num_channels), + playback->set_params(playback, (gint) WavpackGetAverageBitrate(ctx, num_channels), sample_rate, num_channels); - pause_flag = pause; seek_value = (start_time > 0) ? start_time : -1; + stop_flag = FALSE; - playback->playing = TRUE; - playback->eof = FALSE; playback->set_pb_ready(playback); g_mutex_unlock(ctrl_mutex); - while (playback->playing && ! playback->eof && (stop_time < 0 || + while (!stop_flag && (stop_time < 0 || playback->output->written_time () < stop_time)) { gint ret; @@ -194,20 +189,6 @@ g_cond_signal(ctrl_cond); } - if (pause_flag != paused) - { - playback->output->pause(pause_flag); - paused = pause_flag; - g_cond_signal(ctrl_cond); - } - - if (paused) - { - g_cond_wait(ctrl_cond, ctrl_mutex); - g_mutex_unlock(ctrl_mutex); - continue; - } - g_mutex_unlock(ctrl_mutex); /* Decode audio data */ @@ -215,7 +196,7 @@ ret = WavpackUnpackSamples(ctx, input, BUFFER_SIZE); if (samples_left == 0) - playback->eof = TRUE; + stop_flag = TRUE; else if (ret < 0) { g_warning("Error decoding file.\n"); @@ -253,7 +234,7 @@ /* Flush buffer */ g_mutex_lock(ctrl_mutex); - while (playback->playing && playback->output->buffer_playing()) + while (!stop_flag && playback->output->buffer_playing()) g_usleep(20000); g_cond_signal(ctrl_cond); @@ -265,44 +246,45 @@ g_free(output); wv_deattach (wvc_input, ctx); - playback->playing = FALSE; + stop_flag = TRUE; playback->output->close_audio(); - return ! playback->error; + return ! error; } static void wv_stop(InputPlayback * playback) { g_mutex_lock(ctrl_mutex); - playback->playing = FALSE; - g_cond_signal(ctrl_cond); - g_mutex_unlock(ctrl_mutex); - g_thread_join(playback->thread); - playback->thread = NULL; + + if (!stop_flag) + { + stop_flag = TRUE; + playback->output->abort_write(); + g_cond_signal(ctrl_cond); + } + + g_mutex_unlock (ctrl_mutex); } static void -wv_pause(InputPlayback * playback, gshort p) +wv_pause(InputPlayback * playback, gboolean pause) { g_mutex_lock(ctrl_mutex); - if (playback->playing) - { - pause_flag = p; - g_cond_signal(ctrl_cond); - g_cond_wait(ctrl_cond, ctrl_mutex); - } + if (!stop_flag) + playback->output->pause(pause); g_mutex_unlock(ctrl_mutex); } -static void wv_seek (InputPlayback * playback, gulong time) +static void wv_seek (InputPlayback * playback, gint time) { g_mutex_lock(ctrl_mutex); - if (playback->playing) + if (!stop_flag) { seek_value = time; + playback->output->abort_write(); g_cond_signal(ctrl_cond); g_cond_wait(ctrl_cond, ctrl_mutex); } @@ -345,16 +327,16 @@ AUDDBG("starting probe of %p\n", fd); - if (vfs_fseek (fd, 0, SEEK_SET)) - return NULL; - + vfs_rewind(fd); tu = tuple_new_from_filename(filename); + + vfs_rewind(fd); tag_tuple_read(tu, fd); - tuple_associate_int(tu, FIELD_LENGTH, NULL, + tuple_set_int(tu, FIELD_LENGTH, NULL, ((guint64) WavpackGetNumSamples(ctx) * 1000) / (guint64) WavpackGetSampleRate(ctx)); - tuple_associate_string(tu, FIELD_CODEC, NULL, "WavPack"); - tuple_associate_string(tu, FIELD_QUALITY, NULL, wv_get_quality(ctx)); + tuple_set_str(tu, FIELD_CODEC, NULL, "WavPack"); + tuple_set_str(tu, FIELD_QUALITY, NULL, wv_get_quality(ctx)); WavpackCloseFile(ctx); @@ -374,11 +356,11 @@ "Visit the Wavpack site at http://www.wavpack.com/\n")); } -static void -wv_init(void) +static gboolean wv_init (void) { ctrl_mutex = g_mutex_new(); ctrl_cond = g_cond_new(); + return TRUE; } static void @@ -395,10 +377,9 @@ static const gchar *wv_fmts[] = { "wv", NULL }; -extern PluginPreferences preferences; - -static InputPlugin wvpack = { - .description = "WavPack decoder", +AUD_INPUT_PLUGIN +( + .name = "WavPack decoder", .init = wv_init, .cleanup = wv_cleanup, .about = wv_about_box, @@ -406,11 +387,7 @@ .stop = wv_stop, .pause = wv_pause, .mseek = wv_seek, - .vfs_extensions = wv_fmts, + .extensions = wv_fmts, .probe_for_tuple = wv_probe_for_tuple, .update_song_tuple = wv_write_tag, -}; - -InputPlugin *wv_iplist[] = { &wvpack, NULL }; - -SIMPLE_INPUT_PLUGIN(wavpack, wv_iplist); +) diff -Nru audacious-plugins-2.4.4/src/xsf/ao.h audacious-plugins-3.2/src/xsf/ao.h --- audacious-plugins-2.4.4/src/xsf/ao.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/xsf/ao.h 2012-01-20 19:48:30.000000000 +0000 @@ -79,10 +79,6 @@ #endif -#ifndef PATH_MAX -#define PATH_MAX 2048 -#endif - typedef unsigned char uint8; typedef unsigned char UINT8; typedef signed char int8; diff -Nru audacious-plugins-2.4.4/src/xsf/corlett.c audacious-plugins-3.2/src/xsf/corlett.c --- audacious-plugins-2.4.4/src/xsf/corlett.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/xsf/corlett.c 2012-01-20 19:48:30.000000000 +0000 @@ -170,13 +170,12 @@ tag_dec = input + (comp_length + res_area + 16); if ((tag_dec[0] == '[') && (tag_dec[1] == 'T') && (tag_dec[2] == 'A') && (tag_dec[3] == 'G') && (tag_dec[4] == ']')) { - int tag, l, num_tags, data; + int l, num_tags, data; // Tags found! tag_dec += 5; input_len -= 5; - tag = 0; data = false; num_tags = 0; l = 0; diff -Nru audacious-plugins-2.4.4/src/xsf/desmume/cp15.h audacious-plugins-3.2/src/xsf/desmume/cp15.h --- audacious-plugins-2.4.4/src/xsf/desmume/cp15.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/xsf/desmume/cp15.h 2012-01-20 19:48:30.000000000 +0000 @@ -78,8 +78,7 @@ BOOL armcp15_store(armcp15_t *armcp15, u8 CRd, u8 adr); BOOL armcp15_moveCP2ARM(armcp15_t *armcp15, u32 * R, u8 CRn, u8 CRm, u8 opcode1, u8 opcode2); BOOL armcp15_moveARM2CP(armcp15_t *armcp15, u32 val, u8 CRn, u8 CRm, u8 opcode1, u8 opcode2); -INLINE BOOL armcp15_isAccessAllowed(armcp15_t *armcp15,u32 address,u32 access) ; - +BOOL armcp15_isAccessAllowed(armcp15_t *armcp15, u32 address, u32 access); #define CP15_ACCESS_WRITE 0 #define CP15_ACCESS_READ 2 diff -Nru audacious-plugins-2.4.4/src/xsf/desmume/SPU.c audacious-plugins-3.2/src/xsf/desmume/SPU.c --- audacious-plugins-2.4.4/src/xsf/desmume/SPU.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/xsf/desmume/SPU.c 2012-01-20 19:48:30.000000000 +0000 @@ -794,8 +794,8 @@ if(ch->id < 14) { // NOTE: square wave. - double pos, inc, len; - pos = ch->pos; inc = ch->inc; len = ch->length; + double pos, inc; + pos = ch->pos; inc = ch->inc; for(oi = 0; oi < length; oi++) { ch->output = (s16)g_psg_duty[ch->psg_duty][(int)pos & 0x00000007]; diff -Nru audacious-plugins-2.4.4/src/xsf/Makefile audacious-plugins-3.2/src/xsf/Makefile --- audacious-plugins-2.4.4/src/xsf/Makefile 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/xsf/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -12,5 +12,5 @@ plugindir := ${plugindir}/${INPUT_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -O0 -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -Ispu/ -I. -LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${MOWGLI_LIBS} -lm -lz +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -Ispu/ -I. +LIBS += ${GTK_LIBS} ${GLIB_LIBS} -lm -lz diff -Nru audacious-plugins-2.4.4/src/xsf/plugin.c audacious-plugins-3.2/src/xsf/plugin.c --- audacious-plugins-2.4.4/src/xsf/plugin.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/xsf/plugin.c 2012-01-20 19:48:30.000000000 +0000 @@ -24,29 +24,48 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include +#include #include #include #include #include #include -#include #include "ao.h" #include "corlett.h" #include "vio2sf.h" +static GMutex *seek_mutex; +static GCond *seek_cond; +static gint seek_value = -1; +static gboolean stop_flag = FALSE; + +static gboolean xsf_init(void) +{ + seek_mutex = g_mutex_new(); + seek_cond = g_cond_new(); + + return TRUE; +} + +static void xsf_cleanup(void) +{ + g_mutex_free(seek_mutex); + g_cond_free(seek_cond); +} + /* xsf_get_lib: called to load secondary files */ static gchar *path; int xsf_get_lib(char *filename, void **buffer, unsigned int *length) { void *filebuf; gint64 size; - char buf[PATH_MAX]; - - snprintf(buf, PATH_MAX, "%s/%s", dirname(path), filename); - vfs_file_get_contents (buf, & filebuf, & size); + gchar * path2 = g_strdup_printf ("%s/%s", dirname (path), filename); + vfs_file_get_contents (path2, & filebuf, & size); + g_free (path2); *buffer = filebuf; *length = (uint64)size; @@ -54,8 +73,7 @@ return AO_SUCCESS; } -static gint seek = 0; -Tuple *xsf_tuple(const gchar *filename) +Tuple *xsf_tuple(const gchar *filename, VFSFile *fd) { Tuple *t; corlett_t *c; @@ -72,15 +90,15 @@ t = tuple_new_from_filename(filename); - tuple_associate_int(t, FIELD_LENGTH, NULL, c->inf_length ? psfTimeToMS(c->inf_length) + psfTimeToMS(c->inf_fade) : -1); - tuple_associate_string(t, FIELD_ARTIST, NULL, c->inf_artist); - tuple_associate_string(t, FIELD_ALBUM, NULL, c->inf_game); - tuple_associate_string(t, -1, "game", c->inf_game); - tuple_associate_string(t, FIELD_TITLE, NULL, c->inf_title); - tuple_associate_string(t, FIELD_COPYRIGHT, NULL, c->inf_copy); - tuple_associate_string(t, FIELD_QUALITY, NULL, "sequenced"); - tuple_associate_string(t, FIELD_CODEC, NULL, "GBA/Nintendo DS Audio"); - tuple_associate_string(t, -1, "console", "GBA/Nintendo DS"); + tuple_set_int(t, FIELD_LENGTH, NULL, c->inf_length ? psfTimeToMS(c->inf_length) + psfTimeToMS(c->inf_fade) : -1); + tuple_set_str(t, FIELD_ARTIST, NULL, c->inf_artist); + tuple_set_str(t, FIELD_ALBUM, NULL, c->inf_game); + tuple_set_str(t, -1, "game", c->inf_game); + tuple_set_str(t, FIELD_TITLE, NULL, c->inf_title); + tuple_set_str(t, FIELD_COPYRIGHT, NULL, c->inf_copy); + tuple_set_str(t, FIELD_QUALITY, NULL, "sequenced"); + tuple_set_str(t, FIELD_CODEC, NULL, "GBA/Nintendo DS Audio"); + tuple_set_str(t, -1, "console", "GBA/Nintendo DS"); free(c); g_free(buf); @@ -88,161 +106,165 @@ return t; } -gchar *xsf_title(gchar *filename, gint *length) +static gint xsf_get_length(const gchar *filename) { - gchar *title = NULL; - Tuple *tuple = xsf_tuple(filename); + corlett_t *c; + void *buf; + gint64 size; - if (tuple != NULL) - { - title = tuple_formatter_make_title_string(tuple, aud_get_gentitle_format()); - *length = tuple_get_int(tuple, FIELD_LENGTH, NULL); - tuple_free(tuple); - } - else + vfs_file_get_contents(filename, &buf, &size); + + if (!buf) + return -1; + + if (corlett_decode(buf, size, NULL, NULL, &c) != AO_SUCCESS) { - title = g_path_get_basename(filename); - *length = -1; + g_free(buf); + return -1; } - return title; -} - -void xsf_update(unsigned char *buffer, long count, InputPlayback *playback); + free(c); + g_free(buf); + return c->inf_length ? psfTimeToMS(c->inf_length) + psfTimeToMS(c->inf_fade) : -1; +} -static gboolean xsf_play(InputPlayback * data, const gchar * filename, VFSFile * file, gint start_time, gint stop_time, gboolean pause) +static gboolean xsf_play(InputPlayback * playback, const gchar * filename, VFSFile * file, gint start_time, gint stop_time, gboolean pause) { void *buffer; gint64 size; - gint length; - gchar *title = xsf_title(data->filename, &length); + gint length = xsf_get_length(filename); gint16 samples[44100*2]; gint seglen = 44100 / 60; gfloat pos; + gboolean error = FALSE; - path = g_strdup(data->filename); - vfs_file_get_contents (data->filename, & buffer, & size); + path = g_strdup(filename); + vfs_file_get_contents (filename, & buffer, & size); if (xsf_start(buffer, size) != AO_SUCCESS) { - free(buffer); - return TRUE; + error = TRUE; + goto ERR_NO_CLOSE; } - data->output->open_audio(FMT_S16_NE, 44100, 2); + if (!playback->output->open_audio(FMT_S16_NE, 44100, 2)) + { + error = TRUE; + goto ERR_NO_CLOSE; + } - data->set_params(data, title, length, 44100*2*2*8, 44100, 2); + playback->set_params(playback, 44100*2*2*8, 44100, 2); - data->playing = TRUE; - data->set_pb_ready(data); + if (pause) + playback->output->pause (TRUE); - for (;;) - { - while (data->playing && !seek && !data->eof) - { - xsf_gen(samples, seglen); - xsf_update((guint8 *)samples, seglen * 4, data); + stop_flag = FALSE; + playback->set_pb_ready(playback); - if (data->output->written_time () > length) - data->eof = TRUE; - } + while (!stop_flag) + { + g_mutex_lock(seek_mutex); - if (seek) + if (seek_value >= 0) { - if (seek > data->output->written_time ()) + if (seek_value > playback->output->written_time ()) { - pos = data->output->written_time (); - while (pos < seek) + pos = playback->output->written_time (); + + while (pos < seek_value) { xsf_gen(samples, seglen); pos += 16.666; } - data->output->flush(seek); - seek = 0; + playback->output->flush(seek_value); + seek_value = -1; - continue; + g_cond_signal(seek_cond); } - else if (seek < data->output->written_time ()) + else if (seek_value < playback->output->written_time ()) { - data->eof = FALSE; - - g_print("xsf_term\n"); xsf_term(); - g_print("xsf_start... "); + g_free(path); + path = g_strdup(filename); + if (xsf_start(buffer, size) == AO_SUCCESS) { - g_print("ok!\n"); pos = 0; - while (pos < seek) + while (pos < seek_value) { xsf_gen(samples, seglen); pos += 16.666; /* each segment is 16.666ms */ } - data->output->flush(seek); - seek = 0; + playback->output->flush(seek_value); + seek_value = -1; - continue; + g_cond_signal(seek_cond); } - else + else { - g_print("fail :(\n"); - - data->output->close_audio(); - - g_free(buffer); - g_free(path); - g_free(title); - - data->playing = FALSE; - - return TRUE; + error = TRUE; + goto CLEANUP; } } } - xsf_term(); + g_mutex_unlock(seek_mutex); - while (data->eof && data->output->buffer_playing()) - g_usleep(10000); + xsf_gen(samples, seglen); + playback->output->write_audio((guint8 *)samples, seglen * 4); - data->output->close_audio(); + if (playback->output->written_time() >= length) + { + while (!stop_flag && playback->output->buffer_playing()) + g_usleep(10000); - break; + goto CLEANUP; + } } +CLEANUP: + xsf_term(); + + g_mutex_lock(seek_mutex); + stop_flag = TRUE; + g_cond_signal(seek_cond); /* wake up any waiting request */ + g_mutex_unlock(seek_mutex); + + playback->output->close_audio(); + +ERR_NO_CLOSE: g_free(buffer); g_free(path); - g_free(title); - data->playing = FALSE; - return FALSE; + return !error; } -void xsf_update(guint8 *buffer, long count, InputPlayback *playback) +void xsf_stop(InputPlayback *playback) { - if (buffer == NULL) - { - playback->playing = FALSE; - playback->eof = TRUE; + g_mutex_lock(seek_mutex); - return; + if (!stop_flag) + { + stop_flag = TRUE; + playback->output->abort_write(); + g_cond_signal(seek_cond); } - playback->output->write_audio (buffer, count); + g_mutex_unlock (seek_mutex); } -void xsf_Stop(InputPlayback *playback) +void xsf_pause(InputPlayback *playback, gboolean pause) { - playback->playing = FALSE; -} + g_mutex_lock(seek_mutex); -void xsf_pause(InputPlayback *playback, short p) -{ - playback->output->pause(p); + if (!stop_flag) + playback->output->pause(pause); + + g_mutex_unlock(seek_mutex); } gint xsf_is_our_fd(const gchar *filename, VFSFile *file) @@ -254,32 +276,36 @@ if (!memcmp(magic, "PSF$", 4)) return 1; - if (!memcmp(magic, "PSF\"", 4)) - return 1; - return 0; } -void xsf_Seek(InputPlayback *playback, gulong time) +void xsf_seek(InputPlayback *playback, gint time) { - seek = time; + g_mutex_lock(seek_mutex); + + if (!stop_flag) + { + seek_value = time; + playback->output->abort_write(); + g_cond_signal(seek_cond); + g_cond_wait(seek_cond, seek_mutex); + } + + g_mutex_unlock(seek_mutex); } -static const gchar *xsf_fmts[] = { "2sf", "mini2sf", "gsf", "minigsf", NULL }; +static const gchar *xsf_fmts[] = { "2sf", "mini2sf", NULL }; -static InputPlugin xsf_ip = -{ - .description = "GSF/2SF Audio Plugin", +AUD_INPUT_PLUGIN +( + .name = "2SF Audio", + .init = xsf_init, + .cleanup = xsf_cleanup, .play = xsf_play, - .stop = xsf_Stop, + .stop = xsf_stop, .pause = xsf_pause, - .mseek = xsf_Seek, - .get_song_tuple = xsf_tuple, + .mseek = xsf_seek, + .probe_for_tuple = xsf_tuple, .is_our_file_from_vfs = xsf_is_our_fd, - .vfs_extensions = xsf_fmts, -}; - -static InputPlugin *xsf_iplist[] = { &xsf_ip, NULL }; - -DECLARE_PLUGIN(psf2, NULL, NULL, xsf_iplist, NULL, NULL, NULL, NULL, NULL); - + .extensions = xsf_fmts, +) diff -Nru audacious-plugins-2.4.4/src/xsf/tagget.h audacious-plugins-3.2/src/xsf/tagget.h --- audacious-plugins-2.4.4/src/xsf/tagget.h 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/xsf/tagget.h 2012-01-20 19:48:30.000000000 +0000 @@ -8,14 +8,14 @@ int dwPos; int dwReservedAreaSize; int dwProgramLength; - int dwProgramCRC; +/* int dwProgramCRC; */ if (dwSize < 16 + 5 + 1) return 0; if (pData[0] != 'P') return 0; if (pData[1] != 'S') return 0; if (pData[2] != 'F') return 0; dwReservedAreaSize = getdwordle(pData + 4); dwProgramLength = getdwordle(pData + 8); - dwProgramCRC = getdwordle(pData + 12); +/* dwProgramCRC = getdwordle(pData + 12); */ dwPos = 16 + dwReservedAreaSize + dwProgramLength; if (dwPos >= dwSize) return 0; return dwPos; diff -Nru audacious-plugins-2.4.4/src/xspf/Makefile audacious-plugins-3.2/src/xspf/Makefile --- audacious-plugins-2.4.4/src/xspf/Makefile 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/xspf/Makefile 2012-01-20 19:48:30.000000000 +0000 @@ -8,5 +8,5 @@ plugindir := ${plugindir}/${CONTAINER_PLUGIN_DIR} CFLAGS += ${PLUGIN_CFLAGS} -CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${ARCH_DEFINES} ${XML_CFLAGS} -I../.. +CPPFLAGS += ${PLUGIN_CPPFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} ${XML_CFLAGS} -I../.. LIBS += ${GTK_LIBS} ${GLIB_LIBS} ${XML_LIBS} diff -Nru audacious-plugins-2.4.4/src/xspf/xspf.c audacious-plugins-3.2/src/xspf/xspf.c --- audacious-plugins-2.4.4/src/xspf/xspf.c 2011-02-22 17:29:47.000000000 +0000 +++ audacious-plugins-3.2/src/xspf/xspf.c 2012-01-20 19:48:30.000000000 +0000 @@ -2,7 +2,8 @@ * Audacious: A cross-platform multimedia player * Copyright (c) 2006 William Pitcock, Tony Vroon, George Averill, * Giacomo Lozito, Derek Pomery, Yoshiki Yazawa - * and Matti Hämäläinen. + * and Matti Hämäläinen. + * Copyright (c) 2011 John Lindgren * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,30 +20,17 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -/* #define AUD_DEBUG 1 */ - -#include - #include #include -#include -#include - -#include -#include -#include -#include #include #include #include +#include #include #include #include -#include -#include -#include #include #define XSPF_ROOT_NODE_NAME "playlist" @@ -69,10 +57,9 @@ { FIELD_QUALITY, "quality", TUPLE_STRING, TRUE}, { FIELD_CODEC, "codec", TUPLE_STRING, TRUE}, - { FIELD_SONG_ARTIST, "song-artist", TUPLE_STRING, TRUE}, - { FIELD_MTIME, "mtime", TUPLE_INT, TRUE}, - { FIELD_FORMATTER, "formatter", TUPLE_STRING, TRUE}, + { FIELD_SONG_ARTIST, "song-artist", TUPLE_STRING, TRUE}, + { FIELD_COMPOSER, "composer", TUPLE_STRING, TRUE}, { FIELD_PERFORMER, "performer", TUPLE_STRING, TRUE}, { FIELD_COPYRIGHT, "copyright", TUPLE_STRING, TRUE}, { FIELD_DATE, "date", TUPLE_STRING, TRUE}, @@ -95,13 +82,11 @@ static const gint xspf_nentries = (sizeof(xspf_entries) / sizeof(xspf_entries[0])); static void xspf_add_file (xmlNode * track, const gchar * filename, const gchar - * base, struct index * filenames, struct index * tuples) + * base, Index * filenames, Index * tuples) { xmlNode *nptr; - Tuple *tuple; gchar *location = NULL; - - tuple = tuple_new(); + Tuple * tuple = NULL; for (nptr = track->children; nptr != NULL; nptr = nptr->next) { if (nptr->type == XML_ELEMENT_NODE) { @@ -110,22 +95,22 @@ gchar *str = (gchar *)xmlNodeGetContent(nptr); if (strstr (str, "://") != NULL) - location = g_strdup (str); + location = str_get (str); else if (str[0] == '/' && base != NULL) { const gchar * colon = strstr (base, "://"); if (colon != NULL) - location = g_strdup_printf ("%.*s%s", (gint) (colon + 3 - - base), base, str); + location = str_printf ("%.*s%s", (gint) (colon + 3 - + base), base, str); } else if (base != NULL) { const gchar * slash = strrchr (base, '/'); if (slash != NULL) - location = g_strdup_printf ("%.*s%s", (gint) (slash + 1 - - base), base, str); + location = str_printf ("%.*s%s", (gint) (slash + 1 - + base), base, str); } xmlFree(str); @@ -149,11 +134,15 @@ xmlChar *str = xmlNodeGetContent(nptr); switch (xspf_entries[i].type) { case TUPLE_STRING: - tuple_associate_string(tuple, xspf_entries[i].tupleField, NULL, (gchar *)str); + if (! tuple) + tuple = tuple_new (); + tuple_set_str(tuple, xspf_entries[i].tupleField, NULL, (gchar *)str); break; case TUPLE_INT: - tuple_associate_int(tuple, xspf_entries[i].tupleField, NULL, atol((char *)str)); + if (! tuple) + tuple = tuple_new (); + tuple_set_int(tuple, xspf_entries[i].tupleField, NULL, atol((char *)str)); break; default: @@ -170,16 +159,19 @@ if (location != NULL) { - tuple_set_filename(tuple, location); + if (tuple) + tuple_set_filename (tuple, location); index_append(filenames, location); index_append(tuples, tuple); } + else if (tuple) + tuple_unref (tuple); } static void xspf_find_track (xmlNode * tracklist, const gchar * filename, const - gchar * base, struct index * filenames, struct index * tuples) + gchar * base, Index * filenames, Index * tuples) { xmlNode *nptr; @@ -190,41 +182,32 @@ } } -#if 0 -static void xspf_find_audoptions(xmlNode *tracklist, const gchar *filename, gint pos) +static gint read_cb (void * file, gchar * buf, gint len) { - xmlNode *nptr; - Playlist *playlist = aud_playlist_get_active(); - - for (nptr = tracklist->children; nptr != NULL; nptr = nptr->next) { - if (nptr->type == XML_ELEMENT_NODE && - !xmlStrcmp(nptr->name, (xmlChar *)"options")) { - xmlChar *opt = NULL; + return vfs_fread (buf, 1, len, file); +} - opt = xmlGetProp(nptr, (xmlChar *)"staticlist"); - if (!g_strcasecmp((char *)opt, "true")) - playlist->attribute |= PLAYLIST_STATIC; - else - playlist->attribute ^= PLAYLIST_STATIC; +static gint write_cb (void * file, const gchar * buf, gint len) +{ + return vfs_fwrite (buf, 1, len, file); +} - xmlFree(opt); - } - } +static gint close_cb (void * file) +{ + return 0; } -#endif -static void xspf_playlist_load(const gchar *filename, gint pos) +static gboolean xspf_playlist_load (const gchar * filename, VFSFile * file, + gchar * * title, Index * filenames, Index * tuples) { - xmlDocPtr doc; - xmlNode *nptr, *nptr2; - struct index * filenames, * tuples; + xmlDoc * doc = xmlReadIO (read_cb, close_cb, file, filename, NULL, + XML_PARSE_RECOVER); + if (! doc) + return FALSE; - doc = xmlRecoverFile(filename); - if (doc == NULL) - return; + * title = NULL; - filenames = index_new (); - tuples = index_new (); + xmlNode *nptr, *nptr2; // find trackList for (nptr = doc->children; nptr != NULL; nptr = nptr->next) { @@ -234,41 +217,96 @@ base = (gchar *)xmlNodeGetBase(doc, nptr); - for (nptr2 = nptr->children; nptr2 != NULL; nptr2 = nptr2->next) { -#if 0 - if (nptr2->type == XML_ELEMENT_NODE && - !xmlStrcmp(nptr2->name, (xmlChar *)"extension")) { - //check if application is audacious - xmlChar *app = NULL; - app = xmlGetProp(nptr2, (xmlChar *)"application"); - if (!xmlStrcmp(app, (xmlChar *)"audacious")) - xspf_find_audoptions(nptr2, filename, pos); - xmlFree(app); - } else -#endif - if (nptr2->type == XML_ELEMENT_NODE && - !xmlStrcmp(nptr2->name, (xmlChar *)"title")) { - xmlChar *title = xmlNodeGetContent(nptr2); - - if (title && *title) { - aud_playlist_set_title (aud_playlist_get_active (), - (const gchar *) title); + for (nptr2 = nptr->children; nptr2; nptr2 = nptr2->next) + { + if (nptr2->type != XML_ELEMENT_NODE) + continue; + + if (! xmlStrcmp (nptr2->name, (xmlChar *) "title")) + { + xmlChar * xml_title = xmlNodeGetContent (nptr2); + if (xml_title && xml_title[0]) + { + str_unref (* title); + * title = str_get ((gchar *) xml_title); } - xmlFree(title); - } else - if (nptr2->type == XML_ELEMENT_NODE && - !xmlStrcmp(nptr2->name, (xmlChar *)"trackList")) { - xspf_find_track (nptr2, filename, base, filenames, tuples); + xmlFree (xml_title); } + else if (! xmlStrcmp (nptr2->name, (xmlChar *) "trackList")) + xspf_find_track (nptr2, filename, base, filenames, tuples); } xmlFree (base); } } + xmlFreeDoc(doc); + return TRUE; +} + + +#define IS_VALID_CHAR(c) (((c) >= 0x20 && (c) <= 0xd7ff) || \ + ((c) == 0x9) || \ + ((c) == 0xa) || \ + ((c) == 0xd) || \ + ((c) >= 0xe000 && (c) <= 0xfffd) || \ + ((c) >= 0x10000 && (c) <= 0x10ffff)) + +/* check for characters that are invalid in XML */ +static gboolean is_valid_string (const gchar * s, gchar * * subst) +{ + if (! g_utf8_validate (s, -1, NULL)) + goto NOT_VALID; + + const gchar * p = s; + while (* p) + { + gunichar c = g_utf8_get_char (p); + + if (IS_VALID_CHAR (c)) + p = g_utf8_next_char (p); + else + goto NOT_VALID; + } + + return TRUE; + +NOT_VALID:; + gint len = 0; + + p = s; + while (* p) + { + gunichar c = g_utf8_get_char_validated (p, -1); + + if (IS_VALID_CHAR (c)) + { + len += g_unichar_to_utf8 (c, NULL); + p = g_utf8_next_char (p); + } + else + p ++; + } + + * subst = g_malloc (len + 1); + gchar * w = * subst; + + p = s; + while (* p) + { + gunichar c = g_utf8_get_char_validated (p, -1); - aud_playlist_entry_insert_batch (aud_playlist_get_active (), pos, filenames, - tuples); + if (IS_VALID_CHAR (c)) + { + w += g_unichar_to_utf8 (c, w); + p = g_utf8_next_char (p); + } + else + p ++; + } + + * w = 0; + return FALSE; } @@ -286,8 +324,15 @@ tmp = xmlNewNode(NULL, (xmlChar *) xspfName); switch (type) { - case TUPLE_STRING: - xmlAddChild(tmp, xmlNewText((xmlChar *) strVal)); + case TUPLE_STRING:; + gchar * subst; + if (is_valid_string (strVal, & subst)) + xmlAddChild (tmp, xmlNewText ((xmlChar *) strVal)); + else + { + xmlAddChild (tmp, xmlNewText ((xmlChar *) subst)); + g_free (subst); + } break; case TUPLE_INT: @@ -303,21 +348,14 @@ } -static void xspf_playlist_save(const gchar *filename, gint pos) +static gboolean xspf_playlist_save (const gchar * filename, VFSFile * file, + const gchar * title, Index * filenames, Index * tuples) { - gint playlist = aud_playlist_get_active (); - const gchar * title = aud_playlist_get_title (playlist); - gint entries = aud_playlist_entry_count (playlist); + gint entries = index_count (filenames); xmlDocPtr doc; xmlNodePtr rootnode, tracklist; -#if 0 - gint baselen = 0; - gchar *base = NULL; -#endif gint count; - AUDDBG("filename='%s', pos=%d\n", filename, pos); - doc = xmlNewDoc((xmlChar *)"1.0"); doc->charset = XML_CHAR_ENCODING_UTF8; doc->encoding = xmlStrdup((xmlChar *)"UTF-8"); @@ -326,107 +364,21 @@ xmlSetProp(rootnode, (xmlChar *)"version", (xmlChar *)"1"); xmlSetProp(rootnode, (xmlChar *)"xmlns", (xmlChar *)XSPF_XMLNS); -#if 0 - /* relative */ - if (playlist->attribute & PLAYLIST_USE_RELATIVE) { - /* prescan to determine base uri */ - for (node = playlist->entries; node != NULL; node = g_list_next(node)) { - gchar *ptr1, *ptr2, *ptrslash; - PlaylistEntry *entry = PLAYLIST_ENTRY(node->data); - gchar *tmp; - gint tmplen = 0; - - if (!is_uri(entry->filename)) { //obsolete - gchar *tmp2 = g_path_get_dirname(entry->filename); - tmp = g_strdup_printf("%s/", tmp2); - g_free(tmp2); - } else - tmp = g_strdup(entry->filename); - - if (!base) { - base = strdup(tmp); - baselen = strlen(base); - } - - ptr1 = base; - ptrslash = ptr2 = tmp; - - while(ptr1 && ptr2 && *ptr1 && *ptr2 && *ptr1 == *ptr2) { - if (*ptr2 == '/') ptrslash = ptr2 + 1; - - ptr1++; - ptr2++; - } - - if (!(*ptrslash)) ptrslash--; - *ptrslash = '\0'; //terminate - tmplen = ptrslash - tmp; - - if (tmplen <= baselen) { - g_free(base); - base = tmp; - baselen = tmplen; - AUDDBG("base='%s', baselen=%d\n", base, baselen); - } else - g_free(tmp); - } - - /* set base URI */ - if (base) { - gchar *tmp; - if (!is_uri(base)) { - tmp = (gchar *) xspf_path_to_uri((xmlChar *)base); - if (tmp) { - g_free(base); - base = tmp; - } - } - - if (!is_uri(base)) { - AUDDBG("base is not uri. something is wrong.\n"); - tmp = g_strdup_printf("file://%s", base); - xmlSetProp(rootnode, (xmlChar *)"xml:base", (xmlChar *)tmp); - g_free(tmp); - } else - xmlSetProp(rootnode, (xmlChar *)"xml:base", (xmlChar *)base); - } - } /* USE_RELATIVE */ -#endif - /* common */ xmlDocSetRootElement(doc, rootnode); - xspf_add_node(rootnode, TUPLE_STRING, FALSE, "creator", PACKAGE "-" VERSION, 0); - -#if 0 - /* add staticlist marker */ - if (playlist->attribute & PLAYLIST_STATIC) { - xmlNodePtr extension, options; - - extension = xmlNewNode(NULL, (xmlChar *)"extension"); - xmlSetProp(extension, (xmlChar *)"application", (xmlChar *)"audacious"); - - options = xmlNewNode(NULL, (xmlChar *)"options"); - xmlSetProp(options, (xmlChar *)"staticlist", (xmlChar *)"true"); - - xmlAddChild(extension, options); - xmlAddChild(rootnode, extension); - } -#endif - if (title != NULL) + if (title) xspf_add_node (rootnode, TUPLE_STRING, FALSE, "title", title, 0); tracklist = xmlNewNode(NULL, (xmlChar *)"trackList"); xmlAddChild(rootnode, tracklist); - for (count = pos; count < entries; count ++) + for (count = 0; count < entries; count ++) { - const gchar * filename = aud_playlist_entry_get_filename (playlist, - count); - const Tuple * tuple = aud_playlist_entry_get_tuple (playlist, count, - FALSE); + const gchar * filename = index_get (filenames, count); + const Tuple * tuple = index_get (tuples, count); xmlNodePtr track, location; - const gchar *scratch = NULL; + gchar *scratch = NULL; gint scratchi = 0; track = xmlNewNode(NULL, (xmlChar *)"track"); @@ -446,7 +398,10 @@ switch (xs->type) { case TUPLE_STRING: - scratch = tuple_get_string (tuple, xs->tupleField, NULL); + scratch = tuple_get_str (tuple, xs->tupleField, NULL); + if (! scratch) + isOK = FALSE; + str_unref(scratch); break; case TUPLE_INT: scratchi = tuple_get_int (tuple, xs->tupleField, NULL); @@ -461,33 +416,28 @@ } } - xmlSaveFormatFile(filename, doc, 1); - xmlFreeDoc(doc); -#if 0 - xmlFree(base); -#endif -} - - -PlaylistContainer plc_xspf = { - .name = "XSPF Playlist Format", - .ext = "xspf", - .plc_read = xspf_playlist_load, - .plc_write = xspf_playlist_save, -}; + xmlSaveCtxt * save = xmlSaveToIO (write_cb, close_cb, file, NULL, + XML_SAVE_FORMAT); + if (! save) + goto ERR; + if (xmlSaveDoc (save, doc) < 0 || xmlSaveClose (save) < 0) + goto ERR; -static void xspf_init(void) -{ - aud_playlist_container_register(&plc_xspf); -} - + xmlFreeDoc(doc); + return TRUE; -static void xspf_cleanup(void) -{ - aud_playlist_container_unregister(&plc_xspf); +ERR: + xmlFreeDoc (doc); + return FALSE; } +static const gchar * const xspf_exts[] = {"xspf", NULL}; -DECLARE_PLUGIN (xspf, xspf_init, xspf_cleanup, NULL, NULL, NULL, NULL, NULL, - NULL) +AUD_PLAYLIST_PLUGIN +( + .name = "XML Shareable Playlist Format", + .extensions = xspf_exts, + .load = xspf_playlist_load, + .save = xspf_playlist_save +)